@flamingo-stack/openframe-frontend-core 0.0.747 → 0.0.749
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/build/export-map.json +1 -1
- package/dist/{chunk-4DT5YXTM.cjs → chunk-2J2OBP4N.cjs} +26 -18
- package/dist/chunk-2YXOD2KL.cjs +137 -0
- package/dist/{chunk-BEC43GHL.cjs → chunk-34TWK3JE.cjs} +3 -3
- package/dist/{chunk-BBM2ICOY.cjs → chunk-3TELPOVH.cjs} +2 -2
- package/dist/{chunk-O6QQ44I3.cjs → chunk-45YRDD7W.cjs} +22 -19
- package/dist/{chunk-U6XWGK53.cjs → chunk-ALPRQ3ZX.cjs} +56 -46
- package/dist/{chunk-4AWI6CCU.cjs → chunk-BN6NA5RM.cjs} +56 -53
- package/dist/{chunk-HNLI4OU5.cjs → chunk-C6LPOYDM.cjs} +24 -24
- package/dist/{chunk-4MGZYY6U.cjs → chunk-CLAJIQ7E.cjs} +26 -18
- package/dist/{chunk-WY4FKKCV.cjs → chunk-CXV7VBSI.cjs} +104 -118
- package/dist/{chunk-QPSQ5WLG.cjs → chunk-DGEB5GUZ.cjs} +2 -2
- package/dist/{chunk-6RTHHU3S.cjs → chunk-E3KFEOFA.cjs} +9 -6
- package/dist/{chunk-PSSGIZXZ.cjs → chunk-FHT7SMA7.cjs} +49 -46
- package/dist/{chunk-TYW7NBP7.cjs → chunk-GOFEOCQN.cjs} +44 -27
- package/dist/{chunk-HTMHDEIV.cjs → chunk-HOEVD6EN.cjs} +4 -4
- package/dist/{chunk-2CEQGGRN.cjs → chunk-KRAQEZPB.cjs} +48 -40
- package/dist/{chunk-AKTPO2DN.cjs → chunk-L4UI63K6.cjs} +2 -2
- package/dist/{chunk-FCQCEQBY.cjs → chunk-LQT2ITMG.cjs} +6 -6
- package/dist/{chunk-PSIKUDUV.cjs → chunk-LVO7FALW.cjs} +5 -5
- package/dist/{chunk-L2RMTGOK.cjs → chunk-MGF3FUKD.cjs} +7 -7
- package/dist/{chunk-P7KTAXXE.cjs → chunk-OFO75R2O.cjs} +169 -175
- package/dist/{chunk-IJA3OZWF.cjs → chunk-OZLIKBKC.cjs} +24 -24
- package/dist/{chunk-B27QEHYR.cjs → chunk-P6F6PHVK.cjs} +9 -9
- package/dist/chunk-RB6BSE3O.cjs +21 -0
- package/dist/{chunk-R3FXJXSQ.cjs → chunk-SECT4H34.cjs} +1780 -2076
- package/dist/{chunk-LLAKQT3B.cjs → chunk-SGL47BS2.cjs} +12 -12
- package/dist/{chunk-PIQRV4EQ.cjs → chunk-SOPVUD2Y.cjs} +3 -3
- package/dist/chunk-UGCRLRCT.cjs +25 -0
- package/dist/{chunk-7Y5U3Y4S.cjs → chunk-V3UJ6NDR.cjs} +281 -462
- package/dist/{chunk-JPSMPXCH.cjs → chunk-VEVIMDNK.cjs} +137 -122
- package/dist/{chunk-C7NTL2GV.cjs → chunk-WZX26ODJ.cjs} +121 -121
- package/dist/{chunk-YIRX6C7V.cjs → chunk-XJ3J4UIS.cjs} +57 -22
- package/dist/{chunk-MA7T36JY.cjs → chunk-ZLF55RDR.cjs} +103 -98
- package/dist/{cloud-tenants-QJZIF2JS.cjs → cloud-tenants-2MYFHEYY.cjs} +16 -14
- package/dist/components/case-studies/index.cjs +29 -27
- package/dist/components/categories-cart.d.ts.map +1 -1
- package/dist/components/categories-cart.js +2 -7
- package/dist/components/chat/chat-container.js +4 -4
- package/dist/components/chat/chat-context-picker.d.ts.map +1 -1
- package/dist/components/chat/chat-context-picker.js +2 -1
- package/dist/components/chat/chat-message-row.d.ts.map +1 -1
- package/dist/components/chat/chat-message-row.js +6 -5
- package/dist/components/chat/chat-message-skeleton.d.ts +3 -1
- package/dist/components/chat/chat-message-skeleton.d.ts.map +1 -1
- package/dist/components/chat/chat-message-skeleton.js +8 -5
- package/dist/components/chat/chat-sidebar-skeleton.d.ts.map +1 -1
- package/dist/components/chat/chat-sidebar-skeleton.js +4 -3
- package/dist/components/chat/chat-top-navigation.js +4 -4
- package/dist/components/chat/context-items-list.d.ts.map +1 -1
- package/dist/components/chat/context-items-list.js +5 -3
- package/dist/components/chat/entity-cards/admin-content-card-grid.d.ts +24 -1
- package/dist/components/chat/entity-cards/admin-content-card-grid.d.ts.map +1 -1
- package/dist/components/chat/entity-cards/admin-content-card-grid.js +46 -15
- package/dist/components/chat/entity-cards/admin-content-card.d.ts.map +1 -1
- package/dist/components/chat/entity-cards/admin-content-card.js +2 -1
- package/dist/components/chat/entity-cards/blog-card.d.ts.map +1 -1
- package/dist/components/chat/entity-cards/blog-card.js +13 -12
- package/dist/components/chat/entity-cards/campaign-card-admin.d.ts.map +1 -1
- package/dist/components/chat/entity-cards/campaign-card-admin.js +5 -4
- package/dist/components/chat/entity-cards/case-study-card.d.ts.map +1 -1
- package/dist/components/chat/entity-cards/case-study-card.js +19 -18
- package/dist/components/chat/entity-cards/chat-ticket-item.js +5 -5
- package/dist/components/chat/entity-cards/customer-interview-card.d.ts.map +1 -1
- package/dist/components/chat/entity-cards/customer-interview-card.js +15 -14
- package/dist/components/chat/entity-cards/data-room-doc-card.d.ts.map +1 -1
- package/dist/components/chat/entity-cards/data-room-doc-card.js +7 -6
- package/dist/components/chat/entity-cards/design-doc-card.d.ts.map +1 -1
- package/dist/components/chat/entity-cards/design-doc-card.js +0 -2
- package/dist/components/chat/entity-cards/generic-entity-card.d.ts.map +1 -1
- package/dist/components/chat/entity-cards/generic-entity-card.js +8 -7
- package/dist/components/chat/entity-cards/github-activity-card.d.ts.map +1 -1
- package/dist/components/chat/entity-cards/github-activity-card.js +11 -10
- package/dist/components/chat/entity-cards/hubspot-ticket-card.d.ts.map +1 -1
- package/dist/components/chat/entity-cards/hubspot-ticket-card.js +16 -15
- package/dist/components/chat/entity-cards/index.d.ts +1 -1
- package/dist/components/chat/entity-cards/index.d.ts.map +1 -1
- package/dist/components/chat/entity-cards/index.js +2 -0
- package/dist/components/chat/entity-cards/investor-update-card.d.ts.map +1 -1
- package/dist/components/chat/entity-cards/investor-update-card.js +12 -11
- package/dist/components/chat/entity-cards/onboarding-guide-card.d.ts.map +1 -1
- package/dist/components/chat/entity-cards/onboarding-guide-card.js +25 -30
- package/dist/components/chat/entity-cards/program-card.d.ts.map +1 -1
- package/dist/components/chat/entity-cards/program-card.js +29 -28
- package/dist/components/chat/entity-cards/roadmap-card.d.ts.map +1 -1
- package/dist/components/chat/entity-cards/roadmap-card.js +37 -39
- package/dist/components/chat/entity-cards/slack-message-card.d.ts.map +1 -1
- package/dist/components/chat/entity-cards/slack-message-card.js +12 -11
- package/dist/components/chat/guide-welcome.js +2 -2
- package/dist/components/chat/index.cjs +13 -9
- package/dist/components/chat/mingo-archive-list.d.ts.map +1 -1
- package/dist/components/chat/mingo-archive-list.js +2 -1
- package/dist/components/chat/mingo-chat-history.d.ts +4 -2
- package/dist/components/chat/mingo-chat-history.d.ts.map +1 -1
- package/dist/components/chat/mingo-chat-history.js +11 -5
- package/dist/components/chat/mingo-chat-rail.d.ts.map +1 -1
- package/dist/components/chat/mingo-chat-rail.js +2 -1
- package/dist/components/chat/mingo-info-card.d.ts.map +1 -1
- package/dist/components/chat/mingo-info-card.js +6 -5
- package/dist/components/chat/mingo-onboarding-card-skeleton.d.ts +3 -1
- package/dist/components/chat/mingo-onboarding-card-skeleton.d.ts.map +1 -1
- package/dist/components/chat/mingo-onboarding-card-skeleton.js +12 -12
- package/dist/components/chat/model-display.js +4 -4
- package/dist/components/chat/msp-organization-card-skeleton.js +5 -5
- package/dist/components/chat/quick-action-chip.d.ts +3 -3
- package/dist/components/chat/quick-action-chip.d.ts.map +1 -1
- package/dist/components/chat/quick-action-chip.js +12 -6
- package/dist/components/chat/utils/compact-card-classes.d.ts +4 -4
- package/dist/components/chat/utils/compact-card-classes.d.ts.map +1 -1
- package/dist/components/chat/utils/compact-card-classes.js +2 -2
- package/dist/components/contact/index.cjs +17 -15
- package/dist/components/content-loading-container.d.ts +1 -1
- package/dist/components/content-loading-container.d.ts.map +1 -1
- package/dist/components/content-loading-container.js +6 -7
- package/dist/components/docs/doc-viewer.d.ts.map +1 -1
- package/dist/components/docs/doc-viewer.js +3 -2
- package/dist/components/docs/index.cjs +20 -18
- package/dist/components/docs/skeletons.d.ts +7 -8
- package/dist/components/docs/skeletons.d.ts.map +1 -1
- package/dist/components/docs/skeletons.js +62 -61
- package/dist/components/embeds/embed-iframe.d.ts +6 -6
- package/dist/components/embeds/embed-iframe.d.ts.map +1 -1
- package/dist/components/embeds/embed-iframe.js +9 -4
- package/dist/components/embeds/index.cjs +19 -15
- package/dist/components/embeds/index.d.ts +2 -2
- package/dist/components/embeds/index.d.ts.map +1 -1
- package/dist/components/embeds/index.js +2 -1
- package/dist/components/embeds/linkedin-embed-client.d.ts.map +1 -1
- package/dist/components/embeds/linkedin-embed-client.js +7 -6
- package/dist/components/embeds/markdown-image.d.ts.map +1 -1
- package/dist/components/embeds/markdown-image.js +5 -3
- package/dist/components/embeds/og-link-preview.d.ts +19 -18
- package/dist/components/embeds/og-link-preview.d.ts.map +1 -1
- package/dist/components/embeds/og-link-preview.js +143 -88
- package/dist/components/embeds/reddit-embed-client.d.ts.map +1 -1
- package/dist/components/embeds/reddit-embed-client.js +10 -9
- package/dist/components/embeds/twitter-embed-client.d.ts.map +1 -1
- package/dist/components/embeds/twitter-embed-client.js +10 -9
- package/dist/components/faq/faq-section.d.ts.map +1 -1
- package/dist/components/faq/faq-section.js +9 -5
- package/dist/components/faq/index.cjs +18 -16
- package/dist/components/features/board/ticket-card-skeleton.js +8 -8
- package/dist/components/features/capability-explorer.d.ts +3 -1
- package/dist/components/features/capability-explorer.d.ts.map +1 -1
- package/dist/components/features/capability-explorer.js +27 -24
- package/dist/components/features/devices/device-selector/device-selector-skeleton.d.ts +5 -2
- package/dist/components/features/devices/device-selector/device-selector-skeleton.d.ts.map +1 -1
- package/dist/components/features/devices/device-selector/device-selector-skeleton.js +2 -2
- package/dist/components/features/devices/device-selector/device-selector.d.ts +1 -1
- package/dist/components/features/devices/device-selector/device-selector.d.ts.map +1 -1
- package/dist/components/features/devices/device-selector/device-selector.js +2 -0
- package/dist/components/features/devices/device-selector/device-selector.types.d.ts +2 -0
- package/dist/components/features/devices/device-selector/device-selector.types.d.ts.map +1 -1
- package/dist/components/features/devices/devices-grid.d.ts +3 -1
- package/dist/components/features/devices/devices-grid.d.ts.map +1 -1
- package/dist/components/features/devices/devices-grid.js +3 -2
- package/dist/components/features/devices/devices-panel-view.d.ts +6 -1
- package/dist/components/features/devices/devices-panel-view.d.ts.map +1 -1
- package/dist/components/features/devices/devices-panel-view.js +4 -1
- package/dist/components/features/devices/devices-table-columns.d.ts +3 -1
- package/dist/components/features/devices/devices-table-columns.d.ts.map +1 -1
- package/dist/components/features/devices/devices-table-columns.js +2 -0
- package/dist/components/features/index.cjs +18 -14
- package/dist/components/features/logs/logs-table-view.d.ts +3 -1
- package/dist/components/features/logs/logs-table-view.d.ts.map +1 -1
- package/dist/components/features/logs/logs-table-view.js +2 -2
- package/dist/components/features/model-token-rates.d.ts +4 -1
- package/dist/components/features/model-token-rates.d.ts.map +1 -1
- package/dist/components/features/model-token-rates.js +18 -23
- package/dist/components/features/notifications/index.d.ts +2 -2
- package/dist/components/features/notifications/index.d.ts.map +1 -1
- package/dist/components/features/notifications/index.js +2 -1
- package/dist/components/features/notifications/notification-drawer.d.ts.map +1 -1
- package/dist/components/features/notifications/notification-drawer.js +9 -16
- package/dist/components/features/notifications/notification-tile.d.ts +14 -0
- package/dist/components/features/notifications/notification-tile.d.ts.map +1 -1
- package/dist/components/features/notifications/notification-tile.js +36 -1
- package/dist/components/features/policies/policy-summary-cards.js +2 -2
- package/dist/components/features/push-button-selector.d.ts.map +1 -1
- package/dist/components/features/push-button-selector.js +12 -7
- package/dist/components/features/remote-session/remote-desktop-view.d.ts +4 -1
- package/dist/components/features/remote-session/remote-desktop-view.d.ts.map +1 -1
- package/dist/components/features/remote-session/remote-desktop-view.js +14 -10
- package/dist/components/features/waitlist-form.d.ts.map +1 -1
- package/dist/components/features/waitlist-form.js +6 -5
- package/dist/components/help-center-pages/download-apps-page.d.ts.map +1 -1
- package/dist/components/help-center-pages/download-apps-page.js +2 -1
- package/dist/components/help-center-pages/index.cjs +127 -119
- package/dist/components/help-center-pages/trust-center-page.d.ts +4 -1
- package/dist/components/help-center-pages/trust-center-page.d.ts.map +1 -1
- package/dist/components/help-center-pages/trust-center-page.js +3 -2
- package/dist/components/help-center-pages/trust-center-sections.d.ts +4 -1
- package/dist/components/help-center-pages/trust-center-sections.d.ts.map +1 -1
- package/dist/components/help-center-pages/trust-center-sections.js +5 -2
- package/dist/components/index.cjs +70 -112
- package/dist/components/index.d.ts +0 -2
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +0 -2
- package/dist/components/layout/title-block.d.ts.map +1 -1
- package/dist/components/layout/title-block.js +18 -11
- package/dist/components/loading/card-skeleton.d.ts +6 -3
- package/dist/components/loading/card-skeleton.d.ts.map +1 -1
- package/dist/components/loading/card-skeleton.js +7 -27
- package/dist/components/loading/category-card-skeleton.d.ts.map +1 -1
- package/dist/components/loading/category-card-skeleton.js +2 -4
- package/dist/components/loading/category-vendor-selector-skeleton.d.ts +3 -1
- package/dist/components/loading/category-vendor-selector-skeleton.d.ts.map +1 -1
- package/dist/components/loading/category-vendor-selector-skeleton.js +9 -4
- package/dist/components/loading/device-card-skeleton.d.ts +18 -9
- package/dist/components/loading/device-card-skeleton.d.ts.map +1 -1
- package/dist/components/loading/device-card-skeleton.js +30 -21
- package/dist/components/loading/index.d.ts +3 -4
- package/dist/components/loading/index.d.ts.map +1 -1
- package/dist/components/loading/index.js +6 -29
- package/dist/components/loading/loading-region.d.ts +33 -0
- package/dist/components/loading/loading-region.d.ts.map +1 -0
- package/dist/components/loading/loading-region.js +22 -0
- package/dist/components/loading/margin-report-skeleton.d.ts +3 -1
- package/dist/components/loading/margin-report-skeleton.d.ts.map +1 -1
- package/dist/components/loading/margin-report-skeleton.js +70 -61
- package/dist/components/loading/msp-profile-form-skeleton.d.ts +3 -1
- package/dist/components/loading/msp-profile-form-skeleton.d.ts.map +1 -1
- package/dist/components/loading/msp-profile-form-skeleton.js +6 -5
- package/dist/components/loading/organization-card-skeleton.d.ts +3 -1
- package/dist/components/loading/organization-card-skeleton.d.ts.map +1 -1
- package/dist/components/loading/organization-card-skeleton.js +5 -5
- package/dist/components/loading/organization-icon-skeleton.d.ts.map +1 -1
- package/dist/components/loading/organization-icon-skeleton.js +2 -1
- package/dist/components/loading/page-layout-skeleton.d.ts +21 -6
- package/dist/components/loading/page-layout-skeleton.d.ts.map +1 -1
- package/dist/components/loading/page-layout-skeleton.js +283 -266
- package/dist/components/loading/settings-form-skeleton.d.ts +17 -0
- package/dist/components/loading/settings-form-skeleton.d.ts.map +1 -0
- package/dist/components/loading/settings-form-skeleton.js +42 -0
- package/dist/components/loading/unified-skeleton.d.ts +11 -4
- package/dist/components/loading/unified-skeleton.d.ts.map +1 -1
- package/dist/components/loading/unified-skeleton.js +14 -89
- package/dist/components/loading/wizard-layout-skeleton.d.ts +3 -1
- package/dist/components/loading/wizard-layout-skeleton.d.ts.map +1 -1
- package/dist/components/loading/wizard-layout-skeleton.js +3 -2
- package/dist/components/media-carousel.d.ts.map +1 -1
- package/dist/components/media-carousel.js +2 -1
- package/dist/components/meeting-scheduler/booking-form.d.ts.map +1 -1
- package/dist/components/meeting-scheduler/booking-form.js +14 -8
- package/dist/components/meeting-scheduler/context-panel.d.ts.map +1 -1
- package/dist/components/meeting-scheduler/context-panel.js +8 -7
- package/dist/components/meeting-scheduler/directory.d.ts.map +1 -1
- package/dist/components/meeting-scheduler/directory.js +10 -9
- package/dist/components/meeting-scheduler/index.cjs +85 -75
- package/dist/components/meeting-scheduler/index.d.ts.map +1 -1
- package/dist/components/meeting-scheduler/index.js +3 -2
- package/dist/components/meeting-scheduler/modal-header.d.ts.map +1 -1
- package/dist/components/meeting-scheduler/modal-header.js +8 -7
- package/dist/components/meeting-scheduler/slot-picker.d.ts.map +1 -1
- package/dist/components/meeting-scheduler/slot-picker.js +4 -3
- package/dist/components/navigation/app-header.d.ts.map +1 -1
- package/dist/components/navigation/app-header.js +8 -7
- package/dist/components/navigation/index.cjs +19 -17
- package/dist/components/navigation/multi-level-navigation.d.ts.map +1 -1
- package/dist/components/navigation/multi-level-navigation.js +3 -2
- package/dist/components/navigation/navigation-sidebar-item.d.ts.map +1 -1
- package/dist/components/navigation/navigation-sidebar-item.js +3 -2
- package/dist/components/onboarding-guides/index.cjs +19 -17
- package/dist/components/onboarding-guides/onboarding-guides-catalog-skeleton.d.ts +4 -1
- package/dist/components/onboarding-guides/onboarding-guides-catalog-skeleton.d.ts.map +1 -1
- package/dist/components/onboarding-guides/onboarding-guides-catalog-skeleton.js +12 -8
- package/dist/components/product-demo/index.cjs +16 -15
- package/dist/components/product-demo/product-screen.d.ts.map +1 -1
- package/dist/components/product-demo/product-screen.js +4 -4
- package/dist/components/profile/ProfileLoadingSkeleton.d.ts +3 -1
- package/dist/components/profile/ProfileLoadingSkeleton.d.ts.map +1 -1
- package/dist/components/profile/ProfileLoadingSkeleton.js +10 -8
- package/dist/components/related-content/index.cjs +7 -5
- package/dist/components/related-content/related-content-section.d.ts.map +1 -1
- package/dist/components/related-content/related-content-section.js +3 -2
- package/dist/components/shared/delivery/delivery-table.d.ts.map +1 -1
- package/dist/components/shared/delivery/delivery-table.js +8 -7
- package/dist/components/shared/detail-page-skeleton.d.ts +5 -1
- package/dist/components/shared/detail-page-skeleton.d.ts.map +1 -1
- package/dist/components/shared/detail-page-skeleton.js +18 -14
- package/dist/components/shared/dev-section/dev-card-row.d.ts +3 -1
- package/dist/components/shared/dev-section/dev-card-row.d.ts.map +1 -1
- package/dist/components/shared/dev-section/dev-card-row.js +22 -9
- package/dist/components/shared/legal-document/legal-document-page.d.ts.map +1 -1
- package/dist/components/shared/legal-document/legal-document-page.js +8 -7
- package/dist/components/shared/onboarding/onboarding-step-card.d.ts.map +1 -1
- package/dist/components/shared/onboarding/onboarding-step-card.js +3 -2
- package/dist/components/shared/onboarding/onboarding-walkthrough.d.ts.map +1 -1
- package/dist/components/shared/onboarding/onboarding-walkthrough.js +2 -1
- package/dist/components/shared/product-release/index.d.ts +0 -1
- package/dist/components/shared/product-release/index.d.ts.map +1 -1
- package/dist/components/shared/product-release/index.js +1 -3
- package/dist/components/shared/product-release/product-release-card-skeleton.d.ts.map +1 -1
- package/dist/components/shared/product-release/product-release-card-skeleton.js +21 -20
- package/dist/components/shared/product-release/product-releases-view.d.ts.map +1 -1
- package/dist/components/shared/product-release/product-releases-view.js +2 -1
- package/dist/components/shared/roadmap/roadmap-grid-skeleton.d.ts +6 -13
- package/dist/components/shared/roadmap/roadmap-grid-skeleton.d.ts.map +1 -1
- package/dist/components/shared/roadmap/roadmap-grid-skeleton.js +13 -25
- package/dist/components/tickets/help-center-create-form.d.ts +4 -1
- package/dist/components/tickets/help-center-create-form.d.ts.map +1 -1
- package/dist/components/tickets/help-center-create-form.js +38 -26
- package/dist/components/tickets/index.cjs +22 -20
- package/dist/components/tickets/ticket-center.d.ts.map +1 -1
- package/dist/components/tickets/ticket-center.js +13 -10
- package/dist/components/tickets/ticket-detail-drawer.d.ts.map +1 -1
- package/dist/components/tickets/ticket-detail-drawer.js +2 -1
- package/dist/components/ui/admin-form-drawer.d.ts.map +1 -1
- package/dist/components/ui/admin-form-drawer.js +6 -8
- package/dist/components/ui/admin-form-modal.d.ts.map +1 -1
- package/dist/components/ui/admin-form-modal.js +12 -11
- package/dist/components/ui/analyzing-state.d.ts +1 -1
- package/dist/components/ui/analyzing-state.d.ts.map +1 -1
- package/dist/components/ui/analyzing-state.js +4 -10
- package/dist/components/ui/content-loader.d.ts +5 -1
- package/dist/components/ui/content-loader.d.ts.map +1 -1
- package/dist/components/ui/content-loader.js +27 -23
- package/dist/components/ui/dashboard-info-card.d.ts +17 -3
- package/dist/components/ui/dashboard-info-card.d.ts.map +1 -1
- package/dist/components/ui/dashboard-info-card.js +30 -10
- package/dist/components/ui/data-attribution.d.ts +6 -0
- package/dist/components/ui/data-attribution.d.ts.map +1 -1
- package/dist/components/ui/data-attribution.js +12 -1
- package/dist/components/ui/data-table/data-table-body.d.ts +6 -1
- package/dist/components/ui/data-table/data-table-body.d.ts.map +1 -1
- package/dist/components/ui/data-table/data-table-body.js +3 -1
- package/dist/components/ui/data-table/data-table-infinite-footer.d.ts.map +1 -1
- package/dist/components/ui/data-table/data-table-infinite-footer.js +3 -1
- package/dist/components/ui/data-table/data-table-skeleton.d.ts.map +1 -1
- package/dist/components/ui/data-table/data-table-skeleton.js +7 -5
- package/dist/components/ui/feature-card.d.ts.map +1 -1
- package/dist/components/ui/feature-card.js +7 -9
- package/dist/components/ui/file-manager/file-manager-skeleton.d.ts +3 -1
- package/dist/components/ui/file-manager/file-manager-skeleton.d.ts.map +1 -1
- package/dist/components/ui/file-manager/file-manager-skeleton.js +27 -21
- package/dist/components/ui/file-manager/file-manager-table.js +10 -10
- package/dist/components/ui/file-manager/index.cjs +45 -36
- package/dist/components/ui/filter-modal.d.ts.map +1 -1
- package/dist/components/ui/filter-modal.js +5 -5
- package/dist/components/ui/filter-pill-row.d.ts +10 -0
- package/dist/components/ui/filter-pill-row.d.ts.map +1 -1
- package/dist/components/ui/filter-pill-row.js +8 -1
- package/dist/components/ui/index.cjs +19 -28
- package/dist/components/ui/index.d.ts +0 -1
- package/dist/components/ui/index.d.ts.map +1 -1
- package/dist/components/ui/index.js +0 -1
- package/dist/components/ui/layout-hold.d.ts +5 -4
- package/dist/components/ui/layout-hold.d.ts.map +1 -1
- package/dist/components/ui/layout-hold.js +20 -29
- package/dist/components/ui/markdown/base-components.js +1 -1
- package/dist/components/ui/page-actions.d.ts.map +1 -1
- package/dist/components/ui/page-actions.js +6 -8
- package/dist/components/ui/photo-wall.d.ts.map +1 -1
- package/dist/components/ui/photo-wall.js +11 -18
- package/dist/components/ui/query-report-table/query-report-table-skeleton.d.ts +1 -1
- package/dist/components/ui/query-report-table/query-report-table-skeleton.d.ts.map +1 -1
- package/dist/components/ui/query-report-table/query-report-table-skeleton.js +28 -18
- package/dist/components/ui/query-report-table/query-report-table.d.ts +1 -1
- package/dist/components/ui/query-report-table/query-report-table.d.ts.map +1 -1
- package/dist/components/ui/query-report-table/query-report-table.js +3 -1
- package/dist/components/ui/query-report-table/types.d.ts +4 -0
- package/dist/components/ui/query-report-table/types.d.ts.map +1 -1
- package/dist/components/ui/skeleton-surface.d.ts +7 -0
- package/dist/components/ui/skeleton-surface.d.ts.map +1 -0
- package/dist/components/ui/skeleton-surface.js +5 -0
- package/dist/components/ui/table/table-skeleton.d.ts.map +1 -1
- package/dist/components/ui/table/table-skeleton.js +11 -13
- package/dist/components/ui/test-run.d.ts +6 -4
- package/dist/components/ui/test-run.d.ts.map +1 -1
- package/dist/components/ui/test-run.js +9 -5
- package/dist/{devices-V55KQCAL.cjs → devices-FVXAGKVX.cjs} +17 -15
- package/dist/{embeddable-chat-5CDR4I6E.cjs → embeddable-chat-SNYQSMS7.cjs} +79 -77
- package/dist/index.cjs +24 -31
- package/dist/{knowledge-S3VGDRKR.cjs → knowledge-ZL3ZHBSL.cjs} +17 -15
- package/dist/{logs-K5E2BGZE.cjs → logs-KQCWDIOB.cjs} +24 -22
- package/dist/{policies-BWU4FRFE.cjs → policies-ARDCZ3CT.cjs} +20 -18
- package/dist/{remote-session-IYT4LWJC.cjs → remote-session-ZKP2W3IS.cjs} +9 -7
- package/dist/{scripts-25UPGXZU.cjs → scripts-ZAMVWCY4.cjs} +23 -21
- package/dist/{software-update-F6UC7ULZ.cjs → software-update-6F7BIYS3.cjs} +20 -18
- package/dist/{tickets-board-4MT6ZB4F.cjs → tickets-board-BNW4AYFL.cjs} +11 -10
- package/dist/utils/index.cjs +49 -48
- package/dist/utils/markdown-to-plain.d.ts.map +1 -1
- package/dist/utils/markdown-to-plain.js +12 -7
- package/package.json +7 -2
- package/src/components/categories-cart.tsx +2 -4
- package/src/components/chat/chat-container.tsx +4 -4
- package/src/components/chat/chat-context-picker.tsx +3 -2
- package/src/components/chat/chat-message-row.tsx +6 -7
- package/src/components/chat/chat-message-skeleton.tsx +11 -6
- package/src/components/chat/chat-sidebar-skeleton.tsx +4 -3
- package/src/components/chat/chat-top-navigation.tsx +4 -4
- package/src/components/chat/context-items-list.tsx +9 -3
- package/src/components/chat/entity-cards/admin-content-card-grid.tsx +65 -18
- package/src/components/chat/entity-cards/admin-content-card.tsx +2 -1
- package/src/components/chat/entity-cards/blog-card.tsx +13 -12
- package/src/components/chat/entity-cards/campaign-card-admin.tsx +5 -4
- package/src/components/chat/entity-cards/case-study-card.tsx +19 -18
- package/src/components/chat/entity-cards/chat-ticket-item.tsx +5 -5
- package/src/components/chat/entity-cards/customer-interview-card.tsx +15 -14
- package/src/components/chat/entity-cards/data-room-doc-card.tsx +7 -6
- package/src/components/chat/entity-cards/design-doc-card.tsx +0 -2
- package/src/components/chat/entity-cards/generic-entity-card.tsx +8 -7
- package/src/components/chat/entity-cards/github-activity-card.tsx +11 -10
- package/src/components/chat/entity-cards/hubspot-ticket-card.tsx +16 -15
- package/src/components/chat/entity-cards/index.ts +2 -0
- package/src/components/chat/entity-cards/investor-update-card.tsx +12 -11
- package/src/components/chat/entity-cards/onboarding-guide-card.tsx +21 -22
- package/src/components/chat/entity-cards/program-card.tsx +29 -28
- package/src/components/chat/entity-cards/roadmap-card.tsx +22 -23
- package/src/components/chat/entity-cards/slack-message-card.tsx +12 -11
- package/src/components/chat/guide-welcome.tsx +2 -2
- package/src/components/chat/mingo-archive-list.tsx +2 -1
- package/src/components/chat/mingo-chat-history.tsx +18 -9
- package/src/components/chat/mingo-chat-rail.tsx +2 -1
- package/src/components/chat/mingo-info-card.tsx +6 -5
- package/src/components/chat/mingo-onboarding-card-skeleton.tsx +15 -13
- package/src/components/chat/model-display.tsx +4 -4
- package/src/components/chat/msp-organization-card-skeleton.tsx +5 -5
- package/src/components/chat/quick-action-chip.tsx +17 -14
- package/src/components/chat/utils/compact-card-classes.ts +4 -5
- package/src/components/content-loading-container.tsx +7 -8
- package/src/components/docs/doc-viewer.tsx +3 -2
- package/src/components/docs/skeletons.tsx +64 -63
- package/src/components/embeds/embed-iframe.tsx +16 -9
- package/src/components/embeds/index.ts +2 -2
- package/src/components/embeds/linkedin-embed-client.tsx +7 -6
- package/src/components/embeds/markdown-image.tsx +5 -3
- package/src/components/embeds/og-link-preview.tsx +162 -79
- package/src/components/embeds/reddit-embed-client.tsx +10 -9
- package/src/components/embeds/twitter-embed-client.tsx +10 -9
- package/src/components/faq/faq-section.tsx +13 -6
- package/src/components/features/board/ticket-card-skeleton.tsx +8 -8
- package/src/components/features/capability-explorer.tsx +61 -30
- package/src/components/features/devices/device-selector/device-selector-skeleton.tsx +9 -3
- package/src/components/features/devices/device-selector/device-selector.tsx +2 -0
- package/src/components/features/devices/device-selector/device-selector.types.ts +2 -0
- package/src/components/features/devices/devices-grid.tsx +4 -1
- package/src/components/features/devices/devices-panel-view.tsx +9 -1
- package/src/components/features/devices/devices-table-columns.tsx +4 -0
- package/src/components/features/logs/logs-table-view.tsx +4 -2
- package/src/components/features/model-token-rates.tsx +27 -24
- package/src/components/features/notifications/index.ts +2 -2
- package/src/components/features/notifications/notification-drawer.tsx +7 -10
- package/src/components/features/notifications/notification-tile.tsx +57 -0
- package/src/components/features/policies/policy-summary-cards.tsx +2 -2
- package/src/components/features/push-button-selector.tsx +20 -11
- package/src/components/features/remote-session/remote-desktop-view.tsx +26 -16
- package/src/components/features/waitlist-form.tsx +6 -5
- package/src/components/help-center-pages/download-apps-page.tsx +3 -2
- package/src/components/help-center-pages/trust-center-page.tsx +6 -2
- package/src/components/help-center-pages/trust-center-sections.tsx +9 -3
- package/src/components/index.ts +0 -2
- package/src/components/layout/title-block.tsx +17 -15
- package/src/components/loading/card-skeleton.tsx +14 -46
- package/src/components/loading/category-card-skeleton.tsx +2 -4
- package/src/components/loading/category-vendor-selector-skeleton.tsx +12 -5
- package/src/components/loading/device-card-skeleton.tsx +58 -51
- package/src/components/loading/index.ts +5 -19
- package/src/components/loading/loading-region.tsx +60 -0
- package/src/components/loading/margin-report-skeleton.tsx +45 -34
- package/src/components/loading/msp-profile-form-skeleton.tsx +9 -6
- package/src/components/loading/organization-card-skeleton.tsx +8 -6
- package/src/components/loading/organization-icon-skeleton.tsx +3 -2
- package/src/components/loading/page-layout-skeleton.tsx +162 -133
- package/src/components/loading/settings-form-skeleton.tsx +52 -0
- package/src/components/loading/unified-skeleton.tsx +26 -71
- package/src/components/loading/wizard-layout-skeleton.tsx +6 -3
- package/src/components/media-carousel.tsx +2 -1
- package/src/components/meeting-scheduler/booking-form.tsx +10 -7
- package/src/components/meeting-scheduler/context-panel.tsx +8 -7
- package/src/components/meeting-scheduler/directory.tsx +10 -9
- package/src/components/meeting-scheduler/index.tsx +5 -4
- package/src/components/meeting-scheduler/modal-header.tsx +8 -7
- package/src/components/meeting-scheduler/slot-picker.tsx +4 -3
- package/src/components/navigation/app-header.tsx +8 -7
- package/src/components/navigation/multi-level-navigation.tsx +3 -2
- package/src/components/navigation/navigation-sidebar-item.tsx +3 -2
- package/src/components/onboarding-guides/onboarding-guides-catalog-skeleton.tsx +17 -10
- package/src/components/product-demo/product-screen.tsx +4 -4
- package/src/components/profile/ProfileLoadingSkeleton.tsx +13 -9
- package/src/components/related-content/related-content-section.tsx +5 -4
- package/src/components/shared/delivery/delivery-table.tsx +8 -7
- package/src/components/shared/detail-page-skeleton.tsx +22 -14
- package/src/components/shared/dev-section/dev-card-row.tsx +23 -10
- package/src/components/shared/legal-document/legal-document-page.tsx +8 -7
- package/src/components/shared/onboarding/onboarding-step-card.tsx +3 -2
- package/src/components/shared/onboarding/onboarding-walkthrough.tsx +2 -1
- package/src/components/shared/product-release/index.ts +0 -1
- package/src/components/shared/product-release/product-release-card-skeleton.tsx +23 -25
- package/src/components/shared/product-release/product-releases-view.tsx +3 -2
- package/src/components/shared/roadmap/roadmap-grid-skeleton.tsx +14 -56
- package/src/components/tickets/help-center-create-form.tsx +23 -12
- package/src/components/tickets/ticket-center.tsx +17 -11
- package/src/components/tickets/ticket-detail-drawer.tsx +3 -2
- package/src/components/ui/admin-form-drawer.tsx +7 -7
- package/src/components/ui/admin-form-modal.tsx +9 -8
- package/src/components/ui/analyzing-state.tsx +5 -8
- package/src/components/ui/content-loader.tsx +31 -23
- package/src/components/ui/dashboard-info-card.tsx +81 -20
- package/src/components/ui/data-attribution.tsx +18 -0
- package/src/components/ui/data-table/data-table-body.tsx +9 -2
- package/src/components/ui/data-table/data-table-infinite-footer.tsx +4 -2
- package/src/components/ui/data-table/data-table-skeleton.tsx +8 -5
- package/src/components/ui/feature-card.tsx +27 -11
- package/src/components/ui/file-manager/file-manager-skeleton.tsx +30 -22
- package/src/components/ui/file-manager/file-manager-table.tsx +10 -10
- package/src/components/ui/filter-modal.tsx +5 -5
- package/src/components/ui/filter-pill-row.tsx +19 -0
- package/src/components/ui/index.ts +0 -1
- package/src/components/ui/layout-hold.tsx +30 -38
- package/src/components/ui/markdown/base-components.tsx +1 -1
- package/src/components/ui/page-actions.tsx +10 -8
- package/src/components/ui/photo-wall.tsx +4 -7
- package/src/components/ui/query-report-table/query-report-table-skeleton.tsx +13 -7
- package/src/components/ui/query-report-table/query-report-table.tsx +2 -0
- package/src/components/ui/query-report-table/types.ts +4 -0
- package/src/components/ui/skeleton-surface.ts +6 -0
- package/src/components/ui/table/table-skeleton.tsx +11 -13
- package/src/components/ui/test-run.tsx +30 -22
- package/src/styles/ods-colors.css +2 -2
- package/src/utils/markdown-to-plain.ts +25 -16
- package/dist/chunk-5M5C6UV4.cjs +0 -125
- package/dist/components/dynamic-skeleton.d.ts +0 -108
- package/dist/components/dynamic-skeleton.d.ts.map +0 -1
- package/dist/components/dynamic-skeleton.js +0 -221
- package/dist/components/loading/content-skeleton.d.ts +0 -73
- package/dist/components/loading/content-skeleton.d.ts.map +0 -1
- package/dist/components/loading/content-skeleton.js +0 -217
- package/dist/components/loading/users-grid-skeleton.d.ts +0 -7
- package/dist/components/loading/users-grid-skeleton.d.ts.map +0 -1
- package/dist/components/loading/users-grid-skeleton.js +0 -13
- package/dist/components/shared/product-release/release-detail-skeleton.d.ts +0 -2
- package/dist/components/shared/product-release/release-detail-skeleton.d.ts.map +0 -1
- package/dist/components/shared/product-release/release-detail-skeleton.js +0 -9
- package/dist/components/skeleton.d.ts +0 -4
- package/dist/components/skeleton.d.ts.map +0 -1
- package/dist/components/skeleton.js +0 -9
- package/dist/components/ui/skeleton.d.ts +0 -44
- package/dist/components/ui/skeleton.d.ts.map +0 -1
- package/dist/components/ui/skeleton.js +0 -103
- package/dist/components/vendor-page-skeleton.d.ts +0 -2
- package/dist/components/vendor-page-skeleton.d.ts.map +0 -1
- package/dist/components/vendor-page-skeleton.js +0 -9
- package/src/components/dynamic-skeleton.tsx +0 -365
- package/src/components/loading/content-skeleton.tsx +0 -374
- package/src/components/loading/users-grid-skeleton.tsx +0 -36
- package/src/components/shared/product-release/release-detail-skeleton.tsx +0 -7
- package/src/components/skeleton.tsx +0 -8
- package/src/components/ui/skeleton.tsx +0 -173
- package/src/components/vendor-page-skeleton.tsx +0 -7
|
@@ -1,68 +1,66 @@
|
|
|
1
1
|
import { cn } from '../../utils/cn';
|
|
2
|
-
import {
|
|
2
|
+
import { LoadingRegion } from './loading-region';
|
|
3
|
+
import { UnifiedSkeleton } from './unified-skeleton';
|
|
3
4
|
|
|
4
5
|
export interface DeviceCardSkeletonProps {
|
|
5
6
|
/**
|
|
6
7
|
* Additional CSS classes
|
|
7
8
|
*/
|
|
8
9
|
className?: string;
|
|
10
|
+
/** Hold `DeviceCard`'s "more" button (its `actions.moreButton`). Default `true`. */
|
|
11
|
+
moreButton?: boolean;
|
|
12
|
+
/**
|
|
13
|
+
* Hold the box of `DeviceCard`'s `actions.detailsButton.component` with these size classes
|
|
14
|
+
* (e.g. `'h-12 w-[88px]'`). Omit when the card has no details button.
|
|
15
|
+
*/
|
|
16
|
+
detailsButtonClassName?: string;
|
|
9
17
|
}
|
|
10
18
|
|
|
11
19
|
/**
|
|
12
|
-
* DeviceCardSkeleton
|
|
20
|
+
* DeviceCardSkeleton: the loading box of `DeviceCard` (`ui/device-card.tsx`), box for box:
|
|
21
|
+
* the same container classes, then
|
|
22
|
+
* - Row 1: the bordered device-icon box, the OS icon and name line (`text-h4`) over the
|
|
23
|
+
* organization line (`text-h6`), the bordered "more" button (`moreButton`) and/or the details
|
|
24
|
+
* button's box (`detailsButtonClassName`);
|
|
25
|
+
* - Row 2: the status tag (`Tag`'s `h-8`) and the "Last seen" line (`text-h6`).
|
|
13
26
|
*
|
|
14
|
-
*
|
|
15
|
-
* - Row 1: Device icon + Device name + More button
|
|
16
|
-
* - Row 2: OS badge + Organization icon + Organization name
|
|
17
|
-
* - Row 3: Status badge + Last seen
|
|
18
|
-
*
|
|
19
|
-
* Prevents layout jumps by matching exact dimensions.
|
|
27
|
+
* The loaded card replaces it with no movement.
|
|
20
28
|
*/
|
|
21
|
-
export function DeviceCardSkeleton({ className }: DeviceCardSkeletonProps) {
|
|
29
|
+
export function DeviceCardSkeleton({ className, moreButton = true, detailsButtonClassName }: DeviceCardSkeletonProps) {
|
|
22
30
|
return (
|
|
23
31
|
<div
|
|
24
|
-
className={cn(
|
|
25
|
-
|
|
26
|
-
|
|
32
|
+
className={cn(
|
|
33
|
+
'overflow-clip rounded-[6px] border border-ods-border bg-ods-card',
|
|
34
|
+
'flex flex-col gap-4 p-4',
|
|
35
|
+
className,
|
|
36
|
+
)}
|
|
27
37
|
>
|
|
28
|
-
{/* Row 1:
|
|
29
|
-
<div className="flex items-center gap-4
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
<div className="h-4 w-4 animate-pulse rounded bg-ods-border" />
|
|
38
|
+
{/* Row 1: device icon | name over organization | more button */}
|
|
39
|
+
<div className="flex w-full items-center gap-4">
|
|
40
|
+
<div className="flex shrink-0 items-center justify-center rounded-[6px] border border-ods-border p-2">
|
|
41
|
+
<UnifiedSkeleton className="size-4 rounded" />
|
|
33
42
|
</div>
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
<div className="h-12 w-12 flex-shrink-0 animate-pulse rounded-[6px] bg-ods-border" />
|
|
42
|
-
</div>
|
|
43
|
-
|
|
44
|
-
{/* Row 2: OS badge + Organization */}
|
|
45
|
-
<div className="flex items-center gap-4 px-4 py-2">
|
|
46
|
-
{/* OS badge */}
|
|
47
|
-
<div className="h-6 w-24 flex-shrink-0 animate-pulse rounded bg-ods-border" />
|
|
48
|
-
|
|
49
|
-
{/* Organization icon */}
|
|
50
|
-
<OrganizationIconSkeleton size="sm" />
|
|
51
|
-
|
|
52
|
-
{/* Organization name */}
|
|
53
|
-
<div className="min-w-0 flex-1">
|
|
54
|
-
<div className="h-5 w-1/2 animate-pulse rounded bg-ods-border" />
|
|
43
|
+
<div className="flex min-w-0 flex-1 flex-col justify-center">
|
|
44
|
+
{/* OS icon (16px) + name, one `text-h4` line */}
|
|
45
|
+
<div className="flex items-center gap-1 text-h4">
|
|
46
|
+
<UnifiedSkeleton className="size-4 shrink-0 rounded" />
|
|
47
|
+
<UnifiedSkeleton className="h-[1lh] w-3/4 rounded" />
|
|
48
|
+
</div>
|
|
49
|
+
<UnifiedSkeleton className="h-[1lh] w-1/2 rounded text-h6" />
|
|
55
50
|
</div>
|
|
51
|
+
{moreButton && (
|
|
52
|
+
<div className="flex shrink-0 items-center justify-center rounded-[6px] border border-ods-border p-3">
|
|
53
|
+
<UnifiedSkeleton className="size-6 rounded" />
|
|
54
|
+
</div>
|
|
55
|
+
)}
|
|
56
|
+
{detailsButtonClassName && <UnifiedSkeleton className={cn('shrink-0 rounded-[6px]', detailsButtonClassName)} />}
|
|
56
57
|
</div>
|
|
57
58
|
|
|
58
|
-
{/* Row
|
|
59
|
-
<div className="flex items-center gap-
|
|
60
|
-
|
|
61
|
-
<div className="
|
|
62
|
-
|
|
63
|
-
{/* Last seen */}
|
|
64
|
-
<div className="flex-1">
|
|
65
|
-
<div className="h-5 w-40 animate-pulse rounded bg-ods-border" />
|
|
59
|
+
{/* Row 2: status tag | last seen */}
|
|
60
|
+
<div className="flex w-full items-center gap-2">
|
|
61
|
+
<UnifiedSkeleton className="h-8 w-20 shrink-0 rounded-md" />
|
|
62
|
+
<div className="min-w-0 flex-1 text-h6">
|
|
63
|
+
<UnifiedSkeleton className="h-[1lh] w-40 max-w-full rounded" />
|
|
66
64
|
</div>
|
|
67
65
|
</div>
|
|
68
66
|
</div>
|
|
@@ -78,16 +76,25 @@ export function DeviceCardSkeleton({ className }: DeviceCardSkeletonProps) {
|
|
|
78
76
|
* - Desktop (lg): 3 columns
|
|
79
77
|
* - Large (xl): 4 columns
|
|
80
78
|
*/
|
|
81
|
-
export function DeviceCardSkeletonGrid({
|
|
79
|
+
export function DeviceCardSkeletonGrid({
|
|
80
|
+
region = true,
|
|
81
|
+
count = 12,
|
|
82
|
+
className,
|
|
83
|
+
}: {
|
|
84
|
+
/** The loading state announces itself (`LoadingRegion`). `false` inside another loading region. Default `true`. */
|
|
85
|
+
region?: boolean;
|
|
86
|
+
count?: number;
|
|
87
|
+
className?: string;
|
|
88
|
+
}) {
|
|
82
89
|
return (
|
|
83
|
-
<
|
|
90
|
+
<LoadingRegion
|
|
91
|
+
label="Loading devices"
|
|
92
|
+
announce={region}
|
|
84
93
|
className={cn('grid grid-cols-1 gap-4 content-md:grid-cols-2 content-lg:grid-cols-4', className)}
|
|
85
|
-
role="status"
|
|
86
|
-
aria-label={`Loading ${count} device cards`}
|
|
87
94
|
>
|
|
88
95
|
{Array.from({ length: count }, (_, index) => (
|
|
89
96
|
<DeviceCardSkeleton key={index} />
|
|
90
97
|
))}
|
|
91
|
-
</
|
|
98
|
+
</LoadingRegion>
|
|
92
99
|
);
|
|
93
100
|
}
|
|
@@ -7,6 +7,7 @@ export {
|
|
|
7
7
|
SearchContainerSkeleton,
|
|
8
8
|
CategorySidebarSkeleton,
|
|
9
9
|
BreadcrumbSkeleton,
|
|
10
|
+
BreadcrumbLinkSkeleton,
|
|
10
11
|
ResultsHeaderSkeleton,
|
|
11
12
|
TwoColumnLayoutSkeleton,
|
|
12
13
|
ArticleLayoutSkeleton,
|
|
@@ -26,25 +27,13 @@ export { UnifiedSkeleton, TextSkeleton, MediaSkeleton, InteractiveSkeleton } fro
|
|
|
26
27
|
// New unified loading components
|
|
27
28
|
export { ContentLoadingContainer, useContentLoading } from '../content-loading-container';
|
|
28
29
|
|
|
29
|
-
// Content skeleton components
|
|
30
|
-
export {
|
|
31
|
-
ParagraphSkeleton,
|
|
32
|
-
ListSkeleton,
|
|
33
|
-
TableSkeleton,
|
|
34
|
-
FormSkeleton,
|
|
35
|
-
NavigationSkeleton,
|
|
36
|
-
ProfileSkeleton,
|
|
37
|
-
CommentSkeleton,
|
|
38
|
-
FeatureListSkeleton,
|
|
39
|
-
TimelineSkeleton,
|
|
40
|
-
PricingSkeleton,
|
|
41
|
-
} from './content-skeleton';
|
|
42
|
-
|
|
43
30
|
// Profile system loading skeleton
|
|
44
31
|
export { ProfileLoadingSkeleton } from '../profile/ProfileLoadingSkeleton';
|
|
45
32
|
|
|
46
33
|
export { MspProfileFormSkeleton } from './msp-profile-form-skeleton';
|
|
47
34
|
|
|
35
|
+
export { SettingsFormSkeleton, type SettingsFormSkeletonProps } from './settings-form-skeleton';
|
|
36
|
+
|
|
48
37
|
export { CategoryCardSkeleton } from './category-card-skeleton';
|
|
49
38
|
|
|
50
39
|
export { CategoryVendorSelectorSkeleton } from './category-vendor-selector-skeleton';
|
|
@@ -56,12 +45,9 @@ export { WizardLayoutSkeleton } from './wizard-layout-skeleton';
|
|
|
56
45
|
// export it here, otherwise server components that import this index will
|
|
57
46
|
// break due to client-only code.
|
|
58
47
|
|
|
59
|
-
export {
|
|
60
|
-
|
|
61
|
-
export { UsersGridSkeleton } from './users-grid-skeleton';
|
|
48
|
+
export { LoadingRegion, type LoadingRegionProps } from './loading-region';
|
|
62
49
|
|
|
63
|
-
|
|
64
|
-
export { DynamicSkeleton, SkeletonPresets, PlatformSkeletonContainer, ProgressiveSkeleton } from '../dynamic-skeleton';
|
|
50
|
+
export { MarginReportSkeleton } from './margin-report-skeleton';
|
|
65
51
|
|
|
66
52
|
// Organization & Device skeleton components
|
|
67
53
|
export { OrganizationIconSkeleton } from './organization-icon-skeleton';
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import type { ElementType, HTMLAttributes, ReactNode } from 'react';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* THE container of a loading state: the one thing a screen reader hears while it loads.
|
|
5
|
+
*
|
|
6
|
+
* Skeleton bars (`UnifiedSkeleton`, `TextHold`) are decoration and are hidden from assistive technology;
|
|
7
|
+
* a page with forty bars must not announce "loading" forty times. The region around them says it ONCE:
|
|
8
|
+
* `aria-busy` on the container, and one polite status with the label. Few screen readers honour
|
|
9
|
+
* `aria-busy` alone, so the status is what is actually read. When the content replaces the region, the
|
|
10
|
+
* status goes with it.
|
|
11
|
+
*
|
|
12
|
+
* Put it on the top of a loading state (a page's skeleton, a card grid's, a Suspense fallback), never on
|
|
13
|
+
* every card inside it: nested regions would announce again.
|
|
14
|
+
*/
|
|
15
|
+
export interface LoadingRegionProps extends HTMLAttributes<HTMLElement> {
|
|
16
|
+
/** What is loading, read once by a screen reader. */
|
|
17
|
+
label?: string;
|
|
18
|
+
/** The container element, so the region keeps the layout element it replaces (a `section`, a `li`, a `span` in text). */
|
|
19
|
+
as?: ElementType;
|
|
20
|
+
/**
|
|
21
|
+
* `false`: only the container is drawn (no `aria-busy`, no status), for a loading state rendered inside
|
|
22
|
+
* another region, which announces for both. Components expose it as their `region` / `loadingRegion` prop.
|
|
23
|
+
* Default `true`.
|
|
24
|
+
*/
|
|
25
|
+
announce?: boolean;
|
|
26
|
+
/**
|
|
27
|
+
* `false`: `aria-busy` without a status of its own, for a container whose loading is already announced by a
|
|
28
|
+
* status elsewhere (a table footer's "Loading more results"). Default `true`.
|
|
29
|
+
*/
|
|
30
|
+
status?: boolean;
|
|
31
|
+
children?: ReactNode;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export function LoadingRegion({
|
|
35
|
+
label = 'Loading',
|
|
36
|
+
as: Tag = 'div',
|
|
37
|
+
announce = true,
|
|
38
|
+
status = true,
|
|
39
|
+
className,
|
|
40
|
+
children,
|
|
41
|
+
...props
|
|
42
|
+
}: LoadingRegionProps) {
|
|
43
|
+
if (!announce) {
|
|
44
|
+
return (
|
|
45
|
+
<Tag className={className} {...props}>
|
|
46
|
+
{children}
|
|
47
|
+
</Tag>
|
|
48
|
+
);
|
|
49
|
+
}
|
|
50
|
+
return (
|
|
51
|
+
<Tag aria-busy="true" className={className} {...props}>
|
|
52
|
+
{status && (
|
|
53
|
+
<span role="status" aria-live="polite" className="sr-only">
|
|
54
|
+
{label}
|
|
55
|
+
</span>
|
|
56
|
+
)}
|
|
57
|
+
{children}
|
|
58
|
+
</Tag>
|
|
59
|
+
);
|
|
60
|
+
}
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import type React from 'react';
|
|
2
|
+
import { LoadingRegion } from './loading-region';
|
|
3
|
+
import { UnifiedSkeleton } from './unified-skeleton';
|
|
2
4
|
|
|
3
5
|
interface MarginReportSkeletonProps {
|
|
6
|
+
/** The loading state announces itself (`LoadingRegion`). `false` inside another loading region. Default `true`. */
|
|
7
|
+
region?: boolean;
|
|
4
8
|
/** Enable pulse animation (default: true) */
|
|
5
9
|
animate?: boolean;
|
|
6
10
|
/** Optional explanation text shown above overlay content */
|
|
@@ -9,63 +13,70 @@ interface MarginReportSkeletonProps {
|
|
|
9
13
|
overlayContent?: React.ReactNode;
|
|
10
14
|
}
|
|
11
15
|
|
|
12
|
-
export function MarginReportSkeleton({
|
|
16
|
+
export function MarginReportSkeleton({
|
|
17
|
+
region = true,
|
|
18
|
+
animate = true,
|
|
19
|
+
description,
|
|
20
|
+
overlayContent,
|
|
21
|
+
}: MarginReportSkeletonProps) {
|
|
13
22
|
return (
|
|
14
|
-
<
|
|
23
|
+
<LoadingRegion
|
|
24
|
+
label="Loading the report"
|
|
25
|
+
as="main"
|
|
26
|
+
announce={region && !overlayContent}
|
|
27
|
+
className="relative min-h-screen bg-ods-bg"
|
|
28
|
+
>
|
|
15
29
|
<div className="mx-auto max-w-[1920px] space-y-10 px-6 py-6 content-md:px-20 content-md:py-10">
|
|
16
30
|
{/* Header */}
|
|
17
31
|
<div className="space-y-3">
|
|
18
|
-
<
|
|
19
|
-
<
|
|
32
|
+
<UnifiedSkeleton className="h-10 w-72 rounded" animate={animate} />
|
|
33
|
+
<UnifiedSkeleton className="h-4 w-80 rounded" animate={animate} />
|
|
20
34
|
</div>
|
|
21
35
|
|
|
22
36
|
{/* Summary cards */}
|
|
23
37
|
<div className="grid grid-cols-1 gap-6 content-md:grid-cols-3">
|
|
24
38
|
{Array.from({ length: 3 }).map((_, i) => (
|
|
25
|
-
<
|
|
39
|
+
<UnifiedSkeleton key={i} className="h-32 rounded border border-ods-border" animate={animate} />
|
|
26
40
|
))}
|
|
27
41
|
</div>
|
|
28
42
|
|
|
29
43
|
{/* MSP Profile & Report Info cards */}
|
|
30
44
|
<div className="grid grid-cols-1 gap-6 content-md:grid-cols-2">
|
|
31
45
|
{/* MSP profile skeleton */}
|
|
32
|
-
<div className="flex
|
|
33
|
-
<
|
|
46
|
+
<div className="flex items-center gap-4 rounded-lg border border-ods-border bg-ods-card p-6">
|
|
47
|
+
<UnifiedSkeleton className="h-14 w-14 rounded-lg" animate={animate} />
|
|
34
48
|
<div className="flex-1 space-y-2">
|
|
35
|
-
<
|
|
36
|
-
<
|
|
49
|
+
<UnifiedSkeleton className="h-4 w-3/4 rounded" animate={animate} />
|
|
50
|
+
<UnifiedSkeleton className="h-3 w-1/2 rounded" animate={animate} />
|
|
37
51
|
</div>
|
|
38
52
|
</div>
|
|
39
53
|
|
|
40
54
|
{/* Report info skeleton */}
|
|
41
|
-
<div className="flex
|
|
55
|
+
<div className="flex flex-col gap-4 rounded-lg border border-ods-border bg-ods-card p-6">
|
|
42
56
|
<div className="flex items-center justify-between gap-4">
|
|
43
57
|
<div className="flex items-center gap-2">
|
|
44
|
-
<
|
|
58
|
+
<UnifiedSkeleton className="h-10 w-10 rounded-lg" animate={animate} />
|
|
45
59
|
<div className="space-y-1">
|
|
46
|
-
<
|
|
47
|
-
<
|
|
60
|
+
<UnifiedSkeleton className="h-4 w-32 rounded" animate={animate} />
|
|
61
|
+
<UnifiedSkeleton className="h-3 w-20 rounded" animate={animate} />
|
|
48
62
|
</div>
|
|
49
63
|
</div>
|
|
50
|
-
<
|
|
64
|
+
<UnifiedSkeleton className="h-6 w-36 rounded" animate={animate} />
|
|
51
65
|
</div>
|
|
52
|
-
<
|
|
66
|
+
<UnifiedSkeleton className="mt-4 h-4 w-40 rounded" animate={animate} />
|
|
53
67
|
</div>
|
|
54
68
|
</div>
|
|
55
69
|
|
|
56
70
|
{/* Vendor solution lists (Commercial & Open-Source) */}
|
|
57
71
|
<div className="grid grid-cols-1 gap-6 content-md:grid-cols-2">
|
|
58
72
|
{['Commercial Stack', 'Open-Source Stack'].map((label, idx) => (
|
|
59
|
-
<div
|
|
60
|
-
key={idx}
|
|
61
|
-
className="flex animate-pulse flex-col overflow-hidden rounded-lg border border-ods-border bg-ods-card"
|
|
62
|
-
>
|
|
73
|
+
<div key={idx} className="flex flex-col overflow-hidden rounded-lg border border-ods-border bg-ods-card">
|
|
63
74
|
{/* list header */}
|
|
64
75
|
<div className="flex items-center justify-between px-6 py-4">
|
|
65
|
-
<
|
|
76
|
+
<UnifiedSkeleton className="h-6 w-40 rounded" animate={animate} />
|
|
66
77
|
<div className="flex items-center gap-2">
|
|
67
|
-
<
|
|
68
|
-
<
|
|
78
|
+
<UnifiedSkeleton className="h-5 w-20 rounded" animate={animate} />
|
|
79
|
+
<UnifiedSkeleton className="h-4 w-10 rounded" animate={animate} />
|
|
69
80
|
</div>
|
|
70
81
|
</div>
|
|
71
82
|
|
|
@@ -78,16 +89,16 @@ export function MarginReportSkeleton({ animate = true, description, overlayConte
|
|
|
78
89
|
>
|
|
79
90
|
{/* left section: icon + text */}
|
|
80
91
|
<div className="flex min-w-0 items-center gap-3">
|
|
81
|
-
<
|
|
92
|
+
<UnifiedSkeleton className="h-12 w-12 flex-shrink-0 rounded-lg" animate={animate} />
|
|
82
93
|
<div className="flex min-w-0 flex-col">
|
|
83
|
-
<
|
|
84
|
-
<
|
|
94
|
+
<UnifiedSkeleton className="h-4 w-32 rounded" animate={animate} />
|
|
95
|
+
<UnifiedSkeleton className="mt-1 hidden h-3 w-24 rounded content-md:block" animate={animate} />
|
|
85
96
|
</div>
|
|
86
97
|
</div>
|
|
87
98
|
{/* right addon: cost text */}
|
|
88
99
|
<div className="flex flex-shrink-0 items-center gap-1">
|
|
89
|
-
<
|
|
90
|
-
<
|
|
100
|
+
<UnifiedSkeleton className="h-4 w-16 rounded" animate={animate} />
|
|
101
|
+
<UnifiedSkeleton className="h-3 w-8 rounded" animate={animate} />
|
|
91
102
|
</div>
|
|
92
103
|
</div>
|
|
93
104
|
))}
|
|
@@ -97,12 +108,12 @@ export function MarginReportSkeleton({ animate = true, description, overlayConte
|
|
|
97
108
|
</div>
|
|
98
109
|
|
|
99
110
|
{/* Strategic Recommendations header placeholder */}
|
|
100
|
-
<
|
|
111
|
+
<UnifiedSkeleton className="h-6 w-60 rounded" animate={animate} />
|
|
101
112
|
|
|
102
113
|
{/* Recommendations grid */}
|
|
103
114
|
<div className="grid grid-cols-1 gap-6 content-md:grid-cols-2 content-lg:grid-cols-3">
|
|
104
115
|
{Array.from({ length: 3 }).map((_, i) => (
|
|
105
|
-
<
|
|
116
|
+
<UnifiedSkeleton key={i} className="h-48 rounded border border-ods-border" animate={animate} />
|
|
106
117
|
))}
|
|
107
118
|
</div>
|
|
108
119
|
|
|
@@ -111,17 +122,17 @@ export function MarginReportSkeleton({ animate = true, description, overlayConte
|
|
|
111
122
|
{/* Section header */}
|
|
112
123
|
<div className="flex items-start gap-6">
|
|
113
124
|
<div className="min-w-0 flex-1 space-y-2">
|
|
114
|
-
<
|
|
115
|
-
<
|
|
125
|
+
<UnifiedSkeleton className="h-8 w-72 rounded" animate={animate} />
|
|
126
|
+
<UnifiedSkeleton className="h-4 w-3/4 rounded" animate={animate} />
|
|
116
127
|
</div>
|
|
117
128
|
{/* Logo placeholder */}
|
|
118
|
-
<
|
|
129
|
+
<UnifiedSkeleton className="h-12 w-12 shrink-0 rounded-md" animate={animate} />
|
|
119
130
|
</div>
|
|
120
131
|
|
|
121
132
|
{/* Value cards grid */}
|
|
122
133
|
<div className="grid grid-cols-1 gap-6 content-md:grid-cols-2 content-lg:grid-cols-3">
|
|
123
134
|
{Array.from({ length: 3 }).map((_, i) => (
|
|
124
|
-
<
|
|
135
|
+
<UnifiedSkeleton key={i} className="h-32 rounded border border-ods-border" animate={animate} />
|
|
125
136
|
))}
|
|
126
137
|
</div>
|
|
127
138
|
</div>
|
|
@@ -137,6 +148,6 @@ export function MarginReportSkeleton({ animate = true, description, overlayConte
|
|
|
137
148
|
</div>
|
|
138
149
|
</div>
|
|
139
150
|
)}
|
|
140
|
-
</
|
|
151
|
+
</LoadingRegion>
|
|
141
152
|
);
|
|
142
153
|
}
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import { cn } from '../../utils/cn';
|
|
2
|
+
import { LoadingRegion } from './loading-region';
|
|
2
3
|
import { UnifiedSkeleton, TextSkeleton, InteractiveSkeleton } from './unified-skeleton';
|
|
3
4
|
|
|
4
5
|
interface SkeletonProps {
|
|
6
|
+
/** The loading state announces itself (`LoadingRegion`). `false` inside another loading region. Default `true`. */
|
|
7
|
+
region?: boolean;
|
|
5
8
|
className?: string;
|
|
6
9
|
/**
|
|
7
10
|
* Number of input fields to render on the right column (defaults to 4).
|
|
@@ -23,19 +26,19 @@ interface SkeletonProps {
|
|
|
23
26
|
* – Mobile (<768px) collapses to one column via grid existing classes.
|
|
24
27
|
* – Uses UnifiedSkeleton system to stay consistent with global loading design.
|
|
25
28
|
*/
|
|
26
|
-
export function MspProfileFormSkeleton({ className, fields = 4 }: SkeletonProps) {
|
|
29
|
+
export function MspProfileFormSkeleton({ region = true, className, fields = 4 }: SkeletonProps) {
|
|
27
30
|
return (
|
|
28
|
-
<
|
|
31
|
+
<LoadingRegion
|
|
32
|
+
label="Loading the MSP profile"
|
|
33
|
+
announce={region}
|
|
29
34
|
className={cn('grid grid-cols-1 items-stretch gap-6 content-md:grid-cols-2', className)}
|
|
30
|
-
role="status"
|
|
31
|
-
aria-label="Loading MSP profile form"
|
|
32
35
|
>
|
|
33
36
|
{/* Left – Logo uploader placeholder */}
|
|
34
37
|
<div className="flex h-full flex-col space-y-2">
|
|
35
38
|
{/* Label skeleton */}
|
|
36
39
|
<TextSkeleton.Body className="w-28" />
|
|
37
40
|
<div className="min-h-[180px] flex-1 content-md:min-h-full">
|
|
38
|
-
<UnifiedSkeleton className="h-full w-full rounded-lg"
|
|
41
|
+
<UnifiedSkeleton className="h-full w-full rounded-lg" />
|
|
39
42
|
</div>
|
|
40
43
|
</div>
|
|
41
44
|
|
|
@@ -48,6 +51,6 @@ export function MspProfileFormSkeleton({ className, fields = 4 }: SkeletonProps)
|
|
|
48
51
|
</div>
|
|
49
52
|
))}
|
|
50
53
|
</div>
|
|
51
|
-
</
|
|
54
|
+
</LoadingRegion>
|
|
52
55
|
);
|
|
53
56
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { cn } from '../../utils/cn';
|
|
2
|
+
import { LoadingRegion } from './loading-region';
|
|
2
3
|
import { OrganizationIconSkeleton } from './organization-icon-skeleton';
|
|
3
4
|
import { TextSkeleton, MediaSkeleton } from './unified-skeleton';
|
|
4
5
|
|
|
@@ -47,8 +48,6 @@ export function OrganizationCardSkeleton({
|
|
|
47
48
|
'flex h-full flex-col overflow-hidden rounded-lg',
|
|
48
49
|
className,
|
|
49
50
|
)}
|
|
50
|
-
role="status"
|
|
51
|
-
aria-label="Loading organization card"
|
|
52
51
|
>
|
|
53
52
|
<div className="flex flex-col gap-3 p-4">
|
|
54
53
|
{/* Header Section - Row layout matching OrganizationCard/VendorCard */}
|
|
@@ -123,12 +122,15 @@ export function OrganizationCardSkeleton({
|
|
|
123
122
|
* - Desktop (xl): 3 columns
|
|
124
123
|
*/
|
|
125
124
|
export function OrganizationCardSkeletonGrid({
|
|
125
|
+
region = true,
|
|
126
126
|
count = 12,
|
|
127
127
|
className,
|
|
128
128
|
containerClassName,
|
|
129
129
|
showFooter = true,
|
|
130
130
|
showDescription = true,
|
|
131
131
|
}: {
|
|
132
|
+
/** The loading state announces itself (`LoadingRegion`). `false` inside another loading region. Default `true`. */
|
|
133
|
+
region?: boolean;
|
|
132
134
|
count?: number;
|
|
133
135
|
className?: string;
|
|
134
136
|
containerClassName?: string;
|
|
@@ -136,10 +138,10 @@ export function OrganizationCardSkeletonGrid({
|
|
|
136
138
|
showDescription?: boolean;
|
|
137
139
|
}) {
|
|
138
140
|
return (
|
|
139
|
-
<
|
|
141
|
+
<LoadingRegion
|
|
142
|
+
label="Loading organizations"
|
|
143
|
+
announce={region}
|
|
140
144
|
className={cn('grid grid-cols-1 gap-4 content-md:grid-cols-2 content-md:gap-6 content-lg:grid-cols-3', className)}
|
|
141
|
-
role="status"
|
|
142
|
-
aria-label={`Loading ${count} organization cards`}
|
|
143
145
|
>
|
|
144
146
|
{Array.from({ length: count }, (_, index) => (
|
|
145
147
|
<OrganizationCardSkeleton
|
|
@@ -149,6 +151,6 @@ export function OrganizationCardSkeletonGrid({
|
|
|
149
151
|
showDescription={showDescription}
|
|
150
152
|
/>
|
|
151
153
|
))}
|
|
152
|
-
</
|
|
154
|
+
</LoadingRegion>
|
|
153
155
|
);
|
|
154
156
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { cn } from '../../utils/cn';
|
|
2
|
+
import { UnifiedSkeleton } from './unified-skeleton';
|
|
2
3
|
|
|
3
4
|
export interface OrganizationIconSkeletonProps {
|
|
4
5
|
/**
|
|
@@ -87,8 +88,8 @@ export function OrganizationIconSkeleton({
|
|
|
87
88
|
);
|
|
88
89
|
|
|
89
90
|
return (
|
|
90
|
-
<div className={containerClasses}
|
|
91
|
-
<
|
|
91
|
+
<div className={containerClasses}>
|
|
92
|
+
<UnifiedSkeleton className="h-1/2 w-1/2 rounded-sm" />
|
|
92
93
|
</div>
|
|
93
94
|
);
|
|
94
95
|
}
|