@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.
Files changed (534) hide show
  1. package/dist/chunk-2NASBO7O.js +1137 -0
  2. package/dist/{chunk-RQRX4YC3.cjs → chunk-2RKFMUNW.cjs} +46 -46
  3. package/dist/chunk-2Y7QZAB2.cjs +158 -0
  4. package/dist/chunk-34I6XI3N.js +136 -0
  5. package/dist/chunk-3K5ZLZE7.js +292 -0
  6. package/dist/chunk-3LU4UFPS.cjs +14 -0
  7. package/dist/{chunk-YBUT4AMG.cjs → chunk-3RKBJT6K.cjs} +8 -6
  8. package/dist/{chunk-LNW45N2C.js → chunk-3SEEGNRE.js} +35 -27
  9. package/dist/{chunk-L6Y6OOKG.cjs → chunk-3UAJLO5U.cjs} +41 -39
  10. package/dist/chunk-4HJRHEXD.cjs +1612 -0
  11. package/dist/{chunk-JPG7OHEG.js → chunk-4QFWGLZO.js} +1 -1
  12. package/dist/chunk-4R2L3DSA.js +14 -0
  13. package/dist/{chunk-36BCTE7D.js → chunk-4UYKNOZG.js} +12 -10
  14. package/dist/{chunk-DA5UDTLG.js → chunk-5SDELRH3.js} +5 -5
  15. package/dist/{chunk-CZSZSDD4.js → chunk-5Y72YQEK.js} +22 -113
  16. package/dist/{chunk-KUC673HM.js → chunk-6T3BTD6Q.js} +204 -982
  17. package/dist/{chunk-F57ECE2I.js → chunk-6YPTUHM7.js} +4 -4
  18. package/dist/{chunk-TDYIREDJ.js → chunk-7HNYYNKE.js} +28 -22
  19. package/dist/{chunk-2G7UYK35.cjs → chunk-7NSU5EQD.cjs} +57 -148
  20. package/dist/chunk-AAYNCJMW.cjs +48 -0
  21. package/dist/{chunk-FXJ3WWUB.js → chunk-ADBE7QF3.js} +5 -252
  22. package/dist/chunk-AECTRMGQ.cjs +334 -0
  23. package/dist/chunk-AGVXKD4K.js +334 -0
  24. package/dist/chunk-AL2GUHAJ.cjs +18 -0
  25. package/dist/{chunk-WMX26HB5.js → chunk-APJZBDQN.js} +12 -12
  26. package/dist/chunk-AUMKE74M.cjs +16 -0
  27. package/dist/chunk-B4NCVYEQ.cjs +292 -0
  28. package/dist/{chunk-2RNB5DTN.cjs → chunk-BXSRTBLU.cjs} +82 -54
  29. package/dist/chunk-CMGFZHCN.js +233 -0
  30. package/dist/chunk-CMZ3QTFQ.js +1207 -0
  31. package/dist/chunk-CPA2CKRZ.cjs +125 -0
  32. package/dist/{chunk-B73373AG.cjs → chunk-CSCJU6YC.cjs} +35 -33
  33. package/dist/chunk-CYUUHFXL.js +41 -0
  34. package/dist/chunk-DC4RTYWK.cjs +1122 -0
  35. package/dist/{chunk-6YKAT7NV.js → chunk-DDWFCWOE.js} +5 -7
  36. package/dist/{chunk-F5FF4DME.js → chunk-EFNKS5W4.js} +322 -428
  37. package/dist/{chunk-2KXTOP6G.cjs → chunk-EOKSKJSS.cjs} +25 -83
  38. package/dist/{chunk-6NTPY5QA.cjs → chunk-ETYLOZOB.cjs} +978 -2413
  39. package/dist/chunk-F5BPGWGT.cjs +931 -0
  40. package/dist/{chunk-4L6XCMOU.js → chunk-FCAVAEHF.js} +8277 -9990
  41. package/dist/chunk-FFT56TYB.cjs +401 -0
  42. package/dist/chunk-FYEJTF5Y.js +125 -0
  43. package/dist/chunk-G3GRYDMS.js +16 -0
  44. package/dist/{chunk-MR3A4MZV.js → chunk-G3OMVCID.js} +13 -7
  45. package/dist/chunk-G6OHIX5C.cjs +100 -0
  46. package/dist/{chunk-UDFRUKLC.cjs → chunk-GEDY7HQI.cjs} +2 -2
  47. package/dist/chunk-GQ7JJUIT.cjs +1207 -0
  48. package/dist/chunk-H3PKYE4N.js +18 -0
  49. package/dist/{chunk-CNWOMQQJ.js → chunk-H5R7U2D2.js} +206 -5
  50. package/dist/{chunk-SEXWHIMS.cjs → chunk-HETQETPV.cjs} +9648 -9680
  51. package/dist/{chunk-Y2GSOUCS.cjs → chunk-HWVUR735.cjs} +2 -2
  52. package/dist/chunk-II4QMH26.cjs +35 -0
  53. package/dist/chunk-ILNN6QRW.js +1612 -0
  54. package/dist/chunk-IYVFSLWJ.js +931 -0
  55. package/dist/{chunk-3AHTOSXJ.cjs → chunk-JGCFRTND.cjs} +23 -17
  56. package/dist/chunk-JHQ334WS.js +655 -0
  57. package/dist/{chunk-WCVZCGK5.cjs → chunk-JO5TLJPM.cjs} +129 -907
  58. package/dist/{chunk-JRU2CXLB.cjs → chunk-JVCAK4W3.cjs} +210 -9
  59. package/dist/chunk-KBJJQFYU.js +1122 -0
  60. package/dist/chunk-KEKCQENI.js +48 -0
  61. package/dist/chunk-KHXZFLIN.cjs +41 -0
  62. package/dist/chunk-KT3U3ZRP.cjs +1137 -0
  63. package/dist/chunk-L2VUINHN.js +35 -0
  64. package/dist/{chunk-P42V6N34.cjs → chunk-L6ZQGWCX.cjs} +4521 -6234
  65. package/dist/{chunk-PLYEKV3N.cjs → chunk-MA4Q5RBP.cjs} +6 -6
  66. package/dist/{chunk-SS5MBHDP.js → chunk-N67XG5GY.js} +10 -8
  67. package/dist/chunk-NPAQSMRY.js +2087 -0
  68. package/dist/{chunk-I3ST4PLM.js → chunk-NQWJAOHO.js} +6 -4
  69. package/dist/{chunk-QAOFMK2A.cjs → chunk-OBZJICEA.cjs} +8 -8
  70. package/dist/{chunk-6IW7TWPV.js → chunk-OPYODNV2.js} +3 -3
  71. package/dist/chunk-P3JMAMHP.js +401 -0
  72. package/dist/chunk-PPXR22YC.cjs +2087 -0
  73. package/dist/chunk-PSVSEN4J.cjs +655 -0
  74. package/dist/{chunk-4UM2ETLM.js → chunk-RBYVFPER.js} +74 -46
  75. package/dist/{chunk-PO33GZVY.js → chunk-ROBQ5TR7.js} +10549 -10581
  76. package/dist/{chunk-ZCLBYT2V.cjs → chunk-T3CLXR43.cjs} +114 -220
  77. package/dist/{chunk-FI6GMDO7.js → chunk-TTVOLEUS.js} +3605 -5040
  78. package/dist/{chunk-LM7TXMLU.cjs → chunk-ULWVKHSI.cjs} +8 -255
  79. package/dist/{chunk-6I4ZAFO2.cjs → chunk-UT3ODMBU.cjs} +15 -15
  80. package/dist/chunk-WANCBTUE.js +71 -0
  81. package/dist/{chunk-BIZNSF3U.cjs → chunk-WBNAEYTQ.cjs} +2 -51
  82. package/dist/chunk-WFPCCBOM.cjs +71 -0
  83. package/dist/chunk-WI6FHKD7.js +158 -0
  84. package/dist/chunk-WMNCVLES.js +100 -0
  85. package/dist/{chunk-UT4YHQZW.js → chunk-WSDT7LYL.js} +0 -49
  86. package/dist/chunk-WVOTC7HW.cjs +136 -0
  87. package/dist/{chunk-AOWDNSTM.cjs → chunk-WWJG4GVG.cjs} +93 -87
  88. package/dist/chunk-XXBLN4BP.cjs +233 -0
  89. package/dist/{chunk-4IBPRIQH.js → chunk-YBQQNDC7.js} +1 -1
  90. package/dist/{chunk-LFFB6EMB.js → chunk-YBS5QGON.js} +70 -128
  91. package/dist/{chunk-NSGXARGJ.cjs → chunk-Z5SWJW5Q.cjs} +125 -117
  92. package/dist/{chunk-OJLR5MEO.cjs → chunk-ZX7SCPLO.cjs} +6 -8
  93. package/dist/cloud-tenants-KZUZGD4A.cjs +117 -0
  94. package/dist/cloud-tenants-OGLVVQ7X.js +117 -0
  95. package/dist/components/case-studies/index.cjs +45 -29
  96. package/dist/components/case-studies/index.js +32 -16
  97. package/dist/components/chat/ask-prompts.d.ts +64 -0
  98. package/dist/components/chat/ask-prompts.d.ts.map +1 -0
  99. package/dist/components/chat/entity-cards/case-study-card.d.ts +6 -3
  100. package/dist/components/chat/entity-cards/case-study-card.d.ts.map +1 -1
  101. package/dist/components/chat/hooks/use-chat-dialog-manager.d.ts +4 -1
  102. package/dist/components/chat/hooks/use-chat-dialog-manager.d.ts.map +1 -1
  103. package/dist/components/chat/hooks/use-unified-chat.d.ts.map +1 -1
  104. package/dist/components/chat/index.cjs +27 -8
  105. package/dist/components/chat/index.d.ts +1 -0
  106. package/dist/components/chat/index.d.ts.map +1 -1
  107. package/dist/components/chat/index.js +57 -38
  108. package/dist/components/chat/quick-action-chip.d.ts +7 -3
  109. package/dist/components/chat/quick-action-chip.d.ts.map +1 -1
  110. package/dist/components/chat/types/component.types.d.ts +4 -0
  111. package/dist/components/chat/types/component.types.d.ts.map +1 -1
  112. package/dist/components/chat/types/unified-chat-state.types.d.ts +12 -0
  113. package/dist/components/chat/types/unified-chat-state.types.d.ts.map +1 -1
  114. package/dist/components/contact/index.cjs +29 -13
  115. package/dist/components/contact/index.js +28 -12
  116. package/dist/components/docs/index.cjs +33 -16
  117. package/dist/components/docs/index.js +33 -16
  118. package/dist/components/docs/use-scroll-spy.d.ts +23 -1
  119. package/dist/components/docs/use-scroll-spy.d.ts.map +1 -1
  120. package/dist/components/embeds/index.cjs +29 -13
  121. package/dist/components/embeds/index.js +28 -12
  122. package/dist/components/faq/faq-section.d.ts +8 -1
  123. package/dist/components/faq/faq-section.d.ts.map +1 -1
  124. package/dist/components/faq/index.cjs +30 -14
  125. package/dist/components/faq/index.js +29 -13
  126. package/dist/components/features/array-entry-manager.d.ts +5 -1
  127. package/dist/components/features/array-entry-manager.d.ts.map +1 -1
  128. package/dist/components/features/board/board.d.ts +2 -0
  129. package/dist/components/features/board/board.d.ts.map +1 -1
  130. package/dist/components/features/board/ticket-card.d.ts.map +1 -1
  131. package/dist/components/features/board/touch-board.d.ts +1 -1
  132. package/dist/components/features/board/touch-board.d.ts.map +1 -1
  133. package/dist/components/features/board/types.d.ts +3 -0
  134. package/dist/components/features/board/types.d.ts.map +1 -1
  135. package/dist/components/features/board/use-board-collapse.d.ts +6 -1
  136. package/dist/components/features/board/use-board-collapse.d.ts.map +1 -1
  137. package/dist/components/features/capability-explorer.d.ts +94 -0
  138. package/dist/components/features/capability-explorer.d.ts.map +1 -0
  139. package/dist/components/features/cloud-tenants/index.d.ts +14 -0
  140. package/dist/components/features/cloud-tenants/index.d.ts.map +1 -0
  141. package/dist/components/features/cloud-tenants/tenant-access-cell.d.ts +9 -0
  142. package/dist/components/features/cloud-tenants/tenant-access-cell.d.ts.map +1 -0
  143. package/dist/components/features/cloud-tenants/tenant-cell.d.ts +8 -0
  144. package/dist/components/features/cloud-tenants/tenant-cell.d.ts.map +1 -0
  145. package/dist/components/features/cloud-tenants/tenant-customer-cell.d.ts +9 -0
  146. package/dist/components/features/cloud-tenants/tenant-customer-cell.d.ts.map +1 -0
  147. package/dist/components/features/cloud-tenants/tenant-presentation.d.ts +42 -0
  148. package/dist/components/features/cloud-tenants/tenant-presentation.d.ts.map +1 -0
  149. package/dist/components/features/cloud-tenants/tenant-row.d.ts +22 -0
  150. package/dist/components/features/cloud-tenants/tenant-row.d.ts.map +1 -0
  151. package/dist/components/features/cloud-tenants/tenants-table-columns.d.ts +42 -0
  152. package/dist/components/features/cloud-tenants/tenants-table-columns.d.ts.map +1 -0
  153. package/dist/components/features/cloud-tenants/tenants-table-view.d.ts +26 -0
  154. package/dist/components/features/cloud-tenants/tenants-table-view.d.ts.map +1 -0
  155. package/dist/components/features/devices/device-last-online.d.ts +3 -0
  156. package/dist/components/features/devices/device-last-online.d.ts.map +1 -0
  157. package/dist/components/features/devices/device-name.d.ts +42 -0
  158. package/dist/components/features/devices/device-name.d.ts.map +1 -0
  159. package/dist/components/features/devices/device-selector/device-selection-mode-radio.d.ts +26 -0
  160. package/dist/components/features/devices/device-selector/device-selection-mode-radio.d.ts.map +1 -0
  161. package/dist/components/features/devices/device-selector/device-selector-skeleton.d.ts +25 -0
  162. package/dist/components/features/devices/device-selector/device-selector-skeleton.d.ts.map +1 -0
  163. package/dist/components/features/devices/device-selector/device-selector.d.ts +38 -0
  164. package/dist/components/features/devices/device-selector/device-selector.d.ts.map +1 -0
  165. package/dist/components/features/devices/device-selector/device-selector.types.d.ts +133 -0
  166. package/dist/components/features/devices/device-selector/device-selector.types.d.ts.map +1 -0
  167. package/dist/components/features/devices/device-selector/narrowing.d.ts +13 -0
  168. package/dist/components/features/devices/device-selector/narrowing.d.ts.map +1 -0
  169. package/dist/components/features/devices/device-selector/use-device-selector.d.ts +17 -0
  170. package/dist/components/features/devices/device-selector/use-device-selector.d.ts.map +1 -0
  171. package/dist/components/features/devices/device-status.d.ts +23 -0
  172. package/dist/components/features/devices/device-status.d.ts.map +1 -0
  173. package/dist/components/features/devices/device-statuses.d.ts +40 -0
  174. package/dist/components/features/devices/device-statuses.d.ts.map +1 -0
  175. package/dist/components/features/devices/device-tags-filter-button.d.ts +22 -0
  176. package/dist/components/features/devices/device-tags-filter-button.d.ts.map +1 -0
  177. package/dist/components/features/devices/device-type-icon.d.ts +11 -0
  178. package/dist/components/features/devices/device-type-icon.d.ts.map +1 -0
  179. package/dist/components/features/devices/device-type-tile.d.ts +9 -0
  180. package/dist/components/features/devices/device-type-tile.d.ts.map +1 -0
  181. package/dist/components/features/devices/devices-filter-toolbar.d.ts +46 -0
  182. package/dist/components/features/devices/devices-filter-toolbar.d.ts.map +1 -0
  183. package/dist/components/features/devices/devices-grid-filters.d.ts +25 -0
  184. package/dist/components/features/devices/devices-grid-filters.d.ts.map +1 -0
  185. package/dist/components/features/devices/devices-grid.d.ts +12 -0
  186. package/dist/components/features/devices/devices-grid.d.ts.map +1 -0
  187. package/dist/components/features/devices/devices-list.d.ts +131 -0
  188. package/dist/components/features/devices/devices-list.d.ts.map +1 -0
  189. package/dist/components/features/devices/devices-panel-header.d.ts +46 -0
  190. package/dist/components/features/devices/devices-panel-header.d.ts.map +1 -0
  191. package/dist/components/features/devices/devices-panel-view.d.ts +79 -0
  192. package/dist/components/features/devices/devices-panel-view.d.ts.map +1 -0
  193. package/dist/components/features/devices/devices-table-columns.d.ts +76 -0
  194. package/dist/components/features/devices/devices-table-columns.d.ts.map +1 -0
  195. package/dist/components/features/devices/devices-view-config.d.ts +25 -0
  196. package/dist/components/features/devices/devices-view-config.d.ts.map +1 -0
  197. package/dist/components/features/devices/index.d.ts +24 -0
  198. package/dist/components/features/devices/index.d.ts.map +1 -0
  199. package/dist/components/features/devices/types.d.ts +68 -0
  200. package/dist/components/features/devices/types.d.ts.map +1 -0
  201. package/dist/components/features/devices/use-tag-filter-modal.d.ts +50 -0
  202. package/dist/components/features/devices/use-tag-filter-modal.d.ts.map +1 -0
  203. package/dist/components/features/index.cjs +227 -12
  204. package/dist/components/features/index.d.ts +7 -0
  205. package/dist/components/features/index.d.ts.map +1 -1
  206. package/dist/components/features/index.js +266 -51
  207. package/dist/components/features/knowledge-base/index.d.ts +7 -0
  208. package/dist/components/features/knowledge-base/index.d.ts.map +1 -0
  209. package/dist/components/features/knowledge-base/knowledge-base-article-view.d.ts +44 -0
  210. package/dist/components/features/knowledge-base/knowledge-base-article-view.d.ts.map +1 -0
  211. package/dist/components/features/knowledge-base/knowledge-base-item-icon.d.ts +13 -0
  212. package/dist/components/features/knowledge-base/knowledge-base-item-icon.d.ts.map +1 -0
  213. package/dist/components/features/knowledge-base/knowledge-base-status.d.ts +8 -0
  214. package/dist/components/features/knowledge-base/knowledge-base-status.d.ts.map +1 -0
  215. package/dist/components/features/knowledge-base/knowledge-base-table.d.ts +52 -0
  216. package/dist/components/features/knowledge-base/knowledge-base-table.d.ts.map +1 -0
  217. package/dist/components/features/logs/index.d.ts +12 -0
  218. package/dist/components/features/logs/index.d.ts.map +1 -0
  219. package/dist/components/features/logs/log-drawer.d.ts +29 -0
  220. package/dist/components/features/logs/log-drawer.d.ts.map +1 -0
  221. package/dist/components/features/logs/log-source-labels.d.ts +11 -0
  222. package/dist/components/features/logs/log-source-labels.d.ts.map +1 -0
  223. package/dist/components/features/logs/logs-page-view.d.ts +32 -0
  224. package/dist/components/features/logs/logs-page-view.d.ts.map +1 -0
  225. package/dist/components/features/logs/logs-table-columns.d.ts +15 -0
  226. package/dist/components/features/logs/logs-table-columns.d.ts.map +1 -0
  227. package/dist/components/features/logs/logs-table-view.d.ts +64 -0
  228. package/dist/components/features/logs/logs-table-view.d.ts.map +1 -0
  229. package/dist/components/features/logs/types.d.ts +52 -0
  230. package/dist/components/features/logs/types.d.ts.map +1 -0
  231. package/dist/components/features/policies/compute-policy-summary.d.ts +37 -0
  232. package/dist/components/features/policies/compute-policy-summary.d.ts.map +1 -0
  233. package/dist/components/features/policies/index.d.ts +8 -0
  234. package/dist/components/features/policies/index.d.ts.map +1 -0
  235. package/dist/components/features/policies/policies-table.d.ts +34 -0
  236. package/dist/components/features/policies/policies-table.d.ts.map +1 -0
  237. package/dist/components/features/policies/policy-summary-cards.d.ts +17 -0
  238. package/dist/components/features/policies/policy-summary-cards.d.ts.map +1 -0
  239. package/dist/components/features/policies/policy-table-row.d.ts +37 -0
  240. package/dist/components/features/policies/policy-table-row.d.ts.map +1 -0
  241. package/dist/components/features/remote-session/index.d.ts +8 -0
  242. package/dist/components/features/remote-session/index.d.ts.map +1 -1
  243. package/dist/components/features/remote-session/remote-desktop-chat-message-row.d.ts +21 -0
  244. package/dist/components/features/remote-session/remote-desktop-chat-message-row.d.ts.map +1 -0
  245. package/dist/components/features/remote-session/remote-desktop-chat-panel.d.ts +31 -0
  246. package/dist/components/features/remote-session/remote-desktop-chat-panel.d.ts.map +1 -0
  247. package/dist/components/features/remote-session/remote-desktop-fullscreen-toolbar.d.ts +21 -0
  248. package/dist/components/features/remote-session/remote-desktop-fullscreen-toolbar.d.ts.map +1 -0
  249. package/dist/components/features/remote-session/remote-desktop-view.d.ts +50 -0
  250. package/dist/components/features/remote-session/remote-desktop-view.d.ts.map +1 -0
  251. package/dist/components/features/software/index.d.ts +8 -0
  252. package/dist/components/features/software/index.d.ts.map +1 -0
  253. package/dist/components/features/software/package-managers.d.ts +30 -0
  254. package/dist/components/features/software/package-managers.d.ts.map +1 -0
  255. package/dist/components/features/software/package-search-field-placeholder.d.ts +7 -0
  256. package/dist/components/features/software/package-search-field-placeholder.d.ts.map +1 -0
  257. package/dist/components/features/software/schedule-fields.d.ts +34 -0
  258. package/dist/components/features/software/schedule-fields.d.ts.map +1 -0
  259. package/dist/components/features/software/software-action-copy.d.ts +25 -0
  260. package/dist/components/features/software/software-action-copy.d.ts.map +1 -0
  261. package/dist/components/features/software/software-action-form.d.ts +71 -0
  262. package/dist/components/features/software/software-action-form.d.ts.map +1 -0
  263. package/dist/components/features/software/software-row-fields.d.ts +23 -0
  264. package/dist/components/features/software/software-row-fields.d.ts.map +1 -0
  265. package/dist/components/features/software/software-row.d.ts +18 -0
  266. package/dist/components/features/software/software-row.d.ts.map +1 -0
  267. package/dist/components/features/sortable-list/index.d.ts +1 -0
  268. package/dist/components/features/sortable-list/index.d.ts.map +1 -1
  269. package/dist/components/features/sortable-list/sortable-drag-handle.d.ts +21 -0
  270. package/dist/components/features/sortable-list/sortable-drag-handle.d.ts.map +1 -0
  271. package/dist/components/help-center-pages/index.cjs +133 -114
  272. package/dist/components/help-center-pages/index.js +58 -39
  273. package/dist/components/index.cjs +320 -82
  274. package/dist/components/index.js +451 -213
  275. package/dist/components/layout/page-heading.d.ts +12 -3
  276. package/dist/components/layout/page-heading.d.ts.map +1 -1
  277. package/dist/components/meeting-scheduler/index.cjs +120 -98
  278. package/dist/components/meeting-scheduler/index.js +50 -28
  279. package/dist/components/navigation/index.cjs +36 -17
  280. package/dist/components/navigation/index.d.ts +3 -0
  281. package/dist/components/navigation/index.d.ts.map +1 -1
  282. package/dist/components/navigation/index.js +36 -17
  283. package/dist/components/navigation/mingo-ai-button.d.ts +23 -10
  284. package/dist/components/navigation/mingo-ai-button.d.ts.map +1 -1
  285. package/dist/components/navigation/sticky-section-nav.d.ts +14 -1
  286. package/dist/components/navigation/sticky-section-nav.d.ts.map +1 -1
  287. package/dist/components/onboarding-guides/index.cjs +32 -16
  288. package/dist/components/onboarding-guides/index.js +31 -15
  289. package/dist/components/product-demo/cast.d.ts +58 -0
  290. package/dist/components/product-demo/cast.d.ts.map +1 -0
  291. package/dist/components/product-demo/fixtures/cloud-tenants.d.ts +10 -0
  292. package/dist/components/product-demo/fixtures/cloud-tenants.d.ts.map +1 -0
  293. package/dist/components/product-demo/fixtures/devices.d.ts +14 -0
  294. package/dist/components/product-demo/fixtures/devices.d.ts.map +1 -0
  295. package/dist/components/product-demo/fixtures/knowledge.d.ts +14 -0
  296. package/dist/components/product-demo/fixtures/knowledge.d.ts.map +1 -0
  297. package/dist/components/product-demo/fixtures/logs.d.ts +15 -0
  298. package/dist/components/product-demo/fixtures/logs.d.ts.map +1 -0
  299. package/dist/components/product-demo/fixtures/policies.d.ts +13 -0
  300. package/dist/components/product-demo/fixtures/policies.d.ts.map +1 -0
  301. package/dist/components/product-demo/fixtures/remote-session.d.ts +20 -0
  302. package/dist/components/product-demo/fixtures/remote-session.d.ts.map +1 -0
  303. package/dist/components/product-demo/fixtures/shared.d.ts +156 -0
  304. package/dist/components/product-demo/fixtures/shared.d.ts.map +1 -0
  305. package/dist/components/product-demo/fixtures/software-update.d.ts +19 -0
  306. package/dist/components/product-demo/fixtures/software-update.d.ts.map +1 -0
  307. package/dist/components/product-demo/fixtures/tickets-board.d.ts +8 -0
  308. package/dist/components/product-demo/fixtures/tickets-board.d.ts.map +1 -0
  309. package/dist/components/product-demo/index.cjs +112 -0
  310. package/dist/components/product-demo/index.d.ts +6 -0
  311. package/dist/components/product-demo/index.d.ts.map +1 -0
  312. package/dist/components/product-demo/index.js +112 -0
  313. package/dist/components/product-demo/product-screen.d.ts +22 -0
  314. package/dist/components/product-demo/product-screen.d.ts.map +1 -0
  315. package/dist/components/product-demo/registry.d.ts +13 -0
  316. package/dist/components/product-demo/registry.d.ts.map +1 -0
  317. package/dist/components/product-demo/screen-keys.cjs +25 -0
  318. package/dist/components/product-demo/screen-keys.d.ts +27 -0
  319. package/dist/components/product-demo/screen-keys.d.ts.map +1 -0
  320. package/dist/components/product-demo/screen-keys.js +20 -0
  321. package/dist/components/product-demo/screens/cloud-tenants.d.ts +8 -0
  322. package/dist/components/product-demo/screens/cloud-tenants.d.ts.map +1 -0
  323. package/dist/components/product-demo/screens/devices.d.ts +10 -0
  324. package/dist/components/product-demo/screens/devices.d.ts.map +1 -0
  325. package/dist/components/product-demo/screens/knowledge.d.ts +9 -0
  326. package/dist/components/product-demo/screens/knowledge.d.ts.map +1 -0
  327. package/dist/components/product-demo/screens/logs.d.ts +4 -0
  328. package/dist/components/product-demo/screens/logs.d.ts.map +1 -0
  329. package/dist/components/product-demo/screens/policies.d.ts +8 -0
  330. package/dist/components/product-demo/screens/policies.d.ts.map +1 -0
  331. package/dist/components/product-demo/screens/remote-desktop-picture.d.ts +11 -0
  332. package/dist/components/product-demo/screens/remote-desktop-picture.d.ts.map +1 -0
  333. package/dist/components/product-demo/screens/remote-session.d.ts +8 -0
  334. package/dist/components/product-demo/screens/remote-session.d.ts.map +1 -0
  335. package/dist/components/product-demo/screens/software-update.d.ts +12 -0
  336. package/dist/components/product-demo/screens/software-update.d.ts.map +1 -0
  337. package/dist/components/product-demo/screens/tickets-board.d.ts +4 -0
  338. package/dist/components/product-demo/screens/tickets-board.d.ts.map +1 -0
  339. package/dist/components/product-demo/types.d.ts +9 -0
  340. package/dist/components/product-demo/types.d.ts.map +1 -0
  341. package/dist/components/related-content/index.cjs +14 -8
  342. package/dist/components/related-content/index.js +13 -7
  343. package/dist/components/tickets/index.cjs +36 -20
  344. package/dist/components/tickets/index.js +35 -19
  345. package/dist/components/ui/file-manager/index.cjs +38 -34
  346. package/dist/components/ui/file-manager/index.js +8 -4
  347. package/dist/components/ui/index.cjs +57 -17
  348. package/dist/components/ui/index.d.ts +1 -0
  349. package/dist/components/ui/index.d.ts.map +1 -1
  350. package/dist/components/ui/index.js +141 -101
  351. package/dist/components/ui/product-screen-frame.d.ts +45 -0
  352. package/dist/components/ui/product-screen-frame.d.ts.map +1 -0
  353. package/dist/components/ui/radio-group.d.ts +5 -0
  354. package/dist/components/ui/radio-group.d.ts.map +1 -1
  355. package/dist/components/ui/snap-carousel.d.ts +11 -1
  356. package/dist/components/ui/snap-carousel.d.ts.map +1 -1
  357. package/dist/components/ui/tag.d.ts +1 -1
  358. package/dist/components/ui/tag.d.ts.map +1 -1
  359. package/dist/devices-LBMG42K6.js +81 -0
  360. package/dist/devices-YGYJIXQY.cjs +81 -0
  361. package/dist/hooks/index.cjs +17 -8
  362. package/dist/hooks/index.js +32 -23
  363. package/dist/hooks/ui/index.d.ts +1 -0
  364. package/dist/hooks/ui/index.d.ts.map +1 -1
  365. package/dist/hooks/ui/use-header-height.d.ts +12 -0
  366. package/dist/hooks/ui/use-header-height.d.ts.map +1 -1
  367. package/dist/hooks/ui/use-sticky-toolbar.d.ts +29 -0
  368. package/dist/hooks/ui/use-sticky-toolbar.d.ts.map +1 -0
  369. package/dist/hooks/use-location-hash.d.ts +2 -2
  370. package/dist/hooks/use-location-hash.d.ts.map +1 -1
  371. package/dist/hooks/use-scroll-to-hash.d.ts +7 -0
  372. package/dist/hooks/use-scroll-to-hash.d.ts.map +1 -1
  373. package/dist/index.cjs +276 -25
  374. package/dist/index.js +729 -478
  375. package/dist/knowledge-H5BIWJVI.js +108 -0
  376. package/dist/knowledge-KTCVJIWN.cjs +108 -0
  377. package/dist/logs-DB5Z7M5Q.js +216 -0
  378. package/dist/logs-RVCC2UQW.cjs +216 -0
  379. package/dist/policies-EWUULFBR.js +121 -0
  380. package/dist/policies-HV4IQCBV.cjs +121 -0
  381. package/dist/remote-session-GSGZOFDX.js +196 -0
  382. package/dist/remote-session-R6VAFESR.cjs +196 -0
  383. package/dist/software-update-6PXKRKBT.js +179 -0
  384. package/dist/software-update-D4OVSWSG.cjs +179 -0
  385. package/dist/tickets-board-BHLPAVNJ.cjs +137 -0
  386. package/dist/tickets-board-PYDNELSK.js +137 -0
  387. package/dist/types/case-study.d.ts +15 -1
  388. package/dist/types/case-study.d.ts.map +1 -1
  389. package/dist/utils/date-utils.d.ts +5 -0
  390. package/dist/utils/date-utils.d.ts.map +1 -1
  391. package/dist/utils/index.cjs +45 -2
  392. package/dist/utils/index.d.ts +2 -1
  393. package/dist/utils/index.d.ts.map +1 -1
  394. package/dist/utils/index.js +41 -3
  395. package/dist/utils/open-in-new-tab.d.ts +7 -0
  396. package/dist/utils/open-in-new-tab.d.ts.map +1 -0
  397. package/dist/utils/same-page-hash-nav.d.ts +31 -0
  398. package/dist/utils/same-page-hash-nav.d.ts.map +1 -1
  399. package/dist/utils/scroll-into-view.d.ts +14 -1
  400. package/dist/utils/scroll-into-view.d.ts.map +1 -1
  401. package/package.json +13 -1
  402. package/src/components/chat/ask-prompts.tsx +226 -0
  403. package/src/components/chat/embeddable-chat.tsx +38 -2
  404. package/src/components/chat/entity-cards/case-study-card.tsx +122 -46
  405. package/src/components/chat/hooks/use-chat-dialog-manager.ts +22 -4
  406. package/src/components/chat/hooks/use-unified-chat.ts +1 -0
  407. package/src/components/chat/index.ts +1 -0
  408. package/src/components/chat/quick-action-chip.tsx +33 -9
  409. package/src/components/chat/types/component.types.ts +4 -0
  410. package/src/components/chat/types/unified-chat-state.types.ts +13 -0
  411. package/src/components/docs/use-scroll-spy.ts +93 -18
  412. package/src/components/faq/faq-section.tsx +82 -43
  413. package/src/components/features/array-entry-manager.tsx +10 -1
  414. package/src/components/features/board/board.tsx +4 -1
  415. package/src/components/features/board/ticket-card.tsx +11 -1
  416. package/src/components/features/board/touch-board.tsx +2 -1
  417. package/src/components/features/board/types.ts +3 -0
  418. package/src/components/features/board/use-board-collapse.ts +7 -2
  419. package/src/components/features/capability-explorer.tsx +412 -0
  420. package/src/components/features/cloud-tenants/index.ts +28 -0
  421. package/src/components/features/cloud-tenants/tenant-access-cell.tsx +24 -0
  422. package/src/components/features/cloud-tenants/tenant-cell.tsx +26 -0
  423. package/src/components/features/cloud-tenants/tenant-customer-cell.tsx +27 -0
  424. package/src/components/features/cloud-tenants/tenant-presentation.ts +111 -0
  425. package/src/components/features/cloud-tenants/tenant-row.ts +21 -0
  426. package/src/components/features/cloud-tenants/tenants-table-columns.ts +30 -0
  427. package/src/components/features/cloud-tenants/tenants-table-view.tsx +142 -0
  428. package/src/components/features/devices/device-last-online.ts +6 -0
  429. package/src/components/features/devices/device-name.ts +51 -0
  430. package/src/components/features/devices/device-selector/device-selection-mode-radio.tsx +107 -0
  431. package/src/components/features/devices/device-selector/device-selector-skeleton.tsx +32 -0
  432. package/src/components/features/devices/device-selector/device-selector.tsx +799 -0
  433. package/src/components/features/devices/device-selector/device-selector.types.ts +138 -0
  434. package/src/components/features/devices/device-selector/narrowing.ts +33 -0
  435. package/src/components/features/devices/device-selector/use-device-selector.ts +51 -0
  436. package/src/components/features/devices/device-status.ts +102 -0
  437. package/src/components/features/devices/device-statuses.ts +88 -0
  438. package/src/components/features/devices/device-tags-filter-button.tsx +49 -0
  439. package/src/components/features/devices/device-type-icon.tsx +29 -0
  440. package/src/components/features/devices/device-type-tile.tsx +17 -0
  441. package/src/components/features/devices/devices-filter-toolbar.tsx +114 -0
  442. package/src/components/features/devices/devices-grid-filters.tsx +99 -0
  443. package/src/components/features/devices/devices-grid.tsx +86 -0
  444. package/src/components/features/devices/devices-list.tsx +357 -0
  445. package/src/components/features/devices/devices-panel-header.tsx +97 -0
  446. package/src/components/features/devices/devices-panel-view.tsx +261 -0
  447. package/src/components/features/devices/devices-table-columns.tsx +356 -0
  448. package/src/components/features/devices/devices-view-config.tsx +38 -0
  449. package/src/components/features/devices/index.ts +89 -0
  450. package/src/components/features/devices/types.ts +74 -0
  451. package/src/components/features/devices/use-tag-filter-modal.ts +109 -0
  452. package/src/components/features/index.ts +9 -0
  453. package/src/components/features/knowledge-base/index.ts +19 -0
  454. package/src/components/features/knowledge-base/knowledge-base-article-view.tsx +134 -0
  455. package/src/components/features/knowledge-base/knowledge-base-item-icon.ts +14 -0
  456. package/src/components/features/knowledge-base/knowledge-base-status.ts +12 -0
  457. package/src/components/features/knowledge-base/knowledge-base-table.tsx +180 -0
  458. package/src/components/features/logs/index.ts +20 -0
  459. package/src/components/features/logs/log-drawer.tsx +138 -0
  460. package/src/components/features/logs/log-source-labels.ts +25 -0
  461. package/src/components/features/logs/logs-page-view.tsx +100 -0
  462. package/src/components/features/logs/logs-table-columns.ts +16 -0
  463. package/src/components/features/logs/logs-table-view.tsx +509 -0
  464. package/src/components/features/logs/types.ts +71 -0
  465. package/src/components/features/policies/compute-policy-summary.ts +115 -0
  466. package/src/components/features/policies/index.ts +14 -0
  467. package/src/components/features/policies/policies-table.tsx +235 -0
  468. package/src/components/features/policies/policy-summary-cards.tsx +69 -0
  469. package/src/components/features/policies/policy-table-row.ts +37 -0
  470. package/src/components/features/remote-session/index.ts +8 -0
  471. package/src/components/features/remote-session/remote-desktop-chat-message-row.tsx +56 -0
  472. package/src/components/features/remote-session/remote-desktop-chat-panel.tsx +102 -0
  473. package/src/components/features/remote-session/remote-desktop-fullscreen-toolbar.tsx +119 -0
  474. package/src/components/features/remote-session/remote-desktop-view.tsx +209 -0
  475. package/src/components/features/software/index.ts +39 -0
  476. package/src/components/features/software/package-managers.ts +54 -0
  477. package/src/components/features/software/package-search-field-placeholder.tsx +23 -0
  478. package/src/components/features/software/schedule-fields.tsx +105 -0
  479. package/src/components/features/software/software-action-copy.ts +70 -0
  480. package/src/components/features/software/software-action-form.tsx +199 -0
  481. package/src/components/features/software/software-row-fields.tsx +105 -0
  482. package/src/components/features/software/software-row.ts +22 -0
  483. package/src/components/features/sortable-list/index.ts +1 -0
  484. package/src/components/features/sortable-list/sortable-drag-handle.tsx +41 -0
  485. package/src/components/layout/page-heading.tsx +23 -6
  486. package/src/components/navigation/index.ts +5 -0
  487. package/src/components/navigation/mingo-ai-button.tsx +37 -13
  488. package/src/components/navigation/sticky-section-nav.tsx +99 -1
  489. package/src/components/product-demo/cast.tsx +78 -0
  490. package/src/components/product-demo/fixtures/cloud-tenants.ts +63 -0
  491. package/src/components/product-demo/fixtures/devices.ts +87 -0
  492. package/src/components/product-demo/fixtures/knowledge.ts +48 -0
  493. package/src/components/product-demo/fixtures/logs.ts +103 -0
  494. package/src/components/product-demo/fixtures/policies.ts +77 -0
  495. package/src/components/product-demo/fixtures/remote-session.ts +65 -0
  496. package/src/components/product-demo/fixtures/shared.ts +53 -0
  497. package/src/components/product-demo/fixtures/software-update.ts +63 -0
  498. package/src/components/product-demo/fixtures/tickets-board.ts +100 -0
  499. package/src/components/product-demo/index.ts +7 -0
  500. package/src/components/product-demo/product-screen.tsx +94 -0
  501. package/src/components/product-demo/registry.ts +20 -0
  502. package/src/components/product-demo/screen-keys.ts +31 -0
  503. package/src/components/product-demo/screens/cloud-tenants.tsx +23 -0
  504. package/src/components/product-demo/screens/devices.tsx +41 -0
  505. package/src/components/product-demo/screens/knowledge.tsx +27 -0
  506. package/src/components/product-demo/screens/logs.tsx +113 -0
  507. package/src/components/product-demo/screens/policies.tsx +29 -0
  508. package/src/components/product-demo/screens/remote-desktop-picture.tsx +118 -0
  509. package/src/components/product-demo/screens/remote-session.tsx +46 -0
  510. package/src/components/product-demo/screens/software-update.tsx +97 -0
  511. package/src/components/product-demo/screens/tickets-board.tsx +28 -0
  512. package/src/components/product-demo/types.ts +10 -0
  513. package/src/components/ui/index.ts +1 -0
  514. package/src/components/ui/product-screen-frame.tsx +136 -0
  515. package/src/components/ui/radio-group.tsx +16 -4
  516. package/src/components/ui/snap-carousel.tsx +26 -1
  517. package/src/components/ui/tag.tsx +5 -0
  518. package/src/hooks/ui/index.ts +1 -0
  519. package/src/hooks/ui/use-header-height.ts +51 -2
  520. package/src/hooks/ui/use-sticky-toolbar.ts +60 -0
  521. package/src/hooks/use-location-hash.ts +9 -5
  522. package/src/hooks/use-scroll-to-hash.ts +9 -1
  523. package/src/types/case-study.ts +21 -1
  524. package/src/utils/date-utils.ts +8 -1
  525. package/src/utils/index.ts +5 -0
  526. package/src/utils/open-in-new-tab.ts +12 -0
  527. package/src/utils/same-page-hash-nav.ts +57 -0
  528. package/src/utils/scroll-into-view.ts +21 -5
  529. package/dist/chunk-BM5MVGH3.cjs +0 -499
  530. package/dist/chunk-CUME3VTQ.js +0 -144
  531. package/dist/chunk-CZ7Y7UG4.js +0 -732
  532. package/dist/chunk-FLKJYMVB.js +0 -499
  533. package/dist/chunk-OF6GEI5A.cjs +0 -144
  534. package/dist/chunk-UVTD52MD.cjs +0 -732
@@ -0,0 +1,133 @@
1
+ import type { ReactNode } from 'react';
2
+ import type { ColumnFiltersState } from '../../../ui';
3
+ import type { DeviceFilters, DeviceRow } from '../types';
4
+ export type SubTab = 'available' | 'selected';
5
+ /** The two ways a consumer can target devices, the picker's top-level radio. */
6
+ export type DeviceSelectionMode = 'specific' | 'criteria';
7
+ /** The narrowing the picker is showing, in the component's own vocabulary. */
8
+ export interface DeviceSelectorNarrowing {
9
+ /** Column funnels (status / customer / os), TanStack-shaped. */
10
+ columnFilters: ColumnFiltersState;
11
+ /** Tag chips in the search bar, `key:value`. */
12
+ tags: string[];
13
+ }
14
+ /**
15
+ * Hands the picker's state to a parent that answers it from the server.
16
+ *
17
+ * Present ⇒ the component stops deriving anything from the `devices` array:
18
+ * `devices` IS the current tab's page, the Available/Selected split is two
19
+ * server queries rather than one list partitioned by `selectedIds`, and search,
20
+ * filters and the bulk actions are questions for the backend. Absent ⇒ every
21
+ * bit of that stays client-side exactly as before, which is what the other
22
+ * consumers (Run/Test Script, monitoring) rely on.
23
+ *
24
+ * The row action is add-or-remove by tab, not a toggle: with only a page of the
25
+ * assignment in hand, "is this one selected?" is not a question the client can
26
+ * answer. Selected always offers remove; on Available the row flips off
27
+ * `selectedIds`, which the parent fills from the connection's own per-row
28
+ * "already assigned" flag rather than from the page it holds.
29
+ */
30
+ export interface DeviceSelectorServer<T extends DeviceRow = DeviceRow> {
31
+ activeTab: SubTab;
32
+ onTabChange: (tab: SubTab) => void;
33
+ /** Search box value. The parent debounces it into its query. */
34
+ search: string;
35
+ onSearchChange: (value: string) => void;
36
+ narrowing: DeviceSelectorNarrowing;
37
+ onNarrowingChange: (next: DeviceSelectorNarrowing) => void;
38
+ /**
39
+ * Options for the column funnels. Rows are paged, so options derived from
40
+ * them would only ever offer what page one happens to contain.
41
+ */
42
+ filterOptions?: DeviceFilters | null;
43
+ /** Size of the whole assignment, the "Selected Devices (N)" label. */
44
+ selectedCount: number;
45
+ /** Server-side count for the list on screen, for the header's row count. */
46
+ totalCount?: number;
47
+ /** Row actions. Committed immediately; there is no Save to batch them into. */
48
+ onAdd: (device: T) => void;
49
+ onRemove: (device: T) => void;
50
+ /** Header bulk actions, resolved server-side over the current narrowing. */
51
+ onAddAll: () => void;
52
+ onRemoveAll: () => void;
53
+ }
54
+ export interface DeviceSelectorInfiniteScroll {
55
+ hasNextPage: boolean;
56
+ isFetchingNextPage: boolean;
57
+ onLoadMore: () => void;
58
+ skeletonRows: number;
59
+ }
60
+ export interface DeviceSelectorProps<T extends DeviceRow = DeviceRow> {
61
+ /** Devices to display. Consumer controls fetching and pre-filtering. */
62
+ devices: T[];
63
+ /** Whether the device list is loading. */
64
+ loading: boolean;
65
+ /**
66
+ * Currently selected device keys. Optional so a skeleton can render the real
67
+ * picker with nothing selected, the component falls back to an empty set and
68
+ * a no-op change handler. Every consumer a user can act on passes both.
69
+ *
70
+ * In `server` mode this is not the picker's own state, the parent fills it
71
+ * with the rows the backend reports as already assigned, so the Available tab
72
+ * pre-checks them instead of offering to add what is already in.
73
+ */
74
+ selectedIds?: Set<string>;
75
+ /** Called when selection changes. Optional for the same reason as `selectedIds`. */
76
+ onSelectionChange?: (ids: Set<string>) => void;
77
+ /** Extract the unique string key for selection from a device. Defaults to `d.machineId ?? d.id`. */
78
+ getDeviceKey?: (device: T) => string | undefined;
79
+ /** Infinite scroll config for the available tab. */
80
+ infiniteScroll?: DeviceSelectorInfiniteScroll;
81
+ /** Disable all interactions (e.g. during save). */
82
+ disabled?: boolean;
83
+ /** Show selection mode radio group. Default: true. */
84
+ showSelectionModeRadio?: boolean;
85
+ /**
86
+ * Controls the selection-mode radio. Passing it is what ENABLES the "by
87
+ * criteria" option, a consumer that leaves it out gets the uncontrolled
88
+ * radio with criteria disabled and tagged "Coming Soon", which is what the
89
+ * monitoring and run-script pages still want.
90
+ */
91
+ selectionMode?: DeviceSelectionMode;
92
+ onSelectionModeChange?: (mode: DeviceSelectionMode) => void;
93
+ /**
94
+ * The rule editor, rendered in place of the whole picker card while
95
+ * `selectionMode` is `'criteria'` (design 460:85294 drops the card frame
96
+ * there, fields and table sit straight on the page).
97
+ *
98
+ * The table below it then shows what the rule currently resolves to: no row
99
+ * actions, no search box, no column funnels, the rule IS the narrowing, and a
100
+ * second one layered on top would make the row count answer a different
101
+ * question than the one the user is editing.
102
+ */
103
+ criteriaContent?: ReactNode;
104
+ /** Extra content rendered above the selection radio / tabs (e.g. ScheduleInfoBar). */
105
+ headerContent?: ReactNode;
106
+ /** Table rowKey. Default: "id". */
107
+ rowKey?: string;
108
+ /** "replace" replaces entire selection on Add All; "merge" adds to existing. Default: "merge". */
109
+ addAllBehavior?: 'replace' | 'merge';
110
+ /** Allow only one device to be selected at a time. Default: false. */
111
+ singleSelect?: boolean;
112
+ /** Return a tooltip string if the device should be disabled, or undefined if enabled. */
113
+ isDeviceDisabled?: (device: T) => string | undefined;
114
+ /**
115
+ * The search and tag filter row over the table. Default true; a host that
116
+ * shows a fixed list (nothing to search) passes false.
117
+ */
118
+ showToolbar?: boolean;
119
+ /** Column ids to drop from the table (e.g. `['organization', 'status']` to leave only device + os). */
120
+ hideColumns?: string[];
121
+ /**
122
+ * Server-side size of the list on screen, for the header's row count. Only
123
+ * needed when the rows are paged but `server` is not in play (the criteria
124
+ * preview); `server.totalCount` covers the server-driven picker.
125
+ */
126
+ totalCount?: number;
127
+ /**
128
+ * Switches the picker to server-driven mode, see {@link DeviceSelectorServer}.
129
+ * Omit for the client-side behaviour every other consumer uses.
130
+ */
131
+ server?: DeviceSelectorServer<T>;
132
+ }
133
+ //# sourceMappingURL=device-selector.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"device-selector.types.d.ts","sourceRoot":"","sources":["../../../../../src/components/features/devices/device-selector/device-selector.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAEzD,MAAM,MAAM,MAAM,GAAG,WAAW,GAAG,UAAU,CAAC;AAE9C,gFAAgF;AAChF,MAAM,MAAM,mBAAmB,GAAG,UAAU,GAAG,UAAU,CAAC;AAE1D,8EAA8E;AAC9E,MAAM,WAAW,uBAAuB;IACtC,gEAAgE;IAChE,aAAa,EAAE,kBAAkB,CAAC;IAClC,gDAAgD;IAChD,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,oBAAoB,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS;IACnE,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,gEAAgE;IAChE,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,SAAS,EAAE,uBAAuB,CAAC;IACnC,iBAAiB,EAAE,CAAC,IAAI,EAAE,uBAAuB,KAAK,IAAI,CAAC;IAC3D;;;OAGG;IACH,aAAa,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;IACrC,sEAAsE;IACtE,aAAa,EAAE,MAAM,CAAC;IACtB,4EAA4E;IAC5E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,+EAA+E;IAC/E,KAAK,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,IAAI,CAAC;IAC3B,QAAQ,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,IAAI,CAAC;IAC9B,4EAA4E;IAC5E,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,WAAW,EAAE,MAAM,IAAI,CAAC;CACzB;AAED,MAAM,WAAW,4BAA4B;IAC3C,WAAW,EAAE,OAAO,CAAC;IACrB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,mBAAmB,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS;IAClE,wEAAwE;IACxE,OAAO,EAAE,CAAC,EAAE,CAAC;IACb,0CAA0C;IAC1C,OAAO,EAAE,OAAO,CAAC;IACjB;;;;;;;;OAQG;IACH,WAAW,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC1B,oFAAoF;IACpF,iBAAiB,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC;IAC/C,oGAAoG;IACpG,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,MAAM,GAAG,SAAS,CAAC;IACjD,oDAAoD;IACpD,cAAc,CAAC,EAAE,4BAA4B,CAAC;IAC9C,mDAAmD;IACnD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,sDAAsD;IACtD,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC;;;;;OAKG;IACH,aAAa,CAAC,EAAE,mBAAmB,CAAC;IACpC,qBAAqB,CAAC,EAAE,CAAC,IAAI,EAAE,mBAAmB,KAAK,IAAI,CAAC;IAC5D;;;;;;;;;OASG;IACH,eAAe,CAAC,EAAE,SAAS,CAAC;IAC5B,sFAAsF;IACtF,aAAa,CAAC,EAAE,SAAS,CAAC;IAC1B,mCAAmC;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,kGAAkG;IAClG,cAAc,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC;IACrC,sEAAsE;IACtE,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,yFAAyF;IACzF,gBAAgB,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,MAAM,GAAG,SAAS,CAAC;IACrD;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,uGAAuG;IACvG,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,MAAM,CAAC,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAC;CAClC"}
@@ -0,0 +1,13 @@
1
+ import type { DeviceFilterInput } from '../types';
2
+ import type { DeviceSelectorNarrowing } from './device-selector.types';
3
+ export declare const EMPTY_NARROWING: DeviceSelectorNarrowing;
4
+ /**
5
+ * Turns the picker's narrowing vocabulary into the backend's.
6
+ *
7
+ * The component speaks in table column filters and `key:value` chips because
8
+ * that is what its controls produce; the owner's device fields take a
9
+ * `DeviceFilterInput`. A plain-text chip (no colon) stays on screen but carries
10
+ * no filter, same as the devices page.
11
+ */
12
+ export declare function narrowingToFilter(narrowing: DeviceSelectorNarrowing): DeviceFilterInput;
13
+ //# sourceMappingURL=narrowing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"narrowing.d.ts","sourceRoot":"","sources":["../../../../../src/components/features/devices/device-selector/narrowing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAClD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAEvE,eAAO,MAAM,eAAe,EAAE,uBAAyD,CAAC;AAExF;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,uBAAuB,GAAG,iBAAiB,CAmBvF"}
@@ -0,0 +1,17 @@
1
+ import type { DeviceRow } from '../types';
2
+ import type { SubTab } from './device-selector.types';
3
+ interface UseDeviceSelectorParams<T extends DeviceRow> {
4
+ devices: T[];
5
+ selectedIds: Set<string>;
6
+ getDeviceKey: (device: T) => string | undefined;
7
+ }
8
+ export declare function useDeviceSelector<T extends DeviceRow>({ devices, selectedIds, getDeviceKey, }: UseDeviceSelectorParams<T>): {
9
+ searchTerm: string;
10
+ setSearchTerm: import("react").Dispatch<import("react").SetStateAction<string>>;
11
+ activeSubTab: SubTab;
12
+ handleTabChange: (tabId: string) => void;
13
+ filteredDevices: T[];
14
+ displayDevices: T[];
15
+ };
16
+ export {};
17
+ //# sourceMappingURL=use-device-selector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-device-selector.d.ts","sourceRoot":"","sources":["../../../../../src/components/features/devices/device-selector/use-device-selector.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAEtD,UAAU,uBAAuB,CAAC,CAAC,SAAS,SAAS;IACnD,OAAO,EAAE,CAAC,EAAE,CAAC;IACb,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACzB,YAAY,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,MAAM,GAAG,SAAS,CAAC;CACjD;AAED,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,SAAS,EAAE,EACrD,OAAO,EACP,WAAW,EACX,YAAY,GACb,EAAE,uBAAuB,CAAC,CAAC,CAAC;;;;6BAsBiB,MAAM;;;EAanD"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Device status configuration utilities
3
+ * Provides consistent status mapping across the application
4
+ */
5
+ import type { OSPlatformId } from '../../../utils/os-platforms';
6
+ export type DeviceStatusVariant = 'success' | 'error' | 'warning' | 'grey' | 'critical';
7
+ export type DeviceCardStatus = 'active' | 'inactive' | 'offline' | 'warning' | 'error';
8
+ export interface DeviceStatusConfig {
9
+ label: string;
10
+ variant: DeviceStatusVariant;
11
+ cardStatus: DeviceCardStatus;
12
+ }
13
+ /**
14
+ * Get status configuration for display
15
+ * Used by both table and grid views for consistent status representation
16
+ */
17
+ export declare function getDeviceStatusConfig(status: string | null | undefined): DeviceStatusConfig;
18
+ /**
19
+ * Get operating system type for DeviceCard component
20
+ * Uses centralized OS type system from ui-kit
21
+ */
22
+ export declare function getDeviceOperatingSystem(osType?: string): OSPlatformId | undefined;
23
+ //# sourceMappingURL=device-status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"device-status.d.ts","sourceRoot":"","sources":["../../../../src/components/features/devices/device-status.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAGhE,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,UAAU,CAAC;AACxF,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;AAEvF,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,mBAAmB,CAAC;IAC7B,UAAU,EAAE,gBAAgB,CAAC;CAC9B;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,kBAAkB,CAsE3F;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAIlF"}
@@ -0,0 +1,40 @@
1
+ import type { DeviceFilterInput } from './types';
2
+ /**
3
+ * Default visible device statuses (excludes ARCHIVED and DELETED).
4
+ * Deleted devices live on the dedicated /devices/archive page as read-only
5
+ * records. Use this constant for all device queries that should show "active"
6
+ * devices only.
7
+ *
8
+ * NOTE: If new statuses are added to the backend, they must be added here
9
+ * to appear in default views.
10
+ */
11
+ export declare const DEVICE_STATUS: {
12
+ readonly ONLINE: "ONLINE";
13
+ readonly OFFLINE: "OFFLINE";
14
+ readonly ACTIVE: "ACTIVE";
15
+ readonly INACTIVE: "INACTIVE";
16
+ readonly MAINTENANCE: "MAINTENANCE";
17
+ readonly DECOMMISSIONED: "DECOMMISSIONED";
18
+ readonly PENDING: "PENDING";
19
+ readonly PENDING_DELETION: "PENDING_DELETION";
20
+ readonly ARCHIVED: "ARCHIVED";
21
+ readonly DELETED: "DELETED";
22
+ };
23
+ export type DeviceStatus = (typeof DEVICE_STATUS)[keyof typeof DEVICE_STATUS];
24
+ export declare const DEFAULT_VISIBLE_STATUSES: ["ONLINE", "OFFLINE", "PENDING", "PENDING_DELETION"];
25
+ export declare const DEFAULT_DASHBOARD_STATUSES: ["ONLINE", "OFFLINE", "PENDING", "PENDING_DELETION", "ARCHIVED", "DELETED"];
26
+ export declare const DEFAULT_DEVICES_LIST_STATUSES: ["ONLINE", "OFFLINE", "PENDING_DELETION"];
27
+ export declare const DEVICE_ENRICHMENT_STATUSES: ["ONLINE", "OFFLINE", "ARCHIVED", "DELETED"];
28
+ /**
29
+ * The device-registry filter the monitoring tables read: the enrichment statuses
30
+ * as a ready `DeviceFilterInput`. Shared so the policy and query tables ask for
31
+ * the same fleet and therefore share one cached fetch.
32
+ */
33
+ export declare const DEVICE_ENRICHMENT_FILTER: DeviceFilterInput;
34
+ export type DefaultVisibleStatus = (typeof DEFAULT_VISIBLE_STATUSES)[number];
35
+ /**
36
+ * Statuses that are hidden by default (for documentation/reference)
37
+ */
38
+ export declare const HIDDEN_DEVICE_STATUSES: readonly ["ARCHIVED", "DELETED"];
39
+ export type HiddenDeviceStatus = (typeof HIDDEN_DEVICE_STATUSES)[number];
40
+ //# sourceMappingURL=device-statuses.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"device-statuses.d.ts","sourceRoot":"","sources":["../../../../src/components/features/devices/device-statuses.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAEjD;;;;;;;;GAQG;AAEH,eAAO,MAAM,aAAa;;;;;;;;;;;CAiBhB,CAAC;AAEX,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,OAAO,aAAa,CAAC,CAAC;AAE9E,eAAO,MAAM,wBAAwB,sDAKR,CAAC;AAI9B,eAAO,MAAM,0BAA0B,6EAOV,CAAC;AAO9B,eAAO,MAAM,6BAA6B,2CAIb,CAAC;AAM9B,eAAO,MAAM,0BAA0B,8CAKV,CAAC;AAE9B;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,EAAE,iBAAiE,CAAC;AAEzG,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,wBAAwB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE7E;;GAEG;AACH,eAAO,MAAM,sBAAsB,kCAA2D,CAAC;AAE/F,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,sBAAsB,CAAC,CAAC,MAAM,CAAC,CAAC"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * The "Device Tags" filter trigger: labelled from md, icon-only below it.
3
+ *
4
+ * Breakpoint decided in CSS, and that is the point. Both call sites used to branch
5
+ * on a `useMdUp()` value threaded down as a prop, and that hook answers `undefined`
6
+ * until an effect has run, so `isMdUp ? labelled : iconOnly` took the icon-only
7
+ * arm on the FIRST render at every width, server included. On desktop the button
8
+ * appeared as a bare square and grew its label a frame later, which also nudged the
9
+ * search input beside it.
10
+ *
11
+ * Two buttons rather than one with a hidden label: `size="icon"` is not just "no
12
+ * text", it is a square box (`w-11 content-md:w-12`), uniform padding and a smaller glyph
13
+ * below md. Reproducing that on a `size="default"` button would mean four
14
+ * `max-md:` overrides fighting the lib's cva variants; letting each variant render
15
+ * itself and hiding one in CSS keeps both exactly as the design system defines them.
16
+ * Only one is ever visible, and neither is interactive while hidden (`display: none`
17
+ * removes it from the tab order).
18
+ */
19
+ export declare function DeviceTagsFilterButton({ onClick }: {
20
+ onClick: () => void;
21
+ }): import("react").JSX.Element;
22
+ //# sourceMappingURL=device-tags-filter-button.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"device-tags-filter-button.d.ts","sourceRoot":"","sources":["../../../../src/components/features/devices/device-tags-filter-button.tsx"],"names":[],"mappings":"AAKA;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,sBAAsB,CAAC,EAAE,OAAO,EAAE,EAAE;IAAE,OAAO,EAAE,MAAM,IAAI,CAAA;CAAE,+BAyB1E"}
@@ -0,0 +1,11 @@
1
+ import type React from 'react';
2
+ /**
3
+ * Returns the icon for a device type (desktop / laptop / server / mobile / tablet),
4
+ * using the current icons-v2 set. Replaces the deprecated `getDeviceTypeIcon` from
5
+ * the core library.
6
+ *
7
+ * Returns `undefined` for unknown / missing types so the caller can skip rendering.
8
+ * A row that names a device draws it through `DeviceTypeTile`.
9
+ */
10
+ export declare function renderDeviceTypeIcon(type?: string, className?: string): React.ReactNode;
11
+ //# sourceMappingURL=device-type-icon.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"device-type-icon.d.ts","sourceRoot":"","sources":["../../../../src/components/features/devices/device-type-icon.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,SAAS,GAAE,MAA2B,GAAG,KAAK,CAAC,SAAS,CAe3G"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * A device's type icon in its 32px tile, the leading mark of every row that
3
+ * names a device. Card-filled, so it keeps its edge on any row ground; an
4
+ * unknown type draws the monitor rather than an empty tile.
5
+ */
6
+ export declare function DeviceTypeTile({ type }: {
7
+ type: string | null | undefined;
8
+ }): import("react").JSX.Element;
9
+ //# sourceMappingURL=device-type-tile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"device-type-tile.d.ts","sourceRoot":"","sources":["../../../../src/components/features/devices/device-type-tile.tsx"],"names":[],"mappings":"AAKA;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,EAAE,IAAI,EAAE,EAAE;IAAE,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;CAAE,+BAM3E"}
@@ -0,0 +1,46 @@
1
+ import type { ComponentProps, Ref } from 'react';
2
+ import { FilterModal, type TagSearchOption } from '../../ui';
3
+ type FilterModalProps = ComponentProps<typeof FilterModal>;
4
+ export interface DevicesFilterToolbarProps {
5
+ /** Search input, current value (debounce/URL sync owned by the parent). */
6
+ searchValue: string;
7
+ onSearchChange: (value: string) => void;
8
+ /** Already-selected tag chips rendered inside the search input. */
9
+ tags: TagSearchOption<string>[];
10
+ onTagRemove: (value: string) => void;
11
+ onClearAll: () => void;
12
+ onSubmit: (value: string) => void;
13
+ /** Open the Device Tags modal. */
14
+ onOpenFilterModal: () => void;
15
+ /** FilterModal state, proxied straight through. */
16
+ isFilterModalOpen: boolean;
17
+ onCloseFilterModal: () => void;
18
+ filterGroups: FilterModalProps['filterGroups'];
19
+ onFilterChange: FilterModalProps['onFilterChange'];
20
+ currentFilters?: FilterModalProps['currentFilters'];
21
+ tagFilterKeys: FilterModalProps['tagFilterKeys'];
22
+ selectedTags: FilterModalProps['selectedTags'];
23
+ onTagsChange: FilterModalProps['onTagsChange'];
24
+ isLoading?: boolean;
25
+ /**
26
+ * When true (default), pins the toolbar at the top with the same negative-margin
27
+ * bleed used by `DevicesPanel` (so the search row's background covers the
28
+ * `PageLayout` padding). Pass `false` when mounting inside a container that
29
+ * shouldn't bleed (e.g. a modal).
30
+ */
31
+ sticky?: boolean;
32
+ /**
33
+ * Attach to the pinned row so a caller can measure it, its height is what the
34
+ * sticky table header parks below, and it CHANGES as the tag-chip row appears
35
+ * and collapses. See `useStickyToolbar`.
36
+ */
37
+ toolbarRef?: Ref<HTMLDivElement>;
38
+ }
39
+ /**
40
+ * Search bar + "Device Tags" button + FilterModal. Pure presentation ,
41
+ * all state (search value, modal open/close, filter options) is owned by
42
+ * the parent. Reused by `DevicesPanel` and (eventually) `DeviceSelector`.
43
+ */
44
+ export declare function DevicesFilterToolbar({ searchValue, onSearchChange, tags, onTagRemove, onClearAll, onSubmit, onOpenFilterModal, isFilterModalOpen, onCloseFilterModal, filterGroups, onFilterChange, currentFilters, tagFilterKeys, selectedTags, onTagsChange, isLoading, sticky, toolbarRef, }: DevicesFilterToolbarProps): import("react").JSX.Element;
45
+ export {};
46
+ //# sourceMappingURL=devices-filter-toolbar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"devices-filter-toolbar.d.ts","sourceRoot":"","sources":["../../../../src/components/features/devices/devices-filter-toolbar.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAEjD,OAAO,EAAE,WAAW,EAAkB,KAAK,eAAe,EAAE,MAAM,UAAU,CAAC;AAG7E,KAAK,gBAAgB,GAAG,cAAc,CAAC,OAAO,WAAW,CAAC,CAAC;AAE3D,MAAM,WAAW,yBAAyB;IACxC,2EAA2E;IAC3E,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,mEAAmE;IACnE,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC;IAChC,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAElC,kCAAkC;IAClC,iBAAiB,EAAE,MAAM,IAAI,CAAC;IAE9B,mDAAmD;IACnD,iBAAiB,EAAE,OAAO,CAAC;IAC3B,kBAAkB,EAAE,MAAM,IAAI,CAAC;IAC/B,YAAY,EAAE,gBAAgB,CAAC,cAAc,CAAC,CAAC;IAC/C,cAAc,EAAE,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;IACnD,cAAc,CAAC,EAAE,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;IACpD,aAAa,EAAE,gBAAgB,CAAC,eAAe,CAAC,CAAC;IACjD,YAAY,EAAE,gBAAgB,CAAC,cAAc,CAAC,CAAC;IAC/C,YAAY,EAAE,gBAAgB,CAAC,cAAc,CAAC,CAAC;IAC/C,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB;;;;OAIG;IACH,UAAU,CAAC,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC;CAClC;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,EACnC,WAAW,EACX,cAAc,EACd,IAAI,EACJ,WAAW,EACX,UAAU,EACV,QAAQ,EACR,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,YAAY,EACZ,cAAc,EACd,cAAc,EACd,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,SAAS,EACT,MAAa,EACb,UAAU,GACX,EAAE,yBAAyB,+BAwC3B"}
@@ -0,0 +1,25 @@
1
+ import type { DeviceFilterColumn } from './devices-table-columns';
2
+ export interface DevicesGridFiltersProps {
3
+ filterColumns: DeviceFilterColumn[];
4
+ /** Current filter values keyed by column id (same shape as table's tableFilters). */
5
+ currentFilters: Record<string, string[]>;
6
+ /** Called with the next filters Record on apply/reset. Should write to URL params. */
7
+ onFilterChange: (filters: Record<string, string[]>) => void;
8
+ /** Server-side count for the "N results" tail. */
9
+ totalCount?: number;
10
+ /**
11
+ * The facet query is still out. Keeps every filterable column in the row even
12
+ * though its options haven't arrived, the LABELS are static, so the row can
13
+ * be drawn at its real height instead of collapsing to nothing and pushing the
14
+ * grid down a row the moment the facets land. Used by the panel's Suspense
15
+ * fallback, which renders this inert.
16
+ */
17
+ isLoading?: boolean;
18
+ }
19
+ /**
20
+ * DevicesGridFilters, horizontal row of dropdown filters shown above the
21
+ * devices grid. Mirrors the column-header filters from the table view so the
22
+ * same filter set is available in both layouts.
23
+ */
24
+ export declare function DevicesGridFilters({ filterColumns, currentFilters, onFilterChange, totalCount, isLoading, }: DevicesGridFiltersProps): import("react").JSX.Element | null;
25
+ //# sourceMappingURL=devices-grid-filters.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"devices-grid-filters.d.ts","sourceRoot":"","sources":["../../../../src/components/features/devices/devices-grid-filters.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAElE,MAAM,WAAW,uBAAuB;IACtC,aAAa,EAAE,kBAAkB,EAAE,CAAC;IACpC,qFAAqF;IACrF,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACzC,sFAAsF;IACtF,cAAc,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,KAAK,IAAI,CAAC;IAC5D,kDAAkD;IAClD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,EACjC,aAAa,EACb,cAAc,EACd,cAAc,EACd,UAAU,EACV,SAAiB,GAClB,EAAE,uBAAuB,sCA8DzB"}
@@ -0,0 +1,12 @@
1
+ import type React from 'react';
2
+ import type { DeviceRow } from './types';
3
+ export interface DevicesGridProps<T extends DeviceRow = DeviceRow> {
4
+ devices: T[];
5
+ isLoading: boolean;
6
+ hasNextPage?: boolean;
7
+ isFetchingNextPage?: boolean;
8
+ sentinelRef?: React.RefObject<HTMLDivElement | null>;
9
+ emptyMessage?: string;
10
+ }
11
+ export declare function DevicesGrid<T extends DeviceRow = DeviceRow>({ devices, isLoading, hasNextPage, isFetchingNextPage, sentinelRef, emptyMessage, }: DevicesGridProps<T>): React.JSX.Element;
12
+ //# sourceMappingURL=devices-grid.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"devices-grid.d.ts","sourceRoot":"","sources":["../../../../src/components/features/devices/devices-grid.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAO/B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEzC,MAAM,WAAW,gBAAgB,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS;IAC/D,OAAO,EAAE,CAAC,EAAE,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IACrD,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,WAAW,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS,EAAE,EAC3D,OAAO,EACP,SAAS,EACT,WAAW,EACX,kBAAkB,EAClB,WAAW,EACX,YAAwE,GACzE,EAAE,gBAAgB,CAAC,CAAC,CAAC,qBA0DrB"}
@@ -0,0 +1,131 @@
1
+ import { type ReactNode } from 'react';
2
+ import { type NoDataProps } from '../../ui';
3
+ import type { DeviceFilters, DeviceRow } from './types';
4
+ /**
5
+ * What the user has narrowed the list down to. One shape for every surface, so a
6
+ * caller can keep it in the URL, in local state, or hand it straight to a server
7
+ * filter without translating between vocabularies.
8
+ */
9
+ export interface DevicesListNarrowing {
10
+ search: string;
11
+ statuses: string[];
12
+ osTypes: string[];
13
+ organizationIds: string[];
14
+ /** Chips as typed. `key:value` narrows; a bare word stays visible and filters nothing. */
15
+ tags: string[];
16
+ }
17
+ export declare const EMPTY_DEVICES_NARROWING: DevicesListNarrowing;
18
+ /** True when anything at all is narrowing the list, an empty list then means "no matches", not "nothing here". */
19
+ export declare function isNarrowed(narrowing: DevicesListNarrowing): boolean;
20
+ export interface DevicesListProps<T extends DeviceRow = DeviceRow> {
21
+ /**
22
+ * The rows to render, already narrowed. This component never filters and never
23
+ * fetches, see the module docstring.
24
+ */
25
+ devices: T[];
26
+ isLoading?: boolean;
27
+ /**
28
+ * Facet counts behind the column funnels and the mobile filter modal, **from
29
+ * the server**, the `deviceFilters` query, scoped the same way the rows are.
30
+ *
31
+ * NEVER derive these from `devices`. Counts computed off the loaded rows read
32
+ * as facts about the list and are not: they change with every page fetched and
33
+ * disagree with the server the moment anything is narrowed. A surface with no
34
+ * facet query of its own passes `null` (or omits this) and the table drops the
35
+ * funnels entirely, a control that opens onto nothing is worse than none.
36
+ */
37
+ deviceFilters?: DeviceFilters | null;
38
+ /**
39
+ * The facet query has not answered yet, keeps the funnels drawn but inert,
40
+ * so they don't appear out of nowhere when it does. Key it on the DATA
41
+ * (`!deviceFilters`), never on a react-query `isLoading`, which reads false
42
+ * before the request has started.
43
+ */
44
+ filtersPending?: boolean;
45
+ /**
46
+ * True while the rows on screen are the PREVIOUS result and a refetch is in
47
+ * flight (deferred query variables, see `useDeferredQuery`). Dims them,
48
+ * rather than tearing the list down to a skeleton on every keystroke.
49
+ */
50
+ isPending?: boolean;
51
+ /**
52
+ * Row count beside the column header: the server's total for the CURRENT
53
+ * narrowing (a connection's `filteredCount`), not the number of rows fetched
54
+ * so far. Honest at any point precisely because the narrowing is the server's
55
+ * too, a count taken from a client-side filter would contradict it.
56
+ */
57
+ totalCount?: number;
58
+ /** Controlled narrowing. Omit both to render a read-only list (skeletons, previews). */
59
+ narrowing?: DevicesListNarrowing;
60
+ onNarrowingChange?: (next: DevicesListNarrowing) => void;
61
+ /** Column ids to drop, e.g. `['organization']` when the list is already scoped to one customer. */
62
+ hideColumns?: string[];
63
+ /** Filter keys to drop from the funnels AND the modal; the column itself stays. */
64
+ hideFilters?: string[];
65
+ /** Per-row overflow menu. Omit for a read-only list. */
66
+ rowActions?: (device: T) => ReactNode;
67
+ /**
68
+ * Shown when the list is empty and nothing is narrowing it, the design's
69
+ * `data-placeholder`: icon over title over description, rendered by the
70
+ * table's own `DataTableEmpty`.
71
+ */
72
+ emptyState?: NoDataProps;
73
+ /**
74
+ * Shown when narrowing is what emptied it. Defaults to the table's standard
75
+ * "no results" state (search icon, "Try adjusting your search or filters"),
76
+ * which is the right answer on every list, override only to name the rows.
77
+ */
78
+ narrowedEmptyState?: NoDataProps;
79
+ skeletonRows?: number;
80
+ infiniteScroll?: {
81
+ hasNextPage: boolean;
82
+ isFetchingNextPage: boolean;
83
+ onLoadMore: () => void;
84
+ skeletonRows?: number;
85
+ };
86
+ /**
87
+ * Pins the search / tag toolbar to the top of the scroll area, as the fleet
88
+ * list does. On by default: a list long enough to scroll is exactly the one
89
+ * whose search must stay reachable. Turn it off only where something else is
90
+ * already pinned at the top.
91
+ */
92
+ stickyToolbar?: boolean;
93
+ /**
94
+ * Overrides the wrapper around the toolbar and the table. By default it adds
95
+ * NO gap while the toolbar is pinned, the pinned row carries its own `p-l`,
96
+ * and a gap on top of it doubles the space under the search box.
97
+ */
98
+ /**
99
+ * Where the column header parks once the rows scroll under it. Defaults to the
100
+ * MEASURED height of the pinned toolbar, so the two never overlap and never
101
+ * leave a gap, the toolbar grows and shrinks with the tag-chip row, and is
102
+ * shorter on a phone. Only pass this to park the header somewhere else.
103
+ */
104
+ stickyHeaderOffset?: string;
105
+ className?: string;
106
+ }
107
+ /**
108
+ * The devices list, search + tag chips + column funnels over the shared devices
109
+ * table, identical on every surface that shows devices.
110
+ *
111
+ * **It does not fetch, and it does not filter.** That is the whole point: in
112
+ * Relay the rows are a CONNECTION, and every surface has a different one
113
+ * (`devices` for the fleet, `scriptSchedule.assignedDevices` for a schedule's
114
+ * assignment, `availableDevices` for its picker). Baking a query in would tie
115
+ * the list to exactly one of them; taking `devices` + a controlled
116
+ * {@link DevicesListNarrowing} lets one component serve all of them.
117
+ *
118
+ * It follows that the narrowing this component reports belongs in the caller's
119
+ * QUERY, every devices connection takes the same `filter` / `search`, so every
120
+ * surface narrows server-side, over the whole list rather than the pages fetched
121
+ * so far. The funnel options come from the server too (`deviceFilters`), or not
122
+ * at all; see the `deviceFilters` prop.
123
+ *
124
+ * The rows-in / narrowing-out split is also what makes the two data layers
125
+ * coexist: the fleet list is still react-query over raw POST, the schedule reads
126
+ * Relay. When devices move to Relay, the natural next step is a colocated
127
+ * fragment on `Device` that each caller spreads on its own connection, the
128
+ * props here do not change.
129
+ */
130
+ export declare function DevicesList<T extends DeviceRow = DeviceRow>({ devices, isLoading, deviceFilters, filtersPending, isPending, totalCount, narrowing, onNarrowingChange, hideColumns, hideFilters, rowActions, emptyState, narrowedEmptyState, skeletonRows, infiniteScroll, stickyToolbar, stickyHeaderOffset, className, }: DevicesListProps<T>): import("react").JSX.Element;
131
+ //# sourceMappingURL=devices-list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"devices-list.d.ts","sourceRoot":"","sources":["../../../../src/components/features/devices/devices-list.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,SAAS,EAAwB,MAAM,OAAO,CAAC;AAE7D,OAAO,EAAsC,KAAK,WAAW,EAAmB,MAAM,UAAU,CAAC;AAGjG,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAGxD;;;;GAIG;AACH,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,0FAA0F;IAC1F,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED,eAAO,MAAM,uBAAuB,EAAE,oBAMrC,CAAC;AAEF,kHAAkH;AAClH,wBAAgB,UAAU,CAAC,SAAS,EAAE,oBAAoB,GAAG,OAAO,CAQnE;AAED,MAAM,WAAW,gBAAgB,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS;IAC/D;;;OAGG;IACH,OAAO,EAAE,CAAC,EAAE,CAAC;IACb,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;;;;;;;;OASG;IACH,aAAa,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;IACrC;;;;;OAKG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,wFAAwF;IACxF,SAAS,CAAC,EAAE,oBAAoB,CAAC;IACjC,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,oBAAoB,KAAK,IAAI,CAAC;IAEzD,mGAAmG;IACnG,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,mFAAmF;IACnF,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,wDAAwD;IACxD,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,SAAS,CAAC;IAEtC;;;;OAIG;IACH,UAAU,CAAC,EAAE,WAAW,CAAC;IACzB;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,WAAW,CAAC;IAEjC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE;QACf,WAAW,EAAE,OAAO,CAAC;QACrB,kBAAkB,EAAE,OAAO,CAAC;QAC5B,UAAU,EAAE,MAAM,IAAI,CAAC;QACvB,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,CAAC;IAEF;;;;;OAKG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;;OAIG;IACH;;;;;OAKG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAID;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS,EAAE,EAC3D,OAAO,EACP,SAAS,EACT,aAAoB,EACpB,cAAc,EACd,SAAS,EACT,UAAU,EACV,SAAmC,EACnC,iBAAwB,EACxB,WAAW,EACX,WAAW,EACX,UAAU,EACV,UAAU,EACV,kBAAkB,EAClB,YAAgB,EAChB,cAAc,EACd,aAAoB,EACpB,kBAAkB,EAClB,SAAS,GACV,EAAE,gBAAgB,CAAC,CAAC,CAAC,+BA6KrB"}
@@ -0,0 +1,46 @@
1
+ import type { PageActionButton } from '../../ui';
2
+ /**
3
+ * The panel header's contents, declared once for both the loaded panel and its
4
+ * `Suspense` fallback.
5
+ *
6
+ * Same reasoning as `scripts-table-columns` on the scripts pages: a loading
7
+ * state that RE-DECLARES the chrome it stands in for drifts from it, silently,
8
+ * and only in the frame nobody screenshots. Reading one declaration is what
9
+ * makes the two identical by construction rather than by review.
10
+ */
11
+ /** The table/grid switch. Fed by the `viewMode` URL param, so it needs no data. */
12
+ export declare const DEVICE_VIEW_MODE_ITEMS: {
13
+ id: string;
14
+ icon: import("react").JSX.Element;
15
+ }[];
16
+ export interface DevicePanelActionsOptions {
17
+ /** Shows the "Archive" button linking to the archived-devices page. */
18
+ archiveHref?: string;
19
+ showAddDevice?: boolean;
20
+ noOrganizations?: boolean;
21
+ /** Destination of the "Add Customer" button shown when the tenant has no customers. */
22
+ addCustomerHref?: string;
23
+ isCheckingOrganizations?: boolean;
24
+ /**
25
+ * Accent the "Add Device" button, the panel's pristine-empty state, which is
26
+ * the ONE thing here that needs the list to have answered. Left off while
27
+ * loading: it changes the button's colour, never its size, so the header does
28
+ * not move when the real answer lands.
29
+ */
30
+ accent?: boolean;
31
+ onAddDevice?: () => void;
32
+ /**
33
+ * Loading. Every button the loaded header will have is still rendered, same
34
+ * labels, same icons, same widths, but inert and without its destination, so
35
+ * the header is pixel-identical and nothing is clickable before the panel can
36
+ * honour the click.
37
+ */
38
+ disabled?: boolean;
39
+ }
40
+ /**
41
+ * The panel's header buttons. Every input is a prop or a URL value, nothing
42
+ * here is derived from the device query, which is what lets the fallback build
43
+ * the same set the loaded panel will.
44
+ */
45
+ export declare function buildDevicePanelActions({ archiveHref, showAddDevice, noOrganizations, addCustomerHref, isCheckingOrganizations, accent, onAddDevice, disabled, }: DevicePanelActionsOptions): PageActionButton[];
46
+ //# sourceMappingURL=devices-panel-header.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"devices-panel-header.d.ts","sourceRoot":"","sources":["../../../../src/components/features/devices/devices-panel-header.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAEjD;;;;;;;;GAQG;AAEH,mFAAmF;AACnF,eAAO,MAAM,sBAAsB;;;GAGlC,CAAC;AAEF,MAAM,WAAW,yBAAyB;IACxC,uEAAuE;IACvE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,uFAAuF;IACvF,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC;;;;;OAKG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,EACtC,WAAW,EACX,aAAoB,EACpB,eAAuB,EACvB,eAAe,EACf,uBAA+B,EAC/B,MAAc,EACd,WAAW,EACX,QAAgB,GACjB,EAAE,yBAAyB,GAAG,gBAAgB,EAAE,CAoChD"}