@flamingo-stack/openframe-frontend-core 0.0.748 → 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-7Y3VMMJB.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-G2ELX3DG.cjs → chunk-45YRDD7W.cjs} +22 -19
- package/dist/{chunk-U6XWGK53.cjs → chunk-ALPRQ3ZX.cjs} +56 -46
- package/dist/{chunk-YKJQM2O6.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-H34A2765.cjs → chunk-CXV7VBSI.cjs} +104 -118
- package/dist/{chunk-QPSQ5WLG.cjs → chunk-DGEB5GUZ.cjs} +2 -2
- package/dist/{chunk-OZUJYBQ2.cjs → chunk-E3KFEOFA.cjs} +9 -6
- package/dist/{chunk-PSSGIZXZ.cjs → chunk-FHT7SMA7.cjs} +49 -46
- package/dist/{chunk-46EIXJFC.cjs → chunk-GOFEOCQN.cjs} +44 -27
- package/dist/{chunk-UNR74CAC.cjs → chunk-HOEVD6EN.cjs} +4 -4
- package/dist/{chunk-EH3LOWGY.cjs → chunk-KRAQEZPB.cjs} +48 -40
- package/dist/{chunk-AKTPO2DN.cjs → chunk-L4UI63K6.cjs} +2 -2
- package/dist/{chunk-D4XZL27V.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-JNBOQ7F2.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-6XP6RNFD.cjs → chunk-SECT4H34.cjs} +1780 -2076
- package/dist/{chunk-GE4PCDNZ.cjs → chunk-SGL47BS2.cjs} +12 -12
- package/dist/{chunk-4AZHFLOM.cjs → chunk-SOPVUD2Y.cjs} +3 -3
- package/dist/chunk-UGCRLRCT.cjs +25 -0
- package/dist/{chunk-BBTSJYTR.cjs → chunk-V3UJ6NDR.cjs} +243 -429
- package/dist/{chunk-JOPFX3PJ.cjs → chunk-VEVIMDNK.cjs} +137 -122
- package/dist/{chunk-ZNUSYMH7.cjs → chunk-WZX26ODJ.cjs} +121 -121
- package/dist/{chunk-YIRX6C7V.cjs → chunk-XJ3J4UIS.cjs} +57 -22
- package/dist/{chunk-TRXCQADV.cjs → chunk-ZLF55RDR.cjs} +103 -98
- package/dist/{cloud-tenants-V5727B7F.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-WWMXIIHI.cjs → devices-FVXAGKVX.cjs} +17 -15
- package/dist/{embeddable-chat-IJHCGQ24.cjs → embeddable-chat-SNYQSMS7.cjs} +79 -77
- package/dist/index.cjs +24 -31
- package/dist/{knowledge-JZP4RIXB.cjs → knowledge-ZL3ZHBSL.cjs} +17 -15
- package/dist/{logs-WIRYFNUC.cjs → logs-KQCWDIOB.cjs} +24 -22
- package/dist/{policies-X7OJYA7G.cjs → policies-ARDCZ3CT.cjs} +20 -18
- package/dist/{remote-session-IYT4LWJC.cjs → remote-session-ZKP2W3IS.cjs} +9 -7
- package/dist/{scripts-GRMT2NGW.cjs → scripts-ZAMVWCY4.cjs} +23 -21
- package/dist/{software-update-G3QOB7RT.cjs → software-update-6F7BIYS3.cjs} +20 -18
- package/dist/{tickets-board-4MT6ZB4F.cjs → tickets-board-BNW4AYFL.cjs} +11 -10
- package/package.json +1 -1
- 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/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
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { cn } from '../../utils/cn';
|
|
2
|
+
import { LoadingRegion } from './loading-region';
|
|
3
|
+
import { InteractiveSkeleton, TextSkeleton, UnifiedSkeleton } from './unified-skeleton';
|
|
4
|
+
|
|
5
|
+
export interface SettingsFormSkeletonProps {
|
|
6
|
+
/** The loading state announces itself (`LoadingRegion`). `false` inside another loading region. Default `true`. */
|
|
7
|
+
region?: boolean;
|
|
8
|
+
/**
|
|
9
|
+
* How many fields each card holds, one entry per card, so the skeleton has the
|
|
10
|
+
* real shape of the screen behind it rather than a generic block.
|
|
11
|
+
*/
|
|
12
|
+
cards?: number[];
|
|
13
|
+
className?: string;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* A settings FORM while it loads: cards of labelled controls (a title and a
|
|
18
|
+
* line, then label, help line and control per field), and the save row under
|
|
19
|
+
* them.
|
|
20
|
+
*/
|
|
21
|
+
export function SettingsFormSkeleton({ region = true, cards = [2, 3, 2, 2], className }: SettingsFormSkeletonProps) {
|
|
22
|
+
return (
|
|
23
|
+
<LoadingRegion
|
|
24
|
+
label="Loading settings"
|
|
25
|
+
announce={region}
|
|
26
|
+
className={cn('space-y-[var(--spacing-system-lf)]', className)}
|
|
27
|
+
>
|
|
28
|
+
{cards.map((fields, cardIndex) => (
|
|
29
|
+
<div
|
|
30
|
+
key={`settings-card-${cardIndex}`}
|
|
31
|
+
className="space-y-[var(--spacing-system-lf)] rounded-lg border border-ods-border bg-ods-card p-[var(--spacing-system-lf)]"
|
|
32
|
+
>
|
|
33
|
+
<div>
|
|
34
|
+
<TextSkeleton.Subheading className="mb-[var(--spacing-system-xsf)] w-32" />
|
|
35
|
+
<TextSkeleton.Caption className="w-full max-w-md" />
|
|
36
|
+
</div>
|
|
37
|
+
{Array.from({ length: fields }, (_, fieldIndex) => (
|
|
38
|
+
<div key={`settings-field-${cardIndex}-${fieldIndex}`} className="space-y-[var(--spacing-system-xsf)]">
|
|
39
|
+
<TextSkeleton.Caption className="w-40" />
|
|
40
|
+
<TextSkeleton.Caption className="w-full max-w-lg" />
|
|
41
|
+
<UnifiedSkeleton className="h-10 w-full rounded-md" />
|
|
42
|
+
</div>
|
|
43
|
+
))}
|
|
44
|
+
</div>
|
|
45
|
+
))}
|
|
46
|
+
<div className="flex items-center gap-[var(--spacing-system-mf)]">
|
|
47
|
+
<InteractiveSkeleton.Button className="w-32" />
|
|
48
|
+
<TextSkeleton.Caption className="w-64" />
|
|
49
|
+
</div>
|
|
50
|
+
</LoadingRegion>
|
|
51
|
+
);
|
|
52
|
+
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type React from 'react';
|
|
2
2
|
import { cn } from '../../utils/cn';
|
|
3
|
+
import { SKELETON_SURFACE_CLASS } from '../ui/skeleton-surface';
|
|
3
4
|
|
|
4
5
|
interface UnifiedSkeletonProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
5
6
|
className?: string;
|
|
@@ -11,9 +12,15 @@ interface UnifiedSkeletonProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
|
11
12
|
*/
|
|
12
13
|
animate?: boolean;
|
|
13
14
|
/**
|
|
14
|
-
*
|
|
15
|
+
* Names what is loading for screen readers. Only a bar that stands alone sets it: it then becomes a
|
|
16
|
+
* `role="status"`. Without it the bar is `aria-hidden`, and its `LoadingRegion` announces the loading once.
|
|
15
17
|
*/
|
|
16
18
|
'aria-label'?: string;
|
|
19
|
+
/**
|
|
20
|
+
* The element drawn. `span` keeps the placeholder valid phrasing content where
|
|
21
|
+
* a `div` may not stand (inside a `p`, a heading, a label or an inline card).
|
|
22
|
+
*/
|
|
23
|
+
as?: 'div' | 'span';
|
|
17
24
|
}
|
|
18
25
|
|
|
19
26
|
/**
|
|
@@ -25,13 +32,14 @@ interface UnifiedSkeletonProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
|
25
32
|
* - Color: #2A2A2A base with #3A3A3A pulse highlight
|
|
26
33
|
* - Animation: 1.5s pulse duration, ease-in-out timing
|
|
27
34
|
* - Responsive: Mobile-first approach with proper scaling
|
|
28
|
-
* - Accessibility:
|
|
35
|
+
* - Accessibility: hidden from assistive technology (the `LoadingRegion` around it announces), reduced motion support
|
|
29
36
|
*
|
|
30
37
|
* @param variant - Shape variant: default (rounded), text (rounded-sm), circular, rectangular
|
|
31
38
|
* @param width - Custom width (defaults to full width)
|
|
32
39
|
* @param height - Custom height (defaults to auto based on variant)
|
|
33
40
|
* @param animate - Enable/disable animation (respects prefers-reduced-motion)
|
|
34
|
-
* @param aria-label -
|
|
41
|
+
* @param aria-label - Makes this one bar a `role="status"` with that name; otherwise it is `aria-hidden`
|
|
42
|
+
* @param as - The element drawn: `div` (default) or `span` for phrasing content
|
|
35
43
|
*/
|
|
36
44
|
export function UnifiedSkeleton({
|
|
37
45
|
className,
|
|
@@ -40,10 +48,9 @@ export function UnifiedSkeleton({
|
|
|
40
48
|
height,
|
|
41
49
|
animate = true,
|
|
42
50
|
'aria-label': ariaLabel,
|
|
51
|
+
as: Tag = 'div',
|
|
43
52
|
...props
|
|
44
53
|
}: UnifiedSkeletonProps) {
|
|
45
|
-
const baseClasses = 'bg-ods-skeleton';
|
|
46
|
-
|
|
47
54
|
const variantClasses = {
|
|
48
55
|
default: 'rounded-md',
|
|
49
56
|
text: 'rounded-sm',
|
|
@@ -58,8 +65,6 @@ export function UnifiedSkeleton({
|
|
|
58
65
|
rectangular: 'h-4',
|
|
59
66
|
};
|
|
60
67
|
|
|
61
|
-
const animationClasses = animate ? 'animate-pulse motion-reduce:animate-none' : '';
|
|
62
|
-
|
|
63
68
|
// An `aspect-*` utility sizes the box itself; a default height would win
|
|
64
69
|
// over it (explicit height beats aspect-ratio) and collapse the box to 16px.
|
|
65
70
|
const sizedByAspect = /(?:^|\s)aspect-/.test(className ?? '');
|
|
@@ -70,18 +75,18 @@ export function UnifiedSkeleton({
|
|
|
70
75
|
};
|
|
71
76
|
|
|
72
77
|
return (
|
|
73
|
-
<
|
|
78
|
+
<Tag
|
|
74
79
|
className={cn(
|
|
75
|
-
|
|
80
|
+
animate ? SKELETON_SURFACE_CLASS : 'bg-ods-skeleton',
|
|
76
81
|
variantClasses[variant],
|
|
77
82
|
!height && !style.height && !sizedByAspect && defaultHeights[variant],
|
|
78
83
|
!width && !style.width && variant !== 'circular' && 'w-full',
|
|
79
|
-
animationClasses,
|
|
80
84
|
className,
|
|
81
85
|
)}
|
|
82
86
|
style={style}
|
|
83
|
-
|
|
84
|
-
aria-
|
|
87
|
+
// A bar is decoration: hidden from assistive technology unless the caller names what is loading.
|
|
88
|
+
// The loading CONTAINER says it once (`LoadingRegion`: aria-busy plus one polite status).
|
|
89
|
+
{...(ariaLabel ? { role: 'status', 'aria-label': ariaLabel } : { 'aria-hidden': true })}
|
|
85
90
|
{...props}
|
|
86
91
|
/>
|
|
87
92
|
);
|
|
@@ -95,48 +100,28 @@ export const TextSkeleton = {
|
|
|
95
100
|
* Large heading skeleton (h1, h2)
|
|
96
101
|
*/
|
|
97
102
|
Heading: ({ className, ...props }: Omit<UnifiedSkeletonProps, 'variant'>) => (
|
|
98
|
-
<UnifiedSkeleton
|
|
99
|
-
variant="text"
|
|
100
|
-
className={cn('h-8 content-md:h-10 content-lg:h-12', className)}
|
|
101
|
-
aria-label="Loading heading"
|
|
102
|
-
{...props}
|
|
103
|
-
/>
|
|
103
|
+
<UnifiedSkeleton variant="text" className={cn('h-8 content-md:h-10 content-lg:h-12', className)} {...props} />
|
|
104
104
|
),
|
|
105
105
|
|
|
106
106
|
/**
|
|
107
107
|
* Medium heading skeleton (h3, h4)
|
|
108
108
|
*/
|
|
109
109
|
Subheading: ({ className, ...props }: Omit<UnifiedSkeletonProps, 'variant'>) => (
|
|
110
|
-
<UnifiedSkeleton
|
|
111
|
-
variant="text"
|
|
112
|
-
className={cn('h-6 content-md:h-7 content-lg:h-8', className)}
|
|
113
|
-
aria-label="Loading subheading"
|
|
114
|
-
{...props}
|
|
115
|
-
/>
|
|
110
|
+
<UnifiedSkeleton variant="text" className={cn('h-6 content-md:h-7 content-lg:h-8', className)} {...props} />
|
|
116
111
|
),
|
|
117
112
|
|
|
118
113
|
/**
|
|
119
114
|
* Body text skeleton
|
|
120
115
|
*/
|
|
121
116
|
Body: ({ className, ...props }: Omit<UnifiedSkeletonProps, 'variant'>) => (
|
|
122
|
-
<UnifiedSkeleton
|
|
123
|
-
variant="text"
|
|
124
|
-
className={cn('h-4 content-md:h-5', className)}
|
|
125
|
-
aria-label="Loading text"
|
|
126
|
-
{...props}
|
|
127
|
-
/>
|
|
117
|
+
<UnifiedSkeleton variant="text" className={cn('h-4 content-md:h-5', className)} {...props} />
|
|
128
118
|
),
|
|
129
119
|
|
|
130
120
|
/**
|
|
131
121
|
* Small text skeleton (captions, metadata)
|
|
132
122
|
*/
|
|
133
123
|
Caption: ({ className, ...props }: Omit<UnifiedSkeletonProps, 'variant'>) => (
|
|
134
|
-
<UnifiedSkeleton
|
|
135
|
-
variant="text"
|
|
136
|
-
className={cn('h-3 content-md:h-4', className)}
|
|
137
|
-
aria-label="Loading caption"
|
|
138
|
-
{...props}
|
|
139
|
-
/>
|
|
124
|
+
<UnifiedSkeleton variant="text" className={cn('h-3 content-md:h-4', className)} {...props} />
|
|
140
125
|
),
|
|
141
126
|
};
|
|
142
127
|
|
|
@@ -151,7 +136,6 @@ export const InteractiveSkeleton = {
|
|
|
151
136
|
<UnifiedSkeleton
|
|
152
137
|
variant="default"
|
|
153
138
|
className={cn('h-10 w-32 content-md:h-12 content-md:w-40', className)}
|
|
154
|
-
aria-label="Loading button"
|
|
155
139
|
{...props}
|
|
156
140
|
/>
|
|
157
141
|
),
|
|
@@ -160,24 +144,14 @@ export const InteractiveSkeleton = {
|
|
|
160
144
|
* Input field skeleton
|
|
161
145
|
*/
|
|
162
146
|
Input: ({ className, ...props }: Omit<UnifiedSkeletonProps, 'variant'>) => (
|
|
163
|
-
<UnifiedSkeleton
|
|
164
|
-
variant="default"
|
|
165
|
-
className={cn('h-10 w-full content-md:h-12', className)}
|
|
166
|
-
aria-label="Loading input field"
|
|
167
|
-
{...props}
|
|
168
|
-
/>
|
|
147
|
+
<UnifiedSkeleton variant="default" className={cn('h-10 w-full content-md:h-12', className)} {...props} />
|
|
169
148
|
),
|
|
170
149
|
|
|
171
150
|
/**
|
|
172
151
|
* Filter chip skeleton
|
|
173
152
|
*/
|
|
174
153
|
Chip: ({ className, ...props }: Omit<UnifiedSkeletonProps, 'variant'>) => (
|
|
175
|
-
<UnifiedSkeleton
|
|
176
|
-
variant="default"
|
|
177
|
-
className={cn('h-8 w-20 rounded-full', className)}
|
|
178
|
-
aria-label="Loading filter"
|
|
179
|
-
{...props}
|
|
180
|
-
/>
|
|
154
|
+
<UnifiedSkeleton variant="default" className={cn('h-8 w-20 rounded-full', className)} {...props} />
|
|
181
155
|
),
|
|
182
156
|
};
|
|
183
157
|
|
|
@@ -199,14 +173,7 @@ export const MediaSkeleton = {
|
|
|
199
173
|
lg: 'h-16 w-16',
|
|
200
174
|
};
|
|
201
175
|
|
|
202
|
-
return (
|
|
203
|
-
<UnifiedSkeleton
|
|
204
|
-
variant="circular"
|
|
205
|
-
className={cn(sizeClasses[size], className)}
|
|
206
|
-
aria-label="Loading profile image"
|
|
207
|
-
{...props}
|
|
208
|
-
/>
|
|
209
|
-
);
|
|
176
|
+
return <UnifiedSkeleton variant="circular" className={cn(sizeClasses[size], className)} {...props} />;
|
|
210
177
|
},
|
|
211
178
|
|
|
212
179
|
/**
|
|
@@ -214,12 +181,7 @@ export const MediaSkeleton = {
|
|
|
214
181
|
* so loading state never causes a height shift when card data arrives)
|
|
215
182
|
*/
|
|
216
183
|
CardImage: ({ className, ...props }: Omit<UnifiedSkeletonProps, 'variant'>) => (
|
|
217
|
-
<UnifiedSkeleton
|
|
218
|
-
variant="default"
|
|
219
|
-
className={cn('aspect-[1200/630] w-full', className)}
|
|
220
|
-
aria-label="Loading image"
|
|
221
|
-
{...props}
|
|
222
|
-
/>
|
|
184
|
+
<UnifiedSkeleton variant="default" className={cn('aspect-[1200/630] w-full', className)} {...props} />
|
|
223
185
|
),
|
|
224
186
|
|
|
225
187
|
/**
|
|
@@ -236,13 +198,6 @@ export const MediaSkeleton = {
|
|
|
236
198
|
lg: 'h-8 w-8',
|
|
237
199
|
};
|
|
238
200
|
|
|
239
|
-
return (
|
|
240
|
-
<UnifiedSkeleton
|
|
241
|
-
variant="default"
|
|
242
|
-
className={cn(sizeClasses[size], className)}
|
|
243
|
-
aria-label="Loading icon"
|
|
244
|
-
{...props}
|
|
245
|
-
/>
|
|
246
|
-
);
|
|
201
|
+
return <UnifiedSkeleton variant="default" className={cn(sizeClasses[size], className)} {...props} />;
|
|
247
202
|
},
|
|
248
203
|
};
|
|
@@ -1,14 +1,17 @@
|
|
|
1
1
|
import { cn } from '../../utils/cn';
|
|
2
|
+
import { LoadingRegion } from './loading-region';
|
|
2
3
|
import { UnifiedSkeleton, TextSkeleton } from './unified-skeleton';
|
|
3
4
|
|
|
4
5
|
interface WizardLayoutSkeletonProps {
|
|
6
|
+
/** The loading state announces itself (`LoadingRegion`). `false` inside another loading region. Default `true`. */
|
|
7
|
+
region?: boolean;
|
|
5
8
|
steps?: number;
|
|
6
9
|
className?: string;
|
|
7
10
|
}
|
|
8
11
|
|
|
9
|
-
export function WizardLayoutSkeleton({ steps = 6, className }: WizardLayoutSkeletonProps) {
|
|
12
|
+
export function WizardLayoutSkeleton({ region = true, steps = 6, className }: WizardLayoutSkeletonProps) {
|
|
10
13
|
return (
|
|
11
|
-
<
|
|
14
|
+
<LoadingRegion label="Loading the wizard" announce={region} className={cn('space-y-6', className)}>
|
|
12
15
|
{/* Progress bar */}
|
|
13
16
|
<div className="flex flex-wrap items-center gap-2">
|
|
14
17
|
{Array.from({ length: steps }).map((_, i) => (
|
|
@@ -27,6 +30,6 @@ export function WizardLayoutSkeleton({ steps = 6, className }: WizardLayoutSkele
|
|
|
27
30
|
<UnifiedSkeleton className="h-10 w-24 rounded" />
|
|
28
31
|
<UnifiedSkeleton className="h-10 w-32 rounded" />
|
|
29
32
|
</div>
|
|
30
|
-
</
|
|
33
|
+
</LoadingRegion>
|
|
31
34
|
);
|
|
32
35
|
}
|
|
@@ -6,6 +6,7 @@ import { cn } from '../utils/cn';
|
|
|
6
6
|
import type { MediaItem } from '../utils/media-carousel-utils-stub';
|
|
7
7
|
import { Video } from './features/video';
|
|
8
8
|
import { ImageOffIcon } from './icons-v2-generated/audio-and-visual/image-off-icon';
|
|
9
|
+
import { UnifiedSkeleton } from './loading/unified-skeleton';
|
|
9
10
|
import { Button } from './ui/button';
|
|
10
11
|
|
|
11
12
|
// Navigation icons
|
|
@@ -214,7 +215,7 @@ export const MediaCarousel = memo(function MediaCarouselImpl({
|
|
|
214
215
|
const imageLoaded = loadedImageSrc === rawSrc;
|
|
215
216
|
return (
|
|
216
217
|
<div className="absolute inset-0 bg-ods-bg">
|
|
217
|
-
{!imageLoaded && <
|
|
218
|
+
{!imageLoaded && <UnifiedSkeleton className="absolute inset-0 z-[1] h-full rounded-none" aria-hidden />}
|
|
218
219
|
<Image
|
|
219
220
|
src={displayImageSrc(rawSrc)}
|
|
220
221
|
alt={item.alt || `Media ${index + 1}`}
|
|
@@ -29,6 +29,7 @@ import {
|
|
|
29
29
|
import { cn } from '../../utils/cn';
|
|
30
30
|
import type { FormRescueDefinition } from '../../utils/form-rescue';
|
|
31
31
|
import { HUBSPOT_DO_NOT_COLLECT_FORM_PROPS } from '../../utils/hubspot-collected-forms';
|
|
32
|
+
import { UnifiedSkeleton } from '../loading/unified-skeleton';
|
|
32
33
|
import {
|
|
33
34
|
Button,
|
|
34
35
|
FieldWrapper,
|
|
@@ -44,7 +45,6 @@ import {
|
|
|
44
45
|
CheckboxBlock,
|
|
45
46
|
RadioGroup,
|
|
46
47
|
RadioGroupItem,
|
|
47
|
-
Skeleton,
|
|
48
48
|
} from '../ui';
|
|
49
49
|
import { HoneypotField } from '../ui/honeypot-field';
|
|
50
50
|
|
|
@@ -874,21 +874,24 @@ export function BookingFormSkeleton({
|
|
|
874
874
|
{skeletonRows(fieldRows ?? DEFAULT_FIELD_ROWS).map(row => (
|
|
875
875
|
<div key={row.map(s => s.name).join('|')} className={ROW_GRID}>
|
|
876
876
|
{row.map((slot, slotIndex) => (
|
|
877
|
-
<
|
|
877
|
+
<UnifiedSkeleton
|
|
878
|
+
key={slot.name}
|
|
879
|
+
className={cn(FIELD_SKELETON_CLASS, slotColumnClass(row, slot, slotIndex))}
|
|
880
|
+
/>
|
|
878
881
|
))}
|
|
879
882
|
</div>
|
|
880
883
|
))}
|
|
881
884
|
{/* Without rows there is no telling how many questions the link declares: one long answer stands for them. */}
|
|
882
|
-
{!fieldRows && <
|
|
883
|
-
{consent && <
|
|
885
|
+
{!fieldRows && <UnifiedSkeleton className="h-[7.75rem] w-full" />}
|
|
886
|
+
{consent && <UnifiedSkeleton className="h-[4.25rem] w-full" />}
|
|
884
887
|
{footerNote ? (
|
|
885
888
|
<div className={FOOTER_ROW_CLASS}>
|
|
886
|
-
<
|
|
887
|
-
<
|
|
889
|
+
<UnifiedSkeleton className="h-5 min-w-40 flex-1" />
|
|
890
|
+
<UnifiedSkeleton className={cn('h-12 w-full', SUBMIT_WIDE_CLASS)} />
|
|
888
891
|
</div>
|
|
889
892
|
) : (
|
|
890
893
|
<div className={FOOTER_BARE_CLASS}>
|
|
891
|
-
<
|
|
894
|
+
<UnifiedSkeleton className="h-12 w-40" />
|
|
892
895
|
</div>
|
|
893
896
|
)}
|
|
894
897
|
</div>
|
|
@@ -4,7 +4,8 @@ import type { MeetingHost } from '../../schemas/meeting-booking-schema';
|
|
|
4
4
|
import { cn } from '../../utils/cn';
|
|
5
5
|
import { formatDurationCompact } from '../../utils/format';
|
|
6
6
|
import { BackButton } from '../layout/back-button';
|
|
7
|
-
import {
|
|
7
|
+
import { UnifiedSkeleton } from '../loading/unified-skeleton';
|
|
8
|
+
import { SquareAvatar, AvatarStack, Button } from '../ui';
|
|
8
9
|
import { TimezoneSelect } from '../ui/timezone-select';
|
|
9
10
|
|
|
10
11
|
/**
|
|
@@ -127,18 +128,18 @@ export function ContextPanelSkeleton({
|
|
|
127
128
|
<div className={STRIP_MAIN}>
|
|
128
129
|
<div className={IDENTITY_ROW}>
|
|
129
130
|
<div className="flex min-w-0 flex-1 items-center gap-[var(--spacing-system-xs)] content-lg:flex-none">
|
|
130
|
-
<
|
|
131
|
+
<UnifiedSkeleton className="h-8 w-8 shrink-0 rounded-full" />
|
|
131
132
|
<div className="flex flex-1 flex-col gap-[var(--spacing-system-xxs)]">
|
|
132
|
-
<
|
|
133
|
-
<
|
|
133
|
+
<UnifiedSkeleton className="h-5 w-32" />
|
|
134
|
+
<UnifiedSkeleton className="h-4 w-24" />
|
|
134
135
|
</div>
|
|
135
136
|
</div>
|
|
136
|
-
<
|
|
137
|
+
<UnifiedSkeleton className="h-4 w-20 shrink-0" />
|
|
137
138
|
</div>
|
|
138
139
|
</div>
|
|
139
140
|
<div className={STRIP_ASIDE}>
|
|
140
141
|
<p className={FIELD_LABEL_CLASS}>Timezone</p>
|
|
141
|
-
<
|
|
142
|
+
<UnifiedSkeleton className="h-12 w-full" />
|
|
142
143
|
</div>
|
|
143
144
|
</div>
|
|
144
145
|
</div>
|
|
@@ -254,7 +255,7 @@ export function SchedulerContextPanel({
|
|
|
254
255
|
}}
|
|
255
256
|
/>
|
|
256
257
|
) : (
|
|
257
|
-
<
|
|
258
|
+
<UnifiedSkeleton className="h-12 w-full" />
|
|
258
259
|
)}
|
|
259
260
|
</div>
|
|
260
261
|
)}
|
|
@@ -30,8 +30,9 @@ import { contentFetch } from '../../utils/embed-content-fetch';
|
|
|
30
30
|
import { formatDurationCompact, formatDateWithTimezone, VIEWER_TIMEZONE } from '../../utils/format';
|
|
31
31
|
import { pageCount } from '../../utils/search-params';
|
|
32
32
|
import { EmptyState } from '../empty-state';
|
|
33
|
+
import { UnifiedSkeleton } from '../loading/unified-skeleton';
|
|
33
34
|
import { PersistentPaginationWrapper } from '../persistent-pagination';
|
|
34
|
-
import { AvatarStack, StatusBadge
|
|
35
|
+
import { AvatarStack, StatusBadge } from '../ui';
|
|
35
36
|
|
|
36
37
|
export interface MeetingSchedulerDirectoryProps {
|
|
37
38
|
/** Endpoints prefix, default '' (same-origin `/api/meetings`). */
|
|
@@ -127,16 +128,16 @@ export function MeetingSchedulerDirectoryRowSkeleton() {
|
|
|
127
128
|
return (
|
|
128
129
|
<div className="flex min-h-20 w-full items-center gap-4 rounded-lg border border-ods-border bg-ods-card px-4 py-3">
|
|
129
130
|
<div className="flex min-w-0 flex-1 flex-col justify-center gap-1">
|
|
130
|
-
<
|
|
131
|
-
<
|
|
131
|
+
<UnifiedSkeleton className="h-5 w-1/2" />
|
|
132
|
+
<UnifiedSkeleton className="h-4 w-1/3" />
|
|
132
133
|
</div>
|
|
133
|
-
<
|
|
134
|
-
<
|
|
134
|
+
<UnifiedSkeleton className="hidden h-6 w-28 shrink-0 content-sm:block" />
|
|
135
|
+
<UnifiedSkeleton className="h-10 w-10 shrink-0 rounded-full" />
|
|
135
136
|
<div className="hidden w-44 shrink-0 flex-col items-end gap-1 content-md:flex">
|
|
136
|
-
<
|
|
137
|
-
<
|
|
137
|
+
<UnifiedSkeleton className="h-4 w-24" />
|
|
138
|
+
<UnifiedSkeleton className="h-5 w-32" />
|
|
138
139
|
</div>
|
|
139
|
-
<
|
|
140
|
+
<UnifiedSkeleton className="size-12 shrink-0 rounded-md" />
|
|
140
141
|
</div>
|
|
141
142
|
);
|
|
142
143
|
}
|
|
@@ -205,7 +206,7 @@ export function MeetingSchedulerDirectory({
|
|
|
205
206
|
))}
|
|
206
207
|
</div>
|
|
207
208
|
<div className={cn('mt-8 flex w-full items-center justify-center', PAGINATION_SLOT_H)}>
|
|
208
|
-
<
|
|
209
|
+
<UnifiedSkeleton className="h-10 w-64" />
|
|
209
210
|
</div>
|
|
210
211
|
</div>
|
|
211
212
|
);
|
|
@@ -57,6 +57,7 @@ import { cn } from '../../utils/cn';
|
|
|
57
57
|
import { FORM_RESCUE_ATTEMPT_FIELD, type FormRescueDefinition } from '../../utils/form-rescue';
|
|
58
58
|
import { formatDurationCompact, formatDateWithTimezone } from '../../utils/format';
|
|
59
59
|
import { BackButton } from '../layout/back-button';
|
|
60
|
+
import { LoadingRegion } from '../loading/loading-region';
|
|
60
61
|
import { Alert, AlertDescription, Button } from '../ui';
|
|
61
62
|
import {
|
|
62
63
|
BookingForm,
|
|
@@ -808,10 +809,10 @@ export function HubSpotMeetingScheduler({
|
|
|
808
809
|
if (modal && isLoadingAvailability && !availability) {
|
|
809
810
|
return (
|
|
810
811
|
<div className={cn(MODAL_STACK_CLASS, className)}>
|
|
811
|
-
<
|
|
812
|
+
<LoadingRegion label="Loading available times" className={MODAL_CARD_CLASS}>
|
|
812
813
|
<SchedulerModalHeaderSkeleton />
|
|
813
814
|
<SlotPickerSkeleton monthOffset={monthOffset} layout="modal" />
|
|
814
|
-
</
|
|
815
|
+
</LoadingRegion>
|
|
815
816
|
<ModalFooter
|
|
816
817
|
onCancel={onBack}
|
|
817
818
|
primary={
|
|
@@ -831,7 +832,7 @@ export function HubSpotMeetingScheduler({
|
|
|
831
832
|
// shifts when it swaps.
|
|
832
833
|
return (
|
|
833
834
|
<div className={cardClass}>
|
|
834
|
-
<
|
|
835
|
+
<LoadingRegion label="Loading available times" className={innerClass}>
|
|
835
836
|
{!formOnly && <ContextPanelSkeleton onBack={backEdge} className={CONTEXT_PANEL_CLASS} />}
|
|
836
837
|
<div className={actionPanelClass}>
|
|
837
838
|
{/* Both terms matter. Without `flow` this stays a calendar where
|
|
@@ -852,7 +853,7 @@ export function HubSpotMeetingScheduler({
|
|
|
852
853
|
<SlotPickerSkeleton monthOffset={monthOffset} />
|
|
853
854
|
)}
|
|
854
855
|
</div>
|
|
855
|
-
</
|
|
856
|
+
</LoadingRegion>
|
|
856
857
|
</div>
|
|
857
858
|
);
|
|
858
859
|
}
|
|
@@ -3,7 +3,8 @@
|
|
|
3
3
|
import type { MeetingHost } from '../../schemas/meeting-booking-schema';
|
|
4
4
|
import { cn } from '../../utils/cn';
|
|
5
5
|
import { formatDurationCompact } from '../../utils/format';
|
|
6
|
-
import {
|
|
6
|
+
import { UnifiedSkeleton } from '../loading/unified-skeleton';
|
|
7
|
+
import { SquareAvatar, AvatarStack, Button } from '../ui';
|
|
7
8
|
import { TimezoneSelect } from '../ui/timezone-select';
|
|
8
9
|
|
|
9
10
|
/**
|
|
@@ -114,7 +115,7 @@ export function SchedulerModalHeader({
|
|
|
114
115
|
}}
|
|
115
116
|
/>
|
|
116
117
|
) : (
|
|
117
|
-
<
|
|
118
|
+
<UnifiedSkeleton className="h-12 w-full" />
|
|
118
119
|
)}
|
|
119
120
|
</div>
|
|
120
121
|
)}
|
|
@@ -128,17 +129,17 @@ export function SchedulerModalHeaderSkeleton() {
|
|
|
128
129
|
<>
|
|
129
130
|
<div className={STRIP_CLASS}>
|
|
130
131
|
<div className="flex items-center gap-[var(--spacing-system-xs)]">
|
|
131
|
-
<
|
|
132
|
+
<UnifiedSkeleton className="h-8 w-8 shrink-0 rounded-full" />
|
|
132
133
|
<div className="flex flex-col gap-[var(--spacing-system-xxs)]">
|
|
133
|
-
<
|
|
134
|
-
<
|
|
134
|
+
<UnifiedSkeleton className="h-5 w-32" />
|
|
135
|
+
<UnifiedSkeleton className="h-4 w-24" />
|
|
135
136
|
</div>
|
|
136
137
|
</div>
|
|
137
|
-
<
|
|
138
|
+
<UnifiedSkeleton className="h-4 w-20 shrink-0" />
|
|
138
139
|
</div>
|
|
139
140
|
<div className={cn(ROW_CLASS, 'flex flex-col gap-[var(--spacing-system-xxs)]')}>
|
|
140
141
|
<p className={FIELD_LABEL_CLASS}>Timezone</p>
|
|
141
|
-
<
|
|
142
|
+
<UnifiedSkeleton className="h-12 w-full" />
|
|
142
143
|
</div>
|
|
143
144
|
</>
|
|
144
145
|
);
|
|
@@ -5,7 +5,8 @@ import { useCallback, useMemo } from 'react';
|
|
|
5
5
|
import { cn } from '../../utils/cn';
|
|
6
6
|
import { formatDateWithTimezone, formatTimeWithTimezone, VIEWER_TIMEZONE } from '../../utils/format';
|
|
7
7
|
import { MAX_MONTH_OFFSET } from '../../utils/hubspot-meetings-convention';
|
|
8
|
-
import {
|
|
8
|
+
import { UnifiedSkeleton } from '../loading/unified-skeleton';
|
|
9
|
+
import { Button, DatePickerCalendar } from '../ui';
|
|
9
10
|
|
|
10
11
|
/**
|
|
11
12
|
* SlotPicker — day layer + time-chip grid for the meeting scheduler.
|
|
@@ -363,7 +364,7 @@ export function TimeChipsSkeleton() {
|
|
|
363
364
|
{/* The day label is data — but it is held inside the REAL heading line
|
|
364
365
|
box, so the skeleton's first row sits exactly where the label lands. */}
|
|
365
366
|
<div className={COLUMN_HEADING_CLASS}>
|
|
366
|
-
<
|
|
367
|
+
<UnifiedSkeleton className="inline-block h-4 w-40 align-middle" />
|
|
367
368
|
</div>
|
|
368
369
|
<div className={CHIP_GRID_CLASS}>
|
|
369
370
|
{/* Enough to fill the visible scroll box at any column count — the
|
|
@@ -371,7 +372,7 @@ export function TimeChipsSkeleton() {
|
|
|
371
372
|
lands flush and a partial last row is the honest shape anyway. */}
|
|
372
373
|
{Array.from({ length: 16 }, (_, i) => (
|
|
373
374
|
// h-11 content-md:h-12 — the loaded chip's own default-size height.
|
|
374
|
-
<
|
|
375
|
+
<UnifiedSkeleton key={i} className={cn(CHIP_CLASS, 'h-11 content-md:h-12')} />
|
|
375
376
|
))}
|
|
376
377
|
</div>
|
|
377
378
|
</>
|
|
@@ -11,6 +11,7 @@ import { LogOutIcon } from '../icons-v2-generated/interface/log-out-icon';
|
|
|
11
11
|
import { OpenframeLogoIcon } from '../icons-v2-generated/logos/openframe-logo-icon';
|
|
12
12
|
import { OpenframeTextIcon } from '../icons-v2-generated/logos/openframe-text-icon';
|
|
13
13
|
import { UserClassicIcon } from '../icons-v2-generated/users/user-classic-icon';
|
|
14
|
+
import { UnifiedSkeleton } from '../loading/unified-skeleton';
|
|
14
15
|
import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, SquareAvatar } from '../ui';
|
|
15
16
|
import { HeaderButton } from './header-button';
|
|
16
17
|
import { HeaderGlobalSearch } from './header-global-search';
|
|
@@ -387,7 +388,7 @@ const CELL_VISIBILITY: Record<Exclude<HeaderLoadingCell, 'wide'>, string | undef
|
|
|
387
388
|
function HeaderCellSkeleton({ className }: { className?: string }) {
|
|
388
389
|
return (
|
|
389
390
|
<div className={cn('flex h-full w-14 shrink-0 items-center justify-center border-l border-ods-border', className)}>
|
|
390
|
-
<
|
|
391
|
+
<UnifiedSkeleton className="h-6 w-6 rounded" />
|
|
391
392
|
</div>
|
|
392
393
|
);
|
|
393
394
|
}
|
|
@@ -403,8 +404,8 @@ function HeaderCellSkeleton({ className }: { className?: string }) {
|
|
|
403
404
|
function HeaderWideCellSkeleton() {
|
|
404
405
|
return (
|
|
405
406
|
<div className="flex h-full w-14 shrink-0 items-center justify-center gap-2 border-l border-ods-border md:w-[140px] md:px-4">
|
|
406
|
-
<
|
|
407
|
-
<
|
|
407
|
+
<UnifiedSkeleton className="h-6 w-6 shrink-0 rounded" />
|
|
408
|
+
<UnifiedSkeleton className="hidden h-5 rounded md:block md:w-[72px]" />
|
|
408
409
|
</div>
|
|
409
410
|
);
|
|
410
411
|
}
|
|
@@ -438,13 +439,13 @@ function AppHeaderSkeleton({
|
|
|
438
439
|
leading={
|
|
439
440
|
// Burger cell: mobile only, in CSS.
|
|
440
441
|
<div className="flex h-full w-14 shrink-0 items-center justify-center border-r border-ods-border md:hidden">
|
|
441
|
-
<
|
|
442
|
+
<UnifiedSkeleton className="h-6 w-6 rounded" />
|
|
442
443
|
</div>
|
|
443
444
|
}
|
|
444
445
|
logo={
|
|
445
446
|
<>
|
|
446
|
-
<
|
|
447
|
-
<
|
|
447
|
+
<UnifiedSkeleton className="h-6 w-6 shrink-0 rounded" />
|
|
448
|
+
<UnifiedSkeleton className="h-4 w-24 rounded" />
|
|
448
449
|
</>
|
|
449
450
|
}
|
|
450
451
|
// `md:hidden` belongs on the WRAPPER, not the placeholder inside it:
|
|
@@ -455,7 +456,7 @@ function AppHeaderSkeleton({
|
|
|
455
456
|
// it back on handoff, which is the exact jump this branch removes.
|
|
456
457
|
logoClassName="gap-2 md:hidden"
|
|
457
458
|
// `TopNavigation` already hides the center zone below `centerBreakpoint`.
|
|
458
|
-
center={showSearch ? <
|
|
459
|
+
center={showSearch ? <UnifiedSkeleton className="h-10 w-full rounded-md" /> : undefined}
|
|
459
460
|
sideActions={
|
|
460
461
|
<>
|
|
461
462
|
{/* Mobile-only search trigger; from md the search lives in the center zone. */}
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
import { ChevronDown, ChevronUp, FileText, Folder, FolderOpen } from 'lucide-react';
|
|
4
4
|
import { cn } from '../../utils/cn';
|
|
5
5
|
import { DEFAULT_FOLDER_INDEX_FILE as CANONICAL_FOLDER_INDEX_FILE } from '../../utils/doc-tree-nav';
|
|
6
|
+
import { UnifiedSkeleton } from '../loading/unified-skeleton';
|
|
6
7
|
|
|
7
8
|
export interface NavigationNode {
|
|
8
9
|
id: string;
|
|
@@ -93,7 +94,7 @@ export function MultiLevelNavigation({
|
|
|
93
94
|
return (
|
|
94
95
|
<div className={cn('space-y-2', className)}>
|
|
95
96
|
{[1, 2, 3, 4].map(i => (
|
|
96
|
-
<
|
|
97
|
+
<UnifiedSkeleton key={i} className="h-12 rounded-lg p-3" />
|
|
97
98
|
))}
|
|
98
99
|
</div>
|
|
99
100
|
);
|
|
@@ -241,7 +242,7 @@ export function MobileNavigationDropdown({
|
|
|
241
242
|
return (
|
|
242
243
|
<div className={cn('space-y-2', className)}>
|
|
243
244
|
{[1, 2, 3].map(i => (
|
|
244
|
-
<
|
|
245
|
+
<UnifiedSkeleton key={i} className="h-10 rounded-lg p-3" />
|
|
245
246
|
))}
|
|
246
247
|
</div>
|
|
247
248
|
);
|