diff --git a/.eslintignore b/.eslintignore index f78c8ac..03b6ea0 100644 --- a/.eslintignore +++ b/.eslintignore @@ -5,3 +5,4 @@ /node_modules .eslintrc.js /quasar.config.*.temporary.compiled* +/src/stores/store-flag.d.ts diff --git a/README.md b/README.md index e3b02d5..0e14fd1 100644 --- a/README.md +++ b/README.md @@ -6,9 +6,13 @@ A simple odoo mobile app ```bash npm install ``` +## Install Quasar CLI +```bash +npm install -g @quasar/cli +``` -### Start the app in development mode (hot-code reloading, error reporting, etc.) +## Start the app in development mode (hot-code reloading, error reporting, etc.) ```bash -npm run dev +quasar dev ``` diff --git a/package-lock.json b/package-lock.json index 1e8dea5..6ad6a9b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2401,6 +2401,21 @@ } } }, + "node_modules/@quasar/app-vite/node_modules/sass": { + "version": "1.32.12", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.32.12.tgz", + "integrity": "sha512-zmXn03k3hN0KaiVTjohgkg98C3UowhL1/VSGdj4/VAAiMKGQOE80PFPxFP2Kyq0OUskPKcY5lImkhBKEHlypJA==", + "dev": true, + "dependencies": { + "chokidar": ">=3.0.0 <4.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=8.9.0" + } + }, "node_modules/@quasar/extras": { "version": "1.16.6", "resolved": "https://registry.npmjs.org/@quasar/extras/-/extras-1.16.6.tgz", @@ -6323,6 +6338,13 @@ "node": ">= 4" } }, + "node_modules/immutable": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.4.tgz", + "integrity": "sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA==", + "optional": true, + "peer": true + }, "node_modules/import-fresh": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", @@ -9466,18 +9488,21 @@ "dev": true }, "node_modules/sass": { - "version": "1.32.12", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.32.12.tgz", - "integrity": "sha512-zmXn03k3hN0KaiVTjohgkg98C3UowhL1/VSGdj4/VAAiMKGQOE80PFPxFP2Kyq0OUskPKcY5lImkhBKEHlypJA==", - "devOptional": true, + "version": "1.69.5", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.69.5.tgz", + "integrity": "sha512-qg2+UCJibLr2LCVOt3OlPhr/dqVHWOa9XtZf2OjbLs/T4VPSJ00udtgJxH3neXZm+QqX8B+3cU7RaLqp1iVfcQ==", + "optional": true, + "peer": true, "dependencies": { - "chokidar": ">=3.0.0 <4.0.0" + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" }, "bin": { "sass": "sass.js" }, "engines": { - "node": ">=8.9.0" + "node": ">=14.0.0" } }, "node_modules/sax": { diff --git a/package.json b/package.json index 992e5ae..9204785 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,7 @@ "private": true, "scripts": { "lint": "eslint --ext .js,.vue ./", - "format": "prettier --write \"**/*.{js,vue,css,html,md,json}\" --ignore-path .gitignore", + "format": "prettier --write \"**/*.{js,vue,scss,html,md,json}\" --ignore-path .gitignore", "test": "echo \"No test specified\" && exit 0", "dev": "quasar dev", "build": "quasar build" diff --git a/public/images/odoo.png b/public/images/odoo.png new file mode 100644 index 0000000..a5ff1e5 Binary files /dev/null and b/public/images/odoo.png differ diff --git a/quasar.config.js b/quasar.config.js index 10b6f53..141fad3 100644 --- a/quasar.config.js +++ b/quasar.config.js @@ -30,7 +30,7 @@ module.exports = configure(function (/* ctx */) { boot: ["pinia"], // https://v2.quasar.dev/quasar-cli-vite/quasar-config-js#css - css: ["app.css"], + css: ["app.scss"], // https://github.com/quasarframework/quasar/tree/dev/extras extras: [ @@ -56,6 +56,16 @@ module.exports = configure(function (/* ctx */) { }, vueRouterMode: "hash", // available values: 'hash', 'history' + + viteOption: { // Vite configuration for CSS and Sass + css : { + preprocessorOptions: { // Configure the Sass preprocessor + sass: { + additionalData: `@import 'src/css/app.sass';` // Include custom Sass data, e.g., variables and mixins + } + } + } + } // vueRouterBase, // vueDevtools, // vueOptionsAPI: false, @@ -89,7 +99,19 @@ module.exports = configure(function (/* ctx */) { // https://v2.quasar.dev/quasar-cli-vite/quasar-config-js#framework framework: { - config: {}, + config: { + dark: "false", + brand: { + primary: "#006783", + secondary: "#6d48b4", + accent: "#5d5b7d", + dark: "#191c1e", + positive: "#21BA45", + negative: "#ba1a1a", + info: "#31CCEC", + warning: "#F2C037", + } + }, // iconSet: 'material-icons', // Quasar icon set // lang: 'en-US', // Quasar language pack @@ -105,6 +127,8 @@ module.exports = configure(function (/* ctx */) { plugins: [ "Notify", "Dark", + "LocalStorage", + "SessionStorage", ], }, diff --git a/src/App.vue b/src/App.vue index 38442ee..662d29a 100644 --- a/src/App.vue +++ b/src/App.vue @@ -3,9 +3,16 @@ diff --git a/src/components/Class/Contacts.vue b/src/components/Class/Contacts.vue new file mode 100644 index 0000000..af8fdee --- /dev/null +++ b/src/components/Class/Contacts.vue @@ -0,0 +1,176 @@ + + + + + + + + + \ No newline at end of file diff --git a/src/components/ContactCard.vue b/src/components/ContactCard.vue index d88185f..15eb339 100644 --- a/src/components/ContactCard.vue +++ b/src/components/ContactCard.vue @@ -1,13 +1,59 @@ @@ -18,6 +64,23 @@ export default { type: Object, required: true } + }, + methods: { + getBase64Image(contact) { + return contact.image_1920 ? `data:image/png;base64,${contact.image_1920}` : null; + }, + getAvatarColor(name) { + const hash = [...name].reduce((acc, char) => char.charCodeAt(0) + ((acc << 5) - acc), 0); + + return colors[Math.abs(hash % colors.length)]; + }, + getInitials(name) { + return name.charAt(0).toUpperCase(); + } + } } + + + diff --git a/src/components/ContactPreview.vue b/src/components/ContactPreview.vue new file mode 100644 index 0000000..5d6c324 --- /dev/null +++ b/src/components/ContactPreview.vue @@ -0,0 +1,25 @@ + + + \ No newline at end of file diff --git a/src/components/SearchBar.vue b/src/components/SearchBar.vue new file mode 100644 index 0000000..87440e8 --- /dev/null +++ b/src/components/SearchBar.vue @@ -0,0 +1,166 @@ + + + \ No newline at end of file diff --git a/src/components/UserModal.vue b/src/components/UserModal.vue new file mode 100644 index 0000000..5a22e5c --- /dev/null +++ b/src/components/UserModal.vue @@ -0,0 +1,67 @@ + + + diff --git a/src/css/app.css b/src/css/app.css deleted file mode 100644 index 0fc2c34..0000000 --- a/src/css/app.css +++ /dev/null @@ -1 +0,0 @@ -/* app global css */ diff --git a/src/css/app.scss b/src/css/app.scss new file mode 100644 index 0000000..fbd0324 --- /dev/null +++ b/src/css/app.scss @@ -0,0 +1,28 @@ +@import "quasar.variables.scss"; +@import "tokens.scss" ; +@import "colors.module.scss"; + +.body.body--dark { + background: $color-background-dark; +} + +.small-screen-only { + @media (max-width: $breakpoint-xs-max) { + display: block + } + @media (max-width: $breakpoint-sm-min) { + display: none + } + +} +.large-screen-only { + @media (max-width: $breakpoint-xs-max) { + display: block + } + @media (max-width: $breakpoint-sm-min) { + display: none + } +} + + + diff --git a/src/css/colors.module.css b/src/css/colors.module.css new file mode 100644 index 0000000..fa072a6 --- /dev/null +++ b/src/css/colors.module.css @@ -0,0 +1,180 @@ +.primary { + background-color: var(--md-sys-color-primary); +} +.primary-text { + color: var(--md-sys-color-primary); +} +.on-primary { + background-color: var(--md-sys-color-on-primary); +} +.on-primary-text { + color: var(--md-sys-color-on-primary); +} +.primary-container { + background-color: var(--md-sys-color-primary-container); +} +.primary-container-text { + color: var(--md-sys-color-primary-container); +} +.on-primary-container { + background-color: var(--md-sys-color-on-primary-container); +} +.on-primary-container-text { + color: var(--md-sys-color-on-primary-container); +} +.secondary { + background-color: var(--md-sys-color-secondary); +} +.secondary-text { + color: var(--md-sys-color-secondary); +} +.on-secondary { + background-color: var(--md-sys-color-on-secondary); +} +.on-secondary-text { + color: var(--md-sys-color-on-secondary); +} +.secondary-container { + background-color: var(--md-sys-color-secondary-container); +} +.secondary-container-text { + color: var(--md-sys-color-secondary-container); +} +.on-secondary-container { + background-color: var(--md-sys-color-on-secondary-container); +} +.on-secondary-container-text { + color: var(--md-sys-color-on-secondary-container); +} +.tertiary { + background-color: var(--md-sys-color-tertiary); +} +.tertiary-text { + color: var(--md-sys-color-tertiary); +} +.on-tertiary { + background-color: var(--md-sys-color-on-tertiary); +} +.on-tertiary-text { + color: var(--md-sys-color-on-tertiary); +} +.tertiary-container { + background-color: var(--md-sys-color-tertiary-container); +} +.tertiary-container-text { + color: var(--md-sys-color-tertiary-container); +} +.on-tertiary-container { + background-color: var(--md-sys-color-on-tertiary-container); +} +.on-tertiary-container-text { + color: var(--md-sys-color-on-tertiary-container); +} +.error { + background-color: var(--md-sys-color-error); +} +.error-text { + color: var(--md-sys-color-error); +} +.error-container { + background-color: var(--md-sys-color-error-container); +} +.error-container-text { + color: var(--md-sys-color-error-container); +} +.on-error { + background-color: var(--md-sys-color-on-error); +} +.on-error-text { + color: var(--md-sys-color-on-error); +} +.on-error-container { + background-color: var(--md-sys-color-on-error-container); +} +.on-error-container-text { + color: var(--md-sys-color-on-error-container); +} +.background { + background-color: var(--md-sys-color-background); +} +.background-text { + color: var(--md-sys-color-background); +} +.on-background { + background-color: var(--md-sys-color-on-background); +} +.on-background-text { + color: var(--md-sys-color-on-background); +} +.surface { + background-color: var(--md-sys-color-surface); +} +.surface-text { + color: var(--md-sys-color-surface); +} +.on-surface { + background-color: var(--md-sys-color-on-surface); +} +.on-surface-text { + color: var(--md-sys-color-on-surface); +} +.surface-variant { + background-color: var(--md-sys-color-surface-variant); +} +.surface-variant-text { + color: var(--md-sys-color-surface-variant); +} +.on-surface-variant { + background-color: var(--md-sys-color-on-surface-variant); +} +.on-surface-variant-text { + color: var(--md-sys-color-on-surface-variant); +} +.outline { + background-color: var(--md-sys-color-outline); +} +.outline-text { + color: var(--md-sys-color-outline); +} +.inverse-on-surface { + background-color: var(--md-sys-color-inverse-on-surface); +} +.inverse-on-surface-text { + color: var(--md-sys-color-inverse-on-surface); +} +.inverse-surface { + background-color: var(--md-sys-color-inverse-surface); +} +.inverse-surface-text { + color: var(--md-sys-color-inverse-surface); +} +.inverse-primary { + background-color: var(--md-sys-color-inverse-primary); +} +.inverse-primary-text { + color: var(--md-sys-color-inverse-primary); +} +.shadow { + background-color: var(--md-sys-color-shadow); +} +.shadow-text { + color: var(--md-sys-color-shadow); +} +.surface-tint { + background-color: var(--md-sys-color-surface-tint); +} +.surface-tint-text { + color: var(--md-sys-color-surface-tint); +} +.outline-variant { + background-color: var(--md-sys-color-outline-variant); +} +.outline-variant-text { + color: var(--md-sys-color-outline-variant); +} +.scrim { + background-color: var(--md-sys-color-scrim); +} +.scrim-text { + color: var(--md-sys-color-scrim); +} diff --git a/src/css/colors.module.scss b/src/css/colors.module.scss new file mode 100644 index 0000000..34ea55b --- /dev/null +++ b/src/css/colors.module.scss @@ -0,0 +1,182 @@ +// @import "quasar.variables.scss"; + +.primary { + background-color: $q-primary; +} +.primary-text { + color: $q-primary; +} +.on-primary { + background-color: $q-primary; +} +.on-primary-text { + color: $q-primary; +} +.primary-container { + background-color: $color-primary-container-light; +} +.primary-container-text { + color: $color-primary-container-light; +} +.on-primary-container { + background-color: $color-on-primary-container-light; +} +.on-primary-container-text { + color: $color-on-primary-container-light; +} +.secondary { + background-color: $q-secondary; +} +.secondary-text { + color: $q-secondary; +} +.on-secondary { + background-color: $color-on-secondary-light; +} +.on-secondary-text { + color: $color-on-secondary-light; +} +.secondary-container { + background-color: $color-secondary-container-light; +} +.secondary-container-text { + color: $color-secondary-container-light; +} +.on-secondary-container { + background-color: $color-on-secondary-container-light; +} +.on-secondary-container-text { + color: $color-on-secondary-container-light; +} +.tertiary { + background-color: $color-tertiary-light; +} +.tertiary-text { + color: $color-tertiary-light; +} +.on-tertiary { + background-color: $color-on-tertiary-light; +} +.on-tertiary-text { + color: $color-on-tertiary-light; +} +.tertiary-container { + background-color: $color-tertiary-container-light; +} +.tertiary-container-text { + color: $color-tertiary-container-light; +} +.on-tertiary-container { + background-color: $color-on-tertiary-container-light; +} +.on-tertiary-container-text { + color: $color-on-tertiary-container-light; +} +.error { + background-color: $q-negative; +} +.error-text { + color: $q-negative; +} +.error-container { + background-color: $color-error-container-light; +} +.error-container-text { + color: $color-error-container-light; +} +.on-error { + background-color: $color-on-error-light; +} +.on-error-text { + color: $color-on-error-light; +} +.on-error-container { + background-color: $color-on-error-container-light; +} +.on-error-container-text { + color: $color-on-error-container-light; +} +.background { + background-color: $color-background-light; +} +.background-text { + color: $color-background-light; +} +.on-background { + background-color: $color-on-background-light; +} +.on-background-text { + color: $color-on-background-light; +} +.surface { + background-color: $color-surface-light; +} +.surface-text { + color: $color-surface-light; +} +.on-surface { + background-color: $color-on-surface-light; +} +.on-surface-text { + color: $color-on-surface-light; +} +.surface-variant { + background-color: $color-surface-variant-light; +} +.surface-variant-text { + color: $color-surface-variant-light; +} +.on-surface-variant { + background-color: $color-on-surface-variant-light; +} +.on-surface-variant-text { + color: $color-on-surface-variant-light; +} +.outline { + background-color: $color-outline-light; +} +.outline-text { + color: $color-outline-light; +} +.inverse-on-surface { + background-color: $color-inverse-on-surface-light; +} +.inverse-on-surface-text { + color: $color-inverse-on-surface-light; +} +.inverse-surface { + background-color: $color-inverse-surface-light; +} +.inverse-surface-text { + color: $color-inverse-surface-light; +} +.inverse-primary { + background-color: $color-inverse-primary-light; +} +.inverse-primary-text { + color: $color-inverse-primary-light; +} +.shadow { + background-color: $color-shadow-light; +} +.shadow-text { + color: $color-shadow-light; +} +.surface-tint { + background-color: $color-surface-tint-light; +} +.surface-tint-text { + color: $color-surface-tint-light; +} +.outline-variant { + background-color: $color-outline-variant-light; +} +.outline-variant-text { + color: $color-outline-variant-light; +} +.scrim { + background-color: $color-scrim-light; +} +.scrim-text { + color: $color-scrim-light; +} diff --git a/src/css/quasar.variables.scss b/src/css/quasar.variables.scss new file mode 100644 index 0000000..e191d52 --- /dev/null +++ b/src/css/quasar.variables.scss @@ -0,0 +1,192 @@ + + +$q-accent: #5d5b7d; +$q-dark: #191c1e; +$q-positive: #21BA45; + +$q-info: #31CCEC; +$q-warning: #F2C037; + + +$q-primary: #006783; +$color-on-primary-light: #ffffff; +$color-primary-container-light: #fdd6ff; +$color-on-primary-container-light: #bde9ff; + +$q-secondary: #6d48b4; +$color-on-secondary-light: #ffffff; +$color-secondary-container-light: #6ff6fe; +$color-on-secondary-container-light: #002022; + +$color-tertiary-light: #8d437f; +$color-on-tertiary-light: #ffffff; +$color-tertiary-container-light: #ffd7f1; +$color-on-tertiary-container-light: #390033; + +$q-negative: #ba1a1a; +$color-error-container-light: #ffdad6; +$color-on-error-light: #ffffff; +$color-on-error-container-light: #410002; + +$color-background-light: #fbfcfe; +$color-on-background-light: #191c1e; + +$color-surface-light: #f8fdff; +$color-on-surface-light: #001f25; + +$color-surface-variant-light: #dce4e9; +$color-on-surface-variant-light: #40484c; + +$color-outline-light: #70787d; + +$color-inverse-on-surface-light: #eff1f3; +$color-inverse-surface-light: #2e3132; +$color-inverse-primary-light: #64d3ff; + +$color-shadow-light: #000000; +$color-surface-tint-light: #006783; +$color-outline-variant-light: #c0c8cd; +$color-scrim-light: #000000; + + +// dark colors + +$color-primary-dark: #64d3ff; +$color-on-primary-dark: #003546; +$color-primary-container-dark: #004d64; +$color-on-primary-container-dark: #bde9ff; + +$color-secondary-dark: #d3bbff; +$color-on-secondary-dark: #3e0f83; +$color-secondary-container-dark: #552e9b; +$color-on-secondary-container-dark: #ebddff; + +$color-tertiary-dark: #c6c2ea; +$color-on-tertiary-dark: #2e2d4d; +$color-tertiary-container-dark: #454364; +$color-on-tertiary-container-dark: #e3dfff; + +$color-error-dark: #ffb4ab; +$color-error-container-dark: #93000a; +$color-on-error-dark: #690005; +$color-on-error-container-dark: #ffdad6; + +$color-background-dark: #001f25; +$color-on-background-dark: #e1e2e4; + +$color-surface-dark: #001f25; +$color-on-surface-dark: #e1e2e4; + +$color-surface-variant-dark: #4d444c; +$color-on-surface-variant-dark: #e1e2e4; + +$color-outline-dark: #988e97; + +$color-inverse-on-surface-dark: #001f25; +$color-inverse-surface-dark: #e1e2e4; +$color-inverse-primary-dark: #006783; + +$color-shadow-dark: #000000; +$color-surface-tint-dark: #64d3ff; +$color-outline-variant-dark: #40484c; +$color-scrim-dark: #000000; + +$display-large-font-family-name: 'Roboto'; +$display-large-font-family-style: 'Regular'; +$display-large-font-weight: 400; +$display-large-font-size: 3.563rem; +$display-large-line-height: 4rem; +$display-large-letter-spacing: -0.25px; + +$display-medium-font-family-name: 'Roboto'; +$display-medium-font-family-style: 'Regular'; +$display-medium-font-weight: 400; +$display-medium-font-size: 2.813rem; +$display-medium-line-height: 3.25rem; +$display-medium-letter-spacing: 0; + +$display-small-font-family-name: 'Roboto'; +$display-small-font-family-style: 'Regular'; +$display-small-font-weight: 400; +$display-small-font-size: 2.25rem; +$display-small-line-height: 2.75rem; +$display-small-letter-spacing: 0; + +$headline-medium-font-family-name: 'Roboto'; +$headline-medium-font-family-style: 'Regular'; +$headline-medium-font-weight: 400; +$headline-medium-font-size: 1.75rem; +$headline-medium-line-height: 2.25rem; +$headline-medium-letter-spacing: 0; + +$headline-small-font-family-name: 'Roboto'; +$headline-small-font-family-style: 'Regular'; +$headline-small-font-weight: 400; +$headline-small-font-size: 1.5rem; +$headline-small-line-height: 2rem; +$headline-small-letter-spacing: 0; + +$body-large-font-family-name: 'Roboto'; +$body-large-font-family-style: 'Regular'; +$body-large-font-weight: 400; +$body-large-font-size: 1rem; +$body-large-line-height: 1.5rem; +$body-large-letter-spacing: 0.05rem; + +$body-medium-font-family-name: 'Roboto'; +$body-medium-font-family-style: 'Regular'; +$body-medium-font-weight: 400; +$body-medium-font-size: 0.875rem; +$body-medium-line-height: 1.25rem; +$body-medium-letter-spacing: 0.025rem; + +$body-small-font-family-name: 'Roboto'; +$body-small-font-family-style: 'Regular'; +$body-small-font-weight: 400; +$body-small-font-size: 0.75rem; +$body-small-line-height: 1rem; +$body-small-letter-spacing: 0.04rem; + +$label-large-font-family-name: 'Roboto'; +$label-large-font-family-style: 'Medium'; +$label-large-font-weight: 500; +$label-large-font-size: 0.875rem; +$label-large-line-height: 1.25rem; +$label-large-letter-spacing: 0.01rem; + +$label-medium-font-family-name: 'Roboto'; +$label-medium-font-family-style: 'Medium'; +$label-medium-font-weight: 500; +$label-medium-font-size: 0.75rem; +$label-medium-line-height: 1rem; +$label-medium-letter-spacing: 0.025rem; + +$label-small-font-family-name: 'Roboto'; +$label-small-font-family-style: 'Medium'; +$label-small-font-weight: 500; +$label-small-font-size: 0.6875rem; +$label-small-line-height: 1rem; +$label-small-letter-spacing: 0.025rem; + +$title-large-font-family-name: 'Roboto'; +$title-large-font-family-style: 'Regular'; +$title-large-font-weight: 400; +$title-large-font-size: 1.375rem; +$title-large-line-height: 1.75rem; +$title-large-letter-spacing: 0; + +$title-medium-font-family-name: 'Roboto'; +$title-medium-font-family-style: 'Medium'; +$title-medium-font-weight: 500; +$title-medium-font-size: 1rem; +$title-medium-line-height: 1.5rem; +$title-medium-letter-spacing: 0.015rem; + +$title-small-font-family-name: 'Roboto'; +$title-small-font-family-style: 'Medium'; +$title-small-font-weight: 500; +$title-small-font-size: 0.875rem; +$title-small-line-height: 1.25rem; +$title-small-letter-spacing: 0.01rem; + + diff --git a/src/css/theme.dark.css b/src/css/theme.dark.css new file mode 100644 index 0000000..2cdd786 --- /dev/null +++ b/src/css/theme.dark.css @@ -0,0 +1,32 @@ +:root { + --md-sys-color-primary: var(--md-sys-color-primary-dark); + --md-sys-color-on-primary: var(--md-sys-color-on-primary-dark); + --md-sys-color-primary-container: var(--md-sys-color-primary-container-dark); + --md-sys-color-on-primary-container: var(--md-sys-color-on-primary-container-dark); + --md-sys-color-secondary: var(--md-sys-color-secondary-dark); + --md-sys-color-on-secondary: var(--md-sys-color-on-secondary-dark); + --md-sys-color-secondary-container: var(--md-sys-color-secondary-container-dark); + --md-sys-color-on-secondary-container: var(--md-sys-color-on-secondary-container-dark); + --md-sys-color-tertiary: var(--md-sys-color-tertiary-dark); + --md-sys-color-on-tertiary: var(--md-sys-color-on-tertiary-dark); + --md-sys-color-tertiary-container: var(--md-sys-color-tertiary-container-dark); + --md-sys-color-on-tertiary-container: var(--md-sys-color-on-tertiary-container-dark); + --md-sys-color-error: var(--md-sys-color-error-dark); + --md-sys-color-error-container: var(--md-sys-color-error-container-dark); + --md-sys-color-on-error: var(--md-sys-color-on-error-dark); + --md-sys-color-on-error-container: var(--md-sys-color-on-error-container-dark); + --md-sys-color-background: var(--md-sys-color-background-dark); + --md-sys-color-on-background: var(--md-sys-color-on-background-dark); + --md-sys-color-surface: var(--md-sys-color-surface-dark); + --md-sys-color-on-surface: var(--md-sys-color-on-surface-dark); + --md-sys-color-surface-variant: var(--md-sys-color-surface-variant-dark); + --md-sys-color-on-surface-variant: var(--md-sys-color-on-surface-variant-dark); + --md-sys-color-outline: var(--md-sys-color-outline-dark); + --md-sys-color-inverse-on-surface: var(--md-sys-color-inverse-on-surface-dark); + --md-sys-color-inverse-surface: var(--md-sys-color-inverse-surface-dark); + --md-sys-color-inverse-primary: var(--md-sys-color-inverse-primary-dark); + --md-sys-color-shadow: var(--md-sys-color-shadow-dark); + --md-sys-color-surface-tint: var(--md-sys-color-surface-tint-dark); + --md-sys-color-outline-variant: var(--md-sys-color-outline-variant-dark); + --md-sys-color-scrim: var(--md-sys-color-scrim-dark); +} diff --git a/src/css/theme.light.css b/src/css/theme.light.css new file mode 100644 index 0000000..6186269 --- /dev/null +++ b/src/css/theme.light.css @@ -0,0 +1,32 @@ +:root { + --md-sys-color-primary: var(--md-sys-color-primary-light); + --md-sys-color-on-primary: var(--md-sys-color-on-primary-light); + --md-sys-color-primary-container: var(--md-sys-color-primary-container-light); + --md-sys-color-on-primary-container: var(--md-sys-color-on-primary-container-light); + --md-sys-color-secondary: var(--md-sys-color-secondary-light); + --md-sys-color-on-secondary: var(--md-sys-color-on-secondary-light); + --md-sys-color-secondary-container: var(--md-sys-color-secondary-container-light); + --md-sys-color-on-secondary-container: var(--md-sys-color-on-secondary-container-light); + --md-sys-color-tertiary: var(--md-sys-color-tertiary-light); + --md-sys-color-on-tertiary: var(--md-sys-color-on-tertiary-light); + --md-sys-color-tertiary-container: var(--md-sys-color-tertiary-container-light); + --md-sys-color-on-tertiary-container: var(--md-sys-color-on-tertiary-container-light); + --md-sys-color-error: var(--md-sys-color-error-light); + --md-sys-color-error-container: var(--md-sys-color-error-container-light); + --md-sys-color-on-error: var(--md-sys-color-on-error-light); + --md-sys-color-on-error-container: var(--md-sys-color-on-error-container-light); + --md-sys-color-background: var(--md-sys-color-background-light); + --md-sys-color-on-background: var(--md-sys-color-on-background-light); + --md-sys-color-surface: var(--md-sys-color-surface-light); + --md-sys-color-on-surface: var(--md-sys-color-on-surface-light); + --md-sys-color-surface-variant: var(--md-sys-color-surface-variant-light); + --md-sys-color-on-surface-variant: var(--md-sys-color-on-surface-variant-light); + --md-sys-color-outline: var(--md-sys-color-outline-light); + --md-sys-color-inverse-on-surface: var(--md-sys-color-inverse-on-surface-light); + --md-sys-color-inverse-surface: var(--md-sys-color-inverse-surface-light); + --md-sys-color-inverse-primary: var(--md-sys-color-inverse-primary-light); + --md-sys-color-shadow: var(--md-sys-color-shadow-light); + --md-sys-color-surface-tint: var(--md-sys-color-surface-tint-light); + --md-sys-color-outline-variant: var(--md-sys-color-outline-variant-light); + --md-sys-color-scrim: var(--md-sys-color-scrim-light); +} diff --git a/src/css/tokens.css b/src/css/tokens.css new file mode 100644 index 0000000..51dddb1 --- /dev/null +++ b/src/css/tokens.css @@ -0,0 +1,272 @@ +:root { + --md-source: #572B61; + /* primary */ + --md-ref-palette-primary0: #000000; + --md-ref-palette-primary10: #340042; + --md-ref-palette-primary20: #4f155e; + --md-ref-palette-primary25: #5b226a; + --md-ref-palette-primary30: #682e76; + --md-ref-palette-primary35: #753a83; + --md-ref-palette-primary40: #824790; + --md-ref-palette-primary50: #9e5faa; + --md-ref-palette-primary60: #ba79c6; + --md-ref-palette-primary70: #d693e2; + --md-ref-palette-primary80: #f4aeff; + --md-ref-palette-primary90: #fdd6ff; + --md-ref-palette-primary95: #ffebfd; + --md-ref-palette-primary98: #fff7fa; + --md-ref-palette-primary99: #fffbff; + --md-ref-palette-primary100: #ffffff; + /* secondary */ + --md-ref-palette-secondary0: #000000; + --md-ref-palette-secondary10: #002022; + --md-ref-palette-secondary20: #003739; + --md-ref-palette-secondary25: #004346; + --md-ref-palette-secondary30: #004f53; + --md-ref-palette-secondary35: #005c60; + --md-ref-palette-secondary40: #00696e; + --md-ref-palette-secondary50: #00848a; + --md-ref-palette-secondary60: #00a0a8; + --md-ref-palette-secondary70: #1dbdc5; + --md-ref-palette-secondary80: #4cd9e1; + --md-ref-palette-secondary90: #6ff6fe; + --md-ref-palette-secondary95: #c1fbff; + --md-ref-palette-secondary98: #e7feff; + --md-ref-palette-secondary99: #f2ffff; + --md-ref-palette-secondary100: #ffffff; + /* tertiary */ + --md-ref-palette-tertiary0: #000000; + --md-ref-palette-tertiary10: #390033; + --md-ref-palette-tertiary20: #57124e; + --md-ref-palette-tertiary25: #641f5a; + --md-ref-palette-tertiary30: #722b66; + --md-ref-palette-tertiary35: #7f3772; + --md-ref-palette-tertiary40: #8d437f; + --md-ref-palette-tertiary50: #aa5c99; + --md-ref-palette-tertiary60: #c775b4; + --md-ref-palette-tertiary70: #e58fd0; + --md-ref-palette-tertiary80: #ffacea; + --md-ref-palette-tertiary90: #ffd7f1; + --md-ref-palette-tertiary95: #ffecf6; + --md-ref-palette-tertiary98: #fff7f9; + --md-ref-palette-tertiary99: #fffbff; + --md-ref-palette-tertiary100: #ffffff; + /* neutral */ + --md-ref-palette-neutral0: #000000; + --md-ref-palette-neutral10: #001f25; + --md-ref-palette-neutral20: #00363f; + --md-ref-palette-neutral25: #00424d; + --md-ref-palette-neutral30: #004e5b; + --md-ref-palette-neutral35: #005b69; + --md-ref-palette-neutral40: #006878; + --md-ref-palette-neutral50: #008396; + --md-ref-palette-neutral60: #009fb6; + --md-ref-palette-neutral70: #29bbd5; + --md-ref-palette-neutral80: #53d7f1; + --md-ref-palette-neutral90: #a6eeff; + --md-ref-palette-neutral95: #d6f6ff; + --md-ref-palette-neutral98: #effbff; + --md-ref-palette-neutral99: #f8fdff; + --md-ref-palette-neutral100: #ffffff; + /* neutral-variant */ + --md-ref-palette-neutral-variant0: #000000; + --md-ref-palette-neutral-variant10: #201920; + --md-ref-palette-neutral-variant20: #362e36; + --md-ref-palette-neutral-variant25: #413941; + --md-ref-palette-neutral-variant30: #4d444c; + --md-ref-palette-neutral-variant35: #585058; + --md-ref-palette-neutral-variant40: #655c64; + --md-ref-palette-neutral-variant50: #7e747d; + --md-ref-palette-neutral-variant60: #988e97; + --md-ref-palette-neutral-variant70: #b3a8b1; + --md-ref-palette-neutral-variant80: #cfc3cd; + --md-ref-palette-neutral-variant90: #ecdfe9; + --md-ref-palette-neutral-variant95: #faedf7; + --md-ref-palette-neutral-variant98: #fff7fa; + --md-ref-palette-neutral-variant99: #fffbff; + --md-ref-palette-neutral-variant100: #ffffff; + /* error */ + --md-ref-palette-error0: #000000; + --md-ref-palette-error10: #410002; + --md-ref-palette-error20: #690005; + --md-ref-palette-error25: #7e0007; + --md-ref-palette-error30: #93000a; + --md-ref-palette-error35: #a80710; + --md-ref-palette-error40: #ba1a1a; + --md-ref-palette-error50: #de3730; + --md-ref-palette-error60: #ff5449; + --md-ref-palette-error70: #ff897d; + --md-ref-palette-error80: #ffb4ab; + --md-ref-palette-error90: #ffdad6; + --md-ref-palette-error95: #ffedea; + --md-ref-palette-error98: #fff8f7; + --md-ref-palette-error99: #fffbff; + --md-ref-palette-error100: #ffffff; + /* light */ + --md-sys-color-primary-light: #824790; + --md-sys-color-on-primary-light: #ffffff; + --md-sys-color-primary-container-light: #fdd6ff; + --md-sys-color-on-primary-container-light: #340042; + --md-sys-color-secondary-light: #00696e; + --md-sys-color-on-secondary-light: #ffffff; + --md-sys-color-secondary-container-light: #6ff6fe; + --md-sys-color-on-secondary-container-light: #002022; + --md-sys-color-tertiary-light: #8d437f; + --md-sys-color-on-tertiary-light: #ffffff; + --md-sys-color-tertiary-container-light: #ffd7f1; + --md-sys-color-on-tertiary-container-light: #390033; + --md-sys-color-error-light: #ba1a1a; + --md-sys-color-error-container-light: #ffdad6; + --md-sys-color-on-error-light: #ffffff; + --md-sys-color-on-error-container-light: #410002; + --md-sys-color-background-light: #f8fdff; + --md-sys-color-on-background-light: #001f25; + --md-sys-color-surface-light: #f8fdff; + --md-sys-color-on-surface-light: #001f25; + --md-sys-color-surface-variant-light: #ecdfe9; + --md-sys-color-on-surface-variant-light: #4d444c; + --md-sys-color-outline-light: #7e747d; + --md-sys-color-inverse-on-surface-light: #d6f6ff; + --md-sys-color-inverse-surface-light: #00363f; + --md-sys-color-inverse-primary-light: #f4aeff; + --md-sys-color-shadow-light: #000000; + --md-sys-color-surface-tint-light: #824790; + --md-sys-color-outline-variant-light: #cfc3cd; + --md-sys-color-scrim-light: #000000; + /* dark */ + --md-sys-color-primary-dark: #f4aeff; + --md-sys-color-on-primary-dark: #4f155e; + --md-sys-color-primary-container-dark: #682e76; + --md-sys-color-on-primary-container-dark: #fdd6ff; + --md-sys-color-secondary-dark: #4cd9e1; + --md-sys-color-on-secondary-dark: #003739; + --md-sys-color-secondary-container-dark: #004f53; + --md-sys-color-on-secondary-container-dark: #6ff6fe; + --md-sys-color-tertiary-dark: #ffacea; + --md-sys-color-on-tertiary-dark: #57124e; + --md-sys-color-tertiary-container-dark: #722b66; + --md-sys-color-on-tertiary-container-dark: #ffd7f1; + --md-sys-color-error-dark: #ffb4ab; + --md-sys-color-error-container-dark: #93000a; + --md-sys-color-on-error-dark: #690005; + --md-sys-color-on-error-container-dark: #ffdad6; + --md-sys-color-background-dark: #001f25; + --md-sys-color-on-background-dark: #a6eeff; + --md-sys-color-surface-dark: #001f25; + --md-sys-color-on-surface-dark: #a6eeff; + --md-sys-color-surface-variant-dark: #4d444c; + --md-sys-color-on-surface-variant-dark: #cfc3cd; + --md-sys-color-outline-dark: #988e97; + --md-sys-color-inverse-on-surface-dark: #001f25; + --md-sys-color-inverse-surface-dark: #a6eeff; + --md-sys-color-inverse-primary-dark: #824790; + --md-sys-color-shadow-dark: #000000; + --md-sys-color-surface-tint-dark: #f4aeff; + --md-sys-color-outline-variant-dark: #4d444c; + --md-sys-color-scrim-dark: #000000; + /* display - large */ + --md-sys-typescale-display-large-font-family-name: Roboto; + --md-sys-typescale-display-large-font-family-style: Regular; + --md-sys-typescale-display-large-font-weight: 400px; + --md-sys-typescale-display-large-font-size: 57px; + --md-sys-typescale-display-large-line-height: 64px; + --md-sys-typescale-display-large-letter-spacing: -0.25px; + /* display - medium */ + --md-sys-typescale-display-medium-font-family-name: Roboto; + --md-sys-typescale-display-medium-font-family-style: Regular; + --md-sys-typescale-display-medium-font-weight: 400px; + --md-sys-typescale-display-medium-font-size: 45px; + --md-sys-typescale-display-medium-line-height: 52px; + --md-sys-typescale-display-medium-letter-spacing: 0px; + /* display - small */ + --md-sys-typescale-display-small-font-family-name: Roboto; + --md-sys-typescale-display-small-font-family-style: Regular; + --md-sys-typescale-display-small-font-weight: 400px; + --md-sys-typescale-display-small-font-size: 36px; + --md-sys-typescale-display-small-line-height: 44px; + --md-sys-typescale-display-small-letter-spacing: 0px; + /* headline - large */ + --md-sys-typescale-headline-large-font-family-name: Roboto; + --md-sys-typescale-headline-large-font-family-style: Regular; + --md-sys-typescale-headline-large-font-weight: 400px; + --md-sys-typescale-headline-large-font-size: 32px; + --md-sys-typescale-headline-large-line-height: 40px; + --md-sys-typescale-headline-large-letter-spacing: 0px; + /* headline - medium */ + --md-sys-typescale-headline-medium-font-family-name: Roboto; + --md-sys-typescale-headline-medium-font-family-style: Regular; + --md-sys-typescale-headline-medium-font-weight: 400px; + --md-sys-typescale-headline-medium-font-size: 28px; + --md-sys-typescale-headline-medium-line-height: 36px; + --md-sys-typescale-headline-medium-letter-spacing: 0px; + /* headline - small */ + --md-sys-typescale-headline-small-font-family-name: Roboto; + --md-sys-typescale-headline-small-font-family-style: Regular; + --md-sys-typescale-headline-small-font-weight: 400px; + --md-sys-typescale-headline-small-font-size: 24px; + --md-sys-typescale-headline-small-line-height: 32px; + --md-sys-typescale-headline-small-letter-spacing: 0px; + /* body - large */ + --md-sys-typescale-body-large-font-family-name: Roboto; + --md-sys-typescale-body-large-font-family-style: Regular; + --md-sys-typescale-body-large-font-weight: 400px; + --md-sys-typescale-body-large-font-size: 16px; + --md-sys-typescale-body-large-line-height: 24px; + --md-sys-typescale-body-large-letter-spacing: 0.50px; + /* body - medium */ + --md-sys-typescale-body-medium-font-family-name: Roboto; + --md-sys-typescale-body-medium-font-family-style: Regular; + --md-sys-typescale-body-medium-font-weight: 400px; + --md-sys-typescale-body-medium-font-size: 14px; + --md-sys-typescale-body-medium-line-height: 20px; + --md-sys-typescale-body-medium-letter-spacing: 0.25px; + /* body - small */ + --md-sys-typescale-body-small-font-family-name: Roboto; + --md-sys-typescale-body-small-font-family-style: Regular; + --md-sys-typescale-body-small-font-weight: 400px; + --md-sys-typescale-body-small-font-size: 12px; + --md-sys-typescale-body-small-line-height: 16px; + --md-sys-typescale-body-small-letter-spacing: 0.40px; + /* label - large */ + --md-sys-typescale-label-large-font-family-name: Roboto; + --md-sys-typescale-label-large-font-family-style: Medium; + --md-sys-typescale-label-large-font-weight: 500px; + --md-sys-typescale-label-large-font-size: 14px; + --md-sys-typescale-label-large-line-height: 20px; + --md-sys-typescale-label-large-letter-spacing: 0.10px; + /* label - medium */ + --md-sys-typescale-label-medium-font-family-name: Roboto; + --md-sys-typescale-label-medium-font-family-style: Medium; + --md-sys-typescale-label-medium-font-weight: 500px; + --md-sys-typescale-label-medium-font-size: 12px; + --md-sys-typescale-label-medium-line-height: 16px; + --md-sys-typescale-label-medium-letter-spacing: 0.50px; + /* label - small */ + --md-sys-typescale-label-small-font-family-name: Roboto; + --md-sys-typescale-label-small-font-family-style: Medium; + --md-sys-typescale-label-small-font-weight: 500px; + --md-sys-typescale-label-small-font-size: 11px; + --md-sys-typescale-label-small-line-height: 16px; + --md-sys-typescale-label-small-letter-spacing: 0.50px; + /* title - large */ + --md-sys-typescale-title-large-font-family-name: Roboto; + --md-sys-typescale-title-large-font-family-style: Regular; + --md-sys-typescale-title-large-font-weight: 400px; + --md-sys-typescale-title-large-font-size: 22px; + --md-sys-typescale-title-large-line-height: 28px; + --md-sys-typescale-title-large-letter-spacing: 0px; + /* title - medium */ + --md-sys-typescale-title-medium-font-family-name: Roboto; + --md-sys-typescale-title-medium-font-family-style: Medium; + --md-sys-typescale-title-medium-font-weight: 500px; + --md-sys-typescale-title-medium-font-size: 16px; + --md-sys-typescale-title-medium-line-height: 24px; + --md-sys-typescale-title-medium-letter-spacing: 0.15px; + /* title - small */ + --md-sys-typescale-title-small-font-family-name: Roboto; + --md-sys-typescale-title-small-font-family-style: Medium; + --md-sys-typescale-title-small-font-weight: 500px; + --md-sys-typescale-title-small-font-size: 14px; + --md-sys-typescale-title-small-line-height: 20px; + --md-sys-typescale-title-small-letter-spacing: 0.10px; +} diff --git a/src/css/tokens.scss b/src/css/tokens.scss new file mode 100644 index 0000000..affaf87 --- /dev/null +++ b/src/css/tokens.scss @@ -0,0 +1,286 @@ +$source: #572B61; + +/* primary */ +$palette-primary0: #000000; +$palette-primary10: #340042; +$palette-primary20: #4f155e; +$palette-primary25: #5b226a; +$palette-primary30: #682e76; +$palette-primary35: #753a83; +$palette-primary40: #824790; +$palette-primary50: #9e5faa; +$palette-primary60: #ba79c6; +$palette-primary70: #d693e2; +$palette-primary80: #f4aeff; +$palette-primary90: #fdd6ff; +$palette-primary95: #ffebfd; +$palette-primary98: #fff7fa; +$palette-primary99: #fffbff; +$palette-primary100: #ffffff; + +/* secondary */ +$palette-secondary0: #000000; +$palette-secondary10: #002022; +$palette-secondary20: #003739; +$palette-secondary25: #004346; +$palette-secondary30: #004f53; +$palette-secondary35: #005c60; +$palette-secondary40: #00696e; +$palette-secondary50: #00848a; +$palette-secondary60: #00a0a8; +$palette-secondary70: #1dbdc5; +$palette-secondary80: #4cd9e1; +$palette-secondary90: #6ff6fe; +$palette-secondary95: #c1fbff; +$palette-secondary98: #e7feff; +$palette-secondary99: #f2ffff; +$palette-secondary100: #ffffff; + +/* tertiary */ +$palette-tertiary0: #000000; +$palette-tertiary10: #390033; +$palette-tertiary20: #57124e; +$palette-tertiary25: #641f5a; +$palette-tertiary30: #722b66; +$palette-tertiary35: #7f3772; +$palette-tertiary40: #8d437f; +$palette-tertiary50: #aa5c99; +$palette-tertiary60: #c775b4; +$palette-tertiary70: #e58fd0; +$palette-tertiary80: #ffacea; +$palette-tertiary90: #ffd7f1; +$palette-tertiary95: #ffecf6; +$palette-tertiary98: #fff7f9; +$palette-tertiary99: #fffbff; +$palette-tertiary100: #ffffff; + +/* neutral */ +$palette-neutral0: #000000; +$palette-neutral10: #001f25; +$palette-neutral20: #00363f; +$palette-neutral25: #00424d; +$palette-neutral30: #004e5b; +$palette-neutral35: #005b69; +$palette-neutral40: #006878; +$palette-neutral50: #008396; +$palette-neutral60: #009fb6; +$palette-neutral70: #29bbd5; +$palette-neutral80: #53d7f1; +$palette-neutral90: #a6eeff; +$palette-neutral95: #d6f6ff; +$palette-neutral98: #effbff; +$palette-neutral99: #f8fdff; +$palette-neutral100: #ffffff; + +/* neutral-variant */ +$palette-neutral-variant0: #000000; +$palette-neutral-variant10: #201920; +$palette-neutral-variant20: #362e36; +$palette-neutral-variant25: #413941; +$palette-neutral-variant30: #4d444c; +$palette-neutral-variant35: #585058; +$palette-neutral-variant40: #655c64; +$palette-neutral-variant50: #7e747d; +$palette-neutral-variant60: #988e97; +$palette-neutral-variant70: #b3a8b1; +$palette-neutral-variant80: #cfc3cd; +$palette-neutral-variant90: #ecdfe9; +$palette-neutral-variant95: #faedf7; +$palette-neutral-variant98: #fff7fa; +$palette-neutral-variant99: #fffbff; +$palette-neutral-variant100: #ffffff; + +/* error */ +$palette-error0: #000000; +$palette-error10: #410002; +$palette-error20: #690005; +$palette-error25: #7e0007; +$palette-error30: #93000a; +$palette-error35: #a80710; +$palette-error40: #ba1a1a; +$palette-error50: #de3730; +$palette-error60: #ff5449; +$palette-error70: #ff897d; +$palette-error80: #ffb4ab; +$palette-error90: #ffdad6; +$palette-error95: #ffedea; +$palette-error98: #fff8f7; +$palette-error99: #fffbff; +$palette-error100: #ffffff; + +/* light */ +$color-primary-light: #824790; +$color-on-primary-light: #ffffff; +$color-primary-container-light: #fdd6ff; +$color-on-primary-container-light: #340042; +$color-secondary-light: #00696e; +$color-on-secondary-light: #ffffff; +$color-secondary-container-light: #6ff6fe; +$color-on-secondary-container-light: #002022; +$color-tertiary-light: #8d437f; +$color-on-tertiary-light: #ffffff; +$color-tertiary-container-light: #ffd7f1; +$color-on-tertiary-container-light: #390033; +$color-error-light: #ba1a1a; +$color-error-container-light: #ffdad6; +$color-on-error-light: #ffffff; +$color-on-error-container-light: #410002; +$color-background-light: #f8fdff; +$color-on-background-light: #001f25; +$color-surface-light: #f8fdff; +$color-on-surface-light: #001f25; +$color-surface-variant-light: #ecdfe9; +$color-on-surface-variant-light: #4d444c; +$color-outline-light: #7e747d; +$color-inverse-on-surface-light: #d6f6ff; +$color-inverse-surface-light: #00363f; +$color-inverse-primary-light: #f4aeff; +$color-shadow-light: #000000; +$color-surface-tint-light: #824790; +$color-outline-variant-light: #cfc3cd; +$color-scrim-light: #000000; + +/* dark */ +$color-primary-dark: #f4aeff; +$color-on-primary-dark: #4f155e; +$color-primary-container-dark: #682e76; +$color-on-primary-container-dark: #fdd6ff; +$color-secondary-dark: #4cd9e1; +$color-on-secondary-dark: #003739; +$color-secondary-container-dark: #004f53; +$color-on-secondary-container-dark: #4cd9e1 ; +$color-on-error-container-dark: #ffdad6; +$color-background-dark: #001f25; +$color-on-background-dark: #a6eeff; +$color-surface-dark: #001f25; +$color-on-surface-dark: #a6eeff; +$color-surface-variant-dark: #4d444c; +$color-on-surface-variant-dark: #cfc3cd; +$color-outline-dark: #988e97; +$color-inverse-on-surface-dark: #001f25; +$color-inverse-surface-dark: #a6eeff; +$color-inverse-primary-dark: #824790; +$color-shadow-dark: #000000; +$color-surface-tint-dark: #f4aeff; +$color-outline-variant-dark: #4d444c; +$color-scrim-dark: #000000; + +/* display - large */ +$typescale-display-large-font-family-name: 'Roboto'; +$typescale-display-large-font-family-style: 'Regular'; +$typescale-display-large-font-weight: 400; +$typescale-display-large-font-size: 3.5625rem; /* 57px / 16px = 3.5625rem */ +$typescale-display-large-line-height: 4rem; /* 64px / 16px = 4rem */ +$typescale-display-large-letter-spacing: -0.25px; + +/* display - medium */ +$typescale-display-medium-font-family-name: 'Roboto'; +$typescale-display-medium-font-family-style: 'Regular'; +$typescale-display-medium-font-weight: 400; +$typescale-display-medium-font-size: 2.8125rem; /* 45px / 16px = 2.8125rem */ +$typescale-display-medium-line-height: 3.25rem; /* 52px / 16px = 3.25rem */ +$typescale-display-medium-letter-spacing: 0; + +/* display - small */ +$typescale-display-small-font-family-name: 'Roboto'; +$typescale-display-small-font-family-style: 'Regular'; +$typescale-display-small-font-weight: 400; +$typescale-display-small-font-size: 2.25rem; /* 36px / 16px = 2.25rem */ +$typescale-display-small-line-height: 2.75rem; /* 44px / 16px = 2.75rem */ +$typescale-display-small-letter-spacing: 0; + +/* headline - large */ +$typescale-headline-large-font-family-name: 'Roboto'; +$typescale-headline-large-font-family-style: 'Regular'; +$typescale-headline-large-font-weight: 400; +$typescale-headline-large-font-size: 2rem; /* 32px / 16px = 2rem */ +$typescale-headline-large-line-height: 2.5rem; /* 40px / 16px = 2.5rem */ +$typescale-headline-large-letter-spacing: 0; + +/* headline - medium */ +$typescale-headline-medium-font-family-name: 'Roboto'; +$typescale-headline-medium-font-family-style: 'Regular'; +$typescale-headline-medium-font-weight: 400; +$typescale-headline-medium-font-size: 1.75rem; /* 28px / 16px = 1.75rem */ +$typescale-headline-medium-line-height: 2.25rem; /* 36px / 16px = 2.25rem */ +$typescale-headline-medium-letter-spacing: 0; + +/* headline - small */ +$typescale-headline-small-font-family-name: 'Roboto'; +$typescale-headline-small-font-family-style: 'Regular'; +$typescale-headline-small-font-weight: 400; +$typescale-headline-small-font-size: 1.5rem; /* 24px / 16px = 1.5rem */ +$typescale-headline-small-line-height: 2rem; /* 32px / 16px = 2rem */ +$typescale-headline-small-letter-spacing: 0; + +/* body - large */ +$typescale-body-large-font-family-name: 'Roboto'; +$typescale-body-large-font-family-style: 'Regular'; +$typescale-body-large-font-weight: 400; +$typescale-body-large-font-size: 1rem; /* 16px / 16px = 1rem */ +$typescale-body-large-line-height: 1.5rem; /* 24px / 16px = 1.5rem */ +$typescale-body-large-letter-spacing: 0.03125rem; /* 0.5px / 16px = 0.03125rem */ + +/* body - medium */ +$typescale-body-medium-font-family-name: 'Roboto'; +$typescale-body-medium-font-family-style: 'Regular'; +$typescale-body-medium-font-weight: 400; +$typescale-body-medium-font-size: 0.875rem; /* 14px / 16px = 0.875rem */ +$typescale-body-medium-line-height: 1.25rem; /* 20px / 16px = 1.25rem */ +$typescale-body-medium-letter-spacing: 0.015625rem; /* 0.25px / 16px = 0.015625rem */ + +/* body - small */ +$typescale-body-small-font-family-name: 'Roboto'; +$typescale-body-small-font-family-style: 'Regular'; +$typescale-body-small-font-weight: 400; +$typescale-body-small-font-size: 0.75rem; /* 12px / 16px = 0.75rem */ +$typescale-body-small-line-height: 1rem; /* 16px / 16px = 1rem */ +$typescale-body-small-letter-spacing: 0.025rem; /* 0.4px / 16px = 0.025rem */ + +/* label - large */ +$typescale-label-large-font-family-name: 'Roboto'; +$typescale-label-large-font-family-style: 'Medium'; +$typescale-label-large-font-weight: 500; +$typescale-label-large-font-size: 1.375rem; /* 22px / 16px = 1.375rem */ +$typescale-label-large-line-height: 1.75rem; /* 28px / 16px = 1.75rem */ +$typescale-label-large-letter-spacing: 0; + +/* label - medium */ +$typescale-label-medium-font-family-name: 'Roboto'; +$typescale-label-medium-font-family-style: 'Medium'; +$typescale-label-medium-font-weight: 500; +$typescale-label-medium-font-size: 0.75rem; /* 12px / 16px = 0.75rem */ +$typescale-label-medium-line-height: 1rem; /* 16px / 16px = 1rem */ +$typescale-label-medium-letter-spacing: 0.03125rem; /* 0.5px / 16px = 0.03125rem */ + +/* label - small */ +$typescale-label-small-font-family-name: 'Roboto'; +$typescale-label-small-font-family-style: 'Medium'; +$typescale-label-small-font-weight: 500; +$typescale-label-small-font-size: 0.6875rem; /* 11px / 16px = 0.6875rem */ +$typescale-label-small-line-height: 1rem; /* 16px / 16px = 1rem */ +$typescale-label-small-letter-spacing: 0.03125rem; /* 0.5px / 16px = 0.03125rem */ + +/* title - large */ +$typescale-title-large-font-family-name: 'Roboto'; +$typescale-title-large-font-family-style: 'Regular'; +$typescale-title-large-font-weight: 400; +$typescale-title-large-font-size: 1.375rem; /* 22px / 16px = 1.375rem */ +$typescale-title-large-line-height: 1.75rem; /* 28px / 16px = 1.75rem */ +$typescale-title-large-letter-spacing: 0; + +/* title - medium */ +$typescale-title-medium-font-family-name: 'Roboto'; +$typescale-title-medium-font-family-style: 'Medium'; +$typescale-title-medium-font-weight: 500; +$typescale-title-medium-font-size: 1rem; /* 16px / 16px = 1rem */ +$typescale-title-medium-line-height: 1.5rem; /* 24px / 16px = 1.5rem */ +$typescale-title-medium-letter-spacing: 0.09375rem; /* 1.5px / 16px = 0.09375rem */ + +/* title - small */ +$typescale-title-small-font-family-name: 'Roboto'; +$typescale-title-small-font-family-style: 'Medium'; +$typescale-title-small-font-weight: 500; +$typescale-title-small-font-size: 0.875rem; /* 14px / 16px = 0.875rem */ +$typescale-title-small-line-height: 1.25rem; /* 20px / 16px = 1.25rem */ +$typescale-title-small-letter-spacing: 0.03125rem; /* 0.5px / 16px = 0.03125rem */ \ No newline at end of file diff --git a/src/css/typography.module.css b/src/css/typography.module.css new file mode 100644 index 0000000..5e2c82f --- /dev/null +++ b/src/css/typography.module.css @@ -0,0 +1,150 @@ +.display-large{ + font-family: var(--md-sys-typescale-display-large-font-family-name); + font-style: var(--md-sys-typescale-display-large-font-family-style); + font-weight: var(--md-sys-typescale-display-large-font-weight); + font-size: var(--md-sys-typescale-display-large-font-size); + letter-spacing: var(--md-sys-typescale-display-large-tracking); + line-height: var(--md-sys-typescale-display-large-height); + text-transform: var(--md-sys-typescale-display-large-text-transform); + text-decoration: var(--md-sys-typescale-display-large-text-decoration); +} +.display-medium{ + font-family: var(--md-sys-typescale-display-medium-font-family-name); + font-style: var(--md-sys-typescale-display-medium-font-family-style); + font-weight: var(--md-sys-typescale-display-medium-font-weight); + font-size: var(--md-sys-typescale-display-medium-font-size); + letter-spacing: var(--md-sys-typescale-display-medium-tracking); + line-height: var(--md-sys-typescale-display-medium-height); + text-transform: var(--md-sys-typescale-display-medium-text-transform); + text-decoration: var(--md-sys-typescale-display-medium-text-decoration); +} +.display-small{ + font-family: var(--md-sys-typescale-display-small-font-family-name); + font-style: var(--md-sys-typescale-display-small-font-family-style); + font-weight: var(--md-sys-typescale-display-small-font-weight); + font-size: var(--md-sys-typescale-display-small-font-size); + letter-spacing: var(--md-sys-typescale-display-small-tracking); + line-height: var(--md-sys-typescale-display-small-height); + text-transform: var(--md-sys-typescale-display-small-text-transform); + text-decoration: var(--md-sys-typescale-display-small-text-decoration); +} +.headline-large{ + font-family: var(--md-sys-typescale-headline-large-font-family-name); + font-style: var(--md-sys-typescale-headline-large-font-family-style); + font-weight: var(--md-sys-typescale-headline-large-font-weight); + font-size: var(--md-sys-typescale-headline-large-font-size); + letter-spacing: var(--md-sys-typescale-headline-large-tracking); + line-height: var(--md-sys-typescale-headline-large-height); + text-transform: var(--md-sys-typescale-headline-large-text-transform); + text-decoration: var(--md-sys-typescale-headline-large-text-decoration); +} +.headline-medium{ + font-family: var(--md-sys-typescale-headline-medium-font-family-name); + font-style: var(--md-sys-typescale-headline-medium-font-family-style); + font-weight: var(--md-sys-typescale-headline-medium-font-weight); + font-size: var(--md-sys-typescale-headline-medium-font-size); + letter-spacing: var(--md-sys-typescale-headline-medium-tracking); + line-height: var(--md-sys-typescale-headline-medium-height); + text-transform: var(--md-sys-typescale-headline-medium-text-transform); + text-decoration: var(--md-sys-typescale-headline-medium-text-decoration); +} +.headline-small{ + font-family: var(--md-sys-typescale-headline-small-font-family-name); + font-style: var(--md-sys-typescale-headline-small-font-family-style); + font-weight: var(--md-sys-typescale-headline-small-font-weight); + font-size: var(--md-sys-typescale-headline-small-font-size); + letter-spacing: var(--md-sys-typescale-headline-small-tracking); + line-height: var(--md-sys-typescale-headline-small-height); + text-transform: var(--md-sys-typescale-headline-small-text-transform); + text-decoration: var(--md-sys-typescale-headline-small-text-decoration); +} +.body-large{ + font-family: var(--md-sys-typescale-body-large-font-family-name); + font-style: var(--md-sys-typescale-body-large-font-family-style); + font-weight: var(--md-sys-typescale-body-large-font-weight); + font-size: var(--md-sys-typescale-body-large-font-size); + letter-spacing: var(--md-sys-typescale-body-large-tracking); + line-height: var(--md-sys-typescale-body-large-height); + text-transform: var(--md-sys-typescale-body-large-text-transform); + text-decoration: var(--md-sys-typescale-body-large-text-decoration); +} +.body-medium{ + font-family: var(--md-sys-typescale-body-medium-font-family-name); + font-style: var(--md-sys-typescale-body-medium-font-family-style); + font-weight: var(--md-sys-typescale-body-medium-font-weight); + font-size: var(--md-sys-typescale-body-medium-font-size); + letter-spacing: var(--md-sys-typescale-body-medium-tracking); + line-height: var(--md-sys-typescale-body-medium-height); + text-transform: var(--md-sys-typescale-body-medium-text-transform); + text-decoration: var(--md-sys-typescale-body-medium-text-decoration); +} +.body-small{ + font-family: var(--md-sys-typescale-body-small-font-family-name); + font-style: var(--md-sys-typescale-body-small-font-family-style); + font-weight: var(--md-sys-typescale-body-small-font-weight); + font-size: var(--md-sys-typescale-body-small-font-size); + letter-spacing: var(--md-sys-typescale-body-small-tracking); + line-height: var(--md-sys-typescale-body-small-height); + text-transform: var(--md-sys-typescale-body-small-text-transform); + text-decoration: var(--md-sys-typescale-body-small-text-decoration); +} +.label-large{ + font-family: var(--md-sys-typescale-label-large-font-family-name); + font-style: var(--md-sys-typescale-label-large-font-family-style); + font-weight: var(--md-sys-typescale-label-large-font-weight); + font-size: var(--md-sys-typescale-label-large-font-size); + letter-spacing: var(--md-sys-typescale-label-large-tracking); + line-height: var(--md-sys-typescale-label-large-height); + text-transform: var(--md-sys-typescale-label-large-text-transform); + text-decoration: var(--md-sys-typescale-label-large-text-decoration); +} +.label-medium{ + font-family: var(--md-sys-typescale-label-medium-font-family-name); + font-style: var(--md-sys-typescale-label-medium-font-family-style); + font-weight: var(--md-sys-typescale-label-medium-font-weight); + font-size: var(--md-sys-typescale-label-medium-font-size); + letter-spacing: var(--md-sys-typescale-label-medium-tracking); + line-height: var(--md-sys-typescale-label-medium-height); + text-transform: var(--md-sys-typescale-label-medium-text-transform); + text-decoration: var(--md-sys-typescale-label-medium-text-decoration); +} +.label-small{ + font-family: var(--md-sys-typescale-label-small-font-family-name); + font-style: var(--md-sys-typescale-label-small-font-family-style); + font-weight: var(--md-sys-typescale-label-small-font-weight); + font-size: var(--md-sys-typescale-label-small-font-size); + letter-spacing: var(--md-sys-typescale-label-small-tracking); + line-height: var(--md-sys-typescale-label-small-height); + text-transform: var(--md-sys-typescale-label-small-text-transform); + text-decoration: var(--md-sys-typescale-label-small-text-decoration); +} +.title-large{ + font-family: var(--md-sys-typescale-title-large-font-family-name); + font-style: var(--md-sys-typescale-title-large-font-family-style); + font-weight: var(--md-sys-typescale-title-large-font-weight); + font-size: var(--md-sys-typescale-title-large-font-size); + letter-spacing: var(--md-sys-typescale-title-large-tracking); + line-height: var(--md-sys-typescale-title-large-height); + text-transform: var(--md-sys-typescale-title-large-text-transform); + text-decoration: var(--md-sys-typescale-title-large-text-decoration); +} +.title-medium{ + font-family: var(--md-sys-typescale-title-medium-font-family-name); + font-style: var(--md-sys-typescale-title-medium-font-family-style); + font-weight: var(--md-sys-typescale-title-medium-font-weight); + font-size: var(--md-sys-typescale-title-medium-font-size); + letter-spacing: var(--md-sys-typescale-title-medium-tracking); + line-height: var(--md-sys-typescale-title-medium-height); + text-transform: var(--md-sys-typescale-title-medium-text-transform); + text-decoration: var(--md-sys-typescale-title-medium-text-decoration); +} +.title-small{ + font-family: var(--md-sys-typescale-title-small-font-family-name); + font-style: var(--md-sys-typescale-title-small-font-family-style); + font-weight: var(--md-sys-typescale-title-small-font-weight); + font-size: var(--md-sys-typescale-title-small-font-size); + letter-spacing: var(--md-sys-typescale-title-small-tracking); + line-height: var(--md-sys-typescale-title-small-height); + text-transform: var(--md-sys-typescale-title-small-text-transform); + text-decoration: var(--md-sys-typescale-title-small-text-decoration); +} diff --git a/src/layouts/LoginLayout.vue b/src/layouts/LoginLayout.vue index 17373c2..ec79f8b 100644 --- a/src/layouts/LoginLayout.vue +++ b/src/layouts/LoginLayout.vue @@ -1,6 +1,6 @@ + + diff --git a/src/layouts/MainLayout.vue b/src/layouts/MainLayout.vue index 9b460ed..1155923 100644 --- a/src/layouts/MainLayout.vue +++ b/src/layouts/MainLayout.vue @@ -1,105 +1,89 @@ +" + \ No newline at end of file diff --git a/src/pages/contact/ContactPage.vue b/src/pages/contact/ContactPage.vue deleted file mode 100644 index e5be8b6..0000000 --- a/src/pages/contact/ContactPage.vue +++ /dev/null @@ -1,264 +0,0 @@ - - - - - diff --git a/src/pages/contacts/ContactsPage.vue b/src/pages/contacts/ContactsPage.vue new file mode 100644 index 0000000..7c33045 --- /dev/null +++ b/src/pages/contacts/ContactsPage.vue @@ -0,0 +1,622 @@ + + + diff --git a/src/pages/core/Dashboard-copy.vue b/src/pages/core/Dashboard-copy.vue deleted file mode 100644 index 0a7fc6d..0000000 --- a/src/pages/core/Dashboard-copy.vue +++ /dev/null @@ -1,331 +0,0 @@ - - - diff --git a/src/pages/core/DashboardPage.vue b/src/pages/core/DashboardPage.vue index 42b8357..c535183 100644 --- a/src/pages/core/DashboardPage.vue +++ b/src/pages/core/DashboardPage.vue @@ -1,18 +1,18 @@