@flamingo-stack/openframe-frontend-core 0.0.481 → 0.0.482
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-H6DFCF44.cjs → chunk-22AED5IC.cjs} +82 -82
- package/dist/{chunk-H6DFCF44.cjs.map → chunk-22AED5IC.cjs.map} +1 -1
- package/dist/{chunk-MGKCS6KS.js → chunk-3WCARCI4.js} +2 -2
- package/dist/{chunk-LNKWY74S.cjs → chunk-4HL6UENH.cjs} +5 -5
- package/dist/{chunk-LNKWY74S.cjs.map → chunk-4HL6UENH.cjs.map} +1 -1
- package/dist/{chunk-Y3Y2DLNO.js → chunk-6UGYBCEN.js} +3 -3
- package/dist/{chunk-BBUEY73L.js → chunk-7I5B5PQ4.js} +6269 -5339
- package/dist/chunk-7I5B5PQ4.js.map +1 -0
- package/dist/{chunk-PSPWT2Q5.js → chunk-7LWXWXEY.js} +4 -4
- package/dist/{chunk-M7O74OWG.cjs → chunk-ACOU5YJI.cjs} +31 -31
- package/dist/{chunk-M7O74OWG.cjs.map → chunk-ACOU5YJI.cjs.map} +1 -1
- package/dist/{chunk-INDFIVDV.cjs → chunk-AHGSN4AT.cjs} +12 -12
- package/dist/{chunk-INDFIVDV.cjs.map → chunk-AHGSN4AT.cjs.map} +1 -1
- package/dist/{chunk-VTSRDC4W.js → chunk-CKC3EAYT.js} +2 -2
- package/dist/{chunk-SASR7SK5.js → chunk-GZK7FWJJ.js} +20 -4
- package/dist/chunk-GZK7FWJJ.js.map +1 -0
- package/dist/{chunk-ZRANZNEA.js → chunk-JJE5TUZK.js} +2 -2
- package/dist/{chunk-66BNAFO6.js → chunk-JQIUBFHL.js} +4 -4
- package/dist/{chunk-MMCBQJKE.cjs → chunk-KUBJHB6I.cjs} +11 -11
- package/dist/{chunk-MMCBQJKE.cjs.map → chunk-KUBJHB6I.cjs.map} +1 -1
- package/dist/{chunk-ZV6E3U3C.cjs → chunk-MRGTMMJ3.cjs} +30 -30
- package/dist/{chunk-ZV6E3U3C.cjs.map → chunk-MRGTMMJ3.cjs.map} +1 -1
- package/dist/{chunk-OZJN54R5.cjs → chunk-NWVKG7QC.cjs} +37 -37
- package/dist/{chunk-OZJN54R5.cjs.map → chunk-NWVKG7QC.cjs.map} +1 -1
- package/dist/{chunk-AN47EIIJ.cjs → chunk-PHTSSHIQ.cjs} +59 -59
- package/dist/{chunk-AN47EIIJ.cjs.map → chunk-PHTSSHIQ.cjs.map} +1 -1
- package/dist/{chunk-N2JZ33V7.cjs → chunk-RUA3OXSJ.cjs} +26 -26
- package/dist/{chunk-N2JZ33V7.cjs.map → chunk-RUA3OXSJ.cjs.map} +1 -1
- package/dist/{chunk-LK623WCC.cjs → chunk-RZPF7MJ2.cjs} +9 -9
- package/dist/{chunk-LK623WCC.cjs.map → chunk-RZPF7MJ2.cjs.map} +1 -1
- package/dist/{chunk-G3UN2DXU.cjs → chunk-STYA77PH.cjs} +20 -4
- package/dist/chunk-STYA77PH.cjs.map +1 -0
- package/dist/{chunk-JUJY3HQS.cjs → chunk-U37UTLP7.cjs} +19 -19
- package/dist/{chunk-JUJY3HQS.cjs.map → chunk-U37UTLP7.cjs.map} +1 -1
- package/dist/{chunk-2DIOV7BR.js → chunk-UPN6EFOM.js} +4 -4
- package/dist/{chunk-OWMLWJQY.cjs → chunk-VPVOJD5X.cjs} +2432 -1502
- package/dist/chunk-VPVOJD5X.cjs.map +1 -0
- package/dist/{chunk-4SMRQ4SN.js → chunk-WBL5Y4PS.js} +3 -3
- package/dist/{chunk-FP4H6Y5O.js → chunk-WPYPSIY2.js} +3 -3
- package/dist/{chunk-R5WJJL4V.js → chunk-X5X43HFV.js} +5 -5
- package/dist/{chunk-DEHZ5CTC.js → chunk-XTWKDMCG.js} +2 -2
- package/dist/components/case-studies/index.cjs +9 -9
- package/dist/components/case-studies/index.js +3 -3
- package/dist/components/chat/index.cjs +3 -3
- package/dist/components/chat/index.js +2 -2
- package/dist/components/contact/index.cjs +4 -4
- package/dist/components/contact/index.js +3 -3
- package/dist/components/docs/index.cjs +6 -6
- package/dist/components/docs/index.js +5 -5
- package/dist/components/embeds/index.cjs +4 -4
- package/dist/components/embeds/index.js +3 -3
- package/dist/components/faq/index.cjs +4 -4
- package/dist/components/faq/index.js +3 -3
- package/dist/components/features/captions-url.cjs +12 -0
- package/dist/components/features/captions-url.cjs.map +1 -0
- package/dist/components/features/captions-url.js +10 -0
- package/dist/components/features/captions-url.js.map +1 -0
- package/dist/components/features/card-hit-layer.d.ts +40 -0
- package/dist/components/features/card-hit-layer.d.ts.map +1 -0
- package/dist/components/features/floating-walkthrough-video.d.ts +71 -0
- package/dist/components/features/floating-walkthrough-video.d.ts.map +1 -0
- package/dist/components/features/index.cjs +11 -3
- package/dist/components/features/index.cjs.map +1 -1
- package/dist/components/features/index.d.ts +4 -0
- package/dist/components/features/index.d.ts.map +1 -1
- package/dist/components/features/index.js +12 -4
- package/dist/components/features/use-walkthrough-video.d.ts +16 -0
- package/dist/components/features/use-walkthrough-video.d.ts.map +1 -0
- package/dist/components/features/video-bites-strip.d.ts.map +1 -1
- package/dist/components/features/video-center-badge.d.ts.map +1 -1
- package/dist/components/features/video-hover-preview.d.ts +68 -0
- package/dist/components/features/video-hover-preview.d.ts.map +1 -0
- package/dist/components/features/video.d.ts +78 -40
- package/dist/components/features/video.d.ts.map +1 -1
- package/dist/components/form.d.ts +0 -1
- package/dist/components/form.d.ts.map +1 -1
- package/dist/components/help-center-pages/index.cjs +21 -21
- package/dist/components/help-center-pages/index.js +12 -12
- package/dist/components/index.cjs +163 -155
- package/dist/components/index.cjs.map +1 -1
- package/dist/components/index.js +18 -10
- package/dist/components/index.js.map +1 -1
- package/dist/components/navigation/index.cjs +3 -3
- package/dist/components/navigation/index.js +2 -2
- package/dist/components/onboarding-guides/index.cjs +6 -6
- package/dist/components/onboarding-guides/index.js +5 -5
- package/dist/components/related-content/index.cjs +4 -4
- package/dist/components/related-content/index.js +3 -3
- package/dist/components/tickets/index.cjs +6 -6
- package/dist/components/tickets/index.js +5 -5
- package/dist/components/ui/button/button-styles.d.ts +2 -0
- package/dist/components/ui/button/button-styles.d.ts.map +1 -1
- package/dist/components/ui/button/button.d.ts +2 -2
- package/dist/components/ui/button/button.d.ts.map +1 -1
- package/dist/components/ui/file-manager/index.cjs +50 -50
- package/dist/components/ui/file-manager/index.js +1 -1
- package/dist/components/ui/index.cjs +3 -3
- package/dist/components/ui/index.js +2 -2
- package/dist/components/ui/page-actions.d.ts +2 -1
- package/dist/components/ui/page-actions.d.ts.map +1 -1
- package/dist/index.cjs +27 -3
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +28 -4
- package/dist/types/supabase.d.ts +80 -0
- package/dist/types/supabase.d.ts.map +1 -1
- package/dist/types/video-processing.d.ts +1 -1
- package/dist/types/video-processing.d.ts.map +1 -1
- package/dist/utils/announcement-storage.d.ts +1 -1
- package/dist/utils/announcement-storage.d.ts.map +1 -1
- package/dist/utils/dismiss-cookie.d.ts +27 -0
- package/dist/utils/dismiss-cookie.d.ts.map +1 -0
- package/dist/utils/dismissal-storage.d.ts +19 -0
- package/dist/utils/dismissal-storage.d.ts.map +1 -0
- package/dist/utils/index.cjs +48 -10
- package/dist/utils/index.cjs.map +1 -1
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +41 -11
- package/dist/utils/index.js.map +1 -1
- package/package.json +8 -2
- package/src/.index.md +39 -32
- package/src/.platform-domains.md +65 -0
- package/src/assets/.fae-avatar.md +33 -0
- package/src/assets/.index.md +15 -9
- package/src/components/.agent-mark.md +31 -0
- package/src/components/.announcement-bar.md +47 -35
- package/src/components/.calendar.md +19 -15
- package/src/components/.categories-cart.md +34 -30
- package/src/components/.category-card.md +33 -33
- package/src/components/.chart.md +38 -40
- package/src/components/.command.md +47 -23
- package/src/components/.comment-card.md +31 -26
- package/src/components/.content-loading-container.md +45 -20
- package/src/components/.context-menu.md +45 -31
- package/src/components/.date-time-picker.md +36 -30
- package/src/components/.empty-state.md +31 -31
- package/src/components/.faq-accordion.md +20 -30
- package/src/components/.filter-chip.md +36 -33
- package/src/components/.footer-waitlist-button.md +27 -21
- package/src/components/.footer.md +39 -24
- package/src/components/.form.md +32 -20
- package/src/components/.hero-image-uploader.md +35 -31
- package/src/components/.icon-display.md +53 -0
- package/src/components/.image-cropper.md +34 -33
- package/src/components/.index.md +25 -29
- package/src/components/.logs-list.md +27 -23
- package/src/components/.media-carousel.md +47 -26
- package/src/components/.metric-value.md +27 -24
- package/src/components/.msp-display.md +29 -23
- package/src/components/.open-source-features.md +23 -26
- package/src/components/.pagination.md +44 -39
- package/src/components/.persistent-filter-controls.md +61 -28
- package/src/components/.pricing-display.md +34 -33
- package/src/components/.results-count.md +33 -20
- package/src/components/.smooth-accordion.md +24 -20
- package/src/components/.social-icon-row.md +33 -21
- package/src/components/.sonner.md +40 -25
- package/src/components/.steps.md +39 -25
- package/src/components/.tool-icon.md +34 -21
- package/src/components/.unified-filter-logic.md +32 -36
- package/src/components/.user-display.md +33 -28
- package/src/components/.user-summary-stub.md +40 -33
- package/src/components/.vendor-display-button.md +17 -15
- package/src/components/.vendor-icon.md +17 -25
- package/src/components/.vendor-tag.md +39 -34
- package/src/components/.why-it-matters.md +15 -11
- package/src/components/.yes-no-display.md +36 -31
- package/src/components/authors/.author-detail-view.md +50 -0
- package/src/components/case-studies/.index.md +26 -0
- package/src/components/case-studies/.share-experience-section.md +45 -0
- package/src/components/chat/.approval-batch-message.md +48 -33
- package/src/components/chat/.approval-request-message.md +37 -26
- package/src/components/chat/.chat-archive-page.md +56 -0
- package/src/components/chat/.chat-attachment-bar.md +32 -40
- package/src/components/chat/.chat-composer.md +43 -0
- package/src/components/chat/.chat-container.md +41 -25
- package/src/components/chat/.chat-context-memory-bar.md +53 -0
- package/src/components/chat/.chat-context-picker.md +89 -0
- package/src/components/chat/.chat-header-icon-button.md +43 -0
- package/src/components/chat/.chat-header-search-field.md +51 -0
- package/src/components/chat/.chat-input.md +63 -30
- package/src/components/chat/.chat-list-empty-state.md +44 -0
- package/src/components/chat/.chat-message-enhanced.md +29 -31
- package/src/components/chat/.chat-message-list.md +34 -44
- package/src/components/chat/.chat-message-row.md +56 -0
- package/src/components/chat/.chat-message-skeleton.md +32 -26
- package/src/components/chat/.chat-panel-header-mobile.md +46 -0
- package/src/components/chat/.chat-panel-header.md +80 -0
- package/src/components/chat/.chat-sidebar-skeleton.md +31 -30
- package/src/components/chat/.chat-sidebar.md +36 -29
- package/src/components/chat/.chat-ticket-list.md +38 -23
- package/src/components/chat/.chat-typing-indicator.md +37 -19
- package/src/components/chat/.context-compaction-display.md +19 -15
- package/src/components/chat/.context-items-list.md +57 -0
- package/src/components/chat/.embeddable-chat.md +57 -66
- package/src/components/chat/.error-message-display.md +40 -22
- package/src/components/chat/.guide-mode-banner.md +41 -0
- package/src/components/chat/.guide-welcome.md +43 -0
- package/src/components/chat/.index.md +26 -21
- package/src/components/chat/.mingo-chat-history.md +63 -0
- package/src/components/chat/.mingo-chat-modals.md +44 -0
- package/src/components/chat/.mingo-history-rail.md +63 -0
- package/src/components/chat/.mingo-info-card.md +59 -0
- package/src/components/chat/.mingo-onboarding-card.md +21 -27
- package/src/components/chat/.mingo-welcome.md +60 -0
- package/src/components/chat/.model-display.md +33 -25
- package/src/components/chat/.msp-organization-card-skeleton.md +44 -0
- package/src/components/chat/.msp-organization-card.md +51 -0
- package/src/components/chat/.nav-link-anchor-via-runtime.md +36 -25
- package/src/components/chat/.quick-action-chip.md +60 -0
- package/src/components/chat/.quick-action-marquee.md +53 -0
- package/src/components/chat/.quick-action-wall.md +68 -0
- package/src/components/chat/.remark-mention-chips.md +41 -0
- package/src/components/chat/.slash-command-suggestions.md +30 -36
- package/src/components/chat/.source-action-button.md +28 -25
- package/src/components/chat/.tool-call-blocks.md +18 -30
- package/src/components/chat/.tool-execution-display.md +29 -34
- package/src/components/chat/entity-cards/.admin-content-card.md +29 -22
- package/src/components/chat/entity-cards/.blog-card.md +44 -33
- package/src/components/chat/entity-cards/.blog-image-placeholder.md +20 -18
- package/src/components/chat/entity-cards/.case-study-card.md +24 -33
- package/src/components/chat/entity-cards/.chat-ticket-item.md +39 -22
- package/src/components/chat/entity-cards/.customer-interview-card.md +29 -32
- package/src/components/chat/entity-cards/.data-room-doc-card.md +21 -22
- package/src/components/chat/entity-cards/.dispatch.md +41 -24
- package/src/components/chat/entity-cards/.entity-author-card.md +36 -33
- package/src/components/chat/entity-cards/.entity-portrait-card.md +47 -0
- package/src/components/chat/entity-cards/.generic-entity-card.md +26 -25
- package/src/components/chat/entity-cards/.github-activity-card.md +35 -41
- package/src/components/chat/entity-cards/.hubspot-ticket-card.md +22 -28
- package/src/components/chat/entity-cards/.index.md +33 -44
- package/src/components/chat/entity-cards/.investor-update-card.md +36 -25
- package/src/components/chat/entity-cards/.onboarding-guide-card.md +20 -29
- package/src/components/chat/entity-cards/.product-release-card-defaults.md +26 -19
- package/src/components/chat/entity-cards/.program-card.md +30 -33
- package/src/components/chat/entity-cards/.roadmap-card.md +40 -31
- package/src/components/chat/entity-cards/.roadmap-vote-button.md +33 -36
- package/src/components/chat/entity-cards/.slack-message-card.md +31 -32
- package/src/components/chat/entity-cards/.use-cover-image-fallback.md +47 -0
- package/src/components/chat/entity-cards/.use-entity-card-link.md +51 -0
- package/src/components/chat/entity-cards/.use-entity-card-placeholder.md +47 -0
- package/src/components/chat/entity-cards/.what-i-shipped-card.md +43 -0
- package/src/components/chat/hooks/.index.md +33 -30
- package/src/components/chat/hooks/.use-chat-card-item.md +30 -17
- package/src/components/chat/hooks/.use-chat-dialog-manager.md +59 -0
- package/src/components/chat/hooks/.use-chat-identity.md +37 -25
- package/src/components/chat/hooks/.use-chunk-catchup.md +53 -36
- package/src/components/chat/hooks/.use-empty-state-config.md +39 -0
- package/src/components/chat/hooks/.use-jetstream-dialog-subscription.md +65 -30
- package/src/components/chat/hooks/.use-nats-chat-adapter.md +55 -36
- package/src/components/chat/hooks/.use-nats-dialog-subscription.md +66 -50
- package/src/components/chat/hooks/.use-realtime-chunk-processor.md +58 -31
- package/src/components/chat/hooks/.use-scripted-stream.md +46 -0
- package/src/components/chat/hooks/.use-slash-commands.md +32 -25
- package/src/components/chat/hooks/.use-sse-chat-adapter.md +32 -21
- package/src/components/chat/hooks/.use-unified-chat.md +45 -35
- package/src/components/chat/types/.api.types.md +49 -41
- package/src/components/chat/types/.chat.types.md +56 -34
- package/src/components/chat/types/.component.types.md +36 -36
- package/src/components/chat/types/.context-item.types.md +61 -0
- package/src/components/chat/types/.index.md +32 -17
- package/src/components/chat/types/.message.types.md +44 -45
- package/src/components/chat/types/.network.types.md +46 -46
- package/src/components/chat/types/.processing.types.md +49 -37
- package/src/components/chat/types/.unified-chat-state.types.md +41 -26
- package/src/components/chat/types/entities/.content-ref.md +20 -31
- package/src/components/chat/types/entities/.investor-update.md +14 -16
- package/src/components/chat/types/entities/.onboarding-guide.md +35 -34
- package/src/components/chat/types/entities/.program-types.md +55 -43
- package/src/components/chat/utils/.chip-action-class.md +17 -19
- package/src/components/chat/utils/.chip-styles.md +18 -18
- package/src/components/chat/utils/.chunk-parser.md +48 -37
- package/src/components/chat/utils/.compact-card-classes.md +33 -35
- package/src/components/chat/utils/.execute-navigation.md +49 -0
- package/src/components/chat/utils/.extract-incomplete-message-state.md +9 -12
- package/src/components/chat/utils/.history-merge.md +65 -0
- package/src/components/chat/utils/.icon-library.md +33 -31
- package/src/components/chat/utils/.icon-registry.md +44 -0
- package/src/components/chat/utils/.index.md +37 -33
- package/src/components/chat/utils/.is-cross-origin-url.md +26 -22
- package/src/components/chat/utils/.message-segment-accumulator.md +46 -25
- package/src/components/chat/utils/.nav-anchor-props.md +29 -34
- package/src/components/chat/utils/.nav-click-handler.md +29 -33
- package/src/components/chat/utils/.process-historical-messages.md +29 -33
- package/src/components/chat/utils/.scripted-stream.md +52 -0
- package/src/components/chat/utils/.source-row-cta.md +32 -31
- package/src/components/chat/utils/.tool-call-helpers.md +25 -17
- package/src/components/contact/.contact-form.md +24 -19
- package/src/components/docs/.doc-navigation-context.md +49 -0
- package/src/components/docs/.doc-viewer.md +64 -0
- package/src/components/docs/.docs-hub-page.md +49 -0
- package/src/components/docs/.index.md +51 -0
- package/src/components/docs/.skeletons.md +47 -0
- package/src/components/docs/.use-docs-resolve-link.md +61 -0
- package/src/components/docs/.use-document-tree.md +83 -0
- package/src/components/docs/.use-scroll-spy.md +58 -0
- package/src/components/embeds/.embed-container.md +45 -0
- package/src/components/embeds/.embed-iframe.md +51 -0
- package/src/components/embeds/.figma-embed.md +43 -0
- package/src/components/embeds/.file-download-card.md +47 -0
- package/src/components/embeds/.google-sheets-viewer.md +40 -0
- package/src/components/embeds/.index.md +58 -0
- package/src/components/embeds/.linkedin-embed-client.md +50 -0
- package/src/components/embeds/.markdown-image.md +40 -0
- package/src/components/embeds/.og-link-preview.md +54 -0
- package/src/components/embeds/.pdf-viewer.md +43 -0
- package/src/components/embeds/.reddit-embed-client.md +40 -0
- package/src/components/embeds/.rich-markdown-runtime.md +53 -0
- package/src/components/embeds/.twitter-embed-client.md +44 -0
- package/src/components/faq/.faq-document-page.md +68 -0
- package/src/components/faq/.faq-section.md +55 -0
- package/src/components/faq/.index.md +29 -0
- package/src/components/faq/.json-ld.md +48 -0
- package/src/components/features/.array-entry-manager.md +32 -24
- package/src/components/features/.auth-providers-list.md +33 -32
- package/src/components/features/.captions-url.md +43 -0
- package/src/components/features/.cards-strip.md +48 -0
- package/src/components/features/.changelog-manager.md +17 -20
- package/src/components/features/.command-box.md +11 -16
- package/src/components/features/.entity-summary-editor.md +20 -15
- package/src/components/features/.entity-tag-badges.md +43 -0
- package/src/components/features/.entity-video-section.md +31 -41
- package/src/components/features/.figma-prototype-viewer.md +55 -37
- package/src/components/features/.filters-dropdown.md +14 -13
- package/src/components/features/.highlight-config-section.md +19 -16
- package/src/components/features/.highlight-video-combined-section.md +28 -19
- package/src/components/features/.highlight-video-preview.md +13 -11
- package/src/components/features/.highlight-video-section.md +26 -22
- package/src/components/features/.index.md +40 -36
- package/src/components/features/.media-gallery-manager.md +37 -35
- package/src/components/features/.mux-origins.md +46 -0
- package/src/components/features/.og-editor-preview.md +29 -24
- package/src/components/features/.os-type-badge-group.md +26 -18
- package/src/components/features/.os-type-badge.md +41 -24
- package/src/components/features/.paths-display.md +42 -25
- package/src/components/features/.platform-badge.md +26 -17
- package/src/components/features/.policy-configuration-panel.md +33 -31
- package/src/components/features/.provider-button.md +29 -20
- package/src/components/features/.push-button-selector.md +39 -41
- package/src/components/features/.release-media-manager.md +41 -34
- package/src/components/features/.section-selector.md +27 -16
- package/src/components/features/.select-button.md +21 -32
- package/src/components/features/.seo-editor-preview.md +49 -36
- package/src/components/features/.social-links-manager.md +40 -18
- package/src/components/features/.start-with-openframe-button.md +30 -32
- package/src/components/features/.status-filter-component.md +29 -38
- package/src/components/features/.tags-selector.md +25 -29
- package/src/components/features/.transcript-summary-editor.md +24 -18
- package/src/components/features/.use-video-warmup.md +47 -0
- package/src/components/features/.video-bites-display.md +36 -37
- package/src/components/features/.video-bites-shared.md +44 -0
- package/src/components/features/.video-bites-strip.md +63 -0
- package/src/components/features/.video-center-badge.md +38 -0
- package/src/components/features/.video-ratio-tabs.md +38 -31
- package/src/components/features/.video-source-selector.md +24 -27
- package/src/components/features/.video.md +35 -27
- package/src/components/features/.waitlist-form.md +39 -33
- package/src/components/features/.warning-block.md +53 -0
- package/src/components/features/ai-enrich/.AIEnrichSection.md +24 -25
- package/src/components/features/ai-enrich/.AIRequiredBadge.md +22 -21
- package/src/components/features/ai-enrich/.AIStatusIndicator.md +42 -35
- package/src/components/features/ai-enrich/.AIWarningsSection.md +23 -20
- package/src/components/features/ai-enrich/.ConfidenceBadge.md +35 -20
- package/src/components/features/auth/.auth-benefits-panel.md +48 -0
- package/src/components/features/auth/.auth-branding.md +51 -0
- package/src/components/features/auth/.auth-shell.md +51 -0
- package/src/components/features/auth/.back-to-login-link.md +48 -0
- package/src/components/features/auth/.complete-account-form.md +45 -0
- package/src/components/features/auth/.create-organization-form.md +53 -0
- package/src/components/features/auth/.index.md +48 -0
- package/src/components/features/auth/.invite-link-invalid-modal.md +42 -0
- package/src/components/features/auth/.login-form.md +42 -0
- package/src/components/features/auth/.openframe-sso-login-form.md +46 -0
- package/src/components/features/auth/.openframe-sso-signup-form.md +51 -0
- package/src/components/features/auth/.password-reset-form.md +57 -0
- package/src/components/features/auth/.sso-auth-shell.md +35 -0
- package/src/components/features/auth/.sso-providers.md +42 -0
- package/src/components/features/auth/.terms-agreement-label.md +28 -0
- package/src/components/features/board/.board-column-header.md +24 -18
- package/src/components/features/board/.board-column.md +32 -32
- package/src/components/features/board/.board-ticket-approval.md +42 -0
- package/src/components/features/board/.board.md +38 -38
- package/src/components/features/board/.index.md +35 -38
- package/src/components/features/board/.ticket-card.md +33 -36
- package/src/components/features/board/.types.md +38 -31
- package/src/components/features/card-hit-layer.tsx +84 -0
- package/src/components/features/floating-walkthrough-video.tsx +891 -0
- package/src/components/features/index.ts +4 -0
- package/src/components/features/notifications/.approval-request-notification-tile.md +45 -0
- package/src/components/features/notifications/.index.md +35 -31
- package/src/components/features/notifications/.notification-drawer.md +32 -19
- package/src/components/features/notifications/.notification-popups.md +51 -0
- package/src/components/features/notifications/.notification-tile.md +43 -27
- package/src/components/features/notifications/.notifications-context.md +42 -45
- package/src/components/features/notifications/.types.md +51 -31
- package/src/components/features/ticket-status-config-list/.ticket-status-config-list.md +51 -0
- package/src/components/features/time-tracker/.index.md +48 -0
- package/src/components/features/time-tracker/.time-tracker-context.md +55 -0
- package/src/components/features/time-tracker/.time-tracker-header-button.md +51 -0
- package/src/components/features/time-tracker/.time-tracker-panel.md +58 -0
- package/src/components/features/time-tracker/.types.md +51 -0
- package/src/components/features/time-tracker/.use-tracker-clock.md +32 -0
- package/src/components/features/use-walkthrough-video.ts +70 -0
- package/src/components/features/video-bites-strip.tsx +46 -146
- package/src/components/features/video-center-badge.tsx +11 -2
- package/src/components/features/video-hover-preview.tsx +201 -0
- package/src/components/features/video.tsx +368 -73
- package/src/components/help-center-pages/.delivery-page.md +51 -0
- package/src/components/help-center-pages/.index.md +51 -0
- package/src/components/help-center-pages/.onboarding-guides-catalog-page.md +53 -0
- package/src/components/help-center-pages/.product-releases-list-page.md +51 -0
- package/src/components/help-center-pages/.roadmap-page.md +46 -0
- package/src/components/icons/.figma-icon.md +13 -7
- package/src/components/icons/.index.md +26 -22
- package/src/components/icons/.vendor-directory-icon.md +30 -18
- package/src/components/icons/.x-logo.md +26 -10
- package/src/components/icons-v2-generated/.index.md +30 -41
- package/src/components/icons-v2-generated/brand-logos/.index.md +25 -19
- package/src/components/icons-v2-generated/communication/.index.md +26 -30
- package/src/components/icons-v2-generated/logos/.flamingo-logo-icon.md +41 -0
- package/src/components/layout/.article-detail-layout.md +32 -21
- package/src/components/layout/.page-container.md +25 -23
- package/src/components/layout/.page-heading.md +48 -0
- package/src/components/layout/.page-layout.md +30 -25
- package/src/components/layout/.title-block.md +43 -24
- package/src/components/loading/.card-skeleton.md +28 -35
- package/src/components/loading/.category-card-skeleton.md +25 -23
- package/src/components/loading/.device-card-skeleton.md +22 -15
- package/src/components/loading/.margin-report-skeleton.md +30 -35
- package/src/components/loading/.openmsp-heartbeat.md +30 -32
- package/src/components/loading/.organization-card-skeleton.md +22 -25
- package/src/components/loading/.organization-icon-skeleton.md +39 -27
- package/src/components/loading/.page-layout-skeleton.md +50 -28
- package/src/components/loading/.unified-skeleton.md +37 -40
- package/src/components/loading/.users-grid-skeleton.md +19 -38
- package/src/components/navigation/.app-header.md +35 -28
- package/src/components/navigation/.app-layout-context.md +48 -0
- package/src/components/navigation/.app-layout-drawer.md +56 -0
- package/src/components/navigation/.app-layout.md +24 -23
- package/src/components/navigation/.header-mingo-button.md +46 -0
- package/src/components/navigation/.header-organization-filter.md +32 -18
- package/src/components/navigation/.header.md +24 -31
- package/src/components/navigation/.index.md +36 -50
- package/src/components/navigation/.mingo-ai-button.md +41 -0
- package/src/components/navigation/.mobile-burger-menu.md +29 -29
- package/src/components/navigation/.mobile-nav-panel.md +41 -49
- package/src/components/navigation/.multi-level-navigation.md +76 -0
- package/src/components/navigation/.navigation-sidebar-item.md +14 -14
- package/src/components/navigation/.navigation-sidebar.md +30 -23
- package/src/components/navigation/.sliding-sidebar.md +30 -25
- package/src/components/navigation/.sticky-section-nav.md +23 -21
- package/src/components/onboarding-guides/.index.md +40 -0
- package/src/components/onboarding-guides/.onboarding-guide-detail-view.md +55 -0
- package/src/components/onboarding-guides/.onboarding-guides-catalog-skeleton.md +33 -0
- package/src/components/onboarding-guides/.onboarding-guides-catalog-view.md +50 -0
- package/src/components/onboarding-guides/hooks/.use-onboarding-guides.md +54 -0
- package/src/components/platform/.CveLink.md +28 -17
- package/src/components/platform/.ScriptArguments.md +18 -23
- package/src/components/platform/.ScriptInfoSection.md +27 -21
- package/src/components/platform/.ShellTypeBadge.md +34 -18
- package/src/components/platform/.SoftwareInfo.md +23 -21
- package/src/components/platform/.ToolBadge.md +18 -16
- package/src/components/profile/.ProfileLoadingSkeleton.md +24 -23
- package/src/components/related-content/.index.md +41 -0
- package/src/components/related-content/.related-content-section.md +62 -0
- package/src/components/shared/.article-author-byline.md +56 -0
- package/src/components/shared/.detail-page-skeleton.md +32 -43
- package/src/components/shared/.media-gallery-strip.md +43 -0
- package/src/components/shared/delivery/.delivery-lists.md +20 -19
- package/src/components/shared/delivery/.delivery-row.md +24 -20
- package/src/components/shared/delivery/.delivery-table.md +20 -22
- package/src/components/shared/dev-section/.dev-card-row.md +28 -36
- package/src/components/shared/dev-section/.dev-section-page.md +36 -25
- package/src/components/shared/dev-section/.dev-section-view.md +32 -22
- package/src/components/shared/doc-search/.doc-search-bar.md +58 -0
- package/src/components/shared/doc-search/.doc-search-result-row.md +50 -0
- package/src/components/shared/doc-search/.format-relative-path.md +30 -0
- package/src/components/shared/doc-search/.index.md +46 -0
- package/src/components/shared/doc-search/.map-doc-search-results.md +44 -0
- package/src/components/shared/doc-search/.resolve-search-result-action.md +52 -0
- package/src/components/shared/doc-search/.types.md +49 -0
- package/src/components/shared/doc-search/.use-doc-search.md +66 -0
- package/src/components/shared/legal-document/.legal-document-page.md +26 -20
- package/src/components/shared/legal-document/.use-legal-docs.md +36 -30
- package/src/components/shared/onboarding/.onboarding-step-card.md +24 -16
- package/src/components/shared/onboarding/.onboarding-walkthrough.md +42 -28
- package/src/components/shared/product-release/.index.md +33 -24
- package/src/components/shared/product-release/.product-release-card-skeleton.md +22 -28
- package/src/components/shared/product-release/.product-release-card.md +28 -29
- package/src/components/shared/product-release/.product-releases-view.md +49 -0
- package/src/components/shared/product-release/.release-detail-page.md +30 -15
- package/src/components/shared/roadmap/.index.md +29 -24
- package/src/components/shared/roadmap/.roadmap-grid.md +43 -54
- package/src/components/shared/roadmap/.roadmap-view.md +41 -0
- package/src/components/shared/roadmap/.use-roadmap-voting.md +27 -17
- package/src/components/switch.tsx +1 -1
- package/src/components/tickets/.help-center-card.md +32 -28
- package/src/components/tickets/.help-center-create-form.md +34 -22
- package/src/components/tickets/.help-center-list.md +36 -25
- package/src/components/tickets/.index.md +30 -45
- package/src/components/tickets/.ticket-center.md +31 -38
- package/src/components/tickets/.ticket-detail-drawer.md +20 -30
- package/src/components/tickets/.ticket-open-form.md +24 -26
- package/src/components/tickets/.ticket-reply-composer.md +51 -0
- package/src/components/tickets/.ticket-row.md +26 -11
- package/src/components/tickets/.types.md +56 -38
- package/src/components/tickets/hooks/.use-ticket-actions.md +60 -47
- package/src/components/tickets/hooks/.use-ticket-engagements.md +27 -27
- package/src/components/tickets/hooks/.use-tickets-list.md +24 -30
- package/src/components/ui/.accordion.md +28 -21
- package/src/components/ui/.actions-menu.md +36 -54
- package/src/components/ui/.ai-generated-badge.md +25 -0
- package/src/components/ui/.alert-dialog.md +21 -16
- package/src/components/ui/.alert.md +30 -25
- package/src/components/ui/.allowed-domains-input.md +26 -15
- package/src/components/ui/.announcement-bar-view.md +46 -0
- package/src/components/ui/.autocomplete.md +40 -27
- package/src/components/ui/.badge.md +34 -31
- package/src/components/ui/.brand-association-card.md +22 -18
- package/src/components/ui/.breadcrumb.md +18 -14
- package/src/components/ui/.bullet-list.md +35 -23
- package/src/components/ui/.card.md +47 -30
- package/src/components/ui/.checkbox-block.md +34 -22
- package/src/components/ui/.checkbox-with-description.md +18 -20
- package/src/components/ui/.chevron-button.md +29 -29
- package/src/components/ui/.circular-progress.md +30 -41
- package/src/components/ui/.color-preset-select.md +54 -0
- package/src/components/ui/.color-swatch.md +37 -0
- package/src/components/ui/.content-loader.md +34 -27
- package/src/components/ui/.crossfade-panels.md +50 -0
- package/src/components/ui/.cursor-pagination.md +38 -26
- package/src/components/ui/.dashboard-info-card.md +46 -27
- package/src/components/ui/.date-picker.md +52 -36
- package/src/components/ui/.device-card-compact.md +23 -20
- package/src/components/ui/.device-card.md +39 -30
- package/src/components/ui/.dialog.md +14 -14
- package/src/components/ui/.drawer.md +45 -39
- package/src/components/ui/.dropdown-button.md +41 -33
- package/src/components/ui/.dropdown-menu.md +40 -23
- package/src/components/ui/.duration-input.md +41 -0
- package/src/components/ui/.entity-image.md +32 -28
- package/src/components/ui/.error-state.md +30 -26
- package/src/components/ui/.fade-preview.md +44 -0
- package/src/components/ui/.field-wrapper.md +34 -23
- package/src/components/ui/.file-upload.md +30 -18
- package/src/components/ui/.filter-modal.md +30 -32
- package/src/components/ui/.filter-pill-row.md +58 -0
- package/src/components/ui/.floating-tooltip.md +27 -32
- package/src/components/ui/.hidden-tags-popup.md +18 -20
- package/src/components/ui/.highlight-card.md +36 -23
- package/src/components/ui/.honeypot-field.md +41 -0
- package/src/components/ui/.hover-dropdown.md +44 -31
- package/src/components/ui/.image-gallery-modal.md +28 -30
- package/src/components/ui/.image-uploader.md +39 -22
- package/src/components/ui/.index.md +33 -31
- package/src/components/ui/.info-card-row.md +50 -0
- package/src/components/ui/.info-card.md +27 -20
- package/src/components/ui/.info-row.md +30 -24
- package/src/components/ui/.info-section.md +63 -0
- package/src/components/ui/.input.md +29 -28
- package/src/components/ui/.label.md +34 -26
- package/src/components/ui/.markdown-editor.md +26 -25
- package/src/components/ui/.marquee-wall.md +64 -0
- package/src/components/ui/.menubar.md +50 -16
- package/src/components/ui/.modal-v2.md +41 -27
- package/src/components/ui/.modal.md +22 -19
- package/src/components/ui/.more-actions-menu.md +30 -24
- package/src/components/ui/.navigation-menu.md +40 -25
- package/src/components/ui/.organization-card.md +46 -27
- package/src/components/ui/.page-actions.md +55 -41
- package/src/components/ui/.page-loader.md +40 -23
- package/src/components/ui/.password-input.md +30 -0
- package/src/components/ui/.phone-input.md +20 -22
- package/src/components/ui/.portal-container.md +43 -0
- package/src/components/ui/.progress-bar.md +40 -27
- package/src/components/ui/.release-changelog-section.md +32 -26
- package/src/components/ui/.rich-markdown-renderer.md +45 -0
- package/src/components/ui/.scroll-fade.md +56 -0
- package/src/components/ui/.search-input.md +55 -37
- package/src/components/ui/.select.md +25 -26
- package/src/components/ui/.service-card.md +25 -19
- package/src/components/ui/.sheet.md +21 -21
- package/src/components/ui/.simple-markdown-renderer.md +36 -24
- package/src/components/ui/.slack-channel-chip.md +49 -0
- package/src/components/ui/.square-avatar.md +29 -26
- package/src/components/ui/.stacked-rows-panel.md +61 -0
- package/src/components/ui/.status-badge.md +30 -24
- package/src/components/ui/.status-indicator.md +35 -21
- package/src/components/ui/.tab-content.md +34 -22
- package/src/components/ui/.tab-navigation.md +40 -50
- package/src/components/ui/.tab-selector.md +48 -31
- package/src/components/ui/.tabs.md +34 -21
- package/src/components/ui/.tag-search-input.md +20 -20
- package/src/components/ui/.tag-select-dropdown.md +59 -0
- package/src/components/ui/.tag.md +25 -43
- package/src/components/ui/.tags-input.md +31 -31
- package/src/components/ui/.textarea.md +32 -30
- package/src/components/ui/.ticket-attachments-list.md +36 -29
- package/src/components/ui/.ticket-info-section.md +37 -42
- package/src/components/ui/.ticket-status-config-row.md +66 -0
- package/src/components/ui/.ticket-status-tag.md +39 -35
- package/src/components/ui/.toaster.md +21 -15
- package/src/components/ui/.toggle.md +38 -37
- package/src/components/ui/.tooltip.md +16 -13
- package/src/components/ui/button/.button-styles.md +17 -18
- package/src/components/ui/button/.button.md +30 -37
- package/src/components/ui/button/.split-button.md +46 -23
- package/src/components/ui/button/button-styles.ts +13 -0
- package/src/components/ui/button/button.tsx +5 -0
- package/src/components/ui/data-table/.data-table-body.md +50 -35
- package/src/components/ui/data-table/.data-table-empty.md +17 -33
- package/src/components/ui/data-table/.data-table-header.md +43 -40
- package/src/components/ui/data-table/.data-table-row.md +31 -31
- package/src/components/ui/data-table/.types.md +23 -28
- package/src/components/ui/file-manager/.file-manager-breadcrumb.md +16 -24
- package/src/components/ui/file-manager/.file-manager-empty.md +23 -15
- package/src/components/ui/file-manager/.file-manager-skeleton.md +34 -36
- package/src/components/ui/file-manager/.file-manager-table-row.md +29 -29
- package/src/components/ui/file-manager/.file-manager-table.md +39 -24
- package/src/components/ui/no-data/.index.md +22 -0
- package/src/components/ui/no-data/.no-data-actions.md +29 -0
- package/src/components/ui/no-data/.no-data-message.md +37 -0
- package/src/components/ui/no-data/.no-data-styles.md +39 -0
- package/src/components/ui/no-data/.no-data.md +59 -0
- package/src/components/ui/page-actions.tsx +2 -1
- package/src/components/ui/query-report-table/.query-report-table-header.md +15 -15
- package/src/components/ui/query-report-table/.query-report-table-row.md +16 -16
- package/src/components/ui/query-report-table/.query-report-table.md +39 -24
- package/src/components/ui/table/.table-column-filter-dropdown.md +15 -9
- package/src/components/ui/table/.table-description-cell.md +13 -12
- package/src/components/ui/table/.table-empty-state.md +19 -20
- package/src/components/ui/table/.table-row.md +30 -20
- package/src/components/ui/table/.table-skeleton.md +32 -27
- package/src/components/ui/table/.table-timestamp-cell.md +24 -23
- package/src/components/ui/table/.table.md +43 -30
- package/src/components/ui/table/.types.md +49 -45
- package/src/components/ui/table/.use-table-motion.md +45 -0
- package/src/contexts/.chat-runtime-context.md +55 -26
- package/src/contexts/.endpoints-runtime-context.md +40 -44
- package/src/embed-shims/.next-navigation.md +38 -31
- package/src/hooks/.api-hooks.md +28 -21
- package/src/hooks/.index.md +30 -25
- package/src/hooks/.use-authed-image-src.md +38 -0
- package/src/hooks/.use-contact-submission.md +35 -36
- package/src/hooks/.use-humanity-signals.md +47 -0
- package/src/hooks/.use-near-viewport.md +30 -30
- package/src/hooks/.use-og-placeholder-url.md +57 -0
- package/src/hooks/.use-scroll-to-hash.md +46 -0
- package/src/hooks/.use-self-fetch.md +52 -0
- package/src/hooks/state/.flatten-schema.md +37 -29
- package/src/hooks/ui/.index.md +37 -25
- package/src/hooks/ui/.use-auto-limit-tags.md +55 -38
- package/src/hooks/ui/.use-deferred-error.md +44 -0
- package/src/hooks/ui/.use-focus-trap.md +59 -0
- package/src/hooks/ui/.use-header-height.md +37 -0
- package/src/hooks/ui/.use-horizontal-scrollbar.md +25 -34
- package/src/hooks/ui/.use-marquee-engine.md +73 -0
- package/src/hooks/ui/.use-notification-permission.md +49 -0
- package/src/hooks/ui/.use-reset-on-page-hidden.md +40 -0
- package/src/hooks/ui/.use-suppress-clone-focus.md +41 -0
- package/src/nats/.index.md +39 -0
- package/src/nats/.nats-provider.md +46 -0
- package/src/nats/.nats.md +38 -28
- package/src/nats/.shared-connection.md +56 -0
- package/src/nats/.use-nats-subscription.md +57 -0
- package/src/stories/.ActionsMenu.stories.md +57 -0
- package/src/stories/.Alert.stories.md +46 -0
- package/src/stories/.AnnouncementBar.stories.md +59 -32
- package/src/stories/.AppLayoutDrawer.stories.md +60 -0
- package/src/stories/.AppLayoutSidebar.stories.md +45 -0
- package/src/stories/.ApprovalBatchMessage.stories.md +46 -0
- package/src/stories/.ApprovalBatchMessageClient.stories.md +55 -0
- package/src/stories/.ApprovalRequestMessage.stories.md +50 -0
- package/src/stories/.ApprovalRequestMessageClient.stories.md +41 -0
- package/src/stories/.BlogCard.stories.md +52 -0
- package/src/stories/.Board.stories.md +25 -20
- package/src/stories/.Button.stories.md +35 -40
- package/src/stories/.CampaignCardAdmin.stories.md +38 -0
- package/src/stories/.CardsStrip.stories.md +39 -0
- package/src/stories/.CaseStudyCard.stories.md +41 -0
- package/src/stories/.ChatContainer.stories.md +41 -0
- package/src/stories/.ChatInlineVideoPill.stories.md +36 -0
- package/src/stories/.ChatMessageEnhanced.stories.md +51 -0
- package/src/stories/.ChatMingoInfoCards.stories.md +30 -0
- package/src/stories/.ChatTicketList.stories.md +38 -22
- package/src/stories/.ChatTypingIndicator.stories.md +47 -0
- package/src/stories/.CheckboxBlock.stories.md +34 -35
- package/src/stories/.ContextCompactionDisplay.stories.md +28 -0
- package/src/stories/.CustomerInterviewCard.stories.md +36 -0
- package/src/stories/.DashboardInfoCard.stories.md +40 -33
- package/src/stories/.DataRoomDocCard.stories.md +42 -0
- package/src/stories/.DataTable.stories.md +37 -32
- package/src/stories/.DatePicker.stories.md +34 -30
- package/src/stories/.EmbeddableChat.stories.md +45 -28
- package/src/stories/.EmptyState.stories.md +55 -0
- package/src/stories/.ErrorMessageDisplay.stories.md +45 -0
- package/src/stories/.FilterModal.stories.md +28 -22
- package/src/stories/.GenericEntityCard.stories.md +50 -0
- package/src/stories/.GitHubActivityCard.stories.md +41 -0
- package/src/stories/.GuideWelcome.stories.md +38 -0
- package/src/stories/.Header.stories.md +32 -22
- package/src/stories/.HubspotTicketCard.stories.md +41 -0
- package/src/stories/.InfoCard.stories.md +37 -26
- package/src/stories/.InfoCardRow.stories.md +48 -0
- package/src/stories/.InfoSection.stories.md +55 -0
- package/src/stories/.Input.stories.md +45 -35
- package/src/stories/.InvestorUpdateCard.stories.md +41 -0
- package/src/stories/.MarqueeWall.stories.md +53 -0
- package/src/stories/.MingoAiButton.stories.md +31 -0
- package/src/stories/.MingoChatModals.stories.md +47 -0
- package/src/stories/.MingoInfoCard.stories.md +50 -0
- package/src/stories/.MingoOnboardingCard.stories.md +19 -19
- package/src/stories/.MingoWelcome.stories.md +41 -0
- package/src/stories/.MobileNavPanel.stories.md +52 -0
- package/src/stories/.Modal.stories.md +19 -16
- package/src/stories/.MspOrganizationCard.stories.md +45 -0
- package/src/stories/.NotificationDrawer.stories.md +39 -28
- package/src/stories/.OSTypeBadge.stories.md +34 -25
- package/src/stories/.OnboardingGuideCard.stories.md +41 -0
- package/src/stories/.PageActions.stories.md +21 -21
- package/src/stories/.PageContainer.stories.md +29 -24
- package/src/stories/.PageLayout.stories.md +18 -35
- package/src/stories/.PolicyConfigurationPanel.stories.md +58 -0
- package/src/stories/.ProductReleaseCard.stories.md +39 -0
- package/src/stories/.ProgramCard.stories.md +51 -0
- package/src/stories/.QuickActionChip.stories.md +59 -0
- package/src/stories/.QuickActionMarquee.stories.md +51 -0
- package/src/stories/.QuickActionWall.stories.md +58 -0
- package/src/stories/.RoadmapCard.stories.md +41 -0
- package/src/stories/.ShellTypeBadge.stories.md +42 -22
- package/src/stories/.SlackMessageCard.stories.md +42 -0
- package/src/stories/.SlashCommandSuggestions.stories.md +21 -31
- package/src/stories/.SplitButton.stories.md +23 -25
- package/src/stories/.StackedRowsPanel.stories.md +65 -0
- package/src/stories/.TabSelector.stories.md +26 -38
- package/src/stories/.Tag.stories.md +32 -27
- package/src/stories/.ThinkingDisplay.stories.md +43 -0
- package/src/stories/.TicketCard.stories.md +60 -0
- package/src/stories/.TicketInfoSection.stories.md +28 -20
- package/src/stories/.TimeTracker.stories.md +35 -0
- package/src/stories/.Toaster.stories.md +26 -20
- package/src/stories/.ToolBadge.stories.md +34 -24
- package/src/stories/.ToolExecutionDisplay.stories.md +22 -20
- package/src/stories/.ToolExecutionDisplayClient.stories.md +33 -0
- package/src/stories/.VideoBitesStrip.stories.md +37 -0
- package/src/stories/.WarningBlock.stories.md +51 -0
- package/src/stories/__fixtures__/.chat-card-decorator.md +39 -0
- package/src/stories/__fixtures__/.chat-cards.md +57 -0
- package/src/stories/auth/.CompleteAccount.stories.md +36 -0
- package/src/stories/auth/.CreateOrganization.stories.md +52 -0
- package/src/stories/auth/.InviteLinkInvalid.stories.md +21 -0
- package/src/stories/auth/.Login.stories.md +32 -0
- package/src/stories/auth/.OpenFrameSso.stories.md +58 -0
- package/src/stories/auth/.PasswordReset.stories.md +49 -0
- package/src/styles/ods-interaction-states.css +32 -0
- package/src/types/.announcement.md +67 -35
- package/src/types/.blog.md +44 -41
- package/src/types/.case-study.md +31 -17
- package/src/types/.content-ref.md +37 -0
- package/src/types/.customer-interview.md +38 -38
- package/src/types/.doc-source.md +87 -0
- package/src/types/.entity-author.md +53 -0
- package/src/types/.entity-platform.md +40 -0
- package/src/types/.index.md +23 -17
- package/src/types/.marketing.md +32 -35
- package/src/types/.navigation.md +31 -19
- package/src/types/.os.types.md +30 -31
- package/src/types/.permissions.md +49 -35
- package/src/types/.platform.md +44 -28
- package/src/types/.product-release.md +59 -42
- package/src/types/.shell.types.md +46 -30
- package/src/types/.supabase.md +43 -29
- package/src/types/.tool.types.md +43 -23
- package/src/types/.video-processing.md +40 -31
- package/src/types/supabase.ts +80 -0
- package/src/types/video-processing.ts +1 -0
- package/src/utils/.announcement-storage.md +49 -17
- package/src/utils/.app-config.md +22 -18
- package/src/utils/.brand-marks.md +46 -0
- package/src/utils/.cn.md +40 -29
- package/src/utils/.color-analysis.md +34 -25
- package/src/utils/.common.md +43 -23
- package/src/utils/.content-href.md +64 -0
- package/src/utils/.content-ref-groups.md +51 -0
- package/src/utils/.date-utils.md +46 -35
- package/src/utils/.doc-path-utils.md +38 -0
- package/src/utils/.doc-tree-nav.md +51 -0
- package/src/utils/.embed-authed-fetch.md +48 -32
- package/src/utils/.embed-content-fetch.md +36 -0
- package/src/utils/.embed-url-converters.md +52 -0
- package/src/utils/.extract-items.md +49 -0
- package/src/utils/.faq-anchor.md +48 -0
- package/src/utils/.format.md +73 -55
- package/src/utils/.humanity-signals.md +59 -0
- package/src/utils/.index.md +73 -31
- package/src/utils/.list-url.md +43 -0
- package/src/utils/.markdown-section-extractor.md +57 -0
- package/src/utils/.markdown-to-plain.md +51 -0
- package/src/utils/.media-carousel-utils-stub.md +42 -31
- package/src/utils/.ods-color-utils.md +84 -43
- package/src/utils/.og-placeholder.md +45 -0
- package/src/utils/.page-header-constants.md +26 -0
- package/src/utils/.platform-config.md +34 -34
- package/src/utils/.release-badge.md +47 -0
- package/src/utils/.release-cover.md +45 -0
- package/src/utils/.same-page-hash-nav.md +45 -0
- package/src/utils/.scroll-into-view.md +32 -25
- package/src/utils/.seo-description.md +37 -0
- package/src/utils/.seo-title.md +25 -0
- package/src/utils/.social-embed-cache.md +37 -0
- package/src/utils/.source-icons.md +30 -34
- package/src/utils/.suggestion-url.md +46 -0
- package/src/utils/.tool-utils.md +39 -24
- package/src/utils/.tree-builder.md +64 -0
- package/src/utils/.video-bite-id.md +42 -0
- package/src/utils/announcement-storage.ts +9 -18
- package/src/utils/dev-sections/.dev-section-param-keys.md +51 -0
- package/src/utils/dev-sections/.openframe-dev-sections.md +40 -28
- package/src/utils/dismiss-cookie.ts +55 -0
- package/src/utils/dismissal-storage.ts +38 -0
- package/src/utils/index.ts +3 -0
- package/dist/chunk-BBUEY73L.js.map +0 -1
- package/dist/chunk-G3UN2DXU.cjs.map +0 -1
- package/dist/chunk-OWMLWJQY.cjs.map +0 -1
- package/dist/chunk-SASR7SK5.js.map +0 -1
- package/src/components/chat/utils/.onboarding-icons.md +0 -28
- package/src/hooks/.use-og-placeholder.md +0 -51
- /package/dist/{chunk-MGKCS6KS.js.map → chunk-3WCARCI4.js.map} +0 -0
- /package/dist/{chunk-Y3Y2DLNO.js.map → chunk-6UGYBCEN.js.map} +0 -0
- /package/dist/{chunk-PSPWT2Q5.js.map → chunk-7LWXWXEY.js.map} +0 -0
- /package/dist/{chunk-VTSRDC4W.js.map → chunk-CKC3EAYT.js.map} +0 -0
- /package/dist/{chunk-ZRANZNEA.js.map → chunk-JJE5TUZK.js.map} +0 -0
- /package/dist/{chunk-66BNAFO6.js.map → chunk-JQIUBFHL.js.map} +0 -0
- /package/dist/{chunk-2DIOV7BR.js.map → chunk-UPN6EFOM.js.map} +0 -0
- /package/dist/{chunk-4SMRQ4SN.js.map → chunk-WBL5Y4PS.js.map} +0 -0
- /package/dist/{chunk-FP4H6Y5O.js.map → chunk-WPYPSIY2.js.map} +0 -0
- /package/dist/{chunk-R5WJJL4V.js.map → chunk-X5X43HFV.js.map} +0 -0
- /package/dist/{chunk-DEHZ5CTC.js.map → chunk-XTWKDMCG.js.map} +0 -0
|
@@ -1,45 +1,53 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
A
|
|
1
|
+
<!-- source-hash: f200d2146a81060f8cc6dc2a88c6bc69 -->
|
|
2
|
+
A button component that renders a labeled trigger with a trailing chevron, opening an `ActionsMenuDropdown` on click. The chevron rotates 180° when the menu is open, and the entire button surface lightens on hover/open state.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
6
|
+
### `DropdownButton`
|
|
7
|
+
The primary export. A composite trigger + dropdown built on top of `ActionsMenuDropdown`. Key behaviors:
|
|
8
|
+
- Manages open/closed state internally via `React.useState`
|
|
9
|
+
- Prevents interaction when `disabled` (blocks `onPointerDown` and ignores open-change calls)
|
|
10
|
+
- Chevron animates via `rotate-180` when `open === true`
|
|
11
|
+
- Renders an optional leading `icon` before the label text
|
|
12
|
+
- Supports positioning via `align` (`start | center | end`) and `side` (`top | right | bottom | left`)
|
|
10
13
|
|
|
11
|
-
###
|
|
14
|
+
### `DropdownButtonProps`
|
|
15
|
+
TypeScript interface defining the public API:
|
|
12
16
|
|
|
13
17
|
| Prop | Type | Default | Description |
|
|
14
|
-
|
|
15
|
-
| `label` | `string` | — | Button label
|
|
18
|
+
|---|---|---|---|
|
|
19
|
+
| `label` | `string` | — | Button text and fallback aria-label |
|
|
16
20
|
| `icon` | `ReactNode` | — | Optional leading icon |
|
|
17
|
-
| `items` | `
|
|
18
|
-
| `
|
|
19
|
-
| `
|
|
20
|
-
| `
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
- **Single click target** — label and chevron areas are visually separated by a border seam but share one `<button>` element
|
|
25
|
-
- **Open state styles** — background lightens (`ods-bg-hover`) when the menu is open or hovered
|
|
26
|
-
- **Chevron rotation** — animates 180° when the dropdown is open
|
|
27
|
-
- **Disabled guard** — blocks `onOpenChange` and prevents pointer events when `disabled` is set
|
|
21
|
+
| `items` | `ActionsMenuItem[]` | — | Dropdown menu items |
|
|
22
|
+
| `disabled` | `boolean` | — | Disables interaction and dims the button |
|
|
23
|
+
| `align` | `'start' \| 'center' \| 'end'` | `'end'` | Dropdown horizontal alignment |
|
|
24
|
+
| `side` | `'top' \| 'right' \| 'bottom' \| 'left'` | `'bottom'` | Dropdown preferred side |
|
|
25
|
+
| `ariaLabel` | `string` | `label` | Overrides the accessible label |
|
|
26
|
+
| `className` | `string` | — | Additional classes on the button root |
|
|
28
27
|
|
|
29
28
|
## Usage Example
|
|
30
29
|
|
|
31
30
|
```typescript
|
|
32
31
|
import { DropdownButton } from './dropdown-button'
|
|
33
|
-
import {
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
label
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
32
|
+
import { PlusIcon } from '../icons-v2-generated'
|
|
33
|
+
|
|
34
|
+
const actions = [
|
|
35
|
+
{ label: 'Export CSV', onSelect: () => handleExport('csv') },
|
|
36
|
+
{ label: 'Export PDF', onSelect: () => handleExport('pdf') },
|
|
37
|
+
{ label: 'Delete', onSelect: handleDelete, destructive: true },
|
|
38
|
+
]
|
|
39
|
+
|
|
40
|
+
export function ToolbarActions() {
|
|
41
|
+
return (
|
|
42
|
+
<DropdownButton
|
|
43
|
+
label="Export"
|
|
44
|
+
icon={<PlusIcon />}
|
|
45
|
+
items={actions}
|
|
46
|
+
align="end"
|
|
47
|
+
side="bottom"
|
|
48
|
+
/>
|
|
49
|
+
)
|
|
50
|
+
}
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
> **Source:** [`dropdown-button.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/dropdown-button.tsx)
|
|
@@ -1,47 +1,64 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
A
|
|
1
|
+
<!-- source-hash: 616939ebe1c1aac14b882a4c493b1f39 -->
|
|
2
|
+
A styled dropdown menu component built on Radix UI primitives, providing accessible, animated dropdown menus with support for nested submenus, checkbox/radio items, and portal-aware rendering that inherits the correct stacking context (e.g. inside drawers).
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
6
|
+
| Export | Description |
|
|
7
|
+
|---|---|
|
|
8
|
+
| `DropdownMenu` | Root component wrapping the entire menu |
|
|
9
|
+
| `DropdownMenuTrigger` | Element that toggles the menu open/closed |
|
|
10
|
+
| `DropdownMenuContent` | Menu panel, portalled into the active container via `usePortalContainer` |
|
|
11
|
+
| `DropdownMenuItem` | Standard clickable menu item with optional `inset` indent |
|
|
12
|
+
| `DropdownMenuCheckboxItem` | Item with a checkmark indicator and controlled `checked` state |
|
|
13
|
+
| `DropdownMenuRadioItem` | Item within a radio group, shows a filled circle when selected |
|
|
14
|
+
| `DropdownMenuRadioGroup` | Groups `DropdownMenuRadioItem` components for single-selection |
|
|
15
|
+
| `DropdownMenuSub` | Container for a nested submenu |
|
|
16
|
+
| `DropdownMenuSubTrigger` | Item that opens a nested submenu, with a `ChevronRight` icon |
|
|
17
|
+
| `DropdownMenuSubContent` | Panel for the nested submenu |
|
|
18
|
+
| `DropdownMenuLabel` | Non-interactive section header with optional `inset` |
|
|
19
|
+
| `DropdownMenuSeparator` | Horizontal divider between menu sections |
|
|
20
|
+
| `DropdownMenuShortcut` | Right-aligned keyboard shortcut hint text |
|
|
21
|
+
| `DropdownMenuGroup` | Logical grouping of related items |
|
|
22
|
+
| `DropdownMenuPortal` | Direct access to Radix's portal primitive |
|
|
17
23
|
|
|
18
24
|
## Usage Example
|
|
19
25
|
|
|
20
26
|
```typescript
|
|
21
27
|
import {
|
|
22
28
|
DropdownMenu,
|
|
29
|
+
DropdownMenuTrigger,
|
|
23
30
|
DropdownMenuContent,
|
|
24
31
|
DropdownMenuItem,
|
|
25
|
-
|
|
32
|
+
DropdownMenuCheckboxItem,
|
|
26
33
|
DropdownMenuSeparator,
|
|
27
|
-
|
|
34
|
+
DropdownMenuShortcut,
|
|
35
|
+
DropdownMenuSub,
|
|
36
|
+
DropdownMenuSubTrigger,
|
|
37
|
+
DropdownMenuSubContent,
|
|
28
38
|
} from "./dropdown-menu"
|
|
29
39
|
|
|
30
|
-
function
|
|
40
|
+
export function ActionsMenu() {
|
|
31
41
|
return (
|
|
32
42
|
<DropdownMenu>
|
|
33
|
-
<DropdownMenuTrigger>Open
|
|
43
|
+
<DropdownMenuTrigger>Open</DropdownMenuTrigger>
|
|
34
44
|
<DropdownMenuContent>
|
|
35
|
-
<
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
<
|
|
45
|
+
<DropdownMenuItem>
|
|
46
|
+
Profile <DropdownMenuShortcut>⌘P</DropdownMenuShortcut>
|
|
47
|
+
</DropdownMenuItem>
|
|
48
|
+
<DropdownMenuCheckboxItem checked={true}>
|
|
49
|
+
Show Notifications
|
|
50
|
+
</DropdownMenuCheckboxItem>
|
|
39
51
|
<DropdownMenuSeparator />
|
|
40
|
-
<
|
|
52
|
+
<DropdownMenuSub>
|
|
53
|
+
<DropdownMenuSubTrigger>More Options</DropdownMenuSubTrigger>
|
|
54
|
+
<DropdownMenuSubContent>
|
|
55
|
+
<DropdownMenuItem>Settings</DropdownMenuItem>
|
|
56
|
+
</DropdownMenuSubContent>
|
|
57
|
+
</DropdownMenuSub>
|
|
41
58
|
</DropdownMenuContent>
|
|
42
59
|
</DropdownMenu>
|
|
43
60
|
)
|
|
44
61
|
}
|
|
45
62
|
```
|
|
46
63
|
|
|
47
|
-
|
|
64
|
+
> **Portal context:** `DropdownMenuContent` uses `usePortalContainer` to render into the nearest active container (e.g. a drawer), preventing z-index stacking issues. It falls back to `document.body` when no container is provided.
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
<!-- source-hash: 874180cd50bd3a257869df027cbe8b99 -->
|
|
2
|
+
Segmented `HH:MM:SS` duration input component where each time unit (hours, minutes, seconds) is an independently focusable field with keyboard navigation and auto-advance behavior.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
- **`DurationInput`** — Main component export. Renders three linked `<input>` fields separated by colon delimiters.
|
|
7
|
+
- **`DurationInputProps`** — Interface accepting `value` (`HH:MM:SS` string), `onChange` callback, optional `invalid` flag, and `className`.
|
|
8
|
+
- **`SEGMENT_META`** — Tuple defining per-segment constraints: label, placeholder, and max value (99 for hours, 59 for minutes/seconds).
|
|
9
|
+
- **`commit`** — Internal helper that syncs segment state, fires `onChange`, and optionally advances focus to the next segment.
|
|
10
|
+
- **`split` / `compose`** — Converts between the `HH:MM:SS` string format and the internal `[HH, MM, SS]` tuple.
|
|
11
|
+
|
|
12
|
+
## Usage Example
|
|
13
|
+
|
|
14
|
+
```typescript
|
|
15
|
+
import { useState } from "react";
|
|
16
|
+
import { DurationInput } from "@openframe/ui";
|
|
17
|
+
|
|
18
|
+
export function TimerForm() {
|
|
19
|
+
const [duration, setDuration] = useState("01:30:00");
|
|
20
|
+
|
|
21
|
+
return (
|
|
22
|
+
<DurationInput
|
|
23
|
+
value={duration}
|
|
24
|
+
onChange={setDuration}
|
|
25
|
+
invalid={duration === "00:00:00"}
|
|
26
|
+
/>
|
|
27
|
+
);
|
|
28
|
+
}
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## Keyboard Behavior
|
|
32
|
+
|
|
33
|
+
| Key | Action |
|
|
34
|
+
|---|---|
|
|
35
|
+
| `0–9` | Fill current segment; auto-advance when 2 digits entered or unambiguous (e.g., `6–9` in MM/SS) |
|
|
36
|
+
| `ArrowUp` / `ArrowDown` | Increment/decrement current segment with wrap-around |
|
|
37
|
+
| `ArrowLeft` / `ArrowRight` | Move between segments at boundary |
|
|
38
|
+
| `Backspace` | Clear and move to previous segment when empty |
|
|
39
|
+
| `:` | Advance to next segment |
|
|
40
|
+
|
|
41
|
+
Values are clamped to segment maximums (MM/SS ≤ 59, HH ≤ 99), making it impossible to produce an invalid duration. External value changes (e.g., form resets) are adopted without interrupting in-progress edits.
|
|
@@ -1,46 +1,50 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
|
|
1
|
+
<!-- source-hash: e7e9a04ae63cfe62a3216f3d6d05a1e7 -->
|
|
2
|
+
Renders an entity avatar that displays either an authenticated image or an initials-based fallback when the image is unavailable or fails to load.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
### `
|
|
6
|
+
### `EntityImage`
|
|
7
|
+
A client-side React component that handles image loading with graceful degradation.
|
|
8
|
+
|
|
9
|
+
**Props (`EntityImageProps`):**
|
|
10
|
+
|
|
7
11
|
| Prop | Type | Description |
|
|
8
|
-
|
|
9
|
-
| `src` | `string \| null` | Image URL
|
|
10
|
-
| `alt` | `string` | Alt text
|
|
12
|
+
|---|---|---|
|
|
13
|
+
| `src` | `string \| null` | Image URL (resolved through auth hook) |
|
|
14
|
+
| `alt` | `string` | Alt text; also used as initials source |
|
|
11
15
|
| `fallbackText` | `string` | Overrides `alt` as the initials source |
|
|
12
16
|
| `className` | `string` | Additional CSS classes |
|
|
13
17
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
-
|
|
19
|
-
-
|
|
20
|
-
- Image error state resets automatically when `src` changes
|
|
18
|
+
**Behavior:**
|
|
19
|
+
- Resolves authenticated image URLs via `useAuthedImageSrc`
|
|
20
|
+
- Resets error state when the resolved source changes
|
|
21
|
+
- Shows an initials badge (via `getFirstLastInitials`) when the image fails or is absent
|
|
22
|
+
- Falls back to `"?"` when no initials can be derived
|
|
23
|
+
- Responsive sizing: `52px` on mobile, `60px` on `md+` breakpoints
|
|
21
24
|
|
|
22
25
|
## Usage Example
|
|
23
26
|
|
|
24
27
|
```typescript
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
// Renders the avatar image
|
|
28
|
+
// Basic usage with an image URL
|
|
28
29
|
<EntityImage
|
|
29
|
-
src="https://cdn.example.com/avatars/
|
|
30
|
-
alt="
|
|
30
|
+
src="https://cdn.example.com/avatars/user-123.png"
|
|
31
|
+
alt="Jane Doe"
|
|
31
32
|
/>
|
|
32
33
|
|
|
33
|
-
//
|
|
34
|
+
// With a custom fallback text for initials
|
|
34
35
|
<EntityImage
|
|
35
36
|
src={null}
|
|
36
|
-
alt="
|
|
37
|
-
|
|
37
|
+
alt="Jane Doe"
|
|
38
|
+
fallbackText="Jane Smith"
|
|
39
|
+
className="ring-2 ring-ods-primary"
|
|
38
40
|
/>
|
|
39
41
|
|
|
40
|
-
//
|
|
41
|
-
<EntityImage
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
42
|
+
// Initials-only (no src provided) — renders "JD"
|
|
43
|
+
<EntityImage alt="John Doe" />
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## Notes
|
|
47
|
+
|
|
48
|
+
- Requires the `useAuthedImageSrc` hook to inject auth headers/tokens into image requests
|
|
49
|
+
- Initials are derived using `getFirstLastInitials`, which extracts first and last name initials from the provided text
|
|
50
|
+
- Images use `object-contain` to preserve aspect ratio within the fixed square bounds
|
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
|
|
1
|
+
<!-- source-hash: 52edfb71ac657ff2d7c4cc10e092d7b1 -->
|
|
2
|
+
A client-side React component that renders styled error, warning, and info state banners with optional action buttons and convenience wrappers for common error scenarios.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
6
|
### `ErrorState`
|
|
7
|
-
The
|
|
7
|
+
The primary component accepting the following props:
|
|
8
8
|
|
|
9
9
|
| Prop | Type | Default | Description |
|
|
10
10
|
|------|------|---------|-------------|
|
|
11
|
-
| `title` | `string` | `'Error'` | Heading text
|
|
12
|
-
| `message` | `string` | — |
|
|
13
|
-
| `variant` | `'error' \| 'warning' \| 'info'` | `'error'` |
|
|
11
|
+
| `title` | `string` | `'Error'` | Heading text |
|
|
12
|
+
| `message` | `string` | — | Body message (**required**) |
|
|
13
|
+
| `variant` | `'error' \| 'warning' \| 'info'` | `'error'` | Visual style using ODS design tokens |
|
|
14
14
|
| `showIcon` | `boolean` | `true` | Toggles the `AlertTriangle` icon |
|
|
15
|
-
| `showRetry` | `boolean` | `false` | Shows "Try Again" button
|
|
16
|
-
| `showHome` | `boolean` | `false` | Shows "Go Home" button
|
|
17
|
-
| `onRetry` | `() => void` | — |
|
|
18
|
-
| `onHome` | `() => void` | — |
|
|
19
|
-
| `className` | `string` | — | Applied to
|
|
20
|
-
| `containerClassName` | `string` | — | Applied to
|
|
15
|
+
| `showRetry` | `boolean` | `false` | Shows "Try Again" button |
|
|
16
|
+
| `showHome` | `boolean` | `false` | Shows "Go Home" button |
|
|
17
|
+
| `onRetry` | `() => void` | — | Retry callback |
|
|
18
|
+
| `onHome` | `() => void` | — | Home navigation callback |
|
|
19
|
+
| `className` | `string` | — | Applied to inner card |
|
|
20
|
+
| `containerClassName` | `string` | — | Applied to outer wrapper |
|
|
21
21
|
|
|
22
22
|
### Convenience Components
|
|
23
23
|
|
|
@@ -27,31 +27,35 @@ The core component accepting the following props:
|
|
|
27
27
|
| `LoadError` | `error` | Retry |
|
|
28
28
|
| `NotFoundError` | `warning` | Home |
|
|
29
29
|
|
|
30
|
+
> **Note on ODS tokens:** Variant styles use `-secondary` background tokens (e.g., `bg-ods-error-secondary`) rather than Tailwind alpha modifiers, which are incompatible with hex-based CSS custom properties in Tailwind 3.x.
|
|
31
|
+
|
|
30
32
|
## Usage Example
|
|
31
33
|
|
|
32
34
|
```typescript
|
|
33
|
-
import { ErrorState,
|
|
35
|
+
import { ErrorState, LoadError, NotFoundError } from './error-state'
|
|
34
36
|
|
|
35
|
-
//
|
|
37
|
+
// Generic error with retry
|
|
36
38
|
<ErrorState
|
|
37
|
-
title="
|
|
38
|
-
message="
|
|
39
|
-
variant="
|
|
39
|
+
title="Sync Failed"
|
|
40
|
+
message="Could not reach the server. Please try again."
|
|
41
|
+
variant="error"
|
|
40
42
|
showRetry
|
|
41
43
|
onRetry={() => refetch()}
|
|
42
44
|
/>
|
|
43
45
|
|
|
44
|
-
// Convenience
|
|
45
|
-
<PageError
|
|
46
|
-
message="Something went wrong loading this page."
|
|
47
|
-
onRetry={() => router.refresh()}
|
|
48
|
-
onHome={() => router.push('/')}
|
|
49
|
-
/>
|
|
50
|
-
|
|
46
|
+
// Convenience: loading error
|
|
51
47
|
<LoadError
|
|
52
|
-
message="Failed to load
|
|
53
|
-
onRetry={() =>
|
|
48
|
+
message="Failed to load devices."
|
|
49
|
+
onRetry={() => reload()}
|
|
54
50
|
/>
|
|
55
51
|
|
|
52
|
+
// Convenience: 404-style warning
|
|
56
53
|
<NotFoundError onHome={() => router.push('/')} />
|
|
54
|
+
|
|
55
|
+
// Info banner (no icon)
|
|
56
|
+
<ErrorState
|
|
57
|
+
variant="info"
|
|
58
|
+
message="No results match your current filters."
|
|
59
|
+
showIcon={false}
|
|
60
|
+
/>
|
|
57
61
|
```
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
<!-- source-hash: d542ea42b0980a55a14eb86a5aae0060 -->
|
|
2
|
+
Shared progressive-disclosure primitive that clamps long content to a fixed height with a CSS fade mask and a "Show N more / Show less" toggle button.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
### `FadePreviewProps`
|
|
7
|
+
|
|
8
|
+
| Prop | Type | Default | Description |
|
|
9
|
+
|---|---|---|---|
|
|
10
|
+
| `hiddenCount` | `number` | — | Items hidden while collapsed; drives "Show N more" label. `<= 0` disables clamping entirely |
|
|
11
|
+
| `collapsedHeight` | `number` | `120` | Collapsed height in px before the fade mask kicks in |
|
|
12
|
+
| `resetKey` | `unknown` | — | Resets expanded state when value changes (e.g. on data refetch) |
|
|
13
|
+
| `children` | `React.ReactNode` | — | Content to render inside the clamp wrapper |
|
|
14
|
+
|
|
15
|
+
### `FadePreview`
|
|
16
|
+
|
|
17
|
+
Stateful component managing expand/collapse. When `hiddenCount <= 0`, renders children unwrapped with no height clamp — avoids clipping single-entry sections. Expanded height is measured from `scrollHeight` to handle variable-length content.
|
|
18
|
+
|
|
19
|
+
## Usage Example
|
|
20
|
+
|
|
21
|
+
```typescript
|
|
22
|
+
import { FadePreview } from '@/components/fade-preview';
|
|
23
|
+
|
|
24
|
+
// Basic usage — hide overflow items in a changelog list
|
|
25
|
+
<FadePreview hiddenCount={releases.length - 3} resetKey={releases.length}>
|
|
26
|
+
{releases.map(r => <ReleaseEntry key={r.id} release={r} />)}
|
|
27
|
+
</FadePreview>
|
|
28
|
+
|
|
29
|
+
// Taller rows (e.g. a delivery table) — increase collapsed height
|
|
30
|
+
<FadePreview hiddenCount={rows.length - 5} collapsedHeight={240}>
|
|
31
|
+
<DeliveryTable rows={rows} />
|
|
32
|
+
</FadePreview>
|
|
33
|
+
|
|
34
|
+
// Single entry — no fade, no toggle rendered
|
|
35
|
+
<FadePreview hiddenCount={0}>
|
|
36
|
+
<SingleEntry entry={entry} />
|
|
37
|
+
</FadePreview>
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
> **Do not re-inline the mask/clamp/toggle pattern.** All fade-preview surfaces must compose this component — it is the single shared implementation extracted from `ReleaseChangelogSection`.
|
|
41
|
+
|
|
42
|
+
## Source
|
|
43
|
+
|
|
44
|
+
[`fade-preview.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/fade-preview.tsx)
|
|
@@ -1,47 +1,58 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
A layout wrapper component that
|
|
1
|
+
<!-- source-hash: bd15d4489bb0eca1b2faabacba129705 -->
|
|
2
|
+
A layout wrapper component that adds an optional label above and a status message below any form field, handling the visual chrome (label + feedback text) while letting the field itself remain unstyled.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
6
|
### `FieldWrapper`
|
|
7
|
-
A `forwardRef` component that wraps form
|
|
7
|
+
A `forwardRef` component that wraps form fields with consistent label and feedback message rendering.
|
|
8
|
+
|
|
9
|
+
**Props (`FieldWrapperProps`)**
|
|
8
10
|
|
|
9
|
-
### `FieldWrapperProps`
|
|
10
11
|
| Prop | Type | Default | Description |
|
|
11
12
|
|------|------|---------|-------------|
|
|
12
13
|
| `label` | `string` | — | Label text rendered above the field |
|
|
13
|
-
| `error` | `string` | — |
|
|
14
|
-
| `errorVariant` | `"error" \| "warning"` | `"error"` |
|
|
15
|
-
| `className` | `string` | — | Additional
|
|
16
|
-
| `children` | `React.ReactNode` | — | The
|
|
14
|
+
| `error` | `string` | — | Status/feedback message rendered below the field |
|
|
15
|
+
| `errorVariant` | `"error" \| "warning" \| "success" \| "muted"` | `"error"` | Color variant for the feedback message |
|
|
16
|
+
| `className` | `string` | — | Additional class applied to the outer wrapper |
|
|
17
|
+
| `children` | `React.ReactNode` | — | The field element(s) to wrap |
|
|
18
|
+
|
|
19
|
+
**Behavior:**
|
|
20
|
+
- When neither `label` nor `error` is present, the wrapper renders as `contents` (no layout box introduced).
|
|
21
|
+
- When either exists, it renders as a full-width flex column.
|
|
22
|
+
- The feedback message clamps to 2 lines with ellipsis; the full text is accessible via the native `title` tooltip.
|
|
17
23
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
24
|
+
**Color Variants:**
|
|
25
|
+
|
|
26
|
+
| Variant | Color token |
|
|
27
|
+
|---------|------------|
|
|
28
|
+
| `error` | `text-ods-error` |
|
|
29
|
+
| `warning` | `text-ods-warning` |
|
|
30
|
+
| `success` | `text-ods-success` |
|
|
31
|
+
| `muted` | `text-ods-text-secondary` |
|
|
22
32
|
|
|
23
33
|
## Usage Example
|
|
24
34
|
|
|
25
35
|
```typescript
|
|
26
|
-
import { FieldWrapper } from "
|
|
27
|
-
import { TextInput } from "./text-input"
|
|
36
|
+
import { FieldWrapper } from "@openframe-oss-lib/components"
|
|
28
37
|
|
|
29
|
-
//
|
|
38
|
+
// Basic usage with label and error feedback
|
|
30
39
|
<FieldWrapper label="Email address" error="Invalid email format">
|
|
31
|
-
<
|
|
40
|
+
<input type="email" className="..." />
|
|
32
41
|
</FieldWrapper>
|
|
33
42
|
|
|
34
|
-
//
|
|
43
|
+
// Success state after validation
|
|
35
44
|
<FieldWrapper
|
|
36
45
|
label="Username"
|
|
37
|
-
error="Username is
|
|
38
|
-
errorVariant="
|
|
46
|
+
error="Username is available!"
|
|
47
|
+
errorVariant="success"
|
|
39
48
|
>
|
|
40
|
-
<
|
|
49
|
+
<input type="text" className="..." />
|
|
41
50
|
</FieldWrapper>
|
|
42
51
|
|
|
43
|
-
//
|
|
52
|
+
// Passthrough — no wrapper box introduced in the DOM
|
|
44
53
|
<FieldWrapper>
|
|
45
|
-
<
|
|
54
|
+
<input type="text" className="..." />
|
|
46
55
|
</FieldWrapper>
|
|
47
|
-
```
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
> **Source:** [`field-wrapper.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/field-wrapper.tsx)
|
|
@@ -1,42 +1,54 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
A
|
|
1
|
+
<!-- source-hash: 4c976421380cc16af600736693d5afa7 -->
|
|
2
|
+
A client-side React component providing a drag-and-drop file upload zone with support for both simple synchronous file handling and async managed upload workflows (e.g., presigned URL uploads).
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
6
|
### Interfaces
|
|
7
|
-
- **`ManagedFileEntry`** — Represents an async-uploaded file with `id`, `fileName`, `fileSize`, `status` (`uploading` | `uploaded` | `error`), and optional `error` message
|
|
8
|
-
- **`FileUploadProps`** — Full prop interface supporting both simple (`value`/`onChange`) and managed (`managedFiles`/`onRemoveManagedFile`) modes
|
|
9
7
|
|
|
10
|
-
|
|
11
|
-
- **`
|
|
12
|
-
|
|
13
|
-
|
|
8
|
+
- **`ManagedFileEntry`** — Represents an async upload entry with `id`, `fileName`, `fileSize`, `status` (`"uploading" | "uploaded" | "error"`), and optional `error` message.
|
|
9
|
+
- **`FileUploadProps`** — Full prop surface for the component, supporting both simple (`value`/`onChange`) and managed (`managedFiles`/`onRemoveManagedFile`) modes.
|
|
10
|
+
|
|
11
|
+
### Internal Utilities
|
|
12
|
+
|
|
13
|
+
- **`formatFileSize(bytes)`** — Converts byte count to a human-readable string (B, KB, MB, GB).
|
|
14
|
+
- **`matchesAccept(file, accept)`** — Validates a `File` against an `accept` string (extension, wildcard MIME, or exact MIME).
|
|
15
|
+
- **`dragHasFiles(e)`** — Checks whether a native `DragEvent` carries file payloads.
|
|
14
16
|
|
|
15
17
|
### Component
|
|
16
|
-
|
|
18
|
+
|
|
19
|
+
- **`FileUpload`** — Main export. Renders a dropzone with file list, validation, and optional window-level drop capture.
|
|
17
20
|
|
|
18
21
|
## Usage Example
|
|
19
22
|
|
|
20
23
|
```typescript
|
|
21
|
-
// Simple single
|
|
24
|
+
// Simple mode — synchronous, single file
|
|
22
25
|
<FileUpload
|
|
23
26
|
value={file}
|
|
24
27
|
onChange={(f) => setFile(f as File)}
|
|
25
28
|
accept="image/*"
|
|
26
29
|
maxSize={5 * 1024 * 1024}
|
|
27
|
-
fieldLabel="
|
|
30
|
+
fieldLabel="Attachment"
|
|
28
31
|
/>
|
|
29
32
|
|
|
30
|
-
//
|
|
33
|
+
// Managed mode — async upload workflow
|
|
31
34
|
<FileUpload
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
onRemoveManagedFile={(id) =>
|
|
35
|
+
managedFiles={uploadedFiles}
|
|
36
|
+
onChange={(files) => uploadToPresignedUrl(files as File[])}
|
|
37
|
+
onRemoveManagedFile={(id) => removeFile(id)}
|
|
38
|
+
onDownloadManagedFile={(id) => downloadFile(id)}
|
|
35
39
|
multiple
|
|
40
|
+
accept=".pdf,.doc,.docx"
|
|
36
41
|
maxFiles={5}
|
|
37
|
-
acceptWindowDrops
|
|
38
|
-
label="Drop attachments here"
|
|
42
|
+
acceptWindowDrops // captures drops anywhere in the window
|
|
39
43
|
/>
|
|
40
44
|
```
|
|
41
45
|
|
|
42
|
-
|
|
46
|
+
## Key Behaviors
|
|
47
|
+
|
|
48
|
+
| Feature | Detail |
|
|
49
|
+
|---|---|
|
|
50
|
+
| Mode detection | `managedFiles !== undefined` switches to managed mode |
|
|
51
|
+
| Validation | Type, size, and count checks before `onChange` fires |
|
|
52
|
+
| Window drops | `acceptWindowDrops` suppresses browser default and routes drops here |
|
|
53
|
+
| Single-file mode | Dropzone hides after a file is selected |
|
|
54
|
+
| Scroll cap | `maxListHeight` constrains the file list with independent scroll |
|