@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
|
@@ -4,6 +4,7 @@ import { Check } from 'lucide-react';
|
|
|
4
4
|
import type React from 'react';
|
|
5
5
|
import { useEffect, useRef } from 'react';
|
|
6
6
|
import { UnifiedSkeleton } from '../loading';
|
|
7
|
+
import { LoadingRegion } from '../loading/loading-region';
|
|
7
8
|
import { Badge, Input } from '../ui';
|
|
8
9
|
import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '../ui/tooltip';
|
|
9
10
|
|
|
@@ -78,32 +79,40 @@ interface PushButtonSelectorProps<Id extends SelectableOptionId = string> {
|
|
|
78
79
|
footer?: React.ReactNode;
|
|
79
80
|
}
|
|
80
81
|
|
|
81
|
-
// Composed from the app-wide UnifiedSkeleton system (components/loading)
|
|
82
|
-
//
|
|
83
|
-
// prefers-reduced-motion support, role="status" a11y). Each skeleton row
|
|
82
|
+
// Composed from the app-wide UnifiedSkeleton system (components/loading),
|
|
83
|
+
// announced once by its LoadingRegion. Each skeleton row
|
|
84
84
|
// mirrors a LOADED option row exactly (bg-ods-bg card, p-4, icon + two
|
|
85
85
|
// 20px-tall text lines + selection box) so the list never jumps on load.
|
|
86
|
-
function PushButtonSelectorSkeleton({
|
|
86
|
+
function PushButtonSelectorSkeleton({
|
|
87
|
+
region = true,
|
|
88
|
+
count = 3,
|
|
89
|
+
hasTitle,
|
|
90
|
+
}: {
|
|
91
|
+
/** The loading state announces itself (`LoadingRegion`). `false` inside another loading region. Default `true`. */
|
|
92
|
+
region?: boolean;
|
|
93
|
+
count?: number;
|
|
94
|
+
hasTitle?: boolean;
|
|
95
|
+
}) {
|
|
87
96
|
return (
|
|
88
|
-
<
|
|
89
|
-
{hasTitle && <UnifiedSkeleton className="h-5 w-20"
|
|
97
|
+
<LoadingRegion label="Loading options" announce={region} className="space-y-3">
|
|
98
|
+
{hasTitle && <UnifiedSkeleton className="h-5 w-20" />}
|
|
90
99
|
<div className="space-y-3">
|
|
91
100
|
{Array.from({ length: count }, (_, i) => (
|
|
92
101
|
<div key={i} className="rounded-lg border border-ods-border bg-ods-bg p-4">
|
|
93
102
|
<div className="flex items-center justify-between gap-4">
|
|
94
103
|
<div className="flex items-center gap-3">
|
|
95
|
-
<UnifiedSkeleton className="h-8 w-8"
|
|
104
|
+
<UnifiedSkeleton className="h-8 w-8" />
|
|
96
105
|
<div>
|
|
97
|
-
<UnifiedSkeleton variant="text" className="mb-2 h-4 w-24"
|
|
98
|
-
<UnifiedSkeleton variant="text" className="h-4 w-36"
|
|
106
|
+
<UnifiedSkeleton variant="text" className="mb-2 h-4 w-24" />
|
|
107
|
+
<UnifiedSkeleton variant="text" className="h-4 w-36" />
|
|
99
108
|
</div>
|
|
100
109
|
</div>
|
|
101
|
-
<UnifiedSkeleton className="h-6 w-6"
|
|
110
|
+
<UnifiedSkeleton className="h-6 w-6" />
|
|
102
111
|
</div>
|
|
103
112
|
</div>
|
|
104
113
|
))}
|
|
105
114
|
</div>
|
|
106
|
-
</
|
|
115
|
+
</LoadingRegion>
|
|
107
116
|
);
|
|
108
117
|
}
|
|
109
118
|
|
|
@@ -11,9 +11,10 @@ import {
|
|
|
11
11
|
Settings01Icon,
|
|
12
12
|
} from '../../icons-v2-generated';
|
|
13
13
|
import { PageLayout } from '../../layout/page-layout';
|
|
14
|
+
import { LoadingRegion } from '../../loading/loading-region';
|
|
15
|
+
import { UnifiedSkeleton } from '../../loading/unified-skeleton';
|
|
14
16
|
import { ActionsMenuDropdown, type ActionsMenuGroup } from '../../ui/actions-menu';
|
|
15
17
|
import { Button } from '../../ui/button/button';
|
|
16
|
-
import { Skeleton } from '../../ui/skeleton';
|
|
17
18
|
import { TruncateText } from '../../ui/truncate-text';
|
|
18
19
|
import { RemoteDesktopFullscreenToolbar } from './remote-desktop-fullscreen-toolbar';
|
|
19
20
|
|
|
@@ -206,27 +207,36 @@ export function RemoteDesktopView({
|
|
|
206
207
|
}
|
|
207
208
|
|
|
208
209
|
/** The page while the device is still loading: the header bar as placeholders over an empty screen. */
|
|
209
|
-
export function RemoteDesktopViewSkeleton({
|
|
210
|
+
export function RemoteDesktopViewSkeleton({
|
|
211
|
+
onBack,
|
|
212
|
+
region = true,
|
|
213
|
+
}: Pick<RemoteDesktopViewProps, 'onBack'> & {
|
|
214
|
+
/** The loading state announces itself (`LoadingRegion`). `false` inside another loading region. Default `true`. */
|
|
215
|
+
region?: boolean;
|
|
216
|
+
}) {
|
|
210
217
|
return (
|
|
211
218
|
<PageLayout className={PAGE_CLASS} backButton={onBack ? { label: 'Back', onClick: onBack } : undefined}>
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
<div className="flex min-w-0
|
|
217
|
-
<
|
|
218
|
-
<
|
|
219
|
+
{/* `contents`: the page's own children stay its layout items; the region adds the one announcement. */}
|
|
220
|
+
<LoadingRegion label="Loading the remote session" announce={region} className="contents">
|
|
221
|
+
<div className={CONTROLS_BAR_CLASS}>
|
|
222
|
+
<div className={CONTROLS_ROW_CLASS}>
|
|
223
|
+
<div className="flex min-w-0 items-center gap-[var(--spacing-system-mf)]">
|
|
224
|
+
<UnifiedSkeleton className="h-9 w-9 flex-shrink-0 rounded-md" />
|
|
225
|
+
<div className="flex min-w-0 flex-col gap-[var(--spacing-system-xxs)]">
|
|
226
|
+
<UnifiedSkeleton className="h-5 w-48" />
|
|
227
|
+
<UnifiedSkeleton className="h-4 w-36" />
|
|
228
|
+
</div>
|
|
229
|
+
</div>
|
|
230
|
+
<div className="flex flex-shrink-0 items-center gap-[var(--spacing-system-xs)]">
|
|
231
|
+
<UnifiedSkeleton className="h-11 w-11 rounded-lg md:h-12 md:w-12" />
|
|
232
|
+
<UnifiedSkeleton className="h-11 w-11 rounded-lg md:h-12 md:w-12" />
|
|
233
|
+
<UnifiedSkeleton className="h-11 w-11 rounded-lg md:h-12 md:w-12" />
|
|
219
234
|
</div>
|
|
220
|
-
</div>
|
|
221
|
-
<div className="flex flex-shrink-0 items-center gap-[var(--spacing-system-xs)]">
|
|
222
|
-
<Skeleton className="h-11 w-11 rounded-lg md:h-12 md:w-12" />
|
|
223
|
-
<Skeleton className="h-11 w-11 rounded-lg md:h-12 md:w-12" />
|
|
224
|
-
<Skeleton className="h-11 w-11 rounded-lg md:h-12 md:w-12" />
|
|
225
235
|
</div>
|
|
226
236
|
</div>
|
|
227
|
-
</div>
|
|
228
237
|
|
|
229
|
-
|
|
238
|
+
<div className="min-h-0 min-w-0 flex-1 rounded-lg bg-black" />
|
|
239
|
+
</LoadingRegion>
|
|
230
240
|
</PageLayout>
|
|
231
241
|
);
|
|
232
242
|
}
|
|
@@ -14,6 +14,7 @@ import type { FormRescueDefinition } from '../../utils/form-rescue';
|
|
|
14
14
|
import { hasGenericEmailDomain } from '../../utils/generic-domain-utils';
|
|
15
15
|
import type { HumanitySignals } from '../../utils/humanity-signals';
|
|
16
16
|
import { OpenframeLogoIcon } from '../icons-v2-generated/logos/openframe-logo-icon';
|
|
17
|
+
import { UnifiedSkeleton } from '../loading/unified-skeleton';
|
|
17
18
|
import { Button } from '../ui/button';
|
|
18
19
|
import { CheckboxBlock } from '../ui/checkbox-block';
|
|
19
20
|
import { HoneypotField } from '../ui/honeypot-field';
|
|
@@ -201,16 +202,16 @@ export function WaitlistForm({
|
|
|
201
202
|
)}
|
|
202
203
|
>
|
|
203
204
|
{/* Email input skeleton */}
|
|
204
|
-
<
|
|
205
|
+
<UnifiedSkeleton className="h-12 w-full rounded-[6px] border border-ods-border" />
|
|
205
206
|
{/* Phone input skeleton */}
|
|
206
207
|
<div className="flex w-full gap-[var(--spacing-system-xs)]">
|
|
207
|
-
<
|
|
208
|
-
<
|
|
208
|
+
<UnifiedSkeleton className="h-12 w-[130px] shrink-0 rounded-[6px] border border-ods-border" />
|
|
209
|
+
<UnifiedSkeleton className="h-12 flex-1 rounded-[6px] border border-ods-border" />
|
|
209
210
|
</div>
|
|
210
211
|
{/* Disclaimer + button skeleton */}
|
|
211
212
|
<div className="flex w-full flex-col items-end gap-[var(--spacing-system-m)]">
|
|
212
|
-
<
|
|
213
|
-
<
|
|
213
|
+
<UnifiedSkeleton className="h-auto w-full rounded-[6px] border border-ods-border px-4 py-6" />
|
|
214
|
+
<UnifiedSkeleton className="h-12 w-[200px] rounded-[6px] border border-ods-border" />
|
|
214
215
|
</div>
|
|
215
216
|
</div>
|
|
216
217
|
);
|
|
@@ -59,6 +59,7 @@ import { WindowsLogoGreyIcon } from '../icons-v2-generated/brand-logos/windows-l
|
|
|
59
59
|
import { Download01Icon } from '../icons-v2-generated/interface/download-01-icon';
|
|
60
60
|
import { PageShell } from '../layout/article-detail-layout';
|
|
61
61
|
import { PageLayout } from '../layout/page-layout';
|
|
62
|
+
import { LoadingRegion } from '../loading/loading-region';
|
|
62
63
|
import { UnifiedSkeleton } from '../loading/unified-skeleton';
|
|
63
64
|
import { Button } from '../ui/button/button';
|
|
64
65
|
import { LoadError } from '../ui/error-state';
|
|
@@ -248,7 +249,7 @@ function WebCard({ web }: { web: DownloadAppsWebOption }) {
|
|
|
248
249
|
/** A section's cards while the server's answer loads: the same grid and card frame, a button's box in each. */
|
|
249
250
|
function CardsSkeleton({ label }: { label: string }) {
|
|
250
251
|
return (
|
|
251
|
-
<
|
|
252
|
+
<LoadingRegion label={label} className={CARDS_GRID_CLASS}>
|
|
252
253
|
{[0, 1].map(card => (
|
|
253
254
|
<div key={card} className={CARD_CLASS}>
|
|
254
255
|
<UnifiedSkeleton className="h-6 w-32 rounded" />
|
|
@@ -256,7 +257,7 @@ function CardsSkeleton({ label }: { label: string }) {
|
|
|
256
257
|
<UnifiedSkeleton className="h-14 w-full rounded-md" />
|
|
257
258
|
</div>
|
|
258
259
|
))}
|
|
259
|
-
</
|
|
260
|
+
</LoadingRegion>
|
|
260
261
|
);
|
|
261
262
|
}
|
|
262
263
|
|
|
@@ -376,10 +376,14 @@ export function TrustCenterPageSkeleton({
|
|
|
376
376
|
backButton = false,
|
|
377
377
|
title = TRUST_CENTER_TITLE,
|
|
378
378
|
subtitle = TRUST_CENTER_TAGLINE,
|
|
379
|
-
|
|
379
|
+
region = true,
|
|
380
|
+
}: Pick<TrustCenterPageProps, 'shell' | 'backButton' | 'title' | 'subtitle'> & {
|
|
381
|
+
/** The loading state announces itself (`LoadingRegion`). `false` inside another loading region. Default `true`. */
|
|
382
|
+
region?: boolean;
|
|
383
|
+
}) {
|
|
380
384
|
return (
|
|
381
385
|
<TrustCenterChrome shell={shell} title={title} subtitle={subtitle} backButton={backButton}>
|
|
382
|
-
<TrustCenterSkeleton />
|
|
386
|
+
<TrustCenterSkeleton region={region} />
|
|
383
387
|
</TrustCenterChrome>
|
|
384
388
|
);
|
|
385
389
|
}
|
|
@@ -46,6 +46,7 @@ import { ShieldCheckIcon } from '../icons-v2-generated/security/shield-check-ico
|
|
|
46
46
|
import { CheckIcon } from '../icons-v2-generated/signs-and-symbols/check-icon';
|
|
47
47
|
import { SECTION_HEADING_CLASS } from '../layout/page-heading';
|
|
48
48
|
import { ListEmptyState } from '../list-empty-state';
|
|
49
|
+
import { LoadingRegion } from '../loading/loading-region';
|
|
49
50
|
import { TextSkeleton, UnifiedSkeleton } from '../loading/unified-skeleton';
|
|
50
51
|
import { Button } from '../ui/button/button';
|
|
51
52
|
import { ComplianceLogo } from '../ui/compliance-badge';
|
|
@@ -666,7 +667,12 @@ function SectionRailSkeleton() {
|
|
|
666
667
|
* the content replaces it. The status row, then Compliance, Controls and
|
|
667
668
|
* Documents (what fills the first screens), beside the section rail.
|
|
668
669
|
*/
|
|
669
|
-
export function TrustCenterSkeleton(
|
|
670
|
+
export function TrustCenterSkeleton({
|
|
671
|
+
region = true,
|
|
672
|
+
}: {
|
|
673
|
+
/** The loading state announces itself (`LoadingRegion`). `false` inside another loading region. Default `true`. */
|
|
674
|
+
region?: boolean;
|
|
675
|
+
} = {}) {
|
|
670
676
|
return (
|
|
671
677
|
<>
|
|
672
678
|
<div className={TRUST_STATUS_ROW_CLASS} aria-hidden="true">
|
|
@@ -683,7 +689,7 @@ export function TrustCenterSkeleton() {
|
|
|
683
689
|
<TextSkeleton.Body className="w-44" />
|
|
684
690
|
</div>
|
|
685
691
|
</div>
|
|
686
|
-
<
|
|
692
|
+
<LoadingRegion label="Loading the trust center" announce={region} className={TRUST_BODY_GRID_CLASS}>
|
|
687
693
|
<div className={TRUST_SECTIONS_COLUMN_CLASS}>
|
|
688
694
|
<SkeletonSection id="compliance">
|
|
689
695
|
<StackedRowsPanel rows={skeletonRows(3, { mark: 'logo', action: 'badge' })} />
|
|
@@ -698,7 +704,7 @@ export function TrustCenterSkeleton() {
|
|
|
698
704
|
<aside className="hidden content-lg:block" aria-hidden="true">
|
|
699
705
|
<SectionRailSkeleton />
|
|
700
706
|
</aside>
|
|
701
|
-
</
|
|
707
|
+
</LoadingRegion>
|
|
702
708
|
</>
|
|
703
709
|
);
|
|
704
710
|
}
|
package/src/components/index.ts
CHANGED
|
@@ -18,7 +18,6 @@ export * from './comment-card';
|
|
|
18
18
|
export * from './comment-composer';
|
|
19
19
|
export * from './comment-thread';
|
|
20
20
|
export * from './content-loading-container';
|
|
21
|
-
export * from './dynamic-skeleton';
|
|
22
21
|
export * from './empty-state';
|
|
23
22
|
export * from './list-empty-state';
|
|
24
23
|
export * from './faq-accordion';
|
|
@@ -57,7 +56,6 @@ export * from './social-icon-row';
|
|
|
57
56
|
export * from './user-display';
|
|
58
57
|
export * from './vendor-display-button';
|
|
59
58
|
export * from './vendor-icon';
|
|
60
|
-
export * from './vendor-page-skeleton';
|
|
61
59
|
export * from './vendor-tag';
|
|
62
60
|
export * from './why-it-matters';
|
|
63
61
|
export * from './yes-no-display';
|
|
@@ -84,6 +84,7 @@
|
|
|
84
84
|
import type React from 'react';
|
|
85
85
|
import { useIsTruncated } from '../../hooks/ui/use-is-truncated';
|
|
86
86
|
import { cn } from '../../utils/cn';
|
|
87
|
+
import { UnifiedSkeleton } from '../loading/unified-skeleton';
|
|
87
88
|
import type { ActionsMenuGroup } from '../ui/actions-menu';
|
|
88
89
|
import { EntityImage } from '../ui/entity-image';
|
|
89
90
|
import { FloatingTooltip } from '../ui/floating-tooltip';
|
|
@@ -159,21 +160,14 @@ export interface TitleBlockProps {
|
|
|
159
160
|
}
|
|
160
161
|
|
|
161
162
|
/**
|
|
162
|
-
*
|
|
163
|
-
* `h1`/`p
|
|
164
|
-
* typography line-height,
|
|
163
|
+
* The inline text skeleton, used only in `loading` mode, placed directly inside the real
|
|
164
|
+
* `h1`/`p`: a single `inline-block` `UnifiedSkeleton` span whose height is intentionally SHORTER
|
|
165
|
+
* than the typography line-height, on the default baseline alignment. That way the element's
|
|
165
166
|
* own line-box STRUT (text-h2 → 40px, text-h6 → 20px) sets the height exactly as it would for
|
|
166
|
-
* real text
|
|
167
|
+
* real text: the bar fits within the ascent and never inflates the line. So a loading header
|
|
167
168
|
* is pixel-identical in height to the loaded one. Phrasing-valid (`span` only).
|
|
168
169
|
*/
|
|
169
|
-
|
|
170
|
-
return (
|
|
171
|
-
<span
|
|
172
|
-
aria-hidden
|
|
173
|
-
className={cn('inline-block max-w-full animate-pulse rounded-md bg-ods-border', widthClass, heightClass)}
|
|
174
|
-
/>
|
|
175
|
-
);
|
|
176
|
-
}
|
|
170
|
+
const TITLE_TEXT_SKELETON_CLASS = 'inline-block max-w-full rounded-md';
|
|
177
171
|
|
|
178
172
|
/**
|
|
179
173
|
* Bar geometry per title size, following the ODS type scale across breakpoints
|
|
@@ -184,7 +178,7 @@ function TitleTextSkeleton({ widthClass, heightClass }: { widthClass: string; he
|
|
|
184
178
|
* 32/40 from tablet up. `text-h1` scales at both breakpoints (40 → 48 → 56), so
|
|
185
179
|
* its bar does too — reusing the h2 bar there would leave a stamp-sized smudge
|
|
186
180
|
* inside a 64px line. Heights stay well under the line box's ascent on purpose;
|
|
187
|
-
* see `
|
|
181
|
+
* see `TITLE_TEXT_SKELETON_CLASS` for why that is what keeps the header height honest.
|
|
188
182
|
*/
|
|
189
183
|
const TITLE_SKELETON_SIZE = {
|
|
190
184
|
h1: { width: 'w-56 content-md:w-80 content-lg:w-96', height: 'h-7 content-md:h-8 content-lg:h-9' },
|
|
@@ -226,7 +220,11 @@ export function TitleBlock({
|
|
|
226
220
|
loading ? null : subtitle,
|
|
227
221
|
);
|
|
228
222
|
const titleNode = loading ? (
|
|
229
|
-
<
|
|
223
|
+
<UnifiedSkeleton
|
|
224
|
+
as="span"
|
|
225
|
+
aria-hidden
|
|
226
|
+
className={cn(TITLE_TEXT_SKELETON_CLASS, skeletonSize.width, skeletonSize.height)}
|
|
227
|
+
/>
|
|
230
228
|
) : (
|
|
231
229
|
title
|
|
232
230
|
);
|
|
@@ -307,7 +305,11 @@ export function TitleBlock({
|
|
|
307
305
|
aria-hidden={!loading && !subtitle ? true : undefined}
|
|
308
306
|
>
|
|
309
307
|
{loading ? (
|
|
310
|
-
<
|
|
308
|
+
<UnifiedSkeleton
|
|
309
|
+
as="span"
|
|
310
|
+
aria-hidden
|
|
311
|
+
className={cn(TITLE_TEXT_SKELETON_CLASS, 'h-2.5 w-28 content-md:h-3 content-md:w-36')}
|
|
312
|
+
/>
|
|
311
313
|
) : (
|
|
312
314
|
subtitle || '\u00A0'
|
|
313
315
|
)}
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { cn } from '../../utils/cn';
|
|
2
|
-
import {
|
|
2
|
+
import { LoadingRegion } from './loading-region';
|
|
3
|
+
import { UnifiedSkeleton, TextSkeleton, MediaSkeleton, InteractiveSkeleton } from './unified-skeleton';
|
|
3
4
|
|
|
4
5
|
interface CardSkeletonProps {
|
|
5
6
|
className?: string;
|
|
6
7
|
/**
|
|
7
8
|
* Card layout variant
|
|
8
9
|
*/
|
|
9
|
-
variant?: 'vendor' | 'blog' | '
|
|
10
|
+
variant?: 'vendor' | 'blog' | 'alternative';
|
|
10
11
|
/**
|
|
11
12
|
* Show action buttons area
|
|
12
13
|
*/
|
|
@@ -24,9 +25,10 @@ interface CardSkeletonProps {
|
|
|
24
25
|
*
|
|
25
26
|
* Supports different card types used across the application:
|
|
26
27
|
* - vendor: Vendor cards with logo, title, description, and actions
|
|
27
|
-
* - blog: Blog post cards with image, title, summary, and metadata
|
|
28
|
-
* - category: Category cards with icon, title, and description
|
|
28
|
+
* - blog: Blog post cards with image, title, summary, and metadata
|
|
29
29
|
* - alternative: Alternative vendor cards in comparison lists
|
|
30
|
+
*
|
|
31
|
+
* A category card's loading box is `CategoryCardSkeleton`.
|
|
30
32
|
*/
|
|
31
33
|
export function CardSkeleton({
|
|
32
34
|
className,
|
|
@@ -39,7 +41,6 @@ export function CardSkeleton({
|
|
|
39
41
|
const cardContent = {
|
|
40
42
|
vendor: <VendorCardContent showMetadata={showMetadata} />,
|
|
41
43
|
blog: <BlogCardContent showActions={showActions} showMetadata={showMetadata} />,
|
|
42
|
-
category: <CategoryCardContent />,
|
|
43
44
|
alternative: <AlternativeCardContent showActions={showActions} />,
|
|
44
45
|
};
|
|
45
46
|
|
|
@@ -53,8 +54,6 @@ export function CardSkeleton({
|
|
|
53
54
|
variant === 'vendor' && 'flex h-full flex-col',
|
|
54
55
|
className,
|
|
55
56
|
)}
|
|
56
|
-
role="status"
|
|
57
|
-
aria-label={`Loading ${variant} card`}
|
|
58
57
|
{...props}
|
|
59
58
|
>
|
|
60
59
|
{cardContent[variant]}
|
|
@@ -181,7 +180,7 @@ function BlogCardContent({ showActions, showMetadata }: { showActions: boolean;
|
|
|
181
180
|
<div className="flex shrink-0 items-center gap-3 text-ods-text-muted">
|
|
182
181
|
<TextSkeleton.Caption className="w-12" />
|
|
183
182
|
{/* Separator dot */}
|
|
184
|
-
<
|
|
183
|
+
<UnifiedSkeleton variant="circular" className="h-1 w-1" />
|
|
185
184
|
<TextSkeleton.Caption className="w-16" />
|
|
186
185
|
</div>
|
|
187
186
|
</div>
|
|
@@ -192,39 +191,6 @@ function BlogCardContent({ showActions, showMetadata }: { showActions: boolean;
|
|
|
192
191
|
);
|
|
193
192
|
}
|
|
194
193
|
|
|
195
|
-
/**
|
|
196
|
-
* Category card skeleton content
|
|
197
|
-
*/
|
|
198
|
-
function CategoryCardContent() {
|
|
199
|
-
return (
|
|
200
|
-
<div className="space-y-4 p-4 content-md:p-6">
|
|
201
|
-
{/* Icon grid */}
|
|
202
|
-
<div className="flex gap-2 content-md:gap-3">
|
|
203
|
-
{Array.from({ length: 6 }).map((_, index) => (
|
|
204
|
-
<MediaSkeleton.Icon key={index} size="lg" className="flex-shrink-0" />
|
|
205
|
-
))}
|
|
206
|
-
</div>
|
|
207
|
-
|
|
208
|
-
{/* Content */}
|
|
209
|
-
<div className="space-y-2">
|
|
210
|
-
<div className="space-y-1">
|
|
211
|
-
<TextSkeleton.Subheading className="w-3/4" />
|
|
212
|
-
<TextSkeleton.Caption className="w-1/2" />
|
|
213
|
-
</div>
|
|
214
|
-
|
|
215
|
-
<div className="flex items-start justify-between gap-4 content-md:items-end content-md:gap-6">
|
|
216
|
-
<div className="flex-1 space-y-2">
|
|
217
|
-
<TextSkeleton.Body className="w-full" />
|
|
218
|
-
<TextSkeleton.Body className="w-2/3" />
|
|
219
|
-
</div>
|
|
220
|
-
|
|
221
|
-
<InteractiveSkeleton.Button className="h-10 w-10 flex-shrink-0 content-md:h-12 content-md:w-12" />
|
|
222
|
-
</div>
|
|
223
|
-
</div>
|
|
224
|
-
</div>
|
|
225
|
-
);
|
|
226
|
-
}
|
|
227
|
-
|
|
228
194
|
/**
|
|
229
195
|
* Alternative card skeleton content (for vendor alternatives/comparisons)
|
|
230
196
|
*/
|
|
@@ -258,34 +224,36 @@ function AlternativeCardContent({ showActions }: { showActions: boolean }) {
|
|
|
258
224
|
* Grid of card skeletons for loading lists
|
|
259
225
|
*/
|
|
260
226
|
export function CardSkeletonGrid({
|
|
227
|
+
region = true,
|
|
261
228
|
count = 6,
|
|
262
229
|
variant = 'vendor',
|
|
263
230
|
className,
|
|
264
231
|
containerClassName,
|
|
265
232
|
...props
|
|
266
233
|
}: {
|
|
234
|
+
/** The loading state announces itself (`LoadingRegion`). `false` inside another loading region. Default `true`. */
|
|
235
|
+
region?: boolean;
|
|
267
236
|
count?: number;
|
|
268
237
|
variant?: CardSkeletonProps['variant'];
|
|
269
238
|
className?: string;
|
|
270
239
|
containerClassName?: string;
|
|
271
240
|
} & Omit<CardSkeletonProps, 'variant'>) {
|
|
272
241
|
return (
|
|
273
|
-
<
|
|
242
|
+
<LoadingRegion
|
|
243
|
+
label={`Loading ${variant} cards`}
|
|
244
|
+
announce={region}
|
|
274
245
|
className={cn(
|
|
275
246
|
'grid gap-4 content-md:gap-6',
|
|
276
247
|
// Responsive grid based on card type
|
|
277
248
|
variant === 'vendor' && 'grid-cols-1 content-md:grid-cols-2 content-lg:grid-cols-3',
|
|
278
249
|
variant === 'blog' && 'grid-cols-1 content-md:grid-cols-2',
|
|
279
|
-
variant === 'category' && 'grid-cols-1 content-md:grid-cols-2 content-lg:grid-cols-4',
|
|
280
250
|
variant === 'alternative' && 'grid-cols-1',
|
|
281
251
|
className,
|
|
282
252
|
)}
|
|
283
|
-
role="status"
|
|
284
|
-
aria-label={`Loading ${count} ${variant} cards`}
|
|
285
253
|
>
|
|
286
254
|
{Array.from({ length: count }, (_, index) => (
|
|
287
255
|
<CardSkeleton key={index} variant={variant} containerClassName={containerClassName} {...props} />
|
|
288
256
|
))}
|
|
289
|
-
</
|
|
257
|
+
</LoadingRegion>
|
|
290
258
|
);
|
|
291
259
|
}
|
|
@@ -12,13 +12,11 @@ export function CategoryCardSkeleton({ className }: CategoryCardSkeletonProps) {
|
|
|
12
12
|
'box-border flex min-w-0 flex-col rounded-[12px] border border-ods-border bg-ods-card p-8',
|
|
13
13
|
className,
|
|
14
14
|
)}
|
|
15
|
-
role="status"
|
|
16
|
-
aria-label="Loading category card"
|
|
17
15
|
>
|
|
18
16
|
{/* Icons row */}
|
|
19
17
|
<div className="mb-8 flex items-center justify-center gap-6">
|
|
20
18
|
{Array.from({ length: 10 }).map((_, i) => (
|
|
21
|
-
<UnifiedSkeleton key={i} variant="circular" className="h-10 w-10 flex-shrink-0"
|
|
19
|
+
<UnifiedSkeleton key={i} variant="circular" className="h-10 w-10 flex-shrink-0" />
|
|
22
20
|
))}
|
|
23
21
|
</div>
|
|
24
22
|
|
|
@@ -31,7 +29,7 @@ export function CategoryCardSkeleton({ className }: CategoryCardSkeletonProps) {
|
|
|
31
29
|
|
|
32
30
|
{/* Arrow button placeholder */}
|
|
33
31
|
<div className="mt-4 flex justify-end">
|
|
34
|
-
<UnifiedSkeleton className="h-12 w-12 rounded-[6px]"
|
|
32
|
+
<UnifiedSkeleton className="h-12 w-12 rounded-[6px]" />
|
|
35
33
|
</div>
|
|
36
34
|
</article>
|
|
37
35
|
);
|
|
@@ -1,18 +1,25 @@
|
|
|
1
1
|
import { cn } from '../../utils/cn';
|
|
2
|
+
import { LoadingRegion } from './loading-region';
|
|
2
3
|
import { TextSkeleton, UnifiedSkeleton } from './unified-skeleton';
|
|
3
4
|
|
|
4
5
|
interface CategoryVendorSelectorSkeletonProps {
|
|
6
|
+
/** The loading state announces itself (`LoadingRegion`). `false` inside another loading region. Default `true`. */
|
|
7
|
+
region?: boolean;
|
|
5
8
|
/** number of subcategory blocks to render */
|
|
6
9
|
subcategories?: number;
|
|
7
10
|
className?: string;
|
|
8
11
|
}
|
|
9
12
|
|
|
10
|
-
export function CategoryVendorSelectorSkeleton({
|
|
13
|
+
export function CategoryVendorSelectorSkeleton({
|
|
14
|
+
region = true,
|
|
15
|
+
subcategories = 3,
|
|
16
|
+
className,
|
|
17
|
+
}: CategoryVendorSelectorSkeletonProps) {
|
|
11
18
|
return (
|
|
12
|
-
<
|
|
19
|
+
<LoadingRegion
|
|
20
|
+
label="Loading categories"
|
|
21
|
+
announce={region}
|
|
13
22
|
className={cn('rounded-lg border border-ods-border bg-ods-card p-6', className)}
|
|
14
|
-
role="status"
|
|
15
|
-
aria-label="Loading category section"
|
|
16
23
|
>
|
|
17
24
|
{/* Header */}
|
|
18
25
|
<div className="mb-6 max-w-xl space-y-2">
|
|
@@ -35,6 +42,6 @@ export function CategoryVendorSelectorSkeleton({ subcategories = 3, className }:
|
|
|
35
42
|
</div>
|
|
36
43
|
))}
|
|
37
44
|
</div>
|
|
38
|
-
</
|
|
45
|
+
</LoadingRegion>
|
|
39
46
|
);
|
|
40
47
|
}
|