@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,8 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
import { type ReactNode, type RefObject, useLayoutEffect, useRef, useState } from 'react';
|
|
1
|
+
import type { CSSProperties, ReactNode } from 'react';
|
|
4
2
|
import { cn } from '../../utils/cn';
|
|
5
|
-
import {
|
|
3
|
+
import { SKELETON_SURFACE_CLASS } from './skeleton-surface';
|
|
6
4
|
|
|
7
5
|
/**
|
|
8
6
|
* Holding a layout while its content is read, the two ways that are right at
|
|
@@ -13,8 +11,9 @@ import { SkeletonText } from './skeleton';
|
|
|
13
11
|
*
|
|
14
12
|
* - `TextHold`: an inline stand-in exactly as wide as the words it is given
|
|
15
13
|
* (same font, same letter spacing, because it IS those words, not shown).
|
|
16
|
-
* `bar` draws
|
|
17
|
-
*
|
|
14
|
+
* `bar` draws one skeleton bar per line the words take, each as wide as
|
|
15
|
+
* its line, in plain CSS (no measuring, so it is in the server's HTML);
|
|
16
|
+
* `blank` only keeps their space.
|
|
18
17
|
* - `LayoutHold`: a block as tall as the real layout rendered inside it, kept
|
|
19
18
|
* invisible and inert: the layout's own height, at any width.
|
|
20
19
|
*
|
|
@@ -23,51 +22,44 @@ import { SkeletonText } from './skeleton';
|
|
|
23
22
|
export interface TextHoldProps {
|
|
24
23
|
/** The words whose width is held (the content's own, or a stand-in of its length). */
|
|
25
24
|
children: ReactNode;
|
|
26
|
-
/** `bar`:
|
|
25
|
+
/** `bar`: one skeleton bar per line the words take. `blank`: the space only. */
|
|
27
26
|
variant?: 'bar' | 'blank';
|
|
28
27
|
className?: string;
|
|
29
28
|
}
|
|
30
29
|
|
|
30
|
+
/** A rounded rectangle filling whatever box it is drawn in: the shape of each line's bar. */
|
|
31
|
+
const ROUNDED_BAR = `url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg'%3E%3Crect width='100%25' height='100%25' rx='6'/%3E%3C/svg%3E")`;
|
|
32
|
+
/**
|
|
33
|
+
* Each line's bar: a text-high band in the middle of the line, so wrapped lines are separate bars with
|
|
34
|
+
* a gap between them. A line box's background is as tall as the font's whole ascent and descent, which in
|
|
35
|
+
* DM Sans fills the line, so unmasked the lines of a paragraph touch and read as one block.
|
|
36
|
+
*/
|
|
37
|
+
const BAR_MASK = `${ROUNDED_BAR} center / 100% min(1em, calc(1lh - 6px)) no-repeat`;
|
|
38
|
+
const BAR_STYLE: CSSProperties = { mask: BAR_MASK, WebkitMask: BAR_MASK };
|
|
39
|
+
|
|
31
40
|
export function TextHold({ children, variant = 'bar', className }: TextHoldProps) {
|
|
32
|
-
const
|
|
33
|
-
const words = useRef<HTMLSpanElement>(null);
|
|
34
|
-
const lines = useLineCount(hold, words, variant === 'bar');
|
|
41
|
+
const bar = variant === 'bar';
|
|
35
42
|
return (
|
|
36
43
|
<span
|
|
37
|
-
ref={hold}
|
|
38
44
|
aria-hidden
|
|
39
|
-
className={cn(
|
|
45
|
+
className={cn(
|
|
46
|
+
// `bar`: the words themselves, unseen, on the skeleton's surface. The span stays INLINE, so the
|
|
47
|
+
// browser paints one bar per line the words take, each exactly as wide as that line, and
|
|
48
|
+
// `box-decoration-clone` gives every line its own bar (and its own mask, `BAR_STYLE`). Pure CSS: it
|
|
49
|
+
// is drawn in the server's HTML, before any script runs (a loading state streamed by the server
|
|
50
|
+
// is often replaced before it hydrates).
|
|
51
|
+
bar ? cn(SKELETON_SURFACE_CLASS, 'rounded-md box-decoration-clone text-transparent') : 'invisible',
|
|
52
|
+
// A hold is never selectable or clickable, whatever it wraps.
|
|
53
|
+
'pointer-events-none select-none',
|
|
54
|
+
className,
|
|
55
|
+
)}
|
|
56
|
+
style={bar ? BAR_STYLE : undefined}
|
|
40
57
|
>
|
|
41
|
-
|
|
42
|
-
{children}
|
|
43
|
-
</span>
|
|
44
|
-
{lines > 0 ? (
|
|
45
|
-
// `justify-around`: each `Skeleton` sits in the middle of the line it stands for.
|
|
46
|
-
<SkeletonText lines={lines} className="absolute inset-0 flex flex-col justify-around space-y-0" />
|
|
47
|
-
) : null}
|
|
58
|
+
{children}
|
|
48
59
|
</span>
|
|
49
60
|
);
|
|
50
61
|
}
|
|
51
62
|
|
|
52
|
-
/** How many lines the words take (one box per line), kept current as the width changes. */
|
|
53
|
-
function useLineCount(
|
|
54
|
-
hold: RefObject<HTMLSpanElement | null>,
|
|
55
|
-
words: RefObject<HTMLSpanElement | null>,
|
|
56
|
-
enabled: boolean,
|
|
57
|
-
): number {
|
|
58
|
-
const [lines, setLines] = useState(0);
|
|
59
|
-
useLayoutEffect(() => {
|
|
60
|
-
const box = hold.current;
|
|
61
|
-
if (!enabled || !box) return undefined;
|
|
62
|
-
const measure = () => setLines(words.current?.getClientRects().length ?? 0);
|
|
63
|
-
measure();
|
|
64
|
-
const observer = new ResizeObserver(measure);
|
|
65
|
-
observer.observe(box);
|
|
66
|
-
return () => observer.disconnect();
|
|
67
|
-
}, [hold, words, enabled]);
|
|
68
|
-
return lines;
|
|
69
|
-
}
|
|
70
|
-
|
|
71
63
|
export interface LayoutHoldProps {
|
|
72
64
|
/** The real layout, rendered with the data at hand. */
|
|
73
65
|
children: ReactNode;
|
|
@@ -387,7 +387,7 @@ export function buildBaseComponents({
|
|
|
387
387
|
|
|
388
388
|
// --- tables ---
|
|
389
389
|
// The frame and the scroll container are ONE element, matching the sibling
|
|
390
|
-
// block embed (`mermaid-diagram.tsx`)
|
|
390
|
+
// block embed (`mermaid-diagram.tsx`). It used to
|
|
391
391
|
// be two — `overflow-x-auto` outside, `rounded-lg border` on an inner
|
|
392
392
|
// `min-w-full` div — so nothing clipped: the cells' own `border-r`/`border-b`
|
|
393
393
|
// ran straight through the rounded corners and out past the frame's edge.
|
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
import React from 'react';
|
|
4
4
|
import { cn } from '../../utils/cn';
|
|
5
5
|
import { Chevron02DownIcon } from '../icons-v2-generated';
|
|
6
|
+
import { UnifiedSkeleton } from '../loading/unified-skeleton';
|
|
6
7
|
import { ActionsMenuDropdown, type ActionsMenuGroup, type ActionsMenuItem } from './actions-menu';
|
|
7
8
|
import type { ButtonProps, SplitButtonIconAction } from './button';
|
|
8
9
|
import { Button, SplitButton } from './button';
|
|
9
|
-
import { Skeleton } from './skeleton';
|
|
10
10
|
import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from './tooltip';
|
|
11
11
|
|
|
12
12
|
export type PageActionButton = {
|
|
@@ -274,7 +274,7 @@ function ActionSkeletons({
|
|
|
274
274
|
// icon action keeps its square box there too.
|
|
275
275
|
const isIconOnly = action ? !action.label || !!action.iconOnlyOnDesktop : emptyFallback === 'icon';
|
|
276
276
|
return (
|
|
277
|
-
<
|
|
277
|
+
<UnifiedSkeleton
|
|
278
278
|
// Static placeholder list — index IS the identity here.
|
|
279
279
|
key={`action-skeleton-${idx}`}
|
|
280
280
|
className={cn(
|
|
@@ -290,9 +290,7 @@ function ActionSkeletons({
|
|
|
290
290
|
}
|
|
291
291
|
|
|
292
292
|
/** Mobile placeholder for the variants that collapse to ONE trigger (icon button or "…"). */
|
|
293
|
-
|
|
294
|
-
return <Skeleton className={cn(SKELETON_HEIGHT, SKELETON_ICON_WIDTH, SKELETON_RADIUS)} />;
|
|
295
|
-
}
|
|
293
|
+
const MOBILE_TRIGGER_SKELETON_CLASS = cn(SKELETON_HEIGHT, SKELETON_ICON_WIDTH, SKELETON_RADIUS);
|
|
296
294
|
|
|
297
295
|
export function PageActions({
|
|
298
296
|
variant = 'icon-buttons',
|
|
@@ -372,7 +370,7 @@ function IconButtonsVariant({
|
|
|
372
370
|
{/* Mobile: single icon button OR all actions merged into one "..." menu */}
|
|
373
371
|
<div className={cn('flex content-md:hidden', className)}>
|
|
374
372
|
{loading ? (
|
|
375
|
-
<
|
|
373
|
+
<UnifiedSkeleton className={MOBILE_TRIGGER_SKELETON_CLASS} />
|
|
376
374
|
) : useSingleActionMobile && singleAction ? (
|
|
377
375
|
renderActionButton(singleAction, { iconOnly: true })
|
|
378
376
|
) : hasMobileMenuItems ? (
|
|
@@ -426,7 +424,11 @@ function PrimaryButtonsVariant({
|
|
|
426
424
|
</div>
|
|
427
425
|
|
|
428
426
|
<div className={cn('hidden items-center md:content-max-md:flex', ACTIONS_GAP, className)}>
|
|
429
|
-
{loading ?
|
|
427
|
+
{loading ? (
|
|
428
|
+
<UnifiedSkeleton className={MOBILE_TRIGGER_SKELETON_CLASS} />
|
|
429
|
+
) : (
|
|
430
|
+
<CompactPrimaryActions actions={desktopActions} />
|
|
431
|
+
)}
|
|
430
432
|
</div>
|
|
431
433
|
|
|
432
434
|
<MobileBottomActions actions={sortedActions} loading={loading} />
|
|
@@ -477,7 +479,7 @@ function MenuPrimaryVariant({
|
|
|
477
479
|
|
|
478
480
|
<div className={cn('flex content-md:hidden', className)}>
|
|
479
481
|
{loading ? (
|
|
480
|
-
<
|
|
482
|
+
<UnifiedSkeleton className={MOBILE_TRIGGER_SKELETON_CLASS} />
|
|
481
483
|
) : hasMobileMenuItems || selector ? (
|
|
482
484
|
// The selector rides into the menu as its header row: on mobile the
|
|
483
485
|
// title row has no room for it, and hiding it entirely (what
|
|
@@ -19,6 +19,7 @@
|
|
|
19
19
|
import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
|
|
20
20
|
import Image, { resizedImageUrl } from '../../embed-shims/next-image';
|
|
21
21
|
import { cn } from '../../utils/cn';
|
|
22
|
+
import { UnifiedSkeleton } from '../loading/unified-skeleton';
|
|
22
23
|
import { MarqueeWall } from './marquee-wall';
|
|
23
24
|
|
|
24
25
|
export interface PhotoWallImage {
|
|
@@ -292,16 +293,12 @@ export function PhotoWall({ images, columns = 2, speed = 24, fadeColor, classNam
|
|
|
292
293
|
</MarqueeWall>
|
|
293
294
|
))
|
|
294
295
|
: Array.from({ length: columns }, (_, index) => (
|
|
295
|
-
<div
|
|
296
|
-
key={index}
|
|
297
|
-
className="flex h-full animate-pulse flex-col overflow-hidden"
|
|
298
|
-
style={{ gap: COLUMN_GAP_PX }}
|
|
299
|
-
>
|
|
296
|
+
<div key={index} className="flex h-full flex-col overflow-hidden" style={{ gap: COLUMN_GAP_PX }}>
|
|
300
297
|
{(index % 2 === 0 ? (['tall', 'wide', 'square'] as const) : (['wide', 'tall', 'wide'] as const)).map(
|
|
301
298
|
(orientation, i) => (
|
|
302
|
-
<
|
|
299
|
+
<UnifiedSkeleton
|
|
303
300
|
key={i}
|
|
304
|
-
className="w-full shrink-0 rounded-lg
|
|
301
|
+
className="h-auto w-full shrink-0 rounded-lg"
|
|
305
302
|
style={{ aspectRatio: PHOTO_WALL_FRAME[orientation] }}
|
|
306
303
|
/>
|
|
307
304
|
),
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
3
|
import { cn } from '../../../utils/cn';
|
|
4
|
+
import { LoadingRegion } from '../../loading/loading-region';
|
|
5
|
+
import { UnifiedSkeleton } from '../../loading/unified-skeleton';
|
|
4
6
|
import type { QueryReportTableSkeletonProps } from './types';
|
|
5
7
|
|
|
6
8
|
export function QueryReportTableSkeleton({
|
|
9
|
+
region = true,
|
|
7
10
|
rows,
|
|
8
11
|
columns,
|
|
9
12
|
columnWidth,
|
|
@@ -13,12 +16,16 @@ export function QueryReportTableSkeleton({
|
|
|
13
16
|
const isCompact = variant === 'compact';
|
|
14
17
|
|
|
15
18
|
return (
|
|
16
|
-
<
|
|
19
|
+
<LoadingRegion
|
|
20
|
+
label="Loading results"
|
|
21
|
+
announce={region}
|
|
22
|
+
className={cn('flex flex-col', isCompact ? 'gap-0' : 'gap-[var(--spacing-system-xs)]', className)}
|
|
23
|
+
>
|
|
17
24
|
{/* Skeleton header */}
|
|
18
25
|
<div className={cn('flex items-center gap-4 px-4', isCompact ? 'border-b border-ods-border py-2' : '')}>
|
|
19
26
|
{Array.from({ length: columns }).map((_, i) => (
|
|
20
27
|
<div key={`header-${i}`} className="flex shrink-0 items-center" style={{ width: columnWidth, height: 48 }}>
|
|
21
|
-
<
|
|
28
|
+
<UnifiedSkeleton className="h-4 w-3/4 rounded" />
|
|
22
29
|
</div>
|
|
23
30
|
))}
|
|
24
31
|
</div>
|
|
@@ -28,7 +35,6 @@ export function QueryReportTableSkeleton({
|
|
|
28
35
|
<div
|
|
29
36
|
key={`row-${rowIndex}`}
|
|
30
37
|
className={cn(
|
|
31
|
-
'animate-pulse',
|
|
32
38
|
isCompact
|
|
33
39
|
? 'border-b border-ods-border'
|
|
34
40
|
: 'relative overflow-hidden rounded-[6px] border border-ods-border bg-ods-card',
|
|
@@ -37,15 +43,15 @@ export function QueryReportTableSkeleton({
|
|
|
37
43
|
<div className={cn('flex items-center gap-4 px-4', isCompact ? 'h-[56px]' : 'h-[80px]')}>
|
|
38
44
|
{Array.from({ length: columns }).map((_cell, colIndex) => (
|
|
39
45
|
<div key={`cell-${rowIndex}-${colIndex}`} className="shrink-0" style={{ width: columnWidth }}>
|
|
40
|
-
<
|
|
41
|
-
className={cn('rounded
|
|
42
|
-
|
|
46
|
+
<UnifiedSkeleton
|
|
47
|
+
className={cn('rounded', isCompact ? 'h-4' : 'h-5')}
|
|
48
|
+
width={`${55 + ((rowIndex * colIndex * 7) % 35)}%`}
|
|
43
49
|
/>
|
|
44
50
|
</div>
|
|
45
51
|
))}
|
|
46
52
|
</div>
|
|
47
53
|
</div>
|
|
48
54
|
))}
|
|
49
|
-
</
|
|
55
|
+
</LoadingRegion>
|
|
50
56
|
);
|
|
51
57
|
}
|
|
@@ -16,6 +16,7 @@ export function QueryReportTable({
|
|
|
16
16
|
title,
|
|
17
17
|
data,
|
|
18
18
|
loading = false,
|
|
19
|
+
loadingRegion = true,
|
|
19
20
|
skeletonRows = 8,
|
|
20
21
|
skeletonColumns = 6,
|
|
21
22
|
emptyMessage,
|
|
@@ -84,6 +85,7 @@ export function QueryReportTable({
|
|
|
84
85
|
columns={skeletonColumns}
|
|
85
86
|
columnWidth={columnWidth}
|
|
86
87
|
variant={variant}
|
|
88
|
+
region={loadingRegion}
|
|
87
89
|
/>
|
|
88
90
|
)}
|
|
89
91
|
|
|
@@ -11,6 +11,8 @@ export interface QueryReportTableProps {
|
|
|
11
11
|
data: QueryResultRow[];
|
|
12
12
|
/** Show skeleton loading state */
|
|
13
13
|
loading?: boolean;
|
|
14
|
+
/** The loading state announces itself ("Loading results"). `false` inside another loading region. Default `true`. */
|
|
15
|
+
loadingRegion?: boolean;
|
|
14
16
|
/** Number of skeleton rows to display (default: 8) */
|
|
15
17
|
skeletonRows?: number;
|
|
16
18
|
/** Number of skeleton columns to display (default: 6) */
|
|
@@ -56,4 +58,6 @@ export interface QueryReportTableSkeletonProps {
|
|
|
56
58
|
columnWidth: number;
|
|
57
59
|
variant?: QueryReportTableVariant;
|
|
58
60
|
className?: string;
|
|
61
|
+
/** The loading state announces itself (`LoadingRegion`). `false` inside another loading region. Default `true`. */
|
|
62
|
+
region?: boolean;
|
|
59
63
|
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What a skeleton looks like: the pulsing surface every loading stand-in draws
|
|
3
|
+
* (`UnifiedSkeleton` and its presets, `TextHold`'s bars). A plain module, with
|
|
4
|
+
* no client directive, so a server component can read the string itself.
|
|
5
|
+
*/
|
|
6
|
+
export const SKELETON_SURFACE_CLASS = 'animate-pulse motion-reduce:animate-none bg-ods-skeleton';
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
3
|
import { cn } from '../../../utils/cn';
|
|
4
|
+
import { UnifiedSkeleton } from '../../loading/unified-skeleton';
|
|
4
5
|
import type { TableCardSkeletonProps } from './types';
|
|
5
6
|
|
|
6
7
|
// INNER row heights: the bordered row card adds 1px top + bottom, so the
|
|
@@ -36,10 +37,7 @@ export function TableCardSkeleton({
|
|
|
36
37
|
{Array.from({ length: rows }).map((_, index) => (
|
|
37
38
|
<div
|
|
38
39
|
key={index}
|
|
39
|
-
className={cn(
|
|
40
|
-
'relative animate-pulse overflow-hidden rounded-[6px] border border-ods-border bg-ods-card',
|
|
41
|
-
className,
|
|
42
|
-
)}
|
|
40
|
+
className={cn('relative overflow-hidden rounded-[6px] border border-ods-border bg-ods-card', className)}
|
|
43
41
|
>
|
|
44
42
|
{/* Desktop Skeleton */}
|
|
45
43
|
{/* Matches the ROW it stands in for: a compact row is content-sized
|
|
@@ -54,10 +52,10 @@ export function TableCardSkeleton({
|
|
|
54
52
|
>
|
|
55
53
|
{columns.map(column => (
|
|
56
54
|
<div key={column.key} className={cn('flex shrink-0 flex-col justify-center', column.width || 'flex-1')}>
|
|
57
|
-
<
|
|
55
|
+
<UnifiedSkeleton className="mb-1 h-5 w-3/4 rounded" />
|
|
58
56
|
{/* second line simulates multi-line content on the primary column */}
|
|
59
57
|
{index % 2 === 0 && column.key === primaryKey && (
|
|
60
|
-
<
|
|
58
|
+
<UnifiedSkeleton className="h-4 w-1/2 rounded opacity-60" />
|
|
61
59
|
)}
|
|
62
60
|
</div>
|
|
63
61
|
))}
|
|
@@ -65,15 +63,15 @@ export function TableCardSkeleton({
|
|
|
65
63
|
{/* Actions skeleton */}
|
|
66
64
|
{hasActions && (
|
|
67
65
|
<div className={cn('flex shrink-0 items-center gap-2', !hasChevron && 'ml-auto')}>
|
|
68
|
-
<
|
|
69
|
-
<
|
|
66
|
+
<UnifiedSkeleton className="h-12 w-12 rounded" />
|
|
67
|
+
<UnifiedSkeleton className="h-12 w-24 rounded" />
|
|
70
68
|
</div>
|
|
71
69
|
)}
|
|
72
70
|
|
|
73
71
|
{/* Chevron skeleton */}
|
|
74
72
|
{hasChevron && (
|
|
75
73
|
<div className={cn('flex w-12 shrink-0 items-center justify-end', !hasActions && 'ml-auto')}>
|
|
76
|
-
<
|
|
74
|
+
<UnifiedSkeleton className="h-8 w-8 rounded" />
|
|
77
75
|
</div>
|
|
78
76
|
)}
|
|
79
77
|
</div>
|
|
@@ -94,11 +92,11 @@ export function TableCardSkeleton({
|
|
|
94
92
|
sized by its own `py-2` + floor, so adding `py-3` here made the
|
|
95
93
|
compact mobile skeleton 78px against a real row's 58. */}
|
|
96
94
|
<div className={cn('flex min-w-0 flex-1 flex-col justify-center', compact ? 'py-0' : 'py-3')}>
|
|
97
|
-
<
|
|
98
|
-
<
|
|
95
|
+
<UnifiedSkeleton className="mb-2 h-4 w-3/4 rounded" />
|
|
96
|
+
<UnifiedSkeleton className="h-3 w-1/2 rounded opacity-60" />
|
|
99
97
|
</div>
|
|
100
|
-
{hasActions && <
|
|
101
|
-
{hasChevron && <
|
|
98
|
+
{hasActions && <UnifiedSkeleton className="h-12 w-12 shrink-0 rounded" />}
|
|
99
|
+
{hasChevron && <UnifiedSkeleton className="h-8 w-8 shrink-0 rounded" />}
|
|
102
100
|
</div>
|
|
103
101
|
</div>
|
|
104
102
|
))}
|
|
@@ -6,6 +6,8 @@ import { useCopyToClipboard } from '../../hooks/use-copy-to-clipboard';
|
|
|
6
6
|
import { cn } from '../../utils/cn';
|
|
7
7
|
import { formatTime } from '../../utils/format-date';
|
|
8
8
|
import { Copy02Icon, SearchIcon } from '../icons-v2-generated';
|
|
9
|
+
import { LoadingRegion } from '../loading/loading-region';
|
|
10
|
+
import { UnifiedSkeleton } from '../loading/unified-skeleton';
|
|
9
11
|
import { DataTable } from './data-table';
|
|
10
12
|
import { useDataTable } from './data-table/use-data-table';
|
|
11
13
|
import { NoData } from './no-data';
|
|
@@ -34,35 +36,41 @@ const RESULT_COLUMN_MIN_WIDTH = 176;
|
|
|
34
36
|
const SKELETON_COLUMNS = 6;
|
|
35
37
|
|
|
36
38
|
/** Column-bar skeleton (header cells + one card row): fixed 160px columns on
|
|
37
|
-
every breakpoint, scrolling horizontally when they do not fit. Bars
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
39
|
+
every breakpoint, scrolling horizontally when they do not fit. Bars are
|
|
40
|
+
`UnifiedSkeleton`s, like the table skeletons. */
|
|
41
|
+
export function TestResultsSkeleton({
|
|
42
|
+
region = true,
|
|
43
|
+
}: {
|
|
44
|
+
/** The loading state announces itself (`LoadingRegion`). `false` inside another loading region. Default `true`. */
|
|
45
|
+
region?: boolean;
|
|
46
|
+
} = {}) {
|
|
41
47
|
return (
|
|
42
|
-
<
|
|
43
|
-
|
|
48
|
+
<LoadingRegion label="Loading the test results" announce={region}>
|
|
49
|
+
<ScrollShadow axis="horizontal">
|
|
50
|
+
{/* No gap between the header bars and the row card — the real table's
|
|
44
51
|
header and body sit flush. */}
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
{Array.from({ length: SKELETON_COLUMNS }).map((_, i) => (
|
|
48
|
-
<div key={`skeleton-header-${i}`} className="flex h-12 w-[160px] shrink-0 items-center">
|
|
49
|
-
<div className="h-4 w-3/4 animate-pulse rounded-sm bg-ods-bg-surface" />
|
|
50
|
-
</div>
|
|
51
|
-
))}
|
|
52
|
-
</div>
|
|
53
|
-
<div className="animate-pulse overflow-hidden rounded-[6px] border border-ods-border bg-ods-card">
|
|
54
|
-
{/* Same INNER row heights as the DataTable (66/78px + the 1px card
|
|
55
|
-
border on each side = 68/80px total, per design). */}
|
|
56
|
-
<div className="flex h-[66px] items-center gap-[var(--spacing-system-mf)] px-[var(--spacing-system-mf)] content-md:h-[78px]">
|
|
52
|
+
<div className="flex w-max min-w-full flex-col">
|
|
53
|
+
<div className="flex items-center gap-[var(--spacing-system-mf)] px-[var(--spacing-system-mf)]">
|
|
57
54
|
{Array.from({ length: SKELETON_COLUMNS }).map((_, i) => (
|
|
58
|
-
<div key={`skeleton-
|
|
59
|
-
<
|
|
55
|
+
<div key={`skeleton-header-${i}`} className="flex h-12 w-[160px] shrink-0 items-center">
|
|
56
|
+
<UnifiedSkeleton className="h-4 w-3/4 rounded-sm" />
|
|
60
57
|
</div>
|
|
61
58
|
))}
|
|
62
59
|
</div>
|
|
60
|
+
<div className="overflow-hidden rounded-[6px] border border-ods-border bg-ods-card">
|
|
61
|
+
{/* Same INNER row heights as the DataTable (66/78px + the 1px card
|
|
62
|
+
border on each side = 68/80px total, per design). */}
|
|
63
|
+
<div className="flex h-[66px] items-center gap-[var(--spacing-system-mf)] px-[var(--spacing-system-mf)] content-md:h-[78px]">
|
|
64
|
+
{Array.from({ length: SKELETON_COLUMNS }).map((_, i) => (
|
|
65
|
+
<div key={`skeleton-cell-${i}`} className="w-[160px] shrink-0">
|
|
66
|
+
<UnifiedSkeleton className="h-5 w-3/4 rounded-sm" />
|
|
67
|
+
</div>
|
|
68
|
+
))}
|
|
69
|
+
</div>
|
|
70
|
+
</div>
|
|
63
71
|
</div>
|
|
64
|
-
</
|
|
65
|
-
</
|
|
72
|
+
</ScrollShadow>
|
|
73
|
+
</LoadingRegion>
|
|
66
74
|
);
|
|
67
75
|
}
|
|
68
76
|
|
|
@@ -285,8 +285,8 @@
|
|
|
285
285
|
was byte-identical to --color-bg-card, so every `bg-ods-skeleton` pulse
|
|
286
286
|
sitting on a card was invisible — it only appeared while the row's hover
|
|
287
287
|
tint lightened the ground beneath it (people-hub score table, 2026-08).
|
|
288
|
-
`soft-grey` is
|
|
289
|
-
|
|
288
|
+
`soft-grey` is the border's grey too, so a skeleton reads the same on
|
|
289
|
+
every surface, in both themes. */
|
|
290
290
|
--color-bg-skeleton: var(--ods-system-greys-soft-grey);
|
|
291
291
|
--color-bg-surface: var(--ods-system-greys-soft-grey);
|
|
292
292
|
--color-bg-surface-hover: var(--ods-system-greys-soft-grey-hover);
|
|
@@ -3,23 +3,32 @@
|
|
|
3
3
|
* (article-body echo in JSON-LD) and chat entity-card preview (clamped previews
|
|
4
4
|
* inside chat cards).
|
|
5
5
|
*
|
|
6
|
-
* The text is what a reader of the rendered page reads: the markdown
|
|
7
|
-
*
|
|
8
|
-
*
|
|
6
|
+
* The text is what a reader of the rendered page reads: the markdown goes through the SAME steps
|
|
7
|
+
* the renderer's pipeline runs (`components/ui/markdown/engine.tsx`: remark with GFM and line
|
|
8
|
+
* breaks, then rehype with raw HTML), and the result is the `innerText` of that HTML
|
|
9
9
|
* (`hast-util-to-text`). So link, emphasis and heading syntax, raw HTML tags (`<a rel>`, `<div>`),
|
|
10
10
|
* escapes (`\<`) and entities (`&`) all come out as their text; script and style content and
|
|
11
11
|
* comments do not. Code blocks and images are left out: their content is not prose.
|
|
12
12
|
*
|
|
13
|
+
* The steps are unified's UTILITY functions, the ones those plugins wrap (`mdast-util-from-markdown`
|
|
14
|
+
* with the GFM extensions, `mdast-util-newline-to-break`, `mdast-util-to-hast`, `hast-util-raw`),
|
|
15
|
+
* not a `remark()` processor. This module is in the CommonJS builds, and a unified processor is a
|
|
16
|
+
* callable object without `Function.prototype`: the bundler compiles a call to an imported
|
|
17
|
+
* function as `.call(void 0)`, which a processor does not have (0.0.745 crashed on load:
|
|
18
|
+
* `_remark.remark.call is not a function`). Plain functions have no such limit, and one
|
|
19
|
+
* synchronous conversion needs no plugin system.
|
|
20
|
+
*
|
|
13
21
|
* The two consumers differ only in whitespace — `mode: 'article'` keeps paragraph breaks;
|
|
14
22
|
* `mode: 'preview'` collapses everything to a single line.
|
|
15
23
|
*/
|
|
16
24
|
import type { Element, Root } from 'hast';
|
|
25
|
+
import { raw } from 'hast-util-raw';
|
|
17
26
|
import { toText } from 'hast-util-to-text';
|
|
18
|
-
import
|
|
19
|
-
import {
|
|
20
|
-
import
|
|
21
|
-
import
|
|
22
|
-
import
|
|
27
|
+
import { fromMarkdown } from 'mdast-util-from-markdown';
|
|
28
|
+
import { gfmFromMarkdown } from 'mdast-util-gfm';
|
|
29
|
+
import { newlineToBreak } from 'mdast-util-newline-to-break';
|
|
30
|
+
import { toHast } from 'mdast-util-to-hast';
|
|
31
|
+
import { gfm } from 'micromark-extension-gfm';
|
|
23
32
|
import { SKIP, visit } from 'unist-util-visit';
|
|
24
33
|
|
|
25
34
|
export interface MarkdownToPlainOptions {
|
|
@@ -47,20 +56,20 @@ export function stripInlineMarkdown(s: string): string {
|
|
|
47
56
|
.replace(/`([^`]+)`/g, '$1'); // `inline code` → inline code
|
|
48
57
|
}
|
|
49
58
|
|
|
50
|
-
// The renderer's own pipeline, up to the HTML tree. Built once; `runSync` has no async plugins.
|
|
51
|
-
const toHtmlTree = remark()
|
|
52
|
-
.use(remarkGfm)
|
|
53
|
-
.use(remarkBreaks)
|
|
54
|
-
.use(remarkRehype, { allowDangerousHtml: true })
|
|
55
|
-
.use(rehypeRaw);
|
|
56
|
-
|
|
57
59
|
/** Elements whose content is not prose: code blocks and images. */
|
|
58
60
|
const NOT_PROSE = new Set(['pre', 'img']);
|
|
59
61
|
|
|
60
62
|
const TABLE_SECTIONS = new Set(['thead', 'tbody', 'tfoot']);
|
|
61
63
|
|
|
64
|
+
/** The renderer's steps, as functions: markdown (GFM) → line breaks → HTML tree with raw HTML parsed. */
|
|
65
|
+
function htmlTree(markdown: string): Root {
|
|
66
|
+
const mdast = fromMarkdown(markdown, { extensions: [gfm()], mdastExtensions: [gfmFromMarkdown()] });
|
|
67
|
+
newlineToBreak(mdast);
|
|
68
|
+
return raw(toHast(mdast, { allowDangerousHtml: true })) as Root;
|
|
69
|
+
}
|
|
70
|
+
|
|
62
71
|
function proseTree(markdown: string): Root {
|
|
63
|
-
const tree
|
|
72
|
+
const tree = htmlTree(markdown);
|
|
64
73
|
visit(tree, 'element', (node: Element, index, parent) => {
|
|
65
74
|
if (NOT_PROSE.has(node.tagName) && parent && index !== undefined) {
|
|
66
75
|
parent.children.splice(index, 1);
|
package/dist/chunk-5M5C6UV4.cjs
DELETED
|
@@ -1,125 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true});"use client";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
var _chunk3ATAYP36cjs = require('./chunk-3ATAYP36.cjs');
|
|
5
|
-
|
|
6
|
-
// src/components/ui/portal-container.tsx
|
|
7
|
-
var _react = require('react');
|
|
8
|
-
var PortalContainerContext = _react.createContext.call(void 0, null);
|
|
9
|
-
function usePortalContainer() {
|
|
10
|
-
return _react.useContext.call(void 0, PortalContainerContext);
|
|
11
|
-
}
|
|
12
|
-
var CollisionBoundaryContext = _react.createContext.call(void 0, null);
|
|
13
|
-
function useCollisionBoundary() {
|
|
14
|
-
return _react.useContext.call(void 0, CollisionBoundaryContext);
|
|
15
|
-
}
|
|
16
|
-
var COLLISION_PADDING_PX = 8;
|
|
17
|
-
|
|
18
|
-
// src/components/ui/skeleton.tsx
|
|
19
|
-
|
|
20
|
-
var _jsxruntime = require('react/jsx-runtime');
|
|
21
|
-
var Skeleton = _react.forwardRef.call(void 0, ({ className, ...props }, ref) => {
|
|
22
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { ref, className: _chunk3ATAYP36cjs.cn.call(void 0, "animate-pulse rounded-md bg-ods-border", className), ...props });
|
|
23
|
-
});
|
|
24
|
-
Skeleton.displayName = "Skeleton";
|
|
25
|
-
var SkeletonText = _react.forwardRef.call(void 0, ({ lines = 1, className, ...props }, ref) => {
|
|
26
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { ref, className: _chunk3ATAYP36cjs.cn.call(void 0, "space-y-2", className), ...props, children: Array.from({ length: lines }).map((_, i) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
27
|
-
Skeleton,
|
|
28
|
-
{
|
|
29
|
-
className: _chunk3ATAYP36cjs.cn.call(void 0,
|
|
30
|
-
"h-4",
|
|
31
|
-
i === lines - 1 && lines > 1 && "w-3/4"
|
|
32
|
-
// Last line shorter for multi-line
|
|
33
|
-
)
|
|
34
|
-
},
|
|
35
|
-
i
|
|
36
|
-
)) });
|
|
37
|
-
});
|
|
38
|
-
SkeletonText.displayName = "SkeletonText";
|
|
39
|
-
var SkeletonCard = _react.forwardRef.call(void 0,
|
|
40
|
-
({ showImage = false, className, ...props }, ref) => {
|
|
41
|
-
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { ref, className: _chunk3ATAYP36cjs.cn.call(void 0, "overflow-hidden rounded-lg border border-ods-border", className), ...props, children: [
|
|
42
|
-
showImage && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, Skeleton, { className: "h-48 w-full" }),
|
|
43
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "p-6", children: [
|
|
44
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, Skeleton, { className: "mb-4 h-6 w-3/4" }),
|
|
45
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, SkeletonText, { lines: 3 })
|
|
46
|
-
] })
|
|
47
|
-
] });
|
|
48
|
-
}
|
|
49
|
-
);
|
|
50
|
-
SkeletonCard.displayName = "SkeletonCard";
|
|
51
|
-
var SkeletonGrid = _react.forwardRef.call(void 0,
|
|
52
|
-
({ columns = 3, items = 6, showImages = false, className, ...props }, ref) => {
|
|
53
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
54
|
-
"div",
|
|
55
|
-
{
|
|
56
|
-
ref,
|
|
57
|
-
className: _chunk3ATAYP36cjs.cn.call(void 0,
|
|
58
|
-
`grid grid-cols-1 gap-6`,
|
|
59
|
-
columns === 2 && "content-md:grid-cols-2",
|
|
60
|
-
columns === 3 && "content-md:grid-cols-3",
|
|
61
|
-
columns === 4 && "content-md:grid-cols-4",
|
|
62
|
-
className
|
|
63
|
-
),
|
|
64
|
-
...props,
|
|
65
|
-
children: Array.from({ length: items }).map((_, i) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, SkeletonCard, { showImage: showImages }, i))
|
|
66
|
-
}
|
|
67
|
-
);
|
|
68
|
-
}
|
|
69
|
-
);
|
|
70
|
-
SkeletonGrid.displayName = "SkeletonGrid";
|
|
71
|
-
var SkeletonButton = _react.forwardRef.call(void 0,
|
|
72
|
-
({ size = "default", className, ...props }, ref) => {
|
|
73
|
-
const sizeClasses = {
|
|
74
|
-
sm: "h-8 w-20",
|
|
75
|
-
default: "h-10 w-32",
|
|
76
|
-
lg: "h-12 w-40"
|
|
77
|
-
};
|
|
78
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, Skeleton, { ref, className: _chunk3ATAYP36cjs.cn.call(void 0, "rounded-lg", sizeClasses[size], className), ...props });
|
|
79
|
-
}
|
|
80
|
-
);
|
|
81
|
-
SkeletonButton.displayName = "SkeletonButton";
|
|
82
|
-
var SkeletonHeading = _react.forwardRef.call(void 0, ({ level = 1, className, ...props }, ref) => {
|
|
83
|
-
const heightClasses = {
|
|
84
|
-
1: "h-12",
|
|
85
|
-
2: "h-10",
|
|
86
|
-
3: "h-8",
|
|
87
|
-
4: "h-7",
|
|
88
|
-
5: "h-6",
|
|
89
|
-
6: "h-5"
|
|
90
|
-
};
|
|
91
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, Skeleton, { ref, className: _chunk3ATAYP36cjs.cn.call(void 0, heightClasses[level], "w-3/4", className), ...props });
|
|
92
|
-
});
|
|
93
|
-
SkeletonHeading.displayName = "SkeletonHeading";
|
|
94
|
-
var SkeletonList = _react.forwardRef.call(void 0, ({ items = 5, className, ...props }, ref) => {
|
|
95
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { ref, className: _chunk3ATAYP36cjs.cn.call(void 0, "space-y-3", className), ...props, children: Array.from({ length: items }).map((_, i) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-3", children: [
|
|
96
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, Skeleton, { className: "h-10 w-10 flex-shrink-0 rounded-full" }),
|
|
97
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex-1", children: [
|
|
98
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, Skeleton, { className: "mb-1 h-4 w-1/3" }),
|
|
99
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, Skeleton, { className: "h-3 w-1/2" })
|
|
100
|
-
] })
|
|
101
|
-
] }, i)) });
|
|
102
|
-
});
|
|
103
|
-
SkeletonList.displayName = "SkeletonList";
|
|
104
|
-
var SkeletonNavigation = _react.forwardRef.call(void 0,
|
|
105
|
-
({ items = 6, className, ...props }, ref) => {
|
|
106
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { ref, className: _chunk3ATAYP36cjs.cn.call(void 0, "flex items-center gap-6", className), ...props, children: Array.from({ length: items }).map((_, i) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, Skeleton, { className: "h-5 w-20" }, i)) });
|
|
107
|
-
}
|
|
108
|
-
);
|
|
109
|
-
SkeletonNavigation.displayName = "SkeletonNavigation";
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
exports.PortalContainerContext = PortalContainerContext; exports.usePortalContainer = usePortalContainer; exports.CollisionBoundaryContext = CollisionBoundaryContext; exports.useCollisionBoundary = useCollisionBoundary; exports.COLLISION_PADDING_PX = COLLISION_PADDING_PX; exports.Skeleton = Skeleton; exports.SkeletonText = SkeletonText; exports.SkeletonCard = SkeletonCard; exports.SkeletonGrid = SkeletonGrid; exports.SkeletonButton = SkeletonButton; exports.SkeletonHeading = SkeletonHeading; exports.SkeletonList = SkeletonList; exports.SkeletonNavigation = SkeletonNavigation;
|