kempo 1.0.2 → 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (79) hide show
  1. package/dist/components/Dialog.js +1 -1
  2. package/dist/components/Icon.js +1 -1
  3. package/dist/components/Toggle.js +1 -0
  4. package/dist/index.js +1 -1
  5. package/dist/utils/cli.js +1 -1
  6. package/docs/components/_template.html +0 -4
  7. package/docs/components/card.html +0 -4
  8. package/docs/components/codeeditor.html +0 -4
  9. package/docs/components/component.html +0 -4
  10. package/docs/components/dialog.html +21 -5
  11. package/docs/components/icon.html +18 -4
  12. package/docs/components/import.html +0 -4
  13. package/docs/components/lazycomponent.html +0 -4
  14. package/docs/components/resize.html +0 -4
  15. package/docs/components/show-more.html +0 -4
  16. package/docs/components/sidemenu.html +0 -4
  17. package/docs/components/split.html +0 -4
  18. package/docs/components/tabs.html +0 -4
  19. package/docs/components/toggle.html +152 -0
  20. package/docs/components/websnippeteditor.html +0 -4
  21. package/docs/index.html +0 -4
  22. package/docs/kempo/components/Dialog.js +1 -1
  23. package/docs/kempo/components/Icon.js +1 -1
  24. package/docs/kempo/components/Toggle.js +1 -0
  25. package/docs/kempo/index.js +1 -1
  26. package/docs/kempo/utils/cli.js +1 -1
  27. package/docs/nav-1.inc.html +1 -0
  28. package/docs/nav.inc.html +1 -0
  29. package/docs/styles/_template.html +0 -4
  30. package/docs/styles/borders-spacing.html +0 -4
  31. package/docs/styles/buttons.html +0 -4
  32. package/docs/styles/colors.html +0 -4
  33. package/docs/styles/displays-layouts.html +0 -4
  34. package/docs/styles/embed-1.html +0 -4
  35. package/docs/styles/inputs.html +0 -4
  36. package/docs/styles/tables.html +0 -4
  37. package/docs/styles/typography.html +0 -4
  38. package/package.json +3 -2
  39. package/scripts/build.js +4 -4
  40. package/scripts/docs.js +31 -3
  41. package/src/components/Dialog.js +22 -5
  42. package/src/components/Icon.js +14 -5
  43. package/src/components/Toggle.js +134 -0
  44. package/src/utils/cli.js +33 -2
  45. package/test/index.js +1 -1
  46. package/test/tests/utils/cli.test.js +1 -1
  47. package/docs/kempo/components/Collapse.js +0 -1
  48. package/docs/src/icons/arrow-down-double.svg +0 -1
  49. package/docs/src/icons/arrow-up-double.svg +0 -1
  50. package/docs/src/icons/close.svg +0 -2
  51. package/docs/src/icons/compare.svg +0 -1
  52. package/docs/src/icons/dark-mode.svg +0 -1
  53. package/docs/src/icons/delete.svg +0 -1
  54. package/docs/src/icons/filter-off.svg +0 -1
  55. package/docs/src/icons/filter.svg +0 -1
  56. package/docs/src/icons/light-mode.svg +0 -1
  57. package/docs/src/icons/menu.svg +0 -1
  58. package/docs/src/icons/pause.svg +0 -1
  59. package/docs/src/icons/play.svg +0 -1
  60. package/docs/src/icons/search.svg +0 -1
  61. package/docs/src/icons/settings.svg +0 -1
  62. package/docs/src/icons/storage.svg +0 -1
  63. package/docs/src/icons/trash-x.svg +0 -1
  64. /package/docs/{kempo/icons → icons}/arrow-down-double.svg +0 -0
  65. /package/docs/{kempo/icons → icons}/arrow-up-double.svg +0 -0
  66. /package/docs/{kempo/icons → icons}/close.svg +0 -0
  67. /package/docs/{kempo/icons → icons}/compare.svg +0 -0
  68. /package/docs/{kempo/icons → icons}/dark-mode.svg +0 -0
  69. /package/docs/{kempo/icons → icons}/delete.svg +0 -0
  70. /package/docs/{kempo/icons → icons}/filter-off.svg +0 -0
  71. /package/docs/{kempo/icons → icons}/filter.svg +0 -0
  72. /package/docs/{kempo/icons → icons}/light-mode.svg +0 -0
  73. /package/docs/{kempo/icons → icons}/menu.svg +0 -0
  74. /package/docs/{kempo/icons → icons}/pause.svg +0 -0
  75. /package/docs/{kempo/icons → icons}/play.svg +0 -0
  76. /package/docs/{kempo/icons → icons}/search.svg +0 -0
  77. /package/docs/{kempo/icons → icons}/settings.svg +0 -0
  78. /package/docs/{kempo/icons → icons}/storage.svg +0 -0
  79. /package/docs/{kempo/icons → icons}/trash-x.svg +0 -0
@@ -184,10 +184,6 @@
184
184
 
185
185
 
186
186
  </main>
187
- <script type="module">
188
- import Icon from '../kempo/components/Icon.js';
189
- Icon.pathToIcons = '../kempo/icons';
190
- </script>
191
187
  <script type="module" src="../kempo/components/Import.js"></script>
192
188
  </body>
193
189
  </html>
@@ -103,10 +103,6 @@
103
103
  </div>
104
104
  </main>
105
105
  <div style="height:33vh"></div>
106
- <script type="module">
107
- import Icon from '../kempo/components/Icon.js';
108
- Icon.pathToIcons = '../kempo/icons';
109
- </script>
110
106
  <script type="module" src="../kempo/components/Card.js"></script>
111
107
  <script type="module" src="../kempo/components/Import.js"></script>
112
108
  </body>
@@ -55,10 +55,6 @@
55
55
  <h3>* Notes</h3>
56
56
  <p><i>Additional styles may be added to the example output (borders, spacing, colors) for demonstration.</i></p>
57
57
  </main>
58
- <script type="module">
59
- import Icon from '../kempo/components/Icon.js';
60
- Icon.pathToIcons = '../kempo/icons';
61
- </script>
62
58
  <script type="module" src="../kempo/components/Import.js"></script>
63
59
  <script type="module" src="../kempo/components/Card.js"></script>
64
60
  </body>
@@ -147,10 +147,6 @@
147
147
  <h3>* Notes</h3>
148
148
  <p><i>Additional styles may be added to the example output (borders, spacing, colors) for demonstration.</i></p>
149
149
  </main>
150
- <script type="module">
151
- import Icon from '../kempo/components/Icon.js';
152
- Icon.pathToIcons = '../kempo/icons';
153
- </script>
154
150
  <script type="module" src="../kempo/components/Import.js"></script>
155
151
  </body>
156
152
  </html>
@@ -26,10 +26,6 @@
26
26
  col d-span-3 t-span-6 m-span-12
27
27
  </div>
28
28
  </div>
29
- <script type="module">
30
- import Icon from '../kempo/components/Icon.js';
31
- Icon.pathToIcons = '../kempo/icons';
32
- </script>
33
29
  <script type="module" src="../kempo/components/Import.js"></script>
34
30
  </body>
35
31
  </html>
@@ -79,10 +79,6 @@
79
79
  </div>
80
80
  </div>
81
81
  </main>
82
- <script type="module">
83
- import Icon from '../kempo/components/Icon.js';
84
- Icon.pathToIcons = '../kempo/icons';
85
- </script>
86
82
  <script type="module" src="../kempo/components/Import.js"></script>
87
83
  <script type="module" src="../kempo/components/Card.js"></script>
88
84
  </body>
@@ -132,10 +132,6 @@
132
132
  </div>
133
133
  </main>
134
134
  <div style="height: 33vh"></div>
135
- <script type="module">
136
- import Icon from '../kempo/components/Icon.js';
137
- Icon.pathToIcons = '../kempo/icons';
138
- </script>
139
135
  <script type="module" src="../kempo/components/Import.js"></script>
140
136
  <script type="module" src="../kempo/components/Card.js"></script>
141
137
  <script type="module" src="../kempo/components/Resize.js"></script>
@@ -107,10 +107,6 @@
107
107
  </div>
108
108
  </div>
109
109
  </main>
110
- <script type="module">
111
- import Icon from '../kempo/components/Icon.js';
112
- Icon.pathToIcons = '../kempo/icons';
113
- </script>
114
110
  <script type="module" src="../kempo/components/Import.js"></script>
115
111
  </body>
116
112
  </html>
package/package.json CHANGED
@@ -1,13 +1,14 @@
1
1
  {
2
2
  "name": "kempo",
3
- "version": "1.0.2",
3
+ "version": "1.1.1",
4
4
  "type": "module",
5
5
  "description": "A web component library",
6
6
  "main": "dist/index.js",
7
7
  "scripts": {
8
8
  "test": "node ./scrips/test.js",
9
9
  "build": "node ./scripts/build.js",
10
- "docs": "node ./scripts/build.js && node ./scripts/docs.js"
10
+ "docs": "node ./scripts/docs.js",
11
+ "docs-src": "node ./scripts/docs.js -s"
11
12
  },
12
13
  "author": "Dustin Poissant",
13
14
  "license": "MIT",
package/scripts/build.js CHANGED
@@ -121,11 +121,11 @@ const minifiedKempoHljsCSS = kempoHljsCSS.replace(/\s*\{\s*/g, '{').replace(/\s*
121
121
  console.log('Saving kempo-hljs.css');
122
122
  await fs.writeFile('./dist/kempo-hljs.css', minifiedKempoHljsCSS, 'utf-8');
123
123
 
124
- console.log('Copying dist/ to docs/src/');
125
- await fse.ensureDir('./docs/src/icons'); // will also ensure docs/kempo
124
+ console.log('Copying dist/ to docs/');
125
+ await fse.ensureDir('./docs/icons'); // will also ensure docs/kempo
126
126
  await fse.copy('./dist', './docs/kempo')
127
127
 
128
- console.log('Copying icons/ to docs/src/icons/');
129
- await fse.copy('./icons', './docs/src/icons')
128
+ console.log('Copying icons/ to docs/icons/');
129
+ await fse.copy('./icons', './docs/icons')
130
130
 
131
131
  console.log('Build Complete');
package/scripts/docs.js CHANGED
@@ -1,14 +1,42 @@
1
1
  import express from 'express';
2
- import cli from '../kempo/utils/cli.js';
2
+ import { dirname, join } from 'path';
3
+ import { fileURLToPath } from 'url';
4
+ import {
5
+ getArgs,
6
+ runChildNodeProcess
7
+ } from '../src/utils/cli.js';
8
+
9
+ const __filename = fileURLToPath(import.meta.url);
10
+ const __dirname = dirname(__filename);
11
+
12
+ const options = getArgs({
13
+ p: 'port',
14
+ b: 'build',
15
+ s: 'src'
16
+ });
3
17
 
4
18
  const {
5
- port = 8083
6
- } = cli();
19
+ port = 8083,
20
+ build = true,
21
+ src = false
22
+ } = options;
23
+
24
+ console.log(port, build, src);
25
+
26
+ if(build){
27
+ runChildNodeProcess(join(__dirname, 'build.js'));
28
+ }
7
29
 
8
30
  const app = express();
9
31
 
32
+ if(src){
33
+ app.use('/kempo', express.static('src'));
34
+ app.use('/icons', express.static('icons'));
35
+ }
10
36
  app.use(express.static('docs'));
11
37
 
38
+
39
+
12
40
  app.listen(port, () => {
13
41
  console.log(`Docs Running on: http://localhost:${port}`);
14
42
  });
@@ -156,8 +156,11 @@ export default class Dialog extends Component {
156
156
  ${super.shadowStyles}
157
157
  :host {
158
158
  display: inline;
159
- height: 0;
160
- width: 0;
159
+ height: 1px;
160
+ width: 1px;
161
+ position: fixed; /* The browser seems to sometimes lazy load this if its out of view, this seems to fix it*/
162
+ top: 0;
163
+ left: 0;
161
164
  }
162
165
  :host(:not([opened])){
163
166
  display: none;
@@ -251,11 +254,14 @@ export default class Dialog extends Component {
251
254
  } else {
252
255
  $dialog.innerHTML = contents;
253
256
  }
254
- document.body.appendChild($dialog);
257
+ document.body.prepend($dialog);
258
+ $dialog.open();
255
259
  }
256
- static confirm(text, responseCallback, options){
260
+ static confirm(text, responseCallback, options = {
261
+ title: 'Confirm'
262
+ }){
257
263
  Dialog.create(`
258
- <h5 slot="title" class="pyh px m0">Confirm Event Deletion</h5>
264
+ <h5 slot="title" class="pyh px m0">${options.title}</h5>
259
265
  <p class="p">${text}</p>
260
266
  `, {
261
267
  ...options,
@@ -273,5 +279,16 @@ export default class Dialog extends Component {
273
279
  }
274
280
  });
275
281
  }
282
+ static error(text, responseCallback, options = {
283
+ title: 'Error'
284
+ }){
285
+ Dialog.create(`
286
+ <h5 slot="title" class="pyh px m0 tc-danger">${options.title}</h5>
287
+ <p class="p">${text}</p>
288
+ `, {
289
+ ...options,
290
+ cancelText: 'Ok'
291
+ });
292
+ }
276
293
  }
277
294
  window.customElements.define('k-dialog', Dialog);
@@ -11,14 +11,20 @@ export default class Icon extends Component {
11
11
  async render(force){
12
12
  if(await super.render(force)){
13
13
  if(this.src){
14
- this.innerHTML = await (await fetch(this.src)).text();
15
- this.fixSVG();
14
+ const response = await fetch(this.src);
15
+ if(response.status === 200){
16
+ this.innerHTML = await (response).text();
17
+ this.fixSVG();
18
+ } else if(!this.innerHTML.length) this.innerHTML = Icon.fallback;
16
19
  } else if(this.name){
17
- this.innerHTML = await (await fetch(`${Icon.pathToIcons}/${this.name}.svg`)).text();
18
- this.fixSVG();
20
+ const response = await fetch(`${Icon.pathToIcons}/${this.name}.svg`);
21
+ if(response.status === 200){
22
+ this.innerHTML = await (response).text();
23
+ this.fixSVG();
24
+ } else if(!this.innerHTML.length) this.innerHTML = Icon.fallback;
19
25
  } else {
20
26
  this.rendered = false;
21
- this.innerHTML = '';
27
+ if(!this.innerHTML.length) this.innerHTML = Icon.fallback;
22
28
  }
23
29
  return true;
24
30
  }
@@ -56,5 +62,8 @@ export default class Icon extends Component {
56
62
  ];
57
63
 
58
64
  static pathToIcons = '/icons';
65
+ static fallback = /*html*/`
66
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 -960 960 960"><path fill="currnetColor" d="M480-79q-16 0-30.5-6T423-102L102-423q-11-12-17-26.5T79-480q0-16 6-31t17-26l321-321q12-12 26.5-17.5T480-881q16 0 31 5.5t26 17.5l321 321q12 11 17.5 26t5.5 31q0 16-5.5 30.5T858-423L537-102q-11 11-26 17t-31 6Zm0-80 321-321-321-321-321 321 321 321Zm-40-281h80v-240h-80v240Zm40 120q17 0 28.5-11.5T520-360q0-17-11.5-28.5T480-400q-17 0-28.5 11.5T440-360q0 17 11.5 28.5T480-320Zm0-160Z"/></svg>
67
+ `;
59
68
  }
60
69
  window.customElements.define('k-icon', Icon);
@@ -0,0 +1,134 @@
1
+ import Component from './Component.js';
2
+ import {
3
+ onEvent,
4
+ offEvent,
5
+ dispatchEvent
6
+ } from '../utils/element.js';
7
+
8
+ const clickHandler = Symbol(),
9
+ keyDownHandler = Symbol();
10
+ export default class Toggle extends Component {
11
+ constructor(){
12
+ super();
13
+
14
+ this[clickHandler] = () => {
15
+ this.toggle();
16
+ }
17
+ this[keyDownHandler] = ({code}) => {
18
+ if(['Space', 'Enter'].includes(code)){
19
+ this.toggle();
20
+ }
21
+ }
22
+
23
+ this.registerAttributes({
24
+ value: false
25
+ });
26
+
27
+ this.tabIndex = 0;
28
+ }
29
+ connectedCallback(){
30
+ super.connectedCallback();
31
+ onEvent(this, 'click', this[clickHandler]);
32
+ onEvent(this, 'keydown', this[keyDownHandler]);
33
+ }
34
+ disconnectedCallback(){
35
+ super.disconnectedCallback();
36
+ offEvent(this, 'click', this[clickHandler]);
37
+ offEvent(this, 'keydown', this[keyDownHandler]);
38
+ }
39
+ attributeChangedCallback(n, oV, nV){
40
+ if(n === 'value'){
41
+ dispatchEvent(this, 'change', { value: nV });
42
+ }
43
+ }
44
+
45
+ on(){
46
+ this.value = true;
47
+ dispatchEvent(this, 'on', { value: true });
48
+ }
49
+ off(){
50
+ this.value = false;
51
+ dispatchEvent(this, 'on', { value: false });
52
+ }
53
+ toggle(){
54
+ if(this.value) this.off();
55
+ else this.on();
56
+ dispatchEvent(this, 'toggle', { value: this.value });
57
+ }
58
+
59
+ get shadowTemplate(){
60
+ return /*html*/`
61
+ <div id="switch">
62
+ <div id="handle"></div>
63
+ </div>
64
+ <label id="label">
65
+ ${super.shadowTemplate}
66
+ </label>
67
+ `;
68
+ }
69
+ get shadowStyles(){
70
+ return /*css*/`
71
+ ${super.shadowStyles}
72
+ :host {
73
+ --switch_height: 2rem;
74
+ --switch_width: 3rem;
75
+ --switch_border: 1px solid var(--c_border);
76
+ --switch_background__off: var(--c_bg__alt);
77
+ --switch_background__on: var(--c_success);
78
+ --handle_size__off: 1rem;
79
+ --handle_size__on: 1.5rem;
80
+ --handle_border: 1px solid var(--c_border);
81
+ --handle_background__off: var(--c_border);
82
+ --handle_background__on: white;
83
+
84
+ display: flex;
85
+ align-items: center;
86
+ cursor: pointer;
87
+ margin-bottom: var(--spacer);
88
+ border-radius: 999rem;
89
+ }
90
+ #switch {
91
+ display: flex;
92
+ align-items: center;
93
+ width: var(--switch_width);
94
+ height: var(--switch_height);
95
+ border: var(--switch_border);
96
+ background: var(--switch_background__off);
97
+ border-radius: 999rem;
98
+ margin-right: var(--spacer);
99
+ }
100
+ #handle {
101
+ --margin: calc( (var(--switch_height) - var(--handle_size__off)) / 2);
102
+ width: var(--handle_size__off);
103
+ height: var(--handle_size__off);
104
+ border: var(--handle_border);
105
+ background: var(--handle_background__off);
106
+ border-radius: 999rem;
107
+ transform: translateX(var(--margin));
108
+ transition: width var(--animation_ms, 256ms), height var(--animation_ms, 256ms), transform var(--animation_ms, 256ms);
109
+ }
110
+ :host([value="true"]) #switch {
111
+ background: var(--switch_background__on);
112
+ }
113
+ :host([value="true"]) #handle {
114
+ --m: calc( (var(--switch_height) - var(--handle_size__on)) / 2);
115
+ --d: calc( var(--switch_width) - var(--handle_size__on) - var(--m));
116
+ width: var(--handle_size__on);
117
+ height: var(--handle_size__on);
118
+ background: var(--handle_background__on);
119
+ transform: translateX(var(--d));
120
+ }
121
+ #label {
122
+ display: block;
123
+ flex: 1 1 auto;
124
+ padding: 0;
125
+ }
126
+ `
127
+ }
128
+
129
+ static observedAttributes = [
130
+ ...Component.observedAttributes,
131
+ 'value'
132
+ ];
133
+ }
134
+ window.customElements.define('k-toggle', Toggle);
package/src/utils/cli.js CHANGED
@@ -1,3 +1,5 @@
1
+ import { spawn } from 'child_process';
2
+
1
3
  const args = {};
2
4
  let win = {};
3
5
  if(typeof(window) !== 'undefined'){
@@ -11,7 +13,7 @@ win.log = (...messages) => {
11
13
  }
12
14
  }
13
15
 
14
- export default (shortMap = {
16
+ export const getArgs = (shortMap = {
15
17
  d: 'debug'
16
18
  }) => {
17
19
  let name = '';
@@ -21,7 +23,11 @@ export default (shortMap = {
21
23
  if(values.length === 0){ // flag
22
24
  args[name] = true;
23
25
  } else if(values.length === 1){ // single value
24
- args[name] = values[0];
26
+ if(values[0] === 'false'){
27
+ args[name] = false;
28
+ } else {
29
+ args[name] = values[0];
30
+ }
25
31
  } else { // multiple values
26
32
  args[name] = values;
27
33
  }
@@ -52,3 +58,28 @@ export default (shortMap = {
52
58
  save();
53
59
  return args;
54
60
  }
61
+
62
+ export const runChildProcess = (command) => new Promise((resolve, reject) => {
63
+ const [cmd, ...args] = command.split(' ');
64
+ const child = spawn(cmd, args);
65
+
66
+ child.on('close', (code) => {
67
+ if (code === 0) {
68
+ resolve(`child process exited with code ${code}`);
69
+ } else {
70
+ reject(new Error(`child process exited with code ${code}`));
71
+ }
72
+ });
73
+ });
74
+
75
+ export const runChildNodeProcess = (scriptPath, argsObj = {}) => {
76
+ const args = Object.entries(argsObj).flatMap(([key, value]) => {
77
+ if (value === true) {
78
+ return [`--${key}`];
79
+ } else {
80
+ return [`--${key}`, value];
81
+ }
82
+ });
83
+ const command = `node ${scriptPath} ${args.join(' ')}`;
84
+ return runChildProcess(command);
85
+ };
package/test/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import express from 'express';
2
2
  import fs from 'fs/promises';
3
3
  import path from 'path';
4
- import cli from '../kempo/utils/cli.js';
4
+ import cli from '../src/utils/cli.js';
5
5
 
6
6
  const {
7
7
  port = 8084
@@ -1,4 +1,4 @@
1
- import cli from '../../kempo/utils/cli.js';
1
+ import cli from '../../src/utils/cli.js';
2
2
 
3
3
  export const name = 'CLI Tests';
4
4
  export const description = 'The CLI function returns an object that contains the key-value pairs of command line arguments passed into the scripts, it supports short codes and flags (they will simply have a true value).';
@@ -1 +0,0 @@
1
- import ReactiveLazyComponent from"./ReactiveLazyComponent.js";import{onEvent,offEvent,dispatchEvent}from"../utils/element.js";const toggleClickHandler=Symbol("toggleClickHandler");export default class Collapse extends ReactiveLazyComponent{constructor(){super(),this[toggleClickHandler]=()=>{this.toggle(),this.shadowRoot.getElementById("toggle").focus()},this.registerAttribute("opened",!1)}async render(e){return!!super.render(e)&&(onEvent(this.shadowRoot.getElementById("toggle"),"click",this[toggleClickHandler]),!0)}disconnectedCallback(){offEvent(this.shadowRoot.getElementById("toggle"),"click",this[toggleClickHandler]),super.disconnectedCallback()}attributeChangedCallback(e,t,n){super.attributeChangedCallback(e,t,n),"opened"===e&&dispatchEvent(this,n?"change opened":"change closed")}open(){this.opened=!0}close(){this.opened=!1}toggle(){this.opened=!this.opened,dispatchEvent(this,"toggle")}get shadowTemplate(){return`\n <button\n id="toggle"\n class="no-btn p"\n >\n <slot name="${this.opened?"closeText":"openText"}">${this.opened?"Hide Content":"Show Content"}</slot>\n </button>\n ${this.renderIf(this.opened,`\n <div id="content">\n ${super.shadowTemplate}\n </div>\n `)}\n `}get shadowStyles(){return`\n ${super.shadowStyles}\n :host {\n display: block;\n }\n #toggle {\n width: 100%;\n }\n `}static renderOnChange=["opened"];static observedAttributes=this.renderOnChange}window.customElements.define("k-collapse",Collapse);
@@ -1 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 -960 960 960"><path fill="currentColor" d="M480-200 240-440l56-56 184 183 184-183 56 56-240 240Zm0-240L240-680l56-56 184 183 184-183 56 56-240 240Z"/></svg>
@@ -1 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 -960 960 960"><path fill="currentColor" d="m296-224-56-56 240-240 240 240-56 56-184-183-184 183Zm0-240-56-56 240-240 240 240-56 56-184-183-184 183Z"/></svg>
@@ -1,2 +0,0 @@
1
-
2
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 -960 960 960"><path fill="currentColor" d="m256-200-56-56 224-224-224-224 56-56 224 224 224-224 56 56-224 224 224 224-56 56-224-224-224 224Z"/></svg>
@@ -1 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 -960 960 960"><path fill="currentColor" d="M400-40v-80H200q-33 0-56.5-23.5T120-200v-560q0-33 23.5-56.5T200-840h200v-80h80v880h-80ZM200-240h200v-240L200-240Zm360 120v-360l200 240v-520H560v-80h200q33 0 56.5 23.5T840-760v560q0 33-23.5 56.5T760-120H560Z"/></svg>
@@ -1 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 -960 960 960"><path fill="currentColor" d="M480-120q-150 0-255-105T120-480q0-150 105-255t255-105q14 0 27.5 1t26.5 3q-41 29-65.5 75.5T444-660q0 90 63 153t153 63q55 0 101-24.5t75-65.5q2 13 3 26.5t1 27.5q0 150-105 255T480-120Zm0-80q88 0 158-48.5T740-375q-20 5-40 8t-40 3q-123 0-209.5-86.5T364-660q0-20 3-40t8-40q-78 32-126.5 102T200-480q0 116 82 198t198 82Zm-10-270Z"/></svg>
@@ -1 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 -960 960 960"><path fill="currentColor" d="M280-120q-33 0-56.5-23.5T200-200v-520h-40v-80h200v-40h240v40h200v80h-40v520q0 33-23.5 56.5T680-120H280Zm400-600H280v520h400v-520ZM360-280h80v-360h-80v360Zm160 0h80v-360h-80v360ZM280-720v520-520Z"/></svg>
@@ -1 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 -960 960 960"><path fill="currentColor" d="m592-481-57-57 143-182H353l-80-80h487q25 0 36 22t-4 42L592-481ZM791-56 560-287v87q0 17-11.5 28.5T520-160h-80q-17 0-28.5-11.5T400-200v-247L56-791l56-57 736 736-57 56ZM535-538Z"/></svg>
@@ -1 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 -960 960 960"><path fill="currentColor" d="M440-160q-17 0-28.5-11.5T400-200v-240L168-736q-15-20-4.5-42t36.5-22h560q26 0 36.5 22t-4.5 42L560-440v240q0 17-11.5 28.5T520-160h-80Zm40-308 198-252H282l198 252Zm0 0Z"/></svg>
@@ -1 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 -960 960 960"><path fill="currentColor" d="M480-360q50 0 85-35t35-85q0-50-35-85t-85-35q-50 0-85 35t-35 85q0 50 35 85t85 35Zm0 80q-83 0-141.5-58.5T280-480q0-83 58.5-141.5T480-680q83 0 141.5 58.5T680-480q0 83-58.5 141.5T480-280ZM200-440H40v-80h160v80Zm720 0H760v-80h160v80ZM440-760v-160h80v160h-80Zm0 720v-160h80v160h-80ZM256-650l-101-97 57-59 96 100-52 56Zm492 496-97-101 53-55 101 97-57 59Zm-98-550 97-101 59 57-100 96-56-52ZM154-212l101-97 55 53-97 101-59-57Zm326-268Z"/></svg>
@@ -1 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 -960 960 960"><path fill="currentColor" d="M120-240v-80h720v80H120Zm0-200v-80h720v80H120Zm0-200v-80h720v80H120Z"/></svg>
@@ -1 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48"><path fill="currentColor" d="M28.25 38V10H36v28ZM12 38V10h7.75v28Z"/></svg>
@@ -1 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48"><path fill="currentColor" d="M16 37.85v-28l22 14Z"/></svg>
@@ -1 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 -960 960 960" ><path fill="currentColor" d="M784-120 532-372q-30 24-69 38t-83 14q-109 0-184.5-75.5T120-580q0-109 75.5-184.5T380-840q109 0 184.5 75.5T640-580q0 44-14 83t-38 69l252 252-56 56ZM380-400q75 0 127.5-52.5T560-580q0-75-52.5-127.5T380-760q-75 0-127.5 52.5T200-580q0 75 52.5 127.5T380-400Z"/></svg>
@@ -1 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 -960 960 960"><path fill="currentColor" d="m370-80-16-128q-13-5-24.5-12T307-235l-119 50L78-375l103-78q-1-7-1-13.5v-27q0-6.5 1-13.5L78-585l110-190 119 50q11-8 23-15t24-12l16-128h220l16 128q13 5 24.5 12t22.5 15l119-50 110 190-103 78q1 7 1 13.5v27q0 6.5-2 13.5l103 78-110 190-118-50q-11 8-23 15t-24 12L590-80H370Zm70-80h79l14-106q31-8 57.5-23.5T639-327l99 41 39-68-86-65q5-14 7-29.5t2-31.5q0-16-2-31.5t-7-29.5l86-65-39-68-99 42q-22-23-48.5-38.5T533-694l-13-106h-79l-14 106q-31 8-57.5 23.5T321-633l-99-41-39 68 86 64q-5 15-7 30t-2 32q0 16 2 31t7 30l-86 65 39 68 99-42q22 23 48.5 38.5T427-266l13 106Zm42-180q58 0 99-41t41-99q0-58-41-99t-99-41q-59 0-99.5 41T342-480q0 58 40.5 99t99.5 41Zm-2-140Z"/></svg>
@@ -1 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 -960 960 960"><path fill="currentColor" d="M120-160v-160h720v160H120Zm80-40h80v-80h-80v80Zm-80-440v-160h720v160H120Zm80-40h80v-80h-80v80Zm-80 280v-160h720v160H120Zm80-40h80v-80h-80v80Z"/></svg>
@@ -1 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 -960 960 960"><path fill="currentColor" d="m376-300 104-104 104 104 56-56-104-104 104-104-56-56-104 104-104-104-56 56 104 104-104 104 56 56Zm-96 180q-33 0-56.5-23.5T200-200v-520h-40v-80h200v-40h240v40h200v80h-40v520q0 33-23.5 56.5T680-120H280Zm400-600H280v520h400v-520Zm-400 0v520-520Z"/></svg>
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes