@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,42 +1,52 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
A
|
|
1
|
+
<!-- source-hash: ec4ed0c801de7134f1ad25648dec0319 -->
|
|
2
|
+
A client-side textarea component supporting labels, validation states, and optional end icons (as decorative spans or interactive buttons), built on top of `FieldWrapper`.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
- **cn**: Utility function for conditional class name merging
|
|
6
|
+
### `Textarea`
|
|
7
|
+
A `React.forwardRef` component extending native `HTMLTextAreaElement` attributes with the following additional props:
|
|
9
8
|
|
|
10
|
-
|
|
9
|
+
| Prop | Type | Description |
|
|
10
|
+
|------|------|-------------|
|
|
11
|
+
| `invalid` | `boolean` | Renders red error border/ring |
|
|
12
|
+
| `label` | `string` | Label text above the textarea |
|
|
13
|
+
| `error` | `string` | Error message below the textarea |
|
|
14
|
+
| `endIcon` | `React.ReactNode` | Icon rendered at the right edge |
|
|
15
|
+
| `endIconAsButton` | `boolean` | Wraps `endIcon` in a styled `<button>` |
|
|
16
|
+
| `endIconButtonProps` | `ButtonHTMLAttributes` | Extra props for the end-icon button |
|
|
17
|
+
|
|
18
|
+
**Two layout modes:**
|
|
19
|
+
- **Without `endIcon`**: Border and background styles live directly on the `<textarea>` element.
|
|
20
|
+
- **With `endIcon`**: A `<label>` wrapper hosts the border/background so the icon appears visually inside the field. The textarea uses `[field-sizing:content]` for native CSS auto-grow and caps height at `160px` with internal scroll.
|
|
11
21
|
|
|
12
22
|
## Usage Example
|
|
13
23
|
|
|
14
24
|
```typescript
|
|
15
|
-
|
|
16
|
-
|
|
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
|
-
|
|
42
|
-
|
|
25
|
+
// Basic textarea with label and validation
|
|
26
|
+
<Textarea
|
|
27
|
+
label="Message"
|
|
28
|
+
placeholder="Type your message..."
|
|
29
|
+
error="Message is required"
|
|
30
|
+
/>
|
|
31
|
+
|
|
32
|
+
// Auto-growing textarea with a submit button icon
|
|
33
|
+
<Textarea
|
|
34
|
+
label="Chat Input"
|
|
35
|
+
placeholder="Ask something..."
|
|
36
|
+
endIcon={<SendIcon />}
|
|
37
|
+
endIconAsButton
|
|
38
|
+
endIconButtonProps={{
|
|
39
|
+
'aria-label': 'Send message',
|
|
40
|
+
onClick: handleSend,
|
|
41
|
+
disabled: isLoading,
|
|
42
|
+
}}
|
|
43
|
+
/>
|
|
44
|
+
|
|
45
|
+
// Controlled with disabled state
|
|
46
|
+
<Textarea
|
|
47
|
+
value={value}
|
|
48
|
+
onChange={(e) => setValue(e.target.value)}
|
|
49
|
+
disabled
|
|
50
|
+
rows={4}
|
|
51
|
+
/>
|
|
52
|
+
```
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
<!-- source-hash: 9fe959702866abb3d54c107fab70e0a4 -->
|
|
2
|
+
Renders a styled list of file attachments for a support ticket, displaying thumbnail or file icon, name, size, and an optional download button per item.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
- **`TicketAttachment`** — Interface describing a single attachment: `id`, `fileName`, `fileSize`, optional `thumbnailSrc`, and optional `onDownload` callback
|
|
7
|
+
- **`TicketAttachmentsListProps`** — Props interface accepting an `attachments` array and optional `className`
|
|
8
|
+
- **`TicketAttachmentsList`** — Main component that maps over attachments, rendering each row with a `SquareAvatar` (if thumbnail exists) or a fallback `FileIcon`, truncated filename, file size, and a download button
|
|
9
|
+
|
|
10
|
+
## Usage Example
|
|
11
|
+
|
|
12
|
+
```typescript
|
|
13
|
+
import { TicketAttachmentsList, TicketAttachment } from "./ticket-attachments-list"
|
|
14
|
+
|
|
15
|
+
const attachments: TicketAttachment[] = [
|
|
16
|
+
{
|
|
17
|
+
id: "1",
|
|
18
|
+
fileName: "screenshot.png",
|
|
19
|
+
fileSize: "1.2 MB",
|
|
20
|
+
thumbnailSrc: "https://cdn.example.com/thumb.png",
|
|
21
|
+
onDownload: () => console.log("Downloading screenshot.png"),
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
id: "2",
|
|
25
|
+
fileName: "error-log.txt",
|
|
26
|
+
fileSize: "48 KB",
|
|
27
|
+
onDownload: () => console.log("Downloading error-log.txt"),
|
|
28
|
+
},
|
|
29
|
+
]
|
|
30
|
+
|
|
31
|
+
export default function TicketDetail() {
|
|
32
|
+
return (
|
|
33
|
+
<TicketAttachmentsList
|
|
34
|
+
attachments={attachments}
|
|
35
|
+
className="mt-4"
|
|
36
|
+
/>
|
|
37
|
+
)
|
|
38
|
+
}
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## Notes
|
|
42
|
+
|
|
43
|
+
- Returns `null` when the `attachments` array is empty — safe to render unconditionally
|
|
44
|
+
- Long filenames are truncated with CSS and exposed via the `title` attribute for full visibility on hover
|
|
45
|
+
- Download button only renders when `onDownload` is provided
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
<!-- source-hash: cc870cf8d23036d002a435c07bd1d5aa -->
|
|
2
|
+
A reusable layout component that renders a labeled section within a ticket detail view, pairing an uppercase secondary-text heading with arbitrary child content.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
### `TicketDetailSection`
|
|
7
|
+
A simple presentational component that wraps a section label and its associated content in a flex column layout.
|
|
8
|
+
|
|
9
|
+
**Props (`TicketDetailSectionProps`):**
|
|
10
|
+
|
|
11
|
+
| Prop | Type | Description |
|
|
12
|
+
|------|------|-------------|
|
|
13
|
+
| `label` | `string` | Section heading displayed in secondary text style |
|
|
14
|
+
| `children` | `React.ReactNode` | Content rendered below the label |
|
|
15
|
+
| `className` | `string?` | Optional additional CSS classes |
|
|
16
|
+
|
|
17
|
+
## Usage Example
|
|
18
|
+
|
|
19
|
+
```typescript
|
|
20
|
+
import { TicketDetailSection } from "./ticket-detail-section"
|
|
21
|
+
|
|
22
|
+
export function TicketDetails() {
|
|
23
|
+
return (
|
|
24
|
+
<TicketDetailSection label="Assigned To">
|
|
25
|
+
<span>John Doe</span>
|
|
26
|
+
</TicketDetailSection>
|
|
27
|
+
)
|
|
28
|
+
}
|
|
29
|
+
```
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
<!-- source-hash: 25c594905e7f584756ad751975cbc35e -->
|
|
2
|
+
A collapsible ticket information panel that displays key ticket metadata (organization, assignee, device, status) in a header row, with an expandable section revealing additional details like description, attachments, tags, and notes.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
### `TicketInfoSection`
|
|
7
|
+
Main export. Renders a bordered card with a responsive header grid and optional expanded content area.
|
|
8
|
+
|
|
9
|
+
### `InfoCell` (internal)
|
|
10
|
+
Reusable label/value display cell supporting an optional icon and clickable value.
|
|
11
|
+
|
|
12
|
+
### `TicketInfoSectionProps`
|
|
13
|
+
Full interface for the component:
|
|
14
|
+
|
|
15
|
+
| Prop | Type | Description |
|
|
16
|
+
|------|------|-------------|
|
|
17
|
+
| `organization` | `{ name, imageSrc? }` | Org name and avatar |
|
|
18
|
+
| `device` | `{ name, icon?, onClick? }` | Device name with optional navigation |
|
|
19
|
+
| `status` | `string` | Rendered via `TicketStatusTag` |
|
|
20
|
+
| `assigned` | `AssignedConfig` | Assignee dropdown config |
|
|
21
|
+
| `expanded` | `boolean` | Controls expanded section visibility |
|
|
22
|
+
| `onExpand` | `() => void` | Expand/collapse toggle handler |
|
|
23
|
+
| `description` | `string` | Markdown/HTML content |
|
|
24
|
+
| `attachments` | `TicketAttachment[]` | Downloadable file list |
|
|
25
|
+
| `tags` | `string[]` | Label tags |
|
|
26
|
+
| `notes` | `TicketNote[]` | Notes with add/edit/delete handlers |
|
|
27
|
+
|
|
28
|
+
## Usage Example
|
|
29
|
+
|
|
30
|
+
```typescript
|
|
31
|
+
import { TicketInfoSection } from "./ticket-info-section"
|
|
32
|
+
|
|
33
|
+
function TicketPage() {
|
|
34
|
+
const [expanded, setExpanded] = React.useState(false)
|
|
35
|
+
|
|
36
|
+
return (
|
|
37
|
+
<TicketInfoSection
|
|
38
|
+
organization={{ name: "Acme Corp", imageSrc: "/acme-logo.png" }}
|
|
39
|
+
device={{ name: "DESKTOP-XYZ01", onClick: () => router.push("/devices/1") }}
|
|
40
|
+
status="open"
|
|
41
|
+
expanded={expanded}
|
|
42
|
+
onExpand={() => setExpanded(prev => !prev)}
|
|
43
|
+
assigned={{
|
|
44
|
+
currentAssignee: { id: "u1", name: "Jane Doe" },
|
|
45
|
+
options: assigneeOptions,
|
|
46
|
+
onAssign: (userId) => handleAssign(userId),
|
|
47
|
+
}}
|
|
48
|
+
createdAt="Jan 15, 2025"
|
|
49
|
+
description="**Issue:** User cannot log in.\n\nSteps to reproduce..."
|
|
50
|
+
tags={["urgent", "auth"]}
|
|
51
|
+
notes={notes}
|
|
52
|
+
onAddNote={(text) => addNote(text)}
|
|
53
|
+
/>
|
|
54
|
+
)
|
|
55
|
+
}
|
|
56
|
+
```
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
<!-- source-hash: 88db6ae7f82dae65095e5d817320bc8e -->
|
|
2
|
+
A client-side React component that renders a single ticket note with inline editing, delete, and author attribution capabilities.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
### Interfaces
|
|
7
|
+
|
|
8
|
+
- **`TicketNote`** — Data model for a note, including `id`, `text`, `authorName`, `authorAvatar`, `createdAt`, and `isOwn` (controls edit/delete visibility)
|
|
9
|
+
- **`TicketNoteCardProps`** — Component props accepting a `TicketNote`, optional `onEdit`/`onDelete` callbacks, and `className`
|
|
10
|
+
|
|
11
|
+
### Component
|
|
12
|
+
|
|
13
|
+
- **`TicketNoteCard`** — Stateful card component managing edit mode toggle, text input state, save/cancel/keyboard interactions (`Enter` to save, `Escape` to cancel)
|
|
14
|
+
|
|
15
|
+
## Usage Example
|
|
16
|
+
|
|
17
|
+
```typescript
|
|
18
|
+
import { TicketNoteCard, TicketNote } from "./ticket-note-card"
|
|
19
|
+
|
|
20
|
+
const note: TicketNote = {
|
|
21
|
+
id: "note-1",
|
|
22
|
+
text: "Customer confirmed the issue is reproducible on Windows only.",
|
|
23
|
+
authorName: "Jane Doe",
|
|
24
|
+
authorAvatar: "https://cdn.example.com/avatars/jane.png",
|
|
25
|
+
createdAt: "Jan 15, 2025",
|
|
26
|
+
isOwn: true,
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
function NoteList() {
|
|
30
|
+
const handleEdit = (id: string, text: string) => {
|
|
31
|
+
console.log("Updated note:", id, text)
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
const handleDelete = (id: string) => {
|
|
35
|
+
console.log("Deleted note:", id)
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
return (
|
|
39
|
+
<TicketNoteCard
|
|
40
|
+
note={note}
|
|
41
|
+
onEdit={handleEdit}
|
|
42
|
+
onDelete={handleDelete}
|
|
43
|
+
className="my-2"
|
|
44
|
+
/>
|
|
45
|
+
)
|
|
46
|
+
}
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## Behavior Notes
|
|
50
|
+
|
|
51
|
+
- Edit/delete actions are only rendered when `note.isOwn` is `true`
|
|
52
|
+
- Save is disabled if the trimmed input is empty
|
|
53
|
+
- Uses `SquareAvatar` for author display and `Input` for inline editing
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
<!-- source-hash: b7535dbf79220d22a1a0b0b0e1da828e -->
|
|
2
|
+
A client-side React component that renders a list of ticket notes with an optional inline input for adding new notes.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
### `TicketNotesSectionProps`
|
|
7
|
+
| Prop | Type | Description |
|
|
8
|
+
|------|------|-------------|
|
|
9
|
+
| `notes` | `TicketNote[]` | Array of note objects to display |
|
|
10
|
+
| `onAddNote` | `(text: string) => void` | Callback when a new note is submitted; omitting it hides the input UI |
|
|
11
|
+
| `onEditNote` | `(id: string, text: string) => void` | Callback to update an existing note |
|
|
12
|
+
| `onDeleteNote` | `(id: string) => void` | Callback to remove a note |
|
|
13
|
+
| `isAddingNote` | `boolean` | Disables input and send button during async submission |
|
|
14
|
+
| `className` | `string` | Additional CSS classes for the wrapper |
|
|
15
|
+
|
|
16
|
+
### `TicketNotesSection`
|
|
17
|
+
The default export. Manages local `noteText` state and exposes two submission paths:
|
|
18
|
+
- **`Enter` key** (without `Shift`) triggers `handleSend`
|
|
19
|
+
- **Send button** click triggers `handleSend`
|
|
20
|
+
|
|
21
|
+
Both paths trim whitespace and short-circuit if the input is empty or `isAddingNote` is `true`.
|
|
22
|
+
|
|
23
|
+
## Usage Example
|
|
24
|
+
|
|
25
|
+
```typescript
|
|
26
|
+
import { TicketNotesSection } from "./ticket-notes-section"
|
|
27
|
+
import type { TicketNote } from "./ticket-note-card"
|
|
28
|
+
|
|
29
|
+
const notes: TicketNote[] = [
|
|
30
|
+
{ id: "1", text: "Checked network config", author: "Alice", createdAt: "2024-01-10" },
|
|
31
|
+
]
|
|
32
|
+
|
|
33
|
+
function TicketDetail() {
|
|
34
|
+
const [adding, setAdding] = React.useState(false)
|
|
35
|
+
|
|
36
|
+
const handleAdd = async (text: string) => {
|
|
37
|
+
setAdding(true)
|
|
38
|
+
await saveNote(text)
|
|
39
|
+
setAdding(false)
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
return (
|
|
43
|
+
<TicketNotesSection
|
|
44
|
+
notes={notes}
|
|
45
|
+
onAddNote={handleAdd}
|
|
46
|
+
onEditNote={(id, text) => updateNote(id, text)}
|
|
47
|
+
onDeleteNote={(id) => removeNote(id)}
|
|
48
|
+
isAddingNote={adding}
|
|
49
|
+
/>
|
|
50
|
+
)
|
|
51
|
+
}
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
> **Note:** The add-note input row only renders when `onAddNote` is provided, making the component usable in read-only contexts by simply omitting the prop.
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
<!-- source-hash: 5f8fd0a180217b9085f7ea5f038d319a -->
|
|
2
|
+
Renders a styled badge for ticket statuses, normalizing any known status string (backend, chat, dialog-layer) into a canonical `TicketStatus` value with the correct color variant and optional icon.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
### Types & Exports
|
|
7
|
+
| Export | Description |
|
|
8
|
+
|--------|-------------|
|
|
9
|
+
| `TicketStatus` | Canonical union type: `'ACTIVE' \| 'TECH_REQUIRED' \| 'ON_HOLD' \| 'RESOLVED' \| 'ARCHIVED'` |
|
|
10
|
+
| `TicketStatusTagProps` | Props interface for the main component |
|
|
11
|
+
|
|
12
|
+
### Utility Functions
|
|
13
|
+
| Function | Description |
|
|
14
|
+
|----------|-------------|
|
|
15
|
+
| `resolveTicketStatus(status)` | Maps any known alias to a canonical `TicketStatus`; returns `null` for unknowns |
|
|
16
|
+
| `getTicketStatusConfig(status)` | Returns `{ label, variant, icon }` for a given status string |
|
|
17
|
+
| `getTicketStatusTag(status)` | Drop-in utility returning label/variant/icon for use outside the component |
|
|
18
|
+
|
|
19
|
+
### Component
|
|
20
|
+
- **`TicketStatusTag`** — Wraps the base `Tag` component with resolved status config. Supports label override, hex `color` override with automatic contrast text, `showIcon` toggle, and additional `className`.
|
|
21
|
+
|
|
22
|
+
## Usage Example
|
|
23
|
+
|
|
24
|
+
```typescript
|
|
25
|
+
// Basic usage
|
|
26
|
+
<TicketStatusTag status="ACTIVE" />
|
|
27
|
+
|
|
28
|
+
// With alias from dialog layer
|
|
29
|
+
<TicketStatusTag status="ACTION_REQUIRED" />
|
|
30
|
+
|
|
31
|
+
// HubSpot pipeline stage — custom label, canonical color
|
|
32
|
+
<TicketStatusTag status="OPEN" label="Waiting on Contact" />
|
|
33
|
+
|
|
34
|
+
// Hex color override (e.g. from a custom pipeline stage)
|
|
35
|
+
<TicketStatusTag status="ON_HOLD" color="#7C3AED" />
|
|
36
|
+
|
|
37
|
+
// Utility usage outside JSX
|
|
38
|
+
const { label, variant } = getTicketStatusTag('resolved')
|
|
39
|
+
// → { label: 'Resolved', variant: 'outline', icon: <CheckCircleIcon /> }
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
### Status → Variant Map
|
|
43
|
+
| Status | Variant | Icon |
|
|
44
|
+
|--------|---------|------|
|
|
45
|
+
| `ACTIVE` | `success` | — |
|
|
46
|
+
| `TECH_REQUIRED` | `warning` | — |
|
|
47
|
+
| `ON_HOLD` | `error` | — |
|
|
48
|
+
| `RESOLVED` | `outline` | ✅ CheckCircle |
|
|
49
|
+
| `ARCHIVED` | `grey` | — |
|
|
@@ -1,41 +1,40 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
A
|
|
1
|
+
<!-- source-hash: 63aa69e366662eef49a80f4c013e6522 -->
|
|
2
|
+
A reusable React component that renders a labeled content block with a title and content element, supporting configurable typography, spacing, and semantic HTML elements.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
### `TitleContentBlock`
|
|
7
|
+
The main export — a client-side React component that pairs a title label with a primary content value.
|
|
8
|
+
|
|
9
|
+
### `TitleContentBlockProps`
|
|
10
|
+
| Prop | Type | Default | Description |
|
|
11
|
+
|------|------|---------|-------------|
|
|
12
|
+
| `title` | `string` | — | Label/title text |
|
|
13
|
+
| `content` | `React.ReactNode` | — | Primary content value |
|
|
14
|
+
| `titleColor` | `string` | `text-ods-text-secondary` | Tailwind color class for title |
|
|
15
|
+
| `titleClassName` | `string` | `text-h5 tracking-[-0.28px]` | Additional title styles |
|
|
16
|
+
| `contentClassName` | `string` | `text-h2 tracking-[-0.64px] text-ods-text-primary` | Content element styles |
|
|
17
|
+
| `containerClassName` | `string` | `''` | Wrapper `div` styles |
|
|
18
|
+
| `titleAs` | `h1–h6 \| div` | `div` | Semantic element for the title |
|
|
19
|
+
| `contentAs` | `h1–h6 \| p \| div` | `h4` | Semantic element for the content |
|
|
20
|
+
| `spacing` | `sm \| md \| lg` | `md` | Vertical gap between title and content |
|
|
9
21
|
|
|
10
22
|
## Usage Example
|
|
11
23
|
|
|
12
24
|
```typescript
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
// Basic usage with default styling
|
|
25
|
+
// Basic usage — stat or metric display
|
|
16
26
|
<TitleContentBlock
|
|
17
|
-
title="
|
|
18
|
-
content="
|
|
27
|
+
title="Total Devices"
|
|
28
|
+
content="1,248"
|
|
19
29
|
/>
|
|
20
30
|
|
|
21
|
-
//
|
|
31
|
+
// Custom semantic elements and spacing
|
|
22
32
|
<TitleContentBlock
|
|
23
|
-
title="
|
|
24
|
-
content="
|
|
33
|
+
title="Active Tickets"
|
|
34
|
+
content={<span className="text-red-500">42</span>}
|
|
25
35
|
titleAs="h3"
|
|
26
36
|
contentAs="p"
|
|
27
37
|
spacing="lg"
|
|
28
|
-
|
|
29
|
-
contentClassName="text-green-600 font-bold text-xl"
|
|
30
|
-
containerClassName="p-4 bg-gray-50 rounded"
|
|
38
|
+
containerClassName="p-4 rounded-lg bg-ods-surface"
|
|
31
39
|
/>
|
|
32
|
-
|
|
33
|
-
// Dynamic content example
|
|
34
|
-
<TitleContentBlock
|
|
35
|
-
title="User Count"
|
|
36
|
-
content={<span>{userCount.toLocaleString()}</span>}
|
|
37
|
-
spacing="sm"
|
|
38
|
-
/>
|
|
39
|
-
```
|
|
40
|
-
|
|
41
|
-
The component uses Azeret Mono font family by default and provides three spacing options (sm/md/lg) with responsive text sizing. Both title and content elements can be rendered as different HTML tags for proper semantic structure.
|
|
40
|
+
```
|
|
@@ -1,45 +1,57 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
A
|
|
1
|
+
<!-- source-hash: 1847d3dd263a7c340149cc9157774ef5 -->
|
|
2
|
+
A client-side toast notification system built on top of [Sonner](https://sonner.emilkowal.ski/), providing styled toast components with variant support, progress indicators, and a specialized command approval flow.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
| Export | Type | Description |
|
|
7
|
+
|--------|------|-------------|
|
|
8
|
+
| `Toaster` | Component | Root provider wrapping Sonner's `Toaster`; injects the `toast-progress` keyframe animation |
|
|
9
|
+
| `ToastCard` | Component | Standard toast card with title, description, colored dot indicator, dismiss button, and animated progress bar |
|
|
10
|
+
| `CommandApprovalToast` | Component | Expandable toast with Approve/Reject actions for AI command authorization flows |
|
|
11
|
+
| `showToast` | Function | Imperative helper to fire a `ToastCard` toast |
|
|
12
|
+
| `showCommandApprovalToast` | Function | Imperative helper to fire a `CommandApprovalToast` |
|
|
13
|
+
| `ToastVariant` | Type | `'default' \| 'success' \| 'warning' \| 'error' \| 'info'` |
|
|
9
14
|
|
|
10
15
|
## Usage Example
|
|
11
16
|
|
|
17
|
+
**Mount the provider once (root layout):**
|
|
18
|
+
|
|
12
19
|
```typescript
|
|
13
|
-
import { Toaster } from '
|
|
14
|
-
import { toast } from 'sonner'
|
|
20
|
+
import { Toaster } from '@/components/toaster'
|
|
15
21
|
|
|
16
|
-
|
|
17
|
-
function Layout({ children }: { children: React.ReactNode }) {
|
|
22
|
+
export default function RootLayout({ children }) {
|
|
18
23
|
return (
|
|
19
|
-
|
|
24
|
+
<>
|
|
20
25
|
{children}
|
|
21
|
-
<Toaster />
|
|
22
|
-
|
|
26
|
+
<Toaster position="bottom-right" />
|
|
27
|
+
</>
|
|
23
28
|
)
|
|
24
29
|
}
|
|
30
|
+
```
|
|
25
31
|
|
|
26
|
-
|
|
27
|
-
function MyComponent() {
|
|
28
|
-
const handleSuccess = () => {
|
|
29
|
-
toast.success('Operation completed successfully!')
|
|
30
|
-
}
|
|
32
|
+
**Fire a standard toast:**
|
|
31
33
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
}
|
|
34
|
+
```typescript
|
|
35
|
+
import { showToast } from '@/components/toaster'
|
|
35
36
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
37
|
+
showToast({ title: 'Saved', description: 'Changes saved successfully.', variant: 'success' })
|
|
38
|
+
|
|
39
|
+
// Shorthand
|
|
40
|
+
showToast('Operation complete')
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
**Request command approval (Mingo AI flow):**
|
|
44
|
+
|
|
45
|
+
```typescript
|
|
46
|
+
import { showCommandApprovalToast } from '@/components/toaster'
|
|
47
|
+
|
|
48
|
+
showCommandApprovalToast({
|
|
49
|
+
command: 'apt-get upgrade -y',
|
|
50
|
+
toolType: 'terminal',
|
|
51
|
+
approvalDescription: 'This will upgrade all system packages.',
|
|
52
|
+
onApprove: () => executeCommand(),
|
|
53
|
+
onReject: () => cancelJob(),
|
|
54
|
+
})
|
|
43
55
|
```
|
|
44
56
|
|
|
45
|
-
|
|
57
|
+
> `CommandApprovalToast` defaults to `duration: Infinity` so it persists until the technician explicitly approves or rejects the action.
|
|
@@ -1,27 +1,34 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
2
|
-
|
|
1
|
+
<!-- source-hash: 7a9da2d80c73e939b410ce27e719aa66 -->
|
|
2
|
+
Accessible tooltip component built on Radix UI primitives, providing animated, portal-rendered tooltips with consistent ODS (OpenFrame Design System) styling.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
6
|
+
| Export | Type | Description |
|
|
7
|
+
|--------|------|-------------|
|
|
8
|
+
| `TooltipProvider` | Component | Context provider required at the app/layout level to manage tooltip state |
|
|
9
|
+
| `Tooltip` | Component | Root wrapper controlling open/close behavior |
|
|
10
|
+
| `TooltipTrigger` | Component | Element that activates the tooltip on hover/focus |
|
|
11
|
+
| `TooltipContent` | Component | Styled content panel rendered in a portal with enter/exit animations |
|
|
10
12
|
|
|
11
13
|
## Usage Example
|
|
12
14
|
|
|
13
15
|
```typescript
|
|
14
|
-
import {
|
|
16
|
+
import {
|
|
17
|
+
Tooltip,
|
|
18
|
+
TooltipContent,
|
|
19
|
+
TooltipProvider,
|
|
20
|
+
TooltipTrigger,
|
|
21
|
+
} from "@/components/ui/tooltip"
|
|
15
22
|
|
|
16
|
-
function
|
|
23
|
+
export function ActionButton() {
|
|
17
24
|
return (
|
|
18
25
|
<TooltipProvider>
|
|
19
26
|
<Tooltip>
|
|
20
27
|
<TooltipTrigger asChild>
|
|
21
28
|
<button>Hover me</button>
|
|
22
29
|
</TooltipTrigger>
|
|
23
|
-
<TooltipContent>
|
|
24
|
-
<p>
|
|
30
|
+
<TooltipContent side="top">
|
|
31
|
+
<p>Helpful context here</p>
|
|
25
32
|
</TooltipContent>
|
|
26
33
|
</Tooltip>
|
|
27
34
|
</TooltipProvider>
|
|
@@ -29,4 +36,8 @@ function App() {
|
|
|
29
36
|
}
|
|
30
37
|
```
|
|
31
38
|
|
|
32
|
-
|
|
39
|
+
## Notes
|
|
40
|
+
|
|
41
|
+
- `TooltipContent` defaults to `sideOffset={4}` and supports all four sides (`top`, `bottom`, `left`, `right`) with direction-aware slide-in animations via Tailwind data attributes.
|
|
42
|
+
- Content is injected via a **portal**, ensuring correct stacking context (`z-[1400]`) above modals and overlays.
|
|
43
|
+
- `TooltipProvider` should be placed high in the component tree (e.g., root layout) to avoid nesting multiple providers unnecessarily.
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
<!-- source-hash: 8d0022286e01a2ce895c17613d9cae17 -->
|
|
2
|
+
Renders truncated text using ODS typography tokens, displaying a `FloatingTooltip` with the full content only when overflow is detected via `ResizeObserver`.
|
|
3
|
+
|
|
4
|
+
## Key Components
|
|
5
|
+
|
|
6
|
+
- **`TruncateText`** — Main export. Wraps a `<span>` with overflow detection and conditionally enables a tooltip.
|
|
7
|
+
- **`TruncateTextProps`** — Interface defining all configuration options.
|
|
8
|
+
- **`TruncateTextVariant`** — Union type (`'h1'`–`'h6'`) mapping to ODS typography utilities.
|
|
9
|
+
- **`TruncateTextTone`** — Union type (`'primary'` | `'secondary'`) mapping to ODS text colour utilities.
|
|
10
|
+
- **Overflow detection** — Uses `ResizeObserver` to re-check truncation on container resize; single-line uses `scrollWidth`, multi-line uses `scrollHeight`.
|
|
11
|
+
|
|
12
|
+
## Usage Example
|
|
13
|
+
|
|
14
|
+
```typescript
|
|
15
|
+
// Single-line truncation (default h4 / primary)
|
|
16
|
+
<TruncateText>{deviceName}</TruncateText>
|
|
17
|
+
|
|
18
|
+
// Secondary caption style with custom tooltip side
|
|
19
|
+
<TruncateText variant="h6" tone="secondary" side="bottom">
|
|
20
|
+
{email}
|
|
21
|
+
</TruncateText>
|
|
22
|
+
|
|
23
|
+
// Multi-line clamp with custom tooltip content
|
|
24
|
+
<TruncateText lines={3} tooltip={<span>Full description here</span>}>
|
|
25
|
+
{longDescription}
|
|
26
|
+
</TruncateText>
|
|
27
|
+
|
|
28
|
+
// Monospace heading font, forced secondary tone
|
|
29
|
+
<TruncateText variant="h5" tone="secondary" mono>
|
|
30
|
+
{ticketId}
|
|
31
|
+
</TruncateText>
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Behaviour Notes
|
|
35
|
+
|
|
36
|
+
- Tooltip is **disabled** until actual overflow occurs — no tooltip shown for short strings.
|
|
37
|
+
- `lines={1}` applies Tailwind `truncate` (single-line ellipsis); `lines={2–6}` applies `line-clamp-N`.
|
|
38
|
+
- `tooltip` prop defaults to `children` when omitted.
|
|
39
|
+
- The `mono` prop swaps the font family to `--font-family-heading` while preserving the variant's size scale.
|