@flamingo-stack/openframe-frontend-core 0.0.747 → 0.0.749
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/build/export-map.json +1 -1
- package/dist/{chunk-4DT5YXTM.cjs → chunk-2J2OBP4N.cjs} +26 -18
- package/dist/chunk-2YXOD2KL.cjs +137 -0
- package/dist/{chunk-BEC43GHL.cjs → chunk-34TWK3JE.cjs} +3 -3
- package/dist/{chunk-BBM2ICOY.cjs → chunk-3TELPOVH.cjs} +2 -2
- package/dist/{chunk-O6QQ44I3.cjs → chunk-45YRDD7W.cjs} +22 -19
- package/dist/{chunk-U6XWGK53.cjs → chunk-ALPRQ3ZX.cjs} +56 -46
- package/dist/{chunk-4AWI6CCU.cjs → chunk-BN6NA5RM.cjs} +56 -53
- package/dist/{chunk-HNLI4OU5.cjs → chunk-C6LPOYDM.cjs} +24 -24
- package/dist/{chunk-4MGZYY6U.cjs → chunk-CLAJIQ7E.cjs} +26 -18
- package/dist/{chunk-WY4FKKCV.cjs → chunk-CXV7VBSI.cjs} +104 -118
- package/dist/{chunk-QPSQ5WLG.cjs → chunk-DGEB5GUZ.cjs} +2 -2
- package/dist/{chunk-6RTHHU3S.cjs → chunk-E3KFEOFA.cjs} +9 -6
- package/dist/{chunk-PSSGIZXZ.cjs → chunk-FHT7SMA7.cjs} +49 -46
- package/dist/{chunk-TYW7NBP7.cjs → chunk-GOFEOCQN.cjs} +44 -27
- package/dist/{chunk-HTMHDEIV.cjs → chunk-HOEVD6EN.cjs} +4 -4
- package/dist/{chunk-2CEQGGRN.cjs → chunk-KRAQEZPB.cjs} +48 -40
- package/dist/{chunk-AKTPO2DN.cjs → chunk-L4UI63K6.cjs} +2 -2
- package/dist/{chunk-FCQCEQBY.cjs → chunk-LQT2ITMG.cjs} +6 -6
- package/dist/{chunk-PSIKUDUV.cjs → chunk-LVO7FALW.cjs} +5 -5
- package/dist/{chunk-L2RMTGOK.cjs → chunk-MGF3FUKD.cjs} +7 -7
- package/dist/{chunk-P7KTAXXE.cjs → chunk-OFO75R2O.cjs} +169 -175
- package/dist/{chunk-IJA3OZWF.cjs → chunk-OZLIKBKC.cjs} +24 -24
- package/dist/{chunk-B27QEHYR.cjs → chunk-P6F6PHVK.cjs} +9 -9
- package/dist/chunk-RB6BSE3O.cjs +21 -0
- package/dist/{chunk-R3FXJXSQ.cjs → chunk-SECT4H34.cjs} +1780 -2076
- package/dist/{chunk-LLAKQT3B.cjs → chunk-SGL47BS2.cjs} +12 -12
- package/dist/{chunk-PIQRV4EQ.cjs → chunk-SOPVUD2Y.cjs} +3 -3
- package/dist/chunk-UGCRLRCT.cjs +25 -0
- package/dist/{chunk-7Y5U3Y4S.cjs → chunk-V3UJ6NDR.cjs} +281 -462
- package/dist/{chunk-JPSMPXCH.cjs → chunk-VEVIMDNK.cjs} +137 -122
- package/dist/{chunk-C7NTL2GV.cjs → chunk-WZX26ODJ.cjs} +121 -121
- package/dist/{chunk-YIRX6C7V.cjs → chunk-XJ3J4UIS.cjs} +57 -22
- package/dist/{chunk-MA7T36JY.cjs → chunk-ZLF55RDR.cjs} +103 -98
- package/dist/{cloud-tenants-QJZIF2JS.cjs → cloud-tenants-2MYFHEYY.cjs} +16 -14
- package/dist/components/case-studies/index.cjs +29 -27
- package/dist/components/categories-cart.d.ts.map +1 -1
- package/dist/components/categories-cart.js +2 -7
- package/dist/components/chat/chat-container.js +4 -4
- package/dist/components/chat/chat-context-picker.d.ts.map +1 -1
- package/dist/components/chat/chat-context-picker.js +2 -1
- package/dist/components/chat/chat-message-row.d.ts.map +1 -1
- package/dist/components/chat/chat-message-row.js +6 -5
- package/dist/components/chat/chat-message-skeleton.d.ts +3 -1
- package/dist/components/chat/chat-message-skeleton.d.ts.map +1 -1
- package/dist/components/chat/chat-message-skeleton.js +8 -5
- package/dist/components/chat/chat-sidebar-skeleton.d.ts.map +1 -1
- package/dist/components/chat/chat-sidebar-skeleton.js +4 -3
- package/dist/components/chat/chat-top-navigation.js +4 -4
- package/dist/components/chat/context-items-list.d.ts.map +1 -1
- package/dist/components/chat/context-items-list.js +5 -3
- package/dist/components/chat/entity-cards/admin-content-card-grid.d.ts +24 -1
- package/dist/components/chat/entity-cards/admin-content-card-grid.d.ts.map +1 -1
- package/dist/components/chat/entity-cards/admin-content-card-grid.js +46 -15
- package/dist/components/chat/entity-cards/admin-content-card.d.ts.map +1 -1
- package/dist/components/chat/entity-cards/admin-content-card.js +2 -1
- package/dist/components/chat/entity-cards/blog-card.d.ts.map +1 -1
- package/dist/components/chat/entity-cards/blog-card.js +13 -12
- package/dist/components/chat/entity-cards/campaign-card-admin.d.ts.map +1 -1
- package/dist/components/chat/entity-cards/campaign-card-admin.js +5 -4
- package/dist/components/chat/entity-cards/case-study-card.d.ts.map +1 -1
- package/dist/components/chat/entity-cards/case-study-card.js +19 -18
- package/dist/components/chat/entity-cards/chat-ticket-item.js +5 -5
- package/dist/components/chat/entity-cards/customer-interview-card.d.ts.map +1 -1
- package/dist/components/chat/entity-cards/customer-interview-card.js +15 -14
- package/dist/components/chat/entity-cards/data-room-doc-card.d.ts.map +1 -1
- package/dist/components/chat/entity-cards/data-room-doc-card.js +7 -6
- package/dist/components/chat/entity-cards/design-doc-card.d.ts.map +1 -1
- package/dist/components/chat/entity-cards/design-doc-card.js +0 -2
- package/dist/components/chat/entity-cards/generic-entity-card.d.ts.map +1 -1
- package/dist/components/chat/entity-cards/generic-entity-card.js +8 -7
- package/dist/components/chat/entity-cards/github-activity-card.d.ts.map +1 -1
- package/dist/components/chat/entity-cards/github-activity-card.js +11 -10
- package/dist/components/chat/entity-cards/hubspot-ticket-card.d.ts.map +1 -1
- package/dist/components/chat/entity-cards/hubspot-ticket-card.js +16 -15
- package/dist/components/chat/entity-cards/index.d.ts +1 -1
- package/dist/components/chat/entity-cards/index.d.ts.map +1 -1
- package/dist/components/chat/entity-cards/index.js +2 -0
- package/dist/components/chat/entity-cards/investor-update-card.d.ts.map +1 -1
- package/dist/components/chat/entity-cards/investor-update-card.js +12 -11
- package/dist/components/chat/entity-cards/onboarding-guide-card.d.ts.map +1 -1
- package/dist/components/chat/entity-cards/onboarding-guide-card.js +25 -30
- package/dist/components/chat/entity-cards/program-card.d.ts.map +1 -1
- package/dist/components/chat/entity-cards/program-card.js +29 -28
- package/dist/components/chat/entity-cards/roadmap-card.d.ts.map +1 -1
- package/dist/components/chat/entity-cards/roadmap-card.js +37 -39
- package/dist/components/chat/entity-cards/slack-message-card.d.ts.map +1 -1
- package/dist/components/chat/entity-cards/slack-message-card.js +12 -11
- package/dist/components/chat/guide-welcome.js +2 -2
- package/dist/components/chat/index.cjs +13 -9
- package/dist/components/chat/mingo-archive-list.d.ts.map +1 -1
- package/dist/components/chat/mingo-archive-list.js +2 -1
- package/dist/components/chat/mingo-chat-history.d.ts +4 -2
- package/dist/components/chat/mingo-chat-history.d.ts.map +1 -1
- package/dist/components/chat/mingo-chat-history.js +11 -5
- package/dist/components/chat/mingo-chat-rail.d.ts.map +1 -1
- package/dist/components/chat/mingo-chat-rail.js +2 -1
- package/dist/components/chat/mingo-info-card.d.ts.map +1 -1
- package/dist/components/chat/mingo-info-card.js +6 -5
- package/dist/components/chat/mingo-onboarding-card-skeleton.d.ts +3 -1
- package/dist/components/chat/mingo-onboarding-card-skeleton.d.ts.map +1 -1
- package/dist/components/chat/mingo-onboarding-card-skeleton.js +12 -12
- package/dist/components/chat/model-display.js +4 -4
- package/dist/components/chat/msp-organization-card-skeleton.js +5 -5
- package/dist/components/chat/quick-action-chip.d.ts +3 -3
- package/dist/components/chat/quick-action-chip.d.ts.map +1 -1
- package/dist/components/chat/quick-action-chip.js +12 -6
- package/dist/components/chat/utils/compact-card-classes.d.ts +4 -4
- package/dist/components/chat/utils/compact-card-classes.d.ts.map +1 -1
- package/dist/components/chat/utils/compact-card-classes.js +2 -2
- package/dist/components/contact/index.cjs +17 -15
- package/dist/components/content-loading-container.d.ts +1 -1
- package/dist/components/content-loading-container.d.ts.map +1 -1
- package/dist/components/content-loading-container.js +6 -7
- package/dist/components/docs/doc-viewer.d.ts.map +1 -1
- package/dist/components/docs/doc-viewer.js +3 -2
- package/dist/components/docs/index.cjs +20 -18
- package/dist/components/docs/skeletons.d.ts +7 -8
- package/dist/components/docs/skeletons.d.ts.map +1 -1
- package/dist/components/docs/skeletons.js +62 -61
- package/dist/components/embeds/embed-iframe.d.ts +6 -6
- package/dist/components/embeds/embed-iframe.d.ts.map +1 -1
- package/dist/components/embeds/embed-iframe.js +9 -4
- package/dist/components/embeds/index.cjs +19 -15
- package/dist/components/embeds/index.d.ts +2 -2
- package/dist/components/embeds/index.d.ts.map +1 -1
- package/dist/components/embeds/index.js +2 -1
- package/dist/components/embeds/linkedin-embed-client.d.ts.map +1 -1
- package/dist/components/embeds/linkedin-embed-client.js +7 -6
- package/dist/components/embeds/markdown-image.d.ts.map +1 -1
- package/dist/components/embeds/markdown-image.js +5 -3
- package/dist/components/embeds/og-link-preview.d.ts +19 -18
- package/dist/components/embeds/og-link-preview.d.ts.map +1 -1
- package/dist/components/embeds/og-link-preview.js +143 -88
- package/dist/components/embeds/reddit-embed-client.d.ts.map +1 -1
- package/dist/components/embeds/reddit-embed-client.js +10 -9
- package/dist/components/embeds/twitter-embed-client.d.ts.map +1 -1
- package/dist/components/embeds/twitter-embed-client.js +10 -9
- package/dist/components/faq/faq-section.d.ts.map +1 -1
- package/dist/components/faq/faq-section.js +9 -5
- package/dist/components/faq/index.cjs +18 -16
- package/dist/components/features/board/ticket-card-skeleton.js +8 -8
- package/dist/components/features/capability-explorer.d.ts +3 -1
- package/dist/components/features/capability-explorer.d.ts.map +1 -1
- package/dist/components/features/capability-explorer.js +27 -24
- package/dist/components/features/devices/device-selector/device-selector-skeleton.d.ts +5 -2
- package/dist/components/features/devices/device-selector/device-selector-skeleton.d.ts.map +1 -1
- package/dist/components/features/devices/device-selector/device-selector-skeleton.js +2 -2
- package/dist/components/features/devices/device-selector/device-selector.d.ts +1 -1
- package/dist/components/features/devices/device-selector/device-selector.d.ts.map +1 -1
- package/dist/components/features/devices/device-selector/device-selector.js +2 -0
- package/dist/components/features/devices/device-selector/device-selector.types.d.ts +2 -0
- package/dist/components/features/devices/device-selector/device-selector.types.d.ts.map +1 -1
- package/dist/components/features/devices/devices-grid.d.ts +3 -1
- package/dist/components/features/devices/devices-grid.d.ts.map +1 -1
- package/dist/components/features/devices/devices-grid.js +3 -2
- package/dist/components/features/devices/devices-panel-view.d.ts +6 -1
- package/dist/components/features/devices/devices-panel-view.d.ts.map +1 -1
- package/dist/components/features/devices/devices-panel-view.js +4 -1
- package/dist/components/features/devices/devices-table-columns.d.ts +3 -1
- package/dist/components/features/devices/devices-table-columns.d.ts.map +1 -1
- package/dist/components/features/devices/devices-table-columns.js +2 -0
- package/dist/components/features/index.cjs +18 -14
- package/dist/components/features/logs/logs-table-view.d.ts +3 -1
- package/dist/components/features/logs/logs-table-view.d.ts.map +1 -1
- package/dist/components/features/logs/logs-table-view.js +2 -2
- package/dist/components/features/model-token-rates.d.ts +4 -1
- package/dist/components/features/model-token-rates.d.ts.map +1 -1
- package/dist/components/features/model-token-rates.js +18 -23
- package/dist/components/features/notifications/index.d.ts +2 -2
- package/dist/components/features/notifications/index.d.ts.map +1 -1
- package/dist/components/features/notifications/index.js +2 -1
- package/dist/components/features/notifications/notification-drawer.d.ts.map +1 -1
- package/dist/components/features/notifications/notification-drawer.js +9 -16
- package/dist/components/features/notifications/notification-tile.d.ts +14 -0
- package/dist/components/features/notifications/notification-tile.d.ts.map +1 -1
- package/dist/components/features/notifications/notification-tile.js +36 -1
- package/dist/components/features/policies/policy-summary-cards.js +2 -2
- package/dist/components/features/push-button-selector.d.ts.map +1 -1
- package/dist/components/features/push-button-selector.js +12 -7
- package/dist/components/features/remote-session/remote-desktop-view.d.ts +4 -1
- package/dist/components/features/remote-session/remote-desktop-view.d.ts.map +1 -1
- package/dist/components/features/remote-session/remote-desktop-view.js +14 -10
- package/dist/components/features/waitlist-form.d.ts.map +1 -1
- package/dist/components/features/waitlist-form.js +6 -5
- package/dist/components/help-center-pages/download-apps-page.d.ts.map +1 -1
- package/dist/components/help-center-pages/download-apps-page.js +2 -1
- package/dist/components/help-center-pages/index.cjs +127 -119
- package/dist/components/help-center-pages/trust-center-page.d.ts +4 -1
- package/dist/components/help-center-pages/trust-center-page.d.ts.map +1 -1
- package/dist/components/help-center-pages/trust-center-page.js +3 -2
- package/dist/components/help-center-pages/trust-center-sections.d.ts +4 -1
- package/dist/components/help-center-pages/trust-center-sections.d.ts.map +1 -1
- package/dist/components/help-center-pages/trust-center-sections.js +5 -2
- package/dist/components/index.cjs +70 -112
- package/dist/components/index.d.ts +0 -2
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +0 -2
- package/dist/components/layout/title-block.d.ts.map +1 -1
- package/dist/components/layout/title-block.js +18 -11
- package/dist/components/loading/card-skeleton.d.ts +6 -3
- package/dist/components/loading/card-skeleton.d.ts.map +1 -1
- package/dist/components/loading/card-skeleton.js +7 -27
- package/dist/components/loading/category-card-skeleton.d.ts.map +1 -1
- package/dist/components/loading/category-card-skeleton.js +2 -4
- package/dist/components/loading/category-vendor-selector-skeleton.d.ts +3 -1
- package/dist/components/loading/category-vendor-selector-skeleton.d.ts.map +1 -1
- package/dist/components/loading/category-vendor-selector-skeleton.js +9 -4
- package/dist/components/loading/device-card-skeleton.d.ts +18 -9
- package/dist/components/loading/device-card-skeleton.d.ts.map +1 -1
- package/dist/components/loading/device-card-skeleton.js +30 -21
- package/dist/components/loading/index.d.ts +3 -4
- package/dist/components/loading/index.d.ts.map +1 -1
- package/dist/components/loading/index.js +6 -29
- package/dist/components/loading/loading-region.d.ts +33 -0
- package/dist/components/loading/loading-region.d.ts.map +1 -0
- package/dist/components/loading/loading-region.js +22 -0
- package/dist/components/loading/margin-report-skeleton.d.ts +3 -1
- package/dist/components/loading/margin-report-skeleton.d.ts.map +1 -1
- package/dist/components/loading/margin-report-skeleton.js +70 -61
- package/dist/components/loading/msp-profile-form-skeleton.d.ts +3 -1
- package/dist/components/loading/msp-profile-form-skeleton.d.ts.map +1 -1
- package/dist/components/loading/msp-profile-form-skeleton.js +6 -5
- package/dist/components/loading/organization-card-skeleton.d.ts +3 -1
- package/dist/components/loading/organization-card-skeleton.d.ts.map +1 -1
- package/dist/components/loading/organization-card-skeleton.js +5 -5
- package/dist/components/loading/organization-icon-skeleton.d.ts.map +1 -1
- package/dist/components/loading/organization-icon-skeleton.js +2 -1
- package/dist/components/loading/page-layout-skeleton.d.ts +21 -6
- package/dist/components/loading/page-layout-skeleton.d.ts.map +1 -1
- package/dist/components/loading/page-layout-skeleton.js +283 -266
- package/dist/components/loading/settings-form-skeleton.d.ts +17 -0
- package/dist/components/loading/settings-form-skeleton.d.ts.map +1 -0
- package/dist/components/loading/settings-form-skeleton.js +42 -0
- package/dist/components/loading/unified-skeleton.d.ts +11 -4
- package/dist/components/loading/unified-skeleton.d.ts.map +1 -1
- package/dist/components/loading/unified-skeleton.js +14 -89
- package/dist/components/loading/wizard-layout-skeleton.d.ts +3 -1
- package/dist/components/loading/wizard-layout-skeleton.d.ts.map +1 -1
- package/dist/components/loading/wizard-layout-skeleton.js +3 -2
- package/dist/components/media-carousel.d.ts.map +1 -1
- package/dist/components/media-carousel.js +2 -1
- package/dist/components/meeting-scheduler/booking-form.d.ts.map +1 -1
- package/dist/components/meeting-scheduler/booking-form.js +14 -8
- package/dist/components/meeting-scheduler/context-panel.d.ts.map +1 -1
- package/dist/components/meeting-scheduler/context-panel.js +8 -7
- package/dist/components/meeting-scheduler/directory.d.ts.map +1 -1
- package/dist/components/meeting-scheduler/directory.js +10 -9
- package/dist/components/meeting-scheduler/index.cjs +85 -75
- package/dist/components/meeting-scheduler/index.d.ts.map +1 -1
- package/dist/components/meeting-scheduler/index.js +3 -2
- package/dist/components/meeting-scheduler/modal-header.d.ts.map +1 -1
- package/dist/components/meeting-scheduler/modal-header.js +8 -7
- package/dist/components/meeting-scheduler/slot-picker.d.ts.map +1 -1
- package/dist/components/meeting-scheduler/slot-picker.js +4 -3
- package/dist/components/navigation/app-header.d.ts.map +1 -1
- package/dist/components/navigation/app-header.js +8 -7
- package/dist/components/navigation/index.cjs +19 -17
- package/dist/components/navigation/multi-level-navigation.d.ts.map +1 -1
- package/dist/components/navigation/multi-level-navigation.js +3 -2
- package/dist/components/navigation/navigation-sidebar-item.d.ts.map +1 -1
- package/dist/components/navigation/navigation-sidebar-item.js +3 -2
- package/dist/components/onboarding-guides/index.cjs +19 -17
- package/dist/components/onboarding-guides/onboarding-guides-catalog-skeleton.d.ts +4 -1
- package/dist/components/onboarding-guides/onboarding-guides-catalog-skeleton.d.ts.map +1 -1
- package/dist/components/onboarding-guides/onboarding-guides-catalog-skeleton.js +12 -8
- package/dist/components/product-demo/index.cjs +16 -15
- package/dist/components/product-demo/product-screen.d.ts.map +1 -1
- package/dist/components/product-demo/product-screen.js +4 -4
- package/dist/components/profile/ProfileLoadingSkeleton.d.ts +3 -1
- package/dist/components/profile/ProfileLoadingSkeleton.d.ts.map +1 -1
- package/dist/components/profile/ProfileLoadingSkeleton.js +10 -8
- package/dist/components/related-content/index.cjs +7 -5
- package/dist/components/related-content/related-content-section.d.ts.map +1 -1
- package/dist/components/related-content/related-content-section.js +3 -2
- package/dist/components/shared/delivery/delivery-table.d.ts.map +1 -1
- package/dist/components/shared/delivery/delivery-table.js +8 -7
- package/dist/components/shared/detail-page-skeleton.d.ts +5 -1
- package/dist/components/shared/detail-page-skeleton.d.ts.map +1 -1
- package/dist/components/shared/detail-page-skeleton.js +18 -14
- package/dist/components/shared/dev-section/dev-card-row.d.ts +3 -1
- package/dist/components/shared/dev-section/dev-card-row.d.ts.map +1 -1
- package/dist/components/shared/dev-section/dev-card-row.js +22 -9
- package/dist/components/shared/legal-document/legal-document-page.d.ts.map +1 -1
- package/dist/components/shared/legal-document/legal-document-page.js +8 -7
- package/dist/components/shared/onboarding/onboarding-step-card.d.ts.map +1 -1
- package/dist/components/shared/onboarding/onboarding-step-card.js +3 -2
- package/dist/components/shared/onboarding/onboarding-walkthrough.d.ts.map +1 -1
- package/dist/components/shared/onboarding/onboarding-walkthrough.js +2 -1
- package/dist/components/shared/product-release/index.d.ts +0 -1
- package/dist/components/shared/product-release/index.d.ts.map +1 -1
- package/dist/components/shared/product-release/index.js +1 -3
- package/dist/components/shared/product-release/product-release-card-skeleton.d.ts.map +1 -1
- package/dist/components/shared/product-release/product-release-card-skeleton.js +21 -20
- package/dist/components/shared/product-release/product-releases-view.d.ts.map +1 -1
- package/dist/components/shared/product-release/product-releases-view.js +2 -1
- package/dist/components/shared/roadmap/roadmap-grid-skeleton.d.ts +6 -13
- package/dist/components/shared/roadmap/roadmap-grid-skeleton.d.ts.map +1 -1
- package/dist/components/shared/roadmap/roadmap-grid-skeleton.js +13 -25
- package/dist/components/tickets/help-center-create-form.d.ts +4 -1
- package/dist/components/tickets/help-center-create-form.d.ts.map +1 -1
- package/dist/components/tickets/help-center-create-form.js +38 -26
- package/dist/components/tickets/index.cjs +22 -20
- package/dist/components/tickets/ticket-center.d.ts.map +1 -1
- package/dist/components/tickets/ticket-center.js +13 -10
- package/dist/components/tickets/ticket-detail-drawer.d.ts.map +1 -1
- package/dist/components/tickets/ticket-detail-drawer.js +2 -1
- package/dist/components/ui/admin-form-drawer.d.ts.map +1 -1
- package/dist/components/ui/admin-form-drawer.js +6 -8
- package/dist/components/ui/admin-form-modal.d.ts.map +1 -1
- package/dist/components/ui/admin-form-modal.js +12 -11
- package/dist/components/ui/analyzing-state.d.ts +1 -1
- package/dist/components/ui/analyzing-state.d.ts.map +1 -1
- package/dist/components/ui/analyzing-state.js +4 -10
- package/dist/components/ui/content-loader.d.ts +5 -1
- package/dist/components/ui/content-loader.d.ts.map +1 -1
- package/dist/components/ui/content-loader.js +27 -23
- package/dist/components/ui/dashboard-info-card.d.ts +17 -3
- package/dist/components/ui/dashboard-info-card.d.ts.map +1 -1
- package/dist/components/ui/dashboard-info-card.js +30 -10
- package/dist/components/ui/data-attribution.d.ts +6 -0
- package/dist/components/ui/data-attribution.d.ts.map +1 -1
- package/dist/components/ui/data-attribution.js +12 -1
- package/dist/components/ui/data-table/data-table-body.d.ts +6 -1
- package/dist/components/ui/data-table/data-table-body.d.ts.map +1 -1
- package/dist/components/ui/data-table/data-table-body.js +3 -1
- package/dist/components/ui/data-table/data-table-infinite-footer.d.ts.map +1 -1
- package/dist/components/ui/data-table/data-table-infinite-footer.js +3 -1
- package/dist/components/ui/data-table/data-table-skeleton.d.ts.map +1 -1
- package/dist/components/ui/data-table/data-table-skeleton.js +7 -5
- package/dist/components/ui/feature-card.d.ts.map +1 -1
- package/dist/components/ui/feature-card.js +7 -9
- package/dist/components/ui/file-manager/file-manager-skeleton.d.ts +3 -1
- package/dist/components/ui/file-manager/file-manager-skeleton.d.ts.map +1 -1
- package/dist/components/ui/file-manager/file-manager-skeleton.js +27 -21
- package/dist/components/ui/file-manager/file-manager-table.js +10 -10
- package/dist/components/ui/file-manager/index.cjs +45 -36
- package/dist/components/ui/filter-modal.d.ts.map +1 -1
- package/dist/components/ui/filter-modal.js +5 -5
- package/dist/components/ui/filter-pill-row.d.ts +10 -0
- package/dist/components/ui/filter-pill-row.d.ts.map +1 -1
- package/dist/components/ui/filter-pill-row.js +8 -1
- package/dist/components/ui/index.cjs +19 -28
- package/dist/components/ui/index.d.ts +0 -1
- package/dist/components/ui/index.d.ts.map +1 -1
- package/dist/components/ui/index.js +0 -1
- package/dist/components/ui/layout-hold.d.ts +5 -4
- package/dist/components/ui/layout-hold.d.ts.map +1 -1
- package/dist/components/ui/layout-hold.js +20 -29
- package/dist/components/ui/markdown/base-components.js +1 -1
- package/dist/components/ui/page-actions.d.ts.map +1 -1
- package/dist/components/ui/page-actions.js +6 -8
- package/dist/components/ui/photo-wall.d.ts.map +1 -1
- package/dist/components/ui/photo-wall.js +11 -18
- package/dist/components/ui/query-report-table/query-report-table-skeleton.d.ts +1 -1
- package/dist/components/ui/query-report-table/query-report-table-skeleton.d.ts.map +1 -1
- package/dist/components/ui/query-report-table/query-report-table-skeleton.js +28 -18
- package/dist/components/ui/query-report-table/query-report-table.d.ts +1 -1
- package/dist/components/ui/query-report-table/query-report-table.d.ts.map +1 -1
- package/dist/components/ui/query-report-table/query-report-table.js +3 -1
- package/dist/components/ui/query-report-table/types.d.ts +4 -0
- package/dist/components/ui/query-report-table/types.d.ts.map +1 -1
- package/dist/components/ui/skeleton-surface.d.ts +7 -0
- package/dist/components/ui/skeleton-surface.d.ts.map +1 -0
- package/dist/components/ui/skeleton-surface.js +5 -0
- package/dist/components/ui/table/table-skeleton.d.ts.map +1 -1
- package/dist/components/ui/table/table-skeleton.js +11 -13
- package/dist/components/ui/test-run.d.ts +6 -4
- package/dist/components/ui/test-run.d.ts.map +1 -1
- package/dist/components/ui/test-run.js +9 -5
- package/dist/{devices-V55KQCAL.cjs → devices-FVXAGKVX.cjs} +17 -15
- package/dist/{embeddable-chat-5CDR4I6E.cjs → embeddable-chat-SNYQSMS7.cjs} +79 -77
- package/dist/index.cjs +24 -31
- package/dist/{knowledge-S3VGDRKR.cjs → knowledge-ZL3ZHBSL.cjs} +17 -15
- package/dist/{logs-K5E2BGZE.cjs → logs-KQCWDIOB.cjs} +24 -22
- package/dist/{policies-BWU4FRFE.cjs → policies-ARDCZ3CT.cjs} +20 -18
- package/dist/{remote-session-IYT4LWJC.cjs → remote-session-ZKP2W3IS.cjs} +9 -7
- package/dist/{scripts-25UPGXZU.cjs → scripts-ZAMVWCY4.cjs} +23 -21
- package/dist/{software-update-F6UC7ULZ.cjs → software-update-6F7BIYS3.cjs} +20 -18
- package/dist/{tickets-board-4MT6ZB4F.cjs → tickets-board-BNW4AYFL.cjs} +11 -10
- package/dist/utils/index.cjs +49 -48
- package/dist/utils/markdown-to-plain.d.ts.map +1 -1
- package/dist/utils/markdown-to-plain.js +12 -7
- package/package.json +7 -2
- package/src/components/categories-cart.tsx +2 -4
- package/src/components/chat/chat-container.tsx +4 -4
- package/src/components/chat/chat-context-picker.tsx +3 -2
- package/src/components/chat/chat-message-row.tsx +6 -7
- package/src/components/chat/chat-message-skeleton.tsx +11 -6
- package/src/components/chat/chat-sidebar-skeleton.tsx +4 -3
- package/src/components/chat/chat-top-navigation.tsx +4 -4
- package/src/components/chat/context-items-list.tsx +9 -3
- package/src/components/chat/entity-cards/admin-content-card-grid.tsx +65 -18
- package/src/components/chat/entity-cards/admin-content-card.tsx +2 -1
- package/src/components/chat/entity-cards/blog-card.tsx +13 -12
- package/src/components/chat/entity-cards/campaign-card-admin.tsx +5 -4
- package/src/components/chat/entity-cards/case-study-card.tsx +19 -18
- package/src/components/chat/entity-cards/chat-ticket-item.tsx +5 -5
- package/src/components/chat/entity-cards/customer-interview-card.tsx +15 -14
- package/src/components/chat/entity-cards/data-room-doc-card.tsx +7 -6
- package/src/components/chat/entity-cards/design-doc-card.tsx +0 -2
- package/src/components/chat/entity-cards/generic-entity-card.tsx +8 -7
- package/src/components/chat/entity-cards/github-activity-card.tsx +11 -10
- package/src/components/chat/entity-cards/hubspot-ticket-card.tsx +16 -15
- package/src/components/chat/entity-cards/index.ts +2 -0
- package/src/components/chat/entity-cards/investor-update-card.tsx +12 -11
- package/src/components/chat/entity-cards/onboarding-guide-card.tsx +21 -22
- package/src/components/chat/entity-cards/program-card.tsx +29 -28
- package/src/components/chat/entity-cards/roadmap-card.tsx +22 -23
- package/src/components/chat/entity-cards/slack-message-card.tsx +12 -11
- package/src/components/chat/guide-welcome.tsx +2 -2
- package/src/components/chat/mingo-archive-list.tsx +2 -1
- package/src/components/chat/mingo-chat-history.tsx +18 -9
- package/src/components/chat/mingo-chat-rail.tsx +2 -1
- package/src/components/chat/mingo-info-card.tsx +6 -5
- package/src/components/chat/mingo-onboarding-card-skeleton.tsx +15 -13
- package/src/components/chat/model-display.tsx +4 -4
- package/src/components/chat/msp-organization-card-skeleton.tsx +5 -5
- package/src/components/chat/quick-action-chip.tsx +17 -14
- package/src/components/chat/utils/compact-card-classes.ts +4 -5
- package/src/components/content-loading-container.tsx +7 -8
- package/src/components/docs/doc-viewer.tsx +3 -2
- package/src/components/docs/skeletons.tsx +64 -63
- package/src/components/embeds/embed-iframe.tsx +16 -9
- package/src/components/embeds/index.ts +2 -2
- package/src/components/embeds/linkedin-embed-client.tsx +7 -6
- package/src/components/embeds/markdown-image.tsx +5 -3
- package/src/components/embeds/og-link-preview.tsx +162 -79
- package/src/components/embeds/reddit-embed-client.tsx +10 -9
- package/src/components/embeds/twitter-embed-client.tsx +10 -9
- package/src/components/faq/faq-section.tsx +13 -6
- package/src/components/features/board/ticket-card-skeleton.tsx +8 -8
- package/src/components/features/capability-explorer.tsx +61 -30
- package/src/components/features/devices/device-selector/device-selector-skeleton.tsx +9 -3
- package/src/components/features/devices/device-selector/device-selector.tsx +2 -0
- package/src/components/features/devices/device-selector/device-selector.types.ts +2 -0
- package/src/components/features/devices/devices-grid.tsx +4 -1
- package/src/components/features/devices/devices-panel-view.tsx +9 -1
- package/src/components/features/devices/devices-table-columns.tsx +4 -0
- package/src/components/features/logs/logs-table-view.tsx +4 -2
- package/src/components/features/model-token-rates.tsx +27 -24
- package/src/components/features/notifications/index.ts +2 -2
- package/src/components/features/notifications/notification-drawer.tsx +7 -10
- package/src/components/features/notifications/notification-tile.tsx +57 -0
- package/src/components/features/policies/policy-summary-cards.tsx +2 -2
- package/src/components/features/push-button-selector.tsx +20 -11
- package/src/components/features/remote-session/remote-desktop-view.tsx +26 -16
- package/src/components/features/waitlist-form.tsx +6 -5
- package/src/components/help-center-pages/download-apps-page.tsx +3 -2
- package/src/components/help-center-pages/trust-center-page.tsx +6 -2
- package/src/components/help-center-pages/trust-center-sections.tsx +9 -3
- package/src/components/index.ts +0 -2
- package/src/components/layout/title-block.tsx +17 -15
- package/src/components/loading/card-skeleton.tsx +14 -46
- package/src/components/loading/category-card-skeleton.tsx +2 -4
- package/src/components/loading/category-vendor-selector-skeleton.tsx +12 -5
- package/src/components/loading/device-card-skeleton.tsx +58 -51
- package/src/components/loading/index.ts +5 -19
- package/src/components/loading/loading-region.tsx +60 -0
- package/src/components/loading/margin-report-skeleton.tsx +45 -34
- package/src/components/loading/msp-profile-form-skeleton.tsx +9 -6
- package/src/components/loading/organization-card-skeleton.tsx +8 -6
- package/src/components/loading/organization-icon-skeleton.tsx +3 -2
- package/src/components/loading/page-layout-skeleton.tsx +162 -133
- package/src/components/loading/settings-form-skeleton.tsx +52 -0
- package/src/components/loading/unified-skeleton.tsx +26 -71
- package/src/components/loading/wizard-layout-skeleton.tsx +6 -3
- package/src/components/media-carousel.tsx +2 -1
- package/src/components/meeting-scheduler/booking-form.tsx +10 -7
- package/src/components/meeting-scheduler/context-panel.tsx +8 -7
- package/src/components/meeting-scheduler/directory.tsx +10 -9
- package/src/components/meeting-scheduler/index.tsx +5 -4
- package/src/components/meeting-scheduler/modal-header.tsx +8 -7
- package/src/components/meeting-scheduler/slot-picker.tsx +4 -3
- package/src/components/navigation/app-header.tsx +8 -7
- package/src/components/navigation/multi-level-navigation.tsx +3 -2
- package/src/components/navigation/navigation-sidebar-item.tsx +3 -2
- package/src/components/onboarding-guides/onboarding-guides-catalog-skeleton.tsx +17 -10
- package/src/components/product-demo/product-screen.tsx +4 -4
- package/src/components/profile/ProfileLoadingSkeleton.tsx +13 -9
- package/src/components/related-content/related-content-section.tsx +5 -4
- package/src/components/shared/delivery/delivery-table.tsx +8 -7
- package/src/components/shared/detail-page-skeleton.tsx +22 -14
- package/src/components/shared/dev-section/dev-card-row.tsx +23 -10
- package/src/components/shared/legal-document/legal-document-page.tsx +8 -7
- package/src/components/shared/onboarding/onboarding-step-card.tsx +3 -2
- package/src/components/shared/onboarding/onboarding-walkthrough.tsx +2 -1
- package/src/components/shared/product-release/index.ts +0 -1
- package/src/components/shared/product-release/product-release-card-skeleton.tsx +23 -25
- package/src/components/shared/product-release/product-releases-view.tsx +3 -2
- package/src/components/shared/roadmap/roadmap-grid-skeleton.tsx +14 -56
- package/src/components/tickets/help-center-create-form.tsx +23 -12
- package/src/components/tickets/ticket-center.tsx +17 -11
- package/src/components/tickets/ticket-detail-drawer.tsx +3 -2
- package/src/components/ui/admin-form-drawer.tsx +7 -7
- package/src/components/ui/admin-form-modal.tsx +9 -8
- package/src/components/ui/analyzing-state.tsx +5 -8
- package/src/components/ui/content-loader.tsx +31 -23
- package/src/components/ui/dashboard-info-card.tsx +81 -20
- package/src/components/ui/data-attribution.tsx +18 -0
- package/src/components/ui/data-table/data-table-body.tsx +9 -2
- package/src/components/ui/data-table/data-table-infinite-footer.tsx +4 -2
- package/src/components/ui/data-table/data-table-skeleton.tsx +8 -5
- package/src/components/ui/feature-card.tsx +27 -11
- package/src/components/ui/file-manager/file-manager-skeleton.tsx +30 -22
- package/src/components/ui/file-manager/file-manager-table.tsx +10 -10
- package/src/components/ui/filter-modal.tsx +5 -5
- package/src/components/ui/filter-pill-row.tsx +19 -0
- package/src/components/ui/index.ts +0 -1
- package/src/components/ui/layout-hold.tsx +30 -38
- package/src/components/ui/markdown/base-components.tsx +1 -1
- package/src/components/ui/page-actions.tsx +10 -8
- package/src/components/ui/photo-wall.tsx +4 -7
- package/src/components/ui/query-report-table/query-report-table-skeleton.tsx +13 -7
- package/src/components/ui/query-report-table/query-report-table.tsx +2 -0
- package/src/components/ui/query-report-table/types.ts +4 -0
- package/src/components/ui/skeleton-surface.ts +6 -0
- package/src/components/ui/table/table-skeleton.tsx +11 -13
- package/src/components/ui/test-run.tsx +30 -22
- package/src/styles/ods-colors.css +2 -2
- package/src/utils/markdown-to-plain.ts +25 -16
- package/dist/chunk-5M5C6UV4.cjs +0 -125
- package/dist/components/dynamic-skeleton.d.ts +0 -108
- package/dist/components/dynamic-skeleton.d.ts.map +0 -1
- package/dist/components/dynamic-skeleton.js +0 -221
- package/dist/components/loading/content-skeleton.d.ts +0 -73
- package/dist/components/loading/content-skeleton.d.ts.map +0 -1
- package/dist/components/loading/content-skeleton.js +0 -217
- package/dist/components/loading/users-grid-skeleton.d.ts +0 -7
- package/dist/components/loading/users-grid-skeleton.d.ts.map +0 -1
- package/dist/components/loading/users-grid-skeleton.js +0 -13
- package/dist/components/shared/product-release/release-detail-skeleton.d.ts +0 -2
- package/dist/components/shared/product-release/release-detail-skeleton.d.ts.map +0 -1
- package/dist/components/shared/product-release/release-detail-skeleton.js +0 -9
- package/dist/components/skeleton.d.ts +0 -4
- package/dist/components/skeleton.d.ts.map +0 -1
- package/dist/components/skeleton.js +0 -9
- package/dist/components/ui/skeleton.d.ts +0 -44
- package/dist/components/ui/skeleton.d.ts.map +0 -1
- package/dist/components/ui/skeleton.js +0 -103
- package/dist/components/vendor-page-skeleton.d.ts +0 -2
- package/dist/components/vendor-page-skeleton.d.ts.map +0 -1
- package/dist/components/vendor-page-skeleton.js +0 -9
- package/src/components/dynamic-skeleton.tsx +0 -365
- package/src/components/loading/content-skeleton.tsx +0 -374
- package/src/components/loading/users-grid-skeleton.tsx +0 -36
- package/src/components/shared/product-release/release-detail-skeleton.tsx +0 -7
- package/src/components/skeleton.tsx +0 -8
- package/src/components/ui/skeleton.tsx +0 -173
- package/src/components/vendor-page-skeleton.tsx +0 -7
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
3
|
import { cn } from '../../utils/cn';
|
|
4
|
-
import {
|
|
4
|
+
import { LoadingRegion } from '../loading/loading-region';
|
|
5
|
+
import { UnifiedSkeleton } from '../loading/unified-skeleton';
|
|
5
6
|
|
|
6
7
|
export interface MingoOnboardingCardSkeletonProps {
|
|
7
8
|
/** Title bar width — Tailwind width utility. Defaults to `w-32`. Vary
|
|
@@ -54,23 +55,23 @@ export function MingoOnboardingCardSkeleton({
|
|
|
54
55
|
<div className="flex w-full flex-col gap-[var(--spacing-system-xxs)]">
|
|
55
56
|
{/* Title row — icon + title bar + right-rail slash bar. */}
|
|
56
57
|
<div className="flex w-full items-center gap-[var(--spacing-system-xxs)]">
|
|
57
|
-
<
|
|
58
|
-
<
|
|
58
|
+
<UnifiedSkeleton className="size-4 shrink-0 rounded-sm" />
|
|
59
|
+
<UnifiedSkeleton className={cn('h-3.5 rounded-sm', titleWidth)} />
|
|
59
60
|
<span className="flex-1" />
|
|
60
|
-
<
|
|
61
|
+
<UnifiedSkeleton className={cn('h-3.5 shrink-0 rounded-sm', slashWidth)} />
|
|
61
62
|
</div>
|
|
62
63
|
{/* Description — 1 or 2 lines; second line is 70% so the
|
|
63
64
|
* ragged edge mimics natural text wrapping. */}
|
|
64
65
|
<div className="flex flex-col gap-[var(--spacing-system-xxs)]">
|
|
65
|
-
<
|
|
66
|
-
{descriptionLines === 2 ? <
|
|
66
|
+
<UnifiedSkeleton className="h-3.5 w-full rounded-sm" />
|
|
67
|
+
{descriptionLines === 2 ? <UnifiedSkeleton className="h-3.5 w-[70%] rounded-sm" /> : null}
|
|
67
68
|
</div>
|
|
68
69
|
{/* Action chip row — `h-7` matches the live card's outline
|
|
69
70
|
* chips so the skeleton sits at exactly the same height. */}
|
|
70
71
|
{hasChips ? (
|
|
71
72
|
<div className="mt-[var(--spacing-system-xs)] flex flex-wrap items-center gap-[var(--spacing-system-xxs)]">
|
|
72
73
|
{chipWidths.map((w, i) => (
|
|
73
|
-
<
|
|
74
|
+
<UnifiedSkeleton key={i} className={cn('h-7 rounded-md', w)} />
|
|
74
75
|
))}
|
|
75
76
|
</div>
|
|
76
77
|
) : null}
|
|
@@ -80,6 +81,8 @@ export function MingoOnboardingCardSkeleton({
|
|
|
80
81
|
}
|
|
81
82
|
|
|
82
83
|
export interface MingoOnboardingListSkeletonProps {
|
|
84
|
+
/** The loading state announces itself (`LoadingRegion`). `false` inside another loading region. Default `true`. */
|
|
85
|
+
region?: boolean;
|
|
83
86
|
/** Row count. Defaults to 6 — fills the typical empty-state
|
|
84
87
|
* viewport so the loader doesn't pop in shorter than the resolved
|
|
85
88
|
* list. */
|
|
@@ -120,12 +123,11 @@ const ROW_VARIANTS: ReadonlyArray<{
|
|
|
120
123
|
{ titleWidth: 'w-24', slashWidth: 'w-16', descriptionLines: 2 },
|
|
121
124
|
];
|
|
122
125
|
|
|
123
|
-
export function MingoOnboardingListSkeleton({ rows = 6, className }: MingoOnboardingListSkeletonProps) {
|
|
126
|
+
export function MingoOnboardingListSkeleton({ region = true, rows = 6, className }: MingoOnboardingListSkeletonProps) {
|
|
124
127
|
return (
|
|
125
|
-
<
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
aria-busy="true"
|
|
128
|
+
<LoadingRegion
|
|
129
|
+
label="Loading slash commands"
|
|
130
|
+
announce={region}
|
|
129
131
|
className={cn('overflow-hidden rounded-md border border-ods-border bg-ods-card', className)}
|
|
130
132
|
>
|
|
131
133
|
{Array.from({ length: rows }).map((_, i) => {
|
|
@@ -139,6 +141,6 @@ export function MingoOnboardingListSkeleton({ rows = 6, className }: MingoOnboar
|
|
|
139
141
|
/>
|
|
140
142
|
);
|
|
141
143
|
})}
|
|
142
|
-
</
|
|
144
|
+
</LoadingRegion>
|
|
143
145
|
);
|
|
144
146
|
}
|
|
@@ -4,7 +4,7 @@ import React from 'react';
|
|
|
4
4
|
import { cn } from '../../utils/cn';
|
|
5
5
|
import { HoverCard, HoverCardContent, HoverCardTrigger } from '../hover-card';
|
|
6
6
|
import { AnthropicLogoGreyIcon, GeminiLogoGreyIcon, OpenaiLogoGreyIcon } from '../icons-v2-generated';
|
|
7
|
-
import {
|
|
7
|
+
import { UnifiedSkeleton } from '../loading/unified-skeleton';
|
|
8
8
|
import { useChatAppearance } from './chat-appearance-context';
|
|
9
9
|
import type { ModelDisplayProps, ModelUsageBreakdown } from './types';
|
|
10
10
|
import { CHAT_APPEARANCE } from './types/chat.types';
|
|
@@ -185,11 +185,11 @@ const ModelDisplaySkeleton = React.forwardRef<HTMLDivElement, ModelDisplaySkelet
|
|
|
185
185
|
({ className, showTokens = false, ...props }, ref) => (
|
|
186
186
|
<div ref={ref} aria-hidden className={cn('flex items-center gap-1 text-h6', className)} {...props}>
|
|
187
187
|
{/* provider icon */}
|
|
188
|
-
<
|
|
188
|
+
<UnifiedSkeleton className="h-5 w-4 shrink-0 rounded-sm" />
|
|
189
189
|
{/* model name */}
|
|
190
|
-
<
|
|
190
|
+
<UnifiedSkeleton className="h-5 w-24" />
|
|
191
191
|
{/* "X / Y tokens used" tail — only when tokens are expected */}
|
|
192
|
-
{showTokens && <
|
|
192
|
+
{showTokens && <UnifiedSkeleton className="ml-auto h-3 w-32" />}
|
|
193
193
|
</div>
|
|
194
194
|
),
|
|
195
195
|
);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
3
|
import { cn } from '../../utils/cn';
|
|
4
|
-
import {
|
|
4
|
+
import { UnifiedSkeleton } from '../loading/unified-skeleton';
|
|
5
5
|
|
|
6
6
|
export interface MspOrganizationCardSkeletonProps {
|
|
7
7
|
/** Appended to the root element. */
|
|
@@ -22,12 +22,12 @@ export function MspOrganizationCardSkeleton({ className }: MspOrganizationCardSk
|
|
|
22
22
|
className,
|
|
23
23
|
)}
|
|
24
24
|
>
|
|
25
|
-
<
|
|
25
|
+
<UnifiedSkeleton className="size-12 shrink-0 rounded-md" />
|
|
26
26
|
<div className="flex min-w-0 flex-1 flex-col justify-center gap-2 self-stretch">
|
|
27
|
-
<
|
|
28
|
-
<
|
|
27
|
+
<UnifiedSkeleton className="h-5 w-3/5 rounded-md" />
|
|
28
|
+
<UnifiedSkeleton className="h-4 w-2/5 rounded-md" />
|
|
29
29
|
</div>
|
|
30
|
-
<
|
|
30
|
+
<UnifiedSkeleton className="size-12 shrink-0 rounded-md" />
|
|
31
31
|
</div>
|
|
32
32
|
);
|
|
33
33
|
}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
|
-
import { type
|
|
3
|
+
import { type ReactNode, isValidElement } from 'react';
|
|
4
4
|
import { cn } from '../../utils/cn';
|
|
5
5
|
import { EntityIcon, type EntityIconValue } from '../icon-display';
|
|
6
|
+
import { UnifiedSkeleton } from '../loading/unified-skeleton';
|
|
6
7
|
import { Tag } from '../ui/tag';
|
|
7
8
|
|
|
8
9
|
// =============================================================================
|
|
@@ -201,18 +202,11 @@ export interface QuickActionChipSkeletonProps {
|
|
|
201
202
|
className?: string;
|
|
202
203
|
}
|
|
203
204
|
|
|
204
|
-
/** Pulse bar inside the chip skeleton — the standard `ui/skeleton` treatment
|
|
205
|
-
* (`animate-pulse bg-ods-border`), as a SPAN so it stays valid phrasing
|
|
206
|
-
* content inside the Tag's label span. */
|
|
207
|
-
function ChipSkelBar({ className, style }: { className?: string; style?: CSSProperties }) {
|
|
208
|
-
return <span aria-hidden className={cn('animate-pulse rounded-md bg-ods-border', className)} style={style} />;
|
|
209
|
-
}
|
|
210
|
-
|
|
211
205
|
/**
|
|
212
206
|
* Loading placeholder for {@link QuickActionChipButton} — renders the REAL
|
|
213
|
-
* `Tag` (same height, padding, border, radius, icon box) with
|
|
214
|
-
*
|
|
215
|
-
* icon/lozenge/label slots, so a skeleton chip is 1:1 with a loaded chip by
|
|
207
|
+
* `Tag` (same height, padding, border, radius, icon box) with `UnifiedSkeleton`
|
|
208
|
+
* bars (as spans, so they stay valid phrasing content inside the Tag's label
|
|
209
|
+
* span) in the icon/lozenge/label slots, so a skeleton chip is 1:1 with a loaded chip by
|
|
216
210
|
* construction. Use anywhere quick actions stream in (chat empty states,
|
|
217
211
|
* marketing walls, deck panels).
|
|
218
212
|
*/
|
|
@@ -231,12 +225,21 @@ export function QuickActionChipSkeleton({
|
|
|
231
225
|
size={question ? 'sentence' : size}
|
|
232
226
|
className={cn(question && 'max-w-full', className)}
|
|
233
227
|
icon={
|
|
234
|
-
icon && !question ?
|
|
228
|
+
icon && !question ? (
|
|
229
|
+
<UnifiedSkeleton as="span" aria-hidden className={size === 'large' ? 'block size-5' : 'block size-4'} />
|
|
230
|
+
) : undefined
|
|
235
231
|
}
|
|
236
232
|
label={
|
|
237
233
|
<>
|
|
238
|
-
{lozenge &&
|
|
239
|
-
|
|
234
|
+
{lozenge && (
|
|
235
|
+
<UnifiedSkeleton as="span" aria-hidden className="mr-2 inline-block h-[16px] w-[26px] translate-y-[2px]" />
|
|
236
|
+
)}
|
|
237
|
+
<UnifiedSkeleton
|
|
238
|
+
as="span"
|
|
239
|
+
aria-hidden
|
|
240
|
+
className="inline-block h-[0.9em] translate-y-[0.08em]"
|
|
241
|
+
width={`${labelCh}ch`}
|
|
242
|
+
/>
|
|
240
243
|
</>
|
|
241
244
|
}
|
|
242
245
|
/>
|
|
@@ -26,17 +26,16 @@ export const COMPACT_CARD_OUTER =
|
|
|
26
26
|
export const COMPACT_CARD_OUTER_STATIC =
|
|
27
27
|
'my-1.5 flex items-start gap-3 w-full p-2 rounded-lg border border-ods-border bg-ods-card no-underline cursor-default';
|
|
28
28
|
|
|
29
|
-
/** Skeleton outer frame
|
|
29
|
+
/** Skeleton outer frame: same dimensions as loaded. Static; its placeholders are `UnifiedSkeleton`s. */
|
|
30
30
|
export const COMPACT_CARD_SKELETON_OUTER =
|
|
31
|
-
'my-1.5 flex w-full
|
|
31
|
+
'my-1.5 flex w-full items-start gap-3 rounded-lg border border-ods-border bg-ods-card p-2';
|
|
32
32
|
|
|
33
33
|
/** 56×56 image slot — for cards with a cover image. */
|
|
34
34
|
export const COMPACT_CARD_IMAGE_SLOT =
|
|
35
35
|
'relative block shrink-0 self-start w-14 h-14 aspect-square overflow-hidden rounded-md bg-ods-bg';
|
|
36
36
|
|
|
37
|
-
/** 56×56 placeholder slot for skeletons. */
|
|
38
|
-
export const COMPACT_CARD_SKELETON_IMAGE_SLOT =
|
|
39
|
-
'block h-14 w-14 aspect-square shrink-0 self-start rounded-md bg-ods-bg';
|
|
37
|
+
/** 56×56 placeholder slot for skeletons: the box of a `UnifiedSkeleton as="span"`, which draws the surface. */
|
|
38
|
+
export const COMPACT_CARD_SKELETON_IMAGE_SLOT = 'block h-14 w-14 aspect-square shrink-0 self-start rounded-md';
|
|
40
39
|
|
|
41
40
|
/** 56×56 icon slot — for cards without a cover image. */
|
|
42
41
|
export const COMPACT_CARD_ICON_SLOT =
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import type { ReactNode } from 'react';
|
|
4
4
|
import { cn } from '../utils/cn';
|
|
5
|
+
import { LoadingRegion } from './loading/loading-region';
|
|
5
6
|
|
|
6
7
|
interface ContentLoadingContainerProps {
|
|
7
8
|
/**
|
|
@@ -50,7 +51,7 @@ interface ContentLoadingContainerProps {
|
|
|
50
51
|
* ```tsx
|
|
51
52
|
* <ContentLoadingContainer
|
|
52
53
|
* isLoading={isLoadingVendors}
|
|
53
|
-
* skeletonComponent={<CardSkeletonGrid variant="vendor" count={12} />}
|
|
54
|
+
* skeletonComponent={<CardSkeletonGrid variant="vendor" count={12} region={false} />}
|
|
54
55
|
* minHeight="min-h-[800px]"
|
|
55
56
|
* >
|
|
56
57
|
* <VendorGrid vendors={vendors} />
|
|
@@ -72,23 +73,21 @@ export function ContentLoadingContainer({
|
|
|
72
73
|
style={{
|
|
73
74
|
transitionDuration: `${transitionDuration}ms`,
|
|
74
75
|
}}
|
|
75
|
-
role="region"
|
|
76
|
-
aria-label={isLoading ? 'Loading content' : 'Content loaded'}
|
|
77
|
-
aria-live="polite"
|
|
78
76
|
>
|
|
79
77
|
{/* Loading Skeleton Overlay */}
|
|
80
78
|
{isLoading && (
|
|
81
|
-
|
|
79
|
+
// The one announcement for this content: a `skeletonComponent` that has a region of its own
|
|
80
|
+
// takes `region={false}`.
|
|
81
|
+
<LoadingRegion
|
|
82
|
+
label="Loading content"
|
|
82
83
|
className="absolute inset-0 z-10 bg-ods-bg"
|
|
83
84
|
style={{
|
|
84
85
|
opacity: loadingOpacity,
|
|
85
86
|
transition: `opacity ${transitionDuration}ms ease-in-out`,
|
|
86
87
|
}}
|
|
87
|
-
role="status"
|
|
88
|
-
aria-label="Loading content"
|
|
89
88
|
>
|
|
90
89
|
{skeletonComponent}
|
|
91
|
-
</
|
|
90
|
+
</LoadingRegion>
|
|
92
91
|
)}
|
|
93
92
|
|
|
94
93
|
{/* Actual Content */}
|
|
@@ -8,6 +8,7 @@ import { findDocNodeByPath } from '../../utils/doc-tree-nav';
|
|
|
8
8
|
import { PageShell } from '../layout/article-detail-layout';
|
|
9
9
|
import { PageLayout } from '../layout/page-layout';
|
|
10
10
|
import { CategorySidebarSkeleton } from '../loading/page-layout-skeleton';
|
|
11
|
+
import { UnifiedSkeleton } from '../loading/unified-skeleton';
|
|
11
12
|
import { MultiLevelNavigation, MobileNavigationDropdown } from '../navigation/multi-level-navigation';
|
|
12
13
|
import { StickySectionNav } from '../navigation/sticky-section-nav';
|
|
13
14
|
import { PersistentSidebar, PersistentMobileDropdown } from '../persistent-filter-controls';
|
|
@@ -368,7 +369,7 @@ function DocViewerContent({
|
|
|
368
369
|
{isMarkdownContent && (isLoadingContent || isLoadingStructure) && (
|
|
369
370
|
<div className="hidden content-lg:block">
|
|
370
371
|
<div className="sticky top-24">
|
|
371
|
-
<
|
|
372
|
+
<UnifiedSkeleton className="mb-5 h-[14px] w-28 rounded" />
|
|
372
373
|
<div className="space-y-0">
|
|
373
374
|
{[130, 170, 190, 220, 110, 200, 80, 100, 120, 140, 90].map((w, i) => (
|
|
374
375
|
<div
|
|
@@ -377,7 +378,7 @@ function DocViewerContent({
|
|
|
377
378
|
i === 0 ? 'border-ods-accent' : 'border-transparent'
|
|
378
379
|
}`}
|
|
379
380
|
>
|
|
380
|
-
<
|
|
381
|
+
<UnifiedSkeleton className="h-[13px] rounded" width={w} />
|
|
381
382
|
</div>
|
|
382
383
|
))}
|
|
383
384
|
</div>
|
|
@@ -1,59 +1,67 @@
|
|
|
1
|
+
import { EmbedLoadingSkeleton } from '../embeds/embed-iframe';
|
|
2
|
+
import { LoadingRegion } from '../loading/loading-region';
|
|
3
|
+
import { UnifiedSkeleton } from '../loading/unified-skeleton';
|
|
1
4
|
/**
|
|
2
5
|
* Text-style skeleton — matches a rendered markdown article layout.
|
|
3
6
|
* Used by `<DocsHubPage>` as the default for `markdown` (and unknown
|
|
4
7
|
* document types). Embedders can override via `renderSkeleton`.
|
|
5
8
|
*/
|
|
6
|
-
export function MarkdownSkeleton(
|
|
9
|
+
export function MarkdownSkeleton({
|
|
10
|
+
region = true,
|
|
11
|
+
}: {
|
|
12
|
+
/** The loading state announces itself (`LoadingRegion`). `false` inside another loading region. Default `true`. */
|
|
13
|
+
region?: boolean;
|
|
14
|
+
} = {}) {
|
|
7
15
|
return (
|
|
8
|
-
<
|
|
16
|
+
<LoadingRegion label="Loading the document" announce={region} className="mt-6 space-y-7">
|
|
9
17
|
<div className="space-y-[14px]">
|
|
10
|
-
<
|
|
11
|
-
<
|
|
12
|
-
<
|
|
13
|
-
<
|
|
18
|
+
<UnifiedSkeleton className="h-[16px] w-full rounded" />
|
|
19
|
+
<UnifiedSkeleton className="h-[16px] w-full rounded" />
|
|
20
|
+
<UnifiedSkeleton className="h-[16px] w-full rounded" />
|
|
21
|
+
<UnifiedSkeleton className="h-[16px] w-3/4 rounded" />
|
|
14
22
|
</div>
|
|
15
23
|
<div className="space-y-[14px]">
|
|
16
|
-
<
|
|
17
|
-
<
|
|
18
|
-
<
|
|
19
|
-
<
|
|
24
|
+
<UnifiedSkeleton className="h-[16px] w-full rounded" />
|
|
25
|
+
<UnifiedSkeleton className="h-[16px] w-full rounded" />
|
|
26
|
+
<UnifiedSkeleton className="h-[16px] w-full rounded" />
|
|
27
|
+
<UnifiedSkeleton className="h-[16px] w-5/6 rounded" />
|
|
20
28
|
</div>
|
|
21
29
|
<div className="space-y-[14px]">
|
|
22
|
-
<
|
|
23
|
-
<
|
|
24
|
-
<
|
|
25
|
-
<
|
|
26
|
-
<
|
|
30
|
+
<UnifiedSkeleton className="h-[16px] w-full rounded" />
|
|
31
|
+
<UnifiedSkeleton className="h-[16px] w-full rounded" />
|
|
32
|
+
<UnifiedSkeleton className="h-[16px] w-full rounded" />
|
|
33
|
+
<UnifiedSkeleton className="h-[16px] w-full rounded" />
|
|
34
|
+
<UnifiedSkeleton className="h-[16px] w-2/3 rounded" />
|
|
27
35
|
</div>
|
|
28
|
-
<
|
|
29
|
-
<
|
|
36
|
+
<UnifiedSkeleton className="h-[88px] rounded-lg border border-ods-border" />
|
|
37
|
+
<UnifiedSkeleton className="h-7 w-1/3 rounded" />
|
|
30
38
|
<div className="space-y-[14px]">
|
|
31
|
-
<
|
|
32
|
-
<
|
|
33
|
-
<
|
|
34
|
-
<
|
|
39
|
+
<UnifiedSkeleton className="h-[16px] w-full rounded" />
|
|
40
|
+
<UnifiedSkeleton className="h-[16px] w-full rounded" />
|
|
41
|
+
<UnifiedSkeleton className="h-[16px] w-full rounded" />
|
|
42
|
+
<UnifiedSkeleton className="h-[16px] w-[72%] rounded" />
|
|
35
43
|
</div>
|
|
36
44
|
<div className="space-y-[14px]">
|
|
37
|
-
<
|
|
38
|
-
<
|
|
39
|
-
<
|
|
40
|
-
<
|
|
41
|
-
<
|
|
45
|
+
<UnifiedSkeleton className="h-[16px] w-full rounded" />
|
|
46
|
+
<UnifiedSkeleton className="h-[16px] w-full rounded" />
|
|
47
|
+
<UnifiedSkeleton className="h-[16px] w-full rounded" />
|
|
48
|
+
<UnifiedSkeleton className="h-[16px] w-full rounded" />
|
|
49
|
+
<UnifiedSkeleton className="h-[16px] w-[58%] rounded" />
|
|
42
50
|
</div>
|
|
43
|
-
<
|
|
51
|
+
<UnifiedSkeleton className="h-7 w-2/5 rounded" />
|
|
44
52
|
<div className="space-y-[14px]">
|
|
45
|
-
<
|
|
46
|
-
<
|
|
47
|
-
<
|
|
53
|
+
<UnifiedSkeleton className="h-[16px] w-full rounded" />
|
|
54
|
+
<UnifiedSkeleton className="h-[16px] w-full rounded" />
|
|
55
|
+
<UnifiedSkeleton className="h-[16px] w-[90%] rounded" />
|
|
48
56
|
</div>
|
|
49
57
|
<div className="space-y-[14px]">
|
|
50
|
-
<
|
|
51
|
-
<
|
|
52
|
-
<
|
|
53
|
-
<
|
|
58
|
+
<UnifiedSkeleton className="h-[16px] w-full rounded" />
|
|
59
|
+
<UnifiedSkeleton className="h-[16px] w-full rounded" />
|
|
60
|
+
<UnifiedSkeleton className="h-[16px] w-full rounded" />
|
|
61
|
+
<UnifiedSkeleton className="h-[16px] w-[70%] rounded" />
|
|
54
62
|
</div>
|
|
55
|
-
<
|
|
56
|
-
</
|
|
63
|
+
<UnifiedSkeleton className="h-[88px] rounded-lg border border-ods-border" />
|
|
64
|
+
</LoadingRegion>
|
|
57
65
|
);
|
|
58
66
|
}
|
|
59
67
|
|
|
@@ -68,35 +76,35 @@ export function MarkdownSkeleton() {
|
|
|
68
76
|
* - `google_sheet`/`figma` → header with title + ONE button/toggle
|
|
69
77
|
* - `file` → centered FileDownloadCard-style box
|
|
70
78
|
* - undefined / others → generic (1-button header)
|
|
71
|
-
*
|
|
72
|
-
* IMPORTANT: bars use `bg-ods-border` (NOT `bg-ods-skeleton`). The
|
|
73
|
-
* `--ods-skeleton` token resolves to TRANSPARENT in this build, leaving
|
|
74
|
-
* the skeleton box visually empty — the embed skeleton was the loudest
|
|
75
|
-
* surface affected (a full-height iframe area showing nothing). Same fix
|
|
76
|
-
* the chat-message-row skeleton already documents in its inline comment.
|
|
77
79
|
*/
|
|
78
80
|
export interface EmbedSkeletonProps {
|
|
79
81
|
/** When provided, the header layout matches the eventual viewer's
|
|
80
82
|
* button count + arrangement, so the layout doesn't shift on load. */
|
|
81
83
|
documentType?: 'pdf' | 'google_sheet' | 'figma' | 'file' | string;
|
|
84
|
+
/** The loading state announces itself (`LoadingRegion`). `false` inside another loading region. Default `true`. */
|
|
85
|
+
region?: boolean;
|
|
82
86
|
}
|
|
83
87
|
|
|
84
|
-
export function EmbedSkeleton({ documentType }: EmbedSkeletonProps = {}) {
|
|
88
|
+
export function EmbedSkeleton({ documentType, region = true }: EmbedSkeletonProps = {}) {
|
|
85
89
|
// Centered card shape for the `file` documentType — matches
|
|
86
90
|
// `<FileDownloadCard>`'s `flex flex-col items-center justify-center py-16`
|
|
87
91
|
// + bordered card with icon, name, type/size row, Download button.
|
|
88
92
|
if (documentType === 'file') {
|
|
89
93
|
return (
|
|
90
|
-
<
|
|
94
|
+
<LoadingRegion
|
|
95
|
+
label="Loading the document"
|
|
96
|
+
announce={region}
|
|
97
|
+
className="flex flex-col items-center justify-center py-16"
|
|
98
|
+
>
|
|
91
99
|
<div className="w-full max-w-md space-y-4 rounded-xl border border-ods-border bg-ods-card p-8 text-center">
|
|
92
|
-
<
|
|
100
|
+
<UnifiedSkeleton className="mx-auto h-16 w-16 rounded" />
|
|
93
101
|
<div className="space-y-2">
|
|
94
|
-
<
|
|
95
|
-
<
|
|
102
|
+
<UnifiedSkeleton className="mx-auto h-5 w-2/3 rounded" />
|
|
103
|
+
<UnifiedSkeleton className="mx-auto h-4 w-1/2 rounded" />
|
|
96
104
|
</div>
|
|
97
|
-
<
|
|
105
|
+
<UnifiedSkeleton className="h-10 w-full rounded" />
|
|
98
106
|
</div>
|
|
99
|
-
</
|
|
107
|
+
</LoadingRegion>
|
|
100
108
|
);
|
|
101
109
|
}
|
|
102
110
|
|
|
@@ -105,32 +113,25 @@ export function EmbedSkeleton({ documentType }: EmbedSkeletonProps = {}) {
|
|
|
105
113
|
const buttonCount = documentType === 'pdf' ? 2 : 1;
|
|
106
114
|
|
|
107
115
|
return (
|
|
108
|
-
<
|
|
116
|
+
<LoadingRegion label="Loading the document" announce={region} className="space-y-4">
|
|
109
117
|
{/* Header — matches the actual viewer's
|
|
110
118
|
* `flex flex-col gap-3 content-sm:flex-row content-sm:items-center content-sm:justify-between`
|
|
111
119
|
* (mobile-stacked, desktop-row). */}
|
|
112
120
|
<div className="flex flex-col gap-3 content-sm:flex-row content-sm:items-center content-sm:justify-between">
|
|
113
121
|
{/* Left: icon + title */}
|
|
114
122
|
<div className="flex min-w-0 flex-1 items-center gap-2">
|
|
115
|
-
<
|
|
116
|
-
<
|
|
123
|
+
<UnifiedSkeleton className="h-5 w-5 shrink-0 rounded" />
|
|
124
|
+
<UnifiedSkeleton className="h-6 w-2/3 rounded" />
|
|
117
125
|
</div>
|
|
118
126
|
{/* Right: 1 or 2 buttons. Mobile = full-width; desktop = auto. */}
|
|
119
127
|
<div className="flex w-full items-center gap-2 content-sm:w-auto">
|
|
120
128
|
{Array.from({ length: buttonCount }).map((_, i) => (
|
|
121
|
-
<
|
|
122
|
-
key={i}
|
|
123
|
-
className="h-10 w-full flex-1 animate-pulse rounded bg-ods-border content-sm:w-32 content-sm:flex-initial"
|
|
124
|
-
/>
|
|
129
|
+
<UnifiedSkeleton key={i} className="h-10 w-full flex-1 rounded content-sm:w-32 content-sm:flex-initial" />
|
|
125
130
|
))}
|
|
126
131
|
</div>
|
|
127
132
|
</div>
|
|
128
|
-
{/* Body
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
className="w-full animate-pulse rounded-lg border border-ods-border bg-ods-card"
|
|
132
|
-
style={{ height: 'calc(100vh - 250px)' }}
|
|
133
|
-
/>
|
|
134
|
-
</div>
|
|
133
|
+
{/* Body: the iframe viewer's own loading box (its default `calc(100vh - 250px)` height). */}
|
|
134
|
+
<EmbedLoadingSkeleton region={false} />
|
|
135
|
+
</LoadingRegion>
|
|
135
136
|
);
|
|
136
137
|
}
|
|
@@ -2,22 +2,29 @@
|
|
|
2
2
|
|
|
3
3
|
import type React from 'react';
|
|
4
4
|
import { useState, useCallback, useRef, useEffect } from 'react';
|
|
5
|
+
import { UnifiedSkeleton } from '../loading/unified-skeleton';
|
|
5
6
|
|
|
6
|
-
/** Loading skeleton for iframe embeds
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
* documented in `chat-message-row.tsx`'s skeleton). No fake inner
|
|
10
|
-
* placeholder cruft — a real loading iframe shows a blank rectangle.
|
|
7
|
+
/** Loading skeleton for iframe embeds: a clean iframe-sized `UnifiedSkeleton`
|
|
8
|
+
* rectangle. No fake inner placeholder cruft: a real loading iframe shows a
|
|
9
|
+
* blank rectangle.
|
|
11
10
|
*
|
|
12
11
|
* Exported so a viewer that is still RESOLVING where its frame points
|
|
13
12
|
* (ClaudeEmbed probing for a self-hosted mirror, before it has a `src`)
|
|
14
13
|
* can render the IDENTICAL skeleton through `EmbedViewerFrame`, keeping
|
|
15
14
|
* every embed's loading state 1:1 with the Figma/Sheets/PDF viewers. */
|
|
16
|
-
export function EmbedLoadingSkeleton({
|
|
15
|
+
export function EmbedLoadingSkeleton({
|
|
16
|
+
height,
|
|
17
|
+
region = true,
|
|
18
|
+
}: {
|
|
19
|
+
height?: string;
|
|
20
|
+
/** The box announces itself (one named status). `false` inside another loading region. Default `true`. */
|
|
21
|
+
region?: boolean;
|
|
22
|
+
}) {
|
|
17
23
|
return (
|
|
18
|
-
<
|
|
19
|
-
className="w-full
|
|
20
|
-
|
|
24
|
+
<UnifiedSkeleton
|
|
25
|
+
className="w-full overflow-hidden rounded-lg border border-ods-border"
|
|
26
|
+
height={height || 'calc(100vh - 250px)'}
|
|
27
|
+
aria-label={region ? 'Loading the embed' : undefined}
|
|
21
28
|
/>
|
|
22
29
|
);
|
|
23
30
|
}
|
|
@@ -14,8 +14,8 @@ export type { FigmaEmbedProps } from './figma-embed';
|
|
|
14
14
|
export { ClaudeEmbed } from './claude-embed';
|
|
15
15
|
export type { ClaudeEmbedProps, ClaudeEmbedKind } from './claude-embed';
|
|
16
16
|
|
|
17
|
-
export { OGLinkPreview, OGLinkErrorBoundary } from './og-link-preview';
|
|
18
|
-
export type { OGLinkPreviewProps, OGData
|
|
17
|
+
export { OGLinkPreview, OGLinkErrorBoundary, OGLinkTileSkeleton } from './og-link-preview';
|
|
18
|
+
export type { OGLinkPreviewProps, OGData } from './og-link-preview';
|
|
19
19
|
|
|
20
20
|
export { FileDownloadCard } from './file-download-card';
|
|
21
21
|
export type { FileDownloadCardProps } from './file-download-card';
|
|
@@ -4,6 +4,7 @@ import { ExternalLink } from 'lucide-react';
|
|
|
4
4
|
import { useMemo, useState } from 'react';
|
|
5
5
|
import Link from '../../embed-shims/next-link';
|
|
6
6
|
import { LinkedinIcon } from '../icons-v2-generated/brand-logos/linkedin-icon';
|
|
7
|
+
import { UnifiedSkeleton } from '../loading/unified-skeleton';
|
|
7
8
|
import { LinkedInContainer } from './embed-container';
|
|
8
9
|
|
|
9
10
|
/**
|
|
@@ -61,17 +62,17 @@ export function LinkedInEmbedClient({ url, height = 600 }: LinkedInEmbedProps) {
|
|
|
61
62
|
<LinkedInContainer>
|
|
62
63
|
<div className="relative w-full" style={{ height }}>
|
|
63
64
|
{!loaded && (
|
|
64
|
-
<div className="absolute inset-0
|
|
65
|
+
<div className="absolute inset-0 p-6">
|
|
65
66
|
<div className="mb-4 flex items-center space-x-3">
|
|
66
|
-
<
|
|
67
|
+
<UnifiedSkeleton className="h-12 w-12 rounded-full" />
|
|
67
68
|
<div>
|
|
68
|
-
<
|
|
69
|
-
<
|
|
69
|
+
<UnifiedSkeleton className="mb-2 h-4 w-32 rounded" />
|
|
70
|
+
<UnifiedSkeleton className="h-3 w-24 rounded" />
|
|
70
71
|
</div>
|
|
71
72
|
</div>
|
|
72
73
|
<div className="space-y-2">
|
|
73
|
-
<
|
|
74
|
-
<
|
|
74
|
+
<UnifiedSkeleton className="h-4 w-full rounded" />
|
|
75
|
+
<UnifiedSkeleton className="h-4 w-3/4 rounded" />
|
|
75
76
|
</div>
|
|
76
77
|
</div>
|
|
77
78
|
)}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import { useEffect, useState } from 'react';
|
|
4
4
|
import Image from '../../embed-shims/next-image';
|
|
5
|
+
import { UnifiedSkeleton } from '../loading/unified-skeleton';
|
|
5
6
|
import { useRichMarkdownRuntime } from './rich-markdown-runtime';
|
|
6
7
|
|
|
7
8
|
/**
|
|
@@ -63,9 +64,10 @@ export function MarkdownImage({ src, alt }: { src: string; alt?: string }) {
|
|
|
63
64
|
// Reserve a neutral box while probing so the layout doesn't jump when the image appears.
|
|
64
65
|
if (!ratio) {
|
|
65
66
|
return (
|
|
66
|
-
<
|
|
67
|
-
|
|
68
|
-
|
|
67
|
+
<UnifiedSkeleton
|
|
68
|
+
as="span"
|
|
69
|
+
className="mx-auto my-2 block aspect-[3/2] w-full max-w-full rounded-lg"
|
|
70
|
+
style={{ maxHeight: `${MAX_H_REM}rem` }}
|
|
69
71
|
aria-hidden
|
|
70
72
|
/>
|
|
71
73
|
);
|