@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,42 +1,63 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
Provides the React context
|
|
1
|
+
<!-- source-hash: 8291e5c1b6ca756b6bd0c1207bec4218 -->
|
|
2
|
+
Provides the React context for configuring the chat panel's API endpoints, navigation behavior, and identity settings across host and embedded deployments.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
6
|
### `ChatRuntime` Interface
|
|
7
|
-
The central config shape with three top-level concerns:
|
|
8
7
|
|
|
9
|
-
|
|
10
|
-
|---|---|
|
|
11
|
-
| `endpoints` | All API URLs: streaming chat, agent approval, slash-commands, attachment upload/view, identity, and optional image proxy |
|
|
12
|
-
| `navigation` | Mode (`'host'` or `'embed'`), external URL handler, in-app router callback, and new-tab decision logic |
|
|
13
|
-
| `source` | Required string used for `localStorage` namespacing (`mingo-chat-<source>-v1`) |
|
|
8
|
+
The core configuration shape with three top-level concerns:
|
|
14
9
|
|
|
15
|
-
|
|
16
|
-
|
|
10
|
+
- **`endpoints`** — All API URLs consumed by the chat panel:
|
|
11
|
+
- `chatStreamUrl` — POST streaming chat
|
|
12
|
+
- `approvalToolUrl` — POST agent tool approval/rejection
|
|
13
|
+
- `commandsUrl` — GET slash-command catalog
|
|
14
|
+
- `buildListUrl` — Entity-card list URL builder
|
|
15
|
+
- `attachmentUploadUrl` / `attachmentViewUrlPrefix` — File attachment support
|
|
16
|
+
- `identityUrl` — Session capability resolution
|
|
17
|
+
- Optional: `findTicketUrl`, `ticketActionUrl`, `listEngagementsUrl`, `docsSearchUrl`, `docsResolveLinkUrl`, `emptyStateUrl`, `aiAgentConfigUrl`, `imageProxyUrlPrefix`, `ogPlaceholderUrl`, `supabaseStorageOrigin`
|
|
17
18
|
|
|
18
|
-
|
|
19
|
-
|
|
19
|
+
- **`navigation`** — Click-routing behavior:
|
|
20
|
+
- `mode: 'host' | 'embed'` — Host uses in-app router; embed forces new-tab
|
|
21
|
+
- `defaultContentOrigin` — Required for embed mode to absolutize relative URLs
|
|
22
|
+
- `navigate` — Optional in-app routing callback (host mode)
|
|
23
|
+
- `decideNewTab` / `openExternal` — Optional override hooks
|
|
20
24
|
|
|
21
|
-
|
|
22
|
-
|
|
25
|
+
- **`composeContentUrl`** (`ComposeContentUrl`) — Optional platform-aware content href composer; falls back to relative paths when unset
|
|
26
|
+
|
|
27
|
+
### Context Exports
|
|
28
|
+
|
|
29
|
+
- `ChatRuntimeContext` — The React context object
|
|
30
|
+
- `useChatRuntime()` — Hook to consume the context within the chat tree
|
|
23
31
|
|
|
24
32
|
## Usage Example
|
|
25
33
|
|
|
26
34
|
```typescript
|
|
27
|
-
// Host (hub)
|
|
28
|
-
|
|
35
|
+
// Host mode (e.g. hub.openframe.ai)
|
|
36
|
+
const runtime = React.useMemo<ChatRuntime>(() => ({
|
|
37
|
+
endpoints: {
|
|
38
|
+
chatStreamUrl: '/api/docs/chat',
|
|
39
|
+
approvalToolUrl: '/api/chat/agent/confirm-tool',
|
|
40
|
+
commandsUrl: '/api/docs/commands',
|
|
41
|
+
buildListUrl: (type, ids) => `/api/list/${type}?ids=${ids.join(',')}`,
|
|
42
|
+
attachmentUploadUrl: '/api/storage/upload/chat-attachments',
|
|
43
|
+
attachmentViewUrlPrefix: '/api/storage/view/chat-attachments/',
|
|
44
|
+
identityUrl: '/api/chat/identity',
|
|
45
|
+
},
|
|
46
|
+
navigation: {
|
|
47
|
+
mode: 'host',
|
|
48
|
+
navigate: ({ href }) => { router.push(href); return true },
|
|
49
|
+
},
|
|
50
|
+
}), [router])
|
|
29
51
|
|
|
30
|
-
|
|
31
|
-
|
|
52
|
+
// Embedded app (e.g. user1.openframe.ai)
|
|
53
|
+
const embeddedRuntime = React.useMemo<ChatRuntime>(() => ({
|
|
32
54
|
endpoints: {
|
|
33
|
-
chatStreamUrl: '
|
|
34
|
-
|
|
35
|
-
commandsUrl: 'https://hub.openframe.ai/api/docs/commands',
|
|
55
|
+
chatStreamUrl: '/api/mingo-guide/docs/chat',
|
|
56
|
+
// ...other proxied paths
|
|
36
57
|
buildListUrl: (type, ids) => null,
|
|
37
|
-
attachmentUploadUrl: '
|
|
38
|
-
attachmentViewUrlPrefix: 'https://hub.openframe.ai/api/storage/view/
|
|
39
|
-
identityUrl: '
|
|
58
|
+
attachmentUploadUrl: '/api/mingo-guide/storage/upload',
|
|
59
|
+
attachmentViewUrlPrefix: 'https://hub.openframe.ai/api/storage/view/',
|
|
60
|
+
identityUrl: '/api/mingo-guide/chat/identity',
|
|
40
61
|
},
|
|
41
62
|
navigation: {
|
|
42
63
|
mode: 'embed',
|
|
@@ -45,10 +66,18 @@ const runtime = useMemo<ChatRuntime>(() => ({
|
|
|
45
66
|
}), [])
|
|
46
67
|
|
|
47
68
|
return (
|
|
48
|
-
<ChatRuntimeContext.Provider value={
|
|
69
|
+
<ChatRuntimeContext.Provider value={embeddedRuntime}>
|
|
49
70
|
<ChatPanel />
|
|
50
71
|
</ChatRuntimeContext.Provider>
|
|
51
72
|
)
|
|
73
|
+
|
|
74
|
+
// Inside chat components
|
|
75
|
+
const runtime = useChatRuntime()
|
|
76
|
+
const { chatStreamUrl } = runtime.endpoints
|
|
52
77
|
```
|
|
53
78
|
|
|
54
|
-
> **
|
|
79
|
+
> **Performance note:** Always memoize the value passed to `<ChatRuntimeContext.Provider>`. Inline object literals recreated on each render will invalidate downstream `useMemo` consumers across the entire chat tree.
|
|
80
|
+
|
|
81
|
+
## Source
|
|
82
|
+
|
|
83
|
+
[`chat-runtime-context.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/chat-runtime-context.tsx)
|
|
@@ -1,58 +1,54 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
Provides a React context for sharing API endpoint
|
|
1
|
+
<!-- source-hash: 91729e745dc7597ae611c9a11fcb6839 -->
|
|
2
|
+
Provides a React context for sharing API endpoint URL literals across OSS-lib components, enabling host applications to override paths (e.g., when running behind a reverse proxy).
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
|
10
|
-
|
|
11
|
-
| `
|
|
6
|
+
### `EndpointsRuntime` Interface
|
|
7
|
+
Defines the shape of the endpoint configuration:
|
|
8
|
+
|
|
9
|
+
| Field | Type | Description |
|
|
10
|
+
|---|---|---|
|
|
11
|
+
| `announcementsUrl` | `string` | GET active announcement (used by `<AnnouncementBar>`) |
|
|
12
|
+
| `accessCode.validateUrl` | `string` | POST validate access code |
|
|
13
|
+
| `accessCode.consumeUrl` | `string` | POST redeem access code after registration |
|
|
14
|
+
| `contactUrl` | `string` | POST contact-form submission |
|
|
15
|
+
|
|
16
|
+
### `EndpointsRuntimeContext`
|
|
17
|
+
A React context initialized to `null`. Mount `<EndpointsRuntimeContext.Provider value={...}>` at your application root with the appropriate endpoint paths.
|
|
18
|
+
|
|
19
|
+
### `useEndpointsRuntime()`
|
|
20
|
+
Optional hook — returns `null` when no provider is mounted. Use for components that should silently no-op when outside the provider tree (e.g., announcement polling).
|
|
21
|
+
|
|
22
|
+
### `useRequiredEndpointsRuntime()`
|
|
23
|
+
Strict hook — throws a descriptive error when no provider is mounted. Use for components that cannot function without endpoints (form submission, code validation).
|
|
12
24
|
|
|
13
25
|
## Usage Example
|
|
14
26
|
|
|
15
27
|
```typescript
|
|
16
|
-
//
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
>
|
|
28
|
+
// Mounting the provider (e.g., in your root layout)
|
|
29
|
+
const endpoints: EndpointsRuntime = React.useMemo(() => ({
|
|
30
|
+
announcementsUrl: '/api/announcements/active',
|
|
31
|
+
accessCode: {
|
|
32
|
+
validateUrl: '/api/access-codes/validate',
|
|
33
|
+
consumeUrl: '/api/access-codes/consume',
|
|
34
|
+
},
|
|
35
|
+
contactUrl: '/api/contact',
|
|
36
|
+
}), [])
|
|
37
|
+
|
|
38
|
+
<EndpointsRuntimeContext.Provider value={endpoints}>
|
|
27
39
|
<App />
|
|
28
40
|
</EndpointsRuntimeContext.Provider>
|
|
29
41
|
|
|
30
|
-
//
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
announcementsUrl: '/api/mingo-guide/announcements/active',
|
|
34
|
-
accessCode: {
|
|
35
|
-
validateUrl: '/api/mingo-guide/access-codes/validate',
|
|
36
|
-
consumeUrl: '/api/mingo-guide/access-codes/consume',
|
|
37
|
-
},
|
|
38
|
-
contactUrl: '/api/mingo-guide/contact',
|
|
39
|
-
}), [])}
|
|
40
|
-
>
|
|
41
|
-
<EmbeddedApp />
|
|
42
|
-
</EndpointsRuntimeContext.Provider>
|
|
42
|
+
// Optional consumer
|
|
43
|
+
const endpoints = useEndpointsRuntime() // null if no provider
|
|
44
|
+
if (endpoints) fetchAnnouncement(endpoints.announcementsUrl)
|
|
43
45
|
|
|
44
|
-
//
|
|
45
|
-
const
|
|
46
|
-
|
|
46
|
+
// Strict consumer
|
|
47
|
+
const { contactUrl } = useRequiredEndpointsRuntime() // throws if no provider
|
|
48
|
+
```
|
|
47
49
|
|
|
48
|
-
|
|
49
|
-
const { contactUrl } = useRequiredEndpointsRuntime()
|
|
50
|
-
await fetch(contactUrl, { method: 'POST', body })
|
|
50
|
+
> **Embedders:** Always memoize the value passed to the provider. Reference changes invalidate downstream effect dependencies and cause unnecessary re-fetches.
|
|
51
51
|
|
|
52
|
-
|
|
53
|
-
<EndpointsRuntimeContext.Provider value={mockedEndpoints}>
|
|
54
|
-
<ComponentUnderTest />
|
|
55
|
-
</EndpointsRuntimeContext.Provider>
|
|
56
|
-
```
|
|
52
|
+
## Source
|
|
57
53
|
|
|
58
|
-
|
|
54
|
+
[`endpoints-runtime-context.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/endpoints-runtime-context.tsx)
|
|
@@ -1,39 +1,38 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
Environment-aware shim for `next/navigation` app-router hooks. Provides lightweight `window.location
|
|
1
|
+
<!-- source-hash: d193779b512ad2acfd37fa2c977da11e -->
|
|
2
|
+
Environment-aware shim for `next/navigation` app-router hooks. Provides lightweight `window.location`/History API fallbacks so library components work outside a Next.js host, with opt-in delegation to real `next/navigation` exports via `registerNavigation`.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
Merges real `next/navigation` exports into the internal registry. Call once at app init in a Next.js host to enable full client-router integration.
|
|
8
|
-
|
|
9
|
-
### `NavigationImpl` (interface)
|
|
10
|
-
Describes the full set of registerable hooks: `useRouter`, `usePathname`, `useSearchParams`, `useParams`, `redirect`, `permanentRedirect`, `notFound`.
|
|
11
|
-
|
|
12
|
-
### Exported Hooks & Utilities
|
|
13
|
-
|
|
14
|
-
| Export | Stub Behavior |
|
|
6
|
+
| Export | Description |
|
|
15
7
|
|---|---|
|
|
16
|
-
| `
|
|
17
|
-
| `
|
|
18
|
-
| `
|
|
19
|
-
| `
|
|
20
|
-
| `
|
|
21
|
-
| `permanentRedirect(
|
|
22
|
-
| `notFound()` | Throws
|
|
23
|
-
| `RedirectType` | Mirrors Next's enum (`push` / `replace`) |
|
|
24
|
-
| `ServerInsertedHTMLContext` | `null`
|
|
8
|
+
| `registerNavigation(nav)` | Merges real `next/navigation` exports into the registry. Call once at app init in a Next.js host. |
|
|
9
|
+
| `useRouter()` | Returns a router stub; fallback uses `pushState`/`replaceState` + synthetic `popstate` for SPA navigation without page reloads. Cross-origin and malformed hrefs fall back to `window.location`. |
|
|
10
|
+
| `usePathname()` | Returns `window.location.pathname`, subscribed to `popstate`. |
|
|
11
|
+
| `useSearchParams()` | Returns a `URLSearchParams` view of `window.location.search`, subscribed to `popstate`. |
|
|
12
|
+
| `useParams()` | Returns `{}` — embedders needing dynamic params should parse from `usePathname()`. |
|
|
13
|
+
| `redirect()` / `permanentRedirect()` | Best-effort via `window.location.assign` / `.replace`. |
|
|
14
|
+
| `notFound()` | Throws an error in non-Next environments. |
|
|
15
|
+
| `RedirectType` | Mirrors Next's `RedirectType` enum (`push` / `replace`). |
|
|
16
|
+
| `ServerInsertedHTMLContext` | Stub (`null`) so consumers can import without crashing. |
|
|
17
|
+
| `NavigationImpl` | Interface describing the full registration surface; all fields are optional. |
|
|
25
18
|
|
|
26
19
|
## Usage Example
|
|
27
20
|
|
|
21
|
+
**In a Next.js host — register once at app init:**
|
|
22
|
+
|
|
28
23
|
```typescript
|
|
29
|
-
//
|
|
24
|
+
// lib/embed-shim-registration.ts
|
|
30
25
|
import {
|
|
31
|
-
useRouter,
|
|
32
|
-
|
|
26
|
+
useRouter,
|
|
27
|
+
usePathname,
|
|
28
|
+
useSearchParams,
|
|
29
|
+
useParams,
|
|
30
|
+
redirect,
|
|
31
|
+
permanentRedirect,
|
|
32
|
+
notFound,
|
|
33
33
|
} from 'next/navigation'
|
|
34
|
-
import { registerNavigation } from '@flamingo-stack/openframe-
|
|
34
|
+
import { registerNavigation } from '@flamingo-stack/openframe-oss-lib/embed-shims'
|
|
35
35
|
|
|
36
|
-
// Call ONCE at app init — partial registration is safe
|
|
37
36
|
registerNavigation({
|
|
38
37
|
useRouter,
|
|
39
38
|
usePathname,
|
|
@@ -45,15 +44,23 @@ registerNavigation({
|
|
|
45
44
|
})
|
|
46
45
|
```
|
|
47
46
|
|
|
47
|
+
**In a standalone/embed environment — no setup required:**
|
|
48
|
+
|
|
48
49
|
```typescript
|
|
49
|
-
//
|
|
50
|
-
import {
|
|
50
|
+
// Works out of the box using History API fallbacks
|
|
51
|
+
import { useRouter, useSearchParams } from '@flamingo-stack/openframe-oss-lib/next-navigation'
|
|
51
52
|
|
|
52
|
-
|
|
53
|
-
const
|
|
53
|
+
function MyComponent() {
|
|
54
|
+
const router = useRouter()
|
|
54
55
|
const params = useSearchParams()
|
|
55
|
-
|
|
56
|
+
|
|
57
|
+
// SPA navigation — no document reload, popstate fires, subscribers re-render
|
|
58
|
+
return <button onClick={() => router.replace('?page=2')}>Next</button>
|
|
56
59
|
}
|
|
57
60
|
```
|
|
58
61
|
|
|
59
|
-
> **Note:** The fallback
|
|
62
|
+
> **Note:** The fallback `usePathname` / `useSearchParams` hooks react to `popstate` events. Programmatic `pushState`/`replaceState` calls outside this shim will NOT trigger re-renders — register a real router or use the shim's own `useRouter` for mutations.
|
|
63
|
+
|
|
64
|
+
## Source
|
|
65
|
+
|
|
66
|
+
[`next-navigation.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/next-navigation.tsx)
|
package/src/hooks/.api-hooks.md
CHANGED
|
@@ -1,36 +1,43 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
|
|
1
|
+
<!-- source-hash: ecdb4d3c79e0accd705583d0d62187db -->
|
|
2
|
+
Stub React hooks providing placeholder API data-fetching interfaces for categories, vendors, and subcategory counts — returning empty state without making actual network requests.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
| Hook | Returns | Description |
|
|
7
|
+
|------|---------|-------------|
|
|
8
|
+
| `useCategories` | `{ categories, loading, error }` | Fetches category list |
|
|
9
|
+
| `useVendors` | `{ vendors, loading, error }` | Fetches vendor list |
|
|
10
|
+
| `useSubcategoryCountByCategory` | `{ data, loading }` | Returns subcategory counts keyed by category |
|
|
9
11
|
|
|
10
12
|
## Usage Example
|
|
11
13
|
|
|
12
14
|
```typescript
|
|
13
|
-
import {
|
|
15
|
+
import {
|
|
16
|
+
useCategories,
|
|
17
|
+
useVendors,
|
|
18
|
+
useSubcategoryCountByCategory,
|
|
19
|
+
} from './api-hooks';
|
|
14
20
|
|
|
15
|
-
function
|
|
16
|
-
const { categories, loading
|
|
17
|
-
const { vendors
|
|
21
|
+
function CatalogView() {
|
|
22
|
+
const { categories, loading, error } = useCategories();
|
|
23
|
+
const { vendors } = useVendors();
|
|
24
|
+
const { data: subcategoryCounts } = useSubcategoryCountByCategory();
|
|
18
25
|
|
|
19
|
-
if (
|
|
20
|
-
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
if (categoriesError || vendorsError) {
|
|
24
|
-
return <div>Error loading data</div>;
|
|
25
|
-
}
|
|
26
|
+
if (loading) return <span>Loading...</span>;
|
|
27
|
+
if (error) return <span>Error loading data</span>;
|
|
26
28
|
|
|
27
29
|
return (
|
|
28
|
-
<
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
30
|
+
<ul>
|
|
31
|
+
{categories.map((cat) => (
|
|
32
|
+
<li key={cat.id}>{cat.name}</li>
|
|
33
|
+
))}
|
|
34
|
+
</ul>
|
|
32
35
|
);
|
|
33
36
|
}
|
|
34
37
|
```
|
|
35
38
|
|
|
36
|
-
These hooks
|
|
39
|
+
> **Note:** These are stub implementations — all hooks return empty/static state and no network calls are made. They are intended as placeholders until real API endpoints are wired in.
|
|
40
|
+
|
|
41
|
+
## Source
|
|
42
|
+
|
|
43
|
+
[`api-hooks.ts`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/api-hooks.ts)
|
package/src/hooks/.index.md
CHANGED
|
@@ -1,47 +1,52 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
Central barrel export file for the hooks package, re-exporting all
|
|
1
|
+
<!-- source-hash: 2e6175823c7681e92d95bc1e1551a854 -->
|
|
2
|
+
Central barrel export file for the hooks package, re-exporting all hook modules from a single entry point.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
| Export Module | Description |
|
|
7
|
-
|
|
8
|
-
| `./ui` | UI
|
|
9
|
-
| `./
|
|
10
|
-
| `./use-
|
|
11
|
-
| `./use-
|
|
12
|
-
| `./use-
|
|
13
|
-
| `./
|
|
14
|
-
| `./use-
|
|
15
|
-
| `./
|
|
16
|
-
| `./
|
|
17
|
-
| `./use-
|
|
18
|
-
| `./use-
|
|
19
|
-
| `./use-
|
|
6
|
+
| Export Group | Module | Description |
|
|
7
|
+
|---|---|---|
|
|
8
|
+
| UI/Platform | `./ui`, `./platform` | Core UI and platform-specific hooks |
|
|
9
|
+
| Toast | `./use-toast` | Toast notification hook |
|
|
10
|
+
| Contact | `./use-contact-submission` | Contact form submission hook |
|
|
11
|
+
| Clipboard | `./use-copy-to-clipboard` | Clipboard interaction hook |
|
|
12
|
+
| Image Auth | `./use-batch-images`, `./use-authenticated-image`, `./use-authed-image-src` | Authenticated image loading hooks |
|
|
13
|
+
| URL State | `./state` | URL-based state management hooks |
|
|
14
|
+
| NATS | `./nats/use-nats-client` | NATS messaging client hook |
|
|
15
|
+
| Viewport | `./use-near-viewport` | Shared IntersectionObserver lazy-mount primitive |
|
|
16
|
+
| Access Code | `./use-access-code-integration` | Access code context integration |
|
|
17
|
+
| OG Placeholder | `./use-og-placeholder-url` | Endpoint-driven OG placeholder URL hook |
|
|
18
|
+
| Scroll | `./use-scroll-to-hash` | Deep-link scroll-to-hash after data load |
|
|
19
|
+
| Bot Protection | `./use-humanity-signals` | Honeypot + submit-timing bot protection primitive |
|
|
20
20
|
|
|
21
21
|
## Usage Example
|
|
22
22
|
|
|
23
23
|
```typescript
|
|
24
|
-
// Import any hook directly from the
|
|
24
|
+
// Import any hook directly from the package root
|
|
25
25
|
import {
|
|
26
26
|
useToast,
|
|
27
27
|
useCopyToClipboard,
|
|
28
|
+
useAuthenticatedImage,
|
|
28
29
|
useNatsClient,
|
|
29
30
|
useNearViewport,
|
|
30
|
-
|
|
31
|
-
|
|
31
|
+
useScrollToHash,
|
|
32
|
+
useHumanitySignals,
|
|
33
|
+
} from '@openframe/hooks'
|
|
32
34
|
|
|
33
35
|
function MyComponent() {
|
|
34
36
|
const { toast } = useToast()
|
|
35
37
|
const { copy } = useCopyToClipboard()
|
|
36
|
-
const
|
|
37
|
-
const ref = useNearViewport()
|
|
38
|
+
const { ref: viewportRef } = useNearViewport()
|
|
38
39
|
|
|
39
|
-
|
|
40
|
+
useScrollToHash({ prefix: 'ticket', isLoading: false })
|
|
41
|
+
|
|
42
|
+
return <div ref={viewportRef} />
|
|
40
43
|
}
|
|
41
44
|
```
|
|
42
45
|
|
|
43
46
|
## Notes
|
|
44
47
|
|
|
45
|
-
-
|
|
46
|
-
-
|
|
47
|
-
-
|
|
48
|
+
- **`use-access-code-integration`** is intentionally kept in `hooks/` (not `utils/`) to avoid pulling `EndpointsRuntimeContext` into server-safe bundles.
|
|
49
|
+
- **`use-humanity-signals`** pairs with the server-side decision function in `utils/humanity-signals` — the hook handles only the client primitive (honeypot ref + timing).
|
|
50
|
+
- **`use-near-viewport`** uses a shared `IntersectionObserver` singleton for efficient lazy-mounting across many components.
|
|
51
|
+
|
|
52
|
+
**Source:** [`hooks/index.ts`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/hooks/index.ts)
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
<!-- source-hash: 15b1f2d897deb354fe984a6b0d805f9f -->
|
|
2
|
+
Resolves authenticated image URLs for native shell environments (Capacitor, Tauri) where bearer token auth cannot be carried by native `<img>` requests. Acts as a pass-through on cookie-authenticated web clients.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
### `useAuthedImageSrc(src?)` _(hook)_
|
|
7
|
+
Primary hook that returns a resolved image source string. Returns `undefined` while a fetch is in-flight or after failure (allowing callers to render a placeholder/fallback), and returns the original `src` unchanged on cookie-auth web clients.
|
|
8
|
+
|
|
9
|
+
### `clearAuthedImageCache()` _(export)_
|
|
10
|
+
Clears all cached blob object-URLs and revokes them via `URL.revokeObjectURL`. Should be called at session end (logout/forced re-login) to prevent blob reuse across different identities. A generation counter fences any in-flight fetches at the time of the clear.
|
|
11
|
+
|
|
12
|
+
### `fetchAsBlobUrl(src)` _(internal)_
|
|
13
|
+
Deduplicates concurrent fetches for the same URL using a module-level `inFlight` map, then stores the resolved blob object-URL in `resolvedCache`. Fetch is delegated to `embedAuthedFetch` (bearer auth + 401-refresh-retry + cross-origin guard).
|
|
14
|
+
|
|
15
|
+
### Module-level Cache
|
|
16
|
+
- `resolvedCache`: `Map<string, string>` — session-lifetime blob URL cache keyed by full image URL
|
|
17
|
+
- `inFlight`: `Map<string, Promise<void>>` — deduplicates concurrent fetches for the same URL
|
|
18
|
+
- `cacheGeneration`: integer counter incremented on `clearAuthedImageCache` to fence stale fetch results
|
|
19
|
+
|
|
20
|
+
## Usage Example
|
|
21
|
+
|
|
22
|
+
```typescript
|
|
23
|
+
import { useAuthedImageSrc, clearAuthedImageCache } from './use-authed-image-src'
|
|
24
|
+
|
|
25
|
+
// In a component — renders placeholder while fetching or on error
|
|
26
|
+
function Avatar({ imageUrl }: { imageUrl: string }) {
|
|
27
|
+
const src = useAuthedImageSrc(imageUrl)
|
|
28
|
+
|
|
29
|
+
if (!src) return <InitialsAvatar />
|
|
30
|
+
return <img src={src} alt="User avatar" />
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
// At logout
|
|
34
|
+
function handleLogout() {
|
|
35
|
+
clearAuthedImageCache()
|
|
36
|
+
// ...rest of logout logic
|
|
37
|
+
}
|
|
38
|
+
```
|
|
@@ -1,29 +1,27 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
React hook that manages contact form submission state,
|
|
1
|
+
<!-- source-hash: af4536ad2bb59120a690271ba368f845 -->
|
|
2
|
+
A React hook that manages contact form submission state, including loading/success tracking, toast notifications, and post-submission redirect logic.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
6
|
### `ContactSubmissionOptions`
|
|
7
|
-
Configuration interface for hook
|
|
8
|
-
- `userId`
|
|
9
|
-
- `successRedirectUrl`
|
|
10
|
-
- `successToastMessage`
|
|
11
|
-
- `onSuccess`
|
|
7
|
+
Configuration interface for the hook:
|
|
8
|
+
- `userId` – Optional authenticated user ID appended to the payload
|
|
9
|
+
- `successRedirectUrl` – URL to navigate to after successful submission (1.5s delay)
|
|
10
|
+
- `successToastMessage` – Custom suffix appended to the default success toast
|
|
11
|
+
- `onSuccess` – Optional callback fired on successful submission
|
|
12
12
|
|
|
13
13
|
### `ContactFormData`
|
|
14
|
-
Mirrors the `ContactBaseSchema`
|
|
14
|
+
Mirrors the `ContactBaseSchema` on the `POST /api/contact` endpoint. Core fields (`name`, `email`, `helpCategory`, `message`) are required; tracking fields (`rdt_cid`, `utm_*`, `referrer_url`) and future per-form fields pass through via the permissive `[key: string]: unknown` index signature.
|
|
15
15
|
|
|
16
16
|
### `useContactSubmission(options)`
|
|
17
|
-
The exported hook.
|
|
17
|
+
The exported hook. Resolves the endpoint URL via `useRequiredEndpointsRuntime` (throws if no provider is mounted), then exposes:
|
|
18
18
|
|
|
19
|
-
| Return
|
|
19
|
+
| Return | Type | Description |
|
|
20
20
|
|---|---|---|
|
|
21
|
-
| `submit` | `(formData
|
|
22
|
-
| `isSubmitting` | `boolean` | True while
|
|
21
|
+
| `submit` | `(formData) => Promise<void>` | Sends `POST` with form data; re-throws on error |
|
|
22
|
+
| `isSubmitting` | `boolean` | True while request is in-flight |
|
|
23
23
|
| `isSuccess` | `boolean` | True after a successful response |
|
|
24
|
-
| `setIsSuccess` | `Dispatch
|
|
25
|
-
|
|
26
|
-
Redirect logic waits 1500ms after `isSuccess` before navigating — using `window.location.href` for absolute URLs and `router.push` for relative paths.
|
|
24
|
+
| `setIsSuccess` | `Dispatch` | Allows caller to reset success state |
|
|
27
25
|
|
|
28
26
|
## Usage Example
|
|
29
27
|
|
|
@@ -34,32 +32,33 @@ function ContactForm() {
|
|
|
34
32
|
const { submit, isSubmitting, isSuccess } = useContactSubmission({
|
|
35
33
|
userId: currentUser?.id,
|
|
36
34
|
successRedirectUrl: '/thank-you',
|
|
37
|
-
successToastMessage: '
|
|
35
|
+
successToastMessage: 'We will get back to you within 24 hours.',
|
|
38
36
|
onSuccess: () => analytics.track('contact_submitted'),
|
|
39
37
|
});
|
|
40
38
|
|
|
41
|
-
const handleSubmit = async (
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
}
|
|
39
|
+
const handleSubmit = async (formData: ContactFormData) => {
|
|
40
|
+
try {
|
|
41
|
+
await submit({
|
|
42
|
+
name: formData.name,
|
|
43
|
+
email: formData.email,
|
|
44
|
+
helpCategory: 'support',
|
|
45
|
+
message: formData.message,
|
|
46
|
+
// Tracking fields forwarded transparently
|
|
47
|
+
rdt_cid: getRedditClickId(),
|
|
48
|
+
});
|
|
49
|
+
} catch {
|
|
50
|
+
// Error toast is shown automatically; handle UI reset here if needed
|
|
51
|
+
}
|
|
52
52
|
};
|
|
53
53
|
|
|
54
|
-
return
|
|
55
|
-
<form onSubmit={handleSubmit}>
|
|
56
|
-
{/* form fields */}
|
|
57
|
-
<button type="submit" disabled={isSubmitting}>
|
|
58
|
-
{isSubmitting ? 'Sending...' : 'Send Message'}
|
|
59
|
-
</button>
|
|
60
|
-
</form>
|
|
61
|
-
);
|
|
54
|
+
return <button disabled={isSubmitting}>Submit</button>;
|
|
62
55
|
}
|
|
63
56
|
```
|
|
64
57
|
|
|
65
|
-
|
|
58
|
+
## Notes
|
|
59
|
+
|
|
60
|
+
- Redirect uses `window.location.href` for absolute URLs and `router.push` for relative paths
|
|
61
|
+
- Guards against duplicate submissions via `isSubmitting` check at the top of `submit`
|
|
62
|
+
- Endpoint URL is injected via context, making the hook compatible with both hub and embedded/proxied deployments
|
|
63
|
+
|
|
64
|
+
**Source:** [`use-contact-submission.ts`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/use-contact-submission.ts)
|