@flamingo-stack/openframe-frontend-core 0.0.213 → 0.0.214-snapshot.20260528192313
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-35XIT2CF.cjs → chunk-2G3NXF6J.cjs} +17 -17
- package/dist/{chunk-35XIT2CF.cjs.map → chunk-2G3NXF6J.cjs.map} +1 -1
- package/dist/{chunk-IK2X5YJU.js → chunk-7PCP7YQR.js} +2 -2
- package/dist/{chunk-ZDF6F7ED.cjs → chunk-D4MNFY67.cjs} +4 -3
- package/dist/chunk-D4MNFY67.cjs.map +1 -0
- package/dist/{chunk-OTKJASSX.cjs → chunk-NGFP4RVL.cjs} +24 -24
- package/dist/{chunk-OTKJASSX.cjs.map → chunk-NGFP4RVL.cjs.map} +1 -1
- package/dist/{chunk-3JWIJJ44.js → chunk-R6MLPU4A.js} +2 -2
- package/dist/{chunk-ZTJVRSN5.js → chunk-WQZP3JIZ.js} +4 -3
- package/dist/chunk-WQZP3JIZ.js.map +1 -0
- package/dist/components/chat/index.cjs +2 -2
- package/dist/components/chat/index.js +1 -1
- package/dist/components/contact/index.cjs +3 -3
- package/dist/components/contact/index.js +2 -2
- package/dist/components/features/index.cjs +2 -2
- package/dist/components/features/index.js +1 -1
- package/dist/components/index.cjs +49 -49
- package/dist/components/index.js +2 -2
- package/dist/components/navigation/index.cjs +2 -2
- package/dist/components/navigation/index.js +1 -1
- package/dist/components/tickets/index.cjs +61 -61
- package/dist/components/tickets/index.js +3 -3
- package/dist/components/ui/index.cjs +2 -2
- package/dist/components/ui/index.js +1 -1
- package/dist/index.cjs +2 -2
- package/dist/index.js +1 -1
- package/package.json +1 -1
- package/src/.index.md +36 -34
- package/src/components/.alert-dialog.md +27 -23
- package/src/components/.announcement-bar.md +26 -21
- package/src/components/.breadcrumb.md +19 -15
- package/src/components/.calendar.md +24 -19
- package/src/components/.categories-cart.md +29 -24
- package/src/components/.checkbox.md +23 -25
- package/src/components/.chevron-button.md +37 -32
- package/src/components/.comment-card.md +32 -62
- package/src/components/.dialog.md +26 -26
- package/src/components/.dynamic-skeleton.md +54 -57
- package/src/components/.empty-state.md +42 -51
- package/src/components/.faq-accordion.md +27 -21
- package/src/components/.filter-chip.md +41 -24
- package/src/components/.flamingo-logo.md +20 -23
- package/src/components/.footer-waitlist-button.md +29 -22
- package/src/components/.footer.md +32 -32
- package/src/components/.icons-block.md +27 -17
- package/src/components/.image-cropper.md +41 -32
- package/src/components/.index.md +33 -39
- package/src/components/.input.md +31 -35
- package/src/components/.logs-list.md +31 -20
- package/src/components/.media-carousel.md +35 -36
- package/src/components/.open-source-features.md +33 -16
- package/src/components/.pagination.md +52 -51
- package/src/components/.provider-button.md +21 -23
- package/src/components/.select.md +31 -20
- package/src/components/.sidebar.md +34 -24
- package/src/components/.smooth-accordion.md +29 -24
- package/src/components/.social-icon-row.md +36 -32
- package/src/components/.textarea.md +25 -31
- package/src/components/.tool-icon.md +24 -26
- package/src/components/.unified-filter-logic.md +37 -30
- package/src/components/.unified-pagination.md +23 -22
- package/src/components/.user-summary-stub.md +38 -22
- package/src/components/.vendor-display-button.md +25 -25
- package/src/components/.vendor-icon.md +33 -25
- package/src/components/.why-it-matters.md +28 -25
- package/src/components/chat/.approval-batch-message.md +51 -0
- package/src/components/chat/.approval-request-message.md +35 -34
- package/src/components/chat/.chat-attachment-bar.md +64 -0
- package/src/components/chat/.chat-container.md +36 -18
- package/src/components/chat/.chat-input.md +37 -20
- package/src/components/chat/.chat-message-enhanced.md +30 -49
- package/src/components/chat/.chat-message-list.md +45 -32
- package/src/components/chat/.chat-message-skeleton.md +26 -22
- package/src/components/chat/.chat-panel-context.md +52 -0
- package/src/components/chat/.chat-ref.types.md +42 -0
- package/src/components/chat/.chat-sidebar-skeleton.md +34 -25
- package/src/components/chat/.chat-sidebar.md +31 -26
- package/src/components/chat/.chat-ticket-list.md +39 -0
- package/src/components/chat/.context-compaction-display.md +36 -0
- package/src/components/chat/.cycling-phrase.md +52 -0
- package/src/components/chat/.embeddable-chat.md +48 -0
- package/src/components/chat/.expand-chevron.md +24 -0
- package/src/components/chat/.index.md +31 -35
- package/src/components/chat/.mingo-onboarding-card-skeleton.md +44 -0
- package/src/components/chat/.mingo-onboarding-card.md +62 -0
- package/src/components/chat/.model-display.md +32 -30
- package/src/components/chat/.nav-link-anchor-via-runtime.md +40 -0
- package/src/components/chat/.remark-card-links.md +38 -0
- package/src/components/chat/.slash-command-suggestions.md +47 -0
- package/src/components/chat/.source-action-button.md +48 -0
- package/src/components/chat/.thinking-display.md +42 -0
- package/src/components/chat/.tool-call-blocks.md +45 -0
- package/src/components/chat/.tool-execution-display.md +44 -36
- package/src/components/chat/chat-container.tsx +1 -1
- package/src/components/chat/entity-cards/.admin-content-card.md +43 -0
- package/src/components/chat/entity-cards/.block-card.md +47 -0
- package/src/components/chat/entity-cards/.blog-card.md +52 -0
- package/src/components/chat/entity-cards/.blog-image-placeholder.md +39 -0
- package/src/components/chat/entity-cards/.campaign-card-admin.md +47 -0
- package/src/components/chat/entity-cards/.case-study-card.md +58 -0
- package/src/components/chat/entity-cards/.chat-ticket-item.md +40 -0
- package/src/components/chat/entity-cards/.chat-video-entity-card.md +43 -0
- package/src/components/chat/entity-cards/.customer-interview-card.md +53 -0
- package/src/components/chat/entity-cards/.data-room-doc-card.md +47 -0
- package/src/components/chat/entity-cards/.dispatch.md +39 -0
- package/src/components/chat/entity-cards/.entity-author-card.md +51 -0
- package/src/components/chat/entity-cards/.generic-entity-card.md +62 -0
- package/src/components/chat/entity-cards/.github-activity-card.md +61 -0
- package/src/components/chat/entity-cards/.hubspot-ticket-card.md +53 -0
- package/src/components/chat/entity-cards/.index.md +66 -0
- package/src/components/chat/entity-cards/.investor-update-card.md +47 -0
- package/src/components/chat/entity-cards/.onboarding-guide-card.md +58 -0
- package/src/components/chat/entity-cards/.product-release-card-defaults.md +31 -0
- package/src/components/chat/entity-cards/.product-release-card.md +29 -0
- package/src/components/chat/entity-cards/.program-card-defaults.md +41 -0
- package/src/components/chat/entity-cards/.program-card.md +59 -0
- package/src/components/chat/entity-cards/.roadmap-card.md +46 -0
- package/src/components/chat/entity-cards/.roadmap-vote-button.md +52 -0
- package/src/components/chat/entity-cards/.slack-message-card.md +48 -0
- package/src/components/chat/entity-cards/.task-type-icon.md +47 -0
- package/src/components/chat/hooks/.index.md +36 -21
- package/src/components/chat/hooks/.use-chat-attachment-image-gallery.md +51 -0
- package/src/components/chat/hooks/.use-chat-attachments.md +48 -0
- package/src/components/chat/hooks/.use-chat-card-item.md +39 -0
- package/src/components/chat/hooks/.use-chat-identity.md +45 -0
- package/src/components/chat/hooks/.use-chat.md +58 -0
- package/src/components/chat/hooks/.use-chunk-catchup.md +46 -48
- package/src/components/chat/hooks/.use-close-on-navigation.md +44 -0
- package/src/components/chat/hooks/.use-collapsible.md +48 -0
- package/src/components/chat/hooks/.use-embedded-chat.md +32 -0
- package/src/components/chat/hooks/.use-jetstream-dialog-subscription.md +40 -0
- package/src/components/chat/hooks/.use-nats-chat-adapter.md +52 -0
- package/src/components/chat/hooks/.use-nats-dialog-subscription.md +49 -30
- package/src/components/chat/hooks/.use-proxied-image-url.md +40 -0
- package/src/components/chat/hooks/.use-realtime-chunk-processor.md +43 -40
- package/src/components/chat/hooks/.use-slash-commands.md +46 -0
- package/src/components/chat/hooks/.use-sse-chat-adapter.md +34 -0
- package/src/components/chat/hooks/.use-sse.md +60 -0
- package/src/components/chat/hooks/.use-unified-chat.md +57 -0
- package/src/components/chat/types/.api.types.md +52 -38
- package/src/components/chat/types/.chat.types.md +43 -34
- package/src/components/chat/types/.component.types.md +47 -48
- package/src/components/chat/types/.index.md +20 -27
- package/src/components/chat/types/.message.types.md +58 -48
- package/src/components/chat/types/.network.types.md +57 -31
- package/src/components/chat/types/.processing.types.md +49 -31
- package/src/components/chat/types/.unified-chat-state.types.md +41 -0
- package/src/components/chat/types/entities/.blog.md +43 -0
- package/src/components/chat/types/entities/.case-study.md +26 -0
- package/src/components/chat/types/entities/.content-ref.md +41 -0
- package/src/components/chat/types/entities/.customer-interview.md +28 -0
- package/src/components/chat/types/entities/.data-room-doc.md +36 -0
- package/src/components/chat/types/entities/.github-activity.md +43 -0
- package/src/components/chat/types/entities/.hubspot-ticket.md +53 -0
- package/src/components/chat/types/entities/.index.md +42 -0
- package/src/components/chat/types/entities/.investor-update.md +45 -0
- package/src/components/chat/types/entities/.onboarding-guide.md +50 -0
- package/src/components/chat/types/entities/.program-types.md +57 -0
- package/src/components/chat/types/entities/.roadmap-item.md +58 -0
- package/src/components/chat/types/entities/.slack-message.md +35 -0
- package/src/components/chat/utils/.agent-status-message.md +45 -0
- package/src/components/chat/utils/.auto-continuation-directive.md +58 -0
- package/src/components/chat/utils/.chat-attachment-markdown.md +54 -0
- package/src/components/chat/utils/.chat-authed-fetch.md +25 -0
- package/src/components/chat/utils/.chat-nav-resolution.md +46 -0
- package/src/components/chat/utils/.chat-proxy-auth-storage.md +38 -0
- package/src/components/chat/utils/.chip-action-class.md +34 -0
- package/src/components/chat/utils/.chip-styles.md +46 -0
- package/src/components/chat/utils/.chunk-parser.md +38 -28
- package/src/components/chat/utils/.clickup-task-type-utils.md +48 -0
- package/src/components/chat/utils/.compact-card-classes.md +62 -0
- package/src/components/chat/utils/.decide-new-tab.md +51 -0
- package/src/components/chat/utils/.external-app-urls.md +29 -0
- package/src/components/chat/utils/.extract-incomplete-message-state.md +25 -29
- package/src/components/chat/utils/.flatten-assistant-content.md +34 -0
- package/src/components/chat/utils/.icon-registry.md +46 -0
- package/src/components/chat/utils/.index.md +37 -32
- package/src/components/chat/utils/.is-cross-origin-url.md +35 -0
- package/src/components/chat/utils/.message-segment-accumulator.md +25 -34
- package/src/components/chat/utils/.nav-anchor-props.md +44 -0
- package/src/components/chat/utils/.nav-click-handler.md +47 -0
- package/src/components/chat/utils/.onboarding-icons.md +28 -0
- package/src/components/chat/utils/.process-historical-messages.md +46 -35
- package/src/components/chat/utils/.scroll-anchor.md +40 -0
- package/src/components/chat/utils/.slash-dispatch-utils.md +44 -0
- package/src/components/chat/utils/.source-icons.md +35 -0
- package/src/components/chat/utils/.source-row-cta.md +54 -0
- package/src/components/chat/utils/.tool-call-helpers.md +42 -0
- package/src/components/contact/.contact-form.md +43 -0
- package/src/components/contact/.index.md +27 -0
- package/src/components/features/.array-entry-manager.md +36 -45
- package/src/components/features/.changelog-manager.md +47 -21
- package/src/components/features/.changelog-sections-manager.md +21 -26
- package/src/components/features/.command-box.md +31 -28
- package/src/components/features/.entity-summary-editor.md +46 -0
- package/src/components/features/.entity-video-section.md +51 -0
- package/src/components/features/.figma-prototype-viewer.md +48 -29
- package/src/components/features/.filters-dropdown.md +33 -46
- package/src/components/features/.highlight-config-section.md +42 -0
- package/src/components/features/.highlight-generation-section.md +46 -0
- package/src/components/features/.highlight-video-combined-section.md +47 -0
- package/src/components/features/.highlight-video-preview.md +44 -0
- package/src/components/features/.highlight-video-section.md +47 -0
- package/src/components/features/.index.md +40 -66
- package/src/components/features/.media-gallery-manager.md +48 -38
- package/src/components/features/.more-about-button.md +22 -19
- package/src/components/features/.og-editor-preview.md +40 -36
- package/src/components/features/.parallax-image-showcase.md +33 -26
- package/src/components/features/.paths-display.md +42 -43
- package/src/components/features/.platform-badge.md +37 -36
- package/src/components/features/.platform-filter.md +23 -16
- package/src/components/features/.policy-configuration-panel.md +48 -56
- package/src/components/features/.provider-button.md +33 -36
- package/src/components/features/.push-button-selector.md +40 -29
- package/src/components/features/.release-media-manager.md +46 -31
- package/src/components/features/.section-selector.md +26 -31
- package/src/components/features/.select-button.md +35 -25
- package/src/components/features/.seo-editor-preview.md +41 -44
- package/src/components/features/.social-links-manager.md +25 -19
- package/src/components/features/.start-with-openframe-button.md +37 -29
- package/src/components/features/.status-filter-component.md +36 -20
- package/src/components/features/.tags-selector.md +40 -24
- package/src/components/features/.transcribe-and-summarize-combined-section.md +45 -0
- package/src/components/features/.transcribe-summarize-section.md +48 -0
- package/src/components/features/.transcript-summary-editor.md +53 -0
- package/src/components/features/.video-bites-display.md +46 -0
- package/src/components/features/.video-clips-section.md +41 -0
- package/src/components/features/.video-ratio-tabs.md +56 -0
- package/src/components/features/.video-source-selector.md +60 -0
- package/src/components/features/.video.md +44 -0
- package/src/components/features/.waitlist-form.md +60 -0
- package/src/components/features/ai-enrich/.AIEnrichButton.md +30 -27
- package/src/components/features/ai-enrich/.AIEnrichSection.md +46 -42
- package/src/components/features/board/.board-column-header.md +38 -0
- package/src/components/features/board/.board-column.md +43 -0
- package/src/components/features/board/.board.md +51 -0
- package/src/components/features/board/.color-utils.md +26 -0
- package/src/components/features/board/.index.md +56 -0
- package/src/components/features/board/.ticket-card-skeleton.md +38 -0
- package/src/components/features/board/.ticket-card.md +47 -0
- package/src/components/features/board/.types.md +45 -0
- package/src/components/features/board/.use-board-collapse.md +34 -0
- package/src/components/features/notifications/.index.md +57 -0
- package/src/components/features/notifications/.notification-drawer.md +34 -0
- package/src/components/features/notifications/.notification-tile.md +39 -0
- package/src/components/features/notifications/.notifications-context.md +73 -0
- package/src/components/features/notifications/.types.md +45 -0
- package/src/components/icons/.about-icon.md +20 -28
- package/src/components/icons/.ai-robot-icon.md +15 -17
- package/src/components/icons/.bash-icon.md +16 -23
- package/src/components/icons/.buildings-icon.md +10 -24
- package/src/components/icons/.capterra-icon.md +30 -26
- package/src/components/icons/.carta-icon.md +29 -0
- package/src/components/icons/.clickup-icon.md +26 -0
- package/src/components/icons/.cmd-icon.md +15 -22
- package/src/components/icons/.coins-icon.md +17 -25
- package/src/components/icons/.community-hub-icon.md +19 -25
- package/src/components/icons/.community-icon.md +24 -21
- package/src/components/icons/.compare-icon.md +32 -19
- package/src/components/icons/.copy-icon.md +29 -15
- package/src/components/icons/.custom-external-link-icon.md +19 -17
- package/src/components/icons/.custom-fork-icon.md +32 -21
- package/src/components/icons/.custom-license-icon.md +29 -25
- package/src/components/icons/.custom-star-icon.md +20 -28
- package/src/components/icons/.custom-time-icon.md +21 -22
- package/src/components/icons/.cut-vendor-costs-icon.md +6 -19
- package/src/components/icons/.dashboard-icon.md +13 -18
- package/src/components/icons/.deno-icon.md +16 -23
- package/src/components/icons/.donut-icon.md +12 -23
- package/src/components/icons/.double-chevron-icon.md +28 -36
- package/src/components/icons/.elestio-logo.md +13 -23
- package/src/components/icons/.empty-vendor-icon.md +16 -18
- package/src/components/icons/.explore-categories-icon.md +18 -29
- package/src/components/icons/.eye-icon.md +16 -26
- package/src/components/icons/.facebook-icon.md +9 -20
- package/src/components/icons/.figma-icon.md +8 -17
- package/src/components/icons/.filter-icon.md +15 -17
- package/src/components/icons/.flamingo-logo.md +28 -27
- package/src/components/icons/.folder-shield-icon.md +28 -19
- package/src/components/icons/.g2-icon.md +22 -21
- package/src/components/icons/.getapp-icon.md +25 -21
- package/src/components/icons/.github-icon.md +13 -25
- package/src/components/icons/.globe-icon.md +14 -19
- package/src/components/icons/.google-gemini-icon.md +16 -19
- package/src/components/icons/.google-logo.md +15 -21
- package/src/components/icons/.grid-view-icon.md +30 -19
- package/src/components/icons/.hamburger-icon.md +22 -20
- package/src/components/icons/.hand-dollar-icon.md +24 -34
- package/src/components/icons/.hotel-icon.md +27 -21
- package/src/components/icons/.icon-utils.md +28 -29
- package/src/components/icons/.image-icon.md +15 -22
- package/src/components/icons/.index.md +25 -28
- package/src/components/icons/.info-circle-icon.md +29 -30
- package/src/components/icons/.instagram-icon.md +10 -24
- package/src/components/icons/.jump-in-icon.md +18 -18
- package/src/components/icons/.linux-icon.md +18 -18
- package/src/components/icons/.log-out-icon.md +15 -23
- package/src/components/icons/.logs-icon.md +14 -23
- package/src/components/icons/.margin-crisis-icon.md +21 -20
- package/src/components/icons/.menu-icon.md +18 -19
- package/src/components/icons/.miami-cyber-gang-logo-face-only.md +18 -21
- package/src/components/icons/.miami-cyber-gang-logo.md +22 -14
- package/src/components/icons/.mlg-logo.md +18 -16
- package/src/components/icons/.moon-icon.md +32 -22
- package/src/components/icons/.ms-icon.md +30 -19
- package/src/components/icons/.nushell-icon.md +7 -21
- package/src/components/icons/.open-source-icon.md +19 -23
- package/src/components/icons/.openai-icon.md +9 -24
- package/src/components/icons/.openframe-ai-icons.md +25 -26
- package/src/components/icons/.openframe-logo.md +28 -22
- package/src/components/icons/.openframe-text.md +24 -27
- package/src/components/icons/.openmsp-logo.md +26 -23
- package/src/components/icons/.pilot-icon.md +23 -0
- package/src/components/icons/.powershell-icon.md +17 -22
- package/src/components/icons/.python-icon.md +16 -23
- package/src/components/icons/.queries-icon.md +13 -21
- package/src/components/icons/.reddit-icon.md +28 -24
- package/src/components/icons/.remote-control-icon.md +13 -17
- package/src/components/icons/.script-icon.md +27 -19
- package/src/components/icons/.search-icon.md +21 -21
- package/src/components/icons/.send-icon.md +14 -16
- package/src/components/icons/.settings-icon.md +30 -19
- package/src/components/icons/.shape-circle-dash-icon.md +16 -21
- package/src/components/icons/.shell-icon.md +15 -19
- package/src/components/icons/.shield-check-icon.md +18 -31
- package/src/components/icons/.shield-key-icon.md +25 -25
- package/src/components/icons/.shield-lock-icon.md +8 -18
- package/src/components/icons/.slack-icon.md +28 -32
- package/src/components/icons/.sparkles-icon.md +18 -23
- package/src/components/icons/.sso-configuration-icon.md +29 -16
- package/src/components/icons/.sun-icon.md +20 -18
- package/src/components/icons/.table-view-icon.md +17 -19
- package/src/components/icons/.telegram-icon.md +8 -22
- package/src/components/icons/.thumbs-down-icon.md +10 -19
- package/src/components/icons/.thumbs-up-icon.md +8 -17
- package/src/components/icons/.tool-directory-icons.md +24 -28
- package/src/components/icons/.trustpilot-icon.md +25 -22
- package/src/components/icons/.user-icon.md +26 -28
- package/src/components/icons/.users-group-icon.md +28 -24
- package/src/components/icons/.vendor-showcase-icons.md +21 -29
- package/src/components/icons/.vendors-icon.md +18 -22
- package/src/components/icons/.whatsapp-icon.md +30 -14
- package/src/components/icons/.x-icon.md +18 -23
- package/src/components/icons/.x-logo.md +13 -38
- package/src/components/icons/.youtube-icon.md +8 -19
- package/src/components/icons/device-type-icons/.get-device-type-icon.md +26 -34
- package/src/components/icons-v2-generated/.index.md +52 -0
- package/src/components/icons-v2-generated/alphabet/.index.md +33 -0
- package/src/components/icons-v2-generated/arrows/.index.md +39 -0
- package/src/components/icons-v2-generated/audio-and-visual/.index.md +40 -0
- package/src/components/icons-v2-generated/brand-logos/.elestio-logo-icon.md +40 -0
- package/src/components/icons-v2-generated/brand-logos/.gemini-logo-icon.md +37 -0
- package/src/components/icons-v2-generated/brand-logos/.google-gemini-logo-icon.md +33 -0
- package/src/components/icons-v2-generated/brand-logos/.index.md +38 -0
- package/src/components/icons-v2-generated/brand-logos/.meshcentral-logo-grey-icon.md +35 -0
- package/src/components/icons-v2-generated/brand-logos/.meshcentral-logo-icon.md +36 -0
- package/src/components/icons-v2-generated/buildings/.index.md +48 -0
- package/src/components/icons-v2-generated/charts/.index.md +40 -0
- package/src/components/icons-v2-generated/clothes/.index.md +48 -0
- package/src/components/icons-v2-generated/coding/.index.md +42 -0
- package/src/components/icons-v2-generated/communication/.index.md +39 -0
- package/src/components/icons-v2-generated/date-and-time/.index.md +29 -0
- package/src/components/icons-v2-generated/design/.index.md +39 -0
- package/src/components/icons-v2-generated/devices/.index.md +38 -0
- package/src/components/icons-v2-generated/documents/.index.md +38 -0
- package/src/components/icons-v2-generated/finance/.index.md +34 -0
- package/src/components/icons-v2-generated/food-and-drinks/.index.md +34 -0
- package/src/components/icons-v2-generated/food-and-drinks/.leafy-green-icon.md +36 -0
- package/src/components/icons-v2-generated/food-and-drinks/.strawberry-icon.md +39 -0
- package/src/components/icons-v2-generated/health/.index.md +40 -0
- package/src/components/icons-v2-generated/household/.index.md +45 -0
- package/src/components/icons-v2-generated/interface/.index.md +36 -0
- package/src/components/icons-v2-generated/map-and-travel/.index.md +41 -0
- package/src/components/icons-v2-generated/media-playback/.index.md +51 -0
- package/src/components/icons-v2-generated/number/.index.md +41 -0
- package/src/components/icons-v2-generated/school/.index.md +37 -0
- package/src/components/icons-v2-generated/security/.fingerprint-icon.md +38 -0
- package/src/components/icons-v2-generated/security/.index.md +39 -0
- package/src/components/icons-v2-generated/shopping/.index.md +42 -0
- package/src/components/icons-v2-generated/signs-and-symbols/.index.md +32 -0
- package/src/components/icons-v2-generated/sort-and-filter/.index.md +35 -0
- package/src/components/icons-v2-generated/sport/.index.md +41 -0
- package/src/components/icons-v2-generated/text-editor/.index.md +44 -0
- package/src/components/icons-v2-generated/users/.index.md +45 -0
- package/src/components/icons-v2-generated/vehicles-and-delivery/.index.md +36 -0
- package/src/components/icons-v2-generated/weather-and-nature/.flower-sakura-icon.md +36 -0
- package/src/components/icons-v2-generated/weather-and-nature/.index.md +34 -0
- package/src/components/layout/.article-detail-layout.md +43 -0
- package/src/components/layout/.back-button.md +40 -0
- package/src/components/layout/.list-page-layout.md +35 -26
- package/src/components/layout/.page-container.md +27 -38
- package/src/components/layout/.page-layout.md +50 -0
- package/src/components/layout/.title-block.md +42 -0
- package/src/components/loading/.card-skeleton.md +38 -29
- package/src/components/loading/.device-card-skeleton.md +29 -25
- package/src/components/loading/.index.md +39 -46
- package/src/components/loading/.margin-report-skeleton.md +45 -34
- package/src/components/loading/.organization-card-skeleton.md +39 -44
- package/src/components/loading/.page-layout-skeleton.md +34 -45
- package/src/components/loading/.unified-skeleton.md +62 -36
- package/src/components/navigation/.app-header.md +40 -29
- package/src/components/navigation/.app-layout.md +25 -26
- package/src/components/navigation/.header-global-search.md +34 -37
- package/src/components/navigation/.header-organization-filter.md +23 -22
- package/src/components/navigation/.header.md +31 -35
- package/src/components/navigation/.mobile-burger-menu.md +39 -47
- package/src/components/navigation/.mobile-nav-panel.md +51 -32
- package/src/components/navigation/.navigation-sidebar-header.md +36 -0
- package/src/components/navigation/.navigation-sidebar-item.md +45 -0
- package/src/components/navigation/.navigation-sidebar-toggle.md +38 -0
- package/src/components/navigation/.navigation-sidebar.md +33 -34
- package/src/components/navigation/.sliding-sidebar.md +52 -41
- package/src/components/navigation/.sticky-section-nav.md +56 -48
- package/src/components/platform/.ScriptArguments.md +39 -25
- package/src/components/platform/.ScriptInfoSection.md +30 -26
- package/src/components/platform/.ShellTypeBadge.md +18 -13
- package/src/components/platform/.SoftwareInfo.md +23 -27
- package/src/components/platform/.SoftwareSourceBadge.md +28 -19
- package/src/components/platform/.ToolBadge.md +25 -26
- package/src/components/platform/ShellTypeBadge.tsx +2 -2
- package/src/components/providers/.theme-provider.md +52 -0
- package/src/components/shared/delivery/.delivery-lists.md +39 -0
- package/src/components/shared/delivery/.delivery-row.md +41 -0
- package/src/components/shared/delivery/.delivery-table.md +41 -0
- package/src/components/shared/delivery/.index.md +38 -0
- package/src/components/shared/dev-section/.dev-card-row.md +60 -0
- package/src/components/shared/dev-section/.dev-section-page.md +48 -0
- package/src/components/shared/dev-section/.dev-section-view.md +43 -0
- package/src/components/shared/dev-section/.index.md +38 -0
- package/src/components/shared/legal-document/.index.md +40 -0
- package/src/components/shared/legal-document/.legal-document-page.md +50 -0
- package/src/components/shared/legal-document/.use-legal-docs.md +42 -0
- package/src/components/shared/onboarding/.onboarding-step-card.md +32 -31
- package/src/components/shared/onboarding/.onboarding-walkthrough.md +39 -43
- package/src/components/shared/product-release/.index.md +28 -30
- package/src/components/shared/product-release/.product-release-card-skeleton.md +28 -28
- package/src/components/shared/product-release/.product-release-card.md +45 -27
- package/src/components/shared/product-release/.release-detail-page.md +23 -24
- package/src/components/shared/roadmap/.index.md +37 -0
- package/src/components/shared/roadmap/.roadmap-grid-skeleton.md +39 -0
- package/src/components/shared/roadmap/.roadmap-grid.md +66 -0
- package/src/components/shared/roadmap/.use-roadmap-voting.md +68 -0
- package/src/components/tickets/.help-center-card.md +51 -0
- package/src/components/tickets/.help-center-create-form.md +38 -0
- package/src/components/tickets/.help-center-list.md +40 -0
- package/src/components/tickets/.index.md +65 -0
- package/src/components/tickets/.ticket-center.md +51 -0
- package/src/components/tickets/.ticket-detail-drawer.md +48 -0
- package/src/components/tickets/.ticket-linked-delivery-card.md +36 -0
- package/src/components/tickets/.ticket-open-form.md +50 -0
- package/src/components/tickets/.ticket-row.md +30 -0
- package/src/components/tickets/.types.md +57 -0
- package/src/components/tickets/hooks/.use-ticket-actions.md +77 -0
- package/src/components/tickets/hooks/.use-ticket-engagements.md +42 -0
- package/src/components/tickets/hooks/.use-tickets-list.md +54 -0
- package/src/components/ui/.actions-menu.md +66 -41
- package/src/components/ui/.alert-dialog.md +29 -26
- package/src/components/ui/.allowed-domains-input.md +29 -21
- package/src/components/ui/.assignee-dropdown.md +45 -0
- package/src/components/ui/.autocomplete.md +47 -41
- package/src/components/ui/.benefit-card.md +51 -36
- package/src/components/ui/.brand-association-card.md +30 -27
- package/src/components/ui/.breadcrumb.md +17 -15
- package/src/components/ui/.checkbox-block.md +39 -35
- package/src/components/ui/.checkbox-with-description.md +23 -16
- package/src/components/ui/.checkbox.md +31 -23
- package/src/components/ui/.circular-progress.md +49 -19
- package/src/components/ui/.content-loader.md +32 -20
- package/src/components/ui/.cursor-pagination.md +41 -52
- package/src/components/ui/.dashboard-info-card.md +33 -26
- package/src/components/ui/.date-picker.md +27 -25
- package/src/components/ui/.device-card-compact.md +28 -29
- package/src/components/ui/.device-card.md +27 -27
- package/src/components/ui/.dialog.md +25 -16
- package/src/components/ui/.drawer.md +86 -0
- package/src/components/ui/.dropdown-button.md +45 -0
- package/src/components/ui/.entity-image.md +46 -0
- package/src/components/ui/.error-state.md +41 -28
- package/src/components/ui/.feature-card.md +35 -31
- package/src/components/ui/.feature-list.md +48 -0
- package/src/components/ui/.field-wrapper.md +47 -0
- package/src/components/ui/.file-upload.md +42 -0
- package/src/components/ui/.filter-checkbox-item.md +43 -0
- package/src/components/ui/.filter-list.md +57 -0
- package/src/components/ui/.filter-modal.md +59 -0
- package/src/components/ui/.floating-tooltip.md +43 -26
- package/src/components/ui/.hidden-tags-popup.md +49 -0
- package/src/components/ui/.hover-dropdown.md +54 -0
- package/src/components/ui/.image-gallery-modal.md +41 -34
- package/src/components/ui/.image-uploader.md +53 -0
- package/src/components/ui/.index.md +40 -34
- package/src/components/ui/.info-card.md +31 -31
- package/src/components/ui/.info-row.md +31 -27
- package/src/components/ui/.input-trigger.md +44 -0
- package/src/components/ui/.input.md +37 -31
- package/src/components/ui/.markdown-editor.md +57 -0
- package/src/components/ui/.modal-v2.md +51 -0
- package/src/components/ui/.modal.md +32 -31
- package/src/components/ui/.more-actions-menu.md +45 -38
- package/src/components/ui/.organization-card.md +31 -37
- package/src/components/ui/.page-actions.md +44 -54
- package/src/components/ui/.phone-input.md +54 -0
- package/src/components/ui/.progress-bar.md +35 -27
- package/src/components/ui/.radio-group.md +39 -27
- package/src/components/ui/.release-changelog-section.md +34 -34
- package/src/components/ui/.search-input.md +48 -0
- package/src/components/ui/.select.md +54 -34
- package/src/components/ui/.service-card.md +42 -40
- package/src/components/ui/.sheet.md +27 -18
- package/src/components/ui/.simple-markdown-renderer.md +29 -31
- package/src/components/ui/.sort-column-item.md +42 -0
- package/src/components/ui/.square-avatar.md +34 -24
- package/src/components/ui/.status-badge.md +26 -38
- package/src/components/ui/.switch.md +22 -35
- package/src/components/ui/.tab-navigation.md +56 -53
- package/src/components/ui/.tab-selector.md +40 -0
- package/src/components/ui/.tag-key-value-filter.md +56 -0
- package/src/components/ui/.tag-search-input.md +53 -0
- package/src/components/ui/.tag.md +49 -31
- package/src/components/ui/.tags-manager.md +60 -0
- package/src/components/ui/.textarea.md +44 -34
- package/src/components/ui/.ticket-attachments-list.md +45 -0
- package/src/components/ui/.ticket-detail-section.md +29 -0
- package/src/components/ui/.ticket-info-section.md +56 -0
- package/src/components/ui/.ticket-note-card.md +53 -0
- package/src/components/ui/.ticket-notes-section.md +54 -0
- package/src/components/ui/.ticket-status-tag.md +49 -0
- package/src/components/ui/.title-content-block.md +25 -26
- package/src/components/ui/.toaster.md +40 -28
- package/src/components/ui/.tooltip.md +22 -11
- package/src/components/ui/.truncate-text.md +39 -0
- package/src/components/ui/button/.button-styles.md +35 -0
- package/src/components/ui/button/.button.md +53 -0
- package/src/components/ui/button/.split-button.md +48 -0
- package/src/components/ui/data-table/.data-table-body.md +48 -0
- package/src/components/ui/data-table/.data-table-column-filter.md +45 -0
- package/src/components/ui/data-table/.data-table-cursor-footer.md +45 -0
- package/src/components/ui/data-table/.data-table-empty.md +43 -0
- package/src/components/ui/data-table/.data-table-header.md +55 -0
- package/src/components/ui/data-table/.data-table-infinite-footer.md +44 -0
- package/src/components/ui/data-table/.data-table-row-count.md +43 -0
- package/src/components/ui/data-table/.data-table-row.md +47 -0
- package/src/components/ui/data-table/.data-table-skeleton.md +42 -0
- package/src/components/ui/data-table/.data-table.md +47 -0
- package/src/components/ui/data-table/.index.md +55 -0
- package/src/components/ui/data-table/.types.md +54 -0
- package/src/components/ui/data-table/.use-data-table.md +45 -0
- package/src/components/ui/data-table/.utils.md +38 -0
- package/src/components/ui/file-manager/.file-manager-action-bar.md +39 -30
- package/src/components/ui/file-manager/.file-manager-breadcrumb.md +29 -27
- package/src/components/ui/file-manager/.file-manager-context-menu.md +38 -42
- package/src/components/ui/file-manager/.file-manager-empty.md +26 -39
- package/src/components/ui/file-manager/.file-manager-table-row.md +33 -41
- package/src/components/ui/file-manager/.file-manager.md +35 -31
- package/src/components/ui/query-report-table/.index.md +43 -0
- package/src/components/ui/query-report-table/.query-report-table-header.md +36 -0
- package/src/components/ui/query-report-table/.query-report-table-row.md +40 -0
- package/src/components/ui/query-report-table/.query-report-table-skeleton.md +44 -0
- package/src/components/ui/query-report-table/.query-report-table.md +47 -0
- package/src/components/ui/query-report-table/.types.md +41 -0
- package/src/components/ui/query-report-table/.utils.md +35 -0
- package/src/components/ui/table/.index.md +27 -48
- package/src/components/ui/table/.table-cell.md +18 -27
- package/src/components/ui/table/.table-column-filter-dropdown.md +40 -0
- package/src/components/ui/table/.table-description-cell.md +24 -14
- package/src/components/ui/table/.table-empty-state.md +21 -22
- package/src/components/ui/table/.table-header.md +25 -40
- package/src/components/ui/table/.table-row.md +22 -40
- package/src/components/ui/table/.table-skeleton.md +33 -26
- package/src/components/ui/table/.table-timestamp-cell.md +26 -16
- package/src/components/ui/table/.table.md +39 -59
- package/src/components/ui/table/.types.md +44 -36
- package/src/components/ui/table/.utils.md +18 -20
- package/src/contexts/.chat-runtime-context.md +54 -0
- package/src/contexts/.endpoints-runtime-context.md +58 -0
- package/src/contexts/.index.md +53 -0
- package/src/contexts/.use-outer-or-default.md +36 -0
- package/src/embed-shims/.index.md +45 -0
- package/src/embed-shims/.next-dynamic.md +43 -0
- package/src/embed-shims/.next-image.md +45 -0
- package/src/embed-shims/.next-link.md +59 -0
- package/src/embed-shims/.next-navigation.md +59 -0
- package/src/hooks/.index.md +34 -29
- package/src/hooks/.use-access-code-integration.md +49 -0
- package/src/hooks/.use-contact-submission.md +37 -26
- package/src/hooks/.use-copy-to-clipboard.md +42 -0
- package/src/hooks/.use-near-viewport.md +44 -0
- package/src/hooks/.use-og-placeholder.md +51 -0
- package/src/hooks/.use-toast.md +36 -35
- package/src/hooks/state/.use-api-params.md +29 -46
- package/src/hooks/state/.use-query-params.md +37 -33
- package/src/hooks/ui/.index.md +33 -32
- package/src/hooks/ui/.use-auto-limit-tags.md +54 -0
- package/src/hooks/ui/.use-horizontal-scrollbar.md +74 -0
- package/src/hooks/ui/.use-image-edge-color.md +42 -0
- package/src/hooks/ui/.use-media-query.md +33 -25
- package/src/hooks/ui/.use-search.md +51 -0
- package/src/nats/.nats.md +49 -28
- package/src/schemas/.contact-schema.md +45 -0
- package/src/stories/.AnnouncementBar.stories.md +45 -0
- package/src/stories/.AppLayout.stories.md +20 -21
- package/src/stories/.Autocomplete.stories.md +48 -34
- package/src/stories/.Board.stories.md +35 -0
- package/src/stories/.Button.stories.md +36 -33
- package/src/stories/.ChatTicketList.stories.md +33 -0
- package/src/stories/.CheckboxBlock.stories.md +40 -28
- package/src/stories/.ContentLoader.stories.md +47 -0
- package/src/stories/.DashboardInfoCard.stories.md +57 -0
- package/src/stories/.DataTable.stories.md +41 -0
- package/src/stories/.DatePicker.stories.md +66 -52
- package/src/stories/.DeviceCard.stories.md +41 -40
- package/src/stories/.DeviceCardCompact.stories.md +41 -0
- package/src/stories/.DotsLoaderIcon.stories.md +36 -0
- package/src/stories/.Drawer.stories.md +58 -0
- package/src/stories/.EmbeddableChat.stories.md +41 -0
- package/src/stories/.FileManager.stories.md +41 -0
- package/src/stories/.FileManagerActionBar.stories.md +38 -0
- package/src/stories/.FileUpload.stories.md +53 -0
- package/src/stories/.FilterList.stories.md +54 -0
- package/src/stories/.FilterModal.stories.md +72 -0
- package/src/stories/.FiltersDropdown.stories.md +57 -0
- package/src/stories/.Header.stories.md +48 -0
- package/src/stories/.ImageUploader.stories.md +49 -0
- package/src/stories/.InfoCard.stories.md +54 -0
- package/src/stories/.Input.stories.md +48 -30
- package/src/stories/.ListPageLayout.stories.md +56 -43
- package/src/stories/.MingoOnboardingCard.stories.md +42 -0
- package/src/stories/.MingoOnboardingCardSkeleton.stories.md +35 -0
- package/src/stories/.Modal.stories.md +40 -31
- package/src/stories/.NotificationDrawer.stories.md +55 -0
- package/src/stories/.OnboardingStepCard.stories.md +41 -0
- package/src/stories/.OrganizationCard.stories.md +61 -0
- package/src/stories/.PageActions.stories.md +52 -49
- package/src/stories/.PageContainer.stories.md +41 -35
- package/src/stories/.PageLayout.stories.md +60 -0
- package/src/stories/.ParallaxImageShowcase.stories.md +49 -0
- package/src/stories/.PhoneInput.stories.md +53 -0
- package/src/stories/.QueryReportTable.stories.md +44 -0
- package/src/stories/.RadioGroup.stories.md +46 -0
- package/src/stories/.RadioGroupBlock.stories.md +45 -0
- package/src/stories/.Select.stories.md +29 -15
- package/src/stories/.SlashCommandSuggestions.stories.md +41 -0
- package/src/stories/.SplitButton.stories.md +62 -0
- package/src/stories/.TabNavigation.stories.md +47 -38
- package/src/stories/.TabSelector.stories.md +65 -0
- package/src/stories/.Table.stories.md +38 -46
- package/src/stories/.TableColumnFilterDropdown.stories.md +46 -0
- package/src/stories/.Tag.stories.md +43 -32
- package/src/stories/.TagKeyValueFilter.stories.md +44 -0
- package/src/stories/.TagSearchInput.stories.md +61 -0
- package/src/stories/.Textarea.stories.md +49 -26
- package/src/stories/.Theme.stories.md +41 -0
- package/src/stories/.TicketAttachmentsList.stories.md +39 -0
- package/src/stories/.TicketDescriptionViewer.stories.md +39 -0
- package/src/stories/.TicketInfoSection.stories.md +40 -0
- package/src/stories/.TicketKnowledgeBaseList.stories.md +36 -0
- package/src/stories/.TicketNotesSection.stories.md +50 -0
- package/src/stories/.Toaster.stories.md +40 -0
- package/src/stories/.ToolExecutionDisplay.stories.md +41 -0
- package/src/stories/.Tooltip.stories.md +41 -0
- package/src/stories/.UserSummary.stories.md +41 -0
- package/src/stories/.WaitlistForm.stories.md +42 -0
- package/src/stories/BlogCard.stories.tsx +61 -0
- package/src/stories/CampaignCardAdmin.stories.tsx +52 -0
- package/src/stories/CaseStudyCard.stories.tsx +42 -0
- package/src/stories/ChatContainer.stories.tsx +186 -0
- package/src/stories/ChatInlineVideoPill.stories.tsx +63 -0
- package/src/stories/CustomerInterviewCard.stories.tsx +42 -0
- package/src/stories/DataRoomDocCard.stories.tsx +52 -0
- package/src/stories/GenericEntityCard.stories.tsx +66 -0
- package/src/stories/GitHubActivityCard.stories.tsx +61 -0
- package/src/stories/HubspotTicketCard.stories.tsx +98 -0
- package/src/stories/InvestorUpdateCard.stories.tsx +42 -0
- package/src/stories/OnboardingGuideCard.stories.tsx +52 -0
- package/src/stories/ProductReleaseCard.stories.tsx +61 -0
- package/src/stories/ProgramCard.stories.tsx +79 -0
- package/src/stories/RoadmapCard.stories.tsx +75 -0
- package/src/stories/SlackMessageCard.stories.tsx +41 -0
- package/src/stories/__fixtures__/chat-cards.ts +604 -0
- package/src/types/.blog.md +53 -29
- package/src/types/.case-study.md +44 -27
- package/src/types/.customer-interview.md +66 -44
- package/src/types/.delivery.md +40 -0
- package/src/types/.employee.md +24 -30
- package/src/types/.index.md +33 -47
- package/src/types/.marketing.md +49 -44
- package/src/types/.navigation.md +33 -25
- package/src/types/.os.types.md +32 -27
- package/src/types/.platform.md +31 -28
- package/src/types/.product-release.md +65 -38
- package/src/types/.supabase.md +37 -29
- package/src/types/.team.md +41 -33
- package/src/types/.video-processing.md +54 -0
- package/src/types/.waitlist.md +40 -36
- package/src/utils/.access-code-client.md +37 -36
- package/src/utils/.cn.md +31 -23
- package/src/utils/.color-analysis.md +35 -0
- package/src/utils/.country-phone-utils.md +39 -0
- package/src/utils/.date-formatters.md +19 -18
- package/src/utils/.embed-authed-fetch.md +39 -0
- package/src/utils/.embed-proxy-auth-storage.md +38 -0
- package/src/utils/.fetch-priority.md +41 -0
- package/src/utils/.format.md +74 -25
- package/src/utils/.generic-domain-utils.md +42 -0
- package/src/utils/.image-proxy.md +59 -23
- package/src/utils/.index.md +42 -49
- package/src/utils/.local-storage-adapter.md +50 -0
- package/src/utils/.ods-color-utils.md +55 -38
- package/src/utils/.platform-config.md +45 -25
- package/src/utils/.scroll-into-view.md +40 -0
- package/src/utils/.source-icons.md +53 -0
- package/src/utils/.sse-decision-frame.md +46 -0
- package/src/utils/dev-sections/.index.md +34 -0
- package/src/utils/dev-sections/.openframe-dev-sections.md +49 -0
- package/dist/chunk-ZDF6F7ED.cjs.map +0 -1
- package/dist/chunk-ZTJVRSN5.js.map +0 -1
- package/src/components/.card.md +0 -42
- package/src/components/.contact-button.md +0 -30
- package/src/components/.drawer.md +0 -46
- package/src/components/.fixed-layout-container.md +0 -47
- package/src/components/.footer-waitlist-card.md +0 -29
- package/src/components/.join-waitlist-cta.md +0 -29
- package/src/components/.sheet.md +0 -47
- package/src/components/.sliding-panel.md +0 -48
- package/src/components/.tooltip.md +0 -48
- package/src/components/.use-mobile.md +0 -42
- package/src/components/.vendor-compact-card.md +0 -66
- package/src/components/.x-button.md +0 -42
- package/src/components/features/.github-repo-button.md +0 -40
- package/src/components/features/.organization-icon.md +0 -47
- package/src/components/features/.organization-selector.md +0 -45
- package/src/components/icons/.fleet-icon.md +0 -39
- package/src/components/icons/.meshcentral-icon.md +0 -35
- package/src/components/icons/.refresh-icon.md +0 -34
- package/src/components/icons/.tactical-icon.md +0 -35
- package/src/components/ui/.button.md +0 -69
- package/src/components/ui/.log-table-row.md +0 -47
- package/src/components/ui/.selectable-device-card.md +0 -46
- package/src/hooks/.api-hooks-stub.md +0 -45
- package/src/hooks/api/.use-product-releases.md +0 -53
- package/src/stories/.OrganizationSelector.stories.md +0 -42
- package/src/stories/.SelectableDeviceCard.stories.md +0 -30
- package/src/utils/.lite-youtube-embed-stub.md +0 -37
- package/src/utils/.lite-youtube-embed.md +0 -33
- /package/dist/{chunk-IK2X5YJU.js.map → chunk-7PCP7YQR.js.map} +0 -0
- /package/dist/{chunk-3JWIJJ44.js.map → chunk-R6MLPU4A.js.map} +0 -0
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
<!-- source-hash: 0bb70a064412065a884dd7759655fdc8 -->
|
|
2
|
+
Augments TanStack React Table's `ColumnMeta` interface with Flamingo-specific display and behavior options, and exports shared filter/breakpoint types used across data table components.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
| Export | Type | Description |
|
|
7
|
+
|--------|------|-------------|
|
|
8
|
+
| `TailwindBreakpoint` | Type alias | Union of responsive breakpoints: `'md' \| 'lg' \| 'xl' \| '2xl'` |
|
|
9
|
+
| `DataTableFilterOption` | Interface | Shape for individual filter dropdown options (`id`, `label`, `value`) |
|
|
10
|
+
| `ColumnMeta` (module augmentation) | Interface extension | Adds Flamingo-specific metadata fields to TanStack Table's `ColumnMeta` |
|
|
11
|
+
|
|
12
|
+
### `ColumnMeta` Augmented Fields
|
|
13
|
+
|
|
14
|
+
| Field | Type | Description |
|
|
15
|
+
|-------|------|-------------|
|
|
16
|
+
| `width` | `string` | Tailwind width class (e.g. `'w-40'`, `'flex-1 min-w-0'`) |
|
|
17
|
+
| `align` | `'left' \| 'center' \| 'right'` | Horizontal alignment for cell and header |
|
|
18
|
+
| `hideAt` | `TailwindBreakpoint \| TailwindBreakpoint[]` | Hides the column at/below specified breakpoint(s) |
|
|
19
|
+
| `filter` | `{ options, placement? }` | Enables a filter dropdown in the header with provided options |
|
|
20
|
+
| `sortable` | `boolean` | Opt-in sort indicator in header; defaults to `false` |
|
|
21
|
+
| `cellClassName` | `string` | Extra class names for the body cell wrapper |
|
|
22
|
+
| `headerClassName` | `string` | Extra class names for the header cell wrapper |
|
|
23
|
+
|
|
24
|
+
## Usage Example
|
|
25
|
+
|
|
26
|
+
```typescript
|
|
27
|
+
import type { ColumnDef } from '@tanstack/react-table'
|
|
28
|
+
import type { DataTableFilterOption } from './types'
|
|
29
|
+
|
|
30
|
+
const statusOptions: DataTableFilterOption[] = [
|
|
31
|
+
{ id: 'active', label: 'Active', value: 'active' },
|
|
32
|
+
{ id: 'inactive', label: 'Inactive', value: 'inactive' },
|
|
33
|
+
]
|
|
34
|
+
|
|
35
|
+
const columns: ColumnDef<User>[] = [
|
|
36
|
+
{
|
|
37
|
+
accessorKey: 'name',
|
|
38
|
+
meta: {
|
|
39
|
+
width: 'flex-1 min-w-0',
|
|
40
|
+
align: 'left',
|
|
41
|
+
sortable: true,
|
|
42
|
+
hideAt: ['md', 'lg'],
|
|
43
|
+
},
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
accessorKey: 'status',
|
|
47
|
+
meta: {
|
|
48
|
+
width: 'w-40',
|
|
49
|
+
filter: { options: statusOptions, placement: 'bottom-start' },
|
|
50
|
+
cellClassName: 'font-medium',
|
|
51
|
+
},
|
|
52
|
+
},
|
|
53
|
+
]
|
|
54
|
+
```
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
<!-- source-hash: 4c242f0aea85fea9fe359656cea3e3d5 -->
|
|
2
|
+
A thin wrapper around TanStack's `useReactTable` with sensible defaults for server-driven (Relay/REST) pagination, sorting, and filtering. Row-model factories are instantiated once at module load to preserve internal TanStack caches across renders.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
- **`UseDataTableOptions<T>`** — Extends TanStack's `TableOptions<T>` (omitting `getCoreRowModel`) with two additional flags:
|
|
7
|
+
- `clientSideSorting` — enables `getSortedRowModel` (default: `false`)
|
|
8
|
+
- `clientSideFiltering` — enables `getFilteredRowModel` (default: `false`)
|
|
9
|
+
- **`useDataTable<T>`** — The main hook. Wraps `useReactTable` and automatically sets `manualSorting`/`manualFiltering` to the inverse of the client-side flags unless explicitly overridden.
|
|
10
|
+
|
|
11
|
+
## Usage Example
|
|
12
|
+
|
|
13
|
+
```typescript
|
|
14
|
+
import { useMemo, useCallback } from 'react'
|
|
15
|
+
import { useDataTable } from './use-data-table'
|
|
16
|
+
import type { ColumnDef } from '@tanstack/react-table'
|
|
17
|
+
|
|
18
|
+
// Stable references — required to avoid row-model rebuilds on every render
|
|
19
|
+
const data = useMemo(() => rows.map(toUiRow), [rows])
|
|
20
|
+
const columns = useMemo<ColumnDef<MyRow>[]>(() => [
|
|
21
|
+
{ accessorKey: 'name', header: 'Name' },
|
|
22
|
+
{ accessorKey: 'status', header: 'Status' },
|
|
23
|
+
], [])
|
|
24
|
+
const getRowId = useCallback((row: MyRow) => row.id, [])
|
|
25
|
+
const sorting = useMemo(() => [{ id: sortKey, desc: sortDesc }], [sortKey, sortDesc])
|
|
26
|
+
|
|
27
|
+
const table = useDataTable({
|
|
28
|
+
data,
|
|
29
|
+
columns,
|
|
30
|
+
getRowId,
|
|
31
|
+
state: { sorting }, // wrapper object can be inline
|
|
32
|
+
onSortingChange: handleSort, // callbacks can be inline
|
|
33
|
+
// clientSideSorting: true, // opt-in for fully client-side tables
|
|
34
|
+
})
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## Reference-Stability Notes
|
|
38
|
+
|
|
39
|
+
| Option | Safe inline? |
|
|
40
|
+
|---|---|
|
|
41
|
+
| `data`, `columns` | ❌ — must `useMemo` |
|
|
42
|
+
| `state` (wrapper) | ✅ — build inline freely |
|
|
43
|
+
| `state.sorting`, `state.pagination` | ❌ — must be stable refs |
|
|
44
|
+
| `onXChange` callbacks | ✅ — invoked, never compared |
|
|
45
|
+
| `meta`, `defaultColumn` | ⚠️ — recommended `useMemo` |
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
<!-- source-hash: 1499b2bf29298a7d9f4f5ec8c921eb3e -->
|
|
2
|
+
Utility functions for TanStack React Table and Tailwind CSS column/cell rendering helpers.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
| Export | Type | Description |
|
|
7
|
+
|--------|------|-------------|
|
|
8
|
+
| `getHideClasses` | `function` | Generates Tailwind responsive visibility classes from breakpoint config |
|
|
9
|
+
| `alignJustify` | `function` | Maps column alignment metadata to Tailwind flex/text justify classes |
|
|
10
|
+
| `multiSelectFilterFn` | `FilterFn<any>` | TanStack Table filter function for multi-select column filters |
|
|
11
|
+
|
|
12
|
+
## Usage Example
|
|
13
|
+
|
|
14
|
+
```typescript
|
|
15
|
+
import { getHideClasses, alignJustify, multiSelectFilterFn } from './utils'
|
|
16
|
+
import type { ColumnDef } from '@tanstack/react-table'
|
|
17
|
+
|
|
18
|
+
// Responsive column visibility
|
|
19
|
+
getHideClasses('md') // 'hidden md:flex'
|
|
20
|
+
getHideClasses(['md', 'lg']) // 'md:hidden lg:hidden xl:flex'
|
|
21
|
+
|
|
22
|
+
// Column alignment
|
|
23
|
+
alignJustify('right') // 'justify-end text-right'
|
|
24
|
+
alignJustify('center') // 'justify-center text-center'
|
|
25
|
+
alignJustify() // 'justify-start text-left' (default)
|
|
26
|
+
|
|
27
|
+
// Multi-select client-side filtering
|
|
28
|
+
const columns: ColumnDef<Device>[] = [
|
|
29
|
+
{
|
|
30
|
+
accessorKey: 'status',
|
|
31
|
+
header: 'Status',
|
|
32
|
+
filterFn: multiSelectFilterFn,
|
|
33
|
+
meta: { filter: { options: STATUS_OPTIONS } },
|
|
34
|
+
},
|
|
35
|
+
]
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
> **Note on `multiSelectFilterFn`:** Only applies when `clientSideFiltering: true` is set on `useDataTable`. For server-side (Relay/REST) filtering, `manualFiltering` is enabled and TanStack never calls `filterFn` — translate `columnFilters` state into your backend query variables directly.
|
|
@@ -1,39 +1,48 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
A
|
|
1
|
+
<!-- source-hash: 35fc4ad5dd56ef4d64fe4e521ab6318a -->
|
|
2
|
+
A toolbar component for the File Manager that renders action buttons for common file operations.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
-
|
|
8
|
-
|
|
9
|
-
|
|
6
|
+
### `FileManagerActionBar`
|
|
7
|
+
A client-side React component that displays a responsive button bar with six file management actions.
|
|
8
|
+
|
|
9
|
+
| Button | Icon | Disabled When |
|
|
10
|
+
|--------|------|---------------|
|
|
11
|
+
| New Folder | `FolderPlus` | Never |
|
|
12
|
+
| Copy | `Copy` | `hasSelection = false` |
|
|
13
|
+
| Cut | `Scissors` | `hasSelection = false` |
|
|
14
|
+
| Paste | `Clipboard` | `canPaste = false` |
|
|
15
|
+
| Upload | `Upload` | Never |
|
|
16
|
+
| Select All | `CheckSquare` | Never |
|
|
17
|
+
|
|
18
|
+
### Props (`FileManagerActionBarProps`)
|
|
19
|
+
|
|
20
|
+
| Prop | Type | Default | Description |
|
|
21
|
+
|------|------|---------|-------------|
|
|
22
|
+
| `canPaste` | `boolean` | `false` | Enables the Paste button |
|
|
23
|
+
| `hasSelection` | `boolean` | `false` | Enables Copy and Cut buttons |
|
|
24
|
+
| `onNewFolder` | `() => void` | — | Create folder handler |
|
|
25
|
+
| `onPaste` | `() => void` | — | Paste handler |
|
|
26
|
+
| `onCopy` | `() => void` | — | Copy handler |
|
|
27
|
+
| `onCut` | `() => void` | — | Cut handler |
|
|
28
|
+
| `onUpload` | `() => void` | — | Upload handler |
|
|
29
|
+
| `onSelectAll` | `() => void` | — | Select all handler |
|
|
30
|
+
| `className` | `string` | — | Additional CSS classes |
|
|
10
31
|
|
|
11
32
|
## Usage Example
|
|
12
33
|
|
|
13
34
|
```typescript
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
onNewFolder={() => console.log('Create new folder')}
|
|
26
|
-
onCopy={() => console.log('Copy selected files')}
|
|
27
|
-
onCut={() => console.log('Cut selected files')}
|
|
28
|
-
onPaste={() => console.log('Paste from clipboard')}
|
|
29
|
-
onUpload={() => console.log('Upload files')}
|
|
30
|
-
onSelectAll={() => console.log('Select all files')}
|
|
31
|
-
className="mb-4"
|
|
32
|
-
/>
|
|
33
|
-
{/* File list components */}
|
|
34
|
-
</div>
|
|
35
|
-
)
|
|
36
|
-
}
|
|
35
|
+
<FileManagerActionBar
|
|
36
|
+
canPaste={clipboard !== null}
|
|
37
|
+
hasSelection={selectedItems.length > 0}
|
|
38
|
+
onNewFolder={() => setShowNewFolderModal(true)}
|
|
39
|
+
onCopy={() => setClipboard({ mode: 'copy', items: selectedItems })}
|
|
40
|
+
onCut={() => setClipboard({ mode: 'cut', items: selectedItems })}
|
|
41
|
+
onPaste={() => handlePaste(currentPath)}
|
|
42
|
+
onUpload={() => fileInputRef.current?.click()}
|
|
43
|
+
onSelectAll={() => setSelectedItems(allItems)}
|
|
44
|
+
className="px-4 py-2 border-b"
|
|
45
|
+
/>
|
|
37
46
|
```
|
|
38
47
|
|
|
39
|
-
The
|
|
48
|
+
The bar is responsive — it wraps on small screens and right-aligns on `md` and above via `flex-wrap md:justify-end`.
|
|
@@ -1,38 +1,40 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
|
|
1
|
+
<!-- source-hash: 10ec2f9a1b5237b3543c1a35d4d9d860 -->
|
|
2
|
+
Renders a navigable breadcrumb trail for a file manager UI, displaying a series of clickable path segments separated by chevron icons.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
-
|
|
7
|
-
-
|
|
8
|
-
-
|
|
9
|
-
|
|
6
|
+
- **`FileManagerBreadcrumb`** — Main exported component that maps over a `FileManagerBreadcrumbProps.items` array to render a `<nav>` with interactive path buttons
|
|
7
|
+
- **`ChevronRight`** — Lucide icon injected as a separator between breadcrumb segments (omitted before the first item)
|
|
8
|
+
- **`cn`** — Utility for conditional class merging
|
|
9
|
+
|
|
10
|
+
## Props (`FileManagerBreadcrumbProps`)
|
|
11
|
+
|
|
12
|
+
| Prop | Description |
|
|
13
|
+
|------|-------------|
|
|
14
|
+
| `items` | Array of breadcrumb segments, each with a `label` and `path` |
|
|
15
|
+
| `onItemClick` | Optional callback invoked with the segment's `path` on click |
|
|
16
|
+
| `className` | Optional additional class names applied to the `<nav>` element |
|
|
17
|
+
|
|
18
|
+
## Behavior Notes
|
|
19
|
+
|
|
20
|
+
- The **last item** receives `font-medium` styling to visually indicate the current location
|
|
21
|
+
- All items use `break-all` to handle long path strings gracefully within wrapped layouts
|
|
22
|
+
- Separators use `flex-shrink-0` to prevent chevrons from collapsing in tight spaces
|
|
10
23
|
|
|
11
24
|
## Usage Example
|
|
12
25
|
|
|
13
26
|
```typescript
|
|
14
27
|
import { FileManagerBreadcrumb } from './file-manager-breadcrumb'
|
|
15
28
|
|
|
16
|
-
const
|
|
17
|
-
{
|
|
18
|
-
{
|
|
19
|
-
{
|
|
29
|
+
const breadcrumbs = [
|
|
30
|
+
{ label: 'Home', path: '/' },
|
|
31
|
+
{ label: 'Documents', path: '/documents' },
|
|
32
|
+
{ label: 'Reports', path: '/documents/reports' },
|
|
20
33
|
]
|
|
21
34
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
return (
|
|
29
|
-
<FileManagerBreadcrumb
|
|
30
|
-
items={breadcrumbItems}
|
|
31
|
-
onItemClick={handleBreadcrumbClick}
|
|
32
|
-
className="mb-4"
|
|
33
|
-
/>
|
|
34
|
-
)
|
|
35
|
-
}
|
|
36
|
-
```
|
|
37
|
-
|
|
38
|
-
The component features responsive text wrapping, hover states with color transitions, and highlights the current (last) item with bold text. Chevron separators between items provide clear visual hierarchy.
|
|
35
|
+
<FileManagerBreadcrumb
|
|
36
|
+
items={breadcrumbs}
|
|
37
|
+
onItemClick={(path) => console.log('Navigate to:', path)}
|
|
38
|
+
className="px-4 py-2"
|
|
39
|
+
/>
|
|
40
|
+
```
|
|
@@ -1,57 +1,53 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
|
|
1
|
+
<!-- source-hash: 2011101ea13458a40241b85da0182863 -->
|
|
2
|
+
Context menu component for file manager operations, rendering a dropdown with context-sensitive actions based on file type and selection state.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
- **menuItems**: Configuration array defining available actions with icons, labels, and visibility conditions
|
|
8
|
-
- **Props Interface**: Accepts `FileManagerContextMenuProps` for customization and event handling
|
|
6
|
+
**`FileManagerContextMenu`** — Main exported component that wraps a `DropdownMenu` with file-specific actions.
|
|
9
7
|
|
|
10
|
-
|
|
8
|
+
**Menu Actions** (conditionally shown):
|
|
11
9
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
10
|
+
| Action | Icon | Condition |
|
|
11
|
+
|--------|------|-----------|
|
|
12
|
+
| `download` | `Download` | File type or has selection |
|
|
13
|
+
| `copy` | `Copy` | Always visible |
|
|
14
|
+
| `rename` | `Edit2` | Single item only (no selection) |
|
|
15
|
+
| `cut` | `Scissors` | Always visible |
|
|
16
|
+
| `delete` | `Trash2` | Always visible (with separator) |
|
|
17
|
+
|
|
18
|
+
**Props** (`FileManagerContextMenuProps`):
|
|
19
|
+
|
|
20
|
+
| Prop | Description |
|
|
21
|
+
|------|-------------|
|
|
22
|
+
| `open` / `onOpenChange` | Controlled open state |
|
|
23
|
+
| `onAction` | Callback receiving the action key |
|
|
24
|
+
| `fileType` | `'file'` or `'folder'` — affects available actions |
|
|
25
|
+
| `hasSelection` | Hides `rename`, shows `download` for multi-select |
|
|
26
|
+
| `trigger` | Optional custom trigger element |
|
|
27
|
+
| `className` | Additional classes for the dropdown content |
|
|
17
28
|
|
|
18
29
|
## Usage Example
|
|
19
30
|
|
|
20
31
|
```typescript
|
|
21
32
|
import { FileManagerContextMenu } from './file-manager-context-menu'
|
|
22
33
|
|
|
23
|
-
function
|
|
24
|
-
const [menuOpen, setMenuOpen] = useState(false)
|
|
25
|
-
|
|
26
|
-
const handleAction = (action: string) => {
|
|
27
|
-
switch (action) {
|
|
28
|
-
case 'download':
|
|
29
|
-
downloadFile(file)
|
|
30
|
-
break
|
|
31
|
-
case 'copy':
|
|
32
|
-
copyToClipboard(file)
|
|
33
|
-
break
|
|
34
|
-
case 'rename':
|
|
35
|
-
setRenaming(true)
|
|
36
|
-
break
|
|
37
|
-
case 'delete':
|
|
38
|
-
deleteFile(file)
|
|
39
|
-
break
|
|
40
|
-
}
|
|
41
|
-
setMenuOpen(false)
|
|
42
|
-
}
|
|
34
|
+
function FileRow({ file }) {
|
|
35
|
+
const [menuOpen, setMenuOpen] = React.useState(false)
|
|
43
36
|
|
|
44
37
|
return (
|
|
45
|
-
<
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
38
|
+
<FileManagerContextMenu
|
|
39
|
+
open={menuOpen}
|
|
40
|
+
onOpenChange={setMenuOpen}
|
|
41
|
+
fileType="file"
|
|
42
|
+
hasSelection={false}
|
|
43
|
+
onAction={(action) => {
|
|
44
|
+
if (action === 'delete') deleteFile(file.id)
|
|
45
|
+
if (action === 'rename') startRename(file.id)
|
|
46
|
+
if (action === 'download') downloadFile(file.id)
|
|
47
|
+
}}
|
|
48
|
+
/>
|
|
55
49
|
)
|
|
56
50
|
}
|
|
57
|
-
```
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
> The default trigger renders a `MoreHorizontal` icon button. Pass a custom `trigger` element to replace it. Click events use `stopPropagation` to prevent row selection conflicts.
|
|
@@ -1,48 +1,35 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
|
|
1
|
+
<!-- source-hash: fd21e114568a67d1874d4692f7a1d514 -->
|
|
2
|
+
Empty state component for the File Manager UI, displaying a centered message with an icon when a folder contains no files or folders.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
6
|
+
- **`FileManagerEmpty`** — React component that renders a centered empty state with a folder icon, heading, description text, and an optional action button
|
|
7
|
+
|
|
8
|
+
### Props (`FileManagerEmptyProps`)
|
|
9
|
+
|
|
10
|
+
| Prop | Default | Description |
|
|
11
|
+
|------|---------|-------------|
|
|
12
|
+
| `message` | `'No files or folders found'` | Primary heading text |
|
|
13
|
+
| `description` | `'This folder is empty...'` | Secondary descriptive text |
|
|
14
|
+
| `action` | `undefined` | Optional `{ label, onClick }` to render a call-to-action button |
|
|
15
|
+
| `className` | `undefined` | Additional CSS classes for the wrapper |
|
|
10
16
|
|
|
11
17
|
## Usage Example
|
|
12
18
|
|
|
13
19
|
```typescript
|
|
14
20
|
import { FileManagerEmpty } from './file-manager-empty'
|
|
15
21
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
}}
|
|
31
|
-
className="min-h-96"
|
|
32
|
-
/>
|
|
33
|
-
</div>
|
|
34
|
-
)
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
// Basic usage without action button
|
|
38
|
-
function SimpleEmpty() {
|
|
39
|
-
return (
|
|
40
|
-
<FileManagerEmpty
|
|
41
|
-
message="Folder is empty"
|
|
42
|
-
description="No files have been uploaded to this location yet."
|
|
43
|
-
/>
|
|
44
|
-
)
|
|
45
|
-
}
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
The component provides a user-friendly empty state that guides users toward taking action, with customizable messaging and optional call-to-action buttons for improved user experience.
|
|
22
|
+
// Basic usage
|
|
23
|
+
<FileManagerEmpty />
|
|
24
|
+
|
|
25
|
+
// With custom message and action
|
|
26
|
+
<FileManagerEmpty
|
|
27
|
+
message="No documents yet"
|
|
28
|
+
description="Upload your first document to get started."
|
|
29
|
+
action={{
|
|
30
|
+
label: 'Upload File',
|
|
31
|
+
onClick: () => openUploadDialog()
|
|
32
|
+
}}
|
|
33
|
+
className="min-h-[400px]"
|
|
34
|
+
/>
|
|
35
|
+
```
|
|
@@ -1,49 +1,41 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
A
|
|
1
|
+
<!-- source-hash: 0825a14a4aea648af8873376f22c05eb -->
|
|
2
|
+
A single table row component for the File Manager UI, rendering file/folder metadata with interactive selection, context menus, and navigation controls.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
- **
|
|
9
|
-
- **
|
|
6
|
+
### `FileManagerTableRow`
|
|
7
|
+
The primary exported component that renders a horizontal row displaying:
|
|
8
|
+
- **Checkbox** — optional selection toggle (guarded with `data-no-row-click`)
|
|
9
|
+
- **FileIcon** — type/extension-aware icon with file name and optional path
|
|
10
|
+
- **Metadata columns** — file size and last modified date
|
|
11
|
+
- **Action controls** — `MoreHorizontal` context menu button (visible on hover) and a `ChevronRight` navigate-into button for folders
|
|
10
12
|
|
|
11
|
-
##
|
|
12
|
-
|
|
13
|
-
```typescript
|
|
14
|
-
import { FileManagerTableRow } from './file-manager-table-row'
|
|
13
|
+
## Key Behaviors
|
|
15
14
|
|
|
16
|
-
|
|
17
|
-
|
|
15
|
+
| Behavior | Detail |
|
|
16
|
+
|---|---|
|
|
17
|
+
| `data-no-row-click` | Prevents checkbox and action buttons from bubbling clicks to the row handler |
|
|
18
|
+
| Context menu | Managed via `contextMenuOpen` state; closes automatically after an action |
|
|
19
|
+
| Folder vs file | Renders `ChevronRight` nav button for folders; renders an empty spacer `div` for files to preserve alignment |
|
|
20
|
+
| File extension | Parsed from `file.name` for files; `undefined` for folders |
|
|
18
21
|
|
|
19
|
-
|
|
20
|
-
if (checked) {
|
|
21
|
-
setSelectedFiles(prev => [...prev, fileId])
|
|
22
|
-
} else {
|
|
23
|
-
setSelectedFiles(prev => prev.filter(id => id !== fileId))
|
|
24
|
-
}
|
|
25
|
-
}
|
|
22
|
+
## Usage Example
|
|
26
23
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
onActionClick={(action) => console.log('Action:', action)}
|
|
45
|
-
/>
|
|
46
|
-
</div>
|
|
47
|
-
)
|
|
48
|
-
}
|
|
24
|
+
```typescript
|
|
25
|
+
<FileManagerTableRow
|
|
26
|
+
file={{
|
|
27
|
+
name: 'report.pdf',
|
|
28
|
+
type: 'file',
|
|
29
|
+
size: '2.4 MB',
|
|
30
|
+
modified: 'Jan 15, 2025',
|
|
31
|
+
path: '/documents/reports/report.pdf',
|
|
32
|
+
}}
|
|
33
|
+
isSelected={false}
|
|
34
|
+
showCheckbox={true}
|
|
35
|
+
showPath={true}
|
|
36
|
+
onSelect={(checked) => handleSelect(fileId, checked)}
|
|
37
|
+
onClick={() => handlePreview(file)}
|
|
38
|
+
onDoubleClick={() => handleOpen(file)}
|
|
39
|
+
onActionClick={(action) => handleFileAction(file, action)}
|
|
40
|
+
/>
|
|
49
41
|
```
|
|
@@ -1,48 +1,52 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
A
|
|
1
|
+
<!-- source-hash: 1ed33038349c92c3847f382acdaaf4c5 -->
|
|
2
|
+
A client-side React component that renders a full-featured file manager UI, combining breadcrumb navigation, an action bar, search input, and a file table into a single composable interface.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
-
|
|
7
|
-
-
|
|
8
|
-
-
|
|
9
|
-
-
|
|
10
|
-
- **
|
|
11
|
-
|
|
6
|
+
- **`FileManager`** — Main exported component that orchestrates all sub-components
|
|
7
|
+
- **`breadcrumbItems`** (`useMemo`) — Derives structured breadcrumb items from `currentPath`, handling both Unix (`/`) and Windows (`\`, drive letters) path formats
|
|
8
|
+
- **`handleFolderOpen`** — Constructs the new navigation path when a folder is opened, respecting path separator conventions
|
|
9
|
+
- **`handleBreadcrumbClick`** — Calls both `onBreadcrumbClick` and `onNavigate` callbacks on breadcrumb interaction
|
|
10
|
+
- **Sub-components used:** `FileManagerBreadcrumb`, `FileManagerActionBar`, `FileManagerTable`, `Input`
|
|
11
|
+
|
|
12
|
+
## Key Props
|
|
13
|
+
|
|
14
|
+
| Prop | Type | Description |
|
|
15
|
+
|------|------|-------------|
|
|
16
|
+
| `files` | `FileItem[]` | List of files/folders to display |
|
|
17
|
+
| `currentPath` | `string` | Active directory path (Unix or Windows) |
|
|
18
|
+
| `selectedFiles` | `string[]` | Array of selected file IDs |
|
|
19
|
+
| `showCheckboxes` | `boolean` | Toggle selection checkboxes (default: `true`) |
|
|
20
|
+
| `showSearch` | `boolean` | Toggle search input (default: `true`) |
|
|
21
|
+
| `showActions` | `boolean` | Toggle action bar (default: `true`) |
|
|
22
|
+
| `canPaste` | `boolean` | Enables paste action in action bar |
|
|
23
|
+
| `onNavigate` | `(path: string) => void` | Called on folder open or breadcrumb click |
|
|
24
|
+
| `onFileAction` | `(action: string) => void` | Handles copy, cut, paste, upload, new-folder |
|
|
12
25
|
|
|
13
26
|
## Usage Example
|
|
14
27
|
|
|
15
28
|
```typescript
|
|
16
29
|
import { FileManager } from './file-manager'
|
|
17
30
|
|
|
18
|
-
function
|
|
19
|
-
const [
|
|
20
|
-
const [
|
|
21
|
-
const [currentPath, setCurrentPath] = useState('')
|
|
31
|
+
function MyFileBrowser() {
|
|
32
|
+
const [currentPath, setCurrentPath] = useState('/')
|
|
33
|
+
const [selected, setSelected] = useState<string[]>([])
|
|
22
34
|
|
|
23
35
|
return (
|
|
24
36
|
<FileManager
|
|
25
|
-
files={
|
|
37
|
+
files={fileList}
|
|
26
38
|
currentPath={currentPath}
|
|
27
|
-
selectedFiles={
|
|
39
|
+
selectedFiles={selected}
|
|
28
40
|
searchQuery=""
|
|
29
|
-
onNavigate={
|
|
30
|
-
onSelectFile={(
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
}
|
|
37
|
-
onFileAction={(action) => {
|
|
38
|
-
console.log('File action:', action)
|
|
39
|
-
}}
|
|
40
|
-
onSearch={(query) => {
|
|
41
|
-
// Implement search logic
|
|
42
|
-
}}
|
|
41
|
+
onNavigate={setCurrentPath}
|
|
42
|
+
onSelectFile={(id, checked) =>
|
|
43
|
+
setSelected(prev =>
|
|
44
|
+
checked ? [...prev, id] : prev.filter(f => f !== id)
|
|
45
|
+
)
|
|
46
|
+
}
|
|
47
|
+
onSelectAll={(all) => setSelected(all ? fileList.map(f => f.id) : [])}
|
|
48
|
+
onFileAction={(action) => console.log('Action:', action)}
|
|
43
49
|
/>
|
|
44
50
|
)
|
|
45
51
|
}
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
The component automatically generates breadcrumb navigation from the current path and handles both Windows drive letters and Unix-style paths. It provides a complete file management experience with customizable visibility for search, actions, and checkboxes.
|
|
52
|
+
```
|