@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
|
@@ -108,10 +108,10 @@ export function TranscriptSummaryEditor({
|
|
|
108
108
|
/>
|
|
109
109
|
)}
|
|
110
110
|
</div>
|
|
111
|
-
<p className="text-
|
|
111
|
+
<p className="text-h6 text-ods-text-secondary mt-1">{videoSummaryHelperText}</p>
|
|
112
112
|
</div>
|
|
113
113
|
<div
|
|
114
|
-
className="rounded-lg border border-ods-border bg-ods-
|
|
114
|
+
className="rounded-lg border border-ods-border bg-ods-card overflow-hidden"
|
|
115
115
|
style={{ minHeight: `${videoSummaryMinHeight}px` }}
|
|
116
116
|
>
|
|
117
117
|
<Textarea
|
|
@@ -120,7 +120,7 @@ export function TranscriptSummaryEditor({
|
|
|
120
120
|
onChange={(e) => onVideoSummaryChange(e.target.value)}
|
|
121
121
|
placeholder={videoSummaryPlaceholder}
|
|
122
122
|
disabled={disabled}
|
|
123
|
-
className="h-full w-full resize-none border-0 bg-transparent text-ods-text-primary placeholder:text-ods-text-secondary/50 focus:ring-0 focus:outline-none p-4
|
|
123
|
+
className="h-full w-full resize-none border-0 bg-transparent text-ods-text-primary placeholder:text-ods-text-secondary/50 focus:ring-0 focus:outline-none p-4 text-code"
|
|
124
124
|
style={{ minHeight: `${videoSummaryMinHeight}px`, lineHeight: '1.6' }}
|
|
125
125
|
/>
|
|
126
126
|
</div>
|
|
@@ -143,10 +143,10 @@ export function TranscriptSummaryEditor({
|
|
|
143
143
|
/>
|
|
144
144
|
)}
|
|
145
145
|
</div>
|
|
146
|
-
<p className="text-
|
|
146
|
+
<p className="text-h6 text-ods-text-secondary mt-1">{transcriptHelperText}</p>
|
|
147
147
|
</div>
|
|
148
148
|
<div
|
|
149
|
-
className="rounded-lg border border-ods-border bg-ods-
|
|
149
|
+
className="rounded-lg border border-ods-border bg-ods-card overflow-hidden"
|
|
150
150
|
style={{ minHeight: `${transcriptMinHeight}px` }}
|
|
151
151
|
>
|
|
152
152
|
<Textarea
|
|
@@ -155,7 +155,7 @@ export function TranscriptSummaryEditor({
|
|
|
155
155
|
onChange={(e) => onTranscriptChange(e.target.value)}
|
|
156
156
|
placeholder={transcriptPlaceholder}
|
|
157
157
|
disabled={disabled}
|
|
158
|
-
className="h-full w-full resize-none border-0 bg-transparent text-ods-text-primary placeholder:text-ods-text-secondary/50 focus:ring-0 focus:outline-none p-4
|
|
158
|
+
className="h-full w-full resize-none border-0 bg-transparent text-ods-text-primary placeholder:text-ods-text-secondary/50 focus:ring-0 focus:outline-none p-4 text-code"
|
|
159
159
|
style={{ minHeight: `${transcriptMinHeight}px`, lineHeight: '1.6' }}
|
|
160
160
|
/>
|
|
161
161
|
</div>
|
|
@@ -174,10 +174,10 @@ export function TranscriptSummaryEditor({
|
|
|
174
174
|
</Badge>
|
|
175
175
|
)}
|
|
176
176
|
</div>
|
|
177
|
-
<p className="text-
|
|
177
|
+
<p className="text-h6 text-ods-text-secondary mt-1">{subtitlesHelperText}</p>
|
|
178
178
|
</div>
|
|
179
179
|
<div
|
|
180
|
-
className="rounded-lg border border-ods-border bg-ods-
|
|
180
|
+
className="rounded-lg border border-ods-border bg-ods-card overflow-hidden"
|
|
181
181
|
style={{ minHeight: `${subtitlesMinHeight}px` }}
|
|
182
182
|
>
|
|
183
183
|
<Textarea
|
|
@@ -186,7 +186,7 @@ export function TranscriptSummaryEditor({
|
|
|
186
186
|
onChange={(e) => onSubtitlesChange?.(e.target.value)}
|
|
187
187
|
placeholder={subtitlesPlaceholder}
|
|
188
188
|
disabled={disabled || !onSubtitlesChange}
|
|
189
|
-
className="h-full w-full resize-none border-0 bg-transparent text-ods-text-primary placeholder:text-ods-text-secondary/50 focus:ring-0 focus:outline-none p-4
|
|
189
|
+
className="h-full w-full resize-none border-0 bg-transparent text-ods-text-primary placeholder:text-ods-text-secondary/50 focus:ring-0 focus:outline-none p-4 text-code"
|
|
190
190
|
style={{ minHeight: `${subtitlesMinHeight}px`, lineHeight: '1.6' }}
|
|
191
191
|
/>
|
|
192
192
|
</div>
|
|
@@ -286,7 +286,7 @@ export function VideoBiteCard({
|
|
|
286
286
|
// chevron affordance. The WHOLE footer is the navigation target — it links
|
|
287
287
|
// to the entity the bite originated from. In the editor the title row is
|
|
288
288
|
// the inline title editor (edited directly on the card).
|
|
289
|
-
const titleClass = "
|
|
289
|
+
const titleClass = "text-h6 text-ods-text-primary";
|
|
290
290
|
const overlayContent = (
|
|
291
291
|
<>
|
|
292
292
|
{titleEditable ? (
|
|
@@ -42,7 +42,7 @@ export type RatioCategory = 'portrait' | 'square' | 'landscape';
|
|
|
42
42
|
|
|
43
43
|
// Shared tab trigger class — matches `<EntityVideoSection>`'s pattern.
|
|
44
44
|
const TAB_TRIGGER_CLASS =
|
|
45
|
-
'rounded-none border-b-2 border-transparent data-[state=active]:border-ods-accent data-[state=active]:bg-transparent data-[state=active]:shadow-none px-4 py-2 text-
|
|
45
|
+
'rounded-none border-b-2 border-transparent data-[state=active]:border-ods-accent data-[state=active]:bg-transparent data-[state=active]:shadow-none px-4 py-2 text-h6 text-ods-text-secondary data-[state=active]:text-ods-text-primary';
|
|
46
46
|
|
|
47
47
|
/** Grid class for each aspect ratio (admin editors — narrower columns). */
|
|
48
48
|
export const RATIO_GRID_CLASS: Record<RatioCategory, string> = {
|
|
@@ -148,7 +148,7 @@ export function VideoSourceSelector({
|
|
|
148
148
|
<div className={`space-y-4 p-6 bg-ods-card border border-ods-border rounded-lg ${className}`}>
|
|
149
149
|
{/* Section Title */}
|
|
150
150
|
{showTitle && (
|
|
151
|
-
<h3 className="
|
|
151
|
+
<h3 className="text-h5 text-ods-text-primary flex items-center gap-2">
|
|
152
152
|
<Video className="h-5 w-5" />
|
|
153
153
|
{title}
|
|
154
154
|
</h3>
|
|
@@ -188,7 +188,7 @@ export function VideoSourceSelector({
|
|
|
188
188
|
disabled={disabled}
|
|
189
189
|
/>
|
|
190
190
|
{youtubeHelperText && (
|
|
191
|
-
<p className="text-
|
|
191
|
+
<p className="text-h6 text-ods-text-secondary">
|
|
192
192
|
{youtubeHelperText}
|
|
193
193
|
</p>
|
|
194
194
|
)}
|
|
@@ -236,15 +236,15 @@ export function VideoSourceSelector({
|
|
|
236
236
|
style={{ width: `${uploadProgress}%` }}
|
|
237
237
|
/>
|
|
238
238
|
</div>
|
|
239
|
-
<span className="text-
|
|
239
|
+
<span className="text-h6 text-ods-text-secondary">{uploadProgress}%</span>
|
|
240
240
|
</div>
|
|
241
|
-
<p className="text-
|
|
241
|
+
<p className="text-h6 text-ods-text-secondary">{uploadMessage}</p>
|
|
242
242
|
</div>
|
|
243
243
|
)}
|
|
244
244
|
|
|
245
245
|
{/* Upload Error */}
|
|
246
246
|
{uploadError && (
|
|
247
|
-
<p className="text-
|
|
247
|
+
<p className="text-h6 text-ods-error mb-3">{uploadError}</p>
|
|
248
248
|
)}
|
|
249
249
|
|
|
250
250
|
{/* Video Preview */}
|
|
@@ -265,7 +265,7 @@ export function VideoSourceSelector({
|
|
|
265
265
|
/>
|
|
266
266
|
)
|
|
267
267
|
) : (
|
|
268
|
-
<p className="text-
|
|
268
|
+
<p className="text-h6 text-ods-text-secondary italic">
|
|
269
269
|
{uploadEmptyText}
|
|
270
270
|
</p>
|
|
271
271
|
)}
|
|
@@ -332,7 +332,7 @@ function DefaultVideoPreview({ videoUrl, resolveVideoUrl, onDelete, disabled }:
|
|
|
332
332
|
className="absolute top-2 right-2 p-1.5 bg-black/60 hover:bg-black/80 rounded-full transition-colors"
|
|
333
333
|
disabled={disabled}
|
|
334
334
|
>
|
|
335
|
-
<X className="h-4 w-4 text-
|
|
335
|
+
<X className="h-4 w-4 text-ods-text-on-dark" />
|
|
336
336
|
</button>
|
|
337
337
|
</div>
|
|
338
338
|
);
|
|
@@ -931,7 +931,7 @@ function YouTubeFacadeInner({
|
|
|
931
931
|
className="absolute inset-0 w-full h-full object-cover"
|
|
932
932
|
/>
|
|
933
933
|
</picture>
|
|
934
|
-
<div className="absolute inset-0 flex items-center justify-center bg-ods-bg
|
|
934
|
+
<div className="absolute inset-0 flex items-center justify-center bg-ods-bg bg-opacity-20 transition-opacity duration-200 group-hover:bg-opacity-30">
|
|
935
935
|
{/* THE shared center play badge (video-center-badge.tsx) — same disc
|
|
936
936
|
as strip cards / carousel thumbs / unmute chip; hero size + the
|
|
937
937
|
facade's hover-scale affordance. */}
|
|
@@ -222,7 +222,7 @@ export function WaitlistForm({
|
|
|
222
222
|
onKeyDown={handleKeyDown}
|
|
223
223
|
/>
|
|
224
224
|
{showPhoneWarning && (
|
|
225
|
-
<p className="text-h6 absolute bottom-0 left-0 translate-y-full text-
|
|
225
|
+
<p className="text-h6 absolute bottom-0 left-0 translate-y-full text-ods-warning truncate" title={invalidPhoneHint}>
|
|
226
226
|
{invalidPhoneHint}
|
|
227
227
|
</p>
|
|
228
228
|
)}
|
|
@@ -245,7 +245,7 @@ export function WaitlistForm({
|
|
|
245
245
|
{consentText}{' View our '}
|
|
246
246
|
<a
|
|
247
247
|
href={termsOfServiceUrl || '#'}
|
|
248
|
-
className="text-
|
|
248
|
+
className="text-ods-accent underline"
|
|
249
249
|
target="_blank"
|
|
250
250
|
rel="noopener noreferrer"
|
|
251
251
|
onClick={(e) => e.stopPropagation()}
|
|
@@ -255,7 +255,7 @@ export function WaitlistForm({
|
|
|
255
255
|
{' and '}
|
|
256
256
|
<a
|
|
257
257
|
href={privacyPolicyUrl || '#'}
|
|
258
|
-
className="text-
|
|
258
|
+
className="text-ods-accent underline"
|
|
259
259
|
target="_blank"
|
|
260
260
|
rel="noopener noreferrer"
|
|
261
261
|
onClick={(e) => e.stopPropagation()}
|
|
@@ -30,7 +30,7 @@ export function FilterChip({
|
|
|
30
30
|
const baseClasses = cn(
|
|
31
31
|
"inline-flex items-center justify-center rounded-full font-medium transition-all duration-200 shrink-0 group cursor-pointer",
|
|
32
32
|
"hover:shadow-md hover:scale-105 focus:outline-none focus:ring-2 focus:ring-offset-2",
|
|
33
|
-
"font-
|
|
33
|
+
"font-body leading-none",
|
|
34
34
|
// Size variants - enhanced mobile sizing for better visibility and touch targets
|
|
35
35
|
size === 'sm'
|
|
36
36
|
? "text-sm pl-3 pr-3 py-1 md:text-sm md:pl-3 md:pr-3 md:py-1"
|
|
@@ -43,14 +43,14 @@ export function FilterChip({
|
|
|
43
43
|
|
|
44
44
|
const variantClasses = {
|
|
45
45
|
// Legacy variants (for backward compatibility)
|
|
46
|
-
selected: "bg-
|
|
47
|
-
unselected: "bg-
|
|
48
|
-
info: "bg-ods-border text-
|
|
49
|
-
|
|
46
|
+
selected: "bg-ods-bg-surface text-ods-text-primary border border-ods-accent hover:bg-ods-border hover:border-ods-accent-hover focus:ring-ods-accent focus:ring-offset-ods-bg",
|
|
47
|
+
unselected: "bg-ods-bg-surface text-ods-text-secondary border border-ods-border hover:bg-ods-border hover:border-ods-border-hover hover:text-ods-text-primary focus:ring-ods-border focus:ring-offset-ods-bg",
|
|
48
|
+
info: "bg-ods-border text-ods-text-secondary border border-ods-border-hover cursor-default hover:scale-100 hover:shadow-none focus:ring-ods-border-hover focus:ring-offset-ods-bg",
|
|
49
|
+
|
|
50
50
|
// New subtle selected variants - same backgrounds/text, only border colors different
|
|
51
|
-
category: "bg-
|
|
52
|
-
subcategory: "bg-
|
|
53
|
-
tag: "bg-
|
|
51
|
+
category: "bg-ods-bg-surface text-ods-text-primary border border-ods-accent/40 hover:bg-ods-border hover:border-ods-accent/60 hover:text-ods-text-primary focus:ring-ods-accent/40 focus:ring-offset-ods-bg",
|
|
52
|
+
subcategory: "bg-ods-bg-surface text-ods-text-primary border border-ods-accent/60 hover:bg-ods-border hover:border-ods-accent/80 hover:text-ods-text-primary focus:ring-ods-accent/60 focus:ring-offset-ods-bg",
|
|
53
|
+
tag: "bg-ods-bg-surface text-ods-text-primary border border-ods-accent/20 hover:bg-ods-border hover:border-ods-accent/30 hover:text-ods-text-primary focus:ring-ods-accent/20 focus:ring-offset-ods-bg",
|
|
54
54
|
}
|
|
55
55
|
|
|
56
56
|
return (
|
|
@@ -67,7 +67,7 @@ export function FilterChip({
|
|
|
67
67
|
aria-disabled={disabled}
|
|
68
68
|
>
|
|
69
69
|
<span className={cn(
|
|
70
|
-
"truncate font-
|
|
70
|
+
"truncate font-body font-medium leading-none text-center",
|
|
71
71
|
size === 'sm' ? "max-w-[100px] md:max-w-[120px]" : "max-w-[120px] md:max-w-[140px]"
|
|
72
72
|
)} title={label}>
|
|
73
73
|
{label}
|
|
@@ -86,12 +86,12 @@ export function FilterChip({
|
|
|
86
86
|
"transition-all duration-200 shrink-0",
|
|
87
87
|
"group-hover:scale-110 focus:outline-none focus:ring-2 focus:ring-offset-1",
|
|
88
88
|
variant === 'category'
|
|
89
|
-
? "hover:bg-
|
|
89
|
+
? "hover:bg-ods-bg-hover text-ods-text-primary focus:ring-ods-border-focus focus:ring-offset-ods-bg-surface"
|
|
90
90
|
: variant === 'subcategory'
|
|
91
|
-
? "hover:bg-
|
|
91
|
+
? "hover:bg-ods-bg-hover text-ods-text-primary focus:ring-ods-border-focus focus:ring-offset-ods-bg-surface"
|
|
92
92
|
: variant === 'tag'
|
|
93
|
-
? "hover:bg-
|
|
94
|
-
: "hover:bg-
|
|
93
|
+
? "hover:bg-ods-bg-hover text-ods-text-primary focus:ring-ods-border-focus focus:ring-offset-ods-bg-surface"
|
|
94
|
+
: "hover:bg-ods-bg-hover text-ods-text-primary focus:ring-ods-border-focus focus:ring-offset-ods-bg-surface",
|
|
95
95
|
disabled && "opacity-50 cursor-not-allowed hover:scale-100"
|
|
96
96
|
)}
|
|
97
97
|
aria-label={`Remove ${label} filter`}
|
|
@@ -27,7 +27,7 @@ interface FooterConfig {
|
|
|
27
27
|
belowDescriptionContent?: React.ReactNode // Custom content below description
|
|
28
28
|
moveDescriptionToRight?: boolean // Move description and belowDescriptionContent to right column
|
|
29
29
|
keepBelowDescriptionLeft?: boolean // Keep belowDescriptionContent on left even when moveDescriptionToRight is true
|
|
30
|
-
backgroundColor?: string // ODS background color (e.g., 'bg-ods-
|
|
30
|
+
backgroundColor?: string // ODS background color (e.g., 'bg-ods-card', 'bg-ods-bg')
|
|
31
31
|
social?: {
|
|
32
32
|
github?: string
|
|
33
33
|
twitter?: string
|
|
@@ -71,7 +71,7 @@ export function Footer({ config, renderLink }: FooterProps) {
|
|
|
71
71
|
*/
|
|
72
72
|
function UniversalFooter({ config, renderLink }: { config: FooterConfig; renderLink?: (link: FooterLink) => React.ReactNode }) {
|
|
73
73
|
const defaultRenderLink = (link: FooterLink) => (
|
|
74
|
-
<a href={link.href} className="font-body font-medium text-md md:text-md leading-[1.33] text-ods-text-primary hover:text-ods-accent
|
|
74
|
+
<a href={link.href} className="font-body font-medium text-md md:text-md leading-[1.33] text-ods-text-primary hover:text-ods-accent transition-colors">
|
|
75
75
|
{link.label}
|
|
76
76
|
</a>
|
|
77
77
|
)
|
|
@@ -79,7 +79,7 @@ function UniversalFooter({ config, renderLink }: { config: FooterConfig; renderL
|
|
|
79
79
|
const linkRenderer = renderLink || defaultRenderLink
|
|
80
80
|
|
|
81
81
|
return (
|
|
82
|
-
<footer className={`w-full flex flex-col justify-center items-center ${config.backgroundColor || 'bg-ods-
|
|
82
|
+
<footer className={`w-full flex flex-col justify-center items-center ${config.backgroundColor || 'bg-ods-card'} px-6 py-10 relative gap-6 md:gap-6 min-h-[auto] md:min-h-[248px] z-[44] border-t border-ods-border`}>
|
|
83
83
|
<div className="w-full grid grid-cols-2 lg:grid-cols-4 gap-6 md:gap-8 items-start">
|
|
84
84
|
|
|
85
85
|
{/* Column 1: Logo and optionally description */}
|
package/src/components/form.tsx
CHANGED
|
@@ -112,7 +112,7 @@ const FormDescription = React.forwardRef<HTMLParagraphElement, React.HTMLAttribu
|
|
|
112
112
|
({ className, ...props }, ref) => {
|
|
113
113
|
const { formDescriptionId } = useFormField()
|
|
114
114
|
|
|
115
|
-
return <p ref={ref} id={formDescriptionId} className={cn("text-
|
|
115
|
+
return <p ref={ref} id={formDescriptionId} className={cn("text-h6 text-muted-foreground", className)} {...props} />
|
|
116
116
|
},
|
|
117
117
|
)
|
|
118
118
|
FormDescription.displayName = "FormDescription"
|
|
@@ -127,7 +127,7 @@ const FormMessage = React.forwardRef<HTMLParagraphElement, React.HTMLAttributes<
|
|
|
127
127
|
}
|
|
128
128
|
|
|
129
129
|
return (
|
|
130
|
-
<p ref={ref} id={formMessageId} className={cn("text-
|
|
130
|
+
<p ref={ref} id={formMessageId} className={cn("text-h6 text-destructive", className)} {...props}>
|
|
131
131
|
{body}
|
|
132
132
|
</p>
|
|
133
133
|
)
|
|
@@ -158,9 +158,9 @@ export function HeroImageUploader({ imageUrl, onChange, uploadEndpoint, height =
|
|
|
158
158
|
) : (
|
|
159
159
|
<>
|
|
160
160
|
<ImageIcon className="h-12 w-12 text-ods-text-secondary" />
|
|
161
|
-
<span className="text-ods-text-primary
|
|
162
|
-
<span className="text-ods-text-secondary
|
|
163
|
-
<span className="text-ods-text-secondary
|
|
161
|
+
<span className="text-ods-text-primary text-h6 mt-2">Upload cover image</span>
|
|
162
|
+
<span className="text-ods-text-secondary text-h6 mt-1">Click to upload or drag and drop</span>
|
|
163
|
+
<span className="text-ods-text-secondary text-h6">PNG, JPEG, WebP, GIF up to 5MB</span>
|
|
164
164
|
</>
|
|
165
165
|
)}
|
|
166
166
|
</div>
|
|
@@ -213,7 +213,7 @@ export const ImageCropper: React.FC<ImageCropperProps> = ({
|
|
|
213
213
|
<div className="flex flex-col gap-4">
|
|
214
214
|
{/* Zoom */}
|
|
215
215
|
<div className="flex items-center gap-3">
|
|
216
|
-
<span className="min-w-[60px] text-
|
|
216
|
+
<span className="min-w-[60px] text-h6">Zoom</span>
|
|
217
217
|
<Slider
|
|
218
218
|
min={1}
|
|
219
219
|
max={3}
|
|
@@ -226,7 +226,7 @@ export const ImageCropper: React.FC<ImageCropperProps> = ({
|
|
|
226
226
|
</div>
|
|
227
227
|
{/* Rotate */}
|
|
228
228
|
<div className="flex items-center gap-3">
|
|
229
|
-
<span className="min-w-[60px] text-
|
|
229
|
+
<span className="min-w-[60px] text-h6">Rotate</span>
|
|
230
230
|
<Slider
|
|
231
231
|
min={0}
|
|
232
232
|
max={360}
|
|
@@ -248,14 +248,14 @@ function renderAdvancedPageContainer({
|
|
|
248
248
|
|
|
249
249
|
{/* Title */}
|
|
250
250
|
{title && (
|
|
251
|
-
<h1 className="text-h2
|
|
251
|
+
<h1 className="text-h2 text-ods-text-primary">
|
|
252
252
|
{title}
|
|
253
253
|
</h1>
|
|
254
254
|
)}
|
|
255
255
|
|
|
256
256
|
{/* Subtitle */}
|
|
257
257
|
{subtitle && (
|
|
258
|
-
<div className="text-ods-text-secondary
|
|
258
|
+
<div className="text-h6 text-ods-text-secondary">
|
|
259
259
|
{subtitle}
|
|
260
260
|
</div>
|
|
261
261
|
)}
|
|
@@ -286,12 +286,12 @@ function renderAdvancedPageContainer({
|
|
|
286
286
|
)}
|
|
287
287
|
|
|
288
288
|
{title && (
|
|
289
|
-
<h1 className="text-h2
|
|
289
|
+
<h1 className="text-h2 text-ods-text-primary">
|
|
290
290
|
{title}
|
|
291
291
|
</h1>
|
|
292
292
|
)}
|
|
293
293
|
{subtitle && (
|
|
294
|
-
<div className="text-ods-text-secondary
|
|
294
|
+
<div className="text-h6 text-ods-text-secondary">
|
|
295
295
|
{subtitle}
|
|
296
296
|
</div>
|
|
297
297
|
)}
|
|
@@ -322,7 +322,7 @@ function renderAdvancedPageContainer({
|
|
|
322
322
|
)}
|
|
323
323
|
|
|
324
324
|
{title && (
|
|
325
|
-
<h1 className="text-
|
|
325
|
+
<h1 className="text-h2 text-ods-text-primary">
|
|
326
326
|
{title}
|
|
327
327
|
</h1>
|
|
328
328
|
)}
|
|
@@ -350,7 +350,7 @@ function renderAdvancedPageContainer({
|
|
|
350
350
|
</h1>
|
|
351
351
|
)}
|
|
352
352
|
{subtitle && (
|
|
353
|
-
<div className="text-ods-text-secondary
|
|
353
|
+
<div className="text-h6 text-ods-text-secondary">
|
|
354
354
|
{subtitle}
|
|
355
355
|
</div>
|
|
356
356
|
)}
|
|
@@ -22,7 +22,7 @@ export const PAGE_HEADING_CLASS = 'text-h1 text-ods-text-primary'
|
|
|
22
22
|
export const SECTION_HEADING_CLASS = 'text-h2 text-ods-text-primary'
|
|
23
23
|
|
|
24
24
|
const DESCRIPTION_CLASS =
|
|
25
|
-
"mt-6 max-w-[640px] font-
|
|
25
|
+
"mt-6 max-w-[640px] font-body text-[16px] md:text-[18px] leading-[24px] md:leading-[28px] text-ods-text-secondary"
|
|
26
26
|
|
|
27
27
|
export interface PageHeadingProps {
|
|
28
28
|
/** Heading content — plain text or nodes (e.g. an accent <span>). */
|
|
@@ -177,10 +177,10 @@ function BlogCardContent({ showActions, showMetadata }: { showActions: boolean;
|
|
|
177
177
|
</div>
|
|
178
178
|
|
|
179
179
|
{/* Date and reading time section - matches BlogMeta right side */}
|
|
180
|
-
<div className="flex items-center gap-3 text-
|
|
180
|
+
<div className="flex items-center gap-3 text-ods-text-muted shrink-0">
|
|
181
181
|
<TextSkeleton.Caption className="w-12" />
|
|
182
182
|
{/* Separator dot */}
|
|
183
|
-
<div className="w-1 h-1 bg-
|
|
183
|
+
<div className="w-1 h-1 bg-ods-skeleton rounded-full"></div>
|
|
184
184
|
<TextSkeleton.Caption className="w-16" />
|
|
185
185
|
</div>
|
|
186
186
|
</div>
|
|
@@ -10,7 +10,7 @@ export function CategoryCardSkeleton({ className }: CategoryCardSkeletonProps) {
|
|
|
10
10
|
return (
|
|
11
11
|
<article
|
|
12
12
|
className={cn(
|
|
13
|
-
'bg-
|
|
13
|
+
'bg-ods-card border border-ods-border rounded-[12px] p-8 flex flex-col min-w-0 box-border',
|
|
14
14
|
className,
|
|
15
15
|
)}
|
|
16
16
|
role="status"
|
|
@@ -15,8 +15,8 @@ export function MarginReportSkeleton({ animate = true, description, overlayConte
|
|
|
15
15
|
<div className="max-w-[1920px] px-6 md:px-20 py-6 md:py-10 mx-auto space-y-10">
|
|
16
16
|
{/* Header */}
|
|
17
17
|
<div className="space-y-3">
|
|
18
|
-
<div className="h-10 w-72 bg-
|
|
19
|
-
<div className="h-4 w-80 bg-
|
|
18
|
+
<div className="h-10 w-72 bg-ods-skeleton rounded" />
|
|
19
|
+
<div className="h-4 w-80 bg-ods-skeleton rounded" />
|
|
20
20
|
</div>
|
|
21
21
|
|
|
22
22
|
{/* Summary cards */}
|
|
@@ -30,10 +30,10 @@ export function MarginReportSkeleton({ animate = true, description, overlayConte
|
|
|
30
30
|
<div className="grid grid-cols-1 md:grid-cols-2 gap-6">
|
|
31
31
|
{/* MSP profile skeleton */}
|
|
32
32
|
<div className="bg-ods-card border border-ods-border rounded-lg p-6 flex items-center gap-4 animate-pulse">
|
|
33
|
-
<div className="w-14 h-14 rounded-lg bg-
|
|
33
|
+
<div className="w-14 h-14 rounded-lg bg-ods-skeleton" />
|
|
34
34
|
<div className="flex-1 space-y-2">
|
|
35
|
-
<div className="h-4 bg-
|
|
36
|
-
<div className="h-3 bg-
|
|
35
|
+
<div className="h-4 bg-ods-skeleton rounded w-3/4" />
|
|
36
|
+
<div className="h-3 bg-ods-skeleton rounded w-1/2" />
|
|
37
37
|
</div>
|
|
38
38
|
</div>
|
|
39
39
|
|
|
@@ -41,15 +41,15 @@ export function MarginReportSkeleton({ animate = true, description, overlayConte
|
|
|
41
41
|
<div className="bg-ods-card border border-ods-border rounded-lg p-6 flex flex-col gap-4 animate-pulse">
|
|
42
42
|
<div className="flex items-center justify-between gap-4">
|
|
43
43
|
<div className="flex items-center gap-2">
|
|
44
|
-
<div className="w-10 h-10 rounded-lg bg-
|
|
44
|
+
<div className="w-10 h-10 rounded-lg bg-ods-skeleton" />
|
|
45
45
|
<div className="space-y-1">
|
|
46
|
-
<div className="h-4 w-32 bg-
|
|
47
|
-
<div className="h-3 w-20 bg-
|
|
46
|
+
<div className="h-4 w-32 bg-ods-skeleton rounded" />
|
|
47
|
+
<div className="h-3 w-20 bg-ods-skeleton rounded" />
|
|
48
48
|
</div>
|
|
49
49
|
</div>
|
|
50
|
-
<div className="h-6 w-36 bg-
|
|
50
|
+
<div className="h-6 w-36 bg-ods-skeleton rounded" />
|
|
51
51
|
</div>
|
|
52
|
-
<div className="h-4 w-40 bg-
|
|
52
|
+
<div className="h-4 w-40 bg-ods-skeleton rounded mt-4" />
|
|
53
53
|
</div>
|
|
54
54
|
</div>
|
|
55
55
|
|
|
@@ -59,10 +59,10 @@ export function MarginReportSkeleton({ animate = true, description, overlayConte
|
|
|
59
59
|
<div key={idx} className="bg-ods-card border border-ods-border rounded-lg overflow-hidden flex flex-col animate-pulse">
|
|
60
60
|
{/* list header */}
|
|
61
61
|
<div className="flex items-center justify-between px-6 py-4">
|
|
62
|
-
<div className="h-6 w-40 bg-
|
|
62
|
+
<div className="h-6 w-40 bg-ods-skeleton rounded" />
|
|
63
63
|
<div className="flex items-center gap-2">
|
|
64
|
-
<div className="h-5 w-20 bg-
|
|
65
|
-
<div className="h-4 w-10 bg-
|
|
64
|
+
<div className="h-5 w-20 bg-ods-skeleton rounded" />
|
|
65
|
+
<div className="h-4 w-10 bg-ods-skeleton rounded" />
|
|
66
66
|
</div>
|
|
67
67
|
</div>
|
|
68
68
|
|
|
@@ -72,16 +72,16 @@ export function MarginReportSkeleton({ animate = true, description, overlayConte
|
|
|
72
72
|
<div key={j} className="bg-ods-bg border border-ods-border rounded-lg px-4 py-3 flex items-center justify-between">
|
|
73
73
|
{/* left section: icon + text */}
|
|
74
74
|
<div className="flex items-center gap-3 min-w-0">
|
|
75
|
-
<div className="w-12 h-12 bg-
|
|
75
|
+
<div className="w-12 h-12 bg-ods-skeleton rounded-lg flex-shrink-0" />
|
|
76
76
|
<div className="flex flex-col min-w-0">
|
|
77
|
-
<div className="h-4 w-32 bg-
|
|
78
|
-
<div className="hidden md:block h-3 w-24 bg-
|
|
77
|
+
<div className="h-4 w-32 bg-ods-skeleton rounded" />
|
|
78
|
+
<div className="hidden md:block h-3 w-24 bg-ods-skeleton rounded mt-1" />
|
|
79
79
|
</div>
|
|
80
80
|
</div>
|
|
81
81
|
{/* right addon: cost text */}
|
|
82
82
|
<div className="flex items-center gap-1 flex-shrink-0">
|
|
83
|
-
<div className="h-4 w-16 bg-
|
|
84
|
-
<div className="h-3 w-8 bg-
|
|
83
|
+
<div className="h-4 w-16 bg-ods-skeleton rounded" />
|
|
84
|
+
<div className="h-3 w-8 bg-ods-skeleton rounded" />
|
|
85
85
|
</div>
|
|
86
86
|
</div>
|
|
87
87
|
))}
|
|
@@ -91,7 +91,7 @@ export function MarginReportSkeleton({ animate = true, description, overlayConte
|
|
|
91
91
|
</div>
|
|
92
92
|
|
|
93
93
|
{/* Strategic Recommendations header placeholder */}
|
|
94
|
-
<div className="h-6 w-60 bg-
|
|
94
|
+
<div className="h-6 w-60 bg-ods-skeleton rounded" />
|
|
95
95
|
|
|
96
96
|
{/* Recommendations grid */}
|
|
97
97
|
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">
|
|
@@ -105,11 +105,11 @@ export function MarginReportSkeleton({ animate = true, description, overlayConte
|
|
|
105
105
|
{/* Section header */}
|
|
106
106
|
<div className="flex items-start gap-6">
|
|
107
107
|
<div className="flex-1 space-y-2 min-w-0">
|
|
108
|
-
<div className="h-8 w-72 bg-
|
|
109
|
-
<div className="h-4 w-3/4 bg-
|
|
108
|
+
<div className="h-8 w-72 bg-ods-skeleton rounded" />
|
|
109
|
+
<div className="h-4 w-3/4 bg-ods-skeleton rounded" />
|
|
110
110
|
</div>
|
|
111
111
|
{/* Logo placeholder */}
|
|
112
|
-
<div className="w-12 h-12 bg-
|
|
112
|
+
<div className="w-12 h-12 bg-ods-skeleton rounded-md shrink-0" />
|
|
113
113
|
</div>
|
|
114
114
|
|
|
115
115
|
{/* Value cards grid */}
|
|
@@ -35,7 +35,7 @@ export function OpenmspHeartbeatLoader({ className = '', progress = 0, label, ba
|
|
|
35
35
|
<div className="flex flex-col items-center justify-center w-128">
|
|
36
36
|
{/* Progress text */}
|
|
37
37
|
<h2 className="mt-2 text-ods-accent text-center font-bold">
|
|
38
|
-
{progress != undefined && progress > 0 ? Math.floor(progress) : 0}% <span className="text-
|
|
38
|
+
{progress != undefined && progress > 0 ? Math.floor(progress) : 0}% <span className="text-h6 text-ods-text-secondary">/100%</span>
|
|
39
39
|
</h2>
|
|
40
40
|
|
|
41
41
|
{/* Progress text */}
|