@things-factory/operato-edge 7.0.0-alpha.18

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 (68) hide show
  1. package/.dockerignore +4 -0
  2. package/CHANGELOG.md +8 -0
  3. package/Dockerfile +16 -0
  4. package/README.md +33 -0
  5. package/_index.html +90 -0
  6. package/assets/favicon.ico +0 -0
  7. package/assets/images/spinner.png +0 -0
  8. package/assets/manifest/apple-1024.png +0 -0
  9. package/assets/manifest/apple-120.png +0 -0
  10. package/assets/manifest/apple-152.png +0 -0
  11. package/assets/manifest/apple-167.png +0 -0
  12. package/assets/manifest/apple-180.png +0 -0
  13. package/assets/manifest/apple-touch-icon.png +0 -0
  14. package/assets/manifest/badge-128x128.png +0 -0
  15. package/assets/manifest/chrome-splashscreen-icon-384x384.png +0 -0
  16. package/assets/manifest/chrome-touch-icon-192x192.png +0 -0
  17. package/assets/manifest/icon-128x128.png +0 -0
  18. package/assets/manifest/icon-192x192.png +0 -0
  19. package/assets/manifest/icon-512x512.png +0 -0
  20. package/assets/manifest/icon-72x72.png +0 -0
  21. package/assets/manifest/icon-96x96.png +0 -0
  22. package/assets/manifest/image-metaog.png +0 -0
  23. package/assets/manifest/maskable_icon.png +0 -0
  24. package/assets/manifest/ms-icon-144x144.png +0 -0
  25. package/assets/manifest/ms-touch-icon-144x144-precomposed.png +0 -0
  26. package/assets/manifest.json +27 -0
  27. package/config/config.development.js +6 -0
  28. package/config/config.production.js +47 -0
  29. package/dist-client/bootstrap.d.ts +2 -0
  30. package/dist-client/bootstrap.js +25 -0
  31. package/dist-client/bootstrap.js.map +1 -0
  32. package/dist-client/index.d.ts +0 -0
  33. package/dist-client/index.js +2 -0
  34. package/dist-client/index.js.map +1 -0
  35. package/dist-client/route.d.ts +1 -0
  36. package/dist-client/route.js +7 -0
  37. package/dist-client/route.js.map +1 -0
  38. package/dist-client/themes/app-theme.css +138 -0
  39. package/dist-client/themes/grist-theme.css +200 -0
  40. package/dist-client/themes/layout-theme.css +92 -0
  41. package/dist-client/themes/oops-theme.css +13 -0
  42. package/dist-client/themes/report-theme.css +47 -0
  43. package/dist-client/tsconfig.tsbuildinfo +1 -0
  44. package/dist-server/index.js +5 -0
  45. package/dist-server/index.js.map +1 -0
  46. package/dist-server/middlewares/index.js +6 -0
  47. package/dist-server/middlewares/index.js.map +1 -0
  48. package/dist-server/tsconfig.tsbuildinfo +1 -0
  49. package/helps/index.md +1 -0
  50. package/installer/config.production.js +62 -0
  51. package/installer/config.yaml +4 -0
  52. package/installer/docker-compose.yml +45 -0
  53. package/installer/install.sh +54 -0
  54. package/installer/migrate.sh +1 -0
  55. package/installer/start.sh +18 -0
  56. package/installer/stop.sh +1 -0
  57. package/installer/upgrade.sh +1 -0
  58. package/openapi/unstable.yaml +40 -0
  59. package/package.json +65 -0
  60. package/schema.graphql +4037 -0
  61. package/things-factory.config.js +8 -0
  62. package/translations/en.json +1 -0
  63. package/translations/ja.json +1 -0
  64. package/translations/ko.json +1 -0
  65. package/translations/ms.json +1 -0
  66. package/translations/zh.json +1 -0
  67. package/views/auth-page.html +98 -0
  68. package/views/public/home.html +86 -0
package/.dockerignore ADDED
@@ -0,0 +1,4 @@
1
+ node_modules
2
+ installer
3
+ Dockerfile
4
+ docker-compose.yml
package/CHANGELOG.md ADDED
@@ -0,0 +1,8 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
6
+ and adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
7
+
8
+ <!-- ## [Unreleased] -->
package/Dockerfile ADDED
@@ -0,0 +1,16 @@
1
+ # Use an official ubuntu image
2
+ FROM hatiolab/operato-env:latest
3
+
4
+ # Set the working directory to /app
5
+ WORKDIR /app
6
+
7
+ # copy application & configuration files
8
+ COPY . .
9
+
10
+ # run node install command
11
+ RUN yarn install
12
+
13
+ # Make port 3000 available to the world outside this container
14
+ EXPOSE 3000
15
+
16
+ CMD [ "yarn", "run", "serve" ]
package/README.md ADDED
@@ -0,0 +1,33 @@
1
+ ## Operato EDGE
2
+
3
+ - Operato : Solution family brand of hatiolab.com(http://www.hatiolab.com)
4
+ - EDGE : Edge System (Automation Solution)
5
+
6
+ ## prerequisites
7
+
8
+ - nodejs version 12
9
+
10
+ ## install from docker
11
+
12
+ - operato-edge installation script
13
+
14
+ - create a folder for the application and change directory to your folder.
15
+ - the script will download a& install operato-edge
16
+
17
+ ```
18
+ # install script for operato-edge
19
+ curl -fsSL https://raw.githubusercontent.com/things-factory/things-factory/master/packages/operato-edge/installer/install.sh | bash -s
20
+ ```
21
+
22
+ - run 'start.sh' to start operato-edge and 'stop.sh' to stop the running applicaton.
23
+ - on initial start, run 'migrate.sh' first to migrate database.
24
+
25
+ ```
26
+ # data migration
27
+ $ ./start.sh
28
+ $ ./migrate.sh
29
+ $ ./stop.sh
30
+
31
+ # restart with service port no.
32
+ $ ./start.sh 80
33
+ ```
package/_index.html ADDED
@@ -0,0 +1,90 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8" />
5
+ <meta name="google" content="notranslate" />
6
+ <title>Operato EDGE</title>
7
+ <meta name="generator" content="Things Factory Starter Kit" />
8
+ <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" />
9
+ <meta name="description" content="Reimagining Automation" />
10
+
11
+ <base href="/" />
12
+
13
+ <link rel="icon" href="/assets/favicon.ico" />
14
+
15
+ <!-- See https://goo.gl/OOhYW5 -->
16
+ <link rel="manifest" href="/assets/manifest.json" />
17
+
18
+ <!-- See https://goo.gl/qRE0vM -->
19
+ <meta name="theme-color" content="#3f51b5" />
20
+
21
+ <!-- Add to homescreen for Chrome on Android. Fallback for manifest.json -->
22
+ <meta name="mobile-web-app-capable" content="yes" />
23
+ <meta name="application-name" content="Operato EDGE" />
24
+ <meta name="application-description" content="Reimagining Automation" />
25
+ <meta name="application-copyright" content="Copyright © hatiolab.com. All Rights Reserved." />
26
+ <link rel="application-icon" href="/assets/manifest/icon-96x96.png" />
27
+
28
+ <!-- Add to homescreen for Safari on iOS -->
29
+ <meta name="apple-mobile-web-app-capable" content="yes" />
30
+ <meta name="apple-mobile-web-app-status-bar-style" content="default" />
31
+ <meta name="apple-mobile-web-app-title" content="Operato EDGE" />
32
+
33
+ <!-- Homescreen icons -->
34
+ <link rel="apple-touch-icon" href="/assets/manifest/icon-48x48.png" />
35
+ <link rel="apple-touch-icon" sizes="72x72" href="/assets/manifest/icon-72x72.png" />
36
+ <link rel="apple-touch-icon" sizes="96x96" href="/assets/manifest/icon-96x96.png" />
37
+ <link rel="apple-touch-icon" sizes="144x144" href="/assets/manifest/icon-144x144.png" />
38
+ <link rel="apple-touch-icon" sizes="192x192" href="/assets/manifest/icon-192x192.png" />
39
+
40
+ <!-- Tile icon for Windows 8 (144x144 + tile color) -->
41
+ <meta name="msapplication-TileImage" content="/assets/manifest/icon-144x144.png" />
42
+ <meta name="msapplication-TileColor" content="#3f51b5" />
43
+ <meta name="msapplication-tap-highlight" content="no" />
44
+
45
+ <!-- Default twitter cards -->
46
+ <meta name="twitter:card" content="summary" />
47
+ <meta name="twitter:site" content="@username" />
48
+ <meta property="og:type" content="website" />
49
+ <meta property="og:site_name" content="Operato EDGE, Reimagining Automation." />
50
+ <meta property="og:image" content="/assets/manifest/image-metaog.png" />
51
+
52
+ <!-- Performance tip: hint to the browser to start the handshake for the fonts site -->
53
+ <link rel="preconnect" href="https://fonts.gstatic.com/" crossorigin />
54
+ <link href="/node_modules/@material-design-icons/font/index.css" rel="stylesheet" />
55
+ <style>
56
+ html,
57
+ body {
58
+ margin: 0;
59
+ padding: 0;
60
+ overflow: hidden;
61
+
62
+ overscroll-behavior-y: none;
63
+
64
+ /* This is a font-stack that tries to use the system-default sans-serifs first */
65
+ font-family: Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol';
66
+ line-height: 1.5;
67
+ -webkit-font-smoothing: antialiased;
68
+
69
+ accent-color: var(--primary-color);
70
+ }
71
+ </style>
72
+
73
+ <script>
74
+ if ('serviceWorker' in navigator) {
75
+ navigator.serviceWorker.register('/service-worker.js', {
76
+ scope: '/'
77
+ })
78
+ }
79
+ </script>
80
+ </head>
81
+ <body>
82
+ <things-app></things-app>
83
+ <noscript> Please enable JavaScript to view this website. </noscript>
84
+ <!-- Load webcomponents-loader.js to check and load any polyfills your browser needs -->
85
+ <script src="/node_modules/@webcomponents/webcomponentsjs/webcomponents-loader.js"></script>
86
+ <script src="/node_modules/web-animations-js/web-animations-next.min.js"></script>
87
+ <script src="/node_modules/@hatiolab/things-scene/things-scene-min.js"></script>
88
+ <!-- Built with love using PWA Starter Kit -->
89
+ </body>
90
+ </html>
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -0,0 +1,27 @@
1
+ {
2
+ "name": "Operato EDGE",
3
+ "short_name": "EDGE",
4
+ "description": "Reimagining Automation",
5
+ "icons": [
6
+ {
7
+ "src": "manifest/icon-192x192.png",
8
+ "sizes": "192x192",
9
+ "type": "image/png"
10
+ },
11
+ {
12
+ "src": "manifest/icon-512x512.png",
13
+ "sizes": "512x512",
14
+ "type": "image/png"
15
+ },
16
+ {
17
+ "src": "manifest/maskable_icon.png",
18
+ "sizes": "682x682",
19
+ "type": "image/png",
20
+ "purpose": "maskable"
21
+ }
22
+ ],
23
+ "start_url": "/",
24
+ "display": "standalone",
25
+ "theme_color": "#3f51b5",
26
+ "background_color": "#3f51b5"
27
+ }
@@ -0,0 +1,6 @@
1
+ module.exports = {
2
+ subdomain: 'system',
3
+ port: 4000,
4
+ accessTokenCookieKey: 'access_token.edge',
5
+ publicHomeRoute: '/auth/signin'
6
+ }
@@ -0,0 +1,47 @@
1
+ try {
2
+ var licenseKey = require('./license').Key
3
+ } catch (e) {
4
+ var licenseKey = {}
5
+ }
6
+
7
+ module.exports = {
8
+ protocol: 'http',
9
+ subdomain: 'system',
10
+ accessTokenCookieKey: 'access_token.edge',
11
+ licenseKey: licenseKey,
12
+ publicHomeRoute: '/auth/signin',
13
+ email: {
14
+ host: 'smtp.office365.com', // your sender-email smtp host
15
+ port: 587, // smtp server port
16
+ secure: false, // true for 465, false for other ports
17
+ auth: {
18
+ user: 'your sender-email',
19
+ pass: 'your sender-email password' // generated ethereal password
20
+ },
21
+ secureConnection: false,
22
+ tls: {
23
+ ciphers: 'SSLv3'
24
+ }
25
+ },
26
+ logger: {
27
+ file: {
28
+ filename: 'logs/application-%DATE%.log',
29
+ datePattern: 'YYYY-MM-DD-HH',
30
+ zippedArchive: false,
31
+ maxSize: '20m',
32
+ maxFiles: '2d',
33
+ level: 'info'
34
+ },
35
+ console: {
36
+ level: 'silly'
37
+ }
38
+ },
39
+ ormconfig: {
40
+ name: 'default',
41
+ type: 'sqlite',
42
+ database: 'db.sqlite',
43
+ synchronize: false,
44
+ logging: true,
45
+ logger: 'debug'
46
+ }
47
+ }
@@ -0,0 +1,2 @@
1
+ import '@operato/i18n/ox-i18n.js';
2
+ export default function bootstrap(): Promise<void>;
@@ -0,0 +1,25 @@
1
+ import '@operato/i18n/ox-i18n.js';
2
+ import { setAuthManagementMenus } from '@things-factory/auth-ui';
3
+ import { setupAppToolPart } from '@things-factory/apptool-ui';
4
+ import { setupContextUIPart } from '@things-factory/context-ui';
5
+ console.log(`%c
6
+ ▄▄ ▄▄▄ ▄▄▄ ▄▄▄ ▄▄ ▄▄▄ ▄▄ ▄▄▄▄▄ ▄▄▄▄ ▄▄▄ ▄▄▄▄▄
7
+ ▓ ▓ ▓ ▓ ▓ ▓ ▓ ▓ ▓ ▓ ▓ ▓ ▓ ▓ ▓ ▓ ▓
8
+ ▓ ▓ ▓▀▀ ▓▀▀ ▓▀▀▄ ▓▀▀▓ ▓ ▓ ▓ ▀▀ ▓▀▀▀ ▓ ▓ ▓ ▄▄ ▓▀▀▀
9
+ ▓ ▓ ▓ ▓ ▓ ▓ ▓ ▓ ▓ ▓ ▓ ▓ ▓ ▓ ▓ ▓ ▓
10
+ ▀▀ ▀ ▀▀▀ ▀ ▀ ▀ ▀ ▀ ▀▀ ▀▀▀▀▀ ▀▀▀▀ ▀▀▀ ▀▀▀▀▀
11
+ `, 'background: #222; color: #bada55');
12
+ export default async function bootstrap() {
13
+ await setupAppToolPart({
14
+ toolbar: true,
15
+ busybar: true,
16
+ mdibar: false
17
+ });
18
+ await setupContextUIPart({
19
+ titlebar: 'header',
20
+ contextToolbar: 'page-footer'
21
+ });
22
+ /* set auth management menus into more-panel */
23
+ setAuthManagementMenus();
24
+ }
25
+ //# sourceMappingURL=bootstrap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../client/bootstrap.ts"],"names":[],"mappings":"AAAA,OAAO,0BAA0B,CAAA;AAEjC,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAA;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAA;AAE/D,OAAO,CAAC,GAAG,CACT;;;;;;CAMD,EACC,kCAAkC,CACnC,CAAA;AAED,MAAM,CAAC,OAAO,CAAC,KAAK,UAAU,SAAS;IACrC,MAAM,gBAAgB,CAAC;QACrB,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,KAAK;KACd,CAAC,CAAA;IAEF,MAAM,kBAAkB,CAAC;QACvB,QAAQ,EAAE,QAAQ;QAClB,cAAc,EAAE,aAAa;KAC9B,CAAC,CAAA;IAEF,+CAA+C;IAC/C,sBAAsB,EAAE,CAAA;AAC1B,CAAC","sourcesContent":["import '@operato/i18n/ox-i18n.js'\n\nimport { setAuthManagementMenus } from '@things-factory/auth-ui'\nimport { setupAppToolPart } from '@things-factory/apptool-ui'\nimport { setupContextUIPart } from '@things-factory/context-ui'\n\nconsole.log(\n `%c\n ▄▄ ▄▄▄ ▄▄▄ ▄▄▄ ▄▄ ▄▄▄ ▄▄ ▄▄▄▄▄ ▄▄▄▄ ▄▄▄ ▄▄▄▄▄\n ▓ ▓ ▓ ▓ ▓ ▓ ▓ ▓ ▓ ▓ ▓ ▓ ▓ ▓ ▓ ▓ ▓ \n ▓ ▓ ▓▀▀ ▓▀▀ ▓▀▀▄ ▓▀▀▓ ▓ ▓ ▓ ▀▀ ▓▀▀▀ ▓ ▓ ▓ ▄▄ ▓▀▀▀ \n ▓ ▓ ▓ ▓ ▓ ▓ ▓ ▓ ▓ ▓ ▓ ▓ ▓ ▓ ▓ ▓ ▓ \n ▀▀ ▀ ▀▀▀ ▀ ▀ ▀ ▀ ▀ ▀▀ ▀▀▀▀▀ ▀▀▀▀ ▀▀▀ ▀▀▀▀▀\n`,\n 'background: #222; color: #bada55'\n)\n\nexport default async function bootstrap() {\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 /* set auth management menus into more-panel */\n setAuthManagementMenus()\n}\n"]}
File without changes
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../client/index.ts"],"names":[],"mappings":"","sourcesContent":[""]}
@@ -0,0 +1 @@
1
+ export default function route(page: any): "/edge-status-page" | undefined;
@@ -0,0 +1,7 @@
1
+ export default function route(page) {
2
+ switch (page) {
3
+ case '':
4
+ return '/edge-status-page';
5
+ }
6
+ }
7
+ //# sourceMappingURL=route.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route.js","sourceRoot":"","sources":["../client/route.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,UAAU,KAAK,CAAC,IAAI;IAChC,QAAQ,IAAI,EAAE;QACZ,KAAK,EAAE;YACL,OAAO,mBAAmB,CAAA;KAC7B;AACH,CAAC","sourcesContent":["export default function route(page) {\n switch (page) {\n case '':\n return '/edge-status-page'\n }\n}\n"]}
@@ -0,0 +1,138 @@
1
+ body {
2
+ /* common style */
3
+ --primary-color-rgb: 110, 126, 189;
4
+ --primary-color: rgb(var(--primary-color-rgb));
5
+ --secondary-color-rgb: 76, 82, 107;
6
+ --secondary-color: rgb(var(--secondary-color-rgb));
7
+ --focus-color: var(--theme-white-color);
8
+ --primary-background-color: var(--secondary-color);
9
+ --secondary-background-color: #4c567f;
10
+ --main-section-background-color: #f4f7fb;
11
+ --theme-white-color: #fff;
12
+ --theme-black-color: rgba(0, 0, 0, 0.9);
13
+
14
+ --focus-background-color: var(--primary-color);
15
+ --primary-text-color: var(--secondary-color);
16
+ --secondary-text-color: #475590;
17
+
18
+ --opacity-light-dark-color: rgba(0, 0, 0, 0.1);
19
+ --opacity-dark-color: rgba(0, 0, 0, 0.4);
20
+ --opacity-light-color: rgba(255, 255, 255, 0.8);
21
+
22
+ /* status color */
23
+ --status-success-color: #35a24a;
24
+ --status-warning-color: #ee8d03;
25
+ --status-danger-color: #d14946;
26
+ --stauts-info-color: #398ace;
27
+
28
+ /* common style */
29
+ --border-radius: 3px;
30
+ --border-dark-color: 1px solid rgba(0, 0, 0, 0.15);
31
+ --border-light-color: 1px solid rgba(255, 255, 255, 0.3);
32
+
33
+ --box-shadow: 2px 2px 3px 0px rgba(0, 0, 0, 0.1);
34
+
35
+ --theme-font: 'Noto', Helvetica;
36
+
37
+ --margin-default: 9px;
38
+ --margin-narrow: 4px;
39
+ --margin-wide: 15px;
40
+ --padding-default: var(--margin-default);
41
+ --padding-narrow: var(--margin-narrow);
42
+ --padding-wide: var(--margin-wide);
43
+
44
+ --scrollbar-thumb-color: rgba(57, 78, 100, 0.5);
45
+ --scrollbar-thumb-hover-color: var(--primary-color);
46
+
47
+ --fontsize-default: 14px;
48
+ --fontsize-small: 13px;
49
+ --fontsize-large: 16px;
50
+
51
+ /* app layout style */
52
+ --app-grid-template-area: 'header header header' 'nav main aside' 'nav footer aside';
53
+
54
+ /* title & description style */
55
+ --title-margin: var(--margin-narrow) 0;
56
+ --title-font: bold 24px var(--theme-font);
57
+ --title-text-color: var(--secondary-color);
58
+ --title-font-mobile: bold 20px var(--theme-font);
59
+
60
+ --page-description-margin: var(--margin-narrow) 0 var(--margin-wide) 0;
61
+ --page-description-font: normal var(--fontsize-default) / 1.2rem var(--theme-font);
62
+ --page-description-color: var(--secondary-text-color);
63
+
64
+ --subtitle-padding: 12px 5px 3px 5px;
65
+ --subtitle-font: bold 18px var(--theme-font);
66
+ --subtitle-text-color: var(--primary-color);
67
+ --subtitle-border-bottom: 1px solid var(--primary-color);
68
+
69
+ /* icon style */
70
+ --icon-tiny-size: 24px;
71
+ --icon-default-size: 36px;
72
+ --icon-big-size: 48px;
73
+ --icon-default-color: var(--theme-white-color);
74
+
75
+ /* material design component themes */
76
+ --mdc-theme-on-primary: var(--theme-white-color);
77
+ --mdc-theme-primary: var(--secondary-text-color);
78
+ --mdc-theme-on-secondary: var(--theme-white-color);
79
+ --mdc-theme-secondary: var(--primary-color);
80
+ --mdc-button-outline-color: var(--primary-color);
81
+ --mdc-danger-button-primary-color: var(--status-danger-color);
82
+ --mdc-danger-button-outline-color: var(--status-danger-color);
83
+ --mdc-button-outline-width: 1px;
84
+ --mdc-button-horizontal-padding: 16px;
85
+
86
+ /* button style */
87
+ --button-background-color: #fafbfc;
88
+ --button-border: var(--border-dark-color);
89
+ --button-border-radius: var(--border-radius);
90
+ --button-margin: var(--margin-default) var(--margin-default) var(--margin-default) 0;
91
+ --button-padding: var(--padding-default);
92
+ --button-color: var(--secondary-color);
93
+ --button-font: normal 15px var(--theme-font);
94
+ --button-text-transform: capitalize;
95
+ --button-active-box-shadow: 1px 1px 1px 0px rgba(0, 0, 0, 0.2);
96
+ --button-activ-border: 1px solid var(--primary-color);
97
+
98
+ --button-primary-background-color: var(--primary-color);
99
+ --button-primary-active-background-color: var(--status-success-color);
100
+ --button-primary-padding: var(--margin-default) var(--margin-wide);
101
+ --button-primary-color: var(--theme-white-color);
102
+ --button-primary-font: bold 16px var(--theme-font);
103
+
104
+ /* table style */
105
+ --th-padding: var(--padding-default);
106
+ --th-border-top: 2px solid var(--secondary-color);
107
+ --th-text-transform: capitalize;
108
+ --th-font: bold var(--fontsize-small) var(--theme-font);
109
+ --th-color: rgba(var(--secondary-color-rgb), 0.8);
110
+
111
+ --tr-background-color: var(--theme-white-color);
112
+ --tr-background-odd-color: rgba(255, 255, 255, 0.4);
113
+ --tr-background-hover-color: #e1f5fe;
114
+ --td-border-line: 1px solid rgba(0, 0, 0, 0.05);
115
+ --td-border-bottom: 1px solid rgba(0, 0, 0, 0.09);
116
+ --td-padding: var(--padding-default);
117
+ --td-font: normal 13px var(--theme-font);
118
+ --td-color: var(--secondary-color);
119
+
120
+ --label-cell-background-color: #f6f6f6; /* th or td common background color */
121
+
122
+ /* form style */
123
+ --label-font: normal var(--fontsize-default) var(--theme-font);
124
+ --label-color: var(--secondary-color);
125
+ --label-text-transform: capitalize;
126
+ --input-margin: var(--margin-narrow) 0;
127
+ --input-padding: var(--padding-default);
128
+ --input-min-width: 200px;
129
+ --input-font: normal var(--fontsize-default) var(--theme-font);
130
+ --input-hint-font: normal var(--fontsize-small) var(--theme-font);
131
+ --input-hint-color: #666;
132
+ --input-container-max-width: 900px;
133
+ --fieldset-margin: var(--padding-wide) 0;
134
+ --fieldset-padding: 0 var(--padding-wide) var(--padding-wide) var(--padding-wide);
135
+ --legend-padding: var(--padding-default) 0;
136
+ --legend-color: var(--secondary-text-color);
137
+ --legend-font: bold 16px var(--theme-font);
138
+ }