homebridge-config-ui-x 5.4.1 → 5.4.2-beta.1

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 (113) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/package.json +2 -2
  3. package/public/assets/service-icons/air-quality-sensor.svg +15 -15
  4. package/public/assets/service-icons/door.svg +23 -2
  5. package/public/assets/service-icons/fan.svg +2 -2
  6. package/public/assets/service-icons/garage-door.svg +1 -1
  7. package/public/assets/service-icons/irrigation-system.svg +34 -0
  8. package/public/assets/service-icons/leak-sensor.svg +42 -0
  9. package/public/assets/service-icons/light-sensor.svg +34 -0
  10. package/public/assets/service-icons/lock-mechanism.svg +39 -0
  11. package/public/assets/service-icons/motion-sensor.svg +84 -0
  12. package/public/assets/service-icons/occupancy-sensor.svg +49 -0
  13. package/public/assets/service-icons/security-system.svg +19 -0
  14. package/public/assets/service-icons/stateless-programmable-switch.svg +2 -2
  15. package/public/assets/service-icons/valve-faucet.svg +22 -0
  16. package/public/assets/service-icons/valve-generic.svg +25 -0
  17. package/public/assets/service-icons/valve-irrigation.svg +34 -0
  18. package/public/assets/service-icons/valve-shower-head.svg +32 -0
  19. package/public/assets/service-icons/window-covering.svg +2 -2
  20. package/public/assets/service-icons/window.svg +4 -0
  21. package/public/{chunk-M4QDQWSG.js → chunk-2C3X2ESN.js} +1 -1
  22. package/public/chunk-2FM5PPJA.js +1 -0
  23. package/public/{chunk-O6QIOU32.js → chunk-2PQCVYHY.js} +1 -1
  24. package/public/{chunk-VUXV5F3D.js → chunk-3ELSLPXD.js} +1 -1
  25. package/public/{chunk-IA2EYXXP.js → chunk-3Q6PUSIQ.js} +1 -1
  26. package/public/{chunk-WRO77OEO.js → chunk-4LKN5WQ2.js} +1 -1
  27. package/public/{chunk-4TADR47H.js → chunk-4LTZ5TVN.js} +1 -1
  28. package/public/{chunk-NRX2DKWS.js → chunk-55WWMXPN.js} +1 -1
  29. package/public/{chunk-EQHN6CPG.js → chunk-5E4D6S2D.js} +1 -1
  30. package/public/{chunk-GZH3YYXD.js → chunk-5EOLSGNC.js} +1 -1
  31. package/public/{chunk-NZ3SNZL4.js → chunk-5GTAKNFH.js} +1 -1
  32. package/public/{chunk-7IWNYMNH.js → chunk-6PGTBS2L.js} +1 -1
  33. package/public/{chunk-KYB236MX.js → chunk-7EQFLCW4.js} +1 -1
  34. package/public/{chunk-TYM2IKKZ.js → chunk-7N3D3R4N.js} +1 -1
  35. package/public/chunk-A34J5LMH.js +1 -0
  36. package/public/chunk-BFDH5H4M.js +1 -0
  37. package/public/{chunk-DFLIHKAC.js → chunk-BIUKRAP5.js} +1 -1
  38. package/public/{chunk-KBHPX4TF.js → chunk-BWE5NZTG.js} +1 -1
  39. package/public/{chunk-FMZEX6EI.js → chunk-C26THLFD.js} +1 -1
  40. package/public/{chunk-HO4UVRDI.js → chunk-CMOVUX6R.js} +1 -1
  41. package/public/{chunk-3QBYXJ7T.js → chunk-D7VCPH6W.js} +1 -1
  42. package/public/{chunk-6HJHVJPI.js → chunk-DFFTJVRY.js} +1 -1
  43. package/public/chunk-DQJTU7SJ.js +1 -0
  44. package/public/chunk-ETENXVXQ.js +1 -0
  45. package/public/{chunk-DFZAFAJ3.js → chunk-F6VPU4OB.js} +1 -1
  46. package/public/{chunk-YO7SFY4E.js → chunk-FBHFDXKU.js} +1 -1
  47. package/public/{chunk-HHGB2T2Q.js → chunk-FVKMBZOU.js} +1 -1
  48. package/public/{chunk-RANTT44U.js → chunk-FVLGW5AW.js} +1 -1
  49. package/public/{chunk-ULWO2VVV.js → chunk-FXJWZ2UF.js} +1 -1
  50. package/public/{chunk-KGKX7ALV.js → chunk-GEOFZWCT.js} +1 -1
  51. package/public/chunk-GOUQJ6IU.js +12 -0
  52. package/public/{chunk-SZXKSRVG.js → chunk-GRC6QQGR.js} +1 -1
  53. package/public/{chunk-DYB33NRF.js → chunk-H45DK7IX.js} +1 -1
  54. package/public/{chunk-V35TPDVW.js → chunk-H5WTK5UT.js} +1 -1
  55. package/public/{chunk-PPSFRNJC.js → chunk-HWAWBYVQ.js} +1 -1
  56. package/public/{chunk-G2UERN7F.js → chunk-HWHM6ACA.js} +1 -1
  57. package/public/{chunk-ZGXQHCAZ.js → chunk-IJVEKP7K.js} +1 -1
  58. package/public/chunk-IOKYXV5M.js +4 -0
  59. package/public/{chunk-FYI7RHOJ.js → chunk-IWFKJHPR.js} +1 -1
  60. package/public/{chunk-G6KV6PYE.js → chunk-J6CJ26QN.js} +1 -1
  61. package/public/{chunk-5CQQ6P7K.js → chunk-JLWMZIYV.js} +1 -1
  62. package/public/{chunk-BPGGCIV2.js → chunk-JONTLP2T.js} +1 -1
  63. package/public/{chunk-6PUQJMXN.js → chunk-JRG7ZOJK.js} +1 -1
  64. package/public/{chunk-G7J6XGY5.js → chunk-K2DLW4M4.js} +1 -1
  65. package/public/{chunk-WP55NF6D.js → chunk-K4XV2HUU.js} +1 -1
  66. package/public/{chunk-F37WZQGE.js → chunk-KT7FH6PP.js} +1 -1
  67. package/public/{chunk-6VEFADT5.js → chunk-KTUC5YRH.js} +1 -1
  68. package/public/{chunk-FYDO54CR.js → chunk-KZKL7DGI.js} +1 -1
  69. package/public/{chunk-PGM4QIVA.js → chunk-MF4B4RDR.js} +1 -1
  70. package/public/{chunk-ZFBUCUQW.js → chunk-NCU34GBK.js} +1 -1
  71. package/public/{chunk-7YPOSTMY.js → chunk-NFOWCDOY.js} +1 -1
  72. package/public/{chunk-KLQ6BEKS.js → chunk-OA7Y3E5A.js} +1 -1
  73. package/public/{chunk-H7SE35UN.js → chunk-OIVH2FRT.js} +1 -1
  74. package/public/{chunk-E2BQMFOO.js → chunk-PDR2DPWY.js} +1 -1
  75. package/public/{chunk-2DRGGCL6.js → chunk-PKLEEBKP.js} +1 -1
  76. package/public/{chunk-XTHHRD72.js → chunk-PZDZMQIH.js} +1 -1
  77. package/public/{chunk-RZ4UMDVF.js → chunk-QX6BFGHZ.js} +1 -1
  78. package/public/{chunk-5UXBLAGX.js → chunk-R3YDN2RN.js} +1 -1
  79. package/public/{chunk-J3QUQJAX.js → chunk-RHKVQD3P.js} +1 -1
  80. package/public/{chunk-AVMRG6LJ.js → chunk-TEEROAPU.js} +1 -1
  81. package/public/{chunk-YLBALIW6.js → chunk-TLDD55XE.js} +1 -1
  82. package/public/{chunk-AVVYKDTL.js → chunk-UFWMJUXF.js} +1 -1
  83. package/public/{chunk-3JNJJOX6.js → chunk-V6JVOQNN.js} +1 -1
  84. package/public/{chunk-RCYYU6LQ.js → chunk-WCOLHYTR.js} +1 -1
  85. package/public/{chunk-JCYDPJQ5.js → chunk-WTDK2HE6.js} +1 -1
  86. package/public/{chunk-WYHYUPM6.js → chunk-Y6ETBMB7.js} +1 -1
  87. package/public/{chunk-RGXCQLZU.js → chunk-Z2T4OZ7I.js} +1 -1
  88. package/public/{chunk-ER4N7WWQ.js → chunk-ZAAYNVER.js} +1 -1
  89. package/public/{chunk-EZQF5CUM.js → chunk-ZUTM7S4U.js} +1 -1
  90. package/public/index.html +1 -1
  91. package/public/{main-YBDT5CSM.js → main-AAF4AVF2.js} +1 -1
  92. package/public/assets/hap-icons/irrigation-system.svg +0 -49
  93. package/public/assets/hap-icons/leak-sensor.svg +0 -53
  94. package/public/assets/hap-icons/light-sensor.svg +0 -50
  95. package/public/assets/hap-icons/lock-locked.svg +0 -25
  96. package/public/assets/hap-icons/lock-unlocked.svg +0 -25
  97. package/public/assets/hap-icons/motion-sensor.svg +0 -101
  98. package/public/assets/hap-icons/occupancy-sensor.svg +0 -98
  99. package/public/assets/hap-icons/security-system-active.svg +0 -103
  100. package/public/assets/hap-icons/security-system-off.svg +0 -69
  101. package/public/assets/hap-icons/security-system-triggered.svg +0 -103
  102. package/public/assets/hap-icons/stateless-programmable-switch.svg +0 -52
  103. package/public/assets/hap-icons/valve-faucet.svg +0 -21
  104. package/public/assets/hap-icons/valve-generic.svg +0 -28
  105. package/public/assets/hap-icons/valve-irrigation.svg +0 -38
  106. package/public/assets/hap-icons/valve-shower-head.svg +0 -52
  107. package/public/chunk-33VXBD5W.js +0 -12
  108. package/public/chunk-645YHJEQ.js +0 -4
  109. package/public/chunk-EF3XRHYY.js +0 -1
  110. package/public/chunk-IDFQPWF6.js +0 -1
  111. package/public/chunk-L6SKGR7C.js +0 -1
  112. package/public/chunk-ZBNNBPMQ.js +0 -1
  113. package/public/chunk-ZC3LHWJU.js +0 -1
package/CHANGELOG.md CHANGED
@@ -2,6 +2,26 @@
2
2
 
3
3
  All notable changes to `homebridge-config-ui-x` will be documented in this file. This project tries to adhere to [Semantic Versioning](http://semver.org/).
4
4
 
5
+ ## v5.4.2 (Unreleased)
6
+
7
+ ### UI Changes
8
+
9
+ - refreshed icons: security system
10
+ - refreshed icons: lock mechanism
11
+ - refreshed icons: irrigation system + valves
12
+ - refreshed icons: light, leak, motion, occ. sensor
13
+
14
+ ### Other Changes
15
+
16
+ - fix saving custom attributes for ui layouts
17
+ - update `@homebridge/node-pty-prebuilt-multiarch` to `v0.14-beta`
18
+
19
+ ### Homebridge Dependencies
20
+
21
+ - `@homebridge/hap-client` @ `v3.1.1`
22
+ - `@homebridge/node-pty-prebuilt-multiarch` @ `v0.14.1-beta`
23
+ - `@homebridge/plugin-ui-utils` @ `v2.1.0`
24
+
5
25
  ## v5.4.1 (2025-08-05)
6
26
 
7
27
  ### UI Changes
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "homebridge-config-ui-x",
3
3
  "displayName": "Homebridge UI",
4
- "version": "5.4.1",
4
+ "version": "5.4.2-beta.1",
5
5
  "description": "A web based management, configuration and control platform for Homebridge.",
6
6
  "author": "oznu <dev@oz.nu>",
7
7
  "license": "MIT",
@@ -82,7 +82,7 @@
82
82
  "@fastify/multipart": "9.0.3",
83
83
  "@fastify/static": "8.2.0",
84
84
  "@homebridge/hap-client": "3.1.1",
85
- "@homebridge/node-pty-prebuilt-multiarch": "0.13.1",
85
+ "@homebridge/node-pty-prebuilt-multiarch": "0.14.1-beta.1",
86
86
  "@nestjs/axios": "4.0.1",
87
87
  "@nestjs/common": "11.1.5",
88
88
  "@nestjs/core": "11.1.5",
@@ -1,9 +1,9 @@
1
1
  <svg width="32px" height="32px" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg">
2
2
  <!-- outer casing -->
3
- <rect x="3" y="1" width="25" height="30" rx="3" stroke="#7f7f7f" fill="none" stroke-width="1.2" />
3
+ <rect x="3.5" y="1" width="25" height="30" rx="3" stroke="#7f7f7f" fill="none" stroke-width="1.2" />
4
4
 
5
5
  <!-- leaves -->
6
- <g transform="translate(4.6, 3) scale(0.68)">
6
+ <g transform="translate(5.1, 3) scale(0.68)">
7
7
  <path
8
8
  fill="#7f7f7f"
9
9
  class="leaves"
@@ -12,19 +12,19 @@
12
12
  </g>
13
13
 
14
14
  <!-- grille horizontal lines -->
15
- <line stroke-linecap="round" x1="6.5" y1="26" x2="24.5" y2="26" stroke="#7f7f7f" stroke-width="0.5" />
16
- <line stroke-linecap="round" x1="6.5" y1="27.5" x2="24.5" y2="27.5" stroke="#7f7f7f" stroke-width="0.5" />
17
- <line stroke-linecap="round" x1="6.5" y1="29" x2="24.5" y2="29" stroke="#7f7f7f" stroke-width="0.5" />
15
+ <line stroke-linecap="round" x1="7" y1="26" x2="25" y2="26" stroke="#7f7f7f" stroke-width="0.5" />
16
+ <line stroke-linecap="round" x1="7" y1="27.5" x2="25" y2="27.5" stroke="#7f7f7f" stroke-width="0.5" />
17
+ <line stroke-linecap="round" x1="7" y1="29" x2="25" y2="29" stroke="#7f7f7f" stroke-width="0.5" />
18
18
 
19
19
  <!-- grille vertical lines -->
20
- <line stroke-linecap="round" x1="6.5" y1="26" x2="6.5" y2="29" stroke="#7f7f7f" stroke-width="0.5" />
21
- <line stroke-linecap="round" x1="8.5" y1="26" x2="8.5" y2="29" stroke="#7f7f7f" stroke-width="0.5" />
22
- <line stroke-linecap="round" x1="10.5" y1="26" x2="10.5" y2="29" stroke="#7f7f7f" stroke-width="0.5" />
23
- <line stroke-linecap="round" x1="12.5" y1="26" x2="12.5" y2="29" stroke="#7f7f7f" stroke-width="0.5" />
24
- <line stroke-linecap="round" x1="14.5" y1="26" x2="14.5" y2="29" stroke="#7f7f7f" stroke-width="0.5" />
25
- <line stroke-linecap="round" x1="16.5" y1="26" x2="16.5" y2="29" stroke="#7f7f7f" stroke-width="0.5" />
26
- <line stroke-linecap="round" x1="18.5" y1="26" x2="18.5" y2="29" stroke="#7f7f7f" stroke-width="0.5" />
27
- <line stroke-linecap="round" x1="20.5" y1="26" x2="20.5" y2="29" stroke="#7f7f7f" stroke-width="0.5" />
28
- <line stroke-linecap="round" x1="22.5" y1="26" x2="22.5" y2="29" stroke="#7f7f7f" stroke-width="0.5" />
29
- <line stroke-linecap="round" x1="24.5" y1="26" x2="24.5" y2="29" stroke="#7f7f7f" stroke-width="0.5" />
20
+ <line stroke-linecap="round" x1="7" y1="26" x2="7" y2="29" stroke="#7f7f7f" stroke-width="0.5" />
21
+ <line stroke-linecap="round" x1="9" y1="26" x2="9" y2="29" stroke="#7f7f7f" stroke-width="0.5" />
22
+ <line stroke-linecap="round" x1="11" y1="26" x2="11" y2="29" stroke="#7f7f7f" stroke-width="0.5" />
23
+ <line stroke-linecap="round" x1="13" y1="26" x2="13" y2="29" stroke="#7f7f7f" stroke-width="0.5" />
24
+ <line stroke-linecap="round" x1="15" y1="26" x2="15" y2="29" stroke="#7f7f7f" stroke-width="0.5" />
25
+ <line stroke-linecap="round" x1="17" y1="26" x2="17" y2="29" stroke="#7f7f7f" stroke-width="0.5" />
26
+ <line stroke-linecap="round" x1="19" y1="26" x2="19" y2="29" stroke="#7f7f7f" stroke-width="0.5" />
27
+ <line stroke-linecap="round" x1="21" y1="26" x2="21" y2="29" stroke="#7f7f7f" stroke-width="0.5" />
28
+ <line stroke-linecap="round" x1="23" y1="26" x2="23" y2="29" stroke="#7f7f7f" stroke-width="0.5" />
29
+ <line stroke-linecap="round" x1="25" y1="26" x2="25" y2="29" stroke="#7f7f7f" stroke-width="0.5" />
30
30
  </svg>
@@ -6,7 +6,17 @@
6
6
  <rect class="outline" x="9.6" y="2.6" width="12.8" height="26.6" stroke="#7f7f7f" fill="none" stroke-width="1" />
7
7
 
8
8
  <!-- top panel -->
9
- <rect class="panel" x="11.2" y="4.2" width="9.6" height="10.8" stroke="#7f7f7f" fill-opacity="0" stroke-width="0.5" />
9
+ <rect
10
+ class="panel"
11
+ x="11.2"
12
+ y="4.2"
13
+ width="9.6"
14
+ height="10.8"
15
+ stroke="#7f7f7f"
16
+ fill-opacity="0"
17
+ stroke-width="0.5"
18
+ rx="0.25"
19
+ />
10
20
 
11
21
  <!-- bottom panel -->
12
22
  <rect
@@ -18,11 +28,22 @@
18
28
  stroke="#7f7f7f"
19
29
  fill-opacity="0"
20
30
  stroke-width="0.5"
31
+ rx="0.25"
21
32
  />
22
33
 
23
34
  <!-- wider floor -->
24
35
  <line x1="0" y1="31" x2="32" y2="31" stroke="#7f7f7f" stroke-width="1.5" />
25
36
 
26
37
  <!-- door handle -->
27
- <rect class="handle" x="19.25" y="15.87" width="1.55" height="0.05" stroke="#1976d2" fill="none" stroke-width="0.5" />
38
+ <rect
39
+ class="handle"
40
+ x="19.25"
41
+ y="15.87"
42
+ width="1.55"
43
+ height="0.05"
44
+ stroke="#1976d2"
45
+ fill="none"
46
+ stroke-width="0.5"
47
+ rx="10"
48
+ />
28
49
  </svg>
@@ -1,6 +1,6 @@
1
1
  <svg width="32px" height="32px" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg">
2
2
  <!-- fan icon -->
3
- <g transform="translate(1.28, 1.28) scale(0.92)">
3
+ <g transform="translate(-0.85, 0.2) scale(0.99)">
4
4
  <path
5
5
  class="fan-blades"
6
6
  fill="#7f7f7f"
@@ -11,5 +11,5 @@
11
11
  </g>
12
12
 
13
13
  <!-- middle circle -->
14
- <circle cx="17" cy="16" r="3.5" stroke="#7f7f7f" stroke-width="0.6" fill="#1976d2" fill-opacity="0.5" />
14
+ <circle cx="16" cy="16" r="3.6" stroke="#7f7f7f" stroke-width="2" fill="#1976d2" fill-opacity="0.5" />
15
15
  </svg>
@@ -33,7 +33,7 @@
33
33
  <line x1="26" y1="31" x2="29" y2="31" stroke="#7f7f7f" stroke-width="1.5" stroke-linecap="round" />
34
34
 
35
35
  <!-- left garage line -->
36
- <line x1="6" y1="17" x2="6" y2="31" stroke="#7f7f7f" stroke-width="1.5" />
36
+ <line x1="6" y1="17" x2="6" y2="31" stroke="#7f7f7f" stroke-width="1.5" stroke-linecap="" />
37
37
 
38
38
  <!-- right garage line -->
39
39
  <line x1="26" y1="17" x2="26" y2="31" stroke="#7f7f7f" stroke-width="1.5" />
@@ -0,0 +1,34 @@
1
+ <svg width="32" height="32" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg">
2
+ <!-- water tank -->
3
+ <rect
4
+ x="9"
5
+ y="1"
6
+ width="14"
7
+ height="6.5"
8
+ rx="2"
9
+ fill="#1976d2"
10
+ stroke="#7b7b7b"
11
+ stroke-width="0.5"
12
+ fill-opacity="0.5"
13
+ />
14
+
15
+ <!-- vertical pipe -->
16
+ <line class="pipe" x1="16" y1="8" x2="16" y2="31" stroke="#7f7f7f" stroke-width="1" stroke-linecap="round" />
17
+
18
+ <!-- horizontal pipes, top to bottom -->
19
+ <line class="pipe" x1="1" y1="9" x2="31" y2="9" stroke="#7f7f7f" stroke-width="1" stroke-linecap="round" />
20
+ <line class="pipe" x1="1" y1="20" x2="31" y2="20" stroke="#7f7f7f" stroke-width="1" stroke-linecap="round" />
21
+ <line class="pipe" x1="1" y1="31" x2="31" y2="31" stroke="#7f7f7f" stroke-width="1" stroke-linecap="round" />
22
+
23
+ <!-- top left field -->
24
+ <rect class="field" x="1" y="10" width="14" height="9" rx="0" fill="#7f7f7f" stroke-width="0" fill-opacity="0.5" />
25
+
26
+ <!-- top right field -->
27
+ <rect class="field" x="17" y="10" width="14" height="9" rx="0" fill="#7f7f7f" stroke-width="0" fill-opacity="0.5" />
28
+
29
+ <!-- bottom left field -->
30
+ <rect class="field" x="1" y="21" width="14" height="9" rx="0" fill="#7f7f7f" stroke-width="0" fill-opacity="0.5" />
31
+
32
+ <!-- bottom right field -->
33
+ <rect class="field" x="17" y="21" width="14" height="9" rx="0" fill="#7f7f7f" stroke-width="0" fill-opacity="0.5" />
34
+ </svg>
@@ -0,0 +1,42 @@
1
+ <svg width="32px" height="32px" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg">
2
+ <!-- outer casing -->
3
+ <rect
4
+ class="red-outline"
5
+ x="3.5"
6
+ y="1"
7
+ width="25"
8
+ height="30"
9
+ rx="3"
10
+ stroke="#7f7f7f"
11
+ fill="none"
12
+ stroke-width="1.2"
13
+ />
14
+
15
+ <!-- water droplet -->
16
+ <g transform="translate(1.8, -4.3), scale(0.85)">
17
+ <path
18
+ d="M23.61 24.58C23.61 28.67 20.44 31.99 16.56 31.99C12.68 31.99 9.52 28.67 9.52 24.58C9.52 20.49 12.68 17.13 16.56 10.87C20.44 17.13 23.61 20.49 23.61 24.58Z"
19
+ fill="#1976d2"
20
+ fill-opacity="0.25"
21
+ stroke="#7f7f7f"
22
+ stroke-width="1"
23
+ />
24
+ </g>
25
+
26
+ <!-- grille horizontal lines -->
27
+ <line stroke-linecap="round" x1="7" y1="26" x2="25" y2="26" stroke="#7f7f7f" stroke-width="0.5" />
28
+ <line stroke-linecap="round" x1="7" y1="27.5" x2="25" y2="27.5" stroke="#7f7f7f" stroke-width="0.5" />
29
+ <line stroke-linecap="round" x1="7" y1="29" x2="25" y2="29" stroke="#7f7f7f" stroke-width="0.5" />
30
+
31
+ <!-- grille vertical lines -->
32
+ <line stroke-linecap="round" x1="7" y1="26" x2="7" y2="29" stroke="#7f7f7f" stroke-width="0.5" />
33
+ <line stroke-linecap="round" x1="9" y1="26" x2="9" y2="29" stroke="#7f7f7f" stroke-width="0.5" />
34
+ <line stroke-linecap="round" x1="11" y1="26" x2="11" y2="29" stroke="#7f7f7f" stroke-width="0.5" />
35
+ <line stroke-linecap="round" x1="13" y1="26" x2="13" y2="29" stroke="#7f7f7f" stroke-width="0.5" />
36
+ <line stroke-linecap="round" x1="15" y1="26" x2="15" y2="29" stroke="#7f7f7f" stroke-width="0.5" />
37
+ <line stroke-linecap="round" x1="17" y1="26" x2="17" y2="29" stroke="#7f7f7f" stroke-width="0.5" />
38
+ <line stroke-linecap="round" x1="19" y1="26" x2="19" y2="29" stroke="#7f7f7f" stroke-width="0.5" />
39
+ <line stroke-linecap="round" x1="21" y1="26" x2="21" y2="29" stroke="#7f7f7f" stroke-width="0.5" />
40
+ <line stroke-linecap="round" x1="23" y1="26" x2="23" y2="29" stroke="#7f7f7f" stroke-width="0.5" />
41
+ <line stroke-linecap="round" x1="25" y1="26" x2="25" y2="29" stroke="#7f7f7f" stroke-width="0.5" />
42
+ </svg>
@@ -0,0 +1,34 @@
1
+ <svg width="32px" height="32px" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg">
2
+ <!-- outer casing -->
3
+ <rect x="3.5" y="1" width="25" height="30" rx="3" stroke="#7f7f7f" fill="none" stroke-width="1.2" />
4
+
5
+ <!-- sun outline -->
6
+ <circle cx="16" cy="13.75" r="6" stroke="#ff9800" fill="none" stroke-width="1.2" stroke-opacity="0.5" />
7
+
8
+ <!-- sun rays, top first going clockwise -->
9
+ <line x1="16" y1="2.5" x2="16" y2="6.5" stroke="#ff9800" stroke-width="1.2" stroke-opacity="0.5" />
10
+ <line x1="24" y1="5.5" x2="21" y2="8.5" stroke="#ff9800" stroke-width="1.2" stroke-opacity="0.5" />
11
+ <line x1="23.25" y1="13.5" x2="27.25" y2="13.5" stroke="#ff9800" stroke-width="1.2" stroke-opacity="0.5" />
12
+ <line x1="21.25" y1="18.75" x2="24.25" y2="21.75" stroke="#ff9800" stroke-width="1.2" stroke-opacity="0.5" />
13
+ <line x1="16" y1="21" x2="16" y2="25" stroke="#ff9800" stroke-width="1.2" stroke-opacity="0.5" />
14
+ <line x1="10.75" y1="18.75" x2="7.75" y2="21.75" stroke="#ff9800" stroke-width="1.2" stroke-opacity="0.5" />
15
+ <line x1="4.75" y1="13.5" x2="8.75" y2="13.5" stroke="#ff9800" stroke-width="1.2" stroke-opacity="0.5" />
16
+ <line x1="8" y1="5.5" x2="11" y2="8.5" stroke="#ff9800" stroke-width="1.2" stroke-opacity="0.5" />
17
+
18
+ <!-- grille horizontal lines -->
19
+ <line stroke-linecap="round" x1="7" y1="26" x2="25" y2="26" stroke="#7f7f7f" stroke-width="0.5" />
20
+ <line stroke-linecap="round" x1="7" y1="27.5" x2="25" y2="27.5" stroke="#7f7f7f" stroke-width="0.5" />
21
+ <line stroke-linecap="round" x1="7" y1="29" x2="25" y2="29" stroke="#7f7f7f" stroke-width="0.5" />
22
+
23
+ <!-- grille vertical lines -->
24
+ <line stroke-linecap="round" x1="7" y1="26" x2="7" y2="29" stroke="#7f7f7f" stroke-width="0.5" />
25
+ <line stroke-linecap="round" x1="9" y1="26" x2="9" y2="29" stroke="#7f7f7f" stroke-width="0.5" />
26
+ <line stroke-linecap="round" x1="11" y1="26" x2="11" y2="29" stroke="#7f7f7f" stroke-width="0.5" />
27
+ <line stroke-linecap="round" x1="13" y1="26" x2="13" y2="29" stroke="#7f7f7f" stroke-width="0.5" />
28
+ <line stroke-linecap="round" x1="15" y1="26" x2="15" y2="29" stroke="#7f7f7f" stroke-width="0.5" />
29
+ <line stroke-linecap="round" x1="17" y1="26" x2="17" y2="29" stroke="#7f7f7f" stroke-width="0.5" />
30
+ <line stroke-linecap="round" x1="19" y1="26" x2="19" y2="29" stroke="#7f7f7f" stroke-width="0.5" />
31
+ <line stroke-linecap="round" x1="21" y1="26" x2="21" y2="29" stroke="#7f7f7f" stroke-width="0.5" />
32
+ <line stroke-linecap="round" x1="23" y1="26" x2="23" y2="29" stroke="#7f7f7f" stroke-width="0.5" />
33
+ <line stroke-linecap="round" x1="25" y1="26" x2="25" y2="29" stroke="#7f7f7f" stroke-width="0.5" />
34
+ </svg>
@@ -0,0 +1,39 @@
1
+ <svg width="32px" height="32px" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg">
2
+ <!-- shackle, locked -->
3
+ <path
4
+ d="M8 16 C6 -4, 26 -4, 24 16"
5
+ fill="none"
6
+ stroke="#7f7f7f"
7
+ stroke-width="2"
8
+ class="shackle-locked"
9
+ stroke-linecap="round"
10
+ stroke-linejoin="round"
11
+ />
12
+
13
+ <!-- shackle, unlocked -->
14
+ <path
15
+ d="M8 16 C6 -2, 22 -2, 24 7"
16
+ fill="none"
17
+ stroke="#7f7f7f"
18
+ stroke-width="2"
19
+ class="shackle-unlocked"
20
+ stroke-linecap="round"
21
+ stroke-linejoin="round"
22
+ stroke-opacity="0"
23
+ />
24
+
25
+ <!-- main lock -->
26
+ <rect x="5" y="16" width="22" height="15" rx="3" fill="none" stroke="#7f7f7f" stroke-width="2" />
27
+
28
+ <!-- status keyhole -->
29
+ <circle
30
+ cx="16"
31
+ cy="23.5"
32
+ r="3"
33
+ stroke="#7f7f7f"
34
+ stroke-width="0.5"
35
+ fill="#4caf50"
36
+ fill-opacity="0.5"
37
+ class="keyhole"
38
+ />
39
+ </svg>
@@ -0,0 +1,84 @@
1
+ <svg width="32px" height="32px" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg">
2
+ <!-- outer casing -->
3
+ <rect
4
+ class="orange-outline"
5
+ x="3.5"
6
+ y="1"
7
+ width="25"
8
+ height="30"
9
+ rx="3"
10
+ stroke="#7f7f7f"
11
+ fill="none"
12
+ stroke-width="1.2"
13
+ />
14
+
15
+ <!-- human figure -->
16
+ <g transform="translate(7, -0.75), scale(0.075)">
17
+ <path
18
+ d="M190.85 83.94C190.85 70.36 180.09 59.24 166.93 59.24C153.78 59.24 143.02 70.36 143.02 83.94C143.02 97.53 153.78 108.65 166.93 108.65C180.09 108.65 190.85 97.53 190.85 83.94Z"
19
+ fill="#1976d2"
20
+ fill-opacity="0.25"
21
+ stroke="#7f7f7f"
22
+ stroke-width="7"
23
+ />
24
+ <path
25
+ d="M232.24 175.95C210.12 175.95 190.98 163.6 180.22 145.69C179.08 143.72 169.99 127.91 168.86 125.93C164.67 118.52 156.9 114.2 148.53 114.2C145.54 114.2 142.55 114.81 139.56 116.05C135.37 117.82 114.45 126.67 76.78 142.6L76.78 200.66L100.69 200.66L100.69 159.28L121.62 150.02L88.73 324.17L113.85 324.17L134.78 225.36L160.49 250.06L160.49 324.17L184.4 324.17L184.4 230.92L159.89 205.6C164.19 183.36 166.59 171.01 167.06 168.54C182.61 188.3 205.93 200.66 232.24 200.66C232.24 195.72 232.24 178.42 232.24 175.95Z"
26
+ fill="#1976d2"
27
+ fill-opacity="0.25"
28
+ stroke="#7f7f7f"
29
+ stroke-width="7"
30
+ />
31
+ </g>
32
+
33
+ <!-- motion lines, top to bottom -->
34
+ <rect
35
+ x="9"
36
+ y="9"
37
+ width="2"
38
+ height="1"
39
+ rx="0.2"
40
+ stroke="#7f7f7f"
41
+ fill="#1976d2"
42
+ fill-opacity="0.25"
43
+ stroke-width="0.25"
44
+ />
45
+ <rect
46
+ x="7"
47
+ y="13"
48
+ width="3"
49
+ height="1"
50
+ rx="0.2"
51
+ stroke="#7f7f7f"
52
+ fill="#1976d2"
53
+ fill-opacity="0.25"
54
+ stroke-width="0.25"
55
+ />
56
+ <rect
57
+ x="8"
58
+ y="17"
59
+ width="4"
60
+ height="1"
61
+ rx="0.2"
62
+ stroke="#7f7f7f"
63
+ fill="#1976d2"
64
+ fill-opacity="0.25"
65
+ stroke-width="0.25"
66
+ />
67
+
68
+ <!-- grille horizontal lines -->
69
+ <line stroke-linecap="round" x1="7" y1="26" x2="25" y2="26" stroke="#7f7f7f" stroke-width="0.5" />
70
+ <line stroke-linecap="round" x1="7" y1="27.5" x2="25" y2="27.5" stroke="#7f7f7f" stroke-width="0.5" />
71
+ <line stroke-linecap="round" x1="7" y1="29" x2="25" y2="29" stroke="#7f7f7f" stroke-width="0.5" />
72
+
73
+ <!-- grille vertical lines -->
74
+ <line stroke-linecap="round" x1="7" y1="26" x2="7" y2="29" stroke="#7f7f7f" stroke-width="0.5" />
75
+ <line stroke-linecap="round" x1="9" y1="26" x2="9" y2="29" stroke="#7f7f7f" stroke-width="0.5" />
76
+ <line stroke-linecap="round" x1="11" y1="26" x2="11" y2="29" stroke="#7f7f7f" stroke-width="0.5" />
77
+ <line stroke-linecap="round" x1="13" y1="26" x2="13" y2="29" stroke="#7f7f7f" stroke-width="0.5" />
78
+ <line stroke-linecap="round" x1="15" y1="26" x2="15" y2="29" stroke="#7f7f7f" stroke-width="0.5" />
79
+ <line stroke-linecap="round" x1="17" y1="26" x2="17" y2="29" stroke="#7f7f7f" stroke-width="0.5" />
80
+ <line stroke-linecap="round" x1="19" y1="26" x2="19" y2="29" stroke="#7f7f7f" stroke-width="0.5" />
81
+ <line stroke-linecap="round" x1="21" y1="26" x2="21" y2="29" stroke="#7f7f7f" stroke-width="0.5" />
82
+ <line stroke-linecap="round" x1="23" y1="26" x2="23" y2="29" stroke="#7f7f7f" stroke-width="0.5" />
83
+ <line stroke-linecap="round" x1="25" y1="26" x2="25" y2="29" stroke="#7f7f7f" stroke-width="0.5" />
84
+ </svg>
@@ -0,0 +1,49 @@
1
+ <svg width="32px" height="32px" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg">
2
+ <!-- outer casing -->
3
+ <rect
4
+ class="orange-outline"
5
+ x="3.5"
6
+ y="1"
7
+ width="25"
8
+ height="30"
9
+ rx="3"
10
+ stroke="#7f7f7f"
11
+ fill="none"
12
+ stroke-width="1.2"
13
+ />
14
+
15
+ <!-- human figure -->
16
+ <g transform="translate(4.75, -0.75), scale(0.075)">
17
+ <path
18
+ d="M190.85 83.94C190.85 70.36 180.09 59.24 166.93 59.24C153.78 59.24 143.02 70.36 143.02 83.94C143.02 97.53 153.78 108.65 166.93 108.65C180.09 108.65 190.85 97.53 190.85 83.94Z"
19
+ fill="#ff9800"
20
+ fill-opacity="0.25"
21
+ stroke="#7f7f7f"
22
+ stroke-width="7"
23
+ />
24
+ <path
25
+ d="M232.24 175.95C210.12 175.95 190.98 163.6 180.22 145.69C179.08 143.72 169.99 127.91 168.86 125.93C164.67 118.52 156.9 114.2 148.53 114.2C145.54 114.2 142.55 114.81 139.56 116.05C135.37 117.82 114.45 126.67 76.78 142.6L76.78 200.66L100.69 200.66L100.69 159.28L121.62 150.02L88.73 324.17L113.85 324.17L134.78 225.36L160.49 250.06L160.49 324.17L184.4 324.17L184.4 230.92L159.89 205.6C164.19 183.36 166.59 171.01 167.06 168.54C182.61 188.3 205.93 200.66 232.24 200.66C232.24 195.72 232.24 178.42 232.24 175.95Z"
26
+ fill="#ff9800"
27
+ fill-opacity="0.25"
28
+ stroke="#7f7f7f"
29
+ stroke-width="7"
30
+ />
31
+ </g>
32
+
33
+ <!-- grille horizontal lines -->
34
+ <line stroke-linecap="round" x1="7" y1="26" x2="25" y2="26" stroke="#7f7f7f" stroke-width="0.5" />
35
+ <line stroke-linecap="round" x1="7" y1="27.5" x2="25" y2="27.5" stroke="#7f7f7f" stroke-width="0.5" />
36
+ <line stroke-linecap="round" x1="7" y1="29" x2="25" y2="29" stroke="#7f7f7f" stroke-width="0.5" />
37
+
38
+ <!-- grille vertical lines -->
39
+ <line stroke-linecap="round" x1="7" y1="26" x2="7" y2="29" stroke="#7f7f7f" stroke-width="0.5" />
40
+ <line stroke-linecap="round" x1="9" y1="26" x2="9" y2="29" stroke="#7f7f7f" stroke-width="0.5" />
41
+ <line stroke-linecap="round" x1="11" y1="26" x2="11" y2="29" stroke="#7f7f7f" stroke-width="0.5" />
42
+ <line stroke-linecap="round" x1="13" y1="26" x2="13" y2="29" stroke="#7f7f7f" stroke-width="0.5" />
43
+ <line stroke-linecap="round" x1="15" y1="26" x2="15" y2="29" stroke="#7f7f7f" stroke-width="0.5" />
44
+ <line stroke-linecap="round" x1="17" y1="26" x2="17" y2="29" stroke="#7f7f7f" stroke-width="0.5" />
45
+ <line stroke-linecap="round" x1="19" y1="26" x2="19" y2="29" stroke="#7f7f7f" stroke-width="0.5" />
46
+ <line stroke-linecap="round" x1="21" y1="26" x2="21" y2="29" stroke="#7f7f7f" stroke-width="0.5" />
47
+ <line stroke-linecap="round" x1="23" y1="26" x2="23" y2="29" stroke="#7f7f7f" stroke-width="0.5" />
48
+ <line stroke-linecap="round" x1="25" y1="26" x2="25" y2="29" stroke="#7f7f7f" stroke-width="0.5" />
49
+ </svg>
@@ -0,0 +1,19 @@
1
+ <svg width="32" height="32" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg">
2
+ <!-- siren dome -->
3
+ <path
4
+ class="dome"
5
+ d="M7 18 C7 5, 25 5, 25 18 V26 H7 V18 Z"
6
+ fill="none"
7
+ stroke="#7f7f7f"
8
+ stroke-width="1.5"
9
+ fill-opacity="0.5"
10
+ />
11
+
12
+ <!-- base -->
13
+ <rect x="2" y="26" width="28" height="4" fill="none" stroke="#7f7f7f" stroke-width="1.5" rx="1" />
14
+
15
+ <!-- light waves left to right -->
16
+ <line class="ray" x1="6" y1="3" x2="10" y2="7" stroke-width="3" />
17
+ <line class="ray" x1="16" y1="0" x2="16" y2="5" stroke-width="3" />
18
+ <line class="ray" x1="26" y1="3" x2="22" y2="7" stroke-width="3" />
19
+ </svg>
@@ -13,6 +13,6 @@
13
13
  <circle class="long" cx="16" cy="23.5" r="5" stroke="#7f7f7f" stroke-width="1" fill="none" fill-opacity="0.5" />
14
14
 
15
15
  <!-- long click lies, left then right -->
16
- <line x1="5" y1="23.5" x2="11" y2="23.5" stroke="#7f7f7f" stroke-width="0.5" />
17
- <line x1="21" y1="23.5" x2="27" y2="23.5" stroke="#7f7f7f" stroke-width="0.5" />
16
+ <line x1="5" y1="23.5" x2="11" y2="23.5" stroke="#7f7f7f" stroke-width="0.5" stroke-linecap="round" />
17
+ <line x1="21" y1="23.5" x2="27" y2="23.5" stroke="#7f7f7f" stroke-width="0.5" stroke-linecap="round" />
18
18
  </svg>
@@ -0,0 +1,22 @@
1
+ <svg width="32" height="32" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg">
2
+ <!-- sink -->
3
+ <rect class="sink" x="-3" y="28" width="21" height="6.5" fill="#7f7f7f" stroke-width="0" fill-opacity="0.5" />
4
+
5
+ <!-- cold tap -->
6
+ <line stroke-linecap="round" x1="24" y1="18" x2="26" y2="18" stroke="#1976d2" stroke-width="3" stroke-opacity="0.5" />
7
+
8
+ <!-- hot tap -->
9
+ <line stroke-linecap="round" x1="20" y1="18" x2="22" y2="18" stroke="#d32f2f" stroke-width="3" stroke-opacity="0.5" />
10
+
11
+ <!-- tap outline -->
12
+ <rect x="19" y="16.5" rx="1" width="8" height="3" fill="none" stroke-width="1" stroke="#7f7f7f" />
13
+
14
+ <!-- tap shape -->
15
+ <path d="M10 9 C10 -1, 23 -1, 23 10 V26" fill="none" stroke="#7f7f7f" stroke-width="2" />
16
+
17
+ <!-- water -->
18
+ <line class="stream" x1="10" y1="9" x2="10" y2="28" stroke="#1976d2" stroke-opacity="0" stroke-width="1.5" />
19
+
20
+ <!-- tap base -->
21
+ <line x1="20" y1="31" x2="26" y2="31" stroke="#7f7f7f" stroke-width="10" stroke-linecap="round" />
22
+ </svg>
@@ -0,0 +1,25 @@
1
+ <svg width="32" height="32" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg">
2
+ <!-- top twister -->
3
+ <line x1="8" y1="3" x2="14" y2="3" stroke="#7f7f7f" stroke-width="3" stroke-linecap="round" />
4
+
5
+ <!-- twister to main pipe -->
6
+ <line x1="11" y1="8" x2="11" y2="3" stroke="#7f7f7f" stroke-width="3" stroke-linecap="round" />
7
+
8
+ <!-- main pipe -->
9
+ <line x1="0" y1="9" x2="21" y2="9" stroke="#7f7f7f" stroke-width="4" stroke-linecap="round" />
10
+
11
+ <!-- nozzle -->
12
+ <line x1="21" y1="9" x2="21" y2="14" stroke="#7f7f7f" stroke-width="4" stroke-linecap="round" />
13
+
14
+ <!-- top row of drops -->
15
+ <circle class="drop drop-top" fill="#1976d2" fill-opacity="0" cx="21" cy="19" r="1.5" />
16
+
17
+ <!-- middle row of drops -->
18
+ <circle class="drop drop-middle" fill="#1976d2" fill-opacity="0" cx="17" cy="24" r="1.5" />
19
+ <circle class="drop drop-middle" fill="#1976d2" fill-opacity="0" cx="25" cy="24" r="1.5" />
20
+
21
+ <!-- bottom row of drops -->
22
+ <circle class="drop drop-bottom" fill="#1976d2" fill-opacity="0" cx="13" cy="29" r="1.5" />
23
+ <circle class="drop drop-bottom" fill="#1976d2" fill-opacity="0" cx="21" cy="29" r="1.5" />
24
+ <circle class="drop drop-bottom" fill="#1976d2" fill-opacity="0" cx="29" cy="29" r="1.5" />
25
+ </svg>
@@ -0,0 +1,34 @@
1
+ <svg width="32" height="32" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg">
2
+ <!-- small drops, left to right -->
3
+ <circle class="drop drop-out" fill="#1976d2" fill-opacity="0" cx="1" cy="16" r="1" />
4
+ <circle class="drop drop-out" fill="#1976d2" fill-opacity="0" cx="6" cy="8" r="1" />
5
+ <circle class="drop drop-out" fill="#1976d2" fill-opacity="0" cx="16" cy="4" r="1" />
6
+ <circle class="drop drop-out" fill="#1976d2" fill-opacity="0" cx="26" cy="8" r="1" />
7
+ <circle class="drop drop-out" fill="#1976d2" fill-opacity="0" cx="31" cy="16" r="1" />
8
+
9
+ <!-- large drops, left to right -->
10
+ <circle class="drop drop-in" fill="#1976d2" fill-opacity="0" cx="7" cy="16" r="1.5" />
11
+ <circle class="drop drop-in" fill="#1976d2" fill-opacity="0" cx="25" cy="16" r="1.5" />
12
+ <circle class="drop drop-in" fill="#1976d2" fill-opacity="0" cx="10.5" cy="11.5" r="1.5" />
13
+ <circle class="drop drop-in" fill="#1976d2" fill-opacity="0" cx="21.5" cy="11.5" r="1.5" />
14
+ <circle class="drop drop-in" fill="#1976d2" fill-opacity="0" cx="16" cy="9" r="1.5" />
15
+
16
+ <!-- vertical pipe -->
17
+ <line x1="16" y1="16" x2="16" y2="31" stroke="#7f7f7f" stroke-width="2" stroke-linecap="round" />
18
+
19
+ <!-- spout -->
20
+ <line x1="14" y1="16" x2="18" y2="16" stroke="#7f7f7f" stroke-width="4" stroke-linecap="round" />
21
+
22
+ <!-- grass -->
23
+ <line
24
+ class="grass"
25
+ x1="4"
26
+ y1="31"
27
+ x2="28"
28
+ y2="31"
29
+ stroke="#7f7f7f"
30
+ stroke-opacity="0.5"
31
+ stroke-width="10"
32
+ stroke-linecap="round"
33
+ />
34
+ </svg>
@@ -0,0 +1,32 @@
1
+ <svg width="32" height="32" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg">
2
+ <!-- top horizontal pipe -->
3
+ <line x1="1" y1="1" x2="16" y2="1" stroke="#7f7f7f" stroke-width="2" stroke-linecap="round" />
4
+
5
+ <!-- left vertical pipe -->
6
+ <line x1="1" y1="1" x2="1" y2="31" stroke="#7f7f7f" stroke-width="2" stroke-linecap="round" />
7
+
8
+ <!-- pipe to head -->
9
+ <line x1="16" y1="1" x2="16" y2="3" stroke="#7f7f7f" stroke-width="2" stroke-linecap="round" />
10
+
11
+ <!-- shower head -->
12
+ <path d="M8 11 A8 7 0 0 1 24 11" fill="none" stroke="#7f7f7f" stroke-width="2" />
13
+ <line x1="7" y1="11" x2="25" y2="11" stroke="#7f7f7f" stroke-width="2" stroke-linecap="round" />
14
+
15
+ <!-- large drops, left to right -->
16
+ <circle class="drop drop-top" fill="#1976d2" fill-opacity="0" cx="8" cy="16" r="1.25" />
17
+ <circle class="drop drop-top" fill="#1976d2" fill-opacity="0" cx="13.3" cy="16" r="1.25" />
18
+ <circle class="drop drop-top" fill="#1976d2" fill-opacity="0" cx="18.6" cy="16" r="1.25" />
19
+ <circle class="drop drop-top" fill="#1976d2" fill-opacity="0" cx="24" cy="16" r="1.25" />
20
+
21
+ <!-- middle drops, left to right -->
22
+ <circle class="drop drop-middle" fill="#1976d2" fill-opacity="0" cx="8" cy="22" r="1" />
23
+ <circle class="drop drop-middle" fill="#1976d2" fill-opacity="0" cx="13.3" cy="22" r="1" />
24
+ <circle class="drop drop-middle" fill="#1976d2" fill-opacity="0" cx="18.6" cy="22" r="1" />
25
+ <circle class="drop drop-middle" fill="#1976d2" fill-opacity="0" cx="24" cy="22" r="1" />
26
+
27
+ <!-- small drops, left to right -->
28
+ <circle class="drop drop-bottom" fill="#1976d2" fill-opacity="0" cx="8" cy="28" r="0.75" />
29
+ <circle class="drop drop-bottom" fill="#1976d2" fill-opacity="0" cx="13.3" cy="28" r="0.75" />
30
+ <circle class="drop drop-bottom" fill="#1976d2" fill-opacity="0" cx="18.6" cy="28" r="0.75" />
31
+ <circle class="drop drop-bottom" fill="#1976d2" fill-opacity="0" cx="24" cy="28" r="0.75" />
32
+ </svg>
@@ -6,13 +6,13 @@
6
6
  <rect x="2.8" y="2.6" width="12.4" height="26.6" stroke="#7f7f7f" fill="none" stroke-width="1" />
7
7
 
8
8
  <!-- left window divider -->
9
- <rect x="3.66" y="15.65" width="10.68" height="0.5" stroke="#7f7f7f" fill="none" stroke-width="0.5" />
9
+ <rect x="3.66" y="15.65" width="10.68" height="0.5" stroke="#7f7f7f" fill="none" stroke-width="0.5" rx="2" />
10
10
 
11
11
  <!-- right window frame -->
12
12
  <rect x="16.8" y="2.6" width="12.4" height="26.6" stroke="#7f7f7f" fill="none" stroke-width="1" />
13
13
 
14
14
  <!-- right window divider -->
15
- <rect x="17.66" y="15.65" width="10.68" height="0.5" stroke="#7f7f7f" fill="none" stroke-width="0.5" />
15
+ <rect x="17.66" y="15.65" width="10.68" height="0.5" stroke="#7f7f7f" fill="none" stroke-width="0.5" rx="2" />
16
16
 
17
17
  <!-- blind -->
18
18
  <rect