@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,48 +1,38 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
|
|
1
|
+
<!-- source-hash: ca93087dff304ae780464b5f1cefad86 -->
|
|
2
|
+
An accessible, animated accordion component for rendering FAQ items with smooth expand/collapse transitions and deep-link anchor support.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
6
|
### Interfaces
|
|
7
|
-
- **`FaqItem`** — Data shape for each FAQ entry (`id`, `question`, `answer`)
|
|
8
|
-
- **`FaqAccordionProps`** — Component props accepting `items` array and optional `defaultOpenIds` for pre-expanded panels
|
|
9
7
|
|
|
10
|
-
|
|
11
|
-
- **`
|
|
8
|
+
- **`FaqItem`** — Data shape for a single FAQ entry with `id`, `question`, and `answer` fields
|
|
9
|
+
- **`FaqAccordionProps`** — Props accepting an array of `FaqItem` and optional `defaultOpenIds` for pre-expanded items
|
|
10
|
+
|
|
11
|
+
### Hook
|
|
12
|
+
|
|
13
|
+
- **`useMeasuredHeight(isOpen)`** — Internal hook that reads `scrollHeight` outside the render cycle to drive CSS `max-height` animations without layout thrashing. Returns `ref` and `maxHeight` string.
|
|
12
14
|
|
|
13
15
|
### Component
|
|
14
|
-
|
|
16
|
+
|
|
17
|
+
- **`FaqAccordion`** — Stateful accordion managing open/close state via a `Set`, rendering each item with a clickable header, animated content panel, and per-item anchor ID for hash-based deep linking (e.g. `/faqs#faq-item-<id>`).
|
|
15
18
|
|
|
16
19
|
## Usage Example
|
|
17
20
|
|
|
18
21
|
```typescript
|
|
19
22
|
import { FaqAccordion, FaqItem } from './faq-accordion'
|
|
20
23
|
|
|
21
|
-
const
|
|
22
|
-
{
|
|
23
|
-
|
|
24
|
-
question: 'What is Flamingo?',
|
|
25
|
-
answer: 'Flamingo is an AI-powered MSP platform that replaces expensive proprietary software.',
|
|
26
|
-
},
|
|
27
|
-
{
|
|
28
|
-
id: 2,
|
|
29
|
-
question: 'What is OpenFrame?',
|
|
30
|
-
answer: 'OpenFrame is a unified platform integrating multiple MSP tools into a single AI-driven interface.',
|
|
31
|
-
},
|
|
24
|
+
const items: FaqItem[] = [
|
|
25
|
+
{ id: 1, question: 'What is OpenFrame?', answer: 'A unified MSP platform...' },
|
|
26
|
+
{ id: 2, question: 'How does Mingo AI work?', answer: 'It automates triage...' },
|
|
32
27
|
]
|
|
33
28
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
<FaqAccordion
|
|
37
|
-
items={faqs}
|
|
38
|
-
defaultOpenIds={[1]} // First item open by default
|
|
39
|
-
/>
|
|
40
|
-
)
|
|
41
|
-
}
|
|
29
|
+
// Render with the second item open by default
|
|
30
|
+
<FaqAccordion items={items} defaultOpenIds={[2]} />
|
|
42
31
|
```
|
|
43
32
|
|
|
44
|
-
## Notes
|
|
33
|
+
## Behavior Notes
|
|
45
34
|
|
|
46
|
-
-
|
|
47
|
-
-
|
|
48
|
-
-
|
|
35
|
+
- **Keyboard accessible** — `Enter` and `Space` toggle items; `aria-expanded` reflects open state
|
|
36
|
+
- **Scroll margin** — Each row has `scroll-mt-24` so sticky nav (96px) doesn't obscure the header on hash navigation
|
|
37
|
+
- **Animation** — `max-height` + `opacity` transition at 350ms `ease-in-out`; height is measured lazily on open to support dynamic content
|
|
38
|
+
- **Mobile safety** — `break-words` prevents long URLs or tokens from clipping inside the `overflow-hidden` panel
|
|
@@ -1,56 +1,59 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
|
|
1
|
+
<!-- source-hash: 60260aec5918ec31a661ffb15daaa6aa -->
|
|
2
|
+
A reusable, accessible filter chip UI component for displaying and interacting with filter tags, supporting multiple visual variants, optional removal, and responsive sizing.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
### `FilterChip`
|
|
7
|
-
The sole export — a styled, accessible chip element built with Tailwind CSS classes via `cn`.
|
|
8
|
-
|
|
9
6
|
### `FilterChipProps`
|
|
10
7
|
|
|
11
8
|
| Prop | Type | Default | Description |
|
|
12
9
|
|------|------|---------|-------------|
|
|
13
|
-
| `id` | `string` | — | Unique identifier |
|
|
14
|
-
| `label` | `string` | — | Display text
|
|
10
|
+
| `id` | `string` | — | Unique identifier for the chip |
|
|
11
|
+
| `label` | `string` | — | Display text, truncated with tooltip on overflow |
|
|
15
12
|
| `variant` | `'selected' \| 'unselected' \| 'category' \| 'subcategory' \| 'tag' \| 'info'` | `'unselected'` | Visual style preset |
|
|
16
|
-
| `size` | `'sm' \| 'md'` | `'md'` | Controls padding and text
|
|
17
|
-
| `removable` | `boolean` | `false` | Shows an
|
|
18
|
-
| `onRemove` | `() => void` | — | Callback fired when remove button is clicked |
|
|
19
|
-
| `onClick` | `() => void` | — |
|
|
20
|
-
| `disabled` | `boolean` | `false` |
|
|
21
|
-
| `className` | `string` | — | Additional Tailwind classes |
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
- `
|
|
26
|
-
- `info` — static display only, hover/scale effects disabled
|
|
13
|
+
| `size` | `'sm' \| 'md'` | `'md'` | Controls padding and text size |
|
|
14
|
+
| `removable` | `boolean` | `false` | Shows an `X` button when `true` |
|
|
15
|
+
| `onRemove` | `() => void` | — | Callback fired when the remove button is clicked |
|
|
16
|
+
| `onClick` | `() => void` | — | Callback fired when the chip itself is clicked |
|
|
17
|
+
| `disabled` | `boolean` | `false` | Disables all interactions and reduces opacity |
|
|
18
|
+
| `className` | `string` | — | Additional Tailwind classes for overrides |
|
|
19
|
+
|
|
20
|
+
### `FilterChip`
|
|
21
|
+
|
|
22
|
+
The exported component renders a styled pill-shaped chip. Variant classes use ODS (OpenFrame Design System) tokens for consistent theming. The `category`, `subcategory`, and `tag` variants use accent color borders at varying opacity levels to signal hierarchy subtly.
|
|
27
23
|
|
|
28
24
|
## Usage Example
|
|
29
25
|
|
|
30
26
|
```typescript
|
|
31
|
-
|
|
27
|
+
import { FilterChip } from "@/components/filter-chip"
|
|
28
|
+
|
|
29
|
+
// Basic interactive chip
|
|
32
30
|
<FilterChip
|
|
33
|
-
id="
|
|
34
|
-
label="
|
|
31
|
+
id="filter-os"
|
|
32
|
+
label="Windows"
|
|
35
33
|
variant="selected"
|
|
36
|
-
onClick={() => toggleFilter(
|
|
34
|
+
onClick={() => toggleFilter("windows")}
|
|
37
35
|
/>
|
|
38
36
|
|
|
39
|
-
// Removable
|
|
37
|
+
// Removable category chip
|
|
40
38
|
<FilterChip
|
|
41
|
-
id="
|
|
42
|
-
label="
|
|
43
|
-
variant="
|
|
39
|
+
id="filter-category-network"
|
|
40
|
+
label="Networking"
|
|
41
|
+
variant="category"
|
|
44
42
|
removable
|
|
45
|
-
onRemove={() =>
|
|
43
|
+
onRemove={() => removeCategory("network")}
|
|
46
44
|
/>
|
|
47
45
|
|
|
48
|
-
// Small
|
|
46
|
+
// Small info chip (non-interactive)
|
|
49
47
|
<FilterChip
|
|
50
|
-
id="
|
|
51
|
-
label="
|
|
52
|
-
variant="
|
|
48
|
+
id="chip-count"
|
|
49
|
+
label="42 results"
|
|
50
|
+
variant="info"
|
|
53
51
|
size="sm"
|
|
54
|
-
disabled
|
|
55
52
|
/>
|
|
56
|
-
```
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## Notes
|
|
56
|
+
|
|
57
|
+
- Keyboard accessible: chips with `onClick` receive `tabIndex={0}` and `role="button"`; the remove button includes `aria-label` for screen readers.
|
|
58
|
+
- Click events call `stopPropagation` to prevent conflicts when chips are nested inside other interactive elements.
|
|
59
|
+
- Label text truncates at `120px` (`md`) or `100px` (`sm`) with a native `title` tooltip for full text on hover.
|
|
@@ -1,18 +1,17 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
A footer
|
|
1
|
+
<!-- source-hash: 4d908f9cf7af91751965e17795b7dff2 -->
|
|
2
|
+
A footer UI component that renders a "Join Waitlist" button, routing navigation through the unified `ChatRuntimeContext` navigation hook when available, with a fallback to the embed-shim router.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
6
|
### `FooterWaitlistButtonProps`
|
|
7
|
-
|
|
7
|
+
Interface with a single optional `className` prop for styling overrides.
|
|
8
8
|
|
|
9
9
|
### `FooterWaitlistButton`
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
Renders with the `OpenFrameLogo` icon as a left icon inside the button.
|
|
10
|
+
Client-side React component that:
|
|
11
|
+
- Resolves the active navigation strategy at runtime via `executeNavigationImperative`
|
|
12
|
+
- Uses `runtime.navigation.navigate` when a `ChatRuntimeContext` is mounted (inherits cross-platform new-tab decisions, embed-mode handling, same-URL re-scroll, and future host nav rules)
|
|
13
|
+
- Falls back to the embed-shim's `router.push` when no runtime context is present, keeping the library usable without requiring full chat-runtime setup
|
|
14
|
+
- Navigates to `/waitlist#top`, where `#top` anchors to an explicit `<div id="top">` at the top of `<main>` for reliable cross-browser scroll behavior
|
|
16
15
|
|
|
17
16
|
## Usage Example
|
|
18
17
|
|
|
@@ -20,26 +19,33 @@ Renders with the `OpenFrameLogo` icon as a left icon inside the button.
|
|
|
20
19
|
import { FooterWaitlistButton } from './footer-waitlist-button';
|
|
21
20
|
|
|
22
21
|
// Basic usage inside a footer layout
|
|
23
|
-
export function
|
|
22
|
+
export function SiteFooter() {
|
|
24
23
|
return (
|
|
25
24
|
<footer>
|
|
26
25
|
<FooterWaitlistButton className="mt-4 w-full" />
|
|
27
26
|
</footer>
|
|
28
27
|
);
|
|
29
28
|
}
|
|
30
|
-
```
|
|
31
29
|
|
|
32
|
-
|
|
30
|
+
// Without ChatRuntimeContext — falls back to embed-shim router.push
|
|
31
|
+
export function StandaloneEmbed() {
|
|
32
|
+
return (
|
|
33
|
+
<div>
|
|
34
|
+
<FooterWaitlistButton />
|
|
35
|
+
</div>
|
|
36
|
+
);
|
|
37
|
+
}
|
|
38
|
+
```
|
|
33
39
|
|
|
34
|
-
## Navigation
|
|
40
|
+
## Navigation Resolution
|
|
35
41
|
|
|
36
42
|
```mermaid
|
|
37
43
|
graph TD
|
|
38
|
-
A[
|
|
39
|
-
B -->|Yes| C[
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
D
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
44
|
+
A[Button Click] --> B{ChatRuntimeContext mounted?}
|
|
45
|
+
B -->|Yes| C[runtime.navigation.navigate]
|
|
46
|
+
B -->|No| D[embed-shim router.push]
|
|
47
|
+
C --> E[/waitlist#top]
|
|
48
|
+
D --> E
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
> **Source:** [`footer-waitlist-button.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/footer-waitlist-button.tsx)
|
|
@@ -1,53 +1,68 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
A
|
|
1
|
+
<!-- source-hash: dc228d826a1ea8db2b14ac844ec17eeb -->
|
|
2
|
+
A configuration-driven, client-side footer component that renders a responsive multi-column layout based on a `FooterConfig` object, with no hardcoded content.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
### Interfaces
|
|
7
7
|
|
|
8
|
-
**`
|
|
9
|
-
-
|
|
10
|
-
-
|
|
11
|
-
- **Custom component slot:** `config.customComponent`
|
|
12
|
-
- **Right column slot:** `config.rightColumnContent` or relocated description via `config.moveDescriptionToRight`
|
|
8
|
+
- **`FooterConfig`** — Primary configuration shape controlling logo, sections, social links, layout flags, and styling
|
|
9
|
+
- **`FooterSection`** / **`FooterLink`** — Define the link columns rendered in the footer grid
|
|
10
|
+
- **`FooterProps`** — Props for the public `Footer` export; accepts `config` and an optional custom `renderLink` renderer
|
|
13
11
|
|
|
14
|
-
|
|
12
|
+
### Exported Components
|
|
13
|
+
|
|
14
|
+
- **`Footer`** — Public entry point; guards against missing config and delegates to `UniversalFooter`
|
|
15
|
+
|
|
16
|
+
### Internal Components
|
|
17
|
+
|
|
18
|
+
- **`UniversalFooter`** — Renders the full footer grid: logo column, dynamic link sections, optional custom component slot, right column, and copyright
|
|
19
|
+
- **`NavLinkSkeleton`** — Suspense fallback for individual nav links
|
|
20
|
+
|
|
21
|
+
### Layout Flags (`FooterConfig`)
|
|
15
22
|
|
|
16
23
|
| Flag | Effect |
|
|
17
|
-
|
|
18
|
-
| `moveDescriptionToRight` | Moves description to the right column |
|
|
19
|
-
| `keepBelowDescriptionLeft` |
|
|
24
|
+
|---|---|
|
|
25
|
+
| `moveDescriptionToRight` | Moves description text to the right column |
|
|
26
|
+
| `keepBelowDescriptionLeft` | Retains `belowDescriptionContent` on the left when description is moved |
|
|
20
27
|
| `hideSocialRow` | Suppresses the `SocialIconRow` |
|
|
21
|
-
| `backgroundColor` |
|
|
22
|
-
|
|
23
|
-
**`renderLink`** — Optional prop to override the default anchor renderer per link.
|
|
28
|
+
| `backgroundColor` | Overrides the default `bg-ods-card` Tailwind class |
|
|
24
29
|
|
|
25
30
|
## Usage Example
|
|
26
31
|
|
|
27
32
|
```typescript
|
|
28
33
|
import { Footer } from "@/components/footer"
|
|
29
34
|
|
|
30
|
-
const config
|
|
31
|
-
name: "
|
|
32
|
-
legalName: "Flamingo
|
|
35
|
+
const config = {
|
|
36
|
+
name: "OpenFrame",
|
|
37
|
+
legalName: "Flamingo Stack Inc.",
|
|
33
38
|
description: "AI-powered MSP platform.",
|
|
34
39
|
sections: [
|
|
35
40
|
{
|
|
36
41
|
title: "Product",
|
|
37
42
|
links: [
|
|
38
|
-
{ href: "/
|
|
43
|
+
{ href: "/features", label: "Features" },
|
|
39
44
|
{ href: "/pricing", label: "Pricing" },
|
|
40
45
|
],
|
|
41
46
|
},
|
|
42
47
|
],
|
|
43
48
|
social: {
|
|
44
|
-
github: "https://github.com/flamingo",
|
|
45
|
-
|
|
49
|
+
github: "https://github.com/flamingo-stack/openframe-oss-lib",
|
|
50
|
+
discord: "https://www.openmsp.ai/",
|
|
46
51
|
},
|
|
47
|
-
backgroundColor: "bg-ods-bg",
|
|
48
52
|
}
|
|
49
53
|
|
|
50
54
|
export default function Layout() {
|
|
51
|
-
return
|
|
55
|
+
return (
|
|
56
|
+
<Footer
|
|
57
|
+
config={config}
|
|
58
|
+
renderLink={(link) => (
|
|
59
|
+
<a href={link.href} className="custom-link">
|
|
60
|
+
{link.label}
|
|
61
|
+
</a>
|
|
62
|
+
)}
|
|
63
|
+
/>
|
|
64
|
+
)
|
|
52
65
|
}
|
|
53
|
-
```
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
> **Note:** `config` is required. If omitted, the component returns `null` and logs a warning — there are no hardcoded fallback values.
|
package/src/components/.form.md
CHANGED
|
@@ -1,49 +1,61 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
|
|
1
|
+
<!-- source-hash: 4c16af16fe805c06acff7fd15a83fe05 -->
|
|
2
|
+
Accessible form primitives built on top of `react-hook-form` and Radix UI, providing context-aware field wrappers with built-in ARIA attributes, error styling, and label association.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
-
|
|
12
|
-
|
|
13
|
-
|
|
6
|
+
| Export | Description |
|
|
7
|
+
|---|---|
|
|
8
|
+
| `Form` | Re-export of `react-hook-form`'s `FormProvider` — wraps the entire form |
|
|
9
|
+
| `FormField` | Wraps `Controller` and injects field name into context |
|
|
10
|
+
| `FormItem` | Container div that generates a unique `id` for ARIA linkage |
|
|
11
|
+
| `FormLabel` | Label that auto-links to the field input and applies `text-destructive` on error |
|
|
12
|
+
| `FormControl` | Radix `Slot` with pre-wired `id`, `aria-describedby`, and `aria-invalid` |
|
|
13
|
+
| `FormDescription` | Helper text paragraph linked via `aria-describedby` |
|
|
14
|
+
| `FormMessage` | Displays validation error messages (or custom children) with destructive styling |
|
|
15
|
+
| `useFormField` | Hook exposing field state, IDs, and error info — must be used inside `<FormField>` |
|
|
14
16
|
|
|
15
17
|
## Usage Example
|
|
16
18
|
|
|
17
19
|
```typescript
|
|
18
20
|
import { useForm } from "react-hook-form"
|
|
19
|
-
import {
|
|
21
|
+
import {
|
|
22
|
+
Form,
|
|
23
|
+
FormField,
|
|
24
|
+
FormItem,
|
|
25
|
+
FormLabel,
|
|
26
|
+
FormControl,
|
|
27
|
+
FormDescription,
|
|
28
|
+
FormMessage,
|
|
29
|
+
} from "./form"
|
|
20
30
|
import { Input } from "./ui/input"
|
|
21
31
|
|
|
22
|
-
function
|
|
23
|
-
const form = useForm(
|
|
24
|
-
defaultValues: { email: "" }
|
|
25
|
-
})
|
|
32
|
+
function ProfileForm() {
|
|
33
|
+
const form = useForm<{ username: string }>()
|
|
26
34
|
|
|
27
35
|
return (
|
|
28
36
|
<Form {...form}>
|
|
29
|
-
<form onSubmit={form.handleSubmit(
|
|
37
|
+
<form onSubmit={form.handleSubmit(console.log)}>
|
|
30
38
|
<FormField
|
|
31
39
|
control={form.control}
|
|
32
|
-
name="
|
|
40
|
+
name="username"
|
|
33
41
|
render={({ field }) => (
|
|
34
42
|
<FormItem>
|
|
35
|
-
<FormLabel>
|
|
43
|
+
<FormLabel>Username</FormLabel>
|
|
36
44
|
<FormControl>
|
|
37
|
-
<Input placeholder="
|
|
45
|
+
<Input placeholder="flamingo-user" {...field} />
|
|
38
46
|
</FormControl>
|
|
47
|
+
<FormDescription>Your public display name.</FormDescription>
|
|
39
48
|
<FormMessage />
|
|
40
49
|
</FormItem>
|
|
41
50
|
)}
|
|
42
51
|
/>
|
|
52
|
+
<button type="submit">Submit</button>
|
|
43
53
|
</form>
|
|
44
54
|
</Form>
|
|
45
55
|
)
|
|
46
56
|
}
|
|
47
57
|
```
|
|
48
58
|
|
|
49
|
-
|
|
59
|
+
> **Note:** `useFormField` must only be called within a `<FormField>` tree; it throws if `FormFieldContext` is missing.
|
|
60
|
+
|
|
61
|
+
**Source:** [`form.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/form.tsx)
|
|
@@ -1,54 +1,58 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
|
|
1
|
+
<!-- source-hash: b371bcdc8a33778b126fd82289475ae3 -->
|
|
2
|
+
Reusable React component for hero-style image uploading with client-side validation, preview, and flexible upload strategies including deferred (base64 preview) and custom authenticated upload handlers.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
6
|
+
### `HeroImageUploaderProps`
|
|
7
|
+
|
|
8
|
+
| Prop | Type | Description |
|
|
9
|
+
|---|---|---|
|
|
10
|
+
| `imageUrl` | `string?` | Existing image URL to display |
|
|
11
|
+
| `onChange` | `(url: string \| undefined) => void` | Fires with new URL or `undefined` on removal |
|
|
12
|
+
| `uploadEndpoint` | `string` | POST endpoint for default upload flow |
|
|
13
|
+
| `height` | `number \| string` | Drop-zone height; numbers treated as `px` |
|
|
14
|
+
| `objectFit` | `string` | CSS `object-fit` for preview image (default: `'cover'`) |
|
|
15
|
+
| `deferUpload` | `boolean` | Return base64 data URL instead of uploading (unauthenticated flows) |
|
|
16
|
+
| `onUpload` | `(file: File) => Promise<string>` | Custom authenticated upload handler |
|
|
17
|
+
| `onDelete` | `() => Promise<void>` | Custom delete handler |
|
|
18
|
+
|
|
19
|
+
### Internal Logic
|
|
20
|
+
|
|
21
|
+
- **`handleFile`** — validates MIME type (JPEG/PNG/WebP/GIF) and file size (≤ 5 MB), then routes to deferred preview, custom `onUpload`, or default `fetch` POST
|
|
22
|
+
- **`handleRemove`** — calls optional `onDelete` before clearing state via `onChange(undefined)`
|
|
23
|
+
- **`openDialog`** — programmatically triggers the hidden `<input type="file">`
|
|
11
24
|
|
|
12
25
|
## Usage Example
|
|
13
26
|
|
|
14
27
|
```typescript
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
// Basic usage with standard upload
|
|
28
|
+
// Default upload flow
|
|
18
29
|
<HeroImageUploader
|
|
19
|
-
imageUrl={currentImage}
|
|
20
|
-
onChange={(url) => setCurrentImage(url)}
|
|
21
30
|
uploadEndpoint="/api/upload"
|
|
22
|
-
|
|
23
|
-
objectFit="cover"
|
|
31
|
+
onChange={(url) => setHeroImage(url)}
|
|
24
32
|
/>
|
|
25
33
|
|
|
26
|
-
// Deferred upload
|
|
34
|
+
// Deferred upload (unauthenticated preview)
|
|
27
35
|
<HeroImageUploader
|
|
28
|
-
imageUrl={previewImage}
|
|
29
|
-
onChange={(url) => setPreviewImage(url)}
|
|
30
36
|
uploadEndpoint="/api/upload"
|
|
31
37
|
deferUpload={true}
|
|
38
|
+
onChange={(dataUrl) => setLocalPreview(dataUrl)}
|
|
32
39
|
/>
|
|
33
40
|
|
|
34
|
-
// Custom
|
|
41
|
+
// Custom authenticated upload
|
|
35
42
|
<HeroImageUploader
|
|
36
|
-
imageUrl={heroImage}
|
|
37
|
-
onChange={setHeroImage}
|
|
38
43
|
uploadEndpoint="/api/upload"
|
|
44
|
+
imageUrl={currentImage}
|
|
39
45
|
onUpload={async (file) => {
|
|
40
|
-
const
|
|
41
|
-
|
|
42
|
-
const response = await authenticatedFetch('/api/upload', {
|
|
43
|
-
method: 'POST',
|
|
44
|
-
body: formData
|
|
45
|
-
});
|
|
46
|
-
return response.url;
|
|
46
|
+
const { url } = await myAuthenticatedUpload(file);
|
|
47
|
+
return url;
|
|
47
48
|
}}
|
|
48
49
|
onDelete={async () => {
|
|
49
|
-
await
|
|
50
|
-
method: 'DELETE'
|
|
51
|
-
});
|
|
50
|
+
await myAuthenticatedDelete(currentImageId);
|
|
52
51
|
}}
|
|
52
|
+
onChange={(url) => setHeroImage(url)}
|
|
53
|
+
height={400}
|
|
54
|
+
objectFit="contain"
|
|
53
55
|
/>
|
|
54
|
-
```
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
**Source:** [`hero-image-uploader.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/hero-image-uploader.tsx)
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
<!-- source-hash: fe7a0a95673575f637ece7b20bebd5c4 -->
|
|
2
|
+
Renders a unified icon across all app surfaces (announcement bar, chat quick actions, AI-agent identity) using a consistent three-step resolution strategy.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
### `EntityIconValue` (interface)
|
|
7
|
+
Shared icon descriptor used throughout the app. Accepts one of:
|
|
8
|
+
- `name` — library glyph name resolved via `resolveIcon`
|
|
9
|
+
- `url` — uploaded image URL (takes priority over `name`)
|
|
10
|
+
- `props` — additional props spread onto the resolved glyph (e.g. `{ color }`)
|
|
11
|
+
|
|
12
|
+
### `EntityIcon` (component)
|
|
13
|
+
The single icon-rendering path for the whole app. Resolution order:
|
|
14
|
+
1. `url` → renders an `<img>` tag with `objectFit: contain`
|
|
15
|
+
2. `name` ∈ `{fae, mingo}` → renders the packaged `AgentMark` brand component
|
|
16
|
+
3. `name` → resolves a library glyph via `resolveIcon` and spreads `props`
|
|
17
|
+
|
|
18
|
+
Falls back to an empty glyph when no `icon` is provided.
|
|
19
|
+
|
|
20
|
+
**Props:**
|
|
21
|
+
|
|
22
|
+
| Prop | Type | Default | Description |
|
|
23
|
+
|---|---|---|---|
|
|
24
|
+
| `icon` | `EntityIconValue \| null` | — | Icon descriptor |
|
|
25
|
+
| `size` | `number` | `20` | Pixel size (width/height) |
|
|
26
|
+
| `className` | `string` | — | Tailwind/CSS classes; enables responsive sizing |
|
|
27
|
+
|
|
28
|
+
> **Sizing note:** When `className` is provided, sizing is controlled entirely by CSS (e.g. `w-6 md:w-8`). The `size` prop is only applied as an inline style when no `className` is given, preventing class overrides.
|
|
29
|
+
|
|
30
|
+
## Usage Example
|
|
31
|
+
|
|
32
|
+
```typescript
|
|
33
|
+
import { EntityIcon, type EntityIconValue } from './icon-display'
|
|
34
|
+
|
|
35
|
+
// Uploaded image
|
|
36
|
+
const imageIcon: EntityIconValue = { url: 'https://cdn.example.com/logo.png' }
|
|
37
|
+
|
|
38
|
+
// Brand agent mark
|
|
39
|
+
const agentIcon: EntityIconValue = { name: 'mingo' }
|
|
40
|
+
|
|
41
|
+
// Library glyph with custom color
|
|
42
|
+
const glyphIcon: EntityIconValue = { name: 'shield', props: { color: '#FF5733' } }
|
|
43
|
+
|
|
44
|
+
// Fixed size
|
|
45
|
+
<EntityIcon icon={glyphIcon} size={24} />
|
|
46
|
+
|
|
47
|
+
// Responsive via Tailwind
|
|
48
|
+
<EntityIcon icon={agentIcon} className="w-6 md:w-8" />
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## Source
|
|
52
|
+
|
|
53
|
+
[`icon-display.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/icon-display.tsx)
|