@flamingo-stack/openframe-frontend-core 0.0.438 → 0.0.439-snapshot.20260717095442
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-RVWC4P3H.js → chunk-2BTDPDME.js} +9 -9
- package/dist/chunk-2BTDPDME.js.map +1 -0
- package/dist/{chunk-5D5SJOLE.js → chunk-63TSTDME.js} +21 -21
- package/dist/chunk-63TSTDME.js.map +1 -0
- package/dist/{chunk-4ACSUJ7Q.js → chunk-6CITW5BD.js} +10 -10
- package/dist/chunk-6CITW5BD.js.map +1 -0
- package/dist/{chunk-QXYOGJQJ.js → chunk-7KDR5P23.js} +2 -2
- package/dist/{chunk-ZEY7A3MP.js → chunk-7KNOHGMI.js} +2 -2
- package/dist/{chunk-PCMDRDYX.cjs → chunk-7QP65IE4.cjs} +5 -5
- package/dist/{chunk-PCMDRDYX.cjs.map → chunk-7QP65IE4.cjs.map} +1 -1
- package/dist/{chunk-XFSDFO6U.js → chunk-AGV26PUR.js} +6 -6
- package/dist/{chunk-XFSDFO6U.js.map → chunk-AGV26PUR.js.map} +1 -1
- package/dist/{chunk-2DCP2TIF.cjs → chunk-DUQQEQ7G.cjs} +2892 -2579
- package/dist/chunk-DUQQEQ7G.cjs.map +1 -0
- package/dist/{chunk-W2PRXXUD.js → chunk-FPE3SQ5D.js} +13 -13
- package/dist/chunk-FPE3SQ5D.js.map +1 -0
- package/dist/{chunk-POFDZH2C.js → chunk-IAZ5AN2E.js} +30 -30
- package/dist/chunk-IAZ5AN2E.js.map +1 -0
- package/dist/{chunk-H2TQ44VD.cjs → chunk-IPEIOR77.cjs} +130 -130
- package/dist/chunk-IPEIOR77.cjs.map +1 -0
- package/dist/{chunk-6R5SZPAQ.cjs → chunk-IZ6A6K6N.cjs} +25 -25
- package/dist/chunk-IZ6A6K6N.cjs.map +1 -0
- package/dist/{chunk-EE5NH5SH.cjs → chunk-J5NO7PAG.cjs} +3 -3
- package/dist/{chunk-EE5NH5SH.cjs.map → chunk-J5NO7PAG.cjs.map} +1 -1
- package/dist/{chunk-WF7VGEYR.cjs → chunk-JNC4LVD6.cjs} +42 -42
- package/dist/chunk-JNC4LVD6.cjs.map +1 -0
- package/dist/{chunk-CMP56RUC.cjs → chunk-JOH5D76X.cjs} +108 -108
- package/dist/chunk-JOH5D76X.cjs.map +1 -0
- package/dist/{chunk-KBFQF4AV.js → chunk-JYI4R25Q.js} +5 -5
- package/dist/chunk-JYI4R25Q.js.map +1 -0
- package/dist/{chunk-YKP2F2NC.cjs → chunk-KUXGQ2FQ.cjs} +36 -36
- package/dist/chunk-KUXGQ2FQ.cjs.map +1 -0
- package/dist/{chunk-SYTL2VIU.cjs → chunk-LFWPWIAC.cjs} +16 -16
- package/dist/{chunk-SYTL2VIU.cjs.map → chunk-LFWPWIAC.cjs.map} +1 -1
- package/dist/{chunk-DTYPYYKD.cjs → chunk-LUKRPHEW.cjs} +96 -96
- package/dist/chunk-LUKRPHEW.cjs.map +1 -0
- package/dist/{chunk-IMK6RUEC.cjs → chunk-PYR4LVAF.cjs} +10 -10
- package/dist/chunk-PYR4LVAF.cjs.map +1 -0
- package/dist/{chunk-LR6A67KZ.js → chunk-QAG357PE.js} +7 -7
- package/dist/chunk-QAG357PE.js.map +1 -0
- package/dist/{chunk-N2TJ3HAM.cjs → chunk-QO6MCQYE.cjs} +9 -9
- package/dist/chunk-QO6MCQYE.cjs.map +1 -0
- package/dist/{chunk-RTHOCS3S.js → chunk-SM26C2L7.js} +9 -9
- package/dist/chunk-SM26C2L7.js.map +1 -0
- package/dist/{chunk-B5SGPIJ4.cjs → chunk-TAQMYVO6.cjs} +42 -42
- package/dist/{chunk-B5SGPIJ4.cjs.map → chunk-TAQMYVO6.cjs.map} +1 -1
- package/dist/{chunk-X66KRL5G.cjs → chunk-UFBUQO7Z.cjs} +19 -19
- package/dist/{chunk-X66KRL5G.cjs.map → chunk-UFBUQO7Z.cjs.map} +1 -1
- package/dist/{chunk-D5RTZ2WN.js → chunk-W3JZXLJ2.js} +10 -10
- package/dist/chunk-W3JZXLJ2.js.map +1 -0
- package/dist/{chunk-VYG2CJFJ.cjs → chunk-XMCVUYKC.cjs} +14 -14
- package/dist/chunk-XMCVUYKC.cjs.map +1 -0
- package/dist/{chunk-A25RPWYF.js → chunk-Y3NFB6HR.js} +5 -5
- package/dist/chunk-Y3NFB6HR.js.map +1 -0
- package/dist/{chunk-44HNH57W.js → chunk-YZJUHEPZ.js} +95 -95
- package/dist/chunk-YZJUHEPZ.js.map +1 -0
- package/dist/{chunk-6ETVJ5ON.js → chunk-ZQYFDYWV.js} +6726 -6413
- package/dist/chunk-ZQYFDYWV.js.map +1 -0
- package/dist/components/case-studies/index.cjs +15 -15
- package/dist/components/case-studies/index.cjs.map +1 -1
- package/dist/components/case-studies/index.js +9 -9
- package/dist/components/case-studies/index.js.map +1 -1
- package/dist/components/chat/approval-request-message.d.ts.map +1 -1
- package/dist/components/chat/chat-archive-page.d.ts +28 -8
- package/dist/components/chat/chat-archive-page.d.ts.map +1 -1
- package/dist/components/chat/chat-header-icon-button.d.ts +6 -2
- package/dist/components/chat/chat-header-icon-button.d.ts.map +1 -1
- package/dist/components/chat/chat-header-search-field.d.ts +25 -0
- package/dist/components/chat/chat-header-search-field.d.ts.map +1 -0
- package/dist/components/chat/chat-list-empty-state.d.ts +20 -0
- package/dist/components/chat/chat-list-empty-state.d.ts.map +1 -0
- package/dist/components/chat/chat-panel-header.d.ts +19 -9
- package/dist/components/chat/chat-panel-header.d.ts.map +1 -1
- package/dist/components/chat/embeddable-chat.d.ts +15 -6
- package/dist/components/chat/embeddable-chat.d.ts.map +1 -1
- package/dist/components/chat/entity-cards/blog-card.d.ts.map +1 -1
- package/dist/components/chat/hooks/use-chat-dialog-manager.d.ts +2 -0
- package/dist/components/chat/hooks/use-chat-dialog-manager.d.ts.map +1 -1
- package/dist/components/chat/index.cjs +6 -4
- package/dist/components/chat/index.cjs.map +1 -1
- package/dist/components/chat/index.d.ts +2 -0
- package/dist/components/chat/index.d.ts.map +1 -1
- package/dist/components/chat/index.js +7 -5
- package/dist/components/chat/mingo-chat-history.d.ts +5 -10
- package/dist/components/chat/mingo-chat-history.d.ts.map +1 -1
- package/dist/components/chat/mingo-history-rail.d.ts +54 -0
- package/dist/components/chat/mingo-history-rail.d.ts.map +1 -0
- package/dist/components/chat/mingo-welcome.d.ts +6 -25
- package/dist/components/chat/mingo-welcome.d.ts.map +1 -1
- package/dist/components/chat/tool-call-blocks.d.ts.map +1 -1
- package/dist/components/chat/utils/compact-card-classes.d.ts +3 -3
- package/dist/components/chat/utils/compact-card-classes.d.ts.map +1 -1
- package/dist/components/contact/index.cjs +5 -5
- package/dist/components/contact/index.js +4 -4
- package/dist/components/docs/index.cjs +7 -7
- package/dist/components/docs/index.js +6 -6
- package/dist/components/embeds/index.cjs +5 -5
- package/dist/components/embeds/index.js +4 -4
- package/dist/components/faq/index.cjs +6 -6
- package/dist/components/faq/index.js +5 -5
- package/dist/components/features/index.cjs +4 -4
- package/dist/components/features/index.js +3 -3
- package/dist/components/help-center-pages/index.cjs +23 -23
- package/dist/components/help-center-pages/index.js +14 -14
- package/dist/components/index.cjs +263 -255
- package/dist/components/index.cjs.map +1 -1
- package/dist/components/index.js +121 -113
- package/dist/components/index.js.map +1 -1
- package/dist/components/msp-display.d.ts.map +1 -1
- package/dist/components/navigation/index.cjs +4 -4
- package/dist/components/navigation/index.js +3 -3
- package/dist/components/navigation/sticky-section-nav.d.ts.map +1 -1
- package/dist/components/onboarding-guides/index.cjs +8 -8
- package/dist/components/onboarding-guides/index.js +7 -7
- package/dist/components/pricing-display.d.ts +9 -9
- package/dist/components/related-content/index.cjs +6 -6
- package/dist/components/related-content/index.js +5 -5
- package/dist/components/tickets/index.cjs +7 -7
- package/dist/components/tickets/index.js +6 -6
- package/dist/components/toast/index.cjs +5 -5
- package/dist/components/toast/index.cjs.map +1 -1
- package/dist/components/toast/index.js +5 -5
- package/dist/components/toast/index.js.map +1 -1
- package/dist/components/ui/bullet-list.d.ts.map +1 -1
- package/dist/components/ui/drawer.d.ts +1 -1
- package/dist/components/ui/drawer.d.ts.map +1 -1
- package/dist/components/ui/file-manager/index.cjs +73 -73
- package/dist/components/ui/file-manager/index.cjs.map +1 -1
- package/dist/components/ui/file-manager/index.js +24 -24
- package/dist/components/ui/file-manager/index.js.map +1 -1
- package/dist/components/ui/index.cjs +6 -4
- package/dist/components/ui/index.cjs.map +1 -1
- package/dist/components/ui/index.js +7 -5
- package/dist/components/ui/markdown-editor.d.ts.map +1 -1
- package/dist/components/ui/square-avatar.d.ts +3 -0
- package/dist/components/ui/square-avatar.d.ts.map +1 -1
- package/dist/components/user-display.d.ts.map +1 -1
- package/dist/components/vendor-tag.d.ts.map +1 -1
- package/dist/hooks/index.cjs +2 -2
- package/dist/hooks/index.js +1 -1
- package/dist/index.cjs +6 -4
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +7 -5
- package/dist/tailwind.config.cjs +38 -5
- package/dist/tailwind.config.cjs.map +1 -1
- package/dist/tailwind.config.js +38 -5
- package/dist/tailwind.config.js.map +1 -1
- package/package.json +1 -1
- package/src/ODS_TOKEN_RULES.md +5 -0
- package/src/components/.footer.md +2 -2
- package/src/components/announcement-bar.tsx +1 -1
- package/src/components/authors/author-detail-view.tsx +3 -3
- package/src/components/calendar.tsx +2 -2
- package/src/components/case-studies/share-experience-section.tsx +5 -5
- package/src/components/categories-cart.tsx +6 -6
- package/src/components/category-card.tsx +5 -5
- package/src/components/chart.tsx +3 -3
- package/src/components/chat/approval-request-message.tsx +2 -5
- package/src/components/chat/chat-archive-page.tsx +89 -73
- package/src/components/chat/chat-attachment-bar.tsx +3 -3
- package/src/components/chat/chat-header-icon-button.tsx +12 -5
- package/src/components/chat/chat-header-search-field.tsx +144 -0
- package/src/components/chat/chat-list-empty-state.tsx +44 -0
- package/src/components/chat/chat-message-enhanced.tsx +1 -1
- package/src/components/chat/chat-message-list.tsx +1 -1
- package/src/components/chat/chat-message-row.tsx +3 -3
- package/src/components/chat/chat-panel-header.tsx +76 -29
- package/src/components/chat/chat-quick-action.tsx +1 -1
- package/src/components/chat/chat-sidebar-skeleton.tsx +1 -1
- package/src/components/chat/chat-sidebar.tsx +6 -6
- package/src/components/chat/chat-typing-indicator.tsx +1 -1
- package/src/components/chat/context-compaction-display.tsx +1 -1
- package/src/components/chat/embeddable-chat.tsx +551 -128
- package/src/components/chat/entity-cards/admin-content-card.tsx +5 -5
- package/src/components/chat/entity-cards/blog-card.tsx +5 -8
- package/src/components/chat/entity-cards/case-study-card.tsx +5 -5
- package/src/components/chat/entity-cards/chat-ticket-item.tsx +1 -1
- package/src/components/chat/entity-cards/customer-interview-card.tsx +9 -9
- package/src/components/chat/entity-cards/data-room-doc-card.tsx +2 -2
- package/src/components/chat/entity-cards/dispatch.tsx +1 -1
- package/src/components/chat/entity-cards/entity-author-card.tsx +3 -3
- package/src/components/chat/entity-cards/entity-portrait-card.tsx +4 -4
- package/src/components/chat/entity-cards/generic-entity-card.tsx +3 -3
- package/src/components/chat/entity-cards/github-activity-card.tsx +11 -11
- package/src/components/chat/entity-cards/hubspot-ticket-card.tsx +5 -5
- package/src/components/chat/entity-cards/investor-update-card.tsx +1 -1
- package/src/components/chat/entity-cards/onboarding-guide-card.tsx +12 -12
- package/src/components/chat/entity-cards/program-card.tsx +12 -12
- package/src/components/chat/entity-cards/roadmap-card.tsx +6 -6
- package/src/components/chat/entity-cards/roadmap-vote-button.tsx +1 -1
- package/src/components/chat/entity-cards/slack-message-card.tsx +4 -4
- package/src/components/chat/error-message-display.tsx +2 -2
- package/src/components/chat/guide-welcome.tsx +4 -4
- package/src/components/chat/hooks/use-chat-dialog-manager.ts +59 -5
- package/src/components/chat/index.ts +2 -0
- package/src/components/chat/mingo-chat-history.tsx +46 -100
- package/src/components/chat/mingo-history-rail.tsx +161 -0
- package/src/components/chat/mingo-info-card.tsx +2 -2
- package/src/components/chat/mingo-welcome.tsx +17 -98
- package/src/components/chat/model-display.tsx +7 -7
- package/src/components/chat/quick-action-chip.tsx +1 -1
- package/src/components/chat/source-action-button.tsx +2 -2
- package/src/components/chat/tool-call-blocks.tsx +3 -5
- package/src/components/chat/utils/.chip-action-class.md +1 -1
- package/src/components/chat/utils/.chip-styles.md +2 -2
- package/src/components/chat/utils/chip-action-class.ts +1 -1
- package/src/components/chat/utils/chip-styles.ts +2 -2
- package/src/components/chat/utils/compact-card-classes.ts +3 -3
- package/src/components/command.tsx +3 -3
- package/src/components/comment-card.tsx +1 -1
- package/src/components/contact/contact-form.tsx +9 -9
- package/src/components/context-menu.tsx +5 -5
- package/src/components/date-time-picker.tsx +2 -2
- package/src/components/docs/doc-viewer.tsx +4 -4
- package/src/components/embeds/figma-embed.tsx +2 -2
- package/src/components/embeds/file-download-card.tsx +2 -2
- package/src/components/embeds/google-sheets-viewer.tsx +1 -1
- package/src/components/embeds/linkedin-embed-client.tsx +3 -3
- package/src/components/embeds/og-link-preview.tsx +14 -14
- package/src/components/embeds/pdf-viewer.tsx +1 -1
- package/src/components/embeds/reddit-embed-client.tsx +9 -9
- package/src/components/embeds/twitter-embed-client.tsx +9 -9
- package/src/components/empty-state.tsx +5 -5
- package/src/components/faq/faq-section.tsx +1 -1
- package/src/components/features/ai-enrich/AIEnrichSection.tsx +14 -14
- package/src/components/features/ai-enrich/AIRequiredBadge.tsx +5 -5
- package/src/components/features/ai-enrich/AIStatusIndicator.tsx +8 -8
- package/src/components/features/ai-enrich/AIWarningsSection.tsx +4 -4
- package/src/components/features/ai-enrich/ConfidenceBadge.tsx +4 -4
- package/src/components/features/array-entry-manager.tsx +7 -7
- package/src/components/features/auth-providers-list.tsx +1 -1
- package/src/components/features/board/ticket-card.tsx +1 -1
- package/src/components/features/changelog-manager.tsx +10 -10
- package/src/components/features/command-box.tsx +2 -2
- package/src/components/features/entity-summary-editor.tsx +3 -3
- package/src/components/features/figma-prototype-viewer.tsx +9 -9
- package/src/components/features/filters-dropdown.tsx +2 -2
- package/src/components/features/highlight-config-section.tsx +3 -3
- package/src/components/features/highlight-video-combined-section.tsx +2 -2
- package/src/components/features/highlight-video-preview.tsx +2 -2
- package/src/components/features/highlight-video-section.tsx +9 -9
- package/src/components/features/media-gallery-manager.tsx +14 -14
- package/src/components/features/og-editor-preview.tsx +4 -4
- package/src/components/features/os-type-badge-group.tsx +1 -1
- package/src/components/features/os-type-badge.tsx +2 -2
- package/src/components/features/platform-badge.tsx +4 -4
- package/src/components/features/policy-configuration-panel.tsx +6 -6
- package/src/components/features/provider-button.tsx +1 -1
- package/src/components/features/push-button-selector.tsx +21 -21
- package/src/components/features/release-media-manager.tsx +16 -16
- package/src/components/features/section-selector.tsx +8 -8
- package/src/components/features/select-button.tsx +4 -4
- package/src/components/features/seo-editor-preview.tsx +20 -20
- package/src/components/features/social-links-manager.tsx +3 -3
- package/src/components/features/start-with-openframe-button.tsx +3 -3
- package/src/components/features/status-filter-component.tsx +1 -1
- package/src/components/features/tags-selector.tsx +6 -6
- package/src/components/features/transcript-summary-editor.tsx +9 -9
- package/src/components/features/video-bites-strip.tsx +1 -1
- package/src/components/features/video-ratio-tabs.tsx +1 -1
- package/src/components/features/video-source-selector.tsx +7 -7
- package/src/components/features/video.tsx +1 -1
- package/src/components/features/waitlist-form.tsx +3 -3
- package/src/components/filter-chip.tsx +13 -13
- package/src/components/footer.tsx +3 -3
- package/src/components/form.tsx +2 -2
- package/src/components/hero-image-uploader.tsx +3 -3
- package/src/components/image-cropper.tsx +2 -2
- package/src/components/layout/page-container.tsx +6 -6
- package/src/components/layout/page-heading.tsx +1 -1
- package/src/components/loading/card-skeleton.tsx +2 -2
- package/src/components/loading/category-card-skeleton.tsx +1 -1
- package/src/components/loading/margin-report-skeleton.tsx +22 -22
- package/src/components/loading/openmsp-heartbeat.tsx +1 -1
- package/src/components/loading/page-layout-skeleton.tsx +83 -83
- package/src/components/loading/unified-skeleton.tsx +1 -1
- package/src/components/loading/users-grid-skeleton.tsx +2 -2
- package/src/components/logs-list.tsx +8 -8
- package/src/components/media-carousel.tsx +7 -7
- package/src/components/metric-value.tsx +2 -2
- package/src/components/msp-display.tsx +8 -2
- package/src/components/navigation/app-header.tsx +6 -6
- package/src/components/navigation/header-organization-filter.tsx +2 -2
- package/src/components/navigation/header.tsx +4 -4
- package/src/components/navigation/mobile-burger-menu.tsx +7 -7
- package/src/components/navigation/mobile-nav-panel.tsx +1 -1
- package/src/components/navigation/multi-level-navigation.tsx +7 -7
- package/src/components/navigation/navigation-sidebar.tsx +1 -1
- package/src/components/navigation/sticky-section-nav.tsx +2 -2
- package/src/components/onboarding-guides/onboarding-guides-catalog-view.tsx +4 -4
- package/src/components/pagination.tsx +2 -2
- package/src/components/persistent-filter-controls.tsx +1 -1
- package/src/components/platform/.ShellTypeBadge.md +1 -1
- package/src/components/platform/CveLink.tsx +1 -1
- package/src/components/platform/ScriptArguments.tsx +2 -2
- package/src/components/platform/ScriptInfoSection.tsx +5 -5
- package/src/components/platform/ShellTypeBadge.tsx +6 -6
- package/src/components/platform/SoftwareInfo.tsx +2 -2
- package/src/components/pricing-display.tsx +9 -9
- package/src/components/profile/ProfileLoadingSkeleton.tsx +6 -6
- package/src/components/related-content/related-content-section.tsx +3 -3
- package/src/components/results-count.tsx +1 -1
- package/src/components/shared/delivery/delivery-row.tsx +1 -1
- package/src/components/shared/delivery/delivery-table.tsx +1 -1
- package/src/components/shared/dev-section/dev-section-view.tsx +1 -1
- package/src/components/shared/doc-search/doc-search-result-row.tsx +2 -2
- package/src/components/shared/legal-document/legal-document-page.tsx +5 -5
- package/src/components/shared/onboarding/onboarding-step-card.tsx +1 -1
- package/src/components/shared/product-release/product-release-card-skeleton.tsx +3 -3
- package/src/components/shared/product-release/product-release-card.tsx +14 -14
- package/src/components/shared/product-release/release-detail-page.tsx +16 -16
- package/src/components/shared/roadmap/roadmap-grid.tsx +2 -2
- package/src/components/smooth-accordion.tsx +1 -1
- package/src/components/social-icon-row.tsx +1 -1
- package/src/components/sonner.tsx +5 -5
- package/src/components/steps.tsx +3 -3
- package/src/components/tickets/help-center-create-form.tsx +1 -1
- package/src/components/tickets/help-center-list.tsx +1 -1
- package/src/components/tickets/ticket-center.tsx +2 -2
- package/src/components/tickets/ticket-detail-drawer.tsx +5 -5
- package/src/components/tickets/ticket-open-form.tsx +6 -6
- package/src/components/ui/.title-content-block.md +1 -1
- package/src/components/ui/accordion.tsx +2 -2
- package/src/components/ui/actions-menu.tsx +1 -1
- package/src/components/ui/alert-dialog.tsx +3 -3
- package/src/components/ui/alert.tsx +2 -2
- package/src/components/ui/allowed-domains-input.tsx +3 -3
- package/src/components/ui/autocomplete.tsx +3 -3
- package/src/components/ui/badge.tsx +2 -2
- package/src/components/ui/brand-association-card.tsx +2 -2
- package/src/components/ui/breadcrumb.tsx +3 -3
- package/src/components/ui/bullet-list.tsx +2 -2
- package/src/components/ui/button/button.tsx +1 -1
- package/src/components/ui/card.tsx +4 -4
- package/src/components/ui/checkbox-with-description.tsx +1 -1
- package/src/components/ui/chevron-button.tsx +1 -1
- package/src/components/ui/content-loader.tsx +16 -16
- package/src/components/ui/cursor-pagination.tsx +1 -1
- package/src/components/ui/date-picker.tsx +2 -2
- package/src/components/ui/device-card-compact.tsx +2 -2
- package/src/components/ui/device-card.tsx +3 -3
- package/src/components/ui/dialog.tsx +3 -3
- package/src/components/ui/drawer.tsx +4 -4
- package/src/components/ui/dropdown-menu.tsx +6 -6
- package/src/components/ui/error-state.tsx +9 -9
- package/src/components/ui/fade-preview.tsx +1 -1
- package/src/components/ui/field-wrapper.tsx +1 -1
- package/src/components/ui/file-manager/file-manager-breadcrumb.tsx +2 -2
- package/src/components/ui/file-manager/file-manager-empty.tsx +3 -3
- package/src/components/ui/file-manager/file-manager-skeleton.tsx +4 -4
- package/src/components/ui/file-manager/file-manager-table-row.tsx +7 -7
- package/src/components/ui/file-manager/file-manager-table.tsx +8 -8
- package/src/components/ui/file-upload.tsx +9 -9
- package/src/components/ui/filter-pill-row.tsx +1 -1
- package/src/components/ui/floating-tooltip.tsx +1 -1
- package/src/components/ui/highlight-card.tsx +1 -1
- package/src/components/ui/hover-dropdown.tsx +1 -1
- package/src/components/ui/image-gallery-modal.tsx +1 -1
- package/src/components/ui/info-row.tsx +1 -1
- package/src/components/ui/input.tsx +1 -1
- package/src/components/ui/label.tsx +5 -5
- package/src/components/ui/markdown-editor.tsx +4 -5
- package/src/components/ui/menubar.tsx +7 -7
- package/src/components/ui/modal-v2.tsx +1 -1
- package/src/components/ui/modal.tsx +1 -1
- package/src/components/ui/more-actions-menu.tsx +1 -1
- package/src/components/ui/navigation-menu.tsx +1 -1
- package/src/components/ui/organization-card.tsx +8 -8
- package/src/components/ui/page-loader.tsx +6 -6
- package/src/components/ui/phone-input.tsx +1 -1
- package/src/components/ui/progress-bar.tsx +5 -5
- package/src/components/ui/query-report-table/.query-report-table-header.md +1 -1
- package/src/components/ui/query-report-table/query-report-table-header.tsx +1 -1
- package/src/components/ui/query-report-table/query-report-table-row.tsx +2 -2
- package/src/components/ui/query-report-table/query-report-table.tsx +1 -1
- package/src/components/ui/release-changelog-section.tsx +2 -2
- package/src/components/ui/rich-markdown-renderer.tsx +6 -6
- package/src/components/ui/search-input.tsx +7 -7
- package/src/components/ui/select.tsx +1 -1
- package/src/components/ui/service-card.tsx +4 -4
- package/src/components/ui/sheet.tsx +3 -3
- package/src/components/ui/simple-markdown-renderer.tsx +4 -4
- package/src/components/ui/square-avatar.tsx +9 -5
- package/src/components/ui/status-badge.tsx +11 -11
- package/src/components/ui/status-indicator.tsx +6 -6
- package/src/components/ui/tab-content.tsx +1 -1
- package/src/components/ui/tab-navigation.tsx +2 -2
- package/src/components/ui/table/table-column-filter-dropdown.tsx +1 -1
- package/src/components/ui/table/table-description-cell.tsx +1 -1
- package/src/components/ui/table/table-timestamp-cell.tsx +1 -1
- package/src/components/ui/table/table.tsx +2 -2
- package/src/components/ui/tabs.tsx +1 -1
- package/src/components/ui/tag-search-input.tsx +1 -1
- package/src/components/ui/tag.tsx +23 -23
- package/src/components/ui/tags-input.tsx +2 -2
- package/src/components/ui/ticket-status-tag.tsx +1 -1
- package/src/components/ui/toaster.tsx +8 -8
- package/src/components/ui/toggle.tsx +1 -1
- package/src/components/ui/tooltip.tsx +1 -1
- package/src/components/user-display.tsx +12 -6
- package/src/components/user-summary-stub.tsx +4 -4
- package/src/components/vendor-display-button.tsx +2 -2
- package/src/components/vendor-icon.tsx +1 -1
- package/src/components/vendor-tag.tsx +9 -10
- package/src/components/yes-no-display.tsx +3 -3
- package/src/stories/MingoWelcome.stories.tsx +2 -11
- package/src/styles/ods-colors.css +2 -0
- package/tailwind.config.ts +49 -4
- package/dist/chunk-2DCP2TIF.cjs.map +0 -1
- package/dist/chunk-44HNH57W.js.map +0 -1
- package/dist/chunk-4ACSUJ7Q.js.map +0 -1
- package/dist/chunk-5D5SJOLE.js.map +0 -1
- package/dist/chunk-6ETVJ5ON.js.map +0 -1
- package/dist/chunk-6R5SZPAQ.cjs.map +0 -1
- package/dist/chunk-A25RPWYF.js.map +0 -1
- package/dist/chunk-CMP56RUC.cjs.map +0 -1
- package/dist/chunk-D5RTZ2WN.js.map +0 -1
- package/dist/chunk-DTYPYYKD.cjs.map +0 -1
- package/dist/chunk-H2TQ44VD.cjs.map +0 -1
- package/dist/chunk-IMK6RUEC.cjs.map +0 -1
- package/dist/chunk-KBFQF4AV.js.map +0 -1
- package/dist/chunk-LR6A67KZ.js.map +0 -1
- package/dist/chunk-N2TJ3HAM.cjs.map +0 -1
- package/dist/chunk-POFDZH2C.js.map +0 -1
- package/dist/chunk-RTHOCS3S.js.map +0 -1
- package/dist/chunk-RVWC4P3H.js.map +0 -1
- package/dist/chunk-VYG2CJFJ.cjs.map +0 -1
- package/dist/chunk-W2PRXXUD.js.map +0 -1
- package/dist/chunk-WF7VGEYR.cjs.map +0 -1
- package/dist/chunk-YKP2F2NC.cjs.map +0 -1
- package/dist/components/accordion.d.ts +0 -8
- package/dist/components/accordion.d.ts.map +0 -1
- package/dist/components/alert-dialog.d.ts +0 -21
- package/dist/components/alert-dialog.d.ts.map +0 -1
- package/dist/components/alert.d.ts +0 -9
- package/dist/components/alert.d.ts.map +0 -1
- package/dist/components/badge.d.ts +0 -10
- package/dist/components/badge.d.ts.map +0 -1
- package/dist/components/breadcrumb.d.ts +0 -20
- package/dist/components/breadcrumb.d.ts.map +0 -1
- package/dist/components/chevron-button.d.ts +0 -14
- package/dist/components/chevron-button.d.ts.map +0 -1
- package/dist/components/dialog.d.ts +0 -29
- package/dist/components/dialog.d.ts.map +0 -1
- package/dist/components/dropdown-menu.d.ts +0 -28
- package/dist/components/dropdown-menu.d.ts.map +0 -1
- package/dist/components/input.d.ts +0 -8
- package/dist/components/input.d.ts.map +0 -1
- package/dist/components/label.d.ts +0 -6
- package/dist/components/label.d.ts.map +0 -1
- package/dist/components/menubar.d.ts +0 -34
- package/dist/components/menubar.d.ts.map +0 -1
- package/dist/components/navigation-menu.d.ts +0 -13
- package/dist/components/navigation-menu.d.ts.map +0 -1
- package/dist/components/select.d.ts +0 -14
- package/dist/components/select.d.ts.map +0 -1
- package/dist/components/sidebar.d.ts +0 -67
- package/dist/components/sidebar.d.ts.map +0 -1
- package/dist/components/square-avatar.d.ts +0 -21
- package/dist/components/square-avatar.d.ts.map +0 -1
- package/dist/components/table.d.ts +0 -11
- package/dist/components/table.d.ts.map +0 -1
- package/dist/components/tabs.d.ts +0 -18
- package/dist/components/tabs.d.ts.map +0 -1
- package/dist/components/toggle.d.ts +0 -13
- package/dist/components/toggle.d.ts.map +0 -1
- package/src/components/.accordion.md +0 -42
- package/src/components/.alert-dialog.md +0 -58
- package/src/components/.alert.md +0 -43
- package/src/components/.badge.md +0 -40
- package/src/components/.breadcrumb.md +0 -54
- package/src/components/.chevron-button.md +0 -46
- package/src/components/.dialog.md +0 -60
- package/src/components/.dropdown-menu.md +0 -51
- package/src/components/.input.md +0 -40
- package/src/components/.label.md +0 -41
- package/src/components/.menubar.md +0 -49
- package/src/components/.navigation-menu.md +0 -44
- package/src/components/.select.md +0 -54
- package/src/components/.sidebar.md +0 -58
- package/src/components/.square-avatar.md +0 -42
- package/src/components/.table.md +0 -51
- package/src/components/.tabs.md +0 -38
- package/src/components/.toggle.md +0 -49
- package/src/components/accordion.tsx +0 -56
- package/src/components/alert-dialog.tsx +0 -141
- package/src/components/alert.tsx +0 -59
- package/src/components/badge.tsx +0 -30
- package/src/components/breadcrumb.tsx +0 -115
- package/src/components/chevron-button.tsx +0 -68
- package/src/components/dialog.tsx +0 -150
- package/src/components/dropdown-menu.tsx +0 -200
- package/src/components/input.tsx +0 -39
- package/src/components/label.tsx +0 -19
- package/src/components/menubar.tsx +0 -236
- package/src/components/navigation-menu.tsx +0 -128
- package/src/components/select.tsx +0 -160
- package/src/components/sidebar.tsx +0 -764
- package/src/components/square-avatar.tsx +0 -61
- package/src/components/table.tsx +0 -72
- package/src/components/tabs.tsx +0 -65
- package/src/components/toggle.tsx +0 -45
- /package/dist/{chunk-QXYOGJQJ.js.map → chunk-7KDR5P23.js.map} +0 -0
- /package/dist/{chunk-ZEY7A3MP.js.map → chunk-7KNOHGMI.js.map} +0 -0
|
@@ -96,7 +96,7 @@ function CardMedia({
|
|
|
96
96
|
picture and its 1px frame share one radius (no corner gap from
|
|
97
97
|
clipping a separate absolutely-positioned child). On a 404 the
|
|
98
98
|
image's `onError` hides it and the initials show through. */}
|
|
99
|
-
<span className="absolute inset-0 flex items-center justify-center rounded-sm border border-ods-border bg-ods-bg text-
|
|
99
|
+
<span className="absolute inset-0 flex items-center justify-center rounded-sm border border-ods-border bg-ods-bg text-h6 text-ods-text-primary">
|
|
100
100
|
{getFirstLastInitials(imageAlt) || '?'}
|
|
101
101
|
</span>
|
|
102
102
|
<img
|
|
@@ -146,7 +146,7 @@ export function MingoInfoCard({
|
|
|
146
146
|
<CardMedia imageSrc={imageSrc} imageAlt={imageAlt} icon={icon} />
|
|
147
147
|
)}
|
|
148
148
|
<span className="flex min-w-0 flex-1 flex-col justify-center">
|
|
149
|
-
<span className="truncate text-h4
|
|
149
|
+
<span className="truncate text-h4 text-ods-text-primary">
|
|
150
150
|
{title}
|
|
151
151
|
</span>
|
|
152
152
|
{description ? (
|
|
@@ -10,10 +10,6 @@ import { Button } from '../ui/button'
|
|
|
10
10
|
import { ScrollFadeOverlay, useScrollFade } from '../ui/scroll-fade'
|
|
11
11
|
import { XmarkIcon } from '../icons-v2-generated/signs-and-symbols/xmark-icon'
|
|
12
12
|
import {
|
|
13
|
-
Rocket01Icon,
|
|
14
|
-
BracketCurlyIcon,
|
|
15
|
-
SearchIcon,
|
|
16
|
-
LayersIcon,
|
|
17
13
|
CompassIcon,
|
|
18
14
|
Arrow01DownIcon,
|
|
19
15
|
AlertCircleIcon,
|
|
@@ -24,17 +20,6 @@ import {
|
|
|
24
20
|
// Types
|
|
25
21
|
// =============================================================================
|
|
26
22
|
|
|
27
|
-
/** A single capability cell in the 2-up feature grid. */
|
|
28
|
-
export interface MingoFeatureCard {
|
|
29
|
-
/** Stable React key. */
|
|
30
|
-
id: string
|
|
31
|
-
/** Leading 16×16 icon (monochrome `ods-text-secondary`). */
|
|
32
|
-
icon?: React.ReactNode
|
|
33
|
-
/** Caption text. Line breaks (`\n`) are honoured (`whitespace-pre-line`)
|
|
34
|
-
* so the two-line wrap stays fixed regardless of panel width. */
|
|
35
|
-
text: React.ReactNode
|
|
36
|
-
}
|
|
37
|
-
|
|
38
23
|
/** "New to OpenFrame?" one-time notification config. `null` hides the card. */
|
|
39
24
|
export interface MingoWelcomePromo {
|
|
40
25
|
title: React.ReactNode
|
|
@@ -57,14 +42,10 @@ export interface MingoQuickAction {
|
|
|
57
42
|
}
|
|
58
43
|
|
|
59
44
|
export interface MingoWelcomeProps {
|
|
60
|
-
/**
|
|
61
|
-
userName?: string
|
|
62
|
-
/** Greeting heading. Defaults to `Hey{, name}, I'm Mingo`. */
|
|
45
|
+
/** Greeting heading. Defaults to `Hey, I'm Mingo`. */
|
|
63
46
|
title?: React.ReactNode
|
|
64
47
|
/** Greeting sub-line under the heading. */
|
|
65
48
|
subtitle?: React.ReactNode
|
|
66
|
-
/** 2-up capability grid. Defaults to the four OpenFrame highlights. */
|
|
67
|
-
featureCards?: ReadonlyArray<MingoFeatureCard>
|
|
68
49
|
/** One-time "New to OpenFrame?" notification below the grid. `null` hides
|
|
69
50
|
* it; omitting falls back to the OpenFrame default (only rendered when
|
|
70
51
|
* `onStartGuideChat` is wired, i.e. Guide mode exists to advertise). */
|
|
@@ -102,10 +83,6 @@ export interface MingoWelcomeProps {
|
|
|
102
83
|
loadError?: boolean
|
|
103
84
|
/** Retry handler for the `loadError` state. */
|
|
104
85
|
onRetry?: () => void
|
|
105
|
-
/** Whether the dialog history has a search bar — when true, the loading
|
|
106
|
-
* skeleton includes a search-bar placeholder so it matches the loaded
|
|
107
|
-
* layout. Ignored once `dialogHistory` is provided. */
|
|
108
|
-
historySearchable?: boolean
|
|
109
86
|
/** When provided, renders the "Start Guide Chat" chip (the only wired
|
|
110
87
|
* action — switches the host chat to Guide mode) and enables the default
|
|
111
88
|
* promo notification. When omitted, both are suppressed. */
|
|
@@ -121,29 +98,6 @@ export interface MingoWelcomeProps {
|
|
|
121
98
|
const DEFAULT_SUBTITLE =
|
|
122
99
|
'Ready to help with your technical tasks. What can I do for you?'
|
|
123
100
|
|
|
124
|
-
const DEFAULT_FEATURE_CARDS: ReadonlyArray<MingoFeatureCard> = [
|
|
125
|
-
{
|
|
126
|
-
id: 'answers',
|
|
127
|
-
icon: <Rocket01Icon size={16} />,
|
|
128
|
-
text: 'Get instant answers about\ndevices, tickets, and clients',
|
|
129
|
-
},
|
|
130
|
-
{
|
|
131
|
-
id: 'scripts',
|
|
132
|
-
icon: <BracketCurlyIcon size={16} />,
|
|
133
|
-
text: 'Run scripts and queries\nthrough natural language',
|
|
134
|
-
},
|
|
135
|
-
{
|
|
136
|
-
id: 'summarize',
|
|
137
|
-
icon: <SearchIcon size={16} />,
|
|
138
|
-
text: 'Summarize long ticket\nthreads or activity history',
|
|
139
|
-
},
|
|
140
|
-
{
|
|
141
|
-
id: 'delegate',
|
|
142
|
-
icon: <LayersIcon size={16} />,
|
|
143
|
-
text: 'Delegate tasks, let Mingo\nwork in the background',
|
|
144
|
-
},
|
|
145
|
-
]
|
|
146
|
-
|
|
147
101
|
const DEFAULT_PROMO: MingoWelcomePromo = {
|
|
148
102
|
title: 'New to OpenFrame?',
|
|
149
103
|
description: 'Start a Guide Chat to learn how it works and how to set it up.',
|
|
@@ -156,13 +110,12 @@ const DEFAULT_PROMO_STORAGE_KEY = 'mingo-welcome:promo-dismissed'
|
|
|
156
110
|
// =============================================================================
|
|
157
111
|
|
|
158
112
|
/**
|
|
159
|
-
* MingoWelcome — Figma node `
|
|
113
|
+
* MingoWelcome — Figma node `113:69208`.
|
|
160
114
|
*
|
|
161
115
|
* Default (Mingo-mode) chat empty state: a vertically-centred greeting that
|
|
162
|
-
* grows to fill available height, then a pinned stack of
|
|
163
|
-
*
|
|
164
|
-
*
|
|
165
|
-
* onboarding list.
|
|
116
|
+
* grows to fill available height, then a pinned stack of an optional one-time
|
|
117
|
+
* "New to OpenFrame?" notification and a quick-action chip row. The Guide-mode
|
|
118
|
+
* empty state keeps the slash-command onboarding list.
|
|
166
119
|
*
|
|
167
120
|
* Content is configurable (props) with OpenFrame defaults so the kit stays
|
|
168
121
|
* platform-agnostic. The "Start Guide Chat" chip is the only wired action —
|
|
@@ -171,10 +124,8 @@ const DEFAULT_PROMO_STORAGE_KEY = 'mingo-welcome:promo-dismissed'
|
|
|
171
124
|
* storage so it shows only until the user closes it once.
|
|
172
125
|
*/
|
|
173
126
|
export function MingoWelcome({
|
|
174
|
-
userName,
|
|
175
127
|
title,
|
|
176
128
|
subtitle = DEFAULT_SUBTITLE,
|
|
177
|
-
featureCards = DEFAULT_FEATURE_CARDS,
|
|
178
129
|
promo,
|
|
179
130
|
promoStorageKey = DEFAULT_PROMO_STORAGE_KEY,
|
|
180
131
|
promoStorage = 'local',
|
|
@@ -186,12 +137,12 @@ export function MingoWelcome({
|
|
|
186
137
|
isLoadingHistory = false,
|
|
187
138
|
loadError = false,
|
|
188
139
|
onRetry,
|
|
189
|
-
historySearchable = false,
|
|
190
140
|
onStartGuideChat,
|
|
191
141
|
className,
|
|
192
142
|
}: MingoWelcomeProps) {
|
|
193
|
-
|
|
194
|
-
|
|
143
|
+
// Greeting never weaves the user's name in — always the plain "Hey, I'm
|
|
144
|
+
// Mingo" (design node 113:69208). A host `title` override still wins.
|
|
145
|
+
const heading = title ?? "Hey, I'm Mingo"
|
|
195
146
|
|
|
196
147
|
// `promo` omitted → fall back to the OpenFrame default, but only when guide
|
|
197
148
|
// mode exists to advertise (otherwise the notification points nowhere).
|
|
@@ -236,10 +187,6 @@ export function MingoWelcome({
|
|
|
236
187
|
// only while content is hidden in that direction).
|
|
237
188
|
const { scrollRef, fadeTop, fadeBottom, update: updateScrollFade } = useScrollFade<HTMLDivElement>()
|
|
238
189
|
|
|
239
|
-
const cellCount = featureCards.length
|
|
240
|
-
// Last row's first index — used to drop the bottom divider on the final row.
|
|
241
|
-
const lastRowStart = cellCount - ((cellCount % 2) || 2)
|
|
242
|
-
|
|
243
190
|
// While we don't yet know whether the user is new or returning (first page
|
|
244
191
|
// loading, or it errored with nothing cached), suppress the pinned region —
|
|
245
192
|
// the "New to OpenFrame?" promo + quick-action chips. Showing them over the
|
|
@@ -284,7 +231,7 @@ export function MingoWelcome({
|
|
|
284
231
|
)}
|
|
285
232
|
</div>
|
|
286
233
|
) : isLoadingHistory ? (
|
|
287
|
-
<MingoChatHistorySkeleton
|
|
234
|
+
<MingoChatHistorySkeleton />
|
|
288
235
|
) : (
|
|
289
236
|
<>
|
|
290
237
|
{/* Scrollable region — only the greeting + grid scroll; the notification
|
|
@@ -309,46 +256,18 @@ export function MingoWelcome({
|
|
|
309
256
|
eyesColor="var(--ods-flamingo-cyan-base)"
|
|
310
257
|
cornerColor="var(--ods-flamingo-cyan-base)"
|
|
311
258
|
/>
|
|
312
|
-
<div className="flex w-full flex-col gap-
|
|
313
|
-
<p className="text-
|
|
314
|
-
<p className="text-
|
|
259
|
+
<div className="flex w-full flex-col gap-[var(--spacing-system-l)]">
|
|
260
|
+
<p className="text-h2 text-ods-text-primary">{heading}</p>
|
|
261
|
+
<p className="text-h4 text-ods-text-secondary">{subtitle}</p>
|
|
315
262
|
</div>
|
|
316
263
|
</div>
|
|
317
|
-
|
|
318
|
-
{/* 2-up capability grid. `shrink-0` keeps every cell at its natural
|
|
319
|
-
height so the bottom row is never clipped (the root scrolls instead).
|
|
320
|
-
Cells share the lighter `ods-card` surface; 1px `ods-border` dividers
|
|
321
|
-
(right on the left column, bottom on every row but the last) draw the
|
|
322
|
-
inner cross. Captions use explicit `\n` breaks (`whitespace-pre-line`)
|
|
323
|
-
so the two-line wrap is fixed and never reflows with panel width. */}
|
|
324
|
-
{cellCount > 0 && (
|
|
325
|
-
<div className="grid shrink-0 grid-cols-2 overflow-hidden rounded-md border border-ods-border bg-ods-card">
|
|
326
|
-
{featureCards.map((card, i) => (
|
|
327
|
-
<div
|
|
328
|
-
key={card.id}
|
|
329
|
-
className={cn(
|
|
330
|
-
'flex flex-col items-center justify-center gap-[var(--spacing-system-m)] p-[var(--spacing-system-m)] text-center',
|
|
331
|
-
i % 2 === 0 && 'border-r border-ods-border',
|
|
332
|
-
i < lastRowStart && 'border-b border-ods-border',
|
|
333
|
-
)}
|
|
334
|
-
>
|
|
335
|
-
{card.icon ? (
|
|
336
|
-
<span className="flex size-4 shrink-0 items-center justify-center text-ods-text-primary">
|
|
337
|
-
{card.icon}
|
|
338
|
-
</span>
|
|
339
|
-
) : null}
|
|
340
|
-
<p className="text-h4 text-ods-text-secondary whitespace-pre-line">
|
|
341
|
-
{card.text}
|
|
342
|
-
</p>
|
|
343
|
-
</div>
|
|
344
|
-
))}
|
|
345
|
-
</div>
|
|
346
|
-
)}
|
|
347
264
|
</div>
|
|
348
265
|
|
|
349
|
-
{/* Edge scroll-fades — visible only when content is hidden beyond them.
|
|
350
|
-
|
|
351
|
-
|
|
266
|
+
{/* Edge scroll-fades — visible only when content is hidden beyond them.
|
|
267
|
+
Fade into the panel's dark `ods-bg` surface (the default color), matching
|
|
268
|
+
the black Mingo welcome background (node 113:69208). */}
|
|
269
|
+
<ScrollFadeOverlay edge="top" visible={fadeTop} className="h-12" />
|
|
270
|
+
<ScrollFadeOverlay edge="bottom" visible={fadeBottom} className="h-12" />
|
|
352
271
|
</div>
|
|
353
272
|
</>
|
|
354
273
|
))}
|
|
@@ -74,7 +74,7 @@ const ModelDisplay = React.forwardRef<HTMLDivElement, ModelDisplayProps>(
|
|
|
74
74
|
ref={ref}
|
|
75
75
|
className={cn(
|
|
76
76
|
'flex items-center gap-1 text-ods-text-secondary',
|
|
77
|
-
'text-
|
|
77
|
+
'text-h6',
|
|
78
78
|
className,
|
|
79
79
|
)}
|
|
80
80
|
{...props}
|
|
@@ -84,11 +84,11 @@ const ModelDisplay = React.forwardRef<HTMLDivElement, ModelDisplayProps>(
|
|
|
84
84
|
{icon}
|
|
85
85
|
</span>
|
|
86
86
|
)}
|
|
87
|
-
<span className="font-
|
|
87
|
+
<span className="font-body">
|
|
88
88
|
{name}
|
|
89
89
|
</span>
|
|
90
90
|
{contextWindow != null && (
|
|
91
|
-
<span className="
|
|
91
|
+
<span className="text-h6 opacity-70 ml-auto">
|
|
92
92
|
{usedTokens != null ? formatTokenCount(usedTokens) : '—'}/{formatTokenCount(contextWindow)} tokens used
|
|
93
93
|
</span>
|
|
94
94
|
)}
|
|
@@ -113,7 +113,7 @@ const ModelDisplay = React.forwardRef<HTMLDivElement, ModelDisplayProps>(
|
|
|
113
113
|
align="end"
|
|
114
114
|
sideOffset={6}
|
|
115
115
|
>
|
|
116
|
-
<div className="
|
|
116
|
+
<div className="text-h6 font-semibold text-ods-text-primary mb-2">
|
|
117
117
|
Token breakdown
|
|
118
118
|
</div>
|
|
119
119
|
{/* Answer-call row — uses the SAME pretty model name as the
|
|
@@ -147,7 +147,7 @@ const ModelDisplay = React.forwardRef<HTMLDivElement, ModelDisplayProps>(
|
|
|
147
147
|
/>
|
|
148
148
|
)}
|
|
149
149
|
{typeof hitRatePct === 'number' && hitRatePct > 0 && (
|
|
150
|
-
<div className="mt-2 pt-2 border-t border-ods-border
|
|
150
|
+
<div className="mt-2 pt-2 border-t border-ods-border text-h6 text-ods-text-secondary">
|
|
151
151
|
Prompt-cache hit: {hitRatePct}% of answer input
|
|
152
152
|
</div>
|
|
153
153
|
)}
|
|
@@ -169,7 +169,7 @@ function BreakdownRow({
|
|
|
169
169
|
isAnswer?: boolean;
|
|
170
170
|
}) {
|
|
171
171
|
return (
|
|
172
|
-
<div className="flex items-center justify-between py-1
|
|
172
|
+
<div className="flex items-center justify-between py-1 text-h6">
|
|
173
173
|
<span
|
|
174
174
|
className={cn(
|
|
175
175
|
'text-ods-text-secondary',
|
|
@@ -206,7 +206,7 @@ const ModelDisplaySkeleton = React.forwardRef<HTMLDivElement, ModelDisplaySkelet
|
|
|
206
206
|
<div
|
|
207
207
|
ref={ref}
|
|
208
208
|
aria-hidden
|
|
209
|
-
className={cn('flex items-center gap-1 text-
|
|
209
|
+
className={cn('flex items-center gap-1 text-h6', className)}
|
|
210
210
|
{...props}
|
|
211
211
|
>
|
|
212
212
|
{/* provider icon */}
|
|
@@ -119,7 +119,7 @@ function composeChipLabel(
|
|
|
119
119
|
// against the caps' optical center (measured 9.1px above / 6.9px
|
|
120
120
|
// below in the 32px Tag). Keep QuickActionChipSkeleton's lozenge bar
|
|
121
121
|
// offset in lockstep.
|
|
122
|
-
'mr-2 inline-flex items-center rounded px-[5px] py-[3px] align-middle -translate-y-[1px] text-
|
|
122
|
+
'mr-2 inline-flex items-center rounded px-[5px] py-[3px] align-middle -translate-y-[1px] text-h6 font-bold uppercase',
|
|
123
123
|
lozenge.className,
|
|
124
124
|
)}
|
|
125
125
|
style={{ background: 'color-mix(in srgb, currentColor 14%, transparent)' }}
|
|
@@ -67,14 +67,14 @@ const DENSITY_STYLES: Record<
|
|
|
67
67
|
showLabel: true,
|
|
68
68
|
iconSize: '!h-3 !w-3',
|
|
69
69
|
className:
|
|
70
|
-
'!h-auto !p-0 text-
|
|
70
|
+
'!h-auto !p-0 text-h6 font-normal text-ods-text-secondary opacity-60 hover:bg-transparent hover:opacity-100 hover:text-ods-text-primary',
|
|
71
71
|
},
|
|
72
72
|
'list-row': {
|
|
73
73
|
size: 'small',
|
|
74
74
|
showLabel: true,
|
|
75
75
|
iconSize: '!h-3 !w-3',
|
|
76
76
|
className:
|
|
77
|
-
'!h-auto !px-1.5 !py-0.5 text-
|
|
77
|
+
'!h-auto !px-1.5 !py-0.5 text-h6 font-normal text-ods-text-secondary opacity-60 hover:opacity-100 hover:text-ods-text-primary hover:bg-ods-accent/10',
|
|
78
78
|
},
|
|
79
79
|
}
|
|
80
80
|
|
|
@@ -6,13 +6,11 @@ import { formatToolArgValue, formatToolResult } from "./utils/tool-call-helpers"
|
|
|
6
6
|
/**
|
|
7
7
|
* Monospace code body shared by ArgRow / ResultBlock.
|
|
8
8
|
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
* stays as `text-xs` here. Flagged for a future `text-code` token rather than
|
|
12
|
-
* forcing an h-class that would change the intended density.
|
|
9
|
+
* Uses the ODS `text-code` composite token (Azeret Mono 500, h6 responsive
|
|
10
|
+
* scale, no transform) — the token this file was originally flagged for.
|
|
13
11
|
*/
|
|
14
12
|
const CODE_PRE_CLASS =
|
|
15
|
-
"bg-ods-bg border border-ods-border rounded-md p-[var(--spacing-system-sf)] w-full max-h-64 overflow-auto text-
|
|
13
|
+
"bg-ods-bg border border-ods-border rounded-md p-[var(--spacing-system-sf)] w-full max-h-64 overflow-auto text-code text-ods-text-primary whitespace-pre"
|
|
16
14
|
|
|
17
15
|
/**
|
|
18
16
|
* Single arg row: inline `key: value` or labeled `<pre>` block.
|
|
@@ -25,7 +25,7 @@ import { CHIP_ACTION_BUTTON_CLASS } from './chip-action-class'
|
|
|
25
25
|
|
|
26
26
|
| Property | Value | Intent |
|
|
27
27
|
|----------|-------|--------|
|
|
28
|
-
| Font size | `text-
|
|
28
|
+
| Font size | `text-h6` | Sub-UI-Kit density, fits chip action rows |
|
|
29
29
|
| Padding | `px-2 py-1` | Tight, below standard `Button size="small"` |
|
|
30
30
|
| Colors | `ods-text-secondary` / hover `ods-text-primary` | ODS token-based theming |
|
|
31
31
|
| Background | `bg-transparent` / hover `ods-card-hover` | Subtle interactive feedback |
|
|
@@ -17,9 +17,9 @@ Accepts a `ChipClassOptions` object and returns a composed Tailwind class string
|
|
|
17
17
|
|
|
18
18
|
| Density | Sizing | Frame |
|
|
19
19
|
|---------|--------|-------|
|
|
20
|
-
| `chip` | `px-2 py-0.5 text-
|
|
20
|
+
| `chip` | `px-2 py-0.5 text-h6` | bordered card bg |
|
|
21
21
|
| `list-row` | `px-3 py-2 text-sm` | bordered card bg |
|
|
22
|
-
| `card-row` | `px-2 py-1 text-
|
|
22
|
+
| `card-row` | `px-2 py-1 text-h6` | no border/bg |
|
|
23
23
|
|
|
24
24
|
## Usage Example
|
|
25
25
|
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* chip card's tertiary action row.
|
|
14
14
|
*/
|
|
15
15
|
export const CHIP_ACTION_BUTTON_CLASS =
|
|
16
|
-
'text-
|
|
16
|
+
'text-h6 text-ods-text-secondary hover:text-ods-text-primary ' +
|
|
17
17
|
'bg-transparent hover:bg-ods-card-hover border border-ods-border rounded-md ' +
|
|
18
18
|
'px-2 py-1 transition-colors focus-visible:outline-none focus-visible:ring-2 ' +
|
|
19
19
|
'focus-visible:ring-ods-focus'
|
|
@@ -36,8 +36,8 @@ export function chatChipClass({ tone, density = 'chip', extra }: ChipClassOption
|
|
|
36
36
|
const sizeClass = density === 'list-row'
|
|
37
37
|
? 'px-3 py-2 text-sm gap-2'
|
|
38
38
|
: density === 'card-row'
|
|
39
|
-
? 'px-2 py-1 text-
|
|
40
|
-
: 'px-2 py-0.5 text-
|
|
39
|
+
? 'px-2 py-1 text-h6 gap-1.5'
|
|
40
|
+
: 'px-2 py-0.5 text-h6 gap-1.5'
|
|
41
41
|
// `card-row` is the "no-frame" variant — no border, no card bg, so it
|
|
42
42
|
// sits cleanly under a card without visually wrapping it.
|
|
43
43
|
const frameClass = density === 'card-row'
|
|
@@ -56,15 +56,15 @@ export const COMPACT_CARD_TITLE =
|
|
|
56
56
|
|
|
57
57
|
/** Subtitle text — 11px on a 16px line. */
|
|
58
58
|
export const COMPACT_CARD_SUBTITLE =
|
|
59
|
-
'truncate text-
|
|
59
|
+
'truncate text-h6 text-ods-text-secondary'
|
|
60
60
|
|
|
61
61
|
/** Summary text — same metrics as subtitle, dropped to 80% opacity. */
|
|
62
62
|
export const COMPACT_CARD_SUMMARY =
|
|
63
|
-
'truncate text-
|
|
63
|
+
'truncate text-h6 text-ods-text-secondary/80'
|
|
64
64
|
|
|
65
65
|
/** Meta-row variant — multi-part 11px metadata. */
|
|
66
66
|
export const COMPACT_CARD_META_ROW =
|
|
67
|
-
'flex items-center gap-1.5 min-w-0 text-
|
|
67
|
+
'flex items-center gap-1.5 min-w-0 text-h6 text-ods-text-secondary'
|
|
68
68
|
|
|
69
69
|
/** Non-breaking space — used as a fallback child so the row's height stays 16px. */
|
|
70
70
|
export const COMPACT_CARD_ROW_FILLER = ' '
|
|
@@ -44,7 +44,7 @@ const CommandInput = React.forwardRef<
|
|
|
44
44
|
<CommandPrimitive.Input
|
|
45
45
|
ref={ref}
|
|
46
46
|
className={cn(
|
|
47
|
-
"flex h-11 w-full rounded-md bg-transparent py-3 text-
|
|
47
|
+
"flex h-11 w-full rounded-md bg-transparent py-3 text-h6 outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50",
|
|
48
48
|
className
|
|
49
49
|
)}
|
|
50
50
|
{...props}
|
|
@@ -73,7 +73,7 @@ const CommandEmpty = React.forwardRef<
|
|
|
73
73
|
>((props, ref) => (
|
|
74
74
|
<CommandPrimitive.Empty
|
|
75
75
|
ref={ref}
|
|
76
|
-
className="py-6 text-center text-
|
|
76
|
+
className="py-6 text-center text-h6"
|
|
77
77
|
{...props}
|
|
78
78
|
/>
|
|
79
79
|
))
|
|
@@ -115,7 +115,7 @@ const CommandItem = React.forwardRef<
|
|
|
115
115
|
<CommandPrimitive.Item
|
|
116
116
|
ref={ref}
|
|
117
117
|
className={cn(
|
|
118
|
-
"relative flex cursor-default gap-2 select-none items-center rounded-sm px-2 py-1.5 text-
|
|
118
|
+
"relative flex cursor-default gap-2 select-none items-center rounded-sm px-2 py-1.5 text-h6 outline-none data-[disabled=true]:pointer-events-none data-[selected='true']:bg-accent data-[selected=true]:text-accent-foreground data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
|
|
119
119
|
className
|
|
120
120
|
)}
|
|
121
121
|
{...props}
|
|
@@ -90,7 +90,7 @@ export function CommentCard({
|
|
|
90
90
|
/>
|
|
91
91
|
|
|
92
92
|
{/* Timestamp */}
|
|
93
|
-
<span className="
|
|
93
|
+
<span className="text-h6 text-ods-text-secondary whitespace-nowrap flex-shrink-0">
|
|
94
94
|
{formatActivityTime(comment.createdAt)}
|
|
95
95
|
</span>
|
|
96
96
|
</>
|
|
@@ -258,7 +258,7 @@ export function ContactForm({
|
|
|
258
258
|
</h2>
|
|
259
259
|
)}
|
|
260
260
|
{subtitle && (
|
|
261
|
-
<p className="
|
|
261
|
+
<p className="text-h4 text-ods-text-primary">
|
|
262
262
|
{subtitle}
|
|
263
263
|
</p>
|
|
264
264
|
)}
|
|
@@ -320,7 +320,7 @@ export function ContactForm({
|
|
|
320
320
|
className="bg-ods-card border-ods-border text-ods-text-primary placeholder-ods-text-secondary px-3 h-12"
|
|
321
321
|
/>
|
|
322
322
|
{errors.name && (
|
|
323
|
-
<span id="name-error" className="text-ods-error text-
|
|
323
|
+
<span id="name-error" className="text-ods-error text-h6 mt-1">
|
|
324
324
|
{errors.name.message}
|
|
325
325
|
</span>
|
|
326
326
|
)}
|
|
@@ -341,7 +341,7 @@ export function ContactForm({
|
|
|
341
341
|
className="bg-ods-card border-ods-border text-ods-text-primary placeholder-ods-text-secondary px-3 h-12"
|
|
342
342
|
/>
|
|
343
343
|
{errors.email && (
|
|
344
|
-
<span id="email-error" className="text-ods-error text-
|
|
344
|
+
<span id="email-error" className="text-ods-error text-h6 mt-1">
|
|
345
345
|
{errors.email.message}
|
|
346
346
|
</span>
|
|
347
347
|
)}
|
|
@@ -378,7 +378,7 @@ export function ContactForm({
|
|
|
378
378
|
)}
|
|
379
379
|
/>
|
|
380
380
|
{errors.companySize && (
|
|
381
|
-
<span id="companySize-error" className="text-ods-error text-
|
|
381
|
+
<span id="companySize-error" className="text-ods-error text-h6 mt-1">
|
|
382
382
|
{errors.companySize.message}
|
|
383
383
|
</span>
|
|
384
384
|
)}
|
|
@@ -410,7 +410,7 @@ export function ContactForm({
|
|
|
410
410
|
)}
|
|
411
411
|
/>
|
|
412
412
|
{errors.referralSource && (
|
|
413
|
-
<span id="referralSource-error" className="text-ods-error text-
|
|
413
|
+
<span id="referralSource-error" className="text-ods-error text-h6 mt-1">
|
|
414
414
|
{errors.referralSource.message}
|
|
415
415
|
</span>
|
|
416
416
|
)}
|
|
@@ -447,7 +447,7 @@ export function ContactForm({
|
|
|
447
447
|
)}
|
|
448
448
|
/>
|
|
449
449
|
{errors.helpCategory && (
|
|
450
|
-
<span id="helpCategory-error" className="text-ods-error text-
|
|
450
|
+
<span id="helpCategory-error" className="text-ods-error text-h6 mt-1">
|
|
451
451
|
{errors.helpCategory.message}
|
|
452
452
|
</span>
|
|
453
453
|
)}
|
|
@@ -468,7 +468,7 @@ export function ContactForm({
|
|
|
468
468
|
className="bg-ods-card border-ods-border text-ods-text-primary placeholder-ods-text-secondary h-full flex-grow"
|
|
469
469
|
/>
|
|
470
470
|
{errors.message && (
|
|
471
|
-
<span id="message-error" className="text-ods-error text-
|
|
471
|
+
<span id="message-error" className="text-ods-error text-h6 mt-1">
|
|
472
472
|
{errors.message.message}
|
|
473
473
|
</span>
|
|
474
474
|
)}
|
|
@@ -494,7 +494,7 @@ export function ContactForm({
|
|
|
494
494
|
onAddFiles={attachments.addFiles}
|
|
495
495
|
disabled={isSubmitting}
|
|
496
496
|
/>
|
|
497
|
-
<span className="text-
|
|
497
|
+
<span className="text-h6 text-ods-text-secondary">
|
|
498
498
|
Attach files (optional)
|
|
499
499
|
</span>
|
|
500
500
|
</div>
|
|
@@ -503,7 +503,7 @@ export function ContactForm({
|
|
|
503
503
|
|
|
504
504
|
<div className="flex flex-col md:flex-row gap-4 md:gap-6 items-center justify-end w-full pt-2 mt-auto">
|
|
505
505
|
{footerText && (
|
|
506
|
-
<p className="
|
|
506
|
+
<p className="text-h6 text-ods-text-secondary text-center md:text-left">
|
|
507
507
|
{footerText}
|
|
508
508
|
</p>
|
|
509
509
|
)}
|
|
@@ -27,7 +27,7 @@ const ContextMenuSubTrigger = React.forwardRef<
|
|
|
27
27
|
<ContextMenuPrimitive.SubTrigger
|
|
28
28
|
ref={ref}
|
|
29
29
|
className={cn(
|
|
30
|
-
"flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-
|
|
30
|
+
"flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-h6 outline-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground",
|
|
31
31
|
inset && "pl-8",
|
|
32
32
|
className
|
|
33
33
|
)}
|
|
@@ -80,7 +80,7 @@ const ContextMenuItem = React.forwardRef<
|
|
|
80
80
|
<ContextMenuPrimitive.Item
|
|
81
81
|
ref={ref}
|
|
82
82
|
className={cn(
|
|
83
|
-
"relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-
|
|
83
|
+
"relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-h6 outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
|
|
84
84
|
inset && "pl-8",
|
|
85
85
|
className
|
|
86
86
|
)}
|
|
@@ -96,7 +96,7 @@ const ContextMenuCheckboxItem = React.forwardRef<
|
|
|
96
96
|
<ContextMenuPrimitive.CheckboxItem
|
|
97
97
|
ref={ref}
|
|
98
98
|
className={cn(
|
|
99
|
-
"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-
|
|
99
|
+
"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-h6 outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
|
|
100
100
|
className
|
|
101
101
|
)}
|
|
102
102
|
checked={checked}
|
|
@@ -120,7 +120,7 @@ const ContextMenuRadioItem = React.forwardRef<
|
|
|
120
120
|
<ContextMenuPrimitive.RadioItem
|
|
121
121
|
ref={ref}
|
|
122
122
|
className={cn(
|
|
123
|
-
"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-
|
|
123
|
+
"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-h6 outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
|
|
124
124
|
className
|
|
125
125
|
)}
|
|
126
126
|
{...props}
|
|
@@ -144,7 +144,7 @@ const ContextMenuLabel = React.forwardRef<
|
|
|
144
144
|
<ContextMenuPrimitive.Label
|
|
145
145
|
ref={ref}
|
|
146
146
|
className={cn(
|
|
147
|
-
"px-2 py-1.5 text-
|
|
147
|
+
"px-2 py-1.5 text-h6 font-semibold text-foreground",
|
|
148
148
|
inset && "pl-8",
|
|
149
149
|
className
|
|
150
150
|
)}
|
|
@@ -25,7 +25,7 @@ const inputClassName = cn(
|
|
|
25
25
|
"disabled:cursor-not-allowed disabled:opacity-50 touch-manipulation",
|
|
26
26
|
// Admin theme colors
|
|
27
27
|
"bg-ods-card border-ods-border text-ods-text-primary",
|
|
28
|
-
"placeholder:text-
|
|
28
|
+
"placeholder:text-ods-text-muted focus-visible:ring-ods-accent",
|
|
29
29
|
"md:text-sm text-base" // Mobile zoom prevention
|
|
30
30
|
);
|
|
31
31
|
|
|
@@ -44,7 +44,7 @@ export function DateTimePicker({
|
|
|
44
44
|
return (
|
|
45
45
|
<div className={cn("space-y-2", className)}>
|
|
46
46
|
{label && (
|
|
47
|
-
<Label className="
|
|
47
|
+
<Label className="text-h5 font-semibold text-ods-text-secondary">
|
|
48
48
|
{label}
|
|
49
49
|
</Label>
|
|
50
50
|
)}
|
|
@@ -291,7 +291,7 @@ function DocViewerContent({
|
|
|
291
291
|
{error && (
|
|
292
292
|
<div className="flex justify-center">
|
|
293
293
|
<div className="rounded-lg border bg-ods-card p-8 text-center max-w-md border-ods-border">
|
|
294
|
-
<h2 className="text-
|
|
294
|
+
<h2 className="text-h3 text-ods-text-primary">
|
|
295
295
|
Error Loading Documents
|
|
296
296
|
</h2>
|
|
297
297
|
<p className="mt-2 text-ods-text-secondary">{error}. Please try again later.</p>
|
|
@@ -322,7 +322,7 @@ function DocViewerContent({
|
|
|
322
322
|
<PersistentSidebar isLoading={false}>
|
|
323
323
|
<div className="hidden lg:block">
|
|
324
324
|
<div className="space-y-4">
|
|
325
|
-
<h3 className="text-
|
|
325
|
+
<h3 className="text-h5 font-semibold text-ods-text-secondary">
|
|
326
326
|
{sidebarLabel}
|
|
327
327
|
</h3>
|
|
328
328
|
<MultiLevelNavigation
|
|
@@ -369,7 +369,7 @@ function DocViewerContent({
|
|
|
369
369
|
renderSkeleton(selectedNodeDocType)
|
|
370
370
|
) : !content ? (
|
|
371
371
|
<div className="text-center py-16">
|
|
372
|
-
<p className="text-
|
|
372
|
+
<p className="text-h4 text-ods-text-secondary">{resolvedEmptyText}</p>
|
|
373
373
|
</div>
|
|
374
374
|
) : (
|
|
375
375
|
renderedContent
|
|
@@ -406,7 +406,7 @@ function DocViewerContent({
|
|
|
406
406
|
!isLoadingContent && (
|
|
407
407
|
<div className="hidden lg:block">
|
|
408
408
|
<div className="sticky top-24">
|
|
409
|
-
<h3 className="text-
|
|
409
|
+
<h3 className="text-h5 font-semibold text-ods-text-secondary mb-4">
|
|
410
410
|
ON THIS PAGE
|
|
411
411
|
</h3>
|
|
412
412
|
<StickySectionNav
|
|
@@ -57,7 +57,7 @@ function SlidesViewToggle({
|
|
|
57
57
|
key={key}
|
|
58
58
|
value={key}
|
|
59
59
|
aria-label={label}
|
|
60
|
-
className={`flex items-center gap-1.5 rounded-md px-2.5 py-1 text-
|
|
60
|
+
className={`flex items-center gap-1.5 rounded-md px-2.5 py-1 text-h6 transition-colors ${
|
|
61
61
|
active
|
|
62
62
|
? 'bg-ods-accent text-ods-text-on-accent'
|
|
63
63
|
: 'text-ods-text-secondary hover:text-ods-text-primary hover:bg-ods-bg-hover'
|
|
@@ -106,7 +106,7 @@ export function FigmaEmbed({ url, title, height, loading = 'lazy' }: FigmaEmbedP
|
|
|
106
106
|
<div className="flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between">
|
|
107
107
|
<div className="flex items-center gap-2 min-w-0">
|
|
108
108
|
<FigmaIcon className="w-5 h-5 shrink-0" />
|
|
109
|
-
<span className="
|
|
109
|
+
<span className="text-h6 font-semibold text-ods-text-primary truncate">
|
|
110
110
|
{heading}
|
|
111
111
|
</span>
|
|
112
112
|
</div>
|
|
@@ -30,10 +30,10 @@ export function FileDownloadCard({
|
|
|
30
30
|
<div className="bg-ods-card border border-ods-border rounded-xl p-8 max-w-md w-full text-center space-y-4">
|
|
31
31
|
<FileText className="w-16 h-16 text-ods-text-secondary mx-auto" />
|
|
32
32
|
<div>
|
|
33
|
-
<h3 className="text-
|
|
33
|
+
<h3 className="text-h3 text-ods-text-primary">
|
|
34
34
|
{fileName || 'File'}
|
|
35
35
|
</h3>
|
|
36
|
-
<div className="flex items-center justify-center gap-3 mt-2 text-
|
|
36
|
+
<div className="flex items-center justify-center gap-3 mt-2 text-h6 text-ods-text-secondary">
|
|
37
37
|
{mimeType && <span>{mimeType}</span>}
|
|
38
38
|
{typeof fileSize === 'number' && <span>{formatFileSize(fileSize)}</span>}
|
|
39
39
|
</div>
|