@flamingo-stack/openframe-frontend-core 0.0.710 → 0.0.712
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/chunk-2NASBO7O.js +1137 -0
- package/dist/{chunk-RQRX4YC3.cjs → chunk-2RKFMUNW.cjs} +46 -46
- package/dist/chunk-2Y7QZAB2.cjs +158 -0
- package/dist/chunk-34I6XI3N.js +136 -0
- package/dist/chunk-3K5ZLZE7.js +292 -0
- package/dist/chunk-3LU4UFPS.cjs +14 -0
- package/dist/{chunk-YBUT4AMG.cjs → chunk-3RKBJT6K.cjs} +8 -6
- package/dist/{chunk-LNW45N2C.js → chunk-3SEEGNRE.js} +35 -27
- package/dist/{chunk-L6Y6OOKG.cjs → chunk-3UAJLO5U.cjs} +41 -39
- package/dist/chunk-4HJRHEXD.cjs +1612 -0
- package/dist/{chunk-JPG7OHEG.js → chunk-4QFWGLZO.js} +1 -1
- package/dist/chunk-4R2L3DSA.js +14 -0
- package/dist/{chunk-36BCTE7D.js → chunk-4UYKNOZG.js} +12 -10
- package/dist/{chunk-DA5UDTLG.js → chunk-5SDELRH3.js} +5 -5
- package/dist/{chunk-CZSZSDD4.js → chunk-5Y72YQEK.js} +22 -113
- package/dist/{chunk-KUC673HM.js → chunk-6T3BTD6Q.js} +204 -982
- package/dist/{chunk-F57ECE2I.js → chunk-6YPTUHM7.js} +4 -4
- package/dist/{chunk-TDYIREDJ.js → chunk-7HNYYNKE.js} +28 -22
- package/dist/{chunk-2G7UYK35.cjs → chunk-7NSU5EQD.cjs} +57 -148
- package/dist/chunk-AAYNCJMW.cjs +48 -0
- package/dist/{chunk-FXJ3WWUB.js → chunk-ADBE7QF3.js} +5 -252
- package/dist/chunk-AECTRMGQ.cjs +334 -0
- package/dist/chunk-AGVXKD4K.js +334 -0
- package/dist/chunk-AL2GUHAJ.cjs +18 -0
- package/dist/{chunk-WMX26HB5.js → chunk-APJZBDQN.js} +12 -12
- package/dist/chunk-AUMKE74M.cjs +16 -0
- package/dist/chunk-B4NCVYEQ.cjs +292 -0
- package/dist/{chunk-2RNB5DTN.cjs → chunk-BXSRTBLU.cjs} +82 -54
- package/dist/chunk-CMGFZHCN.js +233 -0
- package/dist/chunk-CMZ3QTFQ.js +1207 -0
- package/dist/chunk-CPA2CKRZ.cjs +125 -0
- package/dist/{chunk-B73373AG.cjs → chunk-CSCJU6YC.cjs} +35 -33
- package/dist/chunk-CYUUHFXL.js +41 -0
- package/dist/chunk-DC4RTYWK.cjs +1122 -0
- package/dist/{chunk-6YKAT7NV.js → chunk-DDWFCWOE.js} +5 -7
- package/dist/{chunk-F5FF4DME.js → chunk-EFNKS5W4.js} +322 -428
- package/dist/{chunk-2KXTOP6G.cjs → chunk-EOKSKJSS.cjs} +25 -83
- package/dist/{chunk-6NTPY5QA.cjs → chunk-ETYLOZOB.cjs} +978 -2413
- package/dist/chunk-F5BPGWGT.cjs +931 -0
- package/dist/{chunk-4L6XCMOU.js → chunk-FCAVAEHF.js} +8277 -9990
- package/dist/chunk-FFT56TYB.cjs +401 -0
- package/dist/chunk-FYEJTF5Y.js +125 -0
- package/dist/chunk-G3GRYDMS.js +16 -0
- package/dist/{chunk-MR3A4MZV.js → chunk-G3OMVCID.js} +13 -7
- package/dist/chunk-G6OHIX5C.cjs +100 -0
- package/dist/{chunk-UDFRUKLC.cjs → chunk-GEDY7HQI.cjs} +2 -2
- package/dist/chunk-GQ7JJUIT.cjs +1207 -0
- package/dist/chunk-H3PKYE4N.js +18 -0
- package/dist/{chunk-CNWOMQQJ.js → chunk-H5R7U2D2.js} +206 -5
- package/dist/{chunk-SEXWHIMS.cjs → chunk-HETQETPV.cjs} +9648 -9680
- package/dist/{chunk-Y2GSOUCS.cjs → chunk-HWVUR735.cjs} +2 -2
- package/dist/chunk-II4QMH26.cjs +35 -0
- package/dist/chunk-ILNN6QRW.js +1612 -0
- package/dist/chunk-IYVFSLWJ.js +931 -0
- package/dist/{chunk-3AHTOSXJ.cjs → chunk-JGCFRTND.cjs} +23 -17
- package/dist/chunk-JHQ334WS.js +655 -0
- package/dist/{chunk-WCVZCGK5.cjs → chunk-JO5TLJPM.cjs} +129 -907
- package/dist/{chunk-JRU2CXLB.cjs → chunk-JVCAK4W3.cjs} +210 -9
- package/dist/chunk-KBJJQFYU.js +1122 -0
- package/dist/chunk-KEKCQENI.js +48 -0
- package/dist/chunk-KHXZFLIN.cjs +41 -0
- package/dist/chunk-KT3U3ZRP.cjs +1137 -0
- package/dist/chunk-L2VUINHN.js +35 -0
- package/dist/{chunk-P42V6N34.cjs → chunk-L6ZQGWCX.cjs} +4521 -6234
- package/dist/{chunk-PLYEKV3N.cjs → chunk-MA4Q5RBP.cjs} +6 -6
- package/dist/{chunk-SS5MBHDP.js → chunk-N67XG5GY.js} +10 -8
- package/dist/chunk-NPAQSMRY.js +2087 -0
- package/dist/{chunk-I3ST4PLM.js → chunk-NQWJAOHO.js} +6 -4
- package/dist/{chunk-QAOFMK2A.cjs → chunk-OBZJICEA.cjs} +8 -8
- package/dist/{chunk-6IW7TWPV.js → chunk-OPYODNV2.js} +3 -3
- package/dist/chunk-P3JMAMHP.js +401 -0
- package/dist/chunk-PPXR22YC.cjs +2087 -0
- package/dist/chunk-PSVSEN4J.cjs +655 -0
- package/dist/{chunk-4UM2ETLM.js → chunk-RBYVFPER.js} +74 -46
- package/dist/{chunk-PO33GZVY.js → chunk-ROBQ5TR7.js} +10549 -10581
- package/dist/{chunk-ZCLBYT2V.cjs → chunk-T3CLXR43.cjs} +114 -220
- package/dist/{chunk-FI6GMDO7.js → chunk-TTVOLEUS.js} +3605 -5040
- package/dist/{chunk-LM7TXMLU.cjs → chunk-ULWVKHSI.cjs} +8 -255
- package/dist/{chunk-6I4ZAFO2.cjs → chunk-UT3ODMBU.cjs} +15 -15
- package/dist/chunk-WANCBTUE.js +71 -0
- package/dist/{chunk-BIZNSF3U.cjs → chunk-WBNAEYTQ.cjs} +2 -51
- package/dist/chunk-WFPCCBOM.cjs +71 -0
- package/dist/chunk-WI6FHKD7.js +158 -0
- package/dist/chunk-WMNCVLES.js +100 -0
- package/dist/{chunk-UT4YHQZW.js → chunk-WSDT7LYL.js} +0 -49
- package/dist/chunk-WVOTC7HW.cjs +136 -0
- package/dist/{chunk-AOWDNSTM.cjs → chunk-WWJG4GVG.cjs} +93 -87
- package/dist/chunk-XXBLN4BP.cjs +233 -0
- package/dist/{chunk-4IBPRIQH.js → chunk-YBQQNDC7.js} +1 -1
- package/dist/{chunk-LFFB6EMB.js → chunk-YBS5QGON.js} +70 -128
- package/dist/{chunk-NSGXARGJ.cjs → chunk-Z5SWJW5Q.cjs} +125 -117
- package/dist/{chunk-OJLR5MEO.cjs → chunk-ZX7SCPLO.cjs} +6 -8
- package/dist/cloud-tenants-KZUZGD4A.cjs +117 -0
- package/dist/cloud-tenants-OGLVVQ7X.js +117 -0
- package/dist/components/case-studies/index.cjs +45 -29
- package/dist/components/case-studies/index.js +32 -16
- package/dist/components/chat/ask-prompts.d.ts +64 -0
- package/dist/components/chat/ask-prompts.d.ts.map +1 -0
- package/dist/components/chat/entity-cards/case-study-card.d.ts +6 -3
- package/dist/components/chat/entity-cards/case-study-card.d.ts.map +1 -1
- package/dist/components/chat/hooks/use-chat-dialog-manager.d.ts +4 -1
- package/dist/components/chat/hooks/use-chat-dialog-manager.d.ts.map +1 -1
- package/dist/components/chat/hooks/use-unified-chat.d.ts.map +1 -1
- package/dist/components/chat/index.cjs +27 -8
- package/dist/components/chat/index.d.ts +1 -0
- package/dist/components/chat/index.d.ts.map +1 -1
- package/dist/components/chat/index.js +57 -38
- package/dist/components/chat/quick-action-chip.d.ts +7 -3
- package/dist/components/chat/quick-action-chip.d.ts.map +1 -1
- package/dist/components/chat/types/component.types.d.ts +4 -0
- package/dist/components/chat/types/component.types.d.ts.map +1 -1
- package/dist/components/chat/types/unified-chat-state.types.d.ts +12 -0
- package/dist/components/chat/types/unified-chat-state.types.d.ts.map +1 -1
- package/dist/components/contact/index.cjs +29 -13
- package/dist/components/contact/index.js +28 -12
- package/dist/components/docs/index.cjs +33 -16
- package/dist/components/docs/index.js +33 -16
- package/dist/components/docs/use-scroll-spy.d.ts +23 -1
- package/dist/components/docs/use-scroll-spy.d.ts.map +1 -1
- package/dist/components/embeds/index.cjs +29 -13
- package/dist/components/embeds/index.js +28 -12
- package/dist/components/faq/faq-section.d.ts +8 -1
- package/dist/components/faq/faq-section.d.ts.map +1 -1
- package/dist/components/faq/index.cjs +30 -14
- package/dist/components/faq/index.js +29 -13
- package/dist/components/features/array-entry-manager.d.ts +5 -1
- package/dist/components/features/array-entry-manager.d.ts.map +1 -1
- package/dist/components/features/board/board.d.ts +2 -0
- package/dist/components/features/board/board.d.ts.map +1 -1
- package/dist/components/features/board/ticket-card.d.ts.map +1 -1
- package/dist/components/features/board/touch-board.d.ts +1 -1
- package/dist/components/features/board/touch-board.d.ts.map +1 -1
- package/dist/components/features/board/types.d.ts +3 -0
- package/dist/components/features/board/types.d.ts.map +1 -1
- package/dist/components/features/board/use-board-collapse.d.ts +6 -1
- package/dist/components/features/board/use-board-collapse.d.ts.map +1 -1
- package/dist/components/features/capability-explorer.d.ts +94 -0
- package/dist/components/features/capability-explorer.d.ts.map +1 -0
- package/dist/components/features/cloud-tenants/index.d.ts +14 -0
- package/dist/components/features/cloud-tenants/index.d.ts.map +1 -0
- package/dist/components/features/cloud-tenants/tenant-access-cell.d.ts +9 -0
- package/dist/components/features/cloud-tenants/tenant-access-cell.d.ts.map +1 -0
- package/dist/components/features/cloud-tenants/tenant-cell.d.ts +8 -0
- package/dist/components/features/cloud-tenants/tenant-cell.d.ts.map +1 -0
- package/dist/components/features/cloud-tenants/tenant-customer-cell.d.ts +9 -0
- package/dist/components/features/cloud-tenants/tenant-customer-cell.d.ts.map +1 -0
- package/dist/components/features/cloud-tenants/tenant-presentation.d.ts +42 -0
- package/dist/components/features/cloud-tenants/tenant-presentation.d.ts.map +1 -0
- package/dist/components/features/cloud-tenants/tenant-row.d.ts +22 -0
- package/dist/components/features/cloud-tenants/tenant-row.d.ts.map +1 -0
- package/dist/components/features/cloud-tenants/tenants-table-columns.d.ts +42 -0
- package/dist/components/features/cloud-tenants/tenants-table-columns.d.ts.map +1 -0
- package/dist/components/features/cloud-tenants/tenants-table-view.d.ts +26 -0
- package/dist/components/features/cloud-tenants/tenants-table-view.d.ts.map +1 -0
- package/dist/components/features/devices/device-last-online.d.ts +3 -0
- package/dist/components/features/devices/device-last-online.d.ts.map +1 -0
- package/dist/components/features/devices/device-name.d.ts +42 -0
- package/dist/components/features/devices/device-name.d.ts.map +1 -0
- package/dist/components/features/devices/device-selector/device-selection-mode-radio.d.ts +26 -0
- package/dist/components/features/devices/device-selector/device-selection-mode-radio.d.ts.map +1 -0
- package/dist/components/features/devices/device-selector/device-selector-skeleton.d.ts +25 -0
- package/dist/components/features/devices/device-selector/device-selector-skeleton.d.ts.map +1 -0
- package/dist/components/features/devices/device-selector/device-selector.d.ts +38 -0
- package/dist/components/features/devices/device-selector/device-selector.d.ts.map +1 -0
- package/dist/components/features/devices/device-selector/device-selector.types.d.ts +133 -0
- package/dist/components/features/devices/device-selector/device-selector.types.d.ts.map +1 -0
- package/dist/components/features/devices/device-selector/narrowing.d.ts +13 -0
- package/dist/components/features/devices/device-selector/narrowing.d.ts.map +1 -0
- package/dist/components/features/devices/device-selector/use-device-selector.d.ts +17 -0
- package/dist/components/features/devices/device-selector/use-device-selector.d.ts.map +1 -0
- package/dist/components/features/devices/device-status.d.ts +23 -0
- package/dist/components/features/devices/device-status.d.ts.map +1 -0
- package/dist/components/features/devices/device-statuses.d.ts +40 -0
- package/dist/components/features/devices/device-statuses.d.ts.map +1 -0
- package/dist/components/features/devices/device-tags-filter-button.d.ts +22 -0
- package/dist/components/features/devices/device-tags-filter-button.d.ts.map +1 -0
- package/dist/components/features/devices/device-type-icon.d.ts +11 -0
- package/dist/components/features/devices/device-type-icon.d.ts.map +1 -0
- package/dist/components/features/devices/device-type-tile.d.ts +9 -0
- package/dist/components/features/devices/device-type-tile.d.ts.map +1 -0
- package/dist/components/features/devices/devices-filter-toolbar.d.ts +46 -0
- package/dist/components/features/devices/devices-filter-toolbar.d.ts.map +1 -0
- package/dist/components/features/devices/devices-grid-filters.d.ts +25 -0
- package/dist/components/features/devices/devices-grid-filters.d.ts.map +1 -0
- package/dist/components/features/devices/devices-grid.d.ts +12 -0
- package/dist/components/features/devices/devices-grid.d.ts.map +1 -0
- package/dist/components/features/devices/devices-list.d.ts +131 -0
- package/dist/components/features/devices/devices-list.d.ts.map +1 -0
- package/dist/components/features/devices/devices-panel-header.d.ts +46 -0
- package/dist/components/features/devices/devices-panel-header.d.ts.map +1 -0
- package/dist/components/features/devices/devices-panel-view.d.ts +79 -0
- package/dist/components/features/devices/devices-panel-view.d.ts.map +1 -0
- package/dist/components/features/devices/devices-table-columns.d.ts +76 -0
- package/dist/components/features/devices/devices-table-columns.d.ts.map +1 -0
- package/dist/components/features/devices/devices-view-config.d.ts +25 -0
- package/dist/components/features/devices/devices-view-config.d.ts.map +1 -0
- package/dist/components/features/devices/index.d.ts +24 -0
- package/dist/components/features/devices/index.d.ts.map +1 -0
- package/dist/components/features/devices/types.d.ts +68 -0
- package/dist/components/features/devices/types.d.ts.map +1 -0
- package/dist/components/features/devices/use-tag-filter-modal.d.ts +50 -0
- package/dist/components/features/devices/use-tag-filter-modal.d.ts.map +1 -0
- package/dist/components/features/index.cjs +227 -12
- package/dist/components/features/index.d.ts +7 -0
- package/dist/components/features/index.d.ts.map +1 -1
- package/dist/components/features/index.js +266 -51
- package/dist/components/features/knowledge-base/index.d.ts +7 -0
- package/dist/components/features/knowledge-base/index.d.ts.map +1 -0
- package/dist/components/features/knowledge-base/knowledge-base-article-view.d.ts +44 -0
- package/dist/components/features/knowledge-base/knowledge-base-article-view.d.ts.map +1 -0
- package/dist/components/features/knowledge-base/knowledge-base-item-icon.d.ts +13 -0
- package/dist/components/features/knowledge-base/knowledge-base-item-icon.d.ts.map +1 -0
- package/dist/components/features/knowledge-base/knowledge-base-status.d.ts +8 -0
- package/dist/components/features/knowledge-base/knowledge-base-status.d.ts.map +1 -0
- package/dist/components/features/knowledge-base/knowledge-base-table.d.ts +52 -0
- package/dist/components/features/knowledge-base/knowledge-base-table.d.ts.map +1 -0
- package/dist/components/features/logs/index.d.ts +12 -0
- package/dist/components/features/logs/index.d.ts.map +1 -0
- package/dist/components/features/logs/log-drawer.d.ts +29 -0
- package/dist/components/features/logs/log-drawer.d.ts.map +1 -0
- package/dist/components/features/logs/log-source-labels.d.ts +11 -0
- package/dist/components/features/logs/log-source-labels.d.ts.map +1 -0
- package/dist/components/features/logs/logs-page-view.d.ts +32 -0
- package/dist/components/features/logs/logs-page-view.d.ts.map +1 -0
- package/dist/components/features/logs/logs-table-columns.d.ts +15 -0
- package/dist/components/features/logs/logs-table-columns.d.ts.map +1 -0
- package/dist/components/features/logs/logs-table-view.d.ts +64 -0
- package/dist/components/features/logs/logs-table-view.d.ts.map +1 -0
- package/dist/components/features/logs/types.d.ts +52 -0
- package/dist/components/features/logs/types.d.ts.map +1 -0
- package/dist/components/features/policies/compute-policy-summary.d.ts +37 -0
- package/dist/components/features/policies/compute-policy-summary.d.ts.map +1 -0
- package/dist/components/features/policies/index.d.ts +8 -0
- package/dist/components/features/policies/index.d.ts.map +1 -0
- package/dist/components/features/policies/policies-table.d.ts +34 -0
- package/dist/components/features/policies/policies-table.d.ts.map +1 -0
- package/dist/components/features/policies/policy-summary-cards.d.ts +17 -0
- package/dist/components/features/policies/policy-summary-cards.d.ts.map +1 -0
- package/dist/components/features/policies/policy-table-row.d.ts +37 -0
- package/dist/components/features/policies/policy-table-row.d.ts.map +1 -0
- package/dist/components/features/remote-session/index.d.ts +8 -0
- package/dist/components/features/remote-session/index.d.ts.map +1 -1
- package/dist/components/features/remote-session/remote-desktop-chat-message-row.d.ts +21 -0
- package/dist/components/features/remote-session/remote-desktop-chat-message-row.d.ts.map +1 -0
- package/dist/components/features/remote-session/remote-desktop-chat-panel.d.ts +31 -0
- package/dist/components/features/remote-session/remote-desktop-chat-panel.d.ts.map +1 -0
- package/dist/components/features/remote-session/remote-desktop-fullscreen-toolbar.d.ts +21 -0
- package/dist/components/features/remote-session/remote-desktop-fullscreen-toolbar.d.ts.map +1 -0
- package/dist/components/features/remote-session/remote-desktop-view.d.ts +50 -0
- package/dist/components/features/remote-session/remote-desktop-view.d.ts.map +1 -0
- package/dist/components/features/software/index.d.ts +8 -0
- package/dist/components/features/software/index.d.ts.map +1 -0
- package/dist/components/features/software/package-managers.d.ts +30 -0
- package/dist/components/features/software/package-managers.d.ts.map +1 -0
- package/dist/components/features/software/package-search-field-placeholder.d.ts +7 -0
- package/dist/components/features/software/package-search-field-placeholder.d.ts.map +1 -0
- package/dist/components/features/software/schedule-fields.d.ts +34 -0
- package/dist/components/features/software/schedule-fields.d.ts.map +1 -0
- package/dist/components/features/software/software-action-copy.d.ts +25 -0
- package/dist/components/features/software/software-action-copy.d.ts.map +1 -0
- package/dist/components/features/software/software-action-form.d.ts +71 -0
- package/dist/components/features/software/software-action-form.d.ts.map +1 -0
- package/dist/components/features/software/software-row-fields.d.ts +23 -0
- package/dist/components/features/software/software-row-fields.d.ts.map +1 -0
- package/dist/components/features/software/software-row.d.ts +18 -0
- package/dist/components/features/software/software-row.d.ts.map +1 -0
- package/dist/components/features/sortable-list/index.d.ts +1 -0
- package/dist/components/features/sortable-list/index.d.ts.map +1 -1
- package/dist/components/features/sortable-list/sortable-drag-handle.d.ts +21 -0
- package/dist/components/features/sortable-list/sortable-drag-handle.d.ts.map +1 -0
- package/dist/components/help-center-pages/index.cjs +133 -114
- package/dist/components/help-center-pages/index.js +58 -39
- package/dist/components/index.cjs +320 -82
- package/dist/components/index.js +451 -213
- package/dist/components/layout/page-heading.d.ts +12 -3
- package/dist/components/layout/page-heading.d.ts.map +1 -1
- package/dist/components/meeting-scheduler/index.cjs +120 -98
- package/dist/components/meeting-scheduler/index.js +50 -28
- package/dist/components/navigation/index.cjs +36 -17
- package/dist/components/navigation/index.d.ts +3 -0
- package/dist/components/navigation/index.d.ts.map +1 -1
- package/dist/components/navigation/index.js +36 -17
- package/dist/components/navigation/mingo-ai-button.d.ts +23 -10
- package/dist/components/navigation/mingo-ai-button.d.ts.map +1 -1
- package/dist/components/navigation/sticky-section-nav.d.ts +14 -1
- package/dist/components/navigation/sticky-section-nav.d.ts.map +1 -1
- package/dist/components/onboarding-guides/index.cjs +32 -16
- package/dist/components/onboarding-guides/index.js +31 -15
- package/dist/components/product-demo/cast.d.ts +58 -0
- package/dist/components/product-demo/cast.d.ts.map +1 -0
- package/dist/components/product-demo/fixtures/cloud-tenants.d.ts +10 -0
- package/dist/components/product-demo/fixtures/cloud-tenants.d.ts.map +1 -0
- package/dist/components/product-demo/fixtures/devices.d.ts +14 -0
- package/dist/components/product-demo/fixtures/devices.d.ts.map +1 -0
- package/dist/components/product-demo/fixtures/knowledge.d.ts +14 -0
- package/dist/components/product-demo/fixtures/knowledge.d.ts.map +1 -0
- package/dist/components/product-demo/fixtures/logs.d.ts +15 -0
- package/dist/components/product-demo/fixtures/logs.d.ts.map +1 -0
- package/dist/components/product-demo/fixtures/policies.d.ts +13 -0
- package/dist/components/product-demo/fixtures/policies.d.ts.map +1 -0
- package/dist/components/product-demo/fixtures/remote-session.d.ts +20 -0
- package/dist/components/product-demo/fixtures/remote-session.d.ts.map +1 -0
- package/dist/components/product-demo/fixtures/shared.d.ts +156 -0
- package/dist/components/product-demo/fixtures/shared.d.ts.map +1 -0
- package/dist/components/product-demo/fixtures/software-update.d.ts +19 -0
- package/dist/components/product-demo/fixtures/software-update.d.ts.map +1 -0
- package/dist/components/product-demo/fixtures/tickets-board.d.ts +8 -0
- package/dist/components/product-demo/fixtures/tickets-board.d.ts.map +1 -0
- package/dist/components/product-demo/index.cjs +112 -0
- package/dist/components/product-demo/index.d.ts +6 -0
- package/dist/components/product-demo/index.d.ts.map +1 -0
- package/dist/components/product-demo/index.js +112 -0
- package/dist/components/product-demo/product-screen.d.ts +22 -0
- package/dist/components/product-demo/product-screen.d.ts.map +1 -0
- package/dist/components/product-demo/registry.d.ts +13 -0
- package/dist/components/product-demo/registry.d.ts.map +1 -0
- package/dist/components/product-demo/screen-keys.cjs +25 -0
- package/dist/components/product-demo/screen-keys.d.ts +27 -0
- package/dist/components/product-demo/screen-keys.d.ts.map +1 -0
- package/dist/components/product-demo/screen-keys.js +20 -0
- package/dist/components/product-demo/screens/cloud-tenants.d.ts +8 -0
- package/dist/components/product-demo/screens/cloud-tenants.d.ts.map +1 -0
- package/dist/components/product-demo/screens/devices.d.ts +10 -0
- package/dist/components/product-demo/screens/devices.d.ts.map +1 -0
- package/dist/components/product-demo/screens/knowledge.d.ts +9 -0
- package/dist/components/product-demo/screens/knowledge.d.ts.map +1 -0
- package/dist/components/product-demo/screens/logs.d.ts +4 -0
- package/dist/components/product-demo/screens/logs.d.ts.map +1 -0
- package/dist/components/product-demo/screens/policies.d.ts +8 -0
- package/dist/components/product-demo/screens/policies.d.ts.map +1 -0
- package/dist/components/product-demo/screens/remote-desktop-picture.d.ts +11 -0
- package/dist/components/product-demo/screens/remote-desktop-picture.d.ts.map +1 -0
- package/dist/components/product-demo/screens/remote-session.d.ts +8 -0
- package/dist/components/product-demo/screens/remote-session.d.ts.map +1 -0
- package/dist/components/product-demo/screens/software-update.d.ts +12 -0
- package/dist/components/product-demo/screens/software-update.d.ts.map +1 -0
- package/dist/components/product-demo/screens/tickets-board.d.ts +4 -0
- package/dist/components/product-demo/screens/tickets-board.d.ts.map +1 -0
- package/dist/components/product-demo/types.d.ts +9 -0
- package/dist/components/product-demo/types.d.ts.map +1 -0
- package/dist/components/related-content/index.cjs +14 -8
- package/dist/components/related-content/index.js +13 -7
- package/dist/components/tickets/index.cjs +36 -20
- package/dist/components/tickets/index.js +35 -19
- package/dist/components/ui/file-manager/index.cjs +38 -34
- package/dist/components/ui/file-manager/index.js +8 -4
- package/dist/components/ui/index.cjs +57 -17
- package/dist/components/ui/index.d.ts +1 -0
- package/dist/components/ui/index.d.ts.map +1 -1
- package/dist/components/ui/index.js +141 -101
- package/dist/components/ui/product-screen-frame.d.ts +45 -0
- package/dist/components/ui/product-screen-frame.d.ts.map +1 -0
- package/dist/components/ui/radio-group.d.ts +5 -0
- package/dist/components/ui/radio-group.d.ts.map +1 -1
- package/dist/components/ui/snap-carousel.d.ts +11 -1
- package/dist/components/ui/snap-carousel.d.ts.map +1 -1
- package/dist/components/ui/tag.d.ts +1 -1
- package/dist/components/ui/tag.d.ts.map +1 -1
- package/dist/devices-LBMG42K6.js +81 -0
- package/dist/devices-YGYJIXQY.cjs +81 -0
- package/dist/hooks/index.cjs +17 -8
- package/dist/hooks/index.js +32 -23
- package/dist/hooks/ui/index.d.ts +1 -0
- package/dist/hooks/ui/index.d.ts.map +1 -1
- package/dist/hooks/ui/use-header-height.d.ts +12 -0
- package/dist/hooks/ui/use-header-height.d.ts.map +1 -1
- package/dist/hooks/ui/use-sticky-toolbar.d.ts +29 -0
- package/dist/hooks/ui/use-sticky-toolbar.d.ts.map +1 -0
- package/dist/hooks/use-location-hash.d.ts +2 -2
- package/dist/hooks/use-location-hash.d.ts.map +1 -1
- package/dist/hooks/use-scroll-to-hash.d.ts +7 -0
- package/dist/hooks/use-scroll-to-hash.d.ts.map +1 -1
- package/dist/index.cjs +276 -25
- package/dist/index.js +729 -478
- package/dist/knowledge-H5BIWJVI.js +108 -0
- package/dist/knowledge-KTCVJIWN.cjs +108 -0
- package/dist/logs-DB5Z7M5Q.js +216 -0
- package/dist/logs-RVCC2UQW.cjs +216 -0
- package/dist/policies-EWUULFBR.js +121 -0
- package/dist/policies-HV4IQCBV.cjs +121 -0
- package/dist/remote-session-GSGZOFDX.js +196 -0
- package/dist/remote-session-R6VAFESR.cjs +196 -0
- package/dist/software-update-6PXKRKBT.js +179 -0
- package/dist/software-update-D4OVSWSG.cjs +179 -0
- package/dist/tickets-board-BHLPAVNJ.cjs +137 -0
- package/dist/tickets-board-PYDNELSK.js +137 -0
- package/dist/types/case-study.d.ts +15 -1
- package/dist/types/case-study.d.ts.map +1 -1
- package/dist/utils/date-utils.d.ts +5 -0
- package/dist/utils/date-utils.d.ts.map +1 -1
- package/dist/utils/index.cjs +45 -2
- package/dist/utils/index.d.ts +2 -1
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +41 -3
- package/dist/utils/open-in-new-tab.d.ts +7 -0
- package/dist/utils/open-in-new-tab.d.ts.map +1 -0
- package/dist/utils/same-page-hash-nav.d.ts +31 -0
- package/dist/utils/same-page-hash-nav.d.ts.map +1 -1
- package/dist/utils/scroll-into-view.d.ts +14 -1
- package/dist/utils/scroll-into-view.d.ts.map +1 -1
- package/package.json +13 -1
- package/src/components/chat/ask-prompts.tsx +226 -0
- package/src/components/chat/embeddable-chat.tsx +38 -2
- package/src/components/chat/entity-cards/case-study-card.tsx +122 -46
- package/src/components/chat/hooks/use-chat-dialog-manager.ts +22 -4
- package/src/components/chat/hooks/use-unified-chat.ts +1 -0
- package/src/components/chat/index.ts +1 -0
- package/src/components/chat/quick-action-chip.tsx +33 -9
- package/src/components/chat/types/component.types.ts +4 -0
- package/src/components/chat/types/unified-chat-state.types.ts +13 -0
- package/src/components/docs/use-scroll-spy.ts +93 -18
- package/src/components/faq/faq-section.tsx +82 -43
- package/src/components/features/array-entry-manager.tsx +10 -1
- package/src/components/features/board/board.tsx +4 -1
- package/src/components/features/board/ticket-card.tsx +11 -1
- package/src/components/features/board/touch-board.tsx +2 -1
- package/src/components/features/board/types.ts +3 -0
- package/src/components/features/board/use-board-collapse.ts +7 -2
- package/src/components/features/capability-explorer.tsx +412 -0
- package/src/components/features/cloud-tenants/index.ts +28 -0
- package/src/components/features/cloud-tenants/tenant-access-cell.tsx +24 -0
- package/src/components/features/cloud-tenants/tenant-cell.tsx +26 -0
- package/src/components/features/cloud-tenants/tenant-customer-cell.tsx +27 -0
- package/src/components/features/cloud-tenants/tenant-presentation.ts +111 -0
- package/src/components/features/cloud-tenants/tenant-row.ts +21 -0
- package/src/components/features/cloud-tenants/tenants-table-columns.ts +30 -0
- package/src/components/features/cloud-tenants/tenants-table-view.tsx +142 -0
- package/src/components/features/devices/device-last-online.ts +6 -0
- package/src/components/features/devices/device-name.ts +51 -0
- package/src/components/features/devices/device-selector/device-selection-mode-radio.tsx +107 -0
- package/src/components/features/devices/device-selector/device-selector-skeleton.tsx +32 -0
- package/src/components/features/devices/device-selector/device-selector.tsx +799 -0
- package/src/components/features/devices/device-selector/device-selector.types.ts +138 -0
- package/src/components/features/devices/device-selector/narrowing.ts +33 -0
- package/src/components/features/devices/device-selector/use-device-selector.ts +51 -0
- package/src/components/features/devices/device-status.ts +102 -0
- package/src/components/features/devices/device-statuses.ts +88 -0
- package/src/components/features/devices/device-tags-filter-button.tsx +49 -0
- package/src/components/features/devices/device-type-icon.tsx +29 -0
- package/src/components/features/devices/device-type-tile.tsx +17 -0
- package/src/components/features/devices/devices-filter-toolbar.tsx +114 -0
- package/src/components/features/devices/devices-grid-filters.tsx +99 -0
- package/src/components/features/devices/devices-grid.tsx +86 -0
- package/src/components/features/devices/devices-list.tsx +357 -0
- package/src/components/features/devices/devices-panel-header.tsx +97 -0
- package/src/components/features/devices/devices-panel-view.tsx +261 -0
- package/src/components/features/devices/devices-table-columns.tsx +356 -0
- package/src/components/features/devices/devices-view-config.tsx +38 -0
- package/src/components/features/devices/index.ts +89 -0
- package/src/components/features/devices/types.ts +74 -0
- package/src/components/features/devices/use-tag-filter-modal.ts +109 -0
- package/src/components/features/index.ts +9 -0
- package/src/components/features/knowledge-base/index.ts +19 -0
- package/src/components/features/knowledge-base/knowledge-base-article-view.tsx +134 -0
- package/src/components/features/knowledge-base/knowledge-base-item-icon.ts +14 -0
- package/src/components/features/knowledge-base/knowledge-base-status.ts +12 -0
- package/src/components/features/knowledge-base/knowledge-base-table.tsx +180 -0
- package/src/components/features/logs/index.ts +20 -0
- package/src/components/features/logs/log-drawer.tsx +138 -0
- package/src/components/features/logs/log-source-labels.ts +25 -0
- package/src/components/features/logs/logs-page-view.tsx +100 -0
- package/src/components/features/logs/logs-table-columns.ts +16 -0
- package/src/components/features/logs/logs-table-view.tsx +509 -0
- package/src/components/features/logs/types.ts +71 -0
- package/src/components/features/policies/compute-policy-summary.ts +115 -0
- package/src/components/features/policies/index.ts +14 -0
- package/src/components/features/policies/policies-table.tsx +235 -0
- package/src/components/features/policies/policy-summary-cards.tsx +69 -0
- package/src/components/features/policies/policy-table-row.ts +37 -0
- package/src/components/features/remote-session/index.ts +8 -0
- package/src/components/features/remote-session/remote-desktop-chat-message-row.tsx +56 -0
- package/src/components/features/remote-session/remote-desktop-chat-panel.tsx +102 -0
- package/src/components/features/remote-session/remote-desktop-fullscreen-toolbar.tsx +119 -0
- package/src/components/features/remote-session/remote-desktop-view.tsx +209 -0
- package/src/components/features/software/index.ts +39 -0
- package/src/components/features/software/package-managers.ts +54 -0
- package/src/components/features/software/package-search-field-placeholder.tsx +23 -0
- package/src/components/features/software/schedule-fields.tsx +105 -0
- package/src/components/features/software/software-action-copy.ts +70 -0
- package/src/components/features/software/software-action-form.tsx +199 -0
- package/src/components/features/software/software-row-fields.tsx +105 -0
- package/src/components/features/software/software-row.ts +22 -0
- package/src/components/features/sortable-list/index.ts +1 -0
- package/src/components/features/sortable-list/sortable-drag-handle.tsx +41 -0
- package/src/components/layout/page-heading.tsx +23 -6
- package/src/components/navigation/index.ts +5 -0
- package/src/components/navigation/mingo-ai-button.tsx +37 -13
- package/src/components/navigation/sticky-section-nav.tsx +99 -1
- package/src/components/product-demo/cast.tsx +78 -0
- package/src/components/product-demo/fixtures/cloud-tenants.ts +63 -0
- package/src/components/product-demo/fixtures/devices.ts +87 -0
- package/src/components/product-demo/fixtures/knowledge.ts +48 -0
- package/src/components/product-demo/fixtures/logs.ts +103 -0
- package/src/components/product-demo/fixtures/policies.ts +77 -0
- package/src/components/product-demo/fixtures/remote-session.ts +65 -0
- package/src/components/product-demo/fixtures/shared.ts +53 -0
- package/src/components/product-demo/fixtures/software-update.ts +63 -0
- package/src/components/product-demo/fixtures/tickets-board.ts +100 -0
- package/src/components/product-demo/index.ts +7 -0
- package/src/components/product-demo/product-screen.tsx +94 -0
- package/src/components/product-demo/registry.ts +20 -0
- package/src/components/product-demo/screen-keys.ts +31 -0
- package/src/components/product-demo/screens/cloud-tenants.tsx +23 -0
- package/src/components/product-demo/screens/devices.tsx +41 -0
- package/src/components/product-demo/screens/knowledge.tsx +27 -0
- package/src/components/product-demo/screens/logs.tsx +113 -0
- package/src/components/product-demo/screens/policies.tsx +29 -0
- package/src/components/product-demo/screens/remote-desktop-picture.tsx +118 -0
- package/src/components/product-demo/screens/remote-session.tsx +46 -0
- package/src/components/product-demo/screens/software-update.tsx +97 -0
- package/src/components/product-demo/screens/tickets-board.tsx +28 -0
- package/src/components/product-demo/types.ts +10 -0
- package/src/components/ui/index.ts +1 -0
- package/src/components/ui/product-screen-frame.tsx +136 -0
- package/src/components/ui/radio-group.tsx +16 -4
- package/src/components/ui/snap-carousel.tsx +26 -1
- package/src/components/ui/tag.tsx +5 -0
- package/src/hooks/ui/index.ts +1 -0
- package/src/hooks/ui/use-header-height.ts +51 -2
- package/src/hooks/ui/use-sticky-toolbar.ts +60 -0
- package/src/hooks/use-location-hash.ts +9 -5
- package/src/hooks/use-scroll-to-hash.ts +9 -1
- package/src/types/case-study.ts +21 -1
- package/src/utils/date-utils.ts +8 -1
- package/src/utils/index.ts +5 -0
- package/src/utils/open-in-new-tab.ts +12 -0
- package/src/utils/same-page-hash-nav.ts +57 -0
- package/src/utils/scroll-into-view.ts +21 -5
- package/dist/chunk-BM5MVGH3.cjs +0 -499
- package/dist/chunk-CUME3VTQ.js +0 -144
- package/dist/chunk-CZ7Y7UG4.js +0 -732
- package/dist/chunk-FLKJYMVB.js +0 -499
- package/dist/chunk-OF6GEI5A.cjs +0 -144
- package/dist/chunk-UVTD52MD.cjs +0 -732
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import type { ReactNode } from 'react';
|
|
4
|
+
import {
|
|
5
|
+
ChatOffIcon,
|
|
6
|
+
ChatTextIcon,
|
|
7
|
+
Collapse02Icon,
|
|
8
|
+
Expand02Icon,
|
|
9
|
+
MonitorIcon,
|
|
10
|
+
Settings01Icon,
|
|
11
|
+
} from '../../icons-v2-generated';
|
|
12
|
+
import { PageLayout } from '../../layout/page-layout';
|
|
13
|
+
import { ActionsMenuDropdown, type ActionsMenuGroup } from '../../ui/actions-menu';
|
|
14
|
+
import { Button } from '../../ui/button/button';
|
|
15
|
+
import { Skeleton } from '../../ui/skeleton';
|
|
16
|
+
import { TruncateText } from '../../ui/truncate-text';
|
|
17
|
+
import { RemoteDesktopFullscreenToolbar } from './remote-desktop-fullscreen-toolbar';
|
|
18
|
+
|
|
19
|
+
/** The page chrome both the view and its skeleton render in. */
|
|
20
|
+
const PAGE_CLASS = 'h-full overflow-hidden px-[var(--spacing-system-l)] pb-[var(--spacing-system-l)]';
|
|
21
|
+
|
|
22
|
+
const CONTROLS_BAR_CLASS =
|
|
23
|
+
'flex flex-shrink-0 items-center justify-between gap-[var(--spacing-system-mf)] rounded-md border border-ods-border bg-ods-card px-[var(--spacing-system-mf)] py-[var(--spacing-system-xs)]';
|
|
24
|
+
|
|
25
|
+
export interface RemoteDesktopViewProps {
|
|
26
|
+
/** First line of the device header. */
|
|
27
|
+
deviceName: string;
|
|
28
|
+
/** The device's customer, on the second line of the header; "Unknown Customer" when absent. */
|
|
29
|
+
organizationName?: string | null;
|
|
30
|
+
/** The "Back" control over the header; left out, the page has none (a picture of the page has nowhere to go back to). */
|
|
31
|
+
onBack?: () => void;
|
|
32
|
+
/**
|
|
33
|
+
* The compact chrome over a window-filling screen. The host owns the browser's
|
|
34
|
+
* fullscreen state and passes it here.
|
|
35
|
+
*/
|
|
36
|
+
fullscreen?: boolean;
|
|
37
|
+
onEnterFullscreen: () => void;
|
|
38
|
+
onExitFullscreen: () => void;
|
|
39
|
+
/** The display switcher's menu; the switcher is hidden while this is empty (a single display). */
|
|
40
|
+
displayMenuGroups?: ActionsMenuGroup[];
|
|
41
|
+
/** The switcher's label, e.g. "Display All" or "Display 2". */
|
|
42
|
+
currentDisplayLabel: string;
|
|
43
|
+
actionsMenuGroups: ActionsMenuGroup[];
|
|
44
|
+
onOpenSettings: () => void;
|
|
45
|
+
/** Session chat toggle - both omitted when the session has no chat. */
|
|
46
|
+
chatOpen?: boolean;
|
|
47
|
+
onToggleChat?: () => void;
|
|
48
|
+
/**
|
|
49
|
+
* What fills the screen box: the host's live canvas with its status overlays.
|
|
50
|
+
* The box is `relative`, so the content positions itself against it, and it
|
|
51
|
+
* keeps its place in the tree across `fullscreen`, so a canvas a stream is
|
|
52
|
+
* attached to is never remounted.
|
|
53
|
+
*/
|
|
54
|
+
screen: ReactNode;
|
|
55
|
+
/**
|
|
56
|
+
* The open chat panel, or nothing while it is closed. Rendered beside the
|
|
57
|
+
* screen, and over it in fullscreen: the host passes the panel in the matching
|
|
58
|
+
* variant (`side` or `overlay`).
|
|
59
|
+
*/
|
|
60
|
+
chat?: ReactNode;
|
|
61
|
+
/** Dialogs the page owns (settings, shortcuts), rendered after the session. */
|
|
62
|
+
children?: ReactNode;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* The remote desktop page: the device header with the session controls, the
|
|
67
|
+
* screen and the session chat. Everything that talks to the device (the
|
|
68
|
+
* connection, the stream, input) is the host's, passed in through `screen`.
|
|
69
|
+
*/
|
|
70
|
+
export function RemoteDesktopView({
|
|
71
|
+
deviceName,
|
|
72
|
+
organizationName,
|
|
73
|
+
onBack,
|
|
74
|
+
fullscreen = false,
|
|
75
|
+
onEnterFullscreen,
|
|
76
|
+
onExitFullscreen,
|
|
77
|
+
displayMenuGroups = [],
|
|
78
|
+
currentDisplayLabel,
|
|
79
|
+
actionsMenuGroups,
|
|
80
|
+
onOpenSettings,
|
|
81
|
+
chatOpen = false,
|
|
82
|
+
onToggleChat,
|
|
83
|
+
screen,
|
|
84
|
+
chat,
|
|
85
|
+
children,
|
|
86
|
+
}: RemoteDesktopViewProps) {
|
|
87
|
+
const controlsBar = (
|
|
88
|
+
<div className={CONTROLS_BAR_CLASS}>
|
|
89
|
+
<div className="flex min-w-0 items-center gap-[var(--spacing-system-mf)]">
|
|
90
|
+
<div className="flex-shrink-0 rounded-md border border-ods-border bg-ods-card p-[var(--spacing-system-xsf)]">
|
|
91
|
+
<MonitorIcon className="h-4 w-4 text-ods-text-primary" />
|
|
92
|
+
</div>
|
|
93
|
+
<div className="flex min-w-0 flex-col">
|
|
94
|
+
<TruncateText>{deviceName}</TruncateText>
|
|
95
|
+
<TruncateText
|
|
96
|
+
variant="h6"
|
|
97
|
+
tone="secondary"
|
|
98
|
+
>{`Desktop • ${organizationName || 'Unknown Customer'}`}</TruncateText>
|
|
99
|
+
</div>
|
|
100
|
+
</div>
|
|
101
|
+
<div className="flex flex-shrink-0 items-center gap-[var(--spacing-system-xs)]">
|
|
102
|
+
{displayMenuGroups.length > 0 && (
|
|
103
|
+
<ActionsMenuDropdown
|
|
104
|
+
groups={displayMenuGroups}
|
|
105
|
+
customTrigger={
|
|
106
|
+
<Button variant="outline" leftIcon={<MonitorIcon className="h-4 w-4 md:h-6 md:w-6" />}>
|
|
107
|
+
{/* A narrow page keeps the icon and drops the words: the bar never pushes the device's name out. */}
|
|
108
|
+
<span className="sr-only content-md:not-sr-only">{currentDisplayLabel}</span>
|
|
109
|
+
</Button>
|
|
110
|
+
}
|
|
111
|
+
/>
|
|
112
|
+
)}
|
|
113
|
+
{onToggleChat && (
|
|
114
|
+
<Button
|
|
115
|
+
variant="outline"
|
|
116
|
+
onClick={onToggleChat}
|
|
117
|
+
leftIcon={
|
|
118
|
+
chatOpen ? (
|
|
119
|
+
<ChatOffIcon className="h-4 w-4 md:h-6 md:w-6" />
|
|
120
|
+
) : (
|
|
121
|
+
<ChatTextIcon className="h-4 w-4 md:h-6 md:w-6" />
|
|
122
|
+
)
|
|
123
|
+
}
|
|
124
|
+
>
|
|
125
|
+
<span className="sr-only content-md:not-sr-only">{chatOpen ? 'Close Chat' : 'Open Chat'}</span>
|
|
126
|
+
</Button>
|
|
127
|
+
)}
|
|
128
|
+
<ActionsMenuDropdown groups={actionsMenuGroups} triggerAriaLabel="Actions" />
|
|
129
|
+
<Button
|
|
130
|
+
variant="outline"
|
|
131
|
+
size="icon"
|
|
132
|
+
aria-label="Settings"
|
|
133
|
+
onClick={onOpenSettings}
|
|
134
|
+
leftIcon={<Settings01Icon />}
|
|
135
|
+
/>
|
|
136
|
+
<Button
|
|
137
|
+
variant="outline"
|
|
138
|
+
size="icon"
|
|
139
|
+
aria-label={fullscreen ? 'Exit fullscreen' : 'Enter fullscreen'}
|
|
140
|
+
onClick={fullscreen ? onExitFullscreen : onEnterFullscreen}
|
|
141
|
+
leftIcon={fullscreen ? <Collapse02Icon /> : <Expand02Icon />}
|
|
142
|
+
/>
|
|
143
|
+
</div>
|
|
144
|
+
</div>
|
|
145
|
+
);
|
|
146
|
+
|
|
147
|
+
return (
|
|
148
|
+
<PageLayout
|
|
149
|
+
className={PAGE_CLASS}
|
|
150
|
+
backButton={onBack ? { label: 'Back', onClick: onBack } : undefined}
|
|
151
|
+
showHeader={!fullscreen}
|
|
152
|
+
>
|
|
153
|
+
<div className={fullscreen ? 'fixed inset-0 z-50 flex flex-col bg-black' : 'contents'}>
|
|
154
|
+
{fullscreen ? (
|
|
155
|
+
<RemoteDesktopFullscreenToolbar
|
|
156
|
+
deviceName={deviceName}
|
|
157
|
+
displayMenuGroups={displayMenuGroups}
|
|
158
|
+
currentDisplayLabel={currentDisplayLabel}
|
|
159
|
+
actionsMenuGroups={actionsMenuGroups}
|
|
160
|
+
onOpenSettings={onOpenSettings}
|
|
161
|
+
onExitFullscreen={onExitFullscreen}
|
|
162
|
+
chatOpen={onToggleChat ? chatOpen : undefined}
|
|
163
|
+
onToggleChat={onToggleChat}
|
|
164
|
+
/>
|
|
165
|
+
) : (
|
|
166
|
+
controlsBar
|
|
167
|
+
)}
|
|
168
|
+
{/* One wrapper in both modes: the screen must keep its DOM node across
|
|
169
|
+
the fullscreen toggle (the host attaches a stream to its canvas once),
|
|
170
|
+
so the tree shape never changes. The chat keeps ONE place in the tree
|
|
171
|
+
too, so its draft and scroll survive the toggle: beside the screen as
|
|
172
|
+
the `side` panel, and in fullscreen the `overlay` panel positions
|
|
173
|
+
itself over the screen against this wrapper (the screen fills it). */}
|
|
174
|
+
<div className={`relative flex min-h-0 min-w-0 flex-1 ${fullscreen ? '' : 'gap-[var(--spacing-system-mf)]'}`}>
|
|
175
|
+
<div className={`relative min-h-0 min-w-0 flex-1 overflow-hidden bg-black ${fullscreen ? '' : 'rounded-lg'}`}>
|
|
176
|
+
{screen}
|
|
177
|
+
</div>
|
|
178
|
+
{chat}
|
|
179
|
+
</div>
|
|
180
|
+
</div>
|
|
181
|
+
|
|
182
|
+
{children}
|
|
183
|
+
</PageLayout>
|
|
184
|
+
);
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
/** The page while the device is still loading: the header bar as placeholders over an empty screen. */
|
|
188
|
+
export function RemoteDesktopViewSkeleton({ onBack }: Pick<RemoteDesktopViewProps, 'onBack'>) {
|
|
189
|
+
return (
|
|
190
|
+
<PageLayout className={PAGE_CLASS} backButton={onBack ? { label: 'Back', onClick: onBack } : undefined}>
|
|
191
|
+
<div className={CONTROLS_BAR_CLASS}>
|
|
192
|
+
<div className="flex min-w-0 items-center gap-[var(--spacing-system-mf)]">
|
|
193
|
+
<Skeleton className="h-9 w-9 flex-shrink-0 rounded-md" />
|
|
194
|
+
<div className="flex min-w-0 flex-col gap-[var(--spacing-system-xxs)]">
|
|
195
|
+
<Skeleton className="h-5 w-48" />
|
|
196
|
+
<Skeleton className="h-4 w-36" />
|
|
197
|
+
</div>
|
|
198
|
+
</div>
|
|
199
|
+
<div className="flex flex-shrink-0 items-center gap-[var(--spacing-system-xs)]">
|
|
200
|
+
<Skeleton className="h-11 w-11 rounded-lg md:h-12 md:w-12" />
|
|
201
|
+
<Skeleton className="h-11 w-11 rounded-lg md:h-12 md:w-12" />
|
|
202
|
+
<Skeleton className="h-11 w-11 rounded-lg md:h-12 md:w-12" />
|
|
203
|
+
</div>
|
|
204
|
+
</div>
|
|
205
|
+
|
|
206
|
+
<div className="min-h-0 min-w-0 flex-1 rounded-lg bg-black" />
|
|
207
|
+
</PageLayout>
|
|
208
|
+
);
|
|
209
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
export {
|
|
4
|
+
PACKAGE_MANAGER_ICON,
|
|
5
|
+
PACKAGE_MANAGER_LABEL,
|
|
6
|
+
PACKAGE_MANAGER_OS,
|
|
7
|
+
PACKAGE_MANAGERS,
|
|
8
|
+
packageManagerLabel,
|
|
9
|
+
SOFTWARE_SOURCE_LABEL,
|
|
10
|
+
type SoftwareSourceKind,
|
|
11
|
+
type SupportedPackageManager,
|
|
12
|
+
} from './package-managers';
|
|
13
|
+
export {
|
|
14
|
+
PACKAGE_SEARCH_LABEL,
|
|
15
|
+
PACKAGE_SEARCH_PLACEHOLDER,
|
|
16
|
+
PackageSearchFieldPlaceholder,
|
|
17
|
+
} from './package-search-field-placeholder';
|
|
18
|
+
export {
|
|
19
|
+
SoftwareScheduleFields,
|
|
20
|
+
type SoftwareScheduleFieldsProps,
|
|
21
|
+
type SoftwareScheduleOption,
|
|
22
|
+
type SoftwareScheduleTiming,
|
|
23
|
+
} from './schedule-fields';
|
|
24
|
+
export {
|
|
25
|
+
SOFTWARE_ACTION_COPY,
|
|
26
|
+
SOFTWARE_ACTION_DETAIL_TITLE,
|
|
27
|
+
type SoftwareActionCopy,
|
|
28
|
+
softwareActionCopy,
|
|
29
|
+
type SoftwareActionKind,
|
|
30
|
+
} from './software-action-copy';
|
|
31
|
+
export {
|
|
32
|
+
SoftwareActionForm,
|
|
33
|
+
type SoftwareActionFormProps,
|
|
34
|
+
type SoftwareActionFormValues,
|
|
35
|
+
type SoftwareDeviceScope,
|
|
36
|
+
type SoftwareRunMode,
|
|
37
|
+
} from './software-action-form';
|
|
38
|
+
export { newSoftwareRow, type SelectedPackage, type SoftwareRow } from './software-row';
|
|
39
|
+
export { type PackageSearchSlotProps, SoftwareRowFields, type SoftwareRowFieldsProps } from './software-row-fields';
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import type { ComponentType } from 'react';
|
|
2
|
+
import { HomebrewLogoGreyIcon, WingetLogoGreyIcon } from '../../icons-v2-generated';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* The package managers the UI offers. Chocolatey is deliberately left out:
|
|
6
|
+
* the backend still lists `CHOCO`, but the product ships Brew and WinGet only,
|
|
7
|
+
* so no form offers it.
|
|
8
|
+
*/
|
|
9
|
+
export const PACKAGE_MANAGERS = ['BREW', 'WINGET'] as const;
|
|
10
|
+
|
|
11
|
+
export type SupportedPackageManager = (typeof PACKAGE_MANAGERS)[number];
|
|
12
|
+
|
|
13
|
+
export const PACKAGE_MANAGER_LABEL: Record<SupportedPackageManager, string> = {
|
|
14
|
+
BREW: 'Brew',
|
|
15
|
+
WINGET: 'WinGet',
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Each catalog's brand mark, in the grey (`currentColor`) cut the tool badges use,
|
|
20
|
+
* so it takes whatever text colour the row it sits in gives it.
|
|
21
|
+
*/
|
|
22
|
+
export const PACKAGE_MANAGER_ICON: Record<
|
|
23
|
+
SupportedPackageManager,
|
|
24
|
+
ComponentType<{ size?: number; className?: string }>
|
|
25
|
+
> = {
|
|
26
|
+
BREW: HomebrewLogoGreyIcon,
|
|
27
|
+
WINGET: WingetLogoGreyIcon,
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
/** The OS each catalog installs on: what narrows the device picker. */
|
|
31
|
+
export const PACKAGE_MANAGER_OS: Record<SupportedPackageManager, 'MAC_OS' | 'WINDOWS'> = {
|
|
32
|
+
BREW: 'MAC_OS',
|
|
33
|
+
WINGET: 'WINDOWS',
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
/** A run's package manager as the UI names it; the raw value for one no form offers. */
|
|
37
|
+
export function packageManagerLabel(value: string): string {
|
|
38
|
+
return value in PACKAGE_MANAGER_LABEL ? PACKAGE_MANAGER_LABEL[value as SupportedPackageManager] : value;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/** Where the inventory can find a title. */
|
|
42
|
+
export type SoftwareSourceKind = 'WINGET' | 'CHOCOLATEY' | 'BREW' | 'UNMANAGED';
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Where the inventory found a title. The catalogs the UI offers read as they do
|
|
46
|
+
* in the forms; Chocolatey still gets a name, because the inventory reports what
|
|
47
|
+
* a device has regardless of what the product installs.
|
|
48
|
+
*/
|
|
49
|
+
export const SOFTWARE_SOURCE_LABEL: Record<SoftwareSourceKind, string> = {
|
|
50
|
+
BREW: PACKAGE_MANAGER_LABEL.BREW,
|
|
51
|
+
WINGET: PACKAGE_MANAGER_LABEL.WINGET,
|
|
52
|
+
CHOCOLATEY: 'Chocolatey',
|
|
53
|
+
UNMANAGED: 'Unmanaged',
|
|
54
|
+
};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import { Autocomplete } from '../../ui';
|
|
4
|
+
|
|
5
|
+
export const PACKAGE_SEARCH_LABEL = 'Software Name';
|
|
6
|
+
export const PACKAGE_SEARCH_PLACEHOLDER = 'Search for Software';
|
|
7
|
+
|
|
8
|
+
/** The "Software Name" field while it cannot search: the search failed, or a read outside the field's own deferral. */
|
|
9
|
+
export function PackageSearchFieldPlaceholder({ error }: { error?: string }) {
|
|
10
|
+
return (
|
|
11
|
+
<Autocomplete
|
|
12
|
+
label={PACKAGE_SEARCH_LABEL}
|
|
13
|
+
labelVariant="large"
|
|
14
|
+
options={[]}
|
|
15
|
+
value={null}
|
|
16
|
+
onChange={() => {}}
|
|
17
|
+
placeholder={PACKAGE_SEARCH_PLACEHOLDER}
|
|
18
|
+
disabled
|
|
19
|
+
error={error}
|
|
20
|
+
invalid={!!error}
|
|
21
|
+
/>
|
|
22
|
+
);
|
|
23
|
+
}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import { cn } from '../../../utils/cn';
|
|
4
|
+
import { DatePickerInputSimple, Label, Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '../../ui';
|
|
5
|
+
|
|
6
|
+
export interface SoftwareScheduleOption<V extends string = string> {
|
|
7
|
+
value: V;
|
|
8
|
+
label: string;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* How a schedule's start is read: the timezone choices, the time slots a day
|
|
13
|
+
* offers, the first day that can be picked and whether a start has gone by.
|
|
14
|
+
* The host owns these rules (the product shares them with script schedules).
|
|
15
|
+
*/
|
|
16
|
+
export interface SoftwareScheduleTiming<TRef extends string = string> {
|
|
17
|
+
timeReferenceOptions: ReadonlyArray<SoftwareScheduleOption<TRef>>;
|
|
18
|
+
getTimeOptions: (date: Date | null, timeReference: TRef) => SoftwareScheduleOption[];
|
|
19
|
+
getEarliestDay: (timeReference: TRef) => Date | undefined;
|
|
20
|
+
/** The message for a start that cannot be scheduled; undefined when it can. */
|
|
21
|
+
getStartError: (date: Date | null, time: string, timeReference: TRef) => string | undefined;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export interface SoftwareScheduleFieldsProps<TRef extends string = string> {
|
|
25
|
+
date: Date | null;
|
|
26
|
+
time: string;
|
|
27
|
+
timeReference: TRef;
|
|
28
|
+
timing: SoftwareScheduleTiming<TRef>;
|
|
29
|
+
onDateChange: (date: Date | null) => void;
|
|
30
|
+
onTimeChange: (time: string) => void;
|
|
31
|
+
onTimeReferenceChange: (reference: TRef) => void;
|
|
32
|
+
/**
|
|
33
|
+
* `page` (default): the script schedule's four-column grid, the three fields
|
|
34
|
+
* in its first three columns. `fill`: the three fields share the whole width
|
|
35
|
+
* (the fields beside something else on the row).
|
|
36
|
+
*/
|
|
37
|
+
columns?: 'page' | 'fill';
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/** Date / Time / Timezone: the same grid and readings as a script schedule's start. */
|
|
41
|
+
export function SoftwareScheduleFields<TRef extends string = string>({
|
|
42
|
+
date,
|
|
43
|
+
time,
|
|
44
|
+
timeReference,
|
|
45
|
+
timing,
|
|
46
|
+
onDateChange,
|
|
47
|
+
onTimeChange,
|
|
48
|
+
onTimeReferenceChange,
|
|
49
|
+
columns = 'page',
|
|
50
|
+
}: SoftwareScheduleFieldsProps<TRef>) {
|
|
51
|
+
const timeOptions = timing.getTimeOptions(date, timeReference);
|
|
52
|
+
const startError = timing.getStartError(date, time, timeReference);
|
|
53
|
+
|
|
54
|
+
return (
|
|
55
|
+
<div
|
|
56
|
+
className={cn(
|
|
57
|
+
'grid grid-cols-1 gap-[var(--spacing-system-lf)] content-md:items-start',
|
|
58
|
+
columns === 'fill' ? 'content-md:grid-cols-3' : 'content-md:grid-cols-4',
|
|
59
|
+
)}
|
|
60
|
+
>
|
|
61
|
+
<div className="flex min-w-0 flex-col gap-[var(--spacing-system-xxs)]">
|
|
62
|
+
<Label className="text-h4">Date</Label>
|
|
63
|
+
<DatePickerInputSimple
|
|
64
|
+
placeholder="Select date"
|
|
65
|
+
value={date ?? undefined}
|
|
66
|
+
onChange={next => onDateChange(next ?? null)}
|
|
67
|
+
fromDate={timing.getEarliestDay(timeReference)}
|
|
68
|
+
className="w-full"
|
|
69
|
+
error={startError}
|
|
70
|
+
invalid={!!startError}
|
|
71
|
+
/>
|
|
72
|
+
</div>
|
|
73
|
+
<div className="flex min-w-0 flex-col gap-[var(--spacing-system-xxs)]">
|
|
74
|
+
<Label className="text-h4">Time</Label>
|
|
75
|
+
<Select value={time} onValueChange={onTimeChange}>
|
|
76
|
+
<SelectTrigger>
|
|
77
|
+
<SelectValue placeholder="Select time" />
|
|
78
|
+
</SelectTrigger>
|
|
79
|
+
<SelectContent>
|
|
80
|
+
{timeOptions.map(option => (
|
|
81
|
+
<SelectItem key={option.value} value={option.value}>
|
|
82
|
+
{option.label}
|
|
83
|
+
</SelectItem>
|
|
84
|
+
))}
|
|
85
|
+
</SelectContent>
|
|
86
|
+
</Select>
|
|
87
|
+
</div>
|
|
88
|
+
<div className="flex min-w-0 flex-col gap-[var(--spacing-system-xxs)]">
|
|
89
|
+
<Label className="text-h4">Timezone</Label>
|
|
90
|
+
<Select value={timeReference} onValueChange={value => onTimeReferenceChange(value as TRef)}>
|
|
91
|
+
<SelectTrigger>
|
|
92
|
+
<SelectValue />
|
|
93
|
+
</SelectTrigger>
|
|
94
|
+
<SelectContent>
|
|
95
|
+
{timing.timeReferenceOptions.map(option => (
|
|
96
|
+
<SelectItem key={option.value} value={option.value}>
|
|
97
|
+
{option.label}
|
|
98
|
+
</SelectItem>
|
|
99
|
+
))}
|
|
100
|
+
</SelectContent>
|
|
101
|
+
</Select>
|
|
102
|
+
</div>
|
|
103
|
+
</div>
|
|
104
|
+
);
|
|
105
|
+
}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import type { RadioGroupBlockOption } from '../../ui';
|
|
2
|
+
|
|
3
|
+
/** What a software run does to its packages. */
|
|
4
|
+
export type SoftwareActionKind = 'INSTALL' | 'UPDATE';
|
|
5
|
+
|
|
6
|
+
export interface SoftwareActionCopy {
|
|
7
|
+
/** The ACTION column, the first word of a log's STATUS, the start of a schedule's name. */
|
|
8
|
+
verb: string;
|
|
9
|
+
/** The Install / Update Software form. */
|
|
10
|
+
formTitle: string;
|
|
11
|
+
runLabel: string;
|
|
12
|
+
scheduleLabel: string;
|
|
13
|
+
modes: RadioGroupBlockOption[];
|
|
14
|
+
started: string;
|
|
15
|
+
scheduled: string;
|
|
16
|
+
failed: string;
|
|
17
|
+
/** One run's page, and the heading over its per-device logs. */
|
|
18
|
+
detailTitle: string;
|
|
19
|
+
logsHeading: string;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/** Everything the install and update flows word differently, on every page that shows one. */
|
|
23
|
+
export const SOFTWARE_ACTION_COPY: Record<SoftwareActionKind, SoftwareActionCopy> = {
|
|
24
|
+
INSTALL: {
|
|
25
|
+
verb: 'Install',
|
|
26
|
+
formTitle: 'Install Software',
|
|
27
|
+
runLabel: 'Run Installation',
|
|
28
|
+
scheduleLabel: 'Schedule Install',
|
|
29
|
+
modes: [
|
|
30
|
+
{ value: 'now', label: 'Install Now', description: 'The install starts immediately.' },
|
|
31
|
+
{
|
|
32
|
+
value: 'schedule',
|
|
33
|
+
label: 'Schedule Install',
|
|
34
|
+
description: 'The install runs automatically at the scheduled time.',
|
|
35
|
+
},
|
|
36
|
+
],
|
|
37
|
+
started: 'Installation started',
|
|
38
|
+
scheduled: 'Installation scheduled',
|
|
39
|
+
failed: 'Failed to start the installation',
|
|
40
|
+
detailTitle: 'Software Install Details',
|
|
41
|
+
logsHeading: 'Install Logs',
|
|
42
|
+
},
|
|
43
|
+
UPDATE: {
|
|
44
|
+
verb: 'Update',
|
|
45
|
+
formTitle: 'Update Software',
|
|
46
|
+
runLabel: 'Run Update',
|
|
47
|
+
scheduleLabel: 'Schedule Update',
|
|
48
|
+
modes: [
|
|
49
|
+
{ value: 'now', label: 'Update Now', description: 'The update starts immediately.' },
|
|
50
|
+
{
|
|
51
|
+
value: 'schedule',
|
|
52
|
+
label: 'Schedule Update',
|
|
53
|
+
description: 'The update runs automatically at the scheduled time.',
|
|
54
|
+
},
|
|
55
|
+
],
|
|
56
|
+
started: 'Update started',
|
|
57
|
+
scheduled: 'Update scheduled',
|
|
58
|
+
failed: 'Failed to start the update',
|
|
59
|
+
detailTitle: 'Software Update Details',
|
|
60
|
+
logsHeading: 'Update Logs',
|
|
61
|
+
},
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
/** A run's page title while the record has not said which action it is, or names one this build does not know. */
|
|
65
|
+
export const SOFTWARE_ACTION_DETAIL_TITLE = 'Software Action Details';
|
|
66
|
+
|
|
67
|
+
/** The copy for a run's `action` as the payload types it; undefined for an action this build does not know. */
|
|
68
|
+
export function softwareActionCopy(action: string): SoftwareActionCopy | undefined {
|
|
69
|
+
return action in SOFTWARE_ACTION_COPY ? SOFTWARE_ACTION_COPY[action as SoftwareActionKind] : undefined;
|
|
70
|
+
}
|