@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
|
@@ -1,39 +1,32 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
|
|
1
|
+
<!-- source-hash: 972f5fe6b007673ab1eb81a819bd300b -->
|
|
2
|
+
Orchestrates all ticket write operations (create, update, close, reopen, reply) through a single POST endpoint, with optimistic UI updates, per-row mutex guards, a serialized mutation queue, and mirror-sync retry logic.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
###
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
Returned handler surface:
|
|
19
|
-
- `submitTicket(input)` — creates a new ticket with subject, content, and optional attachments
|
|
20
|
-
- `sendMessage(ticket, text, attachments)` — sends a combined reply note
|
|
21
|
-
- `closeTicket(ticket, resolution?)` — closes a ticket
|
|
22
|
-
- `reopenTicket(ticket)` — reopens a closed ticket
|
|
23
|
-
- `isSubmittingForm` — boolean loading state for form-level submission
|
|
24
|
-
- `isRowBusy(localId)` — per-row busy predicate for UI disabling
|
|
25
|
-
|
|
26
|
-
### `TicketRef`
|
|
27
|
-
Decouples the local mirror UUID (`id`) from the HubSpot external id (`external_id`), both required for correct mutex and server routing.
|
|
6
|
+
### Hook
|
|
7
|
+
|
|
8
|
+
**`useTicketActions(options)`** — Returns all ticket mutation helpers and associated state selectors.
|
|
9
|
+
|
|
10
|
+
### Interfaces
|
|
11
|
+
|
|
12
|
+
| Interface | Purpose |
|
|
13
|
+
|---|---|
|
|
14
|
+
| `UseTicketActionsOptions` | Inbound callbacks: `prependOptimistic`, `removeOptimistic`, `removeTicketFromCache`, `toast`, `onSupportSystemDown` |
|
|
15
|
+
| `UseTicketActionsReturn` | Outbound actions and state selectors |
|
|
16
|
+
| `TicketRef` | Decouples the local mirror UUID (`id`) from the HubSpot external ID (`external_id`) |
|
|
17
|
+
| `TicketActionResponse` | Flat wire shape from `/api/chat/agent/ticket-action` |
|
|
28
18
|
|
|
29
19
|
### Internal Mechanisms
|
|
30
|
-
|
|
20
|
+
|
|
21
|
+
| Mechanism | Description |
|
|
31
22
|
|---|---|
|
|
32
|
-
| `formInFlightRef` + `isSubmittingForm` |
|
|
33
|
-
| `busyRowsRef` + `busyRows` | Per-row mutex
|
|
34
|
-
| `
|
|
35
|
-
| `
|
|
36
|
-
| `
|
|
23
|
+
| `formInFlightRef` + `isSubmittingForm` | Ref/state split prevents duplicate form submits in the same tick |
|
|
24
|
+
| `busyRowsRef` + `busyRows` | Per-row `Set<string>` mutex; `isRowBusy(localId)` drives row-level UI disable |
|
|
25
|
+
| `enqueue()` | Depth-1 promise queue serializes all mutations; prevents server rate-limit stampedes |
|
|
26
|
+
| `watcherControllersRef` | Tracks `AbortController` per placeholder for mirror-sync backoff refetches; cleaned up on unmount |
|
|
27
|
+
| `replyErrorByTicket` | Persisted `Map<externalId, error>` powers the inline reply-failure banner in `<TicketDetailDrawer>` |
|
|
28
|
+
| `REPLY_BANNER_CODES` | Subset of `TicketActionErrorCode` values that surface in the inline banner vs. toast-only |
|
|
29
|
+
| `MIRROR_SYNC_BACKOFF_MS` | `[3000, 6000, 12000]` ms retry schedule (~21s cumulative); drops placeholder after exhaustion |
|
|
37
30
|
|
|
38
31
|
## Usage Example
|
|
39
32
|
|
|
@@ -45,33 +38,53 @@ const {
|
|
|
45
38
|
reopenTicket,
|
|
46
39
|
isSubmittingForm,
|
|
47
40
|
isRowBusy,
|
|
41
|
+
replyErrorFor,
|
|
42
|
+
clearReplyError,
|
|
48
43
|
} = useTicketActions({
|
|
49
44
|
prependOptimistic: (placeholder) => {
|
|
50
|
-
queryClient.setQueryData(['tickets'], (
|
|
51
|
-
...
|
|
52
|
-
tickets: [placeholder, ...
|
|
53
|
-
}))
|
|
54
|
-
},
|
|
55
|
-
removeOptimistic: (id) => {
|
|
56
|
-
queryClient.setQueryData(['tickets'], (old: TicketData) => ({
|
|
57
|
-
...old,
|
|
58
|
-
tickets: old?.tickets.filter((t) => t.id !== id) ?? [],
|
|
45
|
+
queryClient.setQueryData(['tickets'], (prev: TicketData) => ({
|
|
46
|
+
...prev,
|
|
47
|
+
tickets: [placeholder, ...prev.tickets],
|
|
59
48
|
}))
|
|
60
49
|
},
|
|
61
|
-
|
|
50
|
+
removeOptimistic: (placeholderId) => { /* remove from cache */ },
|
|
51
|
+
removeTicketFromCache: (ticketId) => { /* evict row */ },
|
|
62
52
|
toast,
|
|
63
53
|
onSupportSystemDown: () => setSupportSystemDown(true),
|
|
64
54
|
})
|
|
65
55
|
|
|
66
|
-
// Create a ticket
|
|
56
|
+
// Create a new ticket
|
|
67
57
|
const ok = await submitTicket({
|
|
68
|
-
subject: '
|
|
69
|
-
content: '
|
|
58
|
+
subject: 'Outlook keeps crashing',
|
|
59
|
+
content: 'Happens on every launch since the last update.',
|
|
60
|
+
attachments: [],
|
|
70
61
|
})
|
|
71
62
|
|
|
72
|
-
//
|
|
63
|
+
// Reply with text + attachments in one HubSpot Note
|
|
64
|
+
await sendMessage(
|
|
65
|
+
{ id: 'uuid-123', external_id: 'hs-456' },
|
|
66
|
+
'Reproduced — pushing a fix now.',
|
|
67
|
+
[attachment],
|
|
68
|
+
)
|
|
69
|
+
|
|
70
|
+
// Close with resolution note
|
|
73
71
|
await closeTicket(
|
|
74
|
-
{ id:
|
|
75
|
-
'Resolved by
|
|
72
|
+
{ id: 'uuid-123', external_id: 'hs-456' },
|
|
73
|
+
'Resolved by rolling back the update.',
|
|
76
74
|
)
|
|
77
|
-
|
|
75
|
+
|
|
76
|
+
// Disable a row while its action is in flight
|
|
77
|
+
<button disabled={isRowBusy(ticket.id)}>Close</button>
|
|
78
|
+
|
|
79
|
+
// Show inline reply error banner
|
|
80
|
+
const replyError = replyErrorFor(ticket.external_id)
|
|
81
|
+
{replyError && (
|
|
82
|
+
<ReplyErrorBanner error={replyError} onDismiss={() => clearReplyError(ticket.external_id)} />
|
|
83
|
+
)}
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
## Notes
|
|
87
|
+
|
|
88
|
+
- All mutations route through `executeTicketAction()`, which calls `embedAuthedFetch` with bearer/act-as headers — the same auth path as the chat agent.
|
|
89
|
+
- `TicketRef.id` (UUID) and `TicketRef.external_id` (HubSpot numeric ID) must be kept distinct; swapping them causes either a React mutex miss or a HubSpot 404.
|
|
90
|
+
- Source: [`use-ticket-actions.ts`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/use-ticket-actions.ts)
|
|
@@ -1,42 +1,42 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
Fetches the conversation timeline (
|
|
1
|
+
<!-- source-hash: 0e3b0537d223c117b5e9ba85795c3235 -->
|
|
2
|
+
Fetches and manages the conversation timeline (Note engagements and attachments) for a single ticket, powering the drawer's timeline view with optional live-polling support.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
6
|
### Interfaces
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
| `TicketEngagement` | A single timeline entry with body, author info (`authorRole`, `authorName`, `authorEmail`, `authorAvatarUrl`), timestamp, and attachments |
|
|
12
|
-
| `UseTicketEngagementsReturn` | Return shape: `engagements`, `isLoading`, `isFetching`, `error`, `refetch` |
|
|
8
|
+
- **`TicketEngagementFile`** — Attachment metadata: `id`, `name`, `url`, `mime`, `size`
|
|
9
|
+
- **`TicketEngagement`** — A single timeline entry with `body`, `authorRole` (`'customer' | 'support'`), resolved `authorName`/`authorEmail`/`authorAvatarUrl`, `createdAt`, and `attachments`
|
|
10
|
+
- **`UseTicketEngagementsReturn`** — Hook return shape: `engagements`, `isLoading`, `isFetching`, `error`, `refetch`
|
|
13
11
|
|
|
14
12
|
### Hook
|
|
15
13
|
|
|
16
|
-
**`useTicketEngagements(externalTicketId, enabled?)`**
|
|
14
|
+
**`useTicketEngagements(externalTicketId, enabled?, refetchInterval?)`**
|
|
15
|
+
|
|
16
|
+
- Skips fetching for optimistic (`temp-*`) ticket IDs and unauthenticated (`anon`) identities
|
|
17
|
+
- Posts to `/api/chat/agent/list-engagements` via `embedAuthedFetch`
|
|
18
|
+
- Disables all caching (`staleTime: 0`, `gcTime: 0`) to ensure HubSpot truth on every drawer open
|
|
19
|
+
- Supports configurable live-polling via `refetchInterval`; polling automatically stops when the drawer unmounts
|
|
20
|
+
- Fixes a skeleton double-flash by treating a fetchable ticket as "loading" from the very first render, even before `useChatIdentity` resolves
|
|
17
21
|
|
|
18
22
|
## Usage Example
|
|
19
23
|
|
|
20
24
|
```typescript
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
body={e.body}
|
|
32
|
-
role={e.authorRole} // 'customer' | 'support'
|
|
33
|
-
author={e.authorName}
|
|
34
|
-
avatarUrl={e.authorAvatarUrl}
|
|
35
|
-
attachments={e.attachments}
|
|
36
|
-
/>
|
|
37
|
-
))}
|
|
38
|
-
</Timeline>
|
|
25
|
+
// Basic usage — fetch once when drawer opens
|
|
26
|
+
const { engagements, isLoading, error } = useTicketEngagements(ticket.externalId)
|
|
27
|
+
|
|
28
|
+
// Live-polling variant — refresh every 15 seconds while drawer is open
|
|
29
|
+
const TICKET_LIVE_POLL_MS = 15_000
|
|
30
|
+
|
|
31
|
+
const { engagements, isFetching, refetch } = useTicketEngagements(
|
|
32
|
+
ticket.externalId,
|
|
33
|
+
true,
|
|
34
|
+
TICKET_LIVE_POLL_MS,
|
|
39
35
|
)
|
|
40
36
|
```
|
|
41
37
|
|
|
42
|
-
|
|
38
|
+
## Notes
|
|
39
|
+
|
|
40
|
+
- Server enforces ticket ownership via `ticketBelongsToCustomer` before returning notes — customers cannot enumerate another customer's timeline by guessing ticket IDs
|
|
41
|
+
- `authorName` for `support` engagements is resolved by matching the HubSpot owner email against the `profiles` table; returns `null` for non-Flamingo employees
|
|
42
|
+
- For `customer` messages, `authorName`/`authorAvatarUrl` are `null` on the wire; the drawer reads live identity values for the current user's own messages
|
|
@@ -1,36 +1,29 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
Customer-scoped ticket list hook that wraps `POST /api/chat/agent/find-ticket`,
|
|
1
|
+
<!-- source-hash: 6260376ea77bd4ce957bd2534ddcd997 -->
|
|
2
|
+
Customer-scoped ticket list hook that wraps `POST /api/chat/agent/find-ticket`, returning paginated results with filtering support for search text and ticket status.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
### `useTicketsList(filters)`
|
|
7
|
-
Main exported hook. Accepts a `UseTicketsListFilters` object and returns `UseTicketsListReturn`.
|
|
8
|
-
|
|
9
6
|
### `UseTicketsListFilters`
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
| `pageSize` | `number?` | Items per page, server-capped at `100`, defaults to `20` |
|
|
7
|
+
Input interface controlling the query:
|
|
8
|
+
- `customerEmail` — required identity (drilled from parent to avoid race conditions with `useChatIdentity`)
|
|
9
|
+
- `search` — free-text FTS filter; empty string returns all tickets
|
|
10
|
+
- `status` — `'open'` | `'closed'` | `'all'` (empty/`'all'` omits the filter)
|
|
11
|
+
- `page` / `pageSize` — 1-based pagination; server caps `pageSize` at 100
|
|
12
|
+
- `refetchInterval` — optional polling interval (ms) for live status updates; paused on hidden tabs
|
|
17
13
|
|
|
18
14
|
### `UseTicketsListReturn`
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
| `page` / `pageSize` | `number` | Server-echoed values |
|
|
25
|
-
| `isLoading` | `boolean` | `true` when no data exists for the current query slot |
|
|
26
|
-
| `isFetching` | `boolean` | `true` during any background refetch |
|
|
27
|
-
| `lastUpdatedAt` | `number \| null` | Wall-clock timestamp of last successful fetch |
|
|
15
|
+
Output shape:
|
|
16
|
+
- `tickets` — current page rows
|
|
17
|
+
- `isLoading` — true when `data === undefined` or fetching with zero results (avoids TanStack v5 flag race conditions)
|
|
18
|
+
- `totalCount` / `page` / `pageSize` / `totalPages` — server-echoed pagination metadata; `totalPages` is clamped to ≥ 1
|
|
19
|
+
- `lastUpdatedAt` — wall-clock timestamp of last successful fetch
|
|
28
20
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
-
|
|
32
|
-
-
|
|
33
|
-
-
|
|
21
|
+
### `useTicketsList(filters)`
|
|
22
|
+
Core hook. Key behaviors:
|
|
23
|
+
- Disabled when `customerEmail` is falsy (short-circuits the fetch)
|
|
24
|
+
- Cache keyed by `['tickets', 'self', identity, search, status, page, pageSize]` — each filter/page combo gets its own slot
|
|
25
|
+
- `staleTime: 0`, `gcTime: 0`, `refetchOnMount: 'always'` — deliberately no caching (live customer data)
|
|
26
|
+
- Endpoint resolved from `useRequiredChatRuntime()` for reverse-proxy compatibility
|
|
34
27
|
|
|
35
28
|
## Usage Example
|
|
36
29
|
|
|
@@ -41,14 +34,15 @@ const {
|
|
|
41
34
|
totalCount,
|
|
42
35
|
totalPages,
|
|
43
36
|
page,
|
|
44
|
-
|
|
37
|
+
refetch,
|
|
45
38
|
} = useTicketsList({
|
|
46
39
|
customerEmail: identity.user.email,
|
|
47
|
-
search:
|
|
40
|
+
search: searchQuery,
|
|
48
41
|
status: 'open',
|
|
49
|
-
page:
|
|
42
|
+
page: currentPage,
|
|
50
43
|
pageSize: 20,
|
|
44
|
+
refetchInterval: isDrawerOpen ? 10_000 : false,
|
|
51
45
|
})
|
|
52
46
|
```
|
|
53
47
|
|
|
54
|
-
>
|
|
48
|
+
> Invalidate all ticket slots after mutations via `queryClient.invalidateQueries({ queryKey: ['tickets'] })`.
|
|
@@ -1,37 +1,39 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
|
|
1
|
+
<!-- source-hash: 22ee9a9634992447bd91b4c524998d3b -->
|
|
2
|
+
Accessible accordion component built on Radix UI primitives, providing collapsible content sections with animated expand/collapse transitions and a rotating chevron indicator.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
6
|
+
| Export | Description |
|
|
7
|
+
|--------|-------------|
|
|
8
|
+
| `Accordion` | Root container (re-export of `AccordionPrimitive.Root`); accepts `type="single"` or `type="multiple"` |
|
|
9
|
+
| `AccordionItem` | Individual collapsible section with a bottom border |
|
|
10
|
+
| `AccordionTrigger` | Clickable header with a `ChevronDown` icon that rotates 180° when open |
|
|
11
|
+
| `AccordionContent` | Animated content panel using `animate-accordion-up/down` Tailwind keyframes |
|
|
10
12
|
|
|
11
13
|
## Usage Example
|
|
12
14
|
|
|
13
15
|
```typescript
|
|
14
|
-
import {
|
|
15
|
-
Accordion,
|
|
16
|
-
AccordionItem,
|
|
17
|
-
AccordionTrigger,
|
|
18
|
-
AccordionContent
|
|
19
|
-
} from "
|
|
20
|
-
|
|
21
|
-
export function
|
|
16
|
+
import {
|
|
17
|
+
Accordion,
|
|
18
|
+
AccordionItem,
|
|
19
|
+
AccordionTrigger,
|
|
20
|
+
AccordionContent,
|
|
21
|
+
} from "@/components/ui/accordion"
|
|
22
|
+
|
|
23
|
+
export function FAQAccordion() {
|
|
22
24
|
return (
|
|
23
|
-
<Accordion type="single" collapsible
|
|
25
|
+
<Accordion type="single" collapsible defaultValue="item-1">
|
|
24
26
|
<AccordionItem value="item-1">
|
|
25
|
-
<AccordionTrigger>What is
|
|
27
|
+
<AccordionTrigger>What is OpenFrame?</AccordionTrigger>
|
|
26
28
|
<AccordionContent>
|
|
27
|
-
|
|
29
|
+
OpenFrame is a unified AI-driven platform for MSP operations.
|
|
28
30
|
</AccordionContent>
|
|
29
31
|
</AccordionItem>
|
|
30
|
-
|
|
32
|
+
|
|
31
33
|
<AccordionItem value="item-2">
|
|
32
|
-
<AccordionTrigger>How
|
|
34
|
+
<AccordionTrigger>How does Mingo AI work?</AccordionTrigger>
|
|
33
35
|
<AccordionContent>
|
|
34
|
-
|
|
36
|
+
Mingo AI automates IT support tasks for technicians.
|
|
35
37
|
</AccordionContent>
|
|
36
38
|
</AccordionItem>
|
|
37
39
|
</Accordion>
|
|
@@ -39,4 +41,9 @@ export function FAQSection() {
|
|
|
39
41
|
}
|
|
40
42
|
```
|
|
41
43
|
|
|
42
|
-
|
|
44
|
+
## Notes
|
|
45
|
+
|
|
46
|
+
- **`type="single"`** allows only one open item at a time; **`type="multiple"`** allows several.
|
|
47
|
+
- Pass `collapsible` on a `single` accordion to allow closing the active item.
|
|
48
|
+
- All components forward refs and accept standard Radix UI props alongside `className` for Tailwind customization.
|
|
49
|
+
- Source: [`accordion.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/accordion.tsx)
|
|
@@ -1,31 +1,15 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
A flexible,
|
|
1
|
+
<!-- source-hash: d6f4857e4f0fccaffff7c8abd70a2f28 -->
|
|
2
|
+
A flexible, grouped actions menu component supporting inline display and dropdown trigger modes, with items that can be plain actions, checkboxes, submenus, separators, or navigation links — each optionally enhanced with a secondary icon action.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
| Component |
|
|
9
|
-
|
|
10
|
-
| `
|
|
11
|
-
| `
|
|
12
|
-
|
|
13
|
-
### Internal Components
|
|
14
|
-
|
|
15
|
-
| Component | Description |
|
|
16
|
-
|-----------|-------------|
|
|
17
|
-
| `MenuItem` | Renders a single item — handles `item`, `checkbox`, `submenu`, `separator`, and link variants |
|
|
18
|
-
| `SecondaryAction` | 40px secondary icon button/link on the right side of a row, independently clickable |
|
|
19
|
-
| `GroupSeparator` | Visual divider rendered between groups when `separator: true` |
|
|
20
|
-
|
|
21
|
-
### Key Interfaces
|
|
22
|
-
|
|
23
|
-
| Interface | Purpose |
|
|
24
|
-
|-----------|---------|
|
|
25
|
-
| `ActionsMenuItem` | Single menu item with optional `href`, `submenu`, `iconAction`, `checked` |
|
|
26
|
-
| `ActionsMenuGroup` | Collection of items with optional separator |
|
|
27
|
-
| `ActionsMenuProps` | Props for `ActionsMenu` — `groups`, `className`, `onItemClick` |
|
|
28
|
-
| `ActionsMenuDropdownProps` | Extends `ActionsMenuProps` with trigger, alignment, and popover controls |
|
|
6
|
+
| Export | Type | Description |
|
|
7
|
+
|---|---|---|
|
|
8
|
+
| `ActionsMenu` | Component | Standalone menu panel rendering grouped `ActionsMenuItem` rows |
|
|
9
|
+
| `ActionsMenuDropdown` | Component | Wraps `ActionsMenu` in a Radix UI dropdown with a configurable trigger button |
|
|
10
|
+
| `ActionsMenuItemIconAction` | Interface | Secondary icon button/link rendered on the right edge of a menu row |
|
|
11
|
+
| `ActionsMenuItem` | Interface | Single menu row — supports `item`, `checkbox`, `submenu`, and `separator` types |
|
|
12
|
+
| `ActionsMenuGroup` | Interface | Ordered collection of items with an optional visual separator |
|
|
29
13
|
|
|
30
14
|
## Usage Example
|
|
31
15
|
|
|
@@ -39,49 +23,47 @@ const groups = [
|
|
|
39
23
|
id: "edit",
|
|
40
24
|
label: "Edit",
|
|
41
25
|
icon: <EditIcon />,
|
|
42
|
-
onClick: () => console.log("
|
|
26
|
+
onClick: () => console.log("edit"),
|
|
43
27
|
},
|
|
44
|
-
{
|
|
45
|
-
id: "open",
|
|
46
|
-
label: "Open in new tab",
|
|
47
|
-
href: "/resource/123",
|
|
48
|
-
iconAction: {
|
|
49
|
-
icon: <ExternalLinkIcon />,
|
|
50
|
-
"aria-label": "Open in new tab",
|
|
51
|
-
href: "/resource/123",
|
|
52
|
-
openInNewTab: true,
|
|
53
|
-
},
|
|
54
|
-
},
|
|
55
|
-
],
|
|
56
|
-
separator: true,
|
|
57
|
-
},
|
|
58
|
-
{
|
|
59
|
-
items: [
|
|
60
28
|
{
|
|
61
29
|
id: "notify",
|
|
62
30
|
label: "Notifications",
|
|
63
|
-
type: "checkbox",
|
|
31
|
+
type: "checkbox" as const,
|
|
64
32
|
checked: true,
|
|
65
33
|
onClick: () => toggleNotifications(),
|
|
66
34
|
},
|
|
67
|
-
|
|
35
|
+
],
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
separator: true,
|
|
39
|
+
items: [
|
|
68
40
|
{
|
|
69
41
|
id: "delete",
|
|
70
42
|
label: "Delete",
|
|
71
|
-
|
|
72
|
-
onClick: () =>
|
|
43
|
+
danger: true,
|
|
44
|
+
onClick: () => confirmDelete(),
|
|
73
45
|
},
|
|
74
46
|
],
|
|
75
47
|
},
|
|
76
48
|
];
|
|
77
49
|
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
50
|
+
export function MyComponent() {
|
|
51
|
+
return (
|
|
52
|
+
<ActionsMenuDropdown
|
|
53
|
+
groups={groups}
|
|
54
|
+
align="end"
|
|
55
|
+
side="bottom"
|
|
56
|
+
triggerAriaLabel="Row actions"
|
|
57
|
+
/>
|
|
58
|
+
);
|
|
59
|
+
}
|
|
85
60
|
```
|
|
86
61
|
|
|
87
|
-
|
|
62
|
+
## Notes
|
|
63
|
+
|
|
64
|
+
- `closeOnSelect` defaults to closing the dropdown; set to `false` to keep it open (useful for multi-select scenarios).
|
|
65
|
+
- `ActionsMenuDropdown` supports **controlled open state** via `open` + `onOpenChange`.
|
|
66
|
+
- Items with `href` render as Next.js `<Link>` elements; `iconAction` renders an independent secondary `<Link>` or `<button>` on the row's right edge.
|
|
67
|
+
- Submenus use Radix `DropdownMenuPrimitive.Sub` and support recursive `MenuItem` rendering.
|
|
68
|
+
|
|
69
|
+
**Source:** [`actions-menu.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/actions-menu.tsx)
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
<!-- source-hash: 8efc6e7d680013ff739aca49651afb03 -->
|
|
2
|
+
Renders a standardized "AI Generated" badge with a Sparkles icon, serving as the single source of truth for AI-generated content indicators across the application.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
- **`AIGeneratedBadge`** — A functional component that wraps the `Badge` component with a fixed `secondary` variant, a `Sparkles` icon (12×12px), and the label "AI Generated". Accepts an optional `className` prop for additional styling.
|
|
7
|
+
|
|
8
|
+
## Usage Example
|
|
9
|
+
|
|
10
|
+
```typescript
|
|
11
|
+
import { AIGeneratedBadge } from '@/components/ui/ai-generated-badge';
|
|
12
|
+
|
|
13
|
+
// Basic usage
|
|
14
|
+
<AIGeneratedBadge />
|
|
15
|
+
|
|
16
|
+
// With custom positioning class
|
|
17
|
+
<AIGeneratedBadge className="absolute top-2 right-2" />
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## Notes
|
|
21
|
+
|
|
22
|
+
- Replaces repeated inline `<Badge variant="secondary"><Sparkles/> AI Generated</Badge>` patterns previously copy-pasted across summary, video, and SEO editors.
|
|
23
|
+
- The `className` prop is appended to the base flex layout classes, allowing layout overrides without losing default styling.
|
|
24
|
+
|
|
25
|
+
**Source:** [`ai-generated-badge.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/ai-generated-badge.tsx)
|
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
Accessible alert dialog component built on Radix UI
|
|
1
|
+
<!-- source-hash: 987a3c72b70286ca2d2102e429fad6b4 -->
|
|
2
|
+
Accessible alert dialog component built on Radix UI primitives, providing a modal confirmation dialog with overlay, animations, and styled action/cancel buttons using the OpenFrame design system.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
6
|
| Export | Description |
|
|
7
|
-
|
|
8
|
-
| `AlertDialog` | Root component
|
|
7
|
+
|---|---|
|
|
8
|
+
| `AlertDialog` | Root component wrapping Radix `AlertDialogPrimitive.Root` |
|
|
9
9
|
| `AlertDialogTrigger` | Element that opens the dialog |
|
|
10
|
-
| `AlertDialogPortal` | Renders dialog outside the DOM
|
|
11
|
-
| `AlertDialogOverlay` | Fixed
|
|
12
|
-
| `AlertDialogContent` | Centered modal panel with zoom
|
|
10
|
+
| `AlertDialogPortal` | Renders dialog outside the DOM tree |
|
|
11
|
+
| `AlertDialogOverlay` | Fixed backdrop with fade animations |
|
|
12
|
+
| `AlertDialogContent` | Centered modal panel with slide/zoom animations |
|
|
13
13
|
| `AlertDialogHeader` | Layout wrapper for title and description |
|
|
14
|
-
| `AlertDialogFooter` |
|
|
15
|
-
| `AlertDialogTitle` |
|
|
16
|
-
| `AlertDialogDescription` | Muted
|
|
17
|
-
| `AlertDialogAction` | Confirm button
|
|
18
|
-
| `AlertDialogCancel` | Dismiss button
|
|
14
|
+
| `AlertDialogFooter` | Layout wrapper for action buttons (stacked on mobile, inline on desktop) |
|
|
15
|
+
| `AlertDialogTitle` | Styled title using `text-h3` |
|
|
16
|
+
| `AlertDialogDescription` | Muted subtitle using `text-h6` |
|
|
17
|
+
| `AlertDialogAction` | Confirm button using default `buttonVariants()` |
|
|
18
|
+
| `AlertDialogCancel` | Dismiss button using `outline` button variant |
|
|
19
19
|
|
|
20
20
|
## Usage Example
|
|
21
21
|
|
|
@@ -40,13 +40,13 @@ export function DeleteConfirmDialog() {
|
|
|
40
40
|
<AlertDialogHeader>
|
|
41
41
|
<AlertDialogTitle>Are you sure?</AlertDialogTitle>
|
|
42
42
|
<AlertDialogDescription>
|
|
43
|
-
This
|
|
43
|
+
This action cannot be undone. The device will be permanently removed.
|
|
44
44
|
</AlertDialogDescription>
|
|
45
45
|
</AlertDialogHeader>
|
|
46
46
|
<AlertDialogFooter>
|
|
47
47
|
<AlertDialogCancel>Cancel</AlertDialogCancel>
|
|
48
|
-
<AlertDialogAction onClick={
|
|
49
|
-
Confirm
|
|
48
|
+
<AlertDialogAction onClick={handleDelete}>
|
|
49
|
+
Confirm Delete
|
|
50
50
|
</AlertDialogAction>
|
|
51
51
|
</AlertDialogFooter>
|
|
52
52
|
</AlertDialogContent>
|
|
@@ -55,4 +55,9 @@ export function DeleteConfirmDialog() {
|
|
|
55
55
|
}
|
|
56
56
|
```
|
|
57
57
|
|
|
58
|
-
|
|
58
|
+
## Notes
|
|
59
|
+
|
|
60
|
+
- Requires a client component context (`"use client"`)
|
|
61
|
+
- Overlay uses `bg-ods-overlay` from the OpenFrame design token system
|
|
62
|
+
- Animations use Tailwind `animate-in`/`animate-out` data-state classes
|
|
63
|
+
- Source: [`alert-dialog.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/alert-dialog.tsx)
|