From ce0b793fd834166daf296e61ffbb1814192fa852 Mon Sep 17 00:00:00 2001
From: Yunus <19399214+yunusefendi52@users.noreply.github.com>
Date: Sun, 31 Mar 2024 05:30:51 +0700
Subject: [PATCH] App Deployin list orgs and apps
---
.dockerignore | 15 +
.eslintrc.js | 17 +
.github/workflows/main_app-deployin.yml | 59 +
.gitignore | 36 +
.prettierrc.json | 10 +
CHANGELOG.md | 26 +
Dockerfile | 15 +
LICENSE.md | 21 +
README.md | 42 +
app.vue | 20 +
assets/css/main.css | 11 +
assets/demo/styles/badges.scss | 81 +
assets/demo/styles/flags/flags.css | 740 ++
assets/demo/styles/items.scss | 13 +
assets/layout/styles/layout/_config.scss | 42 +
assets/layout/styles/layout/_content.scss | 12 +
assets/layout/styles/layout/_footer.scss | 8 +
assets/layout/styles/layout/_main.scss | 27 +
assets/layout/styles/layout/_menu.scss | 155 +
assets/layout/styles/layout/_mixins.scss | 13 +
assets/layout/styles/layout/_preloading.scss | 47 +
assets/layout/styles/layout/_responsive.scss | 100 +
assets/layout/styles/layout/_topbar.scss | 149 +
assets/layout/styles/layout/_typography.scss | 63 +
assets/layout/styles/layout/_utils.scss | 28 +
assets/layout/styles/layout/_variables.scss | 4 +
assets/layout/styles/layout/layout.scss | 12 +
assets/styles.scss | 20 +
bun.lockb | Bin 0 -> 444638 bytes
components/BlockViewer.vue | 213 +
components/CodeHighlight.vue | 4 +
components/CreateAppDialog.vue | 63 +
layouts/AppHeader.vue | 5 +
layouts/AppMenu.vue | 38 +
layouts/default.vue | 23 +
nuxt.config.ts | 59 +
package.json | 51 +
pages/apps.vue | 156 +
pages/index.vue | 34 +
plugins/vue-query.ts | 36 +
prisma/data/app.db | Bin 0 -> 45056 bytes
.../migrations/20240330222807_/migration.sql | 50 +
prisma/migrations/migration_lock.toml | 3 +
prisma/schema.prisma | 50 +
public/favicon.ico | Bin 0 -> 4286 bytes
server/api/add-me-to-org.get.ts | 13 +
server/api/apps.ts | 12 +
server/api/create-app.post.ts | 28 +
server/api/create-org.post.ts | 21 +
server/api/create-user.get.ts | 10 +
server/api/list-apps.get.ts | 43 +
server/api/list-orgs.get.ts | 15 +
server/api/swagger.get.ts | 40 +
server/db.ts | 13 +
server/middleware/auth-middleware.ts | 13 +
server/plugins/startup.ts | 2 +
server/tsconfig.json | 1 +
server/utils/utils.ts | 3 +
service/CountryService.js | 252 +
service/CustomerService.js | 9032 +++++++++++++++++
service/IconService.js | 18 +
service/NodeService.js | 431 +
service/PhotoService.js | 100 +
service/ProductService.js | 1220 +++
stores/useOrgsStore.ts | 14 +
tailwind.config.js | 16 +
tsconfig.json | 6 +
67 files changed, 13874 insertions(+)
create mode 100644 .dockerignore
create mode 100644 .eslintrc.js
create mode 100644 .github/workflows/main_app-deployin.yml
create mode 100644 .gitignore
create mode 100644 .prettierrc.json
create mode 100644 CHANGELOG.md
create mode 100644 Dockerfile
create mode 100644 LICENSE.md
create mode 100644 README.md
create mode 100644 app.vue
create mode 100644 assets/css/main.css
create mode 100644 assets/demo/styles/badges.scss
create mode 100755 assets/demo/styles/flags/flags.css
create mode 100644 assets/demo/styles/items.scss
create mode 100644 assets/layout/styles/layout/_config.scss
create mode 100644 assets/layout/styles/layout/_content.scss
create mode 100644 assets/layout/styles/layout/_footer.scss
create mode 100644 assets/layout/styles/layout/_main.scss
create mode 100644 assets/layout/styles/layout/_menu.scss
create mode 100644 assets/layout/styles/layout/_mixins.scss
create mode 100644 assets/layout/styles/layout/_preloading.scss
create mode 100644 assets/layout/styles/layout/_responsive.scss
create mode 100644 assets/layout/styles/layout/_topbar.scss
create mode 100644 assets/layout/styles/layout/_typography.scss
create mode 100644 assets/layout/styles/layout/_utils.scss
create mode 100644 assets/layout/styles/layout/_variables.scss
create mode 100644 assets/layout/styles/layout/layout.scss
create mode 100644 assets/styles.scss
create mode 100755 bun.lockb
create mode 100644 components/BlockViewer.vue
create mode 100644 components/CodeHighlight.vue
create mode 100644 components/CreateAppDialog.vue
create mode 100644 layouts/AppHeader.vue
create mode 100644 layouts/AppMenu.vue
create mode 100644 layouts/default.vue
create mode 100644 nuxt.config.ts
create mode 100644 package.json
create mode 100644 pages/apps.vue
create mode 100644 pages/index.vue
create mode 100644 plugins/vue-query.ts
create mode 100644 prisma/data/app.db
create mode 100644 prisma/migrations/20240330222807_/migration.sql
create mode 100644 prisma/migrations/migration_lock.toml
create mode 100644 prisma/schema.prisma
create mode 100644 public/favicon.ico
create mode 100644 server/api/add-me-to-org.get.ts
create mode 100644 server/api/apps.ts
create mode 100644 server/api/create-app.post.ts
create mode 100644 server/api/create-org.post.ts
create mode 100644 server/api/create-user.get.ts
create mode 100644 server/api/list-apps.get.ts
create mode 100644 server/api/list-orgs.get.ts
create mode 100644 server/api/swagger.get.ts
create mode 100644 server/db.ts
create mode 100644 server/middleware/auth-middleware.ts
create mode 100644 server/plugins/startup.ts
create mode 100644 server/tsconfig.json
create mode 100644 server/utils/utils.ts
create mode 100755 service/CountryService.js
create mode 100755 service/CustomerService.js
create mode 100644 service/IconService.js
create mode 100755 service/NodeService.js
create mode 100644 service/PhotoService.js
create mode 100644 service/ProductService.js
create mode 100644 stores/useOrgsStore.ts
create mode 100644 tailwind.config.js
create mode 100644 tsconfig.json
diff --git a/.dockerignore b/.dockerignore
new file mode 100644
index 0000000..f965aed
--- /dev/null
+++ b/.dockerignore
@@ -0,0 +1,15 @@
+node_modules
+Dockerfile*
+docker-compose*
+.dockerignore
+.git
+.gitignore
+README.md
+LICENSE
+.vscode
+Makefile
+helm-charts
+.env
+.editorconfig
+.idea
+coverage*
diff --git a/.eslintrc.js b/.eslintrc.js
new file mode 100644
index 0000000..4d9f449
--- /dev/null
+++ b/.eslintrc.js
@@ -0,0 +1,17 @@
+module.exports = {
+ root: true,
+ extends: ['plugin:nuxt/recommended', 'plugin:vue/vue3-essential', 'prettier'],
+ parserOptions: {
+ ecmaVersion: 'latest'
+ },
+ rules: {
+ 'vue/multi-word-component-names': 'off',
+ 'vue/no-reserved-component-names': 'off',
+ 'vue/component-tags-order': [
+ 'error',
+ {
+ order: ['script', 'template', 'style']
+ }
+ ]
+ }
+};
diff --git a/.github/workflows/main_app-deployin.yml b/.github/workflows/main_app-deployin.yml
new file mode 100644
index 0000000..30b9313
--- /dev/null
+++ b/.github/workflows/main_app-deployin.yml
@@ -0,0 +1,59 @@
+# Docs for the Azure Web Apps Deploy action: https://github.com/Azure/webapps-deploy
+# More GitHub Actions for Azure: https://github.com/Azure/actions
+
+name: Build and deploy container app to Azure Web App - app-deployin
+
+on:
+ push:
+ branches:
+ - main
+ workflow_dispatch:
+
+jobs:
+ build:
+ runs-on: "ubuntu-latest"
+
+ steps:
+ - uses: actions/checkout@v2
+
+ - name: Set up Docker Buildx
+ uses: docker/setup-buildx-action@v2
+
+ - name: Log in to registry
+ uses: docker/login-action@v2
+ with:
+ registry: https://index.docker.io/v1/
+ username: ${{ secrets.AzureAppService_ContainerUsername_92269a9228e742668c609122ef562b74 }}
+ password: ${{ secrets.AzureAppService_ContainerPassword_ce8e3ecb93c1473d80f3a247fc90fd46 }}
+
+ - name: Build and push container image to registry
+ uses: docker/build-push-action@v3
+ with:
+ push: true
+ tags: index.docker.io/${{ secrets.AzureAppService_ContainerUsername_92269a9228e742668c609122ef562b74 }}/app-deployin:${{ github.sha }}
+ context: .
+ file: ./Dockerfile
+
+ # deploy:
+ # runs-on: ubuntu-latest
+ # needs: build
+ # environment:
+ # name: 'production'
+ # url: ${{ steps.deploy-to-webapp.outputs.webapp-url }}
+
+ # steps:
+ # - name: Deploy to Azure Web App
+ # id: deploy-to-webapp
+ # uses: azure/webapps-deploy@v2
+ # with:
+ # app-name: 'app-deployin'
+ # slot-name: 'production'
+ # publish-profile: ${{ secrets.AzureAppService_PublishProfile_1f47a7f4f78347d99d7e26bf44511cb0 }}
+ # images: 'index.docker.io/${{ secrets.AzureAppService_ContainerUsername_92269a9228e742668c609122ef562b74 }}/app-deployin:${{ github.sha }}'
+
+ deploy-northflank:
+ runs-on: ubuntu-latest
+ needs: build
+ steps:
+ - name: Deploy to Northflank
+ run: curl -X GET ${{ secrets.NF_WEBHOOK }}?fullImageId=${{ secrets.AzureAppService_ContainerUsername_92269a9228e742668c609122ef562b74 }}/app-deployin:${{ github.sha }}
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..82e79ec
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,36 @@
+# Logs
+logs
+*.log
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+pnpm-debug.log*
+lerna-debug.log*
+.output
+.nuxt
+
+node_modules
+.DS_Store
+dist
+dist-ssr
+coverage
+*.local
+
+/cypress/videos/
+/cypress/screenshots/
+
+# Editor directories and files
+.vscode/*
+!.vscode/extensions.json
+.idea
+*.suo
+*.ntvs*
+*.njsproj
+*.sln
+*.sw?
+
+.env
+.output/
+.wrangler/tmp
+server/prisma-client/
+prisma/app.db*
\ No newline at end of file
diff --git a/.prettierrc.json b/.prettierrc.json
new file mode 100644
index 0000000..3062771
--- /dev/null
+++ b/.prettierrc.json
@@ -0,0 +1,10 @@
+{
+ "useTabs": false,
+ "tabWidth": 4,
+ "trailingComma": "none",
+ "semi": true,
+ "singleQuote": true,
+ "vueIndentScriptAndStyle": false,
+ "printWidth": 250,
+ "bracketSameLine": false
+}
diff --git a/CHANGELOG.md b/CHANGELOG.md
new file mode 100644
index 0000000..9937978
--- /dev/null
+++ b/CHANGELOG.md
@@ -0,0 +1,26 @@
+# Changelog
+
+## 1.2.0 (2024-03-11)
+
+**Migration Guide**
+
+- Update theme files.
+
+**Implemented New Features and Enhancements**
+
+- Upgrade to PrimeVue 3.49.1
+
+## 1.1.0 (2023-11-01)
+
+**Migration Guide**
+
+- Update theme files.
+
+**Implemented New Features and Enhancements**
+
+- Upgrade to PrimeVue 3.39.0
+- nuxt-primevue module added
+
+**Fixed Bugs**
+
+- ripple and inputstyle implementation fixes
diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 0000000..7ffbc21
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,15 @@
+FROM oven/bun:1 as builder
+WORKDIR /builder
+
+COPY package.json bun.lockb /builder/
+RUN bun install --frozen-lockfile
+COPY . .
+RUN bun run prismaGenerate
+
+RUN bun run build
+
+FROM oven/bun:1
+WORKDIR /app
+COPY --from=builder /builder/.output .
+
+ENTRYPOINT [ "bun" "run" "server/index.mjs" ]
diff --git a/LICENSE.md b/LICENSE.md
new file mode 100644
index 0000000..e58be7f
--- /dev/null
+++ b/LICENSE.md
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2018-2022 PrimeTek
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..fa00c26
--- /dev/null
+++ b/README.md
@@ -0,0 +1,42 @@
+# Nuxt 3 Minimal Starter
+
+Look at the [Nuxt 3 documentation](https://nuxt.com/docs/getting-started/introduction) to learn more.
+
+## Setup
+
+Make sure to install the dependencies:
+
+```bash
+# yarn
+yarn install
+
+# npm
+npm install
+
+# pnpm
+pnpm install
+```
+
+## Development Server
+
+Start the development server on `http://localhost:3000`
+
+```bash
+npm run dev
+```
+
+## Production
+
+Build the application for production:
+
+```bash
+npm run build
+```
+
+Locally preview production build:
+
+```bash
+npm run preview
+```
+
+Check out the [deployment documentation](https://nuxt.com/docs/getting-started/deployment) for more information.
diff --git a/app.vue b/app.vue
new file mode 100644
index 0000000..6b0953e
--- /dev/null
+++ b/app.vue
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/css/main.css b/assets/css/main.css
new file mode 100644
index 0000000..b449058
--- /dev/null
+++ b/assets/css/main.css
@@ -0,0 +1,11 @@
+
+@layer tailwind-base, primevue, tailwind-utilities;
+
+@layer tailwind-base {
+ @tailwind base;
+}
+
+@layer tailwind-utilities {
+ @tailwind components;
+ @tailwind utilities;
+}
diff --git a/assets/demo/styles/badges.scss b/assets/demo/styles/badges.scss
new file mode 100644
index 0000000..77355a0
--- /dev/null
+++ b/assets/demo/styles/badges.scss
@@ -0,0 +1,81 @@
+.customer-badge,
+.product-badge,
+.order-badge {
+ border-radius: var(--border-radius);
+ padding: .25em .5rem;
+ text-transform: uppercase;
+ font-weight: 700;
+ font-size: 12px;
+ letter-spacing: .3px;
+}
+
+.product-badge {
+ &.status-instock {
+ background: #C8E6C9;
+ color: #256029;
+ }
+
+ &.status-outofstock {
+ background: #FFCDD2;
+ color: #C63737;
+ }
+
+ &.status-lowstock {
+ background: #FEEDAF;
+ color: #8A5340;
+ }
+}
+
+.customer-badge {
+ &.status-qualified {
+ background: #C8E6C9;
+ color: #256029;
+ }
+
+ &.status-unqualified {
+ background: #FFCDD2;
+ color: #C63737;
+ }
+
+ &.status-negotiation {
+ background: #FEEDAF;
+ color: #8A5340;
+ }
+
+ &.status-new {
+ background: #B3E5FC;
+ color: #23547B;
+ }
+
+ &.status-renewal {
+ background: #ECCFFF;
+ color: #694382;
+ }
+
+ &.status-proposal {
+ background: #FFD8B2;
+ color: #805B36;
+ }
+}
+
+.order-badge {
+ &.order-delivered {
+ background: #C8E6C9;
+ color: #256029;
+ }
+
+ &.order-cancelled {
+ background: #FFCDD2;
+ color: #C63737;
+ }
+
+ &.order-pending {
+ background: #FEEDAF;
+ color: #8A5340;
+ }
+
+ &.order-returned {
+ background: #ECCFFF;
+ color: #694382;
+ }
+}
diff --git a/assets/demo/styles/flags/flags.css b/assets/demo/styles/flags/flags.css
new file mode 100755
index 0000000..d1fa78e
--- /dev/null
+++ b/assets/demo/styles/flags/flags.css
@@ -0,0 +1,740 @@
+span.flag {
+ width: 44px;
+ height: 30px;
+ display: inline-block;
+}
+img.flag {
+ width: 30px;
+}
+.flag {
+ background: url(/demo/images/flag/flags_responsive.png) no-repeat;
+ background-size: 100%;
+ vertical-align: middle;
+}
+.flag-ad {
+ background-position: 0 0.413223%;
+}
+.flag-ae {
+ background-position: 0 0.826446%;
+}
+.flag-af {
+ background-position: 0 1.239669%;
+}
+.flag-ag {
+ background-position: 0 1.652893%;
+}
+.flag-ai {
+ background-position: 0 2.066116%;
+}
+.flag-al {
+ background-position: 0 2.479339%;
+}
+.flag-am {
+ background-position: 0 2.892562%;
+}
+.flag-an {
+ background-position: 0 3.305785%;
+}
+.flag-ao {
+ background-position: 0 3.719008%;
+}
+.flag-aq {
+ background-position: 0 4.132231%;
+}
+.flag-ar {
+ background-position: 0 4.545455%;
+}
+.flag-as {
+ background-position: 0 4.958678%;
+}
+.flag-at {
+ background-position: 0 5.371901%;
+}
+.flag-au {
+ background-position: 0 5.785124%;
+}
+.flag-aw {
+ background-position: 0 6.198347%;
+}
+.flag-az {
+ background-position: 0 6.61157%;
+}
+.flag-ba {
+ background-position: 0 7.024793%;
+}
+.flag-bb {
+ background-position: 0 7.438017%;
+}
+.flag-bd {
+ background-position: 0 7.85124%;
+}
+.flag-be {
+ background-position: 0 8.264463%;
+}
+.flag-bf {
+ background-position: 0 8.677686%;
+}
+.flag-bg {
+ background-position: 0 9.090909%;
+}
+.flag-bh {
+ background-position: 0 9.504132%;
+}
+.flag-bi {
+ background-position: 0 9.917355%;
+}
+.flag-bj {
+ background-position: 0 10.330579%;
+}
+.flag-bm {
+ background-position: 0 10.743802%;
+}
+.flag-bn {
+ background-position: 0 11.157025%;
+}
+.flag-bo {
+ background-position: 0 11.570248%;
+}
+.flag-br {
+ background-position: 0 11.983471%;
+}
+.flag-bs {
+ background-position: 0 12.396694%;
+}
+.flag-bt {
+ background-position: 0 12.809917%;
+}
+.flag-bv {
+ background-position: 0 13.22314%;
+}
+.flag-bw {
+ background-position: 0 13.636364%;
+}
+.flag-by {
+ background-position: 0 14.049587%;
+}
+.flag-bz {
+ background-position: 0 14.46281%;
+}
+.flag-ca {
+ background-position: 0 14.876033%;
+}
+.flag-cc {
+ background-position: 0 15.289256%;
+}
+.flag-cd {
+ background-position: 0 15.702479%;
+}
+.flag-cf {
+ background-position: 0 16.115702%;
+}
+.flag-cg {
+ background-position: 0 16.528926%;
+}
+.flag-ch {
+ background-position: 0 16.942149%;
+}
+.flag-ci {
+ background-position: 0 17.355372%;
+}
+.flag-ck {
+ background-position: 0 17.768595%;
+}
+.flag-cl {
+ background-position: 0 18.181818%;
+}
+.flag-cm {
+ background-position: 0 18.595041%;
+}
+.flag-cn {
+ background-position: 0 19.008264%;
+}
+.flag-co {
+ background-position: 0 19.421488%;
+}
+.flag-cr {
+ background-position: 0 19.834711%;
+}
+.flag-cu {
+ background-position: 0 20.247934%;
+}
+.flag-cv {
+ background-position: 0 20.661157%;
+}
+.flag-cx {
+ background-position: 0 21.07438%;
+}
+.flag-cy {
+ background-position: 0 21.487603%;
+}
+.flag-cz {
+ background-position: 0 21.900826%;
+}
+.flag-de {
+ background-position: 0 22.31405%;
+}
+.flag-dj {
+ background-position: 0 22.727273%;
+}
+.flag-dk {
+ background-position: 0 23.140496%;
+}
+.flag-dm {
+ background-position: 0 23.553719%;
+}
+.flag-do {
+ background-position: 0 23.966942%;
+}
+.flag-dz {
+ background-position: 0 24.380165%;
+}
+.flag-ec {
+ background-position: 0 24.793388%;
+}
+.flag-ee {
+ background-position: 0 25.206612%;
+}
+.flag-eg {
+ background-position: 0 25.619835%;
+}
+.flag-eh {
+ background-position: 0 26.033058%;
+}
+.flag-er {
+ background-position: 0 26.446281%;
+}
+.flag-es {
+ background-position: 0 26.859504%;
+}
+.flag-et {
+ background-position: 0 27.272727%;
+}
+.flag-fi {
+ background-position: 0 27.68595%;
+}
+.flag-fj {
+ background-position: 0 28.099174%;
+}
+.flag-fk {
+ background-position: 0 28.512397%;
+}
+.flag-fm {
+ background-position: 0 28.92562%;
+}
+.flag-fo {
+ background-position: 0 29.338843%;
+}
+.flag-fr {
+ background-position: 0 29.752066%;
+}
+.flag-ga {
+ background-position: 0 30.165289%;
+}
+.flag-gd {
+ background-position: 0 30.578512%;
+}
+.flag-ge {
+ background-position: 0 30.991736%;
+}
+.flag-gf {
+ background-position: 0 31.404959%;
+}
+.flag-gh {
+ background-position: 0 31.818182%;
+}
+.flag-gi {
+ background-position: 0 32.231405%;
+}
+.flag-gl {
+ background-position: 0 32.644628%;
+}
+.flag-gm {
+ background-position: 0 33.057851%;
+}
+.flag-gn {
+ background-position: 0 33.471074%;
+}
+.flag-gp {
+ background-position: 0 33.884298%;
+}
+.flag-gq {
+ background-position: 0 34.297521%;
+}
+.flag-gr {
+ background-position: 0 34.710744%;
+}
+.flag-gs {
+ background-position: 0 35.123967%;
+}
+.flag-gt {
+ background-position: 0 35.53719%;
+}
+.flag-gu {
+ background-position: 0 35.950413%;
+}
+.flag-gw {
+ background-position: 0 36.363636%;
+}
+.flag-gy {
+ background-position: 0 36.77686%;
+}
+.flag-hk {
+ background-position: 0 37.190083%;
+}
+.flag-hm {
+ background-position: 0 37.603306%;
+}
+.flag-hn {
+ background-position: 0 38.016529%;
+}
+.flag-hr {
+ background-position: 0 38.429752%;
+}
+.flag-ht {
+ background-position: 0 38.842975%;
+}
+.flag-hu {
+ background-position: 0 39.256198%;
+}
+.flag-id {
+ background-position: 0 39.669421%;
+}
+.flag-ie {
+ background-position: 0 40.082645%;
+}
+.flag-il {
+ background-position: 0 40.495868%;
+}
+.flag-in {
+ background-position: 0 40.909091%;
+}
+.flag-io {
+ background-position: 0 41.322314%;
+}
+.flag-iq {
+ background-position: 0 41.735537%;
+}
+.flag-ir {
+ background-position: 0 42.14876%;
+}
+.flag-is {
+ background-position: 0 42.561983%;
+}
+.flag-it {
+ background-position: 0 42.975207%;
+}
+.flag-jm {
+ background-position: 0 43.38843%;
+}
+.flag-jo {
+ background-position: 0 43.801653%;
+}
+.flag-jp {
+ background-position: 0 44.214876%;
+}
+.flag-ke {
+ background-position: 0 44.628099%;
+}
+.flag-kg {
+ background-position: 0 45.041322%;
+}
+.flag-kh {
+ background-position: 0 45.454545%;
+}
+.flag-ki {
+ background-position: 0 45.867769%;
+}
+.flag-km {
+ background-position: 0 46.280992%;
+}
+.flag-kn {
+ background-position: 0 46.694215%;
+}
+.flag-kp {
+ background-position: 0 47.107438%;
+}
+.flag-kr {
+ background-position: 0 47.520661%;
+}
+.flag-kw {
+ background-position: 0 47.933884%;
+}
+.flag-ky {
+ background-position: 0 48.347107%;
+}
+.flag-kz {
+ background-position: 0 48.760331%;
+}
+.flag-la {
+ background-position: 0 49.173554%;
+}
+.flag-lb {
+ background-position: 0 49.586777%;
+}
+.flag-lc {
+ background-position: 0 50%;
+}
+.flag-li {
+ background-position: 0 50.413223%;
+}
+.flag-lk {
+ background-position: 0 50.826446%;
+}
+.flag-lr {
+ background-position: 0 51.239669%;
+}
+.flag-ls {
+ background-position: 0 51.652893%;
+}
+.flag-lt {
+ background-position: 0 52.066116%;
+}
+.flag-lu {
+ background-position: 0 52.479339%;
+}
+.flag-lv {
+ background-position: 0 52.892562%;
+}
+.flag-ly {
+ background-position: 0 53.305785%;
+}
+.flag-ma {
+ background-position: 0 53.719008%;
+}
+.flag-mc {
+ background-position: 0 54.132231%;
+}
+.flag-md {
+ background-position: 0 54.545455%;
+}
+.flag-me {
+ background-position: 0 54.958678%;
+}
+.flag-mg {
+ background-position: 0 55.371901%;
+}
+.flag-mh {
+ background-position: 0 55.785124%;
+}
+.flag-mk {
+ background-position: 0 56.198347%;
+}
+.flag-ml {
+ background-position: 0 56.61157%;
+}
+.flag-mm {
+ background-position: 0 57.024793%;
+}
+.flag-mn {
+ background-position: 0 57.438017%;
+}
+.flag-mo {
+ background-position: 0 57.85124%;
+}
+.flag-mp {
+ background-position: 0 58.264463%;
+}
+.flag-mq {
+ background-position: 0 58.677686%;
+}
+.flag-mr {
+ background-position: 0 59.090909%;
+}
+.flag-ms {
+ background-position: 0 59.504132%;
+}
+.flag-mt {
+ background-position: 0 59.917355%;
+}
+.flag-mu {
+ background-position: 0 60.330579%;
+}
+.flag-mv {
+ background-position: 0 60.743802%;
+}
+.flag-mw {
+ background-position: 0 61.157025%;
+}
+.flag-mx {
+ background-position: 0 61.570248%;
+}
+.flag-my {
+ background-position: 0 61.983471%;
+}
+.flag-mz {
+ background-position: 0 62.396694%;
+}
+.flag-na {
+ background-position: 0 62.809917%;
+}
+.flag-nc {
+ background-position: 0 63.22314%;
+}
+.flag-ne {
+ background-position: 0 63.636364%;
+}
+.flag-nf {
+ background-position: 0 64.049587%;
+}
+.flag-ng {
+ background-position: 0 64.46281%;
+}
+.flag-ni {
+ background-position: 0 64.876033%;
+}
+.flag-nl {
+ background-position: 0 65.289256%;
+}
+.flag-no {
+ background-position: 0 65.702479%;
+}
+.flag-np {
+ background-position: 0 66.115702%;
+}
+.flag-nr {
+ background-position: 0 66.528926%;
+}
+.flag-nu {
+ background-position: 0 66.942149%;
+}
+.flag-nz {
+ background-position: 0 67.355372%;
+}
+.flag-om {
+ background-position: 0 67.768595%;
+}
+.flag-pa {
+ background-position: 0 68.181818%;
+}
+.flag-pe {
+ background-position: 0 68.595041%;
+}
+.flag-pf {
+ background-position: 0 69.008264%;
+}
+.flag-pg {
+ background-position: 0 69.421488%;
+}
+.flag-ph {
+ background-position: 0 69.834711%;
+}
+.flag-pk {
+ background-position: 0 70.247934%;
+}
+.flag-pl {
+ background-position: 0 70.661157%;
+}
+.flag-pm {
+ background-position: 0 71.07438%;
+}
+.flag-pn {
+ background-position: 0 71.487603%;
+}
+.flag-pr {
+ background-position: 0 71.900826%;
+}
+.flag-pt {
+ background-position: 0 72.31405%;
+}
+.flag-pw {
+ background-position: 0 72.727273%;
+}
+.flag-py {
+ background-position: 0 73.140496%;
+}
+.flag-qa {
+ background-position: 0 73.553719%;
+}
+.flag-re {
+ background-position: 0 73.966942%;
+}
+.flag-ro {
+ background-position: 0 74.380165%;
+}
+.flag-rs {
+ background-position: 0 74.793388%;
+}
+.flag-ru {
+ background-position: 0 75.206612%;
+}
+.flag-rw {
+ background-position: 0 75.619835%;
+}
+.flag-sa {
+ background-position: 0 76.033058%;
+}
+.flag-sb {
+ background-position: 0 76.446281%;
+}
+.flag-sc {
+ background-position: 0 76.859504%;
+}
+.flag-sd {
+ background-position: 0 77.272727%;
+}
+.flag-se {
+ background-position: 0 77.68595%;
+}
+.flag-sg {
+ background-position: 0 78.099174%;
+}
+.flag-sh {
+ background-position: 0 78.512397%;
+}
+.flag-si {
+ background-position: 0 78.92562%;
+}
+.flag-sj {
+ background-position: 0 79.338843%;
+}
+.flag-sk {
+ background-position: 0 79.752066%;
+}
+.flag-sl {
+ background-position: 0 80.165289%;
+}
+.flag-sm {
+ background-position: 0 80.578512%;
+}
+.flag-sn {
+ background-position: 0 80.991736%;
+}
+.flag-so {
+ background-position: 0 81.404959%;
+}
+.flag-sr {
+ background-position: 0 81.818182%;
+}
+.flag-ss {
+ background-position: 0 82.231405%;
+}
+.flag-st {
+ background-position: 0 82.644628%;
+}
+.flag-sv {
+ background-position: 0 83.057851%;
+}
+.flag-sy {
+ background-position: 0 83.471074%;
+}
+.flag-sz {
+ background-position: 0 83.884298%;
+}
+.flag-tc {
+ background-position: 0 84.297521%;
+}
+.flag-td {
+ background-position: 0 84.710744%;
+}
+.flag-tf {
+ background-position: 0 85.123967%;
+}
+.flag-tg {
+ background-position: 0 85.53719%;
+}
+.flag-th {
+ background-position: 0 85.950413%;
+}
+.flag-tj {
+ background-position: 0 86.363636%;
+}
+.flag-tk {
+ background-position: 0 86.77686%;
+}
+.flag-tl {
+ background-position: 0 87.190083%;
+}
+.flag-tm {
+ background-position: 0 87.603306%;
+}
+.flag-tn {
+ background-position: 0 88.016529%;
+}
+.flag-to {
+ background-position: 0 88.429752%;
+}
+.flag-tp {
+ background-position: 0 88.842975%;
+}
+.flag-tr {
+ background-position: 0 89.256198%;
+}
+.flag-tt {
+ background-position: 0 89.669421%;
+}
+.flag-tv {
+ background-position: 0 90.082645%;
+}
+.flag-tw {
+ background-position: 0 90.495868%;
+}
+.flag-ty {
+ background-position: 0 90.909091%;
+}
+.flag-tz {
+ background-position: 0 91.322314%;
+}
+.flag-ua {
+ background-position: 0 91.735537%;
+}
+.flag-ug {
+ background-position: 0 92.14876%;
+}
+.flag-gb,
+.flag-uk {
+ background-position: 0 92.561983%;
+}
+.flag-um {
+ background-position: 0 92.975207%;
+}
+.flag-us {
+ background-position: 0 93.38843%;
+}
+.flag-uy {
+ background-position: 0 93.801653%;
+}
+.flag-uz {
+ background-position: 0 94.214876%;
+}
+.flag-va {
+ background-position: 0 94.628099%;
+}
+.flag-vc {
+ background-position: 0 95.041322%;
+}
+.flag-ve {
+ background-position: 0 95.454545%;
+}
+.flag-vg {
+ background-position: 0 95.867769%;
+}
+.flag-vi {
+ background-position: 0 96.280992%;
+}
+.flag-vn {
+ background-position: 0 96.694215%;
+}
+.flag-vu {
+ background-position: 0 97.107438%;
+}
+.flag-wf {
+ background-position: 0 97.520661%;
+}
+.flag-ws {
+ background-position: 0 97.933884%;
+}
+.flag-ye {
+ background-position: 0 98.347107%;
+}
+.flag-za {
+ background-position: 0 98.760331%;
+}
+.flag-zm {
+ background-position: 0 99.173554%;
+}
+.flag-zr {
+ background-position: 0 99.586777%;
+}
+.flag-zw {
+ background-position: 0 100%;
+}
diff --git a/assets/demo/styles/items.scss b/assets/demo/styles/items.scss
new file mode 100644
index 0000000..67eb9f8
--- /dev/null
+++ b/assets/demo/styles/items.scss
@@ -0,0 +1,13 @@
+.product-item {
+ .product-item-content {
+ border: 1px solid var(--surface-d);
+ border-radius: 3px;
+ margin: 0.3rem;
+ text-align: center;
+ padding: 2rem 0;
+ }
+ .product-image {
+ width: 50%;
+ box-shadow: 0 3px 6px rgba(0, 0, 0, 0.16), 0 3px 6px rgba(0, 0, 0, 0.23);
+ }
+}
diff --git a/assets/layout/styles/layout/_config.scss b/assets/layout/styles/layout/_config.scss
new file mode 100644
index 0000000..43cacc3
--- /dev/null
+++ b/assets/layout/styles/layout/_config.scss
@@ -0,0 +1,42 @@
+.layout-config-button {
+ display: block;
+ position: fixed;
+ width: 3rem;
+ height: 3rem;
+ line-height: 3rem;
+ background: var(--primary-color);
+ color: var(--primary-color-text);
+ text-align: center;
+ top: 50%;
+ right: 0;
+ margin-top: -1.5rem;
+ border-top-left-radius: var(--border-radius);
+ border-bottom-left-radius: var(--border-radius);
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 0;
+ transition: background-color var(--transition-duration);
+ overflow: hidden;
+ cursor: pointer;
+ z-index: 999;
+ box-shadow: -.25rem 0 1rem rgba(0,0,0,.15);
+
+ i {
+ font-size: 2rem;
+ line-height: inherit;
+ transform: rotate(0deg);
+ transition: transform 1s;
+ }
+
+ &:hover {
+ background: var(--primary-400);
+ }
+}
+
+.layout-config-sidebar {
+ &.p-sidebar {
+ .p-sidebar-content {
+ padding-left: 2rem;
+ padding-right: 2rem;
+ }
+ }
+}
diff --git a/assets/layout/styles/layout/_content.scss b/assets/layout/styles/layout/_content.scss
new file mode 100644
index 0000000..2c40e1d
--- /dev/null
+++ b/assets/layout/styles/layout/_content.scss
@@ -0,0 +1,12 @@
+.layout-main-container {
+ display: flex;
+ flex-direction: column;
+ min-height: 100vh;
+ justify-content: space-between;
+ padding: 7rem 2rem 2rem 4rem;
+ transition: margin-left $transitionDuration;
+}
+
+.layout-main {
+ flex: 1 1 auto;
+}
diff --git a/assets/layout/styles/layout/_footer.scss b/assets/layout/styles/layout/_footer.scss
new file mode 100644
index 0000000..367d312
--- /dev/null
+++ b/assets/layout/styles/layout/_footer.scss
@@ -0,0 +1,8 @@
+.layout-footer {
+ transition: margin-left $transitionDuration;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ padding-top: 1rem;
+ border-top: 1px solid var(--surface-border);
+}
diff --git a/assets/layout/styles/layout/_main.scss b/assets/layout/styles/layout/_main.scss
new file mode 100644
index 0000000..dd9ac50
--- /dev/null
+++ b/assets/layout/styles/layout/_main.scss
@@ -0,0 +1,27 @@
+* {
+ box-sizing: border-box;
+}
+
+html {
+ height: 100%;
+ font-size: $scale;
+}
+
+body {
+ font-family: var(--font-family);
+ color: var(--text-color);
+ background-color: var(--surface-ground);
+ margin: 0;
+ padding: 0;
+ min-height: 100%;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+
+a {
+ text-decoration: none;
+}
+
+.layout-wrapper {
+ min-height: 100vh;
+}
diff --git a/assets/layout/styles/layout/_menu.scss b/assets/layout/styles/layout/_menu.scss
new file mode 100644
index 0000000..d82f48a
--- /dev/null
+++ b/assets/layout/styles/layout/_menu.scss
@@ -0,0 +1,155 @@
+.layout-sidebar {
+ position: fixed;
+ width: 300px;
+ height: calc(100vh - 9rem);
+ z-index: 999;
+ overflow-y: auto;
+ user-select: none;
+ top: 7rem;
+ left: 2rem;
+ transition: transform $transitionDuration, left $transitionDuration;
+ background-color: var(--surface-overlay);
+ border-radius: $borderRadius;
+ padding: 0.5rem 1rem;
+ box-shadow: 0px 3px 5px rgba(0, 0, 0, 0.02), 0px 0px 2px rgba(0, 0, 0, 0.05), 0px 1px 4px rgba(0, 0, 0, 0.08);
+}
+
+.layout-menu {
+ margin: 0;
+ padding: 0;
+ list-style-type: none;
+
+ .layout-root-menuitem {
+ > .layout-menuitem-root-text {
+ font-size: 0.857rem;
+ text-transform: uppercase;
+ font-weight: 700;
+ color: var(--surface-900);
+ margin: 0.75rem 0;
+ }
+
+ > a {
+ display: none;
+ }
+ }
+
+ a {
+ user-select: none;
+
+ &.active-menuitem {
+ > .layout-submenu-toggler {
+ transform: rotate(-180deg);
+ }
+ }
+ }
+
+ li.active-menuitem {
+ > a {
+ .layout-submenu-toggler {
+ transform: rotate(-180deg);
+ }
+ }
+ }
+
+ ul {
+ margin: 0;
+ padding: 0;
+ list-style-type: none;
+
+ a {
+ display: flex;
+ align-items: center;
+ position: relative;
+ outline: 0 none;
+ color: var(--text-color);
+ cursor: pointer;
+ padding: 0.75rem 1rem;
+ border-radius: $borderRadius;
+ transition: background-color $transitionDuration, box-shadow $transitionDuration;
+
+ .layout-menuitem-icon {
+ margin-right: 0.5rem;
+ }
+
+ .layout-submenu-toggler {
+ font-size: 75%;
+ margin-left: auto;
+ transition: transform $transitionDuration;
+ }
+
+ &.active-route {
+ font-weight: 700;
+ color: var(--primary-color);
+ }
+
+ &:hover {
+ background-color: var(--surface-hover);
+ }
+
+ &:focus {
+ @include focused-inset();
+ }
+ }
+
+ ul {
+ overflow: hidden;
+ border-radius: $borderRadius;
+
+ li {
+ a {
+ margin-left: 1rem;
+ }
+
+ li {
+ a {
+ margin-left: 2rem;
+ }
+
+ li {
+ a {
+ margin-left: 2.5rem;
+ }
+
+ li {
+ a {
+ margin-left: 3rem;
+ }
+
+ li {
+ a {
+ margin-left: 3.5rem;
+ }
+
+ li {
+ a {
+ margin-left: 4rem;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
+
+.layout-submenu-enter-from,
+.layout-submenu-leave-to {
+ max-height: 0;
+}
+
+.layout-submenu-enter-to,
+.layout-submenu-leave-from {
+ max-height: 1000px;
+}
+
+.layout-submenu-leave-active {
+ overflow: hidden;
+ transition: max-height 0.45s cubic-bezier(0, 1, 0, 1);
+}
+
+.layout-submenu-enter-active {
+ overflow: hidden;
+ transition: max-height 1s ease-in-out;
+}
diff --git a/assets/layout/styles/layout/_mixins.scss b/assets/layout/styles/layout/_mixins.scss
new file mode 100644
index 0000000..ec26860
--- /dev/null
+++ b/assets/layout/styles/layout/_mixins.scss
@@ -0,0 +1,13 @@
+@mixin focused() {
+ outline: 0 none;
+ outline-offset: 0;
+ transition: box-shadow .2s;
+ box-shadow: var(--focus-ring);
+}
+
+@mixin focused-inset() {
+ outline: 0 none;
+ outline-offset: 0;
+ transition: box-shadow .2s;
+ box-shadow: inset var(--focus-ring);
+}
diff --git a/assets/layout/styles/layout/_preloading.scss b/assets/layout/styles/layout/_preloading.scss
new file mode 100644
index 0000000..a814104
--- /dev/null
+++ b/assets/layout/styles/layout/_preloading.scss
@@ -0,0 +1,47 @@
+.preloader {
+ position: fixed;
+ z-index: 999999;
+ background: #edf1f5;
+ width: 100%;
+ height: 100%;
+}
+.preloader-content {
+ border: 0 solid transparent;
+ border-radius: 50%;
+ width: 150px;
+ height: 150px;
+ position: absolute;
+ top: calc(50vh - 75px);
+ left: calc(50vw - 75px);
+}
+
+.preloader-content:before, .preloader-content:after{
+ content: '';
+ border: 1em solid var(--primary-color);
+ border-radius: 50%;
+ width: inherit;
+ height: inherit;
+ position: absolute;
+ top: 0;
+ left: 0;
+ animation: loader 2s linear infinite;
+ opacity: 0;
+}
+
+.preloader-content:before{
+ animation-delay: 0.5s;
+}
+
+@keyframes loader{
+ 0%{
+ transform: scale(0);
+ opacity: 0;
+ }
+ 50%{
+ opacity: 1;
+ }
+ 100%{
+ transform: scale(1);
+ opacity: 0;
+ }
+}
diff --git a/assets/layout/styles/layout/_responsive.scss b/assets/layout/styles/layout/_responsive.scss
new file mode 100644
index 0000000..4678f3d
--- /dev/null
+++ b/assets/layout/styles/layout/_responsive.scss
@@ -0,0 +1,100 @@
+@media screen and (min-width: 1960px) {
+ .layout-main, .landing-wrapper {
+ width: 1504px;
+ margin-left: auto !important;
+ margin-right: auto !important;
+ }
+
+}
+
+@media (min-width: 992px) {
+ .layout-wrapper {
+ &.layout-overlay {
+ .layout-main-container {
+ margin-left: 0;
+ padding-left: 2rem;
+ }
+
+ .layout-sidebar {
+ transform: translateX(-100%);
+ left: 0;
+ top: 0;
+ height: 100vh;
+ border-top-left-radius: 0;
+ border-bottom-left-radius: 0;
+ }
+
+ &.layout-overlay-active {
+ .layout-sidebar {
+ transform: translateX(0);
+ }
+ }
+ }
+
+ &.layout-static {
+ .layout-main-container {
+ margin-left: 300px;
+ }
+
+ &.layout-static-inactive {
+ .layout-sidebar {
+ transform: translateX(-100%);
+ left: 0;
+ }
+
+ .layout-main-container {
+ margin-left: 0;
+ padding-left: 2rem;
+ }
+ }
+ }
+
+ .layout-mask {
+ display: none;
+ }
+ }
+}
+
+@media (max-width: 991px) {
+ .blocked-scroll {
+ overflow: hidden;
+ }
+
+ .layout-wrapper {
+ .layout-main-container {
+ margin-left: 0;
+ padding-left: 2rem;
+ }
+
+ .layout-sidebar {
+ transform: translateX(-100%);
+ left: 0;
+ top: 0;
+ height: 100vh;
+ border-top-left-radius: 0;
+ border-bottom-left-radius: 0;
+ }
+
+ .layout-mask {
+ display: none;
+ position: fixed;
+ top: 0;
+ left: 0;
+ z-index: 998;
+ width: 100%;
+ height: 100%;
+ background-color: var(--maskbg);
+ }
+
+ &.layout-mobile-active {
+ .layout-sidebar {
+ transform: translateX(0);
+ }
+
+ .layout-mask {
+ display: block;
+ animation: fadein $transitionDuration;
+ }
+ }
+ }
+}
diff --git a/assets/layout/styles/layout/_topbar.scss b/assets/layout/styles/layout/_topbar.scss
new file mode 100644
index 0000000..7940236
--- /dev/null
+++ b/assets/layout/styles/layout/_topbar.scss
@@ -0,0 +1,149 @@
+.layout-topbar {
+ position: fixed;
+ height: 5rem;
+ z-index: 997;
+ left: 0;
+ top: 0;
+ width: 100%;
+ padding: 0 2rem;
+ background-color: var(--surface-card);
+ transition: left $transitionDuration;
+ display: flex;
+ align-items: center;
+ box-shadow: 0px 3px 5px rgba(0,0,0,.02), 0px 0px 2px rgba(0,0,0,.05), 0px 1px 4px rgba(0,0,0,.08);
+
+ .layout-topbar-logo {
+ display: flex;
+ align-items: center;
+ color: var(--surface-900);
+ font-size: 1.5rem;
+ font-weight: 500;
+ width: 300px;
+ border-radius: 12px;
+
+ img {
+ height: 2.5rem;
+ margin-right: .5rem;
+ }
+
+ &:focus {
+ @include focused();
+ }
+ }
+
+ .layout-topbar-button {
+ display: inline-flex;
+ justify-content: center;
+ align-items: center;
+ position: relative;
+ color: var(--text-color-secondary);
+ border-radius: 50%;
+ width: 3rem;
+ height: 3rem;
+ cursor: pointer;
+ transition: background-color $transitionDuration;
+
+ &:hover {
+ color: var(--text-color);
+ background-color: var(--surface-hover);
+ }
+
+ &:focus {
+ @include focused();
+ }
+
+ i {
+ font-size: 1.5rem;
+ }
+
+ span {
+ font-size: 1rem;
+ display: none;
+ }
+ }
+
+ .layout-menu-button {
+ margin-left: 2rem;
+ }
+
+ .layout-topbar-menu-button {
+ display: none;
+
+ i {
+ font-size: 1.25rem;
+ }
+ }
+
+ .layout-topbar-menu {
+ margin: 0 0 0 auto;
+ padding: 0;
+ list-style: none;
+ display: flex;
+
+ .layout-topbar-button {
+ margin-left: 1rem;
+ }
+ }
+}
+
+@media (max-width: 991px) {
+ .layout-topbar {
+ justify-content: space-between;
+
+ .layout-topbar-logo {
+ width: auto;
+ order: 2;
+ }
+
+ .layout-menu-button {
+ margin-left: 0;
+ order: 1;
+ }
+
+ .layout-topbar-menu-button {
+ display: inline-flex;
+ margin-left: 0;
+ order: 3;
+ }
+
+ .layout-topbar-menu {
+ margin-left: 0;
+ position: absolute;
+ flex-direction: column;
+ background-color: var(--surface-overlay);
+ box-shadow: 0px 3px 5px rgba(0,0,0,.02), 0px 0px 2px rgba(0,0,0,.05), 0px 1px 4px rgba(0,0,0,.08);
+ border-radius: 12px;
+ padding: 1rem;
+ right: 2rem;
+ top: 5rem;
+ min-width: 15rem;
+ display: none;
+ -webkit-animation: scalein 0.15s linear;
+ animation: scalein 0.15s linear;
+
+ &.layout-topbar-menu-mobile-active {
+ display: block
+ }
+
+ .layout-topbar-button {
+ margin-left: 0;
+ display: flex;
+ width: 100%;
+ height: auto;
+ justify-content: flex-start;
+ border-radius: 12px;
+ padding: 1rem;
+
+ i {
+ font-size: 1rem;
+ margin-right: .5rem;
+ }
+
+ span {
+ font-weight: medium;
+ display: block;
+ }
+ }
+ }
+ }
+}
diff --git a/assets/layout/styles/layout/_typography.scss b/assets/layout/styles/layout/_typography.scss
new file mode 100644
index 0000000..b9a0c8f
--- /dev/null
+++ b/assets/layout/styles/layout/_typography.scss
@@ -0,0 +1,63 @@
+h1, h2, h3, h4, h5, h6 {
+ margin: 1.5rem 0 1rem 0;
+ font-family: inherit;
+ font-weight: 500;
+ line-height: 1.2;
+ color: var(--surface-900);
+
+ &:first-child {
+ margin-top: 0;
+ }
+}
+
+h1 {
+ font-size: 2.5rem;
+}
+
+h2 {
+ font-size: 2rem;
+}
+
+h3 {
+ font-size: 1.75rem;
+}
+
+h4 {
+ font-size: 1.5rem;
+}
+
+h5 {
+ font-size: 1.25rem;
+}
+
+h6 {
+ font-size: 1rem;
+}
+
+mark {
+ background: #FFF8E1;
+ padding: .25rem .4rem;
+ border-radius: $borderRadius;
+ font-family: monospace;
+}
+
+blockquote {
+ margin: 1rem 0;
+ padding: 0 2rem;
+ border-left: 4px solid #90A4AE;
+}
+
+hr {
+ border-top: solid var(--surface-border);
+ border-width: 1px 0 0 0;
+ margin: 1rem 0;
+}
+
+p {
+ margin: 0 0 1rem 0;
+ line-height: 1.5;
+
+ &:last-child {
+ margin-bottom: 0;
+ }
+}
diff --git a/assets/layout/styles/layout/_utils.scss b/assets/layout/styles/layout/_utils.scss
new file mode 100644
index 0000000..126627e
--- /dev/null
+++ b/assets/layout/styles/layout/_utils.scss
@@ -0,0 +1,28 @@
+/* Utils */
+.clearfix:after {
+ content: " ";
+ display: block;
+ clear: both;
+}
+
+.card {
+ background: var(--surface-card);
+ border: 1px solid var(--surface-border);
+ padding: 2rem;
+ margin-bottom: 2rem;
+ box-shadow: var(--card-shadow);
+ border-radius: $borderRadius;
+ overflow: hidden;
+
+ &:last-child {
+ margin-bottom: 0;
+ }
+}
+
+.p-toast {
+ &.p-toast-top-right,
+ &.p-toast-top-left,
+ &.p-toast-top-center {
+ top: 100px;
+ }
+}
\ No newline at end of file
diff --git a/assets/layout/styles/layout/_variables.scss b/assets/layout/styles/layout/_variables.scss
new file mode 100644
index 0000000..4bcfaea
--- /dev/null
+++ b/assets/layout/styles/layout/_variables.scss
@@ -0,0 +1,4 @@
+/* General */
+$scale:14px; /* main font size */
+$borderRadius:8px; /* border radius of layout element e.g. card, sidebar */
+$transitionDuration:.2s; /* transition duration of layout elements e.g. sidebar, overlay menus */
diff --git a/assets/layout/styles/layout/layout.scss b/assets/layout/styles/layout/layout.scss
new file mode 100644
index 0000000..847398d
--- /dev/null
+++ b/assets/layout/styles/layout/layout.scss
@@ -0,0 +1,12 @@
+@import './_variables';
+@import "./_mixins";
+@import "./_preloading";
+@import "./_main";
+@import "./_topbar";
+@import "./_menu";
+@import "./_config";
+@import "./_content";
+@import "./_footer";
+@import "./_responsive";
+@import "./_utils";
+@import "./_typography";
\ No newline at end of file
diff --git a/assets/styles.scss b/assets/styles.scss
new file mode 100644
index 0000000..6d58a8d
--- /dev/null
+++ b/assets/styles.scss
@@ -0,0 +1,20 @@
+/* You can add global styles to this file, and also import other style files */
+
+$gutter: 1rem; //for primeflex grid system
+@import '@/assets/layout/styles/layout/layout.scss';
+
+.bg-1 {
+ background-color: var(--surface-0);
+}
+
+.bg-2 {
+ background-color: var(--surface-100);
+}
+
+.bg-3 {
+ background-color: var(--surface-200);
+}
+
+.bg-4 {
+ background-color: var(--surface-300);
+}
diff --git a/bun.lockb b/bun.lockb
new file mode 100755
index 0000000000000000000000000000000000000000..c72e2efea98d69b829cd40bddb375e1c5e4621c1
GIT binary patch
literal 444638
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 eg-hhVNhZ8x1=hQ4&F4Ur27rG
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
^N-
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