mirror of
https://github.com/home-assistant/frontend.git
synced 2025-08-14 19:59:26 +00:00
Compare commits
36 Commits
fix-action
...
20200916.0
Author | SHA1 | Date | |
---|---|---|---|
![]() |
4f4edb109f | ||
![]() |
265bfeb889 | ||
![]() |
96110637d9 | ||
![]() |
ad34f98e6d | ||
![]() |
a8a1563586 | ||
![]() |
9b25a54a47 | ||
![]() |
4b8c96c769 | ||
![]() |
c62ff85e73 | ||
![]() |
7d5a27ec0f | ||
![]() |
d6aba040dd | ||
![]() |
ca4757db5b | ||
![]() |
c917b67cbd | ||
![]() |
9659c97978 | ||
![]() |
7d862d6f2a | ||
![]() |
9c80776d8c | ||
![]() |
d5cd288fe8 | ||
![]() |
239e817779 | ||
![]() |
1986215919 | ||
![]() |
239f5f1a2f | ||
![]() |
3bca32c6d5 | ||
![]() |
183eff745d | ||
![]() |
4392d78ff6 | ||
![]() |
858196ab53 | ||
![]() |
fb75d8c1f2 | ||
![]() |
7628569579 | ||
![]() |
8a9d5f7753 | ||
![]() |
cdcccf5089 | ||
![]() |
de95c92e2d | ||
![]() |
667c828359 | ||
![]() |
085c6f8bdd | ||
![]() |
5cca5bfe86 | ||
![]() |
4999f1ad51 | ||
![]() |
61dbae8b8b | ||
![]() |
ba3cc7df0f | ||
![]() |
090ad34f78 | ||
![]() |
b2460cbc3d |
@@ -1,267 +1 @@
|
||||
[
|
||||
{
|
||||
"path": "M17.5,15.61C17.33,15.37 9.53,5.4 9.27,5.08C9,4.75 9.08,4.65 9.13,4.59C9.22,4.5 9.36,4.5 9.93,4.5C10.26,4.5 13.59,4.5 13.94,4.47C14.66,4.47 14.78,4.53 14.85,4.56C14.93,4.58 15.13,4.75 15.26,4.92C15.33,5 22.32,13.36 22.39,13.45C22.46,13.54 22.59,13.69 22.67,13.84C22.76,14 22.77,14.18 22.64,14.25C22.56,14.3 18.7,15.89 18.59,15.93C18.5,16 18.27,16.06 18.11,16.04C18,16 17.77,15.92 17.5,15.61M21.47,15.42L21.75,15.47C21.75,15.47 22.68,15.65 22.77,15.67C22.87,15.69 22.96,15.76 22.95,15.79C22.94,15.87 22.9,15.91 22.83,15.95C22.77,16 18.58,18.58 18.5,18.62C18.43,18.66 18.33,18.72 18.11,18.75C17.7,18.83 16.91,18.61 16.66,18.56C16.41,18.5 6.15,16.23 6.06,16.2C5.97,16.17 5.91,16.16 5.9,16.08C5.89,15.94 6.11,15.88 6.28,15.81C6.46,15.75 11.28,14 11.45,13.93C11.62,13.86 11.84,13.84 11.95,13.83C12.06,13.82 12.73,13.93 13.03,13.97C13.34,14 14.2,14.15 14.2,14.15L16.16,16.7C16.5,17.09 16.72,17.25 17,17.28C17.15,17.29 17.31,17.25 17.42,17.2C17.5,17.16 21.47,15.42 21.47,15.42M10.25,9.18L11.96,11.37L12,11.45V11.5C11.96,11.54 8.93,14.32 8.91,14.35L5.72,15.5C5.72,15.5 5.63,15.55 5.58,15.58C5.53,15.61 5.47,15.67 5.5,15.82C5.5,15.87 5.5,16.59 5.5,16.79L1.56,18.04C1.37,18.1 1,18.23 0.95,18.19C0.88,18.14 0.97,18.03 1,17.97C1.06,17.91 9.08,10 9.39,9.7C9.84,9.24 10.25,9.18 10.25,9.18",
|
||||
"name": "accusoft"
|
||||
},
|
||||
{
|
||||
"path": "M4.94,11.12C5.23,11.12 5.5,11.16 5.76,11.23C5.77,9.09 7.5,7.35 9.65,7.35C11.27,7.35 12.67,8.35 13.24,9.77C13.83,9 14.74,8.53 15.76,8.53C17.5,8.53 18.94,9.95 18.94,11.71C18.94,11.95 18.91,12.2 18.86,12.43C19.1,12.34 19.37,12.29 19.65,12.29C20.95,12.29 22,13.35 22,14.65C22,15.95 20.95,17 19.65,17C18.35,17 6.36,17 4.94,17C3.32,17 2,15.68 2,14.06C2,12.43 3.32,11.12 4.94,11.12Z",
|
||||
"name": "amazon-drive"
|
||||
},
|
||||
{
|
||||
"path": "M8,11.5A1.25,1.25 0 0,0 6.75,12.75A1.25,1.25 0 0,0 8,14A1.25,1.25 0 0,0 9.25,12.75A1.25,1.25 0 0,0 8,11.5M16,11.5A1.25,1.25 0 0,0 14.75,12.75A1.25,1.25 0 0,0 16,14A1.25,1.25 0 0,0 17.25,12.75A1.25,1.25 0 0,0 16,11.5M12,7C13.5,7 14.9,7.33 16.18,7.91L18.34,5.75C18.73,5.36 19.36,5.36 19.75,5.75C20.14,6.14 20.14,6.77 19.75,7.16L17.95,8.96C20.41,10.79 22,13.71 22,17H2C2,13.71 3.59,10.79 6.05,8.96L4.25,7.16C3.86,6.77 3.86,6.14 4.25,5.75C4.64,5.36 5.27,5.36 5.66,5.75L7.82,7.91C9.1,7.33 10.5,7 12,7Z",
|
||||
"name": "android-head"
|
||||
},
|
||||
{
|
||||
"path": "M2,16.25C2,16.25 4,3.75 12,3.75C20,3.75 22,16.25 22,16.25C22,16.25 20,20.25 12,20.25C4,20.25 2,16.25 2,16.25M3.35,15.65C3.35,15.65 4.3,19 12,19C17,19 20,17.8 20.65,15.85C21.3,13.9 15.65,7.6 14.65,7.6C13.65,7.6 11.2,12 10.45,12C8.45,12 8.9,10 7.15,10C5.4,10 3.35,15.65 3.35,15.65Z",
|
||||
"name": "basecamp"
|
||||
},
|
||||
{
|
||||
"path": "M7,12A5,5 0 0,0 12,17A5,5 0 0,0 17,12A5,5 0 0,0 12,7C10.87,7 9.84,7.37 9,8V2.46C9.95,2.16 10.95,2 12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12C2,8.3 4,5.07 7,3.34V12M12,9A3,3 0 0,1 15,12A3,3 0 0,1 12,15A3,3 0 0,1 9,12A3,3 0 0,1 12,9Z",
|
||||
"name": "beats"
|
||||
},
|
||||
{
|
||||
"path": "M19.58,12.27C19.54,11.65 19.33,11.18 18.96,10.86C18.59,10.54 18.13,10.38 17.58,10.38C17,10.38 16.5,10.55 16.19,10.89C15.86,11.23 15.65,11.69 15.57,12.27M21.92,12.04C22,12.45 22,13.04 22,13.81H15.5C15.55,14.71 15.85,15.33 16.44,15.69C16.79,15.92 17.22,16.03 17.73,16.03C18.26,16.03 18.69,15.89 19,15.62C19.2,15.47 19.36,15.27 19.5,15H21.88C21.82,15.54 21.53,16.07 21,16.62C20.22,17.5 19.1,17.92 17.66,17.92C16.47,17.92 15.43,17.55 14.5,16.82C13.62,16.09 13.16,14.9 13.16,13.25C13.16,11.7 13.57,10.5 14.39,9.7C15.21,8.87 16.27,8.46 17.58,8.46C18.35,8.46 19.05,8.6 19.67,8.88C20.29,9.16 20.81,9.59 21.21,10.2C21.58,10.73 21.81,11.34 21.92,12.04M9.58,14.07C9.58,13.42 9.31,12.97 8.79,12.73C8.5,12.6 8.08,12.53 7.54,12.5H4.87V15.84H7.5C8.04,15.84 8.46,15.77 8.76,15.62C9.31,15.35 9.58,14.83 9.58,14.07M4.87,10.46H7.5C8.04,10.46 8.5,10.36 8.82,10.15C9.16,9.95 9.32,9.58 9.32,9.06C9.32,8.5 9.1,8.1 8.66,7.91C8.27,7.78 7.78,7.72 7.19,7.72H4.87M11.72,12.42C12.04,12.92 12.2,13.53 12.2,14.24C12.2,15 12,15.64 11.65,16.23C11.41,16.62 11.12,16.94 10.77,17.21C10.37,17.5 9.9,17.72 9.36,17.83C8.82,17.94 8.24,18 7.61,18H2V5.55H8C9.53,5.58 10.6,6 11.23,6.88C11.61,7.41 11.8,8.04 11.8,8.78C11.8,9.54 11.61,10.15 11.23,10.61C11,10.87 10.7,11.11 10.28,11.32C10.91,11.55 11.39,11.92 11.72,12.42M20.06,7.32H15.05V6.07H20.06V7.32Z",
|
||||
"name": "behance"
|
||||
},
|
||||
{
|
||||
"path": "M5.45,10.28C6.4,10.28 7.5,11.05 7.5,12C7.5,12.95 6.4,13.72 5.45,13.72H2L2.69,10.28H5.45M6.14,4.76C7.09,4.76 8.21,5.53 8.21,6.5C8.21,7.43 7.09,8.21 6.14,8.21H2.69L3.38,4.76H6.14M13.03,4.76C14,4.76 15.1,5.53 15.1,6.5C15.1,7.43 14,8.21 13.03,8.21H9.41L10.1,4.76H13.03M12.34,10.28C13.3,10.28 14.41,11.05 14.41,12C14.41,12.95 13.3,13.72 12.34,13.72H8.72L9.41,10.28H12.34M10.97,15.79C11.92,15.79 13.03,16.57 13.03,17.5C13.03,18.47 11.92,19.24 10.97,19.24H7.5L8.21,15.79H10.97M18.55,13.72C19.5,13.72 20.62,14.5 20.62,15.45C20.62,16.4 19.5,17.17 18.55,17.17H15.1L15.79,13.72H18.55M19.93,8.21C20.88,8.21 22,9 22,9.93C22,10.88 20.88,11.66 19.93,11.66H16.5L17.17,8.21H19.93Z",
|
||||
"name": "blackberry"
|
||||
},
|
||||
{
|
||||
"path": "M12,3A9,9 0 0,1 21,12A9,9 0 0,1 12,21A9,9 0 0,1 3,12A9,9 0 0,1 12,3M5.94,8.5C4,11.85 5.15,16.13 8.5,18.06C11.85,20 18.85,7.87 15.5,5.94C12.15,4 7.87,5.15 5.94,8.5Z",
|
||||
"name": "cisco-webex"
|
||||
},
|
||||
{
|
||||
"path": "M11.9,14.5H10.8V9.5H11.9C13.5,9.5 14.6,10.4 14.6,12C14.6,13.6 13.5,14.5 11.9,14.5M11.9,7H8.1V17H11.8C15.3,17 17.4,14.9 17.4,12V12C17.4,9.1 15.4,7 11.9,7M12,20C10.1,20 8.3,19.3 6.9,18.1L6.2,17.5L4.5,17.7L5.2,16.1L4.9,15.3C4.4,14.2 4.2,13.1 4.2,11.9C4.2,7.5 7.8,3.9 12.1,3.9C16.4,3.9 19.9,7.6 19.9,12C19.9,16.4 16.3,20 12,20M12,2C6.5,2 2.1,6.5 2.1,12C2.1,13.5 2.4,14.9 3,16.2L1.4,20.3L5.7,19.7C7.4,21.2 9.7,22.1 12.1,22.1C17.6,22.1 22,17.6 22,12.1C22,6.6 17.5,2 12,2Z",
|
||||
"name": "disqus-outline"
|
||||
},
|
||||
{
|
||||
"path": "M16.42,18.42C16,16.5 15.5,14.73 15,13.17C15.5,13.1 16,13.06 16.58,13.06H16.6V13.06H16.6C17.53,13.06 18.55,13.18 19.66,13.43C19.28,15.5 18.08,17.27 16.42,18.42M12,19.8C10.26,19.8 8.66,19.23 7.36,18.26C7.64,17.81 8.23,16.94 9.18,16.04C10.14,15.11 11.5,14.15 13.23,13.58C13.82,15.25 14.36,17.15 14.77,19.29C13.91,19.62 13,19.8 12,19.8M4.2,12C4.2,11.96 4.2,11.93 4.2,11.89C4.42,11.9 4.71,11.9 5.05,11.9H5.06C6.62,11.89 9.36,11.76 12.14,10.89C12.29,11.22 12.44,11.56 12.59,11.92C10.73,12.54 9.27,13.53 8.19,14.5C7.16,15.46 6.45,16.39 6.04,17C4.9,15.66 4.2,13.91 4.2,12M8.55,5C9.1,5.65 10.18,7.06 11.34,9.25C9,9.96 6.61,10.12 5.18,10.12C5.14,10.12 5.1,10.12 5.06,10.12H5.05C4.81,10.12 4.6,10.12 4.43,10.11C5,7.87 6.5,6 8.55,5M12,4.2C13.84,4.2 15.53,4.84 16.86,5.91C15.84,7.14 14.5,8 13.03,8.65C12,6.67 11,5.25 10.34,4.38C10.88,4.27 11.43,4.2 12,4.2M18.13,7.18C19.1,8.42 19.71,9.96 19.79,11.63C18.66,11.39 17.6,11.28 16.6,11.28V11.28H16.59C15.79,11.28 15.04,11.35 14.33,11.47C14.16,11.05 14,10.65 13.81,10.26C15.39,9.57 16.9,8.58 18.13,7.18M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z",
|
||||
"name": "dribbble"
|
||||
},
|
||||
{
|
||||
"path": "M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M15.09,16.5C14.81,15.14 14.47,13.91 14.08,12.82L15.2,12.74H15.22V12.74C15.87,12.74 16.59,12.82 17.36,13C17.09,14.44 16.26,15.69 15.09,16.5M12,17.46C10.79,17.46 9.66,17.06 8.76,16.39C8.95,16.07 9.36,15.46 10,14.83C10.7,14.18 11.64,13.5 12.86,13.11C13.28,14.27 13.65,15.6 13.94,17.1C13.33,17.33 12.68,17.46 12,17.46M6.54,12V11.92L7.14,11.93V11.93C8.24,11.93 10.15,11.83 12.1,11.22L12.41,11.94C11.11,12.38 10.09,13.07 9.34,13.76C8.61,14.42 8.12,15.08 7.83,15.5C7.03,14.56 6.54,13.34 6.54,12M9.59,7.11C9.97,7.56 10.73,8.54 11.54,10.08C9.89,10.57 8.23,10.68 7.22,10.68H7.14V10.68H6.7C7.09,9.11 8.17,7.81 9.59,7.11M12,6.54C13.29,6.54 14.47,7 15.41,7.74C14.69,8.6 13.74,9.22 12.72,9.66C12,8.27 11.31,7.28 10.84,6.67C11.21,6.59 11.6,6.54 12,6.54M16.29,8.63C16.97,9.5 17.4,10.57 17.45,11.74C16.66,11.58 15.92,11.5 15.22,11.5V11.5C14.66,11.5 14.13,11.54 13.63,11.63L13.27,10.78C14.37,10.3 15.43,9.61 16.29,8.63M12,5A7,7 0 0,0 5,12A7,7 0 0,0 12,19A7,7 0 0,0 19,12A7,7 0 0,0 12,5Z",
|
||||
"name": "dribbble-box"
|
||||
},
|
||||
{
|
||||
"path": "M6.72,20.78C8.23,20.71 10.07,20.78 11.87,20.78C13.72,20.78 15.62,20.66 17.12,20.78C17.72,20.83 18.28,21.19 18.77,20.87C19.16,20.38 18.87,19.71 18.96,19.05C19.12,17.78 20.28,16.27 18.59,15.95C17.87,16.61 18.35,17.23 17.95,18.05C17.45,19.03 15.68,19.37 14,19.5C12.54,19.62 10,19.76 9.5,18.77C9.04,17.94 9.29,16.65 9.29,15.58C9.29,14.38 9.16,13.22 9.5,12.3C11.32,12.43 13.7,11.69 15,12.5C15.87,13 15.37,14.06 16.38,14.4C17.07,14.21 16.7,13.32 16.66,12.5C16.63,11.94 16.63,11.19 16.66,10.57C16.69,9.73 17,8.76 16.1,8.74C15.39,9.3 15.93,10.23 15.18,10.75C14.95,10.92 14.43,11 14.08,11C12.7,11.17 10.54,11.05 9.38,10.84C9.23,9.16 9.24,6.87 9.38,5.19C10,4.57 11.45,4.54 12.42,4.55C14.13,4.55 16.79,4.7 17.3,5.55C17.58,6 17.36,7 17.85,7.1C18.85,7.33 18.36,5.55 18.41,4.73C18.44,4.11 18.71,3.72 18.59,3.27C18.27,2.83 17.79,3.05 17.5,3.09C14.35,3.5 9.6,3.27 6.26,3.27C5.86,3.27 5.16,3.07 4.88,3.54C4.68,4.6 6.12,4.16 6.62,4.73C6.79,4.91 7.03,5.73 7.08,6.28C7.23,7.74 7.08,9.97 7.08,12.12C7.08,14.38 7.26,16.67 7.08,18.05C7,18.53 6.73,19.3 6.62,19.41C6,20.04 4.34,19.35 4.5,20.69C5.09,21.08 5.93,20.82 6.72,20.78Z",
|
||||
"name": "etsy"
|
||||
},
|
||||
{
|
||||
"path": "M12,17.5C10.15,17.5 8.42,16.56 7.41,15L17.41,12.75L22.08,11.75C22.05,10.32 21.71,8.92 21.08,7.64C18.66,2.61 12.62,0.5 7.58,2.92C2.55,5.34 0.44,11.38 2.86,16.41C5.29,21.44 11.33,23.56 16.36,21.14C18.5,20.09 20.25,18.31 21.22,16.11L16.61,15C15.6,16.57 13.86,17.5 12,17.5M12,6.5C13.76,6.5 15.41,7.34 16.44,8.77L6.57,11.19C6.96,8.5 9.28,6.5 12,6.5Z",
|
||||
"name": "eventbrite"
|
||||
},
|
||||
{
|
||||
"path": "M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M18,5H15.5A3.5,3.5 0 0,0 12,8.5V11H10V14H12V21H15V14H18V11H15V9A1,1 0 0,1 16,8H18V5Z",
|
||||
"name": "facebook-box"
|
||||
},
|
||||
{
|
||||
"path": "M21,12A9,9 0 0,1 12,21H4.5L9.74,15.76L11.16,17.17L9.33,19H12A7,7 0 0,0 19,12V7L21,5V12M3,12A9,9 0 0,1 12,3H19.5L14.26,8.24L12.84,6.83L14.67,5H12A7,7 0 0,0 5,12V17L3,19V12Z",
|
||||
"name": "flattr"
|
||||
},
|
||||
{
|
||||
"path": "M11,12C11,14.5 9,16.5 6.5,16.5C4,16.5 2,14.5 2,12C2,9.5 4,7.5 6.5,7.5C9,7.5 11,9.5 11,12M17.5,7.5C15,7.5 13,9.5 13,12C13,14.5 15,16.5 17.5,16.5C20,16.5 22,14.5 22,12C22,9.5 20,7.5 17.5,7.5Z",
|
||||
"name": "flickr"
|
||||
},
|
||||
{
|
||||
"path": "M17,5L16.57,7.5C16.5,7.73 16.2,8 15.91,8C15.61,8 12,8 12,8C11.53,8 10.95,8.32 10.95,8.79V9.2C10.95,9.67 11.53,10 12,10C12,10 14.95,10 15.28,10C15.61,10 15.93,10.36 15.86,10.71C15.79,11.07 14.94,13.28 14.9,13.5C14.86,13.67 14.64,14 14.25,14C13.92,14 11.37,14 11.37,14C10.85,14 10.69,14.07 10.34,14.5C10,14.94 7.27,18.1 7.27,18.1C7.24,18.13 7,18.04 7,18V5C7,4.7 7.61,4 8,4C8,4 16.17,4 16.5,4C16.82,4 17.08,4.61 17,5M17,14.45C17.11,13.97 18.78,6.72 19.22,4.55M17.58,2C17.58,2 8.38,2 6.91,2C5.43,2 5,3.11 5,3.8C5,4.5 5,20.76 5,20.76C5,21.54 5.42,21.84 5.66,21.93C5.9,22.03 6.55,22.11 6.94,21.66C6.94,21.66 11.65,16.22 11.74,16.13C11.87,16 11.87,16 12,16C12.26,16 14.2,16 15.26,16C16.63,16 16.85,15 17,14.45C17.11,13.97 18.78,6.72 19.22,4.55C19.56,2.89 19.14,2 17.58,2Z",
|
||||
"name": "foursquare"
|
||||
},
|
||||
{
|
||||
"path": "M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H14.56C14.24,20.93 14.23,20.32 14.23,20.11L14.24,17.64C14.24,16.8 13.95,16.25 13.63,15.97C15.64,15.75 17.74,15 17.74,11.53C17.74,10.55 17.39,9.74 16.82,9.11C16.91,8.89 17.22,7.97 16.73,6.73C16.73,6.73 15.97,6.5 14.25,7.66C13.53,7.46 12.77,7.36 12,7.35C11.24,7.36 10.46,7.46 9.75,7.66C8.03,6.5 7.27,6.73 7.27,6.73C6.78,7.97 7.09,8.89 7.18,9.11C6.61,9.74 6.26,10.55 6.26,11.53C6.26,15 8.36,15.75 10.36,16C10.1,16.2 9.87,16.6 9.79,17.18C9.27,17.41 7.97,17.81 7.17,16.43C7.17,16.43 6.69,15.57 5.79,15.5C5.79,15.5 4.91,15.5 5.73,16.05C5.73,16.05 6.32,16.33 6.73,17.37C6.73,17.37 7.25,19.12 9.76,18.58L9.77,20.11C9.77,20.32 9.75,20.93 9.43,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3Z",
|
||||
"name": "github-box"
|
||||
},
|
||||
{
|
||||
"path": "M20.38,8.53C20.54,8.13 21.06,6.54 20.21,4.39C20.21,4.39 18.9,4 15.91,6C14.66,5.67 13.33,5.62 12,5.62C10.68,5.62 9.34,5.67 8.09,6C5.1,3.97 3.79,4.39 3.79,4.39C2.94,6.54 3.46,8.13 3.63,8.53C2.61,9.62 2,11 2,12.72C2,19.16 6.16,20.61 12,20.61C17.79,20.61 22,19.16 22,12.72C22,11 21.39,9.62 20.38,8.53M12,19.38C7.88,19.38 4.53,19.19 4.53,15.19C4.53,14.24 5,13.34 5.8,12.61C7.14,11.38 9.43,12.03 12,12.03C14.59,12.03 16.85,11.38 18.2,12.61C19,13.34 19.5,14.23 19.5,15.19C19.5,19.18 16.13,19.38 12,19.38M8.86,13.12C8.04,13.12 7.36,14.12 7.36,15.34C7.36,16.57 8.04,17.58 8.86,17.58C9.69,17.58 10.36,16.58 10.36,15.34C10.36,14.11 9.69,13.12 8.86,13.12M15.14,13.12C14.31,13.12 13.64,14.11 13.64,15.34C13.64,16.58 14.31,17.58 15.14,17.58C15.96,17.58 16.64,16.58 16.64,15.34C16.64,14.11 16,13.12 15.14,13.12Z",
|
||||
"name": "github-face"
|
||||
},
|
||||
{
|
||||
"path": "M8,2A3,3 0 0,0 5,5V16.5H8V5H19A3,3 0 0,0 16,2H8M16,7.5V19H5A3,3 0 0,0 8,22H16A3,3 0 0,0 19,19V7.5H16Z",
|
||||
"name": "glassdoor"
|
||||
},
|
||||
{
|
||||
"path": "M2,22L8.5,2H15.4L9.2,20C9.2,20 8.6,22 7,22C5.9,22 2,22 2,22M16.4,5L13,15L15,20.7C15,20.7 15.4,22 17,22C18.3,22 22,22 22,22L16.4,5Z",
|
||||
"name": "google-adwords"
|
||||
},
|
||||
{
|
||||
"path": "M19,3H13V8L17,7L16,11H21V5C21,3.89 20.1,3 19,3M17,17L13,16V21H19A2,2 0 0,0 21,19V13H16M8,13H3V19A2,2 0 0,0 5,21H11V16L7,17M3,5V11H8L7,7L11,8V3H5C3.89,3 3,3.89 3,5Z",
|
||||
"name": "google-pages"
|
||||
},
|
||||
{
|
||||
"path": "M12,1.5A9,9 0 0,1 21,10.5C21,13.11 19.89,15.47 18.11,17.11L17.05,16.05C18.55,14.68 19.5,12.7 19.5,10.5A7.5,7.5 0 0,0 12,3A7.5,7.5 0 0,0 4.5,10.5C4.5,12.7 5.45,14.68 6.95,16.05L5.89,17.11C4.11,15.47 3,13.11 3,10.5A9,9 0 0,1 12,1.5M12,4.5A6,6 0 0,1 18,10.5C18,12.28 17.22,13.89 16,15L14.92,13.92C15.89,13.1 16.5,11.87 16.5,10.5C16.5,8 14.5,6 12,6C9.5,6 7.5,8 7.5,10.5C7.5,11.87 8.11,13.1 9.08,13.92L8,15C6.78,13.89 6,12.28 6,10.5A6,6 0 0,1 12,4.5M8.11,17.65L11.29,14.46C11.68,14.07 12.32,14.07 12.71,14.46L15.89,17.65C16.28,18.04 16.28,18.67 15.89,19.06L12.71,22.24C12.32,22.63 11.68,22.63 11.29,22.24L8.11,19.06C7.72,18.67 7.72,18.04 8.11,17.65Z",
|
||||
"name": "google-physical-web"
|
||||
},
|
||||
{
|
||||
"path": "M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M19.5,12H18V10.5H17V12H15.5V13H17V14.5H18V13H19.5V12M9.65,11.36V12.9H12.22C12.09,13.54 11.45,14.83 9.65,14.83C8.11,14.83 6.89,13.54 6.89,12C6.89,10.46 8.11,9.17 9.65,9.17C10.55,9.17 11.13,9.56 11.45,9.88L12.67,8.72C11.9,7.95 10.87,7.5 9.65,7.5C7.14,7.5 5.15,9.5 5.15,12C5.15,14.5 7.14,16.5 9.65,16.5C12.22,16.5 13.96,14.7 13.96,12.13C13.96,11.81 13.96,11.61 13.89,11.36H9.65Z",
|
||||
"name": "google-plus-box"
|
||||
},
|
||||
{
|
||||
"path": "M14,20.95H20V10.78L8,7.34V3.05H4V20.95H10V15.31H14V20.95Z",
|
||||
"name": "houzz"
|
||||
},
|
||||
{
|
||||
"path": "M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M13.5,18.71H18V11.09L9,8.5V5.29H6V18.71H10.5V14.5H13.5V18.71Z",
|
||||
"name": "houzz-box"
|
||||
},
|
||||
{
|
||||
"path": "M10,5A1,1 0 0,0 9,4H8V2H16V4H15A1,1 0 0,0 14,5V19A1,1 0 0,0 15,20H16V22H8V20H9A1,1 0 0,0 10,19V5Z",
|
||||
"name": "instapaper"
|
||||
},
|
||||
{
|
||||
"path": "M7.85,17.07C7.03,17.17 3.5,17.67 4.06,20.26C4.69,23.3 9.87,22.59 9.83,19C9.81,16.57 9.83,9.2 9.83,9.2C9.83,9.2 9.76,8.53 10.43,8.39L18.19,6.79C18.19,6.79 18.83,6.65 18.83,7.29C18.83,7.89 18.83,14.2 18.83,14.2C18.83,14.2 18.9,14.83 18.12,15C17.34,15.12 13.91,15.4 14.19,18C14.5,21.07 20,20.65 20,17.07V2.61C20,2.61 20.04,1.62 18.9,1.87L9.5,3.78C9.5,3.78 8.66,3.96 8.66,4.77C8.66,5.5 8.66,16.11 8.66,16.11C8.66,16.11 8.66,16.96 7.85,17.07Z",
|
||||
"name": "itunes"
|
||||
},
|
||||
{
|
||||
"path": "M2,5.69C8.92,1.07 11.1,7 11.28,10.27C11.46,13.53 8.29,17.64 4.31,14.92V20.3L2,18.77V5.69M4.22,7.4V12.78C7.84,14.95 9.08,13.17 9.08,10.09C9.08,5.74 6.57,5.59 4.22,7.4M15.08,4.15C15.08,4.15 14.9,7.64 15.08,11.07C15.44,14.5 19.69,11.84 19.69,11.84V4.92L22,5.2V14.44C22,20.6 15.85,20.3 15.85,20.3L15.08,18C20.46,18 19.78,14.43 19.78,14.43C13.27,16.97 12.77,12.61 12.77,12.61V5.69L15.08,4.15Z",
|
||||
"name": "language-python-text"
|
||||
},
|
||||
{
|
||||
"path": "M18,17.93C15.92,17.92 14.81,16.9 14.04,15.09L13.82,14.6L11.92,10.23C11.29,8.69 9.72,7.64 7.96,7.64C5.57,7.64 3.63,9.59 3.63,12C3.63,14.41 5.57,16.36 7.96,16.36C9.62,16.36 11.08,15.41 11.8,14L12.57,15.81C11.5,17.15 9.82,18 7.96,18C4.67,18 2,15.32 2,12C2,8.69 4.67,6 7.96,6C10.44,6 12.45,7.34 13.47,9.7C13.54,9.89 14.54,12.24 15.42,14.24C15.96,15.5 16.42,16.31 17.91,16.36C19.38,16.41 20.39,15.5 20.39,14.37C20.39,13.26 19.62,13 18.32,12.56C16,11.79 14.79,11 14.79,9.15C14.79,7.33 16,6.12 18,6.12C19.31,6.12 20.24,6.7 20.89,7.86L19.62,8.5C19.14,7.84 18.61,7.57 17.94,7.57C17,7.57 16.33,8.23 16.33,9.1C16.33,10.34 17.43,10.53 18.97,11.03C21.04,11.71 22,12.5 22,14.42C22,16.45 20.27,17.93 18,17.93Z",
|
||||
"name": "lastfm"
|
||||
},
|
||||
{
|
||||
"path": "M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19M18.5,18.5V13.2A3.26,3.26 0 0,0 15.24,9.94C14.39,9.94 13.4,10.46 12.92,11.24V10.13H10.13V18.5H12.92V13.57C12.92,12.8 13.54,12.17 14.31,12.17A1.4,1.4 0 0,1 15.71,13.57V18.5H18.5M6.88,8.56A1.68,1.68 0 0,0 8.56,6.88C8.56,5.95 7.81,5.19 6.88,5.19A1.69,1.69 0 0,0 5.19,6.88C5.19,7.81 5.95,8.56 6.88,8.56M8.27,18.5V10.13H5.5V18.5H8.27Z",
|
||||
"name": "linkedin-box"
|
||||
},
|
||||
{
|
||||
"path": "M9.56,12.5C9.56,12.6 9.5,12.72 9.4,12.79C9.2,12.97 8.89,12.94 8.71,12.74C8.63,12.65 8.59,12.53 8.59,12.41V8.5H5.66V13.39A2.44,2.44 0 0,0 8.1,15.83C8.68,15.83 9.24,15.62 9.68,15.24C9.64,15.6 9.43,15.93 9.11,16.11C8.75,16.31 8.35,16.42 7.94,16.41C7.46,16.41 7,16.3 6.56,16.09L6.39,16V18.6C7.04,18.86 7.74,19 8.44,19C9.47,19 10.46,18.66 11.25,18C12.08,17.25 12.54,16.18 12.5,15.06V8.5H9.56V12.5M4.93,13.39V5.59H2V12.9C1.84,14.35 2.88,15.65 4.33,15.81C4.41,15.82 4.5,15.83 4.56,15.83V15.83C4.93,15.83 5.29,15.74 5.63,15.59L5.75,15.5L5.65,15.41C5.17,14.85 4.91,14.13 4.93,13.39M22,11.39V8.5H21C20.59,6.38 18.53,5 16.41,5.41C16.17,5.45 15.94,5.5 15.71,5.61C14.28,6.24 13.33,7.62 13.26,9.18V15.83H13.39C14.95,15.76 16.19,14.47 16.19,12.9H17.41V10H16.15V9.17C16.15,8.86 16.32,8.57 16.59,8.41C17.06,8.13 17.68,8.28 17.96,8.76C18.05,8.91 18.09,9.07 18.1,9.24V11.93C18.07,14.05 19.75,15.79 21.87,15.83H22V12.9H22A1,1 0 0,1 21,11.9V11.41L22,11.39Z",
|
||||
"name": "lyft"
|
||||
},
|
||||
{
|
||||
"path": "M15.45,11.91C15.34,9.7 13.7,8.37 11.72,8.37H11.64C9.35,8.37 8.09,10.17 8.09,12.21C8.09,14.5 9.62,15.95 11.63,15.95C13.88,15.95 15.35,14.3 15.46,12.36M11.65,6.39C13.18,6.39 14.62,7.07 15.67,8.13V8.13C15.67,7.62 16,7.24 16.5,7.24H16.61C17.35,7.24 17.5,7.94 17.5,8.16V16.06C17.46,16.58 18.04,16.84 18.37,16.5C19.64,15.21 21.15,9.81 17.58,6.69C14.25,3.77 9.78,4.25 7.4,5.89C4.88,7.63 3.26,11.5 4.83,15.11C6.54,19.06 11.44,20.24 14.35,19.06C15.83,18.47 16.5,20.46 15,21.11C12.66,22.1 6.23,22 3.22,16.79C1.19,13.27 1.29,7.08 6.68,3.87C10.81,1.42 16.24,2.1 19.5,5.5C22.95,9.1 22.75,15.8 19.4,18.41C17.89,19.59 15.64,18.44 15.66,16.71L15.64,16.15C14.59,17.2 13.18,17.81 11.65,17.81C8.63,17.81 6,15.15 6,12.13C6,9.08 8.63,6.39 11.65,6.39Z",
|
||||
"name": "mail-ru"
|
||||
},
|
||||
{
|
||||
"path": "M20.93,14C20.66,15.4 18.5,16.95 15.97,17.25C14.66,17.4 13.38,17.55 12,17.5C9.76,17.38 8,16.95 8,16.95L8.03,17.57C8.32,19.78 10.22,19.92 12.03,20C13.85,20.04 15.47,19.53 15.47,19.53L15.55,21.17C15.55,21.17 14.27,21.86 12,22C10.75,22.05 9.2,21.95 7.39,21.47C3.47,20.43 2.79,16.25 2.69,12L2.68,8.57C2.68,4.23 5.5,2.96 5.5,2.96C6.95,2.3 9.41,2 11.97,2H12.03C14.59,2 17.05,2.3 18.5,2.96C18.5,2.96 21.33,4.23 21.33,8.57C21.33,8.57 21.36,11.77 20.93,14M8.33,10.32C8.33,9.54 7.7,8.91 6.93,8.91C6.15,8.91 5.5,9.54 5.5,10.32C5.5,11.09 6.15,11.72 6.93,11.72A1.4,1.4 0 0,0 8.33,10.32M13.41,10.32A1.41,1.41 0 0,0 12,8.91A1.41,1.41 0 0,0 10.59,10.32C10.59,11.09 11.22,11.72 12,11.72C12.78,11.72 13.41,11.09 13.41,10.32M18.5,10.32C18.5,9.54 17.85,8.91 17.07,8.91C16.3,8.91 15.67,9.54 15.67,10.32A1.4,1.4 0 0,0 17.07,11.72C17.85,11.72 18.5,11.09 18.5,10.32Z",
|
||||
"name": "mastodon-variant"
|
||||
},
|
||||
{
|
||||
"path": "M4.37,7.3C4.4,7.05 4.3,6.81 4.12,6.65L2.25,4.4V4.06H8.05L12.53,13.89L16.47,4.06H22V4.4L20.4,5.93C20.27,6.03 20.2,6.21 20.23,6.38V17.62C20.2,17.79 20.27,17.97 20.4,18.07L21.96,19.6V19.94H14.12V19.6L15.73,18.03C15.89,17.88 15.89,17.83 15.89,17.59V8.5L11.4,19.9H10.8L5.57,8.5V16.14C5.5,16.46 5.63,16.78 5.86,17L7.96,19.57V19.9H2V19.57L4.1,17C4.33,16.78 4.43,16.46 4.37,16.14V7.3Z",
|
||||
"name": "medium"
|
||||
},
|
||||
{
|
||||
"path": "M19.61,14.86C19.61,16.68 18.3,18.25 16.5,18.55C16.29,18.59 16.07,18.62 15.84,18.61C15.76,18.61 15.73,18.64 15.71,18.71C15.35,19.74 14.64,20.35 13.57,20.5C12.86,20.6 12.22,20.41 11.65,19.97C11.57,19.9 11.5,19.9 11.44,19.96C10.78,20.43 10.04,20.64 9.23,20.59C7.66,20.5 6.33,19.29 6.08,17.74C6.06,17.63 6.04,17.5 6.04,17.41C6.04,17.32 6,17.29 5.92,17.27C5.44,17.18 5,17 4.63,16.68C3.92,16.13 3.5,15.41 3.4,14.5C3.29,13.5 3.61,12.62 4.32,11.89C4.38,11.83 4.38,11.79 4.34,11.72C4.07,11.24 3.94,10.72 3.96,10.17C4,8.79 4.97,7.65 6.31,7.37C6.46,7.33 6.54,7.27 6.61,7.13C7.27,5.71 8.37,4.85 9.91,4.56C11,4.36 12,4.58 12.94,5.13C13,5.18 13.08,5.18 13.17,5.16C14.67,4.72 16,5.04 17.12,6.11C17.78,6.74 18.15,7.54 18.26,8.46C18.28,8.66 18.29,8.86 18.28,9.06C18.27,9.14 18.29,9.17 18.37,9.19C19.04,9.44 19.5,9.91 19.71,10.6C19.96,11.45 19.75,12.21 19.11,12.83C19.05,12.89 19.07,12.92 19.1,12.97C19.44,13.56 19.61,14.18 19.61,14.86M12.93,14.57C12.93,15.34 13.43,16 14.14,16.26C14.5,16.37 14.85,16.43 15.22,16.45C15.5,16.46 15.75,16.44 16,16.32C16.19,16.22 16.28,16.06 16.27,15.85C16.26,15.64 16.16,15.5 15.96,15.4C15.89,15.37 15.82,15.34 15.74,15.33C15.5,15.29 15.3,15.26 15.07,15.21C14.71,15.14 14.55,14.95 14.55,14.57C14.54,14.24 14.63,13.93 14.73,13.63C14.92,13.07 15.17,12.53 15.41,12C15.64,11.47 15.88,10.95 16.04,10.4C16.13,10.1 16.18,9.8 16.09,9.5C15.97,9 15.69,8.7 15.2,8.61C14.75,8.5 14.3,8.5 13.9,8.78C13.76,8.87 13.63,8.85 13.5,8.74C13.43,8.67 13.34,8.58 13.26,8.5C12.84,8.12 12.3,8.1 11.85,8.45C11.67,8.59 11.5,8.76 11.33,8.89C11.16,9 11,9.03 10.79,8.92C10.6,8.83 10.42,8.74 10.23,8.65C10.03,8.57 9.85,8.46 9.63,8.44C8.95,8.38 8.24,8.79 7.94,9.41C7.8,9.68 7.69,9.96 7.59,10.25C7.11,11.57 6.72,12.91 6.32,14.26C6.14,14.86 6.35,15.45 6.86,15.77C7.26,16 7.69,16.09 8.14,15.95C8.5,15.84 8.71,15.55 8.85,15.22C9.31,14.13 9.73,13 10.17,11.91C10.29,11.61 10.41,11.3 10.54,11C10.67,10.7 11.04,10.6 11.26,10.8C11.4,10.92 11.44,11.09 11.42,11.26C11.41,11.45 11.34,11.62 11.27,11.79C11,12.5 10.69,13.24 10.4,13.97C10.34,14.11 10.28,14.26 10.25,14.42C10.21,14.69 10.31,14.93 10.54,15C10.76,15.12 11,15.14 11.23,15.05C11.5,14.95 11.67,14.74 11.79,14.5C12.22,13.65 12.65,12.8 13.08,11.95C13.28,11.56 13.5,11.17 13.68,10.78C13.76,10.64 13.85,10.5 14,10.41C14.12,10.33 14.25,10.33 14.38,10.4C14.5,10.47 14.5,10.6 14.5,10.73C14.5,10.8 14.5,10.87 14.47,10.93C14.41,11.07 14.36,11.2 14.3,11.33C13.94,12.09 13.57,12.84 13.22,13.59C13.07,13.91 12.91,14.23 12.93,14.57M17.96,20.12C17.96,19.62 17.54,19.2 17.04,19.2C16.5,19.2 16.1,19.61 16.1,20.12A0.93,0.93 0 0,0 17.03,21.05A0.93,0.93 0 0,0 17.96,20.12M2.38,12.46C2.86,12.46 3.27,12.05 3.27,11.57C3.27,11.09 2.87,10.69 2.39,10.69C1.89,10.69 1.5,11.08 1.5,11.57C1.5,12.06 1.89,12.46 2.38,12.46M13.26,2.55C12.77,2.55 12.37,2.94 12.37,3.42C12.37,3.91 12.77,4.3 13.25,4.3C13.74,4.3 14.13,3.92 14.13,3.43C14.13,2.95 13.74,2.55 13.26,2.55M20.45,8.03C20.45,7.63 20.11,7.29 19.71,7.29C19.3,7.28 18.95,7.63 18.95,8.04C18.95,8.45 19.28,8.78 19.7,8.78C20.12,8.78 20.46,8.45 20.45,8.03M5.04,5.89C5.04,6.27 5.34,6.56 5.71,6.56C6.09,6.56 6.39,6.26 6.38,5.88C6.38,5.5 6.09,5.22 5.72,5.22C5.33,5.22 5.04,5.5 5.04,5.89M12.06,21.44C12.06,21.12 11.81,20.86 11.5,20.86C11.16,20.86 10.91,21.11 10.91,21.44C10.91,21.75 11.16,22 11.5,22C11.8,22 12.06,21.75 12.06,21.44M21,12.5C20.71,12.5 20.45,12.78 20.45,13.08A0.55,0.55 0 0,0 21,13.63C21.33,13.63 21.57,13.4 21.57,13.08C21.57,12.77 21.33,12.5 21,12.5M7.62,2C7.35,2 7.14,2.2 7.14,2.47C7.14,2.73 7.35,2.94 7.62,2.94A0.47,0.47 0 0,0 8.09,2.47C8.09,2.2 7.89,2 7.62,2M22.08,10C21.86,10 21.67,10.17 21.66,10.4C21.66,10.63 21.85,10.82 22.08,10.82C22.32,10.82 22.5,10.64 22.5,10.41C22.5,10.17 22.32,10 22.08,10M5.5,18.26C5.5,18.04 5.29,17.85 5.06,17.84C4.84,17.84 4.65,18.03 4.65,18.27C4.65,18.5 4.84,18.68 5.07,18.68C5.3,18.68 5.5,18.5 5.5,18.26Z",
|
||||
"name": "meetup"
|
||||
},
|
||||
{
|
||||
"path": "M21.11,18.5C20.97,18.5 20.83,18.44 20.71,18.36C20.37,18.13 20.28,17.68 20.5,17.34C21.18,16.34 21.54,15.16 21.54,13.93C21.54,12.71 21.18,11.53 20.5,10.5C20.28,10.18 20.37,9.73 20.71,9.5C21.04,9.28 21.5,9.37 21.72,9.7C22.56,10.95 23,12.41 23,13.93C23,15.45 22.56,16.91 21.72,18.16C21.58,18.37 21.35,18.5 21.11,18.5M19,17.29C18.88,17.29 18.74,17.25 18.61,17.17C18.28,16.94 18.19,16.5 18.42,16.15C18.86,15.5 19.1,14.73 19.1,13.93C19.1,13.14 18.86,12.37 18.42,11.71C18.19,11.37 18.28,10.92 18.61,10.69C18.95,10.47 19.4,10.55 19.63,10.89C20.24,11.79 20.56,12.84 20.56,13.93C20.56,15 20.24,16.07 19.63,16.97C19.5,17.18 19.25,17.29 19,17.29M14.9,15.73C15.89,15.73 16.7,14.92 16.7,13.93C16.7,13.17 16.22,12.5 15.55,12.25C15.5,12.55 15.43,12.85 15.34,13.14C15.23,13.44 14.95,13.64 14.64,13.64C14.57,13.64 14.5,13.62 14.41,13.6C14.03,13.47 13.82,13.06 13.95,12.67C14.09,12.24 14.17,11.78 14.17,11.32C14.17,8.93 12.22,7 9.82,7C8.1,7 6.56,8 5.87,9.5C6.54,9.7 7.16,10.04 7.66,10.54C7.95,10.83 7.95,11.29 7.66,11.58C7.38,11.86 6.91,11.86 6.63,11.58C6.17,11.12 5.56,10.86 4.9,10.86C3.56,10.86 2.46,11.96 2.46,13.3C2.46,14.64 3.56,15.73 4.9,15.73H14.9M15.6,10.75C17.06,11.07 18.17,12.37 18.17,13.93C18.17,15.73 16.7,17.19 14.9,17.19H4.9C2.75,17.19 1,15.45 1,13.3C1,11.34 2.45,9.73 4.33,9.45C5.12,7.12 7.33,5.5 9.82,5.5C12.83,5.5 15.31,7.82 15.6,10.75Z",
|
||||
"name": "mixcloud"
|
||||
},
|
||||
{
|
||||
"path": "M5.68,3.96L11.41,11.65C11.55,11.84 11.55,12.1 11.41,12.29L5.65,20L5.5,20.18C4.76,21 3.47,21.07 2.64,20.31C1.85,19.59 1.79,18.37 2.43,17.5L6.56,11.97L2.46,6.47C1.83,5.62 1.88,4.39 2.67,3.67L2.82,3.54C3.73,2.87 5,3.05 5.68,3.96M18.32,3.96C19,3.05 20.27,2.87 21.18,3.54L21.33,3.67C22.12,4.39 22.17,5.61 21.54,6.47L17.44,11.97L21.57,17.5C22.21,18.36 22.15,19.59 21.36,20.31C20.53,21.07 19.24,21 18.5,20.18L18.35,20L12.59,12.29C12.45,12.1 12.45,11.84 12.59,11.65L18.32,3.96Z",
|
||||
"name": "mixer"
|
||||
},
|
||||
{
|
||||
"path": "M3.25,4.03L19.95,20.73L18.7,22L14.86,18.13C14.77,18.12 14.68,18.09 14.59,18.05C14.26,17.89 14.14,17.62 14.11,17.38L12.18,15.45C12.14,15.53 12.09,15.6 12.05,15.66C11.62,16.26 11.19,16.26 10.86,16.04C10.54,15.83 5.5,12 5.23,11.87C4.95,11.76 4.85,12.03 5.12,13.5C5.39,15 4.95,15.39 4.57,15.45C4.2,15.5 3.06,15.18 3,12.14C2.95,9.11 3.76,8.62 4.14,8.62C4.6,8.62 7.08,10.69 8.84,12.12L2,5.28L3.25,4.03M18.38,16.56C18.75,15.4 19.12,13.8 19.1,12.03V12C19.14,8.5 17.66,5.58 17.66,5.58C17.66,5.58 17.42,4.72 18.12,4.39C18.83,4.06 19.3,4.61 19.3,4.61C21.12,8.22 21,11.64 21,12C21,12.27 21.09,14.96 19.88,18.05L18.38,16.56M15.14,13.31C15.19,12.92 15.22,12.5 15.24,12.03V12C15.14,8.5 14.13,7.21 14.13,7.21C14.13,7.21 13.89,6.34 14.59,6C15.3,5.69 15.77,6.23 15.77,6.23C17.26,8.94 17.16,11.64 17.14,12C17.15,12.2 17.2,13.38 16.82,15L15.14,13.31M10.2,8.38C10.23,7.77 10.59,7.64 10.59,7.64C10.59,7.64 11.19,7.37 11.57,7.8C11.91,8.19 12.72,9.57 12.89,11.07L10.2,8.38Z",
|
||||
"name": "nfc-off"
|
||||
},
|
||||
{ "path": "M20,4H4V20H12V8H16V20H20V4", "name": "npm-variant" },
|
||||
{
|
||||
"path": "M3,3V21H21V3H3M6,6H18V18H15V9H12V18H6V6Z",
|
||||
"name": "npm-variant-outline"
|
||||
},
|
||||
{
|
||||
"path": "M8.32,21.97C8.21,21.92 8.08,21.76 8.06,21.65C8.03,21.5 8,21.76 8.66,17.56C9.26,13.76 9.25,13.82 9.33,13.71C9.46,13.54 9.44,13.54 10.94,13.53C12.26,13.5 12.54,13.5 13.13,13.41C16.38,12.96 18.39,11.05 19.09,7.75C19.13,7.53 19.17,7.34 19.18,7.34C19.18,7.33 19.25,7.38 19.33,7.44C20.36,8.22 20.71,9.66 20.32,11.58C19.86,13.87 18.64,15.39 16.74,16.04C15.93,16.32 15.25,16.43 14.05,16.46C13.25,16.5 13.23,16.5 13,16.65C12.83,16.82 12.84,16.79 12.45,19.2C12.18,20.9 12.08,21.45 12.04,21.55C11.97,21.71 11.83,21.85 11.67,21.93L11.56,22H10C8.71,22 8.38,22 8.32,21.97V21.97M3.82,19.74C3.63,19.64 3.5,19.47 3.5,19.27C3.5,19 6.11,2.68 6.18,2.5C6.27,2.32 6.5,2.13 6.68,2.06L6.83,2H10.36C14.27,2 14.12,2 15,2.2C17.62,2.75 18.82,4.5 18.37,7.13C17.87,10.06 16.39,11.8 13.87,12.43C13,12.64 12.39,12.7 10.73,12.7C9.42,12.7 9.32,12.71 9.06,12.85C8.8,13 8.59,13.27 8.5,13.6C8.46,13.67 8.23,15.07 7.97,16.7C7.71,18.33 7.5,19.69 7.5,19.72L7.47,19.78H5.69C4.11,19.78 3.89,19.78 3.82,19.74V19.74Z",
|
||||
"name": "paypal"
|
||||
},
|
||||
{
|
||||
"path": "M12,7A2,2 0 0,1 10,9A2,2 0 0,1 8,7C7.37,7.84 7,8.87 7,10A5,5 0 0,0 12,15A5,5 0 0,0 17,10A5,5 0 0,0 12,5C11.57,5 11.16,5.05 10.77,5.15C11.5,5.45 12,6.17 12,7M12,2A8,8 0 0,1 20,10C20,11.05 19.8,12.04 19.43,12.96C17.89,17.38 13.63,22 12,22C10.37,22 6.11,17.38 4.57,12.96C4.2,12.04 4,11.05 4,10A8,8 0 0,1 12,2Z",
|
||||
"name": "periscope"
|
||||
},
|
||||
{
|
||||
"path": "M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H9.29C9.69,20.33 10.19,19.38 10.39,18.64L11.05,16.34C11.36,16.95 12.28,17.45 13.22,17.45C16.17,17.45 18.22,14.78 18.22,11.45C18.22,8.28 15.64,5.89 12.3,5.89C8.14,5.89 5.97,8.67 5.97,11.72C5.97,13.14 6.69,14.89 7.91,15.45C8.08,15.56 8.19,15.5 8.19,15.34L8.47,14.28C8.5,14.14 8.5,14.06 8.41,14C7.97,13.45 7.69,12.61 7.69,11.78C7.69,9.64 9.3,7.61 12.03,7.61C14.42,7.61 16.08,9.19 16.08,11.5C16.08,14.11 14.75,15.95 13.03,15.95C12.05,15.95 11.39,15.11 11.55,14.17C11.83,13.03 12.39,11.83 12.39,11C12.39,10.22 12,9.61 11.16,9.61C10.22,9.61 9.39,10.61 9.39,11.95C9.39,12.83 9.66,13.39 9.66,13.39L8.55,18.17C8.39,19 8.47,20.25 8.55,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3Z",
|
||||
"name": "pinterest-box"
|
||||
},
|
||||
{
|
||||
"path": "M21.9,4.26C21.64,3.55 20.96,3.07 20.2,3.07H20.19L18.46,3.07H3.81C3.07,3.07 2.39,3.54 2.12,4.24C2.04,4.45 2,4.66 2,4.88V10.92L2.07,12.12C2.36,14.85 3.78,17.23 5.97,18.9C6,18.93 6.05,18.96 6.09,19H6.11C7.29,19.86 8.6,20.44 10,20.73C10.68,20.86 11.35,20.93 12,20.93C12.63,20.93 13.25,20.87 13.85,20.76C13.93,20.75 14,20.73 14.07,20.72C14.09,20.71 14.11,20.7 14.14,20.69C15.5,20.4 16.76,19.83 17.89,19H17.91C17.95,18.96 18,18.93 18.03,18.9C20.22,17.23 21.64,14.85 21.93,12.12L22,10.92V4.88C22,4.68 21.97,4.47 21.9,4.26M17.67,10.55L12.96,15.06C12.7,15.32 12.35,15.44 12,15.44C11.67,15.44 11.33,15.32 11.06,15.06L6.36,10.55C5.81,10.03 5.79,9.16 6.32,8.61C6.84,8.06 7.71,8.05 8.26,8.57L12,12.17L15.77,8.57C16.31,8.05 17.18,8.07 17.71,8.61C18.23,9.16 18.21,10.03 17.67,10.55Z",
|
||||
"name": "pocket"
|
||||
},
|
||||
{
|
||||
"path": "M12,3A9,9 0 0,1 21,12C21,13.76 20.5,15.4 19.62,16.79L21,18.17V20A1,1 0 0,1 20,21H18.18L16.79,19.62C15.41,20.5 13.76,21 12,21A9,9 0 0,1 3,12A9,9 0 0,1 12,3M12,7A5,5 0 0,0 7,12A5,5 0 0,0 12,17C12.65,17 13.26,16.88 13.83,16.65L10.95,13.77C10.17,13 10.17,11.72 10.95,10.94C11.73,10.16 13,10.16 13.78,10.94L16.66,13.82C16.88,13.26 17,12.64 17,12A5,5 0 0,0 12,7Z",
|
||||
"name": "quicktime"
|
||||
},
|
||||
{
|
||||
"path": "M18.61,5.89C18.6,5.79 18.5,5.73 18.44,5.73C18.37,5.72 16.83,5.61 16.83,5.61C16.83,5.61 15.76,4.55 15.65,4.43C15.53,4.31 15.3,4.35 15.21,4.37C15.2,4.37 15,4.44 14.61,4.55C14.25,3.5 13.62,2.58 12.43,2.58C12.11,2.18 11.72,2 11.38,2C8.8,2 7.57,5.22 7.18,6.86C6.18,7.17 5.47,7.39 5.37,7.42C4.82,7.6 4.8,7.62 4.73,8.14C4.67,8.54 3.21,19.86 3.21,19.86L14.61,22L20.79,20.66C20.79,20.66 18.62,6 18.61,5.89M14,4.76C13.69,4.85 13.37,4.95 13,5.06C13,5 13,4.93 13,4.85C13,4.21 12.93,3.7 12.79,3.29C13.35,3.36 13.73,4 14,4.76M12.08,3.42C12.24,3.82 12.34,4.39 12.34,5.16C12.34,5.2 12.34,5.24 12.34,5.27C11.71,5.46 11.03,5.68 10.35,5.89C10.73,4.4 11.45,3.69 12.08,3.42M11.31,2.69C11.42,2.69 11.53,2.73 11.64,2.8C10.81,3.19 9.93,4.17 9.55,6.12C9,6.3 8.47,6.46 8,6.62C8.42,5.12 9.46,2.69 11.31,2.69M12.5,9.15L11.76,11.42C11.76,11.42 11.09,11.06 10.27,11.06C9.07,11.06 9,11.81 9,12C9,13.04 11.71,13.43 11.71,15.86C11.71,17.77 10.5,19 8.87,19C6.91,19 5.91,17.78 5.91,17.78L6.43,16.05C6.43,16.05 7.46,16.93 8.33,16.93C8.9,16.93 9.13,16.5 9.13,16.16C9.13,14.81 6.92,14.75 6.92,12.53C6.92,10.66 8.26,8.85 10.97,8.85C12,8.85 12.5,9.15 12.5,9.15M15.43,5.29L16.75,6.6L17.71,6.68C18.05,9 19.19,16.73 19.66,19.88L14.66,20.97L15.43,5.29Z",
|
||||
"name": "shopify"
|
||||
},
|
||||
{
|
||||
"path": "M7.47,17.19C7.37,17.95 7.08,18.21 6.19,18.21C5.27,18.21 4.87,17.79 4.81,16.87L4.61,13.65C4.61,12.91 4.87,12.55 5.86,12.55C7.21,12.55 7.04,13.54 7.64,14.5C8.33,15.62 10,16.35 12.31,16.35C15.17,16.35 17,15.14 17,13.57C17,12.23 15.89,11.39 13.85,11.16L11.5,10.89C7.21,10.42 5.1,9.19 5.1,6.62C5.1,4.07 8.06,2 12.21,2C13.5,2 14.81,2.29 16.29,2.76C16.29,2.26 16.58,2.1 17.3,2.1C18.46,2.1 18.55,2.39 18.62,3.08L18.85,5.88C18.85,6.5 18.39,6.83 17.63,6.83C16.35,6.83 16.55,5.88 15.86,5.07C15.17,4.26 13.79,3.73 12.08,3.73C9.44,3.73 7.7,4.89 7.7,6.5C7.7,7.8 8.92,8.56 11.38,8.82L13.95,9.08C17.7,9.5 19.61,10.92 19.61,13.33C19.61,16.17 16.71,18.08 12.21,18.08C10.56,18.08 9.08,17.77 7.47,17.19M1,16H2V21H23V22H1V16Z",
|
||||
"name": "slackware"
|
||||
},
|
||||
{
|
||||
"path": "M6,3H18A3,3 0 0,1 21,6V18A3,3 0 0,1 18,21H6A3,3 0 0,1 3,18V6A3,3 0 0,1 6,3M7,6A1,1 0 0,0 6,7V17A1,1 0 0,0 7,18H17A1,1 0 0,0 18,17V7A1,1 0 0,0 17,6H7M9.5,9H14.5A0.5,0.5 0 0,1 15,9.5V14.5A0.5,0.5 0 0,1 14.5,15H9.5A0.5,0.5 0 0,1 9,14.5V9.5A0.5,0.5 0 0,1 9.5,9Z",
|
||||
"name": "square-inc"
|
||||
},
|
||||
{
|
||||
"path": "M5.5,0H18.5A5.5,5.5 0 0,1 24,5.5V18.5A5.5,5.5 0 0,1 18.5,24H5.5A5.5,5.5 0 0,1 0,18.5V5.5A5.5,5.5 0 0,1 5.5,0M15.39,15.18C15.39,16.76 14.5,17.81 12.85,17.95V12.61C14.55,13.13 15.39,13.66 15.39,15.18M11.65,6V10.88C10.34,10.5 9.03,9.93 9.03,8.43C9.03,6.94 10.18,6.12 11.65,6M15.5,7.6L16.5,6.8C15.62,5.66 14.4,4.92 12.85,4.77V3.8H11.65V3.8L11.65,4.75C9.5,4.89 7.68,6.17 7.68,8.5C7.68,11 9.74,11.78 11.65,12.29V17.96C10.54,17.84 9.29,17.31 8.43,16.03L7.3,16.78C8.2,18.12 9.76,19 11.65,19.14V20.2H12.07L12.85,20.2V19.16C15.35,19 16.7,17.34 16.7,15.14C16.7,12.58 14.81,11.76 12.85,11.19V6.05C14,6.22 14.85,6.76 15.5,7.6Z",
|
||||
"name": "square-inc-cash"
|
||||
},
|
||||
{
|
||||
"path": "M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V15L6.19,16.31C6.45,17.6 7.6,18.58 8.97,18.58C10.53,18.58 11.8,17.31 11.8,15.75V15.62L15.2,13.19H15.28C17.36,13.19 19.05,11.5 19.05,9.42C19.05,7.34 17.36,5.65 15.28,5.65C13.2,5.65 11.5,7.34 11.5,9.42V9.47L9.13,12.93L8.97,12.92C8.38,12.92 7.83,13.1 7.38,13.41L3,11.6V5A2,2 0 0,1 5,3H19M8.28,17.17C9.08,17.5 10,17.13 10.33,16.33C10.66,15.53 10.28,14.62 9.5,14.29L8.22,13.76C8.71,13.58 9.26,13.57 9.78,13.79C10.31,14 10.72,14.41 10.93,14.94C11.15,15.46 11.15,16.04 10.93,16.56C10.5,17.64 9.23,18.16 8.15,17.71C7.65,17.5 7.27,17.12 7.06,16.67L8.28,17.17M17.8,9.42C17.8,10.81 16.67,11.94 15.28,11.94C13.9,11.94 12.77,10.81 12.77,9.42A2.51,2.51 0 0,1 15.28,6.91C16.67,6.91 17.8,8.04 17.8,9.42M13.4,9.42C13.4,10.46 14.24,11.31 15.29,11.31C16.33,11.31 17.17,10.46 17.17,9.42C17.17,8.38 16.33,7.53 15.29,7.53C14.24,7.53 13.4,8.38 13.4,9.42Z",
|
||||
"name": "steam-box"
|
||||
},
|
||||
{
|
||||
"path": "M14.92,17.16L16.75,13.53H19.45L14.94,22.5L10.37,13.53H13.07L14.92,17.16M10.63,8.66L8.18,13.55H4.55L10.61,1.5L16.74,13.55H13.11L10.63,8.66Z",
|
||||
"name": "strava"
|
||||
},
|
||||
{
|
||||
"path": "M12,14C11,14 9,15 9,16C9,18 12,18 12,18V17A1,1 0 0,1 11,16A1,1 0 0,1 12,15V14M12,19C12,19 8,18.5 8,16.5C8,13.5 11,12.75 12,12.75V11.5C11,11.5 7,13 7,16C7,20 12,20 12,20V19M10.07,7.03L11.26,7.56C11.69,5.12 12.84,3.5 12.84,3.5C12.41,4.53 12.13,5.38 11.95,6.05C13.16,3.55 15.61,2 15.61,2C14.43,3.18 13.56,4.46 12.97,5.53C14.55,3.85 16.74,2.75 16.74,2.75C14.05,4.47 12.84,7.2 12.54,7.96L13.09,8.04C13.09,8.56 13.09,9.04 13.34,9.42C14.1,11.31 18,11.47 18,16C18,20.53 13.97,22 11.83,22C9.69,22 5,21.03 5,16C5,10.97 9.95,10.93 10.83,8.92C10.95,8.54 10.07,7.03 10.07,7.03Z",
|
||||
"name": "tor"
|
||||
},
|
||||
{
|
||||
"path": "M17,11H13V15.5C13,16.44 13.28,17 14.5,17H17V21C17,21 15.54,21.05 14.17,21.05C10.8,21.05 9.5,19 9.5,16.75V11H7V7C10.07,6.74 10.27,4.5 10.5,3H13V7H17",
|
||||
"name": "tumblr"
|
||||
},
|
||||
{
|
||||
"path": "M16,11H13V14.9C13,15.63 13.14,16 14.1,16H16V19C16,19 14.97,19.1 13.9,19.1C11.25,19.1 10,17.5 10,15.7V11H8V8.2C10.41,8 10.62,6.16 10.8,5H13V8H16M20,2H4C2.89,2 2,2.89 2,4V20A2,2 0 0,0 4,22H20A2,2 0 0,0 22,20V4C22,2.89 21.1,2 20,2Z",
|
||||
"name": "tumblr-box"
|
||||
},
|
||||
{
|
||||
"path": "M3.75,17L8,12.75V16H18V11.5L20,9.5V16A2,2 0 0,1 18,18H8V21.25L3.75,17M20.25,7L16,11.25V8H6V12.5L4,14.5V8A2,2 0 0,1 6,6H16V2.75L20.25,7Z",
|
||||
"name": "tumblr-reblog"
|
||||
},
|
||||
{
|
||||
"path": "M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M17.71,9.33C18.19,8.93 18.75,8.45 19,7.92C18.59,8.13 18.1,8.26 17.56,8.33C18.06,7.97 18.47,7.5 18.68,6.86C18.16,7.14 17.63,7.38 16.97,7.5C15.42,5.63 11.71,7.15 12.37,9.95C9.76,9.79 8.17,8.61 6.85,7.16C6.1,8.38 6.75,10.23 7.64,10.74C7.18,10.71 6.83,10.57 6.5,10.41C6.54,11.95 7.39,12.69 8.58,13.09C8.22,13.16 7.82,13.18 7.44,13.12C7.81,14.19 8.58,14.86 9.9,15C9,15.76 7.34,16.29 6,16.08C7.15,16.81 8.46,17.39 10.28,17.31C14.69,17.11 17.64,13.95 17.71,9.33Z",
|
||||
"name": "twitter-box"
|
||||
},
|
||||
{
|
||||
"path": "M17.71,9.33C18.19,8.93 18.75,8.45 19,7.92C18.59,8.13 18.1,8.26 17.56,8.33C18.06,7.97 18.47,7.5 18.68,6.86C18.16,7.14 17.63,7.38 16.97,7.5C15.42,5.63 11.71,7.15 12.37,9.95C9.76,9.79 8.17,8.61 6.85,7.16C6.1,8.38 6.75,10.23 7.64,10.74C7.18,10.71 6.83,10.57 6.5,10.41C6.54,11.95 7.39,12.69 8.58,13.09C8.22,13.16 7.82,13.18 7.44,13.12C7.81,14.19 8.58,14.86 9.9,15C9,15.76 7.34,16.29 6,16.08C7.15,16.81 8.46,17.39 10.28,17.31C14.69,17.11 17.64,13.95 17.71,9.33M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2Z",
|
||||
"name": "twitter-circle"
|
||||
},
|
||||
{
|
||||
"path": "M6.38,13.24V13.24C6.38,11.84 6.38,10.44 6.38,9.04H7.4V15.84H6.39C6.39,15.63 6.39,15.42 6.39,15.21C5.93,15.68 5.29,15.96 4.58,15.96C3.12,15.96 2,14.9 2,13.3V9.04H3V13.24C3,14.33 3.74,15.04 4.7,15.04C5.64,15.04 6.38,14.31 6.38,13.24M9.14,9.04V11.5C9.37,11.29 9.65,11.1 9.95,10.97C10.25,10.85 10.58,10.78 10.91,10.78C12.37,10.78 13.5,11.94 13.5,13.37C13.5,14.8 12.37,15.96 10.91,15.96C10.58,15.96 10.25,15.89 9.95,15.77C9.64,15.64 9.37,15.45 9.13,15.22C9.13,15.43 9.13,15.63 9.13,15.84C8.81,15.84 8.5,15.84 8.16,15.84V9.04H9.14M12.55,13.37V13.37C12.55,12.41 11.77,11.65 10.84,11.65C9.89,11.65 9.13,12.41 9.13,13.37C9.13,14.32 9.88,15.09 10.84,15.09C11.77,15.09 12.55,14.32 12.55,13.37M16.46,10.79C17.9,10.79 18.95,11.89 18.95,13.36V13.69H14.91C15.04,14.5 15.71,15.09 16.55,15.09C17.13,15.09 17.61,14.86 18,14.36L18.7,14.89C18.2,15.55 17.46,15.95 16.55,15.95C15.06,15.95 13.91,14.84 13.91,13.36C13.91,11.97 15,10.79 16.46,10.79M14.92,12.91H17.95C17.79,12.15 17.18,11.65 16.44,11.65C15.71,11.65 15.1,12.15 14.92,12.91M20.5,13V15.84H19.5V10.89C19.82,10.89 20.14,10.89 20.47,10.89V11.5C20.71,11.1 21.11,10.85 21.66,10.85H22V11.76H21.59C20.95,11.76 20.5,12.26 20.5,13",
|
||||
"name": "uber"
|
||||
},
|
||||
{
|
||||
"path": "M19.5,3C20.14,4.08 20.44,5.19 20.44,6.6C20.44,11.08 16.61,16.91 13.5,21H6.41L3.56,4L9.77,3.39L11.28,15.5C12.69,13.21 14.42,9.61 14.42,7.16C14.42,5.81 14.19,4.9 13.83,4.15L19.5,3Z",
|
||||
"name": "venmo"
|
||||
},
|
||||
{
|
||||
"path": "M5,3A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3H5M5.5,8.5H7C7.36,8.5 7.5,8.66 7.64,9.07C8.36,11.17 9.57,13 10.07,13C10.26,13 10.35,12.92 10.35,12.45V10.28C10.29,9.28 9.76,9.19 9.76,8.84C9.76,8.67 9.9,8.5 10.14,8.5H12.45C12.77,8.5 12.87,8.67 12.87,9.04V11.96C12.87,12.27 13,12.38 13.1,12.38C13.29,12.38 13.45,12.27 13.79,11.93C14.85,10.74 15.6,8.92 15.6,8.92C15.7,8.7 15.87,8.5 16.24,8.5H17.71C18.16,8.5 18.26,8.73 18.16,9.04C17.97,9.9 16.18,12.43 16.18,12.43C16,12.68 15.96,12.8 16.18,13.09C16.33,13.3 16.85,13.74 17.19,14.15C17.83,14.86 18.3,15.46 18.44,15.87C18.56,16.29 18.35,16.5 17.93,16.5H16.45C15.89,16.5 15.73,16.05 14.73,15.05C13.85,14.21 13.5,14.1 13.26,14.1C12.96,14.1 12.87,14.18 12.87,14.61V15.93C12.87,16.29 12.76,16.5 11.82,16.5C10.26,16.5 8.54,15.55 7.33,13.8C5.5,11.24 5,9.31 5,8.92C5,8.7 5.08,8.5 5.5,8.5Z",
|
||||
"name": "vk-box"
|
||||
},
|
||||
{
|
||||
"path": "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M5.5,8.5H7C7.36,8.5 7.5,8.66 7.64,9.07C8.36,11.17 9.57,13 10.07,13C10.26,13 10.35,12.92 10.35,12.45V10.28C10.29,9.28 9.76,9.19 9.76,8.84C9.76,8.67 9.9,8.5 10.14,8.5H12.45C12.77,8.5 12.87,8.67 12.87,9.04V11.96C12.87,12.27 13,12.38 13.1,12.38C13.29,12.38 13.45,12.27 13.79,11.93C14.85,10.74 15.6,8.92 15.6,8.92C15.7,8.7 15.87,8.5 16.24,8.5H17.71C18.16,8.5 18.26,8.73 18.16,9.04C17.97,9.9 16.18,12.43 16.18,12.43C16,12.68 15.96,12.8 16.18,13.09C16.33,13.3 16.85,13.74 17.19,14.15C17.83,14.86 18.3,15.46 18.44,15.87C18.56,16.29 18.35,16.5 17.93,16.5H16.45C15.89,16.5 15.73,16.05 14.73,15.05C13.85,14.21 13.5,14.1 13.26,14.1C12.96,14.1 12.87,14.18 12.87,14.61V15.93C12.87,16.29 12.76,16.5 11.82,16.5C10.26,16.5 8.54,15.55 7.33,13.8C5.5,11.24 5,9.31 5,8.92C5,8.7 5.08,8.5 5.5,8.5Z",
|
||||
"name": "vk-circle"
|
||||
},
|
||||
{
|
||||
"path": "M17,17.5L12,15L7,17.5V5H5V19H19V5H17V17.5M12,12.42L14.25,13.77L13.65,11.22L15.64,9.5L13,9.27L12,6.86L11,9.27L8.36,9.5L10.35,11.22L9.75,13.77L12,12.42M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3Z",
|
||||
"name": "wunderlist"
|
||||
},
|
||||
{
|
||||
"path": "M0 16.7L3.2 12.9L0 9.1L1.5 7.8L4.5 11.3L7.5 7.8L9 9.1L5.8 12.9L9 16.7L7.5 18L4.5 14.4L1.5 18L0 16.7M24 16.9C24 17.4 23.6 17.9 23 17.9H20C18.9 17.9 18 17 18 15.9V13.9C18 12.8 18.9 11.9 20 11.9H22V9.9H18V8H23C23.5 8 24 8.4 24 9M22 14H20V16H22V14M16 16.9C16 17.4 15.6 17.9 15 17.9H12C10.9 17.9 10 17 10 15.9V9.9C10 8.8 10.9 7.9 12 7.9H14V5H16V16.9M14 15.9V9.9H12V15.9H14Z",
|
||||
"name": "xda"
|
||||
},
|
||||
{
|
||||
"path": "M4.8,3C3.8,3 3,3.8 3,4.8V19.2C3,20.2 3.8,21 4.8,21H19.2C20.2,21 21,20.2 21,19.2V4.8C21,3.8 20.2,3 19.2,3M16.07,5H18.11C18.23,5 18.33,5.04 18.37,5.13C18.43,5.22 18.43,5.33 18.37,5.44L13.9,13.36L16.75,18.56C16.81,18.67 16.81,18.78 16.75,18.87C16.7,18.95 16.61,19 16.5,19H14.47C14.16,19 14,18.79 13.91,18.61L11.04,13.35C11.18,13.1 15.53,5.39 15.53,5.39C15.64,5.19 15.77,5 16.07,5M7.09,7.76H9.1C9.41,7.76 9.57,7.96 9.67,8.15L11.06,10.57C10.97,10.71 8.88,14.42 8.88,14.42C8.77,14.61 8.63,14.81 8.32,14.81H6.3C6.18,14.81 6.09,14.76 6.04,14.67C6,14.59 6,14.47 6.04,14.36L8.18,10.57L6.82,8.2C6.77,8.09 6.75,8 6.81,7.89C6.86,7.81 6.96,7.76 7.09,7.76Z",
|
||||
"name": "xing-box"
|
||||
},
|
||||
{
|
||||
"path": "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M15.85,6H17.74C17.86,6 17.94,6.04 18,6.12C18.04,6.2 18.04,6.3 18,6.41L13.84,13.76L16.5,18.59C16.53,18.69 16.53,18.8 16.5,18.88C16.43,18.96 16.35,19 16.24,19H14.36C14.07,19 13.93,18.81 13.84,18.64L11.17,13.76C11.31,13.5 15.35,6.36 15.35,6.36C15.45,6.18 15.57,6 15.85,6M7.5,8.57H9.39C9.67,8.57 9.81,8.75 9.9,8.92L11.19,11.17C11.12,11.3 9.17,14.75 9.17,14.75C9.07,14.92 8.94,15.11 8.66,15.11H6.78C6.67,15.11 6.59,15.06 6.54,15C6.5,14.9 6.5,14.8 6.54,14.69L8.53,11.17L7.27,9C7.21,8.87 7.2,8.77 7.25,8.69C7.3,8.61 7.39,8.57 7.5,8.57Z",
|
||||
"name": "xing-circle"
|
||||
},
|
||||
{
|
||||
"path": "M10.59,2C11.23,2 11.5,2.27 11.58,2.97L11.79,6.14L12.03,10.29C12.05,10.64 12,11 11.86,11.32C11.64,11.77 11.14,11.89 10.73,11.58C10.5,11.39 10.31,11.14 10.15,10.87L6.42,4.55C6.06,3.94 6.17,3.54 6.77,3.16C7.5,2.68 9.73,2 10.59,2M14.83,14.85L15.09,14.91L18.95,16.31C19.61,16.55 19.79,16.92 19.5,17.57C19.06,18.7 18.34,19.66 17.42,20.45C16.96,20.85 16.5,20.78 16.21,20.28L13.94,16.32C13.55,15.61 14.03,14.8 14.83,14.85M4.5,14C4.5,13.26 4.5,12.55 4.75,11.87C4.97,11.2 5.33,11 6,11.27L9.63,12.81C10.09,13 10.35,13.32 10.33,13.84C10.3,14.36 9.97,14.58 9.53,14.73L5.85,15.94C5.15,16.17 4.79,15.96 4.64,15.25C4.55,14.83 4.47,14.4 4.5,14M11.97,21C11.95,21.81 11.6,22.12 10.81,22C9.77,21.8 8.81,21.4 7.96,20.76C7.54,20.44 7.45,19.95 7.76,19.53L10.47,15.97C10.7,15.67 11.03,15.6 11.39,15.74C11.77,15.88 11.97,16.18 11.97,16.59V21M14.45,13.32C13.73,13.33 13.23,12.5 13.64,11.91C14.47,10.67 15.35,9.46 16.23,8.26C16.5,7.85 16.94,7.82 17.31,8.16C18.24,9 18.91,10 19.29,11.22C19.43,11.67 19.25,12.08 18.83,12.2L15.09,13.17L14.45,13.32Z",
|
||||
"name": "yelp"
|
||||
}
|
||||
]
|
||||
[]
|
||||
|
@@ -1,16 +1,17 @@
|
||||
import "@polymer/app-layout/app-header-layout/app-header-layout";
|
||||
import "@polymer/app-layout/app-header/app-header";
|
||||
import "@polymer/app-layout/app-toolbar/app-toolbar";
|
||||
import "../../src/components/ha-icon-button";
|
||||
import "../../src/components/ha-icon";
|
||||
import "@polymer/paper-item/paper-item";
|
||||
import "@polymer/paper-item/paper-item-body";
|
||||
import { html } from "@polymer/polymer/lib/utils/html-tag";
|
||||
/* eslint-plugin-disable lit */
|
||||
import { PolymerElement } from "@polymer/polymer/polymer-element";
|
||||
import "../../src/components/ha-card";
|
||||
import "../../src/components/ha-icon";
|
||||
import "../../src/components/ha-icon-button";
|
||||
import "../../src/managers/notification-manager";
|
||||
import "../../src/styles/polymer-ha-style";
|
||||
// eslint-disable-next-line import/extensions
|
||||
import { DEMOS } from "../build/import-demos";
|
||||
|
||||
const fixPath = (path) => path.substr(2, path.length - 5);
|
||||
|
@@ -153,7 +153,7 @@ export class HassioUpdate extends LitElement {
|
||||
item.progress = true;
|
||||
const confirmed = await showConfirmationDialog(this, {
|
||||
title: `Update ${item.name}`,
|
||||
text: `Are you sure you want to upgrade ${item.name} to version ${item.version}?`,
|
||||
text: `Are you sure you want to update ${item.name} to version ${item.version}?`,
|
||||
confirmText: "update",
|
||||
dismissText: "cancel",
|
||||
});
|
||||
|
@@ -79,6 +79,7 @@ class HassioSnapshots extends LitElement {
|
||||
},
|
||||
{ slug: "ssl", name: "SSL", checked: true },
|
||||
{ slug: "share", name: "Share", checked: true },
|
||||
{ slug: "media", name: "Media", checked: true },
|
||||
{ slug: "addons/local", name: "Local add-ons", checked: true },
|
||||
];
|
||||
|
||||
@@ -241,7 +242,7 @@ class HassioSnapshots extends LitElement {
|
||||
|
||||
protected firstUpdated(changedProps: PropertyValues) {
|
||||
super.firstUpdated(changedProps);
|
||||
this._updateSnapshots();
|
||||
this.refreshData();
|
||||
}
|
||||
|
||||
protected updated(changedProps: PropertyValues) {
|
||||
|
@@ -14,7 +14,6 @@ import {
|
||||
TemplateResult,
|
||||
} from "lit-element";
|
||||
import memoizeOne from "memoize-one";
|
||||
import { atLeastVersion } from "../../../src/common/config/version";
|
||||
import "../../../src/components/buttons/ha-progress-button";
|
||||
import "../../../src/components/ha-button-menu";
|
||||
import "../../../src/components/ha-card";
|
||||
@@ -85,8 +84,7 @@ class HassioHostInfo extends LitElement {
|
||||
</mwc-button>
|
||||
</ha-settings-row>`
|
||||
: ""}
|
||||
${this.hostInfo.features.includes("network") &&
|
||||
atLeastVersion(this.hass.config.version, 0, 115)
|
||||
${this.hostInfo.features.includes("network")
|
||||
? html` <ha-settings-row>
|
||||
<span slot="heading">
|
||||
IP address
|
||||
|
@@ -213,7 +213,7 @@ class HassioSupervisorInfo extends LitElement {
|
||||
|
||||
const confirmed = await showConfirmationDialog(this, {
|
||||
title: "Update supervisor",
|
||||
text: `Are you sure you want to upgrade supervisor to version ${this.supervisorInfo.version_latest}?`,
|
||||
text: `Are you sure you want to update supervisor to version ${this.supervisorInfo.version_latest}?`,
|
||||
confirmText: "update",
|
||||
dismissText: "cancel",
|
||||
});
|
||||
|
10
package.json
10
package.json
@@ -8,12 +8,12 @@
|
||||
"version": "1.0.0",
|
||||
"scripts": {
|
||||
"build": "script/build_frontend",
|
||||
"lint:eslint": "eslint '**/src/**/*.{js,ts,html}' --ignore-path .gitignore",
|
||||
"format:eslint": "eslint '**/src/**/*.{js,ts,html}' --fix --ignore-path .gitignore",
|
||||
"lint:prettier": "prettier '**/src/**/*.{js,ts,json,css,md}' --check",
|
||||
"format:prettier": "prettier '**/src/**/*.{js,ts,json,css,md}' --write",
|
||||
"lint:eslint": "eslint \"**/src/**/*.{js,ts,html}\" --ignore-path .gitignore",
|
||||
"format:eslint": "eslint \"**/src/**/*.{js,ts,html}\" --fix --ignore-path .gitignore",
|
||||
"lint:prettier": "prettier \"**/src/**/*.{js,ts,json,css,md}\" --check",
|
||||
"format:prettier": "prettier \"**/src/**/*.{js,ts,json,css,md}\" --write",
|
||||
"lint:types": "tsc",
|
||||
"lint:lit": "lit-analyzer '**/src/**/*.ts' --format markdown --outFile result.md",
|
||||
"lint:lit": "lit-analyzer \"**/src/**/*.ts\" --format markdown --outFile result.md",
|
||||
"lint": "npm run lint:eslint && npm run lint:prettier && npm run lint:types",
|
||||
"format": "npm run format:eslint && npm run format:prettier",
|
||||
"mocha": "node_modules/.bin/ts-mocha -p test-mocha/tsconfig.test.json --opts test-mocha/mocha.opts",
|
||||
|
2
setup.py
2
setup.py
@@ -2,7 +2,7 @@ from setuptools import setup, find_packages
|
||||
|
||||
setup(
|
||||
name="home-assistant-frontend",
|
||||
version="20200912.0",
|
||||
version="20200916.0",
|
||||
description="The Home Assistant frontend",
|
||||
url="https://github.com/home-assistant/home-assistant-polymer",
|
||||
author="The Home Assistant Authors",
|
||||
|
@@ -1,14 +1,14 @@
|
||||
import { derivedStyles, darkStyles } from "../../resources/styles";
|
||||
import { darkStyles, derivedStyles } from "../../resources/styles";
|
||||
import { HomeAssistant, Theme } from "../../types";
|
||||
import {
|
||||
hex2rgb,
|
||||
lab2hex,
|
||||
lab2rgb,
|
||||
rgb2hex,
|
||||
rgb2lab,
|
||||
lab2rgb,
|
||||
lab2hex,
|
||||
} from "../color/convert-color";
|
||||
import { labBrighten, labDarken } from "../color/lab";
|
||||
import { rgbContrast } from "../color/rgb";
|
||||
import { labDarken, labBrighten } from "../color/lab";
|
||||
|
||||
interface ProcessedTheme {
|
||||
keys: { [key: string]: "" };
|
||||
@@ -105,12 +105,12 @@ const processTheme = (
|
||||
const keys = {};
|
||||
for (const key of Object.keys(combinedTheme)) {
|
||||
const prefixedKey = `--${key}`;
|
||||
const value = String(combinedTheme[key]!);
|
||||
const value = String(combinedTheme[key]);
|
||||
styles[prefixedKey] = value;
|
||||
keys[prefixedKey] = "";
|
||||
|
||||
// Try to create a rgb value for this key if it is not a var
|
||||
if (value.startsWith("#")) {
|
||||
if (!value.startsWith("#")) {
|
||||
// Can't convert non hex value
|
||||
continue;
|
||||
}
|
||||
|
@@ -24,8 +24,7 @@ export const iconColorCSS = css`
|
||||
ha-icon[data-domain="group"][data-state="home"],
|
||||
ha-icon[data-domain="group"][data-state="open"],
|
||||
ha-icon[data-domain="group"][data-state="locked"],
|
||||
ha-icon[data-domain="group"][data-state="problem"]
|
||||
{
|
||||
ha-icon[data-domain="group"][data-state="problem"] {
|
||||
color: var(--paper-item-icon-active-color, #fdd835);
|
||||
}
|
||||
|
||||
|
@@ -1,16 +1,16 @@
|
||||
import type { HassEntity } from "home-assistant-js-websocket";
|
||||
import { styleMap } from "lit-html/directives/style-map";
|
||||
import {
|
||||
css,
|
||||
CSSResult,
|
||||
html,
|
||||
internalProperty,
|
||||
LitElement,
|
||||
property,
|
||||
internalProperty,
|
||||
PropertyValues,
|
||||
TemplateResult,
|
||||
} from "lit-element";
|
||||
import { ifDefined } from "lit-html/directives/if-defined";
|
||||
import { styleMap } from "lit-html/directives/style-map";
|
||||
import { computeActiveState } from "../../common/entity/compute_active_state";
|
||||
import { computeStateDomain } from "../../common/entity/compute_state_domain";
|
||||
import { stateIcon } from "../../common/entity/state_icon";
|
||||
@@ -73,10 +73,15 @@ export class StateBadge extends LitElement {
|
||||
if (stateObj) {
|
||||
// hide icon if we have entity picture
|
||||
if (
|
||||
((stateObj.attributes.entity_picture_local || stateObj.attributes.entity_picture) && !this.overrideIcon) ||
|
||||
((stateObj.attributes.entity_picture_local ||
|
||||
stateObj.attributes.entity_picture) &&
|
||||
!this.overrideIcon) ||
|
||||
this.overrideImage
|
||||
) {
|
||||
let imageUrl = this.overrideImage || stateObj.attributes.entity_picture_local || stateObj.attributes.entity_picture;
|
||||
let imageUrl =
|
||||
this.overrideImage ||
|
||||
stateObj.attributes.entity_picture_local ||
|
||||
stateObj.attributes.entity_picture;
|
||||
if (this.hass) {
|
||||
imageUrl = this.hass.hassUrl(imageUrl);
|
||||
}
|
||||
|
@@ -1,17 +1,16 @@
|
||||
import {
|
||||
customElement,
|
||||
html,
|
||||
TemplateResult,
|
||||
LitElement,
|
||||
CSSResult,
|
||||
css,
|
||||
query,
|
||||
property,
|
||||
} from "lit-element";
|
||||
import "@material/mwc-button";
|
||||
import "@material/mwc-menu";
|
||||
import type { Menu, Corner } from "@material/mwc-menu";
|
||||
|
||||
import type { Corner, Menu } from "@material/mwc-menu";
|
||||
import {
|
||||
css,
|
||||
CSSResult,
|
||||
customElement,
|
||||
html,
|
||||
LitElement,
|
||||
property,
|
||||
query,
|
||||
TemplateResult,
|
||||
} from "lit-element";
|
||||
import "./ha-icon-button";
|
||||
|
||||
@customElement("ha-button-menu")
|
||||
@@ -22,6 +21,8 @@ export class HaButtonMenu extends LitElement {
|
||||
|
||||
@property({ type: Boolean }) public activatable = false;
|
||||
|
||||
@property({ type: Boolean }) public disabled = false;
|
||||
|
||||
@query("mwc-menu") private _menu?: Menu;
|
||||
|
||||
public get items() {
|
||||
@@ -48,6 +49,9 @@ export class HaButtonMenu extends LitElement {
|
||||
}
|
||||
|
||||
private _handleClick(): void {
|
||||
if (this.disabled) {
|
||||
return;
|
||||
}
|
||||
this._menu!.anchor = this;
|
||||
this._menu!.show();
|
||||
}
|
||||
|
@@ -32,6 +32,9 @@ class HaCameraStream extends LitElement {
|
||||
@property({ type: Boolean, attribute: "muted" })
|
||||
public muted = false;
|
||||
|
||||
@property({ type: Boolean, attribute: "allow-exoplayer" })
|
||||
public allowExoPlayer = false;
|
||||
|
||||
// We keep track if we should force MJPEG with a string
|
||||
// that way it automatically resets if we change entity.
|
||||
@internalProperty() private _forceMJPEG?: string;
|
||||
@@ -61,6 +64,7 @@ class HaCameraStream extends LitElement {
|
||||
<ha-hls-player
|
||||
autoplay
|
||||
playsinline
|
||||
.allowExoPlayer=${this.allowExoPlayer}
|
||||
.muted=${this.muted}
|
||||
.controls=${this.controls}
|
||||
.hass=${this.hass}
|
||||
|
@@ -12,7 +12,6 @@ import {
|
||||
} from "lit-element";
|
||||
import { fireEvent } from "../common/dom/fire_event";
|
||||
import { nextRender } from "../common/util/render-status";
|
||||
import { getExternalConfig } from "../external_app/external_config";
|
||||
import type { HomeAssistant } from "../types";
|
||||
|
||||
type HLSModule = typeof import("hls.js");
|
||||
@@ -35,6 +34,9 @@ class HaHLSPlayer extends LitElement {
|
||||
@property({ type: Boolean, attribute: "playsinline" })
|
||||
public playsInline = false;
|
||||
|
||||
@property({ type: Boolean, attribute: "allow-exoplayer" })
|
||||
public allowExoPlayer = false;
|
||||
|
||||
@query("video") private _videoEl!: HTMLVideoElement;
|
||||
|
||||
@internalProperty() private _attached = false;
|
||||
@@ -91,11 +93,7 @@ class HaHLSPlayer extends LitElement {
|
||||
}
|
||||
|
||||
private async _getUseExoPlayer(): Promise<boolean> {
|
||||
if (!this.hass!.auth.external) {
|
||||
return false;
|
||||
}
|
||||
const externalConfig = await getExternalConfig(this.hass!.auth.external);
|
||||
return externalConfig && externalConfig.hasExoPlayer;
|
||||
return false;
|
||||
}
|
||||
|
||||
private async _startHls(): Promise<void> {
|
||||
@@ -137,7 +135,10 @@ class HaHLSPlayer extends LitElement {
|
||||
this._videoEl.style.visibility = "hidden";
|
||||
await this.hass!.auth.external!.sendMessage({
|
||||
type: "exoplayer/play_hls",
|
||||
payload: new URL(url, window.location.href).toString(),
|
||||
payload: {
|
||||
url: new URL(url, window.location.href).toString(),
|
||||
muted: this.muted,
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
|
@@ -24,207 +24,16 @@ import {
|
||||
import { debounce } from "../common/util/debounce";
|
||||
import { fireEvent } from "../common/dom/fire_event";
|
||||
|
||||
const mdiRenameMapping = {
|
||||
"account-badge": "badge-account",
|
||||
"account-badge-alert": "badge-account-alert",
|
||||
"account-badge-alert-outline": "badge-account-alert-outline",
|
||||
"account-badge-horizontal": "badge-account-horizontal",
|
||||
"account-badge-horizontal-outline": "badge-account-horizontal-outline",
|
||||
"account-badge-outline": "badge-account-outline",
|
||||
"account-card-details": "card-account-details",
|
||||
"account-card-details-outline": "card-account-details-outline",
|
||||
airplay: "apple-airplay",
|
||||
artist: "account-music",
|
||||
"artist-outline": "account-music-outline",
|
||||
audiobook: "book-music",
|
||||
azure: "microsoft-azure",
|
||||
"azure-devops": "microsoft-azure-devops",
|
||||
bible: "book-cross",
|
||||
bowl: "bowl-mix",
|
||||
"calendar-repeat": "calendar-sync",
|
||||
"calendar-repeat-outline": "calendar-sync-outline",
|
||||
"camcorder-box": "video-box",
|
||||
"camcorder-box-off": "video-box-off",
|
||||
"cellphone-settings-variant": "cellphone-cog",
|
||||
"chart-snakey": "chart-sankey",
|
||||
"chart-snakey-variant": "chart-sankey-variant",
|
||||
coin: "currency-usd-circle",
|
||||
"coin-outline": "currency-usd-circle-outline",
|
||||
"coins-outline": "circle-multiple-outline",
|
||||
"contact-mail": "card-account-mail",
|
||||
"contact-mail-outline": "card-account-mail-outline",
|
||||
"contact-phone": "card-account-phone",
|
||||
"contact-phone-outline": "card-account-phone-outline",
|
||||
cowboy: "account-cowboy-hat",
|
||||
"database-refresh": "database-sync",
|
||||
dictionary: "book-alphabet",
|
||||
edge: "microsoft-edge",
|
||||
"edge-legacy": "microsoft-edge-legacy",
|
||||
"file-document-box": "text-box",
|
||||
"file-document-box-check-outline": "text-box-check-outline",
|
||||
"file-document-box-minus": "text-box-minus",
|
||||
"file-document-box-minus-outline": "text-box-minus-outline",
|
||||
"file-document-box-multiple": "text-box-multiple",
|
||||
"file-document-box-multiple-outline": "text-box-multiple-outline",
|
||||
"file-document-box-outline": "text-box-outline",
|
||||
"file-document-box-plus": "text-box-plus",
|
||||
"file-document-box-plus-outline": "text-box-plus-outline",
|
||||
"file-document-box-remove": "text-box-remove",
|
||||
"file-document-box-remove-outline": "text-box-remove-outline",
|
||||
"file-document-box-search": "text-box-search",
|
||||
"file-document-box-search-outline": "text-box-search-outline",
|
||||
"file-settings-variant": "file-cog",
|
||||
"file-settings-variant-outline": "file-cog-outline",
|
||||
"folder-settings-variant": "folder-cog",
|
||||
"folder-settings-variant-outline": "folder-cog-outline",
|
||||
"github-circle": "github",
|
||||
"google-adwords": "google-ads",
|
||||
hackernews: "y-combinator",
|
||||
hotel: "bed",
|
||||
"image-filter": "image-multiple-outline",
|
||||
"internet-explorer": "microsoft-internet-explorer",
|
||||
json: "code-json",
|
||||
kotlin: "language-kotlin",
|
||||
"library-books": "filmstrip-box",
|
||||
"library-movie": "filmstrip-box-multiple",
|
||||
"library-music": "music-box-multiple",
|
||||
"library-music-outline": "music-box-multiple-outline",
|
||||
"library-video": "play-box-multiple",
|
||||
markdown: "language-markdown",
|
||||
"markdown-outline": "language-markdown-outline",
|
||||
"message-settings-variant": "message-cog",
|
||||
"message-settings-variant-outline": "message-cog-outline",
|
||||
"microsoft-dynamics": "microsoft-dynamics-365",
|
||||
"network-router": "router-network",
|
||||
office: "microsoft-office",
|
||||
onedrive: "microsoft-onedrive",
|
||||
onenote: "microsoft-onenote",
|
||||
outlook: "microsoft-outlook",
|
||||
playstation: "sony-playstation",
|
||||
"periodic-table-co": "molecule-co",
|
||||
"periodic-table-co2": "molecule-co2",
|
||||
pot: "pot-steam",
|
||||
ruby: "language-ruby",
|
||||
sailing: "sail-boat",
|
||||
scooter: "human-scooter",
|
||||
settings: "cog",
|
||||
"settings-box": "cog-box",
|
||||
"settings-outline": "cog-outline",
|
||||
"settings-transfer": "cog-transfer",
|
||||
"settings-transfer-outline": "cog-transfer-outline",
|
||||
"shield-refresh": "shield-sync",
|
||||
"shield-refresh-outline": "shield-sync-outline",
|
||||
"sort-alphabetical": "sort-alphabetical-variant",
|
||||
"sort-alphabetical-ascending": "sort-alphabetical-ascending-variant",
|
||||
"sort-alphabetical-descending": "sort-alphabetical-descending-variant",
|
||||
"sort-numeric": "sort-numeric-variant",
|
||||
"star-half": "star-half-full",
|
||||
storefront: "storefront-outline",
|
||||
timer: "timer-outline",
|
||||
"timer-off": "timer-off-outline",
|
||||
towing: "tow-truck",
|
||||
voice: "account-voice",
|
||||
"wall-sconce-variant": "wall-sconce-round-variant",
|
||||
wii: "nintendo-wii",
|
||||
wiiu: "nintendo-wiiu",
|
||||
windows: "microsoft-windows",
|
||||
"windows-classic": "microsoft-windows-classic",
|
||||
worker: "account-hard-hat",
|
||||
xbox: "microsoft-xbox",
|
||||
"xbox-controller": "microsoft-xbox-controller",
|
||||
"xbox-controller-battery-alert": "microsoft-xbox-controller-battery-alert",
|
||||
"xbox-controller-battery-charging":
|
||||
"microsoft-xbox-controller-battery-charging",
|
||||
"xbox-controller-battery-empty": "microsoft-xbox-controller-battery-empty",
|
||||
"xbox-controller-battery-full": "microsoft-xbox-controller-battery-full",
|
||||
"xbox-controller-battery-low": "microsoft-xbox-controller-battery-low",
|
||||
"xbox-controller-battery-medium": "microsoft-xbox-controller-battery-medium",
|
||||
"xbox-controller-battery-unknown":
|
||||
"microsoft-xbox-controller-battery-unknown",
|
||||
"xbox-controller-menu": "microsoft-xbox-controller-menu",
|
||||
"xbox-controller-off": "microsoft-xbox-controller-off",
|
||||
"xbox-controller-view": "microsoft-xbox-controller-view",
|
||||
yammer: "microsoft-yammer",
|
||||
"youtube-creator-studio": "youtube-studio",
|
||||
"selection-mutliple": "selection-multiple",
|
||||
textarea: "form-textarea",
|
||||
textbox: "form-textbox",
|
||||
"textbox-lock": "form-textbox-lock",
|
||||
"textbox-password": "form-textbox-password",
|
||||
"syllabary-katakana-half-width": "syllabary-katakana-halfwidth",
|
||||
"visual-studio-code": "microsoft-visual-studio-code",
|
||||
"visual-studio": "microsoft-visual-studio",
|
||||
};
|
||||
interface DeprecatedIcon {
|
||||
[key: string]: {
|
||||
removeIn: string;
|
||||
newName?: string;
|
||||
};
|
||||
}
|
||||
|
||||
const mdiRemovedIcons = new Set([
|
||||
"accusoft",
|
||||
"amazon-drive",
|
||||
"android-head",
|
||||
"basecamp",
|
||||
"beats",
|
||||
"behance",
|
||||
"blackberry",
|
||||
"cisco-webex",
|
||||
"disqus-outline",
|
||||
"dribbble",
|
||||
"dribbble-box",
|
||||
"etsy",
|
||||
"eventbrite",
|
||||
"facebook-box",
|
||||
"flattr",
|
||||
"flickr",
|
||||
"foursquare",
|
||||
"github-box",
|
||||
"github-face",
|
||||
"glassdoor",
|
||||
"google-adwords",
|
||||
"google-pages",
|
||||
"google-physical-web",
|
||||
"google-plus-box",
|
||||
"houzz",
|
||||
"houzz-box",
|
||||
"instapaper",
|
||||
"itunes",
|
||||
"language-python-text",
|
||||
"lastfm",
|
||||
"linkedin-box",
|
||||
"lyft",
|
||||
"mail-ru",
|
||||
"mastodon-variant",
|
||||
"medium",
|
||||
"meetup",
|
||||
"mixcloud",
|
||||
"mixer",
|
||||
"nfc-off",
|
||||
"npm-variant",
|
||||
"npm-variant-outline",
|
||||
"paypal",
|
||||
"periscope",
|
||||
"pinterest-box",
|
||||
"pocket",
|
||||
"quicktime",
|
||||
"shopify",
|
||||
"slackware",
|
||||
"square-inc",
|
||||
"square-inc-cash",
|
||||
"steam-box",
|
||||
"strava",
|
||||
"tor",
|
||||
"tumblr",
|
||||
"tumblr-box",
|
||||
"tumblr-reblog",
|
||||
"twitter-box",
|
||||
"twitter-circle",
|
||||
"uber",
|
||||
"venmo",
|
||||
"vk-box",
|
||||
"vk-circle",
|
||||
"wunderlist",
|
||||
"xda",
|
||||
"xing-box",
|
||||
"xing-circle",
|
||||
"yelp",
|
||||
]);
|
||||
const mdiDeprecatedIcons: DeprecatedIcon = {
|
||||
scooter: { removeIn: "117", newName: "human-scooter" },
|
||||
};
|
||||
|
||||
const chunks: Chunks = {};
|
||||
|
||||
@@ -291,17 +100,16 @@ export class HaIcon extends LitElement {
|
||||
|
||||
this._legacy = false;
|
||||
|
||||
if (iconName in mdiRenameMapping) {
|
||||
iconName = mdiRenameMapping[iconName];
|
||||
const message = `Icon ${iconPrefix}:${origIconName} was renamed to ${iconPrefix}:${iconName}, please change your config, it will be removed in version 0.115.`;
|
||||
// eslint-disable-next-line no-console
|
||||
console.warn(message);
|
||||
fireEvent(this, "write_log", {
|
||||
level: "warning",
|
||||
message,
|
||||
});
|
||||
} else if (mdiRemovedIcons.has(iconName)) {
|
||||
const message = `Icon ${this.icon} was removed from MDI, please replace this icon with an other icon in your config, it will be removed in version 0.115.`;
|
||||
if (iconName in mdiDeprecatedIcons) {
|
||||
const deprecatedIcon = mdiDeprecatedIcons[iconName];
|
||||
let message: string;
|
||||
|
||||
if (deprecatedIcon.newName) {
|
||||
message = `Icon ${iconPrefix}:${iconName} was renamed to ${iconPrefix}:${deprecatedIcon.newName}, please change your config, it will be removed in version ${deprecatedIcon.removeIn}.`;
|
||||
iconName = deprecatedIcon.newName!;
|
||||
} else {
|
||||
message = `Icon ${iconPrefix}:${iconName} was removed from MDI, please replace this icon with an other icon in your config, it will be removed in version ${deprecatedIcon.removeIn}.`;
|
||||
}
|
||||
// eslint-disable-next-line no-console
|
||||
console.warn(message);
|
||||
fireEvent(this, "write_log", {
|
||||
@@ -334,6 +142,7 @@ export class HaIcon extends LitElement {
|
||||
this._setPath(chunks[chunk], iconName);
|
||||
return;
|
||||
}
|
||||
|
||||
const iconPromise = fetch(`/static/mdi/${chunk}.json`).then((response) =>
|
||||
response.json()
|
||||
);
|
||||
|
@@ -159,8 +159,6 @@ const computePanels = memoizeOne(
|
||||
|
||||
let Sortable;
|
||||
|
||||
let sortStyles: CSSResult;
|
||||
|
||||
@customElement("ha-sidebar")
|
||||
class HaSidebar extends LitElement {
|
||||
@property({ attribute: false }) public hass!: HomeAssistant;
|
||||
@@ -171,12 +169,12 @@ class HaSidebar extends LitElement {
|
||||
|
||||
@property({ type: Boolean, reflect: true }) public expanded = false;
|
||||
|
||||
@property({ type: Boolean }) public editMode = false;
|
||||
|
||||
@internalProperty() private _externalConfig?: ExternalConfig;
|
||||
|
||||
@internalProperty() private _notifications?: PersistentNotification[];
|
||||
|
||||
@internalProperty() private _editMode = false;
|
||||
|
||||
// property used only in css
|
||||
// @ts-ignore
|
||||
@property({ type: Boolean, reflect: true }) public rtl = false;
|
||||
@@ -227,19 +225,12 @@ class HaSidebar extends LitElement {
|
||||
}
|
||||
|
||||
return html`
|
||||
${this._editMode
|
||||
? html`
|
||||
<style>
|
||||
${sortStyles?.cssText}
|
||||
</style>
|
||||
`
|
||||
: ""}
|
||||
<div
|
||||
class="menu"
|
||||
@action=${this._handleAction}
|
||||
.actionHandler=${actionHandler({
|
||||
hasHold: !this._editMode,
|
||||
disabled: this._editMode,
|
||||
hasHold: !this.editMode,
|
||||
disabled: this.editMode,
|
||||
})}
|
||||
>
|
||||
${!this.narrow
|
||||
@@ -257,7 +248,7 @@ class HaSidebar extends LitElement {
|
||||
`
|
||||
: ""}
|
||||
<div class="title">
|
||||
${this._editMode
|
||||
${this.editMode
|
||||
? html`<mwc-button outlined @click=${this._closeEditMode}>
|
||||
${hass.localize("ui.sidebar.done")}
|
||||
</mwc-button>`
|
||||
@@ -273,7 +264,7 @@ class HaSidebar extends LitElement {
|
||||
@scroll=${this._listboxScroll}
|
||||
@keydown=${this._listboxKeydown}
|
||||
>
|
||||
${this._editMode
|
||||
${this.editMode
|
||||
? html`<div id="sortable">
|
||||
${guard([this._hiddenPanels, this._renderEmptySortable], () =>
|
||||
this._renderEmptySortable
|
||||
@@ -283,7 +274,7 @@ class HaSidebar extends LitElement {
|
||||
</div>`
|
||||
: this._renderPanels(beforeSpacer)}
|
||||
<div class="spacer" disabled></div>
|
||||
${this._editMode && this._hiddenPanels.length
|
||||
${this.editMode && this._hiddenPanels.length
|
||||
? html`
|
||||
${this._hiddenPanels.map((url) => {
|
||||
const panel = this.hass.panels[url];
|
||||
@@ -307,7 +298,7 @@ class HaSidebar extends LitElement {
|
||||
: hass.localize(`panel.${panel.title}`) ||
|
||||
panel.title}</span
|
||||
>
|
||||
<mwc-icon-button class="hide-panel">
|
||||
<mwc-icon-button class="show-panel">
|
||||
<ha-svg-icon .path=${mdiPlus}></ha-svg-icon>
|
||||
</mwc-icon-button>
|
||||
</paper-icon-item>`;
|
||||
@@ -412,10 +403,10 @@ class HaSidebar extends LitElement {
|
||||
changedProps.has("alwaysExpand") ||
|
||||
changedProps.has("_externalConfig") ||
|
||||
changedProps.has("_notifications") ||
|
||||
changedProps.has("_editMode") ||
|
||||
changedProps.has("editMode") ||
|
||||
changedProps.has("_renderEmptySortable") ||
|
||||
changedProps.has("_hiddenPanels") ||
|
||||
(changedProps.has("_panelOrder") && !this._editMode)
|
||||
(changedProps.has("_panelOrder") && !this.editMode)
|
||||
) {
|
||||
return true;
|
||||
}
|
||||
@@ -449,9 +440,6 @@ class HaSidebar extends LitElement {
|
||||
subscribeNotifications(this.hass.connection, (notifications) => {
|
||||
this._notifications = notifications;
|
||||
});
|
||||
window.addEventListener("hass-edit-sidebar", () =>
|
||||
this._activateEditMode()
|
||||
);
|
||||
}
|
||||
|
||||
protected updated(changedProps) {
|
||||
@@ -459,6 +447,13 @@ class HaSidebar extends LitElement {
|
||||
if (changedProps.has("alwaysExpand")) {
|
||||
this.expanded = this.alwaysExpand;
|
||||
}
|
||||
if (changedProps.has("editMode")) {
|
||||
if (this.editMode) {
|
||||
this._activateEditMode();
|
||||
} else {
|
||||
this._deactivateEditMode();
|
||||
}
|
||||
}
|
||||
if (!changedProps.has("hass")) {
|
||||
return;
|
||||
}
|
||||
@@ -489,7 +484,7 @@ class HaSidebar extends LitElement {
|
||||
return;
|
||||
}
|
||||
|
||||
this._activateEditMode();
|
||||
fireEvent(this, "hass-edit-sidebar", { editMode: true });
|
||||
}
|
||||
|
||||
private async _activateEditMode() {
|
||||
@@ -499,15 +494,14 @@ class HaSidebar extends LitElement {
|
||||
import("../resources/ha-sortable-style"),
|
||||
]);
|
||||
|
||||
sortStyles = sortStylesImport.sortableStyles;
|
||||
const style = document.createElement("style");
|
||||
style.innerHTML = sortStylesImport.sortableStyles.cssText;
|
||||
this.shadowRoot!.appendChild(style);
|
||||
|
||||
Sortable = sortableImport.Sortable;
|
||||
Sortable.mount(sortableImport.OnSpill);
|
||||
Sortable.mount(sortableImport.AutoScroll());
|
||||
}
|
||||
this._editMode = true;
|
||||
|
||||
fireEvent(this, "hass-open-menu");
|
||||
|
||||
await this.updateComplete;
|
||||
|
||||
@@ -519,16 +513,20 @@ class HaSidebar extends LitElement {
|
||||
animation: 150,
|
||||
fallbackClass: "sortable-fallback",
|
||||
dataIdAttr: "data-panel",
|
||||
handle: "paper-icon-item",
|
||||
onSort: async () => {
|
||||
this._panelOrder = this._sortable.toArray();
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
private _closeEditMode() {
|
||||
private _deactivateEditMode() {
|
||||
this._sortable?.destroy();
|
||||
this._sortable = undefined;
|
||||
this._editMode = false;
|
||||
}
|
||||
|
||||
private _closeEditMode() {
|
||||
fireEvent(this, "hass-edit-sidebar", { editMode: false });
|
||||
}
|
||||
|
||||
private async _hidePanel(ev: Event) {
|
||||
@@ -692,16 +690,16 @@ class HaSidebar extends LitElement {
|
||||
></ha-svg-icon>`
|
||||
: html`<ha-icon slot="item-icon" .icon=${icon}></ha-icon>`}
|
||||
<span class="item-text">${title}</span>
|
||||
${this._editMode
|
||||
? html`<mwc-icon-button
|
||||
class="hide-panel"
|
||||
.panel=${urlPath}
|
||||
@click=${this._hidePanel}
|
||||
>
|
||||
<ha-svg-icon .path=${mdiClose}></ha-svg-icon>
|
||||
</mwc-icon-button>`
|
||||
: ""}
|
||||
</paper-icon-item>
|
||||
${this.editMode
|
||||
? html`<mwc-icon-button
|
||||
class="hide-panel"
|
||||
.panel=${urlPath}
|
||||
@click=${this._hidePanel}
|
||||
>
|
||||
<ha-svg-icon .path=${mdiClose}></ha-svg-icon>
|
||||
</mwc-icon-button>`
|
||||
: ""}
|
||||
</a>
|
||||
`;
|
||||
}
|
||||
@@ -777,6 +775,10 @@ class HaSidebar extends LitElement {
|
||||
.title mwc-button {
|
||||
width: 100%;
|
||||
}
|
||||
#sortable,
|
||||
.hidden-panel {
|
||||
display: none;
|
||||
}
|
||||
|
||||
paper-listbox {
|
||||
padding: 4px 0;
|
||||
|
@@ -25,7 +25,7 @@ import { debounce } from "../../common/util/debounce";
|
||||
import {
|
||||
browseLocalMediaPlayer,
|
||||
browseMediaPlayer,
|
||||
BROWSER_SOURCE,
|
||||
BROWSER_PLAYER,
|
||||
MediaClassBrowserSettings,
|
||||
MediaPickedEvent,
|
||||
MediaPlayerBrowseAction,
|
||||
@@ -35,6 +35,7 @@ import { showAlertDialog } from "../../dialogs/generic/show-dialog-box";
|
||||
import { installResizeObserver } from "../../panels/lovelace/common/install-resize-observer";
|
||||
import { haStyle } from "../../resources/styles";
|
||||
import type { HomeAssistant } from "../../types";
|
||||
import { documentationUrl } from "../../util/documentation-url";
|
||||
import "../entity/ha-entity-picker";
|
||||
import "../ha-button-menu";
|
||||
import "../ha-card";
|
||||
@@ -108,9 +109,11 @@ export class HaMediaPlayerBrowse extends LitElement {
|
||||
text: this._renderError(this._error),
|
||||
});
|
||||
} else {
|
||||
return html`<div class="container">
|
||||
${this._renderError(this._error)}
|
||||
</div>`;
|
||||
return html`
|
||||
<div class="container">
|
||||
${this._renderError(this._error)}
|
||||
</div>
|
||||
`;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -235,7 +238,7 @@ export class HaMediaPlayerBrowse extends LitElement {
|
||||
</div>
|
||||
${this._error
|
||||
? html`
|
||||
<div class="container error">
|
||||
<div class="container">
|
||||
${this._renderError(this._error)}
|
||||
</div>
|
||||
`
|
||||
@@ -354,7 +357,31 @@ export class HaMediaPlayerBrowse extends LitElement {
|
||||
`
|
||||
: html`
|
||||
<div class="container">
|
||||
${this.hass.localize("ui.components.media-browser.no_items")}
|
||||
${this.hass.localize("ui.components.media-browser.no_items")}<br />
|
||||
|
||||
${currentItem.media_content_id.startsWith(
|
||||
"media-source://media_source/local_source"
|
||||
)
|
||||
? html`${this.hass.localize(
|
||||
"ui.components.media-browser.learn_adding_local_media",
|
||||
"documentation",
|
||||
html`<a
|
||||
href="${documentationUrl(
|
||||
this.hass,
|
||||
"/more-info/local-media/add-media"
|
||||
)}"
|
||||
target="_blank"
|
||||
rel="noreferrer"
|
||||
>${this.hass.localize(
|
||||
"ui.components.media-browser.documentation"
|
||||
)}</a
|
||||
>`
|
||||
)}
|
||||
<br />
|
||||
${this.hass.localize(
|
||||
"ui.components.media-browser.local_media_files"
|
||||
)}.`
|
||||
: ""}
|
||||
</div>
|
||||
`}
|
||||
`;
|
||||
@@ -456,7 +483,7 @@ export class HaMediaPlayerBrowse extends LitElement {
|
||||
mediaContentType?: string
|
||||
): Promise<MediaPlayerItem> {
|
||||
const itemData =
|
||||
this.entityId !== BROWSER_SOURCE
|
||||
this.entityId !== BROWSER_PLAYER
|
||||
? await browseMediaPlayer(
|
||||
this.hass,
|
||||
this.entityId,
|
||||
@@ -498,29 +525,35 @@ export class HaMediaPlayerBrowse extends LitElement {
|
||||
private _renderError(err: { message: string; code: string }) {
|
||||
if (err.message === "Media directory does not exist.") {
|
||||
return html`
|
||||
<h2>No local media found.</h2>
|
||||
<h2>
|
||||
${this.hass.localize(
|
||||
"ui.components.media-browser.no_local_media_found"
|
||||
)}
|
||||
</h2>
|
||||
<p>
|
||||
It looks like you have not yet created a media directory.
|
||||
<br />Create a directory with the name <b>"media"</b> in the
|
||||
configuration directory of Home Assistant
|
||||
(${this.hass.config.config_dir}). <br />Place your video, audio and
|
||||
image files in this directory to be able to browse and play them in
|
||||
the browser or on supported media players.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Check the
|
||||
<a
|
||||
href="https://www.home-assistant.io/integrations/media_source/#local-media"
|
||||
target="_blank"
|
||||
rel="noreferrer"
|
||||
>documentation</a
|
||||
>
|
||||
for more info
|
||||
${this.hass.localize("ui.components.media-browser.no_media_folder")}
|
||||
<br />
|
||||
${this.hass.localize(
|
||||
"ui.components.media-browser.setup_local_help",
|
||||
"documentation",
|
||||
html`<a
|
||||
href="${documentationUrl(
|
||||
this.hass,
|
||||
"/more-info/local-media/setup-media"
|
||||
)}"
|
||||
target="_blank"
|
||||
rel="noreferrer"
|
||||
>${this.hass.localize(
|
||||
"ui.components.media-browser.documentation"
|
||||
)}</a
|
||||
>`
|
||||
)}
|
||||
<br />
|
||||
${this.hass.localize("ui.components.media-browser.local_media_files")}
|
||||
</p>
|
||||
`;
|
||||
}
|
||||
return html`<span class="error">err.message</span>`;
|
||||
return html`<span class="error">${err.message}</span>`;
|
||||
}
|
||||
|
||||
static get styles(): CSSResultArray {
|
||||
|
@@ -62,12 +62,22 @@ class StateHistoryChartLine extends LocalizeMixin(PolymerElement) {
|
||||
this.drawChart();
|
||||
}
|
||||
|
||||
ready() {
|
||||
super.ready();
|
||||
// safari doesn't always render the canvas when we animate it, so we remove overflow hidden when the animation is complete
|
||||
this.addEventListener("transitionend", () => {
|
||||
this.style.overflow = "auto";
|
||||
});
|
||||
}
|
||||
|
||||
dataChanged() {
|
||||
this.drawChart();
|
||||
}
|
||||
|
||||
_onRenderedChanged(rendered) {
|
||||
if (rendered) this.animateHeight();
|
||||
if (rendered) {
|
||||
this.animateHeight();
|
||||
}
|
||||
}
|
||||
|
||||
animateHeight() {
|
||||
@@ -79,15 +89,15 @@ class StateHistoryChartLine extends LocalizeMixin(PolymerElement) {
|
||||
}
|
||||
|
||||
drawChart() {
|
||||
if (!this._isAttached) {
|
||||
return;
|
||||
}
|
||||
|
||||
const unit = this.unit;
|
||||
const deviceStates = this.data;
|
||||
const datasets = [];
|
||||
let endTime;
|
||||
|
||||
if (!this._isAttached) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (deviceStates.length === 0) {
|
||||
return;
|
||||
}
|
||||
|
@@ -1,23 +1,23 @@
|
||||
import {
|
||||
mdiAccountMusic,
|
||||
mdiAccountMusicOutline,
|
||||
mdiAlbum,
|
||||
mdiApplication,
|
||||
mdiDramaMasks,
|
||||
mdiFileMusic,
|
||||
mdiFolder,
|
||||
mdiGamepadVariant,
|
||||
mdiImage,
|
||||
mdiMovie,
|
||||
mdiMusic,
|
||||
mdiPlaylistMusic,
|
||||
mdiPodcast,
|
||||
mdiTelevisionClassic,
|
||||
mdiVideo,
|
||||
mdiWeb,
|
||||
} from "@mdi/js";
|
||||
import type { HassEntity } from "home-assistant-js-websocket";
|
||||
import type { HomeAssistant } from "../types";
|
||||
import {
|
||||
mdiFolder,
|
||||
mdiPlaylistMusic,
|
||||
mdiFileMusic,
|
||||
mdiAlbum,
|
||||
mdiMusic,
|
||||
mdiTelevisionClassic,
|
||||
mdiMovie,
|
||||
mdiVideo,
|
||||
mdiImage,
|
||||
mdiWeb,
|
||||
mdiGamepadVariant,
|
||||
mdiAccountMusic,
|
||||
mdiPodcast,
|
||||
mdiApplication,
|
||||
mdiAccountMusicOutline,
|
||||
mdiDramaMasks,
|
||||
} from "@mdi/js";
|
||||
|
||||
export const SUPPORT_PAUSE = 1;
|
||||
export const SUPPORT_SEEK = 2;
|
||||
@@ -38,7 +38,7 @@ export const CONTRAST_RATIO = 4.5;
|
||||
|
||||
export type MediaPlayerBrowseAction = "pick" | "play";
|
||||
|
||||
export const BROWSER_SOURCE = "browser";
|
||||
export const BROWSER_PLAYER = "browser";
|
||||
|
||||
export type MediaClassBrowserSetting = {
|
||||
icon: string;
|
||||
|
@@ -20,6 +20,7 @@ import { LocalizeFunc } from "../../common/translations/localize";
|
||||
import "../../components/ha-icon-next";
|
||||
import { domainToName } from "../../data/integration";
|
||||
import { HomeAssistant } from "../../types";
|
||||
import { documentationUrl } from "../../util/documentation-url";
|
||||
import { FlowConfig } from "./show-dialog-data-entry-flow";
|
||||
import { configFlowContentStyles } from "./styles";
|
||||
|
||||
@@ -122,7 +123,7 @@ class StepFlowPickHandler extends LitElement {
|
||||
${this.hass.localize(
|
||||
"ui.panel.config.integrations.note_about_website_reference"
|
||||
)}<a
|
||||
href="https://www.home-assistant.io/integrations/"
|
||||
href="${documentationUrl(this.hass, "/integrations/")}"
|
||||
target="_blank"
|
||||
rel="noreferrer"
|
||||
>${this.hass.localize(
|
||||
|
@@ -48,6 +48,7 @@ class MoreInfoCamera extends LitElement {
|
||||
<ha-camera-stream
|
||||
.hass=${this.hass}
|
||||
.stateObj=${this.stateObj}
|
||||
allow-exoplayer
|
||||
controls
|
||||
></ha-camera-stream>
|
||||
${this._cameraPrefs
|
||||
|
@@ -32,7 +32,7 @@ class MoreInfoPerson extends LitElement {
|
||||
return html`
|
||||
<ha-attributes
|
||||
.stateObj=${this.stateObj}
|
||||
extraFilters="id,user_id,editable"
|
||||
extra-filters="id,user_id,editable"
|
||||
></ha-attributes>
|
||||
${this.stateObj.attributes.latitude && this.stateObj.attributes.longitude
|
||||
? html`
|
||||
@@ -78,6 +78,9 @@ class MoreInfoPerson extends LitElement {
|
||||
margin: 36px 0 8px 0;
|
||||
text-align: right;
|
||||
}
|
||||
ha-map {
|
||||
margin-top: 16px;
|
||||
}
|
||||
`;
|
||||
}
|
||||
}
|
||||
|
@@ -26,10 +26,8 @@ import { navigate } from "../../common/navigate";
|
||||
import "../../components/ha-dialog";
|
||||
import "../../components/ha-header-bar";
|
||||
import "../../components/ha-svg-icon";
|
||||
import "../../components/state-history-charts";
|
||||
import { removeEntityRegistryEntry } from "../../data/entity_registry";
|
||||
import { showEntityEditorDialog } from "../../panels/config/entities/show-dialog-entity-editor";
|
||||
import "../../panels/logbook/ha-logbook";
|
||||
import { haStyleDialog } from "../../resources/styles";
|
||||
import "../../state-summary/state-card-content";
|
||||
import { HomeAssistant } from "../../types";
|
||||
@@ -394,7 +392,9 @@ export class MoreInfoDialog extends LitElement {
|
||||
--dialog-content-padding: 0;
|
||||
}
|
||||
|
||||
state-card-content {
|
||||
state-card-content,
|
||||
ha-more-info-history,
|
||||
ha-more-info-logbook:not(:last-child) {
|
||||
display: block;
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
|
@@ -1,5 +1,4 @@
|
||||
import {
|
||||
css,
|
||||
customElement,
|
||||
html,
|
||||
internalProperty,
|
||||
@@ -13,7 +12,6 @@ import { throttle } from "../../common/util/throttle";
|
||||
import "../../components/state-history-charts";
|
||||
import { getRecentWithCache } from "../../data/cached-history";
|
||||
import { HistoryResult } from "../../data/history";
|
||||
import { haStyle } from "../../resources/styles";
|
||||
import { HomeAssistant } from "../../types";
|
||||
|
||||
@customElement("ha-more-info-history")
|
||||
@@ -88,18 +86,6 @@ export class MoreInfoHistory extends LitElement {
|
||||
this.hass!.language
|
||||
);
|
||||
}
|
||||
|
||||
static get styles() {
|
||||
return [
|
||||
haStyle,
|
||||
css`
|
||||
state-history-charts {
|
||||
display: block;
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
`,
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
declare global {
|
||||
|
@@ -152,8 +152,6 @@ export class MoreInfoLogbook extends LitElement {
|
||||
ha-logbook {
|
||||
max-height: 250px;
|
||||
overflow: auto;
|
||||
display: block;
|
||||
margin-top: 16px;
|
||||
}
|
||||
ha-circular-progress {
|
||||
display: flex;
|
||||
|
@@ -7,12 +7,13 @@ import {
|
||||
CSSResult,
|
||||
customElement,
|
||||
html,
|
||||
internalProperty,
|
||||
LitElement,
|
||||
property,
|
||||
PropertyValues,
|
||||
TemplateResult,
|
||||
} from "lit-element";
|
||||
import { fireEvent } from "../common/dom/fire_event";
|
||||
import { fireEvent, HASSDomEvent } from "../common/dom/fire_event";
|
||||
import { listenMediaQuery } from "../common/dom/media_query";
|
||||
import { toggleAttribute } from "../common/dom/toggle_attribute";
|
||||
import { showNotificationDrawer } from "../dialogs/notifications/show-notification-drawer";
|
||||
@@ -24,10 +25,17 @@ const NON_SWIPABLE_PANELS = ["map"];
|
||||
declare global {
|
||||
// for fire event
|
||||
interface HASSDomEvents {
|
||||
"hass-open-menu": undefined;
|
||||
"hass-toggle-menu": undefined;
|
||||
"hass-edit-sidebar": EditSideBarEvent;
|
||||
"hass-show-notifications": undefined;
|
||||
}
|
||||
interface HTMLElementEventMap {
|
||||
"hass-edit-sidebar": HASSDomEvent<EditSideBarEvent>;
|
||||
}
|
||||
}
|
||||
|
||||
interface EditSideBarEvent {
|
||||
editMode: boolean;
|
||||
}
|
||||
|
||||
@customElement("home-assistant-main")
|
||||
@@ -36,7 +44,9 @@ class HomeAssistantMain extends LitElement {
|
||||
|
||||
@property() public route?: Route;
|
||||
|
||||
@property({ type: Boolean }) private narrow?: boolean;
|
||||
@property({ type: Boolean }) public narrow?: boolean;
|
||||
|
||||
@internalProperty() private _sidebarEditMode = false;
|
||||
|
||||
protected render(): TemplateResult {
|
||||
const hass = this.hass;
|
||||
@@ -48,7 +58,9 @@ class HomeAssistantMain extends LitElement {
|
||||
const sidebarNarrow = this._sidebarNarrow;
|
||||
|
||||
const disableSwipe =
|
||||
!sidebarNarrow || NON_SWIPABLE_PANELS.indexOf(hass.panelUrl) !== -1;
|
||||
this._sidebarEditMode ||
|
||||
!sidebarNarrow ||
|
||||
NON_SWIPABLE_PANELS.indexOf(hass.panelUrl) !== -1;
|
||||
|
||||
// Style block in render because of the mixin that is not supported
|
||||
return html`
|
||||
@@ -76,6 +88,7 @@ class HomeAssistantMain extends LitElement {
|
||||
<ha-sidebar
|
||||
.hass=${hass}
|
||||
.narrow=${sidebarNarrow}
|
||||
.editMode=${this._sidebarEditMode}
|
||||
.alwaysExpand=${sidebarNarrow ||
|
||||
this.hass.dockedSidebar === "docked"}
|
||||
></ha-sidebar>
|
||||
@@ -93,18 +106,28 @@ class HomeAssistantMain extends LitElement {
|
||||
protected firstUpdated() {
|
||||
import(/* webpackChunkName: "ha-sidebar" */ "../components/ha-sidebar");
|
||||
|
||||
this.addEventListener("hass-open-menu", () => {
|
||||
if (this._sidebarNarrow) {
|
||||
this.drawer.open();
|
||||
} else {
|
||||
fireEvent(this, "hass-dock-sidebar", {
|
||||
dock: "docked",
|
||||
});
|
||||
setTimeout(() => this.appLayout.resetLayout());
|
||||
this.addEventListener(
|
||||
"hass-edit-sidebar",
|
||||
(ev: HASSDomEvent<EditSideBarEvent>) => {
|
||||
this._sidebarEditMode = ev.detail.editMode;
|
||||
|
||||
if (this._sidebarEditMode) {
|
||||
if (this._sidebarNarrow) {
|
||||
this.drawer.open();
|
||||
} else {
|
||||
fireEvent(this, "hass-dock-sidebar", {
|
||||
dock: "docked",
|
||||
});
|
||||
setTimeout(() => this.appLayout.resetLayout());
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
);
|
||||
|
||||
this.addEventListener("hass-toggle-menu", () => {
|
||||
if (this._sidebarEditMode) {
|
||||
return;
|
||||
}
|
||||
if (this._sidebarNarrow) {
|
||||
if (this.drawer.opened) {
|
||||
this.drawer.close();
|
||||
|
@@ -39,6 +39,7 @@ import "../../../layouts/ha-app-layout";
|
||||
import "../../../layouts/hass-tabs-subpage";
|
||||
import { haStyle } from "../../../resources/styles";
|
||||
import { HomeAssistant, Route } from "../../../types";
|
||||
import { documentationUrl } from "../../../util/documentation-url";
|
||||
import "../ha-config-section";
|
||||
import { configSections } from "../ha-panel-config";
|
||||
import "./action/ha-automation-action";
|
||||
@@ -159,7 +160,10 @@ export class HaAutomationEditor extends LitElement {
|
||||
"ui.panel.config.automation.editor.modes.description",
|
||||
"documentation_link",
|
||||
html`<a
|
||||
href="https://www.home-assistant.io/integrations/automation/#automation-modes"
|
||||
href="${documentationUrl(
|
||||
this.hass,
|
||||
"/integrations/automation/#automation-modes"
|
||||
)}"
|
||||
target="_blank"
|
||||
rel="noreferrer"
|
||||
>${this.hass.localize(
|
||||
@@ -247,7 +251,10 @@ export class HaAutomationEditor extends LitElement {
|
||||
)}
|
||||
</p>
|
||||
<a
|
||||
href="https://home-assistant.io/docs/automation/trigger/"
|
||||
href="${documentationUrl(
|
||||
this.hass,
|
||||
"/docs/automation/trigger/"
|
||||
)}"
|
||||
target="_blank"
|
||||
rel="noreferrer"
|
||||
>
|
||||
@@ -276,7 +283,10 @@ export class HaAutomationEditor extends LitElement {
|
||||
)}
|
||||
</p>
|
||||
<a
|
||||
href="https://home-assistant.io/docs/scripts/conditions/"
|
||||
href="${documentationUrl(
|
||||
this.hass,
|
||||
"/docs/scripts/conditions/"
|
||||
)}"
|
||||
target="_blank"
|
||||
rel="noreferrer"
|
||||
>
|
||||
@@ -305,7 +315,10 @@ export class HaAutomationEditor extends LitElement {
|
||||
)}
|
||||
</p>
|
||||
<a
|
||||
href="https://home-assistant.io/docs/automation/action/"
|
||||
href="${documentationUrl(
|
||||
this.hass,
|
||||
"/docs/automation/action/"
|
||||
)}"
|
||||
target="_blank"
|
||||
rel="noreferrer"
|
||||
>
|
||||
|
@@ -124,6 +124,26 @@ class CloudAlexa extends LitElement {
|
||||
? exposedCards
|
||||
: notExposedCards;
|
||||
|
||||
const iconButton = html`<mwc-icon-button
|
||||
slot="trigger"
|
||||
class=${classMap({
|
||||
exposed: isExposed!,
|
||||
"not-exposed": !isExposed,
|
||||
})}
|
||||
.disabled=${!emptyFilter}
|
||||
.title=${this.hass!.localize("ui.panel.config.cloud.google.expose")}
|
||||
>
|
||||
<ha-svg-icon
|
||||
.path=${config.should_expose !== null
|
||||
? isExposed
|
||||
? mdiCheckboxMarked
|
||||
: mdiCloseBox
|
||||
: isDomainExposed
|
||||
? mdiCheckboxMultipleMarked
|
||||
: mdiCloseBoxMultiple}
|
||||
></ha-svg-icon>
|
||||
</mwc-icon-button>`;
|
||||
|
||||
target.push(html`
|
||||
<ha-card>
|
||||
<div class="card-content">
|
||||
@@ -139,67 +159,50 @@ class CloudAlexa extends LitElement {
|
||||
.map((ifc) => ifc.replace(/(Alexa.|Controller)/g, ""))
|
||||
.join(", ")}
|
||||
</state-info>
|
||||
<ha-button-menu
|
||||
corner="BOTTOM_START"
|
||||
.entityId=${stateObj.entity_id}
|
||||
@action=${this._exposeChanged}
|
||||
>
|
||||
<mwc-icon-button
|
||||
slot="trigger"
|
||||
class=${classMap({
|
||||
exposed: isExposed!,
|
||||
"not-exposed": !isExposed,
|
||||
})}
|
||||
.title=${this.hass!.localize(
|
||||
"ui.panel.config.cloud.alexa.expose"
|
||||
)}
|
||||
>
|
||||
<ha-svg-icon
|
||||
.path=${config.should_expose !== null
|
||||
? isExposed
|
||||
? mdiCheckboxMarked
|
||||
: mdiCloseBox
|
||||
: isDomainExposed
|
||||
? mdiCheckboxMultipleMarked
|
||||
: mdiCloseBoxMultiple}
|
||||
></ha-svg-icon>
|
||||
</mwc-icon-button>
|
||||
<mwc-list-item hasMeta>
|
||||
${this.hass!.localize(
|
||||
"ui.panel.config.cloud.alexa.expose_entity"
|
||||
)}
|
||||
<ha-svg-icon
|
||||
class="exposed"
|
||||
slot="meta"
|
||||
.path=${mdiCheckboxMarked}
|
||||
></ha-svg-icon>
|
||||
</mwc-list-item>
|
||||
<mwc-list-item hasMeta>
|
||||
${this.hass!.localize(
|
||||
"ui.panel.config.cloud.alexa.dont_expose_entity"
|
||||
)}
|
||||
<ha-svg-icon
|
||||
class="not-exposed"
|
||||
slot="meta"
|
||||
.path=${mdiCloseBox}
|
||||
></ha-svg-icon>
|
||||
</mwc-list-item>
|
||||
<mwc-list-item hasMeta>
|
||||
${this.hass!.localize(
|
||||
"ui.panel.config.cloud.alexa.follow_domain"
|
||||
)}
|
||||
<ha-svg-icon
|
||||
class=${classMap({
|
||||
exposed: isDomainExposed,
|
||||
"not-exposed": !isDomainExposed,
|
||||
})}
|
||||
slot="meta"
|
||||
.path=${isDomainExposed
|
||||
? mdiCheckboxMultipleMarked
|
||||
: mdiCloseBoxMultiple}
|
||||
></ha-svg-icon>
|
||||
</mwc-list-item>
|
||||
</ha-button-menu>
|
||||
${!emptyFilter
|
||||
? html`${iconButton}`
|
||||
: html`<ha-button-menu
|
||||
corner="BOTTOM_START"
|
||||
.entityId=${stateObj.entity_id}
|
||||
@action=${this._exposeChanged}
|
||||
>
|
||||
${iconButton}
|
||||
<mwc-list-item hasMeta>
|
||||
${this.hass!.localize(
|
||||
"ui.panel.config.cloud.google.expose_entity"
|
||||
)}
|
||||
<ha-svg-icon
|
||||
class="exposed"
|
||||
slot="meta"
|
||||
.path=${mdiCheckboxMarked}
|
||||
></ha-svg-icon>
|
||||
</mwc-list-item>
|
||||
<mwc-list-item hasMeta>
|
||||
${this.hass!.localize(
|
||||
"ui.panel.config.cloud.google.dont_expose_entity"
|
||||
)}
|
||||
<ha-svg-icon
|
||||
class="not-exposed"
|
||||
slot="meta"
|
||||
.path=${mdiCloseBox}
|
||||
></ha-svg-icon>
|
||||
</mwc-list-item>
|
||||
<mwc-list-item hasMeta>
|
||||
${this.hass!.localize(
|
||||
"ui.panel.config.cloud.google.follow_domain"
|
||||
)}
|
||||
<ha-svg-icon
|
||||
class=${classMap({
|
||||
exposed: isDomainExposed,
|
||||
"not-exposed": !isDomainExposed,
|
||||
})}
|
||||
slot="meta"
|
||||
.path=${isDomainExposed
|
||||
? mdiCheckboxMultipleMarked
|
||||
: mdiCloseBoxMultiple}
|
||||
></ha-svg-icon>
|
||||
</mwc-list-item>
|
||||
</ha-button-menu>`}
|
||||
</div>
|
||||
</div>
|
||||
</ha-card>
|
||||
|
@@ -14,6 +14,7 @@ import type { HaPaperDialog } from "../../../../components/dialog/ha-paper-dialo
|
||||
import { showConfirmationDialog } from "../../../../dialogs/generic/show-dialog-box";
|
||||
import { haStyle } from "../../../../resources/styles";
|
||||
import { HomeAssistant } from "../../../../types";
|
||||
import { documentationUrl } from "../../../../util/documentation-url";
|
||||
import { WebhookDialogParams } from "./show-dialog-manage-cloudhook";
|
||||
|
||||
const inputLabel = "Public URL – Click to copy to clipboard";
|
||||
@@ -37,8 +38,11 @@ export class DialogManageCloudhook extends LitElement {
|
||||
const { webhook, cloudhook } = this._params;
|
||||
const docsUrl =
|
||||
webhook.domain === "automation"
|
||||
? "https://www.home-assistant.io/docs/automation/trigger/#webhook-trigger"
|
||||
: `https://www.home-assistant.io/integrations/${webhook.domain}/`;
|
||||
? documentationUrl(
|
||||
this.hass!,
|
||||
"/docs/automation/trigger/#webhook-trigger"
|
||||
)
|
||||
: documentationUrl(this.hass!, `/integrations/${webhook.domain}/`);
|
||||
return html`
|
||||
<ha-paper-dialog with-backdrop>
|
||||
<h2>
|
||||
|
@@ -130,6 +130,26 @@ class CloudGoogleAssistant extends LitElement {
|
||||
? exposedCards
|
||||
: notExposedCards;
|
||||
|
||||
const iconButton = html`<mwc-icon-button
|
||||
slot="trigger"
|
||||
class=${classMap({
|
||||
exposed: isExposed!,
|
||||
"not-exposed": !isExposed,
|
||||
})}
|
||||
.disabled=${!emptyFilter}
|
||||
.title=${this.hass!.localize("ui.panel.config.cloud.google.expose")}
|
||||
>
|
||||
<ha-svg-icon
|
||||
.path=${config.should_expose !== null
|
||||
? isExposed
|
||||
? mdiCheckboxMarked
|
||||
: mdiCloseBox
|
||||
: isDomainExposed
|
||||
? mdiCheckboxMultipleMarked
|
||||
: mdiCloseBoxMultiple}
|
||||
></ha-svg-icon>
|
||||
</mwc-icon-button>`;
|
||||
|
||||
target.push(html`
|
||||
<ha-card>
|
||||
<div class="card-content">
|
||||
@@ -144,67 +164,50 @@ class CloudGoogleAssistant extends LitElement {
|
||||
.map((trait) => trait.substr(trait.lastIndexOf(".") + 1))
|
||||
.join(", ")}
|
||||
</state-info>
|
||||
<ha-button-menu
|
||||
corner="BOTTOM_START"
|
||||
.entityId=${stateObj.entity_id}
|
||||
@action=${this._exposeChanged}
|
||||
>
|
||||
<mwc-icon-button
|
||||
slot="trigger"
|
||||
class=${classMap({
|
||||
exposed: isExposed!,
|
||||
"not-exposed": !isExposed,
|
||||
})}
|
||||
.title=${this.hass!.localize(
|
||||
"ui.panel.config.cloud.google.expose"
|
||||
)}
|
||||
>
|
||||
<ha-svg-icon
|
||||
.path=${config.should_expose !== null
|
||||
? isExposed
|
||||
? mdiCheckboxMarked
|
||||
: mdiCloseBox
|
||||
: isDomainExposed
|
||||
? mdiCheckboxMultipleMarked
|
||||
: mdiCloseBoxMultiple}
|
||||
></ha-svg-icon>
|
||||
</mwc-icon-button>
|
||||
<mwc-list-item hasMeta>
|
||||
${this.hass!.localize(
|
||||
"ui.panel.config.cloud.google.expose_entity"
|
||||
)}
|
||||
<ha-svg-icon
|
||||
class="exposed"
|
||||
slot="meta"
|
||||
.path=${mdiCheckboxMarked}
|
||||
></ha-svg-icon>
|
||||
</mwc-list-item>
|
||||
<mwc-list-item hasMeta>
|
||||
${this.hass!.localize(
|
||||
"ui.panel.config.cloud.google.dont_expose_entity"
|
||||
)}
|
||||
<ha-svg-icon
|
||||
class="not-exposed"
|
||||
slot="meta"
|
||||
.path=${mdiCloseBox}
|
||||
></ha-svg-icon>
|
||||
</mwc-list-item>
|
||||
<mwc-list-item hasMeta>
|
||||
${this.hass!.localize(
|
||||
"ui.panel.config.cloud.google.follow_domain"
|
||||
)}
|
||||
<ha-svg-icon
|
||||
class=${classMap({
|
||||
exposed: isDomainExposed,
|
||||
"not-exposed": !isDomainExposed,
|
||||
})}
|
||||
slot="meta"
|
||||
.path=${isDomainExposed
|
||||
? mdiCheckboxMultipleMarked
|
||||
: mdiCloseBoxMultiple}
|
||||
></ha-svg-icon>
|
||||
</mwc-list-item>
|
||||
</ha-button-menu>
|
||||
${!emptyFilter
|
||||
? html`${iconButton}`
|
||||
: html`<ha-button-menu
|
||||
corner="BOTTOM_START"
|
||||
.entityId=${stateObj.entity_id}
|
||||
@action=${this._exposeChanged}
|
||||
>
|
||||
${iconButton}
|
||||
<mwc-list-item hasMeta>
|
||||
${this.hass!.localize(
|
||||
"ui.panel.config.cloud.google.expose_entity"
|
||||
)}
|
||||
<ha-svg-icon
|
||||
class="exposed"
|
||||
slot="meta"
|
||||
.path=${mdiCheckboxMarked}
|
||||
></ha-svg-icon>
|
||||
</mwc-list-item>
|
||||
<mwc-list-item hasMeta>
|
||||
${this.hass!.localize(
|
||||
"ui.panel.config.cloud.google.dont_expose_entity"
|
||||
)}
|
||||
<ha-svg-icon
|
||||
class="not-exposed"
|
||||
slot="meta"
|
||||
.path=${mdiCloseBox}
|
||||
></ha-svg-icon>
|
||||
</mwc-list-item>
|
||||
<mwc-list-item hasMeta>
|
||||
${this.hass!.localize(
|
||||
"ui.panel.config.cloud.google.follow_domain"
|
||||
)}
|
||||
<ha-svg-icon
|
||||
class=${classMap({
|
||||
exposed: isDomainExposed,
|
||||
"not-exposed": !isDomainExposed,
|
||||
})}
|
||||
slot="meta"
|
||||
.path=${isDomainExposed
|
||||
? mdiCheckboxMultipleMarked
|
||||
: mdiCloseBoxMultiple}
|
||||
></ha-svg-icon>
|
||||
</mwc-list-item>
|
||||
</ha-button-menu>`}
|
||||
</div>
|
||||
${entity.might_2fa
|
||||
? html`
|
||||
|
@@ -8,6 +8,7 @@ import "../../../../layouts/hass-subpage";
|
||||
import { EventsMixin } from "../../../../mixins/events-mixin";
|
||||
import LocalizeMixin from "../../../../mixins/localize-mixin";
|
||||
import "../../../../styles/polymer-ha-style";
|
||||
import { documentationUrl } from "../../../../util/documentation-url";
|
||||
import "../../ha-config-section";
|
||||
|
||||
/*
|
||||
@@ -70,8 +71,8 @@ class CloudRegister extends LocalizeMixin(EventsMixin(PolymerElement)) {
|
||||
<p>
|
||||
[[localize('ui.panel.config.cloud.register.information4')]]
|
||||
</p><ul>
|
||||
<li><a href="https://home-assistant.io/tos/" target="_blank" rel="noreferrer">[[localize('ui.panel.config.cloud.register.link_terms_conditions')]]</a></li>
|
||||
<li><a href="https://home-assistant.io/privacy/" target="_blank" rel="noreferrer">[[localize('ui.panel.config.cloud.register.link_privacy_policy')]]</a></li>
|
||||
<li><a href="[[_computeDocumentationUrlTos(hass)]]" target="_blank" rel="noreferrer">[[localize('ui.panel.config.cloud.register.link_terms_conditions')]]</a></li>
|
||||
<li><a href="[[_computeDocumentationUrlPrivacy(hass)]]" target="_blank" rel="noreferrer">[[localize('ui.panel.config.cloud.register.link_privacy_policy')]]</a></li>
|
||||
</ul>
|
||||
</p>
|
||||
</div>
|
||||
@@ -137,6 +138,14 @@ class CloudRegister extends LocalizeMixin(EventsMixin(PolymerElement)) {
|
||||
}
|
||||
}
|
||||
|
||||
_computeDocumentationUrlTos(hass) {
|
||||
return documentationUrl(hass, "/tos/");
|
||||
}
|
||||
|
||||
_computeDocumentationUrlPrivacy(hass) {
|
||||
return documentationUrl(hass, "/privacy/");
|
||||
}
|
||||
|
||||
_handleRegister() {
|
||||
let invalid = false;
|
||||
|
||||
|
@@ -6,10 +6,11 @@ import { html } from "@polymer/polymer/lib/utils/html-tag";
|
||||
import { PolymerElement } from "@polymer/polymer/polymer-element";
|
||||
import { computeStateDomain } from "../../../common/entity/compute_state_domain";
|
||||
import LocalizeMixin from "../../../mixins/localize-mixin";
|
||||
import hassAttributeUtil from "../../../util/hass-attributes-util";
|
||||
import "./ha-form-customize-attributes";
|
||||
import "../ha-form-style";
|
||||
import "../../../styles/polymer-ha-style";
|
||||
import { documentationUrl } from "../../../util/documentation-url";
|
||||
import hassAttributeUtil from "../../../util/hass-attributes-util";
|
||||
import "../ha-form-style";
|
||||
import "./ha-form-customize-attributes";
|
||||
|
||||
class HaFormCustomize extends LocalizeMixin(PolymerElement) {
|
||||
static get template() {
|
||||
@@ -30,7 +31,7 @@ class HaFormCustomize extends LocalizeMixin(PolymerElement) {
|
||||
<div class="warning">
|
||||
[[localize('ui.panel.config.customize.warning.include_sentence')]]
|
||||
<a
|
||||
href="https://www.home-assistant.io/docs/configuration/customizing-devices/#customization-using-the-ui"
|
||||
href="[[_computeDocumentationUrl(hass)]]"
|
||||
target="_blank"
|
||||
rel="noreferrer"
|
||||
>[[localize('ui.panel.config.customize.warning.include_link')]]</a
|
||||
@@ -210,6 +211,13 @@ class HaFormCustomize extends LocalizeMixin(PolymerElement) {
|
||||
);
|
||||
}
|
||||
|
||||
_computeDocumentationUrl(hass) {
|
||||
return documentationUrl(
|
||||
hass,
|
||||
"/docs/configuration/customizing-devices/#customization-using-the-ui"
|
||||
);
|
||||
}
|
||||
|
||||
computeLocalAttributes(localConfig) {
|
||||
if (!localConfig) return [];
|
||||
const localKeys = Object.keys(localConfig);
|
||||
|
@@ -12,6 +12,7 @@ import "./integrations-card";
|
||||
import "./system-health-card";
|
||||
import { configSections } from "../ha-panel-config";
|
||||
import "../../../layouts/hass-tabs-subpage";
|
||||
import { documentationUrl } from "../../../util/documentation-url";
|
||||
|
||||
const JS_TYPE = __BUILD__;
|
||||
const JS_VERSION = __VERSION__;
|
||||
@@ -42,7 +43,7 @@ class HaConfigInfo extends LitElement {
|
||||
>
|
||||
<div class="about">
|
||||
<a
|
||||
href="https://www.home-assistant.io"
|
||||
href="${documentationUrl(this.hass, "")}"
|
||||
target="_blank"
|
||||
rel="noreferrer"
|
||||
><img
|
||||
@@ -63,7 +64,7 @@ class HaConfigInfo extends LitElement {
|
||||
</p>
|
||||
<p class="develop">
|
||||
<a
|
||||
href="https://www.home-assistant.io/developers/credits/"
|
||||
href="${documentationUrl(this.hass, "/developers/credits/")}"
|
||||
target="_blank"
|
||||
rel="noreferrer"
|
||||
>
|
||||
|
@@ -159,11 +159,13 @@ class OZWNetworkDashboard extends LitElement {
|
||||
}
|
||||
|
||||
private _generateServiceButton(service: string) {
|
||||
const serviceData = { instance_id: this.ozwInstance };
|
||||
return html`
|
||||
<ha-call-service-button
|
||||
.hass=${this.hass}
|
||||
domain="ozw"
|
||||
.service=${service}
|
||||
.serviceData=${serviceData}
|
||||
>
|
||||
${this.hass!.localize(`ui.panel.config.ozw.services.${service}`)}
|
||||
</ha-call-service-button>
|
||||
|
@@ -1,20 +1,20 @@
|
||||
import "../../../../../components/ha-icon-button";
|
||||
import "../../../../../components/ha-circular-progress";
|
||||
import { UnsubscribeFunc } from "home-assistant-js-websocket";
|
||||
import {
|
||||
css,
|
||||
CSSResult,
|
||||
customElement,
|
||||
html,
|
||||
internalProperty,
|
||||
LitElement,
|
||||
property,
|
||||
internalProperty,
|
||||
TemplateResult,
|
||||
} from "lit-element";
|
||||
import "../../../../../components/buttons/ha-call-api-button";
|
||||
import "../../../../../components/buttons/ha-call-service-button";
|
||||
import "../../../../../components/ha-card";
|
||||
import "../../../../../components/ha-circular-progress";
|
||||
import "../../../../../components/ha-icon";
|
||||
import "../../../../../components/ha-icon-button";
|
||||
import "../../../../../components/ha-service-description";
|
||||
import {
|
||||
fetchNetworkStatus,
|
||||
@@ -26,6 +26,7 @@ import {
|
||||
} from "../../../../../data/zwave";
|
||||
import { haStyle } from "../../../../../resources/styles";
|
||||
import { HomeAssistant } from "../../../../../types";
|
||||
import { documentationUrl } from "../../../../../util/documentation-url";
|
||||
import "../../../ha-config-section";
|
||||
|
||||
@customElement("zwave-network")
|
||||
@@ -71,7 +72,10 @@ export class ZwaveNetwork extends LitElement {
|
||||
)}
|
||||
<p>
|
||||
<a
|
||||
href="https://www.home-assistant.io/docs/z-wave/control-panel/"
|
||||
href="${documentationUrl(
|
||||
this.hass,
|
||||
"/docs/z-wave/control-panel/"
|
||||
)}"
|
||||
target="_blank"
|
||||
rel="noreferrer"
|
||||
>
|
||||
|
@@ -4,23 +4,24 @@ import {
|
||||
css,
|
||||
CSSResult,
|
||||
html,
|
||||
internalProperty,
|
||||
LitElement,
|
||||
property,
|
||||
internalProperty,
|
||||
TemplateResult,
|
||||
} from "lit-element";
|
||||
import memoizeOne from "memoize-one";
|
||||
import "../../../components/ha-picture-upload";
|
||||
import type { HaPictureUpload } from "../../../components/ha-picture-upload";
|
||||
import "../../../components/entity/ha-entities-picker";
|
||||
import { createCloseHeading } from "../../../components/ha-dialog";
|
||||
import "../../../components/ha-picture-upload";
|
||||
import type { HaPictureUpload } from "../../../components/ha-picture-upload";
|
||||
import "../../../components/user/ha-user-picker";
|
||||
import { PersonMutableParams } from "../../../data/person";
|
||||
import { CropOptions } from "../../../dialogs/image-cropper-dialog/show-image-cropper-dialog";
|
||||
import { PolymerChangedEvent } from "../../../polymer-types";
|
||||
import { haStyleDialog } from "../../../resources/styles";
|
||||
import { HomeAssistant } from "../../../types";
|
||||
import { documentationUrl } from "../../../util/documentation-url";
|
||||
import { PersonDetailDialogParams } from "./show-dialog-person-detail";
|
||||
import { CropOptions } from "../../../dialogs/image-cropper-dialog/show-image-cropper-dialog";
|
||||
|
||||
const includeDomains = ["device_tracker"];
|
||||
|
||||
@@ -153,7 +154,10 @@ class DialogPersonDetail extends LitElement {
|
||||
<ul>
|
||||
<li>
|
||||
<a
|
||||
href="https://www.home-assistant.io/integrations/#presence-detection"
|
||||
href="${documentationUrl(
|
||||
this.hass,
|
||||
"/integrations/#presence-detection"
|
||||
)}"
|
||||
target="_blank"
|
||||
rel="noreferrer"
|
||||
>${this.hass!.localize(
|
||||
|
@@ -25,6 +25,7 @@ import { showAlertDialog } from "../../../dialogs/generic/show-dialog-box";
|
||||
import "../../../layouts/hass-tabs-subpage-data-table";
|
||||
import { haStyle } from "../../../resources/styles";
|
||||
import { HomeAssistant, Route } from "../../../types";
|
||||
import { documentationUrl } from "../../../util/documentation-url";
|
||||
import { showToast } from "../../../util/toast";
|
||||
import { configSections } from "../ha-panel-config";
|
||||
|
||||
@@ -191,7 +192,7 @@ class HaSceneDashboard extends LitElement {
|
||||
${this.hass.localize("ui.panel.config.scene.picker.introduction")}
|
||||
<p>
|
||||
<a
|
||||
href="https://home-assistant.io/docs/scene/editor/"
|
||||
href="${documentationUrl(this.hass, "/docs/scene/editor/")}"
|
||||
target="_blank"
|
||||
rel="noreferrer"
|
||||
>
|
||||
|
@@ -1,46 +1,47 @@
|
||||
import "@material/mwc-fab";
|
||||
import { mdiContentSave } from "@mdi/js";
|
||||
import "@polymer/app-layout/app-header/app-header";
|
||||
import "@polymer/paper-dropdown-menu/paper-dropdown-menu-light";
|
||||
import "@polymer/app-layout/app-toolbar/app-toolbar";
|
||||
import "../../../components/ha-icon-button";
|
||||
import "@polymer/paper-dropdown-menu/paper-dropdown-menu-light";
|
||||
import { PaperListboxElement } from "@polymer/paper-listbox";
|
||||
import {
|
||||
css,
|
||||
CSSResult,
|
||||
html,
|
||||
internalProperty,
|
||||
LitElement,
|
||||
property,
|
||||
internalProperty,
|
||||
PropertyValues,
|
||||
TemplateResult,
|
||||
} from "lit-element";
|
||||
import { classMap } from "lit-html/directives/class-map";
|
||||
import { computeObjectId } from "../../../common/entity/compute_object_id";
|
||||
import { navigate } from "../../../common/navigate";
|
||||
import { slugify } from "../../../common/string/slugify";
|
||||
import { computeRTL } from "../../../common/util/compute_rtl";
|
||||
import "../../../components/ha-card";
|
||||
import "../../../components/ha-icon-button";
|
||||
import "../../../components/ha-icon-input";
|
||||
import { showToast } from "../../../util/toast";
|
||||
import "@material/mwc-fab";
|
||||
import "../../../components/ha-svg-icon";
|
||||
import {
|
||||
Action,
|
||||
deleteScript,
|
||||
getScriptEditorInitData,
|
||||
ScriptConfig,
|
||||
triggerScript,
|
||||
MODES,
|
||||
MODES_MAX,
|
||||
ScriptConfig,
|
||||
triggerScript,
|
||||
} from "../../../data/script";
|
||||
import { showConfirmationDialog } from "../../../dialogs/generic/show-dialog-box";
|
||||
import "../../../layouts/ha-app-layout";
|
||||
import { haStyle } from "../../../resources/styles";
|
||||
import { HomeAssistant, Route } from "../../../types";
|
||||
import { documentationUrl } from "../../../util/documentation-url";
|
||||
import { showToast } from "../../../util/toast";
|
||||
import "../automation/action/ha-automation-action";
|
||||
import { HaDeviceAction } from "../automation/action/types/ha-automation-action-device_id";
|
||||
import "../ha-config-section";
|
||||
import { configSections } from "../ha-panel-config";
|
||||
import "../../../components/ha-svg-icon";
|
||||
import { mdiContentSave } from "@mdi/js";
|
||||
import { PaperListboxElement } from "@polymer/paper-listbox";
|
||||
import { slugify } from "../../../common/string/slugify";
|
||||
|
||||
export class HaScriptEditor extends LitElement {
|
||||
@property({ attribute: false }) public hass!: HomeAssistant;
|
||||
@@ -148,7 +149,10 @@ export class HaScriptEditor extends LitElement {
|
||||
"ui.panel.config.script.editor.modes.description",
|
||||
"documentation_link",
|
||||
html`<a
|
||||
href="https://www.home-assistant.io/integrations/script/#script-modes"
|
||||
href="${documentationUrl(
|
||||
this.hass,
|
||||
"/integrations/script/#script-modes"
|
||||
)}"
|
||||
target="_blank"
|
||||
rel="noreferrer"
|
||||
>${this.hass.localize(
|
||||
@@ -197,18 +201,20 @@ export class HaScriptEditor extends LitElement {
|
||||
</div>
|
||||
${this.scriptEntityId
|
||||
? html`
|
||||
<div class="card-actions layout horizontal justified center">
|
||||
<span></span>
|
||||
<mwc-button
|
||||
@click=${this._runScript}
|
||||
title="${this.hass.localize(
|
||||
"ui.panel.config.script.picker.activate_script"
|
||||
)}"
|
||||
?disabled=${this._dirty}
|
||||
<div
|
||||
class="card-actions layout horizontal justified center"
|
||||
>
|
||||
${this.hass.localize("ui.card.script.execute")}
|
||||
</mwc-button>
|
||||
</div>
|
||||
<span></span>
|
||||
<mwc-button
|
||||
@click=${this._runScript}
|
||||
title="${this.hass.localize(
|
||||
"ui.panel.config.script.picker.activate_script"
|
||||
)}"
|
||||
?disabled=${this._dirty}
|
||||
>
|
||||
${this.hass.localize("ui.card.script.execute")}
|
||||
</mwc-button>
|
||||
</div>
|
||||
`
|
||||
: ``}
|
||||
</ha-card>
|
||||
@@ -227,7 +233,7 @@ export class HaScriptEditor extends LitElement {
|
||||
)}
|
||||
</p>
|
||||
<a
|
||||
href="https://home-assistant.io/docs/scripts/"
|
||||
href="${documentationUrl(this.hass, "/docs/scripts/")}"
|
||||
target="_blank"
|
||||
rel="noreferrer"
|
||||
>
|
||||
|
@@ -25,6 +25,7 @@ import { configSections } from "../ha-panel-config";
|
||||
import "../../../components/ha-svg-icon";
|
||||
import { mdiPlus } from "@mdi/js";
|
||||
import { stateIcon } from "../../../common/entity/state_icon";
|
||||
import { documentationUrl } from "../../../util/documentation-url";
|
||||
|
||||
@customElement("ha-script-picker")
|
||||
class HaScriptPicker extends LitElement {
|
||||
@@ -187,7 +188,7 @@ class HaScriptPicker extends LitElement {
|
||||
${this.hass.localize("ui.panel.config.script.picker.introduction")}
|
||||
<p>
|
||||
<a
|
||||
href="https://home-assistant.io/docs/scripts/editor/"
|
||||
href="${documentationUrl(this.hass, "/docs/scripts/editor/")}"
|
||||
target="_blank"
|
||||
rel="noreferrer"
|
||||
>
|
||||
|
@@ -9,6 +9,7 @@ import "../../../components/ha-code-editor";
|
||||
import { showAlertDialog } from "../../../dialogs/generic/show-dialog-box";
|
||||
import { EventsMixin } from "../../../mixins/events-mixin";
|
||||
import LocalizeMixin from "../../../mixins/localize-mixin";
|
||||
import { documentationUrl } from "../../../util/documentation-url";
|
||||
import "../../../styles/polymer-ha-style";
|
||||
import "./event-subscribe-card";
|
||||
import "./events-list";
|
||||
@@ -61,7 +62,7 @@ class HaPanelDevEvent extends EventsMixin(LocalizeMixin(PolymerElement)) {
|
||||
<p>
|
||||
[[localize( 'ui.panel.developer-tools.tabs.events.description' )]]
|
||||
<a
|
||||
href="https://www.home-assistant.io/docs/configuration/events/"
|
||||
href="[[_computeDocumentationUrl(hass)]]"
|
||||
target="_blank"
|
||||
rel="noreferrer"
|
||||
>
|
||||
@@ -149,6 +150,10 @@ class HaPanelDevEvent extends EventsMixin(LocalizeMixin(PolymerElement)) {
|
||||
}
|
||||
}
|
||||
|
||||
_computeDocumentationUrl(hass) {
|
||||
return documentationUrl(hass, "/docs/configuration/events/");
|
||||
}
|
||||
|
||||
_computeValidJSON(parsedJSON) {
|
||||
return parsedJSON !== ERROR_SENTINEL;
|
||||
}
|
||||
|
@@ -19,6 +19,7 @@ import {
|
||||
} from "../../../data/ws-templates";
|
||||
import { haStyle } from "../../../resources/styles";
|
||||
import { HomeAssistant } from "../../../types";
|
||||
import { documentationUrl } from "../../../util/documentation-url";
|
||||
|
||||
const DEMO_TEMPLATE = `{## Imitate available variables: ##}
|
||||
{% set my_test_json = {
|
||||
@@ -107,7 +108,10 @@ class HaPanelDevTemplate extends LitElement {
|
||||
</li>
|
||||
<li>
|
||||
<a
|
||||
href="https://home-assistant.io/docs/configuration/templating/"
|
||||
href="${documentationUrl(
|
||||
this.hass,
|
||||
"/docs/configuration/templating/"
|
||||
)}"
|
||||
target="_blank"
|
||||
rel="noreferrer"
|
||||
>
|
||||
|
@@ -285,7 +285,7 @@ class HaLogbook extends LitElement {
|
||||
.narrow .entry {
|
||||
flex-direction: column;
|
||||
line-height: 1.5;
|
||||
padding: 8px;
|
||||
padding: 8px 0;
|
||||
}
|
||||
|
||||
.narrow .icon-message ha-icon {
|
||||
|
@@ -5,9 +5,9 @@ import {
|
||||
CSSResult,
|
||||
customElement,
|
||||
html,
|
||||
internalProperty,
|
||||
LitElement,
|
||||
property,
|
||||
internalProperty,
|
||||
PropertyValues,
|
||||
query,
|
||||
TemplateResult,
|
||||
@@ -191,7 +191,7 @@ class HuiAlarmPanelCard extends LitElement implements LovelaceCard {
|
||||
: html`
|
||||
<paper-input
|
||||
id="alarmCode"
|
||||
.label=${this.hass.localize('ui.card.alarm_control_panel.code')}
|
||||
.label=${this.hass.localize("ui.card.alarm_control_panel.code")}
|
||||
type="password"
|
||||
></paper-input>
|
||||
`}
|
||||
|
@@ -63,6 +63,9 @@ export class HuiButtonCard extends LitElement implements LovelaceCard {
|
||||
|
||||
return {
|
||||
type: "button",
|
||||
tap_action: {
|
||||
action: "toggle",
|
||||
},
|
||||
entity: foundEntities[0] || "",
|
||||
};
|
||||
}
|
||||
|
@@ -115,7 +115,10 @@ export class HuiDialogEditCard extends LitElement implements HassDialog {
|
||||
const oldConfig = changedProps.get("_cardConfig") as LovelaceCardConfig;
|
||||
|
||||
if (oldConfig?.type !== this._cardConfig!.type) {
|
||||
this._documentationURL = getCardDocumentationURL(this._cardConfig!.type);
|
||||
this._documentationURL = getCardDocumentationURL(
|
||||
this.hass,
|
||||
this._cardConfig!.type
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -1,14 +1,17 @@
|
||||
import {
|
||||
getCustomCardEntry,
|
||||
CUSTOM_TYPE_PREFIX,
|
||||
getCustomCardEntry,
|
||||
} from "../../../data/lovelace_custom_cards";
|
||||
import { HomeAssistant } from "../../../types";
|
||||
import { documentationUrl } from "../../../util/documentation-url";
|
||||
|
||||
const coreDocumentationURLBase = "https://www.home-assistant.io/lovelace/";
|
||||
|
||||
export const getCardDocumentationURL = (type: string): string | undefined => {
|
||||
export const getCardDocumentationURL = (
|
||||
hass: HomeAssistant,
|
||||
type: string
|
||||
): string | undefined => {
|
||||
if (type.startsWith(CUSTOM_TYPE_PREFIX)) {
|
||||
return getCustomCardEntry(type)?.documentationURL;
|
||||
}
|
||||
|
||||
return `${coreDocumentationURLBase}${type}`;
|
||||
return `${documentationUrl(hass, "/lovelace/")}${type}`;
|
||||
};
|
||||
|
@@ -1,33 +1,32 @@
|
||||
import "@material/mwc-button";
|
||||
import "@material/mwc-icon-button/mwc-icon-button";
|
||||
import { mdiHelpCircle } from "@mdi/js";
|
||||
import {
|
||||
css,
|
||||
CSSResult,
|
||||
customElement,
|
||||
html,
|
||||
internalProperty,
|
||||
LitElement,
|
||||
property,
|
||||
internalProperty,
|
||||
TemplateResult,
|
||||
} from "lit-element";
|
||||
import { mdiHelpCircle } from "@mdi/js";
|
||||
import { fireEvent } from "../../../common/dom/fire_event";
|
||||
import { computeRTLDirection } from "../../../common/util/compute_rtl";
|
||||
import "../../../components/ha-circular-progress";
|
||||
import "../../../components/ha-dialog";
|
||||
import "../../../components/ha-formfield";
|
||||
import "../../../components/ha-svg-icon";
|
||||
import "../../../components/ha-switch";
|
||||
import "../../../components/ha-yaml-editor";
|
||||
import type { HassDialog } from "../../../dialogs/make-dialog-manager";
|
||||
import { haStyleDialog } from "../../../resources/styles";
|
||||
import type { HomeAssistant } from "../../../types";
|
||||
import { documentationUrl } from "../../../util/documentation-url";
|
||||
import type { SaveDialogParams } from "./show-save-config-dialog";
|
||||
import { computeRTLDirection } from "../../../common/util/compute_rtl";
|
||||
import type { HassDialog } from "../../../dialogs/make-dialog-manager";
|
||||
import "../../../components/ha-switch";
|
||||
import "../../../components/ha-formfield";
|
||||
import "../../../components/ha-yaml-editor";
|
||||
import "../../../components/ha-svg-icon";
|
||||
import "../../../components/ha-dialog";
|
||||
import "../../../components/ha-circular-progress";
|
||||
|
||||
const EMPTY_CONFIG = { views: [] };
|
||||
|
||||
const coreDocumentationURLBase = "https://www.home-assistant.io/lovelace/";
|
||||
|
||||
@customElement("hui-dialog-save-config")
|
||||
export class HuiSaveConfig extends LitElement implements HassDialog {
|
||||
@property({ attribute: false }) public hass?: HomeAssistant;
|
||||
@@ -68,7 +67,7 @@ export class HuiSaveConfig extends LitElement implements HassDialog {
|
||||
"ui.panel.lovelace.editor.save_config.header"
|
||||
)}<a
|
||||
class="header_button"
|
||||
href=${coreDocumentationURLBase}
|
||||
href=${documentationUrl(this.hass!, "/lovelace/")}
|
||||
title=${this.hass!.localize("ui.panel.lovelace.menu.help")}
|
||||
target="_blank"
|
||||
rel="noreferrer"
|
||||
|
@@ -53,6 +53,7 @@ import { showVoiceCommandDialog } from "../../dialogs/voice-command-dialog/show-
|
||||
import "../../layouts/ha-app-layout";
|
||||
import { haStyle } from "../../resources/styles";
|
||||
import type { HomeAssistant } from "../../types";
|
||||
import { documentationUrl } from "../../util/documentation-url";
|
||||
import { swapView } from "./editor/config-util";
|
||||
import { showEditLovelaceDialog } from "./editor/lovelace-editor/show-edit-lovelace-dialog";
|
||||
import { showEditViewDialog } from "./editor/view-editor/show-edit-view-dialog";
|
||||
@@ -136,7 +137,7 @@ class HUIRoot extends LitElement {
|
||||
</mwc-icon-button>
|
||||
</div>
|
||||
<a
|
||||
href="https://www.home-assistant.io/lovelace/"
|
||||
href="${documentationUrl(this.hass, "/lovelace/")}"
|
||||
rel="noreferrer"
|
||||
class="menu-link"
|
||||
target="_blank"
|
||||
@@ -266,7 +267,7 @@ class HUIRoot extends LitElement {
|
||||
`
|
||||
: ""}
|
||||
<a
|
||||
href="https://www.home-assistant.io/lovelace/"
|
||||
href="${documentationUrl(this.hass, "/lovelace/")}"
|
||||
rel="noreferrer"
|
||||
class="menu-link"
|
||||
target="_blank"
|
||||
|
@@ -4,10 +4,12 @@ import {
|
||||
CSSResult,
|
||||
customElement,
|
||||
html,
|
||||
LitElement,
|
||||
internalProperty,
|
||||
LitElement,
|
||||
TemplateResult,
|
||||
} from "lit-element";
|
||||
import { DOMAINS_TOGGLE } from "../../../common/const";
|
||||
import { computeDomain } from "../../../common/entity/compute_domain";
|
||||
import "../../../components/ha-icon";
|
||||
import { ActionHandlerEvent } from "../../../data/lovelace";
|
||||
import { HomeAssistant } from "../../../types";
|
||||
@@ -31,11 +33,16 @@ export class HuiButtonRow extends LitElement implements LovelaceRow {
|
||||
throw new Error("Error in card configuration. No name specified.");
|
||||
}
|
||||
|
||||
if (!config.tap_action) {
|
||||
throw new Error("Error in card configuration. No action specified.");
|
||||
}
|
||||
|
||||
this._config = config;
|
||||
this._config = {
|
||||
tap_action: {
|
||||
action:
|
||||
config.entity && DOMAINS_TOGGLE.has(computeDomain(config.entity))
|
||||
? "toggle"
|
||||
: "more-info",
|
||||
},
|
||||
hold_action: { action: "more-info" },
|
||||
...config,
|
||||
};
|
||||
}
|
||||
|
||||
protected render(): TemplateResult {
|
||||
|
@@ -17,7 +17,7 @@ import { supportsFeature } from "../../common/entity/supports-feature";
|
||||
import "../../components/ha-menu-button";
|
||||
import "../../components/media-player/ha-media-player-browse";
|
||||
import {
|
||||
BROWSER_SOURCE,
|
||||
BROWSER_PLAYER,
|
||||
MediaPickedEvent,
|
||||
SUPPORT_BROWSE_MEDIA,
|
||||
} from "../../data/media-player";
|
||||
@@ -36,7 +36,7 @@ class PanelMediaBrowser extends LitElement {
|
||||
|
||||
// @ts-ignore
|
||||
@LocalStorage("mediaBrowseEntityId", true)
|
||||
private _entityId = BROWSER_SOURCE;
|
||||
private _entityId = BROWSER_PLAYER;
|
||||
|
||||
protected render(): TemplateResult {
|
||||
const stateObj = this._entityId
|
||||
@@ -44,7 +44,7 @@ class PanelMediaBrowser extends LitElement {
|
||||
: undefined;
|
||||
|
||||
const title =
|
||||
this._entityId === BROWSER_SOURCE
|
||||
this._entityId === BROWSER_PLAYER
|
||||
? `${this.hass.localize("ui.components.media-browser.web-browser")}`
|
||||
: stateObj?.attributes.friendly_name
|
||||
? `${stateObj?.attributes.friendly_name}`
|
||||
@@ -95,7 +95,7 @@ class PanelMediaBrowser extends LitElement {
|
||||
ev: HASSDomEvent<MediaPickedEvent>
|
||||
): Promise<void> {
|
||||
const item = ev.detail.item;
|
||||
if (this._entityId === BROWSER_SOURCE) {
|
||||
if (this._entityId === BROWSER_PLAYER) {
|
||||
const resolvedUrl: any = await this.hass.callWS({
|
||||
type: "media_source/resolve_media",
|
||||
media_content_id: item.media_content_id,
|
||||
|
@@ -1,3 +1,5 @@
|
||||
import "@material/mwc-list/mwc-list";
|
||||
import "@material/mwc-list/mwc-list-item";
|
||||
import "@polymer/paper-item/paper-item";
|
||||
import "@polymer/paper-listbox/paper-listbox";
|
||||
import {
|
||||
@@ -13,7 +15,8 @@ import { fireEvent } from "../../common/dom/fire_event";
|
||||
import { computeStateName } from "../../common/entity/compute_state_name";
|
||||
import { compare } from "../../common/string/compare";
|
||||
import { createCloseHeading } from "../../components/ha-dialog";
|
||||
import { BROWSER_SOURCE } from "../../data/media-player";
|
||||
import { UNAVAILABLE_STATES } from "../../data/entity";
|
||||
import { BROWSER_PLAYER } from "../../data/media-player";
|
||||
import { haStyleDialog } from "../../resources/styles";
|
||||
import type { HomeAssistant } from "../../types";
|
||||
import type { SelectMediaPlayerDialogParams } from "./show-select-media-source-dialog";
|
||||
@@ -49,30 +52,31 @@ export class HuiDialogSelectMediaPlayer extends LitElement {
|
||||
)}
|
||||
@closed=${this.closeDialog}
|
||||
>
|
||||
<paper-listbox
|
||||
attr-for-selected="itemName"
|
||||
@iron-select=${this._selectSource}
|
||||
><paper-item .itemName=${BROWSER_SOURCE}
|
||||
<mwc-list>
|
||||
<mwc-list-item .player=${BROWSER_PLAYER} @click=${this._selectPlayer}
|
||||
>${this.hass.localize(
|
||||
"ui.components.media-browser.web-browser"
|
||||
)}</paper-item
|
||||
)}</mwc-list-item
|
||||
>
|
||||
${this._params.mediaSources
|
||||
.sort((a, b) => compare(computeStateName(a), computeStateName(b)))
|
||||
.map(
|
||||
(source) => html`
|
||||
<paper-item .itemName=${source.entity_id}
|
||||
>${computeStateName(source)}</paper-item
|
||||
<mwc-list-item
|
||||
.disabled=${UNAVAILABLE_STATES.includes(source.state)}
|
||||
.player=${source.entity_id}
|
||||
@click=${this._selectPlayer}
|
||||
>${computeStateName(source)}</mwc-list-item
|
||||
>
|
||||
`
|
||||
)}
|
||||
</paper-listbox>
|
||||
</mwc-list>
|
||||
</ha-dialog>
|
||||
`;
|
||||
}
|
||||
|
||||
private _selectSource(ev: CustomEvent): void {
|
||||
const entityId = ev.detail.item.itemName;
|
||||
private _selectPlayer(ev: CustomEvent): void {
|
||||
const entityId = (ev.currentTarget as any).player;
|
||||
this._params!.sourceSelectedCallback(entityId);
|
||||
this.closeDialog();
|
||||
}
|
||||
@@ -84,8 +88,8 @@ export class HuiDialogSelectMediaPlayer extends LitElement {
|
||||
ha-dialog {
|
||||
--dialog-content-padding: 0 24px 20px;
|
||||
}
|
||||
paper-item {
|
||||
cursor: pointer;
|
||||
mwc-list-item[disabled] {
|
||||
--mdc-theme-text-primary-on-background: var(--disabled-text-color);
|
||||
}
|
||||
`,
|
||||
];
|
||||
|
@@ -1,4 +1,5 @@
|
||||
import "@material/mwc-button/mwc-button";
|
||||
import "@material/mwc-icon-button/mwc-icon-button";
|
||||
import { mdiDelete } from "@mdi/js";
|
||||
import {
|
||||
css,
|
||||
@@ -80,14 +81,14 @@ class HaLongLivedTokens extends LitElement {
|
||||
)
|
||||
)}
|
||||
</div>
|
||||
<mwc-button
|
||||
<mwc-icon-button
|
||||
.token=${token}
|
||||
.disabled=${token.is_current}
|
||||
.title=${this.hass.localize(`ui.common.delete`)}
|
||||
@click=${this._deleteToken}
|
||||
>
|
||||
<ha-svg-icon .path=${mdiDelete}></ha-svg-icon>
|
||||
</mwc-button>
|
||||
</mwc-icon-button>
|
||||
</ha-settings-row>`
|
||||
)}
|
||||
</div>
|
||||
@@ -185,6 +186,9 @@ class HaLongLivedTokens extends LitElement {
|
||||
mwc-button {
|
||||
--mdc-theme-primary: var(--primary-color);
|
||||
}
|
||||
mwc-icon-button {
|
||||
color: var(--primary-text-color);
|
||||
}
|
||||
`,
|
||||
];
|
||||
}
|
||||
|
@@ -201,7 +201,7 @@ class HaPanelProfile extends LitElement {
|
||||
}
|
||||
|
||||
private _customizeSidebar() {
|
||||
fireEvent(this, "hass-edit-sidebar");
|
||||
fireEvent(this, "hass-edit-sidebar", { editMode: true });
|
||||
}
|
||||
|
||||
private async _refreshRefreshTokens() {
|
||||
|
@@ -1,24 +1,25 @@
|
||||
import "@material/mwc-button/mwc-button";
|
||||
import "@polymer/paper-input/paper-input";
|
||||
import "@polymer/paper-item/paper-item";
|
||||
import "@polymer/paper-listbox/paper-listbox";
|
||||
import "../../components/ha-paper-dropdown-menu";
|
||||
import { TemplateResult, html } from "lit-html";
|
||||
import {
|
||||
property,
|
||||
css,
|
||||
CSSResult,
|
||||
customElement,
|
||||
internalProperty,
|
||||
LitElement,
|
||||
customElement,
|
||||
property,
|
||||
PropertyValues,
|
||||
CSSResult,
|
||||
css,
|
||||
} from "lit-element";
|
||||
import { HomeAssistant } from "../../types";
|
||||
import "../../components/ha-settings-row";
|
||||
import { html, TemplateResult } from "lit-html";
|
||||
import { fireEvent } from "../../common/dom/fire_event";
|
||||
import "../../components/ha-formfield";
|
||||
import "../../components/ha-paper-dropdown-menu";
|
||||
import "../../components/ha-radio";
|
||||
import "@polymer/paper-input/paper-input";
|
||||
import type { HaRadio } from "../../components/ha-radio";
|
||||
import "@material/mwc-button/mwc-button";
|
||||
import "../../components/ha-settings-row";
|
||||
import { HomeAssistant } from "../../types";
|
||||
import { documentationUrl } from "../../util/documentation-url";
|
||||
|
||||
@customElement("ha-pick-theme-row")
|
||||
export class HaPickThemeRow extends LitElement {
|
||||
@@ -45,7 +46,10 @@ export class HaPickThemeRow extends LitElement {
|
||||
? this.hass.localize("ui.panel.profile.themes.error_no_theme")
|
||||
: ""}
|
||||
<a
|
||||
href="https://www.home-assistant.io/integrations/frontend/#defining-themes"
|
||||
href="${documentationUrl(
|
||||
this.hass!,
|
||||
"/integrations/frontend/#defining-themes"
|
||||
)}"
|
||||
target="_blank"
|
||||
rel="noreferrer"
|
||||
>
|
||||
|
@@ -7,6 +7,7 @@ import { isComponentLoaded } from "../../common/config/is_component_loaded";
|
||||
import { pushSupported } from "../../components/ha-push-notifications-toggle";
|
||||
import LocalizeMixin from "../../mixins/localize-mixin";
|
||||
import "../../components/ha-settings-row";
|
||||
import { documentationUrl } from "../../util/documentation-url";
|
||||
|
||||
/*
|
||||
* @appliesMixin LocalizeMixin
|
||||
@@ -26,7 +27,7 @@ class HaPushNotificationsRow extends LocalizeMixin(PolymerElement) {
|
||||
<span slot="description">
|
||||
[[_description(_platformLoaded, _pushSupported)]]
|
||||
<a
|
||||
href="https://www.home-assistant.io/integrations/html5"
|
||||
href="[[_computeDocumentationUrl(hass)]]"
|
||||
target="_blank"
|
||||
rel="noreferrer"
|
||||
>[[localize('ui.panel.profile.push_notifications.link_promo')]]</a
|
||||
@@ -59,6 +60,10 @@ class HaPushNotificationsRow extends LocalizeMixin(PolymerElement) {
|
||||
};
|
||||
}
|
||||
|
||||
_computeDocumentationUrl(hass) {
|
||||
return documentationUrl(hass, "/integrations/html5");
|
||||
}
|
||||
|
||||
_compPlatformLoaded(hass) {
|
||||
return isComponentLoaded(hass, "notify.html5");
|
||||
}
|
||||
|
@@ -1,4 +1,4 @@
|
||||
import "@material/mwc-button/mwc-button";
|
||||
import "@material/mwc-icon-button/mwc-icon-button";
|
||||
import { mdiDelete } from "@mdi/js";
|
||||
import "@polymer/paper-tooltip/paper-tooltip";
|
||||
import {
|
||||
@@ -83,14 +83,14 @@ class HaRefreshTokens extends LitElement {
|
||||
)}
|
||||
</paper-tooltip>`
|
||||
: ""}
|
||||
<mwc-button
|
||||
<mwc-icon-button
|
||||
.token=${token}
|
||||
.disabled=${token.is_current}
|
||||
.title=${this.hass.localize(`ui.common.delete`)}
|
||||
@click=${this._deleteToken}
|
||||
>
|
||||
<ha-svg-icon .path=${mdiDelete}></ha-svg-icon>
|
||||
</mwc-button>
|
||||
</mwc-icon-button>
|
||||
</div>
|
||||
</ha-settings-row>`
|
||||
)
|
||||
@@ -135,8 +135,8 @@ class HaRefreshTokens extends LitElement {
|
||||
ha-settings-row {
|
||||
padding: 0;
|
||||
}
|
||||
mwc-button {
|
||||
--mdc-theme-primary: var(--primary-color);
|
||||
mwc-icon-button {
|
||||
color: var(--primary-text-color);
|
||||
}
|
||||
`,
|
||||
];
|
||||
|
@@ -18,8 +18,22 @@ export const sortableStyles = css`
|
||||
animation-duration: 0.33s;
|
||||
}
|
||||
|
||||
#sortable a {
|
||||
height: 48px;
|
||||
display: flex;
|
||||
}
|
||||
|
||||
#sortable {
|
||||
outline: none;
|
||||
display: block !important;
|
||||
}
|
||||
|
||||
.hidden-panel {
|
||||
display: flex !important;
|
||||
}
|
||||
|
||||
.sortable-fallback {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.sortable-ghost {
|
||||
@@ -54,13 +68,25 @@ export const sortableStyles = css`
|
||||
}
|
||||
}
|
||||
|
||||
.show-panel,
|
||||
.hide-panel {
|
||||
display: none;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
--mdc-icon-button-size: 40px;
|
||||
}
|
||||
|
||||
.hide-panel {
|
||||
top: 4px;
|
||||
right: 8px;
|
||||
}
|
||||
|
||||
:host([expanded]) .hide-panel {
|
||||
display: block;
|
||||
}
|
||||
|
||||
:host([expanded]) .show-panel {
|
||||
display: inline-flex;
|
||||
}
|
||||
|
||||
|
@@ -16,13 +16,11 @@ declare global {
|
||||
interface HASSDomEvents {
|
||||
"hass-dock-sidebar": DockSidebarParams;
|
||||
"hass-default-panel": DefaultPanelParams;
|
||||
"hass-edit-sidebar": undefined;
|
||||
}
|
||||
// for add event listener
|
||||
interface HTMLElementEventMap {
|
||||
"hass-dock-sidebar": HASSDomEvent<DockSidebarParams>;
|
||||
"hass-default-panel": HASSDomEvent<DefaultPanelParams>;
|
||||
"hass-edit-sidebar": undefined;
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -374,6 +374,12 @@
|
||||
"video_not_supported": "Your browser does not support the video element.",
|
||||
"media_not_supported": "The Browser Media Player does not support this type of media",
|
||||
"media_browsing_error": "Media Browsing Error",
|
||||
"learn_adding_local_media": "Learn more about adding media in the {documentation}.",
|
||||
"local_media_files": "Place your video, audio and image files in the media directory to be able to browse and play them in the browser or on supported media players.",
|
||||
"documentation": "documentation",
|
||||
"no_local_media_found": "No local media found",
|
||||
"no_media_folder": "It looks like you have not yet created a media directory.",
|
||||
"setup_local_help": "Check the {documentation} on how to setup local media.",
|
||||
"class": {
|
||||
"album": "Album",
|
||||
"app": "App",
|
||||
@@ -2150,7 +2156,7 @@
|
||||
"save": "Save",
|
||||
"unsaved_changes": "Unsaved changes",
|
||||
"saved": "Saved",
|
||||
"confirm_remove_config_title": "Are you sure you want to remove your Lovelace UI configuration? We will automatically generate your Lovelace UI views with your areas and devices.",
|
||||
"confirm_remove_config_title": "Are you sure you want to remove your Lovelace UI configuration?",
|
||||
"confirm_remove_config_text": "We will automatically generate your Lovelace UI views with your areas and devices if you remove your Lovelace UI configuration.",
|
||||
"confirm_unsaved_changes": "You have unsaved changes, are you sure you want to exit?",
|
||||
"confirm_unsaved_comments": "Your configuration contains comment(s), these will not be saved. Do you want to continue?",
|
||||
|
11
src/util/documentation-url.ts
Normal file
11
src/util/documentation-url.ts
Normal file
@@ -0,0 +1,11 @@
|
||||
import { HomeAssistant } from "../types";
|
||||
|
||||
export const documentationUrl = (hass: HomeAssistant, path: string) => {
|
||||
return `https://${
|
||||
hass.config.version.includes("b")
|
||||
? "rc"
|
||||
: hass.config.version.includes("dev")
|
||||
? "next"
|
||||
: "www"
|
||||
}.home-assistant.io${path}`;
|
||||
};
|
19
test-mocha/util/generate-documentation-url.spec.ts
Normal file
19
test-mocha/util/generate-documentation-url.spec.ts
Normal file
@@ -0,0 +1,19 @@
|
||||
import * as assert from "assert";
|
||||
import { documentationUrl } from "../../src/util/documentation-url";
|
||||
|
||||
describe("Generate documentation URL", function () {
|
||||
it("Generate documentation url for stable", function () {
|
||||
assert.strictEqual(
|
||||
// @ts-ignore
|
||||
documentationUrl({ config: { version: "1.0.0" } }, "/blog"),
|
||||
"https://www.home-assistant.io/blog"
|
||||
);
|
||||
});
|
||||
it("Generate documentation url for rc", function () {
|
||||
assert.strictEqual(
|
||||
// @ts-ignore
|
||||
documentationUrl({ config: { version: "1.0.0b0" } }, "/blog"),
|
||||
"https://rc.home-assistant.io/blog"
|
||||
);
|
||||
});
|
||||
});
|
@@ -440,6 +440,7 @@
|
||||
"common": {
|
||||
"cancel": "Kanselleer",
|
||||
"close": "Sluit",
|
||||
"copied": "Copiato",
|
||||
"loading": "Laai tans",
|
||||
"save": "Stoor"
|
||||
},
|
||||
@@ -470,6 +471,25 @@
|
||||
"loading_history": "Laai tans toestandsgeskiedenis ...",
|
||||
"no_history_found": "Geen toestandsgeskiedenis gevind nie."
|
||||
},
|
||||
"media-browser": {
|
||||
"class": {
|
||||
"composer": "Compositore",
|
||||
"directory": "Libreria",
|
||||
"episode": "Episodio",
|
||||
"game": "Gioco",
|
||||
"genre": "Genere",
|
||||
"image": "Immagine",
|
||||
"movie": "Film",
|
||||
"music": "Musica",
|
||||
"playlist": "Playlist",
|
||||
"podcast": "Podcast",
|
||||
"season": "Stagione",
|
||||
"track": "Traccia",
|
||||
"tv_show": "Programma televisivo",
|
||||
"url": "Url",
|
||||
"video": "Video"
|
||||
}
|
||||
},
|
||||
"related-items": {
|
||||
"area": "Area",
|
||||
"automation": "Deel van die volgende outomatisering",
|
||||
|
@@ -507,6 +507,7 @@
|
||||
"cancel": "Cancel·la",
|
||||
"close": "Tanca",
|
||||
"continue": "Continua",
|
||||
"copied": "Copiat",
|
||||
"delete": "Elimina",
|
||||
"error_required": "Obligatori",
|
||||
"loading": "Carregant",
|
||||
|
@@ -507,6 +507,7 @@
|
||||
"cancel": "Zrušit",
|
||||
"close": "Zavřít",
|
||||
"continue": "Pokračovat",
|
||||
"copied": "Zkopírováno",
|
||||
"delete": "Smazat",
|
||||
"error_required": "Povinné",
|
||||
"loading": "Načítání",
|
||||
@@ -2691,7 +2692,7 @@
|
||||
},
|
||||
"raw_editor": {
|
||||
"confirm_remove_config_text": "Pokud odeberete konfiguraci uživatelského rozhraní Lovelace, automaticky vygenerujeme pohledy Lovelace s vašimi oblastmi a zařízeními.",
|
||||
"confirm_remove_config_title": "Opravdu chcete odstranit nastavení Lovelace? Automaticky vygenerujeme vaše zobrazení Lovelace s vašimi oblastmi a zařízeními.",
|
||||
"confirm_remove_config_title": "Opravdu chcete odstranit nastavení uživatelského rozhraní Lovelace?",
|
||||
"confirm_unsaved_changes": "Máte neuložené změny. Opravdu chcete odejít?",
|
||||
"confirm_unsaved_comments": "Vaše konfigurace obsahuje komentáře, které se neuloží. Chcete pokračovat?",
|
||||
"error_invalid_config": "Vaše konfigurace není platná: {error}",
|
||||
|
@@ -419,6 +419,7 @@
|
||||
"unlock": "Entriegeln"
|
||||
},
|
||||
"media_player": {
|
||||
"media_next_track": "Weiter",
|
||||
"media_play": "Abspielen",
|
||||
"sound_mode": "Sound-Modus",
|
||||
"source": "Quelle",
|
||||
@@ -501,6 +502,8 @@
|
||||
"back": "Zurück",
|
||||
"cancel": "Abbrechen",
|
||||
"close": "Schließen",
|
||||
"continue": "Weiter",
|
||||
"copied": "Kopiert",
|
||||
"delete": "Löschen",
|
||||
"error_required": "Benötigt",
|
||||
"loading": "Laden",
|
||||
@@ -557,8 +560,26 @@
|
||||
"loading_history": "Lade Zustandsverlauf...",
|
||||
"no_history_found": "Kein Zustandsverlauf gefunden."
|
||||
},
|
||||
"logbook": {
|
||||
"entries_not_found": "Keine Logbucheinträge gefunden."
|
||||
},
|
||||
"media-browser": {
|
||||
"audio_not_supported": "Ihr Browser unterstützt das Audioelement nicht.",
|
||||
"choose-source": "Quelle wählen",
|
||||
"class": {
|
||||
"album": "Album",
|
||||
"app": "App",
|
||||
"directory": "Bibliothek",
|
||||
"episode": "Episode",
|
||||
"game": "Spiel",
|
||||
"movie": "Film",
|
||||
"music": "Musik",
|
||||
"playlist": "Wiedergabeliste",
|
||||
"podcast": "Podcast",
|
||||
"season": "Episode",
|
||||
"url": "URL",
|
||||
"video": "Video"
|
||||
},
|
||||
"content-type": {
|
||||
"album": "Album",
|
||||
"artist": "Künstler",
|
||||
@@ -566,7 +587,13 @@
|
||||
"playlist": "Playlist",
|
||||
"server": "Server"
|
||||
},
|
||||
"play": "Abspielen"
|
||||
"no_items": "Keine Einträge",
|
||||
"play": "Abspielen",
|
||||
"video_not_supported": "Ihr Browser unterstützt das Videoelement nicht."
|
||||
},
|
||||
"picture-upload": {
|
||||
"label": "Bild",
|
||||
"unsupported_format": "Nicht unterstütztes Format, bitte wähle ein JPEG-, PNG- oder GIF-Bild."
|
||||
},
|
||||
"related-items": {
|
||||
"area": "Bereich",
|
||||
@@ -672,8 +699,10 @@
|
||||
"yaml_not_editable": "Die Einstellungen dieser Entität können nicht über die Benutzeroberfläche bearbeitet werden. Nur über die Benutzeroberfläche eingerichtete Entitäten können über die Benutzeroberfläche konfiguriert werden."
|
||||
},
|
||||
"more_info_control": {
|
||||
"details": "Details",
|
||||
"dismiss": "Dialog ausblenden",
|
||||
"edit": "Entität bearbeiten",
|
||||
"history": "Verlauf",
|
||||
"person": {
|
||||
"create_zone": "Zone vom aktuellen Standort erstellen"
|
||||
},
|
||||
@@ -849,7 +878,13 @@
|
||||
"type_select": "Aktionstyp",
|
||||
"type": {
|
||||
"choose": {
|
||||
"label": "Auswählen"
|
||||
"add_option": "Option hinzufügen",
|
||||
"conditions": "Bedingungen",
|
||||
"default": "Standard-Aktionen",
|
||||
"label": "Auswählen",
|
||||
"option": "Option {number}",
|
||||
"remove_option": "Option entfernen",
|
||||
"sequence": "Aktionen"
|
||||
},
|
||||
"condition": {
|
||||
"label": "Bedingung"
|
||||
@@ -872,6 +907,7 @@
|
||||
},
|
||||
"repeat": {
|
||||
"label": "Wiederholen",
|
||||
"sequence": "Aktionen",
|
||||
"type_select": "Wiederholungstyp",
|
||||
"type": {
|
||||
"count": {
|
||||
@@ -1044,6 +1080,7 @@
|
||||
"value_template": "Wert-Template (optional)"
|
||||
},
|
||||
"state": {
|
||||
"attribute": "Attribut (Optional)",
|
||||
"for": "Für",
|
||||
"from": "Von",
|
||||
"label": "Zustand",
|
||||
@@ -1068,7 +1105,8 @@
|
||||
},
|
||||
"time": {
|
||||
"at": "Um",
|
||||
"label": "Zeit"
|
||||
"label": "Zeit",
|
||||
"type_value": "Feste Zeit"
|
||||
},
|
||||
"webhook": {
|
||||
"label": "Webhook",
|
||||
@@ -1091,6 +1129,8 @@
|
||||
"add_automation": "Automatisierung hinzufügen",
|
||||
"delete_automation": "Automatisierung löschen",
|
||||
"delete_confirm": "Bist du sicher, dass du diese Automatisierung löschen möchtest?",
|
||||
"duplicate": "Duplizieren",
|
||||
"duplicate_automation": "Automatisierung kopieren",
|
||||
"edit_automation": "Automatisierung bearbeiten",
|
||||
"header": "Automatisierungseditor",
|
||||
"headers": {
|
||||
@@ -1314,6 +1354,7 @@
|
||||
}
|
||||
},
|
||||
"devices": {
|
||||
"add_prompt": "Mit diesem Gerät wurden noch keine {name} hinzugefügt. Du kannst eins hinzufügen, indem du auf den + Knopf drückst.",
|
||||
"automation": {
|
||||
"actions": {
|
||||
"caption": "Wenn etwas ausgelöst wird ..."
|
||||
@@ -1477,6 +1518,7 @@
|
||||
},
|
||||
"integrations": {
|
||||
"add_integration": "Integration hinzufügen",
|
||||
"attention": "Aufmerksamkeit erforderlich",
|
||||
"caption": "Integrationen",
|
||||
"config_entry": {
|
||||
"area": "In {area}",
|
||||
@@ -1495,6 +1537,8 @@
|
||||
"no_device": "Entitäten ohne Geräte",
|
||||
"no_devices": "Diese Integration hat keine Geräte.",
|
||||
"options": "Optionen",
|
||||
"reload": "Neu laden",
|
||||
"reload_confirm": "Die Integration wurde neu geladen",
|
||||
"rename": "Umbenennen",
|
||||
"restart_confirm": "Starte Home Assistant neu, um das Entfernen dieser Integration abzuschließen",
|
||||
"settings_button": "Einstellungen für {integration} bearbeiten",
|
||||
@@ -1543,6 +1587,7 @@
|
||||
"none_found_detail": "Passe deine Suchkriterien an.",
|
||||
"note_about_integrations": "Nicht alle Integrationen können über die Benutzeroberfläche konfiguriert werden.",
|
||||
"note_about_website_reference": "Weitere Informationen findest du auf der ",
|
||||
"reconfigure": "Neu konfigurieren",
|
||||
"rename_dialog": "Bearbeite den Namen dieses Konfigurationseintrags",
|
||||
"rename_input_label": "Eintragsname",
|
||||
"search": "Such-Integrationen"
|
||||
@@ -1653,8 +1698,11 @@
|
||||
"topic": "Topic"
|
||||
},
|
||||
"ozw": {
|
||||
"button": "Konfigurieren",
|
||||
"common": {
|
||||
"instance": "Instanz"
|
||||
"instance": "Instanz",
|
||||
"network": "Netzwerk",
|
||||
"zwave": "Z-Wave"
|
||||
},
|
||||
"device_info": {
|
||||
"zwave_info": "Z-Wave Infos"
|
||||
@@ -1664,12 +1712,27 @@
|
||||
"select_instance": "Instanz auswählen"
|
||||
},
|
||||
"network_status": {
|
||||
"details": {
|
||||
"driverremoved": "Der Treiber wurde entfernt",
|
||||
"driverreset": "Der Treiber wurde zurückgesetzt",
|
||||
"ready": "Bereit zum Verbinden",
|
||||
"started": "Verbindung mit MQTT hergestellt",
|
||||
"starting": "Verbinde zu MQTT"
|
||||
},
|
||||
"offline": "Offline",
|
||||
"online": "Online",
|
||||
"starting": "Startet",
|
||||
"unknown": "Unbekannt"
|
||||
},
|
||||
"network": {
|
||||
"header": "Netzwerkverwaltung"
|
||||
},
|
||||
"nodes_table": {
|
||||
"failed": "Fehlgeschlagen",
|
||||
"manufacturer": "Hersteller"
|
||||
},
|
||||
"refresh_node": {
|
||||
"start_refresh_button": "Aktualisierung starten"
|
||||
}
|
||||
},
|
||||
"person": {
|
||||
@@ -1798,6 +1861,7 @@
|
||||
"core": "Ort & Anpassungen neu laden",
|
||||
"group": "Gruppen neu laden",
|
||||
"heading": "Neuladen der YAML-Konfiguration",
|
||||
"homekit": "HomeKit neu laden",
|
||||
"input_boolean": "Eingabe-Booleans neu laden",
|
||||
"input_datetime": "Eingabe-Datums- und Zeitfelder neu laden",
|
||||
"input_number": "Eingabenummern neu laden",
|
||||
@@ -1807,6 +1871,7 @@
|
||||
"person": "Personen neu laden",
|
||||
"scene": "Szenen neu laden",
|
||||
"script": "Skripte neu laden",
|
||||
"telegram": "Telegram-Benachrichtigungsdienste neu laden",
|
||||
"zone": "Zonen neu laden"
|
||||
},
|
||||
"server_management": {
|
||||
@@ -1828,12 +1893,18 @@
|
||||
},
|
||||
"tags": {
|
||||
"detail": {
|
||||
"name": "Name"
|
||||
"delete": "Löschen",
|
||||
"description": "Beschreibung",
|
||||
"name": "Name",
|
||||
"update": "Aktualisieren"
|
||||
},
|
||||
"edit": "Bearbeiten",
|
||||
"headers": {
|
||||
"last_scanned": "Zuletzt gescannt",
|
||||
"name": "Name"
|
||||
},
|
||||
"never_scanned": "Nie gescannt"
|
||||
"never_scanned": "Nie gescannt",
|
||||
"write": "Schreiben"
|
||||
},
|
||||
"users": {
|
||||
"add_user": {
|
||||
@@ -1841,6 +1912,7 @@
|
||||
"create": "Benutzerkonto anlegen",
|
||||
"name": "Name",
|
||||
"password": "Passwort",
|
||||
"password_confirm": "Passwort bestätigen",
|
||||
"username": "Benutzername"
|
||||
},
|
||||
"caption": "Benutzer",
|
||||
@@ -1857,7 +1929,9 @@
|
||||
"group": "Gruppe",
|
||||
"id": "ID",
|
||||
"name": "Name",
|
||||
"new_password": "Neues Passwort",
|
||||
"owner": "Besitzer",
|
||||
"password_changed": "Das Passwort wurde geändert!",
|
||||
"system_generated": "System generiert",
|
||||
"system_generated_users_not_editable": "Systemgenerierte Benutzer können nicht aktualisiert werden.",
|
||||
"system_generated_users_not_removable": "Vom System generierte Benutzer können nicht entfernt werden.",
|
||||
@@ -2728,6 +2802,9 @@
|
||||
"submit": "Absenden"
|
||||
},
|
||||
"current_user": "Sie sind derzeit als {fullName} angemeldet.",
|
||||
"customize_sidebar": {
|
||||
"button": "Bearbeiten"
|
||||
},
|
||||
"dashboard": {
|
||||
"description": "Wähle ein Standard-Dashboard für dieses Gerät.",
|
||||
"dropdown_label": "Dashboard",
|
||||
@@ -2750,6 +2827,7 @@
|
||||
"confirm_delete": "Möchten Sie den Zugriffs-Token für {name} wirklich löschen?",
|
||||
"create": "Token erstellen",
|
||||
"create_failed": "Das Zugriffs-Token konnte nicht erstellt werden.",
|
||||
"created": "Erstellt am {date}",
|
||||
"created_at": "Erstellt am {date}",
|
||||
"delete_failed": "Fehler beim Löschen des Zugriffs-Tokens.",
|
||||
"description": "Erstelle langlebige Zugriffstoken, damit deine Skripte mit deiner Home Assistant-Instanz interagieren können. Jedes Token ist ab der Erstellung für 10 Jahre gültig. Die folgenden langlebigen Zugriffstoken sind derzeit aktiv.",
|
||||
@@ -2757,6 +2835,7 @@
|
||||
"header": "Langlebige Zugangs-Token",
|
||||
"last_used": "Zuletzt verwendet am {date} in {location}",
|
||||
"learn_auth_requests": "Erfahre, wie du authentifizierte Anfragen stellen kannst.",
|
||||
"name": "Name",
|
||||
"not_used": "Wurde noch nie benutzt",
|
||||
"prompt_copy_token": "Kopiere deinen Zugangs-Token. Er wird nicht wieder angezeigt werden.",
|
||||
"prompt_name": "Name?"
|
||||
@@ -2808,7 +2887,8 @@
|
||||
"error_no_theme": "Keine Themen verfügbar.",
|
||||
"header": "Thema",
|
||||
"link_promo": "Erfahre mehr über Themen",
|
||||
"primary_color": "Primärfarbe"
|
||||
"primary_color": "Primärfarbe",
|
||||
"reset": "zurücksetzen"
|
||||
},
|
||||
"vibrate": {
|
||||
"description": "Aktiviere oder deaktiviere die Vibration an diesem Gerät, wenn du Geräte steuerst.",
|
||||
@@ -2822,6 +2902,7 @@
|
||||
}
|
||||
},
|
||||
"sidebar": {
|
||||
"done": "fertig",
|
||||
"external_app_configuration": "App-Konfiguration",
|
||||
"sidebar_toggle": "Seitenleiste umschalten"
|
||||
}
|
||||
|
@@ -604,15 +604,21 @@
|
||||
"playlist": "Playlist",
|
||||
"server": "Server"
|
||||
},
|
||||
"documentation": "documentation",
|
||||
"learn_adding_local_media": "Learn more about adding media in the {documentation}.",
|
||||
"local_media_files": "Place your video, audio and image files in the media directory to be able to browse and play them in the browser or on supported media players.",
|
||||
"media_browsing_error": "Media Browsing Error",
|
||||
"media_not_supported": "The Browser Media Player does not support this type of media",
|
||||
"media_player": "Media Player",
|
||||
"media-player-browser": "Media Player Browser",
|
||||
"no_items": "No items",
|
||||
"no_local_media_found": "No local media found",
|
||||
"no_media_folder": "It looks like you have not yet created a media directory.",
|
||||
"pick": "Pick",
|
||||
"pick-media": "Pick Media",
|
||||
"play": "Play",
|
||||
"play-media": "Play Media",
|
||||
"setup_local_help": "Check the {documentation} on how to setup local media.",
|
||||
"video_not_supported": "Your browser does not support the video element.",
|
||||
"web-browser": "Web Browser"
|
||||
},
|
||||
@@ -2692,7 +2698,7 @@
|
||||
},
|
||||
"raw_editor": {
|
||||
"confirm_remove_config_text": "We will automatically generate your Lovelace UI views with your areas and devices if you remove your Lovelace UI configuration.",
|
||||
"confirm_remove_config_title": "Are you sure you want to remove your Lovelace UI configuration? We will automatically generate your Lovelace UI views with your areas and devices.",
|
||||
"confirm_remove_config_title": "Are you sure you want to remove your Lovelace UI configuration?",
|
||||
"confirm_unsaved_changes": "You have unsaved changes, are you sure you want to exit?",
|
||||
"confirm_unsaved_comments": "Your configuration contains comment(s), these will not be saved. Do you want to continue?",
|
||||
"error_invalid_config": "Your configuration is not valid: {error}",
|
||||
|
@@ -507,6 +507,7 @@
|
||||
"cancel": "Cancelar",
|
||||
"close": "Cerrar",
|
||||
"continue": "Continuar",
|
||||
"copied": "Copiado",
|
||||
"delete": "Eliminar",
|
||||
"error_required": "Obligatorio",
|
||||
"loading": "Cargando",
|
||||
@@ -567,11 +568,27 @@
|
||||
"loading_history": "Cargando historial de estado...",
|
||||
"no_history_found": "No se encontró historial de estado."
|
||||
},
|
||||
"logbook": {
|
||||
"entries_not_found": "No se han encontrado entradas en el registro."
|
||||
},
|
||||
"media-browser": {
|
||||
"audio_not_supported": "Tu navegador no es compatible con el elemento de audio.",
|
||||
"choose_player": "Elige reproductor",
|
||||
"choose-source": "Elige la fuente",
|
||||
"class": {
|
||||
"album": "Álbum",
|
||||
"app": "Aplicación",
|
||||
"artist": "Artista",
|
||||
"channel": "Canal",
|
||||
"composer": "Compositor",
|
||||
"contributing_artist": "Artista colaborador",
|
||||
"directory": "Biblioteca",
|
||||
"episode": "Episodio",
|
||||
"game": "Juego",
|
||||
"genre": "Género",
|
||||
"image": "Imagen",
|
||||
"movie": "Película",
|
||||
"music": "Música",
|
||||
"playlist": "Lista de reproducción",
|
||||
"podcast": "Podcast",
|
||||
"season": "Temporada",
|
||||
@@ -712,6 +729,7 @@
|
||||
},
|
||||
"more_info_control": {
|
||||
"controls": "Controles",
|
||||
"details": "Detalles",
|
||||
"dismiss": "Descartar diálogo",
|
||||
"edit": "Editar entidad",
|
||||
"history": "Historial",
|
||||
@@ -2357,9 +2375,14 @@
|
||||
"title": "Estados"
|
||||
},
|
||||
"templates": {
|
||||
"all_listeners": "Esta plantilla escucha todos los eventos de cambio de estado.",
|
||||
"description": "Las plantillas se muestran utilizando el motor de plantillas Jinja2 con algunas extensiones específicas de Home Assistant.",
|
||||
"domain": "Dominio",
|
||||
"editor": "Editor de plantillas",
|
||||
"entity": "Entidad",
|
||||
"jinja_documentation": "Documentación de plantilla Jinja2",
|
||||
"listeners": "Esta plantilla escucha los siguientes eventos de cambio de estado:",
|
||||
"no_listeners": "Esta plantilla no escucha ningún evento de cambio de estado y no se actualizará automáticamente.",
|
||||
"reset": "Reiniciar a la plantilla de demostración",
|
||||
"template_extensions": "Extensiones de plantilla de Home Assistant",
|
||||
"title": "Plantillas",
|
||||
@@ -2946,6 +2969,11 @@
|
||||
"submit": "Enviar"
|
||||
},
|
||||
"current_user": "Has iniciado sesión como {fullName}.",
|
||||
"customize_sidebar": {
|
||||
"button": "Editar",
|
||||
"description": "También puedes mantener pulsada la cabecera de la barra lateral para activar el modo de edición.",
|
||||
"header": "Cambiar el orden y ocultar elementos de la barra lateral"
|
||||
},
|
||||
"dashboard": {
|
||||
"description": "Selecciona un panel de control predeterminado para este dispositivo.",
|
||||
"dropdown_label": "Panel de control",
|
||||
@@ -2968,6 +2996,7 @@
|
||||
"confirm_delete": "¿Estás seguro de que quieres eliminar el token de acceso para {name}?",
|
||||
"create": "Crear Token",
|
||||
"create_failed": "No se ha podido crear el token de acceso.",
|
||||
"created": "Creado en {date}",
|
||||
"created_at": "Creado el {date}",
|
||||
"delete_failed": "Error al eliminar el token de acceso.",
|
||||
"description": "Crea tokens de acceso de larga duración para permitir que tus scripts interactúen con tu instancia de Home Assistant. Cada token será válido por 10 años desde la creación. Los siguientes tokens de acceso de larga duración están actualmente activos.",
|
||||
@@ -2975,9 +3004,10 @@
|
||||
"header": "Tokens de acceso de larga duración",
|
||||
"last_used": "Último uso el {date} desde {location}",
|
||||
"learn_auth_requests": "Aprende cómo realizar solicitudes autenticadas.",
|
||||
"name": "Nombre",
|
||||
"not_used": "Nunca ha sido usado",
|
||||
"prompt_copy_token": "Copia tu token de acceso. No se mostrará de nuevo.",
|
||||
"prompt_name": "¿Nombre?"
|
||||
"prompt_name": "Dale un nombre al token"
|
||||
},
|
||||
"mfa_setup": {
|
||||
"close": "Cerrar",
|
||||
@@ -3041,6 +3071,7 @@
|
||||
}
|
||||
},
|
||||
"sidebar": {
|
||||
"done": "Hecho",
|
||||
"external_app_configuration": "Configuración de la aplicación",
|
||||
"sidebar_toggle": "Alternar barra lateral"
|
||||
}
|
||||
|
@@ -507,6 +507,7 @@
|
||||
"cancel": "Annuler",
|
||||
"close": "Fermer",
|
||||
"continue": "Continuer",
|
||||
"copied": "Copié",
|
||||
"delete": "Supprimer",
|
||||
"error_required": "Obligatoire",
|
||||
"loading": "Chargement",
|
||||
@@ -567,10 +568,35 @@
|
||||
"loading_history": "Chargement de l'historique des valeurs ...",
|
||||
"no_history_found": "Aucun historique des valeurs trouvé."
|
||||
},
|
||||
"logbook": {
|
||||
"entries_not_found": "Aucune entrée trouvée dans le journal."
|
||||
},
|
||||
"media-browser": {
|
||||
"audio_not_supported": "Votre navigateur ne prend pas en charge l'élément audio.",
|
||||
"choose_player": "Choisissez le lecteur",
|
||||
"choose-source": "Choisissez la source",
|
||||
"class": {
|
||||
"album": "Album",
|
||||
"app": "App",
|
||||
"artist": "Artiste",
|
||||
"channel": "Canal",
|
||||
"composer": "Compositeur",
|
||||
"contributing_artist": "Artiste collaborateur",
|
||||
"directory": "Bibliothèque",
|
||||
"episode": "Épisode",
|
||||
"game": "Jeu",
|
||||
"genre": "Genre",
|
||||
"image": "Image",
|
||||
"movie": "Film",
|
||||
"music": "Musique",
|
||||
"playlist": "Liste de lecture",
|
||||
"podcast": "Podcast",
|
||||
"season": "Saison",
|
||||
"track": "Piste",
|
||||
"tv_show": "Émission de télévision",
|
||||
"url": "Url",
|
||||
"video": "Vidéo"
|
||||
},
|
||||
"content-type": {
|
||||
"album": "Album",
|
||||
"artist": "Artiste",
|
||||
@@ -703,6 +729,7 @@
|
||||
},
|
||||
"more_info_control": {
|
||||
"controls": "Contrôles",
|
||||
"details": "Détails",
|
||||
"dismiss": "Fermer la fenêtre de dialogue",
|
||||
"edit": "Modifier l'entité",
|
||||
"history": "Historique",
|
||||
@@ -934,9 +961,12 @@
|
||||
"service_data": "Données du service"
|
||||
},
|
||||
"wait_for_trigger": {
|
||||
"label": "Attendre le déclencheur"
|
||||
"continue_timeout": "Continuer à l'expiration du délai",
|
||||
"label": "Attendre le déclencheur",
|
||||
"timeout": "Délai d'expiration (optionnel)"
|
||||
},
|
||||
"wait_template": {
|
||||
"continue_timeout": "Continuer à l'expiration du délai",
|
||||
"label": "Attendre",
|
||||
"timeout": "Délai d'expiration (optionnel)",
|
||||
"wait_template": "Template d'attente"
|
||||
@@ -1000,7 +1030,9 @@
|
||||
"time": {
|
||||
"after": "Après",
|
||||
"before": "Avant",
|
||||
"label": "Heure"
|
||||
"label": "Heure",
|
||||
"type_input": "Valeur d'une aide de date/heure",
|
||||
"type_value": "Temps fixe"
|
||||
},
|
||||
"zone": {
|
||||
"entity": "Entité avec localisation",
|
||||
@@ -1567,6 +1599,7 @@
|
||||
"reload_restart_confirm": "Redémarrer Home Assistant pour finaliser le rechargement de cette intégration",
|
||||
"rename": "Renommer",
|
||||
"restart_confirm": "Redémarrer Home Assistant pour terminer la suppression de cette intégration",
|
||||
"services": "{count} {count, plural,\n one {service}\n other {services}\n}",
|
||||
"settings_button": "Modifier les paramètres pour {integration}",
|
||||
"system_options": "Options système",
|
||||
"system_options_button": "Options système pour {integration}",
|
||||
@@ -2342,9 +2375,14 @@
|
||||
"title": "États"
|
||||
},
|
||||
"templates": {
|
||||
"all_listeners": "Ce modèle écoute tous les événements de changement d'état.",
|
||||
"description": "Les modèles sont rendus à l'aide du moteur de modèles Jinja2 avec certaines extensions spécifiques de Home Assistant.",
|
||||
"domain": "Domaine",
|
||||
"editor": "Éditeur de modèles",
|
||||
"entity": "Entité",
|
||||
"jinja_documentation": "Documentation de modèle Jinja2",
|
||||
"listeners": "Ce modèle écoute les événements de changement d'état suivants:",
|
||||
"no_listeners": "Ce modèle n'écoute aucun événement de changement d'état et ne sera pas mis à jour automatiquement.",
|
||||
"reset": "Réinitialiser au modèle de démonstration",
|
||||
"template_extensions": "Extensions de modèles de Home Assistant",
|
||||
"title": "Modèle",
|
||||
@@ -2931,6 +2969,11 @@
|
||||
"submit": "Envoyer"
|
||||
},
|
||||
"current_user": "Vous êtes actuellement connecté en tant que {fullName}.",
|
||||
"customize_sidebar": {
|
||||
"button": "Modifier",
|
||||
"description": "Vous pouvez également appuyer et maintenir l'en-tête de la barre latérale pour activer le mode d'édition.",
|
||||
"header": "Modifier l'ordre et masquer les éléments de la barre latérale"
|
||||
},
|
||||
"dashboard": {
|
||||
"description": "Choisissez un tableau de bord par défaut pour cet appareil.",
|
||||
"dropdown_label": "Tableau de bord",
|
||||
@@ -2953,6 +2996,7 @@
|
||||
"confirm_delete": "Êtes-vous sûr de vouloir supprimer le jeton d'accès de {name} ?",
|
||||
"create": "Créer un jeton",
|
||||
"create_failed": "Impossible de créer le jeton d'accès.",
|
||||
"created": "Créé le {date}",
|
||||
"created_at": "Créé le {date}",
|
||||
"delete_failed": "Impossible de supprimer le jeton d'accès.",
|
||||
"description": "Créez des jetons d'accès de longue durée pour permettre à vos scripts d'interagir avec votre instance de Home Assistant. Chaque jeton sera valable 10 ans à compter de sa création. Les jetons d'accès longue durée suivants sont actuellement actifs.",
|
||||
@@ -2960,6 +3004,7 @@
|
||||
"header": "Jetons d'accès de longue durée",
|
||||
"last_used": "Dernière utilisation le {date} à partir de {location}",
|
||||
"learn_auth_requests": "Apprenez comment faire des demandes authentifiées.",
|
||||
"name": "Nom",
|
||||
"not_used": "N'a jamais été utilisé",
|
||||
"prompt_copy_token": "Copiez votre jeton d'accès. Il ne sera plus affiché à nouveau.",
|
||||
"prompt_name": "Nom ?"
|
||||
@@ -3026,6 +3071,7 @@
|
||||
}
|
||||
},
|
||||
"sidebar": {
|
||||
"done": "Terminé",
|
||||
"external_app_configuration": "Configuration de l'application",
|
||||
"sidebar_toggle": "Activer la barre latérale"
|
||||
}
|
||||
|
@@ -507,6 +507,7 @@
|
||||
"cancel": "Annulla",
|
||||
"close": "Chiudi",
|
||||
"continue": "Continua",
|
||||
"copied": "Copiato",
|
||||
"delete": "Elimina",
|
||||
"error_required": "Necessario",
|
||||
"loading": "Caricamento",
|
||||
@@ -574,6 +575,12 @@
|
||||
"audio_not_supported": "Il tuo browser non supporta l'elemento audio.",
|
||||
"choose_player": "Scegli il lettore",
|
||||
"choose-source": "Scegli origine",
|
||||
"class": {
|
||||
"movie": "Film",
|
||||
"music": "Musica",
|
||||
"season": "Stagione",
|
||||
"track": "Traccia dispositivo"
|
||||
},
|
||||
"content-type": {
|
||||
"album": "Album",
|
||||
"artist": "Artista",
|
||||
|
@@ -507,6 +507,7 @@
|
||||
"cancel": "Avbryt",
|
||||
"close": "Lukk",
|
||||
"continue": "Fortsette",
|
||||
"copied": "Kopiert",
|
||||
"delete": "Slett",
|
||||
"error_required": "Nødvendig",
|
||||
"loading": "Laster",
|
||||
@@ -910,7 +911,7 @@
|
||||
"add_option": "Legg til alternativ",
|
||||
"conditions": "Betingelser",
|
||||
"default": "Standard handlinger",
|
||||
"label": "Velge",
|
||||
"label": "Velg",
|
||||
"option": "Alternativ {number}",
|
||||
"remove_option": "Fjern alternativ",
|
||||
"sequence": "Handlinger"
|
||||
@@ -943,11 +944,11 @@
|
||||
"label": "Antall"
|
||||
},
|
||||
"until": {
|
||||
"conditions": "Inntil forholdene",
|
||||
"label": "Før"
|
||||
"conditions": "Inntil betingelser",
|
||||
"label": "Til"
|
||||
},
|
||||
"while": {
|
||||
"conditions": "Mens forholdene",
|
||||
"conditions": "Mens betingelser",
|
||||
"label": "Mens"
|
||||
}
|
||||
}
|
||||
@@ -2043,7 +2044,7 @@
|
||||
"tag_id_placeholder": "Automatisk generert når den er tom",
|
||||
"update": "Oppdater"
|
||||
},
|
||||
"edit": "Redigere",
|
||||
"edit": "Rediger",
|
||||
"headers": {
|
||||
"last_scanned": "Sist skannet",
|
||||
"name": "Navn"
|
||||
@@ -2374,11 +2375,14 @@
|
||||
"title": "Tilstander"
|
||||
},
|
||||
"templates": {
|
||||
"all_listeners": "Denne malen lytter etter alle tilstand endret hendelser.",
|
||||
"description": "Maler blir rendret ved hjelp av Jinja2-malmotoren med noen spesifikke utvidelser for Home Assistant.",
|
||||
"domain": "Domene",
|
||||
"editor": "Maleditor",
|
||||
"entity": "Entitet",
|
||||
"jinja_documentation": "Jinja2 mal dokumentasjon",
|
||||
"listeners": "Denne malen lytter etter følgende tilstand endret hendelser:",
|
||||
"no_listeners": "Denne malen lytter ikke etter noen tilstand endret hendelser og oppdateres ikke automatisk.",
|
||||
"reset": "Tilbakestill til demomal",
|
||||
"template_extensions": "Mal utvidelser for Home Assistant",
|
||||
"title": "Mal",
|
||||
@@ -2626,7 +2630,7 @@
|
||||
}
|
||||
},
|
||||
"cardpicker": {
|
||||
"by_card": "Med kort",
|
||||
"by_card": "Etter kort",
|
||||
"by_entity": "Etter entitet",
|
||||
"custom_card": "Tilpasset",
|
||||
"domain": "Domene",
|
||||
@@ -2688,7 +2692,7 @@
|
||||
},
|
||||
"raw_editor": {
|
||||
"confirm_remove_config_text": "Vi vil automatisk opprette Lovelace-visningene dine med områdene og enhetene dine hvis du fjerner Lovelace-konfigurasjonen.",
|
||||
"confirm_remove_config_title": "Er du sikker på at du vil fjerne Lovelace-konfigurasjonen? Vi vil automatisk opprette Lovelace-visningene dine med områdene og enhetene dine.",
|
||||
"confirm_remove_config_title": "Er du sikker på at du vil fjerne Lovelace UI-konfigurasjonen?",
|
||||
"confirm_unsaved_changes": "Du har ulagrede endringer, er du sikker på at du vil avslutte?",
|
||||
"confirm_unsaved_comments": "Konfigurasjonen din inneholder kommentarer, disse vil ikke bli lagret. Vil du fortsette?",
|
||||
"error_invalid_config": "Konfigurasjonen din er ikke gyldig: {error}",
|
||||
@@ -2966,6 +2970,8 @@
|
||||
},
|
||||
"current_user": "Du er logget inn som {fullName}.",
|
||||
"customize_sidebar": {
|
||||
"button": "Rediger",
|
||||
"description": "Du kan også trykke på og holde nede overskriften på sidepanelet for å aktivere redigeringsmodus.",
|
||||
"header": "Endre rekkefølgen og skjul elementer fra sidepanelet"
|
||||
},
|
||||
"dashboard": {
|
||||
@@ -3001,7 +3007,7 @@
|
||||
"name": "Navn",
|
||||
"not_used": "Har aldri blitt brukt",
|
||||
"prompt_copy_token": "Kopier tilgangstoken. Det blir ikke vist igjen.",
|
||||
"prompt_name": "Navn?"
|
||||
"prompt_name": "Gi tokenet et navn"
|
||||
},
|
||||
"mfa_setup": {
|
||||
"close": "Lukk",
|
||||
|
@@ -507,6 +507,7 @@
|
||||
"cancel": "Annuleren",
|
||||
"close": "Sluiten",
|
||||
"continue": "Ga verder",
|
||||
"copied": "Gekopieerd",
|
||||
"delete": "Verwijderen",
|
||||
"error_required": "Verplicht",
|
||||
"loading": "Bezig met laden",
|
||||
@@ -2374,11 +2375,14 @@
|
||||
"title": "Toestanden"
|
||||
},
|
||||
"templates": {
|
||||
"all_listeners": "Deze template luistert naar alle gebeurtenissen met gewijzigde status.",
|
||||
"description": "Sjablonen worden weergegeven met de Jinja2-sjabloonediter samen met enkele extensies van Home Assistant.",
|
||||
"domain": "Domein",
|
||||
"editor": "Sjabloonediter",
|
||||
"entity": "Entiteit",
|
||||
"jinja_documentation": "Jinja2-sjabloondocumentatie",
|
||||
"listeners": "Deze template luistert naar de volgende gebeurtenissen met gewijzigde status:",
|
||||
"no_listeners": "Deze template luistert niet naar gebeurtenissen met statuswijziging en wordt niet automatisch bijgewerkt.",
|
||||
"reset": "Resetten naar demosjabloon",
|
||||
"template_extensions": "Home Assistant sjabloon extensiesHome Assistant",
|
||||
"title": "Sjablonen",
|
||||
@@ -2688,7 +2692,7 @@
|
||||
},
|
||||
"raw_editor": {
|
||||
"confirm_remove_config_text": "We zullen je Lovelace gebruikersinterface automatisch genereren met je gebieden en apparaten als je de huidige Lovelace gebruikersinterface verwijdert.",
|
||||
"confirm_remove_config_title": "Weet je zeker dat je de huidige Lovelace gebruikersinterface wilt verwijderen? We zullen automatisch een nieuwe Lovelace gebruikersinterface genereren op basis van je gebieden en apparaten.",
|
||||
"confirm_remove_config_title": "Weet u zeker dat u uw Lovelace UI-configuratie wilt verwijderen?",
|
||||
"confirm_unsaved_changes": "Er zijn nog niet-opgeslagen wijzigingen, weet je zeker dat je wilt afsluiten?",
|
||||
"confirm_unsaved_comments": "Uw configuratie bevat opmerkingen, deze worden niet opgeslagen. Wil je doorgaan?",
|
||||
"error_invalid_config": "Uw configuratie is niet geldig: {error}",
|
||||
@@ -3003,7 +3007,7 @@
|
||||
"name": "Naam",
|
||||
"not_used": "Is nog nooit gebruikt",
|
||||
"prompt_copy_token": "Kopieer je toegangstoken. Het wordt niet meer getoond.",
|
||||
"prompt_name": "Naam?"
|
||||
"prompt_name": "Geef het token een naam"
|
||||
},
|
||||
"mfa_setup": {
|
||||
"close": "Sluiten",
|
||||
|
@@ -507,6 +507,7 @@
|
||||
"cancel": "Anuluj",
|
||||
"close": "Zamknij",
|
||||
"continue": "Kontynuuj",
|
||||
"copied": "Skopiowano",
|
||||
"delete": "Usuń",
|
||||
"error_required": "To pole jest wymagane",
|
||||
"loading": "Ładowanie",
|
||||
|
@@ -489,6 +489,7 @@
|
||||
"back": "Înapoi",
|
||||
"cancel": "Revocare",
|
||||
"close": "Închide",
|
||||
"copied": "Copiat",
|
||||
"delete": "Șterge",
|
||||
"error_required": "Necesar",
|
||||
"loading": "Se încarcă",
|
||||
@@ -544,6 +545,32 @@
|
||||
"loading_history": "Încărcarea istoricului de stare ...",
|
||||
"no_history_found": "Nici un istoric de stare nu a fost găsit."
|
||||
},
|
||||
"logbook": {
|
||||
"entries_not_found": "Nu s-au găsit intrări în jurnal."
|
||||
},
|
||||
"media-browser": {
|
||||
"class": {
|
||||
"album": "Album",
|
||||
"app": "Aplicație",
|
||||
"artist": "Artist",
|
||||
"channel": "Canal",
|
||||
"composer": "Compozitor",
|
||||
"contributing_artist": "Artist contribuitor",
|
||||
"directory": "Bibliotecă",
|
||||
"episode": "Episod",
|
||||
"game": "Joc",
|
||||
"genre": "Gen",
|
||||
"image": "Imagine",
|
||||
"movie": "Film",
|
||||
"music": "Muzică",
|
||||
"playlist": "Playlist",
|
||||
"podcast": "Podcast",
|
||||
"season": "Sezon",
|
||||
"tv_show": "Emisiune TV",
|
||||
"url": "Url",
|
||||
"video": "Video"
|
||||
}
|
||||
},
|
||||
"related-items": {
|
||||
"area": "Zonă",
|
||||
"automation": "Parte din următoarele automatizări",
|
||||
@@ -647,6 +674,7 @@
|
||||
"yaml_not_editable": "Setările acestei entități nu se pot edita din interfața grafica. Numai entitățile configurate in interfața grafica sunt configurabile din interfața grafica."
|
||||
},
|
||||
"more_info_control": {
|
||||
"details": "Detalii",
|
||||
"dismiss": "Se respinge dialogul",
|
||||
"edit": "Editează entitatea",
|
||||
"person": {
|
||||
@@ -850,7 +878,13 @@
|
||||
"label": "Cheama serviciu",
|
||||
"service_data": "Date serviciu"
|
||||
},
|
||||
"wait_for_trigger": {
|
||||
"continue_timeout": "Continua la timeout",
|
||||
"label": "Așteptați declanșatorul",
|
||||
"timeout": "Timeout (optional)"
|
||||
},
|
||||
"wait_template": {
|
||||
"continue_timeout": "Continuați la expirare",
|
||||
"label": "Asteptare",
|
||||
"timeout": "Timeout (opțional)",
|
||||
"wait_template": "Sablon Asteptare"
|
||||
@@ -1260,6 +1294,7 @@
|
||||
},
|
||||
"integrations": {
|
||||
"add_integration": "Adăugați integrare",
|
||||
"attention": "Atenție necesară",
|
||||
"caption": "Integrări",
|
||||
"config_entry": {
|
||||
"delete": "Șterge",
|
||||
@@ -1317,6 +1352,7 @@
|
||||
"none": "Nimic nu a fost configurat încă",
|
||||
"none_found": "Nu s-au găsit integrări",
|
||||
"none_found_detail": "Ajustați criteriile de căutare.",
|
||||
"reconfigure": "Reconfigurați",
|
||||
"rename_dialog": "Editați numele acestei intrări de configurare",
|
||||
"rename_input_label": "Introdu nume",
|
||||
"search": "Căutare integrari"
|
||||
@@ -1848,9 +1884,14 @@
|
||||
"title": "Status"
|
||||
},
|
||||
"templates": {
|
||||
"all_listeners": "Acest șablon ascultă următoarele evenimente modificate de stare:",
|
||||
"description": "Șabloanele sunt redate utilizând motorul de șablon Jinja2 cu unele extensii specifice Home Assistant.",
|
||||
"domain": "Domeniu",
|
||||
"editor": "Editor șabloane",
|
||||
"entity": "Entitate",
|
||||
"jinja_documentation": "Șablon documentație Jinja2",
|
||||
"listeners": "Acest șablon ascultă următoarele evenimente modificate de stare:",
|
||||
"no_listeners": "Acest șablon ascultă următoarele evenimente modificate de stare:",
|
||||
"template_extensions": "Șabloane de extensie pentru Home Assistant",
|
||||
"title": "Sabloane",
|
||||
"unknown_error_template": "Sa produs o eroare de randare necunoscută."
|
||||
@@ -2353,6 +2394,11 @@
|
||||
"submit": "Trimite"
|
||||
},
|
||||
"current_user": "În prezent sunteți conectat ca {fullName}.",
|
||||
"customize_sidebar": {
|
||||
"button": "Editeaza",
|
||||
"description": "De asemenea, puteți apăsa și ține apăsat antetul barei laterale pentru a activa modul de editare.",
|
||||
"header": "Schimbați ordinea și ascundeți elementele din bara laterală"
|
||||
},
|
||||
"dashboard": {
|
||||
"description": "Alegeți un tablou de bord implicit pentru acest dispozitiv.",
|
||||
"dropdown_label": "Tablou de bord",
|
||||
@@ -2375,6 +2421,7 @@
|
||||
"confirm_delete": "Sigur doriti sa stergeti tokenul de acces pentru {name}?",
|
||||
"create": "Creaza un Token",
|
||||
"create_failed": "Crearea tokenului de acces eşuată",
|
||||
"created": "Creat in {data}",
|
||||
"created_at": "Creat in {date}",
|
||||
"delete_failed": "Ştergerea tokenului de acces eşuată",
|
||||
"description": "Creați tokenuri de acces cu durată lungă de viață pentru a permite script-urilor dvs. să interacționeze cu instanța dvs. Home Assistant. Fiecare token va fi valabil timp de 10 ani de la creatie. Următoarele tokenuri de acces de lungă durată sunt active la ora actuala.",
|
||||
@@ -2382,6 +2429,7 @@
|
||||
"header": "Tokenuri de acces de lunga durata",
|
||||
"last_used": "Ultima utilizare la {date} din {location}",
|
||||
"learn_auth_requests": "Aflați cum să faceți cereri autentificate.",
|
||||
"name": "Nume",
|
||||
"not_used": "Nu a fost utilizat niciodata",
|
||||
"prompt_copy_token": "Copia token-ul de acces. Acesta nu va fi afișat din nou.",
|
||||
"prompt_name": "Nume?"
|
||||
@@ -2443,6 +2491,7 @@
|
||||
}
|
||||
},
|
||||
"sidebar": {
|
||||
"done": "Terminat",
|
||||
"external_app_configuration": "Configurație aplicație",
|
||||
"sidebar_toggle": "Schimbati bara laterală"
|
||||
}
|
||||
|
@@ -507,6 +507,7 @@
|
||||
"cancel": "Отменить",
|
||||
"close": "Закрыть",
|
||||
"continue": "Продолжить",
|
||||
"copied": "Скопировано",
|
||||
"delete": "Удалить",
|
||||
"error_required": "Обязательное поле",
|
||||
"loading": "Загрузка",
|
||||
@@ -580,6 +581,7 @@
|
||||
"artist": "Исполнитель",
|
||||
"channel": "Канал",
|
||||
"composer": "Композитор",
|
||||
"contributing_artist": "Соисполнитель",
|
||||
"directory": "Библиотека",
|
||||
"episode": "Эпизод",
|
||||
"game": "Игра",
|
||||
@@ -2373,11 +2375,14 @@
|
||||
"title": "Состояния"
|
||||
},
|
||||
"templates": {
|
||||
"all_listeners": "Этот шаблон отслеживает все события изменения состояния.",
|
||||
"description": "Здесь Вы можете протестировать поведение шаблонов. В Home Assistant используется шаблонизатор Jinja2 с некоторыми специальными расширениями.",
|
||||
"domain": "Домен",
|
||||
"editor": "Редактор шаблонов",
|
||||
"entity": "Объект",
|
||||
"jinja_documentation": "Узнайте больше о шаблонизаторе Jinja2",
|
||||
"listeners": "Этот шаблон отслеживает следующие события изменения состояния:",
|
||||
"no_listeners": "Этот шаблон не отслеживает события изменения состояния и не обновляется автоматически.",
|
||||
"reset": "Вернуться к демонстрационному шаблону",
|
||||
"template_extensions": "Узнайте больше о шаблонах Home Assistant",
|
||||
"title": "Шаблоны",
|
||||
@@ -2687,7 +2692,7 @@
|
||||
},
|
||||
"raw_editor": {
|
||||
"confirm_remove_config_text": "Если Вы очистите конфигурацию этой панели Lovelace, карточки с Вашими устройствами и помещениями будут создаваться автоматически.",
|
||||
"confirm_remove_config_title": "Очистить конфигурацию?",
|
||||
"confirm_remove_config_title": "Вы уверены, что хотите очистить конфигурацию пользовательского интерфейса Lovelace?",
|
||||
"confirm_unsaved_changes": "У вас есть несохраненные изменения. Вы уверены, что хотите выйти?",
|
||||
"confirm_unsaved_comments": "Ваша конфигурация содержит комментарии, они не будут сохранены. Вы хотите продолжить?",
|
||||
"error_invalid_config": "Конфигурация недействительна: {error}",
|
||||
|
@@ -505,6 +505,7 @@
|
||||
"back": "Tillbaka",
|
||||
"cancel": "Avbryt",
|
||||
"close": "Stäng",
|
||||
"continue": "Fortsätt",
|
||||
"delete": "Radera",
|
||||
"error_required": "Krävs",
|
||||
"loading": "Läser in",
|
||||
@@ -688,8 +689,11 @@
|
||||
"crop": "Beskär"
|
||||
},
|
||||
"more_info_control": {
|
||||
"controls": "Kontroller",
|
||||
"details": "Detaljer",
|
||||
"dismiss": "Avfärda",
|
||||
"edit": "Redigera entitet",
|
||||
"history": "Historik",
|
||||
"person": {
|
||||
"create_zone": "Skapa zon från aktuell plats"
|
||||
},
|
||||
@@ -1574,6 +1578,7 @@
|
||||
"none_found_detail": "Justera dina sökkriterier.",
|
||||
"note_about_integrations": "Inte alla integrationer kan konfigureras via användargränssnittet ännu.",
|
||||
"note_about_website_reference": "Fler finns på ",
|
||||
"reconfigure": "Konfigurera om",
|
||||
"rename_dialog": "Redigera namnet på den här konfigurationsposten",
|
||||
"rename_input_label": "Ange namn",
|
||||
"search": "Sök integrationer"
|
||||
@@ -1724,6 +1729,9 @@
|
||||
"session": "Hämtar värden som sällan ändras från noden",
|
||||
"static": "Hämtar statiska värden från enheten"
|
||||
},
|
||||
"nodes_table": {
|
||||
"id": "ID"
|
||||
},
|
||||
"refresh_node": {
|
||||
"complete": "Uppdatering av noden klar",
|
||||
"node_status": "Nodstatus",
|
||||
@@ -1875,6 +1883,7 @@
|
||||
"input_text": "Ladda om inmatningstext",
|
||||
"introduction": "Vissa delar av Home Assistant kan laddas om utan att en omstart krävs. Att trycka på \"ladda om\" innebär att den nuvarande konfiguration inaktiveras och den nya laddas.",
|
||||
"person": "Ladda om personer",
|
||||
"rpi_gpio": "Ladda om Raspberry Pi GPIO-entiteter",
|
||||
"scene": "Ladda om scenarier",
|
||||
"script": "Ladda om skript",
|
||||
"template": "Ladda om mallar för entiteter",
|
||||
@@ -1923,6 +1932,8 @@
|
||||
"create": "Skapa",
|
||||
"name": "Namn",
|
||||
"password": "Lösenord",
|
||||
"password_confirm": "Bekräfta lösenord",
|
||||
"password_not_match": "Lösenorden överensstämmer inte",
|
||||
"username": "Användarnamn"
|
||||
},
|
||||
"caption": "Användare",
|
||||
@@ -1939,7 +1950,9 @@
|
||||
"group": "Grupp",
|
||||
"id": "ID",
|
||||
"name": "Namn",
|
||||
"new_password": "Nytt lösenord",
|
||||
"owner": "Ägare",
|
||||
"password_changed": "Lösenordet har ändrats!",
|
||||
"system_generated": "Skapad av systemet",
|
||||
"system_generated_users_not_editable": "Det gick inte att uppdatera systemgenererade användare.",
|
||||
"system_generated_users_not_removable": "Det går inte att ta bort användare som skapats av systemet.",
|
||||
@@ -2485,6 +2498,8 @@
|
||||
},
|
||||
"cardpicker": {
|
||||
"custom_card": "Anpassad",
|
||||
"domain": "Domän",
|
||||
"entity": "Entitet",
|
||||
"no_description": "Ingen beskrivning finns tillgänglig."
|
||||
},
|
||||
"edit_card": {
|
||||
@@ -2818,6 +2833,9 @@
|
||||
"submit": "Skicka"
|
||||
},
|
||||
"current_user": "Du är inloggad som {fullName}.",
|
||||
"customize_sidebar": {
|
||||
"button": "Redigera"
|
||||
},
|
||||
"dashboard": {
|
||||
"description": "Välj en standardpanel för den här enheten.",
|
||||
"dropdown_label": "Instrumentpanel",
|
||||
|
@@ -507,6 +507,7 @@
|
||||
"cancel": "取消",
|
||||
"close": "關閉",
|
||||
"continue": "繼續",
|
||||
"copied": "已複製",
|
||||
"delete": "刪除",
|
||||
"error_required": "必填",
|
||||
"loading": "讀取中",
|
||||
@@ -2691,7 +2692,7 @@
|
||||
},
|
||||
"raw_editor": {
|
||||
"confirm_remove_config_text": "假如移除 Lovelace UI 設定的話,將自動以區域與設備產生 Lovelace UI 視圖。",
|
||||
"confirm_remove_config_title": "確定要移除 Lovelace UI 設定?將依據區域與設備自動產生 Lovelace UI 視圖。",
|
||||
"confirm_remove_config_title": "確定要移除 Lovelace UI 設定?",
|
||||
"confirm_unsaved_changes": "變更尚未儲存,確定要退出?",
|
||||
"confirm_unsaved_comments": "設定包含命令、將不會被儲存。是否要繼續?",
|
||||
"error_invalid_config": "設定無效:{error}",
|
||||
|
Reference in New Issue
Block a user