@flamingo-stack/openframe-frontend-core 0.0.481 → 0.0.482
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-H6DFCF44.cjs → chunk-22AED5IC.cjs} +82 -82
- package/dist/{chunk-H6DFCF44.cjs.map → chunk-22AED5IC.cjs.map} +1 -1
- package/dist/{chunk-MGKCS6KS.js → chunk-3WCARCI4.js} +2 -2
- package/dist/{chunk-LNKWY74S.cjs → chunk-4HL6UENH.cjs} +5 -5
- package/dist/{chunk-LNKWY74S.cjs.map → chunk-4HL6UENH.cjs.map} +1 -1
- package/dist/{chunk-Y3Y2DLNO.js → chunk-6UGYBCEN.js} +3 -3
- package/dist/{chunk-BBUEY73L.js → chunk-7I5B5PQ4.js} +6269 -5339
- package/dist/chunk-7I5B5PQ4.js.map +1 -0
- package/dist/{chunk-PSPWT2Q5.js → chunk-7LWXWXEY.js} +4 -4
- package/dist/{chunk-M7O74OWG.cjs → chunk-ACOU5YJI.cjs} +31 -31
- package/dist/{chunk-M7O74OWG.cjs.map → chunk-ACOU5YJI.cjs.map} +1 -1
- package/dist/{chunk-INDFIVDV.cjs → chunk-AHGSN4AT.cjs} +12 -12
- package/dist/{chunk-INDFIVDV.cjs.map → chunk-AHGSN4AT.cjs.map} +1 -1
- package/dist/{chunk-VTSRDC4W.js → chunk-CKC3EAYT.js} +2 -2
- package/dist/{chunk-SASR7SK5.js → chunk-GZK7FWJJ.js} +20 -4
- package/dist/chunk-GZK7FWJJ.js.map +1 -0
- package/dist/{chunk-ZRANZNEA.js → chunk-JJE5TUZK.js} +2 -2
- package/dist/{chunk-66BNAFO6.js → chunk-JQIUBFHL.js} +4 -4
- package/dist/{chunk-MMCBQJKE.cjs → chunk-KUBJHB6I.cjs} +11 -11
- package/dist/{chunk-MMCBQJKE.cjs.map → chunk-KUBJHB6I.cjs.map} +1 -1
- package/dist/{chunk-ZV6E3U3C.cjs → chunk-MRGTMMJ3.cjs} +30 -30
- package/dist/{chunk-ZV6E3U3C.cjs.map → chunk-MRGTMMJ3.cjs.map} +1 -1
- package/dist/{chunk-OZJN54R5.cjs → chunk-NWVKG7QC.cjs} +37 -37
- package/dist/{chunk-OZJN54R5.cjs.map → chunk-NWVKG7QC.cjs.map} +1 -1
- package/dist/{chunk-AN47EIIJ.cjs → chunk-PHTSSHIQ.cjs} +59 -59
- package/dist/{chunk-AN47EIIJ.cjs.map → chunk-PHTSSHIQ.cjs.map} +1 -1
- package/dist/{chunk-N2JZ33V7.cjs → chunk-RUA3OXSJ.cjs} +26 -26
- package/dist/{chunk-N2JZ33V7.cjs.map → chunk-RUA3OXSJ.cjs.map} +1 -1
- package/dist/{chunk-LK623WCC.cjs → chunk-RZPF7MJ2.cjs} +9 -9
- package/dist/{chunk-LK623WCC.cjs.map → chunk-RZPF7MJ2.cjs.map} +1 -1
- package/dist/{chunk-G3UN2DXU.cjs → chunk-STYA77PH.cjs} +20 -4
- package/dist/chunk-STYA77PH.cjs.map +1 -0
- package/dist/{chunk-JUJY3HQS.cjs → chunk-U37UTLP7.cjs} +19 -19
- package/dist/{chunk-JUJY3HQS.cjs.map → chunk-U37UTLP7.cjs.map} +1 -1
- package/dist/{chunk-2DIOV7BR.js → chunk-UPN6EFOM.js} +4 -4
- package/dist/{chunk-OWMLWJQY.cjs → chunk-VPVOJD5X.cjs} +2432 -1502
- package/dist/chunk-VPVOJD5X.cjs.map +1 -0
- package/dist/{chunk-4SMRQ4SN.js → chunk-WBL5Y4PS.js} +3 -3
- package/dist/{chunk-FP4H6Y5O.js → chunk-WPYPSIY2.js} +3 -3
- package/dist/{chunk-R5WJJL4V.js → chunk-X5X43HFV.js} +5 -5
- package/dist/{chunk-DEHZ5CTC.js → chunk-XTWKDMCG.js} +2 -2
- package/dist/components/case-studies/index.cjs +9 -9
- package/dist/components/case-studies/index.js +3 -3
- package/dist/components/chat/index.cjs +3 -3
- package/dist/components/chat/index.js +2 -2
- package/dist/components/contact/index.cjs +4 -4
- package/dist/components/contact/index.js +3 -3
- package/dist/components/docs/index.cjs +6 -6
- package/dist/components/docs/index.js +5 -5
- package/dist/components/embeds/index.cjs +4 -4
- package/dist/components/embeds/index.js +3 -3
- package/dist/components/faq/index.cjs +4 -4
- package/dist/components/faq/index.js +3 -3
- package/dist/components/features/captions-url.cjs +12 -0
- package/dist/components/features/captions-url.cjs.map +1 -0
- package/dist/components/features/captions-url.js +10 -0
- package/dist/components/features/captions-url.js.map +1 -0
- package/dist/components/features/card-hit-layer.d.ts +40 -0
- package/dist/components/features/card-hit-layer.d.ts.map +1 -0
- package/dist/components/features/floating-walkthrough-video.d.ts +71 -0
- package/dist/components/features/floating-walkthrough-video.d.ts.map +1 -0
- package/dist/components/features/index.cjs +11 -3
- package/dist/components/features/index.cjs.map +1 -1
- package/dist/components/features/index.d.ts +4 -0
- package/dist/components/features/index.d.ts.map +1 -1
- package/dist/components/features/index.js +12 -4
- package/dist/components/features/use-walkthrough-video.d.ts +16 -0
- package/dist/components/features/use-walkthrough-video.d.ts.map +1 -0
- package/dist/components/features/video-bites-strip.d.ts.map +1 -1
- package/dist/components/features/video-center-badge.d.ts.map +1 -1
- package/dist/components/features/video-hover-preview.d.ts +68 -0
- package/dist/components/features/video-hover-preview.d.ts.map +1 -0
- package/dist/components/features/video.d.ts +78 -40
- package/dist/components/features/video.d.ts.map +1 -1
- package/dist/components/form.d.ts +0 -1
- package/dist/components/form.d.ts.map +1 -1
- package/dist/components/help-center-pages/index.cjs +21 -21
- package/dist/components/help-center-pages/index.js +12 -12
- package/dist/components/index.cjs +163 -155
- package/dist/components/index.cjs.map +1 -1
- package/dist/components/index.js +18 -10
- package/dist/components/index.js.map +1 -1
- package/dist/components/navigation/index.cjs +3 -3
- package/dist/components/navigation/index.js +2 -2
- package/dist/components/onboarding-guides/index.cjs +6 -6
- package/dist/components/onboarding-guides/index.js +5 -5
- package/dist/components/related-content/index.cjs +4 -4
- package/dist/components/related-content/index.js +3 -3
- package/dist/components/tickets/index.cjs +6 -6
- package/dist/components/tickets/index.js +5 -5
- package/dist/components/ui/button/button-styles.d.ts +2 -0
- package/dist/components/ui/button/button-styles.d.ts.map +1 -1
- package/dist/components/ui/button/button.d.ts +2 -2
- package/dist/components/ui/button/button.d.ts.map +1 -1
- package/dist/components/ui/file-manager/index.cjs +50 -50
- package/dist/components/ui/file-manager/index.js +1 -1
- package/dist/components/ui/index.cjs +3 -3
- package/dist/components/ui/index.js +2 -2
- package/dist/components/ui/page-actions.d.ts +2 -1
- package/dist/components/ui/page-actions.d.ts.map +1 -1
- package/dist/index.cjs +27 -3
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +28 -4
- package/dist/types/supabase.d.ts +80 -0
- package/dist/types/supabase.d.ts.map +1 -1
- package/dist/types/video-processing.d.ts +1 -1
- package/dist/types/video-processing.d.ts.map +1 -1
- package/dist/utils/announcement-storage.d.ts +1 -1
- package/dist/utils/announcement-storage.d.ts.map +1 -1
- package/dist/utils/dismiss-cookie.d.ts +27 -0
- package/dist/utils/dismiss-cookie.d.ts.map +1 -0
- package/dist/utils/dismissal-storage.d.ts +19 -0
- package/dist/utils/dismissal-storage.d.ts.map +1 -0
- package/dist/utils/index.cjs +48 -10
- package/dist/utils/index.cjs.map +1 -1
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +41 -11
- package/dist/utils/index.js.map +1 -1
- package/package.json +8 -2
- package/src/.index.md +39 -32
- package/src/.platform-domains.md +65 -0
- package/src/assets/.fae-avatar.md +33 -0
- package/src/assets/.index.md +15 -9
- package/src/components/.agent-mark.md +31 -0
- package/src/components/.announcement-bar.md +47 -35
- package/src/components/.calendar.md +19 -15
- package/src/components/.categories-cart.md +34 -30
- package/src/components/.category-card.md +33 -33
- package/src/components/.chart.md +38 -40
- package/src/components/.command.md +47 -23
- package/src/components/.comment-card.md +31 -26
- package/src/components/.content-loading-container.md +45 -20
- package/src/components/.context-menu.md +45 -31
- package/src/components/.date-time-picker.md +36 -30
- package/src/components/.empty-state.md +31 -31
- package/src/components/.faq-accordion.md +20 -30
- package/src/components/.filter-chip.md +36 -33
- package/src/components/.footer-waitlist-button.md +27 -21
- package/src/components/.footer.md +39 -24
- package/src/components/.form.md +32 -20
- package/src/components/.hero-image-uploader.md +35 -31
- package/src/components/.icon-display.md +53 -0
- package/src/components/.image-cropper.md +34 -33
- package/src/components/.index.md +25 -29
- package/src/components/.logs-list.md +27 -23
- package/src/components/.media-carousel.md +47 -26
- package/src/components/.metric-value.md +27 -24
- package/src/components/.msp-display.md +29 -23
- package/src/components/.open-source-features.md +23 -26
- package/src/components/.pagination.md +44 -39
- package/src/components/.persistent-filter-controls.md +61 -28
- package/src/components/.pricing-display.md +34 -33
- package/src/components/.results-count.md +33 -20
- package/src/components/.smooth-accordion.md +24 -20
- package/src/components/.social-icon-row.md +33 -21
- package/src/components/.sonner.md +40 -25
- package/src/components/.steps.md +39 -25
- package/src/components/.tool-icon.md +34 -21
- package/src/components/.unified-filter-logic.md +32 -36
- package/src/components/.user-display.md +33 -28
- package/src/components/.user-summary-stub.md +40 -33
- package/src/components/.vendor-display-button.md +17 -15
- package/src/components/.vendor-icon.md +17 -25
- package/src/components/.vendor-tag.md +39 -34
- package/src/components/.why-it-matters.md +15 -11
- package/src/components/.yes-no-display.md +36 -31
- package/src/components/authors/.author-detail-view.md +50 -0
- package/src/components/case-studies/.index.md +26 -0
- package/src/components/case-studies/.share-experience-section.md +45 -0
- package/src/components/chat/.approval-batch-message.md +48 -33
- package/src/components/chat/.approval-request-message.md +37 -26
- package/src/components/chat/.chat-archive-page.md +56 -0
- package/src/components/chat/.chat-attachment-bar.md +32 -40
- package/src/components/chat/.chat-composer.md +43 -0
- package/src/components/chat/.chat-container.md +41 -25
- package/src/components/chat/.chat-context-memory-bar.md +53 -0
- package/src/components/chat/.chat-context-picker.md +89 -0
- package/src/components/chat/.chat-header-icon-button.md +43 -0
- package/src/components/chat/.chat-header-search-field.md +51 -0
- package/src/components/chat/.chat-input.md +63 -30
- package/src/components/chat/.chat-list-empty-state.md +44 -0
- package/src/components/chat/.chat-message-enhanced.md +29 -31
- package/src/components/chat/.chat-message-list.md +34 -44
- package/src/components/chat/.chat-message-row.md +56 -0
- package/src/components/chat/.chat-message-skeleton.md +32 -26
- package/src/components/chat/.chat-panel-header-mobile.md +46 -0
- package/src/components/chat/.chat-panel-header.md +80 -0
- package/src/components/chat/.chat-sidebar-skeleton.md +31 -30
- package/src/components/chat/.chat-sidebar.md +36 -29
- package/src/components/chat/.chat-ticket-list.md +38 -23
- package/src/components/chat/.chat-typing-indicator.md +37 -19
- package/src/components/chat/.context-compaction-display.md +19 -15
- package/src/components/chat/.context-items-list.md +57 -0
- package/src/components/chat/.embeddable-chat.md +57 -66
- package/src/components/chat/.error-message-display.md +40 -22
- package/src/components/chat/.guide-mode-banner.md +41 -0
- package/src/components/chat/.guide-welcome.md +43 -0
- package/src/components/chat/.index.md +26 -21
- package/src/components/chat/.mingo-chat-history.md +63 -0
- package/src/components/chat/.mingo-chat-modals.md +44 -0
- package/src/components/chat/.mingo-history-rail.md +63 -0
- package/src/components/chat/.mingo-info-card.md +59 -0
- package/src/components/chat/.mingo-onboarding-card.md +21 -27
- package/src/components/chat/.mingo-welcome.md +60 -0
- package/src/components/chat/.model-display.md +33 -25
- package/src/components/chat/.msp-organization-card-skeleton.md +44 -0
- package/src/components/chat/.msp-organization-card.md +51 -0
- package/src/components/chat/.nav-link-anchor-via-runtime.md +36 -25
- package/src/components/chat/.quick-action-chip.md +60 -0
- package/src/components/chat/.quick-action-marquee.md +53 -0
- package/src/components/chat/.quick-action-wall.md +68 -0
- package/src/components/chat/.remark-mention-chips.md +41 -0
- package/src/components/chat/.slash-command-suggestions.md +30 -36
- package/src/components/chat/.source-action-button.md +28 -25
- package/src/components/chat/.tool-call-blocks.md +18 -30
- package/src/components/chat/.tool-execution-display.md +29 -34
- package/src/components/chat/entity-cards/.admin-content-card.md +29 -22
- package/src/components/chat/entity-cards/.blog-card.md +44 -33
- package/src/components/chat/entity-cards/.blog-image-placeholder.md +20 -18
- package/src/components/chat/entity-cards/.case-study-card.md +24 -33
- package/src/components/chat/entity-cards/.chat-ticket-item.md +39 -22
- package/src/components/chat/entity-cards/.customer-interview-card.md +29 -32
- package/src/components/chat/entity-cards/.data-room-doc-card.md +21 -22
- package/src/components/chat/entity-cards/.dispatch.md +41 -24
- package/src/components/chat/entity-cards/.entity-author-card.md +36 -33
- package/src/components/chat/entity-cards/.entity-portrait-card.md +47 -0
- package/src/components/chat/entity-cards/.generic-entity-card.md +26 -25
- package/src/components/chat/entity-cards/.github-activity-card.md +35 -41
- package/src/components/chat/entity-cards/.hubspot-ticket-card.md +22 -28
- package/src/components/chat/entity-cards/.index.md +33 -44
- package/src/components/chat/entity-cards/.investor-update-card.md +36 -25
- package/src/components/chat/entity-cards/.onboarding-guide-card.md +20 -29
- package/src/components/chat/entity-cards/.product-release-card-defaults.md +26 -19
- package/src/components/chat/entity-cards/.program-card.md +30 -33
- package/src/components/chat/entity-cards/.roadmap-card.md +40 -31
- package/src/components/chat/entity-cards/.roadmap-vote-button.md +33 -36
- package/src/components/chat/entity-cards/.slack-message-card.md +31 -32
- package/src/components/chat/entity-cards/.use-cover-image-fallback.md +47 -0
- package/src/components/chat/entity-cards/.use-entity-card-link.md +51 -0
- package/src/components/chat/entity-cards/.use-entity-card-placeholder.md +47 -0
- package/src/components/chat/entity-cards/.what-i-shipped-card.md +43 -0
- package/src/components/chat/hooks/.index.md +33 -30
- package/src/components/chat/hooks/.use-chat-card-item.md +30 -17
- package/src/components/chat/hooks/.use-chat-dialog-manager.md +59 -0
- package/src/components/chat/hooks/.use-chat-identity.md +37 -25
- package/src/components/chat/hooks/.use-chunk-catchup.md +53 -36
- package/src/components/chat/hooks/.use-empty-state-config.md +39 -0
- package/src/components/chat/hooks/.use-jetstream-dialog-subscription.md +65 -30
- package/src/components/chat/hooks/.use-nats-chat-adapter.md +55 -36
- package/src/components/chat/hooks/.use-nats-dialog-subscription.md +66 -50
- package/src/components/chat/hooks/.use-realtime-chunk-processor.md +58 -31
- package/src/components/chat/hooks/.use-scripted-stream.md +46 -0
- package/src/components/chat/hooks/.use-slash-commands.md +32 -25
- package/src/components/chat/hooks/.use-sse-chat-adapter.md +32 -21
- package/src/components/chat/hooks/.use-unified-chat.md +45 -35
- package/src/components/chat/types/.api.types.md +49 -41
- package/src/components/chat/types/.chat.types.md +56 -34
- package/src/components/chat/types/.component.types.md +36 -36
- package/src/components/chat/types/.context-item.types.md +61 -0
- package/src/components/chat/types/.index.md +32 -17
- package/src/components/chat/types/.message.types.md +44 -45
- package/src/components/chat/types/.network.types.md +46 -46
- package/src/components/chat/types/.processing.types.md +49 -37
- package/src/components/chat/types/.unified-chat-state.types.md +41 -26
- package/src/components/chat/types/entities/.content-ref.md +20 -31
- package/src/components/chat/types/entities/.investor-update.md +14 -16
- package/src/components/chat/types/entities/.onboarding-guide.md +35 -34
- package/src/components/chat/types/entities/.program-types.md +55 -43
- package/src/components/chat/utils/.chip-action-class.md +17 -19
- package/src/components/chat/utils/.chip-styles.md +18 -18
- package/src/components/chat/utils/.chunk-parser.md +48 -37
- package/src/components/chat/utils/.compact-card-classes.md +33 -35
- package/src/components/chat/utils/.execute-navigation.md +49 -0
- package/src/components/chat/utils/.extract-incomplete-message-state.md +9 -12
- package/src/components/chat/utils/.history-merge.md +65 -0
- package/src/components/chat/utils/.icon-library.md +33 -31
- package/src/components/chat/utils/.icon-registry.md +44 -0
- package/src/components/chat/utils/.index.md +37 -33
- package/src/components/chat/utils/.is-cross-origin-url.md +26 -22
- package/src/components/chat/utils/.message-segment-accumulator.md +46 -25
- package/src/components/chat/utils/.nav-anchor-props.md +29 -34
- package/src/components/chat/utils/.nav-click-handler.md +29 -33
- package/src/components/chat/utils/.process-historical-messages.md +29 -33
- package/src/components/chat/utils/.scripted-stream.md +52 -0
- package/src/components/chat/utils/.source-row-cta.md +32 -31
- package/src/components/chat/utils/.tool-call-helpers.md +25 -17
- package/src/components/contact/.contact-form.md +24 -19
- package/src/components/docs/.doc-navigation-context.md +49 -0
- package/src/components/docs/.doc-viewer.md +64 -0
- package/src/components/docs/.docs-hub-page.md +49 -0
- package/src/components/docs/.index.md +51 -0
- package/src/components/docs/.skeletons.md +47 -0
- package/src/components/docs/.use-docs-resolve-link.md +61 -0
- package/src/components/docs/.use-document-tree.md +83 -0
- package/src/components/docs/.use-scroll-spy.md +58 -0
- package/src/components/embeds/.embed-container.md +45 -0
- package/src/components/embeds/.embed-iframe.md +51 -0
- package/src/components/embeds/.figma-embed.md +43 -0
- package/src/components/embeds/.file-download-card.md +47 -0
- package/src/components/embeds/.google-sheets-viewer.md +40 -0
- package/src/components/embeds/.index.md +58 -0
- package/src/components/embeds/.linkedin-embed-client.md +50 -0
- package/src/components/embeds/.markdown-image.md +40 -0
- package/src/components/embeds/.og-link-preview.md +54 -0
- package/src/components/embeds/.pdf-viewer.md +43 -0
- package/src/components/embeds/.reddit-embed-client.md +40 -0
- package/src/components/embeds/.rich-markdown-runtime.md +53 -0
- package/src/components/embeds/.twitter-embed-client.md +44 -0
- package/src/components/faq/.faq-document-page.md +68 -0
- package/src/components/faq/.faq-section.md +55 -0
- package/src/components/faq/.index.md +29 -0
- package/src/components/faq/.json-ld.md +48 -0
- package/src/components/features/.array-entry-manager.md +32 -24
- package/src/components/features/.auth-providers-list.md +33 -32
- package/src/components/features/.captions-url.md +43 -0
- package/src/components/features/.cards-strip.md +48 -0
- package/src/components/features/.changelog-manager.md +17 -20
- package/src/components/features/.command-box.md +11 -16
- package/src/components/features/.entity-summary-editor.md +20 -15
- package/src/components/features/.entity-tag-badges.md +43 -0
- package/src/components/features/.entity-video-section.md +31 -41
- package/src/components/features/.figma-prototype-viewer.md +55 -37
- package/src/components/features/.filters-dropdown.md +14 -13
- package/src/components/features/.highlight-config-section.md +19 -16
- package/src/components/features/.highlight-video-combined-section.md +28 -19
- package/src/components/features/.highlight-video-preview.md +13 -11
- package/src/components/features/.highlight-video-section.md +26 -22
- package/src/components/features/.index.md +40 -36
- package/src/components/features/.media-gallery-manager.md +37 -35
- package/src/components/features/.mux-origins.md +46 -0
- package/src/components/features/.og-editor-preview.md +29 -24
- package/src/components/features/.os-type-badge-group.md +26 -18
- package/src/components/features/.os-type-badge.md +41 -24
- package/src/components/features/.paths-display.md +42 -25
- package/src/components/features/.platform-badge.md +26 -17
- package/src/components/features/.policy-configuration-panel.md +33 -31
- package/src/components/features/.provider-button.md +29 -20
- package/src/components/features/.push-button-selector.md +39 -41
- package/src/components/features/.release-media-manager.md +41 -34
- package/src/components/features/.section-selector.md +27 -16
- package/src/components/features/.select-button.md +21 -32
- package/src/components/features/.seo-editor-preview.md +49 -36
- package/src/components/features/.social-links-manager.md +40 -18
- package/src/components/features/.start-with-openframe-button.md +30 -32
- package/src/components/features/.status-filter-component.md +29 -38
- package/src/components/features/.tags-selector.md +25 -29
- package/src/components/features/.transcript-summary-editor.md +24 -18
- package/src/components/features/.use-video-warmup.md +47 -0
- package/src/components/features/.video-bites-display.md +36 -37
- package/src/components/features/.video-bites-shared.md +44 -0
- package/src/components/features/.video-bites-strip.md +63 -0
- package/src/components/features/.video-center-badge.md +38 -0
- package/src/components/features/.video-ratio-tabs.md +38 -31
- package/src/components/features/.video-source-selector.md +24 -27
- package/src/components/features/.video.md +35 -27
- package/src/components/features/.waitlist-form.md +39 -33
- package/src/components/features/.warning-block.md +53 -0
- package/src/components/features/ai-enrich/.AIEnrichSection.md +24 -25
- package/src/components/features/ai-enrich/.AIRequiredBadge.md +22 -21
- package/src/components/features/ai-enrich/.AIStatusIndicator.md +42 -35
- package/src/components/features/ai-enrich/.AIWarningsSection.md +23 -20
- package/src/components/features/ai-enrich/.ConfidenceBadge.md +35 -20
- package/src/components/features/auth/.auth-benefits-panel.md +48 -0
- package/src/components/features/auth/.auth-branding.md +51 -0
- package/src/components/features/auth/.auth-shell.md +51 -0
- package/src/components/features/auth/.back-to-login-link.md +48 -0
- package/src/components/features/auth/.complete-account-form.md +45 -0
- package/src/components/features/auth/.create-organization-form.md +53 -0
- package/src/components/features/auth/.index.md +48 -0
- package/src/components/features/auth/.invite-link-invalid-modal.md +42 -0
- package/src/components/features/auth/.login-form.md +42 -0
- package/src/components/features/auth/.openframe-sso-login-form.md +46 -0
- package/src/components/features/auth/.openframe-sso-signup-form.md +51 -0
- package/src/components/features/auth/.password-reset-form.md +57 -0
- package/src/components/features/auth/.sso-auth-shell.md +35 -0
- package/src/components/features/auth/.sso-providers.md +42 -0
- package/src/components/features/auth/.terms-agreement-label.md +28 -0
- package/src/components/features/board/.board-column-header.md +24 -18
- package/src/components/features/board/.board-column.md +32 -32
- package/src/components/features/board/.board-ticket-approval.md +42 -0
- package/src/components/features/board/.board.md +38 -38
- package/src/components/features/board/.index.md +35 -38
- package/src/components/features/board/.ticket-card.md +33 -36
- package/src/components/features/board/.types.md +38 -31
- package/src/components/features/card-hit-layer.tsx +84 -0
- package/src/components/features/floating-walkthrough-video.tsx +891 -0
- package/src/components/features/index.ts +4 -0
- package/src/components/features/notifications/.approval-request-notification-tile.md +45 -0
- package/src/components/features/notifications/.index.md +35 -31
- package/src/components/features/notifications/.notification-drawer.md +32 -19
- package/src/components/features/notifications/.notification-popups.md +51 -0
- package/src/components/features/notifications/.notification-tile.md +43 -27
- package/src/components/features/notifications/.notifications-context.md +42 -45
- package/src/components/features/notifications/.types.md +51 -31
- package/src/components/features/ticket-status-config-list/.ticket-status-config-list.md +51 -0
- package/src/components/features/time-tracker/.index.md +48 -0
- package/src/components/features/time-tracker/.time-tracker-context.md +55 -0
- package/src/components/features/time-tracker/.time-tracker-header-button.md +51 -0
- package/src/components/features/time-tracker/.time-tracker-panel.md +58 -0
- package/src/components/features/time-tracker/.types.md +51 -0
- package/src/components/features/time-tracker/.use-tracker-clock.md +32 -0
- package/src/components/features/use-walkthrough-video.ts +70 -0
- package/src/components/features/video-bites-strip.tsx +46 -146
- package/src/components/features/video-center-badge.tsx +11 -2
- package/src/components/features/video-hover-preview.tsx +201 -0
- package/src/components/features/video.tsx +368 -73
- package/src/components/help-center-pages/.delivery-page.md +51 -0
- package/src/components/help-center-pages/.index.md +51 -0
- package/src/components/help-center-pages/.onboarding-guides-catalog-page.md +53 -0
- package/src/components/help-center-pages/.product-releases-list-page.md +51 -0
- package/src/components/help-center-pages/.roadmap-page.md +46 -0
- package/src/components/icons/.figma-icon.md +13 -7
- package/src/components/icons/.index.md +26 -22
- package/src/components/icons/.vendor-directory-icon.md +30 -18
- package/src/components/icons/.x-logo.md +26 -10
- package/src/components/icons-v2-generated/.index.md +30 -41
- package/src/components/icons-v2-generated/brand-logos/.index.md +25 -19
- package/src/components/icons-v2-generated/communication/.index.md +26 -30
- package/src/components/icons-v2-generated/logos/.flamingo-logo-icon.md +41 -0
- package/src/components/layout/.article-detail-layout.md +32 -21
- package/src/components/layout/.page-container.md +25 -23
- package/src/components/layout/.page-heading.md +48 -0
- package/src/components/layout/.page-layout.md +30 -25
- package/src/components/layout/.title-block.md +43 -24
- package/src/components/loading/.card-skeleton.md +28 -35
- package/src/components/loading/.category-card-skeleton.md +25 -23
- package/src/components/loading/.device-card-skeleton.md +22 -15
- package/src/components/loading/.margin-report-skeleton.md +30 -35
- package/src/components/loading/.openmsp-heartbeat.md +30 -32
- package/src/components/loading/.organization-card-skeleton.md +22 -25
- package/src/components/loading/.organization-icon-skeleton.md +39 -27
- package/src/components/loading/.page-layout-skeleton.md +50 -28
- package/src/components/loading/.unified-skeleton.md +37 -40
- package/src/components/loading/.users-grid-skeleton.md +19 -38
- package/src/components/navigation/.app-header.md +35 -28
- package/src/components/navigation/.app-layout-context.md +48 -0
- package/src/components/navigation/.app-layout-drawer.md +56 -0
- package/src/components/navigation/.app-layout.md +24 -23
- package/src/components/navigation/.header-mingo-button.md +46 -0
- package/src/components/navigation/.header-organization-filter.md +32 -18
- package/src/components/navigation/.header.md +24 -31
- package/src/components/navigation/.index.md +36 -50
- package/src/components/navigation/.mingo-ai-button.md +41 -0
- package/src/components/navigation/.mobile-burger-menu.md +29 -29
- package/src/components/navigation/.mobile-nav-panel.md +41 -49
- package/src/components/navigation/.multi-level-navigation.md +76 -0
- package/src/components/navigation/.navigation-sidebar-item.md +14 -14
- package/src/components/navigation/.navigation-sidebar.md +30 -23
- package/src/components/navigation/.sliding-sidebar.md +30 -25
- package/src/components/navigation/.sticky-section-nav.md +23 -21
- package/src/components/onboarding-guides/.index.md +40 -0
- package/src/components/onboarding-guides/.onboarding-guide-detail-view.md +55 -0
- package/src/components/onboarding-guides/.onboarding-guides-catalog-skeleton.md +33 -0
- package/src/components/onboarding-guides/.onboarding-guides-catalog-view.md +50 -0
- package/src/components/onboarding-guides/hooks/.use-onboarding-guides.md +54 -0
- package/src/components/platform/.CveLink.md +28 -17
- package/src/components/platform/.ScriptArguments.md +18 -23
- package/src/components/platform/.ScriptInfoSection.md +27 -21
- package/src/components/platform/.ShellTypeBadge.md +34 -18
- package/src/components/platform/.SoftwareInfo.md +23 -21
- package/src/components/platform/.ToolBadge.md +18 -16
- package/src/components/profile/.ProfileLoadingSkeleton.md +24 -23
- package/src/components/related-content/.index.md +41 -0
- package/src/components/related-content/.related-content-section.md +62 -0
- package/src/components/shared/.article-author-byline.md +56 -0
- package/src/components/shared/.detail-page-skeleton.md +32 -43
- package/src/components/shared/.media-gallery-strip.md +43 -0
- package/src/components/shared/delivery/.delivery-lists.md +20 -19
- package/src/components/shared/delivery/.delivery-row.md +24 -20
- package/src/components/shared/delivery/.delivery-table.md +20 -22
- package/src/components/shared/dev-section/.dev-card-row.md +28 -36
- package/src/components/shared/dev-section/.dev-section-page.md +36 -25
- package/src/components/shared/dev-section/.dev-section-view.md +32 -22
- package/src/components/shared/doc-search/.doc-search-bar.md +58 -0
- package/src/components/shared/doc-search/.doc-search-result-row.md +50 -0
- package/src/components/shared/doc-search/.format-relative-path.md +30 -0
- package/src/components/shared/doc-search/.index.md +46 -0
- package/src/components/shared/doc-search/.map-doc-search-results.md +44 -0
- package/src/components/shared/doc-search/.resolve-search-result-action.md +52 -0
- package/src/components/shared/doc-search/.types.md +49 -0
- package/src/components/shared/doc-search/.use-doc-search.md +66 -0
- package/src/components/shared/legal-document/.legal-document-page.md +26 -20
- package/src/components/shared/legal-document/.use-legal-docs.md +36 -30
- package/src/components/shared/onboarding/.onboarding-step-card.md +24 -16
- package/src/components/shared/onboarding/.onboarding-walkthrough.md +42 -28
- package/src/components/shared/product-release/.index.md +33 -24
- package/src/components/shared/product-release/.product-release-card-skeleton.md +22 -28
- package/src/components/shared/product-release/.product-release-card.md +28 -29
- package/src/components/shared/product-release/.product-releases-view.md +49 -0
- package/src/components/shared/product-release/.release-detail-page.md +30 -15
- package/src/components/shared/roadmap/.index.md +29 -24
- package/src/components/shared/roadmap/.roadmap-grid.md +43 -54
- package/src/components/shared/roadmap/.roadmap-view.md +41 -0
- package/src/components/shared/roadmap/.use-roadmap-voting.md +27 -17
- package/src/components/switch.tsx +1 -1
- package/src/components/tickets/.help-center-card.md +32 -28
- package/src/components/tickets/.help-center-create-form.md +34 -22
- package/src/components/tickets/.help-center-list.md +36 -25
- package/src/components/tickets/.index.md +30 -45
- package/src/components/tickets/.ticket-center.md +31 -38
- package/src/components/tickets/.ticket-detail-drawer.md +20 -30
- package/src/components/tickets/.ticket-open-form.md +24 -26
- package/src/components/tickets/.ticket-reply-composer.md +51 -0
- package/src/components/tickets/.ticket-row.md +26 -11
- package/src/components/tickets/.types.md +56 -38
- package/src/components/tickets/hooks/.use-ticket-actions.md +60 -47
- package/src/components/tickets/hooks/.use-ticket-engagements.md +27 -27
- package/src/components/tickets/hooks/.use-tickets-list.md +24 -30
- package/src/components/ui/.accordion.md +28 -21
- package/src/components/ui/.actions-menu.md +36 -54
- package/src/components/ui/.ai-generated-badge.md +25 -0
- package/src/components/ui/.alert-dialog.md +21 -16
- package/src/components/ui/.alert.md +30 -25
- package/src/components/ui/.allowed-domains-input.md +26 -15
- package/src/components/ui/.announcement-bar-view.md +46 -0
- package/src/components/ui/.autocomplete.md +40 -27
- package/src/components/ui/.badge.md +34 -31
- package/src/components/ui/.brand-association-card.md +22 -18
- package/src/components/ui/.breadcrumb.md +18 -14
- package/src/components/ui/.bullet-list.md +35 -23
- package/src/components/ui/.card.md +47 -30
- package/src/components/ui/.checkbox-block.md +34 -22
- package/src/components/ui/.checkbox-with-description.md +18 -20
- package/src/components/ui/.chevron-button.md +29 -29
- package/src/components/ui/.circular-progress.md +30 -41
- package/src/components/ui/.color-preset-select.md +54 -0
- package/src/components/ui/.color-swatch.md +37 -0
- package/src/components/ui/.content-loader.md +34 -27
- package/src/components/ui/.crossfade-panels.md +50 -0
- package/src/components/ui/.cursor-pagination.md +38 -26
- package/src/components/ui/.dashboard-info-card.md +46 -27
- package/src/components/ui/.date-picker.md +52 -36
- package/src/components/ui/.device-card-compact.md +23 -20
- package/src/components/ui/.device-card.md +39 -30
- package/src/components/ui/.dialog.md +14 -14
- package/src/components/ui/.drawer.md +45 -39
- package/src/components/ui/.dropdown-button.md +41 -33
- package/src/components/ui/.dropdown-menu.md +40 -23
- package/src/components/ui/.duration-input.md +41 -0
- package/src/components/ui/.entity-image.md +32 -28
- package/src/components/ui/.error-state.md +30 -26
- package/src/components/ui/.fade-preview.md +44 -0
- package/src/components/ui/.field-wrapper.md +34 -23
- package/src/components/ui/.file-upload.md +30 -18
- package/src/components/ui/.filter-modal.md +30 -32
- package/src/components/ui/.filter-pill-row.md +58 -0
- package/src/components/ui/.floating-tooltip.md +27 -32
- package/src/components/ui/.hidden-tags-popup.md +18 -20
- package/src/components/ui/.highlight-card.md +36 -23
- package/src/components/ui/.honeypot-field.md +41 -0
- package/src/components/ui/.hover-dropdown.md +44 -31
- package/src/components/ui/.image-gallery-modal.md +28 -30
- package/src/components/ui/.image-uploader.md +39 -22
- package/src/components/ui/.index.md +33 -31
- package/src/components/ui/.info-card-row.md +50 -0
- package/src/components/ui/.info-card.md +27 -20
- package/src/components/ui/.info-row.md +30 -24
- package/src/components/ui/.info-section.md +63 -0
- package/src/components/ui/.input.md +29 -28
- package/src/components/ui/.label.md +34 -26
- package/src/components/ui/.markdown-editor.md +26 -25
- package/src/components/ui/.marquee-wall.md +64 -0
- package/src/components/ui/.menubar.md +50 -16
- package/src/components/ui/.modal-v2.md +41 -27
- package/src/components/ui/.modal.md +22 -19
- package/src/components/ui/.more-actions-menu.md +30 -24
- package/src/components/ui/.navigation-menu.md +40 -25
- package/src/components/ui/.organization-card.md +46 -27
- package/src/components/ui/.page-actions.md +55 -41
- package/src/components/ui/.page-loader.md +40 -23
- package/src/components/ui/.password-input.md +30 -0
- package/src/components/ui/.phone-input.md +20 -22
- package/src/components/ui/.portal-container.md +43 -0
- package/src/components/ui/.progress-bar.md +40 -27
- package/src/components/ui/.release-changelog-section.md +32 -26
- package/src/components/ui/.rich-markdown-renderer.md +45 -0
- package/src/components/ui/.scroll-fade.md +56 -0
- package/src/components/ui/.search-input.md +55 -37
- package/src/components/ui/.select.md +25 -26
- package/src/components/ui/.service-card.md +25 -19
- package/src/components/ui/.sheet.md +21 -21
- package/src/components/ui/.simple-markdown-renderer.md +36 -24
- package/src/components/ui/.slack-channel-chip.md +49 -0
- package/src/components/ui/.square-avatar.md +29 -26
- package/src/components/ui/.stacked-rows-panel.md +61 -0
- package/src/components/ui/.status-badge.md +30 -24
- package/src/components/ui/.status-indicator.md +35 -21
- package/src/components/ui/.tab-content.md +34 -22
- package/src/components/ui/.tab-navigation.md +40 -50
- package/src/components/ui/.tab-selector.md +48 -31
- package/src/components/ui/.tabs.md +34 -21
- package/src/components/ui/.tag-search-input.md +20 -20
- package/src/components/ui/.tag-select-dropdown.md +59 -0
- package/src/components/ui/.tag.md +25 -43
- package/src/components/ui/.tags-input.md +31 -31
- package/src/components/ui/.textarea.md +32 -30
- package/src/components/ui/.ticket-attachments-list.md +36 -29
- package/src/components/ui/.ticket-info-section.md +37 -42
- package/src/components/ui/.ticket-status-config-row.md +66 -0
- package/src/components/ui/.ticket-status-tag.md +39 -35
- package/src/components/ui/.toaster.md +21 -15
- package/src/components/ui/.toggle.md +38 -37
- package/src/components/ui/.tooltip.md +16 -13
- package/src/components/ui/button/.button-styles.md +17 -18
- package/src/components/ui/button/.button.md +30 -37
- package/src/components/ui/button/.split-button.md +46 -23
- package/src/components/ui/button/button-styles.ts +13 -0
- package/src/components/ui/button/button.tsx +5 -0
- package/src/components/ui/data-table/.data-table-body.md +50 -35
- package/src/components/ui/data-table/.data-table-empty.md +17 -33
- package/src/components/ui/data-table/.data-table-header.md +43 -40
- package/src/components/ui/data-table/.data-table-row.md +31 -31
- package/src/components/ui/data-table/.types.md +23 -28
- package/src/components/ui/file-manager/.file-manager-breadcrumb.md +16 -24
- package/src/components/ui/file-manager/.file-manager-empty.md +23 -15
- package/src/components/ui/file-manager/.file-manager-skeleton.md +34 -36
- package/src/components/ui/file-manager/.file-manager-table-row.md +29 -29
- package/src/components/ui/file-manager/.file-manager-table.md +39 -24
- package/src/components/ui/no-data/.index.md +22 -0
- package/src/components/ui/no-data/.no-data-actions.md +29 -0
- package/src/components/ui/no-data/.no-data-message.md +37 -0
- package/src/components/ui/no-data/.no-data-styles.md +39 -0
- package/src/components/ui/no-data/.no-data.md +59 -0
- package/src/components/ui/page-actions.tsx +2 -1
- package/src/components/ui/query-report-table/.query-report-table-header.md +15 -15
- package/src/components/ui/query-report-table/.query-report-table-row.md +16 -16
- package/src/components/ui/query-report-table/.query-report-table.md +39 -24
- package/src/components/ui/table/.table-column-filter-dropdown.md +15 -9
- package/src/components/ui/table/.table-description-cell.md +13 -12
- package/src/components/ui/table/.table-empty-state.md +19 -20
- package/src/components/ui/table/.table-row.md +30 -20
- package/src/components/ui/table/.table-skeleton.md +32 -27
- package/src/components/ui/table/.table-timestamp-cell.md +24 -23
- package/src/components/ui/table/.table.md +43 -30
- package/src/components/ui/table/.types.md +49 -45
- package/src/components/ui/table/.use-table-motion.md +45 -0
- package/src/contexts/.chat-runtime-context.md +55 -26
- package/src/contexts/.endpoints-runtime-context.md +40 -44
- package/src/embed-shims/.next-navigation.md +38 -31
- package/src/hooks/.api-hooks.md +28 -21
- package/src/hooks/.index.md +30 -25
- package/src/hooks/.use-authed-image-src.md +38 -0
- package/src/hooks/.use-contact-submission.md +35 -36
- package/src/hooks/.use-humanity-signals.md +47 -0
- package/src/hooks/.use-near-viewport.md +30 -30
- package/src/hooks/.use-og-placeholder-url.md +57 -0
- package/src/hooks/.use-scroll-to-hash.md +46 -0
- package/src/hooks/.use-self-fetch.md +52 -0
- package/src/hooks/state/.flatten-schema.md +37 -29
- package/src/hooks/ui/.index.md +37 -25
- package/src/hooks/ui/.use-auto-limit-tags.md +55 -38
- package/src/hooks/ui/.use-deferred-error.md +44 -0
- package/src/hooks/ui/.use-focus-trap.md +59 -0
- package/src/hooks/ui/.use-header-height.md +37 -0
- package/src/hooks/ui/.use-horizontal-scrollbar.md +25 -34
- package/src/hooks/ui/.use-marquee-engine.md +73 -0
- package/src/hooks/ui/.use-notification-permission.md +49 -0
- package/src/hooks/ui/.use-reset-on-page-hidden.md +40 -0
- package/src/hooks/ui/.use-suppress-clone-focus.md +41 -0
- package/src/nats/.index.md +39 -0
- package/src/nats/.nats-provider.md +46 -0
- package/src/nats/.nats.md +38 -28
- package/src/nats/.shared-connection.md +56 -0
- package/src/nats/.use-nats-subscription.md +57 -0
- package/src/stories/.ActionsMenu.stories.md +57 -0
- package/src/stories/.Alert.stories.md +46 -0
- package/src/stories/.AnnouncementBar.stories.md +59 -32
- package/src/stories/.AppLayoutDrawer.stories.md +60 -0
- package/src/stories/.AppLayoutSidebar.stories.md +45 -0
- package/src/stories/.ApprovalBatchMessage.stories.md +46 -0
- package/src/stories/.ApprovalBatchMessageClient.stories.md +55 -0
- package/src/stories/.ApprovalRequestMessage.stories.md +50 -0
- package/src/stories/.ApprovalRequestMessageClient.stories.md +41 -0
- package/src/stories/.BlogCard.stories.md +52 -0
- package/src/stories/.Board.stories.md +25 -20
- package/src/stories/.Button.stories.md +35 -40
- package/src/stories/.CampaignCardAdmin.stories.md +38 -0
- package/src/stories/.CardsStrip.stories.md +39 -0
- package/src/stories/.CaseStudyCard.stories.md +41 -0
- package/src/stories/.ChatContainer.stories.md +41 -0
- package/src/stories/.ChatInlineVideoPill.stories.md +36 -0
- package/src/stories/.ChatMessageEnhanced.stories.md +51 -0
- package/src/stories/.ChatMingoInfoCards.stories.md +30 -0
- package/src/stories/.ChatTicketList.stories.md +38 -22
- package/src/stories/.ChatTypingIndicator.stories.md +47 -0
- package/src/stories/.CheckboxBlock.stories.md +34 -35
- package/src/stories/.ContextCompactionDisplay.stories.md +28 -0
- package/src/stories/.CustomerInterviewCard.stories.md +36 -0
- package/src/stories/.DashboardInfoCard.stories.md +40 -33
- package/src/stories/.DataRoomDocCard.stories.md +42 -0
- package/src/stories/.DataTable.stories.md +37 -32
- package/src/stories/.DatePicker.stories.md +34 -30
- package/src/stories/.EmbeddableChat.stories.md +45 -28
- package/src/stories/.EmptyState.stories.md +55 -0
- package/src/stories/.ErrorMessageDisplay.stories.md +45 -0
- package/src/stories/.FilterModal.stories.md +28 -22
- package/src/stories/.GenericEntityCard.stories.md +50 -0
- package/src/stories/.GitHubActivityCard.stories.md +41 -0
- package/src/stories/.GuideWelcome.stories.md +38 -0
- package/src/stories/.Header.stories.md +32 -22
- package/src/stories/.HubspotTicketCard.stories.md +41 -0
- package/src/stories/.InfoCard.stories.md +37 -26
- package/src/stories/.InfoCardRow.stories.md +48 -0
- package/src/stories/.InfoSection.stories.md +55 -0
- package/src/stories/.Input.stories.md +45 -35
- package/src/stories/.InvestorUpdateCard.stories.md +41 -0
- package/src/stories/.MarqueeWall.stories.md +53 -0
- package/src/stories/.MingoAiButton.stories.md +31 -0
- package/src/stories/.MingoChatModals.stories.md +47 -0
- package/src/stories/.MingoInfoCard.stories.md +50 -0
- package/src/stories/.MingoOnboardingCard.stories.md +19 -19
- package/src/stories/.MingoWelcome.stories.md +41 -0
- package/src/stories/.MobileNavPanel.stories.md +52 -0
- package/src/stories/.Modal.stories.md +19 -16
- package/src/stories/.MspOrganizationCard.stories.md +45 -0
- package/src/stories/.NotificationDrawer.stories.md +39 -28
- package/src/stories/.OSTypeBadge.stories.md +34 -25
- package/src/stories/.OnboardingGuideCard.stories.md +41 -0
- package/src/stories/.PageActions.stories.md +21 -21
- package/src/stories/.PageContainer.stories.md +29 -24
- package/src/stories/.PageLayout.stories.md +18 -35
- package/src/stories/.PolicyConfigurationPanel.stories.md +58 -0
- package/src/stories/.ProductReleaseCard.stories.md +39 -0
- package/src/stories/.ProgramCard.stories.md +51 -0
- package/src/stories/.QuickActionChip.stories.md +59 -0
- package/src/stories/.QuickActionMarquee.stories.md +51 -0
- package/src/stories/.QuickActionWall.stories.md +58 -0
- package/src/stories/.RoadmapCard.stories.md +41 -0
- package/src/stories/.ShellTypeBadge.stories.md +42 -22
- package/src/stories/.SlackMessageCard.stories.md +42 -0
- package/src/stories/.SlashCommandSuggestions.stories.md +21 -31
- package/src/stories/.SplitButton.stories.md +23 -25
- package/src/stories/.StackedRowsPanel.stories.md +65 -0
- package/src/stories/.TabSelector.stories.md +26 -38
- package/src/stories/.Tag.stories.md +32 -27
- package/src/stories/.ThinkingDisplay.stories.md +43 -0
- package/src/stories/.TicketCard.stories.md +60 -0
- package/src/stories/.TicketInfoSection.stories.md +28 -20
- package/src/stories/.TimeTracker.stories.md +35 -0
- package/src/stories/.Toaster.stories.md +26 -20
- package/src/stories/.ToolBadge.stories.md +34 -24
- package/src/stories/.ToolExecutionDisplay.stories.md +22 -20
- package/src/stories/.ToolExecutionDisplayClient.stories.md +33 -0
- package/src/stories/.VideoBitesStrip.stories.md +37 -0
- package/src/stories/.WarningBlock.stories.md +51 -0
- package/src/stories/__fixtures__/.chat-card-decorator.md +39 -0
- package/src/stories/__fixtures__/.chat-cards.md +57 -0
- package/src/stories/auth/.CompleteAccount.stories.md +36 -0
- package/src/stories/auth/.CreateOrganization.stories.md +52 -0
- package/src/stories/auth/.InviteLinkInvalid.stories.md +21 -0
- package/src/stories/auth/.Login.stories.md +32 -0
- package/src/stories/auth/.OpenFrameSso.stories.md +58 -0
- package/src/stories/auth/.PasswordReset.stories.md +49 -0
- package/src/styles/ods-interaction-states.css +32 -0
- package/src/types/.announcement.md +67 -35
- package/src/types/.blog.md +44 -41
- package/src/types/.case-study.md +31 -17
- package/src/types/.content-ref.md +37 -0
- package/src/types/.customer-interview.md +38 -38
- package/src/types/.doc-source.md +87 -0
- package/src/types/.entity-author.md +53 -0
- package/src/types/.entity-platform.md +40 -0
- package/src/types/.index.md +23 -17
- package/src/types/.marketing.md +32 -35
- package/src/types/.navigation.md +31 -19
- package/src/types/.os.types.md +30 -31
- package/src/types/.permissions.md +49 -35
- package/src/types/.platform.md +44 -28
- package/src/types/.product-release.md +59 -42
- package/src/types/.shell.types.md +46 -30
- package/src/types/.supabase.md +43 -29
- package/src/types/.tool.types.md +43 -23
- package/src/types/.video-processing.md +40 -31
- package/src/types/supabase.ts +80 -0
- package/src/types/video-processing.ts +1 -0
- package/src/utils/.announcement-storage.md +49 -17
- package/src/utils/.app-config.md +22 -18
- package/src/utils/.brand-marks.md +46 -0
- package/src/utils/.cn.md +40 -29
- package/src/utils/.color-analysis.md +34 -25
- package/src/utils/.common.md +43 -23
- package/src/utils/.content-href.md +64 -0
- package/src/utils/.content-ref-groups.md +51 -0
- package/src/utils/.date-utils.md +46 -35
- package/src/utils/.doc-path-utils.md +38 -0
- package/src/utils/.doc-tree-nav.md +51 -0
- package/src/utils/.embed-authed-fetch.md +48 -32
- package/src/utils/.embed-content-fetch.md +36 -0
- package/src/utils/.embed-url-converters.md +52 -0
- package/src/utils/.extract-items.md +49 -0
- package/src/utils/.faq-anchor.md +48 -0
- package/src/utils/.format.md +73 -55
- package/src/utils/.humanity-signals.md +59 -0
- package/src/utils/.index.md +73 -31
- package/src/utils/.list-url.md +43 -0
- package/src/utils/.markdown-section-extractor.md +57 -0
- package/src/utils/.markdown-to-plain.md +51 -0
- package/src/utils/.media-carousel-utils-stub.md +42 -31
- package/src/utils/.ods-color-utils.md +84 -43
- package/src/utils/.og-placeholder.md +45 -0
- package/src/utils/.page-header-constants.md +26 -0
- package/src/utils/.platform-config.md +34 -34
- package/src/utils/.release-badge.md +47 -0
- package/src/utils/.release-cover.md +45 -0
- package/src/utils/.same-page-hash-nav.md +45 -0
- package/src/utils/.scroll-into-view.md +32 -25
- package/src/utils/.seo-description.md +37 -0
- package/src/utils/.seo-title.md +25 -0
- package/src/utils/.social-embed-cache.md +37 -0
- package/src/utils/.source-icons.md +30 -34
- package/src/utils/.suggestion-url.md +46 -0
- package/src/utils/.tool-utils.md +39 -24
- package/src/utils/.tree-builder.md +64 -0
- package/src/utils/.video-bite-id.md +42 -0
- package/src/utils/announcement-storage.ts +9 -18
- package/src/utils/dev-sections/.dev-section-param-keys.md +51 -0
- package/src/utils/dev-sections/.openframe-dev-sections.md +40 -28
- package/src/utils/dismiss-cookie.ts +55 -0
- package/src/utils/dismissal-storage.ts +38 -0
- package/src/utils/index.ts +3 -0
- package/dist/chunk-BBUEY73L.js.map +0 -1
- package/dist/chunk-G3UN2DXU.cjs.map +0 -1
- package/dist/chunk-OWMLWJQY.cjs.map +0 -1
- package/dist/chunk-SASR7SK5.js.map +0 -1
- package/src/components/chat/utils/.onboarding-icons.md +0 -28
- package/src/hooks/.use-og-placeholder.md +0 -51
- /package/dist/{chunk-MGKCS6KS.js.map → chunk-3WCARCI4.js.map} +0 -0
- /package/dist/{chunk-Y3Y2DLNO.js.map → chunk-6UGYBCEN.js.map} +0 -0
- /package/dist/{chunk-PSPWT2Q5.js.map → chunk-7LWXWXEY.js.map} +0 -0
- /package/dist/{chunk-VTSRDC4W.js.map → chunk-CKC3EAYT.js.map} +0 -0
- /package/dist/{chunk-ZRANZNEA.js.map → chunk-JJE5TUZK.js.map} +0 -0
- /package/dist/{chunk-66BNAFO6.js.map → chunk-JQIUBFHL.js.map} +0 -0
- /package/dist/{chunk-2DIOV7BR.js.map → chunk-UPN6EFOM.js.map} +0 -0
- /package/dist/{chunk-4SMRQ4SN.js.map → chunk-WBL5Y4PS.js.map} +0 -0
- /package/dist/{chunk-FP4H6Y5O.js.map → chunk-WPYPSIY2.js.map} +0 -0
- /package/dist/{chunk-R5WJJL4V.js.map → chunk-X5X43HFV.js.map} +0 -0
- /package/dist/{chunk-DEHZ5CTC.js.map → chunk-XTWKDMCG.js.map} +0 -0
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
<!-- source-hash: 2dd85c4676b5b84547c130a41316a737 -->
|
|
2
|
+
Shared Storybook utilities for rendering chat entity-card stories in an isolated, realistic chat-column context.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
- **`ChatColumnDecorator`** — React wrapper component that reproduces the assistant message column layout (constrained `max-w-[420px]`, ODS background, padding) so entity-card stories render at their real dimensions without the full chat runtime.
|
|
7
|
+
- **`makeAnchorProps`** — Factory that returns a `{ href, onClick }` pair satisfying card `*AnchorProps` interfaces. The `onClick` calls `preventDefault` to prevent iframe navigation in Storybook while preserving anchor semantics (hover, copy-link).
|
|
8
|
+
|
|
9
|
+
## Usage Example
|
|
10
|
+
|
|
11
|
+
```typescript
|
|
12
|
+
import { ChatColumnDecorator, makeAnchorProps } from './chat-card-decorator'
|
|
13
|
+
import type { Meta, StoryObj } from '@storybook/react'
|
|
14
|
+
import { TicketCard } from './ticket-card'
|
|
15
|
+
|
|
16
|
+
const meta: Meta<typeof TicketCard> = {
|
|
17
|
+
component: TicketCard,
|
|
18
|
+
decorators: [
|
|
19
|
+
(Story) => (
|
|
20
|
+
<ChatColumnDecorator>
|
|
21
|
+
<Story />
|
|
22
|
+
</ChatColumnDecorator>
|
|
23
|
+
),
|
|
24
|
+
],
|
|
25
|
+
}
|
|
26
|
+
export default meta
|
|
27
|
+
|
|
28
|
+
export const Default: StoryObj<typeof TicketCard> = {
|
|
29
|
+
args: {
|
|
30
|
+
title: 'Printer not working',
|
|
31
|
+
anchorProps: makeAnchorProps('https://app.example.com/tickets/42'),
|
|
32
|
+
},
|
|
33
|
+
}
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Notes
|
|
37
|
+
|
|
38
|
+
- `ChatColumnDecorator` is a layout-only wrapper; it carries no runtime dependencies, making it safe to import in any `.stories.tsx` file.
|
|
39
|
+
- `makeAnchorProps` is intentionally router-agnostic — swap `href` for any valid URL; the `onClick` stub is Storybook-only and should not be used in production card components.
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
<!-- source-hash: 3e21cadfb28786c642e3ad430a4c2445 -->
|
|
2
|
+
Shared Storybook fixtures that supply realistic mock data for every chat entity-card docType in `CHAT_CARD_REGISTRY`, enabling designers to preview cards without running the chat runtime.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
### Constants & Helpers
|
|
7
|
+
|
|
8
|
+
- **`NOW` / `DAY`** — Fixed timestamp anchor (`2026-05-28`) and millisecond day unit used to compute relative dates
|
|
9
|
+
- **`isoDaysAgo(days)`** — Utility that returns an ISO 8601 string N days before the anchor
|
|
10
|
+
- **`SAMPLE_AUTHOR`** — Reusable author object with name, avatar, and job title
|
|
11
|
+
|
|
12
|
+
### Exported Fixtures
|
|
13
|
+
|
|
14
|
+
| Export | Type | Description |
|
|
15
|
+
|---|---|---|
|
|
16
|
+
| `githubCommitItem` | `GitHubActivityItem` | Commit activity card fixture |
|
|
17
|
+
| `githubPullRequestItem` | `GitHubActivityItem` | Pull request card fixture |
|
|
18
|
+
| `githubPrReviewItem` | `GitHubActivityItem` | PR review card fixture |
|
|
19
|
+
| `slackMessageItem` | `SlackMessageItem` | Slack channel message fixture |
|
|
20
|
+
| `hubspotTicketItem` | `HubspotTicketItem` | High-priority HubSpot ticket fixture |
|
|
21
|
+
| `dataRoomDocItem` | `DataRoomDocCardItem` | Investor relations document fixture |
|
|
22
|
+
| `openframeDocsMarkdownItem` | `DataRoomDocCardItem` | Knowledge base article fixture |
|
|
23
|
+
| `financialKpiItem` | `GenericEntityCardItem` | ARR KPI card with badge and facts |
|
|
24
|
+
| `capTableItem` | `GenericEntityCardItem` | SAFE note cap table entry |
|
|
25
|
+
| `profitLossItem` | `GenericEntityCardItem` | Consolidated P&L card |
|
|
26
|
+
| `balanceSheetItem` | `GenericEntityCardItem` | Month-end balance sheet card |
|
|
27
|
+
| `cashFlowItem` | `GenericEntityCardItem` | Operating cash flow card |
|
|
28
|
+
| `blogPostSummary` | `BlogPostSummary` | Featured engineering blog post |
|
|
29
|
+
| `caseStudy` | `CaseStudy` | MSP customer success story with relations |
|
|
30
|
+
| `customerInterview` | `CustomerInterview` | Video interview with transcript fields |
|
|
31
|
+
|
|
32
|
+
## Usage Example
|
|
33
|
+
|
|
34
|
+
```typescript
|
|
35
|
+
import {
|
|
36
|
+
githubCommitItem,
|
|
37
|
+
hubspotTicketItem,
|
|
38
|
+
financialKpiItem,
|
|
39
|
+
} from '@/stories/fixtures/chat-cards'
|
|
40
|
+
|
|
41
|
+
// Use directly in a Storybook story
|
|
42
|
+
export const HubSpotTicket: Story = {
|
|
43
|
+
args: {
|
|
44
|
+
item: hubspotTicketItem,
|
|
45
|
+
href: hubspotTicketItem.url,
|
|
46
|
+
},
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
// Or compose multiple fixtures into a feed story
|
|
50
|
+
export const MixedFeed: Story = {
|
|
51
|
+
args: {
|
|
52
|
+
items: [githubCommitItem, hubspotTicketItem, financialKpiItem],
|
|
53
|
+
},
|
|
54
|
+
}
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
> **Note:** Server-only fields (status timestamps, AI processing flags, view counts) are populated with type-correct placeholder values. The card components do not read these at render time, but the wire types require them for TypeScript compliance.
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
<!-- source-hash: b6a4a529a05f32c27061254e5b7c0498 -->
|
|
2
|
+
Storybook stories for the `CompleteAccountForm` component, covering two authentication flows — Sign Up and Accept Invitation — in both empty and pre-filled states.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
- **`useAccountFields`** — Shared controlled-input hook managing `firstName`, `lastName`, `password`, and `confirmPassword` state, with built-in validation (min 8-char password, fields match and non-empty).
|
|
7
|
+
- **`SignUpPage`** — Renders `CompleteAccountForm` inside `AuthShell` with a `TabSelector` (Sign Up / Login tabs) and a back action.
|
|
8
|
+
- **`InvitationPage`** — Renders `CompleteAccountForm` inside `AuthShell` with a `BackToLoginLink` footer, custom title/subtitle, and no tab navigation.
|
|
9
|
+
- **Exported Stories** — `SignUpEmpty`, `SignUpFilled`, `InvitationEmpty`, `InvitationFilled`.
|
|
10
|
+
|
|
11
|
+
## Usage Example
|
|
12
|
+
|
|
13
|
+
```typescript
|
|
14
|
+
// Render the Sign Up variant with pre-filled fields
|
|
15
|
+
export const SignUpFilled: Story = {
|
|
16
|
+
render: () => <SignUpPage filled />,
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
// Render the Invitation variant with empty fields
|
|
20
|
+
export const InvitationEmpty: Story = {
|
|
21
|
+
render: () => <InvitationPage />,
|
|
22
|
+
}
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## Story Variants
|
|
26
|
+
|
|
27
|
+
| Story | Flow | State |
|
|
28
|
+
|---|---|---|
|
|
29
|
+
| `SignUpEmpty` | Sign Up (with tabs) | Empty fields |
|
|
30
|
+
| `SignUpFilled` | Sign Up (with tabs) | Pre-filled (Ada Lovelace) |
|
|
31
|
+
| `InvitationEmpty` | Accept Invitation | Empty fields |
|
|
32
|
+
| `InvitationFilled` | Accept Invitation | Pre-filled |
|
|
33
|
+
|
|
34
|
+
Both flows share the `SSO_PROVIDERS` constant (`['google', 'microsoft']`) and the `useAccountFields` hook. `submitDisabled` is derived automatically — enabled only when all fields are valid.
|
|
35
|
+
|
|
36
|
+
**Source:** [`CompleteAccount.stories.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/CompleteAccount.stories.tsx)
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
<!-- source-hash: bbc2c85f9c89b1adef88e9610f8e5f3b -->
|
|
2
|
+
Storybook stories for the `CreateOrganizationForm` auth component, covering empty, filled, error, and SSO states within a full-page `AuthShell` layout.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
| Export | Type | Description |
|
|
7
|
+
|---|---|---|
|
|
8
|
+
| `Empty` | `Story` | Default state with empty fields, terms unchecked, and submit disabled |
|
|
9
|
+
| `Filled` | `Story` | Pre-filled valid input with terms accepted and submit enabled |
|
|
10
|
+
| `ErrorState` | `Story` | Validation error messages on email and organization name fields |
|
|
11
|
+
| `SSO` | `Story` | SSO provider buttons replace standard submit; fields are disabled |
|
|
12
|
+
| `CreateOrganizationPage` | Internal helper | Controlled wrapper composing `AuthShell`, `TabSelector`, and `CreateOrganizationForm` |
|
|
13
|
+
|
|
14
|
+
## Usage Example
|
|
15
|
+
|
|
16
|
+
```typescript
|
|
17
|
+
// Render the Filled story directly in another Storybook file
|
|
18
|
+
import { Filled } from './CreateOrganization.stories'
|
|
19
|
+
|
|
20
|
+
export const MyStory = {
|
|
21
|
+
render: () => <Filled.render />,
|
|
22
|
+
}
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
```typescript
|
|
26
|
+
// Replicate the SSO story setup in a test or custom harness
|
|
27
|
+
import { CreateOrganizationForm, AuthShell } from '../../components/features/auth'
|
|
28
|
+
import type { AuthSsoProvider } from '../../components/features/auth'
|
|
29
|
+
|
|
30
|
+
const providers: AuthSsoProvider[] = ['openframe', 'google', 'microsoft']
|
|
31
|
+
|
|
32
|
+
<AuthShell tabs={<TabSelector ... />}>
|
|
33
|
+
<CreateOrganizationForm
|
|
34
|
+
email="user@example.com"
|
|
35
|
+
organizationName="Acme"
|
|
36
|
+
domain="acme"
|
|
37
|
+
domainSuffix=".openframe.ai"
|
|
38
|
+
ssoProviders={providers}
|
|
39
|
+
termsUrl="/terms"
|
|
40
|
+
privacyPolicyUrl="/privacy"
|
|
41
|
+
onSubmit={() => {}}
|
|
42
|
+
/>
|
|
43
|
+
</AuthShell>
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## Notes
|
|
47
|
+
|
|
48
|
+
- Stories are rendered inside `AuthShell` with `layout: 'fullscreen'` to accurately reflect the two-column desktop / stacked mobile responsive layout. Use the Storybook viewport toolbar to verify breakpoints.
|
|
49
|
+
- Submit is gated on all three fields being non-empty **and** `agreedToTerms` being `true` — reflected in the `Empty` vs `Filled` stories.
|
|
50
|
+
- The `Login` tab renders a placeholder panel; its implementation is deferred to a later step.
|
|
51
|
+
|
|
52
|
+
**Source:** [`CreateOrganization.stories.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/CreateOrganization.stories.tsx)
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
<!-- source-hash: 5d2ca564a870738800ac02bcfae3e056 -->
|
|
2
|
+
Storybook stories file for the `InviteLinkInvalidModal` component, rendering the UI state displayed when an invitation link is expired or invalid.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
- **`meta`** — Storybook metadata configuring the story under the `Auth/Invite Link Invalid` title with fullscreen layout and autodocs enabled
|
|
7
|
+
- **`Default`** — Single story rendering `InviteLinkInvalidModal` with a no-op `onBackToLogin` callback
|
|
8
|
+
|
|
9
|
+
## Usage Example
|
|
10
|
+
|
|
11
|
+
```typescript
|
|
12
|
+
// Render the modal in isolation with a real navigation handler
|
|
13
|
+
import { InviteLinkInvalidModal } from '../../components/features/auth'
|
|
14
|
+
|
|
15
|
+
<InviteLinkInvalidModal onBackToLogin={() => router.push('/login')} />
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Notes
|
|
19
|
+
|
|
20
|
+
- Both the close (`X`) button and the primary action button invoke `onBackToLogin`, redirecting users back to the login screen
|
|
21
|
+
- Source: [`InviteLinkInvalid.stories.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/InviteLinkInvalid.stories.tsx)
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
<!-- source-hash: 14bde4c0074b074c3e3b634f7daf4229 -->
|
|
2
|
+
Storybook stories for the `LoginForm` authentication component, demonstrating three states — empty, filled, and SSO — rendered inside a full-page `AuthShell` with tab navigation.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
| Export | Type | Description |
|
|
7
|
+
|--------|------|-------------|
|
|
8
|
+
| `Empty` | `Story` | Login form with no email input; submit button disabled |
|
|
9
|
+
| `Filled` | `Story` | Login form with a valid email; Continue button enabled |
|
|
10
|
+
| `SSO` | `Story` | Login form with SSO provider buttons replacing the submit action |
|
|
11
|
+
| `LoginPage` | Helper component | Wraps `LoginForm` in `AuthShell` with `TabSelector` (Sign Up / Login tabs), managing local email and tab state |
|
|
12
|
+
|
|
13
|
+
## Usage Example
|
|
14
|
+
|
|
15
|
+
```typescript
|
|
16
|
+
// Render the Filled story manually in a test or custom harness
|
|
17
|
+
import { Filled } from './Login.stories'
|
|
18
|
+
|
|
19
|
+
// All three stories accept no args; state is managed internally
|
|
20
|
+
<Filled.render />
|
|
21
|
+
|
|
22
|
+
// Configure SSO providers directly via LoginPage internals
|
|
23
|
+
const SSO_PROVIDERS: AuthSsoProvider[] = ['openframe', 'google', 'microsoft']
|
|
24
|
+
// Passed as ssoProviders prop — replaces submit button with provider buttons
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## Notes
|
|
28
|
+
|
|
29
|
+
- Stories are `fullscreen` layout — use the Storybook **viewport toolbar** to verify responsive breakpoints (desktop two-column, tablet/mobile stacked).
|
|
30
|
+
- `LoginPage` is a controlled wrapper: `email` and `tab` state live locally via `useState`; `onSubmit` and `onForgotPassword` are no-ops.
|
|
31
|
+
- The Sign Up tab renders a placeholder directing users to the `Auth/Create Organization` story group.
|
|
32
|
+
- Source: [`Login.stories.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/Login.stories.tsx)
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
<!-- source-hash: 2f6693db66b0dc2f845ae8bdd0016e75 -->
|
|
2
|
+
Storybook stories for the OpenFrame SSO authentication screens, showcasing both Login and Sign Up flows within the `SsoAuthShell` layout using controlled, interactive form components.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
| Export | Type | Description |
|
|
7
|
+
|---|---|---|
|
|
8
|
+
| `LoginEmpty` | `Story` | Login form with empty fields; submit disabled |
|
|
9
|
+
| `LoginFilled` | `Story` | Login form pre-filled with email and password; submit enabled |
|
|
10
|
+
| `SignUpEmpty` | `Story` | Sign Up form with empty fields; submit disabled |
|
|
11
|
+
| `SignUpFilled` | `Story` | Sign Up form pre-filled with all valid fields; submit enabled |
|
|
12
|
+
| `SsoLoginPage` | Helper component | Controlled wrapper for `OpenFrameSsoLoginForm` inside `SsoAuthShell` |
|
|
13
|
+
| `SsoSignUpPage` | Helper component | Controlled wrapper for `OpenFrameSsoSignUpForm` inside `SsoAuthShell` |
|
|
14
|
+
|
|
15
|
+
## Usage Example
|
|
16
|
+
|
|
17
|
+
```typescript
|
|
18
|
+
// Render the filled login story directly in Storybook
|
|
19
|
+
import { LoginFilled } from './OpenFrameSso.stories'
|
|
20
|
+
|
|
21
|
+
// Or compose the controlled helper in your own tests/previews
|
|
22
|
+
import { useState } from 'react'
|
|
23
|
+
import { OpenFrameSsoLoginForm, SsoAuthShell } from '../../components/features/auth'
|
|
24
|
+
|
|
25
|
+
function MyLoginPreview() {
|
|
26
|
+
const [email, setEmail] = useState('')
|
|
27
|
+
const [password, setPassword] = useState('')
|
|
28
|
+
|
|
29
|
+
return (
|
|
30
|
+
<SsoAuthShell>
|
|
31
|
+
<OpenFrameSsoLoginForm
|
|
32
|
+
email={email}
|
|
33
|
+
password={password}
|
|
34
|
+
onEmailChange={setEmail}
|
|
35
|
+
onPasswordChange={setPassword}
|
|
36
|
+
onSubmit={() => {}}
|
|
37
|
+
onForgotPassword={() => {}}
|
|
38
|
+
submitDisabled={!email.trim() || !password}
|
|
39
|
+
/>
|
|
40
|
+
</SsoAuthShell>
|
|
41
|
+
)
|
|
42
|
+
}
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## Story Validation Logic
|
|
46
|
+
|
|
47
|
+
Both helper components derive `submitDisabled` locally — no external state management required:
|
|
48
|
+
|
|
49
|
+
- **Login:** enabled when `email` is non-empty and `password.length > 0`
|
|
50
|
+
- **Sign Up:** enabled when all five fields are filled, `password.length >= 8`, and `password === confirmPassword`
|
|
51
|
+
|
|
52
|
+
## Notes
|
|
53
|
+
|
|
54
|
+
- All `onSubmit` and `onForgotPassword` handlers are no-ops (`() => {}`) — stories are purely presentational
|
|
55
|
+
- `SsoAuthShell` provides the full-screen centered layout: logo top, card centered, "Powered by Flamingo" footer
|
|
56
|
+
- Stories are tagged `autodocs` for automatic Storybook documentation generation
|
|
57
|
+
|
|
58
|
+
**Source:** [`OpenFrameSso.stories.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/OpenFrameSso.stories.tsx)
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
<!-- source-hash: dc8f807b21dfb0fd1ce3b5c2fc8184f5 -->
|
|
2
|
+
Storybook stories for the `PasswordResetForm` component, demonstrating the full-page password reset flow inside `AuthShell` with two controlled states: empty fields and pre-filled matching passwords.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
- **`PasswordResetPage`** — Internal render helper that wires up controlled state (`password`, `confirmPassword`) and derives `isValid` / inline error logic for the stories
|
|
7
|
+
- **`Empty`** — Story showing the form with empty fields and submit disabled
|
|
8
|
+
- **`Filled`** — Story showing the form with matching passwords pre-populated and submit enabled
|
|
9
|
+
|
|
10
|
+
## Usage Example
|
|
11
|
+
|
|
12
|
+
```typescript
|
|
13
|
+
// Minimal controlled usage matching the story pattern
|
|
14
|
+
import { AuthShell, BackToLoginLink, PasswordResetForm } from '../../components/features/auth'
|
|
15
|
+
import { useState } from 'react'
|
|
16
|
+
|
|
17
|
+
function PasswordResetPage() {
|
|
18
|
+
const [password, setPassword] = useState('')
|
|
19
|
+
const [confirmPassword, setConfirmPassword] = useState('')
|
|
20
|
+
const isValid = password.length >= 8 && password === confirmPassword
|
|
21
|
+
|
|
22
|
+
return (
|
|
23
|
+
<AuthShell footer={<BackToLoginLink onClick={() => {}} />}>
|
|
24
|
+
<PasswordResetForm
|
|
25
|
+
password={password}
|
|
26
|
+
confirmPassword={confirmPassword}
|
|
27
|
+
onPasswordChange={setPassword}
|
|
28
|
+
onConfirmPasswordChange={setConfirmPassword}
|
|
29
|
+
onSubmit={() => {}}
|
|
30
|
+
onCancel={() => {}}
|
|
31
|
+
onBackToLogin={() => {}}
|
|
32
|
+
submitDisabled={!isValid}
|
|
33
|
+
errors={{
|
|
34
|
+
confirmPassword:
|
|
35
|
+
confirmPassword && password !== confirmPassword
|
|
36
|
+
? 'Passwords do not match'
|
|
37
|
+
: undefined,
|
|
38
|
+
}}
|
|
39
|
+
/>
|
|
40
|
+
</AuthShell>
|
|
41
|
+
)
|
|
42
|
+
}
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
**Validation logic:**
|
|
46
|
+
- Submit is enabled only when `password.length >= 8` and both fields match
|
|
47
|
+
- `confirmPassword` error is shown only after the user has typed in the confirm field and it diverges from `password`
|
|
48
|
+
|
|
49
|
+
**Source:** [`PasswordReset.stories.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/PasswordReset.stories.tsx)
|
|
@@ -1,5 +1,37 @@
|
|
|
1
1
|
/* Open Design System – Interaction Animations */
|
|
2
2
|
|
|
3
|
+
/* ---------------------------------------------------------------------------
|
|
4
|
+
Pointer affordance (SSOT)
|
|
5
|
+
|
|
6
|
+
A native <button> resolves to `cursor: default`, and Tailwind's preflight
|
|
7
|
+
does not override it. Every clickable surface in the system was therefore
|
|
8
|
+
relying on an ad-hoc `cursor-pointer` class, which drifted: DS Buttons had
|
|
9
|
+
it, raw <button> cards/chips/marquee cells did not — so identical-looking
|
|
10
|
+
cards felt dead while <a>-based ones (browser default: pointer) did not.
|
|
11
|
+
|
|
12
|
+
One base rule instead of N call sites. Applies to every marquee, chip, card
|
|
13
|
+
hit layer and any future control, including ones not yet written.
|
|
14
|
+
|
|
15
|
+
Wrapped in :where() so the rule carries ZERO specificity — an element-level
|
|
16
|
+
selector would otherwise beat any single Tailwind `cursor-*` utility and
|
|
17
|
+
silently break intentional ones (`cursor-grab` drag handles, `cursor-default`
|
|
18
|
+
on an active tab) across all 9 platforms.
|
|
19
|
+
--------------------------------------------------------------------------- */
|
|
20
|
+
:where(button:not(:disabled):not([aria-disabled='true'])),
|
|
21
|
+
:where([role='button']:not([aria-disabled='true'])),
|
|
22
|
+
:where(summary) {
|
|
23
|
+
cursor: pointer;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/* Deliberately NOT `label[for]`: most labels point at text inputs, where a
|
|
27
|
+
pointer cursor promises a click target that isn't one. Checkbox/radio labels
|
|
28
|
+
opt in explicitly at their call site. */
|
|
29
|
+
|
|
30
|
+
:where(button:disabled),
|
|
31
|
+
:where([aria-disabled='true']) {
|
|
32
|
+
cursor: not-allowed;
|
|
33
|
+
}
|
|
34
|
+
|
|
3
35
|
/* Typing indicator cursor pulse */
|
|
4
36
|
@keyframes pulse-cursor {
|
|
5
37
|
0%, 100% { opacity: 1; }
|
|
@@ -1,51 +1,83 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
TypeScript
|
|
1
|
+
<!-- source-hash: fc87f22902c4f5a3379665b2e552d3b3 -->
|
|
2
|
+
Defines TypeScript types, interfaces, and constants for the OpenFrame announcement system, covering database models, API request/response shapes, form data, component props, and utility types.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
### Core
|
|
7
|
-
- **`Announcement`** - Main announcement entity; platform targeting via hydrated `announcement_platforms?: EntityPlatformAssoc[]` (no singular platform_id/platform)
|
|
8
|
-
- **`AnnouncementAsset`** - File attachments linked to announcements (images, documents, etc.)
|
|
6
|
+
### Core Interfaces
|
|
9
7
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
8
|
+
| Interface | Purpose |
|
|
9
|
+
|---|---|
|
|
10
|
+
| `Announcement` | Full database model including CTA fields, icon props, and hydrated platform associations |
|
|
11
|
+
| `AnnouncementAsset` | File attachment metadata linked to an announcement |
|
|
12
|
+
| `AnnouncementResponse` | Wire shape for `GET /api/announcements/active` — nullable envelope |
|
|
13
|
+
| `AnnouncementListResponse` | Paginated list response with optional platform/active filters |
|
|
14
14
|
|
|
15
|
-
###
|
|
16
|
-
- **`AnnouncementFormData`** - Form-specific data structure with file uploads and JSON string fields
|
|
17
|
-
- **`AnnouncementBarProps`** / **`AnnouncementFormProps`** / **`AnnouncementListProps`** - React component prop interfaces
|
|
15
|
+
### CRUD Data Shapes
|
|
18
16
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
17
|
+
| Interface | Purpose |
|
|
18
|
+
|---|---|
|
|
19
|
+
| `CreateAnnouncementData` | Payload for creating a new announcement |
|
|
20
|
+
| `UpdateAnnouncementData` | Partial payload for updating an existing announcement |
|
|
21
|
+
| `AnnouncementFormData` | Form state, including `icon_props` and `cta_icon_props` as JSON strings |
|
|
22
|
+
| `GetAnnouncementsOptions` | Query parameters for listing announcements |
|
|
23
|
+
|
|
24
|
+
### Component Props
|
|
25
|
+
|
|
26
|
+
| Interface | Purpose |
|
|
27
|
+
|---|---|
|
|
28
|
+
| `AnnouncementBarProps` | Controls SSR seeding, preview mode, dismissibility, and CSS class |
|
|
29
|
+
| `AnnouncementFormProps` | Admin create/edit form callbacks and available icon list |
|
|
30
|
+
| `AnnouncementListProps` | List view with edit, delete, and toggle-active handlers |
|
|
31
|
+
|
|
32
|
+
### Constants
|
|
33
|
+
|
|
34
|
+
- **`ANNOUNCEMENT_CTA_DEFAULTS`** — Default CTA button colors (`#1A1A1A` background, `#FAFAFA` text), shared between the DAL and admin form.
|
|
35
|
+
- **`AVAILABLE_SVG_ICONS`** — Registry of supported icon names (OpenFrame/platform logos + Lucide icons); `component` is resolved at runtime.
|
|
22
36
|
|
|
23
37
|
## Usage Example
|
|
24
38
|
|
|
25
39
|
```typescript
|
|
26
|
-
|
|
40
|
+
import type {
|
|
41
|
+
Announcement,
|
|
42
|
+
CreateAnnouncementData,
|
|
43
|
+
AnnouncementBarProps,
|
|
44
|
+
AnnouncementResponse,
|
|
45
|
+
} from './announcement';
|
|
46
|
+
import { ANNOUNCEMENT_CTA_DEFAULTS } from './announcement';
|
|
47
|
+
|
|
48
|
+
// Creating an announcement payload
|
|
27
49
|
const newAnnouncement: CreateAnnouncementData = {
|
|
28
|
-
title:
|
|
29
|
-
description:
|
|
30
|
-
background_color:
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
platforms: ["openframe-platform-id"],
|
|
50
|
+
title: 'New Feature Released',
|
|
51
|
+
description: 'Check out the latest OpenFrame update.',
|
|
52
|
+
background_color: '#1A1A1A',
|
|
53
|
+
icon_name: 'rocket',
|
|
54
|
+
platforms: ['platform-uuid-1', 'platform-uuid-2'],
|
|
34
55
|
is_active: true,
|
|
35
56
|
cta_enabled: true,
|
|
36
|
-
cta_text:
|
|
37
|
-
cta_url:
|
|
38
|
-
cta_target:
|
|
39
|
-
|
|
57
|
+
cta_text: 'Learn More',
|
|
58
|
+
cta_url: 'https://openframe.ai/changelog',
|
|
59
|
+
cta_target: '_blank',
|
|
60
|
+
cta_button_background_color: ANNOUNCEMENT_CTA_DEFAULTS.background,
|
|
61
|
+
cta_button_text_color: ANNOUNCEMENT_CTA_DEFAULTS.text,
|
|
62
|
+
created_by: 'user-uuid',
|
|
40
63
|
};
|
|
41
64
|
|
|
42
|
-
//
|
|
43
|
-
const
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
65
|
+
// Consuming the active announcement API response
|
|
66
|
+
const response: AnnouncementResponse = await fetch('/api/announcements/active')
|
|
67
|
+
.then(r => r.json());
|
|
68
|
+
|
|
69
|
+
if (response.announcement) {
|
|
70
|
+
console.log(response.announcement.title);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
// AnnouncementBar in SSR mode — null signals "nothing to show"
|
|
74
|
+
const barProps: AnnouncementBarProps = {
|
|
75
|
+
initialAnnouncement: response.announcement,
|
|
76
|
+
dismissible: true,
|
|
77
|
+
previewMode: false,
|
|
50
78
|
};
|
|
51
|
-
```
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
## Source
|
|
82
|
+
|
|
83
|
+
[`announcement.ts`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/announcement.ts)
|
package/src/types/.blog.md
CHANGED
|
@@ -1,21 +1,36 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
Type definitions for the
|
|
1
|
+
<!-- source-hash: bdd6fb9c095ed663f507ab9051e3c82b -->
|
|
2
|
+
Type definitions for the blog domain, covering database models, API contracts, form data, query options, SEO analysis, and UI filtering structures for blog posts.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
6
|
+
### Core Types
|
|
7
|
+
- **`BlogStatus`** — Union literal type for post lifecycle states: `'draft'`, `'ai_drafted'`, `'published'`, `'ai_published'`, `'scheduled'`, `'archived'`
|
|
8
|
+
- **`Platform`** — String alias for platform identifiers (fetched dynamically from the database)
|
|
9
|
+
|
|
10
|
+
### Database Models
|
|
11
|
+
- **`BlogPost`** — Full post shape including raw API response fields (`profiles`, `blog_post_platforms`, `blog_post_tags`) and normalized client-side relationships (`author`, `categories`, `tags`)
|
|
12
|
+
- **`BlogAuthor`** — Author shape for blog posts; distinct from shared `EntityAuthor`; includes optional `slug` and `linkedinUrl` for SEO/schema usage
|
|
13
|
+
- **`BlogPostPlatform`** — Aliased to `EntityPlatformAssoc` from `entity-platform.ts`; replaces the legacy flat junction shape
|
|
14
|
+
- **`TagAssoc`** — Flat unified tag association shape; replaces the legacy nested `{ blog_tags: {...} }` pattern
|
|
15
|
+
- **`BlogMediaAsset`**, **`BlogCategory`**, **`BlogTag`** — Supporting entity models
|
|
16
|
+
|
|
17
|
+
### Form & Mutation Types
|
|
18
|
+
- **`CreateBlogPostData`** — Required fields for creating a post, including `platforms`, `categories`, and `tags` arrays
|
|
19
|
+
- **`UpdateBlogPostData`** — Partial version of create data for PATCH-style updates
|
|
20
|
+
|
|
21
|
+
### Query & Stats
|
|
22
|
+
- **`GetBlogPostsOptions`** — Filtering, pagination, and sorting parameters for list queries
|
|
23
|
+
- **`BlogPostStats`** — Dashboard aggregate counts and `posts_by_platform` breakdown
|
|
24
|
+
- **`BlogPagination`** / **`BlogPostSummary`** — Public-facing list and summary shapes
|
|
25
|
+
|
|
26
|
+
### SEO
|
|
27
|
+
- **`SEOAnalysisResult`** — Scored analysis output with `suggestions`, `errors`, and `warnings`
|
|
28
|
+
- **`SEOAnalysisOptions`** — Optional keywords and flags for analysis configuration
|
|
29
|
+
- **`BlogSEOAnalytics`** — Database row shape for persisted SEO analysis results
|
|
30
|
+
|
|
31
|
+
### UI / Filtering
|
|
32
|
+
- **`BlogFilterSidebarProps`**, **`BlogFilters`**, **`BlogFilterOption`** — Props and data shapes for the filter sidebar component
|
|
33
|
+
- **`BlogCategoryForSidebar`** — Adapter type bridging `BlogCategory` to the `CategorySidebar` interface
|
|
19
34
|
|
|
20
35
|
## Usage Example
|
|
21
36
|
|
|
@@ -24,42 +39,30 @@ import type {
|
|
|
24
39
|
BlogPost,
|
|
25
40
|
CreateBlogPostData,
|
|
26
41
|
GetBlogPostsOptions,
|
|
27
|
-
|
|
28
|
-
} from './blog'
|
|
42
|
+
BlogStatus,
|
|
43
|
+
} from './blog';
|
|
29
44
|
|
|
30
|
-
//
|
|
45
|
+
// Querying posts with filters
|
|
31
46
|
const options: GetBlogPostsOptions = {
|
|
32
|
-
platform: '
|
|
47
|
+
platform: 'openframe',
|
|
33
48
|
status: 'published',
|
|
34
49
|
page: 1,
|
|
35
50
|
pageSize: 10,
|
|
36
51
|
sortBy: 'published_at',
|
|
37
52
|
sortOrder: 'desc',
|
|
38
|
-
|
|
39
|
-
}
|
|
53
|
+
};
|
|
40
54
|
|
|
41
|
-
//
|
|
55
|
+
// Creating a new post
|
|
42
56
|
const newPost: CreateBlogPostData = {
|
|
43
57
|
title: 'Getting Started with OpenFrame',
|
|
44
58
|
slug: 'getting-started-openframe',
|
|
45
59
|
content: '...',
|
|
46
|
-
author_id: 'user-
|
|
47
|
-
status: 'draft',
|
|
48
|
-
platforms: ['
|
|
49
|
-
categories: [
|
|
50
|
-
tags: [
|
|
51
|
-
}
|
|
60
|
+
author_id: 'user-uuid',
|
|
61
|
+
status: 'draft' as BlogStatus,
|
|
62
|
+
platforms: ['platform-uuid-1'],
|
|
63
|
+
categories: [3],
|
|
64
|
+
tags: [7, 12],
|
|
65
|
+
};
|
|
66
|
+
```
|
|
52
67
|
|
|
53
|
-
|
|
54
|
-
const seo: SEOAnalysisResult = {
|
|
55
|
-
overall_score: 82,
|
|
56
|
-
title_score: 90,
|
|
57
|
-
meta_description_score: 75,
|
|
58
|
-
content_score: 85,
|
|
59
|
-
readability_score: 78,
|
|
60
|
-
keyword_density: { 'openframe': 0.03 },
|
|
61
|
-
suggestions: ['Add more internal links'],
|
|
62
|
-
errors: [],
|
|
63
|
-
warnings: ['Meta description slightly short']
|
|
64
|
-
}
|
|
65
|
-
```
|
|
68
|
+
> **Source:** [`blog.ts`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/blog.ts)
|