@flamingo-stack/openframe-frontend-core 0.0.439 → 0.0.440
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-G5FALXNO.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-PEIR7D25.js → chunk-7KNOHGMI.js} +2 -2
- package/dist/{chunk-ZMUFTGL7.cjs → chunk-7QP65IE4.cjs} +5 -5
- package/dist/{chunk-ZMUFTGL7.cjs.map → chunk-7QP65IE4.cjs.map} +1 -1
- package/dist/{chunk-WPVBTVI3.js → chunk-AGV26PUR.js} +6 -6
- package/dist/{chunk-WPVBTVI3.js.map → chunk-AGV26PUR.js.map} +1 -1
- package/dist/{chunk-HTVVXVJL.cjs → chunk-DUQQEQ7G.cjs} +1431 -1594
- package/dist/chunk-DUQQEQ7G.cjs.map +1 -0
- package/dist/{chunk-COMBYYQY.js → chunk-FPE3SQ5D.js} +13 -13
- package/dist/chunk-FPE3SQ5D.js.map +1 -0
- package/dist/{chunk-WAGTZVQN.js → chunk-IAZ5AN2E.js} +30 -30
- package/dist/chunk-IAZ5AN2E.js.map +1 -0
- package/dist/{chunk-RQQZF6G6.cjs → chunk-IPEIOR77.cjs} +130 -130
- package/dist/chunk-IPEIOR77.cjs.map +1 -0
- package/dist/{chunk-3WJQL4DN.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-IAN7GUIV.cjs → chunk-JNC4LVD6.cjs} +42 -42
- package/dist/chunk-JNC4LVD6.cjs.map +1 -0
- package/dist/{chunk-VWGF6IFR.cjs → chunk-JOH5D76X.cjs} +108 -108
- package/dist/chunk-JOH5D76X.cjs.map +1 -0
- package/dist/{chunk-7WM77CSW.js → chunk-JYI4R25Q.js} +5 -5
- package/dist/chunk-JYI4R25Q.js.map +1 -0
- package/dist/{chunk-M6QGB6DC.cjs → chunk-KUXGQ2FQ.cjs} +36 -36
- package/dist/chunk-KUXGQ2FQ.cjs.map +1 -0
- package/dist/{chunk-M3LD6DNE.cjs → chunk-LFWPWIAC.cjs} +16 -16
- package/dist/{chunk-M3LD6DNE.cjs.map → chunk-LFWPWIAC.cjs.map} +1 -1
- package/dist/{chunk-R46QEE3R.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-2ELBNZJ3.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-EGRZHR7J.js → chunk-SM26C2L7.js} +9 -9
- package/dist/chunk-SM26C2L7.js.map +1 -0
- package/dist/{chunk-AUJXLVXA.cjs → chunk-TAQMYVO6.cjs} +42 -42
- package/dist/{chunk-AUJXLVXA.cjs.map → chunk-TAQMYVO6.cjs.map} +1 -1
- package/dist/{chunk-C3FH53AP.cjs → chunk-UFBUQO7Z.cjs} +19 -19
- package/dist/{chunk-C3FH53AP.cjs.map → chunk-UFBUQO7Z.cjs.map} +1 -1
- package/dist/{chunk-F7YVI54P.js → chunk-W3JZXLJ2.js} +10 -10
- package/dist/chunk-W3JZXLJ2.js.map +1 -0
- package/dist/{chunk-WZ6TCAYQ.cjs → chunk-XMCVUYKC.cjs} +14 -14
- package/dist/chunk-XMCVUYKC.cjs.map +1 -0
- package/dist/{chunk-P7PISHM5.js → chunk-Y3NFB6HR.js} +5 -5
- package/dist/chunk-Y3NFB6HR.js.map +1 -0
- package/dist/{chunk-PBTY7AH5.js → chunk-YZJUHEPZ.js} +95 -95
- package/dist/chunk-YZJUHEPZ.js.map +1 -0
- package/dist/{chunk-NQQ4NLUT.js → chunk-ZQYFDYWV.js} +4298 -4461
- 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/entity-cards/blog-card.d.ts.map +1 -1
- package/dist/components/chat/index.cjs +4 -4
- package/dist/components/chat/index.js +3 -3
- 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 +262 -256
- package/dist/components/index.cjs.map +1 -1
- package/dist/components/index.js +117 -111
- 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 +4 -4
- package/dist/components/ui/index.js +3 -3
- 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 +4 -4
- package/dist/index.js +3 -3
- 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-attachment-bar.tsx +3 -3
- 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-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 +3 -3
- 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/mingo-info-card.tsx +2 -2
- 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/styles/ods-colors.css +2 -0
- package/tailwind.config.ts +49 -4
- package/dist/chunk-2ELBNZJ3.js.map +0 -1
- package/dist/chunk-3WJQL4DN.cjs.map +0 -1
- package/dist/chunk-4ACSUJ7Q.js.map +0 -1
- package/dist/chunk-7WM77CSW.js.map +0 -1
- package/dist/chunk-COMBYYQY.js.map +0 -1
- package/dist/chunk-EGRZHR7J.js.map +0 -1
- package/dist/chunk-F7YVI54P.js.map +0 -1
- package/dist/chunk-G5FALXNO.js.map +0 -1
- package/dist/chunk-HTVVXVJL.cjs.map +0 -1
- package/dist/chunk-IAN7GUIV.cjs.map +0 -1
- package/dist/chunk-IMK6RUEC.cjs.map +0 -1
- package/dist/chunk-M6QGB6DC.cjs.map +0 -1
- package/dist/chunk-N2TJ3HAM.cjs.map +0 -1
- package/dist/chunk-NQQ4NLUT.js.map +0 -1
- package/dist/chunk-P7PISHM5.js.map +0 -1
- package/dist/chunk-PBTY7AH5.js.map +0 -1
- package/dist/chunk-R46QEE3R.cjs.map +0 -1
- package/dist/chunk-RQQZF6G6.cjs.map +0 -1
- package/dist/chunk-RVWC4P3H.js.map +0 -1
- package/dist/chunk-VWGF6IFR.cjs.map +0 -1
- package/dist/chunk-WAGTZVQN.js.map +0 -1
- package/dist/chunk-WZ6TCAYQ.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-PEIR7D25.js.map → chunk-7KNOHGMI.js.map} +0 -0
|
@@ -12,7 +12,7 @@ interface PageLayoutSkeletonProps {
|
|
|
12
12
|
*/
|
|
13
13
|
export function AnnouncementBarSkeleton() {
|
|
14
14
|
return (
|
|
15
|
-
<div className="bg-
|
|
15
|
+
<div className="bg-ods-skeleton relative w-full animate-pulse">
|
|
16
16
|
<div className="flex flex-row items-center relative w-full">
|
|
17
17
|
<div className="box-border flex flex-row gap-4 md:gap-6 items-center justify-start pl-4 md:pl-6 pr-12 md:pr-16 py-3 md:py-4 relative w-full">
|
|
18
18
|
{/* Logo skeleton */}
|
|
@@ -40,7 +40,7 @@ export function HeaderSkeleton() {
|
|
|
40
40
|
<header className="sticky top-0 z-40 w-full flex items-center justify-between border-b border-ods-border bg-ods-card backdrop-blur-sm bg-ods-card/95 px-4 md:px-[80px] py-3 md:py-[12px] animate-pulse">
|
|
41
41
|
{/* Left: Logo skeleton */}
|
|
42
42
|
<div className="flex items-center justify-start flex-1 min-w-0">
|
|
43
|
-
<div className="w-[110px] h-[26px] md:w-[137px] md:h-8 bg-
|
|
43
|
+
<div className="w-[110px] h-[26px] md:w-[137px] md:h-8 bg-ods-skeleton rounded"></div>
|
|
44
44
|
</div>
|
|
45
45
|
|
|
46
46
|
{/* Center: Navigation skeleton - hidden on mobile, visible on desktop */}
|
|
@@ -327,15 +327,15 @@ export function VendorDetailLayoutSkeleton({ className }: PageLayoutSkeletonProp
|
|
|
327
327
|
<div className="flex flex-col gap-3">
|
|
328
328
|
<div className="flex flex-col gap-2">
|
|
329
329
|
{/* Large title skeleton */}
|
|
330
|
-
<div className="h-12 md:h-16 lg:h-20 bg-
|
|
330
|
+
<div className="h-12 md:h-16 lg:h-20 bg-ods-skeleton rounded animate-pulse w-80 max-w-full"></div>
|
|
331
331
|
{/* Category text */}
|
|
332
|
-
<div className="h-5 md:h-6 bg-
|
|
332
|
+
<div className="h-5 md:h-6 bg-ods-skeleton rounded animate-pulse w-32"></div>
|
|
333
333
|
</div>
|
|
334
334
|
|
|
335
335
|
{/* Pricing tags */}
|
|
336
336
|
<div className="flex items-center gap-2">
|
|
337
|
-
<div className="h-8 bg-
|
|
338
|
-
<div className="h-8 bg-
|
|
337
|
+
<div className="h-8 bg-ods-skeleton rounded animate-pulse w-20"></div>
|
|
338
|
+
<div className="h-8 bg-ods-skeleton rounded animate-pulse w-16"></div>
|
|
339
339
|
</div>
|
|
340
340
|
</div>
|
|
341
341
|
</div>
|
|
@@ -343,7 +343,7 @@ export function VendorDetailLayoutSkeleton({ className }: PageLayoutSkeletonProp
|
|
|
343
343
|
{/* Vendor Image Display Skeleton */}
|
|
344
344
|
<div className="w-full h-[300px] md:h-[400px] lg:h-[500px] bg-ods-card border border-ods-border rounded-lg animate-pulse mb-2"></div>
|
|
345
345
|
<div className="text-center">
|
|
346
|
-
<div className="h-4 bg-
|
|
346
|
+
<div className="h-4 bg-ods-skeleton rounded animate-pulse w-24 mx-auto"></div>
|
|
347
347
|
</div>
|
|
348
348
|
</div>
|
|
349
349
|
|
|
@@ -363,10 +363,10 @@ export function VendorDetailLayoutSkeleton({ className }: PageLayoutSkeletonProp
|
|
|
363
363
|
<div className="border border-ods-border rounded-lg overflow-hidden">
|
|
364
364
|
{/* Header */}
|
|
365
365
|
<div className="bg-ods-card p-4 flex items-center gap-3">
|
|
366
|
-
<div className="w-8 h-8 bg-
|
|
366
|
+
<div className="w-8 h-8 bg-ods-skeleton rounded animate-pulse"></div>
|
|
367
367
|
<div className="flex flex-col gap-1">
|
|
368
|
-
<div className="h-4 bg-
|
|
369
|
-
<div className="h-6 bg-
|
|
368
|
+
<div className="h-4 bg-ods-skeleton rounded animate-pulse w-20"></div>
|
|
369
|
+
<div className="h-6 bg-ods-skeleton rounded animate-pulse w-12"></div>
|
|
370
370
|
</div>
|
|
371
371
|
</div>
|
|
372
372
|
|
|
@@ -374,10 +374,10 @@ export function VendorDetailLayoutSkeleton({ className }: PageLayoutSkeletonProp
|
|
|
374
374
|
<div className="p-4 space-y-3">
|
|
375
375
|
{Array.from({ length: 4 }).map((_, i) => (
|
|
376
376
|
<div key={i} className="flex items-center gap-3">
|
|
377
|
-
<div className="w-6 h-6 bg-
|
|
377
|
+
<div className="w-6 h-6 bg-ods-skeleton rounded animate-pulse"></div>
|
|
378
378
|
<div className="flex items-end gap-1">
|
|
379
|
-
<div className="h-4 bg-
|
|
380
|
-
<div className="h-3 bg-
|
|
379
|
+
<div className="h-4 bg-ods-skeleton rounded animate-pulse w-12"></div>
|
|
380
|
+
<div className="h-3 bg-ods-skeleton rounded animate-pulse w-8"></div>
|
|
381
381
|
</div>
|
|
382
382
|
</div>
|
|
383
383
|
))}
|
|
@@ -395,11 +395,11 @@ export function VendorDetailLayoutSkeleton({ className }: PageLayoutSkeletonProp
|
|
|
395
395
|
|
|
396
396
|
{/* Alternatives Container */}
|
|
397
397
|
<div className="flex flex-col gap-6 mb-20">
|
|
398
|
-
<div className="h-8 md:h-10 bg-
|
|
398
|
+
<div className="h-8 md:h-10 bg-ods-skeleton rounded animate-pulse w-48"></div>
|
|
399
399
|
|
|
400
400
|
{/* Open Source Alternatives */}
|
|
401
401
|
<div className="flex flex-col gap-4">
|
|
402
|
-
<div className="h-5 bg-
|
|
402
|
+
<div className="h-5 bg-ods-skeleton rounded animate-pulse w-48"></div>
|
|
403
403
|
<div className="flex flex-wrap gap-2">
|
|
404
404
|
{Array.from({ length: 6 }).map((_, i) => (
|
|
405
405
|
<div key={i} className="h-10 bg-ods-card border border-ods-border rounded-lg animate-pulse w-24"></div>
|
|
@@ -409,7 +409,7 @@ export function VendorDetailLayoutSkeleton({ className }: PageLayoutSkeletonProp
|
|
|
409
409
|
|
|
410
410
|
{/* Commercial Alternatives */}
|
|
411
411
|
<div className="flex flex-col gap-4">
|
|
412
|
-
<div className="h-5 bg-
|
|
412
|
+
<div className="h-5 bg-ods-skeleton rounded animate-pulse w-52"></div>
|
|
413
413
|
<div className="flex flex-wrap gap-2">
|
|
414
414
|
{Array.from({ length: 4 }).map((_, i) => (
|
|
415
415
|
<div key={i} className="h-10 bg-ods-card border border-ods-border rounded-lg animate-pulse w-28"></div>
|
|
@@ -420,28 +420,28 @@ export function VendorDetailLayoutSkeleton({ className }: PageLayoutSkeletonProp
|
|
|
420
420
|
|
|
421
421
|
{/* About Section */}
|
|
422
422
|
<div className="flex flex-col gap-6 mb-20">
|
|
423
|
-
<div className="h-8 md:h-10 bg-
|
|
423
|
+
<div className="h-8 md:h-10 bg-ods-skeleton rounded animate-pulse w-64"></div>
|
|
424
424
|
|
|
425
425
|
<div className="bg-ods-card border border-ods-border rounded-lg p-6 md:p-8">
|
|
426
426
|
<div className="space-y-4">
|
|
427
|
-
<div className="h-6 bg-
|
|
428
|
-
<div className="h-6 bg-
|
|
429
|
-
<div className="h-6 bg-
|
|
430
|
-
<div className="h-6 bg-
|
|
427
|
+
<div className="h-6 bg-ods-skeleton rounded animate-pulse"></div>
|
|
428
|
+
<div className="h-6 bg-ods-skeleton rounded animate-pulse"></div>
|
|
429
|
+
<div className="h-6 bg-ods-skeleton rounded animate-pulse w-5/6"></div>
|
|
430
|
+
<div className="h-6 bg-ods-skeleton rounded animate-pulse w-4/5"></div>
|
|
431
431
|
</div>
|
|
432
432
|
</div>
|
|
433
433
|
</div>
|
|
434
434
|
|
|
435
435
|
{/* Key Features Section */}
|
|
436
436
|
<div className="flex flex-col gap-6 mb-20">
|
|
437
|
-
<div className="h-8 md:h-10 bg-
|
|
437
|
+
<div className="h-8 md:h-10 bg-ods-skeleton rounded animate-pulse w-72"></div>
|
|
438
438
|
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">
|
|
439
439
|
{Array.from({ length: 6 }).map((_, i) => (
|
|
440
440
|
<div key={i} className="bg-ods-card border border-ods-border rounded-lg p-4 flex gap-4">
|
|
441
|
-
<div className="w-12 h-12 bg-
|
|
441
|
+
<div className="w-12 h-12 bg-ods-skeleton rounded flex-shrink-0 animate-pulse"></div>
|
|
442
442
|
<div className="flex-1 space-y-2">
|
|
443
|
-
<div className="h-5 bg-
|
|
444
|
-
<div className="h-4 bg-
|
|
443
|
+
<div className="h-5 bg-ods-skeleton rounded animate-pulse w-3/4"></div>
|
|
444
|
+
<div className="h-4 bg-ods-skeleton rounded animate-pulse"></div>
|
|
445
445
|
</div>
|
|
446
446
|
</div>
|
|
447
447
|
))}
|
|
@@ -450,30 +450,30 @@ export function VendorDetailLayoutSkeleton({ className }: PageLayoutSkeletonProp
|
|
|
450
450
|
|
|
451
451
|
{/* Pros and Cons Section */}
|
|
452
452
|
<div className="flex flex-col gap-6 mb-20">
|
|
453
|
-
<div className="h-8 md:h-10 bg-
|
|
453
|
+
<div className="h-8 md:h-10 bg-ods-skeleton rounded animate-pulse w-80"></div>
|
|
454
454
|
<div className="grid grid-cols-1 lg:grid-cols-2 gap-6">
|
|
455
455
|
{/* Pros Column */}
|
|
456
456
|
<div className="flex flex-col gap-6">
|
|
457
|
-
<div className="h-5 bg-
|
|
457
|
+
<div className="h-5 bg-ods-skeleton rounded animate-pulse w-16"></div>
|
|
458
458
|
{Array.from({ length: 3 }).map((_, i) => (
|
|
459
459
|
<div key={i} className="bg-ods-card border border-ods-border rounded-lg p-4 flex gap-3">
|
|
460
460
|
<div className="w-12 h-12 bg-ods-bg border border-ods-border rounded flex-shrink-0 animate-pulse"></div>
|
|
461
461
|
<div className="flex-1 space-y-2">
|
|
462
|
-
<div className="h-5 bg-
|
|
463
|
-
<div className="h-4 bg-
|
|
462
|
+
<div className="h-5 bg-ods-skeleton rounded animate-pulse w-2/3"></div>
|
|
463
|
+
<div className="h-4 bg-ods-skeleton rounded animate-pulse"></div>
|
|
464
464
|
</div>
|
|
465
465
|
</div>
|
|
466
466
|
))}
|
|
467
467
|
</div>
|
|
468
468
|
{/* Cons Column */}
|
|
469
469
|
<div className="flex flex-col gap-6">
|
|
470
|
-
<div className="h-5 bg-
|
|
470
|
+
<div className="h-5 bg-ods-skeleton rounded animate-pulse w-16"></div>
|
|
471
471
|
{Array.from({ length: 3 }).map((_, i) => (
|
|
472
472
|
<div key={i} className="bg-ods-card border border-ods-border rounded-lg p-4 flex gap-3">
|
|
473
473
|
<div className="w-12 h-12 bg-ods-bg border border-ods-border rounded flex-shrink-0 animate-pulse"></div>
|
|
474
474
|
<div className="flex-1 space-y-2">
|
|
475
|
-
<div className="h-5 bg-
|
|
476
|
-
<div className="h-4 bg-
|
|
475
|
+
<div className="h-5 bg-ods-skeleton rounded animate-pulse w-2/3"></div>
|
|
476
|
+
<div className="h-4 bg-ods-skeleton rounded animate-pulse"></div>
|
|
477
477
|
</div>
|
|
478
478
|
</div>
|
|
479
479
|
))}
|
|
@@ -483,7 +483,7 @@ export function VendorDetailLayoutSkeleton({ className }: PageLayoutSkeletonProp
|
|
|
483
483
|
|
|
484
484
|
{/* Alternatives Section */}
|
|
485
485
|
<div className="flex flex-col gap-6 mb-20">
|
|
486
|
-
<div className="h-8 md:h-10 bg-
|
|
486
|
+
<div className="h-8 md:h-10 bg-ods-skeleton rounded animate-pulse w-72"></div>
|
|
487
487
|
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">
|
|
488
488
|
{Array.from({ length: 6 }).map((_, i) => (
|
|
489
489
|
<div key={i} className="bg-ods-card border border-ods-border rounded-lg p-6 space-y-4">
|
|
@@ -491,34 +491,34 @@ export function VendorDetailLayoutSkeleton({ className }: PageLayoutSkeletonProp
|
|
|
491
491
|
<div className="flex items-start gap-4">
|
|
492
492
|
<div className="w-16 h-16 bg-ods-bg border border-ods-border rounded-lg animate-pulse flex-shrink-0"></div>
|
|
493
493
|
<div className="flex-1 space-y-2">
|
|
494
|
-
<div className="h-6 bg-
|
|
495
|
-
<div className="h-4 bg-
|
|
494
|
+
<div className="h-6 bg-ods-skeleton rounded animate-pulse w-3/4"></div>
|
|
495
|
+
<div className="h-4 bg-ods-skeleton rounded animate-pulse w-1/2"></div>
|
|
496
496
|
</div>
|
|
497
|
-
<div className="h-6 bg-
|
|
497
|
+
<div className="h-6 bg-ods-skeleton rounded animate-pulse w-20"></div>
|
|
498
498
|
</div>
|
|
499
499
|
|
|
500
500
|
{/* Description */}
|
|
501
501
|
<div className="space-y-2">
|
|
502
|
-
<div className="h-4 bg-
|
|
503
|
-
<div className="h-4 bg-
|
|
504
|
-
<div className="h-4 bg-
|
|
502
|
+
<div className="h-4 bg-ods-skeleton rounded animate-pulse"></div>
|
|
503
|
+
<div className="h-4 bg-ods-skeleton rounded animate-pulse w-5/6"></div>
|
|
504
|
+
<div className="h-4 bg-ods-skeleton rounded animate-pulse w-4/5"></div>
|
|
505
505
|
</div>
|
|
506
506
|
|
|
507
507
|
{/* Footer */}
|
|
508
508
|
<div className="flex items-center justify-between pt-2 border-t border-ods-border">
|
|
509
|
-
<div className="h-4 bg-
|
|
510
|
-
<div className="h-4 bg-
|
|
509
|
+
<div className="h-4 bg-ods-skeleton rounded animate-pulse w-16"></div>
|
|
510
|
+
<div className="h-4 bg-ods-skeleton rounded animate-pulse w-20"></div>
|
|
511
511
|
</div>
|
|
512
512
|
</div>
|
|
513
513
|
))}
|
|
514
514
|
</div>
|
|
515
515
|
{/* Show All Button */}
|
|
516
|
-
<div className="h-12 bg-
|
|
516
|
+
<div className="h-12 bg-ods-skeleton rounded-md animate-pulse"></div>
|
|
517
517
|
</div>
|
|
518
518
|
|
|
519
519
|
{/* Comments Section */}
|
|
520
520
|
<div className="flex flex-col gap-6 mb-20">
|
|
521
|
-
<div className="h-8 md:h-10 bg-
|
|
521
|
+
<div className="h-8 md:h-10 bg-ods-skeleton rounded animate-pulse w-64"></div>
|
|
522
522
|
|
|
523
523
|
{/* Comment Form Skeleton */}
|
|
524
524
|
<div className="space-y-3">
|
|
@@ -526,24 +526,24 @@ export function VendorDetailLayoutSkeleton({ className }: PageLayoutSkeletonProp
|
|
|
526
526
|
<div className="flex-1 bg-ods-bg border border-ods-border rounded-lg overflow-hidden">
|
|
527
527
|
{/* Title Section */}
|
|
528
528
|
<div className="border-b border-ods-border p-3">
|
|
529
|
-
<div className="h-3 bg-
|
|
530
|
-
<div className="h-6 bg-
|
|
529
|
+
<div className="h-3 bg-ods-skeleton rounded animate-pulse w-8 mb-2"></div>
|
|
530
|
+
<div className="h-6 bg-ods-skeleton rounded animate-pulse w-full"></div>
|
|
531
531
|
</div>
|
|
532
532
|
|
|
533
533
|
{/* Description Section */}
|
|
534
534
|
<div className="p-3">
|
|
535
|
-
<div className="h-3 bg-
|
|
535
|
+
<div className="h-3 bg-ods-skeleton rounded animate-pulse w-16 mb-2"></div>
|
|
536
536
|
<div className="space-y-2">
|
|
537
|
-
<div className="h-4 bg-
|
|
538
|
-
<div className="h-4 bg-
|
|
539
|
-
<div className="h-4 bg-
|
|
537
|
+
<div className="h-4 bg-ods-skeleton rounded animate-pulse w-full"></div>
|
|
538
|
+
<div className="h-4 bg-ods-skeleton rounded animate-pulse w-3/4"></div>
|
|
539
|
+
<div className="h-4 bg-ods-skeleton rounded animate-pulse w-1/2"></div>
|
|
540
540
|
</div>
|
|
541
541
|
</div>
|
|
542
542
|
</div>
|
|
543
543
|
|
|
544
544
|
{/* Send Button */}
|
|
545
545
|
<div className="flex items-stretch">
|
|
546
|
-
<div className="h-[120px] w-20 bg-
|
|
546
|
+
<div className="h-[120px] w-20 bg-ods-skeleton rounded-lg animate-pulse"></div>
|
|
547
547
|
</div>
|
|
548
548
|
</div>
|
|
549
549
|
</div>
|
|
@@ -557,22 +557,22 @@ export function VendorDetailLayoutSkeleton({ className }: PageLayoutSkeletonProp
|
|
|
557
557
|
<div className="flex items-center gap-2">
|
|
558
558
|
{/* User Info */}
|
|
559
559
|
<div className="flex items-center gap-2 bg-ods-card border border-ods-border rounded-lg py-2 px-3">
|
|
560
|
-
<div className="w-8 h-8 bg-
|
|
561
|
-
<div className="h-4 bg-
|
|
560
|
+
<div className="w-8 h-8 bg-ods-skeleton rounded-lg animate-pulse"></div>
|
|
561
|
+
<div className="h-4 bg-ods-skeleton rounded animate-pulse w-20"></div>
|
|
562
562
|
</div>
|
|
563
563
|
|
|
564
564
|
{/* Timestamp */}
|
|
565
|
-
<div className="h-4 bg-
|
|
565
|
+
<div className="h-4 bg-ods-skeleton rounded animate-pulse w-12"></div>
|
|
566
566
|
</div>
|
|
567
567
|
</div>
|
|
568
568
|
|
|
569
569
|
{/* Comment Content */}
|
|
570
570
|
<div className="space-y-2">
|
|
571
|
-
<div className="h-6 bg-
|
|
571
|
+
<div className="h-6 bg-ods-skeleton rounded animate-pulse w-2/3"></div>
|
|
572
572
|
<div className="space-y-1">
|
|
573
|
-
<div className="h-4 bg-
|
|
574
|
-
<div className="h-4 bg-
|
|
575
|
-
<div className="h-4 bg-
|
|
573
|
+
<div className="h-4 bg-ods-skeleton rounded animate-pulse w-full"></div>
|
|
574
|
+
<div className="h-4 bg-ods-skeleton rounded animate-pulse w-4/5"></div>
|
|
575
|
+
<div className="h-4 bg-ods-skeleton rounded animate-pulse w-3/5"></div>
|
|
576
576
|
</div>
|
|
577
577
|
</div>
|
|
578
578
|
</div>
|
|
@@ -597,10 +597,10 @@ export function VendorDetailLayoutSkeleton({ className }: PageLayoutSkeletonProp
|
|
|
597
597
|
<div className="border border-ods-border rounded-lg overflow-hidden">
|
|
598
598
|
{/* Header */}
|
|
599
599
|
<div className="bg-ods-card p-4 flex items-center gap-3">
|
|
600
|
-
<div className="w-8 h-8 bg-
|
|
600
|
+
<div className="w-8 h-8 bg-ods-skeleton rounded animate-pulse"></div>
|
|
601
601
|
<div className="flex flex-col gap-1">
|
|
602
|
-
<div className="h-4 bg-
|
|
603
|
-
<div className="h-6 bg-
|
|
602
|
+
<div className="h-4 bg-ods-skeleton rounded animate-pulse w-20"></div>
|
|
603
|
+
<div className="h-6 bg-ods-skeleton rounded animate-pulse w-12"></div>
|
|
604
604
|
</div>
|
|
605
605
|
</div>
|
|
606
606
|
|
|
@@ -608,10 +608,10 @@ export function VendorDetailLayoutSkeleton({ className }: PageLayoutSkeletonProp
|
|
|
608
608
|
<div className="p-4 space-y-3">
|
|
609
609
|
{Array.from({ length: 4 }).map((_, i) => (
|
|
610
610
|
<div key={i} className="flex items-center gap-3">
|
|
611
|
-
<div className="w-6 h-6 bg-
|
|
611
|
+
<div className="w-6 h-6 bg-ods-skeleton rounded animate-pulse"></div>
|
|
612
612
|
<div className="flex items-end gap-1">
|
|
613
|
-
<div className="h-4 bg-
|
|
614
|
-
<div className="h-3 bg-
|
|
613
|
+
<div className="h-4 bg-ods-skeleton rounded animate-pulse w-12"></div>
|
|
614
|
+
<div className="h-3 bg-ods-skeleton rounded animate-pulse w-8"></div>
|
|
615
615
|
</div>
|
|
616
616
|
</div>
|
|
617
617
|
))}
|
|
@@ -710,7 +710,7 @@ export function SlackCommunitySkeleton() {
|
|
|
710
710
|
|
|
711
711
|
{/* Title Skeleton */}
|
|
712
712
|
<div className="w-full">
|
|
713
|
-
<div className="h-8 md:h-12 lg:h-14 bg-
|
|
713
|
+
<div className="h-8 md:h-12 lg:h-14 bg-ods-skeleton rounded-lg animate-pulse max-w-md"></div>
|
|
714
714
|
</div>
|
|
715
715
|
|
|
716
716
|
{/* Content Area - Channel List + Chat Interface */}
|
|
@@ -722,21 +722,21 @@ export function SlackCommunitySkeleton() {
|
|
|
722
722
|
{/* Header */}
|
|
723
723
|
<div className="flex flex-col gap-2">
|
|
724
724
|
<div className="flex items-center justify-between">
|
|
725
|
-
<div className="h-4 bg-
|
|
726
|
-
<div className="h-3 bg-
|
|
725
|
+
<div className="h-4 bg-ods-skeleton rounded w-24"></div>
|
|
726
|
+
<div className="h-3 bg-ods-skeleton rounded w-16"></div>
|
|
727
727
|
</div>
|
|
728
|
-
<div className="h-3 bg-
|
|
728
|
+
<div className="h-3 bg-ods-skeleton rounded w-32"></div>
|
|
729
729
|
</div>
|
|
730
730
|
|
|
731
731
|
{/* Channels */}
|
|
732
732
|
<div className="flex flex-col gap-1">
|
|
733
|
-
<div className="h-3 bg-
|
|
733
|
+
<div className="h-3 bg-ods-skeleton rounded w-16 mb-2"></div>
|
|
734
734
|
{Array.from({ length: 5 }).map((_, i) => (
|
|
735
735
|
<div key={i} className="flex items-center gap-2 px-2 py-3 min-h-[48px]">
|
|
736
|
-
<div className="w-4 h-4 bg-
|
|
736
|
+
<div className="w-4 h-4 bg-ods-skeleton rounded"></div>
|
|
737
737
|
<div className="flex-1">
|
|
738
|
-
<div className="h-3 bg-
|
|
739
|
-
<div className="h-2 bg-
|
|
738
|
+
<div className="h-3 bg-ods-skeleton rounded w-24 mb-1"></div>
|
|
739
|
+
<div className="h-2 bg-ods-skeleton rounded w-16"></div>
|
|
740
740
|
</div>
|
|
741
741
|
</div>
|
|
742
742
|
))}
|
|
@@ -746,12 +746,12 @@ export function SlackCommunitySkeleton() {
|
|
|
746
746
|
<div className="border-t border-ods-border pt-3 mt-2">
|
|
747
747
|
<div className="space-y-2">
|
|
748
748
|
<div className="flex justify-between">
|
|
749
|
-
<div className="h-3 bg-
|
|
750
|
-
<div className="h-3 bg-
|
|
749
|
+
<div className="h-3 bg-ods-skeleton rounded w-16"></div>
|
|
750
|
+
<div className="h-3 bg-ods-skeleton rounded w-8"></div>
|
|
751
751
|
</div>
|
|
752
752
|
<div className="flex justify-between">
|
|
753
|
-
<div className="h-3 bg-
|
|
754
|
-
<div className="h-3 bg-
|
|
753
|
+
<div className="h-3 bg-ods-skeleton rounded w-20"></div>
|
|
754
|
+
<div className="h-3 bg-ods-skeleton rounded w-8"></div>
|
|
755
755
|
</div>
|
|
756
756
|
</div>
|
|
757
757
|
</div>
|
|
@@ -764,23 +764,23 @@ export function SlackCommunitySkeleton() {
|
|
|
764
764
|
{/* Header */}
|
|
765
765
|
<div className="flex items-center justify-between p-4 md:p-6 border-b border-ods-border bg-ods-bg h-[56px] md:h-[60px] flex-shrink-0">
|
|
766
766
|
<div className="flex items-center gap-2">
|
|
767
|
-
<div className="h-3 md:h-4 bg-
|
|
768
|
-
<div className="h-3 md:h-4 bg-
|
|
767
|
+
<div className="h-3 md:h-4 bg-ods-skeleton rounded w-3 md:w-4"></div>
|
|
768
|
+
<div className="h-3 md:h-4 bg-ods-skeleton rounded w-24 md:w-32"></div>
|
|
769
769
|
</div>
|
|
770
|
-
<div className="h-3 bg-
|
|
770
|
+
<div className="h-3 bg-ods-skeleton rounded w-12 md:w-16"></div>
|
|
771
771
|
</div>
|
|
772
772
|
|
|
773
773
|
{/* Messages */}
|
|
774
774
|
<div className="flex-1 bg-ods-bg p-4 md:p-6 space-y-3 md:space-y-4 overflow-hidden min-h-[280px] md:min-h-[320px] lg:min-h-[420px]">
|
|
775
775
|
{Array.from({ length: 6 }).map((_, i) => (
|
|
776
776
|
<div key={i} className="flex gap-2 md:gap-3">
|
|
777
|
-
<div className="w-10 h-10 md:w-12 md:h-12 bg-
|
|
777
|
+
<div className="w-10 h-10 md:w-12 md:h-12 bg-ods-skeleton rounded-lg flex-shrink-0"></div>
|
|
778
778
|
<div className="flex-1">
|
|
779
779
|
<div className="flex items-center gap-2 mb-1">
|
|
780
|
-
<div className="h-3 bg-
|
|
781
|
-
<div className="h-3 bg-
|
|
780
|
+
<div className="h-3 bg-ods-skeleton rounded w-16 md:w-20"></div>
|
|
781
|
+
<div className="h-3 bg-ods-skeleton rounded w-12 md:w-16"></div>
|
|
782
782
|
</div>
|
|
783
|
-
<div className="h-3 md:h-4 bg-
|
|
783
|
+
<div className="h-3 md:h-4 bg-ods-skeleton rounded w-full"></div>
|
|
784
784
|
</div>
|
|
785
785
|
</div>
|
|
786
786
|
))}
|
|
@@ -789,7 +789,7 @@ export function SlackCommunitySkeleton() {
|
|
|
789
789
|
{/* Input Area */}
|
|
790
790
|
<div className="p-4 md:p-6 border-t border-ods-border bg-ods-card h-[72px] md:h-[80px] flex-shrink-0">
|
|
791
791
|
<div className="flex items-end gap-3 justify-center md:justify-end">
|
|
792
|
-
<div className="h-10 md:h-12 bg-
|
|
792
|
+
<div className="h-10 md:h-12 bg-ods-skeleton rounded-lg w-28 md:w-32"></div>
|
|
793
793
|
</div>
|
|
794
794
|
</div>
|
|
795
795
|
</div>
|
|
@@ -10,10 +10,10 @@ export function UsersGridSkeleton({ rows = 10, className }: Props) {
|
|
|
10
10
|
return (
|
|
11
11
|
<div className={cn('overflow-x-auto rounded-lg border border-ods-border bg-ods-card animate-pulse', className)}>
|
|
12
12
|
<table className="min-w-full divide-y divide-ods-border">
|
|
13
|
-
<thead className="bg-
|
|
13
|
+
<thead className="bg-ods-skeleton">
|
|
14
14
|
<tr>
|
|
15
15
|
{['Name', 'Email', 'Role', 'Created', 'Last Sign-In'].map((h) => (
|
|
16
|
-
<th key={h} className="px-4 py-3 text-left text-
|
|
16
|
+
<th key={h} className="px-4 py-3 text-left text-h6 text-ods-text-primary">{h}</th>
|
|
17
17
|
))}
|
|
18
18
|
</tr>
|
|
19
19
|
</thead>
|
|
@@ -29,7 +29,7 @@ const LogCard: React.FC<{
|
|
|
29
29
|
<div
|
|
30
30
|
className={cn(
|
|
31
31
|
'box-border flex gap-3 items-start py-2 px-1 relative rounded w-full',
|
|
32
|
-
'hover:bg-
|
|
32
|
+
'hover:bg-ods-bg-hover/50 transition-colors cursor-pointer'
|
|
33
33
|
)}
|
|
34
34
|
onClick={onClick}
|
|
35
35
|
role="button"
|
|
@@ -44,11 +44,11 @@ const LogCard: React.FC<{
|
|
|
44
44
|
<LogSeverityDot severity={log.severity} size="md" />
|
|
45
45
|
|
|
46
46
|
<div className="flex-1 min-w-0 space-y-1">
|
|
47
|
-
<p className="
|
|
47
|
+
<p className="text-h6 text-ods-text-primary">
|
|
48
48
|
{log.title}
|
|
49
49
|
</p>
|
|
50
50
|
<div className="flex items-center gap-2">
|
|
51
|
-
<p className="
|
|
51
|
+
<p className="text-h5 text-ods-text-secondary">
|
|
52
52
|
{formatTimestamp(log.timestamp)}
|
|
53
53
|
</p>
|
|
54
54
|
{log.toolType && (
|
|
@@ -60,7 +60,7 @@ const LogCard: React.FC<{
|
|
|
60
60
|
|
|
61
61
|
{showConnector && !isLast && (
|
|
62
62
|
<div
|
|
63
|
-
className="absolute bg-
|
|
63
|
+
className="absolute bg-ods-border left-[15px] w-[2px]"
|
|
64
64
|
style={{
|
|
65
65
|
top: '28px',
|
|
66
66
|
bottom: '-10px'
|
|
@@ -103,14 +103,14 @@ export const LogsList = React.forwardRef<
|
|
|
103
103
|
<div
|
|
104
104
|
ref={ref}
|
|
105
105
|
className={cn(
|
|
106
|
-
'bg-
|
|
106
|
+
'bg-ods-card border border-ods-border rounded-lg p-4',
|
|
107
107
|
'flex items-center justify-center',
|
|
108
108
|
getContainerClasses(),
|
|
109
109
|
className
|
|
110
110
|
)}
|
|
111
111
|
style={getContainerStyles()}
|
|
112
112
|
>
|
|
113
|
-
<div className="text-
|
|
113
|
+
<div className="text-ods-text-muted text-h6">Loading logs...</div>
|
|
114
114
|
</div>
|
|
115
115
|
)
|
|
116
116
|
}
|
|
@@ -120,14 +120,14 @@ export const LogsList = React.forwardRef<
|
|
|
120
120
|
<div
|
|
121
121
|
ref={ref}
|
|
122
122
|
className={cn(
|
|
123
|
-
'bg-
|
|
123
|
+
'bg-ods-card border border-ods-border rounded-lg p-4',
|
|
124
124
|
'flex items-center justify-center',
|
|
125
125
|
getContainerClasses(),
|
|
126
126
|
className
|
|
127
127
|
)}
|
|
128
128
|
style={getContainerStyles()}
|
|
129
129
|
>
|
|
130
|
-
<div className="text-
|
|
130
|
+
<div className="text-ods-text-muted text-h6">{emptyMessage}</div>
|
|
131
131
|
</div>
|
|
132
132
|
)
|
|
133
133
|
}
|
|
@@ -180,14 +180,14 @@ export const MediaCarousel = memo(function MediaCarousel({
|
|
|
180
180
|
const renderImageUnavailable = (failedUrl: string) => (
|
|
181
181
|
<div className="absolute inset-0 flex flex-col items-center justify-center gap-3 bg-ods-card px-6 text-center">
|
|
182
182
|
<ImageOffIcon className="size-8 text-ods-text-secondary" />
|
|
183
|
-
<p className="text-ods-text-secondary text-
|
|
183
|
+
<p className="text-ods-text-secondary text-h6 max-w-md">
|
|
184
184
|
This image is no longer available at the original URL.
|
|
185
185
|
</p>
|
|
186
186
|
<Link
|
|
187
187
|
href={failedUrl}
|
|
188
188
|
target="_blank"
|
|
189
189
|
rel="noopener noreferrer"
|
|
190
|
-
className="text-ods-accent text-
|
|
190
|
+
className="text-ods-accent text-h6 underline break-all"
|
|
191
191
|
>
|
|
192
192
|
Open link
|
|
193
193
|
</Link>
|
|
@@ -201,7 +201,7 @@ export const MediaCarousel = memo(function MediaCarousel({
|
|
|
201
201
|
if (!rawSrc) {
|
|
202
202
|
return (
|
|
203
203
|
<div className="absolute inset-0 flex flex-col items-center justify-center gap-3 bg-ods-card px-6 text-center">
|
|
204
|
-
<p className="text-ods-text-secondary text-
|
|
204
|
+
<p className="text-ods-text-secondary text-h6 max-w-md">No image URL for this slide.</p>
|
|
205
205
|
</div>
|
|
206
206
|
);
|
|
207
207
|
}
|
|
@@ -296,7 +296,7 @@ export const MediaCarousel = memo(function MediaCarousel({
|
|
|
296
296
|
<Button
|
|
297
297
|
variant="transparent"
|
|
298
298
|
onClick={prevSlide}
|
|
299
|
-
className="absolute left-3 top-1/2 h-auto md:h-auto -translate-y-1/2 rounded-full bg-black/50 p-2 text-
|
|
299
|
+
className="absolute left-3 top-1/2 h-auto md:h-auto -translate-y-1/2 rounded-full bg-black/50 p-2 text-ods-text-on-dark opacity-0 transition-opacity duration-200 group-hover:opacity-100 hover:bg-black/70 z-10"
|
|
300
300
|
aria-label="Previous media"
|
|
301
301
|
>
|
|
302
302
|
<ChevronLeftIcon />
|
|
@@ -305,7 +305,7 @@ export const MediaCarousel = memo(function MediaCarousel({
|
|
|
305
305
|
<Button
|
|
306
306
|
variant="transparent"
|
|
307
307
|
onClick={nextSlide}
|
|
308
|
-
className="absolute right-3 top-1/2 h-auto md:h-auto -translate-y-1/2 rounded-full bg-black/50 p-2 text-
|
|
308
|
+
className="absolute right-3 top-1/2 h-auto md:h-auto -translate-y-1/2 rounded-full bg-black/50 p-2 text-ods-text-on-dark opacity-0 transition-opacity duration-200 group-hover:opacity-100 hover:bg-black/70 z-10"
|
|
309
309
|
aria-label="Next media"
|
|
310
310
|
>
|
|
311
311
|
<ChevronRightIcon />
|
|
@@ -334,8 +334,8 @@ export const MediaCarousel = memo(function MediaCarousel({
|
|
|
334
334
|
className={cn(
|
|
335
335
|
"size-2 rounded-full transition-colors duration-150",
|
|
336
336
|
isActive
|
|
337
|
-
? "bg-
|
|
338
|
-
: "bg-
|
|
337
|
+
? "bg-ods-flamingo-pink"
|
|
338
|
+
: "bg-ods-bg-surface hover:bg-ods-bg-surface-hover"
|
|
339
339
|
)}
|
|
340
340
|
/>
|
|
341
341
|
</Button>
|
|
@@ -15,9 +15,9 @@ interface MetricValueProps {
|
|
|
15
15
|
*/
|
|
16
16
|
export function MetricValue({ value, label, className }: MetricValueProps) {
|
|
17
17
|
return (
|
|
18
|
-
<div className={cn('flex items-end gap-2 whitespace-nowrap
|
|
18
|
+
<div className={cn('flex items-end gap-2 whitespace-nowrap text-h4 text-ods-text-primary', className)}>
|
|
19
19
|
{value}
|
|
20
|
-
<span className="text-
|
|
20
|
+
<span className="text-h6 text-ods-text-secondary">
|
|
21
21
|
{label}
|
|
22
22
|
</span>
|
|
23
23
|
</div>
|
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
import React from 'react';
|
|
4
4
|
import { cn } from "../utils/cn";
|
|
5
|
-
import {
|
|
5
|
+
import { getProxiedImageUrl } from '../utils/image-proxy';
|
|
6
|
+
import { SquareAvatar } from './ui/square-avatar';
|
|
6
7
|
|
|
7
8
|
interface MSPDisplayProps {
|
|
8
9
|
name: string;
|
|
@@ -14,7 +15,12 @@ interface MSPDisplayProps {
|
|
|
14
15
|
export function MSPDisplay({ name, logoUrl, size = 40, className }: MSPDisplayProps) {
|
|
15
16
|
return (
|
|
16
17
|
<div className={cn('flex items-center gap-2 min-w-0', className)}>
|
|
17
|
-
<SquareAvatar
|
|
18
|
+
<SquareAvatar
|
|
19
|
+
src={logoUrl ? getProxiedImageUrl(logoUrl) || logoUrl : undefined}
|
|
20
|
+
fallback={name}
|
|
21
|
+
alt={name}
|
|
22
|
+
sizePx={size}
|
|
23
|
+
/>
|
|
18
24
|
<h2 className="truncate pl-2">
|
|
19
25
|
{name}
|
|
20
26
|
</h2>
|