commit 0a5bc1e0a46189ccd20427a965dfea852104b4b9 Author: aimantasan Date: Tue May 27 04:00:34 2025 +0000 Initial commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..969bbc7 --- /dev/null +++ b/.gitignore @@ -0,0 +1,25 @@ +# Nuxt dev/build outputs +.output +.nuxt +.nitro +.cache +dist + +# Node dependencies +node_modules + +# Logs +*.log + +# Misc +.DS_Store +.fleet +.idea + +# Local env files +.env +.env.* +!.env.example + +# Uploads directory +public/uploads/ diff --git a/.nuxtignore b/.nuxtignore new file mode 100644 index 0000000..e69de29 diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..c1c99bb --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "vue3snippets.enable-compile-vue-file-on-did-save-code": true +} \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..7f452fe --- /dev/null +++ b/README.md @@ -0,0 +1,45 @@ +# Nuxt 3 Minimal Starter + +Look at the [nuxt 3 documentation](https://v3.nuxtjs.org) to learn more. + +## Setup + +Make sure to install the dependencies: + +```bash +# yarn +yarn install + +# npm +npm install + +# pnpm +pnpm install --shamefully-hoist +``` + +## 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 +``` + +Checkout the [deployment documentation](https://v3.nuxtjs.org/guide/deploy/presets) for more information. +# corradAF + +This is the base project for corradAF. diff --git a/app.config.js b/app.config.js new file mode 100644 index 0000000..6a71328 --- /dev/null +++ b/app.config.js @@ -0,0 +1,9 @@ +// app.config.ts +export default defineAppConfig({ + nuxtIcon: { + size: "24px", // default size applied + aliases: { + nuxt: "logos:nuxt-icon", + }, + }, +}); diff --git a/app.vue b/app.vue new file mode 100644 index 0000000..f27c589 --- /dev/null +++ b/app.vue @@ -0,0 +1,50 @@ + + + diff --git a/assets/css/menu-levels.css b/assets/css/menu-levels.css new file mode 100644 index 0000000..6b324be --- /dev/null +++ b/assets/css/menu-levels.css @@ -0,0 +1,119 @@ +/* Multi-level menu styling */ +.multi-level-menu { + border-left: 2px solid rgba(var(--color-primary), 0.3); +} + +/* Common styles for all menu levels */ +.navigation-item-wrapper a { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + display: flex; + align-items: center; +} + +/* Long menu text handling */ +.navigation-item-wrapper span { + text-overflow: ellipsis; + overflow: hidden; +} + +/* Show full text on hover */ +.navigation-item-wrapper a:hover span { + white-space: normal; + overflow: visible; + position: relative; + z-index: 10; +} + +/* Enhanced tooltip effect for very long menu items */ +.deepest-menu-item a:hover span { + background-color: rgba(var(--sidebar-menu), 0.95); + border-radius: 4px; + padding: 4px 8px; + box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2); + max-width: 300px; +} + +/* Level-specific styles */ +.second-level-menu { + font-weight: 500; + padding-left: 0.25rem; +} + +.second-level-menu .mx-3, +.second-level-menu .mx-4 { + color: rgba(255, 255, 255, 0.95); + max-width: 200px; +} + +.third-level-menu { + font-style: italic; + padding-left: 0.5rem; +} + +.third-level-menu .mx-3, +.third-level-menu .mx-4 { + color: rgba(255, 255, 255, 0.9); + font-size: 0.95rem; + max-width: 180px; +} + +.deepest-menu-item { + padding-left: 0.75rem; + border-left: 2px solid rgba(var(--color-primary), 0.6); +} + +.deepest-menu-item .mx-3, +.deepest-menu-item .mx-4 { + color: rgba(255, 255, 255, 0.85); + font-size: 0.9rem; + max-width: 160px; +} + +/* Add visual indicators for each level */ +.second-level-menu a::before, +.third-level-menu a::before, +.deepest-menu-item a::before { + content: ''; + display: inline-block; + width: 6px; + height: 6px; + margin-right: 8px; + border-radius: 50%; + flex-shrink: 0; +} + +.second-level-menu a::before { + background-color: rgba(var(--color-primary), 0.8); +} + +.third-level-menu a::before { + background-color: rgba(var(--color-accent), 0.8); + width: 5px; + height: 5px; +} + +.deepest-menu-item a::before { + background-color: rgba(var(--color-secondary), 0.8); + width: 4px; + height: 4px; +} + +/* Resonsive adjustments for different screen sizes */ +@media (max-width: 1200px) { + .second-level-menu .mx-3, + .second-level-menu .mx-4, + .third-level-menu .mx-3, + .third-level-menu .mx-4, + .deepest-menu-item .mx-3, + .deepest-menu-item .mx-4 { + max-width: 140px; + } +} + +@media (max-width: 992px) { + .navigation-item-wrapper span { + max-width: 120px; + } +} \ No newline at end of file diff --git a/assets/img/avatar/1.svg b/assets/img/avatar/1.svg new file mode 100644 index 0000000..8a1230a --- /dev/null +++ b/assets/img/avatar/1.svg @@ -0,0 +1 @@ +image/svg+xmlAdventurer NeutralLisa Wischofskyhttps://www.instagram.com/lischi_art/ \ No newline at end of file diff --git a/assets/img/avatar/2.svg b/assets/img/avatar/2.svg new file mode 100644 index 0000000..8036ad1 --- /dev/null +++ b/assets/img/avatar/2.svg @@ -0,0 +1 @@ +image/svg+xmlAdventurer NeutralLisa Wischofskyhttps://www.instagram.com/lischi_art/ \ No newline at end of file diff --git a/assets/img/avatar/3.svg b/assets/img/avatar/3.svg new file mode 100644 index 0000000..68b8c20 --- /dev/null +++ b/assets/img/avatar/3.svg @@ -0,0 +1 @@ +image/svg+xmlAdventurer NeutralLisa Wischofskyhttps://www.instagram.com/lischi_art/ \ No newline at end of file diff --git a/assets/img/avatar/4.svg b/assets/img/avatar/4.svg new file mode 100644 index 0000000..f948439 --- /dev/null +++ b/assets/img/avatar/4.svg @@ -0,0 +1 @@ +image/svg+xmlAdventurer NeutralLisa Wischofskyhttps://www.instagram.com/lischi_art/ \ No newline at end of file diff --git a/assets/img/avatar/user.webp b/assets/img/avatar/user.webp new file mode 100644 index 0000000..7c6f810 Binary files /dev/null and b/assets/img/avatar/user.webp differ diff --git a/assets/img/bg.jpg b/assets/img/bg.jpg new file mode 100644 index 0000000..a1d7ccd Binary files /dev/null and b/assets/img/bg.jpg differ diff --git a/assets/img/brand/google-logo.svg b/assets/img/brand/google-logo.svg new file mode 100644 index 0000000..b518c52 --- /dev/null +++ b/assets/img/brand/google-logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/img/default-thumbnail.jpg b/assets/img/default-thumbnail.jpg new file mode 100644 index 0000000..832a898 Binary files /dev/null and b/assets/img/default-thumbnail.jpg differ diff --git a/assets/img/icon/check.svg b/assets/img/icon/check.svg new file mode 100644 index 0000000..1c20989 --- /dev/null +++ b/assets/img/icon/check.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/img/icon/chevron-right-dark.svg b/assets/img/icon/chevron-right-dark.svg new file mode 100644 index 0000000..52f6af8 --- /dev/null +++ b/assets/img/icon/chevron-right-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/img/icon/chevron-right.svg b/assets/img/icon/chevron-right.svg new file mode 100644 index 0000000..8abc75e --- /dev/null +++ b/assets/img/icon/chevron-right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/img/illustration/404-2.svg b/assets/img/illustration/404-2.svg new file mode 100644 index 0000000..23defa0 --- /dev/null +++ b/assets/img/illustration/404-2.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/img/illustration/404.svg b/assets/img/illustration/404.svg new file mode 100644 index 0000000..e1c14a2 --- /dev/null +++ b/assets/img/illustration/404.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/img/illustration/500.svg b/assets/img/illustration/500.svg new file mode 100644 index 0000000..b544f74 --- /dev/null +++ b/assets/img/illustration/500.svg @@ -0,0 +1 @@ +monitor \ No newline at end of file diff --git a/assets/img/illustration/login.svg b/assets/img/illustration/login.svg new file mode 100644 index 0000000..4b04d69 --- /dev/null +++ b/assets/img/illustration/login.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/img/loader.gif b/assets/img/loader.gif new file mode 100644 index 0000000..870ab01 Binary files /dev/null and b/assets/img/loader.gif differ diff --git a/assets/img/logo/logo-imigresen.svg b/assets/img/logo/logo-imigresen.svg new file mode 100644 index 0000000..75750f9 --- /dev/null +++ b/assets/img/logo/logo-imigresen.svg @@ -0,0 +1,4140 @@ + + + + + + image/svg+xml + + Department of Immigration Malaysia Logo + + + + + Department of Immigration Malaysia Logo + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/img/logo/logo-nobg.svg b/assets/img/logo/logo-nobg.svg new file mode 100644 index 0000000..06d57b9 --- /dev/null +++ b/assets/img/logo/logo-nobg.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/assets/img/logo/logo-word-black-ai.svg b/assets/img/logo/logo-word-black-ai.svg new file mode 100644 index 0000000..6073931 --- /dev/null +++ b/assets/img/logo/logo-word-black-ai.svg @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/img/logo/logo-word-black.svg b/assets/img/logo/logo-word-black.svg new file mode 100644 index 0000000..eda6811 --- /dev/null +++ b/assets/img/logo/logo-word-black.svg @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/img/logo/logo-word-white-ai.svg b/assets/img/logo/logo-word-white-ai.svg new file mode 100644 index 0000000..2252264 --- /dev/null +++ b/assets/img/logo/logo-word-white-ai.svg @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/img/logo/logo-word-white.svg b/assets/img/logo/logo-word-white.svg new file mode 100644 index 0000000..9b622c0 --- /dev/null +++ b/assets/img/logo/logo-word-white.svg @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/img/logo/logo.svg b/assets/img/logo/logo.svg new file mode 100644 index 0000000..0bae9f2 --- /dev/null +++ b/assets/img/logo/logo.svg @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/img/logo/lzs-logo.png b/assets/img/logo/lzs-logo.png new file mode 100644 index 0000000..904a2e3 Binary files /dev/null and b/assets/img/logo/lzs-logo.png differ diff --git a/assets/img/logo/niise-text.svg b/assets/img/logo/niise-text.svg new file mode 100644 index 0000000..02e8ca2 --- /dev/null +++ b/assets/img/logo/niise-text.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/assets/img/logo/word-black-ai.svg b/assets/img/logo/word-black-ai.svg new file mode 100644 index 0000000..7d8700c --- /dev/null +++ b/assets/img/logo/word-black-ai.svg @@ -0,0 +1,4 @@ + + + + diff --git a/assets/img/logo/word-black.svg b/assets/img/logo/word-black.svg new file mode 100644 index 0000000..612f59d --- /dev/null +++ b/assets/img/logo/word-black.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/img/logo/word-white-ai.svg b/assets/img/logo/word-white-ai.svg new file mode 100644 index 0000000..c208246 --- /dev/null +++ b/assets/img/logo/word-white-ai.svg @@ -0,0 +1,4 @@ + + + + diff --git a/assets/img/logo/word-white.svg b/assets/img/logo/word-white.svg new file mode 100644 index 0000000..6785941 --- /dev/null +++ b/assets/img/logo/word-white.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/img/user/default.svg b/assets/img/user/default.svg new file mode 100644 index 0000000..f9f55f0 --- /dev/null +++ b/assets/img/user/default.svg @@ -0,0 +1 @@ +JD \ No newline at end of file diff --git a/assets/img/user/profile-1.jpg b/assets/img/user/profile-1.jpg new file mode 100644 index 0000000..68d5926 Binary files /dev/null and b/assets/img/user/profile-1.jpg differ diff --git a/assets/js/formkit-custom.js b/assets/js/formkit-custom.js new file mode 100644 index 0000000..ea02554 --- /dev/null +++ b/assets/js/formkit-custom.js @@ -0,0 +1,20 @@ +import { createInput } from "@formkit/vue"; +import OneTimePassword from "~/components/formkit/OneTimePassword.vue"; +import MaskText from "~/components/formkit/TextMask.vue"; +import FileDropzone from "~/components/formkit/FileDropzone.vue"; +import Toggle from "~/components/formkit/Toggle.vue"; + +export default { + otp: createInput(OneTimePassword, { + props: ["digits"], + }), + mask: createInput(MaskText, { + props: ["mask"], + }), + dropzone: createInput(FileDropzone, { + props: ["accept", "multiple", "maxSize", "minSize", "maxFiles", "disabled"], + }), + toggle: createInput(Toggle, { + props: ["onLabel", "offLabel"], + }), +}; diff --git a/assets/js/formkit-theme.js b/assets/js/formkit-theme.js new file mode 100644 index 0000000..dd57e22 --- /dev/null +++ b/assets/js/formkit-theme.js @@ -0,0 +1,94 @@ +// Create some re-useable definitions because +// many input types are identical in how +// we want to style them. +const textClassification = { + label: "formkit-outer-text", + inner: "formkit-inner-text", + input: "formkit-input-text", + prefix: "formkit-prefix-text", + message: "formkit-message-text", +}; +const boxClassification = { + inner: "formkit-inner-box", + fieldset: "formkit-fieldset-box", + legend: "formkit-legend-box", + wrapper: "formkit-wrapper-box", + help: "formkit-help-box", + input: "formkit-input-box", + label: "formkit-label-box", + message: "formkit-message-box", +}; +const buttonClassification = { + wrapper: "formkit-wrapper-button", + input: "formkit-input-button", +}; +const OtpClassification = { + label: "formkit-label-otp", + inner: "formkit-inner-otp", + digit: "formkit-digit-otp", + message: "formkit-message-otp", +}; + +const colorClassification = { + label: "formkit-label-color", + input: "formkit-input-color", +}; + +const fileClassification = { + label: "formkit-label-file", + inner: "formkit-inner-file", + input: "formkit-input-file", +}; + +const rangeClassification = { + input: "formkit-input-range", +}; + +// export our definitions using our above +// templates and declare one-offs and +// overrides as needed. +export default { + // the global key will apply to all inputs + global: { + label: "formkit-label-global", + outer: "formkit-outer-global", + help: "formkit-help-global", + messages: "formkit-messages-global", + message: "formkit-message-global", + wrapper: "formkit-wrapper-global", + }, + button: buttonClassification, + color: colorClassification, + date: textClassification, + "datetime-local": textClassification, + checkbox: boxClassification, + email: textClassification, + file: fileClassification, + month: textClassification, + number: textClassification, + password: textClassification, + radio: { + ...boxClassification, + input: "formkit-input-radio", + }, + range: rangeClassification, + search: textClassification, + select: { ...textClassification, option: "p-2" }, + submit: buttonClassification, + tel: textClassification, + text: textClassification, + textarea: { + ...textClassification, + input: "formkit-input-textarea", + }, + time: textClassification, + url: textClassification, + week: textClassification, + otp: OtpClassification, + mask: textClassification, + dropzone: { + ...textClassification, + inner: "formkit-inner-dropzone", + dropzone: "formkit-dropzone", + }, +}; diff --git a/assets/json/data.json b/assets/json/data.json new file mode 100644 index 0000000..a6b2942 --- /dev/null +++ b/assets/json/data.json @@ -0,0 +1,92 @@ +[ + { + "id": "#001", + "firstName": "John", + "lastName": "Doe", + "email": "johndoe@example.com", + "gender": "Male", + "status": "Active", + "age": 34 + }, + { + "id": "#002", + "firstName": "Jane", + "lastName": "Smith", + "email": "janesmith@example.com", + "gender": "Female", + "status": "Inactive", + "age": 28 + }, + { + "id": "#003", + "firstName": "Robert", + "lastName": "Brown", + "email": "robertbrown@example.com", + "gender": "Male", + "status": "Banned", + "age": 45 + }, + { + "id": "#004", + "firstName": "Emily", + "lastName": "White", + "email": "emilywhite@example.com", + "gender": "Female", + "status": "Active", + "age": 37 + }, + { + "id": "#005", + "firstName": "Michael", + "lastName": "Johnson", + "email": "michaeljohnson@example.com", + "gender": "Male", + "status": "Inactive", + "age": 50 + }, + { + "id": "#006", + "firstName": "Linda", + "lastName": "Williams", + "email": "lindawilliams@example.com", + "gender": "Female", + "status": "Active", + "age": 32 + }, + { + "id": "#007", + "firstName": "James", + "lastName": "Taylor", + "email": "jamestaylor@example.com", + "gender": "Male", + "status": "Banned", + "age": 40 + }, + { + "id": "#008", + "firstName": "Patricia", + "lastName": "Brown", + "email": "patriciabrown@example.com", + "gender": "Female", + "status": "Inactive", + "age": 29 + }, + { + "id": "#009", + "firstName": "David", + "lastName": "Wilson", + "email": "davidwilson@example.com", + "gender": "Male", + "status": "Active", + "age": 38 + }, + { + "id": "#010", + "firstName": "Elizabeth", + "lastName": "Garcia", + "email": "elizabethgarcia@example.com", + "gender": "Female", + "status": "Banned", + "age": 42 + } +] diff --git a/assets/json/iconamoon.json b/assets/json/iconamoon.json new file mode 100644 index 0000000..2fe9c49 --- /dev/null +++ b/assets/json/iconamoon.json @@ -0,0 +1,7126 @@ +[ + { + "name": "iconamoon:3d", + "svg": "" + }, + { + "name": "iconamoon:3d-bold", + "svg": "" + }, + { + "name": "iconamoon:3d-duotone", + "svg": "" + }, + { + "name": "iconamoon:3d-fill", + "svg": "" + }, + { + "name": "iconamoon:3d-light", + "svg": "" + }, + { + "name": "iconamoon:3d-thin", + "svg": "" + }, + { + "name": "iconamoon:apps", + "svg": "" + }, + { + "name": "iconamoon:apps-bold", + "svg": "" + }, + { + "name": "iconamoon:apps-fill", + "svg": "" + }, + { + "name": "iconamoon:apps-light", + "svg": "" + }, + { + "name": "iconamoon:apps-thin", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-left-1", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-left-1-bold", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-left-1-fill", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-left-1-light", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-left-1-thin", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-left-2", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-left-2-bold", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-left-2-fill", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-left-2-light", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-left-2-thin", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-left-3-square", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-left-3-square-bold", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-left-3-square-duotone", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-left-3-square-fill", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-left-3-square-light", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-left-3-square-thin", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-left-4-square", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-left-4-square-bold", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-left-4-square-duotone", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-left-4-square-fill", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-left-4-square-light", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-left-4-square-thin", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-left-5-circle", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-left-5-circle-bold", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-left-5-circle-duotone", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-left-5-circle-fill", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-left-5-circle-light", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-left-5-circle-thin", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-left-6-circle", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-left-6-circle-bold", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-left-6-circle-duotone", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-left-6-circle-fill", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-left-6-circle-light", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-left-6-circle-thin", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-right-1", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-right-1-bold", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-right-1-fill", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-right-1-light", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-right-1-thin", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-right-3-square", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-right-3-square-bold", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-right-3-square-duotone", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-right-3-square-fill", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-right-3-square-light", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-right-3-square-thin", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-right-4-square", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-right-4-square-bold", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-right-4-square-duotone", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-right-4-square-fill", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-right-4-square-light", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-right-4-square-thin", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-right-5-circle", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-right-5-circle-bold", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-right-5-circle-duotone", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-right-5-circle-fill", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-right-5-circle-light", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-right-5-circle-thin", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-right-6-circle", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-right-6-circle-bold", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-right-6-circle-duotone", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-right-6-circle-fill", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-right-6-circle-light", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-right-6-circle-thin", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-up-4-square", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-up-4-square-bold", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-up-4-square-duotone", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-up-4-square-fill", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-up-4-square-light", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-up-4-square-thin", + "svg": "" + }, + { + "name": "iconamoon:arrow-down-1", + "svg": "" + }, + { + "name": "iconamoon:arrow-down-1-bold", + "svg": "" + }, + { + "name": "iconamoon:arrow-down-1-duotone", + "svg": "" + }, + { + "name": "iconamoon:arrow-down-1-fill", + "svg": "" + }, + { + "name": "iconamoon:arrow-down-1-light", + "svg": "" + }, + { + "name": "iconamoon:arrow-down-1-thin", + "svg": "" + }, + { + "name": "iconamoon:arrow-down-2", + "svg": "" + }, + { + "name": "iconamoon:arrow-down-2-bold", + "svg": "" + }, + { + "name": "iconamoon:arrow-down-2-duotone", + "svg": "" + }, + { + "name": "iconamoon:arrow-down-2-fill", + "svg": "" + }, + { + "name": "iconamoon:arrow-down-2-light", + "svg": "" + }, + { + "name": "iconamoon:arrow-down-2-thin", + "svg": "" + }, + { + "name": "iconamoon:arrow-down-3-square", + "svg": "" + }, + { + "name": "iconamoon:arrow-down-3-square-bold", + "svg": "" + }, + { + "name": "iconamoon:arrow-down-3-square-duotone", + "svg": "" + }, + { + "name": "iconamoon:arrow-down-3-square-fill", + "svg": "" + }, + { + "name": "iconamoon:arrow-down-3-square-light", + "svg": "" + }, + { + "name": "iconamoon:arrow-down-3-square-thin", + "svg": "" + }, + { + "name": "iconamoon:arrow-down-4-square", + "svg": "" + }, + { + "name": "iconamoon:arrow-down-4-square-bold", + "svg": "" + }, + { + "name": "iconamoon:arrow-down-4-square-duotone", + "svg": "" + }, + { + "name": "iconamoon:arrow-down-4-square-fill", + "svg": "" + }, + { + "name": "iconamoon:arrow-down-4-square-light", + "svg": "" + }, + { + "name": "iconamoon:arrow-down-4-square-thin", + "svg": "" + }, + { + "name": "iconamoon:arrow-down-5-circle", + "svg": "" + }, + { + "name": "iconamoon:arrow-down-5-circle-bold", + "svg": "" + }, + { + "name": "iconamoon:arrow-down-5-circle-duotone", + "svg": "" + }, + { + "name": "iconamoon:arrow-down-5-circle-fill", + "svg": "" + }, + { + "name": "iconamoon:arrow-down-5-circle-light", + "svg": "" + }, + { + "name": "iconamoon:arrow-down-5-circle-thin", + "svg": "" + }, + { + "name": "iconamoon:arrow-down-6-circle", + "svg": "" + }, + { + "name": "iconamoon:arrow-down-6-circle-bold", + "svg": "" + }, + { + "name": "iconamoon:arrow-down-6-circle-duotone", + "svg": "" + }, + { + "name": "iconamoon:arrow-down-6-circle-fill", + "svg": "" + }, + { + "name": "iconamoon:arrow-down-6-circle-light", + "svg": "" + }, + { + "name": "iconamoon:arrow-down-6-circle-thin", + "svg": "" + }, + { + "name": "iconamoon:arrow-left-1", + "svg": "" + }, + { + "name": "iconamoon:arrow-left-1-bold", + "svg": "" + }, + { + "name": "iconamoon:arrow-left-1-duotone", + "svg": "" + }, + { + "name": "iconamoon:arrow-left-1-fill", + "svg": "" + }, + { + "name": "iconamoon:arrow-left-1-light", + "svg": "" + }, + { + "name": "iconamoon:arrow-left-1-thin", + "svg": "" + }, + { + "name": "iconamoon:arrow-left-2", + "svg": "" + }, + { + "name": "iconamoon:arrow-left-2-bold", + "svg": "" + }, + { + "name": "iconamoon:arrow-left-2-duotone", + "svg": "" + }, + { + "name": "iconamoon:arrow-left-2-fill", + "svg": "" + }, + { + "name": "iconamoon:arrow-left-2-light", + "svg": "" + }, + { + "name": "iconamoon:arrow-left-2-thin", + "svg": "" + }, + { + "name": "iconamoon:arrow-left-3-square", + "svg": "" + }, + { + "name": "iconamoon:arrow-left-3-square-bold", + "svg": "" + }, + { + "name": "iconamoon:arrow-left-3-square-duotone", + "svg": "" + }, + { + "name": "iconamoon:arrow-left-3-square-fill", + "svg": "" + }, + { + "name": "iconamoon:arrow-left-3-square-light", + "svg": "" + }, + { + "name": "iconamoon:arrow-left-3-square-thin", + "svg": "" + }, + { + "name": "iconamoon:arrow-left-4-square", + "svg": "" + }, + { + "name": "iconamoon:arrow-left-4-square-bold", + "svg": "" + }, + { + "name": "iconamoon:arrow-left-4-square-duotone", + "svg": "" + }, + { + "name": "iconamoon:arrow-left-4-square-fill", + "svg": "" + }, + { + "name": "iconamoon:arrow-left-4-square-light", + "svg": "" + }, + { + "name": "iconamoon:arrow-left-4-square-thin", + "svg": "" + }, + { + "name": "iconamoon:arrow-left-5-circle", + "svg": "" + }, + { + "name": "iconamoon:arrow-left-5-circle-bold", + "svg": "" + }, + { + "name": "iconamoon:arrow-left-5-circle-duotone", + "svg": "" + }, + { + "name": "iconamoon:arrow-left-5-circle-fill", + "svg": "" + }, + { + "name": "iconamoon:arrow-left-5-circle-light", + "svg": "" + }, + { + "name": "iconamoon:arrow-left-5-circle-thin", + "svg": "" + }, + { + "name": "iconamoon:arrow-left-6-circle", + "svg": "" + }, + { + "name": "iconamoon:arrow-left-6-circle-bold", + "svg": "" + }, + { + "name": "iconamoon:arrow-left-6-circle-duotone", + "svg": "" + }, + { + "name": "iconamoon:arrow-left-6-circle-fill", + "svg": "" + }, + { + "name": "iconamoon:arrow-left-6-circle-light", + "svg": "" + }, + { + "name": "iconamoon:arrow-left-6-circle-thin", + "svg": "" + }, + { + "name": "iconamoon:arrow-right-1", + "svg": "" + }, + { + "name": "iconamoon:arrow-right-1-bold", + "svg": "" + }, + { + "name": "iconamoon:arrow-right-1-duotone", + "svg": "" + }, + { + "name": "iconamoon:arrow-right-1-fill", + "svg": "" + }, + { + "name": "iconamoon:arrow-right-1-light", + "svg": "" + }, + { + "name": "iconamoon:arrow-right-1-thin", + "svg": "" + }, + { + "name": "iconamoon:arrow-right-2", + "svg": "" + }, + { + "name": "iconamoon:arrow-right-2-bold", + "svg": "" + }, + { + "name": "iconamoon:arrow-right-2-duotone", + "svg": "" + }, + { + "name": "iconamoon:arrow-right-2-fill", + "svg": "" + }, + { + "name": "iconamoon:arrow-right-2-light", + "svg": "" + }, + { + "name": "iconamoon:arrow-right-2-thin", + "svg": "" + }, + { + "name": "iconamoon:arrow-right-3-square", + "svg": "" + }, + { + "name": "iconamoon:arrow-right-3-square-bold", + "svg": "" + }, + { + "name": "iconamoon:arrow-right-3-square-duotone", + "svg": "" + }, + { + "name": "iconamoon:arrow-right-3-square-fill", + "svg": "" + }, + { + "name": "iconamoon:arrow-right-3-square-light", + "svg": "" + }, + { + "name": "iconamoon:arrow-right-3-square-thin", + "svg": "" + }, + { + "name": "iconamoon:arrow-right-4-square", + "svg": "" + }, + { + "name": "iconamoon:arrow-right-4-square-bold", + "svg": "" + }, + { + "name": "iconamoon:arrow-right-4-square-duotone", + "svg": "" + }, + { + "name": "iconamoon:arrow-right-4-square-fill", + "svg": "" + }, + { + "name": "iconamoon:arrow-right-4-square-light", + "svg": "" + }, + { + "name": "iconamoon:arrow-right-4-square-thin", + "svg": "" + }, + { + "name": "iconamoon:arrow-right-5-circle", + "svg": "" + }, + { + "name": "iconamoon:arrow-right-5-circle-bold", + "svg": "" + }, + { + "name": "iconamoon:arrow-right-5-circle-duotone", + "svg": "" + }, + { + "name": "iconamoon:arrow-right-5-circle-fill", + "svg": "" + }, + { + "name": "iconamoon:arrow-right-5-circle-light", + "svg": "" + }, + { + "name": "iconamoon:arrow-right-5-circle-thin", + "svg": "" + }, + { + "name": "iconamoon:arrow-right-6-circle", + "svg": "" + }, + { + "name": "iconamoon:arrow-right-6-circle-bold", + "svg": "" + }, + { + "name": "iconamoon:arrow-right-6-circle-duotone", + "svg": "" + }, + { + "name": "iconamoon:arrow-right-6-circle-fill", + "svg": "" + }, + { + "name": "iconamoon:arrow-right-6-circle-light", + "svg": "" + }, + { + "name": "iconamoon:arrow-right-6-circle-thin", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-left-1", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-left-1-bold", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-left-1-fill", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-left-1-light", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-left-1-thin", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-left-2", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-left-2-bold", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-left-2-fill", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-left-2-light", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-left-2-thin", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-left-3-square", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-left-3-square-bold", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-left-3-square-duotone", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-left-3-square-fill", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-left-3-square-light", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-left-3-square-thin", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-left-4-square", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-left-4-square-bold", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-left-4-square-duotone", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-left-4-square-fill", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-left-4-square-light", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-left-4-square-thin", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-left-5-circle", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-left-5-circle-bold", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-left-5-circle-duotone", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-left-5-circle-fill", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-left-5-circle-light", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-left-5-circle-thin", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-left-6-circle", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-left-6-circle-bold", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-left-6-circle-duotone", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-left-6-circle-fill", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-left-6-circle-light", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-left-6-circle-thin", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-right-1", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-right-1-bold", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-right-1-fill", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-right-1-light", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-right-1-thin", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-right-2", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-right-2-bold", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-right-2-fill", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-right-2-light", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-right-2-thin", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-right-3-square", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-right-3-square-bold", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-right-3-square-duotone", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-right-3-square-fill", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-right-3-square-light", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-right-3-square-thin", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-right-5-circle", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-right-5-circle-bold", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-right-5-circle-duotone", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-right-5-circle-fill", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-right-5-circle-light", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-right-5-circle-thin", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-right-6-circle", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-right-6-circle-bold", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-right-6-circle-duotone", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-right-6-circle-fill", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-right-6-circle-light", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-right-6-circle-thin", + "svg": "" + }, + { + "name": "iconamoon:arrow-up-1", + "svg": "" + }, + { + "name": "iconamoon:arrow-up-1-bold", + "svg": "" + }, + { + "name": "iconamoon:arrow-up-1-duotone", + "svg": "" + }, + { + "name": "iconamoon:arrow-up-1-fill", + "svg": "" + }, + { + "name": "iconamoon:arrow-up-1-light", + "svg": "" + }, + { + "name": "iconamoon:arrow-up-1-thin", + "svg": "" + }, + { + "name": "iconamoon:arrow-up-2", + "svg": "" + }, + { + "name": "iconamoon:arrow-up-2-bold", + "svg": "" + }, + { + "name": "iconamoon:arrow-up-2-duotone", + "svg": "" + }, + { + "name": "iconamoon:arrow-up-2-fill", + "svg": "" + }, + { + "name": "iconamoon:arrow-up-2-light", + "svg": "" + }, + { + "name": "iconamoon:arrow-up-2-thin", + "svg": "" + }, + { + "name": "iconamoon:arrow-up-3-square", + "svg": "" + }, + { + "name": "iconamoon:arrow-up-3-square-bold", + "svg": "" + }, + { + "name": "iconamoon:arrow-up-3-square-duotone", + "svg": "" + }, + { + "name": "iconamoon:arrow-up-3-square-fill", + "svg": "" + }, + { + "name": "iconamoon:arrow-up-3-square-light", + "svg": "" + }, + { + "name": "iconamoon:arrow-up-3-square-thin", + "svg": "" + }, + { + "name": "iconamoon:arrow-up-4-square", + "svg": "" + }, + { + "name": "iconamoon:arrow-up-4-square-bold", + "svg": "" + }, + { + "name": "iconamoon:arrow-up-4-square-duotone", + "svg": "" + }, + { + "name": "iconamoon:arrow-up-4-square-fill", + "svg": "" + }, + { + "name": "iconamoon:arrow-up-4-square-light", + "svg": "" + }, + { + "name": "iconamoon:arrow-up-4-square-thin", + "svg": "" + }, + { + "name": "iconamoon:arrow-up-5-circle", + "svg": "" + }, + { + "name": "iconamoon:arrow-up-5-circle-bold", + "svg": "" + }, + { + "name": "iconamoon:arrow-up-5-circle-duotone", + "svg": "" + }, + { + "name": "iconamoon:arrow-up-5-circle-fill", + "svg": "" + }, + { + "name": "iconamoon:arrow-up-5-circle-light", + "svg": "" + }, + { + "name": "iconamoon:arrow-up-5-circle-thin", + "svg": "" + }, + { + "name": "iconamoon:arrow-up-6-circle", + "svg": "" + }, + { + "name": "iconamoon:arrow-up-6-circle-bold", + "svg": "" + }, + { + "name": "iconamoon:arrow-up-6-circle-duotone", + "svg": "" + }, + { + "name": "iconamoon:arrow-up-6-circle-fill", + "svg": "" + }, + { + "name": "iconamoon:arrow-up-6-circle-light", + "svg": "" + }, + { + "name": "iconamoon:arrow-up-6-circle-thin", + "svg": "" + }, + { + "name": "iconamoon:attachment", + "svg": "" + }, + { + "name": "iconamoon:attachment-bold", + "svg": "" + }, + { + "name": "iconamoon:attachment-duotone", + "svg": "" + }, + { + "name": "iconamoon:attachment-fill", + "svg": "" + }, + { + "name": "iconamoon:attachment-light", + "svg": "" + }, + { + "name": "iconamoon:attachment-thin", + "svg": "" + }, + { + "name": "iconamoon:attention-circle", + "svg": "" + }, + { + "name": "iconamoon:attention-circle-bold", + "svg": "" + }, + { + "name": "iconamoon:attention-circle-duotone", + "svg": "" + }, + { + "name": "iconamoon:attention-circle-fill", + "svg": "" + }, + { + "name": "iconamoon:attention-circle-light", + "svg": "" + }, + { + "name": "iconamoon:attention-circle-thin", + "svg": "" + }, + { + "name": "iconamoon:attention-square", + "svg": "" + }, + { + "name": "iconamoon:attention-square-bold", + "svg": "" + }, + { + "name": "iconamoon:attention-square-duotone", + "svg": "" + }, + { + "name": "iconamoon:attention-square-fill", + "svg": "" + }, + { + "name": "iconamoon:attention-square-light", + "svg": "" + }, + { + "name": "iconamoon:attention-square-thin", + "svg": "" + }, + { + "name": "iconamoon:backspace", + "svg": "" + }, + { + "name": "iconamoon:backspace-bold", + "svg": "" + }, + { + "name": "iconamoon:backspace-duotone", + "svg": "" + }, + { + "name": "iconamoon:backspace-fill", + "svg": "" + }, + { + "name": "iconamoon:backspace-light", + "svg": "" + }, + { + "name": "iconamoon:backspace-thin", + "svg": "" + }, + { + "name": "iconamoon:badge", + "svg": "" + }, + { + "name": "iconamoon:badge-bold", + "svg": "" + }, + { + "name": "iconamoon:badge-duotone", + "svg": "" + }, + { + "name": "iconamoon:badge-fill", + "svg": "" + }, + { + "name": "iconamoon:badge-light", + "svg": "" + }, + { + "name": "iconamoon:badge-thin", + "svg": "" + }, + { + "name": "iconamoon:bluetooth", + "svg": "" + }, + { + "name": "iconamoon:bluetooth-bold", + "svg": "" + }, + { + "name": "iconamoon:bluetooth-duotone", + "svg": "" + }, + { + "name": "iconamoon:bluetooth-fill", + "svg": "" + }, + { + "name": "iconamoon:bluetooth-light", + "svg": "" + }, + { + "name": "iconamoon:bluetooth-thin", + "svg": "" + }, + { + "name": "iconamoon:bookmark", + "svg": "" + }, + { + "name": "iconamoon:bookmark-bold", + "svg": "" + }, + { + "name": "iconamoon:bookmark-duotone", + "svg": "" + }, + { + "name": "iconamoon:bookmark-fill", + "svg": "" + }, + { + "name": "iconamoon:bookmark-light", + "svg": "" + }, + { + "name": "iconamoon:bookmark-off", + "svg": "" + }, + { + "name": "iconamoon:bookmark-off-bold", + "svg": "" + }, + { + "name": "iconamoon:bookmark-off-duotone", + "svg": "" + }, + { + "name": "iconamoon:bookmark-off-fill", + "svg": "" + }, + { + "name": "iconamoon:bookmark-off-light", + "svg": "" + }, + { + "name": "iconamoon:bookmark-off-thin", + "svg": "" + }, + { + "name": "iconamoon:bookmark-thin", + "svg": "" + }, + { + "name": "iconamoon:box", + "svg": "" + }, + { + "name": "iconamoon:box-bold", + "svg": "" + }, + { + "name": "iconamoon:box-duotone", + "svg": "" + }, + { + "name": "iconamoon:box-fill", + "svg": "" + }, + { + "name": "iconamoon:box-light", + "svg": "" + }, + { + "name": "iconamoon:box-thin", + "svg": "" + }, + { + "name": "iconamoon:briefcase", + "svg": "" + }, + { + "name": "iconamoon:briefcase-bold", + "svg": "" + }, + { + "name": "iconamoon:briefcase-duotone", + "svg": "" + }, + { + "name": "iconamoon:briefcase-fill", + "svg": "" + }, + { + "name": "iconamoon:briefcase-light", + "svg": "" + }, + { + "name": "iconamoon:briefcase-thin", + "svg": "" + }, + { + "name": "iconamoon:calculator", + "svg": "" + }, + { + "name": "iconamoon:calculator-bold", + "svg": "" + }, + { + "name": "iconamoon:calculator-duotone", + "svg": "" + }, + { + "name": "iconamoon:calculator-fill", + "svg": "" + }, + { + "name": "iconamoon:calculator-light", + "svg": "" + }, + { + "name": "iconamoon:calculator-thin", + "svg": "" + }, + { + "name": "iconamoon:calendar-1", + "svg": "" + }, + { + "name": "iconamoon:calendar-1-bold", + "svg": "" + }, + { + "name": "iconamoon:calendar-1-duotone", + "svg": "" + }, + { + "name": "iconamoon:calendar-1-fill", + "svg": "" + }, + { + "name": "iconamoon:calendar-1-light", + "svg": "" + }, + { + "name": "iconamoon:calendar-1-thin", + "svg": "" + }, + { + "name": "iconamoon:calendar-2", + "svg": "" + }, + { + "name": "iconamoon:calendar-2-bold", + "svg": "" + }, + { + "name": "iconamoon:calendar-2-duotone", + "svg": "" + }, + { + "name": "iconamoon:calendar-2-fill", + "svg": "" + }, + { + "name": "iconamoon:calendar-2-light", + "svg": "" + }, + { + "name": "iconamoon:calendar-2-thin", + "svg": "" + }, + { + "name": "iconamoon:calendar-add", + "svg": "" + }, + { + "name": "iconamoon:calendar-add-bold", + "svg": "" + }, + { + "name": "iconamoon:calendar-add-duotone", + "svg": "" + }, + { + "name": "iconamoon:calendar-add-fill", + "svg": "" + }, + { + "name": "iconamoon:calendar-add-light", + "svg": "" + }, + { + "name": "iconamoon:calendar-add-thin", + "svg": "" + }, + { + "name": "iconamoon:calendar-remove", + "svg": "" + }, + { + "name": "iconamoon:calendar-remove-bold", + "svg": "" + }, + { + "name": "iconamoon:calendar-remove-duotone", + "svg": "" + }, + { + "name": "iconamoon:calendar-remove-fill", + "svg": "" + }, + { + "name": "iconamoon:calendar-remove-light", + "svg": "" + }, + { + "name": "iconamoon:calendar-remove-thin", + "svg": "" + }, + { + "name": "iconamoon:camera-image", + "svg": "" + }, + { + "name": "iconamoon:camera-image-bold", + "svg": "" + }, + { + "name": "iconamoon:camera-image-duotone", + "svg": "" + }, + { + "name": "iconamoon:camera-image-fill", + "svg": "" + }, + { + "name": "iconamoon:camera-image-light", + "svg": "" + }, + { + "name": "iconamoon:camera-image-thin", + "svg": "" + }, + { + "name": "iconamoon:camera-video", + "svg": "" + }, + { + "name": "iconamoon:camera-video-bold", + "svg": "" + }, + { + "name": "iconamoon:camera-video-duotone", + "svg": "" + }, + { + "name": "iconamoon:camera-video-fill", + "svg": "" + }, + { + "name": "iconamoon:camera-video-light", + "svg": "" + }, + { + "name": "iconamoon:camera-video-thin", + "svg": "" + }, + { + "name": "iconamoon:category", + "svg": "" + }, + { + "name": "iconamoon:category-bold", + "svg": "" + }, + { + "name": "iconamoon:category-duotone", + "svg": "" + }, + { + "name": "iconamoon:category-fill", + "svg": "" + }, + { + "name": "iconamoon:category-light", + "svg": "" + }, + { + "name": "iconamoon:category-thin", + "svg": "" + }, + { + "name": "iconamoon:certificate-badge", + "svg": "" + }, + { + "name": "iconamoon:certificate-badge-bold", + "svg": "" + }, + { + "name": "iconamoon:certificate-badge-duotone", + "svg": "" + }, + { + "name": "iconamoon:certificate-badge-fill", + "svg": "" + }, + { + "name": "iconamoon:certificate-badge-light", + "svg": "" + }, + { + "name": "iconamoon:certificate-badge-thin", + "svg": "" + }, + { + "name": "iconamoon:check", + "svg": "" + }, + { + "name": "iconamoon:check-bold", + "svg": "" + }, + { + "name": "iconamoon:check-circle-1", + "svg": "" + }, + { + "name": "iconamoon:check-circle-1-bold", + "svg": "" + }, + { + "name": "iconamoon:check-circle-1-duotone", + "svg": "" + }, + { + "name": "iconamoon:check-circle-1-fill", + "svg": "" + }, + { + "name": "iconamoon:check-circle-1-light", + "svg": "" + }, + { + "name": "iconamoon:check-circle-1-thin", + "svg": "" + }, + { + "name": "iconamoon:check-circle-2", + "svg": "" + }, + { + "name": "iconamoon:check-circle-2-bold", + "svg": "" + }, + { + "name": "iconamoon:check-circle-2-duotone", + "svg": "" + }, + { + "name": "iconamoon:check-circle-2-fill", + "svg": "" + }, + { + "name": "iconamoon:check-circle-2-light", + "svg": "" + }, + { + "name": "iconamoon:check-circle-2-thin", + "svg": "" + }, + { + "name": "iconamoon:check-duotone", + "svg": "" + }, + { + "name": "iconamoon:check-fill", + "svg": "" + }, + { + "name": "iconamoon:check-light", + "svg": "" + }, + { + "name": "iconamoon:check-square", + "svg": "" + }, + { + "name": "iconamoon:check-square-bold", + "svg": "" + }, + { + "name": "iconamoon:check-square-duotone", + "svg": "" + }, + { + "name": "iconamoon:check-square-fill", + "svg": "" + }, + { + "name": "iconamoon:check-square-light", + "svg": "" + }, + { + "name": "iconamoon:check-square-thin", + "svg": "" + }, + { + "name": "iconamoon:check-thin", + "svg": "" + }, + { + "name": "iconamoon:cheque", + "svg": "" + }, + { + "name": "iconamoon:cheque-bold", + "svg": "" + }, + { + "name": "iconamoon:cheque-duotone", + "svg": "" + }, + { + "name": "iconamoon:cheque-fill", + "svg": "" + }, + { + "name": "iconamoon:cheque-light", + "svg": "" + }, + { + "name": "iconamoon:cheque-thin", + "svg": "" + }, + { + "name": "iconamoon:clock", + "svg": "" + }, + { + "name": "iconamoon:clock-bold", + "svg": "" + }, + { + "name": "iconamoon:clock-duotone", + "svg": "" + }, + { + "name": "iconamoon:clock-fill", + "svg": "" + }, + { + "name": "iconamoon:clock-light", + "svg": "" + }, + { + "name": "iconamoon:clock-thin", + "svg": "" + }, + { + "name": "iconamoon:close", + "svg": "" + }, + { + "name": "iconamoon:close-bold", + "svg": "" + }, + { + "name": "iconamoon:close-circle-1", + "svg": "" + }, + { + "name": "iconamoon:close-circle-1-bold", + "svg": "" + }, + { + "name": "iconamoon:close-circle-1-duotone", + "svg": "" + }, + { + "name": "iconamoon:close-circle-1-fill", + "svg": "" + }, + { + "name": "iconamoon:close-circle-1-light", + "svg": "" + }, + { + "name": "iconamoon:close-circle-1-thin", + "svg": "" + }, + { + "name": "iconamoon:close-circle-2", + "svg": "" + }, + { + "name": "iconamoon:close-circle-2-bold", + "svg": "" + }, + { + "name": "iconamoon:close-circle-2-duotone", + "svg": "" + }, + { + "name": "iconamoon:close-circle-2-fill", + "svg": "" + }, + { + "name": "iconamoon:close-circle-2-light", + "svg": "" + }, + { + "name": "iconamoon:close-circle-2-thin", + "svg": "" + }, + { + "name": "iconamoon:close-duotone", + "svg": "" + }, + { + "name": "iconamoon:close-fill", + "svg": "" + }, + { + "name": "iconamoon:close-light", + "svg": "" + }, + { + "name": "iconamoon:close-square", + "svg": "" + }, + { + "name": "iconamoon:close-square-bold", + "svg": "" + }, + { + "name": "iconamoon:close-square-duotone", + "svg": "" + }, + { + "name": "iconamoon:close-square-fill", + "svg": "" + }, + { + "name": "iconamoon:close-square-light", + "svg": "" + }, + { + "name": "iconamoon:close-square-thin", + "svg": "" + }, + { + "name": "iconamoon:close-thin", + "svg": "" + }, + { + "name": "iconamoon:cloud", + "svg": "" + }, + { + "name": "iconamoon:cloud-add", + "svg": "" + }, + { + "name": "iconamoon:cloud-add-bold", + "svg": "" + }, + { + "name": "iconamoon:cloud-add-duotone", + "svg": "" + }, + { + "name": "iconamoon:cloud-add-fill", + "svg": "" + }, + { + "name": "iconamoon:cloud-add-light", + "svg": "" + }, + { + "name": "iconamoon:cloud-add-thin", + "svg": "" + }, + { + "name": "iconamoon:cloud-bold", + "svg": "" + }, + { + "name": "iconamoon:cloud-clock", + "svg": "" + }, + { + "name": "iconamoon:cloud-clock-bold", + "svg": "" + }, + { + "name": "iconamoon:cloud-clock-duotone", + "svg": "" + }, + { + "name": "iconamoon:cloud-clock-fill", + "svg": "" + }, + { + "name": "iconamoon:cloud-clock-light", + "svg": "" + }, + { + "name": "iconamoon:cloud-clock-thin", + "svg": "" + }, + { + "name": "iconamoon:cloud-download", + "svg": "" + }, + { + "name": "iconamoon:cloud-download-bold", + "svg": "" + }, + { + "name": "iconamoon:cloud-download-duotone", + "svg": "" + }, + { + "name": "iconamoon:cloud-download-fill", + "svg": "" + }, + { + "name": "iconamoon:cloud-download-light", + "svg": "" + }, + { + "name": "iconamoon:cloud-download-thin", + "svg": "" + }, + { + "name": "iconamoon:cloud-duotone", + "svg": "" + }, + { + "name": "iconamoon:cloud-error", + "svg": "" + }, + { + "name": "iconamoon:cloud-error-bold", + "svg": "" + }, + { + "name": "iconamoon:cloud-error-duotone", + "svg": "" + }, + { + "name": "iconamoon:cloud-error-fill", + "svg": "" + }, + { + "name": "iconamoon:cloud-error-light", + "svg": "" + }, + { + "name": "iconamoon:cloud-error-thin", + "svg": "" + }, + { + "name": "iconamoon:cloud-fill", + "svg": "" + }, + { + "name": "iconamoon:cloud-light", + "svg": "" + }, + { + "name": "iconamoon:cloud-no", + "svg": "" + }, + { + "name": "iconamoon:cloud-no-bold", + "svg": "" + }, + { + "name": "iconamoon:cloud-no-duotone", + "svg": "" + }, + { + "name": "iconamoon:cloud-no-fill", + "svg": "" + }, + { + "name": "iconamoon:cloud-no-light", + "svg": "" + }, + { + "name": "iconamoon:cloud-no-thin", + "svg": "" + }, + { + "name": "iconamoon:cloud-off", + "svg": "" + }, + { + "name": "iconamoon:cloud-off-bold", + "svg": "" + }, + { + "name": "iconamoon:cloud-off-duotone", + "svg": "" + }, + { + "name": "iconamoon:cloud-off-fill", + "svg": "" + }, + { + "name": "iconamoon:cloud-off-light", + "svg": "" + }, + { + "name": "iconamoon:cloud-off-thin", + "svg": "" + }, + { + "name": "iconamoon:cloud-remove", + "svg": "" + }, + { + "name": "iconamoon:cloud-remove-bold", + "svg": "" + }, + { + "name": "iconamoon:cloud-remove-duotone", + "svg": "" + }, + { + "name": "iconamoon:cloud-remove-fill", + "svg": "" + }, + { + "name": "iconamoon:cloud-remove-light", + "svg": "" + }, + { + "name": "iconamoon:cloud-remove-thin", + "svg": "" + }, + { + "name": "iconamoon:cloud-thin", + "svg": "" + }, + { + "name": "iconamoon:cloud-upload", + "svg": "" + }, + { + "name": "iconamoon:cloud-upload-bold", + "svg": "" + }, + { + "name": "iconamoon:cloud-upload-duotone", + "svg": "" + }, + { + "name": "iconamoon:cloud-upload-fill", + "svg": "" + }, + { + "name": "iconamoon:cloud-upload-light", + "svg": "" + }, + { + "name": "iconamoon:cloud-upload-thin", + "svg": "" + }, + { + "name": "iconamoon:cloud-yes", + "svg": "" + }, + { + "name": "iconamoon:cloud-yes-bold", + "svg": "" + }, + { + "name": "iconamoon:cloud-yes-duotone", + "svg": "" + }, + { + "name": "iconamoon:cloud-yes-fill", + "svg": "" + }, + { + "name": "iconamoon:cloud-yes-light", + "svg": "" + }, + { + "name": "iconamoon:cloud-yes-thin", + "svg": "" + }, + { + "name": "iconamoon:comment", + "svg": "" + }, + { + "name": "iconamoon:comment-add", + "svg": "" + }, + { + "name": "iconamoon:comment-add-bold", + "svg": "" + }, + { + "name": "iconamoon:comment-add-duotone", + "svg": "" + }, + { + "name": "iconamoon:comment-add-fill", + "svg": "" + }, + { + "name": "iconamoon:comment-add-light", + "svg": "" + }, + { + "name": "iconamoon:comment-add-thin", + "svg": "" + }, + { + "name": "iconamoon:comment-bold", + "svg": "" + }, + { + "name": "iconamoon:comment-check", + "svg": "" + }, + { + "name": "iconamoon:comment-check-bold", + "svg": "" + }, + { + "name": "iconamoon:comment-check-duotone", + "svg": "" + }, + { + "name": "iconamoon:comment-check-fill", + "svg": "" + }, + { + "name": "iconamoon:comment-check-light", + "svg": "" + }, + { + "name": "iconamoon:comment-check-thin", + "svg": "" + }, + { + "name": "iconamoon:comment-close", + "svg": "" + }, + { + "name": "iconamoon:comment-close-bold", + "svg": "" + }, + { + "name": "iconamoon:comment-close-duotone", + "svg": "" + }, + { + "name": "iconamoon:comment-close-fill", + "svg": "" + }, + { + "name": "iconamoon:comment-close-light", + "svg": "" + }, + { + "name": "iconamoon:comment-close-thin", + "svg": "" + }, + { + "name": "iconamoon:comment-dots", + "svg": "" + }, + { + "name": "iconamoon:comment-dots-bold", + "svg": "" + }, + { + "name": "iconamoon:comment-dots-duotone", + "svg": "" + }, + { + "name": "iconamoon:comment-dots-fill", + "svg": "" + }, + { + "name": "iconamoon:comment-dots-light", + "svg": "" + }, + { + "name": "iconamoon:comment-dots-thin", + "svg": "" + }, + { + "name": "iconamoon:comment-duotone", + "svg": "" + }, + { + "name": "iconamoon:comment-fill", + "svg": "" + }, + { + "name": "iconamoon:comment-light", + "svg": "" + }, + { + "name": "iconamoon:comment-remove", + "svg": "" + }, + { + "name": "iconamoon:comment-remove-bold", + "svg": "" + }, + { + "name": "iconamoon:comment-remove-duotone", + "svg": "" + }, + { + "name": "iconamoon:comment-remove-fill", + "svg": "" + }, + { + "name": "iconamoon:comment-remove-light", + "svg": "" + }, + { + "name": "iconamoon:comment-remove-thin", + "svg": "" + }, + { + "name": "iconamoon:comment-thin", + "svg": "" + }, + { + "name": "iconamoon:compare", + "svg": "" + }, + { + "name": "iconamoon:compare-bold", + "svg": "" + }, + { + "name": "iconamoon:compare-duotone", + "svg": "" + }, + { + "name": "iconamoon:compare-fill", + "svg": "" + }, + { + "name": "iconamoon:compare-light", + "svg": "" + }, + { + "name": "iconamoon:compare-thin", + "svg": "" + }, + { + "name": "iconamoon:component", + "svg": "" + }, + { + "name": "iconamoon:component-bold", + "svg": "" + }, + { + "name": "iconamoon:component-duotone", + "svg": "" + }, + { + "name": "iconamoon:component-fill", + "svg": "" + }, + { + "name": "iconamoon:component-light", + "svg": "" + }, + { + "name": "iconamoon:component-thin", + "svg": "" + }, + { + "name": "iconamoon:confused-face", + "svg": "" + }, + { + "name": "iconamoon:confused-face-bold", + "svg": "" + }, + { + "name": "iconamoon:confused-face-duotone", + "svg": "" + }, + { + "name": "iconamoon:confused-face-fill", + "svg": "" + }, + { + "name": "iconamoon:confused-face-light", + "svg": "" + }, + { + "name": "iconamoon:confused-face-thin", + "svg": "" + }, + { + "name": "iconamoon:copy", + "svg": "" + }, + { + "name": "iconamoon:copy-bold", + "svg": "" + }, + { + "name": "iconamoon:copy-duotone", + "svg": "" + }, + { + "name": "iconamoon:copy-fill", + "svg": "" + }, + { + "name": "iconamoon:copy-light", + "svg": "" + }, + { + "name": "iconamoon:copy-thin", + "svg": "" + }, + { + "name": "iconamoon:credit-card", + "svg": "" + }, + { + "name": "iconamoon:credit-card-bold", + "svg": "" + }, + { + "name": "iconamoon:credit-card-duotone", + "svg": "" + }, + { + "name": "iconamoon:credit-card-fill", + "svg": "" + }, + { + "name": "iconamoon:credit-card-light", + "svg": "" + }, + { + "name": "iconamoon:credit-card-thin", + "svg": "" + }, + { + "name": "iconamoon:cursor", + "svg": "" + }, + { + "name": "iconamoon:cursor-bold", + "svg": "" + }, + { + "name": "iconamoon:cursor-duotone", + "svg": "" + }, + { + "name": "iconamoon:cursor-fill", + "svg": "" + }, + { + "name": "iconamoon:cursor-light", + "svg": "" + }, + { + "name": "iconamoon:cursor-thin", + "svg": "" + }, + { + "name": "iconamoon:delivery", + "svg": "" + }, + { + "name": "iconamoon:delivery-bold", + "svg": "" + }, + { + "name": "iconamoon:delivery-duotone", + "svg": "" + }, + { + "name": "iconamoon:delivery-fast", + "svg": "" + }, + { + "name": "iconamoon:delivery-fast-bold", + "svg": "" + }, + { + "name": "iconamoon:delivery-fast-duotone", + "svg": "" + }, + { + "name": "iconamoon:delivery-fast-fill", + "svg": "" + }, + { + "name": "iconamoon:delivery-fast-light", + "svg": "" + }, + { + "name": "iconamoon:delivery-fast-thin", + "svg": "" + }, + { + "name": "iconamoon:delivery-fill", + "svg": "" + }, + { + "name": "iconamoon:delivery-free", + "svg": "" + }, + { + "name": "iconamoon:delivery-free-bold", + "svg": "" + }, + { + "name": "iconamoon:delivery-free-duotone", + "svg": "" + }, + { + "name": "iconamoon:delivery-free-fill", + "svg": "" + }, + { + "name": "iconamoon:delivery-free-light", + "svg": "" + }, + { + "name": "iconamoon:delivery-free-thin", + "svg": "" + }, + { + "name": "iconamoon:delivery-light", + "svg": "" + }, + { + "name": "iconamoon:delivery-thin", + "svg": "" + }, + { + "name": "iconamoon:disappointed-face", + "svg": "" + }, + { + "name": "iconamoon:disappointed-face-bold", + "svg": "" + }, + { + "name": "iconamoon:disappointed-face-duotone", + "svg": "" + }, + { + "name": "iconamoon:disappointed-face-fill", + "svg": "" + }, + { + "name": "iconamoon:disappointed-face-light", + "svg": "" + }, + { + "name": "iconamoon:disappointed-face-thin", + "svg": "" + }, + { + "name": "iconamoon:discount", + "svg": "" + }, + { + "name": "iconamoon:discount-bold", + "svg": "" + }, + { + "name": "iconamoon:discount-duotone", + "svg": "" + }, + { + "name": "iconamoon:discount-fill", + "svg": "" + }, + { + "name": "iconamoon:discount-light", + "svg": "" + }, + { + "name": "iconamoon:discount-thin", + "svg": "" + }, + { + "name": "iconamoon:discover", + "svg": "" + }, + { + "name": "iconamoon:discover-bold", + "svg": "" + }, + { + "name": "iconamoon:discover-duotone", + "svg": "" + }, + { + "name": "iconamoon:discover-fill", + "svg": "" + }, + { + "name": "iconamoon:discover-light", + "svg": "" + }, + { + "name": "iconamoon:discover-thin", + "svg": "" + }, + { + "name": "iconamoon:dislike", + "svg": "" + }, + { + "name": "iconamoon:dislike-bold", + "svg": "" + }, + { + "name": "iconamoon:dislike-duotone", + "svg": "" + }, + { + "name": "iconamoon:dislike-fill", + "svg": "" + }, + { + "name": "iconamoon:dislike-light", + "svg": "" + }, + { + "name": "iconamoon:dislike-thin", + "svg": "" + }, + { + "name": "iconamoon:do-redo", + "svg": "" + }, + { + "name": "iconamoon:do-redo-bold", + "svg": "" + }, + { + "name": "iconamoon:do-redo-duotone", + "svg": "" + }, + { + "name": "iconamoon:do-redo-fill", + "svg": "" + }, + { + "name": "iconamoon:do-redo-light", + "svg": "" + }, + { + "name": "iconamoon:do-redo-thin", + "svg": "" + }, + { + "name": "iconamoon:do-undo", + "svg": "" + }, + { + "name": "iconamoon:do-undo-bold", + "svg": "" + }, + { + "name": "iconamoon:do-undo-duotone", + "svg": "" + }, + { + "name": "iconamoon:do-undo-fill", + "svg": "" + }, + { + "name": "iconamoon:do-undo-light", + "svg": "" + }, + { + "name": "iconamoon:do-undo-thin", + "svg": "" + }, + { + "name": "iconamoon:download", + "svg": "" + }, + { + "name": "iconamoon:download-bold", + "svg": "" + }, + { + "name": "iconamoon:download-fill", + "svg": "" + }, + { + "name": "iconamoon:download-light", + "svg": "" + }, + { + "name": "iconamoon:download-thin", + "svg": "" + }, + { + "name": "iconamoon:edit", + "svg": "" + }, + { + "name": "iconamoon:edit-bold", + "svg": "" + }, + { + "name": "iconamoon:edit-duotone", + "svg": "" + }, + { + "name": "iconamoon:edit-fill", + "svg": "" + }, + { + "name": "iconamoon:edit-light", + "svg": "" + }, + { + "name": "iconamoon:edit-thin", + "svg": "" + }, + { + "name": "iconamoon:email", + "svg": "" + }, + { + "name": "iconamoon:email-bold", + "svg": "" + }, + { + "name": "iconamoon:email-duotone", + "svg": "" + }, + { + "name": "iconamoon:email-fill", + "svg": "" + }, + { + "name": "iconamoon:email-light", + "svg": "" + }, + { + "name": "iconamoon:email-thin", + "svg": "" + }, + { + "name": "iconamoon:enter", + "svg": "" + }, + { + "name": "iconamoon:enter-bold", + "svg": "" + }, + { + "name": "iconamoon:enter-duotone", + "svg": "" + }, + { + "name": "iconamoon:enter-fill", + "svg": "" + }, + { + "name": "iconamoon:enter-light", + "svg": "" + }, + { + "name": "iconamoon:enter-thin", + "svg": "" + }, + { + "name": "iconamoon:exit", + "svg": "" + }, + { + "name": "iconamoon:exit-bold", + "svg": "" + }, + { + "name": "iconamoon:exit-fill", + "svg": "" + }, + { + "name": "iconamoon:exit-light", + "svg": "" + }, + { + "name": "iconamoon:exit-thin", + "svg": "" + }, + { + "name": "iconamoon:expressionless-face", + "svg": "" + }, + { + "name": "iconamoon:expressionless-face-bold", + "svg": "" + }, + { + "name": "iconamoon:expressionless-face-duotone", + "svg": "" + }, + { + "name": "iconamoon:expressionless-face-fill", + "svg": "" + }, + { + "name": "iconamoon:expressionless-face-light", + "svg": "" + }, + { + "name": "iconamoon:expressionless-face-thin", + "svg": "" + }, + { + "name": "iconamoon:eye", + "svg": "" + }, + { + "name": "iconamoon:eye-bold", + "svg": "" + }, + { + "name": "iconamoon:eye-duotone", + "svg": "" + }, + { + "name": "iconamoon:eye-fill", + "svg": "" + }, + { + "name": "iconamoon:eye-light", + "svg": "" + }, + { + "name": "iconamoon:eye-off", + "svg": "" + }, + { + "name": "iconamoon:eye-off-bold", + "svg": "" + }, + { + "name": "iconamoon:eye-off-duotone", + "svg": "" + }, + { + "name": "iconamoon:eye-off-fill", + "svg": "" + }, + { + "name": "iconamoon:eye-off-light", + "svg": "" + }, + { + "name": "iconamoon:eye-off-thin", + "svg": "" + }, + { + "name": "iconamoon:eye-thin", + "svg": "" + }, + { + "name": "iconamoon:face-with-open-mouth", + "svg": "" + }, + { + "name": "iconamoon:face-with-open-mouth-bold", + "svg": "" + }, + { + "name": "iconamoon:face-with-open-mouth-duotone", + "svg": "" + }, + { + "name": "iconamoon:face-with-open-mouth-fill", + "svg": "" + }, + { + "name": "iconamoon:face-with-open-mouth-light", + "svg": "" + }, + { + "name": "iconamoon:face-with-open-mouth-thin", + "svg": "" + }, + { + "name": "iconamoon:face-without-mouth", + "svg": "" + }, + { + "name": "iconamoon:face-without-mouth-bold", + "svg": "" + }, + { + "name": "iconamoon:face-without-mouth-duotone", + "svg": "" + }, + { + "name": "iconamoon:face-without-mouth-fill", + "svg": "" + }, + { + "name": "iconamoon:face-without-mouth-light", + "svg": "" + }, + { + "name": "iconamoon:face-without-mouth-thin", + "svg": "" + }, + { + "name": "iconamoon:file", + "svg": "" + }, + { + "name": "iconamoon:file-add", + "svg": "" + }, + { + "name": "iconamoon:file-add-bold", + "svg": "" + }, + { + "name": "iconamoon:file-add-duotone", + "svg": "" + }, + { + "name": "iconamoon:file-add-fill", + "svg": "" + }, + { + "name": "iconamoon:file-add-light", + "svg": "" + }, + { + "name": "iconamoon:file-add-thin", + "svg": "" + }, + { + "name": "iconamoon:file-audio", + "svg": "" + }, + { + "name": "iconamoon:file-audio-bold", + "svg": "" + }, + { + "name": "iconamoon:file-audio-duotone", + "svg": "" + }, + { + "name": "iconamoon:file-audio-fill", + "svg": "" + }, + { + "name": "iconamoon:file-audio-light", + "svg": "" + }, + { + "name": "iconamoon:file-audio-thin", + "svg": "" + }, + { + "name": "iconamoon:file-bold", + "svg": "" + }, + { + "name": "iconamoon:file-check", + "svg": "" + }, + { + "name": "iconamoon:file-check-bold", + "svg": "" + }, + { + "name": "iconamoon:file-check-duotone", + "svg": "" + }, + { + "name": "iconamoon:file-check-fill", + "svg": "" + }, + { + "name": "iconamoon:file-check-light", + "svg": "" + }, + { + "name": "iconamoon:file-check-thin", + "svg": "" + }, + { + "name": "iconamoon:file-close", + "svg": "" + }, + { + "name": "iconamoon:file-close-bold", + "svg": "" + }, + { + "name": "iconamoon:file-close-duotone", + "svg": "" + }, + { + "name": "iconamoon:file-close-fill", + "svg": "" + }, + { + "name": "iconamoon:file-close-light", + "svg": "" + }, + { + "name": "iconamoon:file-close-thin", + "svg": "" + }, + { + "name": "iconamoon:file-document", + "svg": "" + }, + { + "name": "iconamoon:file-document-bold", + "svg": "" + }, + { + "name": "iconamoon:file-document-duotone", + "svg": "" + }, + { + "name": "iconamoon:file-document-fill", + "svg": "" + }, + { + "name": "iconamoon:file-document-light", + "svg": "" + }, + { + "name": "iconamoon:file-document-thin", + "svg": "" + }, + { + "name": "iconamoon:file-duotone", + "svg": "" + }, + { + "name": "iconamoon:file-fill", + "svg": "" + }, + { + "name": "iconamoon:file-image", + "svg": "" + }, + { + "name": "iconamoon:file-image-bold", + "svg": "" + }, + { + "name": "iconamoon:file-image-duotone", + "svg": "" + }, + { + "name": "iconamoon:file-image-fill", + "svg": "" + }, + { + "name": "iconamoon:file-image-light", + "svg": "" + }, + { + "name": "iconamoon:file-image-thin", + "svg": "" + }, + { + "name": "iconamoon:file-light", + "svg": "" + }, + { + "name": "iconamoon:file-remove", + "svg": "" + }, + { + "name": "iconamoon:file-remove-bold", + "svg": "" + }, + { + "name": "iconamoon:file-remove-duotone", + "svg": "" + }, + { + "name": "iconamoon:file-remove-fill", + "svg": "" + }, + { + "name": "iconamoon:file-remove-light", + "svg": "" + }, + { + "name": "iconamoon:file-remove-thin", + "svg": "" + }, + { + "name": "iconamoon:file-thin", + "svg": "" + }, + { + "name": "iconamoon:file-video", + "svg": "" + }, + { + "name": "iconamoon:file-video-bold", + "svg": "" + }, + { + "name": "iconamoon:file-video-duotone", + "svg": "" + }, + { + "name": "iconamoon:file-video-fill", + "svg": "" + }, + { + "name": "iconamoon:file-video-light", + "svg": "" + }, + { + "name": "iconamoon:file-video-thin", + "svg": "" + }, + { + "name": "iconamoon:flag", + "svg": "" + }, + { + "name": "iconamoon:flag-bold", + "svg": "" + }, + { + "name": "iconamoon:flag-duotone", + "svg": "" + }, + { + "name": "iconamoon:flag-fill", + "svg": "" + }, + { + "name": "iconamoon:flag-light", + "svg": "" + }, + { + "name": "iconamoon:flag-thin", + "svg": "" + }, + { + "name": "iconamoon:folder", + "svg": "" + }, + { + "name": "iconamoon:folder-add", + "svg": "" + }, + { + "name": "iconamoon:folder-add-bold", + "svg": "" + }, + { + "name": "iconamoon:folder-add-duotone", + "svg": "" + }, + { + "name": "iconamoon:folder-add-fill", + "svg": "" + }, + { + "name": "iconamoon:folder-add-light", + "svg": "" + }, + { + "name": "iconamoon:folder-add-thin", + "svg": "" + }, + { + "name": "iconamoon:folder-bold", + "svg": "" + }, + { + "name": "iconamoon:folder-check", + "svg": "" + }, + { + "name": "iconamoon:folder-check-bold", + "svg": "" + }, + { + "name": "iconamoon:folder-check-duotone", + "svg": "" + }, + { + "name": "iconamoon:folder-check-fill", + "svg": "" + }, + { + "name": "iconamoon:folder-check-light", + "svg": "" + }, + { + "name": "iconamoon:folder-check-thin", + "svg": "" + }, + { + "name": "iconamoon:folder-close", + "svg": "" + }, + { + "name": "iconamoon:folder-close-bold", + "svg": "" + }, + { + "name": "iconamoon:folder-close-duotone", + "svg": "" + }, + { + "name": "iconamoon:folder-close-fill", + "svg": "" + }, + { + "name": "iconamoon:folder-close-light", + "svg": "" + }, + { + "name": "iconamoon:folder-close-thin", + "svg": "" + }, + { + "name": "iconamoon:folder-document", + "svg": "" + }, + { + "name": "iconamoon:folder-document-bold", + "svg": "" + }, + { + "name": "iconamoon:folder-document-duotone", + "svg": "" + }, + { + "name": "iconamoon:folder-document-fill", + "svg": "" + }, + { + "name": "iconamoon:folder-document-light", + "svg": "" + }, + { + "name": "iconamoon:folder-document-thin", + "svg": "" + }, + { + "name": "iconamoon:folder-duotone", + "svg": "" + }, + { + "name": "iconamoon:folder-fill", + "svg": "" + }, + { + "name": "iconamoon:folder-image", + "svg": "" + }, + { + "name": "iconamoon:folder-image-bold", + "svg": "" + }, + { + "name": "iconamoon:folder-image-duotone", + "svg": "" + }, + { + "name": "iconamoon:folder-image-fill", + "svg": "" + }, + { + "name": "iconamoon:folder-image-light", + "svg": "" + }, + { + "name": "iconamoon:folder-image-thin", + "svg": "" + }, + { + "name": "iconamoon:folder-light", + "svg": "" + }, + { + "name": "iconamoon:folder-music", + "svg": "" + }, + { + "name": "iconamoon:folder-music-bold", + "svg": "" + }, + { + "name": "iconamoon:folder-music-duotone", + "svg": "" + }, + { + "name": "iconamoon:folder-music-fill", + "svg": "" + }, + { + "name": "iconamoon:folder-music-light", + "svg": "" + }, + { + "name": "iconamoon:folder-music-thin", + "svg": "" + }, + { + "name": "iconamoon:folder-remove", + "svg": "" + }, + { + "name": "iconamoon:folder-remove-bold", + "svg": "" + }, + { + "name": "iconamoon:folder-remove-duotone", + "svg": "" + }, + { + "name": "iconamoon:folder-remove-fill", + "svg": "" + }, + { + "name": "iconamoon:folder-remove-light", + "svg": "" + }, + { + "name": "iconamoon:folder-remove-thin", + "svg": "" + }, + { + "name": "iconamoon:folder-thin", + "svg": "" + }, + { + "name": "iconamoon:folder-video", + "svg": "" + }, + { + "name": "iconamoon:folder-video-bold", + "svg": "" + }, + { + "name": "iconamoon:folder-video-duotone", + "svg": "" + }, + { + "name": "iconamoon:folder-video-fill", + "svg": "" + }, + { + "name": "iconamoon:folder-video-light", + "svg": "" + }, + { + "name": "iconamoon:folder-video-thin", + "svg": "" + }, + { + "name": "iconamoon:frame", + "svg": "" + }, + { + "name": "iconamoon:frame-bold", + "svg": "" + }, + { + "name": "iconamoon:frame-duotone", + "svg": "" + }, + { + "name": "iconamoon:frame-fill", + "svg": "" + }, + { + "name": "iconamoon:frame-light", + "svg": "" + }, + { + "name": "iconamoon:frame-thin", + "svg": "" + }, + { + "name": "iconamoon:frowning-face", + "svg": "" + }, + { + "name": "iconamoon:frowning-face-bold", + "svg": "" + }, + { + "name": "iconamoon:frowning-face-duotone", + "svg": "" + }, + { + "name": "iconamoon:frowning-face-fill", + "svg": "" + }, + { + "name": "iconamoon:frowning-face-light", + "svg": "" + }, + { + "name": "iconamoon:frowning-face-thin", + "svg": "" + }, + { + "name": "iconamoon:funnel", + "svg": "" + }, + { + "name": "iconamoon:funnel-bold", + "svg": "" + }, + { + "name": "iconamoon:funnel-duotone", + "svg": "" + }, + { + "name": "iconamoon:funnel-fill", + "svg": "" + }, + { + "name": "iconamoon:funnel-light", + "svg": "" + }, + { + "name": "iconamoon:funnel-thin", + "svg": "" + }, + { + "name": "iconamoon:gift", + "svg": "" + }, + { + "name": "iconamoon:gift-bold", + "svg": "" + }, + { + "name": "iconamoon:gift-duotone", + "svg": "" + }, + { + "name": "iconamoon:gift-fill", + "svg": "" + }, + { + "name": "iconamoon:gift-light", + "svg": "" + }, + { + "name": "iconamoon:gift-thin", + "svg": "" + }, + { + "name": "iconamoon:headphone", + "svg": "" + }, + { + "name": "iconamoon:headphone-bold", + "svg": "" + }, + { + "name": "iconamoon:headphone-duotone", + "svg": "" + }, + { + "name": "iconamoon:headphone-fill", + "svg": "" + }, + { + "name": "iconamoon:headphone-light", + "svg": "" + }, + { + "name": "iconamoon:headphone-thin", + "svg": "" + }, + { + "name": "iconamoon:heart", + "svg": "" + }, + { + "name": "iconamoon:heart-bold", + "svg": "" + }, + { + "name": "iconamoon:heart-duotone", + "svg": "" + }, + { + "name": "iconamoon:heart-fill", + "svg": "" + }, + { + "name": "iconamoon:heart-light", + "svg": "" + }, + { + "name": "iconamoon:heart-off", + "svg": "" + }, + { + "name": "iconamoon:heart-off-bold", + "svg": "" + }, + { + "name": "iconamoon:heart-off-duotone", + "svg": "" + }, + { + "name": "iconamoon:heart-off-fill", + "svg": "" + }, + { + "name": "iconamoon:heart-off-light", + "svg": "" + }, + { + "name": "iconamoon:heart-off-thin", + "svg": "" + }, + { + "name": "iconamoon:heart-thin", + "svg": "" + }, + { + "name": "iconamoon:history", + "svg": "" + }, + { + "name": "iconamoon:history-bold", + "svg": "" + }, + { + "name": "iconamoon:history-duotone", + "svg": "" + }, + { + "name": "iconamoon:history-fill", + "svg": "" + }, + { + "name": "iconamoon:history-light", + "svg": "" + }, + { + "name": "iconamoon:history-thin", + "svg": "" + }, + { + "name": "iconamoon:home", + "svg": "" + }, + { + "name": "iconamoon:home-bold", + "svg": "" + }, + { + "name": "iconamoon:home-duotone", + "svg": "" + }, + { + "name": "iconamoon:home-fill", + "svg": "" + }, + { + "name": "iconamoon:home-light", + "svg": "" + }, + { + "name": "iconamoon:home-thin", + "svg": "" + }, + { + "name": "iconamoon:information-circle", + "svg": "" + }, + { + "name": "iconamoon:information-circle-bold", + "svg": "" + }, + { + "name": "iconamoon:information-circle-duotone", + "svg": "" + }, + { + "name": "iconamoon:information-circle-fill", + "svg": "" + }, + { + "name": "iconamoon:information-circle-light", + "svg": "" + }, + { + "name": "iconamoon:information-circle-thin", + "svg": "" + }, + { + "name": "iconamoon:information-square", + "svg": "" + }, + { + "name": "iconamoon:information-square-bold", + "svg": "" + }, + { + "name": "iconamoon:information-square-duotone", + "svg": "" + }, + { + "name": "iconamoon:information-square-fill", + "svg": "" + }, + { + "name": "iconamoon:information-square-light", + "svg": "" + }, + { + "name": "iconamoon:information-square-thin", + "svg": "" + }, + { + "name": "iconamoon:invoice", + "svg": "" + }, + { + "name": "iconamoon:invoice-bold", + "svg": "" + }, + { + "name": "iconamoon:invoice-duotone", + "svg": "" + }, + { + "name": "iconamoon:invoice-fill", + "svg": "" + }, + { + "name": "iconamoon:invoice-light", + "svg": "" + }, + { + "name": "iconamoon:invoice-thin", + "svg": "" + }, + { + "name": "iconamoon:kissing-face", + "svg": "" + }, + { + "name": "iconamoon:kissing-face-bold", + "svg": "" + }, + { + "name": "iconamoon:kissing-face-duotone", + "svg": "" + }, + { + "name": "iconamoon:kissing-face-fill", + "svg": "" + }, + { + "name": "iconamoon:kissing-face-light", + "svg": "" + }, + { + "name": "iconamoon:kissing-face-thin", + "svg": "" + }, + { + "name": "iconamoon:kissing-face-with-smiling-eyes", + "svg": "" + }, + { + "name": "iconamoon:kissing-face-with-smiling-eyes-bold", + "svg": "" + }, + { + "name": "iconamoon:kissing-face-with-smiling-eyes-duotone", + "svg": "" + }, + { + "name": "iconamoon:kissing-face-with-smiling-eyes-fill", + "svg": "" + }, + { + "name": "iconamoon:kissing-face-with-smiling-eyes-light", + "svg": "" + }, + { + "name": "iconamoon:kissing-face-with-smiling-eyes-thin", + "svg": "" + }, + { + "name": "iconamoon:lightning-1", + "svg": "" + }, + { + "name": "iconamoon:lightning-1-bold", + "svg": "" + }, + { + "name": "iconamoon:lightning-1-duotone", + "svg": "" + }, + { + "name": "iconamoon:lightning-1-fill", + "svg": "" + }, + { + "name": "iconamoon:lightning-1-light", + "svg": "" + }, + { + "name": "iconamoon:lightning-1-thin", + "svg": "" + }, + { + "name": "iconamoon:lightning-2", + "svg": "" + }, + { + "name": "iconamoon:lightning-2-bold", + "svg": "" + }, + { + "name": "iconamoon:lightning-2-duotone", + "svg": "" + }, + { + "name": "iconamoon:lightning-2-fill", + "svg": "" + }, + { + "name": "iconamoon:lightning-2-light", + "svg": "" + }, + { + "name": "iconamoon:lightning-2-thin", + "svg": "" + }, + { + "name": "iconamoon:like", + "svg": "" + }, + { + "name": "iconamoon:like-bold", + "svg": "" + }, + { + "name": "iconamoon:like-duotone", + "svg": "" + }, + { + "name": "iconamoon:like-fill", + "svg": "" + }, + { + "name": "iconamoon:like-light", + "svg": "" + }, + { + "name": "iconamoon:like-thin", + "svg": "" + }, + { + "name": "iconamoon:link", + "svg": "" + }, + { + "name": "iconamoon:link-bold", + "svg": "" + }, + { + "name": "iconamoon:link-duotone", + "svg": "" + }, + { + "name": "iconamoon:link-external", + "svg": "" + }, + { + "name": "iconamoon:link-external-bold", + "svg": "" + }, + { + "name": "iconamoon:link-external-duotone", + "svg": "" + }, + { + "name": "iconamoon:link-external-fill", + "svg": "" + }, + { + "name": "iconamoon:link-external-light", + "svg": "" + }, + { + "name": "iconamoon:link-external-thin", + "svg": "" + }, + { + "name": "iconamoon:link-fill", + "svg": "" + }, + { + "name": "iconamoon:link-light", + "svg": "" + }, + { + "name": "iconamoon:link-thin", + "svg": "" + }, + { + "name": "iconamoon:location", + "svg": "" + }, + { + "name": "iconamoon:location-bold", + "svg": "" + }, + { + "name": "iconamoon:location-duotone", + "svg": "" + }, + { + "name": "iconamoon:location-fill", + "svg": "" + }, + { + "name": "iconamoon:location-light", + "svg": "" + }, + { + "name": "iconamoon:location-pin", + "svg": "" + }, + { + "name": "iconamoon:location-pin-bold", + "svg": "" + }, + { + "name": "iconamoon:location-pin-duotone", + "svg": "" + }, + { + "name": "iconamoon:location-pin-fill", + "svg": "" + }, + { + "name": "iconamoon:location-pin-light", + "svg": "" + }, + { + "name": "iconamoon:location-pin-off", + "svg": "" + }, + { + "name": "iconamoon:location-pin-off-bold", + "svg": "" + }, + { + "name": "iconamoon:location-pin-off-duotone", + "svg": "" + }, + { + "name": "iconamoon:location-pin-off-fill", + "svg": "" + }, + { + "name": "iconamoon:location-pin-off-light", + "svg": "" + }, + { + "name": "iconamoon:location-pin-off-thin", + "svg": "" + }, + { + "name": "iconamoon:location-pin-thin", + "svg": "" + }, + { + "name": "iconamoon:location-thin", + "svg": "" + }, + { + "name": "iconamoon:lock", + "svg": "" + }, + { + "name": "iconamoon:lock-bold", + "svg": "" + }, + { + "name": "iconamoon:lock-duotone", + "svg": "" + }, + { + "name": "iconamoon:lock-fill", + "svg": "" + }, + { + "name": "iconamoon:lock-light", + "svg": "" + }, + { + "name": "iconamoon:lock-off", + "svg": "" + }, + { + "name": "iconamoon:lock-off-bold", + "svg": "" + }, + { + "name": "iconamoon:lock-off-duotone", + "svg": "" + }, + { + "name": "iconamoon:lock-off-fill", + "svg": "" + }, + { + "name": "iconamoon:lock-off-light", + "svg": "" + }, + { + "name": "iconamoon:lock-off-thin", + "svg": "" + }, + { + "name": "iconamoon:lock-thin", + "svg": "" + }, + { + "name": "iconamoon:menu-burger-horizontal", + "svg": "" + }, + { + "name": "iconamoon:menu-burger-horizontal-bold", + "svg": "" + }, + { + "name": "iconamoon:menu-burger-horizontal-duotone", + "svg": "" + }, + { + "name": "iconamoon:menu-burger-horizontal-fill", + "svg": "" + }, + { + "name": "iconamoon:menu-burger-horizontal-light", + "svg": "" + }, + { + "name": "iconamoon:menu-burger-horizontal-thin", + "svg": "" + }, + { + "name": "iconamoon:menu-burger-vertical", + "svg": "" + }, + { + "name": "iconamoon:menu-burger-vertical-bold", + "svg": "" + }, + { + "name": "iconamoon:menu-burger-vertical-duotone", + "svg": "" + }, + { + "name": "iconamoon:menu-burger-vertical-fill", + "svg": "" + }, + { + "name": "iconamoon:menu-burger-vertical-light", + "svg": "" + }, + { + "name": "iconamoon:menu-burger-vertical-thin", + "svg": "" + }, + { + "name": "iconamoon:menu-kebab-horizontal", + "svg": "" + }, + { + "name": "iconamoon:menu-kebab-horizontal-bold", + "svg": "" + }, + { + "name": "iconamoon:menu-kebab-horizontal-circle", + "svg": "" + }, + { + "name": "iconamoon:menu-kebab-horizontal-circle-bold", + "svg": "" + }, + { + "name": "iconamoon:menu-kebab-horizontal-circle-duotone", + "svg": "" + }, + { + "name": "iconamoon:menu-kebab-horizontal-circle-fill", + "svg": "" + }, + { + "name": "iconamoon:menu-kebab-horizontal-circle-light", + "svg": "" + }, + { + "name": "iconamoon:menu-kebab-horizontal-circle-thin", + "svg": "" + }, + { + "name": "iconamoon:menu-kebab-horizontal-fill", + "svg": "" + }, + { + "name": "iconamoon:menu-kebab-horizontal-light", + "svg": "" + }, + { + "name": "iconamoon:menu-kebab-horizontal-square", + "svg": "" + }, + { + "name": "iconamoon:menu-kebab-horizontal-square-bold", + "svg": "" + }, + { + "name": "iconamoon:menu-kebab-horizontal-square-duotone", + "svg": "" + }, + { + "name": "iconamoon:menu-kebab-horizontal-square-fill", + "svg": "" + }, + { + "name": "iconamoon:menu-kebab-horizontal-square-light", + "svg": "" + }, + { + "name": "iconamoon:menu-kebab-horizontal-square-thin", + "svg": "" + }, + { + "name": "iconamoon:menu-kebab-horizontal-thin", + "svg": "" + }, + { + "name": "iconamoon:menu-kebab-vertical", + "svg": "" + }, + { + "name": "iconamoon:menu-kebab-vertical-bold", + "svg": "" + }, + { + "name": "iconamoon:menu-kebab-vertical-circle", + "svg": "" + }, + { + "name": "iconamoon:menu-kebab-vertical-circle-bold", + "svg": "" + }, + { + "name": "iconamoon:menu-kebab-vertical-circle-duotone", + "svg": "" + }, + { + "name": "iconamoon:menu-kebab-vertical-circle-fill", + "svg": "" + }, + { + "name": "iconamoon:menu-kebab-vertical-circle-light", + "svg": "" + }, + { + "name": "iconamoon:menu-kebab-vertical-circle-thin", + "svg": "" + }, + { + "name": "iconamoon:menu-kebab-vertical-fill", + "svg": "" + }, + { + "name": "iconamoon:menu-kebab-vertical-light", + "svg": "" + }, + { + "name": "iconamoon:menu-kebab-vertical-square", + "svg": "" + }, + { + "name": "iconamoon:menu-kebab-vertical-square-bold", + "svg": "" + }, + { + "name": "iconamoon:menu-kebab-vertical-square-duotone", + "svg": "" + }, + { + "name": "iconamoon:menu-kebab-vertical-square-fill", + "svg": "" + }, + { + "name": "iconamoon:menu-kebab-vertical-square-light", + "svg": "" + }, + { + "name": "iconamoon:menu-kebab-vertical-square-thin", + "svg": "" + }, + { + "name": "iconamoon:menu-kebab-vertical-thin", + "svg": "" + }, + { + "name": "iconamoon:microphone", + "svg": "" + }, + { + "name": "iconamoon:microphone-bold", + "svg": "" + }, + { + "name": "iconamoon:microphone-duotone", + "svg": "" + }, + { + "name": "iconamoon:microphone-fill", + "svg": "" + }, + { + "name": "iconamoon:microphone-light", + "svg": "" + }, + { + "name": "iconamoon:microphone-off", + "svg": "" + }, + { + "name": "iconamoon:microphone-off-bold", + "svg": "" + }, + { + "name": "iconamoon:microphone-off-duotone", + "svg": "" + }, + { + "name": "iconamoon:microphone-off-fill", + "svg": "" + }, + { + "name": "iconamoon:microphone-off-light", + "svg": "" + }, + { + "name": "iconamoon:microphone-off-thin", + "svg": "" + }, + { + "name": "iconamoon:microphone-thin", + "svg": "" + }, + { + "name": "iconamoon:mode-dark", + "svg": "" + }, + { + "name": "iconamoon:mode-dark-bold", + "svg": "" + }, + { + "name": "iconamoon:mode-dark-duotone", + "svg": "" + }, + { + "name": "iconamoon:mode-dark-fill", + "svg": "" + }, + { + "name": "iconamoon:mode-dark-light", + "svg": "" + }, + { + "name": "iconamoon:mode-dark-thin", + "svg": "" + }, + { + "name": "iconamoon:mode-light", + "svg": "" + }, + { + "name": "iconamoon:mode-light-bold", + "svg": "" + }, + { + "name": "iconamoon:mode-light-duotone", + "svg": "" + }, + { + "name": "iconamoon:mode-light-fill", + "svg": "" + }, + { + "name": "iconamoon:mode-light-light", + "svg": "" + }, + { + "name": "iconamoon:mode-light-thin", + "svg": "" + }, + { + "name": "iconamoon:mouse", + "svg": "" + }, + { + "name": "iconamoon:mouse-bold", + "svg": "" + }, + { + "name": "iconamoon:mouse-duotone", + "svg": "" + }, + { + "name": "iconamoon:mouse-fill", + "svg": "" + }, + { + "name": "iconamoon:mouse-light", + "svg": "" + }, + { + "name": "iconamoon:mouse-thin", + "svg": "" + }, + { + "name": "iconamoon:move", + "svg": "" + }, + { + "name": "iconamoon:move-bold", + "svg": "" + }, + { + "name": "iconamoon:move-duotone", + "svg": "" + }, + { + "name": "iconamoon:move-fill", + "svg": "" + }, + { + "name": "iconamoon:move-light", + "svg": "" + }, + { + "name": "iconamoon:move-thin", + "svg": "" + }, + { + "name": "iconamoon:music-1", + "svg": "" + }, + { + "name": "iconamoon:music-1-bold", + "svg": "" + }, + { + "name": "iconamoon:music-1-duotone", + "svg": "" + }, + { + "name": "iconamoon:music-1-fill", + "svg": "" + }, + { + "name": "iconamoon:music-1-light", + "svg": "" + }, + { + "name": "iconamoon:music-1-thin", + "svg": "" + }, + { + "name": "iconamoon:music-2", + "svg": "" + }, + { + "name": "iconamoon:music-2-bold", + "svg": "" + }, + { + "name": "iconamoon:music-2-duotone", + "svg": "" + }, + { + "name": "iconamoon:music-2-fill", + "svg": "" + }, + { + "name": "iconamoon:music-2-light", + "svg": "" + }, + { + "name": "iconamoon:music-2-thin", + "svg": "" + }, + { + "name": "iconamoon:music-album", + "svg": "" + }, + { + "name": "iconamoon:music-album-bold", + "svg": "" + }, + { + "name": "iconamoon:music-album-duotone", + "svg": "" + }, + { + "name": "iconamoon:music-album-fill", + "svg": "" + }, + { + "name": "iconamoon:music-album-light", + "svg": "" + }, + { + "name": "iconamoon:music-album-thin", + "svg": "" + }, + { + "name": "iconamoon:music-artist", + "svg": "" + }, + { + "name": "iconamoon:music-artist-bold", + "svg": "" + }, + { + "name": "iconamoon:music-artist-duotone", + "svg": "" + }, + { + "name": "iconamoon:music-artist-fill", + "svg": "" + }, + { + "name": "iconamoon:music-artist-light", + "svg": "" + }, + { + "name": "iconamoon:music-artist-thin", + "svg": "" + }, + { + "name": "iconamoon:neutral-face", + "svg": "" + }, + { + "name": "iconamoon:neutral-face-bold", + "svg": "" + }, + { + "name": "iconamoon:neutral-face-duotone", + "svg": "" + }, + { + "name": "iconamoon:neutral-face-fill", + "svg": "" + }, + { + "name": "iconamoon:neutral-face-light", + "svg": "" + }, + { + "name": "iconamoon:neutral-face-thin", + "svg": "" + }, + { + "name": "iconamoon:news", + "svg": "" + }, + { + "name": "iconamoon:news-bold", + "svg": "" + }, + { + "name": "iconamoon:news-duotone", + "svg": "" + }, + { + "name": "iconamoon:news-fill", + "svg": "" + }, + { + "name": "iconamoon:news-light", + "svg": "" + }, + { + "name": "iconamoon:news-thin", + "svg": "" + }, + { + "name": "iconamoon:notification", + "svg": "" + }, + { + "name": "iconamoon:notification-bold", + "svg": "" + }, + { + "name": "iconamoon:notification-duotone", + "svg": "" + }, + { + "name": "iconamoon:notification-fill", + "svg": "" + }, + { + "name": "iconamoon:notification-light", + "svg": "" + }, + { + "name": "iconamoon:notification-off", + "svg": "" + }, + { + "name": "iconamoon:notification-off-bold", + "svg": "" + }, + { + "name": "iconamoon:notification-off-duotone", + "svg": "" + }, + { + "name": "iconamoon:notification-off-fill", + "svg": "" + }, + { + "name": "iconamoon:notification-off-light", + "svg": "" + }, + { + "name": "iconamoon:notification-off-thin", + "svg": "" + }, + { + "name": "iconamoon:notification-thin", + "svg": "" + }, + { + "name": "iconamoon:number-0", + "svg": "" + }, + { + "name": "iconamoon:number-0-bold", + "svg": "" + }, + { + "name": "iconamoon:number-0-circle", + "svg": "" + }, + { + "name": "iconamoon:number-0-circle-bold", + "svg": "" + }, + { + "name": "iconamoon:number-0-circle-duotone", + "svg": "" + }, + { + "name": "iconamoon:number-0-circle-fill", + "svg": "" + }, + { + "name": "iconamoon:number-0-circle-light", + "svg": "" + }, + { + "name": "iconamoon:number-0-circle-thin", + "svg": "" + }, + { + "name": "iconamoon:number-0-duotone", + "svg": "" + }, + { + "name": "iconamoon:number-0-fill", + "svg": "" + }, + { + "name": "iconamoon:number-0-light", + "svg": "" + }, + { + "name": "iconamoon:number-0-square", + "svg": "" + }, + { + "name": "iconamoon:number-0-square-bold", + "svg": "" + }, + { + "name": "iconamoon:number-0-square-duotone", + "svg": "" + }, + { + "name": "iconamoon:number-0-square-fill", + "svg": "" + }, + { + "name": "iconamoon:number-0-square-light", + "svg": "" + }, + { + "name": "iconamoon:number-0-square-thin", + "svg": "" + }, + { + "name": "iconamoon:number-0-thin", + "svg": "" + }, + { + "name": "iconamoon:number-1", + "svg": "" + }, + { + "name": "iconamoon:number-1-bold", + "svg": "" + }, + { + "name": "iconamoon:number-1-circle", + "svg": "" + }, + { + "name": "iconamoon:number-1-circle-bold", + "svg": "" + }, + { + "name": "iconamoon:number-1-circle-duotone", + "svg": "" + }, + { + "name": "iconamoon:number-1-circle-fill", + "svg": "" + }, + { + "name": "iconamoon:number-1-circle-light", + "svg": "" + }, + { + "name": "iconamoon:number-1-circle-thin", + "svg": "" + }, + { + "name": "iconamoon:number-1-fill", + "svg": "" + }, + { + "name": "iconamoon:number-1-light", + "svg": "" + }, + { + "name": "iconamoon:number-1-square", + "svg": "" + }, + { + "name": "iconamoon:number-1-square-bold", + "svg": "" + }, + { + "name": "iconamoon:number-1-square-duotone", + "svg": "" + }, + { + "name": "iconamoon:number-1-square-fill", + "svg": "" + }, + { + "name": "iconamoon:number-1-square-light", + "svg": "" + }, + { + "name": "iconamoon:number-1-square-thin", + "svg": "" + }, + { + "name": "iconamoon:number-1-thin", + "svg": "" + }, + { + "name": "iconamoon:number-2", + "svg": "" + }, + { + "name": "iconamoon:number-2-bold", + "svg": "" + }, + { + "name": "iconamoon:number-2-circle", + "svg": "" + }, + { + "name": "iconamoon:number-2-circle-bold", + "svg": "" + }, + { + "name": "iconamoon:number-2-circle-duotone", + "svg": "" + }, + { + "name": "iconamoon:number-2-circle-fill", + "svg": "" + }, + { + "name": "iconamoon:number-2-circle-light", + "svg": "" + }, + { + "name": "iconamoon:number-2-circle-thin", + "svg": "" + }, + { + "name": "iconamoon:number-2-duotone", + "svg": "" + }, + { + "name": "iconamoon:number-2-fill", + "svg": "" + }, + { + "name": "iconamoon:number-2-light", + "svg": "" + }, + { + "name": "iconamoon:number-2-square", + "svg": "" + }, + { + "name": "iconamoon:number-2-square-bold", + "svg": "" + }, + { + "name": "iconamoon:number-2-square-duotone", + "svg": "" + }, + { + "name": "iconamoon:number-2-square-fill", + "svg": "" + }, + { + "name": "iconamoon:number-2-square-light", + "svg": "" + }, + { + "name": "iconamoon:number-2-square-thin", + "svg": "" + }, + { + "name": "iconamoon:number-2-thin", + "svg": "" + }, + { + "name": "iconamoon:number-3", + "svg": "" + }, + { + "name": "iconamoon:number-3-bold", + "svg": "" + }, + { + "name": "iconamoon:number-3-circle", + "svg": "" + }, + { + "name": "iconamoon:number-3-circle-bold", + "svg": "" + }, + { + "name": "iconamoon:number-3-circle-duotone", + "svg": "" + }, + { + "name": "iconamoon:number-3-circle-fill", + "svg": "" + }, + { + "name": "iconamoon:number-3-circle-light", + "svg": "" + }, + { + "name": "iconamoon:number-3-circle-thin", + "svg": "" + }, + { + "name": "iconamoon:number-3-fill", + "svg": "" + }, + { + "name": "iconamoon:number-3-light", + "svg": "" + }, + { + "name": "iconamoon:number-3-square", + "svg": "" + }, + { + "name": "iconamoon:number-3-square-bold", + "svg": "" + }, + { + "name": "iconamoon:number-3-square-duotone", + "svg": "" + }, + { + "name": "iconamoon:number-3-square-fill", + "svg": "" + }, + { + "name": "iconamoon:number-3-square-light", + "svg": "" + }, + { + "name": "iconamoon:number-3-square-thin", + "svg": "" + }, + { + "name": "iconamoon:number-3-thin", + "svg": "" + }, + { + "name": "iconamoon:number-4", + "svg": "" + }, + { + "name": "iconamoon:number-4-bold", + "svg": "" + }, + { + "name": "iconamoon:number-4-circle", + "svg": "" + }, + { + "name": "iconamoon:number-4-circle-bold", + "svg": "" + }, + { + "name": "iconamoon:number-4-circle-duotone", + "svg": "" + }, + { + "name": "iconamoon:number-4-circle-fill", + "svg": "" + }, + { + "name": "iconamoon:number-4-circle-light", + "svg": "" + }, + { + "name": "iconamoon:number-4-circle-thin", + "svg": "" + }, + { + "name": "iconamoon:number-4-fill", + "svg": "" + }, + { + "name": "iconamoon:number-4-light", + "svg": "" + }, + { + "name": "iconamoon:number-4-square", + "svg": "" + }, + { + "name": "iconamoon:number-4-square-bold", + "svg": "" + }, + { + "name": "iconamoon:number-4-square-duotone", + "svg": "" + }, + { + "name": "iconamoon:number-4-square-fill", + "svg": "" + }, + { + "name": "iconamoon:number-4-square-light", + "svg": "" + }, + { + "name": "iconamoon:number-4-square-thin", + "svg": "" + }, + { + "name": "iconamoon:number-4-thin", + "svg": "" + }, + { + "name": "iconamoon:number-5", + "svg": "" + }, + { + "name": "iconamoon:number-5-bold", + "svg": "" + }, + { + "name": "iconamoon:number-5-circle", + "svg": "" + }, + { + "name": "iconamoon:number-5-circle-bold", + "svg": "" + }, + { + "name": "iconamoon:number-5-circle-duotone", + "svg": "" + }, + { + "name": "iconamoon:number-5-circle-fill", + "svg": "" + }, + { + "name": "iconamoon:number-5-circle-light", + "svg": "" + }, + { + "name": "iconamoon:number-5-circle-thin", + "svg": "" + }, + { + "name": "iconamoon:number-5-fill", + "svg": "" + }, + { + "name": "iconamoon:number-5-light", + "svg": "" + }, + { + "name": "iconamoon:number-5-square", + "svg": "" + }, + { + "name": "iconamoon:number-5-square-bold", + "svg": "" + }, + { + "name": "iconamoon:number-5-square-duotone", + "svg": "" + }, + { + "name": "iconamoon:number-5-square-fill", + "svg": "" + }, + { + "name": "iconamoon:number-5-square-light", + "svg": "" + }, + { + "name": "iconamoon:number-5-square-thin", + "svg": "" + }, + { + "name": "iconamoon:number-5-thin", + "svg": "" + }, + { + "name": "iconamoon:number-6", + "svg": "" + }, + { + "name": "iconamoon:number-6-bold", + "svg": "" + }, + { + "name": "iconamoon:number-6-circle", + "svg": "" + }, + { + "name": "iconamoon:number-6-circle-bold", + "svg": "" + }, + { + "name": "iconamoon:number-6-circle-duotone", + "svg": "" + }, + { + "name": "iconamoon:number-6-circle-fill", + "svg": "" + }, + { + "name": "iconamoon:number-6-circle-light", + "svg": "" + }, + { + "name": "iconamoon:number-6-circle-thin", + "svg": "" + }, + { + "name": "iconamoon:number-6-duotone", + "svg": "" + }, + { + "name": "iconamoon:number-6-fill", + "svg": "" + }, + { + "name": "iconamoon:number-6-light", + "svg": "" + }, + { + "name": "iconamoon:number-6-square", + "svg": "" + }, + { + "name": "iconamoon:number-6-square-bold", + "svg": "" + }, + { + "name": "iconamoon:number-6-square-duotone", + "svg": "" + }, + { + "name": "iconamoon:number-6-square-fill", + "svg": "" + }, + { + "name": "iconamoon:number-6-square-light", + "svg": "" + }, + { + "name": "iconamoon:number-6-square-thin", + "svg": "" + }, + { + "name": "iconamoon:number-6-thin", + "svg": "" + }, + { + "name": "iconamoon:number-7", + "svg": "" + }, + { + "name": "iconamoon:number-7-bold", + "svg": "" + }, + { + "name": "iconamoon:number-7-circle", + "svg": "" + }, + { + "name": "iconamoon:number-7-circle-bold", + "svg": "" + }, + { + "name": "iconamoon:number-7-circle-duotone", + "svg": "" + }, + { + "name": "iconamoon:number-7-circle-fill", + "svg": "" + }, + { + "name": "iconamoon:number-7-circle-light", + "svg": "" + }, + { + "name": "iconamoon:number-7-circle-thin", + "svg": "" + }, + { + "name": "iconamoon:number-7-fill", + "svg": "" + }, + { + "name": "iconamoon:number-7-light", + "svg": "" + }, + { + "name": "iconamoon:number-7-square", + "svg": "" + }, + { + "name": "iconamoon:number-7-square-bold", + "svg": "" + }, + { + "name": "iconamoon:number-7-square-duotone", + "svg": "" + }, + { + "name": "iconamoon:number-7-square-fill", + "svg": "" + }, + { + "name": "iconamoon:number-7-square-light", + "svg": "" + }, + { + "name": "iconamoon:number-7-square-thin", + "svg": "" + }, + { + "name": "iconamoon:number-7-thin", + "svg": "" + }, + { + "name": "iconamoon:number-8", + "svg": "" + }, + { + "name": "iconamoon:number-8-bold", + "svg": "" + }, + { + "name": "iconamoon:number-8-circle", + "svg": "" + }, + { + "name": "iconamoon:number-8-circle-bold", + "svg": "" + }, + { + "name": "iconamoon:number-8-circle-duotone", + "svg": "" + }, + { + "name": "iconamoon:number-8-circle-fill", + "svg": "" + }, + { + "name": "iconamoon:number-8-circle-light", + "svg": "" + }, + { + "name": "iconamoon:number-8-circle-thin", + "svg": "" + }, + { + "name": "iconamoon:number-8-duotone", + "svg": "" + }, + { + "name": "iconamoon:number-8-fill", + "svg": "" + }, + { + "name": "iconamoon:number-8-light", + "svg": "" + }, + { + "name": "iconamoon:number-8-square", + "svg": "" + }, + { + "name": "iconamoon:number-8-square-bold", + "svg": "" + }, + { + "name": "iconamoon:number-8-square-duotone", + "svg": "" + }, + { + "name": "iconamoon:number-8-square-fill", + "svg": "" + }, + { + "name": "iconamoon:number-8-square-light", + "svg": "" + }, + { + "name": "iconamoon:number-8-square-thin", + "svg": "" + }, + { + "name": "iconamoon:number-8-thin", + "svg": "" + }, + { + "name": "iconamoon:number-9", + "svg": "" + }, + { + "name": "iconamoon:number-9-bold", + "svg": "" + }, + { + "name": "iconamoon:number-9-circle", + "svg": "" + }, + { + "name": "iconamoon:number-9-circle-bold", + "svg": "" + }, + { + "name": "iconamoon:number-9-circle-duotone", + "svg": "" + }, + { + "name": "iconamoon:number-9-circle-fill", + "svg": "" + }, + { + "name": "iconamoon:number-9-circle-light", + "svg": "" + }, + { + "name": "iconamoon:number-9-circle-thin", + "svg": "" + }, + { + "name": "iconamoon:number-9-duotone", + "svg": "" + }, + { + "name": "iconamoon:number-9-fill", + "svg": "" + }, + { + "name": "iconamoon:number-9-light", + "svg": "" + }, + { + "name": "iconamoon:number-9-square", + "svg": "" + }, + { + "name": "iconamoon:number-9-square-bold", + "svg": "" + }, + { + "name": "iconamoon:number-9-square-duotone", + "svg": "" + }, + { + "name": "iconamoon:number-9-square-fill", + "svg": "" + }, + { + "name": "iconamoon:number-9-square-light", + "svg": "" + }, + { + "name": "iconamoon:number-9-square-thin", + "svg": "" + }, + { + "name": "iconamoon:number-9-thin", + "svg": "" + }, + { + "name": "iconamoon:options", + "svg": "" + }, + { + "name": "iconamoon:options-bold", + "svg": "" + }, + { + "name": "iconamoon:options-duotone", + "svg": "" + }, + { + "name": "iconamoon:options-fill", + "svg": "" + }, + { + "name": "iconamoon:options-light", + "svg": "" + }, + { + "name": "iconamoon:options-thin", + "svg": "" + }, + { + "name": "iconamoon:pen", + "svg": "" + }, + { + "name": "iconamoon:pen-bold", + "svg": "" + }, + { + "name": "iconamoon:pen-duotone", + "svg": "" + }, + { + "name": "iconamoon:pen-fill", + "svg": "" + }, + { + "name": "iconamoon:pen-light", + "svg": "" + }, + { + "name": "iconamoon:pen-thin", + "svg": "" + }, + { + "name": "iconamoon:pensive-face", + "svg": "" + }, + { + "name": "iconamoon:pensive-face-bold", + "svg": "" + }, + { + "name": "iconamoon:pensive-face-duotone", + "svg": "" + }, + { + "name": "iconamoon:pensive-face-fill", + "svg": "" + }, + { + "name": "iconamoon:pensive-face-light", + "svg": "" + }, + { + "name": "iconamoon:pensive-face-thin", + "svg": "" + }, + { + "name": "iconamoon:phone", + "svg": "" + }, + { + "name": "iconamoon:phone-bold", + "svg": "" + }, + { + "name": "iconamoon:phone-duotone", + "svg": "" + }, + { + "name": "iconamoon:phone-fill", + "svg": "" + }, + { + "name": "iconamoon:phone-light", + "svg": "" + }, + { + "name": "iconamoon:phone-off", + "svg": "" + }, + { + "name": "iconamoon:phone-off-bold", + "svg": "" + }, + { + "name": "iconamoon:phone-off-duotone", + "svg": "" + }, + { + "name": "iconamoon:phone-off-fill", + "svg": "" + }, + { + "name": "iconamoon:phone-off-light", + "svg": "" + }, + { + "name": "iconamoon:phone-off-thin", + "svg": "" + }, + { + "name": "iconamoon:phone-thin", + "svg": "" + }, + { + "name": "iconamoon:play-circle", + "svg": "" + }, + { + "name": "iconamoon:play-circle-bold", + "svg": "" + }, + { + "name": "iconamoon:play-circle-duotone", + "svg": "" + }, + { + "name": "iconamoon:play-circle-fill", + "svg": "" + }, + { + "name": "iconamoon:play-circle-light", + "svg": "" + }, + { + "name": "iconamoon:play-circle-thin", + "svg": "" + }, + { + "name": "iconamoon:player-end", + "svg": "" + }, + { + "name": "iconamoon:player-end-bold", + "svg": "" + }, + { + "name": "iconamoon:player-end-duotone", + "svg": "" + }, + { + "name": "iconamoon:player-end-fill", + "svg": "" + }, + { + "name": "iconamoon:player-end-light", + "svg": "" + }, + { + "name": "iconamoon:player-end-thin", + "svg": "" + }, + { + "name": "iconamoon:player-next", + "svg": "" + }, + { + "name": "iconamoon:player-next-bold", + "svg": "" + }, + { + "name": "iconamoon:player-next-duotone", + "svg": "" + }, + { + "name": "iconamoon:player-next-fill", + "svg": "" + }, + { + "name": "iconamoon:player-next-light", + "svg": "" + }, + { + "name": "iconamoon:player-next-thin", + "svg": "" + }, + { + "name": "iconamoon:player-pause", + "svg": "" + }, + { + "name": "iconamoon:player-pause-bold", + "svg": "" + }, + { + "name": "iconamoon:player-pause-duotone", + "svg": "" + }, + { + "name": "iconamoon:player-pause-fill", + "svg": "" + }, + { + "name": "iconamoon:player-pause-light", + "svg": "" + }, + { + "name": "iconamoon:player-pause-thin", + "svg": "" + }, + { + "name": "iconamoon:player-play", + "svg": "" + }, + { + "name": "iconamoon:player-play-bold", + "svg": "" + }, + { + "name": "iconamoon:player-play-duotone", + "svg": "" + }, + { + "name": "iconamoon:player-play-fill", + "svg": "" + }, + { + "name": "iconamoon:player-play-light", + "svg": "" + }, + { + "name": "iconamoon:player-play-thin", + "svg": "" + }, + { + "name": "iconamoon:player-previous", + "svg": "" + }, + { + "name": "iconamoon:player-previous-bold", + "svg": "" + }, + { + "name": "iconamoon:player-previous-duotone", + "svg": "" + }, + { + "name": "iconamoon:player-previous-fill", + "svg": "" + }, + { + "name": "iconamoon:player-previous-light", + "svg": "" + }, + { + "name": "iconamoon:player-previous-thin", + "svg": "" + }, + { + "name": "iconamoon:player-start", + "svg": "" + }, + { + "name": "iconamoon:player-start-bold", + "svg": "" + }, + { + "name": "iconamoon:player-start-duotone", + "svg": "" + }, + { + "name": "iconamoon:player-start-fill", + "svg": "" + }, + { + "name": "iconamoon:player-start-light", + "svg": "" + }, + { + "name": "iconamoon:player-start-thin", + "svg": "" + }, + { + "name": "iconamoon:player-stop", + "svg": "" + }, + { + "name": "iconamoon:player-stop-bold", + "svg": "" + }, + { + "name": "iconamoon:player-stop-duotone", + "svg": "" + }, + { + "name": "iconamoon:player-stop-fill", + "svg": "" + }, + { + "name": "iconamoon:player-stop-light", + "svg": "" + }, + { + "name": "iconamoon:player-stop-thin", + "svg": "" + }, + { + "name": "iconamoon:playlist", + "svg": "" + }, + { + "name": "iconamoon:playlist-bold", + "svg": "" + }, + { + "name": "iconamoon:playlist-fill", + "svg": "" + }, + { + "name": "iconamoon:playlist-light", + "svg": "" + }, + { + "name": "iconamoon:playlist-repeat-list", + "svg": "" + }, + { + "name": "iconamoon:playlist-repeat-list-bold", + "svg": "" + }, + { + "name": "iconamoon:playlist-repeat-list-fill", + "svg": "" + }, + { + "name": "iconamoon:playlist-repeat-list-light", + "svg": "" + }, + { + "name": "iconamoon:playlist-repeat-list-thin", + "svg": "" + }, + { + "name": "iconamoon:playlist-repeat-song", + "svg": "" + }, + { + "name": "iconamoon:playlist-repeat-song-bold", + "svg": "" + }, + { + "name": "iconamoon:playlist-repeat-song-fill", + "svg": "" + }, + { + "name": "iconamoon:playlist-repeat-song-light", + "svg": "" + }, + { + "name": "iconamoon:playlist-repeat-song-thin", + "svg": "" + }, + { + "name": "iconamoon:playlist-shuffle", + "svg": "" + }, + { + "name": "iconamoon:playlist-shuffle-bold", + "svg": "" + }, + { + "name": "iconamoon:playlist-shuffle-duotone", + "svg": "" + }, + { + "name": "iconamoon:playlist-shuffle-fill", + "svg": "" + }, + { + "name": "iconamoon:playlist-shuffle-light", + "svg": "" + }, + { + "name": "iconamoon:playlist-shuffle-thin", + "svg": "" + }, + { + "name": "iconamoon:playlist-thin", + "svg": "" + }, + { + "name": "iconamoon:printer", + "svg": "" + }, + { + "name": "iconamoon:printer-bold", + "svg": "" + }, + { + "name": "iconamoon:printer-duotone", + "svg": "" + }, + { + "name": "iconamoon:printer-fill", + "svg": "" + }, + { + "name": "iconamoon:printer-light", + "svg": "" + }, + { + "name": "iconamoon:printer-thin", + "svg": "" + }, + { + "name": "iconamoon:profile", + "svg": "" + }, + { + "name": "iconamoon:profile-bold", + "svg": "" + }, + { + "name": "iconamoon:profile-circle", + "svg": "" + }, + { + "name": "iconamoon:profile-circle-bold", + "svg": "" + }, + { + "name": "iconamoon:profile-circle-duotone", + "svg": "" + }, + { + "name": "iconamoon:profile-circle-fill", + "svg": "" + }, + { + "name": "iconamoon:profile-circle-light", + "svg": "" + }, + { + "name": "iconamoon:profile-circle-thin", + "svg": "" + }, + { + "name": "iconamoon:profile-duotone", + "svg": "" + }, + { + "name": "iconamoon:profile-fill", + "svg": "" + }, + { + "name": "iconamoon:profile-light", + "svg": "" + }, + { + "name": "iconamoon:profile-thin", + "svg": "" + }, + { + "name": "iconamoon:question-mark-circle", + "svg": "" + }, + { + "name": "iconamoon:question-mark-circle-bold", + "svg": "" + }, + { + "name": "iconamoon:question-mark-circle-duotone", + "svg": "" + }, + { + "name": "iconamoon:question-mark-circle-fill", + "svg": "" + }, + { + "name": "iconamoon:question-mark-circle-light", + "svg": "" + }, + { + "name": "iconamoon:question-mark-circle-thin", + "svg": "" + }, + { + "name": "iconamoon:question-mark-square", + "svg": "" + }, + { + "name": "iconamoon:question-mark-square-bold", + "svg": "" + }, + { + "name": "iconamoon:question-mark-square-duotone", + "svg": "" + }, + { + "name": "iconamoon:question-mark-square-fill", + "svg": "" + }, + { + "name": "iconamoon:question-mark-square-light", + "svg": "" + }, + { + "name": "iconamoon:question-mark-square-thin", + "svg": "" + }, + { + "name": "iconamoon:relieved-face", + "svg": "" + }, + { + "name": "iconamoon:relieved-face-bold", + "svg": "" + }, + { + "name": "iconamoon:relieved-face-duotone", + "svg": "" + }, + { + "name": "iconamoon:relieved-face-fill", + "svg": "" + }, + { + "name": "iconamoon:relieved-face-light", + "svg": "" + }, + { + "name": "iconamoon:relieved-face-thin", + "svg": "" + }, + { + "name": "iconamoon:restart", + "svg": "" + }, + { + "name": "iconamoon:restart-bold", + "svg": "" + }, + { + "name": "iconamoon:restart-duotone", + "svg": "" + }, + { + "name": "iconamoon:restart-fill", + "svg": "" + }, + { + "name": "iconamoon:restart-light", + "svg": "" + }, + { + "name": "iconamoon:restart-thin", + "svg": "" + }, + { + "name": "iconamoon:scanner", + "svg": "" + }, + { + "name": "iconamoon:scanner-bold", + "svg": "" + }, + { + "name": "iconamoon:scanner-fill", + "svg": "" + }, + { + "name": "iconamoon:scanner-light", + "svg": "" + }, + { + "name": "iconamoon:scanner-thin", + "svg": "" + }, + { + "name": "iconamoon:screen-full", + "svg": "" + }, + { + "name": "iconamoon:screen-full-bold", + "svg": "" + }, + { + "name": "iconamoon:screen-full-duotone", + "svg": "" + }, + { + "name": "iconamoon:screen-full-fill", + "svg": "" + }, + { + "name": "iconamoon:screen-full-light", + "svg": "" + }, + { + "name": "iconamoon:screen-full-thin", + "svg": "" + }, + { + "name": "iconamoon:screen-normal", + "svg": "" + }, + { + "name": "iconamoon:screen-normal-bold", + "svg": "" + }, + { + "name": "iconamoon:screen-normal-duotone", + "svg": "" + }, + { + "name": "iconamoon:screen-normal-fill", + "svg": "" + }, + { + "name": "iconamoon:screen-normal-light", + "svg": "" + }, + { + "name": "iconamoon:screen-normal-thin", + "svg": "" + }, + { + "name": "iconamoon:search", + "svg": "" + }, + { + "name": "iconamoon:search-bold", + "svg": "" + }, + { + "name": "iconamoon:search-duotone", + "svg": "" + }, + { + "name": "iconamoon:search-fill", + "svg": "" + }, + { + "name": "iconamoon:search-light", + "svg": "" + }, + { + "name": "iconamoon:search-thin", + "svg": "" + }, + { + "name": "iconamoon:send", + "svg": "" + }, + { + "name": "iconamoon:send-bold", + "svg": "" + }, + { + "name": "iconamoon:send-duotone", + "svg": "" + }, + { + "name": "iconamoon:send-fill", + "svg": "" + }, + { + "name": "iconamoon:send-light", + "svg": "" + }, + { + "name": "iconamoon:send-thin", + "svg": "" + }, + { + "name": "iconamoon:settings", + "svg": "" + }, + { + "name": "iconamoon:settings-bold", + "svg": "" + }, + { + "name": "iconamoon:settings-duotone", + "svg": "" + }, + { + "name": "iconamoon:settings-fill", + "svg": "" + }, + { + "name": "iconamoon:settings-light", + "svg": "" + }, + { + "name": "iconamoon:settings-thin", + "svg": "" + }, + { + "name": "iconamoon:share-1", + "svg": "" + }, + { + "name": "iconamoon:share-1-bold", + "svg": "" + }, + { + "name": "iconamoon:share-1-duotone", + "svg": "" + }, + { + "name": "iconamoon:share-1-fill", + "svg": "" + }, + { + "name": "iconamoon:share-1-light", + "svg": "" + }, + { + "name": "iconamoon:share-1-thin", + "svg": "" + }, + { + "name": "iconamoon:share-2", + "svg": "" + }, + { + "name": "iconamoon:share-2-bold", + "svg": "" + }, + { + "name": "iconamoon:share-2-duotone", + "svg": "" + }, + { + "name": "iconamoon:share-2-fill", + "svg": "" + }, + { + "name": "iconamoon:share-2-light", + "svg": "" + }, + { + "name": "iconamoon:share-2-thin", + "svg": "" + }, + { + "name": "iconamoon:shield", + "svg": "" + }, + { + "name": "iconamoon:shield-bold", + "svg": "" + }, + { + "name": "iconamoon:shield-duotone", + "svg": "" + }, + { + "name": "iconamoon:shield-fill", + "svg": "" + }, + { + "name": "iconamoon:shield-light", + "svg": "" + }, + { + "name": "iconamoon:shield-no", + "svg": "" + }, + { + "name": "iconamoon:shield-no-bold", + "svg": "" + }, + { + "name": "iconamoon:shield-no-duotone", + "svg": "" + }, + { + "name": "iconamoon:shield-no-fill", + "svg": "" + }, + { + "name": "iconamoon:shield-no-light", + "svg": "" + }, + { + "name": "iconamoon:shield-no-thin", + "svg": "" + }, + { + "name": "iconamoon:shield-off", + "svg": "" + }, + { + "name": "iconamoon:shield-off-bold", + "svg": "" + }, + { + "name": "iconamoon:shield-off-duotone", + "svg": "" + }, + { + "name": "iconamoon:shield-off-fill", + "svg": "" + }, + { + "name": "iconamoon:shield-off-light", + "svg": "" + }, + { + "name": "iconamoon:shield-off-thin", + "svg": "" + }, + { + "name": "iconamoon:shield-thin", + "svg": "" + }, + { + "name": "iconamoon:shield-yes", + "svg": "" + }, + { + "name": "iconamoon:shield-yes-bold", + "svg": "" + }, + { + "name": "iconamoon:shield-yes-duotone", + "svg": "" + }, + { + "name": "iconamoon:shield-yes-fill", + "svg": "" + }, + { + "name": "iconamoon:shield-yes-light", + "svg": "" + }, + { + "name": "iconamoon:shield-yes-thin", + "svg": "" + }, + { + "name": "iconamoon:shopping-bag", + "svg": "" + }, + { + "name": "iconamoon:shopping-bag-bold", + "svg": "" + }, + { + "name": "iconamoon:shopping-bag-duotone", + "svg": "" + }, + { + "name": "iconamoon:shopping-bag-fill", + "svg": "" + }, + { + "name": "iconamoon:shopping-bag-light", + "svg": "" + }, + { + "name": "iconamoon:shopping-bag-thin", + "svg": "" + }, + { + "name": "iconamoon:shopping-card", + "svg": "" + }, + { + "name": "iconamoon:shopping-card-add", + "svg": "" + }, + { + "name": "iconamoon:shopping-card-add-bold", + "svg": "" + }, + { + "name": "iconamoon:shopping-card-add-duotone", + "svg": "" + }, + { + "name": "iconamoon:shopping-card-add-fill", + "svg": "" + }, + { + "name": "iconamoon:shopping-card-add-light", + "svg": "" + }, + { + "name": "iconamoon:shopping-card-add-thin", + "svg": "" + }, + { + "name": "iconamoon:shopping-card-bold", + "svg": "" + }, + { + "name": "iconamoon:shopping-card-duotone", + "svg": "" + }, + { + "name": "iconamoon:shopping-card-fill", + "svg": "" + }, + { + "name": "iconamoon:shopping-card-light", + "svg": "" + }, + { + "name": "iconamoon:shopping-card-remove", + "svg": "" + }, + { + "name": "iconamoon:shopping-card-remove-bold", + "svg": "" + }, + { + "name": "iconamoon:shopping-card-remove-duotone", + "svg": "" + }, + { + "name": "iconamoon:shopping-card-remove-fill", + "svg": "" + }, + { + "name": "iconamoon:shopping-card-remove-light", + "svg": "" + }, + { + "name": "iconamoon:shopping-card-remove-thin", + "svg": "" + }, + { + "name": "iconamoon:shopping-card-thin", + "svg": "" + }, + { + "name": "iconamoon:sign-division", + "svg": "" + }, + { + "name": "iconamoon:sign-division-bold", + "svg": "" + }, + { + "name": "iconamoon:sign-division-circle", + "svg": "" + }, + { + "name": "iconamoon:sign-division-circle-bold", + "svg": "" + }, + { + "name": "iconamoon:sign-division-circle-duotone", + "svg": "" + }, + { + "name": "iconamoon:sign-division-circle-fill", + "svg": "" + }, + { + "name": "iconamoon:sign-division-circle-light", + "svg": "" + }, + { + "name": "iconamoon:sign-division-circle-thin", + "svg": "" + }, + { + "name": "iconamoon:sign-division-duotone", + "svg": "" + }, + { + "name": "iconamoon:sign-division-fill", + "svg": "" + }, + { + "name": "iconamoon:sign-division-light", + "svg": "" + }, + { + "name": "iconamoon:sign-division-slash", + "svg": "" + }, + { + "name": "iconamoon:sign-division-slash-bold", + "svg": "" + }, + { + "name": "iconamoon:sign-division-slash-fill", + "svg": "" + }, + { + "name": "iconamoon:sign-division-slash-light", + "svg": "" + }, + { + "name": "iconamoon:sign-division-slash-thin", + "svg": "" + }, + { + "name": "iconamoon:sign-division-square", + "svg": "" + }, + { + "name": "iconamoon:sign-division-square-bold", + "svg": "" + }, + { + "name": "iconamoon:sign-division-square-duotone", + "svg": "" + }, + { + "name": "iconamoon:sign-division-square-fill", + "svg": "" + }, + { + "name": "iconamoon:sign-division-square-light", + "svg": "" + }, + { + "name": "iconamoon:sign-division-square-thin", + "svg": "" + }, + { + "name": "iconamoon:sign-division-thin", + "svg": "" + }, + { + "name": "iconamoon:sign-equal", + "svg": "" + }, + { + "name": "iconamoon:sign-equal-bold", + "svg": "" + }, + { + "name": "iconamoon:sign-equal-fill", + "svg": "" + }, + { + "name": "iconamoon:sign-equal-light", + "svg": "" + }, + { + "name": "iconamoon:sign-equal-thin", + "svg": "" + }, + { + "name": "iconamoon:sign-f", + "svg": "" + }, + { + "name": "iconamoon:sign-f-bold", + "svg": "" + }, + { + "name": "iconamoon:sign-f-fill", + "svg": "" + }, + { + "name": "iconamoon:sign-f-light", + "svg": "" + }, + { + "name": "iconamoon:sign-f-thin", + "svg": "" + }, + { + "name": "iconamoon:sign-factorial", + "svg": "" + }, + { + "name": "iconamoon:sign-factorial-bold", + "svg": "" + }, + { + "name": "iconamoon:sign-factorial-fill", + "svg": "" + }, + { + "name": "iconamoon:sign-factorial-light", + "svg": "" + }, + { + "name": "iconamoon:sign-factorial-thin", + "svg": "" + }, + { + "name": "iconamoon:sign-lemniscate", + "svg": "" + }, + { + "name": "iconamoon:sign-lemniscate-bold", + "svg": "" + }, + { + "name": "iconamoon:sign-lemniscate-duotone", + "svg": "" + }, + { + "name": "iconamoon:sign-lemniscate-fill", + "svg": "" + }, + { + "name": "iconamoon:sign-lemniscate-light", + "svg": "" + }, + { + "name": "iconamoon:sign-lemniscate-thin", + "svg": "" + }, + { + "name": "iconamoon:sign-minus", + "svg": "" + }, + { + "name": "iconamoon:sign-minus-bold", + "svg": "" + }, + { + "name": "iconamoon:sign-minus-circle", + "svg": "" + }, + { + "name": "iconamoon:sign-minus-circle-bold", + "svg": "" + }, + { + "name": "iconamoon:sign-minus-circle-duotone", + "svg": "" + }, + { + "name": "iconamoon:sign-minus-circle-fill", + "svg": "" + }, + { + "name": "iconamoon:sign-minus-circle-light", + "svg": "" + }, + { + "name": "iconamoon:sign-minus-circle-thin", + "svg": "" + }, + { + "name": "iconamoon:sign-minus-fill", + "svg": "" + }, + { + "name": "iconamoon:sign-minus-light", + "svg": "" + }, + { + "name": "iconamoon:sign-minus-square", + "svg": "" + }, + { + "name": "iconamoon:sign-minus-square-bold", + "svg": "" + }, + { + "name": "iconamoon:sign-minus-square-duotone", + "svg": "" + }, + { + "name": "iconamoon:sign-minus-square-fill", + "svg": "" + }, + { + "name": "iconamoon:sign-minus-square-light", + "svg": "" + }, + { + "name": "iconamoon:sign-minus-square-thin", + "svg": "" + }, + { + "name": "iconamoon:sign-minus-thin", + "svg": "" + }, + { + "name": "iconamoon:sign-percent", + "svg": "" + }, + { + "name": "iconamoon:sign-percent-bold", + "svg": "" + }, + { + "name": "iconamoon:sign-percent-fill", + "svg": "" + }, + { + "name": "iconamoon:sign-percent-light", + "svg": "" + }, + { + "name": "iconamoon:sign-percent-thin", + "svg": "" + }, + { + "name": "iconamoon:sign-pi", + "svg": "" + }, + { + "name": "iconamoon:sign-pi-bold", + "svg": "" + }, + { + "name": "iconamoon:sign-pi-fill", + "svg": "" + }, + { + "name": "iconamoon:sign-pi-light", + "svg": "" + }, + { + "name": "iconamoon:sign-pi-thin", + "svg": "" + }, + { + "name": "iconamoon:sign-plus", + "svg": "" + }, + { + "name": "iconamoon:sign-plus-bold", + "svg": "" + }, + { + "name": "iconamoon:sign-plus-circle", + "svg": "" + }, + { + "name": "iconamoon:sign-plus-circle-bold", + "svg": "" + }, + { + "name": "iconamoon:sign-plus-circle-duotone", + "svg": "" + }, + { + "name": "iconamoon:sign-plus-circle-fill", + "svg": "" + }, + { + "name": "iconamoon:sign-plus-circle-light", + "svg": "" + }, + { + "name": "iconamoon:sign-plus-circle-thin", + "svg": "" + }, + { + "name": "iconamoon:sign-plus-fill", + "svg": "" + }, + { + "name": "iconamoon:sign-plus-light", + "svg": "" + }, + { + "name": "iconamoon:sign-plus-minus", + "svg": "" + }, + { + "name": "iconamoon:sign-plus-minus-bold", + "svg": "" + }, + { + "name": "iconamoon:sign-plus-minus-fill", + "svg": "" + }, + { + "name": "iconamoon:sign-plus-minus-light", + "svg": "" + }, + { + "name": "iconamoon:sign-plus-minus-thin", + "svg": "" + }, + { + "name": "iconamoon:sign-plus-square", + "svg": "" + }, + { + "name": "iconamoon:sign-plus-square-bold", + "svg": "" + }, + { + "name": "iconamoon:sign-plus-square-duotone", + "svg": "" + }, + { + "name": "iconamoon:sign-plus-square-fill", + "svg": "" + }, + { + "name": "iconamoon:sign-plus-square-light", + "svg": "" + }, + { + "name": "iconamoon:sign-plus-square-thin", + "svg": "" + }, + { + "name": "iconamoon:sign-plus-thin", + "svg": "" + }, + { + "name": "iconamoon:sign-radical", + "svg": "" + }, + { + "name": "iconamoon:sign-radical-bold", + "svg": "" + }, + { + "name": "iconamoon:sign-radical-fill", + "svg": "" + }, + { + "name": "iconamoon:sign-radical-light", + "svg": "" + }, + { + "name": "iconamoon:sign-radical-thin", + "svg": "" + }, + { + "name": "iconamoon:sign-times", + "svg": "" + }, + { + "name": "iconamoon:sign-times-bold", + "svg": "" + }, + { + "name": "iconamoon:sign-times-circle", + "svg": "" + }, + { + "name": "iconamoon:sign-times-circle-bold", + "svg": "" + }, + { + "name": "iconamoon:sign-times-circle-duotone", + "svg": "" + }, + { + "name": "iconamoon:sign-times-circle-fill", + "svg": "" + }, + { + "name": "iconamoon:sign-times-circle-light", + "svg": "" + }, + { + "name": "iconamoon:sign-times-circle-thin", + "svg": "" + }, + { + "name": "iconamoon:sign-times-duotone", + "svg": "" + }, + { + "name": "iconamoon:sign-times-fill", + "svg": "" + }, + { + "name": "iconamoon:sign-times-light", + "svg": "" + }, + { + "name": "iconamoon:sign-times-square", + "svg": "" + }, + { + "name": "iconamoon:sign-times-square-bold", + "svg": "" + }, + { + "name": "iconamoon:sign-times-square-duotone", + "svg": "" + }, + { + "name": "iconamoon:sign-times-square-fill", + "svg": "" + }, + { + "name": "iconamoon:sign-times-square-light", + "svg": "" + }, + { + "name": "iconamoon:sign-times-square-thin", + "svg": "" + }, + { + "name": "iconamoon:sign-times-thin", + "svg": "" + }, + { + "name": "iconamoon:sign-x", + "svg": "" + }, + { + "name": "iconamoon:sign-x-bold", + "svg": "" + }, + { + "name": "iconamoon:sign-x-fill", + "svg": "" + }, + { + "name": "iconamoon:sign-x-light", + "svg": "" + }, + { + "name": "iconamoon:sign-x-thin", + "svg": "" + }, + { + "name": "iconamoon:sign-y", + "svg": "" + }, + { + "name": "iconamoon:sign-y-bold", + "svg": "" + }, + { + "name": "iconamoon:sign-y-fill", + "svg": "" + }, + { + "name": "iconamoon:sign-y-light", + "svg": "" + }, + { + "name": "iconamoon:sign-y-thin", + "svg": "" + }, + { + "name": "iconamoon:slightly-smiling-face", + "svg": "" + }, + { + "name": "iconamoon:slightly-smiling-face-bold", + "svg": "" + }, + { + "name": "iconamoon:slightly-smiling-face-duotone", + "svg": "" + }, + { + "name": "iconamoon:slightly-smiling-face-fill", + "svg": "" + }, + { + "name": "iconamoon:slightly-smiling-face-light", + "svg": "" + }, + { + "name": "iconamoon:slightly-smiling-face-thin", + "svg": "" + }, + { + "name": "iconamoon:smiling-face", + "svg": "" + }, + { + "name": "iconamoon:smiling-face-bold", + "svg": "" + }, + { + "name": "iconamoon:smiling-face-duotone", + "svg": "" + }, + { + "name": "iconamoon:smiling-face-fill", + "svg": "" + }, + { + "name": "iconamoon:smiling-face-light", + "svg": "" + }, + { + "name": "iconamoon:smiling-face-thin", + "svg": "" + }, + { + "name": "iconamoon:sorting-center", + "svg": "" + }, + { + "name": "iconamoon:sorting-center-bold", + "svg": "" + }, + { + "name": "iconamoon:sorting-center-duotone", + "svg": "" + }, + { + "name": "iconamoon:sorting-center-fill", + "svg": "" + }, + { + "name": "iconamoon:sorting-center-light", + "svg": "" + }, + { + "name": "iconamoon:sorting-center-thin", + "svg": "" + }, + { + "name": "iconamoon:sorting-left", + "svg": "" + }, + { + "name": "iconamoon:sorting-left-bold", + "svg": "" + }, + { + "name": "iconamoon:sorting-left-duotone", + "svg": "" + }, + { + "name": "iconamoon:sorting-left-fill", + "svg": "" + }, + { + "name": "iconamoon:sorting-left-light", + "svg": "" + }, + { + "name": "iconamoon:sorting-left-thin", + "svg": "" + }, + { + "name": "iconamoon:sorting-right", + "svg": "" + }, + { + "name": "iconamoon:sorting-right-bold", + "svg": "" + }, + { + "name": "iconamoon:sorting-right-duotone", + "svg": "" + }, + { + "name": "iconamoon:sorting-right-fill", + "svg": "" + }, + { + "name": "iconamoon:sorting-right-light", + "svg": "" + }, + { + "name": "iconamoon:sorting-right-thin", + "svg": "" + }, + { + "name": "iconamoon:squinting-face", + "svg": "" + }, + { + "name": "iconamoon:squinting-face-bold", + "svg": "" + }, + { + "name": "iconamoon:squinting-face-duotone", + "svg": "" + }, + { + "name": "iconamoon:squinting-face-fill", + "svg": "" + }, + { + "name": "iconamoon:squinting-face-light", + "svg": "" + }, + { + "name": "iconamoon:squinting-face-thin", + "svg": "" + }, + { + "name": "iconamoon:star", + "svg": "" + }, + { + "name": "iconamoon:star-bold", + "svg": "" + }, + { + "name": "iconamoon:star-duotone", + "svg": "" + }, + { + "name": "iconamoon:star-fill", + "svg": "" + }, + { + "name": "iconamoon:star-light", + "svg": "" + }, + { + "name": "iconamoon:star-off", + "svg": "" + }, + { + "name": "iconamoon:star-off-bold", + "svg": "" + }, + { + "name": "iconamoon:star-off-duotone", + "svg": "" + }, + { + "name": "iconamoon:star-off-fill", + "svg": "" + }, + { + "name": "iconamoon:star-off-light", + "svg": "" + }, + { + "name": "iconamoon:star-off-thin", + "svg": "" + }, + { + "name": "iconamoon:star-thin", + "svg": "" + }, + { + "name": "iconamoon:store", + "svg": "" + }, + { + "name": "iconamoon:store-bold", + "svg": "" + }, + { + "name": "iconamoon:store-duotone", + "svg": "" + }, + { + "name": "iconamoon:store-fill", + "svg": "" + }, + { + "name": "iconamoon:store-light", + "svg": "" + }, + { + "name": "iconamoon:store-thin", + "svg": "" + }, + { + "name": "iconamoon:swap", + "svg": "" + }, + { + "name": "iconamoon:swap-bold", + "svg": "" + }, + { + "name": "iconamoon:swap-fill", + "svg": "" + }, + { + "name": "iconamoon:swap-light", + "svg": "" + }, + { + "name": "iconamoon:swap-thin", + "svg": "" + }, + { + "name": "iconamoon:synchronize", + "svg": "" + }, + { + "name": "iconamoon:synchronize-bold", + "svg": "" + }, + { + "name": "iconamoon:synchronize-duotone", + "svg": "" + }, + { + "name": "iconamoon:synchronize-fill", + "svg": "" + }, + { + "name": "iconamoon:synchronize-light", + "svg": "" + }, + { + "name": "iconamoon:synchronize-thin", + "svg": "" + }, + { + "name": "iconamoon:ticket", + "svg": "" + }, + { + "name": "iconamoon:ticket-bold", + "svg": "" + }, + { + "name": "iconamoon:ticket-duotone", + "svg": "" + }, + { + "name": "iconamoon:ticket-fill", + "svg": "" + }, + { + "name": "iconamoon:ticket-light", + "svg": "" + }, + { + "name": "iconamoon:ticket-thin", + "svg": "" + }, + { + "name": "iconamoon:trash", + "svg": "" + }, + { + "name": "iconamoon:trash-bold", + "svg": "" + }, + { + "name": "iconamoon:trash-duotone", + "svg": "" + }, + { + "name": "iconamoon:trash-fill", + "svg": "" + }, + { + "name": "iconamoon:trash-light", + "svg": "" + }, + { + "name": "iconamoon:trash-simple", + "svg": "" + }, + { + "name": "iconamoon:trash-simple-bold", + "svg": "" + }, + { + "name": "iconamoon:trash-simple-duotone", + "svg": "" + }, + { + "name": "iconamoon:trash-simple-fill", + "svg": "" + }, + { + "name": "iconamoon:trash-simple-light", + "svg": "" + }, + { + "name": "iconamoon:trash-simple-thin", + "svg": "" + }, + { + "name": "iconamoon:trash-thin", + "svg": "" + }, + { + "name": "iconamoon:trend-down", + "svg": "" + }, + { + "name": "iconamoon:trend-down-bold", + "svg": "" + }, + { + "name": "iconamoon:trend-down-fill", + "svg": "" + }, + { + "name": "iconamoon:trend-down-light", + "svg": "" + }, + { + "name": "iconamoon:trend-down-thin", + "svg": "" + }, + { + "name": "iconamoon:trend-up", + "svg": "" + }, + { + "name": "iconamoon:trend-up-bold", + "svg": "" + }, + { + "name": "iconamoon:trend-up-fill", + "svg": "" + }, + { + "name": "iconamoon:trend-up-light", + "svg": "" + }, + { + "name": "iconamoon:trend-up-thin", + "svg": "" + }, + { + "name": "iconamoon:type", + "svg": "" + }, + { + "name": "iconamoon:type-bold", + "svg": "" + }, + { + "name": "iconamoon:type-duotone", + "svg": "" + }, + { + "name": "iconamoon:type-fill", + "svg": "" + }, + { + "name": "iconamoon:type-light", + "svg": "" + }, + { + "name": "iconamoon:type-thin", + "svg": "" + }, + { + "name": "iconamoon:unavailable", + "svg": "" + }, + { + "name": "iconamoon:unavailable-bold", + "svg": "" + }, + { + "name": "iconamoon:unavailable-duotone", + "svg": "" + }, + { + "name": "iconamoon:unavailable-fill", + "svg": "" + }, + { + "name": "iconamoon:unavailable-light", + "svg": "" + }, + { + "name": "iconamoon:unavailable-thin", + "svg": "" + }, + { + "name": "iconamoon:upload", + "svg": "" + }, + { + "name": "iconamoon:upload-bold", + "svg": "" + }, + { + "name": "iconamoon:upload-fill", + "svg": "" + }, + { + "name": "iconamoon:upload-light", + "svg": "" + }, + { + "name": "iconamoon:upload-thin", + "svg": "" + }, + { + "name": "iconamoon:upside-down-face", + "svg": "" + }, + { + "name": "iconamoon:upside-down-face-bold", + "svg": "" + }, + { + "name": "iconamoon:upside-down-face-duotone", + "svg": "" + }, + { + "name": "iconamoon:upside-down-face-fill", + "svg": "" + }, + { + "name": "iconamoon:upside-down-face-light", + "svg": "" + }, + { + "name": "iconamoon:upside-down-face-thin", + "svg": "" + }, + { + "name": "iconamoon:volume-down", + "svg": "" + }, + { + "name": "iconamoon:volume-down-bold", + "svg": "" + }, + { + "name": "iconamoon:volume-down-duotone", + "svg": "" + }, + { + "name": "iconamoon:volume-down-fill", + "svg": "" + }, + { + "name": "iconamoon:volume-down-light", + "svg": "" + }, + { + "name": "iconamoon:volume-down-thin", + "svg": "" + }, + { + "name": "iconamoon:volume-off", + "svg": "" + }, + { + "name": "iconamoon:volume-off-bold", + "svg": "" + }, + { + "name": "iconamoon:volume-off-duotone", + "svg": "" + }, + { + "name": "iconamoon:volume-off-fill", + "svg": "" + }, + { + "name": "iconamoon:volume-off-light", + "svg": "" + }, + { + "name": "iconamoon:volume-off-thin", + "svg": "" + }, + { + "name": "iconamoon:volume-up", + "svg": "" + }, + { + "name": "iconamoon:volume-up-bold", + "svg": "" + }, + { + "name": "iconamoon:volume-up-duotone", + "svg": "" + }, + { + "name": "iconamoon:volume-up-fill", + "svg": "" + }, + { + "name": "iconamoon:volume-up-light", + "svg": "" + }, + { + "name": "iconamoon:volume-up-thin", + "svg": "" + }, + { + "name": "iconamoon:winking-face", + "svg": "" + }, + { + "name": "iconamoon:winking-face-bold", + "svg": "" + }, + { + "name": "iconamoon:winking-face-duotone", + "svg": "" + }, + { + "name": "iconamoon:winking-face-fill", + "svg": "" + }, + { + "name": "iconamoon:winking-face-light", + "svg": "" + }, + { + "name": "iconamoon:winking-face-thin", + "svg": "" + }, + { + "name": "iconamoon:zoom-in", + "svg": "" + }, + { + "name": "iconamoon:zoom-in-bold", + "svg": "" + }, + { + "name": "iconamoon:zoom-in-duotone", + "svg": "" + }, + { + "name": "iconamoon:zoom-in-fill", + "svg": "" + }, + { + "name": "iconamoon:zoom-in-light", + "svg": "" + }, + { + "name": "iconamoon:zoom-in-thin", + "svg": "" + }, + { + "name": "iconamoon:zoom-out", + "svg": "" + }, + { + "name": "iconamoon:zoom-out-bold", + "svg": "" + }, + { + "name": "iconamoon:zoom-out-duotone", + "svg": "" + }, + { + "name": "iconamoon:zoom-out-fill", + "svg": "" + }, + { + "name": "iconamoon:zoom-out-light", + "svg": "" + }, + { + "name": "iconamoon:zoom-out-thin", + "svg": "" + } +] \ No newline at end of file diff --git a/assets/style/css/base/theme.css b/assets/style/css/base/theme.css new file mode 100644 index 0000000..a6c095c --- /dev/null +++ b/assets/style/css/base/theme.css @@ -0,0 +1,268 @@ +html[data-theme="biasa"] { + --color-primary: 0, 165, 154; + --color-secondary: 97, 176, 183; + --color-accent: 243, 244, 246; + --color-success: 79, 192, 103; + --color-info: 65, 133, 242; + --color-warning: 246, 141, 32; + --color-danger: 229, 83, 69; + --text-color: 9, 9, 11; + --border-color: 228, 228, 231; + --bg-1: 243, 244, 246; + --bg-2: 255, 255, 255; + --sidebar: 38, 50, 55; + --sidebar-menu: 26, 35, 38; + --sidebar-text: 255, 255, 255; + --header: 49, 65, 71; + --header-text: 255, 255, 255; + --scroll-color: 170, 170, 170; + --scroll-hover-color: 155, 155, 155; + --fk-border-color: 228, 228, 231; + --fk-placeholder-color: 146, 146, 153; + --box-shadow: rgba(36, 35, 71, 0.05) 0px 1px 1px, + rgba(36, 35, 71, 0.05) 0px 0px 1px 1px; + --cp-bg: 255, 255, 255; + --rounded-box: 0.2rem; + --rounded-btn: 0.2rem; + --rounded-badge: 1.9rem; + --animation-btn: 0.25s; + --animation-input: 0.2s; + --btn-text-case: uppercase; + --btn-focus-scale: 0.95; + --padding-btn: 0.5rem; + --border-btn: 1px; + --tab-border: 1px; + --tab-radius: 0.5rem; + --tw-shadow: #e5eaf2; +} + +html[data-theme="gelap"] { + --color-primary: 97, 176, 183; + --color-secondary: 13, 27, 42; + --color-accent: 15, 23, 42; + --color-success: 79, 192, 103; + --color-info: 65, 133, 242; + --color-warning: 246, 141, 32; + --color-danger: 229, 83, 69; + --text-color: 209, 213, 219; + --border-color: 30, 41, 59; + --bg-1: 15, 23, 42; + --bg-2: 30, 41, 59; + --sidebar: 38, 50, 55; + --sidebar-menu: 26, 35, 38; + --sidebar-text: 255, 255, 255; + --header: 49, 65, 71; + --header-text: 255, 255, 255; + --scroll-color: 170, 170, 170; + --scroll-hover-color: 155, 155, 155; + --fk-border-color: 71, 85, 105; + --fk-placeholder-color: 71, 85, 105; + --box-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1); + --cp-bg: 255, 255, 255; + --rounded-box: 0.5rem; + --rounded-btn: 0.5rem; + --rounded-badge: 1.9rem; + --animation-btn: 0.25s; + --animation-input: 0.2s; + --btn-text-case: uppercase; + --btn-focus-scale: 0.95; + --padding-btn: 0.625rem 1.5rem; + --border-btn: 1px; + --tab-border: 1px; + --tab-radius: 0.5rem; + --tw-shadow: #e5eaf2; +} + +html[data-theme="biru"] { + --color-primary: 0, 102, 204; + --color-secondary: 51, 153, 255; + --color-accent: 255, 204, 0; + --color-success: 46, 204, 113; + --color-info: 52, 152, 219; + --color-warning: 246, 141, 32; + --color-danger: 231, 76, 60; + --text-color: 0, 0, 0; + --border-color: 200, 200, 200; + --bg-1: 240, 248, 255; + --bg-2: 230, 240, 250; + --sidebar: 38, 50, 55; + --sidebar-menu: 26, 35, 38; + --sidebar-text: 255, 255, 255; + --header: 49, 65, 71; + --header-text: 255, 255, 255; + --scroll-color: 180, 180, 180; + --scroll-hover-color: 150, 150, 150; + --fk-border-color: 200, 200, 200; + --fk-placeholder-color: 150, 150, 150; + --box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), + 0 2px 4px -2px rgba(0, 0, 0, 0.1); + --cp-bg: 255, 255, 255; + --rounded-box: 0.5rem; + --rounded-btn: 0.5rem; + --rounded-badge: 1.9rem; + --animation-btn: 0.25s; + --animation-input: 0.2s; + --btn-text-case: uppercase; + --btn-focus-scale: 0.95; + --padding-btn: 0.625rem 1.5rem; + --border-btn: 1px; + --tab-border: 1px; + --tab-radius: 0.5rem; + --tw-shadow: #e5eaf2; +} + +html[data-theme="merah"] { + --color-primary: 204, 0, 0; + --color-secondary: 255, 102, 102; + --color-accent: 255, 255, 153; + --color-success: 46, 204, 113; + --color-info: 52, 152, 219; + --color-warning: 246, 141, 32; + --color-danger: 231, 76, 60; + --text-color: 0, 0, 0; + --border-color: 200, 200, 200; + --bg-1: 255, 240, 240; + --bg-2: 255, 230, 230; + --sidebar: 38, 50, 55; + --sidebar-menu: 26, 35, 38; + --sidebar-text: 255, 255, 255; + --header: 49, 65, 71; + --header-text: 255, 255, 255; + --scroll-color: 180, 180, 180; + --scroll-hover-color: 150, 150, 150; + --fk-border-color: 200, 200, 200; + --fk-placeholder-color: 150, 150, 150; + --box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), + 0 2px 4px -2px rgba(0, 0, 0, 0.1); + --cp-bg: 255, 255, 255; + --rounded-box: 0.5rem; + --rounded-btn: 0.5rem; + --rounded-badge: 1.9rem; + --animation-btn: 0.25s; + --animation-input: 0.2s; + --btn-text-case: uppercase; + --btn-focus-scale: 0.95; + --padding-btn: 0.625rem 1.5rem; + --border-btn: 1px; + --tab-border: 1px; + --tab-radius: 0.5rem; + --tw-shadow: #e5eaf2; +} + +html[data-theme="ungu"] { + --color-primary: 75, 0, 130; + --color-secondary: 138, 43, 226; + --color-accent: 255, 215, 0; + --color-success: 46, 204, 113; + --color-info: 52, 152, 219; + --color-warning: 246, 141, 32; + --color-danger: 231, 76, 60; + --text-color: 0, 0, 0; + --border-color: 200, 200, 200; + --bg-1: 240, 248, 255; + --bg-2: 230, 240, 250; + --sidebar: 38, 50, 55; + --sidebar-menu: 26, 35, 38; + --sidebar-text: 255, 255, 255; + --header: 49, 65, 71; + --header-text: 255, 255, 255; + --scroll-color: 180, 180, 180; + --scroll-hover-color: 150, 150, 150; + --fk-border-color: 200, 200, 200; + --fk-placeholder-color: 150, 150, 150; + --box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), + 0 2px 4px -2px rgba(0, 0, 0, 0.1); + --cp-bg: 255, 255, 255; + --rounded-box: 0.5rem; + --rounded-btn: 0.5rem; + --rounded-badge: 1.9rem; + --animation-btn: 0.25s; + --animation-input: 0.2s; + --btn-text-case: uppercase; + --btn-focus-scale: 0.95; + --padding-btn: 0.625rem 1.5rem; + --border-btn: 1px; + --tab-border: 1px; + --tab-radius: 0.5rem; + --tw-shadow: #e5eaf2; +} + +html[data-theme="oren"] { + --color-primary: 255, 103, 0; + --color-secondary: 255, 159, 64; + --color-accent: 0, 128, 128; + --color-success: 46, 204, 113; + --color-info: 52, 152, 219; + --color-warning: 246, 141, 32; + --color-danger: 231, 76, 60; + --text-color: 0, 0, 0; + --border-color: 200, 200, 200; + --bg-1: 255, 250, 240; + --bg-2: 255, 245, 230; + --sidebar: 38, 50, 55; + --sidebar-menu: 26, 35, 38; + --sidebar-text: 255, 255, 255; + --header: 49, 65, 71; + --header-text: 255, 255, 255; + --scroll-color: 180, 180, 180; + --scroll-hover-color: 150, 150, 150; + --fk-border-color: 200, 200, 200; + --fk-placeholder-color: 150, 150, 150; + --box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), + 0 2px 4px -2px rgba(0, 0, 0, 0.1); + --cp-bg: 255, 255, 255; + --rounded-box: 0.5rem; + --rounded-btn: 0.5rem; + --rounded-badge: 1.9rem; + --animation-btn: 0.25s; + --animation-input: 0.2s; + --btn-text-case: uppercase; + --btn-focus-scale: 0.95; + --padding-btn: 0.625rem 1.5rem; + --border-btn: 1px; + --tab-border: 1px; + --tab-radius: 0.5rem; + --tw-shadow: #e5eaf2; +} + +html[data-theme="LZS"] { + --color-primary: 0, 90, 173; /* #005AAD - Blue */ + --color-secondary: 141, 199, 61; /* #8DC73D - Green */ + --color-accent: 255, 242, 0; /* #FFF200 - Yellow */ + --color-success: 141, 199, 61; /* Using the green for success */ + --color-info: 0, 90, 173; /* Using the blue for info */ + --color-warning: 246, 141, 32; /* Using consistent orange for warning */ + --color-danger: 229, 83, 69; /* Keeping original red for danger */ + --text-color: 0, 0, 0; /* Black text */ + --border-color: 220, 220, 220; /* Light gray for borders */ + --bg-1: 245, 250, 255; /* Very light blue background */ + --bg-2: 255, 255, 255; /* White background */ + --sidebar: 0, 58, 112; /* Darker blue for sidebar - #003A70 */ + --sidebar-menu: 0, 40, 77; /* Even darker blue for sidebar menu - #00284D */ + --sidebar-text: 255, 255, 255; /* White text for sidebar */ + --header: 0, 90, 173; /* Blue header - #005AAD */ + --header-text: 255, 255, 255; /* White text for header */ + --scroll-color: 180, 180, 180; /* Gray scrollbar */ + --scroll-hover-color: 150, 150, 150; /* Darker gray on hover */ + --fk-border-color: 220, 220, 220; /* Light gray for form borders */ + --fk-placeholder-color: 150, 150, 150; /* Gray for placeholders */ + --box-shadow: rgba(0, 90, 173, 0.1) 0px 1px 2px, + rgba(0, 90, 173, 0.08) 0px 0px 2px; /* Blue-tinted shadow */ + --cp-bg: 255, 255, 255; /* White background */ + --rounded-box: 0.5rem; + --rounded-btn: 0.5rem; + --rounded-badge: 1.9rem; + --animation-btn: 0.25s; + --animation-input: 0.2s; + --btn-text-case: uppercase; + --btn-focus-scale: 0.95; + --padding-btn: 0.625rem 1.5rem; + --border-btn: 1px; + --tab-border: 1px; + --tab-radius: 0.5rem; + /* Yellow accents in specific UI elements */ + --active-menu-bg: 255, 242, 0, 0.1; /* Subtle yellow background for active menu items */ + --active-menu-border: 255, 242, 0; /* Yellow border for active menu items */ + --focus-ring: 255, 242, 0, 0.5; /* Yellow focus ring */ + --tw-shadow: #e5eaf2; +} diff --git a/assets/style/css/component/alert.css b/assets/style/css/component/alert.css new file mode 100644 index 0000000..5be607f --- /dev/null +++ b/assets/style/css/component/alert.css @@ -0,0 +1,28 @@ +/* RS Alert Component */ +.alert { + @apply visible flex items-center justify-between py-3 px-3 rounded-lg; +} + +.alert.alert-primary { + @apply bg-primary/20 text-primary; +} + +.alert.alert-secondary { + @apply bg-secondary/20 text-secondary; +} + +.alert.alert-success { + @apply bg-success/20 text-success; +} + +.alert.alert-info { + @apply bg-info/20 text-info; +} + +.alert.alert-warning { + @apply bg-warning/20 text-warning; +} + +.alert.alert-danger { + @apply bg-danger/20 text-danger; +} diff --git a/assets/style/css/component/badge.css b/assets/style/css/component/badge.css new file mode 100644 index 0000000..85fe604 --- /dev/null +++ b/assets/style/css/component/badge.css @@ -0,0 +1,32 @@ +/* RS Badge Component */ +.badge { + @apply inline-flex items-center justify-center px-2 py-1 rounded-full text-xs font-semibold leading-none; +} + +.badge.badge-primary { + @apply bg-primary text-white; +} + +.badge.badge-secondary { + @apply bg-secondary text-white; +} + +.badge.badge-success { + @apply bg-success text-white; +} + +.badge.badge-info { + @apply bg-info text-white; +} + +.badge.badge-warning { + @apply bg-warning text-white; +} + +.badge.badge-danger { + @apply bg-danger text-white; +} + +.badge.badge-disabled { + @apply bg-gray-300 text-gray-600; +} diff --git a/assets/style/css/component/button.css b/assets/style/css/component/button.css new file mode 100644 index 0000000..b783216 --- /dev/null +++ b/assets/style/css/component/button.css @@ -0,0 +1,323 @@ +/* RS Button */ +.button { + @apply w-fit rounded-lg flex justify-center items-center h-fit; + transition: all 0.2s ease; + position: relative; + overflow: hidden; +} + +/* Enhanced hover effect with slight 3D transition */ +.button[class*="button-"]:hover { + transform: translateY(-2px); + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.15); +} + +.button[class*="button-"]:active { + transform: translateY(0px); + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); +} + +.button[class*="button-"]:disabled { + opacity: 0.3; + cursor: not-allowed; + transform: none; + box-shadow: none; +} + +/* Primary Button - Blue with yellow accent */ +.button.button-primary { + @apply bg-primary text-white; + box-shadow: 0 2px 4px rgba(var(--color-primary), 0.3), + inset 0 1px 0 rgba(255, 255, 255, 0.2); + border: 1px solid rgba(var(--color-primary), 0.8); +} + +.button.button-primary:hover::after { + content: ""; + position: absolute; + bottom: 0; + left: 0; + right: 0; + height: 3px; + background-color: rgb(var(--active-menu-border)); + animation: slide-in 0.3s ease forwards; +} + +@keyframes slide-in { + 0% { transform: scaleX(0); opacity: 0; } + 100% { transform: scaleX(1); opacity: 1; } +} + +.button.button-secondary { + @apply bg-secondary text-white; + box-shadow: 0 2px 4px rgba(var(--color-secondary), 0.3), + inset 0 1px 0 rgba(255, 255, 255, 0.2); + border: 1px solid rgba(var(--color-secondary), 0.8); +} + +.button.button-success { + @apply bg-success text-white; + box-shadow: 0 2px 4px rgba(var(--color-success), 0.3), + inset 0 1px 0 rgba(255, 255, 255, 0.2); + border: 1px solid rgba(var(--color-success), 0.8); +} + +.button.button-info { + @apply bg-info text-white; + box-shadow: 0 2px 4px rgba(var(--color-info), 0.3), + inset 0 1px 0 rgba(255, 255, 255, 0.2); + border: 1px solid rgba(var(--color-info), 0.8); +} + +.button.button-warning { + @apply bg-warning text-white; + box-shadow: 0 2px 4px rgba(var(--color-warning), 0.3), + inset 0 1px 0 rgba(255, 255, 255, 0.2); + border: 1px solid rgba(var(--color-warning), 0.8); +} + +.button.button-danger { + @apply bg-danger text-white; + box-shadow: 0 2px 4px rgba(var(--color-danger), 0.3), + inset 0 1px 0 rgba(255, 255, 255, 0.2); + border: 1px solid rgba(var(--color-danger), 0.8); +} + +/* Updated outline buttons */ +.button[class*="outline-"]:disabled { + opacity: 0.3; + cursor: not-allowed; +} + +.button.outline-primary { + @apply border border-primary text-primary; + box-shadow: 0 1px 3px rgba(var(--color-primary), 0.1); +} + +.button.outline-primary:hover { + @apply bg-primary/5; + box-shadow: 0 3px 6px rgba(var(--color-primary), 0.2); + transform: translateY(-1px); +} + +.button.outline-secondary { + @apply border border-secondary text-secondary; + box-shadow: 0 1px 3px rgba(var(--color-secondary), 0.1); +} + +.button.outline-secondary:hover { + @apply bg-secondary/5; + box-shadow: 0 3px 6px rgba(var(--color-secondary), 0.2); + transform: translateY(-1px); +} + +.button.outline-success { + @apply border border-success text-success; + box-shadow: 0 1px 3px rgba(var(--color-success), 0.1); +} + +.button.outline-success:hover { + @apply bg-success/5; + box-shadow: 0 3px 6px rgba(var(--color-success), 0.2); + transform: translateY(-1px); +} + +.button.outline-info { + @apply border border-info text-info; + box-shadow: 0 1px 3px rgba(var(--color-info), 0.1); +} + +.button.outline-info:hover { + @apply bg-info/5; + box-shadow: 0 3px 6px rgba(var(--color-info), 0.2); + transform: translateY(-1px); +} + +.button.outline-warning { + @apply border border-warning text-warning; + box-shadow: 0 1px 3px rgba(var(--color-warning), 0.1); +} + +.button.outline-warning:hover { + @apply bg-warning/5; + box-shadow: 0 3px 6px rgba(var(--color-warning), 0.2); + transform: translateY(-1px); +} + +.button.outline-danger { + @apply border border-danger text-danger; + box-shadow: 0 1px 3px rgba(var(--color-danger), 0.1); +} + +.button.outline-danger:hover { + @apply bg-danger/5; + box-shadow: 0 3px 6px rgba(var(--color-danger), 0.2); + transform: translateY(-1px); +} + +.button[class*="text-"]:disabled { + opacity: 0.3; + cursor: not-allowed; +} + +.button.texts-primary { + @apply text-primary; + position: relative; +} + +.button.texts-primary:hover { + @apply bg-primary/10; +} + +.button.texts-primary:after { + content: ''; + position: absolute; + width: 0; + height: 2px; + bottom: 0; + left: 0; + background-color: rgb(var(--color-primary)); + transition: width 0.3s ease; +} + +.button.texts-primary:hover:after { + width: 100%; +} + +.button.texts-secondary { + @apply text-secondary; + position: relative; +} + +.button.texts-secondary:hover { + @apply bg-secondary/10; +} + +.button.texts-secondary:after { + content: ''; + position: absolute; + width: 0; + height: 2px; + bottom: 0; + left: 0; + background-color: rgb(var(--color-secondary)); + transition: width 0.3s ease; +} + +.button.texts-secondary:hover:after { + width: 100%; +} + +.button.texts-success { + @apply text-success; + position: relative; +} + +.button.texts-success:hover { + @apply bg-success/10; +} + +.button.texts-success:after { + content: ''; + position: absolute; + width: 0; + height: 2px; + bottom: 0; + left: 0; + background-color: rgb(var(--color-success)); + transition: width 0.3s ease; +} + +.button.texts-success:hover:after { + width: 100%; +} + +.button.texts-info { + @apply text-info; + position: relative; +} + +.button.texts-info:hover { + @apply bg-info/10; +} + +.button.texts-info:after { + content: ''; + position: absolute; + width: 0; + height: 2px; + bottom: 0; + left: 0; + background-color: rgb(var(--color-info)); + transition: width 0.3s ease; +} + +.button.texts-info:hover:after { + width: 100%; +} + +.button.texts-warning { + @apply text-warning; + position: relative; +} + +.button.texts-warning:hover { + @apply bg-warning/10; +} + +.button.texts-warning:after { + content: ''; + position: absolute; + width: 0; + height: 2px; + bottom: 0; + left: 0; + background-color: rgb(var(--color-warning)); + transition: width 0.3s ease; +} + +.button.texts-warning:hover:after { + width: 100%; +} + +.button.texts-danger { + @apply text-danger; + position: relative; +} + +.button.texts-danger:hover { + @apply bg-danger/10; +} + +.button.texts-danger:after { + content: ''; + position: absolute; + width: 0; + height: 2px; + bottom: 0; + left: 0; + background-color: rgb(var(--color-danger)); + transition: width 0.3s ease; +} + +.button.texts-danger:hover:after { + width: 100%; +} + +.button-sm { + @apply text-xs; + padding: var(--padding-btn); + line-height: 1.4; +} + +.button-md { + @apply text-sm; + padding: var(--padding-btn); + line-height: 1.5; +} + +.button-lg { + @apply text-base; + padding: var(--padding-btn); + line-height: 1.6; +} diff --git a/assets/style/css/component/card.css b/assets/style/css/component/card.css new file mode 100644 index 0000000..398055e --- /dev/null +++ b/assets/style/css/component/card.css @@ -0,0 +1,24 @@ +/* RS Card Component */ +.card { + @apply mb-6; + background-color: rgb(var(--bg-2)); + border-radius: var(--rounded-box); + box-shadow: var(--box-shadow); +} + +.card .card-header { + @apply text-xl px-6 py-4 font-medium; + line-height: 1.5; + border-bottom: 1px solid rgb(var(--border-color)); +} + +.card .card-body { + @apply px-6 py-5; + line-height: 1.6; +} + +.card .card-footer { + @apply px-6 py-4; + line-height: 1.5; + border-top: 1px solid rgb(var(--border-color)); +} diff --git a/assets/style/css/component/collapse.css b/assets/style/css/component/collapse.css new file mode 100644 index 0000000..4f22bd9 --- /dev/null +++ b/assets/style/css/component/collapse.css @@ -0,0 +1,61 @@ +/* RS Collapse Component */ +.accordion { + @apply w-full mb-4 visible; + background-color: rgb(var(--bg-2)); +} + +.accordion.accordion-border { + @apply border-t border-x rounded-lg; + border-color: rgb(var(--border-color)); +} + +.accordion .accordion-group { + @apply overflow-hidden duration-300 dark:border-slate-700; + background-color: rgb(var(--bg-2)); +} + +.accordion .accordion-group.accordion-default { + @apply border-b; + border-color: rgb(var(--border-color)); +} + +.accordion .accordion-group.accordion-border { + @apply border-b last:rounded-b-lg; + border-color: rgb(var(--border-color)); +} + +.accordion .accordion-group.accordion-card { + @apply my-4; + box-shadow: var(--box-shadow); +} + +.accordion .accordion-group .accordion-header { + @apply text-lg font-medium px-5 pr-10 py-4 cursor-pointer; +} + +.accordion .accordion-group .accordion-body { + @apply px-5 pb-4 pt-2; +} + +.accordion-group .accordion-header { + position: relative; +} + +.accordion-group .accordion-header::after { + content: ""; + position: absolute; + width: 19px; + height: 19px; + top: 50%; + right: 0%; + transform: translate(-100%, -50%) rotate(0deg); + background: url("/assets/img/icon/chevron-right.svg"); + background-position: center center; + background-repeat: no-repeat; + background-size: cover; + transition: 0.25s ease-in-out; +} + +.accordion-group--open .accordion-header::after { + transform: translate(-100%, -50%) rotate(90deg); +} diff --git a/assets/style/css/component/common.css b/assets/style/css/component/common.css new file mode 100644 index 0000000..0ee9884 --- /dev/null +++ b/assets/style/css/component/common.css @@ -0,0 +1,40 @@ +body { + color: rgb(var(--text-color)); + background-color: rgb(var(--bg-1)); +} + +.w-header { + @apply z-20 fixed top-0 right-0 px-5 py-3 duration-300 shadow-md; + background-color: rgb(var(--header)); + color: rgb(var(--header-text)); + box-shadow: var(--box-shadow); +} + +.w-header-search { + @apply px-4 z-40 duration-300 shadow-md -top-20 focus-within:top-0 right-0; + background-color: rgb(var(--bg-2)); +} + +.vertical-menu { + @apply text-base h-screen fixed w-64 top-0 z-50 duration-300 border-l-0 shadow-md; + background-color: rgb(var(--sidebar)); + color: rgb(var(--sidebar-text)); + box-shadow: var(--box-shadow); +} + +.icon-btn { + @apply flex + items-center + justify-center + transition-colors + duration-300; + color: rgb(var(--header-text)); +} + +.icon-btn.profile { + color: rgb(var(--header-text)); +} + +.icon-btn:hover { + background-color: rgb(var(--sidebar)); +} diff --git a/assets/style/css/component/dropdown.css b/assets/style/css/component/dropdown.css new file mode 100644 index 0000000..fde209d --- /dev/null +++ b/assets/style/css/component/dropdown.css @@ -0,0 +1,53 @@ +/* RS Dropdown Component */ +.dropdown { + @apply relative inline-flex; +} + +.dropdown .dropdown-section { + @apply absolute z-10 shadow-md rounded-lg py-1 whitespace-nowrap; + background-color: rgb(var(--bg-2)); +} + +.dropdown-section.list-bottom-sm { + @apply top-10; +} + +.dropdown-section.list-bottom-md { + @apply top-12; +} + +.dropdown-section.list-bottom-lg { + @apply top-16; +} + +.dropdown-section.list-top-sm { + @apply bottom-10; +} + +.dropdown-section.list-top-md { + @apply bottom-12; +} + +.dropdown-section.list-top-lg { + @apply bottom-16; +} + +.dropdown-section.list-left { + @apply top-0 -left-[10.5rem]; +} + +.dropdown-section.list-right { + @apply top-0 -right-[10.5rem]; +} + +.dropdown-section.list-align-right { + @apply right-0; +} + +.dropdown-section .dropdown-item { + @apply flex items-center cursor-pointer px-4 py-2; +} + +.dropdown-section .dropdown-item:hover { + background-color: rgb(var(--bg-1)); +} diff --git a/assets/style/css/component/modal.css b/assets/style/css/component/modal.css new file mode 100644 index 0000000..4d5f300 --- /dev/null +++ b/assets/style/css/component/modal.css @@ -0,0 +1,50 @@ +/* RS Modal Component */ +.modal { + @apply fixed top-0 left-0 w-full h-full overflow-hidden z-[1000] duration-300; + background: rgba(15, 23, 42, 0.5); +} + +.modal.modal-top { + @apply flex items-start; +} + +.modal.modal-center { + @apply flex items-center; +} + +.modal.modal-end { + @apply flex items-end; +} + +.modal.modal-hide-overlay { + @apply !bg-transparent; +} + +.modal .modal-dialog { + @apply w-full md:w-auto relative z-[9999]; + margin: 1.75rem auto; +} + +.modal .modal-dialog .modal-content { + @apply border-none shadow-lg relative flex flex-col w-full pointer-events-auto bg-clip-padding rounded-md outline-none text-current; + background-color: rgb(var(--bg-2)); +} + +.modal .modal-dialog .modal-content .modal-header { + @apply flex flex-shrink-0 items-center justify-between p-4 border-b rounded-t-md; + border-color: rgb(var(--border-color)); +} + +.modal .modal-dialog .modal-content .modal-body { + @apply relative p-4; +} + +.modal .modal-dialog .modal-content .modal-footer { + @apply flex flex-shrink-0 flex-wrap items-center justify-end px-4 pb-4 rounded-b-md gap-x-3; +} + +@media screen and (max-width: 768px) { + .modal-dialog { + margin: 1.75rem 1rem; + } +} diff --git a/assets/style/css/component/progress.css b/assets/style/css/component/progress.css new file mode 100644 index 0000000..9c1c9b6 --- /dev/null +++ b/assets/style/css/component/progress.css @@ -0,0 +1,80 @@ +/* RS Progress Component */ +.progress-wrapper { + @apply w-full mb-4; +} + +.progress-wrapper .progress-label { + @apply text-sm mb-1; +} + +.progress-wrapper .progress { + @apply flex rounded-full; +} + +.progress-wrapper .progress.progress-sm { + @apply h-3; +} + +.progress-wrapper .progress.progress-md { + @apply h-4; +} + +.progress-wrapper .progress.progress-lg { + @apply h-5; +} + +.progress-wrapper .progress.progress-sm { + @apply h-3; +} + +.progress-wrapper .progress.progress-primary { + @apply bg-primary/20; +} + +.progress-wrapper .progress.progress-secondary { + @apply bg-secondary/20; +} + +.progress-wrapper .progress.progress-success { + @apply bg-success/20; +} + +.progress-wrapper .progress.progress-info { + @apply bg-info/20; +} + +.progress-wrapper .progress.progress-warning { + @apply bg-warning/20; +} + +.progress-wrapper .progress.progress-danger { + @apply bg-danger/20; +} + +.progress-wrapper .progress .progress-bar { + @apply flex items-center justify-center rounded-full text-white; +} + +.progress-wrapper .progress .progress-bar.primary { + @apply bg-primary; +} + +.progress-wrapper .progress .progress-bar.secondary { + @apply bg-secondary; +} + +.progress-wrapper .progress .progress-bar.success { + @apply bg-success; +} + +.progress-wrapper .progress .progress-bar.info { + @apply bg-info; +} + +.progress-wrapper .progress .progress-bar.warning { + @apply bg-warning; +} + +.progress-wrapper .progress .progress-bar.danger { + @apply bg-danger; +} diff --git a/assets/style/css/component/tab.css b/assets/style/css/component/tab.css new file mode 100644 index 0000000..b026c61 --- /dev/null +++ b/assets/style/css/component/tab.css @@ -0,0 +1,322 @@ +/* RS Tab Component */ +.tab { + @apply rounded-md; +} + +.tab.vertical { + @apply flex flex-col md:flex-row; +} + +.tab.tab-card { + @apply shadow-md pt-4; +} + +.tab.card-vertical { + @apply shadow-md; +} + +.tab.card-primary { + @apply bg-primary; +} + +.tab.card-secondary { + @apply bg-secondary; +} + +.tab.card-success { + @apply bg-success; +} + +.tab.card-info { + @apply bg-info; +} + +.tab.card-warning { + @apply bg-warning; +} + +.tab.card-danger { + @apply bg-danger; +} + +.tab .tab-nav { + @apply flex flex-wrap list-none pl-0; +} + +.tab .tab-nav.tab-nav-card { + @apply mx-4 mb-0; +} + +.tab .tab-nav.card-vertical { + @apply py-0 pt-4 md:py-4; +} + +.tab .tab-nav.vertical { + @apply flex-row md:flex-col gap-2; +} + +.tab .tab-nav.vertical-fill { + @apply flex-1; +} + +.tab .tab-nav .tab-item { + @apply cursor-pointer; +} + +.tab .tab-nav .tab-item.fill { + @apply flex-1 w-full; +} + +.tab .tab-nav .tab-item.border-horizontal { + @apply border-0 hover:border hover:border-b-0 rounded-t-md px-6; +} + +.tab .tab-nav .tab-item.border-horizontal-active { + @apply border rounded-t-md border-b-0; +} + +.tab .tab-nav .tab-item.border-vertical { + @apply border-0 hover:border hover:border-r-0 rounded-l-md px-6; +} + +.tab .tab-nav .tab-item.border-vertical-active { + @apply border rounded-t-md rounded-bl-none md:rounded-r-none md:rounded-l-md border-r border-b-0 md:border-b md:border-r-0; +} + +.tab .tab-nav .tab-item.border-hover-primary { + @apply hover:border-primary; +} + +.tab .tab-nav .tab-item.border-hover-secondary { + @apply hover:border-secondary; +} + +.tab .tab-nav .tab-item.border-hover-success { + @apply hover:border-success; +} + +.tab .tab-nav .tab-item.border-hover-info { + @apply hover:border-info; +} + +.tab .tab-nav .tab-item.border-hover-warning { + @apply hover:border-warning; +} + +.tab .tab-nav .tab-item.border-hover-danger { + @apply hover:border-danger; +} + +.tab .tab-nav .tab-item.border-active-primary { + @apply border-primary text-primary; +} + +.tab .tab-nav .tab-item.border-active-secondary { + @apply border-secondary text-secondary; +} + +.tab .tab-nav .tab-item.border-active-success { + @apply border-success text-success; +} + +.tab .tab-nav .tab-item.border-active-info { + @apply border-info text-info; +} + +.tab .tab-nav .tab-item.border-active-warning { + @apply border-warning text-warning; +} + +.tab .tab-nav .tab-item.border-active-danger { + @apply border-danger text-danger; +} + +.tab .tab-nav .tab-item .tab-item-link { + @apply block font-medium text-base leading-tight capitalize border-x-0 border-t-0 py-3; +} + +.tab .tab-nav .tab-item .tab-item-link.default { + @apply hover:border-b-2 mx-2 px-4; +} + +.tab .tab-nav .tab-item .tab-item-link.default-vertical { + @apply hover:border-l-2 mx-2 px-4; +} + +.tab .tab-nav .tab-item .tab-item-link.default-active { + @apply border-b-2; +} + +.tab .tab-nav .tab-item .tab-item-link.default-vertical-active { + @apply border-l-2; +} + +.tab .tab-nav .tab-item .tab-item-link.default-hover-primary { + @apply hover:border-primary hover:text-primary; +} + +.tab .tab-nav .tab-item .tab-item-link.default-hover-secondary { + @apply hover:border-secondary hover:text-secondary; +} + +.tab .tab-nav .tab-item .tab-item-link.default-hover-success { + @apply hover:border-success hover:text-success; +} + +.tab .tab-nav .tab-item .tab-item-link.default-hover-info { + @apply hover:border-info hover:text-info; +} + +.tab .tab-nav .tab-item .tab-item-link.default-hover-warning { + @apply hover:border-warning hover:text-warning; +} + +.tab .tab-nav .tab-item .tab-item-link.default-hover-danger { + @apply hover:border-danger hover:text-danger; +} + +.tab .tab-nav .tab-item .tab-item-link.default-primary { + @apply text-primary border-primary; +} + +.tab .tab-nav .tab-item .tab-item-link.default-secondary { + @apply text-secondary border-secondary; +} + +.tab .tab-nav .tab-item .tab-item-link.default-success { + @apply text-success border-success; +} + +.tab .tab-nav .tab-item .tab-item-link.default-info { + @apply text-info border-info; +} + +.tab .tab-nav .tab-item .tab-item-link.default-warning { + @apply text-warning border-warning; +} + +.tab .tab-nav .tab-item .tab-item-link.default-danger { + @apply text-danger border-danger; +} + +.tab .tab-nav .tab-item .tab-item-link.link-card { + @apply px-5 mx-1 text-white rounded-t-md; +} + +.tab .tab-nav .tab-item .tab-item-link.link-card-vertical { + @apply px-5 my-0 text-white rounded-bl-none rounded-t-md md:rounded-tr-none md:rounded-l-md; +} + +.tab .tab-nav .tab-item .tab-item-link.link-card-primary { + @apply bg-primary/90; +} + +.tab .tab-nav .tab-item .tab-item-link.link-card-secondary { + @apply bg-secondary/90; +} + +.tab .tab-nav .tab-item .tab-item-link.link-card-success { + @apply bg-success/90; +} + +.tab .tab-nav .tab-item .tab-item-link.link-card-info { + @apply bg-info/90; +} + +.tab .tab-nav .tab-item .tab-item-link.link-card-warning { + @apply bg-warning/90; +} + +.tab .tab-nav .tab-item .tab-item-link.link-card-danger { + @apply bg-danger/90; +} + +.tab .tab-nav .tab-item .tab-item-link.link-card-primary-active { + @apply text-primary/90; + background-color: rgb(var(--bg-2)); +} + +.tab .tab-nav .tab-item .tab-item-link.link-card-secondary-active { + @apply text-secondary/90; + background-color: rgb(var(--bg-2)); +} + +.tab .tab-nav .tab-item .tab-item-link.link-card-success-active { + @apply text-success/90; + background-color: rgb(var(--bg-2)); +} + +.tab .tab-nav .tab-item .tab-item-link.link-card-info-active { + @apply text-info/90; + background-color: rgb(var(--bg-2)); +} + +.tab .tab-nav .tab-item .tab-item-link.link-card-warning-active { + @apply text-warning/90; + background-color: rgb(var(--bg-2)); +} + +.tab .tab-nav .tab-item .tab-item-link.link-card-danger-active { + @apply text-danger/90; + background-color: rgb(var(--bg-2)); +} + +.tab .tab-nav .tab-item .tab-item-link.link-justify-left { + @apply flex flex-wrap justify-start; +} + +.tab .tab-nav .tab-item .tab-item-link.link-justify-center { + @apply flex flex-wrap justify-center; +} + +.tab .tab-nav .tab-item .tab-item-link.link-justify-right { + @apply flex flex-wrap justify-end; +} + +.tab .tab-content { + background-color: rgb(var(--bg-2)); +} + +.tab .tab-content.content-vertical { + @apply flex-grow; +} + +.tab .tab-content.content-vertical-fill { + @apply flex-1; +} + +.tab .tab-content.content-border { + @apply border rounded-b-md; +} + +.tab .tab-content.content-border-vertical { + @apply border rounded-md rounded-l-none; +} + +.tab .tab-content.content-border-primary { + @apply border-primary; +} + +.tab .tab-content.content-border-secondary { + @apply border-secondary; +} + +.tab .tab-content.content-border-success { + @apply border-success; +} + +.tab .tab-content.content-border-info { + @apply border-info; +} + +.tab .tab-content.content-border-warning { + @apply border-warning; +} + +.tab .tab-content.content-border-danger { + @apply border-danger; +} + +.tab .tab-content .tab-pane { + @apply py-4 px-4; +} diff --git a/assets/style/css/component/table.css b/assets/style/css/component/table.css new file mode 100644 index 0000000..3582637 --- /dev/null +++ b/assets/style/css/component/table.css @@ -0,0 +1,32 @@ +/* Table Component */ +.table-wrapper { + @apply w-full border-0 rounded-md border-gray-200 dark:border-slate-700; +} + +.table-header { + @apply m-4 overflow-hidden; + transition: max-height 0.25s cubic-bezier(0, 1, 0, 1); + max-height: 42px; +} + +.table-header.open { + @apply overflow-visible; + transition: max-height 0.5s ease-in-out; + max-height: 9999px; +} + +.table-header-filter { + @apply flex flex-col md:flex-row justify-start md:justify-between items-start md:items-center gap-4; +} + +.table-content { + @apply w-full; +} + +.table-footer { + @apply flex justify-center md:justify-between items-center m-4; +} + +.table-footer-page { + @apply flex justify-center gap-x-2; +} diff --git a/assets/style/css/example-theme.css b/assets/style/css/example-theme.css new file mode 100644 index 0000000..5fb0932 --- /dev/null +++ b/assets/style/css/example-theme.css @@ -0,0 +1,65 @@ +/* Example Custom Theme for corradAF Base Project */ +/* This file demonstrates how custom themes should be structured */ +/* Define your custom theme variables here */ +/* For example: +:root { + --primary-color: #yourColor; +} +*/ + +:root { + /* Custom color variables */ + --color-primary: 46, 125, 50; /* Green theme */ + --color-secondary: 117, 117, 117; + --color-success: 76, 175, 80; + --color-info: 33, 150, 243; + --color-warning: 255, 152, 0; + --color-danger: 244, 67, 54; + + /* Custom background colors */ + --bg-primary: 245, 245, 245; + --bg-secondary: 255, 255, 255; +} + +/* Dark theme overrides */ +.dark { + --bg-primary: 18, 18, 18; + --bg-secondary: 30, 30, 30; +} + +/* Custom component styles */ +.btn-primary { + background-color: rgb(var(--color-primary)); + border-color: rgb(var(--color-primary)); +} + +.btn-primary:hover { + background-color: rgba(var(--color-primary), 0.8); + border-color: rgba(var(--color-primary), 0.8); +} + +/* Header customizations */ +.w-header { + background: linear-gradient(135deg, rgb(var(--color-primary)), rgba(var(--color-primary), 0.8)); + color: white; +} + +/* Sidebar customizations */ +.vertical-menu { + background-color: rgb(var(--bg-secondary)); + border-right: 1px solid rgba(var(--color-primary), 0.1); +} + +/* Card customizations */ +.card { + background-color: rgb(var(--bg-secondary)); + border: 1px solid rgba(var(--color-primary), 0.1); + box-shadow: 0 2px 4px rgba(var(--color-primary), 0.1); +} + +/* Example of responsive design */ +@media (max-width: 768px) { + .w-header { + background: rgb(var(--color-primary)); + } +} \ No newline at end of file diff --git a/assets/style/css/form/box.css b/assets/style/css/form/box.css new file mode 100644 index 0000000..e19092f --- /dev/null +++ b/assets/style/css/form/box.css @@ -0,0 +1,63 @@ +.formkit-inner-box { + @apply relative; +} + +.formkit-label { + @apply block mb-2 font-semibold text-sm formkit-invalid:text-red-500 dark:formkit-invalid:text-danger; +} + +.formkit-fieldset-box { + @apply max-w-md border border-[rgb(var(--fk-border-color))] rounded-lg px-4 py-2; +} + +.formkit-legend-box { + @apply font-bold text-sm; +} + +.formkit-wrapper-box { + @apply flex items-center mb-3 cursor-pointer; +} + +.formkit-help-box { + @apply mb-3; +} + +.formkit-input-box { + @apply flex + items-center + hover:cursor-pointer + appearance-none + h-5 w-5 mr-2 + border-2 + border-[rgb(var(--fk-border-color))] + checked:bg-primary + checked:border-transparent + bg-[rgb(var(--bg-2))] + rounded-md + checked:shadow-sm checked:shadow-primary/40 + focus:outline-none focus:ring-0 transition duration-200; +} + +.formkit-input-radio { + @apply flex + items-center + hover:cursor-pointer + appearance-none + h-5 w-5 mr-2 + border-2 + border-[rgb(var(--fk-border-color))] + checked:bg-primary + checked:border-transparent + bg-[rgb(var(--bg-2))] + rounded-full + checked:shadow-sm checked:shadow-primary/40 + focus:outline-none focus:ring-0 transition duration-200; +} + +.formkit-label-box { + @apply text-sm formkit-disabled:text-gray-300; +} + +.formkit-message-box { + @apply formkit-invalid:text-red-500; +} diff --git a/assets/style/css/form/button.css b/assets/style/css/form/button.css new file mode 100644 index 0000000..441bc79 --- /dev/null +++ b/assets/style/css/form/button.css @@ -0,0 +1,7 @@ +.formkit-wrapper-button { + @apply mb-1; +} + +.formkit-input-button { + @apply bg-primary hover:bg-primary/90 text-white text-sm font-normal py-2 px-5 rounded-lg; +} diff --git a/assets/style/css/form/color.css b/assets/style/css/form/color.css new file mode 100644 index 0000000..7834abd --- /dev/null +++ b/assets/style/css/form/color.css @@ -0,0 +1,18 @@ +.formkit-label-color { + @apply block mb-1 font-bold text-sm; +} + +.formkit-input-color { + @apply w-16 h-10 cursor-pointer rounded-lg mb-2 border-none appearance-none bg-transparent; +} + +.formkit-input-color::-webkit-color-swatch { + border-radius: 5px; + border: none; + box-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1); +} +.formkit-input-color::-moz-color-swatch { + border-radius: 5px; + border: none; + box-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1); +} diff --git a/assets/style/css/form/dropzone.css b/assets/style/css/form/dropzone.css new file mode 100644 index 0000000..e64f29c --- /dev/null +++ b/assets/style/css/form/dropzone.css @@ -0,0 +1,7 @@ +.formkit-inner-dropzone { + @apply w-full; +} + +.formkit-dropzone { + @apply border-2 border-[rgb(var(--fk-border-color))] border-dashed p-6 active:bg-[rgb(var(--bg-1))]; +} diff --git a/assets/style/css/form/file.css b/assets/style/css/form/file.css new file mode 100644 index 0000000..523e8f7 --- /dev/null +++ b/assets/style/css/form/file.css @@ -0,0 +1,32 @@ +.formkit-label-file { + @apply block mb-1 font-bold text-sm; +} + +.formkit-inner-file { + @apply w-full cursor-pointer; +} + +.formkit-input-file { + @apply w-full cursor-pointer border rounded-lg text-gray-600 text-sm mb-1 file:cursor-pointer file:mr-4 file:py-2 file:px-4 file:rounded-l-lg file:border-0 file:text-sm file:bg-primary file:text-white hover:file:bg-primary/90; + border-color: rgb(var(--fk-border-color)); +} + +.formkit-file-list { + @apply flex flex-col; +} + +.formkit-file-item { + @apply flex items-center py-2 px-4 rounded-lg border border-gray-200 mb-1 mt-1; +} + +.formkit-file-name { + @apply text-[rgb(var(--text-color))] text-sm; +} + +.formkit-file-remove { + @apply ml-auto text-primary text-sm; +} + +.formkit-no-files { + @apply text-[rgb(var(--text-color))] text-sm; +} diff --git a/assets/style/css/form/global.css b/assets/style/css/form/global.css new file mode 100644 index 0000000..73416b1 --- /dev/null +++ b/assets/style/css/form/global.css @@ -0,0 +1,23 @@ +.formkit-label-global { + @apply text-[rgb(var(--text-color))]; +} + +.formkit-outer-global { + @apply mb-4 text-[rgb(var(--text-color))] formkit-disabled:opacity-50; +} + +.formkit-help-global { + @apply text-xs mt-1; +} + +.formkit-messages-global { + @apply list-none p-0 mt-1 mb-0; +} + +.formkit-message-global { + @apply text-red-500 mb-1 text-xs; +} + +.formkit-wrapper-global { + @apply relative; +} diff --git a/assets/style/css/form/otp.css b/assets/style/css/form/otp.css new file mode 100644 index 0000000..31656eb --- /dev/null +++ b/assets/style/css/form/otp.css @@ -0,0 +1,29 @@ +.formkit-label-otp { + @apply block mb-2 font-semibold text-sm formkit-invalid:text-red-500 dark:formkit-invalid:text-danger; +} + +.formkit-inner-otp { + @apply flex + items-center + justify-start + align-middle + rounded-lg mb-1 + overflow-hidden; +} + +.formkit-digit-otp { + @apply w-10 h-10 mr-2 + text-center + rounded-lg + border + border-[rgb(var(--fk-border-color))] + text-sm + bg-[rgb(var(--bg-2))] + placeholder-secondary + focus-within:border-primary + focus:outline-none; +} + +.formkit-message-otp { + @apply formkit-invalid:text-red-500 dark:formkit-invalid:text-danger; +} diff --git a/assets/style/css/form/range.css b/assets/style/css/form/range.css new file mode 100644 index 0000000..6ea37d1 --- /dev/null +++ b/assets/style/css/form/range.css @@ -0,0 +1,3 @@ +.formkit-input-range { + @apply appearance-none w-full h-2 p-0 bg-[rgb(var(--bg-1))] rounded-full focus:outline-none focus:ring-0 focus:shadow-none; +} diff --git a/assets/style/css/form/text.css b/assets/style/css/form/text.css new file mode 100644 index 0000000..82ee8c7 --- /dev/null +++ b/assets/style/css/form/text.css @@ -0,0 +1,39 @@ +.formkit-inner-text { + @apply flex + items-center + justify-center + align-middle + w-full + border + border-[rgb(var(--fk-border-color))] + formkit-invalid:border-red-500 + rounded-lg + overflow-hidden + focus-within:border-primary + mb-0; +} + +.formkit-input-text { + @apply w-full + h-10 + px-3 + border-none + text-sm + bg-[rgb(var(--bg-2))] + placeholder-[rgb(var(--fk-placeholder-color))] + focus:outline-none + disabled:bg-[rgb(var(--bg-1))] + disabled:border-[rgb(var(--bg-1))] + disabled:placeholder-[rgb(var(--bg-1))] + read-only:bg-[rgb(var(--bg-1))] + read-only:border-[rgb(var(--bg-1))] + read-only:placeholder-[rgb(var(--bg-1))]; +} + +.formkit-prefix-text { + @apply ml-2; +} + +.formkit-message-text { + @apply formkit-invalid:text-red-500; +} diff --git a/assets/style/css/form/textarea.css b/assets/style/css/form/textarea.css new file mode 100644 index 0000000..edc4481 --- /dev/null +++ b/assets/style/css/form/textarea.css @@ -0,0 +1,8 @@ +.formkit-input-textarea { + @apply block + w-full + px-3 py-2 + placeholder-[rgb(var(--fk-placeholder-color))] + bg-[rgb(var(--bg-2))] + focus:outline-none; +} diff --git a/assets/style/css/tailwind.css b/assets/style/css/tailwind.css new file mode 100644 index 0000000..9005b22 --- /dev/null +++ b/assets/style/css/tailwind.css @@ -0,0 +1,33 @@ +/* Base Import Tailwind CSS */ +@import "tailwindcss/base"; +@import "./base/theme"; + +/* Components Import Tailwind CSS */ +@import "tailwindcss/components"; +@import "./component/common"; +@import "./component/alert"; +@import "./component/badge"; +@import "./component/button"; +@import "./component/card"; +@import "./component/collapse"; +@import "./component/dropdown"; +@import "./component/modal"; +@import "./component/progress"; +@import "./component/tab"; +@import "./component/table"; + +/* Form Import Tailwind CSS */ +@import "./form/global"; +@import "./form/text"; +@import "./form/textarea"; +@import "./form/box"; +@import "./form/button"; +@import "./form/otp"; +@import "./form/color"; +@import "./form/file"; +@import "./form/range"; +@import "./form/dropzone"; + +/* Utilities Import Tailwind CSS */ +@import "tailwindcss/utilities"; +@import "./utility/typography"; diff --git a/assets/style/css/utility/typography.css b/assets/style/css/utility/typography.css new file mode 100644 index 0000000..7c43e9d --- /dev/null +++ b/assets/style/css/utility/typography.css @@ -0,0 +1,29 @@ +h1 { + @apply text-4xl + font-bold; +} + +h2 { + @apply text-3xl + font-bold; +} + +h3 { + @apply text-2xl + font-bold; +} + +h4 { + @apply text-xl + font-bold; +} + +h5 { + @apply text-lg + font-bold; +} + +h6 { + @apply text-base + font-bold; +} diff --git a/assets/style/scss/custom/apps/products.scss b/assets/style/scss/custom/apps/products.scss new file mode 100644 index 0000000..6260088 --- /dev/null +++ b/assets/style/scss/custom/apps/products.scss @@ -0,0 +1,49 @@ +$small: 640px; +$medium: 768px; +$large: 1024px; +$xlarge: 1280px; + +.filter-wrapper { + &.filter-wrapper-show { + display: block; + } + + &.filter-wrapper-hide { + display: none; + } +} + +@media screen and (max-width: $medium) { + .filter-wrapper { + transition: right 0.25s ease; + &.filter-wrapper-show { + display: block; + right: 0px; + } + + &.filter-wrapper-hide { + display: block; + right: -260px; + } + } + + .filter-overlay { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + background-color: rgba(0, 0, 0, 0.5); + z-index: -50; + + &.show { + visibility: visible; + opacity: 1; + } + + &.hide { + visibility: hidden; + opacity: 0; + } + } +} diff --git a/assets/style/scss/custom/layout/horizontal.scss b/assets/style/scss/custom/layout/horizontal.scss new file mode 100644 index 0000000..1e44438 --- /dev/null +++ b/assets/style/scss/custom/layout/horizontal.scss @@ -0,0 +1,18 @@ +.h-layout { + .content-page { + padding: 10.5rem 2rem 0 2rem; + height: 100vh; + } + + .w-header, + .w-header-search { + width: 100%; + } + + .w-header-search { + position: fixed; + display: flex; + align-items: center; + height: 64px; + } +} diff --git a/assets/style/scss/custom/layout/vertical.scss b/assets/style/scss/custom/layout/vertical.scss new file mode 100644 index 0000000..cedeba6 --- /dev/null +++ b/assets/style/scss/custom/layout/vertical.scss @@ -0,0 +1,166 @@ +$small: 640px; +$medium: 768px; +$large: 1024px; +$xlarge: 1280px; + +@media screen and (max-width: $medium) { + body:has(.menu-overlay:not(.hide)) { + overflow: hidden; + } + + .menu-overlay { + position: fixed; + top: 0; + height: 120vh; + z-index: 45; + display: block; + visibility: visible; + opacity: 1; + transition: all 0.5s ease; + background-color: rgba(34, 41, 47, 0.5); + left: 0; + right: 0; + } + + .menu-overlay { + &.hide { + visibility: hidden; + opacity: 0; + } + } +} + +// Layout Vertical CSS +.v-layout { + .content-page { + height: 100%; + } + + .w-header-search { + position: fixed; + display: flex; + align-items: center; + height: 64px; + } + + .w-header, + .w-header-search { + width: calc(100% - 256px); + + @media screen and (max-width: $medium) { + width: 100%; + } + } + + .vertical-menu { + left: 0; + } + + .content-page { + margin-left: 256px; + padding: 6rem 2rem 10px 2rem; + + @media screen and (max-width: $medium) { + margin-left: 0px; + padding: 6rem 1.25rem 0 1.25rem; + } + } + + &.menu-hide { + .w-header { + width: calc(100% - 0px); + } + + .vertical-menu { + left: -260px; + } + + .content-page { + margin-left: 0; + } + } + + .menu-content, + .menu-content-child { + max-height: 1000px; + overflow: hidden; + + &.hide { + max-height: 0px; + } + } + + .menu-content-max, + .menu-content-child-max { + max-height: 100vh; + } + + svg.side-menu-arrow { + transition: 0.25s ease-in-out; + } + + .nav-open { + svg.side-menu-arrow { + transform: rotate(90deg); + } + } +} + +// Custom styles for LZS theme +html[data-theme="LZS"] { + .v-layout { + .active-menu { + position: relative; + transition: all 0.2s ease; + + // Yellow glow on active menu items + &:after { + content: ""; + position: absolute; + left: 0; + top: 0; + height: 100%; + width: 4px; + background-color: rgb(var(--active-menu-border)); + } + + // Icon color for active menu + svg { + color: rgb(var(--active-menu-border)); + } + } + + // Form focus states with yellow accent + input:focus, textarea:focus, select:focus { + outline: 2px solid rgba(var(--focus-ring)); + outline-offset: 2px; + } + + // Button hover with yellow accent + .btn-primary:hover, button.bg-primary:hover { + box-shadow: 0 0 0 2px rgba(var(--active-menu-border), 0.3); + } + + // Card headers with subtle yellow accent + .rs-card { + .card-header { + border-bottom: 1px solid rgba(var(--border-color)); + + h2, h3, h4 { + position: relative; + + &:before { + content: ""; + position: absolute; + left: -10px; + top: 50%; + transform: translateY(-50%); + height: 60%; + width: 3px; + background-color: rgb(var(--active-menu-border)); + } + } + } + } + } +} diff --git a/assets/style/scss/custom/library/_dropdown.scss b/assets/style/scss/custom/library/_dropdown.scss new file mode 100644 index 0000000..3458997 --- /dev/null +++ b/assets/style/scss/custom/library/_dropdown.scss @@ -0,0 +1,27 @@ +$small: 640px; +$medium: 768px; +$large: 1024px; +$xlarge: 1280px; + +.s-dropdown { + background-color: white; + padding: 10px 0; + border-radius: 5px; + top: 65px !important; + border: 1px solid rgb(229, 231, 235); + box-shadow: 0px 0px 10px rgba(226, 232, 240, 0.2); + + @media screen and (max-width: $medium) { + left: 0px !important; + width: 100% !important; + margin: 0px 2px !important; + } +} + +.dark { + .s-dropdown { + background-color: #1e293b; + box-shadow: 0px 0px 10px rgba(15, 23, 42, 0.2); + border: 1px solid #182130; + } +} diff --git a/assets/style/scss/custom/library/_floatingvue.scss b/assets/style/scss/custom/library/_floatingvue.scss new file mode 100644 index 0000000..74f6ed4 --- /dev/null +++ b/assets/style/scss/custom/library/_floatingvue.scss @@ -0,0 +1,19 @@ +.v-popper--theme-dropdown .v-popper__inner { + background: rgb(var(--bg-2)) !important; + border: 0px !important; + color: rgb(var(--text-color)) !important; +} + +// Disable arrow +.v-popper__arrow-container { + display: none; +} + +// .v-popper--theme-my-theme .v-popper__inner { +// background: #fff000; +// color: black; +// padding: 24px; +// border-radius: 6px; +// border: 1px solid #ddd; +// box-shadow: 0 6px 30px rgba(0, 0, 0, 0.1); +// } diff --git a/assets/style/scss/custom/library/_formkit.scss b/assets/style/scss/custom/library/_formkit.scss new file mode 100644 index 0000000..3c71f40 --- /dev/null +++ b/assets/style/scss/custom/library/_formkit.scss @@ -0,0 +1,237 @@ +$small: 640px; +$medium: 768px; +$large: 1024px; +$xlarge: 1280px; + +.formkit-form { + .form-wizard { + border-radius: 0.5rem; + } + + &.top-form { + .formkit-actions { + button[type="submit"] { + display: block; + margin-right: 0; + margin-left: auto; + } + } + ul.top-steps { + display: flex; + justify-content: space-evenly; + margin-bottom: 1rem; + gap: 1rem; + + @media screen and (max-width: $medium) { + flex-direction: column; + justify-content: start; + } + + li { + flex-grow: 1; + display: inline-block; + + .progress { + position: relative; + bottom: -8px; + width: 0%; + height: 8px; + border-radius: 10px; + background-color: rgb(var(--color-primary)); + transition: width 0.25s ease-in; + } + + .step--errors { + display: inline-flex; + justify-content: center; + align-items: center; + float: right; + width: 20px; + height: 20px; + border-radius: 50%; + background-color: #f23131; + color: #fff; + font-size: 12px; + } + + .counter { + display: inline-block; + } + + &:after { + content: ""; + display: block; + width: 100%; + height: 8px; + border-radius: 10px; + background-color: rgb(var(--bg-1)); + } + + &[data-step-active="true"] { + color: rgb(var(--color-primary)); + font-weight: 600; + + .progress { + width: 100%; + } + } + + &[data-step-active="false"] { + color: rgb(var(--bg-1)); + .progress { + width: 0%; + } + } + + &[data-step-completed="true"] { + color: rgb(var(--color-primary)); + font-weight: 600; + .progress { + width: 100%; + } + } + } + } + } + + &.left-form { + display: grid; + gap: 1rem; + grid-template-columns: 230px auto; + + @media screen and (max-width: $medium) { + grid-template-columns: repeat(1, minmax(0, 1fr)); + gap: 0rem; + } + + .formkit-actions { + grid-column: span 2 / span 2; + + @media screen and (max-width: $medium) { + grid-column: span 1 / span 1; + } + + button[type="submit"] { + float: right; + } + } + + ul.left-steps { + display: block; + li { + margin-bottom: 1rem; + .progress { + position: relative; + bottom: -8px; + width: 0%; + height: 8px; + border-radius: 10px; + background-color: rgb(var(--color-primary)); + transition: width 0.25s ease-in; + } + + .step--errors { + display: inline-flex; + justify-content: center; + align-items: center; + float: right; + width: 20px; + height: 20px; + border-radius: 50%; + background-color: #f23131; + color: #fff; + font-size: 12px; + } + + .counter { + display: inline-block; + } + + &:after { + content: ""; + display: block; + width: 100%; + height: 8px; + border-radius: 10px; + background-color: rgb(var(--bg-1)); + } + + &[data-step-active="true"] { + color: rgb(var(--color-primary)); + font-weight: 600; + + .progress { + width: 100%; + } + } + + &[data-step-active="false"] { + color: rgb(var(--bg-1)); + .progress { + width: 0%; + } + } + + &[data-step-completed="true"] { + color: rgb(var(--color-primary)); + font-weight: 600; + .progress { + width: 100%; + } + } + } + } + } +} + +// Custom Formkit Input for VSelect +.formkit-vselect { + margin-bottom: 1rem; + + .vs__dropdown-menu { + background: rgb(var(--bg-2)); + } + + .vs__dropdown-menu li { + background: rgb(var(--bg-1)); + color: rgb(var(--text-color)); + } + + .vs__dropdown-toggle { + min-height: 2.5rem; + padding-left: 0.75rem; + padding-right: 0.75rem; + font-size: 0.875rem; + line-height: 1.25rem; + color: rgb(var(--color-primary)); + + border-width: 1px; + border-radius: 0.5rem; + margin-bottom: 0px; + border-color: rgb(var(--fk-border-color)); + + .vs__selected { + padding-left: 1rem; + padding-right: 1rem; + padding-top: 0.25rem; + padding-bottom: 0.25rem; + + background-color: rgb(var(--color-primary)); + color: white; + + border: 0; + border-radius: 0.5rem; + + gap: 0.25rem; + margin-right: 0.35rem; + margin-left: 0; + } + } +} + +// Custom Decorator +input[type="checkbox"]:checked.icon-check + .formkit-decorator::before { + content: url('data:image/svg+xml;charset=UTF-8,'); + position: absolute; + top: -1px; +} diff --git a/assets/style/scss/custom/library/_fullcalendar.scss b/assets/style/scss/custom/library/_fullcalendar.scss new file mode 100644 index 0000000..ae7af69 --- /dev/null +++ b/assets/style/scss/custom/library/_fullcalendar.scss @@ -0,0 +1,114 @@ +$small: 640px; +$medium: 768px; +$large: 1024px; +$xlarge: 1280px; + +.fc-theme-standard td, +.fc-theme-standard th { + border-color: rgb(var(--bg-1)) !important; +} + +// Overwrite fullcalendar styles light +.fc { + .fc-scrollgrid { + border: 1px solid rgb(var(--bg-1)) !important; + } + + .fc-toolbar { + @media screen and (max-width: $medium) { + flex-direction: column; + align-items: flex-start !important; + gap: 10px; + } + + .fc-toolbar-chunk { + display: flex; + align-items: center; + } + } + + .fc-button { + padding: 0.75rem 1rem !important; + + &.fc-button-primary { + background-color: transparent !important; + color: rgb(var(--color-primary)); + border-color: rgb(var(--color-primary)) !important; + } + + &.fc-button-active { + background-color: rgb(var(--color-primary)) !important; + } + + &:hover { + background-color: rgb(var(--color-primary)) !important; + color: white !important; + } + + &:focus { + box-shadow: 0 0 0 0.05rem rgba(255, 113, 133, 0.5) !important; + background-color: rgb(var(--color-primary)) !important; + color: white !important; + } + } + + .fc-view-harness { + table { + &.fc-col-header { + td, + th { + border-color: rgb(var(--bg-1)) !important; + } + + .fc-col-header-cell { + padding: 0.5rem; + } + } + } + + .fc-daygrid-day { + &.fc-day-today { + background-color: rgb(var(--bg-1)); + background: rgb(var(--bg-1)); + } + } + + .fc-daygrid-day-top { + color: #6b727f !important; + } + + .fc-more-link { + color: rgb(var(--color-primary)); + } + } + + .fc-daygrid-event-harness { + .fc-daygrid-event { + padding: 0.5rem 1rem; + } + + .fc-h-event { + &.fc-event-start { + border-color: rgb(var(--color-primary)); + background-color: rgb(var(--color-primary)); + } + } + } + .fc-list { + .fc-list-event-dot { + background-color: rgb(var(--color-primary)); + border: 5px solid #f3f4f6; + border-color: rgb(var(--color-primary)) !important; + } + + .fc-list-day-cushion { + background-color: #f3f4f6; + padding: 0.5rem 1rem; + } + } + + .fc-popover-header { + padding: 0.5rem !important; + background: #f3f4f6; + } +} diff --git a/assets/style/scss/custom/library/_nprogress.scss b/assets/style/scss/custom/library/_nprogress.scss new file mode 100644 index 0000000..3a8cd29 --- /dev/null +++ b/assets/style/scss/custom/library/_nprogress.scss @@ -0,0 +1,81 @@ +/* Make clicks pass-through */ +#nprogress { + pointer-events: none; +} + +#nprogress .bar { + background: #fb7185; + + position: fixed; + z-index: 1031; + top: 0; + left: 0; + + width: 100%; + height: 3px; +} + +/* Fancy blur effect */ +#nprogress .peg { + display: block; + position: absolute; + right: 0px; + width: 100px; + height: 100%; + box-shadow: 0 0 10px #fb7185, 0 0 5px #fb7185; + opacity: 1; + + -webkit-transform: rotate(3deg) translate(0px, -4px); + -ms-transform: rotate(3deg) translate(0px, -4px); + transform: rotate(3deg) translate(0px, -4px); +} + +/* Remove these to get rid of the spinner */ +#nprogress .spinner { + display: block; + position: fixed; + z-index: 1031; + top: 15px; + right: 15px; +} + +#nprogress .spinner-icon { + width: 18px; + height: 18px; + box-sizing: border-box; + + border: solid 2px transparent; + border-top-color: #fb7185; + border-left-color: #fb7185; + border-radius: 50%; + + -webkit-animation: nprogress-spinner 400ms linear infinite; + animation: nprogress-spinner 400ms linear infinite; +} + +.nprogress-custom-parent { + overflow: hidden; + position: relative; +} + +.nprogress-custom-parent #nprogress .spinner, +.nprogress-custom-parent #nprogress .bar { + position: absolute; +} + +@-webkit-keyframes nprogress-spinner { + 0% { + -webkit-transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(360deg); + } +} +@keyframes nprogress-spinner { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(360deg); + } +} diff --git a/assets/style/scss/custom/library/_swiper.scss b/assets/style/scss/custom/library/_swiper.scss new file mode 100644 index 0000000..2c94c55 --- /dev/null +++ b/assets/style/scss/custom/library/_swiper.scss @@ -0,0 +1,18 @@ +.swiper-button-next, +.swiper-button-prev { + color: #4B5563 !important; + padding: 1.5rem; +} + +.swiper-button-next:after, +.swiper-button-prev:after { + font-size: 1.5rem !important; +} + +.swiper-pagination-bullet { + background-color: #8b98a9 !important; +} + +.swiper-pagination-bullet-active { + background: #4B5563 !important; +} diff --git a/assets/style/scss/custom/library/_vuecountryflag.scss b/assets/style/scss/custom/library/_vuecountryflag.scss new file mode 100644 index 0000000..e396551 --- /dev/null +++ b/assets/style/scss/custom/library/_vuecountryflag.scss @@ -0,0 +1,7 @@ +.flag.normal-flag { + margin: 0em -1em -0em -1em !important; + transform: scale(0.38) !important; + -ms-transform: scale(0.38) !important; + -webkit-transform: scale(0.38) !important; + -moz-transform: scale(0.38) !important; +} diff --git a/assets/style/scss/custom/library/_vuetoastification.scss b/assets/style/scss/custom/library/_vuetoastification.scss new file mode 100644 index 0000000..8a40068 --- /dev/null +++ b/assets/style/scss/custom/library/_vuetoastification.scss @@ -0,0 +1,3 @@ +.Vue-Toastification__toast { + padding: 18px 21px; +} diff --git a/assets/style/scss/custom/scrollbar/scrollbar.scss b/assets/style/scss/custom/scrollbar/scrollbar.scss new file mode 100644 index 0000000..664be81 --- /dev/null +++ b/assets/style/scss/custom/scrollbar/scrollbar.scss @@ -0,0 +1,21 @@ +/* width */ +::-webkit-scrollbar { + width: 8px; + height: 8px; +} + +/* Track */ +::-webkit-scrollbar-track { + background-color: transparent; +} + +/* Handle */ +::-webkit-scrollbar-thumb { + background-color: rgb(var(--scroll-color)); + border-radius: 6px; +} + +/* Handle on hover */ +::-webkit-scrollbar-thumb:hover { + background: rgb(var(--scroll-hover-color)); +} diff --git a/assets/style/scss/custom/transition/fade-up.scss b/assets/style/scss/custom/transition/fade-up.scss new file mode 100644 index 0000000..89342c2 --- /dev/null +++ b/assets/style/scss/custom/transition/fade-up.scss @@ -0,0 +1,12 @@ +// Animation for transition fade +.fade-up-enter-active, +.fade-up-leave-active { + transition: transform 0.4s cubic-bezier(0.17, 0.67, 0.84, 0.79), + opacity 0.3s linear; +} + +.fade-up-enter-from, +.fade-up-leave-to { + opacity: 0; + transform: translateY(-10%); +} diff --git a/assets/style/scss/custom/transition/fade.scss b/assets/style/scss/custom/transition/fade.scss new file mode 100644 index 0000000..0f3ba9b --- /dev/null +++ b/assets/style/scss/custom/transition/fade.scss @@ -0,0 +1,10 @@ +// Animation for transition fade +.fade-enter-active, +.fade-leave-active { + transition: opacity 0.3s ease; +} + +.fade-enter-from, +.fade-leave-to { + opacity: 0; +} diff --git a/assets/style/scss/custom/transition/page.scss b/assets/style/scss/custom/transition/page.scss new file mode 100644 index 0000000..904190a --- /dev/null +++ b/assets/style/scss/custom/transition/page.scss @@ -0,0 +1,11 @@ +// Animation for transition fade +.page-enter-active, +.page-leave-active { + transition: transform 0.3s ease, opacity 0.4s ease; +} + +.page-enter-from, +.page-leave-to { + transform: scale(1.02); + opacity: 0; +} diff --git a/assets/style/scss/custom/transition/slide-fade.scss b/assets/style/scss/custom/transition/slide-fade.scss new file mode 100644 index 0000000..70b6742 --- /dev/null +++ b/assets/style/scss/custom/transition/slide-fade.scss @@ -0,0 +1,17 @@ +/* + Enter and leave animations can use different + durations and timing functions. +*/ +.slide-fade-enter-active { + transition: all 0.3s ease-out; +} + +.slide-fade-leave-active { + transition: all 0.8s cubic-bezier(1, 0.5, 0.8, 1); +} + +.slide-fade-enter-from, +.slide-fade-leave-to { + transform: translateX(20px); + opacity: 0; +} diff --git a/assets/style/scss/custom/transition/slide.scss b/assets/style/scss/custom/transition/slide.scss new file mode 100644 index 0000000..6b6bca5 --- /dev/null +++ b/assets/style/scss/custom/transition/slide.scss @@ -0,0 +1,10 @@ +.slide-enter-active, +.slide-leave-active { + transition: translateY, opacity 0.2s ease; +} + +.slide-enter-from, +.slide-leave-to { + transform: translateY(0px); + opacity: 0; +} diff --git a/assets/style/scss/main.scss b/assets/style/scss/main.scss new file mode 100644 index 0000000..39d59d8 --- /dev/null +++ b/assets/style/scss/main.scss @@ -0,0 +1,57 @@ +/*================================================================================ + Notes: This file is the main entry point for the SCSS stylesheet. + ================================================================================*/ + +/* Import DM Sans font from Google Fonts */ +@import url("https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&display=swap"); + +html, +body { + height: 100%; +} + +#__nuxt { + font-family: "DM Sans", sans-serif; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + font-weight: 400; + letter-spacing: -0.5px; /* Changed from -2px to -0.5px for better readability */ + font-size: 14px; +} + +// svg.icon{ +// width: 1.3rem; +// height: 1.3rem; +// vertical-align: middle; +// fill: currentColor; +// overflow: hidden; +// } + +code { + color: rgb(233, 74, 74); + background-color: rgba(146, 146, 146, 0.1); +} + +// Custom Layout SCSS +@import "./custom/layout/vertical"; +@import "./custom/layout/horizontal"; + +// Transition SCSS +@import "./custom/transition/page"; +@import "./custom/transition/fade"; +@import "./custom/transition/fade-up"; +@import "./custom/transition/slide"; +@import "./custom/transition/slide-fade"; + +// Scrollbar SCSS +@import "./custom/scrollbar/scrollbar"; + +// Custom SCSS library +@import "./custom/library/dropdown"; +@import "./custom/library/nprogress"; +@import "./custom/library/formkit"; +@import "./custom/library/vuetoastification"; +@import "./custom/library/swiper"; +@import "./custom/library/fullcalendar"; +@import "./custom/library/floatingvue"; +@import "./custom/library/vuecountryflag"; diff --git a/components/FontSizeStepper.vue b/components/FontSizeStepper.vue new file mode 100644 index 0000000..86146a0 --- /dev/null +++ b/components/FontSizeStepper.vue @@ -0,0 +1,78 @@ + + + \ No newline at end of file diff --git a/components/Loading.vue b/components/Loading.vue new file mode 100644 index 0000000..622fac5 --- /dev/null +++ b/components/Loading.vue @@ -0,0 +1,69 @@ + + + diff --git a/components/RSCalendar.vue b/components/RSCalendar.vue new file mode 100644 index 0000000..3bf6d40 --- /dev/null +++ b/components/RSCalendar.vue @@ -0,0 +1,243 @@ + + + diff --git a/components/RsAlert.vue b/components/RsAlert.vue new file mode 100644 index 0000000..4cc0dba --- /dev/null +++ b/components/RsAlert.vue @@ -0,0 +1,67 @@ + + + diff --git a/components/RsApiTester.vue b/components/RsApiTester.vue new file mode 100644 index 0000000..4ee9d3b --- /dev/null +++ b/components/RsApiTester.vue @@ -0,0 +1,145 @@ + + + + + diff --git a/components/RsBadge.vue b/components/RsBadge.vue new file mode 100644 index 0000000..c814f94 --- /dev/null +++ b/components/RsBadge.vue @@ -0,0 +1,34 @@ + + + diff --git a/components/RsButton.vue b/components/RsButton.vue new file mode 100644 index 0000000..19beb81 --- /dev/null +++ b/components/RsButton.vue @@ -0,0 +1,58 @@ + + + diff --git a/components/RsCard.vue b/components/RsCard.vue new file mode 100644 index 0000000..d811bbe --- /dev/null +++ b/components/RsCard.vue @@ -0,0 +1,16 @@ + + + diff --git a/components/RsCodeMirror.vue b/components/RsCodeMirror.vue new file mode 100644 index 0000000..70b1516 --- /dev/null +++ b/components/RsCodeMirror.vue @@ -0,0 +1,223 @@ + + + + + diff --git a/components/RsCollapse.vue b/components/RsCollapse.vue new file mode 100644 index 0000000..dd60650 --- /dev/null +++ b/components/RsCollapse.vue @@ -0,0 +1,24 @@ + + + diff --git a/components/RsCollapseItem.vue b/components/RsCollapseItem.vue new file mode 100644 index 0000000..54d24ca --- /dev/null +++ b/components/RsCollapseItem.vue @@ -0,0 +1,94 @@ + + + diff --git a/components/RsDropdown.vue b/components/RsDropdown.vue new file mode 100644 index 0000000..a6d223d --- /dev/null +++ b/components/RsDropdown.vue @@ -0,0 +1,222 @@ + + + diff --git a/components/RsDropdownItem.vue b/components/RsDropdownItem.vue new file mode 100644 index 0000000..6d715ee --- /dev/null +++ b/components/RsDropdownItem.vue @@ -0,0 +1,21 @@ + + + diff --git a/components/RsFieldset.vue b/components/RsFieldset.vue new file mode 100644 index 0000000..dba5bd9 --- /dev/null +++ b/components/RsFieldset.vue @@ -0,0 +1,45 @@ + + + diff --git a/components/RsModal.vue b/components/RsModal.vue new file mode 100644 index 0000000..c3d8471 --- /dev/null +++ b/components/RsModal.vue @@ -0,0 +1,149 @@ + + + diff --git a/components/RsProgressBar.vue b/components/RsProgressBar.vue new file mode 100644 index 0000000..3d7053a --- /dev/null +++ b/components/RsProgressBar.vue @@ -0,0 +1,63 @@ + + + diff --git a/components/RsTab.vue b/components/RsTab.vue new file mode 100644 index 0000000..cf9fc3b --- /dev/null +++ b/components/RsTab.vue @@ -0,0 +1,230 @@ + + + diff --git a/components/RsTabItem.vue b/components/RsTabItem.vue new file mode 100644 index 0000000..a0eec26 --- /dev/null +++ b/components/RsTabItem.vue @@ -0,0 +1,20 @@ + + + diff --git a/components/RsTable.vue b/components/RsTable.vue new file mode 100644 index 0000000..b4116a1 --- /dev/null +++ b/components/RsTable.vue @@ -0,0 +1,805 @@ + + + diff --git a/components/RsWizard.vue b/components/RsWizard.vue new file mode 100644 index 0000000..86ffb1b --- /dev/null +++ b/components/RsWizard.vue @@ -0,0 +1,228 @@ + + + diff --git a/components/VoiceReader.vue b/components/VoiceReader.vue new file mode 100644 index 0000000..8fe3d04 --- /dev/null +++ b/components/VoiceReader.vue @@ -0,0 +1,35 @@ + + + + + diff --git a/components/draggable/nested.vue b/components/draggable/nested.vue new file mode 100644 index 0000000..1d0239e --- /dev/null +++ b/components/draggable/nested.vue @@ -0,0 +1,33 @@ + + + + + diff --git a/components/draggable/sideMenuNested.vue b/components/draggable/sideMenuNested.vue new file mode 100644 index 0000000..0596c5b --- /dev/null +++ b/components/draggable/sideMenuNested.vue @@ -0,0 +1,533 @@ + + + diff --git a/components/formkit/DateTimePicker.vue b/components/formkit/DateTimePicker.vue new file mode 100644 index 0000000..6737d41 --- /dev/null +++ b/components/formkit/DateTimePicker.vue @@ -0,0 +1,13 @@ + + + diff --git a/components/formkit/FileDropzone.vue b/components/formkit/FileDropzone.vue new file mode 100644 index 0000000..57743b7 --- /dev/null +++ b/components/formkit/FileDropzone.vue @@ -0,0 +1,139 @@ + + + diff --git a/components/formkit/OneTimePassword.vue b/components/formkit/OneTimePassword.vue new file mode 100644 index 0000000..f141fde --- /dev/null +++ b/components/formkit/OneTimePassword.vue @@ -0,0 +1,83 @@ + + + diff --git a/components/formkit/TextMask.vue b/components/formkit/TextMask.vue new file mode 100644 index 0000000..55a1be8 --- /dev/null +++ b/components/formkit/TextMask.vue @@ -0,0 +1,23 @@ + + + diff --git a/components/formkit/Toggle.vue b/components/formkit/Toggle.vue new file mode 100644 index 0000000..3faee73 --- /dev/null +++ b/components/formkit/Toggle.vue @@ -0,0 +1,36 @@ + + + diff --git a/components/layouts/Breadcrumb.vue b/components/layouts/Breadcrumb.vue new file mode 100644 index 0000000..0d6f142 --- /dev/null +++ b/components/layouts/Breadcrumb.vue @@ -0,0 +1,92 @@ + + + diff --git a/components/layouts/BreadcrumbV2.vue b/components/layouts/BreadcrumbV2.vue new file mode 100644 index 0000000..268a040 --- /dev/null +++ b/components/layouts/BreadcrumbV2.vue @@ -0,0 +1,98 @@ + + + diff --git a/components/layouts/FormHeader.vue b/components/layouts/FormHeader.vue new file mode 100644 index 0000000..9f11cbf --- /dev/null +++ b/components/layouts/FormHeader.vue @@ -0,0 +1,20 @@ + + + diff --git a/components/layouts/Header.vue b/components/layouts/Header.vue new file mode 100644 index 0000000..7d4a379 --- /dev/null +++ b/components/layouts/Header.vue @@ -0,0 +1,328 @@ + + + + + diff --git a/components/layouts/configmenu/index.vue b/components/layouts/configmenu/index.vue new file mode 100644 index 0000000..acc60ec --- /dev/null +++ b/components/layouts/configmenu/index.vue @@ -0,0 +1,241 @@ + + + diff --git a/components/layouts/horizontal/index.vue b/components/layouts/horizontal/index.vue new file mode 100644 index 0000000..4322d41 --- /dev/null +++ b/components/layouts/horizontal/index.vue @@ -0,0 +1,7 @@ + + + + diff --git a/components/layouts/index.vue b/components/layouts/index.vue new file mode 100644 index 0000000..c6e9aa9 --- /dev/null +++ b/components/layouts/index.vue @@ -0,0 +1,25 @@ + + + diff --git a/components/layouts/sidemenu/Item.vue b/components/layouts/sidemenu/Item.vue new file mode 100644 index 0000000..f155f84 --- /dev/null +++ b/components/layouts/sidemenu/Item.vue @@ -0,0 +1,166 @@ + + + diff --git a/components/layouts/sidemenu/ItemChild.vue b/components/layouts/sidemenu/ItemChild.vue new file mode 100644 index 0000000..a642f36 --- /dev/null +++ b/components/layouts/sidemenu/ItemChild.vue @@ -0,0 +1,145 @@ + + + diff --git a/components/layouts/sidemenu/index.vue b/components/layouts/sidemenu/index.vue new file mode 100644 index 0000000..9ca2f32 --- /dev/null +++ b/components/layouts/sidemenu/index.vue @@ -0,0 +1,87 @@ + + + diff --git a/components/layouts/vertical/index.vue b/components/layouts/vertical/index.vue new file mode 100644 index 0000000..8983836 --- /dev/null +++ b/components/layouts/vertical/index.vue @@ -0,0 +1,41 @@ + + + diff --git a/composables/codemirrorThemes.js b/composables/codemirrorThemes.js new file mode 100644 index 0000000..3cb5ef5 --- /dev/null +++ b/composables/codemirrorThemes.js @@ -0,0 +1,284 @@ +export default function () { + return [ + { + name: "3024-day", + image: + "https://raw.githubusercontent.com/codemirror/CodeMirror/master/theme/3024-day.png", + }, + { + name: "3024-night", + image: + "https://raw.githubusercontent.com/codemirror/CodeMirror/master/theme/3024-night.png", + }, + { + name: "abcdef", + image: + "https://raw.githubusercontent.com/codemirror/CodeMirror/master/theme/abcdef.png", + }, + { + name: "ambiance-mobile", + image: + "https://raw.githubusercontent.com/codemirror/CodeMirror/master/theme/ambiance-mobile.png", + }, + { + name: "ambiance", + image: + "https://raw.githubusercontent.com/codemirror/CodeMirror/master/theme/ambiance.png", + }, + { + name: "ayu-dark", + image: + "https://raw.githubusercontent.com/codemirror/CodeMirror/master/theme/ayu-dark.png", + }, + { + name: "ayu-mirage", + image: + "https://raw.githubusercontent.com/codemirror/CodeMirror/master/theme/ayu-mirage.png", + }, + { + name: "base16-dark", + image: + "https://raw.githubusercontent.com/codemirror/CodeMirror/master/theme/base16-dark.png", + }, + { + name: "base16-light", + image: + "https://raw.githubusercontent.com/codemirror/CodeMirror/master/theme/base16-light.png", + }, + { + name: "bespin", + image: + "https://raw.githubusercontent.com/codemirror/CodeMirror/master/theme/bespin.png", + }, + { + name: "blackboard", + image: + "https://raw.githubusercontent.com/codemirror/CodeMirror/master/theme/blackboard.png", + }, + { + name: "cobalt", + image: + "https://raw.githubusercontent.com/codemirror/CodeMirror/master/theme/cobalt.png", + }, + { + name: "colorforth", + image: + "https://raw.githubusercontent.com/codemirror/CodeMirror/master/theme/colorforth.png", + }, + { + name: "dracula", + image: + "https://raw.githubusercontent.com/codemirror/CodeMirror/master/theme/dracula.png", + }, + { + name: "duotone-dark", + image: + "https://raw.githubusercontent.com/codemirror/CodeMirror/master/theme/duotone-dark.png", + }, + { + name: "duotone-light", + image: + "https://raw.githubusercontent.com/codemirror/CodeMirror/master/theme/duotone-light.png", + }, + { + name: "eclipse", + image: + "https://raw.githubusercontent.com/codemirror/CodeMirror/master/theme/eclipse.png", + }, + { + name: "elegant", + image: + "https://raw.githubusercontent.com/codemirror/CodeMirror/master/theme/elegant.png", + }, + { + name: "erlang-dark", + image: + "https://raw.githubusercontent.com/codemirror/CodeMirror/master/theme/erlang-dark.png", + }, + { + name: "gruvbox-dark", + image: + "https://raw.githubusercontent.com/codemirror/CodeMirror/master/theme/gruvbox-dark.png", + }, + { + name: "hopscotch", + image: + "https://raw.githubusercontent.com/codemirror/CodeMirror/master/theme/hopscotch.png", + }, + { + name: "icecoder", + image: + "https://raw.githubusercontent.com/codemirror/CodeMirror/master/theme/icecoder.png", + }, + { + name: "idea", + image: + "https://raw.githubusercontent.com/codemirror/CodeMirror/master/theme/idea.png", + }, + { + name: "isotope", + image: + "https://raw.githubusercontent.com/codemirror/CodeMirror/master/theme/isotope.png", + }, + { + name: "lesser-dark", + image: + "https://raw.githubusercontent.com/codemirror/CodeMirror/master/theme/lesser-dark.png", + }, + { + name: "liquibyte", + image: + "https://raw.githubusercontent.com/codemirror/CodeMirror/master/theme/liquibyte.png", + }, + { + name: "lucario", + image: + "https://raw.githubusercontent.com/codemirror/CodeMirror/master/theme/lucario.png", + }, + { + name: "material", + image: + "https://raw.githubusercontent.com/codemirror/CodeMirror/master/theme/material.png", + }, + { + name: "mbo", + image: + "https://raw.githubusercontent.com/codemirror/CodeMirror/master/theme/mbo.png", + }, + { + name: "mdn-like", + image: + "https://raw.githubusercontent.com/codemirror/CodeMirror/master/theme/mdn-like.png", + }, + { + name: "midnight", + image: + "https://raw.githubusercontent.com/codemirror/CodeMirror/master/theme/midnight.png", + }, + { + name: "monokai", + image: + "https://raw.githubusercontent.com/codemirror/CodeMirror/master/theme/monokai.png", + }, + { + name: "neat", + image: + "https://raw.githubusercontent.com/codemirror/CodeMirror/master/theme/neat.png", + }, + { + name: "neo", + image: + "https://raw.githubusercontent.com/codemirror/CodeMirror/master/theme/neo.png", + }, + { + name: "night", + image: + "https://raw.githubusercontent.com/codemirror/CodeMirror/master/theme/night.png", + }, + { + name: "oceanic-next", + image: + "https://raw.githubusercontent.com/codemirror/CodeMirror/master/theme/oceanic-next.png", + }, + { + name: "panda-syntax", + image: + "https://raw.githubusercontent.com/codemirror/CodeMirror/master/theme/panda-syntax.png", + }, + { + name: "paraiso-dark", + image: + "https://raw.githubusercontent.com/codemirror/CodeMirror/master/theme/paraiso-dark.png", + }, + { + name: "paraiso-light", + image: + "https://raw.githubusercontent.com/codemirror/CodeMirror/master/theme/paraiso-light.png", + }, + { + name: "pastel-on-dark", + image: + "https://raw.githubusercontent.com/codemirror/CodeMirror/master/theme/pastel-on-dark.png", + }, + { + name: "railscasts", + image: + "https://raw.githubusercontent.com/codemirror/CodeMirror/master/theme/railscasts.png", + }, + { + name: "rubyblue", + image: + "https://raw.githubusercontent.com/codemirror/CodeMirror/master/theme/rubyblue.png", + }, + { + name: "seti", + image: + "https://raw.githubusercontent.com/codemirror/CodeMirror/master/theme/seti.png", + }, + { + name: "shadowfox", + image: + "https://raw.githubusercontent.com/codemirror/CodeMirror/master/theme/shadowfox.png", + }, + { + name: "solarized", + image: + "https://raw.githubusercontent.com/codemirror/CodeMirror/master/theme/solarized.png", + }, + { + name: "the-matrix", + image: + "https://raw.githubusercontent.com/codemirror/CodeMirror/master/theme/the-matrix.png", + }, + { + name: "tomorrow-night-bright", + image: + "https://raw.githubusercontent.com/codemirror/CodeMirror/master/theme/tomorrow-night-bright.png", + }, + { + name: "tomorrow-night-eighties", + image: + "https://raw.githubusercontent.com/codemirror/CodeMirror/master/theme/tomorrow-night-eighties.png", + }, + { + name: "ttcn", + image: + "https://raw.githubusercontent.com/codemirror/CodeMirror/master/theme/ttcn.png", + }, + { + name: "twilight", + image: + "https://raw.githubusercontent.com/codemirror/CodeMirror/master/theme/twilight.png", + }, + { + name: "vibrant-ink", + image: + "https://raw.githubusercontent.com/codemirror/CodeMirror/master/theme/vibrant-ink.png", + }, + { + name: "xq-dark", + image: + "https://raw.githubusercontent.com/codemirror/CodeMirror/master/theme/xq-dark.png", + }, + { + name: "xq-light", + image: + "https://raw.githubusercontent.com/codemirror/CodeMirror/master/theme/xq-light.png", + }, + { + name: "yeti", + image: + "https://raw.githubusercontent.com/codemirror/CodeMirror/master/theme/yeti.png", + }, + { + name: "yonce", + image: + "https://raw.githubusercontent.com/codemirror/CodeMirror/master/theme/yonce.png", + }, + { + name: "zenburn", + image: + "https://raw.githubusercontent.com/codemirror/CodeMirror/master/theme/zenburn.png", + }, + ]; +} diff --git a/composables/languageList.js b/composables/languageList.js new file mode 100644 index 0000000..3c14fa7 --- /dev/null +++ b/composables/languageList.js @@ -0,0 +1,20 @@ +export default function () { + return [ + { + name: "English", + value: "en", + flagCode: "GB", + default: true, + }, + { + name: "Malay", + value: "ms", + flagCode: "MY", + }, + { + name: "Chinese", + value: "cn", + flagCode: "CN", + } + ]; +} diff --git a/composables/themeList.js b/composables/themeList.js new file mode 100644 index 0000000..3779de1 --- /dev/null +++ b/composables/themeList.js @@ -0,0 +1,55 @@ +export default function () { + return [ + { + theme: "biasa", + colors: [ + { + name: "primary", + value: "243, 88, 106", + }, + { + name: "secondary", + value: "240, 122, 37", + }, + { + name: "accent", + value: "243, 244, 246", + }, + ], + }, + { + theme: "gelap", + colors: [ + { + name: "primary", + value: "243, 88, 106", + }, + { + name: "secondary", + value: "240, 122, 37", + }, + { + name: "accent", + value: "15, 23, 42", + }, + ], + }, + { + theme: "LZS", + colors: [ + { + name: "primary", + value: "0, 90, 173", // #005AAD - Blue + }, + { + name: "secondary", + value: "141, 199, 61", // #8DC73D - Green + }, + { + name: "accent", + value: "255, 242, 0", // #FFF200 - Yellow + }, + ], + }, + ]; +} diff --git a/composables/themeList2.js b/composables/themeList2.js new file mode 100644 index 0000000..26230d5 --- /dev/null +++ b/composables/themeList2.js @@ -0,0 +1,129 @@ +export default function () { + return [ + { + theme: "biru", + colors: [ + { + name: "primary", + value: "0, 102, 204", // Strong blue + }, + { + name: "secondary", + value: "51, 153, 255", // Lighter blue + }, + { + name: "accent", + value: "255, 204, 0", // Gold + }, + { + name: "background", + value: "240, 248, 255", // Alice blue + }, + { + name: "text", + value: "0, 0, 0", // Black + }, + ], + }, + { + theme: "merah", + colors: [ + { + name: "primary", + value: "204, 0, 0", // Strong red + }, + { + name: "secondary", + value: "255, 102, 102", // Lighter red + }, + { + name: "accent", + value: "255, 255, 153", // Light yellow + }, + { + name: "background", + value: "255, 240, 240", // Very light pink + }, + { + name: "text", + value: "0, 0, 0", // Black + }, + ], + }, + { + theme: "ungu", + colors: [ + { + name: "primary", + value: "75, 0, 130", // Indigo + }, + { + name: "secondary", + value: "138, 43, 226", // Blue violet + }, + { + name: "accent", + value: "255, 215, 0", // Gold + }, + { + name: "background", + value: "240, 248, 255", // Alice blue + }, + { + name: "text", + value: "0, 0, 0", // Black + }, + ], + }, + { + theme: "oren", + colors: [ + { + name: "primary", + value: "255, 103, 0", // Dark orange + }, + { + name: "secondary", + value: "255, 159, 64", // Lighter orange + }, + { + name: "accent", + value: "0, 128, 128", // Teal + }, + { + name: "background", + value: "255, 250, 240", // Floral white + }, + { + name: "text", + value: "0, 0, 0", // Black + }, + ], + }, + { + theme: "LZS", + colors: [ + { + name: "primary", + value: "0, 90, 173", // #005AAD - Blue + }, + { + name: "secondary", + value: "141, 199, 61", // #8DC73D - Green + }, + { + name: "accent", + value: "255, 242, 0", // #FFF200 - Yellow + }, + { + name: "background", + value: "245, 250, 255", // Very light blue background + }, + { + name: "text", + value: "0, 0, 0", // Black + }, + ], + }, + ]; +} diff --git a/composables/useSiteSettings.js b/composables/useSiteSettings.js new file mode 100644 index 0000000..f9fef1e --- /dev/null +++ b/composables/useSiteSettings.js @@ -0,0 +1,363 @@ +export const useSiteSettings = () => { + // Global site settings state + const siteSettings = useState('siteSettings', () => ({ + siteName: 'corradAF', + siteDescription: 'corradAF Base Project', + siteLogo: '', + siteLoginLogo: '', + siteLoadingLogo: '', + siteFavicon: '', + showSiteNameInHeader: true, + siteNameFontSize: 18, + customCSS: '', + selectedTheme: 'biasa', // Use existing theme system + customThemeFile: '', + currentFont: '', + fontSource: '', + // SEO fields + seoTitle: '', + seoDescription: '', + seoKeywords: '', + seoAuthor: '', + seoOgImage: '', + seoTwitterCard: 'summary_large_image', + seoCanonicalUrl: '', + seoRobots: 'index, follow', + seoGoogleAnalytics: '', + seoGoogleTagManager: '', + seoFacebookPixel: '' + })); + + // Loading state + const loading = useState('siteSettingsLoading', () => false); + + // Load site settings from API + const loadSiteSettings = async () => { + loading.value = true; + try { + const response = await $fetch("/api/devtool/config/site-settings", { + method: "GET", + }); + + if (response && response.data) { + siteSettings.value = { ...siteSettings.value, ...response.data }; + applyThemeSettings(); + updateGlobalMeta(); + } + } catch (error) { + console.error("Error loading site settings:", error); + } finally { + loading.value = false; + } + }; + + // Update global meta tags and SEO + const updateGlobalMeta = () => { + if (process.client) { + // Update page title - use SEO title if available + const title = siteSettings.value.seoTitle || siteSettings.value.siteName; + if (title) { + document.title = title; + + // Update meta description - use SEO description if available + let metaDescription = document.querySelector('meta[name="description"]'); + if (!metaDescription) { + metaDescription = document.createElement('meta'); + metaDescription.name = 'description'; + document.head.appendChild(metaDescription); + } + metaDescription.content = siteSettings.value.seoDescription || siteSettings.value.siteDescription || title; + + // Update keywords meta tag + if (siteSettings.value.seoKeywords) { + let keywordsMeta = document.querySelector('meta[name="keywords"]'); + if (!keywordsMeta) { + keywordsMeta = document.createElement('meta'); + keywordsMeta.name = 'keywords'; + document.head.appendChild(keywordsMeta); + } + keywordsMeta.content = siteSettings.value.seoKeywords; + } + + // Update author meta tag + if (siteSettings.value.seoAuthor) { + let authorMeta = document.querySelector('meta[name="author"]'); + if (!authorMeta) { + authorMeta = document.createElement('meta'); + authorMeta.name = 'author'; + document.head.appendChild(authorMeta); + } + authorMeta.content = siteSettings.value.seoAuthor; + } + + // Update robots meta tag + let robotsMeta = document.querySelector('meta[name="robots"]'); + if (!robotsMeta) { + robotsMeta = document.createElement('meta'); + robotsMeta.name = 'robots'; + document.head.appendChild(robotsMeta); + } + robotsMeta.content = siteSettings.value.seoRobots; + + // Update Open Graph tags + let ogTitle = document.querySelector('meta[property="og:title"]'); + if (!ogTitle) { + ogTitle = document.createElement('meta'); + ogTitle.setAttribute('property', 'og:title'); + document.head.appendChild(ogTitle); + } + ogTitle.content = title; + + let ogDescription = document.querySelector('meta[property="og:description"]'); + if (!ogDescription) { + ogDescription = document.createElement('meta'); + ogDescription.setAttribute('property', 'og:description'); + document.head.appendChild(ogDescription); + } + ogDescription.content = siteSettings.value.seoDescription || siteSettings.value.siteDescription || title; + + // Update OG image + if (siteSettings.value.seoOgImage) { + let ogImage = document.querySelector('meta[property="og:image"]'); + if (!ogImage) { + ogImage = document.createElement('meta'); + ogImage.setAttribute('property', 'og:image'); + document.head.appendChild(ogImage); + } + ogImage.content = siteSettings.value.seoOgImage; + } + + // Update Twitter Card tags + let twitterCard = document.querySelector('meta[name="twitter:card"]'); + if (!twitterCard) { + twitterCard = document.createElement('meta'); + twitterCard.name = 'twitter:card'; + document.head.appendChild(twitterCard); + } + twitterCard.content = siteSettings.value.seoTwitterCard; + + let twitterTitle = document.querySelector('meta[name="twitter:title"]'); + if (!twitterTitle) { + twitterTitle = document.createElement('meta'); + twitterTitle.name = 'twitter:title'; + document.head.appendChild(twitterTitle); + } + twitterTitle.content = title; + + let twitterDescription = document.querySelector('meta[name="twitter:description"]'); + if (!twitterDescription) { + twitterDescription = document.createElement('meta'); + twitterDescription.name = 'twitter:description'; + document.head.appendChild(twitterDescription); + } + twitterDescription.content = siteSettings.value.seoDescription || siteSettings.value.siteDescription || title; + + // Update canonical URL + if (siteSettings.value.seoCanonicalUrl) { + let canonicalLink = document.querySelector('link[rel="canonical"]'); + if (!canonicalLink) { + canonicalLink = document.createElement('link'); + canonicalLink.rel = 'canonical'; + document.head.appendChild(canonicalLink); + } + canonicalLink.href = siteSettings.value.seoCanonicalUrl; + } + } + + // Update favicon + if (siteSettings.value.siteFavicon) { + let faviconLink = document.querySelector("link[rel*='icon']"); + if (!faviconLink) { + faviconLink = document.createElement('link'); + faviconLink.rel = 'icon'; + document.head.appendChild(faviconLink); + } + faviconLink.href = siteSettings.value.siteFavicon; + + // Update apple touch icon + let appleTouchIcon = document.querySelector("link[rel='apple-touch-icon']"); + if (!appleTouchIcon) { + appleTouchIcon = document.createElement('link'); + appleTouchIcon.rel = 'apple-touch-icon'; + document.head.appendChild(appleTouchIcon); + } + appleTouchIcon.href = siteSettings.value.siteFavicon; + } + + // Apply analytics scripts + if (siteSettings.value.seoGoogleAnalytics) { + // Add Google Analytics + const script = document.createElement('script'); + script.async = true; + script.src = `https://www.googletagmanager.com/gtag/js?id=${siteSettings.value.seoGoogleAnalytics}`; + document.head.appendChild(script); + + const gtag = document.createElement('script'); + gtag.textContent = ` + window.dataLayer = window.dataLayer || []; + function gtag(){dataLayer.push(arguments);} + gtag('js', new Date()); + gtag('config', '${siteSettings.value.seoGoogleAnalytics}'); + `; + document.head.appendChild(gtag); + } + + if (siteSettings.value.seoGoogleTagManager) { + // Add Google Tag Manager + const gtmScript = document.createElement('script'); + gtmScript.textContent = ` + (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': + new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], + j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= + 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); + })(window,document,'script','dataLayer','${siteSettings.value.seoGoogleTagManager}'); + `; + document.head.appendChild(gtmScript); + } + + if (siteSettings.value.seoFacebookPixel) { + // Add Facebook Pixel + const fbScript = document.createElement('script'); + fbScript.textContent = ` + !function(f,b,e,v,n,t,s) + {if(f.fbq)return;n=f.fbq=function(){n.callMethod? + n.callMethod.apply(n,arguments):n.queue.push(arguments)}; + if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0'; + n.queue=[];t=b.createElement(e);t.async=!0; + t.src=v;s=b.getElementsByTagName(e)[0]; + s.parentNode.insertBefore(t,s)}(window, document,'script', + 'https://connect.facebook.net/en_US/fbevents.js'); + fbq('init', '${siteSettings.value.seoFacebookPixel}'); + fbq('track', 'PageView'); + `; + document.head.appendChild(fbScript); + } + } + }; + + // Apply theme settings to the document + const applyThemeSettings = () => { + if (process.client) { + // Apply selected theme using existing theme system + if (siteSettings.value.selectedTheme) { + document.documentElement.setAttribute("data-theme", siteSettings.value.selectedTheme); + localStorage.setItem("theme", siteSettings.value.selectedTheme); + } + + // Apply custom theme file if exists (append to theme.css) + if (siteSettings.value.customThemeFile) { + let customThemeElement = document.getElementById('custom-theme-file'); + if (!customThemeElement) { + customThemeElement = document.createElement('link'); + customThemeElement.id = 'custom-theme-file'; + customThemeElement.rel = 'stylesheet'; + customThemeElement.type = 'text/css'; + document.head.appendChild(customThemeElement); + } + customThemeElement.href = siteSettings.value.customThemeFile; + } else { + // Remove custom theme file if it exists + const existingThemeElement = document.getElementById('custom-theme-file'); + if (existingThemeElement) { + existingThemeElement.remove(); + } + } + + // Apply custom CSS + let customStyleElement = document.getElementById('custom-site-styles'); + if (!customStyleElement) { + customStyleElement = document.createElement('style'); + customStyleElement.id = 'custom-site-styles'; + document.head.appendChild(customStyleElement); + } + customStyleElement.textContent = siteSettings.value.customCSS || ''; + } + }; + + // Set theme (integrate with existing theme system) + const setTheme = (theme) => { + siteSettings.value.selectedTheme = theme; + applyThemeSettings(); + // Optionally save to server + updateSiteSettings(siteSettings.value); + }; + + // Get current theme + const getCurrentTheme = () => { + return siteSettings.value.selectedTheme || 'biasa'; + }; + + // Update site settings + const updateSiteSettings = async (newSettings) => { + console.log("[useSiteSettings] updateSiteSettings called with:", JSON.parse(JSON.stringify(newSettings))); + try { + const response = await $fetch("/api/devtool/config/site-settings", { + method: "POST", + body: newSettings, + }); + console.log("[useSiteSettings] API response received:", JSON.parse(JSON.stringify(response))); + + if (response && response.data) { + siteSettings.value = { ...siteSettings.value, ...response.data }; + applyThemeSettings(); + updateGlobalMeta(); + console.log("[useSiteSettings] Returning success from updateSiteSettings."); + return { success: true, data: response.data }; + } + + let errorMessage = "Update operation failed: No data returned from server."; + if (response && typeof response === 'object' && response !== null && 'message' in response) { + errorMessage = response.message; + } else if (response) { + errorMessage = "Update operation failed: Unexpected server response format on success."; + } else if (response === undefined) { + errorMessage = "Update failed: Server returned no content (e.g. 204). Treating as failure as data is expected for settings."; + console.log("[useSiteSettings] Returning failure (204 or undefined response) from updateSiteSettings."); + return { success: false, error: { message: errorMessage, details: response } }; + } + + console.log("[useSiteSettings] Returning failure (general case) from updateSiteSettings:", errorMessage); + return { success: false, error: { message: errorMessage, details: response } }; + } catch (error) { + console.error("[useSiteSettings] Error in updateSiteSettings catch block:", error); + let detailedMessage = "An unexpected error occurred during update."; + if (error.data && error.data.message) { + detailedMessage = error.data.message; + } else if (error.message) { + detailedMessage = error.message; + } + console.log("[useSiteSettings] Returning failure (catch block) from updateSiteSettings:", detailedMessage); + return { success: false, error: { message: detailedMessage, details: error } }; + } + }; + + // Add custom theme to theme.css file + const addCustomThemeToFile = async (themeName, themeCSS) => { + try { + const response = await $fetch("/api/devtool/config/add-custom-theme", { + method: "POST", + body: { + themeName, + themeCSS + } + }); + + return response; + } catch (error) { + console.error("Error adding custom theme:", error); + return { success: false, error }; + } + }; + + return { + siteSettings, + loading: readonly(loading), + loadSiteSettings, + updateSiteSettings, + applyThemeSettings, + updateGlobalMeta, + getCurrentTheme, + setTheme, + addCustomThemeToFile + }; +}; \ No newline at end of file diff --git a/composables/useVoiceReader.js b/composables/useVoiceReader.js new file mode 100644 index 0000000..4778dd1 --- /dev/null +++ b/composables/useVoiceReader.js @@ -0,0 +1,55 @@ +export function useVoiceReader() { + const isReading = ref(false); + const announceElement = ref(null); + let speechSynthesis; + let speechUtterance; + + onMounted(() => { + speechSynthesis = window.speechSynthesis; + speechUtterance = new SpeechSynthesisUtterance(); + + window.addEventListener("keydown", handleKeydown); + }); + + onUnmounted(() => { + if (speechSynthesis) { + speechSynthesis.cancel(); + } + window.removeEventListener("keydown", handleKeydown); + }); + + const toggleReading = () => { + if (!speechSynthesis) return; + + if (isReading.value) { + speechSynthesis.pause(); + isReading.value = false; + announce("Reading paused"); + } else { + const textToRead = document.body.innerText; + speechUtterance.text = textToRead; + speechSynthesis.speak(speechUtterance); + isReading.value = true; + announce("Reading started"); + } + }; + + const handleKeydown = (event) => { + if (event.ctrlKey && event.key === "r") { + event.preventDefault(); + toggleReading(); + } + }; + + const announce = (message) => { + if (announceElement.value) { + announceElement.value.textContent = message; + } + }; + + return { + isReading, + toggleReading, + announceElement, + }; +} diff --git a/docs/SITE_SETTINGS.md b/docs/SITE_SETTINGS.md new file mode 100644 index 0000000..eed0bcc --- /dev/null +++ b/docs/SITE_SETTINGS.md @@ -0,0 +1,161 @@ +# Site Settings Feature + +## Overview +The Site Settings feature allows administrators to customize the appearance and branding of the application through a user-friendly interface. All settings are globally applied across the entire application including SEO, meta tags, and visual elements. + +## Features + +### 1. Basic Information +- **Site Name**: Customize the application name displayed globally in: + - Header and sidebar + - Browser title and meta tags + - SEO and Open Graph tags + - Loading screen + - All pages and components +- **Site Description**: Set a description used for: + - SEO meta descriptions + - Open Graph descriptions + - Twitter Card descriptions +- **Theme Selection**: Choose from available themes: + - Standard themes (from themeList.js) + - Accessibility themes (from themeList2.js) + - Custom themes added to theme.css + +### 2. Branding +- **Site Logo**: Upload a custom logo displayed in: + - Header (horizontal layout) + - Sidebar (vertical layout) + - Loading screen + - Login page + - Any component using site settings +- **Favicon**: Upload a custom favicon displayed in: + - Browser tabs + - Bookmarks + - Mobile home screen icons + +### 3. Advanced Settings +- **Custom CSS**: Add custom CSS injected into document head +- **Custom Theme File**: Upload CSS files saved to `/assets/style/css/` +- **Add Custom Theme to theme.css**: Directly add themes to the main theme.css file + +## How to Access + +1. Navigate to **Pentadbiran** → **Konfigurasi** → **Site Settings** +2. Use the tabbed interface: + - **Basic Info**: Site name, description, and theme selection + - **Branding**: Logo and favicon uploads + - **Advanced**: Custom CSS and theme management +3. Use the **Live Preview** panel to see changes in real-time +4. Click **Save Changes** to apply your settings + +## Technical Implementation + +### Database Schema +The settings are stored in the `site_settings` table with the following fields: +- `siteName`, `siteDescription` +- `siteLogo`, `siteFavicon` +- `selectedTheme` - Selected theme name +- `customCSS`, `customThemeFile` +- Legacy fields maintained for backward compatibility + +### API Endpoints +- `GET /api/devtool/config/site-settings` - Retrieve current settings +- `POST /api/devtool/config/site-settings` - Update settings +- `POST /api/devtool/config/upload-file` - Upload files (logos, themes) +- `POST /api/devtool/config/add-custom-theme` - Add custom theme to theme.css + +### File Upload Locations +- **Logo and Favicon files**: Saved to `public/uploads/site-settings/` +- **Theme CSS files**: Saved to `assets/style/css/` directory +- **Custom themes**: Added directly to `assets/style/css/base/theme.css` + +### Composable +The `useSiteSettings()` composable provides: +- `siteSettings` - Reactive settings object +- `loadSiteSettings()` - Load settings from API +- `updateSiteSettings()` - Update settings +- `setTheme()` - Set theme using existing theme system +- `getCurrentTheme()` - Get current theme +- `applyThemeSettings()` - Apply theme changes to DOM +- `updateGlobalMeta()` - Update global meta tags and SEO +- `addCustomThemeToFile()` - Add custom theme to theme.css + +### Global Integration +The site settings are globally integrated across: + +#### Header Component +- Uses site settings for logo and name display +- Theme selection dropdown uses same system as site settings +- Synced with site settings theme selection + +#### Loading Component +- Uses site logo if available, fallback to default +- Displays site name in loading screen + +#### App.vue +- Global meta tags updated from site settings +- Title, description, and favicon managed globally +- Theme initialization from site settings + +#### SEO and Meta Tags +- Document title updated globally +- Meta descriptions for SEO +- Open Graph tags for social sharing +- Twitter Card tags +- Favicon and apple-touch-icon + +### Theme System Integration +- Integrates with existing theme system (themeList.js, themeList2.js) +- Theme selection in header dropdown synced with site settings +- Custom themes can be added directly to theme.css +- Backward compatibility with existing theme structure + +### Custom Theme Structure +Custom themes added to theme.css should follow this structure: +```css +html[data-theme="your-theme-name"] { + --color-primary: 255, 0, 0; + --color-secondary: 0, 255, 0; + --color-success: 0, 255, 0; + --color-info: 0, 0, 255; + --color-warning: 255, 255, 0; + --color-danger: 255, 0, 0; + /* Add your theme variables here */ +} +``` + +## Default Values +If no settings are configured, the system uses these defaults: +- Site Name: "corradAF" +- Site Description: "corradAF Base Project" +- Selected Theme: "biasa" +- Logo: Default corradAF logo +- Favicon: Default favicon + +## Migration Notes +- Legacy color fields (primaryColor, secondaryColor, etc.) are maintained for backward compatibility +- `themeMode` field is mapped to `selectedTheme` for compatibility +- Existing installations will automatically use default values +- Theme selection integrates with existing theme dropdown in header + +## Notes +- Changes are applied immediately in the preview +- Theme changes affect the entire application +- Custom CSS is injected into the document head +- Theme files are saved to `/assets/style/css/` for proper integration +- File uploads are validated for type and size +- Settings persist across browser sessions +- Site name and description updates are reflected globally and immediately +- All meta tags and SEO elements are automatically updated +- Logo changes are reflected in all components that use site settings + +### Important Notes +- Changes are applied immediately in the preview +- Theme changes affect the entire application +- Custom CSS is injected into the document head +- Theme files are saved to `/assets/style/css/` for proper integration +- File uploads are validated for type and size +- Settings persist across browser sessions +- Site name and description updates are reflected globally and immediately +- All meta tags and SEO elements are automatically updated +- Logo changes are reflected in all components that use site settings \ No newline at end of file diff --git a/ecosystem.config.js b/ecosystem.config.js new file mode 100644 index 0000000..5ec8516 --- /dev/null +++ b/ecosystem.config.js @@ -0,0 +1,13 @@ +// For running pm2 | ecosystem.config.js + +module.exports = { + apps: [ + { + name: "corradAF", + port: "3000", + exec_mode: "cluster", + instances: "max", + script: "./.output/server/index.mjs", + }, + ], +}; diff --git a/error.vue b/error.vue new file mode 100644 index 0000000..887d095 --- /dev/null +++ b/error.vue @@ -0,0 +1,70 @@ + + + diff --git a/fixes-summary.md b/fixes-summary.md new file mode 100644 index 0000000..57882b9 --- /dev/null +++ b/fixes-summary.md @@ -0,0 +1,122 @@ +# Fixes Implemented ✅ + +## 1. Header Title Not Showing Issue 🔧 + +**Problem**: Site name not appearing in header even when toggle is enabled + +**Root Cause**: Header component only showed site name in horizontal layout (`v-else` condition), but most of the time the layout is vertical + +**Fixes Applied**: +- ✅ Added site name display to both vertical AND horizontal header layouts +- ✅ Enhanced site settings loading in Header component's `onMounted` hook +- ✅ Added immediate watchers to sync toggle changes with global site settings +- ✅ Added debug info panel to troubleshoot site settings state + +**Files Modified**: +- `components/layouts/Header.vue` - Added site name to vertical layout +- `pages/devtool/config/site-settings/index.vue` - Enhanced watchers and debugging + +## 2. Button Styling Standardization 🎨 + +**Problem**: Inconsistent button styling across tabs + +**Standardization Applied**: +- ✅ All upload buttons: `variant="outline" size="sm"` +- ✅ Save Changes button: `variant="primary" size="sm"` +- ✅ Reset button: `variant="outline" size="sm"` +- ✅ Apply Font button: `variant="outline" size="sm"` (changed from primary) + +**Consistent Button Pattern**: +```vue + + + Action Text + +``` + +**Files Modified**: +- `pages/devtool/config/site-settings/index.vue` - Standardized Apply Font button + +## 3. Site Settings Description Padding 📝 + +**Problem**: "Configure your platform's branding, appearance, SEO, and functionality" text had improper padding for two lines + +**Fix Applied**: +- ✅ Added `leading-relaxed` class for better line height +- ✅ Improved text readability and spacing + +**Before**: +```vue +

Configure your platform's branding, appearance, SEO, and functionality.

+``` + +**After**: +```vue +

Configure your platform's branding, appearance, SEO, and functionality.

+``` + +**Files Modified**: +- `pages/devtool/config/site-settings/index.vue` - Enhanced info card description + +## Additional Improvements 🚀 + +### Enhanced Toggle Functionality +- ✅ Real-time toggle updates without requiring save +- ✅ Immediate sync between settings page and global state +- ✅ Both header and sidemenu respect the toggle setting + +### Debug Information +- ✅ Added debug panel in live preview showing: + - Current site name + - Toggle state (Yes/No) + - Font size in pixels +- ✅ Helps troubleshoot configuration issues + +### Header Logic Improvements +- ✅ Site name now shows in both vertical and horizontal layouts +- ✅ Proper font size scaling in sidemenu (65% of header size) +- ✅ Automatic site settings loading on component mount + +## Testing Verification ✅ + +**Header Display Test**: +1. ✅ Site name appears in vertical layout (default) +2. ✅ Site name appears in horizontal layout +3. ✅ Toggle OFF hides name in both layouts +4. ✅ Toggle ON shows name in both layouts +5. ✅ Font size applies correctly +6. ✅ Changes are immediate + +**Button Consistency Test**: +1. ✅ All upload buttons use outline variant +2. ✅ Save button uses primary variant +3. ✅ Reset button uses outline variant +4. ✅ All buttons have consistent size (sm) +5. ✅ Icons are properly positioned with mr-1 + +**Description Styling Test**: +1. ✅ Text has proper line height for readability +2. ✅ Padding appears natural for two-line content +3. ✅ Dark mode compatibility maintained + +## Files Changed Summary 📁 + +1. **components/layouts/Header.vue** + - Added site name to vertical layout + - Enhanced site settings loading + - Improved responsive layout handling + +2. **pages/devtool/config/site-settings/index.vue** + - Standardized button variants and sizes + - Added debug information panel + - Enhanced toggle watching and real-time updates + - Improved description line height + - Fixed immediate change application + +## Next Steps 🎯 + +1. Test the site settings page at `/devtool/config/site-settings` +2. Verify header displays site name when toggle is enabled +3. Check that all buttons follow consistent styling +4. Confirm description text has proper spacing +5. Use debug panel to troubleshoot any remaining issues \ No newline at end of file diff --git a/formkit.config.js b/formkit.config.js new file mode 100644 index 0000000..9d4b5a5 --- /dev/null +++ b/formkit.config.js @@ -0,0 +1,49 @@ +import { generateClasses } from "@formkit/themes"; +import defaultTheme from "@/assets/js/formkit-theme.js"; +import customInput from "@/assets/js/formkit-custom.js"; + +// ----------------- Addons --------------------------- // + +// https://formkit.com/plugins/auto-animate +import { createAutoAnimatePlugin } from "@formkit/addons"; + +// https://formkit.com/plugins/floating-labels +import { createFloatingLabelsPlugin } from "@formkit/addons"; +import "@formkit/addons/css/floatingLabels"; + +// https://formkit.com/plugins/multi-step +import { createMultiStepPlugin } from "@formkit/addons"; +import "@formkit/addons/css/multistep"; + +// https://formkit.com/plugins/auto-height-textarea +import { createAutoHeightTextareaPlugin } from "@formkit/addons"; + +// https://formkit.com/plugins/local-storage +import { createLocalStoragePlugin } from "@formkit/addons"; + +export default { + plugins: [ + createFloatingLabelsPlugin({ + useAsDefault: false, // defaults to false + }), + createAutoAnimatePlugin({ + // optional config + }), + createMultiStepPlugin(), + createAutoHeightTextareaPlugin(), + createLocalStoragePlugin({ + // plugin defaults: + prefix: "formkit", + key: undefined, + control: undefined, + maxAge: 3600000, // 1 hour + debounce: 200, + beforeSave: undefined, + beforeLoad: undefined, + }), + ], + config: { + classes: generateClasses(defaultTheme), + }, + inputs: customInput, +}; diff --git a/layouts/default.vue b/layouts/default.vue new file mode 100644 index 0000000..0f04a1d --- /dev/null +++ b/layouts/default.vue @@ -0,0 +1,11 @@ + + + diff --git a/layouts/empty.vue b/layouts/empty.vue new file mode 100644 index 0000000..8bc6805 --- /dev/null +++ b/layouts/empty.vue @@ -0,0 +1,7 @@ + + + diff --git a/middleware/auth.js b/middleware/auth.js new file mode 100644 index 0000000..4a124c6 --- /dev/null +++ b/middleware/auth.js @@ -0,0 +1,26 @@ +export default defineNuxtRouteMiddleware(async (to, from) => { + const { $swal } = useNuxtApp(); + + if (process.client) { + // Validate every request to every page + const { data: validateUser } = await useFetch("/api/auth/validate", { + method: "GET", + }); + + // If user is not logged in, redirect to logout page + if (validateUser.value.statusCode === 401) { + $swal + .fire({ + title: "Session Expired", + text: "Your session has expired. Please login again.", + icon: "warning", + confirmButtonText: "OK", + }) + .then(() => { + return window.location.replace("/logout"); + }); + } + + return true; + } +}); diff --git a/middleware/dashboard.js b/middleware/dashboard.js new file mode 100644 index 0000000..08091f2 --- /dev/null +++ b/middleware/dashboard.js @@ -0,0 +1,11 @@ +export default defineNuxtRouteMiddleware(async (to, from) => { + // Validate every request to every page + const { data: validateUser } = await useFetch("/api/auth/validate", { + method: "GET", + }); + + // If user is not logged in, redirect to logout page + if (validateUser.value.statusCode === 401) return true; + + return navigateTo("/dashboard"); +}); diff --git a/middleware/forbidden.js b/middleware/forbidden.js new file mode 100644 index 0000000..da4fe40 --- /dev/null +++ b/middleware/forbidden.js @@ -0,0 +1,4 @@ +export default defineNuxtRouteMiddleware(async (to, from) => { + // Throw error to page 404 not found + throw new Error("Forbidden"); +}); diff --git a/middleware/main.js b/middleware/main.js new file mode 100644 index 0000000..b70e2fa --- /dev/null +++ b/middleware/main.js @@ -0,0 +1,3 @@ +export default defineNuxtRouteMiddleware((to, from) => { + return navigateTo("/login"); +}); \ No newline at end of file diff --git a/navigation/index.js b/navigation/index.js new file mode 100644 index 0000000..9a543d0 --- /dev/null +++ b/navigation/index.js @@ -0,0 +1,100 @@ +export default [ + { + "header": "Utama", + "description": "", + "child": [ + { + "title": "Dashboard", + "path": "/dashboard", + "icon": "ic:outline-dashboard", + "child": [], + "meta": {} + }, + { + "title": "Notes", + "path": "/notes", + "icon": "", + "child": [] + }, + { + "title": "Metabase", + "path": "/metabase", + "icon": "", + "child": [] + } + ], + "meta": {} + }, + { + "header": "Pentadbiran", + "description": "Urus aplikasi anda", + "child": [ + { + "title": "Konfigurasi", + "icon": "ic:outline-settings", + "child": [ + { + "title": "Persekitaran", + "path": "/devtool/config/environment" + }, + { + "title": "Site Settings", + "path": "/devtool/config/site-settings" + } + ] + }, + { + "title": "Penyunting Menu", + "icon": "ci:menu-alt-03", + "path": "/devtool/menu-editor", + "child": [] + }, + { + "title": "Urus Pengguna", + "path": "/devtool/user-management", + "icon": "ph:user-circle-gear", + "child": [ + { + "title": "Senarai Pengguna", + "path": "/devtool/user-management/user", + "icon": "", + "child": [] + }, + { + "title": "Senarai Peranan", + "path": "/devtool/user-management/role", + "icon": "", + "child": [] + } + ] + }, + { + "title": "Kandungan", + "icon": "mdi:pencil-ruler", + "child": [ + { + "title": "Penyunting", + "path": "/devtool/content-editor" + }, + { + "title": "Templat", + "path": "/devtool/content-editor/template" + } + ] + }, + { + "title": "Penyunting API", + "path": "/devtool/api-editor", + "icon": "material-symbols:api-rounded", + "child": [] + } + ], + "meta": { + "auth": { + "role": [ + "Developer" + ] + } + } + } +] \ No newline at end of file diff --git a/nuxt.config.js b/nuxt.config.js new file mode 100644 index 0000000..6071dd0 --- /dev/null +++ b/nuxt.config.js @@ -0,0 +1,552 @@ +// https://v3.nuxtjs.org/api/configuration/nuxt.config +export default defineNuxtConfig({ + runtimeConfig: { + auth: { + secretAccess: process.env.NUXT_ACCESS_TOKEN_SECRET, + secretRefresh: process.env.NUXT_REFRESH_TOKEN_SECRET, + }, + metabase: { + secretKey: process.env.NUXT_METABASE_SECRET_KEY || "c98a5b005450e699b6d420f46e0062912ac75268716f1298c11d8bb11c291eb0", + siteUrl: process.env.NUXT_METABASE_SITE_URL || "http://mb.sena.my", + }, + }, + modules: [ + "@nuxtjs/tailwindcss", + "@formkit/nuxt", + "@vite-pwa/nuxt", + "@vueuse/nuxt", + "floating-vue/nuxt", + "@pinia/nuxt", + "@pinia-plugin-persistedstate/nuxt", + "nuxt-security", + "nuxt-typed-router", + "nuxt-icon", + "@davestewart/nuxt-scrollbar", + ], + app: { + pageTransition: { name: "page", mode: "out-in" }, + head: { + viewport: "width=device-width,initial-scale=1", + title: "corradAF", + titleTemplate: "%s - corradAF", + meta: [ + { name: "viewport", content: "width=device-width, initial-scale=1" }, + { name: "description", content: "corradAF Admin Portal" }, + { name: "apple-mobile-web-app-title", content: "corradAF" }, + ], + }, + }, + css: ["~/assets/style/scss/main.scss"], + tailwindcss: { + cssPath: "~/assets/style/css/tailwind.css", + configPath: "tailwind.config", + exposeConfig: false, + config: {}, + injectPosition: 0, + viewer: false, + }, + formkit: { + defaultConfig: true, + }, + pwa: { + registerType: "autoUpdate", + workbox: { + navigateFallback: "/", + globPatterns: [ + "**/*.{js,json,css,html,txt,svg,png,ico,webp,woff,woff2,ttf,eot,otf,wasm}", + ], + }, + devOptions: { + enabled: false, + type: "module", + }, + meta: { + name: "corradAF", + author: "Corrad Software", + description: "corradAF Admin Portal", + theme_color: "#f3586a", + lang: "en", + }, + manifest: { + name: "corradAF", + short_name: "corradAF", + description: "corradAF Admin Portal", + start_url: "/", + display: "standalone", + theme_color: "#00A59A", + background_color: "#FAFAFA", + scope: "./", + icons: [ + { + src: "icons/windows11/SmallTile.scale-100.png", + sizes: "71x71", + }, + { + src: "icons/windows11/SmallTile.scale-125.png", + sizes: "89x89", + }, + { + src: "icons/windows11/SmallTile.scale-150.png", + sizes: "107x107", + }, + { + src: "icons/windows11/SmallTile.scale-200.png", + sizes: "142x142", + }, + { + src: "icons/windows11/SmallTile.scale-400.png", + sizes: "284x284", + }, + { + src: "icons/windows11/Square150x150Logo.scale-100.png", + sizes: "150x150", + }, + { + src: "icons/windows11/Square150x150Logo.scale-125.png", + sizes: "188x188", + }, + { + src: "icons/windows11/Square150x150Logo.scale-150.png", + sizes: "225x225", + }, + { + src: "icons/windows11/Square150x150Logo.scale-200.png", + sizes: "300x300", + }, + { + src: "icons/windows11/Square150x150Logo.scale-400.png", + sizes: "600x600", + }, + { + src: "icons/windows11/Wide310x150Logo.scale-100.png", + sizes: "310x150", + }, + { + src: "icons/windows11/Wide310x150Logo.scale-125.png", + sizes: "388x188", + }, + { + src: "icons/windows11/Wide310x150Logo.scale-150.png", + sizes: "465x225", + }, + { + src: "icons/windows11/Wide310x150Logo.scale-200.png", + sizes: "620x300", + }, + { + src: "icons/windows11/Wide310x150Logo.scale-400.png", + sizes: "1240x600", + }, + { + src: "icons/windows11/LargeTile.scale-100.png", + sizes: "310x310", + }, + { + src: "icons/windows11/LargeTile.scale-125.png", + sizes: "388x388", + }, + { + src: "icons/windows11/LargeTile.scale-150.png", + sizes: "465x465", + }, + { + src: "icons/windows11/LargeTile.scale-200.png", + sizes: "620x620", + }, + { + src: "icons/windows11/LargeTile.scale-400.png", + sizes: "1240x1240", + }, + { + src: "icons/windows11/Square44x44Logo.scale-100.png", + sizes: "44x44", + }, + { + src: "icons/windows11/Square44x44Logo.scale-125.png", + sizes: "55x55", + }, + { + src: "icons/windows11/Square44x44Logo.scale-150.png", + sizes: "66x66", + }, + { + src: "icons/windows11/Square44x44Logo.scale-200.png", + sizes: "88x88", + }, + { + src: "icons/windows11/Square44x44Logo.scale-400.png", + sizes: "176x176", + }, + { + src: "icons/windows11/StoreLogo.scale-100.png", + sizes: "50x50", + }, + { + src: "icons/windows11/StoreLogo.scale-125.png", + sizes: "63x63", + }, + { + src: "icons/windows11/StoreLogo.scale-150.png", + sizes: "75x75", + }, + { + src: "icons/windows11/StoreLogo.scale-200.png", + sizes: "100x100", + }, + { + src: "icons/windows11/StoreLogo.scale-400.png", + sizes: "200x200", + }, + { + src: "icons/windows11/SplashScreen.scale-100.png", + sizes: "620x300", + }, + { + src: "icons/windows11/SplashScreen.scale-125.png", + sizes: "775x375", + }, + { + src: "icons/windows11/SplashScreen.scale-150.png", + sizes: "930x450", + }, + { + src: "icons/windows11/SplashScreen.scale-200.png", + sizes: "1240x600", + }, + { + src: "icons/windows11/SplashScreen.scale-400.png", + sizes: "2480x1200", + }, + { + src: "icons/windows11/Square44x44Logo.targetsize-16.png", + sizes: "16x16", + }, + { + src: "icons/windows11/Square44x44Logo.targetsize-20.png", + sizes: "20x20", + }, + { + src: "icons/windows11/Square44x44Logo.targetsize-24.png", + sizes: "24x24", + }, + { + src: "icons/windows11/Square44x44Logo.targetsize-30.png", + sizes: "30x30", + }, + { + src: "icons/windows11/Square44x44Logo.targetsize-32.png", + sizes: "32x32", + }, + { + src: "icons/windows11/Square44x44Logo.targetsize-36.png", + sizes: "36x36", + }, + { + src: "icons/windows11/Square44x44Logo.targetsize-40.png", + sizes: "40x40", + }, + { + src: "icons/windows11/Square44x44Logo.targetsize-44.png", + sizes: "44x44", + }, + { + src: "icons/windows11/Square44x44Logo.targetsize-48.png", + sizes: "48x48", + }, + { + src: "icons/windows11/Square44x44Logo.targetsize-60.png", + sizes: "60x60", + }, + { + src: "icons/windows11/Square44x44Logo.targetsize-64.png", + sizes: "64x64", + }, + { + src: "icons/windows11/Square44x44Logo.targetsize-72.png", + sizes: "72x72", + }, + { + src: "icons/windows11/Square44x44Logo.targetsize-80.png", + sizes: "80x80", + }, + { + src: "icons/windows11/Square44x44Logo.targetsize-96.png", + sizes: "96x96", + }, + { + src: "icons/windows11/Square44x44Logo.targetsize-256.png", + sizes: "256x256", + }, + { + src: "icons/windows11/Square44x44Logo.altform-unplated_targetsize-16.png", + sizes: "16x16", + }, + { + src: "icons/windows11/Square44x44Logo.altform-unplated_targetsize-20.png", + sizes: "20x20", + }, + { + src: "icons/windows11/Square44x44Logo.altform-unplated_targetsize-24.png", + sizes: "24x24", + }, + { + src: "icons/windows11/Square44x44Logo.altform-unplated_targetsize-30.png", + sizes: "30x30", + }, + { + src: "icons/windows11/Square44x44Logo.altform-unplated_targetsize-32.png", + sizes: "32x32", + }, + { + src: "icons/windows11/Square44x44Logo.altform-unplated_targetsize-36.png", + sizes: "36x36", + }, + { + src: "icons/windows11/Square44x44Logo.altform-unplated_targetsize-40.png", + sizes: "40x40", + }, + { + src: "icons/windows11/Square44x44Logo.altform-unplated_targetsize-44.png", + sizes: "44x44", + }, + { + src: "icons/windows11/Square44x44Logo.altform-unplated_targetsize-48.png", + sizes: "48x48", + }, + { + src: "icons/windows11/Square44x44Logo.altform-unplated_targetsize-60.png", + sizes: "60x60", + }, + { + src: "icons/windows11/Square44x44Logo.altform-unplated_targetsize-64.png", + sizes: "64x64", + }, + { + src: "icons/windows11/Square44x44Logo.altform-unplated_targetsize-72.png", + sizes: "72x72", + }, + { + src: "icons/windows11/Square44x44Logo.altform-unplated_targetsize-80.png", + sizes: "80x80", + }, + { + src: "icons/windows11/Square44x44Logo.altform-unplated_targetsize-96.png", + sizes: "96x96", + }, + { + src: "icons/windows11/Square44x44Logo.altform-unplated_targetsize-256.png", + sizes: "256x256", + }, + { + src: "icons/windows11/Square44x44Logo.altform-lightunplated_targetsize-16.png", + sizes: "16x16", + }, + { + src: "icons/windows11/Square44x44Logo.altform-lightunplated_targetsize-20.png", + sizes: "20x20", + }, + { + src: "icons/windows11/Square44x44Logo.altform-lightunplated_targetsize-24.png", + sizes: "24x24", + }, + { + src: "icons/windows11/Square44x44Logo.altform-lightunplated_targetsize-30.png", + sizes: "30x30", + }, + { + src: "icons/windows11/Square44x44Logo.altform-lightunplated_targetsize-32.png", + sizes: "32x32", + }, + { + src: "icons/windows11/Square44x44Logo.altform-lightunplated_targetsize-36.png", + sizes: "36x36", + }, + { + src: "icons/windows11/Square44x44Logo.altform-lightunplated_targetsize-40.png", + sizes: "40x40", + }, + { + src: "icons/windows11/Square44x44Logo.altform-lightunplated_targetsize-44.png", + sizes: "44x44", + }, + { + src: "icons/windows11/Square44x44Logo.altform-lightunplated_targetsize-48.png", + sizes: "48x48", + }, + { + src: "icons/windows11/Square44x44Logo.altform-lightunplated_targetsize-60.png", + sizes: "60x60", + }, + { + src: "icons/windows11/Square44x44Logo.altform-lightunplated_targetsize-64.png", + sizes: "64x64", + }, + { + src: "icons/windows11/Square44x44Logo.altform-lightunplated_targetsize-72.png", + sizes: "72x72", + }, + { + src: "icons/windows11/Square44x44Logo.altform-lightunplated_targetsize-80.png", + sizes: "80x80", + }, + { + src: "icons/windows11/Square44x44Logo.altform-lightunplated_targetsize-96.png", + sizes: "96x96", + }, + { + src: "icons/windows11/Square44x44Logo.altform-lightunplated_targetsize-256.png", + sizes: "256x256", + }, + { + src: "icons/android/android-launchericon-512-512.png", + sizes: "512x512", + }, + { + src: "icons/android/android-launchericon-192-192.png", + sizes: "192x192", + }, + { + src: "icons/android/android-launchericon-144-144.png", + sizes: "144x144", + }, + { + src: "icons/android/android-launchericon-96-96.png", + sizes: "96x96", + }, + { + src: "icons/android/android-launchericon-72-72.png", + sizes: "72x72", + }, + { + src: "icons/android/android-launchericon-48-48.png", + sizes: "48x48", + }, + { + src: "icons/ios/16.png", + sizes: "16x16", + }, + { + src: "icons/ios/20.png", + sizes: "20x20", + }, + { + src: "icons/ios/29.png", + sizes: "29x29", + }, + { + src: "icons/ios/32.png", + sizes: "32x32", + }, + { + src: "icons/ios/40.png", + sizes: "40x40", + }, + { + src: "icons/ios/50.png", + sizes: "50x50", + }, + { + src: "icons/ios/57.png", + sizes: "57x57", + }, + { + src: "icons/ios/58.png", + sizes: "58x58", + }, + { + src: "icons/ios/60.png", + sizes: "60x60", + }, + { + src: "icons/ios/64.png", + sizes: "64x64", + }, + { + src: "icons/ios/72.png", + sizes: "72x72", + }, + { + src: "icons/ios/76.png", + sizes: "76x76", + }, + { + src: "icons/ios/80.png", + sizes: "80x80", + }, + { + src: "icons/ios/87.png", + sizes: "87x87", + }, + { + src: "icons/ios/100.png", + sizes: "100x100", + }, + { + src: "icons/ios/114.png", + sizes: "114x114", + }, + { + src: "icons/ios/120.png", + sizes: "120x120", + }, + { + src: "icons/ios/128.png", + sizes: "128x128", + }, + { + src: "icons/ios/144.png", + sizes: "144x144", + }, + { + src: "icons/ios/152.png", + sizes: "152x152", + }, + { + src: "icons/ios/167.png", + sizes: "167x167", + }, + { + src: "icons/ios/180.png", + sizes: "180x180", + }, + { + src: "icons/ios/192.png", + sizes: "192x192", + }, + { + src: "icons/ios/256.png", + sizes: "256x256", + }, + { + src: "icons/ios/512.png", + sizes: "512x512", + }, + { + src: "icons/ios/1024.png", + sizes: "1024x1024", + }, + ], + }, + }, + security: { + // GLOBAL SECURITY OPTIONS + + // Allow 200 requests per hour (the Twitter search limit). Also understands + // 'second', 'minute', 'day', or a number of milliseconds + rateLimiter: { + tokensPerInterval: 200, + interval: "minute", + fireImmediately: false, + throwError: true, // optional + }, + headers: false, + }, + routeRules: { + "/api/devtool/**": { + security: { + xssValidator: false, + requestSizeLimiter: false, + }, + }, + }, +}); diff --git a/package.json b/package.json new file mode 100644 index 0000000..4575231 --- /dev/null +++ b/package.json @@ -0,0 +1,85 @@ +{ + "private": true, + "scripts": { + "build": "nuxt build", + "dev": "nuxt dev", + "generate": "nuxt generate", + "preview": "nuxt preview", + "postinstall": "nuxt prepare", + "prisma": "npx prisma db pull && npx prisma generate && nuxt dev" + }, + "devDependencies": { + "@nuxtjs/tailwindcss": "^6.8.0", + "@pinia-plugin-persistedstate/nuxt": "^1.1.1", + "@vite-pwa/nuxt": "^0.1.0", + "eslint": "^8.39.0", + "eslint-plugin-vue": "^9.16.1", + "nuxt": "^3.6.5", + "nuxt-icon": "^0.1.7", + "nuxt-security": "^0.13.0", + "nuxt-typed-router": "^3.2.5", + "postcss-import": "^15.1.0" + }, + "dependencies": { + "@babel/eslint-parser": "^7.19.1", + "@codemirror/lang-html": "^6.4.3", + "@codemirror/lang-javascript": "^6.1.6", + "@codemirror/lang-vue": "^0.1.1", + "@codemirror/theme-one-dark": "^6.1.2", + "@davestewart/nuxt-scrollbar": "^1.0.0", + "@formkit/addons": "^1.0.0", + "@formkit/auto-animate": "^0.7.0", + "@formkit/nuxt": "^1.0.0", + "@formkit/pro": "^0.115.3", + "@formkit/themes": "^1.0.0", + "@fullcalendar/core": "^5.11.3", + "@fullcalendar/daygrid": "^5.11.3", + "@fullcalendar/interaction": "^5.11.3", + "@fullcalendar/list": "^5.11.3", + "@fullcalendar/luxon2": "^5.11.3", + "@fullcalendar/scrollgrid": "^5.11.3", + "@fullcalendar/timegrid": "^5.11.3", + "@fullcalendar/vue3": "^5.11.2", + "@kiwicom/eslint-config": "^12.7.3", + "@pinia/nuxt": "^0.4.11", + "@popperjs/core": "^2.11.8", + "@prisma/client": "^5.1.1", + "@shimyshack/uid": "^0.1.7", + "@sweetalert2/theme-dark": "^5.0.14", + "@vueup/vue-quill": "^1.0.0", + "@vueuse/core": "^9.5.0", + "@vueuse/nuxt": "^9.5.0", + "apexcharts": "^3.36.0", + "chart.js": "^3.9.1", + "codemirror": "^6.0.1", + "cross-env": "^7.0.3", + "crypto-js": "^4.1.1", + "floating-vue": "^2.0.0-beta.24", + "jsonwebtoken": "^8.5.1", + "jspdf": "^2.5.1", + "luxon": "^3.1.0", + "maska": "^1.5.0", + "pinia": "^2.1.6", + "prettier": "^2.8.1", + "prisma": "^5.1.1", + "sass": "^1.62.0", + "swiper": "^8.4.4", + "thememirror": "^2.0.1", + "uuid": "^10.0.0", + "v-calendar": "^3.0.3", + "vue-chart-3": "^3.1.8", + "vue-code-highlight": "^0.7.8", + "vue-codemirror": "^6.1.1", + "vue-country-flag-next": "^2.3.2", + "vue-fullscreen": "^3.1.1", + "vue-select": "^4.0.0-beta.5", + "vue-sweetalert2": "^5.0.5", + "vue-toastification": "^2.0.0-rc.5", + "vue-window-size": "^1.0.8", + "vue3-apexcharts": "^1.4.1", + "vue3-click-away": "^1.2.4", + "vue3-dropzone": "^2.0.1", + "vue3-recaptcha-v2": "^2.0.2", + "vuedraggable": "^4.1.0" + } +} diff --git a/pages/dashboard/index.vue b/pages/dashboard/index.vue new file mode 100644 index 0000000..361238f --- /dev/null +++ b/pages/dashboard/index.vue @@ -0,0 +1,338 @@ + + + diff --git a/pages/devtool/api-editor/code/index.vue b/pages/devtool/api-editor/code/index.vue new file mode 100644 index 0000000..d7a2ee0 --- /dev/null +++ b/pages/devtool/api-editor/code/index.vue @@ -0,0 +1,244 @@ + + + + + diff --git a/pages/devtool/api-editor/index.vue b/pages/devtool/api-editor/index.vue new file mode 100644 index 0000000..de8d722 --- /dev/null +++ b/pages/devtool/api-editor/index.vue @@ -0,0 +1,327 @@ + + \ No newline at end of file diff --git a/pages/devtool/code-playground/index.js b/pages/devtool/code-playground/index.js new file mode 100644 index 0000000..fc98745 --- /dev/null +++ b/pages/devtool/code-playground/index.js @@ -0,0 +1,35 @@ +import RsAlert from "../../../components/RsAlert.vue"; +import RsBadge from "../../../components/RsBadge.vue"; +import RsButton from "../../../components/RsButton.vue"; +import RsCard from "../../../components/RsCard.vue"; +import RsCodeMirror from "../../../components/RsCodeMirror.vue"; +import RsCollapse from "../../../components/RsCollapse.vue"; +import RsCollapseItem from "../../../components/RsCollapseItem.vue"; +import RsDropdown from "../../../components/RsDropdown.vue"; +import RsDropdownItem from "../../../components/RsDropdownItem.vue"; +import RsFieldset from "../../../components/RsFieldset.vue"; +import RsModal from "../../../components/RsModal.vue"; +import RsProgressBar from "../../../components/RsProgressBar.vue"; +import RsTab from "../../../components/RsTab.vue"; +import RsTabItem from "../../../components/RsTabItem.vue"; +import RsTable from "../../../components/RsTable.vue"; +import RsWizard from "../../../components/RsWizard.vue"; + +export { + RsAlert, + RsBadge, + RsButton, + RsCard, + RsCodeMirror, + RsCollapse, + RsCollapseItem, + RsDropdown, + RsDropdownItem, + RsFieldset, + RsModal, + RsProgressBar, + RsTab, + RsTabItem, + RsTable, + RsWizard, +}; diff --git a/pages/devtool/code-playground/index.vue b/pages/devtool/code-playground/index.vue new file mode 100644 index 0000000..f31e8e2 --- /dev/null +++ b/pages/devtool/code-playground/index.vue @@ -0,0 +1,422 @@ + + + + diff --git a/pages/devtool/config/application-log/index.vue b/pages/devtool/config/application-log/index.vue new file mode 100644 index 0000000..677f24b --- /dev/null +++ b/pages/devtool/config/application-log/index.vue @@ -0,0 +1,7 @@ + + + + + diff --git a/pages/devtool/config/environment/index.vue b/pages/devtool/config/environment/index.vue new file mode 100644 index 0000000..77bcd0a --- /dev/null +++ b/pages/devtool/config/environment/index.vue @@ -0,0 +1,27 @@ + + + diff --git a/pages/devtool/config/index.vue b/pages/devtool/config/index.vue new file mode 100644 index 0000000..677f24b --- /dev/null +++ b/pages/devtool/config/index.vue @@ -0,0 +1,7 @@ + + + + + diff --git a/pages/devtool/config/site-settings/index.vue b/pages/devtool/config/site-settings/index.vue new file mode 100644 index 0000000..d22b6e4 --- /dev/null +++ b/pages/devtool/config/site-settings/index.vue @@ -0,0 +1,1108 @@ + + + + + \ No newline at end of file diff --git a/pages/devtool/content-editor/code/index.vue b/pages/devtool/content-editor/code/index.vue new file mode 100644 index 0000000..223aea6 --- /dev/null +++ b/pages/devtool/content-editor/code/index.vue @@ -0,0 +1,226 @@ + + + diff --git a/pages/devtool/content-editor/index.vue b/pages/devtool/content-editor/index.vue new file mode 100644 index 0000000..884e783 --- /dev/null +++ b/pages/devtool/content-editor/index.vue @@ -0,0 +1,247 @@ + + + + diff --git a/pages/devtool/content-editor/template/index.vue b/pages/devtool/content-editor/template/index.vue new file mode 100644 index 0000000..8b18c25 --- /dev/null +++ b/pages/devtool/content-editor/template/index.vue @@ -0,0 +1,127 @@ + + + + + diff --git a/pages/devtool/content-editor/template/view/[id]/index.vue b/pages/devtool/content-editor/template/view/[id]/index.vue new file mode 100644 index 0000000..e332bda --- /dev/null +++ b/pages/devtool/content-editor/template/view/[id]/index.vue @@ -0,0 +1,33 @@ + + + diff --git a/pages/devtool/menu-editor/index.vue b/pages/devtool/menu-editor/index.vue new file mode 100644 index 0000000..b27d732 --- /dev/null +++ b/pages/devtool/menu-editor/index.vue @@ -0,0 +1,761 @@ + + + \ No newline at end of file diff --git a/pages/devtool/orm/index.vue b/pages/devtool/orm/index.vue new file mode 100644 index 0000000..7ab6ae1 --- /dev/null +++ b/pages/devtool/orm/index.vue @@ -0,0 +1,169 @@ + + + diff --git a/pages/devtool/orm/table/create/index.vue b/pages/devtool/orm/table/create/index.vue new file mode 100644 index 0000000..13bdac5 --- /dev/null +++ b/pages/devtool/orm/table/create/index.vue @@ -0,0 +1,315 @@ + + + diff --git a/pages/devtool/orm/table/modify/[table].vue b/pages/devtool/orm/table/modify/[table].vue new file mode 100644 index 0000000..b2e8855 --- /dev/null +++ b/pages/devtool/orm/table/modify/[table].vue @@ -0,0 +1,360 @@ + + + diff --git a/pages/devtool/orm/view/[table]/index.vue b/pages/devtool/orm/view/[table]/index.vue new file mode 100644 index 0000000..6d984cc --- /dev/null +++ b/pages/devtool/orm/view/[table]/index.vue @@ -0,0 +1,79 @@ + + + diff --git a/pages/devtool/user-management/role/index.vue b/pages/devtool/user-management/role/index.vue new file mode 100644 index 0000000..74212ef --- /dev/null +++ b/pages/devtool/user-management/role/index.vue @@ -0,0 +1,499 @@ + + diff --git a/pages/devtool/user-management/user/index.vue b/pages/devtool/user-management/user/index.vue new file mode 100644 index 0000000..b157201 --- /dev/null +++ b/pages/devtool/user-management/user/index.vue @@ -0,0 +1,497 @@ + + diff --git a/pages/forgot-password/index.vue b/pages/forgot-password/index.vue new file mode 100644 index 0000000..445bad3 --- /dev/null +++ b/pages/forgot-password/index.vue @@ -0,0 +1,96 @@ + + + + + diff --git a/pages/index.vue b/pages/index.vue new file mode 100644 index 0000000..0cf6a06 --- /dev/null +++ b/pages/index.vue @@ -0,0 +1,10 @@ + + + diff --git a/pages/login/index.vue b/pages/login/index.vue new file mode 100644 index 0000000..d7090d5 --- /dev/null +++ b/pages/login/index.vue @@ -0,0 +1,201 @@ + + + diff --git a/pages/logout/index.vue b/pages/logout/index.vue new file mode 100644 index 0000000..6bc920b --- /dev/null +++ b/pages/logout/index.vue @@ -0,0 +1,28 @@ + + + diff --git a/pages/metabase/index.vue b/pages/metabase/index.vue new file mode 100644 index 0000000..4be790e --- /dev/null +++ b/pages/metabase/index.vue @@ -0,0 +1,49 @@ +