@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,52 +1,64 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
Cursor-based pagination UI components
|
|
1
|
+
<!-- source-hash: 9a5725df328375e394d39d73c7bbb936 -->
|
|
2
|
+
Cursor-based pagination UI components supporting forward/backward navigation with optional reset-to-first-page functionality.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
6
|
### `CursorPagination`
|
|
7
|
-
|
|
7
|
+
|
|
8
|
+
Full-featured pagination bar with info text display and configurable navigation controls.
|
|
9
|
+
|
|
10
|
+
**Props:**
|
|
11
|
+
|
|
12
|
+
| Prop | Type | Default | Description |
|
|
13
|
+
|------|------|---------|-------------|
|
|
14
|
+
| `hasNextPage` | `boolean` | — | Whether a next page exists |
|
|
15
|
+
| `hasPreviousPage` | `boolean` | — | Whether a previous page exists |
|
|
16
|
+
| `isFirstPage` | `boolean` | `true` | Disables reset/previous when on first page |
|
|
17
|
+
| `startCursor` | `string \| null` | — | Cursor passed to `onPrevious` |
|
|
18
|
+
| `endCursor` | `string \| null` | — | Cursor passed to `onNext` |
|
|
19
|
+
| `currentCount` | `number` | — | Items shown in the current page |
|
|
20
|
+
| `totalCount` | `number \| null` | — | Total item count (optional) |
|
|
21
|
+
| `itemName` | `string` | `'items'` | Label used in display text |
|
|
22
|
+
| `loading` | `boolean` | `false` | Disables all buttons |
|
|
23
|
+
| `onNext` | `(cursor: string) => void` | — | Called with `endCursor` |
|
|
24
|
+
| `onPrevious` | `(cursor: string) => void` | — | Called with `startCursor` |
|
|
25
|
+
| `onReset` | `() => void` | — | Replaces Previous button with a reset/home button |
|
|
26
|
+
| `showInfo` | `boolean` | `true` | Toggles the item count display text |
|
|
27
|
+
| `compact` | `boolean` | `false` | Reduces padding and hides button labels on mobile |
|
|
28
|
+
| `resetButtonLabel` | `string` | `'First'` | Label for the reset button |
|
|
29
|
+
| `resetButtonIcon` | `'home' \| 'rotate'` | `'home'` | Icon for the reset button |
|
|
8
30
|
|
|
9
31
|
### `CursorPaginationSimple`
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
### `CursorPaginationProps`
|
|
13
|
-
Full interface supporting:
|
|
14
|
-
|
|
15
|
-
| Prop | Type | Description |
|
|
16
|
-
|------|------|-------------|
|
|
17
|
-
| `hasNextPage` | `boolean` | Required. Enables/disables Next button |
|
|
18
|
-
| `hasPreviousPage` | `boolean` | Enables/disables Previous button |
|
|
19
|
-
| `isFirstPage` | `boolean` | Disables reset button when already on page 1 |
|
|
20
|
-
| `startCursor` / `endCursor` | `string \| null` | Relay-style cursors passed back on navigation |
|
|
21
|
-
| `totalCount` / `currentCount` | `number` | Drives the info display text |
|
|
22
|
-
| `onNext` / `onPrevious` / `onReset` | `(cursor) => void` | Navigation callbacks |
|
|
23
|
-
| `compact` | `boolean` | Reduces padding; hides button labels on mobile |
|
|
24
|
-
| `resetButtonIcon` | `'home' \| 'rotate'` | Icon shown on the first-page reset button |
|
|
32
|
+
|
|
33
|
+
Compact icon-only variant using transparent buttons — accepts a subset of `CursorPaginationProps`.
|
|
25
34
|
|
|
26
35
|
## Usage Example
|
|
27
36
|
|
|
28
37
|
```typescript
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
// Full pagination bar
|
|
38
|
+
// Full pagination bar with reset
|
|
32
39
|
<CursorPagination
|
|
33
40
|
hasNextPage={pageInfo.hasNextPage}
|
|
34
41
|
hasPreviousPage={pageInfo.hasPreviousPage}
|
|
42
|
+
isFirstPage={currentPage === 0}
|
|
35
43
|
startCursor={pageInfo.startCursor}
|
|
36
44
|
endCursor={pageInfo.endCursor}
|
|
37
45
|
currentCount={items.length}
|
|
38
|
-
totalCount={
|
|
46
|
+
totalCount={500}
|
|
39
47
|
itemName="tickets"
|
|
40
48
|
onNext={(cursor) => fetchPage({ after: cursor })}
|
|
41
49
|
onReset={() => fetchPage({})}
|
|
42
50
|
compact
|
|
43
51
|
/>
|
|
44
52
|
|
|
45
|
-
// Icon-only
|
|
53
|
+
// Icon-only simple variant
|
|
46
54
|
<CursorPaginationSimple
|
|
47
55
|
hasNextPage={pageInfo.hasNextPage}
|
|
48
|
-
onNext={() => fetchPage({ after: pageInfo.endCursor })}
|
|
49
|
-
onReset={() => fetchPage({})}
|
|
50
56
|
isFirstPage={isFirstPage}
|
|
57
|
+
onNext={() => fetchPage({ after: pageInfo.endCursor })}
|
|
58
|
+
onReset={resetToFirstPage}
|
|
51
59
|
/>
|
|
52
|
-
```
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
> **Navigation logic:** When `onReset` is provided, it replaces the Previous button with a Home/Reset button that is disabled on the first page. When only `onPrevious` is provided, a standard chevron-left Previous button is rendered instead.
|
|
63
|
+
|
|
64
|
+
**Source:** [`cursor-pagination.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/cursor-pagination.tsx)
|
|
@@ -1,48 +1,67 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
A
|
|
1
|
+
<!-- source-hash: 1dc21dcb29b7b10e34307413ef6f6f2f -->
|
|
2
|
+
A React component that renders a compact metric/KPI card for dashboards, supporting values, percentage displays, circular progress rings, icons, tooltips, and optional navigation via Next.js Link.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
###
|
|
7
|
-
Main export. Renders a styled card with:
|
|
8
|
-
- **Title** — secondary text label
|
|
9
|
-
- **Value** — formatted number (via `toLocaleString`) or string, with optional custom className
|
|
10
|
-
- **Percentage** — displayed as a `Tag` (for `warning`/`error` variants) or plain secondary text
|
|
11
|
-
- **Circular progress ring** — shown when `showProgress` and `percentage` are both provided
|
|
12
|
-
- **Tooltip** — question-mark icon trigger via `FloatingTooltip`
|
|
13
|
-
- **Link behavior** — when `href` is supplied, renders as a Next.js `Link` with hover accent styles
|
|
6
|
+
### Exports
|
|
14
7
|
|
|
15
|
-
|
|
16
|
-
|
|
8
|
+
- **`DashboardInfoCard`** — Main card component
|
|
9
|
+
- **`DashboardInfoCardProps`** — Full prop interface
|
|
10
|
+
- **`DashboardInfoCardPercentageDisplay`** — Union type controlling percentage render mode: `'auto'` | `'plain'` | `'tag'`
|
|
11
|
+
- **`DashboardInfoCardProgressSize`** — Union type for responsive ring sizing: `number | { base, md?, lg? }`
|
|
12
|
+
|
|
13
|
+
### Internal Helpers
|
|
14
|
+
|
|
15
|
+
- **`renderPercentage()`** — Returns a `Tag` or plain text `<p>` based on `percentageDisplay` and `progressVariant`
|
|
16
|
+
- **`renderProgress()`** — Generates responsive `CircularProgress` rings using Tailwind display utilities; stroke width scales proportionally with ring size
|
|
17
17
|
|
|
18
18
|
## Usage Example
|
|
19
19
|
|
|
20
20
|
```typescript
|
|
21
|
-
|
|
21
|
+
import { DashboardInfoCard } from './dashboard-info-card'
|
|
22
|
+
|
|
23
|
+
// Basic metric card
|
|
22
24
|
<DashboardInfoCard
|
|
23
25
|
title="Open Tickets"
|
|
24
26
|
value={142}
|
|
25
|
-
percentage={
|
|
27
|
+
percentage={78}
|
|
26
28
|
showProgress
|
|
27
29
|
progressVariant="warning"
|
|
28
|
-
|
|
30
|
+
percentageDisplay="auto"
|
|
29
31
|
/>
|
|
30
32
|
|
|
31
|
-
// Navigable card with
|
|
33
|
+
// Navigable card with icon and tooltip
|
|
32
34
|
<DashboardInfoCard
|
|
33
|
-
title="SLA
|
|
34
|
-
value=
|
|
35
|
-
|
|
36
|
-
showProgress
|
|
37
|
-
progressVariant="error"
|
|
38
|
-
progressOverflow="wrap"
|
|
35
|
+
title="SLA Compliance"
|
|
36
|
+
value="94%"
|
|
37
|
+
icon={<ShieldIcon />}
|
|
39
38
|
href="/reports/sla"
|
|
39
|
+
tooltip="Percentage of tickets resolved within SLA"
|
|
40
|
+
progressVariant="success"
|
|
41
|
+
percentage={94}
|
|
42
|
+
showProgress
|
|
43
|
+
progressSize={{ base: 24, md: 56, lg: 72 }}
|
|
40
44
|
/>
|
|
41
45
|
|
|
42
|
-
//
|
|
46
|
+
// Plain percentage with custom value size
|
|
43
47
|
<DashboardInfoCard
|
|
44
|
-
title="
|
|
45
|
-
value=
|
|
46
|
-
|
|
48
|
+
title="Revenue"
|
|
49
|
+
value={24850}
|
|
50
|
+
subValue="this month"
|
|
51
|
+
percentage={12}
|
|
52
|
+
percentageDisplay="plain"
|
|
53
|
+
progressVariant="success"
|
|
54
|
+
showProgress
|
|
55
|
+
valueClassName="text-h2"
|
|
47
56
|
/>
|
|
48
|
-
```
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
## Notes
|
|
60
|
+
|
|
61
|
+
- When `href` is provided, the card renders as a Next.js `Link` with hover accent styles
|
|
62
|
+
- Responsive ring sizing uses Tailwind `hidden`/`block` utilities; class names must be static strings for JIT scanning
|
|
63
|
+
- Card height is fixed (`h-16` mobile / `h-[104px]` desktop) per Figma spec; `items-center` absorbs overflow from tall title tags
|
|
64
|
+
|
|
65
|
+
---
|
|
66
|
+
|
|
67
|
+
**Source:** [`dashboard-info-card.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/dashboard-info-card.tsx)
|
|
@@ -1,46 +1,62 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
A
|
|
1
|
+
<!-- source-hash: fdd0e62dc792d4f4e438f4d6eb3c262f -->
|
|
2
|
+
A polymorphic date picker component supporting both single-date and date-range selection modes, built on `react-day-picker` and `@radix-ui/react-popover` with custom Figma-aligned styling.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
6
|
| Export | Type | Description |
|
|
7
|
-
|
|
8
|
-
| `DatePickerProps` | Type |
|
|
9
|
-
| `
|
|
10
|
-
| `
|
|
11
|
-
| `
|
|
12
|
-
| `
|
|
13
|
-
| `
|
|
14
|
-
| `
|
|
7
|
+
|---|---|---|
|
|
8
|
+
| `DatePickerProps` | Type | Discriminated union of `SingleDatePickerProps` \| `RangeDatePickerProps` |
|
|
9
|
+
| `DatePickerBaseProps` | Interface | Shared props: `placeholder`, `formatDate`, `disabled`, `fromDate`, `toDate`, `label`, `error`, `invalid`, `numberOfMonths` |
|
|
10
|
+
| `SingleDatePickerProps` | Interface | `mode: "single"`, `value?: Date`, `onChange?: (date) => void` |
|
|
11
|
+
| `RangeDatePickerProps` | Interface | `mode: "range"`, `value?: DateRange`, `onChange?: (range) => void` |
|
|
12
|
+
| `DatePickerCalendar` | Component | Internal calendar renderer; supports `fluid` layout for filter menus |
|
|
13
|
+
| `CalendarNavButton` | Component | Prev/next month navigation using `ChevronLeft`/`ChevronRight` icons |
|
|
14
|
+
| `defaultFormatDate` | Function | Formats a `Date` as `MM/DD/YYYY` |
|
|
15
|
+
| `formatDateRange` | Function | Formats a `DateRange` as `"from - to"` or just `"from"` if no end date |
|
|
16
|
+
|
|
17
|
+
## Key Behaviors
|
|
18
|
+
|
|
19
|
+
- **Range hover preview**: Highlights dates between the first selected date and the hovered date before the range is completed.
|
|
20
|
+
- **Fluid mode**: When `fluid={true}`, day cells flex to fill container width (used by `DateFilterMenu`).
|
|
21
|
+
- **Responsive months**: On screens smaller than `md`, always shows 1 month regardless of `numberOfMonths`.
|
|
22
|
+
- **External sync**: `useEffect` keeps internal `draftRange` in sync when `selected` changes externally (e.g., on reset).
|
|
15
23
|
|
|
16
24
|
## Usage Example
|
|
17
25
|
|
|
18
26
|
```typescript
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
label="Start Date"
|
|
23
|
-
value={selectedDate}
|
|
24
|
-
onChange={(date) => setSelectedDate(date)}
|
|
25
|
-
fromDate={new Date()}
|
|
26
|
-
/>
|
|
27
|
-
|
|
28
|
-
// Date range picker (dual month)
|
|
29
|
-
<DatePicker
|
|
30
|
-
mode="range"
|
|
31
|
-
label="Date Range"
|
|
32
|
-
numberOfMonths={2}
|
|
33
|
-
value={range}
|
|
34
|
-
onChange={(range) => setRange(range)}
|
|
35
|
-
error={formError}
|
|
36
|
-
invalid={!!formError}
|
|
37
|
-
/>
|
|
38
|
-
```
|
|
27
|
+
import { DatePicker } from "@openframe-oss-lib/ui";
|
|
28
|
+
import { useState } from "react";
|
|
29
|
+
import type { DateRange } from "react-day-picker";
|
|
39
30
|
|
|
40
|
-
|
|
31
|
+
// Single mode
|
|
32
|
+
function SingleExample() {
|
|
33
|
+
const [date, setDate] = useState<Date | undefined>();
|
|
34
|
+
return (
|
|
35
|
+
<DatePicker
|
|
36
|
+
mode="single"
|
|
37
|
+
value={date}
|
|
38
|
+
onChange={setDate}
|
|
39
|
+
label="Select date"
|
|
40
|
+
placeholder="MM/DD/YYYY"
|
|
41
|
+
fromDate={new Date()}
|
|
42
|
+
/>
|
|
43
|
+
);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
// Range mode
|
|
47
|
+
function RangeExample() {
|
|
48
|
+
const [range, setRange] = useState<DateRange | undefined>();
|
|
49
|
+
return (
|
|
50
|
+
<DatePicker
|
|
51
|
+
mode="range"
|
|
52
|
+
value={range}
|
|
53
|
+
onChange={setRange}
|
|
54
|
+
numberOfMonths={2}
|
|
55
|
+
label="Date range"
|
|
56
|
+
placeholder="Start – End"
|
|
57
|
+
/>
|
|
58
|
+
);
|
|
59
|
+
}
|
|
60
|
+
```
|
|
41
61
|
|
|
42
|
-
|
|
43
|
-
- **Range mode**: supports 1 or 2 simultaneous months; range start/end use accent color (`--ods-accent`), range middle uses `--ods-open-yellow-light`
|
|
44
|
-
- **Popover trigger**: displays a calendar icon with formatted date or placeholder text; applies red border when `invalid={true}`
|
|
45
|
-
- **Month navigation**: controlled internally via `useState<Date>`, independent of `DayPicker`'s built-in nav (hidden via `hideNavigation`)
|
|
46
|
-
- **Locale support**: passes `locale` prop directly to `DayPicker` for i18n formatting
|
|
62
|
+
**Source:** [`date-picker.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/date-picker.tsx)
|
|
@@ -1,45 +1,48 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
Compact
|
|
1
|
+
<!-- source-hash: d1b3b6dcee088ca646f9755a8d278b12 -->
|
|
2
|
+
Compact device card component designed for use in table cells, displaying device name and organization in a stacked vertical layout with graceful empty-state handling.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
+
### `DeviceCardCompact`
|
|
7
|
+
A lightweight React component that renders device identity information. Returns an empty fragment when both `deviceName` and `organization` are absent, null, `'-'`, or the string `'null'`.
|
|
8
|
+
|
|
6
9
|
### `DeviceCardCompactProps`
|
|
7
|
-
Extends `React.HTMLAttributes<HTMLDivElement>` with
|
|
10
|
+
Extends `React.HTMLAttributes<HTMLDivElement>` with:
|
|
8
11
|
|
|
9
12
|
| Prop | Type | Description |
|
|
10
|
-
|
|
11
|
-
| `deviceName` | `string \| null` | Primary label shown in
|
|
12
|
-
| `organization` | `string \| null` | Secondary label shown in
|
|
13
|
-
|
|
14
|
-
### `DeviceCardCompact`
|
|
15
|
-
A display-only component that renders device info in a vertical flex column. Performs null-safety checks against `null`, `undefined`, `'-'`, and the string `'null'`. Returns an empty fragment when both values are absent.
|
|
13
|
+
|---|---|---|
|
|
14
|
+
| `deviceName` | `string \| null` | Primary label shown in `text-ods-text-primary` |
|
|
15
|
+
| `organization` | `string \| null` | Secondary label shown in `text-ods-text-secondary` |
|
|
16
|
+
| `className` | `string` | Merged via `cn()` for custom overrides |
|
|
16
17
|
|
|
17
18
|
## Usage Example
|
|
18
19
|
|
|
19
20
|
```typescript
|
|
20
|
-
|
|
21
|
+
import { DeviceCardCompact } from '@openframe/ui'
|
|
22
|
+
|
|
23
|
+
// Renders both rows
|
|
21
24
|
<DeviceCardCompact
|
|
22
25
|
deviceName="DESKTOP-ABC123"
|
|
23
26
|
organization="Acme Corp"
|
|
24
27
|
/>
|
|
25
28
|
|
|
26
|
-
//
|
|
29
|
+
// Renders only device name
|
|
27
30
|
<DeviceCardCompact
|
|
28
|
-
deviceName=
|
|
31
|
+
deviceName="DESKTOP-ABC123"
|
|
29
32
|
organization="-"
|
|
30
33
|
/>
|
|
31
34
|
|
|
32
|
-
//
|
|
35
|
+
// Returns empty fragment — safe for sparse table data
|
|
33
36
|
<DeviceCardCompact
|
|
34
|
-
deviceName=
|
|
37
|
+
deviceName={null}
|
|
35
38
|
organization={null}
|
|
36
|
-
className="max-w-[200px]"
|
|
37
39
|
/>
|
|
38
40
|
```
|
|
39
41
|
|
|
40
|
-
##
|
|
42
|
+
## Notes
|
|
43
|
+
|
|
44
|
+
- **Empty-state guard:** Values of `null`, `undefined`, `'-'`, or `'null'` (string) are treated as absent.
|
|
45
|
+
- **Truncation:** Both labels truncate with `truncate` and expose the full value via the `title` attribute on hover.
|
|
46
|
+
- **Layout:** Uses a `flex-col` container with `min-h-[60px]` to maintain consistent row height in tables.
|
|
41
47
|
|
|
42
|
-
|
|
43
|
-
- **Partial render**: Renders only the available field when one value is missing
|
|
44
|
-
- **Overflow**: Both labels use `truncate` with a `title` attribute for full text on hover
|
|
45
|
-
- **Typography**: Device name renders at `16px` (`ods-text-primary`); organization at `14px` (`ods-text-secondary`)
|
|
48
|
+
**Source:** [`flamingo-stack/openframe-oss-lib`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/device-card-compact.tsx)
|
|
@@ -1,43 +1,52 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
A
|
|
1
|
+
<!-- source-hash: 5697c86a68ac84022a2c4a002cebbac9 -->
|
|
2
|
+
A client-side React card component for displaying device information including OS type, status, last-seen timestamp, and configurable action buttons.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
6
|
### Interfaces
|
|
7
|
-
- **`Device`** — Core device data model with fields for `id`, `name`, `type`, `operatingSystem`, `organization`, `status`, `lastSeen`, `tags`, and network properties (`ipAddress`, `macAddress`, etc.)
|
|
8
|
-
- **`ActionButton`** — Configuration for custom action buttons with `label`, `onClick`, `variant`, and `visible` controls
|
|
9
|
-
- **`DeviceCardProps`** — Extends `HTMLAttributes<HTMLDivElement>` with `device`, `actions`, `statusTag`, and `onDeviceClick`
|
|
10
7
|
|
|
11
|
-
|
|
12
|
-
- **`
|
|
8
|
+
- **`Device`** — Shape of a device record, including optional `id`, `machineId`, `name`, `type`, `operatingSystem`, `organization`, `status`, `lastSeen`, `tags`, `ipAddress`, `macAddress`, `version`, and `location`.
|
|
9
|
+
- **`ActionButton`** — Configuration for a custom action button: `label`, `onClick`, `variant`, and `visible` flag.
|
|
10
|
+
- **`DeviceCardProps`** — Extends `React.HTMLAttributes<HTMLDivElement>` with `device`, `actions`, `statusTag`, and `onDeviceClick`.
|
|
11
|
+
|
|
12
|
+
### Component
|
|
13
|
+
|
|
14
|
+
- **`DeviceCard`** — Renders a bordered card with three rows:
|
|
15
|
+
1. Device type icon, OS icon, device name/organization, and optional action buttons (more, details, custom).
|
|
16
|
+
2. Status tag and UTC-formatted last-seen timestamp (hydration-safe via `getUTC*` methods).
|
|
17
|
+
3. Device tags rendered as outline `Tag` pills.
|
|
13
18
|
|
|
14
19
|
## Usage Example
|
|
15
20
|
|
|
16
21
|
```typescript
|
|
17
22
|
import { DeviceCard } from './device-card'
|
|
18
23
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
{
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
24
|
+
export function Example() {
|
|
25
|
+
return (
|
|
26
|
+
<DeviceCard
|
|
27
|
+
device={{
|
|
28
|
+
id: 'dev-001',
|
|
29
|
+
name: 'MacBook Pro',
|
|
30
|
+
operatingSystem: 'macos',
|
|
31
|
+
organization: 'Acme Corp',
|
|
32
|
+
status: 'active',
|
|
33
|
+
lastSeen: new Date(),
|
|
34
|
+
tags: ['managed', 'engineering'],
|
|
35
|
+
}}
|
|
36
|
+
statusTag={{ variant: 'success', label: 'Active' }}
|
|
37
|
+
actions={{
|
|
38
|
+
moreButton: {
|
|
39
|
+
visible: true,
|
|
40
|
+
onClick: () => console.log('More clicked'),
|
|
41
|
+
},
|
|
42
|
+
customActions: [
|
|
43
|
+
{ label: 'Connect', onClick: () => console.log('Connect'), visible: true },
|
|
44
|
+
],
|
|
45
|
+
}}
|
|
46
|
+
onDeviceClick={(device) => console.log('Selected:', device.id)}
|
|
47
|
+
/>
|
|
48
|
+
)
|
|
49
|
+
}
|
|
37
50
|
```
|
|
38
51
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
- `operatingSystem` supports both `OSPlatformId` values and legacy strings (`macos`, `ios`, `android`); `macos` is internally mapped to `darwin` for icon resolution
|
|
42
|
-
- Action buttons use `e.stopPropagation()` to prevent triggering `onDeviceClick` when interacting with controls
|
|
43
|
-
- `lastSeen` accepts either a `string` or `Date` and formats to `YYYY/MM/DD, HH:MM`
|
|
52
|
+
> **Note:** Last-seen dates are formatted using UTC getters (`getUTCFullYear`, etc.) to prevent React hydration mismatch [#418](https://github.com/flamingo-stack/openframe-oss-lib/issues) between server and client rendering environments.
|
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
Accessible modal dialog component built on Radix UI
|
|
1
|
+
<!-- source-hash: bb1d5a46d107bc7118d58cf030a3c64d -->
|
|
2
|
+
Accessible modal dialog component built on Radix UI primitives, providing a composable set of parts for building dialogs with built-in animations, overlay, and keyboard/focus management.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
6
|
| Export | Description |
|
|
7
|
-
|
|
7
|
+
|---|---|
|
|
8
8
|
| `Dialog` | Root component managing open/close state |
|
|
9
9
|
| `DialogTrigger` | Element that opens the dialog on interaction |
|
|
10
|
-
| `DialogContent` |
|
|
11
|
-
| `DialogOverlay` |
|
|
12
|
-
| `DialogHeader` | Layout wrapper for title/description area |
|
|
13
|
-
| `DialogFooter` | Layout wrapper for action buttons (reverses column order on mobile) |
|
|
14
|
-
| `DialogTitle` | Semibold heading with accessible binding |
|
|
15
|
-
| `DialogDescription` | Muted secondary text beneath the title |
|
|
16
|
-
| `DialogClose` | Primitive close button for custom trigger placement |
|
|
10
|
+
| `DialogContent` | Centered modal panel with fade/zoom animations and an auto-rendered close button |
|
|
11
|
+
| `DialogOverlay` | Blurred backdrop rendered behind the content |
|
|
17
12
|
| `DialogPortal` | Renders dialog outside the DOM tree via a portal |
|
|
13
|
+
| `DialogClose` | Button that closes the dialog |
|
|
14
|
+
| `DialogHeader` | Layout wrapper for title/description at the top |
|
|
15
|
+
| `DialogFooter` | Layout wrapper for action buttons at the bottom |
|
|
16
|
+
| `DialogTitle` | Accessible title using `text-h3` styling |
|
|
17
|
+
| `DialogDescription` | Accessible description using muted `text-h6` styling |
|
|
18
18
|
|
|
19
19
|
## Usage Example
|
|
20
20
|
|
|
@@ -40,14 +40,14 @@ export function ConfirmDialog() {
|
|
|
40
40
|
<DialogHeader>
|
|
41
41
|
<DialogTitle>Confirm Action</DialogTitle>
|
|
42
42
|
<DialogDescription>
|
|
43
|
-
This
|
|
43
|
+
Are you sure you want to proceed? This cannot be undone.
|
|
44
44
|
</DialogDescription>
|
|
45
45
|
</DialogHeader>
|
|
46
46
|
<DialogFooter>
|
|
47
47
|
<DialogClose asChild>
|
|
48
|
-
<button>Cancel</button>
|
|
48
|
+
<button variant="outline">Cancel</button>
|
|
49
49
|
</DialogClose>
|
|
50
|
-
<button onClick={
|
|
50
|
+
<button onClick={handleConfirm}>Confirm</button>
|
|
51
51
|
</DialogFooter>
|
|
52
52
|
</DialogContent>
|
|
53
53
|
</Dialog>
|
|
@@ -55,4 +55,4 @@ export function ConfirmDialog() {
|
|
|
55
55
|
}
|
|
56
56
|
```
|
|
57
57
|
|
|
58
|
-
> `DialogContent` automatically
|
|
58
|
+
> `DialogContent` automatically renders `DialogOverlay` and a close (`X`) button — no need to add them manually. All components accept a `className` prop for Tailwind customization.
|
|
@@ -1,35 +1,32 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
A
|
|
1
|
+
<!-- source-hash: a18a712084fb48e0dc7a1b864781f7b0 -->
|
|
2
|
+
A full-featured drawer component built on Radix UI's Dialog primitive, providing animated slide-in panels from any viewport edge with support for drag-to-resize, size persistence, flush/floating layout modes, and a unified overlay backdrop.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
6
|
| Export | Type | Description |
|
|
7
|
-
|
|
8
|
-
| `Drawer` | Component | Root dialog
|
|
9
|
-
| `DrawerTrigger` | Component |
|
|
10
|
-
| `DrawerClose` | Component | Button/element
|
|
7
|
+
|---|---|---|
|
|
8
|
+
| `Drawer` | Component | Root dialog container (re-export of `DialogPrimitive.Root`) |
|
|
9
|
+
| `DrawerTrigger` | Component | Button/element that opens the drawer |
|
|
10
|
+
| `DrawerClose` | Component | Button/element that closes the drawer |
|
|
11
11
|
| `DrawerPortal` | Component | Renders drawer outside the DOM tree |
|
|
12
|
-
| `DrawerOverlay` | Component |
|
|
13
|
-
| `DrawerContent` | Component | Main panel with
|
|
14
|
-
| `
|
|
15
|
-
| `
|
|
16
|
-
| `
|
|
17
|
-
| `
|
|
12
|
+
| `DrawerOverlay` | Component | Dimmed full-screen backdrop (`bg-ods-overlay`) |
|
|
13
|
+
| `DrawerContent` | Component | Main panel with side, flush, and resize props |
|
|
14
|
+
| `DrawerResizeHandle` | Component (internal) | Drag handle with pointer capture and keyboard support |
|
|
15
|
+
| `useResizableSize` | Hook (internal) | Manages clamped size state with `localStorage` persistence |
|
|
16
|
+
| `drawerVariants` | CVA variants | Wrapper positioning by `side` and `flush` |
|
|
17
|
+
| `drawerPanelVariants` | CVA variants | Panel chrome (rounded, border, padding) by `side` and `flush` |
|
|
18
18
|
|
|
19
|
-
|
|
19
|
+
### `DrawerContent` Props
|
|
20
20
|
|
|
21
21
|
| Prop | Type | Default | Description |
|
|
22
|
-
|
|
23
|
-
| `side` | `"right" \| "left" \| "top" \| "bottom"` | `"right"` | Slide
|
|
24
|
-
| `flush` | `boolean` | `false` | Full-bleed
|
|
25
|
-
| `resizable` | `boolean` |
|
|
26
|
-
| `minSize` | `number` | — | Minimum
|
|
27
|
-
| `maxSize` | `number` | — | Maximum
|
|
28
|
-
| `defaultSize` | `number` | — | Initial size
|
|
29
|
-
| `storageKey` | `string` | — | localStorage key for
|
|
30
|
-
| `mobileBreakpoint` | `number` | — | Px breakpoint below which resizing is disabled |
|
|
31
|
-
| `overlayClassName` | `string` | — | Additional classes for the overlay |
|
|
32
|
-
| `resizeAriaLabel` | `string` | — | Accessible label for the resize handle |
|
|
22
|
+
|---|---|---|---|
|
|
23
|
+
| `side` | `"right" \| "left" \| "top" \| "bottom"` | `"right"` | Slide direction |
|
|
24
|
+
| `flush` | `boolean` | `false` | Full-bleed on mobile; floating card on desktop |
|
|
25
|
+
| `resizable` | `boolean` | `false` | Enables drag-to-resize handle |
|
|
26
|
+
| `minSize` | `number` | — | Minimum panel size in px |
|
|
27
|
+
| `maxSize` | `number` | — | Maximum panel size in px (clamped to viewport) |
|
|
28
|
+
| `defaultSize` | `number` | — | Initial size when no stored value exists |
|
|
29
|
+
| `storageKey` | `string` | — | `localStorage` key for size persistence |
|
|
33
30
|
|
|
34
31
|
## Usage Example
|
|
35
32
|
|
|
@@ -37,29 +34,28 @@ A client-side drawer component built on Radix UI's Dialog primitive, providing a
|
|
|
37
34
|
import {
|
|
38
35
|
Drawer,
|
|
39
36
|
DrawerTrigger,
|
|
40
|
-
DrawerClose,
|
|
41
37
|
DrawerContent,
|
|
42
|
-
|
|
38
|
+
DrawerClose,
|
|
39
|
+
} from "@openframe/ui/components/drawer"
|
|
43
40
|
|
|
44
41
|
// Basic drawer from the right
|
|
45
|
-
function
|
|
42
|
+
export function SettingsDrawer() {
|
|
46
43
|
return (
|
|
47
44
|
<Drawer>
|
|
48
45
|
<DrawerTrigger asChild>
|
|
49
|
-
<button>Open
|
|
46
|
+
<button>Open Settings</button>
|
|
50
47
|
</DrawerTrigger>
|
|
51
48
|
<DrawerContent side="right">
|
|
52
|
-
<
|
|
53
|
-
<
|
|
54
|
-
|
|
55
|
-
</DrawerClose>
|
|
49
|
+
<DrawerClose />
|
|
50
|
+
<h2>Settings</h2>
|
|
51
|
+
<p>Panel content here.</p>
|
|
56
52
|
</DrawerContent>
|
|
57
53
|
</Drawer>
|
|
58
54
|
)
|
|
59
55
|
}
|
|
60
56
|
|
|
61
|
-
// Resizable flush
|
|
62
|
-
function ChatDrawer() {
|
|
57
|
+
// Resizable flush drawer with persisted width
|
|
58
|
+
export function ChatDrawer() {
|
|
63
59
|
return (
|
|
64
60
|
<Drawer>
|
|
65
61
|
<DrawerTrigger asChild>
|
|
@@ -72,15 +68,25 @@ function ChatDrawer() {
|
|
|
72
68
|
minSize={280}
|
|
73
69
|
maxSize={800}
|
|
74
70
|
defaultSize={400}
|
|
75
|
-
storageKey="chat-
|
|
76
|
-
mobileBreakpoint={768}
|
|
77
|
-
resizeAriaLabel="Resize chat panel"
|
|
71
|
+
storageKey="chat-drawer-width"
|
|
78
72
|
>
|
|
79
|
-
|
|
73
|
+
{/* Consumer owns full internal layout */}
|
|
80
74
|
</DrawerContent>
|
|
81
75
|
</Drawer>
|
|
82
76
|
)
|
|
83
77
|
}
|
|
84
78
|
```
|
|
85
79
|
|
|
86
|
-
|
|
80
|
+
## Resize Handle Keyboard Shortcuts
|
|
81
|
+
|
|
82
|
+
| Key | Action |
|
|
83
|
+
|---|---|
|
|
84
|
+
| `ArrowLeft` / `ArrowRight` | Resize by 16px (horizontal panels) |
|
|
85
|
+
| `ArrowUp` / `ArrowDown` | Resize by 16px (vertical panels) |
|
|
86
|
+
| `Shift` + Arrow | Resize by 40px |
|
|
87
|
+
| `Home` | Snap to `minSize` |
|
|
88
|
+
| `End` | Snap to `maxSize` |
|
|
89
|
+
|
|
90
|
+
## Source
|
|
91
|
+
|
|
92
|
+
[`drawer.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/drawer.tsx)
|