@matter-server/dashboard 0.2.6 → 0.2.7-alpha.0-20260118-993a1c7

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 (40) hide show
  1. package/README.md +16 -0
  2. package/dist/esm/client/models/descriptions.js +1754 -1754
  3. package/dist/esm/components/dialogs/binding/node-binding-dialog.d.ts.map +1 -1
  4. package/dist/esm/components/dialogs/binding/node-binding-dialog.js +8 -4
  5. package/dist/esm/components/dialogs/binding/node-binding-dialog.js.map +1 -1
  6. package/dist/esm/entrypoint/main.d.ts +1 -1
  7. package/dist/esm/entrypoint/main.d.ts.map +1 -1
  8. package/dist/esm/entrypoint/main.js +1 -0
  9. package/dist/esm/entrypoint/main.js.map +1 -1
  10. package/dist/esm/pages/components/header.d.ts +8 -0
  11. package/dist/esm/pages/components/header.d.ts.map +1 -1
  12. package/dist/esm/pages/components/header.js +56 -6
  13. package/dist/esm/pages/components/header.js.map +1 -1
  14. package/dist/esm/pages/matter-dashboard-app.d.ts +6 -1
  15. package/dist/esm/pages/matter-dashboard-app.d.ts.map +1 -1
  16. package/dist/esm/pages/matter-dashboard-app.js +119 -24
  17. package/dist/esm/pages/matter-dashboard-app.js.map +1 -1
  18. package/dist/esm/util/theme-service.d.ts +27 -0
  19. package/dist/esm/util/theme-service.d.ts.map +1 -0
  20. package/dist/esm/util/theme-service.js +71 -0
  21. package/dist/esm/util/theme-service.js.map +6 -0
  22. package/dist/web/index.html +35 -0
  23. package/dist/web/js/{commission-node-dialog--19-sX9D.js → commission-node-dialog-DGw5qDgH.js} +5 -5
  24. package/dist/web/js/{commission-node-existing-DY6SnsHb.js → commission-node-existing-CHyyeC8y.js} +4 -4
  25. package/dist/web/js/{commission-node-thread-CXquVvK5.js → commission-node-thread-iRDSlidy.js} +4 -4
  26. package/dist/web/js/{commission-node-wifi-VQGVOrr7.js → commission-node-wifi-C4YNR3bG.js} +4 -4
  27. package/dist/web/js/{dialog-box-qX-alVZJ.js → dialog-box-ag-xOaYh.js} +2 -2
  28. package/dist/web/js/{fire_event-B13DcOc9.js → fire_event-BeiEbHcE.js} +1 -1
  29. package/dist/web/js/main.js +140 -8
  30. package/dist/web/js/{matter-dashboard-app-CU3-L2nl.js → matter-dashboard-app-BxQ4W_uT.js} +13183 -13045
  31. package/dist/web/js/{node-binding-dialog-D4rr_G9I.js → node-binding-dialog-ClziphM0.js} +11 -7
  32. package/dist/web/js/{outlined-text-field-CtlEkpbk.js → outlined-text-field-B-CiqgEJ.js} +2 -2
  33. package/dist/web/js/{prevent_default-Dw7ifAL-.js → prevent_default-Bs2sUnny.js} +1 -1
  34. package/package.json +3 -3
  35. package/src/client/models/descriptions.ts +1754 -1754
  36. package/src/components/dialogs/binding/node-binding-dialog.ts +8 -4
  37. package/src/entrypoint/main.ts +1 -0
  38. package/src/pages/components/header.ts +57 -8
  39. package/src/pages/matter-dashboard-app.ts +123 -26
  40. package/src/util/theme-service.ts +98 -0
@@ -1 +1 @@
1
- {"version":3,"file":"node-binding-dialog.d.ts","sourceRoot":"","sources":["../../../../../src/components/dialogs/binding/node-binding-dialog.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,kCAAkC,CAAC;AAC1C,OAAO,6BAA6B,CAAC;AAErC,OAAO,yBAAyB,CAAC;AACjC,OAAO,8BAA8B,CAAC;AACtC,OAAO,6CAA6C,CAAC;AAErD,OAAO,iCAAiC,CAAC;AAEzC,OAAO,EAAqC,YAAY,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACvG,OAAO,EAAa,UAAU,EAAW,MAAM,KAAK,CAAC;AAcrD,qBACa,iBAAkB,SAAQ,UAAU;IAGtC,MAAM,EAAG,YAAY,CAAC;IAGtB,IAAI,CAAC,EAAE,UAAU,CAAC;IAGzB,QAAQ,EAAG,MAAM,CAAC;IAGlB,OAAO,CAAC,aAAa,CAAuB;IAG5C,OAAO,CAAC,eAAe,CAAuB;IAG9C,OAAO,CAAC,cAAc,CAAuB;IAE7C,OAAO,CAAC,iBAAiB;IAMzB,OAAO,CAAC,aAAa;YAQP,oBAAoB;IAclC,0EAA0E;IAC1E,OAAO,CAAC,iBAAiB;YAKX,oBAAoB;IAgBlC,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,oBAAoB;YAId,kBAAkB;IAgBhC,OAAO,CAAC,0BAA0B;YAKpB,cAAc;IAuB5B,kFAAkF;IAClF,OAAO,CAAC,eAAe;IASvB,6FAA6F;IAC7F,OAAO,CAAC,oBAAoB;YAcd,YAAY;IAkBpB,iBAAiB;IAkEvB,OAAO,CAAC,MAAM;IAId,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,QAAQ;cAcG,MAAM;IAqFzB,OAAgB,MAAM,0BAkCpB;CACL;AAED,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,qBAAqB;QAC3B,qBAAqB,EAAE,iBAAiB,CAAC;KAC5C;CACJ"}
1
+ {"version":3,"file":"node-binding-dialog.d.ts","sourceRoot":"","sources":["../../../../../src/components/dialogs/binding/node-binding-dialog.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,kCAAkC,CAAC;AAC1C,OAAO,6BAA6B,CAAC;AAErC,OAAO,yBAAyB,CAAC;AACjC,OAAO,8BAA8B,CAAC;AACtC,OAAO,6CAA6C,CAAC;AAErD,OAAO,iCAAiC,CAAC;AAEzC,OAAO,EAAqC,YAAY,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACvG,OAAO,EAAa,UAAU,EAAW,MAAM,KAAK,CAAC;AAcrD,qBACa,iBAAkB,SAAQ,UAAU;IAGtC,MAAM,EAAG,YAAY,CAAC;IAGtB,IAAI,CAAC,EAAE,UAAU,CAAC;IAGzB,QAAQ,EAAG,MAAM,CAAC;IAGlB,OAAO,CAAC,aAAa,CAAuB;IAG5C,OAAO,CAAC,eAAe,CAAuB;IAG9C,OAAO,CAAC,cAAc,CAAuB;IAE7C,OAAO,CAAC,iBAAiB;IAMzB,OAAO,CAAC,aAAa;YAQP,oBAAoB;IAclC,0EAA0E;IAC1E,OAAO,CAAC,iBAAiB;YAKX,oBAAoB;IAgBlC,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,oBAAoB;YAId,kBAAkB;IAgBhC,OAAO,CAAC,0BAA0B;YAKpB,cAAc;IAuB5B,kFAAkF;IAClF,OAAO,CAAC,eAAe;IASvB,6FAA6F;IAC7F,OAAO,CAAC,oBAAoB;YAcd,YAAY;IAkBpB,iBAAiB;IAkEvB,OAAO,CAAC,MAAM;IAId,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,QAAQ;cAcG,MAAM;IAqFzB,OAAgB,MAAM,0BAsCpB;CACL;AAED,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,qBAAqB;QAC3B,qBAAqB,EAAE,iBAAiB,CAAC;KAC5C;CACJ"}
@@ -225,7 +225,7 @@ let NodeBindingDialog = class extends LitElement {
225
225
  <md-list style="padding-bottom:18px;">
226
226
  ${Object.values(bindings).map(
227
227
  (entry, index) => html`
228
- <md-list-item style="background:cornsilk;">
228
+ <md-list-item class="binding-item">
229
229
  <div style="display:flex;gap:10px;">
230
230
  <div>node:${entry["node"]}</div>
231
231
  <div>endpoint:${entry["endpoint"]}</div>
@@ -295,9 +295,13 @@ let NodeBindingDialog = class extends LitElement {
295
295
  }
296
296
  };
297
297
  NodeBindingDialog.styles = css`
298
+ .binding-item {
299
+ background: var(--md-sys-color-surface-container-high);
300
+ }
301
+
298
302
  .inline-group {
299
303
  display: flex;
300
- border: 2px solid #673ab7;
304
+ border: 2px solid var(--md-sys-color-primary);
301
305
  padding: 1px;
302
306
  border-radius: 8px;
303
307
  position: relative;
@@ -323,8 +327,8 @@ NodeBindingDialog.styles = css`
323
327
  position: absolute;
324
328
  left: 15px;
325
329
  top: -12px;
326
- background: #673ab7;
327
- color: white;
330
+ background: var(--md-sys-color-primary);
331
+ color: var(--md-sys-color-on-primary);
328
332
  padding: 3px 15px;
329
333
  border-radius: 4px;
330
334
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/components/dialogs/binding/node-binding-dialog.ts"],
4
- "mappings": "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",
4
+ "mappings": ";;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,OAAO;AACP,OAAO;AAEP,OAAO;AACP,OAAO;AACP,OAAO;AAEP,OAAO;AAGP,SAAS,KAAK,MAAM,YAAY,eAAe;AAC/C,SAAS,eAAe,UAAU,aAAa;AAC/C,SAAS,sBAAsB;AAC/B,SAAS,mCAAkE;AAE3E;AAAA,EACI;AAAA,OAGG;AAEP,SAAS,eAAe;AACxB,SAAS,qBAAqB;AAGvB,IAAM,oBAAN,cAAgC,WAAW;AAAA,EAoBtC,oBAA0C;AAC9C,UAAM,eAAe,KAAK,KAAM,WAAW,KAAK,WAAW,OAAO;AAClE,QAAI,CAAC,aAAc,QAAO,CAAC;AAC3B,WAAO,OAAO,OAAO,YAAY,EAAE,IAAI,WAAS,4BAA4B,UAAU,KAAK,CAAC;AAAA,EAChG;AAAA,EAEQ,cAAc,cAAkD;AACpE,UAAM,kBAAkB,KAAK,OAAO,MAAM,YAAY,GAAG,WAAW,QAAQ;AAC5E,QAAI,CAAC,gBAAiB,QAAO,CAAC;AAC9B,WAAO,OAAO,OAAO,eAAe,EAAE;AAAA,MAAI,CAAC,UACvC,kCAAkC,UAAU,KAAK;AAAA,IACrD;AAAA,EACJ;AAAA,EAEA,MAAc,qBAAqB,OAA8B;AAC7D,UAAM,cAAc,KAAK,kBAAkB;AAC3C,QAAI;AACA,YAAM,eAAe,YAAY,KAAK,EAAE;AACxC,YAAM,WAAW,YAAY,KAAK,EAAE;AACpC,UAAI,iBAAiB,UAAa,aAAa,OAAW;AAC1D,YAAM,KAAK,qBAAqB,KAAK,kBAAkB,GAAG,UAAU,YAAY;AAChF,YAAM,kBAAkB,KAAK,qBAAqB,aAAa,KAAK;AACpE,YAAM,KAAK,mBAAmB,iBAAiB,KAAK;AAAA,IACxD,SAAS,OAAO;AACZ,WAAK,2BAA2B,KAAK;AAAA,IACzC;AAAA,EACJ;AAAA;AAAA,EAGQ,oBAA4B;AAChC,UAAM,SAAS,KAAK,KAAM;AAC1B,WAAO,OAAO,WAAW,WAAW,OAAO,MAAM,IAAI;AAAA,EACzD;AAAA,EAEA,MAAc,qBACV,cACA,gBACA,cACa;AACb,UAAM,aAAa,KAAK,cAAc,YAAY;AAElD,UAAM,oBAAoB,WACrB,IAAI,WAAS,KAAK,iBAAiB,cAAc,gBAAgB,KAAK,CAAC,EACvE,OAAO,CAAC,UAA6C,UAAU,MAAS;AAG7E,UAAM,aAAa,kBAAkB,IAAI,OAAK,KAAK,qBAAqB,CAAC,CAAC;AAC1E,UAAM,KAAK,OAAO,YAAY,cAAc,UAAU;AAAA,EAC1D;AAAA,EAEQ,iBACJ,QACA,gBACA,OACoC;AACpC,UAAM,aAAa,MAAM,SAAS,SAAS,MAAM;AACjD,QAAI,CAAC,WAAY,QAAO;AAExB,UAAM,YAAY,MAAM,QAAS,OAAO,UAAQ,KAAK,aAAa,cAAc;AAChF,WAAO,UAAU,SAAS,IAAI,SAAY;AAAA,EAC9C;AAAA,EAEQ,qBAAqB,UAAgC,OAAqC;AAC9F,WAAO,CAAC,GAAG,SAAS,MAAM,GAAG,KAAK,GAAG,GAAG,SAAS,MAAM,QAAQ,CAAC,CAAC;AAAA,EACrE;AAAA,EAEA,MAAc,mBAAmB,iBAAuC,OAA8B;AAElG,UAAM,cAAc,gBAAgB,IAAI,OAAK,KAAK,gBAAgB,CAAC,CAAC;AACpE,UAAM,KAAK,OAAO,eAAe,KAAK,kBAAkB,GAAG,KAAK,UAAU,WAAW;AAErF,UAAM,gBAAgB,GAAG,KAAK,QAAQ;AACtC,UAAM,kBAAkB,KAAK,KAAM,WAAW,aAAa;AAC3D,UAAM,oBAAoB;AAAA,MACtB,GAAG,KAAK,KAAM;AAAA,MACd,CAAC,aAAa,GAAG,kBAAkB,KAAK,qBAAqB,iBAAiB,KAAK,IAAI,CAAC;AAAA,IAC5F;AAEA,SAAK,KAAM,aAAa;AACxB,SAAK,cAAc;AAAA,EACvB;AAAA,EAEQ,2BAA2B,OAAsB;AACrD,UAAM,eAAe,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAC1E,YAAQ,MAAM,4BAA4B,YAAY,EAAE;AAAA,EAC5D;AAAA,EAEA,MAAc,eAAe,cAAsB,OAAiC;AAChF,QAAI;AAEA,YAAM,aAAa,KAAK,OAAO,MAAM,YAAY,GAAG,WAAW,QAAQ;AACvE,YAAM,UAAU,aACV,OAAO,OAAO,UAAU,EAAE,IAAI,OAAK,kCAAkC,UAAU,CAAC,CAAC,IACjF,CAAC;AACP,cAAQ,KAAK,KAAK;AAGlB,YAAM,aAAa,QAAQ,IAAI,OAAK,KAAK,qBAAqB,CAAC,CAAC;AAChE,YAAM,SAAS,MAAM,KAAK,OAAO,YAAY,cAAc,UAAU;AAErE,UAAI,UAAU,OAAO,SAAS,GAAG;AAC7B,eAAO,OAAO,CAAC,EAAE,WAAW;AAAA,MAChC;AACA,aAAO;AAAA,IACX,SAAS,KAAK;AACV,cAAQ,MAAM,kBAAkB,GAAG;AACnC,aAAO;AAAA,IACX;AAAA,EACJ;AAAA;AAAA,EAGQ,gBAAgB,OAA0C;AAC9D,WAAO;AAAA,MACH,MAAM,MAAM,QAAQ;AAAA,MACpB,OAAO,MAAM,SAAS;AAAA,MACtB,UAAU,MAAM,YAAY;AAAA,MAC5B,SAAS,MAAM,WAAW;AAAA,IAC9B;AAAA,EACJ;AAAA;AAAA,EAGQ,qBAAqB,OAAqD;AAC9E,WAAO;AAAA,MACH,WAAW,MAAM;AAAA,MACjB,WAAW,MAAM;AAAA,MACjB,UAAU,MAAM,YAAY;AAAA,MAC5B,SACI,MAAM,SAAS,IAAI,QAAM;AAAA,QACrB,SAAS,EAAE,WAAW;AAAA,QACtB,UAAU,EAAE,YAAY;AAAA,QACxB,aAAa,EAAE,cAAc;AAAA,MACjC,EAAE,KAAK;AAAA,IACf;AAAA,EACJ;AAAA,EAEA,MAAc,aAAa,UAAkB,cAAkC;AAC3E,UAAM,WAAW,KAAK,kBAAkB;AACxC,aAAS,KAAK,YAAY;AAC1B,QAAI;AAEA,YAAM,cAAc,SAAS,IAAI,OAAK,KAAK,gBAAgB,CAAC,CAAC;AAC7D,YAAM,SAAS,MAAM,KAAK,OAAO,eAAe,KAAK,kBAAkB,GAAG,UAAU,WAAW;AAE/F,UAAI,UAAU,OAAO,SAAS,GAAG;AAC7B,eAAO,OAAO,CAAC,EAAE,WAAW;AAAA,MAChC;AACA,aAAO;AAAA,IACX,SAAS,KAAK;AACV,cAAQ,IAAI,uBAAuB,GAAG;AACtC,aAAO;AAAA,IACX;AAAA,EACJ;AAAA,EAEA,MAAM,oBAAoB;AACtB,UAAM,eAAe,KAAK,cAAc,QAAQ,SAAS,KAAK,cAAc,OAAO,EAAE,IAAI;AACzF,UAAM,iBAAiB,KAAK,gBAAgB,QAAQ,SAAS,KAAK,gBAAgB,OAAO,EAAE,IAAI;AAC/F,UAAM,gBAAgB,KAAK,eAAe,QAAQ,SAAS,KAAK,eAAe,OAAO,EAAE,IAAI;AAG5F,QAAI,iBAAiB,UAAa,gBAAgB,KAAK,eAAe,OAAO;AACzE,YAAM,qCAAqC;AAC3C;AAAA,IACJ;AAEA,QAAI,mBAAmB,UAAa,kBAAkB,KAAK,iBAAiB,OAAQ;AAChF,YAAM,sCAAsC;AAC5C;AAAA,IACJ;AAGA,QAAI,kBAAkB,QAAW;AAE7B,UAAI,gBAAgB,KAAK,gBAAgB,OAAQ;AAC7C,cAAM,qCAAqC;AAC3C;AAAA,MACJ;AAAA,IACJ;AAEA,UAAM,UAAqC;AAAA,MACvC,UAAU;AAAA,MACV,SAAS;AAAA,MACT,YAAY;AAAA,IAChB;AAGA,UAAM,YAAsC;AAAA,MACxC,WAAW;AAAA,MACX,UAAU;AAAA,MACV,UAAU,CAAC,KAAK,kBAAkB,CAAC;AAAA,MACnC,SAAS,CAAC,OAAO;AAAA,MACjB,aAAa;AAAA;AAAA,IACjB;AAEA,UAAM,aAAa,MAAM,KAAK,eAAe,cAAc,SAAS;AACpE,QAAI,CAAC,YAAY;AACb,YAAM,uBAAuB;AAC7B;AAAA,IACJ;AAEA,UAAM,WAAW,KAAK;AAEtB,UAAM,eAAmC;AAAA,MACrC,MAAM;AAAA,MACN,UAAU;AAAA,MACV,OAAO;AAAA,MACP,SAAS;AAAA,MACT,aAAa;AAAA;AAAA,IACjB;AAEA,UAAM,iBAAiB,MAAM,KAAK,aAAa,UAAU,YAAY;AAErE,QAAI,gBAAgB;AAChB,WAAK,cAAc,QAAQ;AAC3B,WAAK,gBAAgB,QAAQ;AAC7B,WAAK,eAAe,QAAQ;AAC5B,WAAK,cAAc;AAAA,IACvB;AAAA,EACJ;AAAA,EAEQ,SAAS;AACb,SAAK,WAAY,cAAwB,WAAW,EAAG,MAAM;AAAA,EACjE;AAAA,EAEQ,gBAAgB;AACpB,SAAK,WAAY,YAAY,IAAI;AAAA,EACrC;AAAA,EAEQ,SAAS,GAAU;AACvB,UAAM,YAAY,EAAE;AACpB,UAAM,QAAQ,SAAS,UAAU,OAAO,EAAE;AAE1C,QAAI,SAAS,UAAU,KAAK,EAAE,IAAI,SAAS,QAAQ,SAAS,UAAU,KAAK,EAAE,GAAG;AAC5E,gBAAU,QAAQ;AAClB,gBAAU,YAAY;AAAA,IAC1B,OAAO;AACH,gBAAU,QAAQ;AAAA,IACtB;AAAA,EAGJ;AAAA,EAEmB,SAAS;AACxB,UAAM,cAAc,KAAK,KAAM,WAAW,KAAK,WAAW,OAAO;AACjE,UAAM,WAAW,cACX,OAAO,OAAO,WAAW,EAAE,IAAI,WAAS,4BAA4B,UAAU,KAAK,CAAC,IACpF,CAAC;AAEP,WAAO;AAAA,sCACuB,cAAc,YAAY,KAAK,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,8BAOpD,OAAO,OAAO,QAAQ,EAAE;AAAA,MACtB,CAAC,OAAO,UAAU;AAAA;AAAA;AAAA,oCAGd,MAAM,MAAM,CAAC;AAAA,wCACT,MAAM,UAAU,CAAC;AAAA,0BAC/B,MAAM,SAAS,IAAI,qBAAqB,MAAM,SAAS,CAAC,YAAY,OAAO;AAAA;AAAA;AAAA;AAAA,iCAIpE,MAAM,KAAK,qBAAqB,KAAK,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA,IAK3C,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,8CAYiB,KAAK,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,8CASb,KAAK,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,8CAUb,KAAK,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,6CAkBd,KAAK,iBAAiB;AAAA,6CACtB,KAAK,MAAM;AAAA;AAAA;AAAA;AAAA,EAIpD;AAyCJ;AAjYa,kBA0VO,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAvVlB;AAAA,EAFN,QAAQ,EAAE,SAAS,eAAe,WAAW,KAAK,CAAC;AAAA,EACnD,SAAS,EAAE,WAAW,MAAM,CAAC;AAAA,GAFrB,kBAGF;AAGA;AAAA,EADN,SAAS;AAAA,GALD,kBAMF;AAGP;AAAA,EADC,SAAS,EAAE,WAAW,MAAM,CAAC;AAAA,GARrB,kBAST;AAGQ;AAAA,EADP,MAAM,uCAAuC;AAAA,GAXrC,kBAYD;AAGA;AAAA,EADP,MAAM,yCAAyC;AAAA,GAdvC,kBAeD;AAGA;AAAA,EADP,MAAM,wCAAwC;AAAA,GAjBtC,kBAkBD;AAlBC,oBAAN;AAAA,EADN,cAAc,qBAAqB;AAAA,GACvB;",
5
5
  "names": []
6
6
  }
@@ -3,5 +3,5 @@
3
3
  * Copyright 2025-2026 Open Home Foundation
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- export {};
6
+ import "../util/theme-service.js";
7
7
  //# sourceMappingURL=main.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../../src/entrypoint/main.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
1
+ {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../../src/entrypoint/main.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,0BAA0B,CAAC"}
@@ -4,6 +4,7 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
  import { MatterClient } from "@matter-server/ws-client";
7
+ import "../util/theme-service.js";
7
8
  async function main() {
8
9
  import("../pages/matter-dashboard-app.js");
9
10
  let url = "";
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/entrypoint/main.ts"],
4
- "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,oBAAoB;AAE7B,eAAe,OAAO;AAClB,SAAO,kCAAkC;AAEzC,MAAI,MAAM;AAGV,QAAM,qBACF,SAAS,OAAO,SAAS,OAAO,KAChC,SAAS,KAAK,SAAS,gBAAgB,KACvC,SAAS,KAAK,SAAS,eAAe;AAE1C,MAAI,CAAC,oBAAoB;AAErB,QAAI,aAAa,aAAa,QAAQ,WAAW;AACjD,QAAI,CAAC,YAAY;AACb,YAAM,YAAY,IAAI,gBAAgB,OAAO,SAAS,MAAM;AAC5D,YAAM,eAAe,UAAU,IAAI,KAAK;AACxC,mBAAa;AAAA,QACT;AAAA,QACA,gBAAgB;AAAA,MACpB;AACA,UAAI,CAAC,YAAY;AACb,cAAM,+BAA+B;AACrC;AAAA,MACJ;AACA,UAAI,cAAc;AAEd,gBAAQ,UAAU,CAAC,GAAG,IAAI,OAAO,SAAS,QAAQ;AAAA,MACtD;AACA,mBAAa,QAAQ,aAAa,UAAU;AAAA,IAChD;AACA,UAAM;AAAA,EACV,OAAO;AAGH,QAAI,UAAU,OAAO,SAAS,SAAS,OAAO,SAAS;AACvD,QAAI,QAAQ,SAAS,GAAG,GAAG;AACvB,gBAAU,QAAQ,MAAM,GAAG,EAAE;AAAA,IACjC;AACA,UAAM,QAAQ,QAAQ,QAAQ,IAAI,IAAI;AACtC,YAAQ,IAAI,8CAA8C,GAAG,EAAE;AAAA,EACnE;AAEA,QAAM,SAAS,IAAI,aAAa,GAAG;AACnC,SAAO,eAAe;AAEtB,QAAM,YAAY,SAAS,cAAc,sBAAsB;AAC/D,YAAU,SAAS;AACnB,WAAS,KAAK,OAAO,SAAS;AAClC;AAEA,KAAK;",
4
+ "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,oBAAoB;AAC7B,OAAO;AAEP,eAAe,OAAO;AAClB,SAAO,kCAAkC;AAEzC,MAAI,MAAM;AAGV,QAAM,qBACF,SAAS,OAAO,SAAS,OAAO,KAChC,SAAS,KAAK,SAAS,gBAAgB,KACvC,SAAS,KAAK,SAAS,eAAe;AAE1C,MAAI,CAAC,oBAAoB;AAErB,QAAI,aAAa,aAAa,QAAQ,WAAW;AACjD,QAAI,CAAC,YAAY;AACb,YAAM,YAAY,IAAI,gBAAgB,OAAO,SAAS,MAAM;AAC5D,YAAM,eAAe,UAAU,IAAI,KAAK;AACxC,mBAAa;AAAA,QACT;AAAA,QACA,gBAAgB;AAAA,MACpB;AACA,UAAI,CAAC,YAAY;AACb,cAAM,+BAA+B;AACrC;AAAA,MACJ;AACA,UAAI,cAAc;AAEd,gBAAQ,UAAU,CAAC,GAAG,IAAI,OAAO,SAAS,QAAQ;AAAA,MACtD;AACA,mBAAa,QAAQ,aAAa,UAAU;AAAA,IAChD;AACA,UAAM;AAAA,EACV,OAAO;AAGH,QAAI,UAAU,OAAO,SAAS,SAAS,OAAO,SAAS;AACvD,QAAI,QAAQ,SAAS,GAAG,GAAG;AACvB,gBAAU,QAAQ,MAAM,GAAG,EAAE;AAAA,IACjC;AACA,UAAM,QAAQ,QAAQ,QAAQ,IAAI,IAAI;AACtC,YAAQ,IAAI,8CAA8C,GAAG,EAAE;AAAA,EACnE;AAEA,QAAM,SAAS,IAAI,aAAa,GAAG;AACnC,SAAO,eAAe;AAEtB,QAAM,YAAY,SAAS,cAAc,sBAAsB;AAC/D,YAAU,SAAS;AACnB,WAAS,KAAK,OAAO,SAAS;AAClC;AAEA,KAAK;",
5
5
  "names": []
6
6
  }
@@ -20,6 +20,14 @@ export declare class DashboardHeader extends LitElement {
20
20
  backButton?: string;
21
21
  actions?: HeaderAction[];
22
22
  client?: MatterClient;
23
+ private _themePreference;
24
+ private _effectiveTheme;
25
+ private _unsubscribeTheme?;
26
+ connectedCallback(): void;
27
+ disconnectedCallback(): void;
28
+ private _cycleTheme;
29
+ private _getThemeIcon;
30
+ private _getThemeTooltip;
23
31
  protected render(): import("lit-html").TemplateResult<1>;
24
32
  static styles: import("lit").CSSResult;
25
33
  }
@@ -1 +1 @@
1
- {"version":3,"file":"header.d.ts","sourceRoot":"","sources":["../../../../src/pages/components/header.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,sCAAsC,CAAC;AAC9C,OAAO,+BAA+B,CAAC;AACvC,OAAO,sCAAsC,CAAC;AAC9C,OAAO,yBAAyB,CAAC;AACjC,OAAO,8BAA8B,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAExD,OAAO,EAAE,UAAU,EAAsB,MAAM,KAAK,CAAC;AAErD,OAAO,8BAA8B,CAAC;AAEtC,UAAU,YAAY;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,IAAI,CAAC;CAChB;AAED,qBACa,eAAgB,SAAQ,UAAU;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;IAErC,MAAM,CAAC,EAAE,YAAY,CAAC;cAEV,MAAM;IAmCzB,OAAgB,MAAM,0BAoBpB;CACL"}
1
+ {"version":3,"file":"header.d.ts","sourceRoot":"","sources":["../../../../src/pages/components/header.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,sCAAsC,CAAC;AAC9C,OAAO,+BAA+B,CAAC;AACvC,OAAO,sCAAsC,CAAC;AAC9C,OAAO,yBAAyB,CAAC;AACjC,OAAO,8BAA8B,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAExD,OAAO,EAAE,UAAU,EAAsB,MAAM,KAAK,CAAC;AAErD,OAAO,8BAA8B,CAAC;AAGtC,UAAU,YAAY;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,IAAI,CAAC;CAChB;AAED,qBACa,eAAgB,SAAQ,UAAU;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;IAErC,MAAM,CAAC,EAAE,YAAY,CAAC;IAEpB,OAAO,CAAC,gBAAgB,CAA4C;IACpE,OAAO,CAAC,eAAe,CAA+C;IAE/E,OAAO,CAAC,iBAAiB,CAAC,CAAa;IAE9B,iBAAiB;IAQjB,oBAAoB;IAK7B,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,aAAa;IAWrB,OAAO,CAAC,gBAAgB;cAWL,MAAM;IAuCzB,OAAgB,MAAM,0BAoBpB;CACL"}
@@ -18,11 +18,51 @@ import "@material/web/divider/divider";
18
18
  import "@material/web/iconbutton/icon-button";
19
19
  import "@material/web/list/list";
20
20
  import "@material/web/list/list-item";
21
- import { mdiArrowLeft, mdiLogout } from "@mdi/js";
21
+ import { mdiArrowLeft, mdiBrightnessAuto, mdiLogout, mdiWeatherNight, mdiWeatherSunny } from "@mdi/js";
22
22
  import { LitElement, css, html, nothing } from "lit";
23
- import { customElement, property } from "lit/decorators.js";
23
+ import { customElement, property, state } from "lit/decorators.js";
24
24
  import "../../components/ha-svg-icon";
25
+ import { ThemeService } from "../../util/theme-service.js";
25
26
  let DashboardHeader = class extends LitElement {
27
+ constructor() {
28
+ super(...arguments);
29
+ this._themePreference = ThemeService.preference;
30
+ this._effectiveTheme = ThemeService.effectiveTheme;
31
+ }
32
+ connectedCallback() {
33
+ super.connectedCallback();
34
+ this._unsubscribeTheme = ThemeService.subscribe((theme) => {
35
+ this._effectiveTheme = theme;
36
+ this._themePreference = ThemeService.preference;
37
+ });
38
+ }
39
+ disconnectedCallback() {
40
+ super.disconnectedCallback();
41
+ this._unsubscribeTheme?.();
42
+ }
43
+ _cycleTheme() {
44
+ ThemeService.cycleTheme();
45
+ }
46
+ _getThemeIcon() {
47
+ switch (this._themePreference) {
48
+ case "light":
49
+ return mdiWeatherSunny;
50
+ case "dark":
51
+ return mdiWeatherNight;
52
+ case "system":
53
+ return mdiBrightnessAuto;
54
+ }
55
+ }
56
+ _getThemeTooltip() {
57
+ switch (this._themePreference) {
58
+ case "light":
59
+ return "Theme: Light";
60
+ case "dark":
61
+ return "Theme: Dark";
62
+ case "system":
63
+ return `Theme: System (${this._effectiveTheme})`;
64
+ }
65
+ }
26
66
  render() {
27
67
  return html`
28
68
  <div class="header">
@@ -43,12 +83,16 @@ let DashboardHeader = class extends LitElement {
43
83
  </md-icon-button>
44
84
  `;
45
85
  })}
46
- <!-- optional logout button -->
47
- ${this.client?.isProduction ? nothing : html`
48
- <md-icon-button @click=${this.client?.disconnect}>
86
+ <!-- theme toggle button -->
87
+ <md-icon-button @click=${this._cycleTheme} .title=${this._getThemeTooltip()}>
88
+ <ha-svg-icon .path=${this._getThemeIcon()}></ha-svg-icon>
89
+ </md-icon-button>
90
+ <!-- optional logout button (only when client exists and not in production) -->
91
+ ${this.client && !this.client.isProduction ? html`
92
+ <md-icon-button @click=${this.client.disconnect}>
49
93
  <ha-svg-icon .path=${mdiLogout}></ha-svg-icon>
50
94
  </md-icon-button>
51
- `}
95
+ ` : nothing}
52
96
  </div>
53
97
  </div>
54
98
  `;
@@ -81,6 +125,12 @@ __decorateClass([
81
125
  __decorateClass([
82
126
  property()
83
127
  ], DashboardHeader.prototype, "actions", 2);
128
+ __decorateClass([
129
+ state()
130
+ ], DashboardHeader.prototype, "_themePreference", 2);
131
+ __decorateClass([
132
+ state()
133
+ ], DashboardHeader.prototype, "_effectiveTheme", 2);
84
134
  DashboardHeader = __decorateClass([
85
135
  customElement("dashboard-header")
86
136
  ], DashboardHeader);
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/pages/components/header.ts"],
4
- "mappings": ";;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,OAAO;AACP,OAAO;AACP,OAAO;AACP,OAAO;AACP,OAAO;AAEP,SAAS,cAAc,iBAAiB;AACxC,SAAS,YAAY,KAAK,MAAM,eAAe;AAC/C,SAAS,eAAe,gBAAgB;AACxC,OAAO;AASA,IAAM,kBAAN,cAA8B,WAAW;AAAA,EAMzB,SAAS;AACxB,WAAO;AAAA;AAAA;AAAA,kBAGG,KAAK,aACD,iBAAiB,KAAK,UAAU;AAAA;AAAA,mDAEH,YAAY;AAAA;AAAA,8BAGzC,EAAE;AAAA;AAAA,uBAED,KAAK,SAAS,EAAE;AAAA;AAAA;AAAA,sBAGjB,KAAK,SAAS,IAAI,YAAU;AAC1B,aAAO;AAAA,qDACsB,OAAO,MAAM,WAAW,OAAO,KAAK;AAAA,qDACpC,OAAO,IAAI;AAAA;AAAA;AAAA,IAG5C,CAAC,CAAC;AAAA;AAAA,sBAEA,KAAK,QAAQ,eACT,UACA;AAAA,uDAC6B,KAAK,QAAQ,UAAU;AAAA,uDACvB,SAAS;AAAA;AAAA,2BAErC;AAAA;AAAA;AAAA;AAAA,EAIvB;AAuBJ;AA9Da,gBAyCO,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAxCN;AAAA,EAAlB,SAAS;AAAA,GADD,gBACU;AACA;AAAA,EAAlB,SAAS;AAAA,GAFD,gBAEU;AAFV,kBAAN;AAAA,EADN,cAAc,kBAAkB;AAAA,GACpB;",
4
+ "mappings": ";;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,OAAO;AACP,OAAO;AACP,OAAO;AACP,OAAO;AACP,OAAO;AAEP,SAAS,cAAc,mBAAmB,WAAW,iBAAiB,uBAAuB;AAC7F,SAAS,YAAY,KAAK,MAAM,eAAe;AAC/C,SAAS,eAAe,UAAU,aAAa;AAC/C,OAAO;AACP,SAA0C,oBAAoB;AASvD,IAAM,kBAAN,cAA8B,WAAW;AAAA,EAAzC;AAAA;AAMM,SAAQ,mBAAoC,aAAa;AACzD,SAAQ,kBAAkC,aAAa;AAAA;AAAA,EAIvD,oBAAoB;AACzB,UAAM,kBAAkB;AACxB,SAAK,oBAAoB,aAAa,UAAU,WAAS;AACrD,WAAK,kBAAkB;AACvB,WAAK,mBAAmB,aAAa;AAAA,IACzC,CAAC;AAAA,EACL;AAAA,EAES,uBAAuB;AAC5B,UAAM,qBAAqB;AAC3B,SAAK,oBAAoB;AAAA,EAC7B;AAAA,EAEQ,cAAc;AAClB,iBAAa,WAAW;AAAA,EAC5B;AAAA,EAEQ,gBAAwB;AAC5B,YAAQ,KAAK,kBAAkB;AAAA,MAC3B,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO;AAAA,IACf;AAAA,EACJ;AAAA,EAEQ,mBAA2B;AAC/B,YAAQ,KAAK,kBAAkB;AAAA,MAC3B,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO,kBAAkB,KAAK,eAAe;AAAA,IACrD;AAAA,EACJ;AAAA,EAEmB,SAAS;AACxB,WAAO;AAAA;AAAA;AAAA,kBAGG,KAAK,aACD,iBAAiB,KAAK,UAAU;AAAA;AAAA,mDAEH,YAAY;AAAA;AAAA,8BAGzC,EAAE;AAAA;AAAA,uBAED,KAAK,SAAS,EAAE;AAAA;AAAA;AAAA,sBAGjB,KAAK,SAAS,IAAI,YAAU;AAC1B,aAAO;AAAA,qDACsB,OAAO,MAAM,WAAW,OAAO,KAAK;AAAA,qDACpC,OAAO,IAAI;AAAA;AAAA;AAAA,IAG5C,CAAC,CAAC;AAAA;AAAA,6CAEuB,KAAK,WAAW,WAAW,KAAK,iBAAiB,CAAC;AAAA,6CAClD,KAAK,cAAc,CAAC;AAAA;AAAA;AAAA,sBAG3C,KAAK,UAAU,CAAC,KAAK,OAAO,eACxB;AAAA,uDAC6B,KAAK,OAAO,UAAU;AAAA,uDACtB,SAAS;AAAA;AAAA,8BAGtC,OAAO;AAAA;AAAA;AAAA;AAAA,EAI7B;AAuBJ;AA9Ga,gBAyFO,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAxFN;AAAA,EAAlB,SAAS;AAAA,GADD,gBACU;AACA;AAAA,EAAlB,SAAS;AAAA,GAFD,gBAEU;AAIF;AAAA,EAAhB,MAAM;AAAA,GANE,gBAMQ;AACA;AAAA,EAAhB,MAAM;AAAA,GAPE,gBAOQ;AAPR,kBAAN;AAAA,EADN,cAAc,kBAAkB;AAAA,GACpB;",
5
5
  "names": []
6
6
  }
@@ -5,6 +5,8 @@
5
5
  */
6
6
  import { MatterClient } from "@matter-server/ws-client";
7
7
  import { LitElement, PropertyValueMap } from "lit";
8
+ import "../components/ha-svg-icon";
9
+ import "./components/header";
8
10
  import "./matter-cluster-view";
9
11
  import "./matter-endpoint-view";
10
12
  import "./matter-node-view";
@@ -18,10 +20,13 @@ declare class MatterDashboardApp extends LitElement {
18
20
  private _route;
19
21
  client: MatterClient;
20
22
  private _state;
21
- private _error;
22
23
  private provider;
23
24
  protected firstUpdated(_changedProperties: PropertyValueMap<any> | Map<PropertyKey, unknown>): void;
25
+ private _connect;
26
+ private _setupEventListeners;
27
+ private _reconnect;
24
28
  render(): import("lit-html").TemplateResult<1>;
29
+ static styles: import("lit").CSSResult;
25
30
  }
26
31
  export {};
27
32
  //# sourceMappingURL=matter-dashboard-app.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"matter-dashboard-app.d.ts","sourceRoot":"","sources":["../../../src/pages/matter-dashboard-app.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,YAAY,EAAe,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAQ,MAAM,KAAK,CAAC;AAKzD,OAAO,uBAAuB,CAAC;AAC/B,OAAO,wBAAwB,CAAC;AAChC,OAAO,oBAAoB,CAAC;AAC5B,OAAO,sBAAsB,CAAC;AAE9B,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,qBAAqB;QAC3B,sBAAsB,EAAE,kBAAkB,CAAC;KAC9C;CACJ;AAED,cACM,kBAAmB,SAAQ,UAAU;IAC9B,OAAO,CAAC,MAAM,CAGrB;IAEK,MAAM,EAAG,YAAY,CAAC;IAG7B,OAAO,CAAC,MAAM,CAAuE;IAErF,OAAO,CAAC,MAAM,CAAqB;IAEnC,OAAO,CAAC,QAAQ,CAAoF;cAEjF,YAAY,CAAC,kBAAkB,EAAE,gBAAgB,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC,GAAG,IAAI;IAkCnG,MAAM;CAkDlB"}
1
+ {"version":3,"file":"matter-dashboard-app.d.ts","sourceRoot":"","sources":["../../../src/pages/matter-dashboard-app.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,YAAY,EAAe,MAAM,0BAA0B,CAAC;AAErE,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAa,MAAM,KAAK,CAAC;AAG9D,OAAO,2BAA2B,CAAC;AAGnC,OAAO,qBAAqB,CAAC;AAC7B,OAAO,uBAAuB,CAAC;AAC/B,OAAO,wBAAwB,CAAC;AAChC,OAAO,oBAAoB,CAAC;AAC5B,OAAO,sBAAsB,CAAC;AAE9B,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,qBAAqB;QAC3B,sBAAsB,EAAE,kBAAkB,CAAC;KAC9C;CACJ;AAED,cACM,kBAAmB,SAAQ,UAAU;IAC9B,OAAO,CAAC,MAAM,CAGrB;IAEK,MAAM,EAAG,YAAY,CAAC;IAG7B,OAAO,CAAC,MAAM,CAAuE;IAErF,OAAO,CAAC,QAAQ,CAAoF;cAEjF,YAAY,CAAC,kBAAkB,EAAE,gBAAgB,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC,GAAG,IAAI;IAgB5G,OAAO,CAAC,QAAQ;IAYhB,OAAO,CAAC,oBAAoB;IAa5B,OAAO,CAAC,UAAU,CAGhB;IAEO,MAAM;IA6Ef,OAAgB,MAAM,0BAwDpB;CACL"}
@@ -14,10 +14,13 @@ var __decorateClass = (decorators, target, key, kind) => {
14
14
  * SPDX-License-Identifier: Apache-2.0
15
15
  */
16
16
  import { ContextProvider } from "@lit/context";
17
- import { LitElement, html } from "lit";
17
+ import { mdiRefresh } from "@mdi/js";
18
+ import { LitElement, css, html } from "lit";
18
19
  import { customElement, state } from "lit/decorators.js";
19
20
  import { clientContext } from "../client/client-context.js";
21
+ import "../components/ha-svg-icon";
20
22
  import { clone } from "../util/clone_class.js";
23
+ import "./components/header";
21
24
  import "./matter-cluster-view";
22
25
  import "./matter-endpoint-view";
23
26
  import "./matter-node-view";
@@ -31,28 +34,14 @@ let MatterDashboardApp = class extends LitElement {
31
34
  };
32
35
  this._state = "connecting";
33
36
  this.provider = new ContextProvider(this, { context: clientContext, initialValue: this.client });
37
+ this._reconnect = () => {
38
+ this._state = "connecting";
39
+ this._connect();
40
+ };
34
41
  }
35
42
  firstUpdated(_changedProperties) {
36
43
  super.firstUpdated(_changedProperties);
37
- this.client.startListening().then(
38
- () => {
39
- this._state = "connected";
40
- this.client.addEventListener("nodes_changed", () => {
41
- this.requestUpdate();
42
- this.provider.setValue(clone(this.client));
43
- });
44
- this.client.addEventListener("server_info_updated", () => {
45
- this.provider.setValue(clone(this.client));
46
- });
47
- this.client.addEventListener("connection_lost", () => {
48
- this._state = "disconnected";
49
- });
50
- },
51
- (err) => {
52
- this._state = "error";
53
- this._error = err.message;
54
- }
55
- );
44
+ this._connect();
56
45
  const updateRoute = () => {
57
46
  const pathParts = location.hash.substring(1).split("/");
58
47
  this._route = {
@@ -63,17 +52,66 @@ let MatterDashboardApp = class extends LitElement {
63
52
  window.addEventListener("hashchange", updateRoute);
64
53
  updateRoute();
65
54
  }
55
+ _connect() {
56
+ this.client.startListening().then(
57
+ () => {
58
+ this._state = "connected";
59
+ this._setupEventListeners();
60
+ },
61
+ (_err) => {
62
+ this._state = "error";
63
+ }
64
+ );
65
+ }
66
+ _setupEventListeners() {
67
+ this.client.addEventListener("nodes_changed", () => {
68
+ this.requestUpdate();
69
+ this.provider.setValue(clone(this.client));
70
+ });
71
+ this.client.addEventListener("server_info_updated", () => {
72
+ this.provider.setValue(clone(this.client));
73
+ });
74
+ this.client.addEventListener("connection_lost", () => {
75
+ this._state = "disconnected";
76
+ });
77
+ }
66
78
  render() {
67
79
  if (this._state === "connecting") {
68
- return html`<p>Connecting...</p>`;
80
+ return html`
81
+ <dashboard-header title="Matter Server"></dashboard-header>
82
+ <div class="status-page">
83
+ <p class="status-message">Connecting...</p>
84
+ </div>
85
+ `;
69
86
  }
70
87
  if (this._state === "disconnected") {
71
- return html`<p>Connection lost</p>`;
88
+ return html`
89
+ <dashboard-header title="Matter Server"></dashboard-header>
90
+ <div class="status-page">
91
+ <p class="status-message error">Connection lost</p>
92
+ <p class="status-hint">
93
+ The connection to the Matter Server was lost. Please check if the server is running.
94
+ </p>
95
+ <button class="retry-button" @click=${this._reconnect}>
96
+ <ha-svg-icon .path=${mdiRefresh}></ha-svg-icon>
97
+ Reconnect
98
+ </button>
99
+ </div>
100
+ `;
72
101
  }
73
102
  if (this._state === "error") {
74
103
  return html`
75
- <p>Error: ${this._error}</p>
76
- <button @click=${this.client.disconnect}>Clear stored URL</button>
104
+ <dashboard-header title="Matter Server"></dashboard-header>
105
+ <div class="status-page">
106
+ <p class="status-message error">No connection</p>
107
+ <p class="status-hint">
108
+ Unable to connect to the Matter Server. Please check if the server is running.
109
+ </p>
110
+ <button class="retry-button" @click=${this._reconnect}>
111
+ <ha-svg-icon .path=${mdiRefresh}></ha-svg-icon>
112
+ Reconnect
113
+ </button>
114
+ </div>
77
115
  `;
78
116
  }
79
117
  if (this._route.prefix === "node" && this._route.path.length == 3) {
@@ -110,6 +148,63 @@ let MatterDashboardApp = class extends LitElement {
110
148
  ></matter-server-view>`;
111
149
  }
112
150
  };
151
+ MatterDashboardApp.styles = css`
152
+ :host {
153
+ display: block;
154
+ min-height: 100vh;
155
+ background-color: var(--md-sys-color-background);
156
+ }
157
+
158
+ .status-page {
159
+ display: flex;
160
+ flex-direction: column;
161
+ align-items: center;
162
+ justify-content: center;
163
+ padding: 48px 24px;
164
+ text-align: center;
165
+ }
166
+
167
+ .status-message {
168
+ font-size: 1.5rem;
169
+ color: var(--md-sys-color-on-background);
170
+ margin: 0 0 16px 0;
171
+ }
172
+
173
+ .status-message.error {
174
+ color: var(--danger-color);
175
+ }
176
+
177
+ .status-hint {
178
+ font-size: 1rem;
179
+ color: var(--md-sys-color-on-surface-variant);
180
+ margin: 0;
181
+ max-width: 400px;
182
+ }
183
+
184
+ .retry-button {
185
+ display: inline-flex;
186
+ align-items: center;
187
+ gap: 8px;
188
+ margin-top: 24px;
189
+ padding: 12px 24px;
190
+ font-size: 1rem;
191
+ background-color: var(--md-sys-color-primary);
192
+ color: var(--md-sys-color-on-primary);
193
+ --icon-primary-color: var(--md-sys-color-on-primary);
194
+ border: none;
195
+ border-radius: 4px;
196
+ cursor: pointer;
197
+ }
198
+
199
+ .retry-button:hover {
200
+ opacity: 0.9;
201
+ }
202
+
203
+ .retry-button ha-svg-icon {
204
+ width: 20px;
205
+ height: 20px;
206
+ }
207
+ `;
113
208
  __decorateClass([
114
209
  state()
115
210
  ], MatterDashboardApp.prototype, "_route", 2);
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/pages/matter-dashboard-app.ts"],
4
- "mappings": "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",
4
+ "mappings": "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",
5
5
  "names": []
6
6
  }
@@ -0,0 +1,27 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025-2026 Open Home Foundation
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ /**
7
+ * Theme service for managing dark/light mode preferences.
8
+ * Supports three modes: light, dark, and system (auto-detect from OS).
9
+ */
10
+ export type ThemePreference = "light" | "dark" | "system";
11
+ export type EffectiveTheme = "light" | "dark";
12
+ declare class ThemeServiceImpl {
13
+ private _preference;
14
+ private _mediaQuery;
15
+ private _listeners;
16
+ constructor();
17
+ get preference(): ThemePreference;
18
+ get effectiveTheme(): EffectiveTheme;
19
+ setPreference(pref: ThemePreference): void;
20
+ cycleTheme(): ThemePreference;
21
+ subscribe(callback: (theme: EffectiveTheme) => void): () => void;
22
+ private _loadPreference;
23
+ private _applyTheme;
24
+ }
25
+ export declare const ThemeService: ThemeServiceImpl;
26
+ export {};
27
+ //# sourceMappingURL=theme-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme-service.d.ts","sourceRoot":"","sources":["../../../src/util/theme-service.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;GAGG;AAEH,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAC;AAC1D,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,MAAM,CAAC;AAI9C,cAAM,gBAAgB;IAClB,OAAO,CAAC,WAAW,CAA6B;IAChD,OAAO,CAAC,WAAW,CAAiB;IACpC,OAAO,CAAC,UAAU,CAAmD;;IASrE,IAAI,UAAU,IAAI,eAAe,CAEhC;IAED,IAAI,cAAc,IAAI,cAAc,CAKnC;IAED,aAAa,CAAC,IAAI,EAAE,eAAe,GAAG,IAAI;IAM1C,UAAU,IAAI,eAAe;IAQ7B,SAAS,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,GAAG,MAAM,IAAI;IAKhE,OAAO,CAAC,eAAe;IAyBvB,OAAO,CAAC,WAAW;CAYtB;AAED,eAAO,MAAM,YAAY,kBAAyB,CAAC"}
@@ -0,0 +1,71 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025-2026 Open Home Foundation
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ const STORAGE_KEY = "matterTheme";
7
+ class ThemeServiceImpl {
8
+ constructor() {
9
+ this._preference = "system";
10
+ this._listeners = /* @__PURE__ */ new Set();
11
+ this._mediaQuery = window.matchMedia("(prefers-color-scheme: dark)");
12
+ this._mediaQuery.addEventListener("change", () => this._applyTheme());
13
+ this._loadPreference();
14
+ this._applyTheme();
15
+ }
16
+ get preference() {
17
+ return this._preference;
18
+ }
19
+ get effectiveTheme() {
20
+ if (this._preference === "system") {
21
+ return this._mediaQuery.matches ? "dark" : "light";
22
+ }
23
+ return this._preference;
24
+ }
25
+ setPreference(pref) {
26
+ this._preference = pref;
27
+ localStorage.setItem(STORAGE_KEY, pref);
28
+ this._applyTheme();
29
+ }
30
+ cycleTheme() {
31
+ const cycle = ["light", "dark", "system"];
32
+ const currentIndex = cycle.indexOf(this._preference);
33
+ const nextIndex = (currentIndex + 1) % cycle.length;
34
+ this.setPreference(cycle[nextIndex]);
35
+ return this._preference;
36
+ }
37
+ subscribe(callback) {
38
+ this._listeners.add(callback);
39
+ return () => this._listeners.delete(callback);
40
+ }
41
+ _loadPreference() {
42
+ const urlParams = new URLSearchParams(window.location.search);
43
+ const themeParam = urlParams.get("theme");
44
+ if (themeParam && ["light", "dark", "system"].includes(themeParam)) {
45
+ this._preference = themeParam;
46
+ localStorage.setItem(STORAGE_KEY, themeParam);
47
+ urlParams.delete("theme");
48
+ const newUrl = urlParams.toString() ? `${window.location.pathname}?${urlParams.toString()}${window.location.hash}` : `${window.location.pathname}${window.location.hash}`;
49
+ history.replaceState({}, "", newUrl);
50
+ return;
51
+ }
52
+ const stored = localStorage.getItem(STORAGE_KEY);
53
+ if (stored && ["light", "dark", "system"].includes(stored)) {
54
+ this._preference = stored;
55
+ }
56
+ }
57
+ _applyTheme() {
58
+ const effective = this.effectiveTheme;
59
+ document.documentElement.classList.toggle("dark-theme", effective === "dark");
60
+ const metaThemeColor = document.querySelector('meta[name="theme-color"]');
61
+ if (metaThemeColor) {
62
+ metaThemeColor.setAttribute("content", effective === "dark" ? "#1e1e1e" : "#03a9f4");
63
+ }
64
+ this._listeners.forEach((cb) => cb(effective));
65
+ }
66
+ }
67
+ const ThemeService = new ThemeServiceImpl();
68
+ export {
69
+ ThemeService
70
+ };
71
+ //# sourceMappingURL=theme-service.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/util/theme-service.ts"],
4
+ "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAcA,MAAM,cAAc;AAEpB,MAAM,iBAAiB;AAAA,EAKnB,cAAc;AAJd,SAAQ,cAA+B;AAEvC,SAAQ,aAAmD,oBAAI,IAAI;AAG/D,SAAK,cAAc,OAAO,WAAW,8BAA8B;AACnE,SAAK,YAAY,iBAAiB,UAAU,MAAM,KAAK,YAAY,CAAC;AACpE,SAAK,gBAAgB;AACrB,SAAK,YAAY;AAAA,EACrB;AAAA,EAEA,IAAI,aAA8B;AAC9B,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,IAAI,iBAAiC;AACjC,QAAI,KAAK,gBAAgB,UAAU;AAC/B,aAAO,KAAK,YAAY,UAAU,SAAS;AAAA,IAC/C;AACA,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,cAAc,MAA6B;AACvC,SAAK,cAAc;AACnB,iBAAa,QAAQ,aAAa,IAAI;AACtC,SAAK,YAAY;AAAA,EACrB;AAAA,EAEA,aAA8B;AAC1B,UAAM,QAA2B,CAAC,SAAS,QAAQ,QAAQ;AAC3D,UAAM,eAAe,MAAM,QAAQ,KAAK,WAAW;AACnD,UAAM,aAAa,eAAe,KAAK,MAAM;AAC7C,SAAK,cAAc,MAAM,SAAS,CAAC;AACnC,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,UAAU,UAAuD;AAC7D,SAAK,WAAW,IAAI,QAAQ;AAC5B,WAAO,MAAM,KAAK,WAAW,OAAO,QAAQ;AAAA,EAChD;AAAA,EAEQ,kBAAwB;AAE5B,UAAM,YAAY,IAAI,gBAAgB,OAAO,SAAS,MAAM;AAC5D,UAAM,aAAa,UAAU,IAAI,OAAO;AACxC,QAAI,cAAc,CAAC,SAAS,QAAQ,QAAQ,EAAE,SAAS,UAAU,GAAG;AAEhE,WAAK,cAAc;AACnB,mBAAa,QAAQ,aAAa,UAAU;AAE5C,gBAAU,OAAO,OAAO;AACxB,YAAM,SAAS,UAAU,SAAS,IAC5B,GAAG,OAAO,SAAS,QAAQ,IAAI,UAAU,SAAS,CAAC,GAAG,OAAO,SAAS,IAAI,KAC1E,GAAG,OAAO,SAAS,QAAQ,GAAG,OAAO,SAAS,IAAI;AACxD,cAAQ,aAAa,CAAC,GAAG,IAAI,MAAM;AACnC;AAAA,IACJ;AAGA,UAAM,SAAS,aAAa,QAAQ,WAAW;AAC/C,QAAI,UAAU,CAAC,SAAS,QAAQ,QAAQ,EAAE,SAAS,MAAM,GAAG;AACxD,WAAK,cAAc;AAAA,IACvB;AAAA,EAEJ;AAAA,EAEQ,cAAoB;AACxB,UAAM,YAAY,KAAK;AACvB,aAAS,gBAAgB,UAAU,OAAO,cAAc,cAAc,MAAM;AAG5E,UAAM,iBAAiB,SAAS,cAAc,0BAA0B;AACxE,QAAI,gBAAgB;AAChB,qBAAe,aAAa,WAAW,cAAc,SAAS,YAAY,SAAS;AAAA,IACvF;AAEA,SAAK,WAAW,QAAQ,QAAM,GAAG,SAAS,CAAC;AAAA,EAC/C;AACJ;AAEO,MAAM,eAAe,IAAI,iBAAiB;",
5
+ "names": []
6
+ }
@@ -17,11 +17,18 @@
17
17
  --md-ref-typeface-plain: var(--roboto-font);
18
18
 
19
19
  --md-sys-color-background: #f5f5f5;
20
+ --md-sys-color-on-background: #1c1b1f;
20
21
  --md-sys-color-surface: #fff;
22
+ --md-sys-color-on-surface: #1c1b1f;
23
+ --md-sys-color-on-surface-variant: #49454f;
24
+ --md-sys-color-surface-variant: #e7e0ec;
21
25
  --md-sys-color-surface-container: #fff;
26
+ --md-sys-color-surface-container-low: #f7f2fa;
22
27
  --md-sys-color-surface-container-high: #fff;
23
28
  --md-sys-color-surface-container-highest: #f5f5f5;
24
29
  --md-sys-color-secondary-container: #e0e0e0;
30
+ --md-sys-color-outline: #79747e;
31
+ --md-sys-color-outline-variant: #cac4d0;
25
32
 
26
33
  --md-sys-typescale-headline-font: var(--roboto-font);
27
34
  --md-sys-typescale-title-font: var(--roboto-font);
@@ -31,9 +38,37 @@
31
38
  font-family: var(--roboto-font);
32
39
  }
33
40
 
41
+ body {
42
+ --primary-color: var(--md-sys-color-primary);
43
+ }
44
+
34
45
  a {
35
46
  color: var(--primary-color);
36
47
  }
48
+
49
+ /* Dark theme overrides */
50
+ html.dark-theme body {
51
+ --md-sys-color-primary: #4fc3f7;
52
+ --md-sys-color-on-primary: #003544;
53
+ --md-sys-color-background: #121212;
54
+ --md-sys-color-on-background: #e6e1e5;
55
+ --md-sys-color-surface: #1e1e1e;
56
+ --md-sys-color-on-surface: #e6e1e5;
57
+ --md-sys-color-on-surface-variant: #cac4d0;
58
+ --md-sys-color-surface-variant: #49454f;
59
+ --md-sys-color-surface-container: #1e1e1e;
60
+ --md-sys-color-surface-container-low: #1a1a1a;
61
+ --md-sys-color-surface-container-high: #2b2b2b;
62
+ --md-sys-color-surface-container-highest: #363636;
63
+ --md-sys-color-secondary-container: #4a4458;
64
+ --md-sys-color-on-secondary-container: #e8def8;
65
+ --md-sys-color-outline: #938f99;
66
+ --md-sys-color-outline-variant: #49454f;
67
+ --text-color: rgba(255, 255, 255, 0.6);
68
+ --danger-color: #ff7961;
69
+ --primary-color: #4fc3f7;
70
+ color-scheme: dark;
71
+ }
37
72
  </style>
38
73
  </head>
39
74
  <body></body>