@ind-ds/core 0.1.0

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 (347) hide show
  1. package/README.md +41 -0
  2. package/dist/cjs/ind-alarm.cjs.entry.js +35 -0
  3. package/dist/cjs/ind-alarm.cjs.entry.js.map +1 -0
  4. package/dist/cjs/ind-app-header.cjs.entry.js +42 -0
  5. package/dist/cjs/ind-app-header.cjs.entry.js.map +1 -0
  6. package/dist/cjs/ind-button.cjs.entry.js +79 -0
  7. package/dist/cjs/ind-button.cjs.entry.js.map +1 -0
  8. package/dist/cjs/ind-checkbox.cjs.entry.js +49 -0
  9. package/dist/cjs/ind-checkbox.cjs.entry.js.map +1 -0
  10. package/dist/cjs/ind-dialog.cjs.entry.js +101 -0
  11. package/dist/cjs/ind-dialog.cjs.entry.js.map +1 -0
  12. package/dist/cjs/ind-divider.cjs.entry.js +21 -0
  13. package/dist/cjs/ind-divider.cjs.entry.js.map +1 -0
  14. package/dist/cjs/ind-ds.cjs.js +27 -0
  15. package/dist/cjs/ind-ds.cjs.js.map +1 -0
  16. package/dist/cjs/ind-fill-row.cjs.entry.js +34 -0
  17. package/dist/cjs/ind-fill-row.cjs.entry.js.map +1 -0
  18. package/dist/cjs/ind-health-card.cjs.entry.js +38 -0
  19. package/dist/cjs/ind-health-card.cjs.entry.js.map +1 -0
  20. package/dist/cjs/ind-input.cjs.entry.js +57 -0
  21. package/dist/cjs/ind-input.cjs.entry.js.map +1 -0
  22. package/dist/cjs/ind-led.cjs.entry.js +29 -0
  23. package/dist/cjs/ind-led.cjs.entry.js.map +1 -0
  24. package/dist/cjs/ind-mqtt-monitor.cjs.entry.js +75 -0
  25. package/dist/cjs/ind-mqtt-monitor.cjs.entry.js.map +1 -0
  26. package/dist/cjs/ind-nav-item.cjs.entry.js +48 -0
  27. package/dist/cjs/ind-nav-item.cjs.entry.js.map +1 -0
  28. package/dist/cjs/ind-progress.cjs.entry.js +48 -0
  29. package/dist/cjs/ind-progress.cjs.entry.js.map +1 -0
  30. package/dist/cjs/ind-scara-canvas.cjs.entry.js +57 -0
  31. package/dist/cjs/ind-scara-canvas.cjs.entry.js.map +1 -0
  32. package/dist/cjs/ind-select.cjs.entry.js +55 -0
  33. package/dist/cjs/ind-select.cjs.entry.js.map +1 -0
  34. package/dist/cjs/ind-shelf-canvas.cjs.entry.js +88 -0
  35. package/dist/cjs/ind-shelf-canvas.cjs.entry.js.map +1 -0
  36. package/dist/cjs/ind-sidebar-nav.cjs.entry.js +20 -0
  37. package/dist/cjs/ind-sidebar-nav.cjs.entry.js.map +1 -0
  38. package/dist/cjs/ind-status-bar.cjs.entry.js +22 -0
  39. package/dist/cjs/ind-status-bar.cjs.entry.js.map +1 -0
  40. package/dist/cjs/ind-status-dot.cjs.entry.js +31 -0
  41. package/dist/cjs/ind-status-dot.cjs.entry.js.map +1 -0
  42. package/dist/cjs/ind-textarea.cjs.entry.js +66 -0
  43. package/dist/cjs/ind-textarea.cjs.entry.js.map +1 -0
  44. package/dist/cjs/ind-toolbar-action.cjs.entry.js +23 -0
  45. package/dist/cjs/ind-toolbar-action.cjs.entry.js.map +1 -0
  46. package/dist/cjs/ind-value.cjs.entry.js +47 -0
  47. package/dist/cjs/ind-value.cjs.entry.js.map +1 -0
  48. package/dist/cjs/ind-valve.cjs.entry.js +31 -0
  49. package/dist/cjs/ind-valve.cjs.entry.js.map +1 -0
  50. package/dist/cjs/index-ph7ZTjuY.js +1638 -0
  51. package/dist/cjs/index-ph7ZTjuY.js.map +1 -0
  52. package/dist/cjs/index.cjs.js +5 -0
  53. package/dist/cjs/index.cjs.js.map +1 -0
  54. package/dist/cjs/loader.cjs.js +15 -0
  55. package/dist/cjs/loader.cjs.js.map +1 -0
  56. package/dist/collection/collection-manifest.json +35 -0
  57. package/dist/collection/components/atoms/alarm/alarm.css +87 -0
  58. package/dist/collection/components/atoms/alarm/alarm.js +122 -0
  59. package/dist/collection/components/atoms/alarm/alarm.js.map +1 -0
  60. package/dist/collection/components/atoms/button/button.css +110 -0
  61. package/dist/collection/components/atoms/button/button.js +215 -0
  62. package/dist/collection/components/atoms/button/button.js.map +1 -0
  63. package/dist/collection/components/atoms/checkbox/checkbox.css +92 -0
  64. package/dist/collection/components/atoms/checkbox/checkbox.js +214 -0
  65. package/dist/collection/components/atoms/checkbox/checkbox.js.map +1 -0
  66. package/dist/collection/components/atoms/dialog/dialog.css +85 -0
  67. package/dist/collection/components/atoms/dialog/dialog.js +265 -0
  68. package/dist/collection/components/atoms/dialog/dialog.js.map +1 -0
  69. package/dist/collection/components/atoms/divider/divider.css +16 -0
  70. package/dist/collection/components/atoms/divider/divider.js +50 -0
  71. package/dist/collection/components/atoms/divider/divider.js.map +1 -0
  72. package/dist/collection/components/atoms/input/input.css +92 -0
  73. package/dist/collection/components/atoms/input/input.js +427 -0
  74. package/dist/collection/components/atoms/input/input.js.map +1 -0
  75. package/dist/collection/components/atoms/led/led.css +91 -0
  76. package/dist/collection/components/atoms/led/led.js +123 -0
  77. package/dist/collection/components/atoms/led/led.js.map +1 -0
  78. package/dist/collection/components/atoms/progress/progress.css +69 -0
  79. package/dist/collection/components/atoms/progress/progress.js +221 -0
  80. package/dist/collection/components/atoms/progress/progress.js.map +1 -0
  81. package/dist/collection/components/atoms/scara-canvas/scara-canvas.css +100 -0
  82. package/dist/collection/components/atoms/scara-canvas/scara-canvas.js +138 -0
  83. package/dist/collection/components/atoms/scara-canvas/scara-canvas.js.map +1 -0
  84. package/dist/collection/components/atoms/select/select.css +88 -0
  85. package/dist/collection/components/atoms/select/select.js +244 -0
  86. package/dist/collection/components/atoms/select/select.js.map +1 -0
  87. package/dist/collection/components/atoms/shelf-canvas/shelf-canvas.css +67 -0
  88. package/dist/collection/components/atoms/shelf-canvas/shelf-canvas.js +184 -0
  89. package/dist/collection/components/atoms/shelf-canvas/shelf-canvas.js.map +1 -0
  90. package/dist/collection/components/atoms/status-dot/status-dot.css +69 -0
  91. package/dist/collection/components/atoms/status-dot/status-dot.js +125 -0
  92. package/dist/collection/components/atoms/status-dot/status-dot.js.map +1 -0
  93. package/dist/collection/components/atoms/textarea/textarea.css +74 -0
  94. package/dist/collection/components/atoms/textarea/textarea.js +331 -0
  95. package/dist/collection/components/atoms/textarea/textarea.js.map +1 -0
  96. package/dist/collection/components/atoms/value/value.css +115 -0
  97. package/dist/collection/components/atoms/value/value.js +223 -0
  98. package/dist/collection/components/atoms/value/value.js.map +1 -0
  99. package/dist/collection/components/atoms/valve/valve.css +101 -0
  100. package/dist/collection/components/atoms/valve/valve.js +150 -0
  101. package/dist/collection/components/atoms/valve/valve.js.map +1 -0
  102. package/dist/collection/components/molecules/fill-row/fill-row.css +70 -0
  103. package/dist/collection/components/molecules/fill-row/fill-row.js +181 -0
  104. package/dist/collection/components/molecules/fill-row/fill-row.js.map +1 -0
  105. package/dist/collection/components/molecules/health-card/health-card.css +53 -0
  106. package/dist/collection/components/molecules/health-card/health-card.js +124 -0
  107. package/dist/collection/components/molecules/health-card/health-card.js.map +1 -0
  108. package/dist/collection/components/molecules/nav-item/nav-item.css +82 -0
  109. package/dist/collection/components/molecules/nav-item/nav-item.js +165 -0
  110. package/dist/collection/components/molecules/nav-item/nav-item.js.map +1 -0
  111. package/dist/collection/components/molecules/toolbar-action/toolbar-action.css +36 -0
  112. package/dist/collection/components/molecules/toolbar-action/toolbar-action.js +45 -0
  113. package/dist/collection/components/molecules/toolbar-action/toolbar-action.js.map +1 -0
  114. package/dist/collection/components/organisms/app-header/app-header.css +127 -0
  115. package/dist/collection/components/organisms/app-header/app-header.js +256 -0
  116. package/dist/collection/components/organisms/app-header/app-header.js.map +1 -0
  117. package/dist/collection/components/organisms/mqtt-monitor/mqtt-monitor.css +96 -0
  118. package/dist/collection/components/organisms/mqtt-monitor/mqtt-monitor.js +205 -0
  119. package/dist/collection/components/organisms/mqtt-monitor/mqtt-monitor.js.map +1 -0
  120. package/dist/collection/components/organisms/sidebar-nav/sidebar-nav.css +39 -0
  121. package/dist/collection/components/organisms/sidebar-nav/sidebar-nav.js +26 -0
  122. package/dist/collection/components/organisms/sidebar-nav/sidebar-nav.js.map +1 -0
  123. package/dist/collection/components/organisms/status-bar/status-bar.css +34 -0
  124. package/dist/collection/components/organisms/status-bar/status-bar.js +76 -0
  125. package/dist/collection/components/organisms/status-bar/status-bar.js.map +1 -0
  126. package/dist/collection/index.js +2 -0
  127. package/dist/collection/index.js.map +1 -0
  128. package/dist/components/ind-alarm.d.ts +11 -0
  129. package/dist/components/ind-alarm.js +2 -0
  130. package/dist/components/ind-alarm.js.map +1 -0
  131. package/dist/components/ind-app-header.d.ts +11 -0
  132. package/dist/components/ind-app-header.js +2 -0
  133. package/dist/components/ind-app-header.js.map +1 -0
  134. package/dist/components/ind-button.d.ts +11 -0
  135. package/dist/components/ind-button.js +2 -0
  136. package/dist/components/ind-button.js.map +1 -0
  137. package/dist/components/ind-checkbox.d.ts +11 -0
  138. package/dist/components/ind-checkbox.js +2 -0
  139. package/dist/components/ind-checkbox.js.map +1 -0
  140. package/dist/components/ind-dialog.d.ts +11 -0
  141. package/dist/components/ind-dialog.js +2 -0
  142. package/dist/components/ind-dialog.js.map +1 -0
  143. package/dist/components/ind-divider.d.ts +11 -0
  144. package/dist/components/ind-divider.js +2 -0
  145. package/dist/components/ind-divider.js.map +1 -0
  146. package/dist/components/ind-fill-row.d.ts +11 -0
  147. package/dist/components/ind-fill-row.js +2 -0
  148. package/dist/components/ind-fill-row.js.map +1 -0
  149. package/dist/components/ind-health-card.d.ts +11 -0
  150. package/dist/components/ind-health-card.js +2 -0
  151. package/dist/components/ind-health-card.js.map +1 -0
  152. package/dist/components/ind-input.d.ts +11 -0
  153. package/dist/components/ind-input.js +2 -0
  154. package/dist/components/ind-input.js.map +1 -0
  155. package/dist/components/ind-led.d.ts +11 -0
  156. package/dist/components/ind-led.js +2 -0
  157. package/dist/components/ind-led.js.map +1 -0
  158. package/dist/components/ind-mqtt-monitor.d.ts +11 -0
  159. package/dist/components/ind-mqtt-monitor.js +2 -0
  160. package/dist/components/ind-mqtt-monitor.js.map +1 -0
  161. package/dist/components/ind-nav-item.d.ts +11 -0
  162. package/dist/components/ind-nav-item.js +2 -0
  163. package/dist/components/ind-nav-item.js.map +1 -0
  164. package/dist/components/ind-progress.d.ts +11 -0
  165. package/dist/components/ind-progress.js +2 -0
  166. package/dist/components/ind-progress.js.map +1 -0
  167. package/dist/components/ind-scara-canvas.d.ts +11 -0
  168. package/dist/components/ind-scara-canvas.js +2 -0
  169. package/dist/components/ind-scara-canvas.js.map +1 -0
  170. package/dist/components/ind-select.d.ts +11 -0
  171. package/dist/components/ind-select.js +2 -0
  172. package/dist/components/ind-select.js.map +1 -0
  173. package/dist/components/ind-shelf-canvas.d.ts +11 -0
  174. package/dist/components/ind-shelf-canvas.js +2 -0
  175. package/dist/components/ind-shelf-canvas.js.map +1 -0
  176. package/dist/components/ind-sidebar-nav.d.ts +11 -0
  177. package/dist/components/ind-sidebar-nav.js +2 -0
  178. package/dist/components/ind-sidebar-nav.js.map +1 -0
  179. package/dist/components/ind-status-bar.d.ts +11 -0
  180. package/dist/components/ind-status-bar.js +2 -0
  181. package/dist/components/ind-status-bar.js.map +1 -0
  182. package/dist/components/ind-status-dot.d.ts +11 -0
  183. package/dist/components/ind-status-dot.js +2 -0
  184. package/dist/components/ind-status-dot.js.map +1 -0
  185. package/dist/components/ind-textarea.d.ts +11 -0
  186. package/dist/components/ind-textarea.js +2 -0
  187. package/dist/components/ind-textarea.js.map +1 -0
  188. package/dist/components/ind-toolbar-action.d.ts +11 -0
  189. package/dist/components/ind-toolbar-action.js +2 -0
  190. package/dist/components/ind-toolbar-action.js.map +1 -0
  191. package/dist/components/ind-value.d.ts +11 -0
  192. package/dist/components/ind-value.js +2 -0
  193. package/dist/components/ind-value.js.map +1 -0
  194. package/dist/components/ind-valve.d.ts +11 -0
  195. package/dist/components/ind-valve.js +2 -0
  196. package/dist/components/ind-valve.js.map +1 -0
  197. package/dist/components/index.d.ts +35 -0
  198. package/dist/components/index.js +2 -0
  199. package/dist/components/index.js.map +1 -0
  200. package/dist/components/p-D-FsSjAC.js +2 -0
  201. package/dist/components/p-D-FsSjAC.js.map +1 -0
  202. package/dist/components/p-acsAzrRn.js +2 -0
  203. package/dist/components/p-acsAzrRn.js.map +1 -0
  204. package/dist/docs.d.ts +480 -0
  205. package/dist/docs.json +5360 -0
  206. package/dist/esm/ind-alarm.entry.js +33 -0
  207. package/dist/esm/ind-alarm.entry.js.map +1 -0
  208. package/dist/esm/ind-app-header.entry.js +40 -0
  209. package/dist/esm/ind-app-header.entry.js.map +1 -0
  210. package/dist/esm/ind-button.entry.js +77 -0
  211. package/dist/esm/ind-button.entry.js.map +1 -0
  212. package/dist/esm/ind-checkbox.entry.js +47 -0
  213. package/dist/esm/ind-checkbox.entry.js.map +1 -0
  214. package/dist/esm/ind-dialog.entry.js +99 -0
  215. package/dist/esm/ind-dialog.entry.js.map +1 -0
  216. package/dist/esm/ind-divider.entry.js +19 -0
  217. package/dist/esm/ind-divider.entry.js.map +1 -0
  218. package/dist/esm/ind-ds.js +23 -0
  219. package/dist/esm/ind-ds.js.map +1 -0
  220. package/dist/esm/ind-fill-row.entry.js +32 -0
  221. package/dist/esm/ind-fill-row.entry.js.map +1 -0
  222. package/dist/esm/ind-health-card.entry.js +36 -0
  223. package/dist/esm/ind-health-card.entry.js.map +1 -0
  224. package/dist/esm/ind-input.entry.js +55 -0
  225. package/dist/esm/ind-input.entry.js.map +1 -0
  226. package/dist/esm/ind-led.entry.js +27 -0
  227. package/dist/esm/ind-led.entry.js.map +1 -0
  228. package/dist/esm/ind-mqtt-monitor.entry.js +73 -0
  229. package/dist/esm/ind-mqtt-monitor.entry.js.map +1 -0
  230. package/dist/esm/ind-nav-item.entry.js +46 -0
  231. package/dist/esm/ind-nav-item.entry.js.map +1 -0
  232. package/dist/esm/ind-progress.entry.js +46 -0
  233. package/dist/esm/ind-progress.entry.js.map +1 -0
  234. package/dist/esm/ind-scara-canvas.entry.js +55 -0
  235. package/dist/esm/ind-scara-canvas.entry.js.map +1 -0
  236. package/dist/esm/ind-select.entry.js +53 -0
  237. package/dist/esm/ind-select.entry.js.map +1 -0
  238. package/dist/esm/ind-shelf-canvas.entry.js +86 -0
  239. package/dist/esm/ind-shelf-canvas.entry.js.map +1 -0
  240. package/dist/esm/ind-sidebar-nav.entry.js +18 -0
  241. package/dist/esm/ind-sidebar-nav.entry.js.map +1 -0
  242. package/dist/esm/ind-status-bar.entry.js +20 -0
  243. package/dist/esm/ind-status-bar.entry.js.map +1 -0
  244. package/dist/esm/ind-status-dot.entry.js +29 -0
  245. package/dist/esm/ind-status-dot.entry.js.map +1 -0
  246. package/dist/esm/ind-textarea.entry.js +64 -0
  247. package/dist/esm/ind-textarea.entry.js.map +1 -0
  248. package/dist/esm/ind-toolbar-action.entry.js +21 -0
  249. package/dist/esm/ind-toolbar-action.entry.js.map +1 -0
  250. package/dist/esm/ind-value.entry.js +45 -0
  251. package/dist/esm/ind-value.entry.js.map +1 -0
  252. package/dist/esm/ind-valve.entry.js +29 -0
  253. package/dist/esm/ind-valve.entry.js.map +1 -0
  254. package/dist/esm/index-D2yNiL0d.js +1628 -0
  255. package/dist/esm/index-D2yNiL0d.js.map +1 -0
  256. package/dist/esm/index.js +4 -0
  257. package/dist/esm/index.js.map +1 -0
  258. package/dist/esm/loader.js +13 -0
  259. package/dist/esm/loader.js.map +1 -0
  260. package/dist/ind-ds/ind-ds.css +1 -0
  261. package/dist/ind-ds/ind-ds.esm.js +2 -0
  262. package/dist/ind-ds/ind-ds.esm.js.map +1 -0
  263. package/dist/ind-ds/index.esm.js +2 -0
  264. package/dist/ind-ds/index.esm.js.map +1 -0
  265. package/dist/ind-ds/p-0840007d.entry.js +2 -0
  266. package/dist/ind-ds/p-0840007d.entry.js.map +1 -0
  267. package/dist/ind-ds/p-1727b403.entry.js +2 -0
  268. package/dist/ind-ds/p-1727b403.entry.js.map +1 -0
  269. package/dist/ind-ds/p-1d871f3f.entry.js +2 -0
  270. package/dist/ind-ds/p-1d871f3f.entry.js.map +1 -0
  271. package/dist/ind-ds/p-296b0c55.entry.js +2 -0
  272. package/dist/ind-ds/p-296b0c55.entry.js.map +1 -0
  273. package/dist/ind-ds/p-459405b6.entry.js +2 -0
  274. package/dist/ind-ds/p-459405b6.entry.js.map +1 -0
  275. package/dist/ind-ds/p-4a4811ab.entry.js +2 -0
  276. package/dist/ind-ds/p-4a4811ab.entry.js.map +1 -0
  277. package/dist/ind-ds/p-52b18003.entry.js +2 -0
  278. package/dist/ind-ds/p-52b18003.entry.js.map +1 -0
  279. package/dist/ind-ds/p-5369d63a.entry.js +2 -0
  280. package/dist/ind-ds/p-5369d63a.entry.js.map +1 -0
  281. package/dist/ind-ds/p-595ccdce.entry.js +2 -0
  282. package/dist/ind-ds/p-595ccdce.entry.js.map +1 -0
  283. package/dist/ind-ds/p-6c5c8053.entry.js +2 -0
  284. package/dist/ind-ds/p-6c5c8053.entry.js.map +1 -0
  285. package/dist/ind-ds/p-6c8f4bbd.entry.js +2 -0
  286. package/dist/ind-ds/p-6c8f4bbd.entry.js.map +1 -0
  287. package/dist/ind-ds/p-781e21df.entry.js +2 -0
  288. package/dist/ind-ds/p-781e21df.entry.js.map +1 -0
  289. package/dist/ind-ds/p-8817625a.entry.js +2 -0
  290. package/dist/ind-ds/p-8817625a.entry.js.map +1 -0
  291. package/dist/ind-ds/p-99f55d2a.entry.js +2 -0
  292. package/dist/ind-ds/p-99f55d2a.entry.js.map +1 -0
  293. package/dist/ind-ds/p-9b93fb09.entry.js +2 -0
  294. package/dist/ind-ds/p-9b93fb09.entry.js.map +1 -0
  295. package/dist/ind-ds/p-D2yNiL0d.js +3 -0
  296. package/dist/ind-ds/p-D2yNiL0d.js.map +1 -0
  297. package/dist/ind-ds/p-c8de42e9.entry.js +2 -0
  298. package/dist/ind-ds/p-c8de42e9.entry.js.map +1 -0
  299. package/dist/ind-ds/p-c9f752e6.entry.js +2 -0
  300. package/dist/ind-ds/p-c9f752e6.entry.js.map +1 -0
  301. package/dist/ind-ds/p-cee8bf2b.entry.js +2 -0
  302. package/dist/ind-ds/p-cee8bf2b.entry.js.map +1 -0
  303. package/dist/ind-ds/p-cf07b580.entry.js +2 -0
  304. package/dist/ind-ds/p-cf07b580.entry.js.map +1 -0
  305. package/dist/ind-ds/p-d1edc052.entry.js +2 -0
  306. package/dist/ind-ds/p-d1edc052.entry.js.map +1 -0
  307. package/dist/ind-ds/p-ea24a59d.entry.js +2 -0
  308. package/dist/ind-ds/p-ea24a59d.entry.js.map +1 -0
  309. package/dist/ind-ds/p-ec0b3785.entry.js +2 -0
  310. package/dist/ind-ds/p-ec0b3785.entry.js.map +1 -0
  311. package/dist/ind-ds/p-ee453874.entry.js +2 -0
  312. package/dist/ind-ds/p-ee453874.entry.js.map +1 -0
  313. package/dist/index.cjs.js +1 -0
  314. package/dist/index.js +1 -0
  315. package/dist/types/components/atoms/alarm/alarm.d.ts +13 -0
  316. package/dist/types/components/atoms/button/button.d.ts +31 -0
  317. package/dist/types/components/atoms/checkbox/checkbox.d.ts +18 -0
  318. package/dist/types/components/atoms/dialog/dialog.d.ts +29 -0
  319. package/dist/types/components/atoms/divider/divider.d.ts +6 -0
  320. package/dist/types/components/atoms/input/input.d.ts +34 -0
  321. package/dist/types/components/atoms/led/led.d.ts +14 -0
  322. package/dist/types/components/atoms/progress/progress.d.ts +24 -0
  323. package/dist/types/components/atoms/scara-canvas/scara-canvas.d.ts +21 -0
  324. package/dist/types/components/atoms/select/select.d.ts +27 -0
  325. package/dist/types/components/atoms/shelf-canvas/shelf-canvas.d.ts +29 -0
  326. package/dist/types/components/atoms/status-dot/status-dot.d.ts +14 -0
  327. package/dist/types/components/atoms/textarea/textarea.d.ts +28 -0
  328. package/dist/types/components/atoms/value/value.d.ts +24 -0
  329. package/dist/types/components/atoms/valve/valve.d.ts +17 -0
  330. package/dist/types/components/molecules/fill-row/fill-row.d.ts +19 -0
  331. package/dist/types/components/molecules/health-card/health-card.d.ts +13 -0
  332. package/dist/types/components/molecules/nav-item/nav-item.d.ts +17 -0
  333. package/dist/types/components/molecules/toolbar-action/toolbar-action.d.ts +6 -0
  334. package/dist/types/components/organisms/app-header/app-header.d.ts +26 -0
  335. package/dist/types/components/organisms/mqtt-monitor/mqtt-monitor.d.ts +23 -0
  336. package/dist/types/components/organisms/sidebar-nav/sidebar-nav.d.ts +11 -0
  337. package/dist/types/components/organisms/status-bar/status-bar.d.ts +13 -0
  338. package/dist/types/components.d.ts +1775 -0
  339. package/dist/types/index.d.ts +21 -0
  340. package/dist/types/stencil-public-runtime.d.ts +1861 -0
  341. package/loader/cdn.js +1 -0
  342. package/loader/index.cjs.js +1 -0
  343. package/loader/index.d.ts +24 -0
  344. package/loader/index.es2017.js +1 -0
  345. package/loader/index.js +2 -0
  346. package/package.json +87 -0
  347. package/utilities.css +324 -0
@@ -0,0 +1,256 @@
1
+ import { h, Host } from "@stencil/core";
2
+ export class IndAppHeader {
3
+ /** Brand name (uppercase by convention). */
4
+ brand;
5
+ /** Sub-brand line (e.g. "Maintenance Console"). */
6
+ subBrand;
7
+ /** Machine identifier shown next to the brand. */
8
+ machineId;
9
+ /** Broker / realtime connection state — drives the dot. */
10
+ mqttState = 'neutral';
11
+ /** Label rendered next to the dot (e.g. "Connected"). */
12
+ mqttLabel;
13
+ /** App version (e.g. "v1.4.2"). */
14
+ version;
15
+ /** Documentation URL. */
16
+ docsUrl;
17
+ /** Hide the built-in "Change machine" button. */
18
+ hideChangeMachine = false;
19
+ /** Hide the built-in "Disconnect" button. */
20
+ hideDisconnect = false;
21
+ indChangeMachine;
22
+ indDisconnect;
23
+ render() {
24
+ return (h(Host, { key: 'c65d79c697786cf1e17f3d13a1f5475da46e66ac', role: "banner" }, h("div", { key: '4c17ab40581251748f4bfbdceb8553d736b9288b', class: "brand", part: "brand" }, h("slot", { key: '2e4a11be914770ce6cf3b2e2a4cf7e92fbd95702', name: "logo" }, h("span", { key: 'ff2a98d37c5153a9169b188a2e77d24f49a505e5', class: "brand-logo", "aria-hidden": "true" }, "\u2B22")), h("div", { key: 'a679a938ab050aa8e2c326a88e905563134fbbc5', class: "brand-text" }, h("span", { key: '19b941fba9c4d7dbbda39242f3c6afb543c5ef6a', class: "brand-name" }, this.brand), this.subBrand && h("span", { key: 'd77217db67b0384df179638cbf98ae38697a7071', class: "brand-sub" }, this.subBrand))), this.machineId && (h("div", { key: '1e40da6c490185efe7423b1b82d5a5e56cd4cb9a', class: "machine", part: "machine" }, h("span", { key: '5ca76acc4d270e8f6adc12d0077f1371e136aded', class: "machine-label" }, "Machine"), h("span", { key: 'a10840b72441bb7adabd0f152332bfa9e081eff5', class: "machine-id" }, this.machineId))), h("div", { key: '5cfbdeb0e191cdbfa679fd0a1e205c4544065b10', class: "mqtt", part: "mqtt" }, h("ind-status-dot", { key: 'b80758c2a80a27b362651cd1251c92d3b510212e', state: this.mqttState, size: "md" }), this.mqttLabel && h("span", { key: 'a443524b51f9950e068bc815bc4e89f52bc9c296', class: "mqtt-label" }, this.mqttLabel)), h("span", { key: '84028540ba07e5f4b400e9694a2c102c0ffcb618', class: "spacer" }), h("div", { key: '42e07d1726547c318367423708e9fd7078a771ed', class: "meta", part: "meta" }, this.version && h("span", { key: '9fc02e0f44f50126554fa70e127bf5e1819b09ee', class: "version" }, this.version), this.docsUrl && (h("a", { key: '3839f6149b334591551124f4bb5eb296d0f4a296', class: "docs", href: this.docsUrl, target: "_blank", rel: "noopener noreferrer" }, "Documentation"))), h("div", { key: '4265851f62d3f66518a9e07b32933974a301376b', class: "actions", part: "actions" }, h("slot", { key: 'dffb5909cf929b3c04e47d598e746a6caf8d55f5', name: "actions" }, !this.hideChangeMachine && (h("button", { key: '824c0c0b5419753e50d8ba002dee057ba2ec2b46', type: "button", class: "action", onClick: () => this.indChangeMachine.emit() }, "Change machine")), !this.hideDisconnect && (h("button", { key: '5269a1bed2754ca7f7bfd83f0f431cae2d4c1bf5', type: "button", class: "action action--danger", onClick: () => this.indDisconnect.emit() }, "Disconnect"))))));
25
+ }
26
+ static get is() { return "ind-app-header"; }
27
+ static get encapsulation() { return "shadow"; }
28
+ static get originalStyleUrls() {
29
+ return {
30
+ "$": ["app-header.css"]
31
+ };
32
+ }
33
+ static get styleUrls() {
34
+ return {
35
+ "$": ["app-header.css"]
36
+ };
37
+ }
38
+ static get properties() {
39
+ return {
40
+ "brand": {
41
+ "type": "string",
42
+ "mutable": false,
43
+ "complexType": {
44
+ "original": "string",
45
+ "resolved": "string",
46
+ "references": {}
47
+ },
48
+ "required": true,
49
+ "optional": false,
50
+ "docs": {
51
+ "tags": [],
52
+ "text": "Brand name (uppercase by convention)."
53
+ },
54
+ "getter": false,
55
+ "setter": false,
56
+ "reflect": false,
57
+ "attribute": "brand"
58
+ },
59
+ "subBrand": {
60
+ "type": "string",
61
+ "mutable": false,
62
+ "complexType": {
63
+ "original": "string",
64
+ "resolved": "string | undefined",
65
+ "references": {}
66
+ },
67
+ "required": false,
68
+ "optional": true,
69
+ "docs": {
70
+ "tags": [],
71
+ "text": "Sub-brand line (e.g. \"Maintenance Console\")."
72
+ },
73
+ "getter": false,
74
+ "setter": false,
75
+ "reflect": false,
76
+ "attribute": "sub-brand"
77
+ },
78
+ "machineId": {
79
+ "type": "string",
80
+ "mutable": false,
81
+ "complexType": {
82
+ "original": "string",
83
+ "resolved": "string | undefined",
84
+ "references": {}
85
+ },
86
+ "required": false,
87
+ "optional": true,
88
+ "docs": {
89
+ "tags": [],
90
+ "text": "Machine identifier shown next to the brand."
91
+ },
92
+ "getter": false,
93
+ "setter": false,
94
+ "reflect": false,
95
+ "attribute": "machine-id"
96
+ },
97
+ "mqttState": {
98
+ "type": "string",
99
+ "mutable": false,
100
+ "complexType": {
101
+ "original": "AppHeaderConnectionState",
102
+ "resolved": "\"fault\" | \"maintenance\" | \"neutral\" | \"running\" | \"stopped\" | \"warning\"",
103
+ "references": {
104
+ "AppHeaderConnectionState": {
105
+ "location": "local",
106
+ "path": "C:/www/ind-ds/packages/core/src/components/organisms/app-header/app-header.tsx",
107
+ "id": "src/components/organisms/app-header/app-header.tsx::AppHeaderConnectionState"
108
+ }
109
+ }
110
+ },
111
+ "required": false,
112
+ "optional": false,
113
+ "docs": {
114
+ "tags": [],
115
+ "text": "Broker / realtime connection state \u2014 drives the dot."
116
+ },
117
+ "getter": false,
118
+ "setter": false,
119
+ "reflect": false,
120
+ "attribute": "mqtt-state",
121
+ "defaultValue": "'neutral'"
122
+ },
123
+ "mqttLabel": {
124
+ "type": "string",
125
+ "mutable": false,
126
+ "complexType": {
127
+ "original": "string",
128
+ "resolved": "string | undefined",
129
+ "references": {}
130
+ },
131
+ "required": false,
132
+ "optional": true,
133
+ "docs": {
134
+ "tags": [],
135
+ "text": "Label rendered next to the dot (e.g. \"Connected\")."
136
+ },
137
+ "getter": false,
138
+ "setter": false,
139
+ "reflect": false,
140
+ "attribute": "mqtt-label"
141
+ },
142
+ "version": {
143
+ "type": "string",
144
+ "mutable": false,
145
+ "complexType": {
146
+ "original": "string",
147
+ "resolved": "string | undefined",
148
+ "references": {}
149
+ },
150
+ "required": false,
151
+ "optional": true,
152
+ "docs": {
153
+ "tags": [],
154
+ "text": "App version (e.g. \"v1.4.2\")."
155
+ },
156
+ "getter": false,
157
+ "setter": false,
158
+ "reflect": false,
159
+ "attribute": "version"
160
+ },
161
+ "docsUrl": {
162
+ "type": "string",
163
+ "mutable": false,
164
+ "complexType": {
165
+ "original": "string",
166
+ "resolved": "string | undefined",
167
+ "references": {}
168
+ },
169
+ "required": false,
170
+ "optional": true,
171
+ "docs": {
172
+ "tags": [],
173
+ "text": "Documentation URL."
174
+ },
175
+ "getter": false,
176
+ "setter": false,
177
+ "reflect": false,
178
+ "attribute": "docs-url"
179
+ },
180
+ "hideChangeMachine": {
181
+ "type": "boolean",
182
+ "mutable": false,
183
+ "complexType": {
184
+ "original": "boolean",
185
+ "resolved": "boolean",
186
+ "references": {}
187
+ },
188
+ "required": false,
189
+ "optional": false,
190
+ "docs": {
191
+ "tags": [],
192
+ "text": "Hide the built-in \"Change machine\" button."
193
+ },
194
+ "getter": false,
195
+ "setter": false,
196
+ "reflect": false,
197
+ "attribute": "hide-change-machine",
198
+ "defaultValue": "false"
199
+ },
200
+ "hideDisconnect": {
201
+ "type": "boolean",
202
+ "mutable": false,
203
+ "complexType": {
204
+ "original": "boolean",
205
+ "resolved": "boolean",
206
+ "references": {}
207
+ },
208
+ "required": false,
209
+ "optional": false,
210
+ "docs": {
211
+ "tags": [],
212
+ "text": "Hide the built-in \"Disconnect\" button."
213
+ },
214
+ "getter": false,
215
+ "setter": false,
216
+ "reflect": false,
217
+ "attribute": "hide-disconnect",
218
+ "defaultValue": "false"
219
+ }
220
+ };
221
+ }
222
+ static get events() {
223
+ return [{
224
+ "method": "indChangeMachine",
225
+ "name": "indChangeMachine",
226
+ "bubbles": true,
227
+ "cancelable": true,
228
+ "composed": true,
229
+ "docs": {
230
+ "tags": [],
231
+ "text": ""
232
+ },
233
+ "complexType": {
234
+ "original": "void",
235
+ "resolved": "void",
236
+ "references": {}
237
+ }
238
+ }, {
239
+ "method": "indDisconnect",
240
+ "name": "indDisconnect",
241
+ "bubbles": true,
242
+ "cancelable": true,
243
+ "composed": true,
244
+ "docs": {
245
+ "tags": [],
246
+ "text": ""
247
+ },
248
+ "complexType": {
249
+ "original": "void",
250
+ "resolved": "void",
251
+ "references": {}
252
+ }
253
+ }];
254
+ }
255
+ }
256
+ //# sourceMappingURL=app-header.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app-header.js","sourceRoot":"","sources":["../../../../src/components/organisms/app-header/app-header.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Prop, Event, EventEmitter, h, Host } from '@stencil/core';\n\nexport type AppHeaderConnectionState =\n | 'running' | 'fault' | 'warning' | 'maintenance' | 'stopped' | 'neutral';\n\n@Component({\n tag: 'ind-app-header',\n styleUrl: 'app-header.css',\n shadow: true,\n})\nexport class IndAppHeader {\n /** Brand name (uppercase by convention). */\n @Prop() brand!: string;\n /** Sub-brand line (e.g. \"Maintenance Console\"). */\n @Prop() subBrand?: string;\n /** Machine identifier shown next to the brand. */\n @Prop() machineId?: string;\n /** Broker / realtime connection state — drives the dot. */\n @Prop() mqttState: AppHeaderConnectionState = 'neutral';\n /** Label rendered next to the dot (e.g. \"Connected\"). */\n @Prop() mqttLabel?: string;\n /** App version (e.g. \"v1.4.2\"). */\n @Prop() version?: string;\n /** Documentation URL. */\n @Prop() docsUrl?: string;\n /** Hide the built-in \"Change machine\" button. */\n @Prop() hideChangeMachine: boolean = false;\n /** Hide the built-in \"Disconnect\" button. */\n @Prop() hideDisconnect: boolean = false;\n\n @Event() indChangeMachine!: EventEmitter<void>;\n @Event() indDisconnect!: EventEmitter<void>;\n\n render() {\n return (\n <Host role=\"banner\">\n <div class=\"brand\" part=\"brand\">\n <slot name=\"logo\">\n <span class=\"brand-logo\" aria-hidden=\"true\">⬢</span>\n </slot>\n <div class=\"brand-text\">\n <span class=\"brand-name\">{this.brand}</span>\n {this.subBrand && <span class=\"brand-sub\">{this.subBrand}</span>}\n </div>\n </div>\n\n {this.machineId && (\n <div class=\"machine\" part=\"machine\">\n <span class=\"machine-label\">Machine</span>\n <span class=\"machine-id\">{this.machineId}</span>\n </div>\n )}\n\n <div class=\"mqtt\" part=\"mqtt\">\n <ind-status-dot state={this.mqttState} size=\"md\" />\n {this.mqttLabel && <span class=\"mqtt-label\">{this.mqttLabel}</span>}\n </div>\n\n <span class=\"spacer\" />\n\n <div class=\"meta\" part=\"meta\">\n {this.version && <span class=\"version\">{this.version}</span>}\n {this.docsUrl && (\n <a class=\"docs\" href={this.docsUrl} target=\"_blank\" rel=\"noopener noreferrer\">\n Documentation\n </a>\n )}\n </div>\n\n <div class=\"actions\" part=\"actions\">\n <slot name=\"actions\">\n {!this.hideChangeMachine && (\n <button\n type=\"button\"\n class=\"action\"\n onClick={() => this.indChangeMachine.emit()}\n >Change machine</button>\n )}\n {!this.hideDisconnect && (\n <button\n type=\"button\"\n class=\"action action--danger\"\n onClick={() => this.indDisconnect.emit()}\n >Disconnect</button>\n )}\n </slot>\n </div>\n </Host>\n );\n }\n}\n"]}
@@ -0,0 +1,96 @@
1
+ :host {
2
+ display: flex;
3
+ flex-direction: column;
4
+ font-family: var(--ind-font-family-sans);
5
+ background: var(--ind-surface-panel);
6
+ border: 1px solid var(--ind-surface-border-default);
7
+ border-radius: var(--ind-radius-md, 3px);
8
+ overflow: hidden;
9
+ color: var(--ind-surface-text-primary, light-dark(#11161c, #eef1f5));
10
+ }
11
+
12
+ .toolbar {
13
+ display: flex;
14
+ align-items: center;
15
+ gap: var(--ind-spacing-4, 8px);
16
+ padding: var(--ind-spacing-3, 6px) var(--ind-spacing-4, 8px);
17
+ border-bottom: 1px solid var(--ind-surface-border-default);
18
+ flex-wrap: wrap;
19
+ }
20
+
21
+ .filter {
22
+ flex: 1;
23
+ min-width: 200px;
24
+ height: var(--ind-size-input-sm, 24px);
25
+ padding: 0 var(--ind-spacing-4, 8px);
26
+ background: var(--ind-surface-sunken);
27
+ border: 1px solid var(--ind-surface-border-default);
28
+ border-radius: var(--ind-radius-md, 3px);
29
+ font: inherit;
30
+ font-size: var(--ind-font-size-sm, 11px);
31
+ color: inherit;
32
+ outline: none;
33
+ box-sizing: border-box;
34
+ }
35
+ .filter::placeholder {
36
+ color: var(--ind-surface-text-muted, light-dark(#5a6776, #8390a0));
37
+ }
38
+ .filter:focus {
39
+ border-color: var(--ind-surface-focus-ring);
40
+ box-shadow: 0 0 0 2px color-mix(in srgb, var(--ind-surface-focus-ring) 35%, transparent);
41
+ }
42
+
43
+ .check {
44
+ display: inline-flex;
45
+ align-items: center;
46
+ gap: var(--ind-spacing-2, 4px);
47
+ font-size: var(--ind-font-size-sm, 11px);
48
+ cursor: pointer;
49
+ user-select: none;
50
+ white-space: nowrap;
51
+ }
52
+
53
+ .spacer { flex: 1; }
54
+
55
+ .counter {
56
+ font-family: var(--ind-font-family-mono);
57
+ font-feature-settings: var(--ind-font-feature-tabular, "tnum" 1);
58
+ color: var(--ind-surface-text-secondary, light-dark(#2a3340, #aab5c2));
59
+ font-size: var(--ind-font-size-sm, 11px);
60
+ white-space: nowrap;
61
+ }
62
+
63
+ .clear {
64
+ height: var(--ind-size-button-sm, 26px);
65
+ padding: 0 var(--ind-spacing-5, 12px);
66
+ background: var(--ind-button-default-bg);
67
+ color: var(--ind-button-default-fg);
68
+ border: 1px solid var(--ind-button-default-border);
69
+ border-radius: var(--ind-radius-md, 3px);
70
+ font: inherit;
71
+ font-size: var(--ind-font-size-sm, 11px);
72
+ font-weight: var(--ind-font-weight-semibold, 600);
73
+ cursor: pointer;
74
+ }
75
+ .clear:hover { background: var(--ind-button-default-bg-hover); }
76
+ .clear:focus-visible {
77
+ outline: 2px solid var(--ind-surface-focus-ring);
78
+ outline-offset: 2px;
79
+ }
80
+
81
+ .log {
82
+ flex: 1;
83
+ width: 100%;
84
+ box-sizing: border-box;
85
+ padding: var(--ind-spacing-3, 6px) var(--ind-spacing-4, 8px);
86
+ background: var(--ind-color-palette-neutral-0, #000);
87
+ color: var(--ind-color-palette-neutral-800, #d0d7e0);
88
+ border: none;
89
+ outline: none;
90
+ font-family: var(--ind-font-family-mono);
91
+ font-size: var(--ind-font-size-sm, 11px);
92
+ line-height: var(--ind-font-line-height-normal, 1.4);
93
+ font-feature-settings: var(--ind-font-feature-tabular, "tnum" 1);
94
+ resize: vertical;
95
+ cursor: default;
96
+ }
@@ -0,0 +1,205 @@
1
+ import { h, Host, } from "@stencil/core";
2
+ export class IndMqttMonitor {
3
+ host;
4
+ /** Full log content. Newline-separated lines. */
5
+ log = '';
6
+ /** Active filter — substring match on each line, case-insensitive. */
7
+ filterValue = '';
8
+ /** When true, the log doesn't auto-scroll on new content. */
9
+ paused = false;
10
+ /** Visible rows of the log textarea. */
11
+ rows = 18;
12
+ indFilterChange;
13
+ indPauseChange;
14
+ indClear;
15
+ componentDidLoad() {
16
+ this.scrollToBottom();
17
+ }
18
+ onLogChange() {
19
+ if (!this.paused)
20
+ this.scrollToBottom();
21
+ }
22
+ scrollToBottom() {
23
+ requestAnimationFrame(() => {
24
+ const ta = this.host.shadowRoot?.querySelector('.log');
25
+ if (ta)
26
+ ta.scrollTop = ta.scrollHeight;
27
+ });
28
+ }
29
+ filteredLines() {
30
+ const lines = this.log.split('\n');
31
+ if (!this.filterValue)
32
+ return lines;
33
+ const f = this.filterValue.toLowerCase();
34
+ return lines.filter((l) => l.toLowerCase().includes(f));
35
+ }
36
+ onFilter = (e) => {
37
+ const v = e.target.value;
38
+ this.filterValue = v;
39
+ this.indFilterChange.emit(v);
40
+ };
41
+ onPause = (e) => {
42
+ const v = e.target.checked;
43
+ this.paused = v;
44
+ this.indPauseChange.emit(v);
45
+ };
46
+ render() {
47
+ const filtered = this.filteredLines();
48
+ const total = this.log ? this.log.split('\n').filter((l) => l.length > 0).length : 0;
49
+ const visible = filtered.filter((l) => l.length > 0).length;
50
+ const countLabel = this.filterValue ? `${visible} / ${total} msg` : `${total} msg`;
51
+ return (h(Host, { key: '611c593c0c13009b372c0f3d8077c363c9801b97' }, h("div", { key: '6552180414c9c06bf728b6d94eaa4ec282f9ecc9', class: "toolbar", part: "toolbar" }, h("input", { key: '715c06c1dcd91764b619093804bd52dd9ebb512c', class: "filter", part: "filter", type: "search", placeholder: "Filter topic / payload...", value: this.filterValue, onInput: this.onFilter }), h("label", { key: 'c7fc734cd7d0e08d28191804852ef7bf11ed01c7', class: "check" }, h("input", { key: '6b250678c32e5e83b2925275cdd44579cf682933', type: "checkbox", checked: this.paused, onChange: this.onPause }), h("span", { key: '77f2a59bd50c2a8c48c27a719730ba2efc5e5b9e' }, "Pause")), h("span", { key: 'eb60e89a998c60548f62d982691ffbdc1ce08eb7', class: "spacer" }), h("span", { key: '298521f0328cb32523d63dd3a45248575313b6f6', class: "counter", part: "counter" }, countLabel), h("button", { key: '32a5aa35b0e622e8fac010a79bbd30cb434ba09e', type: "button", class: "clear", part: "clear", onClick: () => this.indClear.emit() }, "Clear")), h("textarea", { key: '7ca66e1a42cdd672faae4d14004af23c2cae7bae', class: "log", part: "log", readonly: true, rows: this.rows }, filtered.join('\n'))));
52
+ }
53
+ static get is() { return "ind-mqtt-monitor"; }
54
+ static get encapsulation() { return "shadow"; }
55
+ static get originalStyleUrls() {
56
+ return {
57
+ "$": ["mqtt-monitor.css"]
58
+ };
59
+ }
60
+ static get styleUrls() {
61
+ return {
62
+ "$": ["mqtt-monitor.css"]
63
+ };
64
+ }
65
+ static get properties() {
66
+ return {
67
+ "log": {
68
+ "type": "string",
69
+ "mutable": false,
70
+ "complexType": {
71
+ "original": "string",
72
+ "resolved": "string",
73
+ "references": {}
74
+ },
75
+ "required": false,
76
+ "optional": false,
77
+ "docs": {
78
+ "tags": [],
79
+ "text": "Full log content. Newline-separated lines."
80
+ },
81
+ "getter": false,
82
+ "setter": false,
83
+ "reflect": false,
84
+ "attribute": "log",
85
+ "defaultValue": "''"
86
+ },
87
+ "filterValue": {
88
+ "type": "string",
89
+ "mutable": true,
90
+ "complexType": {
91
+ "original": "string",
92
+ "resolved": "string",
93
+ "references": {}
94
+ },
95
+ "required": false,
96
+ "optional": false,
97
+ "docs": {
98
+ "tags": [],
99
+ "text": "Active filter \u2014 substring match on each line, case-insensitive."
100
+ },
101
+ "getter": false,
102
+ "setter": false,
103
+ "reflect": false,
104
+ "attribute": "filter-value",
105
+ "defaultValue": "''"
106
+ },
107
+ "paused": {
108
+ "type": "boolean",
109
+ "mutable": true,
110
+ "complexType": {
111
+ "original": "boolean",
112
+ "resolved": "boolean",
113
+ "references": {}
114
+ },
115
+ "required": false,
116
+ "optional": false,
117
+ "docs": {
118
+ "tags": [],
119
+ "text": "When true, the log doesn't auto-scroll on new content."
120
+ },
121
+ "getter": false,
122
+ "setter": false,
123
+ "reflect": false,
124
+ "attribute": "paused",
125
+ "defaultValue": "false"
126
+ },
127
+ "rows": {
128
+ "type": "number",
129
+ "mutable": false,
130
+ "complexType": {
131
+ "original": "number",
132
+ "resolved": "number",
133
+ "references": {}
134
+ },
135
+ "required": false,
136
+ "optional": false,
137
+ "docs": {
138
+ "tags": [],
139
+ "text": "Visible rows of the log textarea."
140
+ },
141
+ "getter": false,
142
+ "setter": false,
143
+ "reflect": false,
144
+ "attribute": "rows",
145
+ "defaultValue": "18"
146
+ }
147
+ };
148
+ }
149
+ static get events() {
150
+ return [{
151
+ "method": "indFilterChange",
152
+ "name": "indFilterChange",
153
+ "bubbles": true,
154
+ "cancelable": true,
155
+ "composed": true,
156
+ "docs": {
157
+ "tags": [],
158
+ "text": ""
159
+ },
160
+ "complexType": {
161
+ "original": "string",
162
+ "resolved": "string",
163
+ "references": {}
164
+ }
165
+ }, {
166
+ "method": "indPauseChange",
167
+ "name": "indPauseChange",
168
+ "bubbles": true,
169
+ "cancelable": true,
170
+ "composed": true,
171
+ "docs": {
172
+ "tags": [],
173
+ "text": ""
174
+ },
175
+ "complexType": {
176
+ "original": "boolean",
177
+ "resolved": "boolean",
178
+ "references": {}
179
+ }
180
+ }, {
181
+ "method": "indClear",
182
+ "name": "indClear",
183
+ "bubbles": true,
184
+ "cancelable": true,
185
+ "composed": true,
186
+ "docs": {
187
+ "tags": [],
188
+ "text": ""
189
+ },
190
+ "complexType": {
191
+ "original": "void",
192
+ "resolved": "void",
193
+ "references": {}
194
+ }
195
+ }];
196
+ }
197
+ static get elementRef() { return "host"; }
198
+ static get watchers() {
199
+ return [{
200
+ "propName": "log",
201
+ "methodName": "onLogChange"
202
+ }];
203
+ }
204
+ }
205
+ //# sourceMappingURL=mqtt-monitor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mqtt-monitor.js","sourceRoot":"","sources":["../../../../src/components/organisms/mqtt-monitor/mqtt-monitor.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n Prop,\n Event,\n EventEmitter,\n Element,\n Watch,\n h,\n Host,\n} from '@stencil/core';\n\n@Component({\n tag: 'ind-mqtt-monitor',\n styleUrl: 'mqtt-monitor.css',\n shadow: true,\n})\nexport class IndMqttMonitor {\n @Element() host!: HTMLElement;\n\n /** Full log content. Newline-separated lines. */\n @Prop() log: string = '';\n /** Active filter — substring match on each line, case-insensitive. */\n @Prop({ mutable: true }) filterValue: string = '';\n /** When true, the log doesn't auto-scroll on new content. */\n @Prop({ mutable: true }) paused: boolean = false;\n /** Visible rows of the log textarea. */\n @Prop() rows: number = 18;\n\n @Event() indFilterChange!: EventEmitter<string>;\n @Event() indPauseChange!: EventEmitter<boolean>;\n @Event() indClear!: EventEmitter<void>;\n\n componentDidLoad() {\n this.scrollToBottom();\n }\n\n @Watch('log')\n onLogChange() {\n if (!this.paused) this.scrollToBottom();\n }\n\n private scrollToBottom() {\n requestAnimationFrame(() => {\n const ta = this.host.shadowRoot?.querySelector<HTMLTextAreaElement>('.log');\n if (ta) ta.scrollTop = ta.scrollHeight;\n });\n }\n\n private filteredLines(): string[] {\n const lines = this.log.split('\\n');\n if (!this.filterValue) return lines;\n const f = this.filterValue.toLowerCase();\n return lines.filter((l) => l.toLowerCase().includes(f));\n }\n\n private onFilter = (e: Event) => {\n const v = (e.target as HTMLInputElement).value;\n this.filterValue = v;\n this.indFilterChange.emit(v);\n };\n\n private onPause = (e: Event) => {\n const v = (e.target as HTMLInputElement).checked;\n this.paused = v;\n this.indPauseChange.emit(v);\n };\n\n render() {\n const filtered = this.filteredLines();\n const total = this.log ? this.log.split('\\n').filter((l) => l.length > 0).length : 0;\n const visible = filtered.filter((l) => l.length > 0).length;\n const countLabel = this.filterValue ? `${visible} / ${total} msg` : `${total} msg`;\n return (\n <Host>\n <div class=\"toolbar\" part=\"toolbar\">\n <input\n class=\"filter\"\n part=\"filter\"\n type=\"search\"\n placeholder=\"Filter topic / payload...\"\n value={this.filterValue}\n onInput={this.onFilter}\n />\n <label class=\"check\">\n <input type=\"checkbox\" checked={this.paused} onChange={this.onPause} />\n <span>Pause</span>\n </label>\n <span class=\"spacer\" />\n <span class=\"counter\" part=\"counter\">{countLabel}</span>\n <button\n type=\"button\"\n class=\"clear\"\n part=\"clear\"\n onClick={() => this.indClear.emit()}\n >Clear</button>\n </div>\n <textarea\n class=\"log\"\n part=\"log\"\n readonly\n rows={this.rows}\n >{filtered.join('\\n')}</textarea>\n </Host>\n );\n }\n}\n"]}
@@ -0,0 +1,39 @@
1
+ :host {
2
+ display: flex;
3
+ flex-direction: column;
4
+ width: var(--ind-size-sidebar-width, 178px);
5
+ height: 100%;
6
+ background: var(--ind-surface-panel);
7
+ border-right: 1px solid var(--ind-surface-border-default);
8
+ font-family: var(--ind-font-family-sans);
9
+ color: var(--ind-surface-text-primary, light-dark(#11161c, #eef1f5));
10
+ flex-shrink: 0;
11
+ box-sizing: border-box;
12
+ }
13
+
14
+ .brand {
15
+ padding: var(--ind-spacing-4, 8px) var(--ind-spacing-5, 12px);
16
+ }
17
+
18
+ .brand:has(> :nth-child(1):empty),
19
+ .brand:not(:has(*)) { display: none; }
20
+
21
+ .items {
22
+ flex: 1;
23
+ overflow-y: auto;
24
+ padding: var(--ind-spacing-2, 4px) 0;
25
+ scrollbar-width: thin;
26
+ scrollbar-color: var(--ind-surface-border-strong) transparent;
27
+ }
28
+ .items::-webkit-scrollbar { width: 8px; }
29
+ .items::-webkit-scrollbar-thumb { background: var(--ind-surface-border-strong); border-radius: 4px; }
30
+ .items::-webkit-scrollbar-track { background: transparent; }
31
+
32
+ .footer {
33
+ padding: var(--ind-spacing-3, 6px) var(--ind-spacing-5, 12px);
34
+ border-top: 1px solid var(--ind-surface-border-subtle);
35
+ font-size: var(--ind-font-size-sm, 11px);
36
+ color: var(--ind-surface-text-muted, light-dark(#5a6776, #8390a0));
37
+ }
38
+
39
+ .footer:not(:has(*)) { display: none; }
@@ -0,0 +1,26 @@
1
+ import { h, Host } from "@stencil/core";
2
+ /**
3
+ * Sidebar shell: a brand area on top, a scrollable nav list, and a footer area.
4
+ *
5
+ * State management is left to the consumer — drive `active` on each <ind-nav-item>
6
+ * from your router. The component is intentionally thin so it works with any
7
+ * routing approach (React Router, Vue Router, hash-based, none).
8
+ */
9
+ export class IndSidebarNav {
10
+ render() {
11
+ return (h(Host, { key: '3ffd6c6d8afe2ed104b24ad1435d7a1d163c5071', role: "navigation" }, h("div", { key: '2a56d85274fca7043d8e5624a93cb99c8767fc74', class: "brand", part: "brand" }, h("slot", { key: 'd185e1c6570b33648700dd922e671f023b3d34fc', name: "brand" })), h("div", { key: '31aaa48b8e08549a3a4990cbe4ae74507b0a8ccb', class: "items", part: "items" }, h("slot", { key: '4ddb250ed915874ea6114588ab336e662526383f' })), h("div", { key: 'd666ea3f666be22246d6f2e2464a85b741b4bfed', class: "footer", part: "footer" }, h("slot", { key: 'fff6600b601ec97d47f2a79b983d0a7ef261db33', name: "footer" }))));
12
+ }
13
+ static get is() { return "ind-sidebar-nav"; }
14
+ static get encapsulation() { return "shadow"; }
15
+ static get originalStyleUrls() {
16
+ return {
17
+ "$": ["sidebar-nav.css"]
18
+ };
19
+ }
20
+ static get styleUrls() {
21
+ return {
22
+ "$": ["sidebar-nav.css"]
23
+ };
24
+ }
25
+ }
26
+ //# sourceMappingURL=sidebar-nav.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sidebar-nav.js","sourceRoot":"","sources":["../../../../src/components/organisms/sidebar-nav/sidebar-nav.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAEnD;;;;;;GAMG;AAMH,MAAM,OAAO,aAAa;IACxB,MAAM;QACJ,OAAO,CACL,EAAC,IAAI,qDAAC,IAAI,EAAC,YAAY;YACrB,4DAAK,KAAK,EAAC,OAAO,EAAC,IAAI,EAAC,OAAO;gBAC7B,6DAAM,IAAI,EAAC,OAAO,GAAG,CACjB;YACN,4DAAK,KAAK,EAAC,OAAO,EAAC,IAAI,EAAC,OAAO;gBAC7B,8DAAQ,CACJ;YACN,4DAAK,KAAK,EAAC,QAAQ,EAAC,IAAI,EAAC,QAAQ;gBAC/B,6DAAM,IAAI,EAAC,QAAQ,GAAG,CAClB,CACD,CACR,CAAC;IACJ,CAAC;;;;;;;;;CACF","sourcesContent":["import { Component, h, Host } from '@stencil/core';\n\n/**\n * Sidebar shell: a brand area on top, a scrollable nav list, and a footer area.\n *\n * State management is left to the consumer — drive `active` on each <ind-nav-item>\n * from your router. The component is intentionally thin so it works with any\n * routing approach (React Router, Vue Router, hash-based, none).\n */\n@Component({\n tag: 'ind-sidebar-nav',\n styleUrl: 'sidebar-nav.css',\n shadow: true,\n})\nexport class IndSidebarNav {\n render() {\n return (\n <Host role=\"navigation\">\n <div class=\"brand\" part=\"brand\">\n <slot name=\"brand\" />\n </div>\n <div class=\"items\" part=\"items\">\n <slot />\n </div>\n <div class=\"footer\" part=\"footer\">\n <slot name=\"footer\" />\n </div>\n </Host>\n );\n }\n}\n"]}