@flamingo-stack/openframe-frontend-core 0.0.481 → 0.0.482
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-H6DFCF44.cjs → chunk-22AED5IC.cjs} +82 -82
- package/dist/{chunk-H6DFCF44.cjs.map → chunk-22AED5IC.cjs.map} +1 -1
- package/dist/{chunk-MGKCS6KS.js → chunk-3WCARCI4.js} +2 -2
- package/dist/{chunk-LNKWY74S.cjs → chunk-4HL6UENH.cjs} +5 -5
- package/dist/{chunk-LNKWY74S.cjs.map → chunk-4HL6UENH.cjs.map} +1 -1
- package/dist/{chunk-Y3Y2DLNO.js → chunk-6UGYBCEN.js} +3 -3
- package/dist/{chunk-BBUEY73L.js → chunk-7I5B5PQ4.js} +6269 -5339
- package/dist/chunk-7I5B5PQ4.js.map +1 -0
- package/dist/{chunk-PSPWT2Q5.js → chunk-7LWXWXEY.js} +4 -4
- package/dist/{chunk-M7O74OWG.cjs → chunk-ACOU5YJI.cjs} +31 -31
- package/dist/{chunk-M7O74OWG.cjs.map → chunk-ACOU5YJI.cjs.map} +1 -1
- package/dist/{chunk-INDFIVDV.cjs → chunk-AHGSN4AT.cjs} +12 -12
- package/dist/{chunk-INDFIVDV.cjs.map → chunk-AHGSN4AT.cjs.map} +1 -1
- package/dist/{chunk-VTSRDC4W.js → chunk-CKC3EAYT.js} +2 -2
- package/dist/{chunk-SASR7SK5.js → chunk-GZK7FWJJ.js} +20 -4
- package/dist/chunk-GZK7FWJJ.js.map +1 -0
- package/dist/{chunk-ZRANZNEA.js → chunk-JJE5TUZK.js} +2 -2
- package/dist/{chunk-66BNAFO6.js → chunk-JQIUBFHL.js} +4 -4
- package/dist/{chunk-MMCBQJKE.cjs → chunk-KUBJHB6I.cjs} +11 -11
- package/dist/{chunk-MMCBQJKE.cjs.map → chunk-KUBJHB6I.cjs.map} +1 -1
- package/dist/{chunk-ZV6E3U3C.cjs → chunk-MRGTMMJ3.cjs} +30 -30
- package/dist/{chunk-ZV6E3U3C.cjs.map → chunk-MRGTMMJ3.cjs.map} +1 -1
- package/dist/{chunk-OZJN54R5.cjs → chunk-NWVKG7QC.cjs} +37 -37
- package/dist/{chunk-OZJN54R5.cjs.map → chunk-NWVKG7QC.cjs.map} +1 -1
- package/dist/{chunk-AN47EIIJ.cjs → chunk-PHTSSHIQ.cjs} +59 -59
- package/dist/{chunk-AN47EIIJ.cjs.map → chunk-PHTSSHIQ.cjs.map} +1 -1
- package/dist/{chunk-N2JZ33V7.cjs → chunk-RUA3OXSJ.cjs} +26 -26
- package/dist/{chunk-N2JZ33V7.cjs.map → chunk-RUA3OXSJ.cjs.map} +1 -1
- package/dist/{chunk-LK623WCC.cjs → chunk-RZPF7MJ2.cjs} +9 -9
- package/dist/{chunk-LK623WCC.cjs.map → chunk-RZPF7MJ2.cjs.map} +1 -1
- package/dist/{chunk-G3UN2DXU.cjs → chunk-STYA77PH.cjs} +20 -4
- package/dist/chunk-STYA77PH.cjs.map +1 -0
- package/dist/{chunk-JUJY3HQS.cjs → chunk-U37UTLP7.cjs} +19 -19
- package/dist/{chunk-JUJY3HQS.cjs.map → chunk-U37UTLP7.cjs.map} +1 -1
- package/dist/{chunk-2DIOV7BR.js → chunk-UPN6EFOM.js} +4 -4
- package/dist/{chunk-OWMLWJQY.cjs → chunk-VPVOJD5X.cjs} +2432 -1502
- package/dist/chunk-VPVOJD5X.cjs.map +1 -0
- package/dist/{chunk-4SMRQ4SN.js → chunk-WBL5Y4PS.js} +3 -3
- package/dist/{chunk-FP4H6Y5O.js → chunk-WPYPSIY2.js} +3 -3
- package/dist/{chunk-R5WJJL4V.js → chunk-X5X43HFV.js} +5 -5
- package/dist/{chunk-DEHZ5CTC.js → chunk-XTWKDMCG.js} +2 -2
- package/dist/components/case-studies/index.cjs +9 -9
- package/dist/components/case-studies/index.js +3 -3
- package/dist/components/chat/index.cjs +3 -3
- package/dist/components/chat/index.js +2 -2
- package/dist/components/contact/index.cjs +4 -4
- package/dist/components/contact/index.js +3 -3
- package/dist/components/docs/index.cjs +6 -6
- package/dist/components/docs/index.js +5 -5
- package/dist/components/embeds/index.cjs +4 -4
- package/dist/components/embeds/index.js +3 -3
- package/dist/components/faq/index.cjs +4 -4
- package/dist/components/faq/index.js +3 -3
- package/dist/components/features/captions-url.cjs +12 -0
- package/dist/components/features/captions-url.cjs.map +1 -0
- package/dist/components/features/captions-url.js +10 -0
- package/dist/components/features/captions-url.js.map +1 -0
- package/dist/components/features/card-hit-layer.d.ts +40 -0
- package/dist/components/features/card-hit-layer.d.ts.map +1 -0
- package/dist/components/features/floating-walkthrough-video.d.ts +71 -0
- package/dist/components/features/floating-walkthrough-video.d.ts.map +1 -0
- package/dist/components/features/index.cjs +11 -3
- package/dist/components/features/index.cjs.map +1 -1
- package/dist/components/features/index.d.ts +4 -0
- package/dist/components/features/index.d.ts.map +1 -1
- package/dist/components/features/index.js +12 -4
- package/dist/components/features/use-walkthrough-video.d.ts +16 -0
- package/dist/components/features/use-walkthrough-video.d.ts.map +1 -0
- package/dist/components/features/video-bites-strip.d.ts.map +1 -1
- package/dist/components/features/video-center-badge.d.ts.map +1 -1
- package/dist/components/features/video-hover-preview.d.ts +68 -0
- package/dist/components/features/video-hover-preview.d.ts.map +1 -0
- package/dist/components/features/video.d.ts +78 -40
- package/dist/components/features/video.d.ts.map +1 -1
- package/dist/components/form.d.ts +0 -1
- package/dist/components/form.d.ts.map +1 -1
- package/dist/components/help-center-pages/index.cjs +21 -21
- package/dist/components/help-center-pages/index.js +12 -12
- package/dist/components/index.cjs +163 -155
- package/dist/components/index.cjs.map +1 -1
- package/dist/components/index.js +18 -10
- package/dist/components/index.js.map +1 -1
- package/dist/components/navigation/index.cjs +3 -3
- package/dist/components/navigation/index.js +2 -2
- package/dist/components/onboarding-guides/index.cjs +6 -6
- package/dist/components/onboarding-guides/index.js +5 -5
- package/dist/components/related-content/index.cjs +4 -4
- package/dist/components/related-content/index.js +3 -3
- package/dist/components/tickets/index.cjs +6 -6
- package/dist/components/tickets/index.js +5 -5
- package/dist/components/ui/button/button-styles.d.ts +2 -0
- package/dist/components/ui/button/button-styles.d.ts.map +1 -1
- package/dist/components/ui/button/button.d.ts +2 -2
- package/dist/components/ui/button/button.d.ts.map +1 -1
- package/dist/components/ui/file-manager/index.cjs +50 -50
- package/dist/components/ui/file-manager/index.js +1 -1
- package/dist/components/ui/index.cjs +3 -3
- package/dist/components/ui/index.js +2 -2
- package/dist/components/ui/page-actions.d.ts +2 -1
- package/dist/components/ui/page-actions.d.ts.map +1 -1
- package/dist/index.cjs +27 -3
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +28 -4
- package/dist/types/supabase.d.ts +80 -0
- package/dist/types/supabase.d.ts.map +1 -1
- package/dist/types/video-processing.d.ts +1 -1
- package/dist/types/video-processing.d.ts.map +1 -1
- package/dist/utils/announcement-storage.d.ts +1 -1
- package/dist/utils/announcement-storage.d.ts.map +1 -1
- package/dist/utils/dismiss-cookie.d.ts +27 -0
- package/dist/utils/dismiss-cookie.d.ts.map +1 -0
- package/dist/utils/dismissal-storage.d.ts +19 -0
- package/dist/utils/dismissal-storage.d.ts.map +1 -0
- package/dist/utils/index.cjs +48 -10
- package/dist/utils/index.cjs.map +1 -1
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +41 -11
- package/dist/utils/index.js.map +1 -1
- package/package.json +8 -2
- package/src/.index.md +39 -32
- package/src/.platform-domains.md +65 -0
- package/src/assets/.fae-avatar.md +33 -0
- package/src/assets/.index.md +15 -9
- package/src/components/.agent-mark.md +31 -0
- package/src/components/.announcement-bar.md +47 -35
- package/src/components/.calendar.md +19 -15
- package/src/components/.categories-cart.md +34 -30
- package/src/components/.category-card.md +33 -33
- package/src/components/.chart.md +38 -40
- package/src/components/.command.md +47 -23
- package/src/components/.comment-card.md +31 -26
- package/src/components/.content-loading-container.md +45 -20
- package/src/components/.context-menu.md +45 -31
- package/src/components/.date-time-picker.md +36 -30
- package/src/components/.empty-state.md +31 -31
- package/src/components/.faq-accordion.md +20 -30
- package/src/components/.filter-chip.md +36 -33
- package/src/components/.footer-waitlist-button.md +27 -21
- package/src/components/.footer.md +39 -24
- package/src/components/.form.md +32 -20
- package/src/components/.hero-image-uploader.md +35 -31
- package/src/components/.icon-display.md +53 -0
- package/src/components/.image-cropper.md +34 -33
- package/src/components/.index.md +25 -29
- package/src/components/.logs-list.md +27 -23
- package/src/components/.media-carousel.md +47 -26
- package/src/components/.metric-value.md +27 -24
- package/src/components/.msp-display.md +29 -23
- package/src/components/.open-source-features.md +23 -26
- package/src/components/.pagination.md +44 -39
- package/src/components/.persistent-filter-controls.md +61 -28
- package/src/components/.pricing-display.md +34 -33
- package/src/components/.results-count.md +33 -20
- package/src/components/.smooth-accordion.md +24 -20
- package/src/components/.social-icon-row.md +33 -21
- package/src/components/.sonner.md +40 -25
- package/src/components/.steps.md +39 -25
- package/src/components/.tool-icon.md +34 -21
- package/src/components/.unified-filter-logic.md +32 -36
- package/src/components/.user-display.md +33 -28
- package/src/components/.user-summary-stub.md +40 -33
- package/src/components/.vendor-display-button.md +17 -15
- package/src/components/.vendor-icon.md +17 -25
- package/src/components/.vendor-tag.md +39 -34
- package/src/components/.why-it-matters.md +15 -11
- package/src/components/.yes-no-display.md +36 -31
- package/src/components/authors/.author-detail-view.md +50 -0
- package/src/components/case-studies/.index.md +26 -0
- package/src/components/case-studies/.share-experience-section.md +45 -0
- package/src/components/chat/.approval-batch-message.md +48 -33
- package/src/components/chat/.approval-request-message.md +37 -26
- package/src/components/chat/.chat-archive-page.md +56 -0
- package/src/components/chat/.chat-attachment-bar.md +32 -40
- package/src/components/chat/.chat-composer.md +43 -0
- package/src/components/chat/.chat-container.md +41 -25
- package/src/components/chat/.chat-context-memory-bar.md +53 -0
- package/src/components/chat/.chat-context-picker.md +89 -0
- package/src/components/chat/.chat-header-icon-button.md +43 -0
- package/src/components/chat/.chat-header-search-field.md +51 -0
- package/src/components/chat/.chat-input.md +63 -30
- package/src/components/chat/.chat-list-empty-state.md +44 -0
- package/src/components/chat/.chat-message-enhanced.md +29 -31
- package/src/components/chat/.chat-message-list.md +34 -44
- package/src/components/chat/.chat-message-row.md +56 -0
- package/src/components/chat/.chat-message-skeleton.md +32 -26
- package/src/components/chat/.chat-panel-header-mobile.md +46 -0
- package/src/components/chat/.chat-panel-header.md +80 -0
- package/src/components/chat/.chat-sidebar-skeleton.md +31 -30
- package/src/components/chat/.chat-sidebar.md +36 -29
- package/src/components/chat/.chat-ticket-list.md +38 -23
- package/src/components/chat/.chat-typing-indicator.md +37 -19
- package/src/components/chat/.context-compaction-display.md +19 -15
- package/src/components/chat/.context-items-list.md +57 -0
- package/src/components/chat/.embeddable-chat.md +57 -66
- package/src/components/chat/.error-message-display.md +40 -22
- package/src/components/chat/.guide-mode-banner.md +41 -0
- package/src/components/chat/.guide-welcome.md +43 -0
- package/src/components/chat/.index.md +26 -21
- package/src/components/chat/.mingo-chat-history.md +63 -0
- package/src/components/chat/.mingo-chat-modals.md +44 -0
- package/src/components/chat/.mingo-history-rail.md +63 -0
- package/src/components/chat/.mingo-info-card.md +59 -0
- package/src/components/chat/.mingo-onboarding-card.md +21 -27
- package/src/components/chat/.mingo-welcome.md +60 -0
- package/src/components/chat/.model-display.md +33 -25
- package/src/components/chat/.msp-organization-card-skeleton.md +44 -0
- package/src/components/chat/.msp-organization-card.md +51 -0
- package/src/components/chat/.nav-link-anchor-via-runtime.md +36 -25
- package/src/components/chat/.quick-action-chip.md +60 -0
- package/src/components/chat/.quick-action-marquee.md +53 -0
- package/src/components/chat/.quick-action-wall.md +68 -0
- package/src/components/chat/.remark-mention-chips.md +41 -0
- package/src/components/chat/.slash-command-suggestions.md +30 -36
- package/src/components/chat/.source-action-button.md +28 -25
- package/src/components/chat/.tool-call-blocks.md +18 -30
- package/src/components/chat/.tool-execution-display.md +29 -34
- package/src/components/chat/entity-cards/.admin-content-card.md +29 -22
- package/src/components/chat/entity-cards/.blog-card.md +44 -33
- package/src/components/chat/entity-cards/.blog-image-placeholder.md +20 -18
- package/src/components/chat/entity-cards/.case-study-card.md +24 -33
- package/src/components/chat/entity-cards/.chat-ticket-item.md +39 -22
- package/src/components/chat/entity-cards/.customer-interview-card.md +29 -32
- package/src/components/chat/entity-cards/.data-room-doc-card.md +21 -22
- package/src/components/chat/entity-cards/.dispatch.md +41 -24
- package/src/components/chat/entity-cards/.entity-author-card.md +36 -33
- package/src/components/chat/entity-cards/.entity-portrait-card.md +47 -0
- package/src/components/chat/entity-cards/.generic-entity-card.md +26 -25
- package/src/components/chat/entity-cards/.github-activity-card.md +35 -41
- package/src/components/chat/entity-cards/.hubspot-ticket-card.md +22 -28
- package/src/components/chat/entity-cards/.index.md +33 -44
- package/src/components/chat/entity-cards/.investor-update-card.md +36 -25
- package/src/components/chat/entity-cards/.onboarding-guide-card.md +20 -29
- package/src/components/chat/entity-cards/.product-release-card-defaults.md +26 -19
- package/src/components/chat/entity-cards/.program-card.md +30 -33
- package/src/components/chat/entity-cards/.roadmap-card.md +40 -31
- package/src/components/chat/entity-cards/.roadmap-vote-button.md +33 -36
- package/src/components/chat/entity-cards/.slack-message-card.md +31 -32
- package/src/components/chat/entity-cards/.use-cover-image-fallback.md +47 -0
- package/src/components/chat/entity-cards/.use-entity-card-link.md +51 -0
- package/src/components/chat/entity-cards/.use-entity-card-placeholder.md +47 -0
- package/src/components/chat/entity-cards/.what-i-shipped-card.md +43 -0
- package/src/components/chat/hooks/.index.md +33 -30
- package/src/components/chat/hooks/.use-chat-card-item.md +30 -17
- package/src/components/chat/hooks/.use-chat-dialog-manager.md +59 -0
- package/src/components/chat/hooks/.use-chat-identity.md +37 -25
- package/src/components/chat/hooks/.use-chunk-catchup.md +53 -36
- package/src/components/chat/hooks/.use-empty-state-config.md +39 -0
- package/src/components/chat/hooks/.use-jetstream-dialog-subscription.md +65 -30
- package/src/components/chat/hooks/.use-nats-chat-adapter.md +55 -36
- package/src/components/chat/hooks/.use-nats-dialog-subscription.md +66 -50
- package/src/components/chat/hooks/.use-realtime-chunk-processor.md +58 -31
- package/src/components/chat/hooks/.use-scripted-stream.md +46 -0
- package/src/components/chat/hooks/.use-slash-commands.md +32 -25
- package/src/components/chat/hooks/.use-sse-chat-adapter.md +32 -21
- package/src/components/chat/hooks/.use-unified-chat.md +45 -35
- package/src/components/chat/types/.api.types.md +49 -41
- package/src/components/chat/types/.chat.types.md +56 -34
- package/src/components/chat/types/.component.types.md +36 -36
- package/src/components/chat/types/.context-item.types.md +61 -0
- package/src/components/chat/types/.index.md +32 -17
- package/src/components/chat/types/.message.types.md +44 -45
- package/src/components/chat/types/.network.types.md +46 -46
- package/src/components/chat/types/.processing.types.md +49 -37
- package/src/components/chat/types/.unified-chat-state.types.md +41 -26
- package/src/components/chat/types/entities/.content-ref.md +20 -31
- package/src/components/chat/types/entities/.investor-update.md +14 -16
- package/src/components/chat/types/entities/.onboarding-guide.md +35 -34
- package/src/components/chat/types/entities/.program-types.md +55 -43
- package/src/components/chat/utils/.chip-action-class.md +17 -19
- package/src/components/chat/utils/.chip-styles.md +18 -18
- package/src/components/chat/utils/.chunk-parser.md +48 -37
- package/src/components/chat/utils/.compact-card-classes.md +33 -35
- package/src/components/chat/utils/.execute-navigation.md +49 -0
- package/src/components/chat/utils/.extract-incomplete-message-state.md +9 -12
- package/src/components/chat/utils/.history-merge.md +65 -0
- package/src/components/chat/utils/.icon-library.md +33 -31
- package/src/components/chat/utils/.icon-registry.md +44 -0
- package/src/components/chat/utils/.index.md +37 -33
- package/src/components/chat/utils/.is-cross-origin-url.md +26 -22
- package/src/components/chat/utils/.message-segment-accumulator.md +46 -25
- package/src/components/chat/utils/.nav-anchor-props.md +29 -34
- package/src/components/chat/utils/.nav-click-handler.md +29 -33
- package/src/components/chat/utils/.process-historical-messages.md +29 -33
- package/src/components/chat/utils/.scripted-stream.md +52 -0
- package/src/components/chat/utils/.source-row-cta.md +32 -31
- package/src/components/chat/utils/.tool-call-helpers.md +25 -17
- package/src/components/contact/.contact-form.md +24 -19
- package/src/components/docs/.doc-navigation-context.md +49 -0
- package/src/components/docs/.doc-viewer.md +64 -0
- package/src/components/docs/.docs-hub-page.md +49 -0
- package/src/components/docs/.index.md +51 -0
- package/src/components/docs/.skeletons.md +47 -0
- package/src/components/docs/.use-docs-resolve-link.md +61 -0
- package/src/components/docs/.use-document-tree.md +83 -0
- package/src/components/docs/.use-scroll-spy.md +58 -0
- package/src/components/embeds/.embed-container.md +45 -0
- package/src/components/embeds/.embed-iframe.md +51 -0
- package/src/components/embeds/.figma-embed.md +43 -0
- package/src/components/embeds/.file-download-card.md +47 -0
- package/src/components/embeds/.google-sheets-viewer.md +40 -0
- package/src/components/embeds/.index.md +58 -0
- package/src/components/embeds/.linkedin-embed-client.md +50 -0
- package/src/components/embeds/.markdown-image.md +40 -0
- package/src/components/embeds/.og-link-preview.md +54 -0
- package/src/components/embeds/.pdf-viewer.md +43 -0
- package/src/components/embeds/.reddit-embed-client.md +40 -0
- package/src/components/embeds/.rich-markdown-runtime.md +53 -0
- package/src/components/embeds/.twitter-embed-client.md +44 -0
- package/src/components/faq/.faq-document-page.md +68 -0
- package/src/components/faq/.faq-section.md +55 -0
- package/src/components/faq/.index.md +29 -0
- package/src/components/faq/.json-ld.md +48 -0
- package/src/components/features/.array-entry-manager.md +32 -24
- package/src/components/features/.auth-providers-list.md +33 -32
- package/src/components/features/.captions-url.md +43 -0
- package/src/components/features/.cards-strip.md +48 -0
- package/src/components/features/.changelog-manager.md +17 -20
- package/src/components/features/.command-box.md +11 -16
- package/src/components/features/.entity-summary-editor.md +20 -15
- package/src/components/features/.entity-tag-badges.md +43 -0
- package/src/components/features/.entity-video-section.md +31 -41
- package/src/components/features/.figma-prototype-viewer.md +55 -37
- package/src/components/features/.filters-dropdown.md +14 -13
- package/src/components/features/.highlight-config-section.md +19 -16
- package/src/components/features/.highlight-video-combined-section.md +28 -19
- package/src/components/features/.highlight-video-preview.md +13 -11
- package/src/components/features/.highlight-video-section.md +26 -22
- package/src/components/features/.index.md +40 -36
- package/src/components/features/.media-gallery-manager.md +37 -35
- package/src/components/features/.mux-origins.md +46 -0
- package/src/components/features/.og-editor-preview.md +29 -24
- package/src/components/features/.os-type-badge-group.md +26 -18
- package/src/components/features/.os-type-badge.md +41 -24
- package/src/components/features/.paths-display.md +42 -25
- package/src/components/features/.platform-badge.md +26 -17
- package/src/components/features/.policy-configuration-panel.md +33 -31
- package/src/components/features/.provider-button.md +29 -20
- package/src/components/features/.push-button-selector.md +39 -41
- package/src/components/features/.release-media-manager.md +41 -34
- package/src/components/features/.section-selector.md +27 -16
- package/src/components/features/.select-button.md +21 -32
- package/src/components/features/.seo-editor-preview.md +49 -36
- package/src/components/features/.social-links-manager.md +40 -18
- package/src/components/features/.start-with-openframe-button.md +30 -32
- package/src/components/features/.status-filter-component.md +29 -38
- package/src/components/features/.tags-selector.md +25 -29
- package/src/components/features/.transcript-summary-editor.md +24 -18
- package/src/components/features/.use-video-warmup.md +47 -0
- package/src/components/features/.video-bites-display.md +36 -37
- package/src/components/features/.video-bites-shared.md +44 -0
- package/src/components/features/.video-bites-strip.md +63 -0
- package/src/components/features/.video-center-badge.md +38 -0
- package/src/components/features/.video-ratio-tabs.md +38 -31
- package/src/components/features/.video-source-selector.md +24 -27
- package/src/components/features/.video.md +35 -27
- package/src/components/features/.waitlist-form.md +39 -33
- package/src/components/features/.warning-block.md +53 -0
- package/src/components/features/ai-enrich/.AIEnrichSection.md +24 -25
- package/src/components/features/ai-enrich/.AIRequiredBadge.md +22 -21
- package/src/components/features/ai-enrich/.AIStatusIndicator.md +42 -35
- package/src/components/features/ai-enrich/.AIWarningsSection.md +23 -20
- package/src/components/features/ai-enrich/.ConfidenceBadge.md +35 -20
- package/src/components/features/auth/.auth-benefits-panel.md +48 -0
- package/src/components/features/auth/.auth-branding.md +51 -0
- package/src/components/features/auth/.auth-shell.md +51 -0
- package/src/components/features/auth/.back-to-login-link.md +48 -0
- package/src/components/features/auth/.complete-account-form.md +45 -0
- package/src/components/features/auth/.create-organization-form.md +53 -0
- package/src/components/features/auth/.index.md +48 -0
- package/src/components/features/auth/.invite-link-invalid-modal.md +42 -0
- package/src/components/features/auth/.login-form.md +42 -0
- package/src/components/features/auth/.openframe-sso-login-form.md +46 -0
- package/src/components/features/auth/.openframe-sso-signup-form.md +51 -0
- package/src/components/features/auth/.password-reset-form.md +57 -0
- package/src/components/features/auth/.sso-auth-shell.md +35 -0
- package/src/components/features/auth/.sso-providers.md +42 -0
- package/src/components/features/auth/.terms-agreement-label.md +28 -0
- package/src/components/features/board/.board-column-header.md +24 -18
- package/src/components/features/board/.board-column.md +32 -32
- package/src/components/features/board/.board-ticket-approval.md +42 -0
- package/src/components/features/board/.board.md +38 -38
- package/src/components/features/board/.index.md +35 -38
- package/src/components/features/board/.ticket-card.md +33 -36
- package/src/components/features/board/.types.md +38 -31
- package/src/components/features/card-hit-layer.tsx +84 -0
- package/src/components/features/floating-walkthrough-video.tsx +891 -0
- package/src/components/features/index.ts +4 -0
- package/src/components/features/notifications/.approval-request-notification-tile.md +45 -0
- package/src/components/features/notifications/.index.md +35 -31
- package/src/components/features/notifications/.notification-drawer.md +32 -19
- package/src/components/features/notifications/.notification-popups.md +51 -0
- package/src/components/features/notifications/.notification-tile.md +43 -27
- package/src/components/features/notifications/.notifications-context.md +42 -45
- package/src/components/features/notifications/.types.md +51 -31
- package/src/components/features/ticket-status-config-list/.ticket-status-config-list.md +51 -0
- package/src/components/features/time-tracker/.index.md +48 -0
- package/src/components/features/time-tracker/.time-tracker-context.md +55 -0
- package/src/components/features/time-tracker/.time-tracker-header-button.md +51 -0
- package/src/components/features/time-tracker/.time-tracker-panel.md +58 -0
- package/src/components/features/time-tracker/.types.md +51 -0
- package/src/components/features/time-tracker/.use-tracker-clock.md +32 -0
- package/src/components/features/use-walkthrough-video.ts +70 -0
- package/src/components/features/video-bites-strip.tsx +46 -146
- package/src/components/features/video-center-badge.tsx +11 -2
- package/src/components/features/video-hover-preview.tsx +201 -0
- package/src/components/features/video.tsx +368 -73
- package/src/components/help-center-pages/.delivery-page.md +51 -0
- package/src/components/help-center-pages/.index.md +51 -0
- package/src/components/help-center-pages/.onboarding-guides-catalog-page.md +53 -0
- package/src/components/help-center-pages/.product-releases-list-page.md +51 -0
- package/src/components/help-center-pages/.roadmap-page.md +46 -0
- package/src/components/icons/.figma-icon.md +13 -7
- package/src/components/icons/.index.md +26 -22
- package/src/components/icons/.vendor-directory-icon.md +30 -18
- package/src/components/icons/.x-logo.md +26 -10
- package/src/components/icons-v2-generated/.index.md +30 -41
- package/src/components/icons-v2-generated/brand-logos/.index.md +25 -19
- package/src/components/icons-v2-generated/communication/.index.md +26 -30
- package/src/components/icons-v2-generated/logos/.flamingo-logo-icon.md +41 -0
- package/src/components/layout/.article-detail-layout.md +32 -21
- package/src/components/layout/.page-container.md +25 -23
- package/src/components/layout/.page-heading.md +48 -0
- package/src/components/layout/.page-layout.md +30 -25
- package/src/components/layout/.title-block.md +43 -24
- package/src/components/loading/.card-skeleton.md +28 -35
- package/src/components/loading/.category-card-skeleton.md +25 -23
- package/src/components/loading/.device-card-skeleton.md +22 -15
- package/src/components/loading/.margin-report-skeleton.md +30 -35
- package/src/components/loading/.openmsp-heartbeat.md +30 -32
- package/src/components/loading/.organization-card-skeleton.md +22 -25
- package/src/components/loading/.organization-icon-skeleton.md +39 -27
- package/src/components/loading/.page-layout-skeleton.md +50 -28
- package/src/components/loading/.unified-skeleton.md +37 -40
- package/src/components/loading/.users-grid-skeleton.md +19 -38
- package/src/components/navigation/.app-header.md +35 -28
- package/src/components/navigation/.app-layout-context.md +48 -0
- package/src/components/navigation/.app-layout-drawer.md +56 -0
- package/src/components/navigation/.app-layout.md +24 -23
- package/src/components/navigation/.header-mingo-button.md +46 -0
- package/src/components/navigation/.header-organization-filter.md +32 -18
- package/src/components/navigation/.header.md +24 -31
- package/src/components/navigation/.index.md +36 -50
- package/src/components/navigation/.mingo-ai-button.md +41 -0
- package/src/components/navigation/.mobile-burger-menu.md +29 -29
- package/src/components/navigation/.mobile-nav-panel.md +41 -49
- package/src/components/navigation/.multi-level-navigation.md +76 -0
- package/src/components/navigation/.navigation-sidebar-item.md +14 -14
- package/src/components/navigation/.navigation-sidebar.md +30 -23
- package/src/components/navigation/.sliding-sidebar.md +30 -25
- package/src/components/navigation/.sticky-section-nav.md +23 -21
- package/src/components/onboarding-guides/.index.md +40 -0
- package/src/components/onboarding-guides/.onboarding-guide-detail-view.md +55 -0
- package/src/components/onboarding-guides/.onboarding-guides-catalog-skeleton.md +33 -0
- package/src/components/onboarding-guides/.onboarding-guides-catalog-view.md +50 -0
- package/src/components/onboarding-guides/hooks/.use-onboarding-guides.md +54 -0
- package/src/components/platform/.CveLink.md +28 -17
- package/src/components/platform/.ScriptArguments.md +18 -23
- package/src/components/platform/.ScriptInfoSection.md +27 -21
- package/src/components/platform/.ShellTypeBadge.md +34 -18
- package/src/components/platform/.SoftwareInfo.md +23 -21
- package/src/components/platform/.ToolBadge.md +18 -16
- package/src/components/profile/.ProfileLoadingSkeleton.md +24 -23
- package/src/components/related-content/.index.md +41 -0
- package/src/components/related-content/.related-content-section.md +62 -0
- package/src/components/shared/.article-author-byline.md +56 -0
- package/src/components/shared/.detail-page-skeleton.md +32 -43
- package/src/components/shared/.media-gallery-strip.md +43 -0
- package/src/components/shared/delivery/.delivery-lists.md +20 -19
- package/src/components/shared/delivery/.delivery-row.md +24 -20
- package/src/components/shared/delivery/.delivery-table.md +20 -22
- package/src/components/shared/dev-section/.dev-card-row.md +28 -36
- package/src/components/shared/dev-section/.dev-section-page.md +36 -25
- package/src/components/shared/dev-section/.dev-section-view.md +32 -22
- package/src/components/shared/doc-search/.doc-search-bar.md +58 -0
- package/src/components/shared/doc-search/.doc-search-result-row.md +50 -0
- package/src/components/shared/doc-search/.format-relative-path.md +30 -0
- package/src/components/shared/doc-search/.index.md +46 -0
- package/src/components/shared/doc-search/.map-doc-search-results.md +44 -0
- package/src/components/shared/doc-search/.resolve-search-result-action.md +52 -0
- package/src/components/shared/doc-search/.types.md +49 -0
- package/src/components/shared/doc-search/.use-doc-search.md +66 -0
- package/src/components/shared/legal-document/.legal-document-page.md +26 -20
- package/src/components/shared/legal-document/.use-legal-docs.md +36 -30
- package/src/components/shared/onboarding/.onboarding-step-card.md +24 -16
- package/src/components/shared/onboarding/.onboarding-walkthrough.md +42 -28
- package/src/components/shared/product-release/.index.md +33 -24
- package/src/components/shared/product-release/.product-release-card-skeleton.md +22 -28
- package/src/components/shared/product-release/.product-release-card.md +28 -29
- package/src/components/shared/product-release/.product-releases-view.md +49 -0
- package/src/components/shared/product-release/.release-detail-page.md +30 -15
- package/src/components/shared/roadmap/.index.md +29 -24
- package/src/components/shared/roadmap/.roadmap-grid.md +43 -54
- package/src/components/shared/roadmap/.roadmap-view.md +41 -0
- package/src/components/shared/roadmap/.use-roadmap-voting.md +27 -17
- package/src/components/switch.tsx +1 -1
- package/src/components/tickets/.help-center-card.md +32 -28
- package/src/components/tickets/.help-center-create-form.md +34 -22
- package/src/components/tickets/.help-center-list.md +36 -25
- package/src/components/tickets/.index.md +30 -45
- package/src/components/tickets/.ticket-center.md +31 -38
- package/src/components/tickets/.ticket-detail-drawer.md +20 -30
- package/src/components/tickets/.ticket-open-form.md +24 -26
- package/src/components/tickets/.ticket-reply-composer.md +51 -0
- package/src/components/tickets/.ticket-row.md +26 -11
- package/src/components/tickets/.types.md +56 -38
- package/src/components/tickets/hooks/.use-ticket-actions.md +60 -47
- package/src/components/tickets/hooks/.use-ticket-engagements.md +27 -27
- package/src/components/tickets/hooks/.use-tickets-list.md +24 -30
- package/src/components/ui/.accordion.md +28 -21
- package/src/components/ui/.actions-menu.md +36 -54
- package/src/components/ui/.ai-generated-badge.md +25 -0
- package/src/components/ui/.alert-dialog.md +21 -16
- package/src/components/ui/.alert.md +30 -25
- package/src/components/ui/.allowed-domains-input.md +26 -15
- package/src/components/ui/.announcement-bar-view.md +46 -0
- package/src/components/ui/.autocomplete.md +40 -27
- package/src/components/ui/.badge.md +34 -31
- package/src/components/ui/.brand-association-card.md +22 -18
- package/src/components/ui/.breadcrumb.md +18 -14
- package/src/components/ui/.bullet-list.md +35 -23
- package/src/components/ui/.card.md +47 -30
- package/src/components/ui/.checkbox-block.md +34 -22
- package/src/components/ui/.checkbox-with-description.md +18 -20
- package/src/components/ui/.chevron-button.md +29 -29
- package/src/components/ui/.circular-progress.md +30 -41
- package/src/components/ui/.color-preset-select.md +54 -0
- package/src/components/ui/.color-swatch.md +37 -0
- package/src/components/ui/.content-loader.md +34 -27
- package/src/components/ui/.crossfade-panels.md +50 -0
- package/src/components/ui/.cursor-pagination.md +38 -26
- package/src/components/ui/.dashboard-info-card.md +46 -27
- package/src/components/ui/.date-picker.md +52 -36
- package/src/components/ui/.device-card-compact.md +23 -20
- package/src/components/ui/.device-card.md +39 -30
- package/src/components/ui/.dialog.md +14 -14
- package/src/components/ui/.drawer.md +45 -39
- package/src/components/ui/.dropdown-button.md +41 -33
- package/src/components/ui/.dropdown-menu.md +40 -23
- package/src/components/ui/.duration-input.md +41 -0
- package/src/components/ui/.entity-image.md +32 -28
- package/src/components/ui/.error-state.md +30 -26
- package/src/components/ui/.fade-preview.md +44 -0
- package/src/components/ui/.field-wrapper.md +34 -23
- package/src/components/ui/.file-upload.md +30 -18
- package/src/components/ui/.filter-modal.md +30 -32
- package/src/components/ui/.filter-pill-row.md +58 -0
- package/src/components/ui/.floating-tooltip.md +27 -32
- package/src/components/ui/.hidden-tags-popup.md +18 -20
- package/src/components/ui/.highlight-card.md +36 -23
- package/src/components/ui/.honeypot-field.md +41 -0
- package/src/components/ui/.hover-dropdown.md +44 -31
- package/src/components/ui/.image-gallery-modal.md +28 -30
- package/src/components/ui/.image-uploader.md +39 -22
- package/src/components/ui/.index.md +33 -31
- package/src/components/ui/.info-card-row.md +50 -0
- package/src/components/ui/.info-card.md +27 -20
- package/src/components/ui/.info-row.md +30 -24
- package/src/components/ui/.info-section.md +63 -0
- package/src/components/ui/.input.md +29 -28
- package/src/components/ui/.label.md +34 -26
- package/src/components/ui/.markdown-editor.md +26 -25
- package/src/components/ui/.marquee-wall.md +64 -0
- package/src/components/ui/.menubar.md +50 -16
- package/src/components/ui/.modal-v2.md +41 -27
- package/src/components/ui/.modal.md +22 -19
- package/src/components/ui/.more-actions-menu.md +30 -24
- package/src/components/ui/.navigation-menu.md +40 -25
- package/src/components/ui/.organization-card.md +46 -27
- package/src/components/ui/.page-actions.md +55 -41
- package/src/components/ui/.page-loader.md +40 -23
- package/src/components/ui/.password-input.md +30 -0
- package/src/components/ui/.phone-input.md +20 -22
- package/src/components/ui/.portal-container.md +43 -0
- package/src/components/ui/.progress-bar.md +40 -27
- package/src/components/ui/.release-changelog-section.md +32 -26
- package/src/components/ui/.rich-markdown-renderer.md +45 -0
- package/src/components/ui/.scroll-fade.md +56 -0
- package/src/components/ui/.search-input.md +55 -37
- package/src/components/ui/.select.md +25 -26
- package/src/components/ui/.service-card.md +25 -19
- package/src/components/ui/.sheet.md +21 -21
- package/src/components/ui/.simple-markdown-renderer.md +36 -24
- package/src/components/ui/.slack-channel-chip.md +49 -0
- package/src/components/ui/.square-avatar.md +29 -26
- package/src/components/ui/.stacked-rows-panel.md +61 -0
- package/src/components/ui/.status-badge.md +30 -24
- package/src/components/ui/.status-indicator.md +35 -21
- package/src/components/ui/.tab-content.md +34 -22
- package/src/components/ui/.tab-navigation.md +40 -50
- package/src/components/ui/.tab-selector.md +48 -31
- package/src/components/ui/.tabs.md +34 -21
- package/src/components/ui/.tag-search-input.md +20 -20
- package/src/components/ui/.tag-select-dropdown.md +59 -0
- package/src/components/ui/.tag.md +25 -43
- package/src/components/ui/.tags-input.md +31 -31
- package/src/components/ui/.textarea.md +32 -30
- package/src/components/ui/.ticket-attachments-list.md +36 -29
- package/src/components/ui/.ticket-info-section.md +37 -42
- package/src/components/ui/.ticket-status-config-row.md +66 -0
- package/src/components/ui/.ticket-status-tag.md +39 -35
- package/src/components/ui/.toaster.md +21 -15
- package/src/components/ui/.toggle.md +38 -37
- package/src/components/ui/.tooltip.md +16 -13
- package/src/components/ui/button/.button-styles.md +17 -18
- package/src/components/ui/button/.button.md +30 -37
- package/src/components/ui/button/.split-button.md +46 -23
- package/src/components/ui/button/button-styles.ts +13 -0
- package/src/components/ui/button/button.tsx +5 -0
- package/src/components/ui/data-table/.data-table-body.md +50 -35
- package/src/components/ui/data-table/.data-table-empty.md +17 -33
- package/src/components/ui/data-table/.data-table-header.md +43 -40
- package/src/components/ui/data-table/.data-table-row.md +31 -31
- package/src/components/ui/data-table/.types.md +23 -28
- package/src/components/ui/file-manager/.file-manager-breadcrumb.md +16 -24
- package/src/components/ui/file-manager/.file-manager-empty.md +23 -15
- package/src/components/ui/file-manager/.file-manager-skeleton.md +34 -36
- package/src/components/ui/file-manager/.file-manager-table-row.md +29 -29
- package/src/components/ui/file-manager/.file-manager-table.md +39 -24
- package/src/components/ui/no-data/.index.md +22 -0
- package/src/components/ui/no-data/.no-data-actions.md +29 -0
- package/src/components/ui/no-data/.no-data-message.md +37 -0
- package/src/components/ui/no-data/.no-data-styles.md +39 -0
- package/src/components/ui/no-data/.no-data.md +59 -0
- package/src/components/ui/page-actions.tsx +2 -1
- package/src/components/ui/query-report-table/.query-report-table-header.md +15 -15
- package/src/components/ui/query-report-table/.query-report-table-row.md +16 -16
- package/src/components/ui/query-report-table/.query-report-table.md +39 -24
- package/src/components/ui/table/.table-column-filter-dropdown.md +15 -9
- package/src/components/ui/table/.table-description-cell.md +13 -12
- package/src/components/ui/table/.table-empty-state.md +19 -20
- package/src/components/ui/table/.table-row.md +30 -20
- package/src/components/ui/table/.table-skeleton.md +32 -27
- package/src/components/ui/table/.table-timestamp-cell.md +24 -23
- package/src/components/ui/table/.table.md +43 -30
- package/src/components/ui/table/.types.md +49 -45
- package/src/components/ui/table/.use-table-motion.md +45 -0
- package/src/contexts/.chat-runtime-context.md +55 -26
- package/src/contexts/.endpoints-runtime-context.md +40 -44
- package/src/embed-shims/.next-navigation.md +38 -31
- package/src/hooks/.api-hooks.md +28 -21
- package/src/hooks/.index.md +30 -25
- package/src/hooks/.use-authed-image-src.md +38 -0
- package/src/hooks/.use-contact-submission.md +35 -36
- package/src/hooks/.use-humanity-signals.md +47 -0
- package/src/hooks/.use-near-viewport.md +30 -30
- package/src/hooks/.use-og-placeholder-url.md +57 -0
- package/src/hooks/.use-scroll-to-hash.md +46 -0
- package/src/hooks/.use-self-fetch.md +52 -0
- package/src/hooks/state/.flatten-schema.md +37 -29
- package/src/hooks/ui/.index.md +37 -25
- package/src/hooks/ui/.use-auto-limit-tags.md +55 -38
- package/src/hooks/ui/.use-deferred-error.md +44 -0
- package/src/hooks/ui/.use-focus-trap.md +59 -0
- package/src/hooks/ui/.use-header-height.md +37 -0
- package/src/hooks/ui/.use-horizontal-scrollbar.md +25 -34
- package/src/hooks/ui/.use-marquee-engine.md +73 -0
- package/src/hooks/ui/.use-notification-permission.md +49 -0
- package/src/hooks/ui/.use-reset-on-page-hidden.md +40 -0
- package/src/hooks/ui/.use-suppress-clone-focus.md +41 -0
- package/src/nats/.index.md +39 -0
- package/src/nats/.nats-provider.md +46 -0
- package/src/nats/.nats.md +38 -28
- package/src/nats/.shared-connection.md +56 -0
- package/src/nats/.use-nats-subscription.md +57 -0
- package/src/stories/.ActionsMenu.stories.md +57 -0
- package/src/stories/.Alert.stories.md +46 -0
- package/src/stories/.AnnouncementBar.stories.md +59 -32
- package/src/stories/.AppLayoutDrawer.stories.md +60 -0
- package/src/stories/.AppLayoutSidebar.stories.md +45 -0
- package/src/stories/.ApprovalBatchMessage.stories.md +46 -0
- package/src/stories/.ApprovalBatchMessageClient.stories.md +55 -0
- package/src/stories/.ApprovalRequestMessage.stories.md +50 -0
- package/src/stories/.ApprovalRequestMessageClient.stories.md +41 -0
- package/src/stories/.BlogCard.stories.md +52 -0
- package/src/stories/.Board.stories.md +25 -20
- package/src/stories/.Button.stories.md +35 -40
- package/src/stories/.CampaignCardAdmin.stories.md +38 -0
- package/src/stories/.CardsStrip.stories.md +39 -0
- package/src/stories/.CaseStudyCard.stories.md +41 -0
- package/src/stories/.ChatContainer.stories.md +41 -0
- package/src/stories/.ChatInlineVideoPill.stories.md +36 -0
- package/src/stories/.ChatMessageEnhanced.stories.md +51 -0
- package/src/stories/.ChatMingoInfoCards.stories.md +30 -0
- package/src/stories/.ChatTicketList.stories.md +38 -22
- package/src/stories/.ChatTypingIndicator.stories.md +47 -0
- package/src/stories/.CheckboxBlock.stories.md +34 -35
- package/src/stories/.ContextCompactionDisplay.stories.md +28 -0
- package/src/stories/.CustomerInterviewCard.stories.md +36 -0
- package/src/stories/.DashboardInfoCard.stories.md +40 -33
- package/src/stories/.DataRoomDocCard.stories.md +42 -0
- package/src/stories/.DataTable.stories.md +37 -32
- package/src/stories/.DatePicker.stories.md +34 -30
- package/src/stories/.EmbeddableChat.stories.md +45 -28
- package/src/stories/.EmptyState.stories.md +55 -0
- package/src/stories/.ErrorMessageDisplay.stories.md +45 -0
- package/src/stories/.FilterModal.stories.md +28 -22
- package/src/stories/.GenericEntityCard.stories.md +50 -0
- package/src/stories/.GitHubActivityCard.stories.md +41 -0
- package/src/stories/.GuideWelcome.stories.md +38 -0
- package/src/stories/.Header.stories.md +32 -22
- package/src/stories/.HubspotTicketCard.stories.md +41 -0
- package/src/stories/.InfoCard.stories.md +37 -26
- package/src/stories/.InfoCardRow.stories.md +48 -0
- package/src/stories/.InfoSection.stories.md +55 -0
- package/src/stories/.Input.stories.md +45 -35
- package/src/stories/.InvestorUpdateCard.stories.md +41 -0
- package/src/stories/.MarqueeWall.stories.md +53 -0
- package/src/stories/.MingoAiButton.stories.md +31 -0
- package/src/stories/.MingoChatModals.stories.md +47 -0
- package/src/stories/.MingoInfoCard.stories.md +50 -0
- package/src/stories/.MingoOnboardingCard.stories.md +19 -19
- package/src/stories/.MingoWelcome.stories.md +41 -0
- package/src/stories/.MobileNavPanel.stories.md +52 -0
- package/src/stories/.Modal.stories.md +19 -16
- package/src/stories/.MspOrganizationCard.stories.md +45 -0
- package/src/stories/.NotificationDrawer.stories.md +39 -28
- package/src/stories/.OSTypeBadge.stories.md +34 -25
- package/src/stories/.OnboardingGuideCard.stories.md +41 -0
- package/src/stories/.PageActions.stories.md +21 -21
- package/src/stories/.PageContainer.stories.md +29 -24
- package/src/stories/.PageLayout.stories.md +18 -35
- package/src/stories/.PolicyConfigurationPanel.stories.md +58 -0
- package/src/stories/.ProductReleaseCard.stories.md +39 -0
- package/src/stories/.ProgramCard.stories.md +51 -0
- package/src/stories/.QuickActionChip.stories.md +59 -0
- package/src/stories/.QuickActionMarquee.stories.md +51 -0
- package/src/stories/.QuickActionWall.stories.md +58 -0
- package/src/stories/.RoadmapCard.stories.md +41 -0
- package/src/stories/.ShellTypeBadge.stories.md +42 -22
- package/src/stories/.SlackMessageCard.stories.md +42 -0
- package/src/stories/.SlashCommandSuggestions.stories.md +21 -31
- package/src/stories/.SplitButton.stories.md +23 -25
- package/src/stories/.StackedRowsPanel.stories.md +65 -0
- package/src/stories/.TabSelector.stories.md +26 -38
- package/src/stories/.Tag.stories.md +32 -27
- package/src/stories/.ThinkingDisplay.stories.md +43 -0
- package/src/stories/.TicketCard.stories.md +60 -0
- package/src/stories/.TicketInfoSection.stories.md +28 -20
- package/src/stories/.TimeTracker.stories.md +35 -0
- package/src/stories/.Toaster.stories.md +26 -20
- package/src/stories/.ToolBadge.stories.md +34 -24
- package/src/stories/.ToolExecutionDisplay.stories.md +22 -20
- package/src/stories/.ToolExecutionDisplayClient.stories.md +33 -0
- package/src/stories/.VideoBitesStrip.stories.md +37 -0
- package/src/stories/.WarningBlock.stories.md +51 -0
- package/src/stories/__fixtures__/.chat-card-decorator.md +39 -0
- package/src/stories/__fixtures__/.chat-cards.md +57 -0
- package/src/stories/auth/.CompleteAccount.stories.md +36 -0
- package/src/stories/auth/.CreateOrganization.stories.md +52 -0
- package/src/stories/auth/.InviteLinkInvalid.stories.md +21 -0
- package/src/stories/auth/.Login.stories.md +32 -0
- package/src/stories/auth/.OpenFrameSso.stories.md +58 -0
- package/src/stories/auth/.PasswordReset.stories.md +49 -0
- package/src/styles/ods-interaction-states.css +32 -0
- package/src/types/.announcement.md +67 -35
- package/src/types/.blog.md +44 -41
- package/src/types/.case-study.md +31 -17
- package/src/types/.content-ref.md +37 -0
- package/src/types/.customer-interview.md +38 -38
- package/src/types/.doc-source.md +87 -0
- package/src/types/.entity-author.md +53 -0
- package/src/types/.entity-platform.md +40 -0
- package/src/types/.index.md +23 -17
- package/src/types/.marketing.md +32 -35
- package/src/types/.navigation.md +31 -19
- package/src/types/.os.types.md +30 -31
- package/src/types/.permissions.md +49 -35
- package/src/types/.platform.md +44 -28
- package/src/types/.product-release.md +59 -42
- package/src/types/.shell.types.md +46 -30
- package/src/types/.supabase.md +43 -29
- package/src/types/.tool.types.md +43 -23
- package/src/types/.video-processing.md +40 -31
- package/src/types/supabase.ts +80 -0
- package/src/types/video-processing.ts +1 -0
- package/src/utils/.announcement-storage.md +49 -17
- package/src/utils/.app-config.md +22 -18
- package/src/utils/.brand-marks.md +46 -0
- package/src/utils/.cn.md +40 -29
- package/src/utils/.color-analysis.md +34 -25
- package/src/utils/.common.md +43 -23
- package/src/utils/.content-href.md +64 -0
- package/src/utils/.content-ref-groups.md +51 -0
- package/src/utils/.date-utils.md +46 -35
- package/src/utils/.doc-path-utils.md +38 -0
- package/src/utils/.doc-tree-nav.md +51 -0
- package/src/utils/.embed-authed-fetch.md +48 -32
- package/src/utils/.embed-content-fetch.md +36 -0
- package/src/utils/.embed-url-converters.md +52 -0
- package/src/utils/.extract-items.md +49 -0
- package/src/utils/.faq-anchor.md +48 -0
- package/src/utils/.format.md +73 -55
- package/src/utils/.humanity-signals.md +59 -0
- package/src/utils/.index.md +73 -31
- package/src/utils/.list-url.md +43 -0
- package/src/utils/.markdown-section-extractor.md +57 -0
- package/src/utils/.markdown-to-plain.md +51 -0
- package/src/utils/.media-carousel-utils-stub.md +42 -31
- package/src/utils/.ods-color-utils.md +84 -43
- package/src/utils/.og-placeholder.md +45 -0
- package/src/utils/.page-header-constants.md +26 -0
- package/src/utils/.platform-config.md +34 -34
- package/src/utils/.release-badge.md +47 -0
- package/src/utils/.release-cover.md +45 -0
- package/src/utils/.same-page-hash-nav.md +45 -0
- package/src/utils/.scroll-into-view.md +32 -25
- package/src/utils/.seo-description.md +37 -0
- package/src/utils/.seo-title.md +25 -0
- package/src/utils/.social-embed-cache.md +37 -0
- package/src/utils/.source-icons.md +30 -34
- package/src/utils/.suggestion-url.md +46 -0
- package/src/utils/.tool-utils.md +39 -24
- package/src/utils/.tree-builder.md +64 -0
- package/src/utils/.video-bite-id.md +42 -0
- package/src/utils/announcement-storage.ts +9 -18
- package/src/utils/dev-sections/.dev-section-param-keys.md +51 -0
- package/src/utils/dev-sections/.openframe-dev-sections.md +40 -28
- package/src/utils/dismiss-cookie.ts +55 -0
- package/src/utils/dismissal-storage.ts +38 -0
- package/src/utils/index.ts +3 -0
- package/dist/chunk-BBUEY73L.js.map +0 -1
- package/dist/chunk-G3UN2DXU.cjs.map +0 -1
- package/dist/chunk-OWMLWJQY.cjs.map +0 -1
- package/dist/chunk-SASR7SK5.js.map +0 -1
- package/src/components/chat/utils/.onboarding-icons.md +0 -28
- package/src/hooks/.use-og-placeholder.md +0 -51
- /package/dist/{chunk-MGKCS6KS.js.map → chunk-3WCARCI4.js.map} +0 -0
- /package/dist/{chunk-Y3Y2DLNO.js.map → chunk-6UGYBCEN.js.map} +0 -0
- /package/dist/{chunk-PSPWT2Q5.js.map → chunk-7LWXWXEY.js.map} +0 -0
- /package/dist/{chunk-VTSRDC4W.js.map → chunk-CKC3EAYT.js.map} +0 -0
- /package/dist/{chunk-ZRANZNEA.js.map → chunk-JJE5TUZK.js.map} +0 -0
- /package/dist/{chunk-66BNAFO6.js.map → chunk-JQIUBFHL.js.map} +0 -0
- /package/dist/{chunk-2DIOV7BR.js.map → chunk-UPN6EFOM.js.map} +0 -0
- /package/dist/{chunk-4SMRQ4SN.js.map → chunk-WBL5Y4PS.js.map} +0 -0
- /package/dist/{chunk-FP4H6Y5O.js.map → chunk-WPYPSIY2.js.map} +0 -0
- /package/dist/{chunk-R5WJJL4V.js.map → chunk-X5X43HFV.js.map} +0 -0
- /package/dist/{chunk-DEHZ5CTC.js.map → chunk-XTWKDMCG.js.map} +0 -0
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
<!-- source-hash: ec30097feafd8e14e66c0760d7da51a3 -->
|
|
2
|
+
React hooks for subscribing to NATS subjects via the shared connection provided by `<NatsProvider>`, with support for both raw byte messages and JSON-decoded payloads.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
### `useNatsSubscription`
|
|
7
|
+
Core hook that subscribes to a NATS subject using the shared connection from `<NatsProvider>`. Automatically resubscribes when the subject changes, the connection becomes ready, or a reconnection occurs.
|
|
8
|
+
|
|
9
|
+
**Parameters:**
|
|
10
|
+
- `subject` — NATS subject string, or `null` to disable
|
|
11
|
+
- `onMessage` — callback receiving raw `Msg` objects
|
|
12
|
+
- `options` — optional `NatsSubscribeOptions` plus `enabled` flag
|
|
13
|
+
|
|
14
|
+
**Returns:** `{ isSubscribed, isReady }`
|
|
15
|
+
|
|
16
|
+
### `useNatsJsonSubscription`
|
|
17
|
+
Convenience wrapper around `useNatsSubscription` that automatically decodes incoming message bytes as JSON and passes the parsed payload to the callback. Malformed payloads are silently ignored.
|
|
18
|
+
|
|
19
|
+
**Parameters:**
|
|
20
|
+
- `subject` — NATS subject string, or `null` to disable
|
|
21
|
+
- `onPayload` — callback receiving `(payload: T, msg: Msg)`
|
|
22
|
+
- `options` — same options as `useNatsSubscription`
|
|
23
|
+
|
|
24
|
+
### `UseNatsSubscriptionOptions`
|
|
25
|
+
Extends `NatsSubscribeOptions` with an `enabled?: boolean` flag to conditionally pause subscriptions without unmounting the component.
|
|
26
|
+
|
|
27
|
+
## Usage Example
|
|
28
|
+
|
|
29
|
+
```typescript
|
|
30
|
+
// Raw byte subscription
|
|
31
|
+
function MyComponent() {
|
|
32
|
+
const { isSubscribed } = useNatsSubscription(
|
|
33
|
+
'events.updates',
|
|
34
|
+
(msg) => console.log('raw bytes:', msg.data),
|
|
35
|
+
{ queue: 'workers', enabled: true },
|
|
36
|
+
)
|
|
37
|
+
|
|
38
|
+
return <span>{isSubscribed ? 'Listening' : 'Disconnected'}</span>
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
// JSON subscription with typed payload
|
|
42
|
+
interface TickerEvent {
|
|
43
|
+
symbol: string
|
|
44
|
+
price: number
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
function TickerDisplay() {
|
|
48
|
+
const { isReady } = useNatsJsonSubscription<TickerEvent>(
|
|
49
|
+
'market.ticker',
|
|
50
|
+
(payload, msg) => {
|
|
51
|
+
console.log(`${payload.symbol}: $${payload.price}`)
|
|
52
|
+
},
|
|
53
|
+
)
|
|
54
|
+
}
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
> Both hooks stabilize the message handler via `useRef` so the subscription is not torn down on every render when an inline callback is passed.
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
<!-- source-hash: 42e64113d86d5eae0ead175437c52358 -->
|
|
2
|
+
Storybook stories file for the `ActionsMenu` and `ActionsMenuDropdown` components, providing interactive visual documentation of all supported menu variants and item types.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
**Stories exported:**
|
|
7
|
+
|
|
8
|
+
| Story | Description |
|
|
9
|
+
|---|---|
|
|
10
|
+
| `Default` | Single-group menu with icon items |
|
|
11
|
+
| `GroupedWithDanger` | Multi-group menu with separator and destructive delete row |
|
|
12
|
+
| `WithCheckboxes` | Checkbox-type items with checked/unchecked states |
|
|
13
|
+
| `WithSubmenu` | Nested submenu via `ActionsMenuDropdown` (requires Radix DropdownMenu context) |
|
|
14
|
+
| `WithDisabledItem` | Dimmed, non-interactive disabled row |
|
|
15
|
+
| `WithSecondaryAction` | Row with an independently clickable secondary icon button (e.g. open in new tab) |
|
|
16
|
+
| `Dropdown` | `ActionsMenuDropdown` with an ellipsis trigger button |
|
|
17
|
+
|
|
18
|
+
**Key props documented:**
|
|
19
|
+
|
|
20
|
+
- `groups` — Array of `ActionsMenuGroup` objects, each containing an array of items
|
|
21
|
+
- `className` — Additional CSS classes for the menu panel
|
|
22
|
+
- `onItemClick` — Callback fired when any item is activated
|
|
23
|
+
|
|
24
|
+
## Usage Example
|
|
25
|
+
|
|
26
|
+
```typescript
|
|
27
|
+
import { ActionsMenu, ActionsMenuDropdown } from '../components/ui/actions-menu';
|
|
28
|
+
|
|
29
|
+
// Inline panel
|
|
30
|
+
<ActionsMenu
|
|
31
|
+
groups={[
|
|
32
|
+
{
|
|
33
|
+
id: 'primary',
|
|
34
|
+
separator: true,
|
|
35
|
+
items: [
|
|
36
|
+
{ id: 'edit', label: 'Edit', icon: <PencilIcon />, onClick: handleEdit },
|
|
37
|
+
{ id: 'download', label: 'Download', icon: <Download01Icon />, onClick: handleDownload },
|
|
38
|
+
],
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
id: 'destructive',
|
|
42
|
+
items: [
|
|
43
|
+
{ id: 'delete', label: 'Delete', icon: <TrashBlankIcon />, danger: true, onClick: handleDelete },
|
|
44
|
+
],
|
|
45
|
+
},
|
|
46
|
+
]}
|
|
47
|
+
/>
|
|
48
|
+
|
|
49
|
+
// Trigger-attached dropdown
|
|
50
|
+
<ActionsMenuDropdown groups={dropdownGroups} onItemClick={handleItemClick} />
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
> **Note:** Submenu items (`type: 'submenu'`) require `ActionsMenuDropdown` — the inline `ActionsMenu` panel has no Radix DropdownMenu context.
|
|
54
|
+
|
|
55
|
+
## Source
|
|
56
|
+
|
|
57
|
+
[`ActionsMenu.stories.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/ActionsMenu.stories.tsx)
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
<!-- source-hash: dc7266b2b4457b06de407dc273e1e31e -->
|
|
2
|
+
Storybook stories for the `Alert` UI component, showcasing all available variants and a real-world usage example.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
| Export | Variant | Description |
|
|
7
|
+
|---|---|---|
|
|
8
|
+
| `Default` | `default` | Neutral informational alert |
|
|
9
|
+
| `Destructive` | `destructive` | Error state alert (e.g. session expired) |
|
|
10
|
+
| `Warning` | `warning` | Caution state alert |
|
|
11
|
+
| `EmailVerification` | `warning` | Real-world example mirroring the Settings page email-verification banner |
|
|
12
|
+
| `AllVariants` | — | Renders all three variants stacked for visual comparison |
|
|
13
|
+
|
|
14
|
+
## Usage Example
|
|
15
|
+
|
|
16
|
+
```typescript
|
|
17
|
+
import { Alert, AlertDescription, AlertTitle } from '../components/ui/alert';
|
|
18
|
+
|
|
19
|
+
// Basic usage
|
|
20
|
+
<Alert variant="default">
|
|
21
|
+
<AlertTitle>Heads up!</AlertTitle>
|
|
22
|
+
<AlertDescription>You can add components to your app using the CLI.</AlertDescription>
|
|
23
|
+
</Alert>
|
|
24
|
+
|
|
25
|
+
// With icon and custom layout (email verification banner pattern)
|
|
26
|
+
import { AlertTriangleIcon } from '../components/icons-v2-generated/interface/alert-triangle-icon';
|
|
27
|
+
|
|
28
|
+
<Alert
|
|
29
|
+
variant="warning"
|
|
30
|
+
className="flex items-center justify-center gap-[var(--spacing-system-m)] p-[var(--spacing-system-s)]"
|
|
31
|
+
>
|
|
32
|
+
<span className="shrink-0">
|
|
33
|
+
<AlertTriangleIcon size={24} />
|
|
34
|
+
</span>
|
|
35
|
+
<p className="flex-1 text-h4 font-bold">Verify your email to keep access to system.</p>
|
|
36
|
+
<button type="button" className="shrink-0 text-h4 font-medium underline whitespace-nowrap">
|
|
37
|
+
Resend Verification Mail
|
|
38
|
+
</button>
|
|
39
|
+
</Alert>
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## Notes
|
|
43
|
+
|
|
44
|
+
- The `variant` prop accepts `'default'`, `'destructive'`, or `'warning'` and is controlled via a Storybook `select` control.
|
|
45
|
+
- `EmailVerification` is pinned to the `warning` variant and demonstrates composing `Alert` with an icon, bold message text, and an inline action button — matching the Figma design for the Settings page banner.
|
|
46
|
+
- Source: [`Alert.stories.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/Alert.stories.tsx)
|
|
@@ -1,45 +1,72 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
Storybook stories for the `AnnouncementBar` component,
|
|
1
|
+
<!-- source-hash: 73d3a98384e609c3fd1b1b5c733bdc5f -->
|
|
2
|
+
Storybook stories for the `AnnouncementBar` component, covering SSR-seeded, client-fetched, and admin preview rendering paths across multiple visual configurations.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
6
|
| Export | Description |
|
|
7
|
-
|
|
8
|
-
| `
|
|
9
|
-
| `
|
|
10
|
-
| `
|
|
11
|
-
| `WithCTASameTab` | CTA
|
|
7
|
+
|---|---|
|
|
8
|
+
| `Default` | Basic announcement with icon and description |
|
|
9
|
+
| `WithCTA` | Announcement with a styled call-to-action button (new tab) |
|
|
10
|
+
| `WithoutCloseButton` | Non-dismissible bar (`dismissible={false}`) |
|
|
11
|
+
| `WithCTASameTab` | CTA that navigates within the same tab |
|
|
12
|
+
| `DarkBackground` | Validates contrast-aware text color via `pickReadableTextColor` |
|
|
12
13
|
| `BlueBackground` / `GreenBackground` | Color theme variants |
|
|
13
|
-
| `WithOpenFrameLogo` | Uses the `openframe-logo`
|
|
14
|
-
| `WithPNGIcon` |
|
|
15
|
-
| `LongContent` |
|
|
16
|
-
| `
|
|
14
|
+
| `WithOpenFrameLogo` | Uses the `openframe-logo` named icon |
|
|
15
|
+
| `WithPNGIcon` | Icon sourced from an external `icon_url` |
|
|
16
|
+
| `LongContent` | Truncation behavior under long titles and descriptions |
|
|
17
|
+
| `PreviewMode` | Admin live-preview — renders bar inert; no storage/fetch side effects |
|
|
18
|
+
| `NoAnnouncement` | Null announcement; bar renders nothing |
|
|
19
|
+
| `ClientOnlyEmbed` | Mounts an `EndpointsRuntimeContext` provider and mocks `window.fetch` to simulate client-only embedding without SSR |
|
|
17
20
|
|
|
18
21
|
## Usage Example
|
|
19
22
|
|
|
20
23
|
```typescript
|
|
21
|
-
//
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
24
|
+
// Replicate the SSR-seeded path used by most stories
|
|
25
|
+
import { AnnouncementBar } from '../components/announcement-bar'
|
|
26
|
+
|
|
27
|
+
export const WithCTA: Story = {
|
|
28
|
+
args: {
|
|
29
|
+
initialAnnouncement: {
|
|
30
|
+
id: 'example-1',
|
|
31
|
+
title: 'OpenFrame v2.0 is here!',
|
|
32
|
+
description: 'Explore the new dashboard.',
|
|
33
|
+
background_color: '#FFD951',
|
|
34
|
+
icon_name: 'star',
|
|
35
|
+
is_active: true,
|
|
36
|
+
cta_enabled: true,
|
|
37
|
+
cta_text: 'Learn More',
|
|
38
|
+
cta_url: 'https://example.com',
|
|
39
|
+
cta_target: '_blank',
|
|
40
|
+
},
|
|
41
|
+
},
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
// Replicate the client-only embed path (mocks fetch, no SSR prop)
|
|
45
|
+
export const ClientOnlyEmbed: Story = {
|
|
46
|
+
args: {},
|
|
47
|
+
decorators: [
|
|
48
|
+
(Story) => {
|
|
49
|
+
window.fetch = async (input) => {
|
|
50
|
+
if (input.toString().includes('/api/announcements/active')) {
|
|
51
|
+
return new Response(JSON.stringify({ announcement: { ...} }), {
|
|
52
|
+
status: 200,
|
|
53
|
+
headers: { 'Content-Type': 'application/json' },
|
|
54
|
+
})
|
|
55
|
+
}
|
|
56
|
+
return originalFetch(input)
|
|
57
|
+
}
|
|
58
|
+
return (
|
|
59
|
+
<EndpointsRuntimeContext.Provider value={embedEndpoints}>
|
|
60
|
+
<Story />
|
|
61
|
+
</EndpointsRuntimeContext.Provider>
|
|
62
|
+
)
|
|
63
|
+
},
|
|
64
|
+
],
|
|
65
|
+
}
|
|
39
66
|
```
|
|
40
67
|
|
|
41
68
|
## Notes
|
|
42
69
|
|
|
43
|
-
-
|
|
44
|
-
-
|
|
45
|
-
-
|
|
70
|
+
- Every story's decorator calls `clearAnnouncementDismissals(getAppType())` before rendering, ensuring each story starts with the bar visible regardless of prior interactions.
|
|
71
|
+
- Without an `EndpointsRuntimeContext` provider mounted, the bar never issues a fetch — stories remain self-contained and require no network mocking unless explicitly testing the embed path (`ClientOnlyEmbed`).
|
|
72
|
+
- Source: [`AnnouncementBar.stories.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/AnnouncementBar.stories.tsx)
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
<!-- source-hash: eb65307855df2f5b364327378b10b165 -->
|
|
2
|
+
Storybook stories for the `AppLayoutDrawer` component, demonstrating an in-layout drawer panel that renders within `AppLayout`'s main content area without covering the global chrome (header and sidebar).
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
| Export | Description |
|
|
7
|
+
|---|---|
|
|
8
|
+
| `Right` | Default right-side drawer, persistent (does not close on chrome clicks) |
|
|
9
|
+
| `ResizableRight` | Right-side drawer with drag-to-resize handle, clamped to the main content area |
|
|
10
|
+
| `Left` | Left-side drawer variant, suitable for filters or secondary navigation |
|
|
11
|
+
| `DashboardChildren` | Internal helper rendering a mock dashboard with a button to trigger the drawer |
|
|
12
|
+
|
|
13
|
+
## Usage Example
|
|
14
|
+
|
|
15
|
+
```typescript
|
|
16
|
+
import {
|
|
17
|
+
AppLayout,
|
|
18
|
+
AppLayoutDrawer,
|
|
19
|
+
AppLayoutDrawerBody,
|
|
20
|
+
AppLayoutDrawerContent,
|
|
21
|
+
AppLayoutDrawerHeader,
|
|
22
|
+
AppLayoutDrawerTitle,
|
|
23
|
+
} from '../components/navigation'
|
|
24
|
+
|
|
25
|
+
function Page() {
|
|
26
|
+
const [open, setOpen] = useState(false)
|
|
27
|
+
|
|
28
|
+
return (
|
|
29
|
+
<AppLayout
|
|
30
|
+
sidebarConfig={{ items: navigationItems, onNavigate: handleNav, onToggleMinimized: handleToggle }}
|
|
31
|
+
drawer={
|
|
32
|
+
<AppLayoutDrawer open={open} onOpenChange={setOpen}>
|
|
33
|
+
<AppLayoutDrawerContent
|
|
34
|
+
side="right"
|
|
35
|
+
resizable
|
|
36
|
+
minSize={360}
|
|
37
|
+
defaultSize={560}
|
|
38
|
+
storageKey="my-app:drawer:right"
|
|
39
|
+
>
|
|
40
|
+
<AppLayoutDrawerHeader>
|
|
41
|
+
<AppLayoutDrawerTitle>Panel Title</AppLayoutDrawerTitle>
|
|
42
|
+
</AppLayoutDrawerHeader>
|
|
43
|
+
<AppLayoutDrawerBody>
|
|
44
|
+
<p>Panel content here.</p>
|
|
45
|
+
</AppLayoutDrawerBody>
|
|
46
|
+
</AppLayoutDrawerContent>
|
|
47
|
+
</AppLayoutDrawer>
|
|
48
|
+
}
|
|
49
|
+
>
|
|
50
|
+
<button onClick={() => setOpen(true)}>Open Panel</button>
|
|
51
|
+
</AppLayout>
|
|
52
|
+
)
|
|
53
|
+
}
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
> **When to use `AppLayoutDrawer` vs `Drawer`:** Use `AppLayoutDrawer` for page-level panels (chat, details, filters) that should coexist with the app chrome. Use the standard `Drawer` from `components/ui` for viewport-covering overlays such as notifications or auth modals.
|
|
57
|
+
|
|
58
|
+
## Source
|
|
59
|
+
|
|
60
|
+
[`AppLayoutDrawer.stories.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/AppLayoutDrawer.stories.tsx)
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
<!-- source-hash: 99e6880161138f9d238720bc80b322d2 -->
|
|
2
|
+
Storybook stories for the `AppLayoutSidebar` component, demonstrating how `AppLayout` integrates with `AppLayoutDrawer` to render a toggleable right-side AI chat panel within the main content area.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
| Export | Type | Description |
|
|
7
|
+
|---|---|---|
|
|
8
|
+
| `Default` | `Story` | Toggle-driven sidebar that opens/closes via the Mingo AI header button |
|
|
9
|
+
| `Resizable` | `Story` | Starts open with a draggable resize handle; persists width via `storageKey` |
|
|
10
|
+
| `DashboardChildren` | Internal component | Mock dashboard UI used as page content behind the drawer |
|
|
11
|
+
| `navigationItems` | `NavigationSidebarConfig['items']` | Sample nav config with Dashboard, Customers, Devices, Scripts, and Settings |
|
|
12
|
+
|
|
13
|
+
## Usage Example
|
|
14
|
+
|
|
15
|
+
```typescript
|
|
16
|
+
// Minimal AppLayout with a toggleable Mingo AI drawer
|
|
17
|
+
const [open, setOpen] = useState(false)
|
|
18
|
+
|
|
19
|
+
<AppLayout
|
|
20
|
+
sidebarConfig={{ items: navigationItems, onNavigate: fn(), onToggleMinimized: fn() }}
|
|
21
|
+
headerProps={{
|
|
22
|
+
showMingoAI: true,
|
|
23
|
+
onMingoAI: () => setOpen((prev) => !prev),
|
|
24
|
+
isMingoAIActive: open,
|
|
25
|
+
}}
|
|
26
|
+
drawer={
|
|
27
|
+
<AppLayoutDrawer open={open} onOpenChange={setOpen}>
|
|
28
|
+
<AppLayoutDrawerContent side="right">
|
|
29
|
+
<AppLayoutDrawerHeader>
|
|
30
|
+
<AppLayoutDrawerTitle>Mingo AI</AppLayoutDrawerTitle>
|
|
31
|
+
</AppLayoutDrawerHeader>
|
|
32
|
+
<AppLayoutDrawerBody>
|
|
33
|
+
<p>Chat content goes here.</p>
|
|
34
|
+
</AppLayoutDrawerBody>
|
|
35
|
+
</AppLayoutDrawerContent>
|
|
36
|
+
</AppLayoutDrawer>
|
|
37
|
+
}
|
|
38
|
+
>
|
|
39
|
+
<PageContent />
|
|
40
|
+
</AppLayout>
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
For a resizable drawer, add `resizable`, `minSize`, `defaultSize`, and `storageKey` to `AppLayoutDrawerContent`. The navigation sidebar and header remain fully interactive while the drawer is open; close via the X button or Escape key.
|
|
44
|
+
|
|
45
|
+
**Source:** [`AppLayoutSidebar.stories.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/AppLayoutSidebar.stories.tsx)
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
<!-- source-hash: 42e35c13ea5f57f4bad0c0ee1df57d09 -->
|
|
2
|
+
Storybook stories for the `ApprovalBatchMessage` chat component, covering all approval lifecycle states (pending, executing, done, rejected, cancelled) for the "Command Block" UI pattern from Figma node 1092-2807.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
| Export | Type | Description |
|
|
7
|
+
|---|---|---|
|
|
8
|
+
| `Pending` | `Story` | Shows Approve/Reject buttons; row is expandable to reveal call arguments |
|
|
9
|
+
| `ApprovedExecuting` | `Story` | Approved state with a grey loader while the tool call runs |
|
|
10
|
+
| `ApprovedDone` | `Story` | Approved and finished; green check with an expandable Result block |
|
|
11
|
+
| `Rejected` | `Story` | Red status tag, no execution initiated |
|
|
12
|
+
| `Cancelled` | `Story` | Grey status tag, no execution initiated |
|
|
13
|
+
| `AllStates` | `Story` | All five states rendered vertically for side-by-side Figma comparison |
|
|
14
|
+
|
|
15
|
+
**Helpers:**
|
|
16
|
+
|
|
17
|
+
- `toolCall` — a `PendingToolCallData` fixture for a `run_script` RMM tool requiring admin approval
|
|
18
|
+
- `makeData()` — factory producing `ApprovalBatchData` with optional per-call `ApprovalBatchExecutionState` overrides
|
|
19
|
+
- `constrainedDecorator()` — wraps stories in a `max-width` container (default 400 px) to match chat panel dimensions
|
|
20
|
+
|
|
21
|
+
## Usage Example
|
|
22
|
+
|
|
23
|
+
```typescript
|
|
24
|
+
import { ApprovalBatchMessage } from "../components/chat/approval-batch-message";
|
|
25
|
+
|
|
26
|
+
// Pending approval
|
|
27
|
+
<ApprovalBatchMessage
|
|
28
|
+
data={{
|
|
29
|
+
approvalRequestId: "batch-1",
|
|
30
|
+
approvalType: "ADMIN",
|
|
31
|
+
toolCalls: [toolCall],
|
|
32
|
+
}}
|
|
33
|
+
status="pending"
|
|
34
|
+
onApprove={() => handleApprove()}
|
|
35
|
+
onReject={() => handleReject()}
|
|
36
|
+
/>
|
|
37
|
+
|
|
38
|
+
// Approved and finished
|
|
39
|
+
<ApprovalBatchMessage
|
|
40
|
+
data={doneData}
|
|
41
|
+
status="approved"
|
|
42
|
+
resolvedByName="Michael Johnson"
|
|
43
|
+
/>
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
**Source:** [`ApprovalBatchMessage.stories.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/ApprovalBatchMessage.stories.tsx)
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
<!-- source-hash: 97d757bd7f6ce826c293b7cabfdf5f49 -->
|
|
2
|
+
Storybook stories for the **client-facing (Fae end-user)** variant of `ApprovalBatchMessage`, demonstrating all approval states a client can encounter.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
| Export | Description |
|
|
7
|
+
|---|---|
|
|
8
|
+
| `Pending` | Title + Approve/Reject buttons; no command details exposed |
|
|
9
|
+
| `Approved` | Full-text green status pill with resolver name |
|
|
10
|
+
| `Rejected` | Full-text red status pill with resolver name |
|
|
11
|
+
| `Cancelled` | Full-text grey status pill with resolver name |
|
|
12
|
+
| `AllStates` | Composite story rendering all four states stacked vertically |
|
|
13
|
+
|
|
14
|
+
## Usage Example
|
|
15
|
+
|
|
16
|
+
```typescript
|
|
17
|
+
import { ApprovalBatchMessage } from "../components/chat/approval-batch-message";
|
|
18
|
+
|
|
19
|
+
// Pending state — client sees only the BE-generated title + action buttons
|
|
20
|
+
<ApprovalBatchMessage
|
|
21
|
+
variant="client"
|
|
22
|
+
data={{
|
|
23
|
+
approvalRequestId: "batch-1",
|
|
24
|
+
approvalType: "CLIENT",
|
|
25
|
+
toolCalls: [{
|
|
26
|
+
toolExecutionRequestId: "req-1",
|
|
27
|
+
toolName: "run_script",
|
|
28
|
+
toolTitle: "Run Script",
|
|
29
|
+
toolExplanation: "Exports today's event logs to CSV.",
|
|
30
|
+
toolType: "OPENFRAME_RMM",
|
|
31
|
+
requiresApproval: true,
|
|
32
|
+
approvalType: "CLIENT",
|
|
33
|
+
toolCallArguments: { command: "...", timeoutSeconds: 60 },
|
|
34
|
+
}],
|
|
35
|
+
}}
|
|
36
|
+
status="pending"
|
|
37
|
+
onApprove={() => {}}
|
|
38
|
+
onReject={() => {}}
|
|
39
|
+
/>
|
|
40
|
+
|
|
41
|
+
// Resolved state — client sees a status pill only
|
|
42
|
+
<ApprovalBatchMessage
|
|
43
|
+
variant="client"
|
|
44
|
+
data={data}
|
|
45
|
+
status="approved"
|
|
46
|
+
resolvedByName="Michael Johnson"
|
|
47
|
+
/>
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## Notes
|
|
51
|
+
|
|
52
|
+
- Gated by `variant="client"` — commands, scripts, expandable args/results, and execution icons are **never rendered** in this variant.
|
|
53
|
+
- The client sees only the BE-generated `toolExplanation` field as the card title.
|
|
54
|
+
- Mirrors Figma node `203-11947` ("fae-approval-block") and frames `1-6575`, `1-6621`, `1-6637`, `1-6653`.
|
|
55
|
+
- Source: [`ApprovalBatchMessageClient.stories.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/ApprovalBatchMessageClient.stories.tsx)
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
<!-- source-hash: 2177d7e46f18605feaab85e2a98af352 -->
|
|
2
|
+
Storybook stories for the `ApprovalRequestMessage` component, covering all approval states (pending, approved, rejected, cancelled) and content variants (structured fields vs. explanation prose).
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
| Export | Description |
|
|
7
|
+
|---|---|
|
|
8
|
+
| `Pending` | Default state with Approve/Reject action buttons visible |
|
|
9
|
+
| `Approved` | Resolved state showing a green status tag |
|
|
10
|
+
| `Rejected` | Resolved state showing a red status tag |
|
|
11
|
+
| `Cancelled` | Resolved state showing a grey status tag |
|
|
12
|
+
| `WithExplanation` | Pending state using free-text explanation instead of structured fields |
|
|
13
|
+
| `constrainedDecorator` | Local helper that wraps each story in a `400px`-wide container to simulate chat bubble constraints |
|
|
14
|
+
|
|
15
|
+
## Usage Example
|
|
16
|
+
|
|
17
|
+
```typescript
|
|
18
|
+
import { ApprovalRequestMessage } from "../components/chat/approval-request-message";
|
|
19
|
+
import type { ApprovalRequestData } from "../components/chat/types";
|
|
20
|
+
|
|
21
|
+
const data: ApprovalRequestData = {
|
|
22
|
+
command: `Get-CimInstance Win32_Process | Select-Object ProcessId, Name`,
|
|
23
|
+
requestId: "req-1",
|
|
24
|
+
approvalType: "ADMIN",
|
|
25
|
+
fields: [
|
|
26
|
+
{ label: "Tool", value: "OpenFrame RMM" },
|
|
27
|
+
{ label: "RunAsUser", value: "False" },
|
|
28
|
+
{ label: "timeoutSeconds", value: "60" },
|
|
29
|
+
],
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
// Pending — shows Approve / Reject buttons
|
|
33
|
+
<ApprovalRequestMessage
|
|
34
|
+
data={data}
|
|
35
|
+
status="pending"
|
|
36
|
+
onApprove={() => handleApprove()}
|
|
37
|
+
onReject={() => handleReject()}
|
|
38
|
+
/>
|
|
39
|
+
|
|
40
|
+
// Resolved — buttons replaced by a status tag
|
|
41
|
+
<ApprovalRequestMessage data={data} status="approved" />
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## Notes
|
|
45
|
+
|
|
46
|
+
- This is the **legacy single-command variant**. For new surfaces, prefer `ApprovalBatchMessage`, which additionally tracks per-tool execution results.
|
|
47
|
+
- The `fields` array and `explanation` string are mutually exclusive — use one or the other to provide context below the command bar.
|
|
48
|
+
- Stories are registered under `Chat/Admin/ApprovalRequestMessage` in the Storybook sidebar.
|
|
49
|
+
|
|
50
|
+
**Source:** [`ApprovalRequestMessage.stories.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/ApprovalRequestMessage.stories.tsx)
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
<!-- source-hash: 3206ceb65aad5349f453e11274a069c1 -->
|
|
2
|
+
Storybook stories for the **client-facing (Fae end-user) variant** of the `ApprovalRequestMessage` component, covering all approval lifecycle states as seen by the end client — where only the BE-generated explanation title is shown, never the raw command.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
- **`meta`** — Storybook metadata configuring the story group under `Chat/Client/ApprovalRequestMessage`, with `variant="client"` applied globally via `args`
|
|
7
|
+
- **`baseData`** — Shared `ApprovalRequestData` fixture (`approvalType: "CLIENT"`, `command`, `explanation`, `requestId`) used across all stories
|
|
8
|
+
- **`plainDecorator`** — Wrapper utility that constrains story width and applies the CSS background token
|
|
9
|
+
|
|
10
|
+
## Exported Stories
|
|
11
|
+
|
|
12
|
+
| Story | Status | Description |
|
|
13
|
+
|---|---|---|
|
|
14
|
+
| `Pending` | `pending` | Title + Approve/Reject buttons; no command block rendered |
|
|
15
|
+
| `ApprovedByUser` | `approved` | Green `APPROVED BY JOHN SMITH` pill |
|
|
16
|
+
| `Approved` | `approved` | Plain `APPROVED` pill (no resolver name) |
|
|
17
|
+
| `RejectedByUser` | `rejected` | Red `REJECTED BY JOHN SMITH` pill |
|
|
18
|
+
| `Cancelled` | `cancelled` | Grey status pill |
|
|
19
|
+
| `NoTitleFallback` | `pending` | `explanation: undefined` triggers `"Approval required"` placeholder |
|
|
20
|
+
|
|
21
|
+
## Usage Example
|
|
22
|
+
|
|
23
|
+
```typescript
|
|
24
|
+
// Render the client approval card in pending state
|
|
25
|
+
import { ApprovalRequestMessage } from "../components/chat/approval-request-message";
|
|
26
|
+
|
|
27
|
+
<ApprovalRequestMessage
|
|
28
|
+
variant="client"
|
|
29
|
+
data={{
|
|
30
|
+
command: "brew install --cask slack",
|
|
31
|
+
requestId: "req-client-1",
|
|
32
|
+
approvalType: "CLIENT",
|
|
33
|
+
explanation: "Install Slack via Homebrew Cask on macOS",
|
|
34
|
+
}}
|
|
35
|
+
status="pending"
|
|
36
|
+
onApprove={() => handleApprove()}
|
|
37
|
+
onReject={() => handleReject()}
|
|
38
|
+
/>
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
> **Note:** With `variant="client"`, the raw `command` string is never rendered — only the `explanation` title is visible to the end user, per Figma node 203-11947 (`fae-approval-block`).
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
<!-- source-hash: f25255e37142438b85c6b2df6de4a52f -->
|
|
2
|
+
Storybook story file for the `BlogCard` entity card component, providing interactive visual stories for both compact chat-inline and full vertical catalog display densities.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
| Export | Type | Description |
|
|
7
|
+
|---|---|---|
|
|
8
|
+
| `meta` | `Meta<typeof BlogCard>` | Storybook configuration for `Chat/EntityCards/BlogCard` |
|
|
9
|
+
| `ChatInlineSm` | `Story` | Compact horizontal card (`size="sm"`, ~80px tall) for chat-inline rendering |
|
|
10
|
+
| `ChatInlineWithVideoBadge` | `Story` | Compact card variant with `hasEmbeddedVideo` badge overlay |
|
|
11
|
+
| `Default` | `Story` | Full vertical catalog card (`size="default"`) for related-content rail use |
|
|
12
|
+
|
|
13
|
+
## Usage Example
|
|
14
|
+
|
|
15
|
+
```typescript
|
|
16
|
+
import { BlogCard } from '../components/chat/entity-cards'
|
|
17
|
+
|
|
18
|
+
// Chat-inline compact form (dispatched by chat with size="sm")
|
|
19
|
+
<BlogCard
|
|
20
|
+
post={blogPostSummary}
|
|
21
|
+
href={`/blog/${blogPostSummary.slug}`}
|
|
22
|
+
size="sm"
|
|
23
|
+
target="_blank"
|
|
24
|
+
rel="noopener noreferrer"
|
|
25
|
+
/>
|
|
26
|
+
|
|
27
|
+
// Full vertical catalog card (e.g. related-content rail)
|
|
28
|
+
<BlogCard
|
|
29
|
+
post={blogPostSummary}
|
|
30
|
+
href={`/blog/${blogPostSummary.slug}`}
|
|
31
|
+
size="default"
|
|
32
|
+
target="_blank"
|
|
33
|
+
rel="noopener noreferrer"
|
|
34
|
+
/>
|
|
35
|
+
|
|
36
|
+
// With embedded video badge
|
|
37
|
+
<BlogCard
|
|
38
|
+
post={blogPostSummary}
|
|
39
|
+
href={`/blog/${blogPostSummary.slug}`}
|
|
40
|
+
size="sm"
|
|
41
|
+
hasEmbeddedVideo
|
|
42
|
+
/>
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## Notes
|
|
46
|
+
|
|
47
|
+
- All stories are wrapped in `ChatColumnDecorator` to simulate the chat column layout context.
|
|
48
|
+
- `href` should be resolved by the caller via `buildContentURL` or `useNavLink`; the card renders its own `<a>` internally.
|
|
49
|
+
- `size="sm"` is the standard chat dispatch variant; `size="default"` is reserved for catalog/rail contexts.
|
|
50
|
+
- Fixture data (`blogPostSummary`) is sourced from `./__fixtures__/chat-cards`.
|
|
51
|
+
|
|
52
|
+
**Source:** [`BlogCard.stories.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/BlogCard.stories.tsx)
|