@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
|
@@ -1,44 +1,50 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
Storybook stories
|
|
1
|
+
<!-- source-hash: f72131cedcde7906c303bc3ea8538959 -->
|
|
2
|
+
Storybook stories for the `PageContainer` layout component, covering legacy and advanced usage variants including list, detail, form, and content page layouts.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
-
|
|
7
|
-
-
|
|
8
|
-
-
|
|
9
|
-
-
|
|
6
|
+
- **`Legacy`** — Basic container with full-width background and no structured header
|
|
7
|
+
- **`LegacyCustomBackground`** / **`LegacyContentWidthBackground`** — Legacy mode with custom background and content-width options
|
|
8
|
+
- **`ListPage`** / **`ListPageMultipleActions`** — List variant with title, subtitle, and action buttons
|
|
9
|
+
- **`DetailPage`** / **`DetailPageWithActions`** — Detail variant with back button navigation and optional actions
|
|
10
|
+
- **`FormPage`** — Form variant with cancel/save/publish actions
|
|
11
|
+
- **`ContentPage`** — Generic content layout variant
|
|
12
|
+
- **`CustomHeaderContent`** / **`WithHeaderActions`** / **`HiddenHeader`** — Header customization stories
|
|
13
|
+
- **`WithPaddingAndBackground`** — Demonstrates `padding` and `background` prop combinations
|
|
14
|
+
|
|
15
|
+
## Storybook Controls
|
|
16
|
+
|
|
17
|
+
| Control | Options |
|
|
18
|
+
|---------|---------|
|
|
19
|
+
| `variant` | `list`, `detail`, `form`, `content` |
|
|
20
|
+
| `padding` | `none`, `sm`, `md`, `lg` |
|
|
21
|
+
| `background` | `default`, `card`, `transparent` |
|
|
22
|
+
| `showHeader` | `boolean` |
|
|
10
23
|
|
|
11
24
|
## Usage Example
|
|
12
25
|
|
|
13
26
|
```typescript
|
|
14
|
-
//
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
variant: 'primary'
|
|
26
|
-
},
|
|
27
|
-
],
|
|
28
|
-
children: <PlaceholderContent />,
|
|
29
|
-
},
|
|
30
|
-
};
|
|
27
|
+
// List page with actions
|
|
28
|
+
<PageContainer
|
|
29
|
+
variant="list"
|
|
30
|
+
title="Devices"
|
|
31
|
+
subtitle="24 devices found"
|
|
32
|
+
actions={[
|
|
33
|
+
{ label: 'Add Device', onClick: handleAdd, icon: <Plus />, variant: 'primary' }
|
|
34
|
+
]}
|
|
35
|
+
>
|
|
36
|
+
<DeviceTable />
|
|
37
|
+
</PageContainer>
|
|
31
38
|
|
|
32
39
|
// Detail page with back navigation
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
The stories demonstrate legacy mode compatibility, advanced variants (list, detail, form, content), header customization options, and various padding/background combinations. Each story includes realistic props and content to showcase the PageContainer's flexibility across different application contexts.
|
|
40
|
+
<PageContainer
|
|
41
|
+
variant="detail"
|
|
42
|
+
title="Device Details"
|
|
43
|
+
backButton={{ label: 'Back to Devices', onClick: handleBack }}
|
|
44
|
+
actions={[
|
|
45
|
+
{ label: 'Delete', onClick: handleDelete, variant: 'outline' }
|
|
46
|
+
]}
|
|
47
|
+
>
|
|
48
|
+
<DeviceDetails />
|
|
49
|
+
</PageContainer>
|
|
50
|
+
```
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
<!-- source-hash: 3e5784b9b627d4143a0bac991ef6fb48 -->
|
|
2
|
+
Storybook stories for the `PageLayout` component, covering all major layout variants including title-only, subtitle/image combinations, mobile responsive behavior, and action button configurations.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
| Export | Description |
|
|
7
|
+
|--------|-------------|
|
|
8
|
+
| `TitleOnly` | Minimal header with title and content only |
|
|
9
|
+
| `WithSubtitleAndImage` | Full organization detail header with back button, thumbnail, subtitle, and icon-button actions |
|
|
10
|
+
| `MobileActionsMenu` | Same as `WithSubtitleAndImage` at mobile viewport — actions collapse to `…` dropdown |
|
|
11
|
+
| `WithSubtitleOnly` | Title + one-line context note with primary-button actions |
|
|
12
|
+
| `WithImageOnly` | Branded entity header without a subtitle line |
|
|
13
|
+
| `WithSelector` | Desktop tab selector (table/grid toggle) rendered before action buttons |
|
|
14
|
+
| `WithSelectorMobile` | `WithSelector` at mobile viewport — selector hidden, only `…` dropdown remains |
|
|
15
|
+
| `LongTitleTruncates` | Verifies ellipsis truncation when title/subtitle overflow the header |
|
|
16
|
+
|
|
17
|
+
## Usage Example
|
|
18
|
+
|
|
19
|
+
```typescript
|
|
20
|
+
// Minimal usage
|
|
21
|
+
<PageLayout title="Devices">
|
|
22
|
+
<Table data={devices} columns={columns} rowKey="id" />
|
|
23
|
+
</PageLayout>
|
|
24
|
+
|
|
25
|
+
// Full organization detail page
|
|
26
|
+
<PageLayout
|
|
27
|
+
title="TechFlow Solutions"
|
|
28
|
+
subtitle="techflow.com • Software Development"
|
|
29
|
+
image={{ src: logoSrc, alt: 'TechFlow logo' }}
|
|
30
|
+
backButton={{ label: 'Back to Organizations', onClick: handleBack }}
|
|
31
|
+
actionsVariant="icon-buttons"
|
|
32
|
+
actions={[
|
|
33
|
+
{ label: 'Archive Organization', onClick: handleArchive, variant: 'outline', icon: <BoxArchiveIcon size={24} /> },
|
|
34
|
+
{ label: 'Edit Organization', onClick: handleEdit, variant: 'outline', icon: <PenEditIcon size={24} /> },
|
|
35
|
+
]}
|
|
36
|
+
>
|
|
37
|
+
<Table data={devices} columns={columns} rowKey="id" />
|
|
38
|
+
</PageLayout>
|
|
39
|
+
|
|
40
|
+
// With desktop tab selector (hidden on mobile)
|
|
41
|
+
<PageLayout
|
|
42
|
+
title="Devices"
|
|
43
|
+
actionsVariant="icon-buttons"
|
|
44
|
+
actions={[{ label: 'Add Device', onClick: fn(), variant: 'outline', icon: <PlusCircleIcon size={24} /> }]}
|
|
45
|
+
selector={
|
|
46
|
+
<TabSelector
|
|
47
|
+
value={view}
|
|
48
|
+
onValueChange={setView}
|
|
49
|
+
items={[
|
|
50
|
+
{ id: 'table', label: '', icon: <TableCellIcon size={24} /> },
|
|
51
|
+
{ id: 'grid', label: '', icon: <GridLayoutIcon size={24} /> },
|
|
52
|
+
]}
|
|
53
|
+
/>
|
|
54
|
+
}
|
|
55
|
+
>
|
|
56
|
+
<Table data={devices} columns={columns} rowKey="id" />
|
|
57
|
+
</PageLayout>
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
**`actionsVariant` options:** `icon-buttons` (labeled outline buttons → `…` menu on mobile), `primary-buttons` (always visible primary buttons), `menu-primary` (menu trigger with primary style).
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
<!-- source-hash: bc3b7f6794a8e489c9fce54c9abbaeb4 -->
|
|
2
|
+
Storybook stories for the `ParallaxImageShowcase` component, covering layout variants, parallax intensity levels, shadow options, and partial image configurations using inline SVG placeholder images.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
| Export | Type | Description |
|
|
7
|
+
|--------|------|-------------|
|
|
8
|
+
| `meta` | `Meta` | Storybook metadata — registers component under `Features/ParallaxImageShowcase` with controls for `layout`, `intensity`, and `shadow` |
|
|
9
|
+
| `makePlaceholder` | Helper | Generates an SVG data URI mimicking a screenshot UI with sidebar, panels, and a centered label |
|
|
10
|
+
| `images` | Fixture | Three placeholder images with `left`, `center`, and `right` position assignments |
|
|
11
|
+
| `NonBoxed` | `Story` | Default overlapping layer layout |
|
|
12
|
+
| `Boxed` | `Story` | Two-row layout with optional `logoElement` slot |
|
|
13
|
+
| `Grid` | `Story` | Three-column grid layout |
|
|
14
|
+
| `SubtleIntensity` / `HighIntensity` | `Story` | Parallax motion range demos (`0.3` → `5`) |
|
|
15
|
+
| `GridWithShadow` / `GridHighIntensity` | `Story` | Grid layout with shadow and intensity combinations |
|
|
16
|
+
| `TwoImages` / `SingleImage` | `Story` | Edge-case coverage for reduced image counts |
|
|
17
|
+
|
|
18
|
+
## Usage Example
|
|
19
|
+
|
|
20
|
+
```typescript
|
|
21
|
+
import { ParallaxImageShowcase } from '../components/features/parallax-image-showcase'
|
|
22
|
+
|
|
23
|
+
// Minimal usage with three positioned images
|
|
24
|
+
<ParallaxImageShowcase
|
|
25
|
+
layout="non-boxed"
|
|
26
|
+
intensity={1.5}
|
|
27
|
+
shadow={false}
|
|
28
|
+
images={[
|
|
29
|
+
{ src: '/screenshots/dashboard.png', alt: 'Dashboard', position: 'left' },
|
|
30
|
+
{ src: '/screenshots/analytics.png', alt: 'Analytics', position: 'center' },
|
|
31
|
+
{ src: '/screenshots/settings.png', alt: 'Settings', position: 'right' },
|
|
32
|
+
]}
|
|
33
|
+
/>
|
|
34
|
+
|
|
35
|
+
// Boxed layout with a logo slot
|
|
36
|
+
<ParallaxImageShowcase
|
|
37
|
+
layout="boxed"
|
|
38
|
+
images={images}
|
|
39
|
+
logoElement={<img src="/logo.svg" alt="Logo" />}
|
|
40
|
+
/>
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## Controls Reference
|
|
44
|
+
|
|
45
|
+
| Prop | Control | Values |
|
|
46
|
+
|------|---------|--------|
|
|
47
|
+
| `layout` | select | `non-boxed` · `boxed` · `grid` |
|
|
48
|
+
| `intensity` | number slider | `0` – `10`, step `0.1` |
|
|
49
|
+
| `shadow` | boolean toggle | `true` / `false` |
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
<!-- source-hash: 1e78827c6bdbb029fe4aeac35f0fdda1 -->
|
|
2
|
+
Storybook stories for the `PhoneInput` UI component, demonstrating various states, country configurations, and layout scenarios.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
### `PhoneInputControlled`
|
|
7
|
+
Internal stateful wrapper that manages `phone`, `country`, and `isInvalid` state, wiring up all `PhoneInput` callbacks and rendering an inline validation warning when the number is invalid.
|
|
8
|
+
|
|
9
|
+
### Exported Stories
|
|
10
|
+
|
|
11
|
+
| Story | Description |
|
|
12
|
+
|---|---|
|
|
13
|
+
| `Default` | US country code, empty value |
|
|
14
|
+
| `UnitedKingdom` | Pre-selected GB country code |
|
|
15
|
+
| `WithValue` | Pre-filled US number `(555) 123-4567` |
|
|
16
|
+
| `Disabled` | Disabled input with a pre-filled value |
|
|
17
|
+
| `CustomPlaceholder` | Custom placeholder text `"Enter phone..."` |
|
|
18
|
+
| `NarrowContainer` | 300px container to verify overflow handling |
|
|
19
|
+
| `Germany` | Pre-selected DE country code |
|
|
20
|
+
|
|
21
|
+
## Usage Example
|
|
22
|
+
|
|
23
|
+
```typescript
|
|
24
|
+
// Replicate the controlled pattern from stories in your own component
|
|
25
|
+
import { PhoneInput } from '@/components/ui/phone-input';
|
|
26
|
+
import { useState } from 'react';
|
|
27
|
+
import type { CountryCode } from 'libphonenumber-js';
|
|
28
|
+
|
|
29
|
+
function MyForm() {
|
|
30
|
+
const [phone, setPhone] = useState('');
|
|
31
|
+
const [country, setCountry] = useState<CountryCode>('US');
|
|
32
|
+
const [isInvalid, setIsInvalid] = useState(false);
|
|
33
|
+
|
|
34
|
+
return (
|
|
35
|
+
<>
|
|
36
|
+
<PhoneInput
|
|
37
|
+
value={phone}
|
|
38
|
+
countryCode={country}
|
|
39
|
+
onPhoneChange={setPhone}
|
|
40
|
+
onCountryChange={setCountry}
|
|
41
|
+
onValidationChange={setIsInvalid}
|
|
42
|
+
/>
|
|
43
|
+
{isInvalid && <p>Invalid phone number</p>}
|
|
44
|
+
</>
|
|
45
|
+
);
|
|
46
|
+
}
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## Notes
|
|
50
|
+
|
|
51
|
+
- Stories are scoped under the `UI/PhoneInput` Storybook path.
|
|
52
|
+
- All stories use `PhoneInputControlled` via the `render` override rather than Storybook's default args rendering, ensuring live state management within the canvas.
|
|
53
|
+
- Country codes follow the [`libphonenumber-js`](https://www.npmjs.com/package/libphonenumber-js) `CountryCode` type.
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
<!-- source-hash: 30d7c4e87b438b12b503725269f756f6 -->
|
|
2
|
+
Storybook stories for the `QueryReportTable` component, covering all major display states, configuration options, and edge cases for visual testing and documentation.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
- **`Default`** — Basic table with auto-derived columns from data keys
|
|
7
|
+
- **`Loading`** — Skeleton placeholder state with configurable rows/columns
|
|
8
|
+
- **`Empty`** — Empty state with a custom message
|
|
9
|
+
- **`CustomColumnOrder`** — Explicit column ordering with remaining keys appended
|
|
10
|
+
- **`WideColumns` / `NarrowColumns`** — Column width variants (`columnWidth` prop)
|
|
11
|
+
- **`ManyColumns`** — Horizontal scroll with right-edge gradient fade using a 14-column dataset
|
|
12
|
+
- **`NoExport`** — Hides the CSV export button (`showExport: false`)
|
|
13
|
+
- **`CustomExport`** — Custom filename and `onExport` callback
|
|
14
|
+
- **`WithHeaderActions`** — Renders additional controls (e.g. Refresh button) in the table header
|
|
15
|
+
- **`WithNullValues`** — Displays `null` fields as dashes
|
|
16
|
+
- **`SingleRow`** — Single-record result set
|
|
17
|
+
|
|
18
|
+
## Usage Example
|
|
19
|
+
|
|
20
|
+
```typescript
|
|
21
|
+
import { QueryReportTable } from '../components/ui/query-report-table'
|
|
22
|
+
|
|
23
|
+
<QueryReportTable
|
|
24
|
+
title="Server Health Report"
|
|
25
|
+
data={[
|
|
26
|
+
{ hostname: 'prod-web-01', cpu_usage: 45, status: 'healthy' },
|
|
27
|
+
]}
|
|
28
|
+
columnOrder={['status', 'hostname', 'cpu_usage']}
|
|
29
|
+
columnWidth={160}
|
|
30
|
+
exportFilename="server-health-2026-02"
|
|
31
|
+
onExport={() => console.log('Exported')}
|
|
32
|
+
headerActions={<Button variant="outline">Refresh</Button>}
|
|
33
|
+
/>
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## ArgTypes (Storybook Controls)
|
|
37
|
+
|
|
38
|
+
| Prop | Control | Range |
|
|
39
|
+
|---|---|---|
|
|
40
|
+
| `columnWidth` | number | 80–400, step 10 |
|
|
41
|
+
| `skeletonRows` | number | 1–20 |
|
|
42
|
+
| `skeletonColumns` | number | 1–12 |
|
|
43
|
+
| `showExport` | boolean | — |
|
|
44
|
+
| `loading` | boolean | — |
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
<!-- source-hash: 708dc6fe37c97945e4c968bc3a3e4867 -->
|
|
2
|
+
Storybook stories for the `RadioGroup` UI component, demonstrating all supported variants, states, and theme configurations within the OpenFrame design system.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
| Export | Description |
|
|
7
|
+
|---|---|
|
|
8
|
+
| `Default` | Basic radio group with three unselected options |
|
|
9
|
+
| `WithDefaultValue` | Uncontrolled group with a pre-selected option via `defaultValue` |
|
|
10
|
+
| `Disabled` | Entire group disabled with a pre-selected value |
|
|
11
|
+
| `DisabledItem` | Group with a single item disabled while others remain interactive |
|
|
12
|
+
| `Horizontal` | Horizontal layout using `orientation="horizontal"` with flex-row styling |
|
|
13
|
+
| `Controlled` | Controlled component using `useState` with live selection display |
|
|
14
|
+
| `FlamingoTheme` | Group wrapped in `data-app-type="flamingo"` decorator for Flamingo-branded styling |
|
|
15
|
+
|
|
16
|
+
## Usage Example
|
|
17
|
+
|
|
18
|
+
```typescript
|
|
19
|
+
import { RadioGroup, RadioGroupItem } from '../components/ui/radio-group';
|
|
20
|
+
import { useState } from 'react';
|
|
21
|
+
|
|
22
|
+
// Uncontrolled with default selection
|
|
23
|
+
<RadioGroup defaultValue="option-1">
|
|
24
|
+
<div className="flex items-center gap-3">
|
|
25
|
+
<RadioGroupItem value="option-1" id="opt-1" />
|
|
26
|
+
<label htmlFor="opt-1">Option 1</label>
|
|
27
|
+
</div>
|
|
28
|
+
<div className="flex items-center gap-3">
|
|
29
|
+
<RadioGroupItem value="option-2" id="opt-2" />
|
|
30
|
+
<label htmlFor="opt-2">Option 2</label>
|
|
31
|
+
</div>
|
|
32
|
+
</RadioGroup>
|
|
33
|
+
|
|
34
|
+
// Controlled
|
|
35
|
+
const [value, setValue] = useState('option-1');
|
|
36
|
+
<RadioGroup value={value} onValueChange={setValue}>
|
|
37
|
+
<RadioGroupItem value="option-1" id="opt-1" />
|
|
38
|
+
<RadioGroupItem value="option-2" id="opt-2" />
|
|
39
|
+
</RadioGroup>
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## Notes
|
|
43
|
+
|
|
44
|
+
- Built on **Radix UI** primitives with OpenFrame design tokens (`ods-text-primary`, `ods-text-secondary`)
|
|
45
|
+
- The `renderItem` helper ensures consistent label/input pairing across all stories
|
|
46
|
+
- Use `data-app-type="flamingo"` on a parent wrapper to activate Flamingo-specific theme overrides
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
<!-- source-hash: af0e39e63f288e66b45ccc927c98cf2a -->
|
|
2
|
+
Storybook stories for the `RadioGroupBlock` component, covering all visual states, variants, and interactive behaviors for the ODS design system's bordered radio group.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
- **`Default`** — Basic radio group with no pre-selected value
|
|
7
|
+
- **`WithDefaultValue`** — Pre-selected option via `defaultValue`
|
|
8
|
+
- **`WithDescriptions`** — Options with descriptive sub-text (e.g., pricing tiers)
|
|
9
|
+
- **`Disabled`** / **`DisabledItem`** — Whole group or individual option disabled
|
|
10
|
+
- **`Error`** — Group with inline validation error message
|
|
11
|
+
- **`Controlled`** — Controlled component with `useState` showing selected value
|
|
12
|
+
- **`AllStates`** — Combined showcase of selected, disabled, error, and description states
|
|
13
|
+
- **`DevicePricing`** / **`DevicePricingDisabled`** — `grouped` variant with trailing `Tag` discount badges, modeled after Figma device-pricing picker
|
|
14
|
+
- **`Grouped`** — `grouped` variant with dividers, no trailing slot (billing period example)
|
|
15
|
+
- **`FlamingoTheme`** — Same group rendered inside a `data-app-type="flamingo"` container for theme verification
|
|
16
|
+
|
|
17
|
+
## Usage Example
|
|
18
|
+
|
|
19
|
+
```typescript
|
|
20
|
+
// Controlled usage with grouped variant and trailing slots
|
|
21
|
+
import { RadioGroupBlock } from '../components/ui/radio-group';
|
|
22
|
+
import { Tag } from '../components/ui/tag';
|
|
23
|
+
|
|
24
|
+
<RadioGroupBlock
|
|
25
|
+
name="pricing"
|
|
26
|
+
variant="grouped"
|
|
27
|
+
defaultValue="300"
|
|
28
|
+
options={[
|
|
29
|
+
{
|
|
30
|
+
value: '100',
|
|
31
|
+
label: '100 devices',
|
|
32
|
+
description: '$5,400/year',
|
|
33
|
+
trailing: <Tag variant="success" label="-10%" />,
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
value: '300',
|
|
37
|
+
label: '300 devices',
|
|
38
|
+
description: '$14,400/year',
|
|
39
|
+
trailing: <Tag variant="success" label="-20%" />,
|
|
40
|
+
},
|
|
41
|
+
]}
|
|
42
|
+
/>
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
**Configurable `argTypes`:** `defaultValue`, `value`, `disabled`, `error`, `variant` (`separated` | `grouped`), `onValueChange`. All stories render at `400px` width via a shared decorator.
|
|
@@ -1,22 +1,26 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
Storybook stories
|
|
1
|
+
<!-- source-hash: 57929b92378079c47ade3983e6429cff -->
|
|
2
|
+
Storybook stories for the `Select` UI component, showcasing all variants and states including grouped items, validation, disabled states, and `FieldWrapper` integration.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
6
|
+
| Story | Description |
|
|
7
|
+
|---|---|
|
|
8
|
+
| `Default` | Basic select with placeholder text |
|
|
9
|
+
| `WithValue` | Select with a pre-selected default value |
|
|
10
|
+
| `Disabled` | Non-interactive disabled state |
|
|
11
|
+
| `WithGroups` | Grouped items with `SelectLabel` and `SelectSeparator` |
|
|
12
|
+
| `WithDisabledItem` | Select with individual disabled option |
|
|
13
|
+
| `ManyItems` | Scrollable list (25 UTC timezones) |
|
|
14
|
+
| `Invalid` | Error/invalid visual state via `invalid` prop on `SelectTrigger` |
|
|
15
|
+
| `WithLabel` | Wrapped in `FieldWrapper` with a label |
|
|
16
|
+
| `WithLabelAndError` | `FieldWrapper` with label and error message |
|
|
17
|
+
| `WithLabelAndValue` | `FieldWrapper` with a pre-selected value |
|
|
18
|
+
| `AllVariants` | All states rendered together for comparison |
|
|
15
19
|
|
|
16
20
|
## Usage Example
|
|
17
21
|
|
|
18
22
|
```typescript
|
|
19
|
-
// Basic
|
|
23
|
+
// Basic usage
|
|
20
24
|
<Select>
|
|
21
25
|
<SelectTrigger>
|
|
22
26
|
<SelectValue placeholder="Select an option..." />
|
|
@@ -27,7 +31,7 @@ Storybook stories file demonstrating the Select component and its various states
|
|
|
27
31
|
</SelectContent>
|
|
28
32
|
</Select>
|
|
29
33
|
|
|
30
|
-
//
|
|
34
|
+
// With grouped items
|
|
31
35
|
<Select>
|
|
32
36
|
<SelectTrigger>
|
|
33
37
|
<SelectValue placeholder="Select a fruit..." />
|
|
@@ -44,6 +48,16 @@ Storybook stories file demonstrating the Select component and its various states
|
|
|
44
48
|
</SelectGroup>
|
|
45
49
|
</SelectContent>
|
|
46
50
|
</Select>
|
|
47
|
-
```
|
|
48
51
|
|
|
49
|
-
|
|
52
|
+
// With validation via FieldWrapper
|
|
53
|
+
<FieldWrapper label="Role" error="Please select a role">
|
|
54
|
+
<Select>
|
|
55
|
+
<SelectTrigger invalid>
|
|
56
|
+
<SelectValue placeholder="Select a role..." />
|
|
57
|
+
</SelectTrigger>
|
|
58
|
+
<SelectContent>
|
|
59
|
+
<SelectItem value="viewer">Viewer</SelectItem>
|
|
60
|
+
</SelectContent>
|
|
61
|
+
</Select>
|
|
62
|
+
</FieldWrapper>
|
|
63
|
+
```
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
<!-- source-hash: 1c7447069bb7b63321514a5ef06052ac -->
|
|
2
|
+
Storybook stories for the `SlashCommandSuggestions` chat autocomplete component, providing visual test cases for the `/`-triggered command dropdown used in the Flamingo/OpenFrame chat interface.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
### Stories
|
|
7
|
+
|
|
8
|
+
| Story | Description |
|
|
9
|
+
|-------|-------------|
|
|
10
|
+
| `Default` | Full command list with the first row statically highlighted |
|
|
11
|
+
| `Interactive` | Live hover-driven highlight via `useState`, mimics keyboard navigation |
|
|
12
|
+
| `FilteredSingle` | Single result row, simulates typing `/road` to filter |
|
|
13
|
+
| `NoActions` | Hides action chips when `onAction` is `undefined`, row becomes click-only |
|
|
14
|
+
|
|
15
|
+
### Sample Data (`SAMPLE_COMMANDS`)
|
|
16
|
+
|
|
17
|
+
14 `SlashCommandSummary` entries covering all production `/api/docs/commands` sources: ClickUp (`roadmap`, `delivery`), GitHub (`commits`, `pull-requests`, `pr-reviews`), Slack (`slack`), and OpenFrame content types (`docs`, `blogs`, `releases`, `case-studies`, `getting-started`, `webinars`, `events`, `podcasts`). Each entry includes `iconName` keys wired to the `resolveOnboardingIcon` registry.
|
|
18
|
+
|
|
19
|
+
## Usage Example
|
|
20
|
+
|
|
21
|
+
```typescript
|
|
22
|
+
// Render the interactive story manually outside Storybook
|
|
23
|
+
import { SlashCommandSuggestions } from '../components/chat/slash-command-suggestions'
|
|
24
|
+
import { useState } from 'react'
|
|
25
|
+
|
|
26
|
+
export function Demo() {
|
|
27
|
+
const [idx, setIdx] = useState(0)
|
|
28
|
+
|
|
29
|
+
return (
|
|
30
|
+
<SlashCommandSuggestions
|
|
31
|
+
commands={SAMPLE_COMMANDS}
|
|
32
|
+
highlightedIdx={idx}
|
|
33
|
+
onHover={setIdx}
|
|
34
|
+
onSelect={(cmd) => console.log('selected:', cmd.id)}
|
|
35
|
+
onAction={(cmd, actionId) => console.log('action:', cmd.id, actionId)}
|
|
36
|
+
/>
|
|
37
|
+
)
|
|
38
|
+
}
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
The decorator wraps every story in a `640px` container with a mock chat input row below, replicating the `absolute bottom-full` anchor behavior of the real `ChatInput` component.
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
<!-- source-hash: b262c529e121e8f3f9e9aa107480cd1a -->
|
|
2
|
+
Storybook stories for the `SplitButton` component, showcasing all supported variants, sizes, states, and icon configurations for visual testing and documentation.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
| Export | Description |
|
|
7
|
+
|--------|-------------|
|
|
8
|
+
| `Accent` | Default accent variant with external link icon action |
|
|
9
|
+
| `Outline` | Outline variant with new-tab icon action |
|
|
10
|
+
| `Transparent` | Transparent variant with new-tab icon action |
|
|
11
|
+
| `Destructive` | Destructive variant with trash icon and overflow menu |
|
|
12
|
+
| `SizeSmall` | Small size variant demonstration |
|
|
13
|
+
| `AsLink` | Button rendered as an anchor (`href`) with icon action |
|
|
14
|
+
| `WithLeftIcon` | Main button with a left-side icon and dropdown action |
|
|
15
|
+
| `Disabled` | Fully disabled state for the entire component |
|
|
16
|
+
| `IconActionDisabled` | Only the secondary icon action is disabled |
|
|
17
|
+
| `AllVariants` | Grid showcasing all 4 variants × default/disabled × default/small sizes |
|
|
18
|
+
| `TwoActions` | Composite example combining link navigation and dropdown actions |
|
|
19
|
+
|
|
20
|
+
## Usage Example
|
|
21
|
+
|
|
22
|
+
```typescript
|
|
23
|
+
import { SplitButton } from '../components/ui/button'
|
|
24
|
+
import { FloppyDiscIcon as Save, Chevron01DownIcon as ChevronDown } from '../components/icons-v2-generated'
|
|
25
|
+
|
|
26
|
+
// Main action button with a secondary icon action
|
|
27
|
+
<SplitButton
|
|
28
|
+
variant="accent"
|
|
29
|
+
leftIcon={<Save />}
|
|
30
|
+
onClick={() => handleSave()}
|
|
31
|
+
iconAction={{
|
|
32
|
+
icon: <ChevronDown />,
|
|
33
|
+
'aria-label': 'More save options',
|
|
34
|
+
onClick: () => openMenu(),
|
|
35
|
+
}}
|
|
36
|
+
>
|
|
37
|
+
Save
|
|
38
|
+
</SplitButton>
|
|
39
|
+
|
|
40
|
+
// Rendered as a link with external open icon action
|
|
41
|
+
<SplitButton
|
|
42
|
+
variant="outline"
|
|
43
|
+
href="/docs"
|
|
44
|
+
iconAction={{
|
|
45
|
+
icon: <ExternalLink />,
|
|
46
|
+
'aria-label': 'Open in new tab',
|
|
47
|
+
href: '/docs',
|
|
48
|
+
openInNewTab: true,
|
|
49
|
+
}}
|
|
50
|
+
>
|
|
51
|
+
Documentation
|
|
52
|
+
</SplitButton>
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## Controls
|
|
56
|
+
|
|
57
|
+
| Prop | Type | Options |
|
|
58
|
+
|------|------|---------|
|
|
59
|
+
| `variant` | select | `accent`, `outline`, `transparent`, `destructive` |
|
|
60
|
+
| `size` | select | `default`, `small` |
|
|
61
|
+
| `fullWidth` | boolean | — |
|
|
62
|
+
| `disabled` | boolean | — |
|
|
@@ -1,45 +1,54 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
Storybook stories for the TabNavigation component
|
|
1
|
+
<!-- source-hash: 03e4c838723c464e0642fcd3805a327d -->
|
|
2
|
+
Storybook stories for the `TabNavigation` component, covering controlled state, URL synchronization, status indicators, overflow scroll shadows, and custom styling variants.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
6
|
+
**Exported Stories**
|
|
7
|
+
|
|
8
|
+
| Story | Description |
|
|
9
|
+
|---|---|
|
|
10
|
+
| `Controlled` | Basic controlled mode with `activeTab` + `onTabChange` |
|
|
11
|
+
| `WithContent` | Children render prop displaying active tab content |
|
|
12
|
+
| `WithIndicators` | Tabs with `success`, `warning`, and `error` indicator badges |
|
|
13
|
+
| `UrlSync` | Active tab driven by a `?tab=` URL search parameter |
|
|
14
|
+
| `UrlSyncCustomParam` | URL sync with a custom param name (`section`) and `replaceState` |
|
|
15
|
+
| `TwoTabs` | Minimal two-tab layout |
|
|
16
|
+
| `DefaultTabOverride` | Pre-selects a non-first tab on mount |
|
|
17
|
+
| `CustomClassName` | Custom Tailwind class on the tab container |
|
|
18
|
+
| `ScrollShadows` | 15 tabs in a constrained width to trigger fade scroll shadows |
|
|
19
|
+
| `CustomShadowColor` | Overrides scroll shadow gradient via `shadowClassName` |
|
|
20
|
+
| `ShadowOnCustomBackground` | Shadow color matched to a custom card background |
|
|
21
|
+
| `NoShadows` | Two tabs that fit without overflow — shadows never appear |
|
|
22
|
+
|
|
23
|
+
**Fixture Data**
|
|
24
|
+
- `defaultTabs` — 4 tabs (Overview, Users, Settings, Notifications)
|
|
25
|
+
- `tabsWithIndicators` — 5 tabs with mixed `success`/`warning`/`error` indicators
|
|
26
|
+
- `manyTabs` — 15 tabs used for overflow/scroll stories
|
|
13
27
|
|
|
14
28
|
## Usage Example
|
|
15
29
|
|
|
16
30
|
```typescript
|
|
17
|
-
//
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
defaultTab="overview"
|
|
42
|
-
/>
|
|
43
|
-
```
|
|
44
|
-
|
|
45
|
-
The stories cover all major interaction patterns including two-tab layouts, default tab overrides, and custom styling through className props.
|
|
31
|
+
// Controlled tab navigation with status indicators
|
|
32
|
+
import { TabNavigation, TabItem } from '../components/ui/tab-navigation';
|
|
33
|
+
import { useState } from 'react';
|
|
34
|
+
import { Home, Settings } from 'lucide-react';
|
|
35
|
+
|
|
36
|
+
const tabs: TabItem[] = [
|
|
37
|
+
{ id: 'home', label: 'Home', icon: Home, indicator: 'success' },
|
|
38
|
+
{ id: 'settings', label: 'Settings', icon: Settings, indicator: 'warning' },
|
|
39
|
+
];
|
|
40
|
+
|
|
41
|
+
export function MyPage() {
|
|
42
|
+
const [active, setActive] = useState('home');
|
|
43
|
+
return (
|
|
44
|
+
<TabNavigation
|
|
45
|
+
tabs={tabs}
|
|
46
|
+
activeTab={active}
|
|
47
|
+
onTabChange={setActive}
|
|
48
|
+
shadowClassName="from-ods-card"
|
|
49
|
+
>
|
|
50
|
+
{(activeTab) => <div>Viewing: {activeTab}</div>}
|
|
51
|
+
</TabNavigation>
|
|
52
|
+
);
|
|
53
|
+
}
|
|
54
|
+
```
|