@flamingo-stack/openframe-frontend-core 0.0.711 → 0.0.713
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-VWFZRMQR.js → chunk-3BB3IEJI.js} +13 -7
- package/dist/chunk-3K5ZLZE7.js +292 -0
- package/dist/chunk-3LU4UFPS.cjs +14 -0
- package/dist/{chunk-G47AP6LX.cjs → chunk-3QGUDPIH.cjs} +35 -33
- package/dist/{chunk-3UNL26CD.cjs → chunk-3RKBJT6K.cjs} +8 -6
- 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-VMMHJFHG.js → chunk-6F4QOCGB.js} +10 -8
- package/dist/{chunk-Q6B35Y7O.js → chunk-6MNAIQNR.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-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-WJUIXU6Y.js → chunk-CGHOH3GN.js} +28 -22
- package/dist/chunk-CMGFZHCN.js +233 -0
- package/dist/chunk-CMZ3QTFQ.js +1207 -0
- package/dist/chunk-CPA2CKRZ.cjs +125 -0
- package/dist/chunk-CYUUHFXL.js +41 -0
- package/dist/chunk-DC4RTYWK.cjs +1122 -0
- package/dist/{chunk-NF7GNGYG.js → chunk-DDWFCWOE.js} +5 -7
- package/dist/{chunk-QA6TROME.cjs → chunk-EOKSKJSS.cjs} +25 -83
- package/dist/{chunk-6NTPY5QA.cjs → chunk-ETYLOZOB.cjs} +978 -2413
- package/dist/{chunk-6AMIRXKM.cjs → chunk-F2EACDOR.cjs} +93 -87
- package/dist/chunk-F5BPGWGT.cjs +931 -0
- package/dist/chunk-FFT56TYB.cjs +401 -0
- package/dist/chunk-FYEJTF5Y.js +125 -0
- package/dist/chunk-G3GRYDMS.js +16 -0
- 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-EQWD4IJE.js → chunk-H4J72PRA.js} +74 -46
- package/dist/{chunk-AGDVEUVL.js → chunk-H5R7U2D2.js} +206 -5
- package/dist/{chunk-7AM6C6XH.cjs → chunk-HETQETPV.cjs} +9641 -9678
- package/dist/{chunk-Y2GSOUCS.cjs → chunk-HWVUR735.cjs} +2 -2
- package/dist/chunk-II4QMH26.cjs +35 -0
- package/dist/{chunk-XWEBHS7O.cjs → chunk-IJKMILMG.cjs} +82 -54
- package/dist/chunk-ILNN6QRW.js +1612 -0
- package/dist/{chunk-6GLQLTJI.js → chunk-IU4IO3CG.js} +35 -27
- package/dist/chunk-IYVFSLWJ.js +931 -0
- package/dist/{chunk-EX6GGCAC.cjs → chunk-J7YIQJPS.cjs} +15 -15
- package/dist/chunk-JHQ334WS.js +655 -0
- package/dist/{chunk-WCVZCGK5.cjs → chunk-JO5TLJPM.cjs} +129 -907
- package/dist/{chunk-PRX7HVLE.cjs → chunk-JVCAK4W3.cjs} +210 -9
- package/dist/chunk-KBJJQFYU.js +1122 -0
- package/dist/chunk-KEKCQENI.js +48 -0
- package/dist/{chunk-P6G3JZNC.cjs → chunk-KGAFUXGZ.cjs} +57 -148
- package/dist/chunk-KHXZFLIN.cjs +41 -0
- package/dist/{chunk-C4HRRB3V.cjs → chunk-KMB7JHGG.cjs} +23 -17
- package/dist/{chunk-K4PTDK34.js → chunk-KPUHSVJU.js} +322 -428
- package/dist/chunk-KT3U3ZRP.cjs +1137 -0
- package/dist/chunk-L2VUINHN.js +35 -0
- package/dist/{chunk-PLYEKV3N.cjs → chunk-MA4Q5RBP.cjs} +6 -6
- package/dist/chunk-NPAQSMRY.js +2087 -0
- package/dist/{chunk-IFWLJ66M.js → chunk-NQWJAOHO.js} +6 -4
- package/dist/{chunk-FYOKS5RI.cjs → chunk-OQKRXLTZ.cjs} +4719 -6351
- package/dist/chunk-P3JMAMHP.js +401 -0
- package/dist/{chunk-62KNLDXK.js → chunk-P6QCJXLD.js} +3 -3
- package/dist/chunk-PPXR22YC.cjs +2087 -0
- package/dist/chunk-PSVSEN4J.cjs +655 -0
- package/dist/{chunk-CDM7OSFB.cjs → chunk-QQQ46DFT.cjs} +125 -117
- package/dist/{chunk-FEMAJES4.cjs → chunk-QU4AHNRL.cjs} +41 -39
- package/dist/{chunk-2JTGK64G.js → chunk-RBVUIOIM.js} +12 -10
- package/dist/{chunk-SMAAV3HL.js → chunk-ROBQ5TR7.js} +10541 -10578
- package/dist/{chunk-TKZXHVBG.js → chunk-RRYNHAEL.js} +5 -5
- package/dist/{chunk-5HB7FLCV.js → chunk-STPC2AQU.js} +8338 -9970
- package/dist/{chunk-6K7QZDA6.cjs → chunk-TC4W7QDC.cjs} +8 -8
- package/dist/{chunk-FI6GMDO7.js → chunk-TTVOLEUS.js} +3605 -5040
- package/dist/{chunk-LM7TXMLU.cjs → chunk-ULWVKHSI.cjs} +8 -255
- 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-XXBLN4BP.cjs +233 -0
- package/dist/{chunk-4IBPRIQH.js → chunk-YBQQNDC7.js} +1 -1
- package/dist/{chunk-QGZPZ3RL.js → chunk-YBS5QGON.js} +70 -128
- package/dist/{chunk-K6Y5NX6L.cjs → chunk-YIUSW4DB.cjs} +114 -220
- package/dist/{chunk-YD4LJZV4.cjs → chunk-ZX7SCPLO.cjs} +6 -8
- package/dist/cloud-tenants-HRJYNUJM.cjs +117 -0
- package/dist/cloud-tenants-SM7WLEGG.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/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/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/approval-level.d.ts +49 -0
- package/dist/components/features/approval-level.d.ts.map +1 -0
- 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 +235 -12
- package/dist/components/features/index.d.ts +8 -0
- package/dist/components/features/index.d.ts.map +1 -1
- package/dist/components/features/index.js +274 -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/policy-configuration-panel.d.ts.map +1 -1
- 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 +328 -82
- package/dist/components/index.js +459 -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-6XKQTQM5.cjs +81 -0
- package/dist/devices-LXSFGGEZ.js +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 +284 -25
- package/dist/index.js +737 -478
- package/dist/knowledge-7PDZLXPO.cjs +108 -0
- package/dist/knowledge-Q4SPFOTN.js +108 -0
- package/dist/logs-SZ4VB4FE.js +216 -0
- package/dist/logs-TO3NELGJ.cjs +216 -0
- package/dist/policies-533GQVFM.cjs +121 -0
- package/dist/policies-LB7VW2UB.js +121 -0
- package/dist/remote-session-GSGZOFDX.js +196 -0
- package/dist/remote-session-R6VAFESR.cjs +196 -0
- package/dist/software-update-DT2XSG7M.cjs +179 -0
- package/dist/software-update-ENZNVGKP.js +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 +36 -2
- package/src/components/chat/entity-cards/case-study-card.tsx +122 -46
- package/src/components/chat/index.ts +1 -0
- package/src/components/chat/quick-action-chip.tsx +33 -9
- package/src/components/docs/use-scroll-spy.ts +93 -18
- package/src/components/faq/faq-section.tsx +82 -43
- package/src/components/features/approval-level.tsx +149 -0
- 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 +10 -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/policy-configuration-panel.tsx +3 -12
- 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,226 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import type { ReactNode } from 'react';
|
|
4
|
+
import { cn } from '../../utils/cn';
|
|
5
|
+
import { AgentMark } from '../agent-mark';
|
|
6
|
+
import { MingoAiButton, openAskAi } from '../navigation/mingo-ai-button';
|
|
7
|
+
import { ScrollShadow } from '../ui/scroll-fade';
|
|
8
|
+
import { QuickActionChipButton, QuickActionChipSkeleton, type QuickActionIconSpec } from './quick-action-chip';
|
|
9
|
+
|
|
10
|
+
/** One question a page offers: the chip shows `label` as written, the chat is sent `prompt`. */
|
|
11
|
+
export interface AskPrompt {
|
|
12
|
+
id: string;
|
|
13
|
+
label: string;
|
|
14
|
+
/** What is sent to the chat. Absent: the label itself. */
|
|
15
|
+
prompt?: string;
|
|
16
|
+
icon?: ReactNode | QuickActionIconSpec;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export interface AskPromptsProps {
|
|
20
|
+
prompts: readonly AskPrompt[];
|
|
21
|
+
/**
|
|
22
|
+
* How many chips the block shows and reserves room for: the same number in
|
|
23
|
+
* the same slots on every load. Default: the prompts given (while `loading`,
|
|
24
|
+
* when there are none yet, two).
|
|
25
|
+
*/
|
|
26
|
+
count?: number;
|
|
27
|
+
/** The questions are still being read: `count` chip skeletons in the chips' own slots. */
|
|
28
|
+
loading?: boolean;
|
|
29
|
+
/** `end`: the rows sit at the far end (a block beside a heading). Default `start`. */
|
|
30
|
+
align?: 'start' | 'end';
|
|
31
|
+
/** The chat source the page's chat panel runs on (the `ask-ai:open` filter). */
|
|
32
|
+
source?: string;
|
|
33
|
+
/** The assistant's configured name: the launcher before the chips ("Ask Mingo").
|
|
34
|
+
* Absent: the launcher's own default name. */
|
|
35
|
+
label?: string;
|
|
36
|
+
/** The assistant's configured glyph. Absent: the packaged Mingo mark. */
|
|
37
|
+
icon?: ReactNode;
|
|
38
|
+
/** After the chat was asked (analytics). */
|
|
39
|
+
onAsk?: (prompt: AskPrompt) => void;
|
|
40
|
+
/** The surface the row sits on, as a CSS colour: what its edge fade dissolves into. Default: the page background. */
|
|
41
|
+
fadeColor?: string;
|
|
42
|
+
className?: string;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
function AssistantGlyph({ icon, className }: { icon?: ReactNode; className: string }) {
|
|
46
|
+
return (
|
|
47
|
+
<span className={cn('inline-flex shrink-0 items-center justify-center overflow-hidden rounded-full', className)}>
|
|
48
|
+
{icon ?? <AgentMark agent="mingo" className="size-full" />}
|
|
49
|
+
</span>
|
|
50
|
+
);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/** How many slots a loading block reserves when its host names no `count`. */
|
|
54
|
+
const DEFAULT_LOADING_SLOTS = 2;
|
|
55
|
+
/** The slots a block shows: the host's `count`; else the prompts it has, or the default while they load. */
|
|
56
|
+
const slotCount = (count: number | undefined, loading: boolean, prompts: readonly AskPrompt[]) =>
|
|
57
|
+
count ?? (loading ? DEFAULT_LOADING_SLOTS : prompts.length);
|
|
58
|
+
|
|
59
|
+
/** A skeleton chip's label width (in `ch`), by slot: a believable spread that is the same on every load. */
|
|
60
|
+
const SKELETON_LABEL_CH = [26, 22, 30, 24, 20, 28] as const;
|
|
61
|
+
/** One chip's slot in a stacked block (a card): the chip's own height, so an empty slot holds the same room. */
|
|
62
|
+
const CHIP_SLOT_CLASS = 'flex h-9 min-w-0 max-w-full';
|
|
63
|
+
/**
|
|
64
|
+
* One chip's slot in `AskPrompts`. In a narrow column the block is ONE row that
|
|
65
|
+
* scrolls sideways, so a chip keeps its question's width and never shrinks;
|
|
66
|
+
* from the content `md` step the block stacks and a long question clips.
|
|
67
|
+
*/
|
|
68
|
+
const ROW_CHIP_SLOT_CLASS = 'flex h-9 shrink-0 content-md:min-w-0 content-md:max-w-full content-md:shrink';
|
|
69
|
+
/**
|
|
70
|
+
* `AskPrompts`' block. Narrow (a phone): the launcher and the chips are one row
|
|
71
|
+
* that scrolls sideways and fades where it continues (the lib's `ScrollShadow`),
|
|
72
|
+
* the suggestion-chip row of Material's guidance: one row high whatever the
|
|
73
|
+
* questions are, and no ragged space beside them. From the content `md` step:
|
|
74
|
+
* stacked, one chip per row.
|
|
75
|
+
*/
|
|
76
|
+
const ASK_PROMPTS_ROW_CLASS =
|
|
77
|
+
'flex min-w-0 flex-row items-center gap-2 [scrollbar-width:none] [&::-webkit-scrollbar]:hidden content-md:flex-col content-md:overflow-visible';
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* The questions themselves, in `count` fixed slots: a sentence-case chip each
|
|
81
|
+
* (a click opens the chat and sends that question once), a chip skeleton each
|
|
82
|
+
* while loading, and an empty slot where fewer questions exist than slots.
|
|
83
|
+
*/
|
|
84
|
+
function QuestionChips({
|
|
85
|
+
prompts,
|
|
86
|
+
count,
|
|
87
|
+
loading,
|
|
88
|
+
source,
|
|
89
|
+
onAsk,
|
|
90
|
+
slotClassName,
|
|
91
|
+
}: Pick<AskPromptsProps, 'prompts' | 'loading' | 'source' | 'onAsk'> & { count: number; slotClassName?: string }) {
|
|
92
|
+
return (
|
|
93
|
+
<>
|
|
94
|
+
{Array.from({ length: count }, (_, slot) => {
|
|
95
|
+
const prompt = loading ? undefined : prompts[slot];
|
|
96
|
+
return (
|
|
97
|
+
<span key={prompt?.id ?? `slot-${slot}`} className={slotClassName ?? CHIP_SLOT_CLASS}>
|
|
98
|
+
{loading ? (
|
|
99
|
+
<QuickActionChipSkeleton
|
|
100
|
+
variant="question"
|
|
101
|
+
labelCh={SKELETON_LABEL_CH[slot % SKELETON_LABEL_CH.length]}
|
|
102
|
+
/>
|
|
103
|
+
) : prompt ? (
|
|
104
|
+
<QuickActionChipButton
|
|
105
|
+
variant="question"
|
|
106
|
+
label={prompt.label}
|
|
107
|
+
icon={prompt.icon}
|
|
108
|
+
onSelect={() => {
|
|
109
|
+
openAskAi(source, { prompt: prompt.prompt ?? prompt.label });
|
|
110
|
+
onAsk?.(prompt);
|
|
111
|
+
}}
|
|
112
|
+
/>
|
|
113
|
+
) : null}
|
|
114
|
+
</span>
|
|
115
|
+
);
|
|
116
|
+
})}
|
|
117
|
+
</>
|
|
118
|
+
);
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
/**
|
|
122
|
+
* A row of questions that open the site chat and ask it: THE assistant
|
|
123
|
+
* launcher (`MingoAiButton`, its in-page variant: the mark and the name), then
|
|
124
|
+
* `count` question chips in fixed slots, so the block's height is known before
|
|
125
|
+
* the questions are: ONE scrolling row on a narrow column, one chip per row
|
|
126
|
+
* from the content `md` step (a chip is one line: a longer question clips there
|
|
127
|
+
* and its tooltip shows it whole). A click on a chip opens the
|
|
128
|
+
* chat and sends that question once (`openAskAi` with a prompt); the launcher
|
|
129
|
+
* only opens it. While `loading` the slots hold chip skeletons and the launcher
|
|
130
|
+
* keeps its place. Loaded with no prompt it renders nothing.
|
|
131
|
+
*/
|
|
132
|
+
export function AskPrompts({
|
|
133
|
+
prompts,
|
|
134
|
+
count: countProp,
|
|
135
|
+
loading = false,
|
|
136
|
+
align = 'start',
|
|
137
|
+
source,
|
|
138
|
+
label,
|
|
139
|
+
icon,
|
|
140
|
+
onAsk,
|
|
141
|
+
fadeColor,
|
|
142
|
+
className,
|
|
143
|
+
}: AskPromptsProps) {
|
|
144
|
+
const count = slotCount(countProp, loading, prompts);
|
|
145
|
+
if (!loading && prompts.length === 0) return null;
|
|
146
|
+
const end = align === 'end';
|
|
147
|
+
return (
|
|
148
|
+
<ScrollShadow
|
|
149
|
+
axis="horizontal"
|
|
150
|
+
color={fadeColor}
|
|
151
|
+
className="w-full min-w-0 content-md:w-auto"
|
|
152
|
+
scrollClassName={cn(ASK_PROMPTS_ROW_CLASS, end ? 'content-md:items-end' : 'content-md:items-start', className)}
|
|
153
|
+
>
|
|
154
|
+
<MingoAiButton variant="button" source={source} label={label} icon={icon} className="shrink-0" />
|
|
155
|
+
<QuestionChips
|
|
156
|
+
prompts={prompts}
|
|
157
|
+
count={count}
|
|
158
|
+
loading={loading}
|
|
159
|
+
source={source}
|
|
160
|
+
onAsk={onAsk}
|
|
161
|
+
slotClassName={cn(ROW_CHIP_SLOT_CLASS, end && 'content-md:justify-end')}
|
|
162
|
+
/>
|
|
163
|
+
</ScrollShadow>
|
|
164
|
+
);
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
export interface AskCardProps extends Omit<AskPromptsProps, 'label' | 'className' | 'align'> {
|
|
168
|
+
title: string;
|
|
169
|
+
description?: string;
|
|
170
|
+
/** The assistant's configured name: the launcher's label. */
|
|
171
|
+
label: string;
|
|
172
|
+
/** Show the Cmd+K / Ctrl+K key cap on the launcher (and bind it). Default true: the card's launcher reads like the header's. */
|
|
173
|
+
shortcutHint?: boolean;
|
|
174
|
+
className?: string;
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
/**
|
|
178
|
+
* The "still deciding?" card beside a list of questions: the assistant's mark,
|
|
179
|
+
* a title, a line of description, `count` questions (one per row, in fixed
|
|
180
|
+
* slots, chip skeletons while `loading`) and the chat launcher. The card is the
|
|
181
|
+
* same height before and after the questions arrive.
|
|
182
|
+
*/
|
|
183
|
+
export function AskCard({
|
|
184
|
+
title,
|
|
185
|
+
description,
|
|
186
|
+
prompts,
|
|
187
|
+
count: countProp,
|
|
188
|
+
loading = false,
|
|
189
|
+
source,
|
|
190
|
+
label,
|
|
191
|
+
icon,
|
|
192
|
+
onAsk,
|
|
193
|
+
shortcutHint = true,
|
|
194
|
+
className,
|
|
195
|
+
}: AskCardProps) {
|
|
196
|
+
const count = slotCount(countProp, loading, prompts);
|
|
197
|
+
return (
|
|
198
|
+
<div
|
|
199
|
+
className={cn(
|
|
200
|
+
'flex flex-col gap-[var(--spacing-system-m)] rounded-md border border-ods-border bg-ods-card p-[var(--spacing-system-l)]',
|
|
201
|
+
className,
|
|
202
|
+
)}
|
|
203
|
+
>
|
|
204
|
+
<div className="flex items-center gap-3">
|
|
205
|
+
<AssistantGlyph icon={icon} className="size-8" />
|
|
206
|
+
<div className="min-w-0">
|
|
207
|
+
<p className="text-ods-text-primary text-h4">{title}</p>
|
|
208
|
+
{description && <p className="text-ods-text-secondary text-h6">{description}</p>}
|
|
209
|
+
</div>
|
|
210
|
+
</div>
|
|
211
|
+
{(loading || prompts.length > 0) && (
|
|
212
|
+
<div className="flex min-w-0 flex-col items-start gap-2">
|
|
213
|
+
<QuestionChips prompts={prompts} count={count} loading={loading} source={source} onAsk={onAsk} />
|
|
214
|
+
</div>
|
|
215
|
+
)}
|
|
216
|
+
<MingoAiButton
|
|
217
|
+
variant="button"
|
|
218
|
+
source={source}
|
|
219
|
+
label={label}
|
|
220
|
+
icon={icon}
|
|
221
|
+
shortcutHint={shortcutHint}
|
|
222
|
+
className="self-start"
|
|
223
|
+
/>
|
|
224
|
+
</div>
|
|
225
|
+
);
|
|
226
|
+
}
|
|
@@ -1859,15 +1859,49 @@ function EmbeddableChatInner({
|
|
|
1859
1859
|
// Listen for plain "open chat" events (no row context). Fired by the
|
|
1860
1860
|
// header MingoAiButton. Same strict source filter as `ask-ai:open-with-ref`
|
|
1861
1861
|
// above: events without a matching source are ignored.
|
|
1862
|
+
// With a `prompt` in the detail (a page's "Ask Mingo" question) the panel
|
|
1863
|
+
// also asks it, once, in Guide mode, in a new conversation. In any other mode
|
|
1864
|
+
// the chat only opens.
|
|
1865
|
+
// A question from the page starts its OWN conversation: it is never appended
|
|
1866
|
+
// to whatever thread was open. An open thread is reset to a new chat first
|
|
1867
|
+
// (`resetToNewChat`: the messages AND the active dialog id; clearing the
|
|
1868
|
+
// messages alone leaves the id set, the draft never comes and the question
|
|
1869
|
+
// would be lost) and the question is sent once that draft is what the panel holds.
|
|
1870
|
+
const pendingAskRef = useRef<string | null>(null);
|
|
1871
|
+
const isDraft = activeDialogId == null && messages.length === 0;
|
|
1872
|
+
const sendAskPrompt = useCallback(
|
|
1873
|
+
(prompt: string) => {
|
|
1874
|
+
if (activeMode !== 'guide') return;
|
|
1875
|
+
if (isDraft) {
|
|
1876
|
+
void sendMessage(prompt).catch((err: unknown) => {
|
|
1877
|
+
console.error('[EmbeddableChat] ask-ai:open prompt failed:', err);
|
|
1878
|
+
});
|
|
1879
|
+
return;
|
|
1880
|
+
}
|
|
1881
|
+
pendingAskRef.current = prompt;
|
|
1882
|
+
resetToNewChat();
|
|
1883
|
+
},
|
|
1884
|
+
[activeMode, isDraft, sendMessage, resetToNewChat],
|
|
1885
|
+
);
|
|
1886
|
+
useEffect(() => {
|
|
1887
|
+
const prompt = pendingAskRef.current;
|
|
1888
|
+
if (!prompt || !isDraft) return;
|
|
1889
|
+
pendingAskRef.current = null;
|
|
1890
|
+
void sendMessage(prompt).catch((err: unknown) => {
|
|
1891
|
+
console.error('[EmbeddableChat] ask-ai:open prompt failed:', err);
|
|
1892
|
+
});
|
|
1893
|
+
}, [isDraft, sendMessage]);
|
|
1862
1894
|
useEffect(() => {
|
|
1863
1895
|
const handler = (e: Event) => {
|
|
1864
|
-
const detail = (e as CustomEvent<{ source?: string }>).detail;
|
|
1896
|
+
const detail = (e as CustomEvent<{ source?: string; prompt?: unknown }>).detail;
|
|
1865
1897
|
if (!detail || detail.source !== source) return;
|
|
1866
1898
|
setIsOpen(true);
|
|
1899
|
+
const prompt = typeof detail.prompt === 'string' ? detail.prompt.trim() : '';
|
|
1900
|
+
if (prompt) setTimeout(() => sendAskPrompt(prompt), 0);
|
|
1867
1901
|
};
|
|
1868
1902
|
window.addEventListener('ask-ai:open', handler);
|
|
1869
1903
|
return () => window.removeEventListener('ask-ai:open', handler);
|
|
1870
|
-
}, [source, setIsOpen]);
|
|
1904
|
+
}, [source, setIsOpen, sendAskPrompt]);
|
|
1871
1905
|
|
|
1872
1906
|
const hasMessages = messages.length > 0;
|
|
1873
1907
|
// First dialog page in flight and nothing cached yet — we don't yet know if
|
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
|
-
* CaseStudyCard (pure presentation).
|
|
4
|
+
* CaseStudyCard (pure presentation). Five densities — `default` (vertical
|
|
5
5
|
* detail), `sm` (compact horizontal for chat-inline), `portrait` (rails and
|
|
6
|
-
* strips)
|
|
6
|
+
* strips), `menu` (the site menu's card, hover-plays the highlight cut) and
|
|
7
|
+
* `result` (a customer result: who, the headline metric large, the story's
|
|
8
|
+
* title and a link to read it; no cover).
|
|
9
|
+
*
|
|
10
|
+
* Only `result` shows a metric (the story's FIRST one). Every other density is
|
|
11
|
+
* the story's regular card and never changes its box for one.
|
|
7
12
|
*
|
|
8
13
|
* The card writes NO click logic — callers wrap with their own anchor
|
|
9
14
|
* and pass the resolved detail URL via `href`.
|
|
@@ -16,7 +21,7 @@
|
|
|
16
21
|
import { useState } from 'react';
|
|
17
22
|
import Image from '../../../embed-shims/next-image';
|
|
18
23
|
import Link from '../../../embed-shims/next-link';
|
|
19
|
-
import type { CaseStudyCardData } from '../../../types/case-study';
|
|
24
|
+
import type { CaseStudyCardData, CaseStudyMetric } from '../../../types/case-study';
|
|
20
25
|
import { cn } from '../../../utils/cn';
|
|
21
26
|
import { sortBitesByFeaturedAtDesc } from '../../features/video-bites-shared';
|
|
22
27
|
import { CardHoverPlay } from '../../features/video-center-badge';
|
|
@@ -55,7 +60,10 @@ export interface CaseStudyCardProps {
|
|
|
55
60
|
placeholderUrl?: string | null;
|
|
56
61
|
/** `menu` is the site menu's card: the story's video plays muted on hover or
|
|
57
62
|
* focus (the video bites' hover grammar), then who it is about and who tells it. */
|
|
58
|
-
size?: 'default' | 'sm' | 'portrait' | 'menu';
|
|
63
|
+
size?: 'default' | 'sm' | 'portrait' | 'menu' | 'result';
|
|
64
|
+
/** `result`: the colour of the metric and the read link, as a text class
|
|
65
|
+
* (a page that shows another product's brand). Default: the theme accent. */
|
|
66
|
+
accentClassName?: string;
|
|
59
67
|
/** `menu`: mount the hover player (the host passes whether its panel is open,
|
|
60
68
|
* so a closed menu holds no player). Omitted: the card's own viewport gate. */
|
|
61
69
|
mediaMounted?: boolean;
|
|
@@ -66,9 +74,88 @@ export interface CaseStudyCardProps {
|
|
|
66
74
|
className?: string;
|
|
67
75
|
}
|
|
68
76
|
|
|
77
|
+
/** The `result` card's boxes: the card and its skeleton share them, so they are one height. */
|
|
78
|
+
const CASE_STUDY_RESULT_STACK = 'flex h-full flex-col gap-5 p-6';
|
|
79
|
+
const CASE_STUDY_RESULT_METRIC_BOX = 'flex h-[112px] shrink-0 flex-col justify-start gap-1 overflow-hidden';
|
|
80
|
+
const CASE_STUDY_RESULT_FOOTER_BOX =
|
|
81
|
+
'mt-auto flex h-[60px] shrink-0 items-center justify-between gap-3 border-t border-ods-border pt-4';
|
|
82
|
+
|
|
83
|
+
/** The metric a card shows: the story's first one, when it has both halves. */
|
|
84
|
+
function headlineMetric(study: CaseStudyCardData): CaseStudyMetric | null {
|
|
85
|
+
const metric = study.metrics?.[0];
|
|
86
|
+
return metric?.value && metric.label ? metric : null;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/** Who tells the story: the portrait with the MSP's mark on it, the name and MSP, the job title. A fixed 60px zone. */
|
|
90
|
+
function CaseStudyPersonRow({ study }: { study: CaseStudyCardData }) {
|
|
91
|
+
return (
|
|
92
|
+
<div className="flex h-[60px] shrink-0 items-center">
|
|
93
|
+
<div className="flex w-full min-w-0 items-center gap-3">
|
|
94
|
+
<div className="relative h-12 w-12 shrink-0">
|
|
95
|
+
{study.user?.avatar_url ? (
|
|
96
|
+
<Image
|
|
97
|
+
src={study.user.avatar_url}
|
|
98
|
+
alt={study.user?.full_name || 'User'}
|
|
99
|
+
className="h-12 w-12 rounded-full border border-ods-border bg-ods-bg object-cover"
|
|
100
|
+
width={48}
|
|
101
|
+
height={48}
|
|
102
|
+
unoptimized
|
|
103
|
+
/>
|
|
104
|
+
) : (
|
|
105
|
+
<div className="flex h-12 w-12 items-center justify-center rounded-full border border-ods-border bg-ods-bg">
|
|
106
|
+
<span className="text-ods-text-secondary text-h4">
|
|
107
|
+
{(study.user?.full_name || 'A').charAt(0).toUpperCase()}
|
|
108
|
+
</span>
|
|
109
|
+
</div>
|
|
110
|
+
)}
|
|
111
|
+
{study.msp?.icon_url && (
|
|
112
|
+
<div className="absolute -bottom-1 -right-1 flex h-6 w-6 items-center justify-center overflow-hidden rounded-full bg-ods-text-primary ring-1 ring-ods-bg">
|
|
113
|
+
<Image
|
|
114
|
+
src={study.msp.icon_url}
|
|
115
|
+
alt={study.msp.name || 'MSP'}
|
|
116
|
+
className="h-full w-full object-cover"
|
|
117
|
+
width={24}
|
|
118
|
+
height={24}
|
|
119
|
+
unoptimized
|
|
120
|
+
/>
|
|
121
|
+
</div>
|
|
122
|
+
)}
|
|
123
|
+
</div>
|
|
124
|
+
<div className="min-w-0 flex-1">
|
|
125
|
+
<p className="truncate text-ods-text-primary text-h6">
|
|
126
|
+
{study.user?.full_name || 'Anonymous'}
|
|
127
|
+
{study.msp?.name && <span className="text-ods-text-secondary"> • {study.msp.name}</span>}
|
|
128
|
+
</p>
|
|
129
|
+
<p className="truncate text-ods-text-secondary text-h6">{study.user?.job_title || ' '}</p>
|
|
130
|
+
</div>
|
|
131
|
+
</div>
|
|
132
|
+
</div>
|
|
133
|
+
);
|
|
134
|
+
}
|
|
135
|
+
|
|
69
136
|
/** `portrait` shares the default skeleton shape — the portrait anatomy uses the
|
|
70
137
|
* same zone boxes (media aspect → 72px title → 60px person footer). */
|
|
71
|
-
export function CaseStudyCardSkeleton({ size = 'default' }: { size?: 'default' | 'sm' | 'portrait' }) {
|
|
138
|
+
export function CaseStudyCardSkeleton({ size = 'default' }: { size?: 'default' | 'sm' | 'portrait' | 'result' }) {
|
|
139
|
+
if (size === 'result') {
|
|
140
|
+
return (
|
|
141
|
+
<div className={cn(CONTENT_CARD_SKELETON_FRAME_CLASS, CASE_STUDY_RESULT_STACK, 'animate-pulse')}>
|
|
142
|
+
<div className="flex h-[60px] shrink-0 items-center gap-3">
|
|
143
|
+
<div className="h-12 w-12 rounded-full bg-ods-border" />
|
|
144
|
+
<div className="flex-1 space-y-2">
|
|
145
|
+
<div className="h-4 w-2/3 rounded bg-ods-border" />
|
|
146
|
+
<div className="h-3 w-1/2 rounded bg-ods-border" />
|
|
147
|
+
</div>
|
|
148
|
+
</div>
|
|
149
|
+
<div className={CASE_STUDY_RESULT_METRIC_BOX} data-testid="case-study-result-skeleton-metric">
|
|
150
|
+
<div className="h-10 w-1/3 rounded bg-ods-border" />
|
|
151
|
+
<div className="h-4 w-3/4 rounded bg-ods-border" />
|
|
152
|
+
</div>
|
|
153
|
+
<div className={CASE_STUDY_RESULT_FOOTER_BOX}>
|
|
154
|
+
<div className="h-4 w-2/3 rounded bg-ods-border" />
|
|
155
|
+
</div>
|
|
156
|
+
</div>
|
|
157
|
+
);
|
|
158
|
+
}
|
|
72
159
|
if (size === 'sm') {
|
|
73
160
|
return (
|
|
74
161
|
<span className={COMPACT_CARD_SKELETON_OUTER}>
|
|
@@ -131,6 +218,7 @@ export function CaseStudyCard({
|
|
|
131
218
|
placeholderUrl: placeholderUrlProp,
|
|
132
219
|
size = 'default',
|
|
133
220
|
showTypeBadge = true,
|
|
221
|
+
accentClassName = 'text-ods-accent',
|
|
134
222
|
mediaMounted,
|
|
135
223
|
onNavigate,
|
|
136
224
|
className,
|
|
@@ -259,6 +347,34 @@ export function CaseStudyCard({
|
|
|
259
347
|
);
|
|
260
348
|
}
|
|
261
349
|
|
|
350
|
+
if (size === 'result') {
|
|
351
|
+
// A customer result: the person, the headline metric large, then the story's
|
|
352
|
+
// title and the way in. A story with no metric has no result to show.
|
|
353
|
+
const metric = headlineMetric(study);
|
|
354
|
+
if (!metric) return null;
|
|
355
|
+
return (
|
|
356
|
+
<Link
|
|
357
|
+
href={href}
|
|
358
|
+
target={target}
|
|
359
|
+
rel={rel}
|
|
360
|
+
className={cn('block h-full', className)}
|
|
361
|
+
aria-label={`Read ${study.title}`}
|
|
362
|
+
>
|
|
363
|
+
<Card className={cn(CONTENT_CARD_FRAME_CLASS, CASE_STUDY_RESULT_STACK)}>
|
|
364
|
+
<CaseStudyPersonRow study={study} />
|
|
365
|
+
<div className={CASE_STUDY_RESULT_METRIC_BOX} data-testid="case-study-metric">
|
|
366
|
+
<span className={cn('truncate text-h1', accentClassName)}>{metric.value}</span>
|
|
367
|
+
<span className="line-clamp-2 text-ods-text-secondary text-h4">{metric.label}</span>
|
|
368
|
+
</div>
|
|
369
|
+
<div className={CASE_STUDY_RESULT_FOOTER_BOX}>
|
|
370
|
+
<span className="line-clamp-2 min-w-0 text-ods-text-secondary text-h6">{study.title}</span>
|
|
371
|
+
<span className={cn('shrink-0 text-h6', accentClassName)}>Read</span>
|
|
372
|
+
</div>
|
|
373
|
+
</Card>
|
|
374
|
+
</Link>
|
|
375
|
+
);
|
|
376
|
+
}
|
|
377
|
+
|
|
262
378
|
if (size === 'portrait') {
|
|
263
379
|
// Rail/strip density — shared <EntityPortraitCard> shell.
|
|
264
380
|
return (
|
|
@@ -309,47 +425,7 @@ export function CaseStudyCard({
|
|
|
309
425
|
<p className="line-clamp-3 break-words text-ods-text-primary text-h4">{study.title}</p>
|
|
310
426
|
</div>
|
|
311
427
|
|
|
312
|
-
<
|
|
313
|
-
<div className="flex w-full min-w-0 items-center gap-3">
|
|
314
|
-
<div className="relative h-12 w-12 shrink-0">
|
|
315
|
-
{study.user?.avatar_url ? (
|
|
316
|
-
<Image
|
|
317
|
-
src={study.user.avatar_url}
|
|
318
|
-
alt={study.user?.full_name || 'User'}
|
|
319
|
-
className="h-12 w-12 rounded-full border border-ods-border bg-ods-bg object-cover"
|
|
320
|
-
width={48}
|
|
321
|
-
height={48}
|
|
322
|
-
unoptimized
|
|
323
|
-
/>
|
|
324
|
-
) : (
|
|
325
|
-
<div className="flex h-12 w-12 items-center justify-center rounded-full border border-ods-border bg-ods-bg">
|
|
326
|
-
<span className="text-ods-text-secondary text-h4">
|
|
327
|
-
{(study.user?.full_name || 'A').charAt(0).toUpperCase()}
|
|
328
|
-
</span>
|
|
329
|
-
</div>
|
|
330
|
-
)}
|
|
331
|
-
{study.msp?.icon_url && (
|
|
332
|
-
<div className="absolute -bottom-1 -right-1 flex h-6 w-6 items-center justify-center overflow-hidden rounded-full bg-ods-text-primary ring-1 ring-ods-bg">
|
|
333
|
-
<Image
|
|
334
|
-
src={study.msp.icon_url}
|
|
335
|
-
alt={study.msp.name || 'MSP'}
|
|
336
|
-
className="h-full w-full object-cover"
|
|
337
|
-
width={24}
|
|
338
|
-
height={24}
|
|
339
|
-
unoptimized
|
|
340
|
-
/>
|
|
341
|
-
</div>
|
|
342
|
-
)}
|
|
343
|
-
</div>
|
|
344
|
-
<div className="min-w-0 flex-1">
|
|
345
|
-
<p className="truncate text-ods-text-primary text-h6">
|
|
346
|
-
{study.user?.full_name || 'Anonymous'}
|
|
347
|
-
{study.msp?.name && <span className="text-ods-text-secondary"> • {study.msp.name}</span>}
|
|
348
|
-
</p>
|
|
349
|
-
<p className="truncate text-ods-text-secondary text-h6">{study.user?.job_title || ' '}</p>
|
|
350
|
-
</div>
|
|
351
|
-
</div>
|
|
352
|
-
</div>
|
|
428
|
+
<CaseStudyPersonRow study={study} />
|
|
353
429
|
</Card>
|
|
354
430
|
</a>
|
|
355
431
|
);
|
|
@@ -23,6 +23,7 @@ export * from './chat-message-row';
|
|
|
23
23
|
export * from './chat-message-skeleton';
|
|
24
24
|
|
|
25
25
|
export * from './quick-action-chip';
|
|
26
|
+
export * from './ask-prompts';
|
|
26
27
|
export * from './quick-action-marquee';
|
|
27
28
|
export * from './quick-action-wall';
|
|
28
29
|
export * from './chat-ticket-list';
|
|
@@ -156,8 +156,10 @@ export interface QuickActionChipButtonProps {
|
|
|
156
156
|
/** {@link QuickActionChipLozenge} at the label's leading edge (e.g. an
|
|
157
157
|
* IT/SEC classification affix). `true` renders the `theme`'s lozenge. */
|
|
158
158
|
lozenge?: QuickActionChipLozenge | boolean;
|
|
159
|
-
/** `'primary'` = accent (yellow) chip, `'outline'` = bordered chip (default)
|
|
160
|
-
|
|
159
|
+
/** `'primary'` = accent (yellow) chip, `'outline'` = bordered chip (default),
|
|
160
|
+
* `'question'` = a bordered chip whose label is a SENTENCE in the case it was
|
|
161
|
+
* written in (a question to ask the assistant), not an uppercase task label. */
|
|
162
|
+
variant?: 'primary' | 'outline' | 'question';
|
|
161
163
|
/** Active single-select state (Figma "Feature Item" active): renders the
|
|
162
164
|
* Tag's `selected` variant (pink border + pink-secondary fill), overriding
|
|
163
165
|
* `variant`. Used by chip groups acting as tabs (OpenFrame categories). */
|
|
@@ -194,6 +196,8 @@ export interface QuickActionChipSkeletonProps {
|
|
|
194
196
|
lozenge?: boolean;
|
|
195
197
|
/** Chip scale — MUST match the loaded chips' `size` or the swap jumps. */
|
|
196
198
|
size?: 'default' | 'large';
|
|
199
|
+
/** `'question'`: the placeholder of a `variant="question"` chip (its height and padding). */
|
|
200
|
+
variant?: 'outline' | 'question';
|
|
197
201
|
className?: string;
|
|
198
202
|
}
|
|
199
203
|
|
|
@@ -217,14 +221,18 @@ export function QuickActionChipSkeleton({
|
|
|
217
221
|
icon = true,
|
|
218
222
|
lozenge = false,
|
|
219
223
|
size = 'default',
|
|
224
|
+
variant = 'outline',
|
|
220
225
|
className,
|
|
221
226
|
}: QuickActionChipSkeletonProps) {
|
|
227
|
+
const question = variant === 'question';
|
|
222
228
|
return (
|
|
223
229
|
<Tag
|
|
224
230
|
variant="outline"
|
|
225
|
-
size={size}
|
|
226
|
-
className={className}
|
|
227
|
-
icon={
|
|
231
|
+
size={question ? 'sentence' : size}
|
|
232
|
+
className={cn(question && 'max-w-full', className)}
|
|
233
|
+
icon={
|
|
234
|
+
icon && !question ? <ChipSkelBar className={size === 'large' ? 'block size-5' : 'block size-4'} /> : undefined
|
|
235
|
+
}
|
|
228
236
|
label={
|
|
229
237
|
<>
|
|
230
238
|
{lozenge && <ChipSkelBar className="mr-2 inline-block h-[16px] w-[26px] translate-y-[2px]" />}
|
|
@@ -268,9 +276,17 @@ export function QuickActionChipButton({
|
|
|
268
276
|
const resolvedLozenge = lozenge === true ? theme?.lozenge : lozenge === false ? undefined : lozenge;
|
|
269
277
|
const resolvedIcon = renderQuickActionIcon(themedIcon);
|
|
270
278
|
const resolvedLabel = composeChipLabel(label, resolvedLozenge);
|
|
271
|
-
const
|
|
279
|
+
const question = variant === 'question';
|
|
280
|
+
const tagVariant = selected
|
|
281
|
+
? selectedAccent === 'cyan'
|
|
282
|
+
? 'selectedCyan'
|
|
283
|
+
: 'selected'
|
|
284
|
+
: question
|
|
285
|
+
? 'outline'
|
|
286
|
+
: variant;
|
|
287
|
+
const tagSize = question ? 'sentence' : size;
|
|
272
288
|
if (!interactive) {
|
|
273
|
-
return <Tag variant={tagVariant} size={
|
|
289
|
+
return <Tag variant={tagVariant} size={tagSize} icon={resolvedIcon} label={resolvedLabel} className={className} />;
|
|
274
290
|
}
|
|
275
291
|
return (
|
|
276
292
|
<button
|
|
@@ -282,11 +298,19 @@ export function QuickActionChipButton({
|
|
|
282
298
|
onBlur={onHoverEnd}
|
|
283
299
|
aria-pressed={selected || undefined}
|
|
284
300
|
className={cn(
|
|
285
|
-
'
|
|
301
|
+
'rounded-md focus:outline-none focus-visible:ring-2 focus-visible:ring-ods-accent',
|
|
302
|
+
// A question may be longer than a narrow column: it shrinks and clips there, read from its start.
|
|
303
|
+
question ? 'min-w-0 max-w-full text-left' : 'shrink-0',
|
|
286
304
|
className,
|
|
287
305
|
)}
|
|
288
306
|
>
|
|
289
|
-
<Tag
|
|
307
|
+
<Tag
|
|
308
|
+
variant={tagVariant}
|
|
309
|
+
size={tagSize}
|
|
310
|
+
icon={resolvedIcon}
|
|
311
|
+
label={resolvedLabel}
|
|
312
|
+
className={question ? 'max-w-full' : undefined}
|
|
313
|
+
/>
|
|
290
314
|
</button>
|
|
291
315
|
);
|
|
292
316
|
}
|