@dssp/dcsp 0.0.2
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.
- package/CHANGELOG.md +8 -0
- package/Dockerfile +16 -0
- package/_index.html +92 -0
- package/assets/favicon.ico +0 -0
- package/assets/helps/index.md +1 -0
- package/assets/images/hatiolab-logo.png +0 -0
- package/assets/images/spinner.png +0 -0
- package/assets/images/user.png +0 -0
- package/assets/manifest/apple-1024.png +0 -0
- package/assets/manifest/apple-120.png +0 -0
- package/assets/manifest/apple-152.png +0 -0
- package/assets/manifest/apple-167.png +0 -0
- package/assets/manifest/apple-180.png +0 -0
- package/assets/manifest/apple-touch-icon.png +0 -0
- package/assets/manifest/badge-128x128.png +0 -0
- package/assets/manifest/chrome-splashscreen-icon-384x384.png +0 -0
- package/assets/manifest/chrome-touch-icon-192x192.png +0 -0
- package/assets/manifest/icon-128x128.png +0 -0
- package/assets/manifest/icon-192x192.png +0 -0
- package/assets/manifest/icon-512x512.png +0 -0
- package/assets/manifest/icon-72x72.png +0 -0
- package/assets/manifest/icon-96x96.png +0 -0
- package/assets/manifest/image-metaog.png +0 -0
- package/assets/manifest/maskable_icon.png +0 -0
- package/assets/manifest/ms-icon-144x144.png +0 -0
- package/assets/manifest/ms-touch-icon-144x144-precomposed.png +0 -0
- package/assets/manifest.json +27 -0
- package/assets/style/home.css +134 -0
- package/config/config.development.js +49 -0
- package/config/config.production.js +83 -0
- package/dist-client/bootstrap.d.ts +5 -0
- package/dist-client/bootstrap.js +179 -0
- package/dist-client/bootstrap.js.map +1 -0
- package/dist-client/icons/menu-icons.d.ts +5 -0
- package/dist-client/icons/menu-icons.js +98 -0
- package/dist-client/icons/menu-icons.js.map +1 -0
- package/dist-client/index.d.ts +0 -0
- package/dist-client/index.js +2 -0
- package/dist-client/index.js.map +1 -0
- package/dist-client/menu.d.ts +1 -0
- package/dist-client/menu.js +4 -0
- package/dist-client/menu.js.map +1 -0
- package/dist-client/pages/sv-user-management.d.ts +4 -0
- package/dist-client/pages/sv-user-management.js +218 -0
- package/dist-client/pages/sv-user-management.js.map +1 -0
- package/dist-client/route.d.ts +1 -0
- package/dist-client/route.js +10 -0
- package/dist-client/route.js.map +1 -0
- package/dist-client/themes/dark.css +51 -0
- package/dist-client/themes/light.css +51 -0
- package/dist-client/tsconfig.tsbuildinfo +1 -0
- package/dist-client/viewparts/menu-tools.d.ts +17 -0
- package/dist-client/viewparts/menu-tools.js +172 -0
- package/dist-client/viewparts/menu-tools.js.map +1 -0
- package/dist-client/viewparts/user-circle.d.ts +5 -0
- package/dist-client/viewparts/user-circle.js +26 -0
- package/dist-client/viewparts/user-circle.js.map +1 -0
- package/dist-server/index.js +1 -0
- package/dist-server/index.js.map +1 -0
- package/dist-server/tsconfig.tsbuildinfo +1 -0
- package/installer/config.production.js +40 -0
- package/installer/docker-compose.yml +37 -0
- package/installer/install.sh +54 -0
- package/installer/migrate.sh +1 -0
- package/installer/start.sh +18 -0
- package/installer/stop.sh +1 -0
- package/installer/upgrade.sh +1 -0
- package/openapi/unstable.yaml +41 -0
- package/package.json +93 -0
- package/schema.graphql +4199 -0
- package/things-factory.config.js +8 -0
- package/translations/en.json +3 -0
- package/translations/ja.json +3 -0
- package/translations/ko.json +3 -0
- package/translations/ms.json +3 -0
- package/translations/zh.json +3 -0
- package/views/auth-page.html +97 -0
- package/views/public/home.html +88 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../client/bootstrap.ts"],"names":[],"mappings":"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","sourcesContent":["import '@operato/i18n/ox-i18n.js'\nimport '@things-factory/notification'\nimport './viewparts/user-circle'\nimport './viewparts/menu-tools'\n\nimport { html } from 'lit-html'\n\nimport { registerDefaultGroups } from '@operato/board'\nimport { navigate, store } from '@operato/shell'\n\nimport { appendViewpart, toggleOverlay, TOOL_POSITION, VIEWPART_POSITION } from '@operato/layout'\nimport { APPEND_APP_TOOL } from '@things-factory/apptool-base/client'\nimport { setupAppToolPart } from '@things-factory/apptool-ui/dist-client'\nimport { hasPrivilege } from '@things-factory/auth-base/dist-client'\nimport { setAuthManagementMenus } from '@things-factory/auth-ui/dist-client'\nimport { ADD_MORENDA } from '@things-factory/more-base/client'\nimport { ADD_SETTING } from '@things-factory/setting-base/dist-client'\n\nconsole.log(\n `%c\n▄▄▄ ▄▄ ▄▄▄ ▄▄▄ \n▓ ▓ ▓ ▓ ▓ ▀ ▓ ▓ \n▓ ▓ ▓ ▀▀▄▄ ▓▀▀ \n▓ ▓ ▓ ▓ ▄ ▓ ▓ \n▀▀▀ ▀▀ ▀▀▀ ▀ \n`,\n 'background: #222; color: #bada55'\n)\n\nexport default async function bootstrap() {\n /* set board-modeller group and default templates */\n registerDefaultGroups()\n\n await setupAppToolPart({\n toolbar: true,\n busybar: true,\n mdibar: false\n })\n\n // await setupContextUIPart({\n // titlebar: 'header',\n // contextToolbar: 'page-footer'\n // })\n\n appendViewpart({\n name: 'dcsp-topmenu',\n viewpart: {\n show: true,\n template: html` <menu-tools></menu-tools> `\n },\n position: VIEWPART_POSITION.NAVBAR\n })\n\n /* setting app-tools */\n store.dispatch({\n type: APPEND_APP_TOOL,\n tool: {\n name: 'app-brand',\n template: html` <span style=\"font-size: 1.2em;\">CSL</span> `,\n position: TOOL_POSITION.FRONT\n }\n })\n\n store.dispatch({\n type: APPEND_APP_TOOL,\n tool: {\n name: 'notification-badge',\n template: html`\n <notification-badge\n @click=${e => {\n toggleOverlay('notification', {\n backdrop: true\n })\n }}\n >\n </notification-badge>\n `,\n position: TOOL_POSITION.REAR\n }\n })\n\n appendViewpart({\n name: 'notification',\n viewpart: {\n show: false,\n hovering: 'edge',\n template: html` <notification-list style=\"min-width: 300px;\"></notification-list> `\n },\n position: VIEWPART_POSITION.ASIDEBAR\n })\n\n store.dispatch({\n type: APPEND_APP_TOOL,\n tool: {\n name: 'user-circle',\n template: html` <user-circle> </user-circle> `,\n position: TOOL_POSITION.REAR\n }\n })\n\n /* add setting morenda */\n store.dispatch({\n type: ADD_MORENDA,\n morenda: {\n icon: html` <mwc-icon>settings</mwc-icon> `,\n name: html` <ox-i18n msgid=\"label.setting\"></ox-i18n> `,\n action: () => {\n navigate('setting')\n }\n }\n })\n\n store.dispatch({\n type: ADD_SETTING,\n setting: {\n seq: 21,\n template: html` <lite-menu-setting-let></lite-menu-setting-let> `\n }\n })\n\n /* set auth management menus into more-panel */\n setAuthManagementMenus()\n\n if (\n await hasPrivilege({\n privilege: 'mutation',\n category: 'user',\n domainOwnerGranted: true,\n superUserGranted: true\n })\n ) {\n store.dispatch({\n type: ADD_MORENDA,\n morenda: {\n icon: html` <mwc-icon>vpn_key</mwc-icon> `,\n name: html` <ox-i18n msgid=\"text.oauth2-clients\"></ox-i18n> `,\n action: () => {\n navigate('oauth2-clients')\n }\n }\n })\n }\n\n if (\n await hasPrivilege({\n privilege: 'mutation',\n category: 'board',\n domainOwnerGranted: true,\n superUserGranted: true\n })\n ) {\n store.dispatch({\n type: ADD_MORENDA,\n morenda: {\n icon: html` <mwc-icon>font_download</mwc-icon> `,\n name: html` <ox-i18n msgid=\"menu.fonts\"></ox-i18n> `,\n action: () => {\n navigate('font-list')\n }\n }\n })\n\n store.dispatch({\n type: ADD_MORENDA,\n morenda: {\n icon: html` <mwc-icon>dvr</mwc-icon> `,\n name: html` <ox-i18n msgid=\"menu.board-list\"></ox-i18n> `,\n action: () => {\n navigate('board-list')\n }\n }\n })\n }\n\n if (\n await hasPrivilege({\n privilege: 'query',\n category: 'attachment',\n domainOwnerGranted: true,\n superUserGranted: true\n })\n ) {\n store.dispatch({\n type: ADD_MORENDA,\n morenda: {\n icon: html` <mwc-icon>attachment</mwc-icon> `,\n name: html` <ox-i18n msgid=\"menu.attachments\"></ox-i18n> `,\n action: () => {\n navigate('attachment-list')\n }\n }\n })\n }\n\n if (await hasPrivilege({ privilege: 'mutation', category: 'scenario', domainOwnerGranted: true })) {\n store.dispatch({\n type: ADD_MORENDA,\n morenda: {\n icon: html` <mwc-icon>dashboard</mwc-icon> `,\n name: html` <ox-i18n msgid=\"menu.board-template\"></ox-i18n> `,\n action: () => {\n navigate('board-template-list')\n }\n }\n })\n }\n}\n"]}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
const ICON_PROGRESS = `
|
|
2
|
+
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 40 40">
|
|
3
|
+
<defs>
|
|
4
|
+
<style>
|
|
5
|
+
.menu-svg {
|
|
6
|
+
fill: #fff;
|
|
7
|
+
stroke: {{strokecolor}};
|
|
8
|
+
stroke-width: 0px;
|
|
9
|
+
}
|
|
10
|
+
</style>
|
|
11
|
+
</defs>
|
|
12
|
+
|
|
13
|
+
<path class="menu-svg" d="M11.8,34c-1.1-.4-1.8-1.1-2.2-2-.4,1-1.2,1.8-2.3,2.2l-.7-1.1c1.6-.5,2.3-1.9,2.3-3.1h0c0-.1-1.9-.1-1.9-.1v-1.1h5.2v1.1h-1.9c0,1.3.7,2.6,2.3,3.1l-.7,1.1ZM14.7,36.7v1.2h-6.6v-3.3h1.4v2.1h5.3ZM14.5,35.2h-1.4v-7.3h1.4v7.3Z"/>
|
|
14
|
+
<path class="menu-svg" d="M20.2,30.1h-4.7v-1.1h1.7v-.9h1.4v.9h1.7v1.1ZM17.9,33.9c-1.2,0-2.1-.7-2.1-1.8s.9-1.8,2.1-1.8,2.1.7,2.1,1.8-.9,1.8-2.1,1.8ZM17.9,32.9c.5,0,.8-.3.8-.7s-.3-.7-.8-.7-.9.3-.9.7.3.7.9.7ZM23.8,36.2c0,1.2-1.2,1.8-3.3,1.8s-3.3-.7-3.3-1.8,1.2-1.8,3.3-1.8,3.3.7,3.3,1.8ZM22.4,36.2c0-.5-.6-.8-1.9-.8s-1.9.2-1.9.8.6.8,1.9.8,1.9-.2,1.9-.8ZM21.8,33.9h-1.3v-5.8h1.3v2.3h.7v-2.5h1.3v6.3h-1.3v-2.7h-.7v2.3Z"/>
|
|
15
|
+
<path class="menu-svg" d="M29.7,33.7v.7c1.7.1,2.6.8,2.6,1.8s-1.3,1.8-3.3,1.8-3.3-.7-3.3-1.8,1-1.7,2.7-1.8v-.7h-3.7v-1.2h8.7v1.2h-3.7ZM25,31c1.8-.2,2.7-.8,3-1.5h-2.5v-1.2h7.1v1.2h-2.6c.2.7,1.2,1.3,3,1.5l-.5,1.1c-1.8-.2-3-.9-3.5-1.8-.5,1-1.7,1.7-3.5,1.8l-.5-1.1ZM29,35.5c-1.3,0-1.9.2-1.9.7s.7.7,1.9.7,1.9-.2,1.9-.7-.7-.7-1.9-.7Z"/>
|
|
16
|
+
<path class="menu-svg" d="M27.3,24.4c-.1,0-.3,0-.4,0-.1,0-.2-.1-.3-.2l-5.6-5.6c-.1-.1-.2-.2-.2-.3,0-.1,0-.2,0-.4s0-.3,0-.4c0-.1.1-.2.2-.3l2.1-2.1c.1-.1.2-.2.3-.2.1,0,.2,0,.4,0s.3,0,.4,0c.1,0,.2.1.3.2l5.6,5.6c.1.1.2.2.2.3,0,.1,0,.2,0,.4s0,.3,0,.4c0,.1-.1.2-.2.3l-2.1,2.1c-.1.1-.2.2-.3.2-.1,0-.2,0-.4,0ZM27.3,22.5l1.2-1.2-4.6-4.6-1.2,1.2,4.6,4.6ZM12.6,24.4c-.1,0-.3,0-.4,0-.1,0-.2-.1-.3-.2l-2.1-2.1c-.1-.1-.2-.2-.2-.3,0-.1,0-.2,0-.4s0-.3,0-.4c0-.1.1-.2.2-.3l5.8-5.8h2.3l.9-.9-4.6-4.6h-1.6l-3.1-3.1,2.7-2.7,3.1,3.1v1.6l4.6,4.6,3.3-3.3-1.6-1.6,1.4-1.4h-2.8l-.6-.6,3.5-3.5.6.6v2.8l1.4-1.4,4.1,4.1c.3.3.5.6.7,1,.1.4.2.7.2,1.2s0,.7-.2,1c-.1.3-.3.6-.5.9l-2.3-2.3-1.6,1.6-1.2-1.2-5.3,5.3v2.3l-5.8,5.7c-.1.1-.2.2-.3.2-.1,0-.2,0-.4,0ZM12.6,22.5l5.1-5.1v-1.2h-1.2l-5.1,5.1s1.2,1.2,1.2,1.2ZM12.6,22.5l-1.2-1.2.6.6.6.6ZM27.3,22.5l1.2-1.2-1.2,1.2Z"/>
|
|
17
|
+
</svg>
|
|
18
|
+
`;
|
|
19
|
+
const ICON_COMPLETED = `
|
|
20
|
+
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 40 40">
|
|
21
|
+
<defs>
|
|
22
|
+
<style>
|
|
23
|
+
.menu-svg {
|
|
24
|
+
fill: #fff;
|
|
25
|
+
stroke: {{strokecolor}};
|
|
26
|
+
stroke-width: 0px;
|
|
27
|
+
}
|
|
28
|
+
</style>
|
|
29
|
+
</defs>
|
|
30
|
+
|
|
31
|
+
<path class="menu-svg" d="M16.8,33.9c-2,.4-4.2.4-5.8.4l-.2-1.2c.7,0,1.4,0,2.2,0v-.8c-1-.2-1.7-1-1.7-2s1-2.1,2.4-2.1,2.4.8,2.4,2.1-.7,1.7-1.7,2v.7c.8,0,1.5,0,2.2-.2v1ZM13.5,36.7h5.4v1.2h-6.8v-2.9h1.4v1.7ZM13.8,31.3c.7,0,1.1-.4,1.1-1s-.5-1-1.1-1-1.1.4-1.1,1,.5,1,1.1,1ZM19.9,31.1v1.2h-1.2v3.4h-1.4v-7.7h1.4v3.2h1.2Z"/>
|
|
32
|
+
<path class="menu-svg" d="M29,35.7v1.2h-8.8v-1.2h2.2v-1.5h-1.2v-3.4h5.4v-1.1h-5.5v-1.2h6.8v3.4h-5.4v1.1h5.7v1.2h-1.4v1.5h2.1ZM23.7,35.7h1.7v-1.5h-1.7v1.5Z"/>
|
|
33
|
+
<path class="menu-svg" d="M25.5,10h1.9v-1.9h-1.9v1.9ZM25.5,14.4h1.9v-1.9h-1.9v1.9ZM25.5,18.7h1.9v-1.9h-1.9v1.9ZM24.9,22.7v-1.6h4.9V5.7h-10.2v2l-1.6-1.2v-2.4h13.5v18.6s-6.6,0-6.6,0ZM8.4,22.7v-10.1l7.1-5.1,7.1,5.1v10.1h-5.9v-5.2h-2.5v5.2s-5.9,0-5.9,0ZM10.1,21.1h2.6v-5.2h5.8v5.2h2.6v-7.7l-5.5-3.9-5.5,3.9v7.7ZM18.4,21.1v-5.2h-5.8v5.2-5.2h5.8v5.2Z"/>
|
|
34
|
+
</svg>
|
|
35
|
+
`;
|
|
36
|
+
const ICON_STATUS = `
|
|
37
|
+
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 40 40">
|
|
38
|
+
<defs>
|
|
39
|
+
<style>
|
|
40
|
+
.menu-svg {
|
|
41
|
+
fill: #fff;
|
|
42
|
+
stroke: {{strokecolor}};
|
|
43
|
+
stroke-width: 0px;
|
|
44
|
+
}
|
|
45
|
+
</style>
|
|
46
|
+
</defs>
|
|
47
|
+
|
|
48
|
+
<path class="menu-svg" d="M7,28.5c0,2.7-1.6,4.5-4.3,5.3l-.5-1.1c2.1-.6,3.2-1.7,3.4-3h-2.9v-1.2h4.4ZM3.8,34h6.3v3.9H3.8v-3.9ZM5.1,36.8h3.6v-1.7h-3.6v1.7ZM10.1,27.9v5.6h-1.4v-2.1h-1.6v-1.2h1.6v-2.4h1.4Z"/>
|
|
49
|
+
<path class="menu-svg" d="M19.7,32.9v1.2h-8.6v-1.2h8.6ZM11.5,31.4c2.1-.1,3-.8,3.2-1.5h-2.7v-1.1h2.8v-.9h1.4v.9h2.8v1.1h-2.7c.2.7,1.1,1.4,3.2,1.5l-.4,1.1c-1.8-.1-2.9-.7-3.5-1.5-.6.8-1.8,1.3-3.5,1.5l-.4-1.1ZM12.1,34.8h6.6v3.2h-1.4v-2.1h-5.3v-1.1Z"/>
|
|
50
|
+
<path class="menu-svg" d="M25.4,30.1h-5.2v-1.1h2v-1.1h1.4v1.1h1.9v1.1ZM22.8,34.4c-1.3,0-2.2-.8-2.2-2s.9-2,2.2-2,2.2.8,2.2,2-.9,2-2.2,2ZM28.3,36.7v1.2h-6.5v-2.9h1.4v1.7h5.1ZM22.8,33.3c.5,0,.9-.3.9-.9s-.4-.9-.9-.9-1,.3-1,.9.4.9,1,.9ZM26.7,33.7h-1.2v-1.2h1.2v-1h-1.2v-1.2h1.2v-2.5h1.4v7.7h-1.4v-1.9Z"/>
|
|
51
|
+
<path class="menu-svg" d="M35,34.1c-2,.4-4.2.4-5.8.4v-1.1c.5,0,1.3,0,2.1,0v-.6c-1-.2-1.6-.7-1.6-1.4s.9-1.5,2.3-1.5,2.3.5,2.3,1.5-.6,1.2-1.6,1.4v.5c.8,0,1.5,0,2.3-.2v1ZM34.7,29.7h-5.4v-1h2v-.8h1.4v.8h2v1ZM36.8,36.4c0,1-1.2,1.6-3.3,1.6s-3.3-.6-3.3-1.6,1.2-1.6,3.3-1.6,3.3.6,3.3,1.6ZM32,31.9c.7,0,1-.2,1-.5s-.4-.5-1-.5-1,.2-1,.5.4.5,1,.5ZM35.4,36.4c0-.4-.6-.6-1.9-.6s-1.9.2-1.9.6.6.5,1.9.5,1.9-.2,1.9-.5ZM37.9,30.8v1.2h-1.2v2.8h-1.4v-6.8h1.4v2.9h1.2Z"/>
|
|
52
|
+
<path class="menu-svg" d="M11,23.2c-.6,0-1.1-.2-1.5-.6-.4-.4-.6-.9-.6-1.5V5.6c0-.6.2-1.1.6-1.5s.9-.6,1.5-.6h17.8c.6,0,1.1.2,1.5.6s.6.9.6,1.5v15.5c0,.6-.2,1.1-.6,1.5s-.9.6-1.5.6c0,0-17.8,0-17.8,0ZM11,21.5h17.8c0,0,.2,0,.2-.1,0,0,.1-.2.1-.2V5.6c0,0,0-.2-.1-.2,0,0-.2-.1-.2-.1H11c0,0-.2,0-.2.1,0,0-.1.2-.1.2v15.5c0,0,0,.2.1.2,0,0,.2.1.2.1ZM12.1,18.9h5.2v-1.7h-5.2v1.7ZM22.9,16.4l5.3-5.3-1.2-1.2-4.1,4.1-1.7-1.7-1.2,1.2,2.9,2.9ZM12.1,14.3h5.2v-1.7h-5.2v1.7ZM12.1,9.6h5.2v-1.7h-5.2v1.7ZM10.7,21.5V5.3v16.2Z"/>
|
|
53
|
+
</svg>
|
|
54
|
+
`;
|
|
55
|
+
const ICON_OPERATING = `
|
|
56
|
+
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 40 40">
|
|
57
|
+
<defs>
|
|
58
|
+
<style>
|
|
59
|
+
.menu-svg {
|
|
60
|
+
fill: #fff;
|
|
61
|
+
stroke: {{strokecolor}};
|
|
62
|
+
stroke-width: 0px;
|
|
63
|
+
}
|
|
64
|
+
</style>
|
|
65
|
+
</defs>
|
|
66
|
+
|
|
67
|
+
<path class="menu-svg" d="M15,32.4v1.1H6v-1.1h3.3v-1.8h1.4v1.8h4.2ZM14,36.1c0,1.2-1.4,1.9-3.6,1.9s-3.5-.7-3.5-1.9,1.4-1.9,3.5-1.9,3.6.7,3.6,1.9ZM12.2,31.7c.2-.9.3-1.6.3-2.3h-5.5v-1.1h6.9v.8c0,.8,0,1.7-.3,2.7h-1.4ZM12.5,36.1c0-.5-.8-.8-2.1-.8s-2.1.3-2.1.8.8.8,2.1.8,2.1-.3,2.1-.8Z"/>
|
|
68
|
+
<path class="menu-svg" d="M20.7,33.6c-1.1-.4-1.8-1.1-2.3-2-.4,1-1.2,1.8-2.4,2.2l-.7-1.1c1.6-.6,2.3-1.8,2.4-3.1h-2v-1.2h5.4v1.2h-1.9c0,1.2.7,2.3,2.3,2.8l-.7,1.1ZM23.8,36.1c0,1.2-1.3,1.9-3.4,1.9s-3.4-.7-3.4-1.9,1.3-1.9,3.4-1.9,3.4.7,3.4,1.9ZM22.4,36.1c0-.6-.7-.8-2-.8s-2,.3-2,.8.7.8,2,.8,2-.3,2-.8ZM22.3,30.3v-2.4h1.4v6h-1.4v-2.4h-1.5v-1.2h1.5Z"/>
|
|
69
|
+
<path class="menu-svg" d="M33.9,35.7v1.2h-9.1v-1.2h2.2v-1.9h-1.5v-1.1h1.3v-2.8h-1.4v-1.2h7.6v1.2h-1.4v2.8h1.3v1.1h-1.5v1.9h2.3ZM28.3,32.7h2v-2.8h-2v2.8ZM28.5,35.7h1.7v-1.9h-1.7v1.9Z"/>
|
|
70
|
+
<path class="menu-svg" d="M12.2,24.4c-.6,0-1.1-.2-1.5-.6-.4-.4-.6-.9-.6-1.5V6.9c0-.6.2-1.1.6-1.5.4-.4.9-.6,1.5-.6h1.6v-2.4h1.8v2.4h8.7v-2.4h1.7v2.4h1.6c.6,0,1.1.2,1.5.6s.6.9.6,1.5v15.4c0,.6-.2,1.1-.6,1.5-.4.4-.9.6-1.5.6,0,0-15.4,0-15.4,0ZM12.2,22.7h15.4c0,0,.2,0,.2-.1,0,0,.1-.2.1-.2v-10.8H11.9v10.8c0,0,0,.2.1.2,0,0,.2.1.2.1ZM11.9,9.8h16.1v-2.9c0,0,0-.2-.1-.2,0,0-.2-.1-.2-.1h-15.4c0,0-.2,0-.2.1,0,0-.1.2-.1.2,0,0,0,2.9,0,2.9ZM11.9,9.8v-3.2,3.2ZM14.5,15.5v-1.7h10.9v1.7s-10.9,0-10.9,0ZM14.5,20.1v-1.7h7.5v1.7s-7.5,0-7.5,0Z"/>
|
|
71
|
+
</svg>
|
|
72
|
+
`;
|
|
73
|
+
const ICON_SETTING = `
|
|
74
|
+
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 40 40">
|
|
75
|
+
<defs>
|
|
76
|
+
<style>
|
|
77
|
+
.menu-svg {
|
|
78
|
+
fill: #fff;
|
|
79
|
+
stroke: {{strokecolor}};
|
|
80
|
+
stroke-width: 0px;
|
|
81
|
+
}
|
|
82
|
+
</style>
|
|
83
|
+
</defs>
|
|
84
|
+
|
|
85
|
+
<path class="menu-svg" d="M14.6,33.6c-.8-.4-1.4-1-1.7-1.7-.4.8-1,1.5-1.9,1.9l-.8-1.1c1.4-.6,2-1.9,2-3v-1.2h1.4v1.2c0,1.2.5,2.3,1.8,2.9l-.8,1.1ZM16.4,34.5c0,1,1.1,2.1,3.3,2.4l-.5,1.1c-1.7-.2-2.9-.9-3.5-1.8-.6.9-1.8,1.6-3.5,1.8l-.5-1.1c2.2-.3,3.3-1.4,3.3-2.4v-.2h1.5v.2ZM15.7,31.1h-1.2v-1.2h1.2v-1.9h1.4v5.7h-1.4v-2.7ZM19.2,34.8h-1.4v-6.9h1.4v6.9Z"/>
|
|
86
|
+
<path class="menu-svg" d="M26.5,33.3c-1.5.2-2.7.3-4.9.3h-.9v-5h5v1.1h-3.5v.8h3.2v1.1h-3.2v.8c1.8,0,2.9,0,4.2-.2v1.1ZM28.7,36.1c0,1.2-1.3,1.9-3.5,1.9s-3.5-.7-3.5-1.9,1.3-1.9,3.5-1.9,3.5.7,3.5,1.9ZM27.3,36.1c0-.5-.7-.8-2-.8s-2,.3-2,.8.7.8,2,.8,2-.3,2-.8ZM28.7,34h-1.5v-6.1h1.5v6.1Z"/>
|
|
87
|
+
<path class="menu-svg" d="M15,17.5h1.4v-4.2h-1.4v1.4h-1.7v1.4h1.7v1.4ZM17.5,16.1h9v-1.4h-9s0,1.4,0,1.4ZM23.5,13.1h1.4v-1.4h1.7v-1.4h-1.7v-1.4h-1.4s0,4.2,0,4.2ZM13.3,11.7h9v-1.4h-9v1.4ZM15.9,24.6v-2.4h-4.9c-.6,0-1.1-.2-1.5-.6-.4-.4-.6-.9-.6-1.5V6.3c0-.6.2-1.1.6-1.5s.9-.6,1.5-.6h17.8c.6,0,1.1.2,1.5.6s.6.9.6,1.5v13.7c0,.6-.2,1.1-.6,1.5-.4.4-.9.6-1.5.6h-4.9v2.4s-8.1,0-8.1,0ZM11,20.4h17.8c0,0,.2,0,.2-.1,0,0,.1-.2.1-.3V6.3c0,0,0-.2-.1-.3,0,0-.2-.1-.2-.1H11c0,0-.2,0-.2.1,0,0-.1.2-.1.3v13.7c0,0,0,.2.1.3,0,0,.2.1.2.1ZM10.7,20.4V5.9v14.5Z"/>
|
|
88
|
+
</svg>
|
|
89
|
+
`;
|
|
90
|
+
function icons(template) {
|
|
91
|
+
return ['#ffffff', '#64A3D9'].map(color => 'data:image/svg+xml;charset=UTF-8;base64,' + btoa(template.replace(/{{strokecolor}}/g, color)));
|
|
92
|
+
}
|
|
93
|
+
export const ICONS_PROGRESS = icons(ICON_PROGRESS);
|
|
94
|
+
export const ICONS_COMPLETED = icons(ICON_COMPLETED);
|
|
95
|
+
export const ICONS_STATUS = icons(ICON_STATUS);
|
|
96
|
+
export const ICONS_OPERATING = icons(ICON_OPERATING);
|
|
97
|
+
export const ICONS_SETTING = icons(ICON_SETTING);
|
|
98
|
+
//# sourceMappingURL=menu-icons.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"menu-icons.js","sourceRoot":"","sources":["../../client/icons/menu-icons.ts"],"names":[],"mappings":"AAAA,MAAM,aAAa,GAAG;;;;;;;;;;;;;;;;;CAiBrB,CAAA;AAED,MAAM,cAAc,GAAG;;;;;;;;;;;;;;;;CAgBtB,CAAA;AAED,MAAM,WAAW,GAAG;;;;;;;;;;;;;;;;;;CAkBnB,CAAA;AAED,MAAM,cAAc,GAAG;;;;;;;;;;;;;;;;;CAiBtB,CAAA;AAED,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;;CAgBpB,CAAA;AAED,SAAS,KAAK,CAAC,QAAQ;IACrB,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,GAAG,CAC/B,KAAK,CAAC,EAAE,CAAC,0CAA0C,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC,CACxG,CAAA;AACH,CAAC;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,CAAC,aAAa,CAAC,CAAA;AAClD,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,CAAC,cAAc,CAAC,CAAA;AACpD,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,CAAC,WAAW,CAAC,CAAA;AAC9C,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,CAAC,cAAc,CAAC,CAAA;AACpD,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,CAAC,YAAY,CAAC,CAAA","sourcesContent":["const ICON_PROGRESS = `\n<svg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" viewBox=\"0 0 40 40\">\n <defs>\n <style>\n .menu-svg {\n fill: #fff;\n\t\t\t\tstroke: {{strokecolor}};\n stroke-width: 0px;\n }\n </style>\n </defs>\n \n <path class=\"menu-svg\" d=\"M11.8,34c-1.1-.4-1.8-1.1-2.2-2-.4,1-1.2,1.8-2.3,2.2l-.7-1.1c1.6-.5,2.3-1.9,2.3-3.1h0c0-.1-1.9-.1-1.9-.1v-1.1h5.2v1.1h-1.9c0,1.3.7,2.6,2.3,3.1l-.7,1.1ZM14.7,36.7v1.2h-6.6v-3.3h1.4v2.1h5.3ZM14.5,35.2h-1.4v-7.3h1.4v7.3Z\"/>\n <path class=\"menu-svg\" d=\"M20.2,30.1h-4.7v-1.1h1.7v-.9h1.4v.9h1.7v1.1ZM17.9,33.9c-1.2,0-2.1-.7-2.1-1.8s.9-1.8,2.1-1.8,2.1.7,2.1,1.8-.9,1.8-2.1,1.8ZM17.9,32.9c.5,0,.8-.3.8-.7s-.3-.7-.8-.7-.9.3-.9.7.3.7.9.7ZM23.8,36.2c0,1.2-1.2,1.8-3.3,1.8s-3.3-.7-3.3-1.8,1.2-1.8,3.3-1.8,3.3.7,3.3,1.8ZM22.4,36.2c0-.5-.6-.8-1.9-.8s-1.9.2-1.9.8.6.8,1.9.8,1.9-.2,1.9-.8ZM21.8,33.9h-1.3v-5.8h1.3v2.3h.7v-2.5h1.3v6.3h-1.3v-2.7h-.7v2.3Z\"/>\n <path class=\"menu-svg\" d=\"M29.7,33.7v.7c1.7.1,2.6.8,2.6,1.8s-1.3,1.8-3.3,1.8-3.3-.7-3.3-1.8,1-1.7,2.7-1.8v-.7h-3.7v-1.2h8.7v1.2h-3.7ZM25,31c1.8-.2,2.7-.8,3-1.5h-2.5v-1.2h7.1v1.2h-2.6c.2.7,1.2,1.3,3,1.5l-.5,1.1c-1.8-.2-3-.9-3.5-1.8-.5,1-1.7,1.7-3.5,1.8l-.5-1.1ZM29,35.5c-1.3,0-1.9.2-1.9.7s.7.7,1.9.7,1.9-.2,1.9-.7-.7-.7-1.9-.7Z\"/>\n <path class=\"menu-svg\" d=\"M27.3,24.4c-.1,0-.3,0-.4,0-.1,0-.2-.1-.3-.2l-5.6-5.6c-.1-.1-.2-.2-.2-.3,0-.1,0-.2,0-.4s0-.3,0-.4c0-.1.1-.2.2-.3l2.1-2.1c.1-.1.2-.2.3-.2.1,0,.2,0,.4,0s.3,0,.4,0c.1,0,.2.1.3.2l5.6,5.6c.1.1.2.2.2.3,0,.1,0,.2,0,.4s0,.3,0,.4c0,.1-.1.2-.2.3l-2.1,2.1c-.1.1-.2.2-.3.2-.1,0-.2,0-.4,0ZM27.3,22.5l1.2-1.2-4.6-4.6-1.2,1.2,4.6,4.6ZM12.6,24.4c-.1,0-.3,0-.4,0-.1,0-.2-.1-.3-.2l-2.1-2.1c-.1-.1-.2-.2-.2-.3,0-.1,0-.2,0-.4s0-.3,0-.4c0-.1.1-.2.2-.3l5.8-5.8h2.3l.9-.9-4.6-4.6h-1.6l-3.1-3.1,2.7-2.7,3.1,3.1v1.6l4.6,4.6,3.3-3.3-1.6-1.6,1.4-1.4h-2.8l-.6-.6,3.5-3.5.6.6v2.8l1.4-1.4,4.1,4.1c.3.3.5.6.7,1,.1.4.2.7.2,1.2s0,.7-.2,1c-.1.3-.3.6-.5.9l-2.3-2.3-1.6,1.6-1.2-1.2-5.3,5.3v2.3l-5.8,5.7c-.1.1-.2.2-.3.2-.1,0-.2,0-.4,0ZM12.6,22.5l5.1-5.1v-1.2h-1.2l-5.1,5.1s1.2,1.2,1.2,1.2ZM12.6,22.5l-1.2-1.2.6.6.6.6ZM27.3,22.5l1.2-1.2-1.2,1.2Z\"/>\n</svg>\n`\n\nconst ICON_COMPLETED = `\n<svg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" viewBox=\"0 0 40 40\">\n <defs>\n <style>\n .menu-svg {\n fill: #fff;\n\t\t\t\tstroke: {{strokecolor}};\n stroke-width: 0px;\n }\n </style>\n </defs>\n \n <path class=\"menu-svg\" d=\"M16.8,33.9c-2,.4-4.2.4-5.8.4l-.2-1.2c.7,0,1.4,0,2.2,0v-.8c-1-.2-1.7-1-1.7-2s1-2.1,2.4-2.1,2.4.8,2.4,2.1-.7,1.7-1.7,2v.7c.8,0,1.5,0,2.2-.2v1ZM13.5,36.7h5.4v1.2h-6.8v-2.9h1.4v1.7ZM13.8,31.3c.7,0,1.1-.4,1.1-1s-.5-1-1.1-1-1.1.4-1.1,1,.5,1,1.1,1ZM19.9,31.1v1.2h-1.2v3.4h-1.4v-7.7h1.4v3.2h1.2Z\"/>\n <path class=\"menu-svg\" d=\"M29,35.7v1.2h-8.8v-1.2h2.2v-1.5h-1.2v-3.4h5.4v-1.1h-5.5v-1.2h6.8v3.4h-5.4v1.1h5.7v1.2h-1.4v1.5h2.1ZM23.7,35.7h1.7v-1.5h-1.7v1.5Z\"/>\n <path class=\"menu-svg\" d=\"M25.5,10h1.9v-1.9h-1.9v1.9ZM25.5,14.4h1.9v-1.9h-1.9v1.9ZM25.5,18.7h1.9v-1.9h-1.9v1.9ZM24.9,22.7v-1.6h4.9V5.7h-10.2v2l-1.6-1.2v-2.4h13.5v18.6s-6.6,0-6.6,0ZM8.4,22.7v-10.1l7.1-5.1,7.1,5.1v10.1h-5.9v-5.2h-2.5v5.2s-5.9,0-5.9,0ZM10.1,21.1h2.6v-5.2h5.8v5.2h2.6v-7.7l-5.5-3.9-5.5,3.9v7.7ZM18.4,21.1v-5.2h-5.8v5.2-5.2h5.8v5.2Z\"/>\n</svg>\n`\n\nconst ICON_STATUS = `\n<svg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" viewBox=\"0 0 40 40\">\n <defs>\n <style>\n .menu-svg {\n fill: #fff;\n\t\t\t\tstroke: {{strokecolor}};\n stroke-width: 0px;\n }\n </style>\n </defs>\n\n <path class=\"menu-svg\" d=\"M7,28.5c0,2.7-1.6,4.5-4.3,5.3l-.5-1.1c2.1-.6,3.2-1.7,3.4-3h-2.9v-1.2h4.4ZM3.8,34h6.3v3.9H3.8v-3.9ZM5.1,36.8h3.6v-1.7h-3.6v1.7ZM10.1,27.9v5.6h-1.4v-2.1h-1.6v-1.2h1.6v-2.4h1.4Z\"/>\n <path class=\"menu-svg\" d=\"M19.7,32.9v1.2h-8.6v-1.2h8.6ZM11.5,31.4c2.1-.1,3-.8,3.2-1.5h-2.7v-1.1h2.8v-.9h1.4v.9h2.8v1.1h-2.7c.2.7,1.1,1.4,3.2,1.5l-.4,1.1c-1.8-.1-2.9-.7-3.5-1.5-.6.8-1.8,1.3-3.5,1.5l-.4-1.1ZM12.1,34.8h6.6v3.2h-1.4v-2.1h-5.3v-1.1Z\"/>\n <path class=\"menu-svg\" d=\"M25.4,30.1h-5.2v-1.1h2v-1.1h1.4v1.1h1.9v1.1ZM22.8,34.4c-1.3,0-2.2-.8-2.2-2s.9-2,2.2-2,2.2.8,2.2,2-.9,2-2.2,2ZM28.3,36.7v1.2h-6.5v-2.9h1.4v1.7h5.1ZM22.8,33.3c.5,0,.9-.3.9-.9s-.4-.9-.9-.9-1,.3-1,.9.4.9,1,.9ZM26.7,33.7h-1.2v-1.2h1.2v-1h-1.2v-1.2h1.2v-2.5h1.4v7.7h-1.4v-1.9Z\"/>\n <path class=\"menu-svg\" d=\"M35,34.1c-2,.4-4.2.4-5.8.4v-1.1c.5,0,1.3,0,2.1,0v-.6c-1-.2-1.6-.7-1.6-1.4s.9-1.5,2.3-1.5,2.3.5,2.3,1.5-.6,1.2-1.6,1.4v.5c.8,0,1.5,0,2.3-.2v1ZM34.7,29.7h-5.4v-1h2v-.8h1.4v.8h2v1ZM36.8,36.4c0,1-1.2,1.6-3.3,1.6s-3.3-.6-3.3-1.6,1.2-1.6,3.3-1.6,3.3.6,3.3,1.6ZM32,31.9c.7,0,1-.2,1-.5s-.4-.5-1-.5-1,.2-1,.5.4.5,1,.5ZM35.4,36.4c0-.4-.6-.6-1.9-.6s-1.9.2-1.9.6.6.5,1.9.5,1.9-.2,1.9-.5ZM37.9,30.8v1.2h-1.2v2.8h-1.4v-6.8h1.4v2.9h1.2Z\"/>\n <path class=\"menu-svg\" d=\"M11,23.2c-.6,0-1.1-.2-1.5-.6-.4-.4-.6-.9-.6-1.5V5.6c0-.6.2-1.1.6-1.5s.9-.6,1.5-.6h17.8c.6,0,1.1.2,1.5.6s.6.9.6,1.5v15.5c0,.6-.2,1.1-.6,1.5s-.9.6-1.5.6c0,0-17.8,0-17.8,0ZM11,21.5h17.8c0,0,.2,0,.2-.1,0,0,.1-.2.1-.2V5.6c0,0,0-.2-.1-.2,0,0-.2-.1-.2-.1H11c0,0-.2,0-.2.1,0,0-.1.2-.1.2v15.5c0,0,0,.2.1.2,0,0,.2.1.2.1ZM12.1,18.9h5.2v-1.7h-5.2v1.7ZM22.9,16.4l5.3-5.3-1.2-1.2-4.1,4.1-1.7-1.7-1.2,1.2,2.9,2.9ZM12.1,14.3h5.2v-1.7h-5.2v1.7ZM12.1,9.6h5.2v-1.7h-5.2v1.7ZM10.7,21.5V5.3v16.2Z\"/>\n</svg>\n`\n\nconst ICON_OPERATING = `\n<svg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" viewBox=\"0 0 40 40\">\n <defs>\n <style>\n .menu-svg {\n fill: #fff;\n\t\t\t\tstroke: {{strokecolor}};\n stroke-width: 0px;\n }\n </style>\n </defs>\n \n <path class=\"menu-svg\" d=\"M15,32.4v1.1H6v-1.1h3.3v-1.8h1.4v1.8h4.2ZM14,36.1c0,1.2-1.4,1.9-3.6,1.9s-3.5-.7-3.5-1.9,1.4-1.9,3.5-1.9,3.6.7,3.6,1.9ZM12.2,31.7c.2-.9.3-1.6.3-2.3h-5.5v-1.1h6.9v.8c0,.8,0,1.7-.3,2.7h-1.4ZM12.5,36.1c0-.5-.8-.8-2.1-.8s-2.1.3-2.1.8.8.8,2.1.8,2.1-.3,2.1-.8Z\"/>\n <path class=\"menu-svg\" d=\"M20.7,33.6c-1.1-.4-1.8-1.1-2.3-2-.4,1-1.2,1.8-2.4,2.2l-.7-1.1c1.6-.6,2.3-1.8,2.4-3.1h-2v-1.2h5.4v1.2h-1.9c0,1.2.7,2.3,2.3,2.8l-.7,1.1ZM23.8,36.1c0,1.2-1.3,1.9-3.4,1.9s-3.4-.7-3.4-1.9,1.3-1.9,3.4-1.9,3.4.7,3.4,1.9ZM22.4,36.1c0-.6-.7-.8-2-.8s-2,.3-2,.8.7.8,2,.8,2-.3,2-.8ZM22.3,30.3v-2.4h1.4v6h-1.4v-2.4h-1.5v-1.2h1.5Z\"/>\n <path class=\"menu-svg\" d=\"M33.9,35.7v1.2h-9.1v-1.2h2.2v-1.9h-1.5v-1.1h1.3v-2.8h-1.4v-1.2h7.6v1.2h-1.4v2.8h1.3v1.1h-1.5v1.9h2.3ZM28.3,32.7h2v-2.8h-2v2.8ZM28.5,35.7h1.7v-1.9h-1.7v1.9Z\"/>\n <path class=\"menu-svg\" d=\"M12.2,24.4c-.6,0-1.1-.2-1.5-.6-.4-.4-.6-.9-.6-1.5V6.9c0-.6.2-1.1.6-1.5.4-.4.9-.6,1.5-.6h1.6v-2.4h1.8v2.4h8.7v-2.4h1.7v2.4h1.6c.6,0,1.1.2,1.5.6s.6.9.6,1.5v15.4c0,.6-.2,1.1-.6,1.5-.4.4-.9.6-1.5.6,0,0-15.4,0-15.4,0ZM12.2,22.7h15.4c0,0,.2,0,.2-.1,0,0,.1-.2.1-.2v-10.8H11.9v10.8c0,0,0,.2.1.2,0,0,.2.1.2.1ZM11.9,9.8h16.1v-2.9c0,0,0-.2-.1-.2,0,0-.2-.1-.2-.1h-15.4c0,0-.2,0-.2.1,0,0-.1.2-.1.2,0,0,0,2.9,0,2.9ZM11.9,9.8v-3.2,3.2ZM14.5,15.5v-1.7h10.9v1.7s-10.9,0-10.9,0ZM14.5,20.1v-1.7h7.5v1.7s-7.5,0-7.5,0Z\"/>\n</svg>\n`\n\nconst ICON_SETTING = `\n<svg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" viewBox=\"0 0 40 40\">\n <defs>\n <style>\n .menu-svg {\n fill: #fff;\n\t\t\t\tstroke: {{strokecolor}};\n stroke-width: 0px;\n }\n </style>\n </defs>\n \n <path class=\"menu-svg\" d=\"M14.6,33.6c-.8-.4-1.4-1-1.7-1.7-.4.8-1,1.5-1.9,1.9l-.8-1.1c1.4-.6,2-1.9,2-3v-1.2h1.4v1.2c0,1.2.5,2.3,1.8,2.9l-.8,1.1ZM16.4,34.5c0,1,1.1,2.1,3.3,2.4l-.5,1.1c-1.7-.2-2.9-.9-3.5-1.8-.6.9-1.8,1.6-3.5,1.8l-.5-1.1c2.2-.3,3.3-1.4,3.3-2.4v-.2h1.5v.2ZM15.7,31.1h-1.2v-1.2h1.2v-1.9h1.4v5.7h-1.4v-2.7ZM19.2,34.8h-1.4v-6.9h1.4v6.9Z\"/>\n <path class=\"menu-svg\" d=\"M26.5,33.3c-1.5.2-2.7.3-4.9.3h-.9v-5h5v1.1h-3.5v.8h3.2v1.1h-3.2v.8c1.8,0,2.9,0,4.2-.2v1.1ZM28.7,36.1c0,1.2-1.3,1.9-3.5,1.9s-3.5-.7-3.5-1.9,1.3-1.9,3.5-1.9,3.5.7,3.5,1.9ZM27.3,36.1c0-.5-.7-.8-2-.8s-2,.3-2,.8.7.8,2,.8,2-.3,2-.8ZM28.7,34h-1.5v-6.1h1.5v6.1Z\"/>\n <path class=\"menu-svg\" d=\"M15,17.5h1.4v-4.2h-1.4v1.4h-1.7v1.4h1.7v1.4ZM17.5,16.1h9v-1.4h-9s0,1.4,0,1.4ZM23.5,13.1h1.4v-1.4h1.7v-1.4h-1.7v-1.4h-1.4s0,4.2,0,4.2ZM13.3,11.7h9v-1.4h-9v1.4ZM15.9,24.6v-2.4h-4.9c-.6,0-1.1-.2-1.5-.6-.4-.4-.6-.9-.6-1.5V6.3c0-.6.2-1.1.6-1.5s.9-.6,1.5-.6h17.8c.6,0,1.1.2,1.5.6s.6.9.6,1.5v13.7c0,.6-.2,1.1-.6,1.5-.4.4-.9.6-1.5.6h-4.9v2.4s-8.1,0-8.1,0ZM11,20.4h17.8c0,0,.2,0,.2-.1,0,0,.1-.2.1-.3V6.3c0,0,0-.2-.1-.3,0,0-.2-.1-.2-.1H11c0,0-.2,0-.2.1,0,0-.1.2-.1.3v13.7c0,0,0,.2.1.3,0,0,.2.1.2.1ZM10.7,20.4V5.9v14.5Z\"/>\n</svg>\n`\n\nfunction icons(template) {\n return ['#ffffff', '#64A3D9'].map(\n color => 'data:image/svg+xml;charset=UTF-8;base64,' + btoa(template.replace(/{{strokecolor}}/g, color))\n )\n}\n\nexport const ICONS_PROGRESS = icons(ICON_PROGRESS)\nexport const ICONS_COMPLETED = icons(ICON_COMPLETED)\nexport const ICONS_STATUS = icons(ICON_STATUS)\nexport const ICONS_OPERATING = icons(ICON_OPERATING)\nexport const ICONS_SETTING = icons(ICON_SETTING)\n"]}
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../client/index.ts"],"names":[],"mappings":"","sourcesContent":[""]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function getMenuTemplate(): Promise<never[]>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"menu.js","sourceRoot":"","sources":["../client/menu.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,KAAK,UAAU,eAAe;IACnC,OAAO,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;AAC3B,CAAC","sourcesContent":["export async function getMenuTemplate() {\n return [].filter(Boolean)\n}\n"]}
|
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
import { __decorate, __metadata } from "tslib";
|
|
2
|
+
import '@things-factory/component-ui';
|
|
3
|
+
import '@things-factory/auth-ui/dist-client/components/ownership-transfer-popup';
|
|
4
|
+
import '@things-factory/auth-ui/dist-client/components/user-role-editor';
|
|
5
|
+
import '@things-factory/auth-ui/dist-client/components/create-user';
|
|
6
|
+
import gql from 'graphql-tag';
|
|
7
|
+
import { css, html } from 'lit';
|
|
8
|
+
import { customElement, property, query } from 'lit/decorators.js';
|
|
9
|
+
import { client, gqlContext } from '@operato/graphql';
|
|
10
|
+
import { i18next } from '@operato/i18n';
|
|
11
|
+
import { PageView } from '@operato/shell';
|
|
12
|
+
import { OxPrompt } from '@operato/popup/ox-prompt.js';
|
|
13
|
+
let SVUserManagement = class SVUserManagement extends PageView {
|
|
14
|
+
constructor() {
|
|
15
|
+
super(...arguments);
|
|
16
|
+
this.domainUsers = [];
|
|
17
|
+
this.currentTab = '';
|
|
18
|
+
this.passwordResettable = false;
|
|
19
|
+
this.userCreatable = false;
|
|
20
|
+
}
|
|
21
|
+
get context() {
|
|
22
|
+
return {
|
|
23
|
+
title: i18next.t('text.user management'),
|
|
24
|
+
help: 'auth/users'
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
render() {
|
|
28
|
+
const groupingUser = (this.domainUsers || []).reduce((groupingUser, user) => {
|
|
29
|
+
const userType = user.userType;
|
|
30
|
+
if (!groupingUser[userType]) {
|
|
31
|
+
groupingUser[userType] = [];
|
|
32
|
+
}
|
|
33
|
+
user.activated = user.status === 'activated';
|
|
34
|
+
groupingUser[userType].push(user);
|
|
35
|
+
return groupingUser;
|
|
36
|
+
}, {
|
|
37
|
+
admin: [],
|
|
38
|
+
user: [],
|
|
39
|
+
application: [],
|
|
40
|
+
appliance: []
|
|
41
|
+
});
|
|
42
|
+
const USER_TYPES = {
|
|
43
|
+
USER: i18next.t('label.user'),
|
|
44
|
+
APPLICATION: i18next.t('label.application'),
|
|
45
|
+
APPLIANCE: i18next.t('text.appliance')
|
|
46
|
+
};
|
|
47
|
+
const userSet = {
|
|
48
|
+
[USER_TYPES.USER]: [...groupingUser.user, ...groupingUser.admin],
|
|
49
|
+
[USER_TYPES.APPLICATION]: groupingUser.application,
|
|
50
|
+
[USER_TYPES.APPLIANCE]: groupingUser.appliance
|
|
51
|
+
};
|
|
52
|
+
return html `
|
|
53
|
+
${this.userCreatable
|
|
54
|
+
? html `<create-user
|
|
55
|
+
@create-user=${async (event) => {
|
|
56
|
+
const user = event.detail;
|
|
57
|
+
user.userType = 'user';
|
|
58
|
+
await this.createUser(user);
|
|
59
|
+
}}
|
|
60
|
+
></create-user>`
|
|
61
|
+
: ''}
|
|
62
|
+
<quick-find-list
|
|
63
|
+
id="user-list"
|
|
64
|
+
.data=${userSet}
|
|
65
|
+
@tabChanged=${e => (this.currentTab = e.detail.currentTabKey)}
|
|
66
|
+
.headerRenderer=${user => {
|
|
67
|
+
return html `
|
|
68
|
+
${!user.activated
|
|
69
|
+
? html `
|
|
70
|
+
<mwc-icon>do_disturb</mwc-icon>
|
|
71
|
+
${user.name}
|
|
72
|
+
`
|
|
73
|
+
: html ` ${user.owner ? html ` <mwc-icon>supervisor_account</mwc-icon> ` : ''} ${user.name} `}
|
|
74
|
+
`;
|
|
75
|
+
}}
|
|
76
|
+
.contentRenderer=${user => html ` <user-role-editor
|
|
77
|
+
.user=${user}
|
|
78
|
+
.domainOwner=${this.owner}
|
|
79
|
+
.activate=${user.activated}
|
|
80
|
+
@userUpdated=${this.refreshUsers.bind(this)}
|
|
81
|
+
@ownershipTransferred=${this.refreshUsers.bind(this)}
|
|
82
|
+
.passwordResettable=${this.passwordResettable}
|
|
83
|
+
></user-role-editor>`}
|
|
84
|
+
></quick-find-list>
|
|
85
|
+
`;
|
|
86
|
+
}
|
|
87
|
+
async pageUpdated(changes, lifecycle, before) {
|
|
88
|
+
if (this.active) {
|
|
89
|
+
this.refreshUsers();
|
|
90
|
+
this.checkPasswordResettable();
|
|
91
|
+
this.checkUserCreatable();
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
async refreshUsers() {
|
|
95
|
+
var _a, _b;
|
|
96
|
+
const domainUsersResp = await client.query({
|
|
97
|
+
query: gql `
|
|
98
|
+
query {
|
|
99
|
+
users {
|
|
100
|
+
items {
|
|
101
|
+
id
|
|
102
|
+
name
|
|
103
|
+
email
|
|
104
|
+
userType
|
|
105
|
+
status
|
|
106
|
+
owner
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
`,
|
|
111
|
+
context: gqlContext()
|
|
112
|
+
});
|
|
113
|
+
if (!((_a = domainUsersResp.errors) === null || _a === void 0 ? void 0 : _a.length)) {
|
|
114
|
+
this.domainUsers = domainUsersResp.data.users.items || [];
|
|
115
|
+
this.owner = this.domainUsers.filter(user => user.owner)[0] || {};
|
|
116
|
+
(_b = this.userListElement) === null || _b === void 0 ? void 0 : _b.close();
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
async checkPasswordResettable() {
|
|
120
|
+
const response = await client.query({
|
|
121
|
+
query: gql `
|
|
122
|
+
query {
|
|
123
|
+
checkResettablePasswordToDefault
|
|
124
|
+
}
|
|
125
|
+
`
|
|
126
|
+
});
|
|
127
|
+
if (!response.errors) {
|
|
128
|
+
this.passwordResettable = response.data.checkResettablePasswordToDefault;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
async checkUserCreatable() {
|
|
132
|
+
const response = await client.query({
|
|
133
|
+
query: gql `
|
|
134
|
+
query {
|
|
135
|
+
checkDefaultPassword
|
|
136
|
+
}
|
|
137
|
+
`
|
|
138
|
+
});
|
|
139
|
+
if (!response.errors) {
|
|
140
|
+
this.userCreatable = response.data.checkDefaultPassword;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
async createUser(user) {
|
|
144
|
+
if (await OxPrompt.open({
|
|
145
|
+
title: i18next.t('text.are_you_sure'),
|
|
146
|
+
text: i18next.t('text.are_you_sure_to_x_user', { x: i18next.t('button.create') }),
|
|
147
|
+
confirmButton: { text: i18next.t('button.confirm') },
|
|
148
|
+
cancelButton: { text: i18next.t('button.cancel') }
|
|
149
|
+
})) {
|
|
150
|
+
const response = await client.mutate({
|
|
151
|
+
mutation: gql `
|
|
152
|
+
mutation createUser($user: NewUser!) {
|
|
153
|
+
createUser(user: $user) {
|
|
154
|
+
name
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
`,
|
|
158
|
+
variables: { user },
|
|
159
|
+
context: gqlContext()
|
|
160
|
+
});
|
|
161
|
+
if (!response.errors) {
|
|
162
|
+
await OxPrompt.open({
|
|
163
|
+
title: i18next.t('text.completed'),
|
|
164
|
+
confirmButton: { text: i18next.t('button.confirm') }
|
|
165
|
+
});
|
|
166
|
+
await this.refreshUsers();
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
showToast(message) {
|
|
171
|
+
document.dispatchEvent(new CustomEvent('notify', { detail: { message, option: { timer: 1000 } } }));
|
|
172
|
+
}
|
|
173
|
+
};
|
|
174
|
+
SVUserManagement.styles = [
|
|
175
|
+
css `
|
|
176
|
+
:host {
|
|
177
|
+
display: flex;
|
|
178
|
+
flex-direction: column;
|
|
179
|
+
background-color: var(--main-section-background-color);
|
|
180
|
+
padding: var(--padding-wide);
|
|
181
|
+
overflow: auto;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
@media screen and (max-width: 600px) {
|
|
185
|
+
:host {
|
|
186
|
+
padding: var(--padding-narrow);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
`
|
|
190
|
+
];
|
|
191
|
+
__decorate([
|
|
192
|
+
property({ type: Array }),
|
|
193
|
+
__metadata("design:type", Array)
|
|
194
|
+
], SVUserManagement.prototype, "domainUsers", void 0);
|
|
195
|
+
__decorate([
|
|
196
|
+
property({ type: Object }),
|
|
197
|
+
__metadata("design:type", Object)
|
|
198
|
+
], SVUserManagement.prototype, "owner", void 0);
|
|
199
|
+
__decorate([
|
|
200
|
+
property({ type: String }),
|
|
201
|
+
__metadata("design:type", String)
|
|
202
|
+
], SVUserManagement.prototype, "currentTab", void 0);
|
|
203
|
+
__decorate([
|
|
204
|
+
property({ type: Boolean }),
|
|
205
|
+
__metadata("design:type", Boolean)
|
|
206
|
+
], SVUserManagement.prototype, "passwordResettable", void 0);
|
|
207
|
+
__decorate([
|
|
208
|
+
property({ type: Boolean }),
|
|
209
|
+
__metadata("design:type", Boolean)
|
|
210
|
+
], SVUserManagement.prototype, "userCreatable", void 0);
|
|
211
|
+
__decorate([
|
|
212
|
+
query('#user-list'),
|
|
213
|
+
__metadata("design:type", Object)
|
|
214
|
+
], SVUserManagement.prototype, "userListElement", void 0);
|
|
215
|
+
SVUserManagement = __decorate([
|
|
216
|
+
customElement('sv-user-management')
|
|
217
|
+
], SVUserManagement);
|
|
218
|
+
//# sourceMappingURL=sv-user-management.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sv-user-management.js","sourceRoot":"","sources":["../../client/pages/sv-user-management.ts"],"names":[],"mappings":"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","sourcesContent":["import '@things-factory/component-ui'\nimport '@things-factory/auth-ui/dist-client/components/ownership-transfer-popup'\nimport '@things-factory/auth-ui/dist-client/components/user-role-editor'\nimport '@things-factory/auth-ui/dist-client/components/create-user'\n\nimport gql from 'graphql-tag'\nimport { css, html } from 'lit'\nimport { customElement, property, query } from 'lit/decorators.js'\n\nimport { client, gqlContext } from '@operato/graphql'\nimport { i18next } from '@operato/i18n'\nimport { PageView } from '@operato/shell'\nimport { OxPrompt } from '@operato/popup/ox-prompt.js'\n\n@customElement('sv-user-management')\nclass SVUserManagement extends PageView {\n static styles = [\n css`\n :host {\n display: flex;\n flex-direction: column;\n background-color: var(--main-section-background-color);\n padding: var(--padding-wide);\n overflow: auto;\n }\n\n @media screen and (max-width: 600px) {\n :host {\n padding: var(--padding-narrow);\n }\n }\n `\n ]\n\n @property({ type: Array }) domainUsers: any[] = []\n @property({ type: Object }) owner: any\n @property({ type: String }) currentTab: string = ''\n @property({ type: Boolean }) passwordResettable: boolean = false\n @property({ type: Boolean }) userCreatable: boolean = false\n\n @query('#user-list') userListElement!: HTMLElement & { close: () => void }\n\n get context() {\n return {\n title: i18next.t('text.user management'),\n help: 'auth/users'\n }\n }\n\n render() {\n const groupingUser = (this.domainUsers || []).reduce(\n (groupingUser, user) => {\n const userType = user.userType\n if (!groupingUser[userType]) {\n groupingUser[userType] = []\n }\n user.activated = user.status === 'activated'\n groupingUser[userType].push(user)\n\n return groupingUser\n },\n {\n admin: [],\n user: [],\n application: [],\n appliance: []\n }\n )\n\n const USER_TYPES = {\n USER: i18next.t('label.user'),\n APPLICATION: i18next.t('label.application'),\n APPLIANCE: i18next.t('text.appliance')\n }\n\n const userSet = {\n [USER_TYPES.USER]: [...groupingUser.user, ...groupingUser.admin],\n [USER_TYPES.APPLICATION]: groupingUser.application,\n [USER_TYPES.APPLIANCE]: groupingUser.appliance\n }\n\n return html`\n ${this.userCreatable\n ? html`<create-user\n @create-user=${async event => {\n const user = event.detail\n user.userType = 'user'\n\n await this.createUser(user)\n }}\n ></create-user>`\n : ''}\n <quick-find-list\n id=\"user-list\"\n .data=${userSet}\n @tabChanged=${e => (this.currentTab = e.detail.currentTabKey)}\n .headerRenderer=${user => {\n return html`\n ${!user.activated\n ? html`\n <mwc-icon>do_disturb</mwc-icon>\n ${user.name}\n `\n : html` ${user.owner ? html` <mwc-icon>supervisor_account</mwc-icon> ` : ''} ${user.name} `}\n `\n }}\n .contentRenderer=${user =>\n html` <user-role-editor\n .user=${user}\n .domainOwner=${this.owner}\n .activate=${user.activated}\n @userUpdated=${this.refreshUsers.bind(this)}\n @ownershipTransferred=${this.refreshUsers.bind(this)}\n .passwordResettable=${this.passwordResettable}\n ></user-role-editor>`}\n ></quick-find-list>\n `\n }\n\n async pageUpdated(changes, lifecycle, before) {\n if (this.active) {\n this.refreshUsers()\n this.checkPasswordResettable()\n this.checkUserCreatable()\n }\n }\n\n async refreshUsers() {\n const domainUsersResp = await client.query({\n query: gql`\n query {\n users {\n items {\n id\n name\n email\n userType\n status\n owner\n }\n }\n }\n `,\n context: gqlContext()\n })\n\n if (!domainUsersResp.errors?.length) {\n this.domainUsers = domainUsersResp.data.users.items || []\n this.owner = this.domainUsers.filter(user => user.owner)[0] || {}\n this.userListElement?.close()\n }\n }\n\n async checkPasswordResettable() {\n const response = await client.query({\n query: gql`\n query {\n checkResettablePasswordToDefault\n }\n `\n })\n\n if (!response.errors) {\n this.passwordResettable = response.data.checkResettablePasswordToDefault\n }\n }\n\n async checkUserCreatable() {\n const response = await client.query({\n query: gql`\n query {\n checkDefaultPassword\n }\n `\n })\n\n if (!response.errors) {\n this.userCreatable = response.data.checkDefaultPassword\n }\n }\n\n async createUser(user) {\n if (\n await OxPrompt.open({\n title: i18next.t('text.are_you_sure'),\n text: i18next.t('text.are_you_sure_to_x_user', { x: i18next.t('button.create') }),\n confirmButton: { text: i18next.t('button.confirm') },\n cancelButton: { text: i18next.t('button.cancel') }\n })\n ) {\n const response = await client.mutate({\n mutation: gql`\n mutation createUser($user: NewUser!) {\n createUser(user: $user) {\n name\n }\n }\n `,\n variables: { user },\n context: gqlContext()\n })\n\n if (!response.errors) {\n await OxPrompt.open({\n title: i18next.t('text.completed'),\n confirmButton: { text: i18next.t('button.confirm') }\n })\n\n await this.refreshUsers()\n }\n }\n }\n\n showToast(message) {\n document.dispatchEvent(new CustomEvent('notify', { detail: { message, option: { timer: 1000 } } }))\n }\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export default function route(page: string): "/dashboard" | "users" | undefined;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"route.js","sourceRoot":"","sources":["../client/route.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,UAAU,KAAK,CAAC,IAAY;IACxC,QAAQ,IAAI,EAAE;QACZ,KAAK,EAAE;YACL,OAAO,YAAY,CAAA;QAErB,KAAK,OAAO;YACV,MAAM,CAAC,4BAA4B,CAAC,CAAA;YACpC,OAAO,IAAI,CAAA;KACd;AACH,CAAC","sourcesContent":["export default function route(page: string) {\n switch (page) {\n case '':\n return '/dashboard'\n\n case 'users':\n import('./pages/sv-user-management')\n return page\n }\n}\n"]}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
.dark {
|
|
2
|
+
--md-sys-color-primary: rgb(199 198 200);
|
|
3
|
+
--md-sys-color-surface-tint: rgb(199 198 200);
|
|
4
|
+
--md-sys-color-on-primary: rgb(47 48 50);
|
|
5
|
+
--md-sys-color-primary-container: rgb(34 35 37);
|
|
6
|
+
--md-sys-color-on-primary-container: rgb(174 174 176);
|
|
7
|
+
--md-sys-color-secondary: rgb(199 197 210);
|
|
8
|
+
--md-sys-color-on-secondary: rgb(47 48 58);
|
|
9
|
+
--md-sys-color-secondary-container: rgb(61 61 72);
|
|
10
|
+
--md-sys-color-on-secondary-container: rgb(210 208 222);
|
|
11
|
+
--md-sys-color-tertiary: rgb(158 221 255);
|
|
12
|
+
--md-sys-color-on-tertiary: rgb(0 53 72);
|
|
13
|
+
--md-sys-color-tertiary-container: rgb(45 184 237);
|
|
14
|
+
--md-sys-color-on-tertiary-container: rgb(0 36 50);
|
|
15
|
+
--md-sys-color-error: rgb(255 180 171);
|
|
16
|
+
--md-sys-color-on-error: rgb(105 0 5);
|
|
17
|
+
--md-sys-color-error-container: rgb(147 0 10);
|
|
18
|
+
--md-sys-color-on-error-container: rgb(255 218 214);
|
|
19
|
+
--md-sys-color-background: rgb(20 19 19);
|
|
20
|
+
--md-sys-color-on-background: rgb(229 226 225);
|
|
21
|
+
--md-sys-color-surface: rgb(20 19 19);
|
|
22
|
+
--md-sys-color-on-surface: rgb(229 226 225);
|
|
23
|
+
--md-sys-color-surface-variant: rgb(69 71 74);
|
|
24
|
+
--md-sys-color-on-surface-variant: rgb(198 198 202);
|
|
25
|
+
--md-sys-color-outline: rgb(143 145 148);
|
|
26
|
+
--md-sys-color-outline-variant: rgb(69 71 74);
|
|
27
|
+
--md-sys-color-shadow: rgb(0 0 0);
|
|
28
|
+
--md-sys-color-scrim: rgb(0 0 0);
|
|
29
|
+
--md-sys-color-inverse-surface: rgb(229 226 225);
|
|
30
|
+
--md-sys-color-inverse-on-surface: rgb(49 48 48);
|
|
31
|
+
--md-sys-color-inverse-primary: rgb(94 94 96);
|
|
32
|
+
--md-sys-color-primary-fixed: rgb(227 226 228);
|
|
33
|
+
--md-sys-color-on-primary-fixed: rgb(26 28 29);
|
|
34
|
+
--md-sys-color-primary-fixed-dim: rgb(199 198 200);
|
|
35
|
+
--md-sys-color-on-primary-fixed-variant: rgb(70 71 73);
|
|
36
|
+
--md-sys-color-secondary-fixed: rgb(227 225 239);
|
|
37
|
+
--md-sys-color-on-secondary-fixed: rgb(26 27 36);
|
|
38
|
+
--md-sys-color-secondary-fixed-dim: rgb(199 197 210);
|
|
39
|
+
--md-sys-color-on-secondary-fixed-variant: rgb(70 70 81);
|
|
40
|
+
--md-sys-color-tertiary-fixed: rgb(193 232 255);
|
|
41
|
+
--md-sys-color-on-tertiary-fixed: rgb(0 30 43);
|
|
42
|
+
--md-sys-color-tertiary-fixed-dim: rgb(114 210 255);
|
|
43
|
+
--md-sys-color-on-tertiary-fixed-variant: rgb(0 77 102);
|
|
44
|
+
--md-sys-color-surface-dim: rgb(20 19 19);
|
|
45
|
+
--md-sys-color-surface-bright: rgb(58 57 57);
|
|
46
|
+
--md-sys-color-surface-container-lowest: rgb(14 14 14);
|
|
47
|
+
--md-sys-color-surface-container-low: rgb(28 27 27);
|
|
48
|
+
--md-sys-color-surface-container: rgb(32 31 31);
|
|
49
|
+
--md-sys-color-surface-container-high: rgb(42 42 42);
|
|
50
|
+
--md-sys-color-surface-container-highest: rgb(53 52 52);
|
|
51
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
.light {
|
|
2
|
+
--md-sys-color-primary: rgb(24 26 27);
|
|
3
|
+
--md-sys-color-surface-tint: rgb(94 94 96);
|
|
4
|
+
--md-sys-color-on-primary: rgb(255 255 255);
|
|
5
|
+
--md-sys-color-primary-container: rgb(56 57 59);
|
|
6
|
+
--md-sys-color-on-primary-container: rgb(203 202 205);
|
|
7
|
+
--md-sys-color-secondary: rgb(51 51 61);
|
|
8
|
+
--md-sys-color-on-secondary: rgb(255 255 255);
|
|
9
|
+
--md-sys-color-secondary-container: rgb(85 85 96);
|
|
10
|
+
--md-sys-color-on-secondary-container: rgb(253 250 255);
|
|
11
|
+
--md-sys-color-tertiary: rgb(0 102 135);
|
|
12
|
+
--md-sys-color-on-tertiary: rgb(255 255 255);
|
|
13
|
+
--md-sys-color-tertiary-container: rgb(72 201 254);
|
|
14
|
+
--md-sys-color-on-tertiary-container: rgb(0 51 69);
|
|
15
|
+
--md-sys-color-error: rgb(186 26 26);
|
|
16
|
+
--md-sys-color-on-error: rgb(255 255 255);
|
|
17
|
+
--md-sys-color-error-container: rgb(255 218 214);
|
|
18
|
+
--md-sys-color-on-error-container: rgb(65 0 2);
|
|
19
|
+
--md-sys-color-background: rgb(252 248 248);
|
|
20
|
+
--md-sys-color-on-background: rgb(28 27 27);
|
|
21
|
+
--md-sys-color-surface: rgb(252 248 248);
|
|
22
|
+
--md-sys-color-on-surface: rgb(28 27 27);
|
|
23
|
+
--md-sys-color-surface-variant: rgb(226 226 230);
|
|
24
|
+
--md-sys-color-on-surface-variant: rgb(69 71 74);
|
|
25
|
+
--md-sys-color-outline: rgb(118 119 122);
|
|
26
|
+
--md-sys-color-outline-variant: rgb(198 198 202);
|
|
27
|
+
--md-sys-color-shadow: rgb(0 0 0);
|
|
28
|
+
--md-sys-color-scrim: rgb(0 0 0);
|
|
29
|
+
--md-sys-color-inverse-surface: rgb(49 48 48);
|
|
30
|
+
--md-sys-color-inverse-on-surface: rgb(244 240 239);
|
|
31
|
+
--md-sys-color-inverse-primary: rgb(199 198 200);
|
|
32
|
+
--md-sys-color-primary-fixed: rgb(227 226 228);
|
|
33
|
+
--md-sys-color-on-primary-fixed: rgb(26 28 29);
|
|
34
|
+
--md-sys-color-primary-fixed-dim: rgb(199 198 200);
|
|
35
|
+
--md-sys-color-on-primary-fixed-variant: rgb(70 71 73);
|
|
36
|
+
--md-sys-color-secondary-fixed: rgb(227 225 239);
|
|
37
|
+
--md-sys-color-on-secondary-fixed: rgb(26 27 36);
|
|
38
|
+
--md-sys-color-secondary-fixed-dim: rgb(199 197 210);
|
|
39
|
+
--md-sys-color-on-secondary-fixed-variant: rgb(70 70 81);
|
|
40
|
+
--md-sys-color-tertiary-fixed: rgb(193 232 255);
|
|
41
|
+
--md-sys-color-on-tertiary-fixed: rgb(0 30 43);
|
|
42
|
+
--md-sys-color-tertiary-fixed-dim: rgb(114 210 255);
|
|
43
|
+
--md-sys-color-on-tertiary-fixed-variant: rgb(0 77 102);
|
|
44
|
+
--md-sys-color-surface-dim: rgb(221 217 217);
|
|
45
|
+
--md-sys-color-surface-bright: rgb(252 248 248);
|
|
46
|
+
--md-sys-color-surface-container-lowest: rgb(255 255 255);
|
|
47
|
+
--md-sys-color-surface-container-low: rgb(247 243 242);
|
|
48
|
+
--md-sys-color-surface-container: rgb(241 237 236);
|
|
49
|
+
--md-sys-color-surface-container-high: rgb(235 231 231);
|
|
50
|
+
--md-sys-color-surface-container-highest: rgb(229 226 225);
|
|
51
|
+
}
|