@flamingo-stack/openframe-frontend-core 0.0.711 → 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 (523) 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-3UNL26CD.cjs → chunk-3RKBJT6K.cjs} +8 -6
  8. package/dist/{chunk-6GLQLTJI.js → chunk-3SEEGNRE.js} +35 -27
  9. package/dist/{chunk-FEMAJES4.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-2JTGK64G.js → chunk-4UYKNOZG.js} +12 -10
  14. package/dist/{chunk-TKZXHVBG.js → chunk-5SDELRH3.js} +5 -5
  15. package/dist/{chunk-Q6B35Y7O.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-WJUIXU6Y.js → chunk-7HNYYNKE.js} +28 -22
  19. package/dist/{chunk-P6G3JZNC.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-XWEBHS7O.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-G47AP6LX.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-NF7GNGYG.js → chunk-DDWFCWOE.js} +5 -7
  36. package/dist/{chunk-K4PTDK34.js → chunk-EFNKS5W4.js} +322 -428
  37. package/dist/{chunk-QA6TROME.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-5HB7FLCV.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-VWFZRMQR.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-AGDVEUVL.js → chunk-H5R7U2D2.js} +206 -5
  50. package/dist/{chunk-7AM6C6XH.cjs → chunk-HETQETPV.cjs} +9641 -9678
  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-C4HRRB3V.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-PRX7HVLE.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-FYOKS5RI.cjs → chunk-L6ZQGWCX.cjs} +4521 -6234
  65. package/dist/{chunk-PLYEKV3N.cjs → chunk-MA4Q5RBP.cjs} +6 -6
  66. package/dist/{chunk-VMMHJFHG.js → chunk-N67XG5GY.js} +10 -8
  67. package/dist/chunk-NPAQSMRY.js +2087 -0
  68. package/dist/{chunk-IFWLJ66M.js → chunk-NQWJAOHO.js} +6 -4
  69. package/dist/{chunk-6K7QZDA6.cjs → chunk-OBZJICEA.cjs} +8 -8
  70. package/dist/{chunk-62KNLDXK.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-EQWD4IJE.js → chunk-RBYVFPER.js} +74 -46
  75. package/dist/{chunk-SMAAV3HL.js → chunk-ROBQ5TR7.js} +10541 -10578
  76. package/dist/{chunk-K6Y5NX6L.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-EX6GGCAC.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-6AMIRXKM.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-QGZPZ3RL.js → chunk-YBS5QGON.js} +70 -128
  91. package/dist/{chunk-CDM7OSFB.cjs → chunk-Z5SWJW5Q.cjs} +125 -117
  92. package/dist/{chunk-YD4LJZV4.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/index.cjs +27 -8
  102. package/dist/components/chat/index.d.ts +1 -0
  103. package/dist/components/chat/index.d.ts.map +1 -1
  104. package/dist/components/chat/index.js +57 -38
  105. package/dist/components/chat/quick-action-chip.d.ts +7 -3
  106. package/dist/components/chat/quick-action-chip.d.ts.map +1 -1
  107. package/dist/components/contact/index.cjs +29 -13
  108. package/dist/components/contact/index.js +28 -12
  109. package/dist/components/docs/index.cjs +33 -16
  110. package/dist/components/docs/index.js +33 -16
  111. package/dist/components/docs/use-scroll-spy.d.ts +23 -1
  112. package/dist/components/docs/use-scroll-spy.d.ts.map +1 -1
  113. package/dist/components/embeds/index.cjs +29 -13
  114. package/dist/components/embeds/index.js +28 -12
  115. package/dist/components/faq/faq-section.d.ts +8 -1
  116. package/dist/components/faq/faq-section.d.ts.map +1 -1
  117. package/dist/components/faq/index.cjs +30 -14
  118. package/dist/components/faq/index.js +29 -13
  119. package/dist/components/features/array-entry-manager.d.ts +5 -1
  120. package/dist/components/features/array-entry-manager.d.ts.map +1 -1
  121. package/dist/components/features/board/board.d.ts +2 -0
  122. package/dist/components/features/board/board.d.ts.map +1 -1
  123. package/dist/components/features/board/ticket-card.d.ts.map +1 -1
  124. package/dist/components/features/board/touch-board.d.ts +1 -1
  125. package/dist/components/features/board/touch-board.d.ts.map +1 -1
  126. package/dist/components/features/board/types.d.ts +3 -0
  127. package/dist/components/features/board/types.d.ts.map +1 -1
  128. package/dist/components/features/board/use-board-collapse.d.ts +6 -1
  129. package/dist/components/features/board/use-board-collapse.d.ts.map +1 -1
  130. package/dist/components/features/capability-explorer.d.ts +94 -0
  131. package/dist/components/features/capability-explorer.d.ts.map +1 -0
  132. package/dist/components/features/cloud-tenants/index.d.ts +14 -0
  133. package/dist/components/features/cloud-tenants/index.d.ts.map +1 -0
  134. package/dist/components/features/cloud-tenants/tenant-access-cell.d.ts +9 -0
  135. package/dist/components/features/cloud-tenants/tenant-access-cell.d.ts.map +1 -0
  136. package/dist/components/features/cloud-tenants/tenant-cell.d.ts +8 -0
  137. package/dist/components/features/cloud-tenants/tenant-cell.d.ts.map +1 -0
  138. package/dist/components/features/cloud-tenants/tenant-customer-cell.d.ts +9 -0
  139. package/dist/components/features/cloud-tenants/tenant-customer-cell.d.ts.map +1 -0
  140. package/dist/components/features/cloud-tenants/tenant-presentation.d.ts +42 -0
  141. package/dist/components/features/cloud-tenants/tenant-presentation.d.ts.map +1 -0
  142. package/dist/components/features/cloud-tenants/tenant-row.d.ts +22 -0
  143. package/dist/components/features/cloud-tenants/tenant-row.d.ts.map +1 -0
  144. package/dist/components/features/cloud-tenants/tenants-table-columns.d.ts +42 -0
  145. package/dist/components/features/cloud-tenants/tenants-table-columns.d.ts.map +1 -0
  146. package/dist/components/features/cloud-tenants/tenants-table-view.d.ts +26 -0
  147. package/dist/components/features/cloud-tenants/tenants-table-view.d.ts.map +1 -0
  148. package/dist/components/features/devices/device-last-online.d.ts +3 -0
  149. package/dist/components/features/devices/device-last-online.d.ts.map +1 -0
  150. package/dist/components/features/devices/device-name.d.ts +42 -0
  151. package/dist/components/features/devices/device-name.d.ts.map +1 -0
  152. package/dist/components/features/devices/device-selector/device-selection-mode-radio.d.ts +26 -0
  153. package/dist/components/features/devices/device-selector/device-selection-mode-radio.d.ts.map +1 -0
  154. package/dist/components/features/devices/device-selector/device-selector-skeleton.d.ts +25 -0
  155. package/dist/components/features/devices/device-selector/device-selector-skeleton.d.ts.map +1 -0
  156. package/dist/components/features/devices/device-selector/device-selector.d.ts +38 -0
  157. package/dist/components/features/devices/device-selector/device-selector.d.ts.map +1 -0
  158. package/dist/components/features/devices/device-selector/device-selector.types.d.ts +133 -0
  159. package/dist/components/features/devices/device-selector/device-selector.types.d.ts.map +1 -0
  160. package/dist/components/features/devices/device-selector/narrowing.d.ts +13 -0
  161. package/dist/components/features/devices/device-selector/narrowing.d.ts.map +1 -0
  162. package/dist/components/features/devices/device-selector/use-device-selector.d.ts +17 -0
  163. package/dist/components/features/devices/device-selector/use-device-selector.d.ts.map +1 -0
  164. package/dist/components/features/devices/device-status.d.ts +23 -0
  165. package/dist/components/features/devices/device-status.d.ts.map +1 -0
  166. package/dist/components/features/devices/device-statuses.d.ts +40 -0
  167. package/dist/components/features/devices/device-statuses.d.ts.map +1 -0
  168. package/dist/components/features/devices/device-tags-filter-button.d.ts +22 -0
  169. package/dist/components/features/devices/device-tags-filter-button.d.ts.map +1 -0
  170. package/dist/components/features/devices/device-type-icon.d.ts +11 -0
  171. package/dist/components/features/devices/device-type-icon.d.ts.map +1 -0
  172. package/dist/components/features/devices/device-type-tile.d.ts +9 -0
  173. package/dist/components/features/devices/device-type-tile.d.ts.map +1 -0
  174. package/dist/components/features/devices/devices-filter-toolbar.d.ts +46 -0
  175. package/dist/components/features/devices/devices-filter-toolbar.d.ts.map +1 -0
  176. package/dist/components/features/devices/devices-grid-filters.d.ts +25 -0
  177. package/dist/components/features/devices/devices-grid-filters.d.ts.map +1 -0
  178. package/dist/components/features/devices/devices-grid.d.ts +12 -0
  179. package/dist/components/features/devices/devices-grid.d.ts.map +1 -0
  180. package/dist/components/features/devices/devices-list.d.ts +131 -0
  181. package/dist/components/features/devices/devices-list.d.ts.map +1 -0
  182. package/dist/components/features/devices/devices-panel-header.d.ts +46 -0
  183. package/dist/components/features/devices/devices-panel-header.d.ts.map +1 -0
  184. package/dist/components/features/devices/devices-panel-view.d.ts +79 -0
  185. package/dist/components/features/devices/devices-panel-view.d.ts.map +1 -0
  186. package/dist/components/features/devices/devices-table-columns.d.ts +76 -0
  187. package/dist/components/features/devices/devices-table-columns.d.ts.map +1 -0
  188. package/dist/components/features/devices/devices-view-config.d.ts +25 -0
  189. package/dist/components/features/devices/devices-view-config.d.ts.map +1 -0
  190. package/dist/components/features/devices/index.d.ts +24 -0
  191. package/dist/components/features/devices/index.d.ts.map +1 -0
  192. package/dist/components/features/devices/types.d.ts +68 -0
  193. package/dist/components/features/devices/types.d.ts.map +1 -0
  194. package/dist/components/features/devices/use-tag-filter-modal.d.ts +50 -0
  195. package/dist/components/features/devices/use-tag-filter-modal.d.ts.map +1 -0
  196. package/dist/components/features/index.cjs +227 -12
  197. package/dist/components/features/index.d.ts +7 -0
  198. package/dist/components/features/index.d.ts.map +1 -1
  199. package/dist/components/features/index.js +266 -51
  200. package/dist/components/features/knowledge-base/index.d.ts +7 -0
  201. package/dist/components/features/knowledge-base/index.d.ts.map +1 -0
  202. package/dist/components/features/knowledge-base/knowledge-base-article-view.d.ts +44 -0
  203. package/dist/components/features/knowledge-base/knowledge-base-article-view.d.ts.map +1 -0
  204. package/dist/components/features/knowledge-base/knowledge-base-item-icon.d.ts +13 -0
  205. package/dist/components/features/knowledge-base/knowledge-base-item-icon.d.ts.map +1 -0
  206. package/dist/components/features/knowledge-base/knowledge-base-status.d.ts +8 -0
  207. package/dist/components/features/knowledge-base/knowledge-base-status.d.ts.map +1 -0
  208. package/dist/components/features/knowledge-base/knowledge-base-table.d.ts +52 -0
  209. package/dist/components/features/knowledge-base/knowledge-base-table.d.ts.map +1 -0
  210. package/dist/components/features/logs/index.d.ts +12 -0
  211. package/dist/components/features/logs/index.d.ts.map +1 -0
  212. package/dist/components/features/logs/log-drawer.d.ts +29 -0
  213. package/dist/components/features/logs/log-drawer.d.ts.map +1 -0
  214. package/dist/components/features/logs/log-source-labels.d.ts +11 -0
  215. package/dist/components/features/logs/log-source-labels.d.ts.map +1 -0
  216. package/dist/components/features/logs/logs-page-view.d.ts +32 -0
  217. package/dist/components/features/logs/logs-page-view.d.ts.map +1 -0
  218. package/dist/components/features/logs/logs-table-columns.d.ts +15 -0
  219. package/dist/components/features/logs/logs-table-columns.d.ts.map +1 -0
  220. package/dist/components/features/logs/logs-table-view.d.ts +64 -0
  221. package/dist/components/features/logs/logs-table-view.d.ts.map +1 -0
  222. package/dist/components/features/logs/types.d.ts +52 -0
  223. package/dist/components/features/logs/types.d.ts.map +1 -0
  224. package/dist/components/features/policies/compute-policy-summary.d.ts +37 -0
  225. package/dist/components/features/policies/compute-policy-summary.d.ts.map +1 -0
  226. package/dist/components/features/policies/index.d.ts +8 -0
  227. package/dist/components/features/policies/index.d.ts.map +1 -0
  228. package/dist/components/features/policies/policies-table.d.ts +34 -0
  229. package/dist/components/features/policies/policies-table.d.ts.map +1 -0
  230. package/dist/components/features/policies/policy-summary-cards.d.ts +17 -0
  231. package/dist/components/features/policies/policy-summary-cards.d.ts.map +1 -0
  232. package/dist/components/features/policies/policy-table-row.d.ts +37 -0
  233. package/dist/components/features/policies/policy-table-row.d.ts.map +1 -0
  234. package/dist/components/features/remote-session/index.d.ts +8 -0
  235. package/dist/components/features/remote-session/index.d.ts.map +1 -1
  236. package/dist/components/features/remote-session/remote-desktop-chat-message-row.d.ts +21 -0
  237. package/dist/components/features/remote-session/remote-desktop-chat-message-row.d.ts.map +1 -0
  238. package/dist/components/features/remote-session/remote-desktop-chat-panel.d.ts +31 -0
  239. package/dist/components/features/remote-session/remote-desktop-chat-panel.d.ts.map +1 -0
  240. package/dist/components/features/remote-session/remote-desktop-fullscreen-toolbar.d.ts +21 -0
  241. package/dist/components/features/remote-session/remote-desktop-fullscreen-toolbar.d.ts.map +1 -0
  242. package/dist/components/features/remote-session/remote-desktop-view.d.ts +50 -0
  243. package/dist/components/features/remote-session/remote-desktop-view.d.ts.map +1 -0
  244. package/dist/components/features/software/index.d.ts +8 -0
  245. package/dist/components/features/software/index.d.ts.map +1 -0
  246. package/dist/components/features/software/package-managers.d.ts +30 -0
  247. package/dist/components/features/software/package-managers.d.ts.map +1 -0
  248. package/dist/components/features/software/package-search-field-placeholder.d.ts +7 -0
  249. package/dist/components/features/software/package-search-field-placeholder.d.ts.map +1 -0
  250. package/dist/components/features/software/schedule-fields.d.ts +34 -0
  251. package/dist/components/features/software/schedule-fields.d.ts.map +1 -0
  252. package/dist/components/features/software/software-action-copy.d.ts +25 -0
  253. package/dist/components/features/software/software-action-copy.d.ts.map +1 -0
  254. package/dist/components/features/software/software-action-form.d.ts +71 -0
  255. package/dist/components/features/software/software-action-form.d.ts.map +1 -0
  256. package/dist/components/features/software/software-row-fields.d.ts +23 -0
  257. package/dist/components/features/software/software-row-fields.d.ts.map +1 -0
  258. package/dist/components/features/software/software-row.d.ts +18 -0
  259. package/dist/components/features/software/software-row.d.ts.map +1 -0
  260. package/dist/components/features/sortable-list/index.d.ts +1 -0
  261. package/dist/components/features/sortable-list/index.d.ts.map +1 -1
  262. package/dist/components/features/sortable-list/sortable-drag-handle.d.ts +21 -0
  263. package/dist/components/features/sortable-list/sortable-drag-handle.d.ts.map +1 -0
  264. package/dist/components/help-center-pages/index.cjs +133 -114
  265. package/dist/components/help-center-pages/index.js +58 -39
  266. package/dist/components/index.cjs +320 -82
  267. package/dist/components/index.js +451 -213
  268. package/dist/components/layout/page-heading.d.ts +12 -3
  269. package/dist/components/layout/page-heading.d.ts.map +1 -1
  270. package/dist/components/meeting-scheduler/index.cjs +120 -98
  271. package/dist/components/meeting-scheduler/index.js +50 -28
  272. package/dist/components/navigation/index.cjs +36 -17
  273. package/dist/components/navigation/index.d.ts +3 -0
  274. package/dist/components/navigation/index.d.ts.map +1 -1
  275. package/dist/components/navigation/index.js +36 -17
  276. package/dist/components/navigation/mingo-ai-button.d.ts +23 -10
  277. package/dist/components/navigation/mingo-ai-button.d.ts.map +1 -1
  278. package/dist/components/navigation/sticky-section-nav.d.ts +14 -1
  279. package/dist/components/navigation/sticky-section-nav.d.ts.map +1 -1
  280. package/dist/components/onboarding-guides/index.cjs +32 -16
  281. package/dist/components/onboarding-guides/index.js +31 -15
  282. package/dist/components/product-demo/cast.d.ts +58 -0
  283. package/dist/components/product-demo/cast.d.ts.map +1 -0
  284. package/dist/components/product-demo/fixtures/cloud-tenants.d.ts +10 -0
  285. package/dist/components/product-demo/fixtures/cloud-tenants.d.ts.map +1 -0
  286. package/dist/components/product-demo/fixtures/devices.d.ts +14 -0
  287. package/dist/components/product-demo/fixtures/devices.d.ts.map +1 -0
  288. package/dist/components/product-demo/fixtures/knowledge.d.ts +14 -0
  289. package/dist/components/product-demo/fixtures/knowledge.d.ts.map +1 -0
  290. package/dist/components/product-demo/fixtures/logs.d.ts +15 -0
  291. package/dist/components/product-demo/fixtures/logs.d.ts.map +1 -0
  292. package/dist/components/product-demo/fixtures/policies.d.ts +13 -0
  293. package/dist/components/product-demo/fixtures/policies.d.ts.map +1 -0
  294. package/dist/components/product-demo/fixtures/remote-session.d.ts +20 -0
  295. package/dist/components/product-demo/fixtures/remote-session.d.ts.map +1 -0
  296. package/dist/components/product-demo/fixtures/shared.d.ts +156 -0
  297. package/dist/components/product-demo/fixtures/shared.d.ts.map +1 -0
  298. package/dist/components/product-demo/fixtures/software-update.d.ts +19 -0
  299. package/dist/components/product-demo/fixtures/software-update.d.ts.map +1 -0
  300. package/dist/components/product-demo/fixtures/tickets-board.d.ts +8 -0
  301. package/dist/components/product-demo/fixtures/tickets-board.d.ts.map +1 -0
  302. package/dist/components/product-demo/index.cjs +112 -0
  303. package/dist/components/product-demo/index.d.ts +6 -0
  304. package/dist/components/product-demo/index.d.ts.map +1 -0
  305. package/dist/components/product-demo/index.js +112 -0
  306. package/dist/components/product-demo/product-screen.d.ts +22 -0
  307. package/dist/components/product-demo/product-screen.d.ts.map +1 -0
  308. package/dist/components/product-demo/registry.d.ts +13 -0
  309. package/dist/components/product-demo/registry.d.ts.map +1 -0
  310. package/dist/components/product-demo/screen-keys.cjs +25 -0
  311. package/dist/components/product-demo/screen-keys.d.ts +27 -0
  312. package/dist/components/product-demo/screen-keys.d.ts.map +1 -0
  313. package/dist/components/product-demo/screen-keys.js +20 -0
  314. package/dist/components/product-demo/screens/cloud-tenants.d.ts +8 -0
  315. package/dist/components/product-demo/screens/cloud-tenants.d.ts.map +1 -0
  316. package/dist/components/product-demo/screens/devices.d.ts +10 -0
  317. package/dist/components/product-demo/screens/devices.d.ts.map +1 -0
  318. package/dist/components/product-demo/screens/knowledge.d.ts +9 -0
  319. package/dist/components/product-demo/screens/knowledge.d.ts.map +1 -0
  320. package/dist/components/product-demo/screens/logs.d.ts +4 -0
  321. package/dist/components/product-demo/screens/logs.d.ts.map +1 -0
  322. package/dist/components/product-demo/screens/policies.d.ts +8 -0
  323. package/dist/components/product-demo/screens/policies.d.ts.map +1 -0
  324. package/dist/components/product-demo/screens/remote-desktop-picture.d.ts +11 -0
  325. package/dist/components/product-demo/screens/remote-desktop-picture.d.ts.map +1 -0
  326. package/dist/components/product-demo/screens/remote-session.d.ts +8 -0
  327. package/dist/components/product-demo/screens/remote-session.d.ts.map +1 -0
  328. package/dist/components/product-demo/screens/software-update.d.ts +12 -0
  329. package/dist/components/product-demo/screens/software-update.d.ts.map +1 -0
  330. package/dist/components/product-demo/screens/tickets-board.d.ts +4 -0
  331. package/dist/components/product-demo/screens/tickets-board.d.ts.map +1 -0
  332. package/dist/components/product-demo/types.d.ts +9 -0
  333. package/dist/components/product-demo/types.d.ts.map +1 -0
  334. package/dist/components/related-content/index.cjs +14 -8
  335. package/dist/components/related-content/index.js +13 -7
  336. package/dist/components/tickets/index.cjs +36 -20
  337. package/dist/components/tickets/index.js +35 -19
  338. package/dist/components/ui/file-manager/index.cjs +38 -34
  339. package/dist/components/ui/file-manager/index.js +8 -4
  340. package/dist/components/ui/index.cjs +57 -17
  341. package/dist/components/ui/index.d.ts +1 -0
  342. package/dist/components/ui/index.d.ts.map +1 -1
  343. package/dist/components/ui/index.js +141 -101
  344. package/dist/components/ui/product-screen-frame.d.ts +45 -0
  345. package/dist/components/ui/product-screen-frame.d.ts.map +1 -0
  346. package/dist/components/ui/radio-group.d.ts +5 -0
  347. package/dist/components/ui/radio-group.d.ts.map +1 -1
  348. package/dist/components/ui/snap-carousel.d.ts +11 -1
  349. package/dist/components/ui/snap-carousel.d.ts.map +1 -1
  350. package/dist/components/ui/tag.d.ts +1 -1
  351. package/dist/components/ui/tag.d.ts.map +1 -1
  352. package/dist/devices-LBMG42K6.js +81 -0
  353. package/dist/devices-YGYJIXQY.cjs +81 -0
  354. package/dist/hooks/index.cjs +17 -8
  355. package/dist/hooks/index.js +32 -23
  356. package/dist/hooks/ui/index.d.ts +1 -0
  357. package/dist/hooks/ui/index.d.ts.map +1 -1
  358. package/dist/hooks/ui/use-header-height.d.ts +12 -0
  359. package/dist/hooks/ui/use-header-height.d.ts.map +1 -1
  360. package/dist/hooks/ui/use-sticky-toolbar.d.ts +29 -0
  361. package/dist/hooks/ui/use-sticky-toolbar.d.ts.map +1 -0
  362. package/dist/hooks/use-location-hash.d.ts +2 -2
  363. package/dist/hooks/use-location-hash.d.ts.map +1 -1
  364. package/dist/hooks/use-scroll-to-hash.d.ts +7 -0
  365. package/dist/hooks/use-scroll-to-hash.d.ts.map +1 -1
  366. package/dist/index.cjs +276 -25
  367. package/dist/index.js +729 -478
  368. package/dist/knowledge-H5BIWJVI.js +108 -0
  369. package/dist/knowledge-KTCVJIWN.cjs +108 -0
  370. package/dist/logs-DB5Z7M5Q.js +216 -0
  371. package/dist/logs-RVCC2UQW.cjs +216 -0
  372. package/dist/policies-EWUULFBR.js +121 -0
  373. package/dist/policies-HV4IQCBV.cjs +121 -0
  374. package/dist/remote-session-GSGZOFDX.js +196 -0
  375. package/dist/remote-session-R6VAFESR.cjs +196 -0
  376. package/dist/software-update-6PXKRKBT.js +179 -0
  377. package/dist/software-update-D4OVSWSG.cjs +179 -0
  378. package/dist/tickets-board-BHLPAVNJ.cjs +137 -0
  379. package/dist/tickets-board-PYDNELSK.js +137 -0
  380. package/dist/types/case-study.d.ts +15 -1
  381. package/dist/types/case-study.d.ts.map +1 -1
  382. package/dist/utils/date-utils.d.ts +5 -0
  383. package/dist/utils/date-utils.d.ts.map +1 -1
  384. package/dist/utils/index.cjs +45 -2
  385. package/dist/utils/index.d.ts +2 -1
  386. package/dist/utils/index.d.ts.map +1 -1
  387. package/dist/utils/index.js +41 -3
  388. package/dist/utils/open-in-new-tab.d.ts +7 -0
  389. package/dist/utils/open-in-new-tab.d.ts.map +1 -0
  390. package/dist/utils/same-page-hash-nav.d.ts +31 -0
  391. package/dist/utils/same-page-hash-nav.d.ts.map +1 -1
  392. package/dist/utils/scroll-into-view.d.ts +14 -1
  393. package/dist/utils/scroll-into-view.d.ts.map +1 -1
  394. package/package.json +13 -1
  395. package/src/components/chat/ask-prompts.tsx +226 -0
  396. package/src/components/chat/embeddable-chat.tsx +36 -2
  397. package/src/components/chat/entity-cards/case-study-card.tsx +122 -46
  398. package/src/components/chat/index.ts +1 -0
  399. package/src/components/chat/quick-action-chip.tsx +33 -9
  400. package/src/components/docs/use-scroll-spy.ts +93 -18
  401. package/src/components/faq/faq-section.tsx +82 -43
  402. package/src/components/features/array-entry-manager.tsx +10 -1
  403. package/src/components/features/board/board.tsx +4 -1
  404. package/src/components/features/board/ticket-card.tsx +11 -1
  405. package/src/components/features/board/touch-board.tsx +2 -1
  406. package/src/components/features/board/types.ts +3 -0
  407. package/src/components/features/board/use-board-collapse.ts +7 -2
  408. package/src/components/features/capability-explorer.tsx +412 -0
  409. package/src/components/features/cloud-tenants/index.ts +28 -0
  410. package/src/components/features/cloud-tenants/tenant-access-cell.tsx +24 -0
  411. package/src/components/features/cloud-tenants/tenant-cell.tsx +26 -0
  412. package/src/components/features/cloud-tenants/tenant-customer-cell.tsx +27 -0
  413. package/src/components/features/cloud-tenants/tenant-presentation.ts +111 -0
  414. package/src/components/features/cloud-tenants/tenant-row.ts +21 -0
  415. package/src/components/features/cloud-tenants/tenants-table-columns.ts +30 -0
  416. package/src/components/features/cloud-tenants/tenants-table-view.tsx +142 -0
  417. package/src/components/features/devices/device-last-online.ts +6 -0
  418. package/src/components/features/devices/device-name.ts +51 -0
  419. package/src/components/features/devices/device-selector/device-selection-mode-radio.tsx +107 -0
  420. package/src/components/features/devices/device-selector/device-selector-skeleton.tsx +32 -0
  421. package/src/components/features/devices/device-selector/device-selector.tsx +799 -0
  422. package/src/components/features/devices/device-selector/device-selector.types.ts +138 -0
  423. package/src/components/features/devices/device-selector/narrowing.ts +33 -0
  424. package/src/components/features/devices/device-selector/use-device-selector.ts +51 -0
  425. package/src/components/features/devices/device-status.ts +102 -0
  426. package/src/components/features/devices/device-statuses.ts +88 -0
  427. package/src/components/features/devices/device-tags-filter-button.tsx +49 -0
  428. package/src/components/features/devices/device-type-icon.tsx +29 -0
  429. package/src/components/features/devices/device-type-tile.tsx +17 -0
  430. package/src/components/features/devices/devices-filter-toolbar.tsx +114 -0
  431. package/src/components/features/devices/devices-grid-filters.tsx +99 -0
  432. package/src/components/features/devices/devices-grid.tsx +86 -0
  433. package/src/components/features/devices/devices-list.tsx +357 -0
  434. package/src/components/features/devices/devices-panel-header.tsx +97 -0
  435. package/src/components/features/devices/devices-panel-view.tsx +261 -0
  436. package/src/components/features/devices/devices-table-columns.tsx +356 -0
  437. package/src/components/features/devices/devices-view-config.tsx +38 -0
  438. package/src/components/features/devices/index.ts +89 -0
  439. package/src/components/features/devices/types.ts +74 -0
  440. package/src/components/features/devices/use-tag-filter-modal.ts +109 -0
  441. package/src/components/features/index.ts +9 -0
  442. package/src/components/features/knowledge-base/index.ts +19 -0
  443. package/src/components/features/knowledge-base/knowledge-base-article-view.tsx +134 -0
  444. package/src/components/features/knowledge-base/knowledge-base-item-icon.ts +14 -0
  445. package/src/components/features/knowledge-base/knowledge-base-status.ts +12 -0
  446. package/src/components/features/knowledge-base/knowledge-base-table.tsx +180 -0
  447. package/src/components/features/logs/index.ts +20 -0
  448. package/src/components/features/logs/log-drawer.tsx +138 -0
  449. package/src/components/features/logs/log-source-labels.ts +25 -0
  450. package/src/components/features/logs/logs-page-view.tsx +100 -0
  451. package/src/components/features/logs/logs-table-columns.ts +16 -0
  452. package/src/components/features/logs/logs-table-view.tsx +509 -0
  453. package/src/components/features/logs/types.ts +71 -0
  454. package/src/components/features/policies/compute-policy-summary.ts +115 -0
  455. package/src/components/features/policies/index.ts +14 -0
  456. package/src/components/features/policies/policies-table.tsx +235 -0
  457. package/src/components/features/policies/policy-summary-cards.tsx +69 -0
  458. package/src/components/features/policies/policy-table-row.ts +37 -0
  459. package/src/components/features/remote-session/index.ts +8 -0
  460. package/src/components/features/remote-session/remote-desktop-chat-message-row.tsx +56 -0
  461. package/src/components/features/remote-session/remote-desktop-chat-panel.tsx +102 -0
  462. package/src/components/features/remote-session/remote-desktop-fullscreen-toolbar.tsx +119 -0
  463. package/src/components/features/remote-session/remote-desktop-view.tsx +209 -0
  464. package/src/components/features/software/index.ts +39 -0
  465. package/src/components/features/software/package-managers.ts +54 -0
  466. package/src/components/features/software/package-search-field-placeholder.tsx +23 -0
  467. package/src/components/features/software/schedule-fields.tsx +105 -0
  468. package/src/components/features/software/software-action-copy.ts +70 -0
  469. package/src/components/features/software/software-action-form.tsx +199 -0
  470. package/src/components/features/software/software-row-fields.tsx +105 -0
  471. package/src/components/features/software/software-row.ts +22 -0
  472. package/src/components/features/sortable-list/index.ts +1 -0
  473. package/src/components/features/sortable-list/sortable-drag-handle.tsx +41 -0
  474. package/src/components/layout/page-heading.tsx +23 -6
  475. package/src/components/navigation/index.ts +5 -0
  476. package/src/components/navigation/mingo-ai-button.tsx +37 -13
  477. package/src/components/navigation/sticky-section-nav.tsx +99 -1
  478. package/src/components/product-demo/cast.tsx +78 -0
  479. package/src/components/product-demo/fixtures/cloud-tenants.ts +63 -0
  480. package/src/components/product-demo/fixtures/devices.ts +87 -0
  481. package/src/components/product-demo/fixtures/knowledge.ts +48 -0
  482. package/src/components/product-demo/fixtures/logs.ts +103 -0
  483. package/src/components/product-demo/fixtures/policies.ts +77 -0
  484. package/src/components/product-demo/fixtures/remote-session.ts +65 -0
  485. package/src/components/product-demo/fixtures/shared.ts +53 -0
  486. package/src/components/product-demo/fixtures/software-update.ts +63 -0
  487. package/src/components/product-demo/fixtures/tickets-board.ts +100 -0
  488. package/src/components/product-demo/index.ts +7 -0
  489. package/src/components/product-demo/product-screen.tsx +94 -0
  490. package/src/components/product-demo/registry.ts +20 -0
  491. package/src/components/product-demo/screen-keys.ts +31 -0
  492. package/src/components/product-demo/screens/cloud-tenants.tsx +23 -0
  493. package/src/components/product-demo/screens/devices.tsx +41 -0
  494. package/src/components/product-demo/screens/knowledge.tsx +27 -0
  495. package/src/components/product-demo/screens/logs.tsx +113 -0
  496. package/src/components/product-demo/screens/policies.tsx +29 -0
  497. package/src/components/product-demo/screens/remote-desktop-picture.tsx +118 -0
  498. package/src/components/product-demo/screens/remote-session.tsx +46 -0
  499. package/src/components/product-demo/screens/software-update.tsx +97 -0
  500. package/src/components/product-demo/screens/tickets-board.tsx +28 -0
  501. package/src/components/product-demo/types.ts +10 -0
  502. package/src/components/ui/index.ts +1 -0
  503. package/src/components/ui/product-screen-frame.tsx +136 -0
  504. package/src/components/ui/radio-group.tsx +16 -4
  505. package/src/components/ui/snap-carousel.tsx +26 -1
  506. package/src/components/ui/tag.tsx +5 -0
  507. package/src/hooks/ui/index.ts +1 -0
  508. package/src/hooks/ui/use-header-height.ts +51 -2
  509. package/src/hooks/ui/use-sticky-toolbar.ts +60 -0
  510. package/src/hooks/use-location-hash.ts +9 -5
  511. package/src/hooks/use-scroll-to-hash.ts +9 -1
  512. package/src/types/case-study.ts +21 -1
  513. package/src/utils/date-utils.ts +8 -1
  514. package/src/utils/index.ts +5 -0
  515. package/src/utils/open-in-new-tab.ts +12 -0
  516. package/src/utils/same-page-hash-nav.ts +57 -0
  517. package/src/utils/scroll-into-view.ts +21 -5
  518. package/dist/chunk-BM5MVGH3.cjs +0 -499
  519. package/dist/chunk-CUME3VTQ.js +0 -144
  520. package/dist/chunk-CZ7Y7UG4.js +0 -732
  521. package/dist/chunk-FLKJYMVB.js +0 -499
  522. package/dist/chunk-OF6GEI5A.cjs +0 -144
  523. package/dist/chunk-UVTD52MD.cjs +0 -732
@@ -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"}
@@ -0,0 +1,79 @@
1
+ import type { ReactNode, RefObject } from 'react';
2
+ import { type ColumnDef, type ColumnFiltersState, type OnChangeFn, type PageActionButton } from '../../ui';
3
+ import { type DevicesFilterToolbarProps } from './devices-filter-toolbar';
4
+ import { type DeviceFilterColumn } from './devices-table-columns';
5
+ import type { DeviceFilters, DeviceRow } from './types';
6
+ export type DevicesViewMode = 'table' | 'grid';
7
+ /** A toolbar with nothing in it and nothing wired: what a loading panel and a picture draw. */
8
+ export declare const IDLE_DEVICES_TOOLBAR: DevicesFilterToolbarProps;
9
+ export interface DevicesPanelViewProps<T extends DeviceRow = DeviceRow> {
10
+ /** Page title shown in the PageLayout header. */
11
+ title?: string;
12
+ /** Back button rendered above the title (e.g. on the archive page). */
13
+ backButton?: {
14
+ label?: string;
15
+ onClick: () => void;
16
+ };
17
+ /** The PageLayout wrapper's className, already resolved by the caller. */
18
+ className?: string;
19
+ /**
20
+ * Drawn in place of the panel's own header (title, view switch, actions),
21
+ * for a host that brings its own, such as a page hero.
22
+ */
23
+ headerSlot?: ReactNode;
24
+ viewMode: DevicesViewMode;
25
+ onViewModeChange?: (mode: DevicesViewMode) => void;
26
+ /** Header buttons: see `buildDevicePanelActions`. */
27
+ actions?: PageActionButton[];
28
+ /** The rows to draw, already narrowed. The view never fetches and never filters. */
29
+ devices: T[];
30
+ /**
31
+ * The request has not answered: the header, the view switch and the toolbar
32
+ * are the real ones, locked, and only the rows are skeletons.
33
+ */
34
+ loading?: boolean;
35
+ /** The rows on screen answer the previous narrowing while the next loads: dimmed, not replaced. */
36
+ isNarrowing?: boolean;
37
+ /** Server-side total for the current narrowing. */
38
+ totalCount?: number;
39
+ /** Facets behind the column funnels and the grid's filter row, from the server. */
40
+ deviceFilters?: DeviceFilters | null;
41
+ /** The filter columns the grid row offers. Defaults to every column of `deviceFilters` not in `hideFilters`. */
42
+ filterColumns?: DeviceFilterColumn[];
43
+ /** Search box, tag chips and the tags modal. Omit for an idle toolbar. */
44
+ toolbar?: DevicesFilterToolbarProps;
45
+ /** The table's column funnels. */
46
+ columnFilters?: ColumnFiltersState;
47
+ onColumnFiltersChange?: OnChangeFn<ColumnFiltersState>;
48
+ /** The grid filter row's selection, keyed by column id, and its writer. */
49
+ gridFilters?: Record<string, string[]>;
50
+ onGridFiltersChange?: (filters: Record<string, string[]>) => void;
51
+ /** The row-actions column: see `getDeviceActionsColumn`. */
52
+ actionsColumn?: ColumnDef<T>;
53
+ /** Column ids to drop from the table (e.g. 'organization' when scoped to one customer). */
54
+ hideColumns?: string[];
55
+ /** Filter keys to drop from the funnels and the grid row; the column itself stays. */
56
+ hideFilters?: string[];
57
+ /** Message shown when the list is empty. */
58
+ emptyMessage?: string;
59
+ /** Drawn instead of the toolbar and the list: the pristine, genuinely empty panel. */
60
+ emptyState?: ReactNode;
61
+ /** The tenant has no customers yet: a banner says a device needs one. */
62
+ noOrganizations?: boolean;
63
+ hasNextPage?: boolean;
64
+ isFetchingNextPage?: boolean;
65
+ onLoadMore?: () => void;
66
+ /** The grid's infinite-scroll sentinel. */
67
+ gridSentinelRef?: RefObject<HTMLDivElement | null>;
68
+ }
69
+ /**
70
+ * The device list as a page: header with the table / grid switch and the
71
+ * actions, the search and tag toolbar, and the rows as a table or as cards.
72
+ *
73
+ * Everything it shows is a prop. The product's container owns the queries and
74
+ * the URL state and maps them here; a fixture passes plain rows. Its loading
75
+ * state is the same component with `loading`: the chrome is the real one,
76
+ * locked, so the page does not move when the rows land.
77
+ */
78
+ export declare function DevicesPanelView<T extends DeviceRow = DeviceRow>({ title, backButton, className, headerSlot, viewMode, onViewModeChange, actions, devices, loading, isNarrowing, totalCount, deviceFilters, filterColumns, toolbar, columnFilters, onColumnFiltersChange, gridFilters, onGridFiltersChange, actionsColumn, hideColumns, hideFilters, emptyMessage, emptyState, noOrganizations, hasNextPage, isFetchingNextPage, onLoadMore, gridSentinelRef, }: DevicesPanelViewProps<T>): import("react").JSX.Element;
79
+ //# sourceMappingURL=devices-panel-view.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"devices-panel-view.d.ts","sourceRoot":"","sources":["../../../../src/components/features/devices/devices-panel-view.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGlD,OAAO,EAEL,KAAK,SAAS,EACd,KAAK,kBAAkB,EAEvB,KAAK,UAAU,EACf,KAAK,gBAAgB,EAGtB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAwB,KAAK,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AAIhG,OAAO,EAAoB,KAAK,kBAAkB,EAA0B,MAAM,yBAAyB,CAAC;AAC5G,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAExD,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,MAAM,CAAC;AAO/C,+FAA+F;AAC/F,eAAO,MAAM,oBAAoB,EAAE,yBAelC,CAAC;AAEF,MAAM,WAAW,qBAAqB,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS;IACpE,iDAAiD;IACjD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uEAAuE;IACvE,UAAU,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,IAAI,CAAA;KAAE,CAAC;IACrD,0EAA0E;IAC1E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,UAAU,CAAC,EAAE,SAAS,CAAC;IAEvB,QAAQ,EAAE,eAAe,CAAC;IAC1B,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,eAAe,KAAK,IAAI,CAAC;IACnD,qDAAqD;IACrD,OAAO,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAE7B,oFAAoF;IACpF,OAAO,EAAE,CAAC,EAAE,CAAC;IACb;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,mGAAmG;IACnG,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,mDAAmD;IACnD,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,mFAAmF;IACnF,aAAa,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;IACrC,gHAAgH;IAChH,aAAa,CAAC,EAAE,kBAAkB,EAAE,CAAC;IACrC,0EAA0E;IAC1E,OAAO,CAAC,EAAE,yBAAyB,CAAC;IACpC,kCAAkC;IAClC,aAAa,CAAC,EAAE,kBAAkB,CAAC;IACnC,qBAAqB,CAAC,EAAE,UAAU,CAAC,kBAAkB,CAAC,CAAC;IACvD,2EAA2E;IAC3E,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACvC,mBAAmB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,KAAK,IAAI,CAAC;IAElE,4DAA4D;IAC5D,aAAa,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;IAC7B,2FAA2F;IAC3F,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,sFAAsF;IACtF,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,4CAA4C;IAC5C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,sFAAsF;IACtF,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,yEAAyE;IACzE,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,2CAA2C;IAC3C,eAAe,CAAC,EAAE,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;CACpD;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS,EAAE,EAChE,KAAiB,EACjB,UAAU,EACV,SAAc,EACd,UAAU,EACV,QAAQ,EACR,gBAAgB,EAChB,OAAO,EACP,OAAO,EACP,OAAe,EACf,WAAmB,EACnB,UAAU,EACV,aAAoB,EACpB,aAAa,EACb,OAA8B,EAC9B,aAAa,EACb,qBAAqB,EACrB,WAAwB,EACxB,mBAA0B,EAC1B,aAAa,EACb,WAAW,EACX,WAAW,EACX,YAAwE,EACxE,UAAU,EACV,eAAuB,EACvB,WAAmB,EACnB,kBAA0B,EAC1B,UAAiB,EACjB,eAAe,GAChB,EAAE,qBAAqB,CAAC,CAAC,CAAC,+BAgH1B"}
@@ -0,0 +1,76 @@
1
+ import type React from 'react';
2
+ import { type ReactNode } from 'react';
3
+ import { type ColumnDef, type ColumnFiltersState, type NoDataProps, type OnChangeFn } from '../../ui';
4
+ import type { DeviceFilters, DeviceRow } from './types';
5
+ /**
6
+ * The row-actions column, declared here beside every other device column so the
7
+ * loaded table and its loading state can't disagree about the column set.
8
+ *
9
+ * `renderRowActions` is optional because a loading table has no rows to act on
10
+ *, omit it and the column keeps its width and alignment while drawing nothing,
11
+ * which is exactly what the skeleton needs. Leaving the column out instead
12
+ * shifted every other column, since it takes real width from them.
13
+ */
14
+ export declare function getDeviceActionsColumn<T extends DeviceRow = DeviceRow>(renderRowActions?: (device: T) => React.ReactNode): ColumnDef<T>;
15
+ export declare function getDeviceOpenColumn<T extends DeviceRow = DeviceRow>(): ColumnDef<T>;
16
+ export interface DevicesTableBodyProps<T extends DeviceRow = DeviceRow> {
17
+ devices: T[];
18
+ isLoading?: boolean;
19
+ /**
20
+ * The empty state, as the design's `data-placeholder`: icon over a title over
21
+ * a description. Wins over `emptyMessage` when both are given.
22
+ */
23
+ emptyState?: NoDataProps;
24
+ /** @deprecated Single-line variant of {@link emptyState}, pass `emptyState` instead. */
25
+ emptyMessage?: string;
26
+ skeletonRows?: number;
27
+ stickyHeaderOffset?: string;
28
+ footerSlot?: ReactNode;
29
+ deviceFilters?: DeviceFilters | null;
30
+ columnFilters?: ColumnFiltersState;
31
+ onColumnFiltersChange?: OnChangeFn<ColumnFiltersState>;
32
+ /** Optional extra column inserted before the open-in-new-tab column (e.g. row actions on the dedicated page). */
33
+ actionsColumn?: ColumnDef<T>;
34
+ /** Column ids to drop from the base table columns (e.g. ['organization'] when scoped to a single org). */
35
+ hideColumns?: string[];
36
+ /** Column ids whose header filter is dropped while the column stays visible (e.g. ['status'] on the archive page). */
37
+ disableColumnFilters?: string[];
38
+ /** The facet query is still in flight, see `getDeviceTableColumns`. */
39
+ filtersPending?: boolean;
40
+ /** Server-side total (for paginated lists). Falls back to loaded-row count when omitted. */
41
+ totalCount?: number;
42
+ /**
43
+ * Render the column header. Default true.
44
+ *
45
+ * Pass `false` to drop it over a genuinely empty list, column labels above
46
+ * nothing are noise, and the empty message reads better without a row of
47
+ * headings it does not explain. Keep it `true` while loading (the skeleton
48
+ * rows are the content it belongs to) and whenever the emptiness is the RESULT
49
+ * of narrowing: the column funnels live in this header, so removing it would
50
+ * strip the only way to undo the filter that emptied the table.
51
+ */
52
+ showHeader?: boolean;
53
+ }
54
+ export declare function DevicesTableBody<T extends DeviceRow = DeviceRow>({ devices, isLoading, emptyState, emptyMessage, skeletonRows, stickyHeaderOffset, footerSlot, deviceFilters, columnFilters, onColumnFiltersChange, actionsColumn, hideColumns, disableColumnFilters, filtersPending, totalCount, showHeader, }: DevicesTableBodyProps<T>): React.JSX.Element;
55
+ export interface DeviceFilterColumn {
56
+ key: string;
57
+ label: string;
58
+ filterable?: boolean;
59
+ filterOptions?: DeviceFilterOption[];
60
+ }
61
+ /** A device filter dropdown entry: `meta.filter.options` plus the facet count. */
62
+ export interface DeviceFilterOption {
63
+ id: string;
64
+ label: string;
65
+ value: string;
66
+ count?: number;
67
+ }
68
+ export declare function getDeviceFilterColumns(deviceFilters?: DeviceFilters | null): DeviceFilterColumn[];
69
+ /**
70
+ * @param filtersPending The `deviceFilters` query is in flight, keeps the
71
+ * funnels drawn (inert) rather than growing them when it answers. Absent means
72
+ * these are the final options: an empty one then hides its funnel, which is what
73
+ * a list with no facet source of its own wants.
74
+ */
75
+ export declare function getDeviceTableColumns<T extends DeviceRow = DeviceRow>(deviceFilters?: DeviceFilters | null, filtersPending?: boolean): ColumnDef<T>[];
76
+ //# sourceMappingURL=devices-table-columns.d.ts.map