@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
|
@@ -65,7 +65,11 @@ export * from './video-ratio-tabs'
|
|
|
65
65
|
export * from './video-bites-shared'
|
|
66
66
|
export * from './video-bites-strip'
|
|
67
67
|
export * from './video-bites-display'
|
|
68
|
+
export * from './card-hit-layer'
|
|
69
|
+
export * from './video-hover-preview'
|
|
68
70
|
export * from './entity-video-section'
|
|
71
|
+
export * from './floating-walkthrough-video'
|
|
72
|
+
export * from './use-walkthrough-video'
|
|
69
73
|
export * from './use-video-warmup'
|
|
70
74
|
export * from './captions-url'
|
|
71
75
|
export * from './video-source-selector'
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
<!-- source-hash: df0c665817142753be2e5e9762b91c23 -->
|
|
2
|
+
A React notification tile component for displaying and acting on approval requests, supporting optimistic UI updates, collapsible command previews, and auto-dismiss behavior.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
### `ApprovalRequestNotificationTileProps`
|
|
7
|
+
| Prop | Type | Description |
|
|
8
|
+
|---|---|---|
|
|
9
|
+
| `notification` | `Notification` | Source notification data |
|
|
10
|
+
| `onApprove` | `(id: string) => void \| Promise<void>` | Callback fired on approval |
|
|
11
|
+
| `onReject` | `(id: string) => void \| Promise<void>` | Callback fired on rejection |
|
|
12
|
+
| `onComplete` | `(id: string) => void` | Called after successful resolution |
|
|
13
|
+
| `onSettle` | `(id: string) => void` | Optional settle lifecycle hook |
|
|
14
|
+
| `liveDurationMs` | `number` | Auto-dismiss duration for live tiles |
|
|
15
|
+
| `defaultExpanded` | `boolean` | Whether the command section starts open |
|
|
16
|
+
|
|
17
|
+
### Internal State
|
|
18
|
+
- **`localStatus`** — Optimistic `ChatApprovalStatus` set immediately on click; rolls back on request failure; defers to resolved backend status once available.
|
|
19
|
+
- **`pinned`** — Prevents auto-dismiss when the user expands the command section mid-read.
|
|
20
|
+
- **`processing`** — Disables action buttons and pauses the tile timer during async resolution.
|
|
21
|
+
|
|
22
|
+
### `resolve()`
|
|
23
|
+
Internal async handler that applies optimistic status, calls the appropriate action callback, rolls back on error, and calls `onComplete` only after confirmed server-side success.
|
|
24
|
+
|
|
25
|
+
## Usage Example
|
|
26
|
+
|
|
27
|
+
```typescript
|
|
28
|
+
import { ApprovalRequestNotificationTile } from './approval-request-notification-tile'
|
|
29
|
+
|
|
30
|
+
<ApprovalRequestNotificationTile
|
|
31
|
+
notification={notification}
|
|
32
|
+
liveDurationMs={8000}
|
|
33
|
+
defaultExpanded={false}
|
|
34
|
+
onApprove={async (id) => {
|
|
35
|
+
await api.approvals.approve(id)
|
|
36
|
+
}}
|
|
37
|
+
onReject={async (id) => {
|
|
38
|
+
await api.approvals.reject(id)
|
|
39
|
+
}}
|
|
40
|
+
onComplete={(id) => dismissNotification(id)}
|
|
41
|
+
onSettle={(id) => markSeen(id)}
|
|
42
|
+
/>
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
**Source:** [`approval-request-notification-tile.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/approval-request-notification-tile.tsx)
|
|
@@ -1,18 +1,28 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
Public API barrel file for the notifications module, re-exporting all components, hooks,
|
|
1
|
+
<!-- source-hash: ea69954a9208818f5e9fec008eb82366 -->
|
|
2
|
+
Public API barrel file for the notifications module, re-exporting all components, hooks, utilities, and TypeScript types from their respective internal modules.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
6
|
+
**Context & Hooks**
|
|
7
|
+
- `NotificationsProvider` — React context provider for managing notification state
|
|
8
|
+
- `useNotifications` — Hook to access notifications context (throws if outside provider)
|
|
9
|
+
- `useOptionalNotifications` — Hook to access notifications context (returns `null` if outside provider)
|
|
10
|
+
|
|
11
|
+
**UI Components**
|
|
12
|
+
- `NotificationDrawer` — Slide-out drawer listing all notifications
|
|
13
|
+
- `NotificationTile` — Individual notification row/card component
|
|
14
|
+
- `NotificationPopups` — Floating toast-style popup notifications
|
|
15
|
+
- `ApprovalRequestNotificationTile` — Specialized tile for approval request notifications
|
|
16
|
+
|
|
17
|
+
**Utilities**
|
|
18
|
+
- `approvalMetaToBatchData` — Transforms approval metadata into batch-compatible format
|
|
19
|
+
- `getApprovalMeta` — Extracts approval metadata from a notification
|
|
20
|
+
- `isApprovalNotification` — Type guard for approval notifications
|
|
21
|
+
- `resolutionToStatus` — Maps an approval resolution to a display status
|
|
22
|
+
- `ADMIN_APPROVAL_REQUEST_CONTEXT_TYPE` — Constant identifying the approval request context type
|
|
23
|
+
|
|
24
|
+
**Types**
|
|
25
|
+
`Notification`, `NotificationVariant`, `NotificationSeverity`, `AddNotificationInput`, `ApprovalNotificationMeta`, `ApprovalToolCallMeta`, `RenderNotificationTile`, and associated `Props` types.
|
|
16
26
|
|
|
17
27
|
## Usage Example
|
|
18
28
|
|
|
@@ -21,37 +31,31 @@ import {
|
|
|
21
31
|
NotificationsProvider,
|
|
22
32
|
useNotifications,
|
|
23
33
|
NotificationDrawer,
|
|
24
|
-
|
|
25
|
-
|
|
34
|
+
NotificationPopups,
|
|
35
|
+
isApprovalNotification,
|
|
36
|
+
} from '@openframe-oss-lib/notifications'
|
|
37
|
+
import type { AddNotificationInput, NotificationSeverity } from '@openframe-oss-lib/notifications'
|
|
26
38
|
|
|
27
|
-
import type {
|
|
28
|
-
Notification,
|
|
29
|
-
NotificationVariant,
|
|
30
|
-
AddNotificationInput,
|
|
31
|
-
} from '@/notifications'
|
|
32
|
-
|
|
33
|
-
// Wrap your app with the provider
|
|
34
39
|
function App() {
|
|
35
40
|
return (
|
|
36
41
|
<NotificationsProvider>
|
|
42
|
+
<NotificationPopups position="bottom-right" />
|
|
37
43
|
<NotificationDrawer />
|
|
38
|
-
<
|
|
44
|
+
<MyContent />
|
|
39
45
|
</NotificationsProvider>
|
|
40
46
|
)
|
|
41
47
|
}
|
|
42
48
|
|
|
43
|
-
|
|
44
|
-
function MainContent() {
|
|
49
|
+
function MyContent() {
|
|
45
50
|
const { addNotification } = useNotifications()
|
|
46
51
|
|
|
47
|
-
const notify = () => {
|
|
48
|
-
const input: AddNotificationInput = {
|
|
49
|
-
variant: 'success' as NotificationVariant,
|
|
50
|
-
message: 'Operation completed successfully',
|
|
51
|
-
}
|
|
52
|
+
const notify = (message: string, severity: NotificationSeverity) => {
|
|
53
|
+
const input: AddNotificationInput = { message, severity }
|
|
52
54
|
addNotification(input)
|
|
53
55
|
}
|
|
54
56
|
|
|
55
|
-
return <button onClick={notify}>Notify</button>
|
|
57
|
+
return <button onClick={() => notify('Task complete', 'success')}>Notify</button>
|
|
56
58
|
}
|
|
57
|
-
```
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
**Source:** [`src/notifications/index.ts`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/src/notifications/index.ts)
|
|
@@ -1,34 +1,47 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
A
|
|
1
|
+
<!-- source-hash: e58046aa012c4e92bb2fca43c4247d8a -->
|
|
2
|
+
A slide-over drawer component that displays unread notifications with infinite scroll, toggle controls for popup/desktop notifications, and a history navigation button. It renders either within an `AppLayout` panel or falls back to a full viewport `Drawer` depending on the host context.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
6
|
+
- **`NotificationDrawer`** — Primary export. Reads state from `useOptionalNotifications()` context and renders within `AppLayoutDrawer` or fallback `Drawer` based on layout context detection.
|
|
7
|
+
- **`DrawerScrollList`** — Scrollable notification list with `IntersectionObserver`-based infinite scroll; renders `NotificationTile` items or custom tiles via `renderTile`.
|
|
8
|
+
- **`DrawerLoadingTiles`** — Animated skeleton placeholders shown during paginated load.
|
|
9
|
+
- **`EmptyState`** — Displayed when there are no unread notifications.
|
|
10
|
+
- **`ShowNotificationsToggleRow`** — Switch to toggle in-app popup notifications.
|
|
11
|
+
- **`DesktopNotificationsToggleRow`** — Switch to enable browser push notifications; requests permission on enable, disables itself if permission is denied, and hides on unsupported platforms (SSR, iOS Safari).
|
|
12
|
+
- **`NotificationsHistoryButton`** — `SplitButton` that navigates to notification history inline or opens it in a new tab.
|
|
13
13
|
|
|
14
14
|
## Usage Example
|
|
15
15
|
|
|
16
16
|
```typescript
|
|
17
|
+
// Wrap your app with NotificationsProvider, then render the drawer:
|
|
17
18
|
import { NotificationDrawer } from './notification-drawer'
|
|
18
|
-
import { NotificationsProvider } from './notifications-context'
|
|
19
19
|
|
|
20
|
-
|
|
21
|
-
export function AppLayout({ children }: { children: React.ReactNode }) {
|
|
20
|
+
function AppShell() {
|
|
22
21
|
return (
|
|
23
|
-
<NotificationsProvider
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
22
|
+
<NotificationsProvider>
|
|
23
|
+
<AppLayout>
|
|
24
|
+
<MainContent />
|
|
25
|
+
<NotificationDrawer
|
|
26
|
+
liveDurationMs={5000}
|
|
27
|
+
loadMoreRootMargin="300px"
|
|
28
|
+
renderTile={(notification, handlers) => (
|
|
29
|
+
<CustomNotificationTile
|
|
30
|
+
key={notification.id}
|
|
31
|
+
notification={notification}
|
|
32
|
+
{...handlers}
|
|
33
|
+
/>
|
|
34
|
+
)}
|
|
35
|
+
/>
|
|
36
|
+
</AppLayout>
|
|
29
37
|
</NotificationsProvider>
|
|
30
38
|
)
|
|
31
39
|
}
|
|
32
40
|
```
|
|
33
41
|
|
|
34
|
-
|
|
42
|
+
| Prop | Type | Default | Description |
|
|
43
|
+
|---|---|---|---|
|
|
44
|
+
| `liveDurationMs` | `number` | — | Auto-dismiss duration for live tiles |
|
|
45
|
+
| `loadMoreRootMargin` | `string` | `"200px"` | IntersectionObserver root margin for pagination trigger |
|
|
46
|
+
| `renderTile` | `RenderNotificationTile` | ctx default | Custom tile renderer; falls back to `NotificationTile` |
|
|
47
|
+
| `className` | `string` | — | Additional classes on the drawer panel |
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
<!-- source-hash: c70868cc8411a9927a06dea4d9d98ea5 -->
|
|
2
|
+
Renders a fixed-position overlay of live notification popups, automatically filtering, limiting, and positioning toast-style alerts that have not yet been read or settled.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
### Types & Interfaces
|
|
7
|
+
|
|
8
|
+
- **`NotificationPopupsPosition`** — Union type for popup placement: `'top-right'`, `'top-left'`, `'bottom-right'`, `'bottom-left'`
|
|
9
|
+
- **`NotificationPopupsProps`** — Component props interface
|
|
10
|
+
|
|
11
|
+
### Props
|
|
12
|
+
|
|
13
|
+
| Prop | Type | Default | Description |
|
|
14
|
+
|---|---|---|---|
|
|
15
|
+
| `className` | `string` | — | Additional CSS classes |
|
|
16
|
+
| `liveDurationMs` | `number` | `4000` | How long a notification stays "live" in ms |
|
|
17
|
+
| `maxVisible` | `number` | `4` | Maximum simultaneous popups |
|
|
18
|
+
| `position` | `NotificationPopupsPosition` | `'top-right'` | Screen corner placement |
|
|
19
|
+
| `hideWhenDrawerOpen` | `boolean` | `true` | Hides popups when notification drawer is open |
|
|
20
|
+
| `renderTile` | `RenderNotificationTile` | — | Custom tile renderer (overrides context renderer) |
|
|
21
|
+
|
|
22
|
+
### `NotificationPopups` (main export)
|
|
23
|
+
|
|
24
|
+
Consumes `useOptionalNotifications` context and renders filtered, time-bounded notifications as accessible popup tiles. Supports both custom (`renderTile`) and default (`NotificationTile`) rendering. Handles click and keyboard (`Enter`/`Space`) activation, delegating to `notification.onClick`, or opening the drawer and settling the notification.
|
|
25
|
+
|
|
26
|
+
## Usage Example
|
|
27
|
+
|
|
28
|
+
```typescript
|
|
29
|
+
import { NotificationPopups } from './notification-popups'
|
|
30
|
+
|
|
31
|
+
// Basic usage — top-right corner, 4s live window
|
|
32
|
+
<NotificationPopups />
|
|
33
|
+
|
|
34
|
+
// Custom position and duration
|
|
35
|
+
<NotificationPopups
|
|
36
|
+
position="bottom-left"
|
|
37
|
+
liveDurationMs={6000}
|
|
38
|
+
maxVisible={3}
|
|
39
|
+
hideWhenDrawerOpen={false}
|
|
40
|
+
/>
|
|
41
|
+
|
|
42
|
+
// Custom tile renderer
|
|
43
|
+
<NotificationPopups
|
|
44
|
+
position="top-right"
|
|
45
|
+
renderTile={(notification, { liveDurationMs }) => (
|
|
46
|
+
<MyCustomTile notification={notification} duration={liveDurationMs} />
|
|
47
|
+
)}
|
|
48
|
+
/>
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
> **Note:** `NotificationPopups` returns `null` if rendered outside a `NotificationsProvider`, `showPopups` is false, or no unread/unsettled notifications exist within the live window.
|
|
@@ -1,39 +1,55 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
A
|
|
1
|
+
<!-- source-hash: 1ba572f673818df9756a2a78c2e0d6ad -->
|
|
2
|
+
A client-side React component that renders a single notification tile with live auto-dismiss countdown, severity-based styling, image fallback, and accessible dismiss/complete controls.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
6
|
+
### `NotificationTileProps`
|
|
7
|
+
| Prop | Type | Description |
|
|
8
|
+
|------|------|-------------|
|
|
9
|
+
| `notification` | `Notification` | Core notification data (id, title, description, severity, etc.) |
|
|
10
|
+
| `liveDurationMs` | `number` | Auto-dismiss window in ms (default: `4000`) |
|
|
11
|
+
| `onComplete` | `(id: string) => void` | Called when user marks notification complete |
|
|
12
|
+
| `onSettle` | `(id: string) => void` | Called when countdown expires or user dismisses live tile |
|
|
13
|
+
| `paused` | `boolean` | Freezes the countdown without settling the notification |
|
|
14
|
+
| `actions` | `ReactNode` | Action row rendered inside the padded section (e.g. approval buttons) |
|
|
15
|
+
| `children` | `ReactNode` | Extra content below the padded section; bring your own top divider |
|
|
11
16
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
+
### Internal Logic
|
|
18
|
+
- **`accentVariant`** — maps backend `NotificationSeverity` (`INFO`, `SUCCESS`, `WARNING`, `DANGER`) to a `NotificationVariant`; falls back to `notification.variant`.
|
|
19
|
+
- **`isLive`** — `true` when the notification is unread, unsettled, and within the `liveDurationMs` window.
|
|
20
|
+
- **`failedImageUrl`** — tracks broken image URLs so the component falls back to the `icon` slot or a severity-colored dot.
|
|
21
|
+
- **Progress bar** — animates via a CSS `toast-progress` keyframe using `animationDelay` to account for elapsed time since creation.
|
|
22
|
+
- **Dual button slot** — dismiss (`XmarkIcon`) and complete (`CheckCircleIcon`) share one 16 px slot; the inactive button is `aria-hidden`, `disabled`, and `tabIndex={-1}`.
|
|
17
23
|
|
|
18
24
|
## Usage Example
|
|
19
25
|
|
|
20
26
|
```typescript
|
|
21
27
|
import { NotificationTile } from './notification-tile'
|
|
22
28
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
29
|
+
function NotificationFeed() {
|
|
30
|
+
const notification = {
|
|
31
|
+
id: 'notif-1',
|
|
32
|
+
title: 'Ticket #4821 updated',
|
|
33
|
+
description: 'A technician has responded to your request.',
|
|
34
|
+
severity: 'INFO' as const,
|
|
35
|
+
variant: 'info' as const,
|
|
36
|
+
createdAt: Date.now() - 1000,
|
|
37
|
+
read: false,
|
|
38
|
+
settled: false,
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
return (
|
|
42
|
+
<NotificationTile
|
|
43
|
+
notification={notification}
|
|
44
|
+
liveDurationMs={5000}
|
|
45
|
+
onSettle={(id) => console.log('dismissed', id)}
|
|
46
|
+
onComplete={(id) => console.log('completed', id)}
|
|
47
|
+
actions={
|
|
48
|
+
<button type="button">Approve</button>
|
|
49
|
+
}
|
|
50
|
+
/>
|
|
51
|
+
)
|
|
31
52
|
}
|
|
53
|
+
```
|
|
32
54
|
|
|
33
|
-
|
|
34
|
-
notification={notification}
|
|
35
|
-
liveDurationMs={5000}
|
|
36
|
-
onComplete={(id) => markComplete(id)}
|
|
37
|
-
onSettle={(id) => settleNotification(id)}
|
|
38
|
-
/>
|
|
39
|
-
```
|
|
55
|
+
**Source:** [`notification-tile.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/notification-tile.tsx)
|
|
@@ -1,73 +1,70 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
React context
|
|
1
|
+
<!-- source-hash: 87176a6bcad1178d52fbb050df93200a -->
|
|
2
|
+
React context module that manages notification state for the OpenFrame notifications system, providing CRUD operations, read/settled tracking, drawer open/close control, and optional server-side persistence callbacks.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
6
|
### `NotificationsProvider`
|
|
7
|
-
|
|
7
|
+
Top-level provider that initializes state via `useReducer` and exposes all notification operations through context. Accepts pagination props (`hasMore`, `isLoadingMore`, `onLoadMore`), popup visibility controls, desktop OS notification opt-in, and a custom tile renderer override.
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
### `NotificationsActions`
|
|
10
|
+
Optional server-side callback hooks — `onMarkRead`, `onMarkAllRead`, `onRemove`, `onMarkSettled` — fired after local state updates for persistence sync.
|
|
10
11
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
| `initialNotifications` | `Notification[]` | `[]` | Seed the store on mount |
|
|
14
|
-
| `maxNotifications` | `number` | `50` | Hard cap; oldest entries are trimmed |
|
|
15
|
-
| `defaultShowPopups` | `boolean` | `true` | Initial popup visibility |
|
|
16
|
-
| `onShowPopupsChange` | `(v: boolean) => void` | — | Callback on popup toggle |
|
|
17
|
-
| `onHistoryClick` | `() => void` | — | Callback for "view history" action |
|
|
12
|
+
### Internal `reducer`
|
|
13
|
+
Handles `add`, `upsert`, `set`, `markRead`, `markAllRead`, `markSettled`, `remove`, and `clear` actions. The `upsert` action preserves position on update; `add` prepends and promotes to top. Both respect `maxNotifications`.
|
|
18
14
|
|
|
19
15
|
### `useNotifications`
|
|
20
|
-
|
|
16
|
+
Strict hook — throws if called outside `<NotificationsProvider>`.
|
|
21
17
|
|
|
22
18
|
### `useOptionalNotifications`
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
### `reducer`
|
|
26
|
-
Pure state reducer handling: `add`, `markRead`, `markAllRead`, `markSettled`, `remove`, `clear`.
|
|
19
|
+
Soft hook — returns `null` when no provider is present, safe for optional integration.
|
|
27
20
|
|
|
28
21
|
## Usage Example
|
|
29
22
|
|
|
30
23
|
```typescript
|
|
31
|
-
import {
|
|
24
|
+
import {
|
|
25
|
+
NotificationsProvider,
|
|
26
|
+
useNotifications,
|
|
27
|
+
} from './notifications-context'
|
|
32
28
|
|
|
33
|
-
//
|
|
34
|
-
|
|
29
|
+
// Wrap your app or feature subtree
|
|
30
|
+
function App() {
|
|
35
31
|
return (
|
|
36
|
-
<NotificationsProvider
|
|
37
|
-
|
|
32
|
+
<NotificationsProvider
|
|
33
|
+
maxNotifications={100}
|
|
34
|
+
defaultShowPopups={true}
|
|
35
|
+
hasMore={true}
|
|
36
|
+
isLoadingMore={false}
|
|
37
|
+
onLoadMore={() => fetchMoreNotifications()}
|
|
38
|
+
actions={{
|
|
39
|
+
onMarkRead: async (id) => await api.markRead(id),
|
|
40
|
+
onRemove: async (id) => await api.deleteNotification(id),
|
|
41
|
+
}}
|
|
42
|
+
>
|
|
43
|
+
<NotificationsBell />
|
|
38
44
|
</NotificationsProvider>
|
|
39
45
|
)
|
|
40
46
|
}
|
|
41
47
|
|
|
42
|
-
//
|
|
43
|
-
function
|
|
44
|
-
const {
|
|
45
|
-
|
|
46
|
-
const notify = () =>
|
|
47
|
-
addNotification({
|
|
48
|
-
title: 'Ticket Updated',
|
|
49
|
-
description: 'Ticket #1042 was resolved by Mingo AI.',
|
|
50
|
-
color: 'success',
|
|
51
|
-
})
|
|
48
|
+
// Consume in any child component
|
|
49
|
+
function NotificationsBell() {
|
|
50
|
+
const { unreadCount, addNotification, markAllRead, toggle } = useNotifications()
|
|
52
51
|
|
|
53
52
|
return (
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
<button onClick={
|
|
53
|
+
<button onClick={toggle}>
|
|
54
|
+
Bell ({unreadCount})
|
|
55
|
+
<button onClick={() => addNotification({ title: 'New alert', body: 'Something happened' })}>
|
|
56
|
+
Add
|
|
57
|
+
</button>
|
|
57
58
|
<button onClick={markAllRead}>Mark all read</button>
|
|
58
|
-
|
|
59
|
+
</button>
|
|
59
60
|
)
|
|
60
61
|
}
|
|
61
62
|
```
|
|
62
63
|
|
|
63
|
-
##
|
|
64
|
+
## Notes
|
|
65
|
+
|
|
66
|
+
- `upsert` vs `add`: `add` promotes the item to the top of the list on collision; `upsert` updates in place.
|
|
67
|
+
- `actionsRef` pattern prevents stale closures when persistence callbacks change between renders.
|
|
68
|
+
- `desktopPopupsConfigured` is `true` only when `onShowDesktopPopupsChange` is provided, gating the OS-level toggle in the UI.
|
|
64
69
|
|
|
65
|
-
|
|
66
|
-
|---|---|
|
|
67
|
-
| `notifications` | Full ordered array, newest first |
|
|
68
|
-
| `unreadCount` | Derived count of unread items |
|
|
69
|
-
| `isOpen` | Panel open state |
|
|
70
|
-
| `addNotification(input)` | Adds entry, returns generated `id` |
|
|
71
|
-
| `markSettled(id)` | Marks a notification as acted upon (e.g. hides progress) |
|
|
72
|
-
| `open / close / toggle` | Control panel visibility |
|
|
73
|
-
| `setShowPopups(bool)` | Toggle toast popups globally |
|
|
70
|
+
**Source:** [`notifications-context.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/notifications-context.tsx)
|
|
@@ -1,45 +1,65 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
|
|
1
|
+
<!-- source-hash: 606f3b966d2c642c11c978923ae677cd -->
|
|
2
|
+
Core type definitions and utility functions for the notification system, including approval-request notifications used by the Mingo AI approval workflow.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
|
9
|
-
|
|
10
|
-
| `
|
|
6
|
+
### Types & Interfaces
|
|
7
|
+
|
|
8
|
+
| Name | Description |
|
|
9
|
+
|---|---|
|
|
10
|
+
| `Notification` | Core notification shape with display, metadata, and interaction fields |
|
|
11
|
+
| `AddNotificationInput` | Omits auto-generated fields (`id`, `createdAt`) for consumer-facing `addNotification` calls |
|
|
12
|
+
| `NotificationVariant` | Visual style: `default` · `success` · `warning` · `error` · `info` |
|
|
13
|
+
| `NotificationSeverity` | Backend severity level: `INFO` · `SUCCESS` · `WARNING` · `DANGER` |
|
|
14
|
+
| `RenderNotificationTile` | Override callback to replace the default tile renderer per notification |
|
|
15
|
+
| `ApprovalNotificationMeta` | Approval payload stored in `notification.meta` for `ADMIN_APPROVAL_REQUEST` notifications |
|
|
16
|
+
| `ApprovalToolCallMeta` | Single planned tool invocation awaiting admin approval |
|
|
17
|
+
|
|
18
|
+
### Utility Functions
|
|
19
|
+
|
|
20
|
+
| Name | Description |
|
|
21
|
+
|---|---|
|
|
22
|
+
| `isApprovalNotification` | Guards whether a notification carries an approval request via `meta.contextType` |
|
|
23
|
+
| `getApprovalMeta` | Safely extracts and validates `ApprovalNotificationMeta` from a notification; returns `null` on mismatch |
|
|
24
|
+
| `resolutionToStatus` | Maps backend `ApprovalResolution` strings (`PENDING`, `APPROVED`, `REJECTED`, `CANCELLED`) to `ChatApprovalStatus` |
|
|
25
|
+
| `approvalMetaToBatchData` | Converts `ApprovalNotificationMeta` to an `ApprovalBatchData` payload for chat approval batches |
|
|
26
|
+
|
|
27
|
+
### Constants
|
|
28
|
+
|
|
29
|
+
- **`ADMIN_APPROVAL_REQUEST_CONTEXT_TYPE`** — discriminator string (`"ADMIN_APPROVAL_REQUEST"`) matched against `notification.meta.contextType`
|
|
11
30
|
|
|
12
31
|
## Usage Example
|
|
13
32
|
|
|
14
33
|
```typescript
|
|
15
|
-
import
|
|
34
|
+
import {
|
|
35
|
+
isApprovalNotification,
|
|
36
|
+
getApprovalMeta,
|
|
37
|
+
resolutionToStatus,
|
|
38
|
+
approvalMetaToBatchData,
|
|
39
|
+
} from './types'
|
|
16
40
|
|
|
17
|
-
//
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
41
|
+
// Check and extract approval metadata
|
|
42
|
+
if (isApprovalNotification(notification)) {
|
|
43
|
+
const approval = getApprovalMeta(notification)
|
|
44
|
+
|
|
45
|
+
if (approval) {
|
|
46
|
+
// Map resolution to a UI status
|
|
47
|
+
const status = resolutionToStatus(approval.resolution)
|
|
24
48
|
|
|
25
|
-
//
|
|
26
|
-
const
|
|
27
|
-
|
|
28
|
-
variant: 'error',
|
|
29
|
-
title: 'Connection Failed',
|
|
30
|
-
description: 'Unable to reach the RMM agent.',
|
|
31
|
-
createdAt: Date.now(),
|
|
32
|
-
read: false,
|
|
33
|
-
settled: false,
|
|
34
|
-
meta: { agentId: 'agent-007' }
|
|
49
|
+
// Build the batch payload for the chat approval component
|
|
50
|
+
const batchData = approvalMetaToBatchData(approval)
|
|
51
|
+
}
|
|
35
52
|
}
|
|
36
53
|
|
|
37
|
-
//
|
|
38
|
-
const
|
|
54
|
+
// Add a basic notification (id and createdAt are optional)
|
|
55
|
+
const input: AddNotificationInput = {
|
|
56
|
+
title: 'Ticket #1042 Updated',
|
|
57
|
+
variant: 'success',
|
|
58
|
+
severity: 'SUCCESS',
|
|
59
|
+
onClick: () => router.push('/tickets/1042'),
|
|
60
|
+
}
|
|
39
61
|
```
|
|
40
62
|
|
|
41
|
-
##
|
|
63
|
+
## Source
|
|
42
64
|
|
|
43
|
-
|
|
44
|
-
- `AddNotificationInput` makes `id` and `createdAt` optional, allowing the system to auto-generate them.
|
|
45
|
-
- `meta` is an open-ended `Record<string, unknown>` for attaching arbitrary contextual data.
|
|
65
|
+
[`types.ts` on GitHub](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/types.ts)
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
<!-- source-hash: 554e4c4e5d119f255ff40e907298f913 -->
|
|
2
|
+
A drag-and-drop sortable list component for configuring ticket status ordering, built on `@dnd-kit/core` and `@dnd-kit/sortable`.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
- **`TicketStatusConfigList<T>`** — Generic sortable list container. Accepts any item type with an `id: string` field, manages DnD sensors (pointer with 4px activation threshold + keyboard), and delegates row rendering to a consumer-supplied `renderRow` prop.
|
|
7
|
+
- **`SortableRow`** — Internal render-prop component that wraps each list item with `useSortable`, applies CSS transforms/transitions, and elevates `z-index` while dragging to prevent items from rendering beneath siblings.
|
|
8
|
+
- **`SortableRowRenderArgs`** — Interface exposing `dragHandleProps`, `dragHandleAttributes`, and `isDragging` to the row renderer, allowing custom drag handle placement.
|
|
9
|
+
- **`TicketStatusConfigListProps<T>`** — Props interface for the list component.
|
|
10
|
+
|
|
11
|
+
## Usage Example
|
|
12
|
+
|
|
13
|
+
```typescript
|
|
14
|
+
import {
|
|
15
|
+
TicketStatusConfigList,
|
|
16
|
+
type SortableRowRenderArgs,
|
|
17
|
+
} from './ticket-status-config-list'
|
|
18
|
+
|
|
19
|
+
const statuses = [
|
|
20
|
+
{ id: 'open', label: 'Open' },
|
|
21
|
+
{ id: 'in-progress', label: 'In Progress' },
|
|
22
|
+
{ id: 'closed', label: 'Closed' },
|
|
23
|
+
]
|
|
24
|
+
|
|
25
|
+
function StatusSettings() {
|
|
26
|
+
const [items, setItems] = React.useState(statuses)
|
|
27
|
+
|
|
28
|
+
const handleReorder = (oldIndex: number, newIndex: number) => {
|
|
29
|
+
setItems(prev => {
|
|
30
|
+
const next = [...prev]
|
|
31
|
+
next.splice(newIndex, 0, next.splice(oldIndex, 1)[0])
|
|
32
|
+
return next
|
|
33
|
+
})
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
return (
|
|
37
|
+
<TicketStatusConfigList
|
|
38
|
+
items={items}
|
|
39
|
+
onReorder={handleReorder}
|
|
40
|
+
renderRow={(item, { dragHandleProps, dragHandleAttributes, isDragging }: SortableRowRenderArgs) => (
|
|
41
|
+
<div style={{ opacity: isDragging ? 0.5 : 1 }}>
|
|
42
|
+
<span {...dragHandleProps} {...dragHandleAttributes}>⠿</span>
|
|
43
|
+
{item.label}
|
|
44
|
+
</div>
|
|
45
|
+
)}
|
|
46
|
+
/>
|
|
47
|
+
)
|
|
48
|
+
}
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
The `onReorder` callback receives raw `oldIndex`/`newIndex` values — the parent is responsible for applying the reorder to its own state.
|