@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,37 +1,34 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
A modal dialog component for sorting and filtering table data,
|
|
1
|
+
<!-- source-hash: ca205bda020052993b18624b8ae80fb9 -->
|
|
2
|
+
A modal dialog component for sorting and filtering table data, supporting checkbox filter groups, column sorting, tag key-value filters, and date range filtering with draft state management.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
###
|
|
7
|
-
Main exported component that renders a `ModalV2`-based dialog with three content sections and footer action buttons.
|
|
6
|
+
### Interfaces
|
|
8
7
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
| Type | Description |
|
|
12
|
-
|------|-------------|
|
|
8
|
+
| Interface | Description |
|
|
9
|
+
|---|---|
|
|
13
10
|
| `FilterModalOption` | Single filter option with `id`, `label`, and optional `count` |
|
|
14
11
|
| `FilterGroup` | Named group of `FilterModalOption` items |
|
|
15
|
-
| `FilterModalProps` | Full props
|
|
16
|
-
|
|
17
|
-
|
|
12
|
+
| `FilterModalProps` | Full props definition for the modal |
|
|
13
|
+
|
|
14
|
+
### Exported Types (re-exported)
|
|
15
|
+
|
|
16
|
+
- `SortableColumn`, `SortConfig`, `SortDirection` — from `sort-column-item`
|
|
17
|
+
- `TagKeyConfig`, `TagValueOption` — from `tag-key-value-filter`
|
|
18
18
|
|
|
19
|
-
###
|
|
20
|
-
|
|
21
|
-
- **Reset** clears all filters
|
|
22
|
-
- **
|
|
23
|
-
- **
|
|
24
|
-
- **
|
|
19
|
+
### Behavior
|
|
20
|
+
|
|
21
|
+
- **Draft state**: All selections are held locally and only committed on **Apply**; **Reset** clears all filters to defaults and closes the modal.
|
|
22
|
+
- **Scroll shadows**: `useScrollFade` adds top/bottom fade overlays as the filter list scrolls.
|
|
23
|
+
- **Loading state**: When `isLoading` is true, renders skeleton rows instead of filter content.
|
|
24
|
+
- **Empty state**: Renders an icon + message when no sort columns, filter groups, tag filters, or date filter are provided.
|
|
25
25
|
|
|
26
26
|
## Usage Example
|
|
27
27
|
|
|
28
28
|
```typescript
|
|
29
|
-
const [filters, setFilters] = useState<TableFilters>({})
|
|
30
|
-
const [tags, setTags] = useState<string[]>([])
|
|
31
|
-
|
|
32
29
|
<FilterModal
|
|
33
|
-
isOpen={
|
|
34
|
-
onClose={() =>
|
|
30
|
+
isOpen={isFilterOpen}
|
|
31
|
+
onClose={() => setFilterOpen(false)}
|
|
35
32
|
filterGroups={[
|
|
36
33
|
{
|
|
37
34
|
id: 'status',
|
|
@@ -42,18 +39,19 @@ const [tags, setTags] = useState<string[]>([])
|
|
|
42
39
|
],
|
|
43
40
|
},
|
|
44
41
|
]}
|
|
42
|
+
currentFilters={activeFilters}
|
|
43
|
+
onFilterChange={(filters) => setActiveFilters(filters)}
|
|
45
44
|
sortConfig={{
|
|
46
45
|
title: 'Sort By',
|
|
47
|
-
sortBy: '
|
|
48
|
-
sortDirection: '
|
|
49
|
-
columns: [{ key: '
|
|
46
|
+
sortBy: 'createdAt',
|
|
47
|
+
sortDirection: 'desc',
|
|
48
|
+
columns: [{ key: 'createdAt', label: 'Created Date' }],
|
|
49
|
+
}}
|
|
50
|
+
onSort={(column, direction) => handleSort(column, direction)}
|
|
51
|
+
dateFilter={{
|
|
52
|
+
title: 'Created Date',
|
|
53
|
+
sort: 'desc',
|
|
54
|
+
onChange: ({ sort, range }) => handleDateFilter(sort, range),
|
|
50
55
|
}}
|
|
51
|
-
onSort={(column, direction) => console.log(column, direction)}
|
|
52
|
-
onFilterChange={setFilters}
|
|
53
|
-
currentFilters={filters}
|
|
54
|
-
tagFilterKeys={[{ key: 'env', label: 'Environment', values: [] }]}
|
|
55
|
-
selectedTags={tags}
|
|
56
|
-
onTagsChange={setTags}
|
|
57
|
-
isLoading={false}
|
|
58
56
|
/>
|
|
59
57
|
```
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
<!-- source-hash: a577052f327703a1df3f43615b02c000 -->
|
|
2
|
+
A responsive filter pill row component that renders a labeled set of toggle buttons inside a card container, used to filter catalog views by status, platform, section, or other dimensions.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
### Interfaces
|
|
7
|
+
|
|
8
|
+
| Interface | Description |
|
|
9
|
+
|---|---|
|
|
10
|
+
| `FilterPillRowOption` | Shape for each filter option: `value` (key) and `label` (display text) |
|
|
11
|
+
| `FilterPillRowProps` | Full props contract for `FilterPillRow` |
|
|
12
|
+
|
|
13
|
+
### `FilterPillRow` (named export)
|
|
14
|
+
|
|
15
|
+
Renders a flex-wrap card containing:
|
|
16
|
+
- A `Filter` icon + label on the left
|
|
17
|
+
- A pill button per option (active pill uses `accent` variant, inactive uses `outline`)
|
|
18
|
+
- An optional `countLabel` right-aligned (e.g. `"Showing 1-10 of 42 items"`)
|
|
19
|
+
- Optional `children` to replace the default pill buttons with custom filter content
|
|
20
|
+
|
|
21
|
+
## Usage Example
|
|
22
|
+
|
|
23
|
+
```typescript
|
|
24
|
+
import { FilterPillRow } from '@openframe-oss-lib/ui'
|
|
25
|
+
|
|
26
|
+
const PLATFORM_OPTIONS = [
|
|
27
|
+
{ value: 'all', label: 'All' },
|
|
28
|
+
{ value: 'windows', label: 'Windows' },
|
|
29
|
+
{ value: 'mac', label: 'macOS' },
|
|
30
|
+
{ value: 'linux', label: 'Linux' },
|
|
31
|
+
]
|
|
32
|
+
|
|
33
|
+
export function ToolCatalogFilters() {
|
|
34
|
+
const [platform, setPlatform] = useState('all')
|
|
35
|
+
|
|
36
|
+
return (
|
|
37
|
+
<FilterPillRow
|
|
38
|
+
label="Platform"
|
|
39
|
+
selectedValue={platform}
|
|
40
|
+
onValueChange={setPlatform}
|
|
41
|
+
options={PLATFORM_OPTIONS}
|
|
42
|
+
countLabel="Showing 12 of 48 tools"
|
|
43
|
+
/>
|
|
44
|
+
)
|
|
45
|
+
}
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
**Custom content via `children`:**
|
|
49
|
+
|
|
50
|
+
```typescript
|
|
51
|
+
<FilterPillRow label="Status" selectedValue="" onValueChange={() => {}}>
|
|
52
|
+
<MyCustomToggleGroup />
|
|
53
|
+
</FilterPillRow>
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
> **Note:** When `children` is provided it replaces the auto-generated pill buttons entirely; `options` is ignored.
|
|
57
|
+
|
|
58
|
+
**Source:** [`components/filter-pill-row.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/components/filter-pill-row.tsx)
|
|
@@ -1,36 +1,24 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
|
|
1
|
+
<!-- source-hash: 2b8cdba1cd5071a00b33994ad26e4c91 -->
|
|
2
|
+
Accessible, positioned tooltip component built on `@floating-ui/react` that supports smart viewport-aware placement, overflow scrolling, and inline color markup parsing.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
6
|
### `FloatingTooltip`
|
|
7
|
-
The main exported component. Renders a
|
|
8
|
-
- **Auto-positioning** via `flip`, `shift`, and `offset` middleware — avoids viewport clipping
|
|
9
|
-
- **Arrow indicator** that dynamically repositions based on the resolved placement
|
|
10
|
-
- **Hover interaction** with configurable open delay and safe polygon close detection
|
|
11
|
-
- **`disabled` prop** — suppresses tooltip without unmounting the trigger wrapper
|
|
7
|
+
The main exported component. Renders a hover-triggered tooltip using Floating UI's positioning engine with auto-update, flipping, shifting, and viewport-capped height.
|
|
12
8
|
|
|
13
|
-
|
|
14
|
-
Parses `[COLOR]text[/COLOR]` markup within string content and maps it to ODS CSS classes:
|
|
15
|
-
|
|
16
|
-
| Tag | Tailwind Class |
|
|
17
|
-
|-----|----------------|
|
|
18
|
-
| `[YELLOW]` | `text-ods-accent` |
|
|
19
|
-
| `[GREEN]` | `text-ods-success` |
|
|
20
|
-
| `[RED]` | `text-ods-error` |
|
|
21
|
-
| `[BLUE]` / `[CYAN]` | `text-ods-info` |
|
|
22
|
-
| `[PINK]` | `text-ods-accent` |
|
|
23
|
-
|
|
24
|
-
### `FloatingTooltipProps`
|
|
9
|
+
**Props:**
|
|
25
10
|
|
|
26
11
|
| Prop | Type | Default | Description |
|
|
27
|
-
|
|
28
|
-
| `content` | `React.ReactNode` | — | Tooltip
|
|
29
|
-
| `children` | `React.ReactNode` | — |
|
|
12
|
+
|---|---|---|---|
|
|
13
|
+
| `content` | `React.ReactNode` | — | Tooltip content; strings support color markup |
|
|
14
|
+
| `children` | `React.ReactNode` | — | The trigger element |
|
|
30
15
|
| `side` | `"top" \| "right" \| "bottom" \| "left"` | `"right"` | Preferred placement |
|
|
31
|
-
| `
|
|
32
|
-
| `
|
|
33
|
-
| `
|
|
16
|
+
| `className` | `string` | — | Additional classes for the tooltip panel |
|
|
17
|
+
| `delayDuration` | `number` | `0` | Hover open delay in ms |
|
|
18
|
+
| `disabled` | `boolean` | `false` | Disables tooltip without unmounting the trigger |
|
|
19
|
+
|
|
20
|
+
### `parseColoredText` (internal)
|
|
21
|
+
Parses `[COLOR]text[/COLOR]` markup within string content into styled `<span>` elements mapped to ODS design tokens. Supported color tags: `YELLOW`, `GREEN`, `RED`, `BLUE`, `PINK`, `CYAN`.
|
|
34
22
|
|
|
35
23
|
## Usage Example
|
|
36
24
|
|
|
@@ -38,21 +26,28 @@ Parses `[COLOR]text[/COLOR]` markup within string content and maps it to ODS CSS
|
|
|
38
26
|
import { FloatingTooltip } from "./floating-tooltip"
|
|
39
27
|
|
|
40
28
|
// Basic usage
|
|
41
|
-
<FloatingTooltip content="Save changes">
|
|
29
|
+
<FloatingTooltip content="Save your changes before leaving.">
|
|
42
30
|
<button>Save</button>
|
|
43
31
|
</FloatingTooltip>
|
|
44
32
|
|
|
45
|
-
// With color markup and
|
|
33
|
+
// With color markup and custom placement
|
|
46
34
|
<FloatingTooltip
|
|
47
|
-
content="Status: [GREEN]Online[/GREEN] — [YELLOW]
|
|
35
|
+
content="Status: [GREEN]Online[/GREEN] — latency [YELLOW]elevated[/YELLOW]"
|
|
48
36
|
side="top"
|
|
49
37
|
delayDuration={300}
|
|
50
38
|
>
|
|
51
39
|
<span>Hover me</span>
|
|
52
40
|
</FloatingTooltip>
|
|
53
41
|
|
|
54
|
-
//
|
|
55
|
-
<FloatingTooltip content="
|
|
56
|
-
<button>
|
|
42
|
+
// Conditionally disabled
|
|
43
|
+
<FloatingTooltip content="Not available" disabled={!featureEnabled}>
|
|
44
|
+
<button>Feature</button>
|
|
57
45
|
</FloatingTooltip>
|
|
58
|
-
```
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
## Behavior Notes
|
|
49
|
+
|
|
50
|
+
- Tooltip is rendered into a `FloatingPortal` at `z-index: 2147483647` to avoid stacking context issues
|
|
51
|
+
- The `size` middleware caps tooltip height to available viewport space; tall content becomes scrollable via the inner wrapper
|
|
52
|
+
- Arrow position is computed automatically and adjusts with placement flipping
|
|
53
|
+
- `safePolygon()` prevents accidental dismissal when moving the cursor toward the tooltip
|
|
@@ -1,49 +1,47 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
A floating popup component that displays a list of hidden
|
|
1
|
+
<!-- source-hash: 710e86ff076bce6ef45b86d10ed1ec51 -->
|
|
2
|
+
A floating popup component that displays a list of hidden/overflow tags with optional removal capability, typically used when tag inputs have more items than visible space allows.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
6
|
### Interfaces
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
8
|
+
- **`HiddenTagItem`** — Describes a single tag entry with a `label` (`ReactNode`) and `value` (`unknown`)
|
|
9
|
+
- **`HiddenTagsPopupProps`** — Props for the popup component:
|
|
10
|
+
- `items` — Array of `HiddenTagItem` to render
|
|
11
|
+
- `onRemove` — Optional callback fired with the item's `value` when the remove button is clicked
|
|
12
|
+
- `disabled` — Hides remove buttons when `true`
|
|
13
|
+
- `className` / `style` — For positioning overrides (consumers set `style.left` or `className` for alignment)
|
|
12
14
|
|
|
13
|
-
###
|
|
15
|
+
### Component
|
|
14
16
|
|
|
15
|
-
- **`HiddenTagsPopup`** — A `forwardRef`
|
|
17
|
+
- **`HiddenTagsPopup`** — A `forwardRef` div that renders absolutely below its anchor (`top-full`), with an animated entrance (`animate-in fade-in-0 zoom-in-95`). Each item row shows a truncated, uppercase label and an `XmarkCircleIcon` remove button (when not disabled).
|
|
16
18
|
|
|
17
19
|
## Usage Example
|
|
18
20
|
|
|
19
21
|
```typescript
|
|
20
|
-
import { HiddenTagsPopup
|
|
22
|
+
import { HiddenTagsPopup } from "./hidden-tags-popup"
|
|
21
23
|
|
|
22
|
-
const overflowTags
|
|
24
|
+
const overflowTags = [
|
|
23
25
|
{ label: "Engineering", value: "engineering" },
|
|
24
26
|
{ label: "Design", value: "design" },
|
|
25
27
|
]
|
|
26
28
|
|
|
27
|
-
function
|
|
29
|
+
function TagInput() {
|
|
28
30
|
const handleRemove = (value: unknown) => {
|
|
29
|
-
console.log("
|
|
31
|
+
console.log("Removing tag:", value)
|
|
30
32
|
}
|
|
31
33
|
|
|
32
34
|
return (
|
|
33
|
-
<div
|
|
35
|
+
<div className="relative">
|
|
36
|
+
{/* anchor element */}
|
|
34
37
|
<HiddenTagsPopup
|
|
35
38
|
items={overflowTags}
|
|
36
39
|
onRemove={handleRemove}
|
|
37
|
-
|
|
40
|
+
style={{ left: 0 }}
|
|
38
41
|
/>
|
|
39
42
|
</div>
|
|
40
43
|
)
|
|
41
44
|
}
|
|
42
45
|
```
|
|
43
46
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
- Renders with `z-50` and `top-full` positioning — expects a relatively-positioned parent container.
|
|
47
|
-
- Includes entrance animation via `animate-in fade-in-0 zoom-in-95`.
|
|
48
|
-
- Remove button uses `e.stopPropagation()` to prevent unintended parent click events.
|
|
49
|
-
- Accessible via `aria-label` on each remove button.
|
|
47
|
+
> **Note:** Wrap the popup in a relatively positioned container. Use `style.left` or a `className` override to control horizontal alignment.
|
|
@@ -1,43 +1,56 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
|
|
1
|
+
<!-- source-hash: 9562b3fbd93d3258fdb8884c703e1606 -->
|
|
2
|
+
Renders a styled card with a colored highlight behind a category label, and a grid layout component for displaying multiple highlight cards with responsive borders.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
6
|
+
| Export | Type | Description |
|
|
7
|
+
|---|---|---|
|
|
8
|
+
| `HighlightCardItem` | Interface | Data shape for a single card: `category`, `categoryColor`, `highlightBg`, `description` |
|
|
9
|
+
| `HighlightCardProps` | Interface | Props for `HighlightCard`: `item` + optional `className` |
|
|
10
|
+
| `HighlightCard` | Component | Single card with a color-highlighted category label and description text |
|
|
11
|
+
| `HighlightCardGridProps` | Interface | Props for `HighlightCardGrid`: `items`, `columns` (2 or 3), `className`, `cardClassName` |
|
|
12
|
+
| `HighlightCardGrid` | Component | Responsive grid of `HighlightCard` components with automatic border management |
|
|
11
13
|
|
|
12
14
|
## Usage Example
|
|
13
15
|
|
|
14
16
|
```typescript
|
|
15
|
-
import {
|
|
17
|
+
import { HighlightCardGrid, HighlightCardItem } from './highlight-card';
|
|
16
18
|
|
|
17
|
-
const
|
|
19
|
+
const items: HighlightCardItem[] = [
|
|
18
20
|
{
|
|
19
|
-
category: '
|
|
21
|
+
category: 'Network',
|
|
20
22
|
categoryColor: '#3B82F6',
|
|
21
23
|
highlightBg: '#DBEAFE',
|
|
22
|
-
description: '
|
|
24
|
+
description: 'infrastructure is monitored 24/7',
|
|
23
25
|
},
|
|
24
26
|
{
|
|
25
|
-
category: '
|
|
26
|
-
categoryColor: '#
|
|
27
|
-
highlightBg: '#
|
|
28
|
-
description: '
|
|
29
|
-
}
|
|
27
|
+
category: 'Security',
|
|
28
|
+
categoryColor: '#EF4444',
|
|
29
|
+
highlightBg: '#FEE2E2',
|
|
30
|
+
description: 'posture is always up to date',
|
|
31
|
+
},
|
|
30
32
|
];
|
|
31
33
|
|
|
32
|
-
//
|
|
33
|
-
<
|
|
34
|
+
// 2-column grid (default)
|
|
35
|
+
<HighlightCardGrid items={items} columns={2} />
|
|
34
36
|
|
|
35
|
-
//
|
|
36
|
-
<HighlightCardGrid
|
|
37
|
-
items={
|
|
38
|
-
columns={
|
|
37
|
+
// 3-column grid with custom wrapper styles
|
|
38
|
+
<HighlightCardGrid
|
|
39
|
+
items={items}
|
|
40
|
+
columns={3}
|
|
39
41
|
className="my-8"
|
|
42
|
+
cardClassName="border border-gray-200 rounded-xl overflow-hidden"
|
|
43
|
+
/>
|
|
44
|
+
|
|
45
|
+
// Single card
|
|
46
|
+
<HighlightCard
|
|
47
|
+
item={items[0]}
|
|
48
|
+
className="rounded-lg"
|
|
40
49
|
/>
|
|
41
50
|
```
|
|
42
51
|
|
|
43
|
-
|
|
52
|
+
## Notes
|
|
53
|
+
|
|
54
|
+
- Category highlight width is calculated dynamically from `category.length` (`×12px` mobile, `×14px` desktop).
|
|
55
|
+
- `HighlightCardGrid` handles responsive border placement automatically — right borders appear only on desktop, bottom borders are suppressed on the last item/row per breakpoint.
|
|
56
|
+
- Styling relies on Tailwind CSS with custom design tokens (`ods-bg`, `ods-text-primary`, `ods-border`, etc.) from the OpenFrame Design System.
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
<!-- source-hash: 6f5652850fde2ac3f712e1ec49012b20 -->
|
|
2
|
+
An invisible decoy input component for bot detection in React forms. It renders an off-screen, zero-size input that real users never interact with — bots that fill every visible field will trigger it, allowing the server to reject the submission.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
- **`HoneypotField`** — A `forwardRef` component accepting a `name` prop, used to wire the input into form submission data and connect the ref from `useHumanitySignals`.
|
|
7
|
+
|
|
8
|
+
## Usage Example
|
|
9
|
+
|
|
10
|
+
```typescript
|
|
11
|
+
import { HoneypotField } from './honeypot-field'
|
|
12
|
+
import { useHumanitySignals } from '@/hooks/use-humanity-signals'
|
|
13
|
+
|
|
14
|
+
function ContactForm() {
|
|
15
|
+
const { honeypotInputProps } = useHumanitySignals()
|
|
16
|
+
|
|
17
|
+
return (
|
|
18
|
+
<form action={submitAction}>
|
|
19
|
+
<input name="email" type="email" />
|
|
20
|
+
{/* Invisible to users; bots that fill it are blocked server-side */}
|
|
21
|
+
<HoneypotField {...honeypotInputProps} />
|
|
22
|
+
<button type="submit">Send</button>
|
|
23
|
+
</form>
|
|
24
|
+
)
|
|
25
|
+
}
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Bot Detection Strategy
|
|
29
|
+
|
|
30
|
+
The field is hidden using CSS layout utilities only (no `display:none`, `visibility:hidden`, or `type="hidden"`), since sophisticated bots skip those patterns. Instead it uses:
|
|
31
|
+
|
|
32
|
+
| Technique | Purpose |
|
|
33
|
+
|---|---|
|
|
34
|
+
| `absolute w-px h-px -m-px overflow-hidden` | Off-screen, zero effective size |
|
|
35
|
+
| `aria-hidden="true"` | Excluded from accessibility tree |
|
|
36
|
+
| `tabIndex={-1}` | Excluded from tab order |
|
|
37
|
+
| `pointer-events-none opacity-0` | Not clickable or visible |
|
|
38
|
+
| `autoComplete="off"` | Prevents browser autofill from triggering it |
|
|
39
|
+
| No `<label>` | Avoids id coupling and screen reader exposure |
|
|
40
|
+
|
|
41
|
+
**Server-side:** reject any submission where this field's value is non-empty.
|
|
@@ -1,24 +1,31 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
A
|
|
1
|
+
<!-- source-hash: 5c15b5ebe13ad3bb647655980a430fb0 -->
|
|
2
|
+
A hover-triggered dropdown component that renders a list of clickable items with smart viewport-aware positioning using `getBoundingClientRect` and fixed positioning — designed to escape `overflow: hidden` containers like modals and sheets.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
###
|
|
6
|
+
### Exports
|
|
7
7
|
|
|
8
|
-
| Export | Description |
|
|
9
|
-
|
|
10
|
-
| `
|
|
11
|
-
| `
|
|
12
|
-
| `
|
|
8
|
+
| Export | Type | Description |
|
|
9
|
+
|---|---|---|
|
|
10
|
+
| `HoverDropdown` | Component | Main dropdown component, triggered on hover (and click/tap) |
|
|
11
|
+
| `HoverDropdownItem` | Interface | Shape for each dropdown row item |
|
|
12
|
+
| `HoverDropdownRenderAnchorArgs` | Interface | Args passed to the `renderAnchor` slot |
|
|
13
13
|
|
|
14
|
-
###
|
|
14
|
+
### `HoverDropdownItem` Fields
|
|
15
15
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
16
|
+
| Field | Description |
|
|
17
|
+
|---|---|
|
|
18
|
+
| `label` | Display text for the row |
|
|
19
|
+
| `icon` | Optional leading icon node |
|
|
20
|
+
| `href` | Makes the row a link; routed via `renderAnchor` |
|
|
21
|
+
| `targetPlatform` | Forwarded to `renderAnchor` for routing decisions |
|
|
22
|
+
| `path` | In-app doc-tree path forwarded to `renderAnchor` for chat nav |
|
|
23
|
+
| `onClick` | Fallback click handler when no `href` is present |
|
|
24
|
+
| `secondaryAction` | Independent icon-button at the row's right edge |
|
|
20
25
|
|
|
21
|
-
|
|
26
|
+
### Positioning Logic
|
|
27
|
+
|
|
28
|
+
The dropdown prefers placement **right** of the trigger, falls back **left**, then falls back **above/below** based on the `side` prop and available viewport space.
|
|
22
29
|
|
|
23
30
|
## Usage Example
|
|
24
31
|
|
|
@@ -28,27 +35,33 @@ The dropdown auto-positions right → left → above/below based on available vi
|
|
|
28
35
|
<span>Blog Posts (3)</span>
|
|
29
36
|
</HoverDropdown>
|
|
30
37
|
|
|
31
|
-
//
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
onClick: () => handleAsk('design'),
|
|
43
|
-
},
|
|
38
|
+
// Chat consumer with custom anchor renderer and secondary action
|
|
39
|
+
const items: HoverDropdownItem[] = [
|
|
40
|
+
{
|
|
41
|
+
label: 'Q3 Report',
|
|
42
|
+
href: '/docs/q3-report',
|
|
43
|
+
targetPlatform: 'markdown',
|
|
44
|
+
path: '/reports/q3',
|
|
45
|
+
secondaryAction: {
|
|
46
|
+
icon: <AskIcon />,
|
|
47
|
+
label: 'Ask about this',
|
|
48
|
+
onClick: () => handleAsk('q3-report'),
|
|
44
49
|
},
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
50
|
+
},
|
|
51
|
+
]
|
|
52
|
+
|
|
53
|
+
<HoverDropdown
|
|
54
|
+
items={items}
|
|
55
|
+
side="bottom"
|
|
56
|
+
hideDelay={300}
|
|
57
|
+
renderAnchor={({ href, path, className, children }) => (
|
|
58
|
+
<NavLinkAnchorViaRuntime href={href} path={path} className={className}>
|
|
48
59
|
{children}
|
|
49
60
|
</NavLinkAnchorViaRuntime>
|
|
50
61
|
)}
|
|
51
62
|
>
|
|
52
63
|
<Chip>Documents</Chip>
|
|
53
64
|
</HoverDropdown>
|
|
54
|
-
```
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
> **Source:** [`hover-dropdown.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/hover-dropdown.tsx)
|
|
@@ -1,59 +1,57 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
|
|
1
|
+
<!-- source-hash: c830a3a2150d037a47f9fe653ca5eac0 -->
|
|
2
|
+
Full-screen image gallery modal component with keyboard navigation, prev/next controls, and image counter display.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
6
|
### `ImageGalleryModal`
|
|
7
|
-
|
|
7
|
+
|
|
8
|
+
The primary (and only) export. Renders a full-screen modal wrapping an image carousel.
|
|
8
9
|
|
|
9
10
|
**Props (`ImageGalleryModalProps`):**
|
|
10
11
|
|
|
11
|
-
| Prop | Type | Description |
|
|
12
|
-
|
|
13
|
-
| `images` | `string[]` | Array of image URLs to display |
|
|
14
|
-
| `isOpen` | `boolean` | Controls modal visibility |
|
|
15
|
-
| `onClose` | `() => void` | Callback fired on close
|
|
16
|
-
| `initialIndex` | `number` | Starting image index
|
|
12
|
+
| Prop | Type | Default | Description |
|
|
13
|
+
|------|------|---------|-------------|
|
|
14
|
+
| `images` | `string[]` | — | Array of image URLs to display |
|
|
15
|
+
| `isOpen` | `boolean` | — | Controls modal visibility |
|
|
16
|
+
| `onClose` | `() => void` | — | Callback fired on close |
|
|
17
|
+
| `initialIndex` | `number` | `0` | Starting image index when modal opens |
|
|
17
18
|
|
|
18
|
-
**
|
|
19
|
-
- **Keyboard navigation** — `ArrowLeft
|
|
20
|
-
- **
|
|
21
|
-
- **
|
|
22
|
-
- **
|
|
23
|
-
- **Index reset** — resets to `initialIndex` each time the modal opens
|
|
19
|
+
**Behaviors:**
|
|
20
|
+
- **Keyboard navigation** — `ArrowLeft` / `ArrowRight` cycle through images; `Escape` closes the modal
|
|
21
|
+
- **Error handling** — Detects unsupported formats (e.g. HEIC) and renders a fallback download link in place of broken images
|
|
22
|
+
- **Index reset** — Resets to `initialIndex` whenever the modal re-opens
|
|
23
|
+
- **Conditional controls** — Prev/next buttons and counter only render when `images.length > 1`
|
|
24
24
|
|
|
25
25
|
## Usage Example
|
|
26
26
|
|
|
27
27
|
```typescript
|
|
28
|
-
import { ImageGalleryModal } from '
|
|
28
|
+
import { ImageGalleryModal } from '@/components/ui/image-gallery-modal';
|
|
29
29
|
|
|
30
30
|
const screenshots = [
|
|
31
|
-
'https://cdn.example.com/
|
|
32
|
-
'https://cdn.example.com/
|
|
33
|
-
'https://cdn.example.com/
|
|
31
|
+
'https://cdn.example.com/photo-1.jpg',
|
|
32
|
+
'https://cdn.example.com/photo-2.jpg',
|
|
33
|
+
'https://cdn.example.com/photo-3.heic',
|
|
34
34
|
];
|
|
35
35
|
|
|
36
36
|
export function EventDetail() {
|
|
37
|
-
const [
|
|
37
|
+
const [galleryOpen, setGalleryOpen] = useState(false);
|
|
38
38
|
const [startIndex, setStartIndex] = useState(0);
|
|
39
39
|
|
|
40
40
|
return (
|
|
41
41
|
<>
|
|
42
|
-
{
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
src={src}
|
|
46
|
-
onClick={() => { setStartIndex(i); setIsOpen(true); }}
|
|
47
|
-
/>
|
|
48
|
-
))}
|
|
42
|
+
<button onClick={() => { setStartIndex(0); setGalleryOpen(true); }}>
|
|
43
|
+
View Photos
|
|
44
|
+
</button>
|
|
49
45
|
|
|
50
46
|
<ImageGalleryModal
|
|
51
47
|
images={screenshots}
|
|
52
|
-
isOpen={
|
|
53
|
-
onClose={() =>
|
|
48
|
+
isOpen={galleryOpen}
|
|
49
|
+
onClose={() => setGalleryOpen(false)}
|
|
54
50
|
initialIndex={startIndex}
|
|
55
51
|
/>
|
|
56
52
|
</>
|
|
57
53
|
);
|
|
58
54
|
}
|
|
59
|
-
```
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
> **Source:** [`components/ui/image-gallery-modal.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/components/ui/image-gallery-modal.tsx)
|