nuxt-glorious 0.7.9-7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/README.md +29 -0
  2. package/dist/module.cjs +5 -0
  3. package/dist/module.d.mts +7 -0
  4. package/dist/module.d.ts +7 -0
  5. package/dist/module.json +5 -0
  6. package/dist/module.mjs +93 -0
  7. package/dist/runtime/assets/icons/glorious-arrow.svg +3 -0
  8. package/dist/runtime/assets/icons/glorious-check-fill.svg +10 -0
  9. package/dist/runtime/assets/icons/glorious-x.svg +3 -0
  10. package/dist/runtime/assets/style/components/buttons.css +88 -0
  11. package/dist/runtime/assets/style/components/drawer.css +55 -0
  12. package/dist/runtime/assets/style/components/dropdown.css +18 -0
  13. package/dist/runtime/assets/style/components/editor.css +4 -0
  14. package/dist/runtime/assets/style/components/file.css +65 -0
  15. package/dist/runtime/assets/style/components/input.css +91 -0
  16. package/dist/runtime/assets/style/components/modal.css +46 -0
  17. package/dist/runtime/assets/style/components/paginate.css +17 -0
  18. package/dist/runtime/assets/style/components/select.css +54 -0
  19. package/dist/runtime/assets/style/components/tab.css +9 -0
  20. package/dist/runtime/assets/style/components/textarea.css +64 -0
  21. package/dist/runtime/components/G/Breadcrump.vue +41 -0
  22. package/dist/runtime/components/G/Button.vue +163 -0
  23. package/dist/runtime/components/G/CountDown.vue +65 -0
  24. package/dist/runtime/components/G/Drawer.vue +80 -0
  25. package/dist/runtime/components/G/Dropdown.vue +63 -0
  26. package/dist/runtime/components/G/File.vue +142 -0
  27. package/dist/runtime/components/G/Icon/index.vue +142 -0
  28. package/dist/runtime/components/G/Input.vue +269 -0
  29. package/dist/runtime/components/G/IntersectionObserve.vue +22 -0
  30. package/dist/runtime/components/G/Loading.vue +35 -0
  31. package/dist/runtime/components/G/Modal.vue +92 -0
  32. package/dist/runtime/components/G/Paginate.vue +130 -0
  33. package/dist/runtime/components/G/Radio.vue +38 -0
  34. package/dist/runtime/components/G/Select.vue +145 -0
  35. package/dist/runtime/components/G/Tab.vue +57 -0
  36. package/dist/runtime/components/G/Wizard.vue +123 -0
  37. package/dist/runtime/components/G/textarea.vue +141 -0
  38. package/dist/runtime/composables/useGloriousAppSetting.d.ts +11 -0
  39. package/dist/runtime/composables/useGloriousAppSetting.mjs +37 -0
  40. package/dist/runtime/composables/useGloriousFetch.d.ts +13 -0
  41. package/dist/runtime/composables/useGloriousFetch.mjs +107 -0
  42. package/dist/runtime/composables/useGloriousHead.d.ts +8 -0
  43. package/dist/runtime/composables/useGloriousHead.mjs +33 -0
  44. package/dist/runtime/middlewares/Auth.d.ts +2 -0
  45. package/dist/runtime/middlewares/Auth.mjs +37 -0
  46. package/dist/runtime/middlewares/AuthStrategy.d.ts +2 -0
  47. package/dist/runtime/middlewares/AuthStrategy.mjs +17 -0
  48. package/dist/runtime/plugins/Drawer.d.ts +2 -0
  49. package/dist/runtime/plugins/Drawer.mjs +35 -0
  50. package/dist/runtime/plugins/Modal.d.ts +2 -0
  51. package/dist/runtime/plugins/Modal.mjs +38 -0
  52. package/dist/runtime/plugins/TailwindColor.d.ts +6 -0
  53. package/dist/runtime/plugins/TailwindColor.mjs +10 -0
  54. package/dist/runtime/plugins/glorious-app-setting.d.ts +2 -0
  55. package/dist/runtime/plugins/glorious-app-setting.mjs +11 -0
  56. package/dist/runtime/plugins/shortcut-key.d.ts +2 -0
  57. package/dist/runtime/plugins/shortcut-key.mjs +11 -0
  58. package/dist/runtime/stores/GloriousStore.d.ts +9 -0
  59. package/dist/runtime/stores/GloriousStore.mjs +88 -0
  60. package/dist/types.d.mts +16 -0
  61. package/dist/types.d.ts +16 -0
  62. package/package.json +53 -0
@@ -0,0 +1,33 @@
1
+ import { useSeoMeta } from "@unhead/vue";
2
+ import { useRuntimeConfig } from "nuxt/app";
3
+ const head = {
4
+ title: ``,
5
+ description: "",
6
+ image: "",
7
+ type: "website"
8
+ };
9
+ export default function(object = head) {
10
+ const title = typeof object.title === "undefined" ? head.title : object.title;
11
+ const description = typeof object.description === "undefined" ? head.description : object.description;
12
+ const image = typeof object.image === "undefined" ? head.image : object.image;
13
+ const type = typeof object.type === "undefined" ? head.type : object.type;
14
+ const moduleConfig = useRuntimeConfig();
15
+ const seoObject = {
16
+ title: () => `${title + moduleConfig.public.glorious.seo.suffix}`,
17
+ ogTitle: () => `${title + moduleConfig.public.glorious.seo.suffix}`,
18
+ description: () => `${description}`,
19
+ ogDescription: () => `${description}`,
20
+ ogType: () => type
21
+ };
22
+ if (image !== "")
23
+ seoObject["image"] = image;
24
+ if (title === "") {
25
+ seoObject["title"] = moduleConfig.public.glorious.seo.title;
26
+ seoObject["ogTitle"] = moduleConfig.public.glorious.seo.title;
27
+ }
28
+ if (description === "") {
29
+ seoObject["description"] = moduleConfig.public.glorious.seo.description;
30
+ seoObject["ogDescription"] = moduleConfig.public.glorious.seo.description;
31
+ }
32
+ useSeoMeta(seoObject);
33
+ }
@@ -0,0 +1,2 @@
1
+ declare const _default: any;
2
+ export default _default;
@@ -0,0 +1,37 @@
1
+ import {
2
+ callWithNuxt,
3
+ useNuxtApp,
4
+ useRequestHeaders,
5
+ defineNuxtRouteMiddleware,
6
+ useRuntimeConfig,
7
+ useCookie,
8
+ navigateTo
9
+ } from "#app";
10
+ export default defineNuxtRouteMiddleware(async () => {
11
+ const nuxtApp = useNuxtApp();
12
+ const moduleConfig = useRuntimeConfig();
13
+ if (process.server) {
14
+ const { cookie } = await callWithNuxt(
15
+ nuxtApp,
16
+ () => useRequestHeaders(["cookie"])
17
+ );
18
+ if (typeof cookie !== "undefined") {
19
+ const cookieSplit = cookie?.split(`;`);
20
+ const findAuthCookie = cookieSplit.find(
21
+ (item) => item.includes(moduleConfig.public.glorious.auth.cookie.name)
22
+ );
23
+ if (typeof findAuthCookie === "undefined") {
24
+ return navigateTo(moduleConfig.public.glorious.auth.redirect.login, {
25
+ redirectCode: 302
26
+ });
27
+ }
28
+ }
29
+ }
30
+ if (process.client) {
31
+ const cookie = useCookie(moduleConfig.public.glorious.auth.cookie.name);
32
+ if (typeof cookie.value === "undefined")
33
+ return navigateTo(moduleConfig.public.glorious.auth.redirect.login, {
34
+ redirectCode: 302
35
+ });
36
+ }
37
+ });
@@ -0,0 +1,2 @@
1
+ declare const _default: any;
2
+ export default _default;
@@ -0,0 +1,17 @@
1
+ import {
2
+ GloriousStore,
3
+ defineNuxtRouteMiddleware,
4
+ useCookie,
5
+ useNuxtApp
6
+ } from "#imports";
7
+ export default defineNuxtRouteMiddleware(() => {
8
+ const nuxtApp = useNuxtApp();
9
+ const moduleConfig = nuxtApp.$config.public.glorious;
10
+ const gs = GloriousStore();
11
+ if (moduleConfig.auth.strategy.provider === "")
12
+ return;
13
+ const cookieToken = useCookie(moduleConfig.auth.cookie.name);
14
+ if (typeof cookieToken.value === "undefined")
15
+ return;
16
+ nuxtApp.hook("app:beforeMount", () => gs.authGetUser(cookieToken.value));
17
+ });
@@ -0,0 +1,2 @@
1
+ declare const _default: any;
2
+ export default _default;
@@ -0,0 +1,35 @@
1
+ import { defineNuxtPlugin } from "#app";
2
+ export default defineNuxtPlugin(() => {
3
+ const methods = {
4
+ addBlurBackground: (key) => {
5
+ const backgroundBlur = document.createElement("div");
6
+ backgroundBlur.classList.add("bg-blur-drawer");
7
+ const nuxt = document.getElementById("__nuxt");
8
+ nuxt.appendChild(backgroundBlur);
9
+ backgroundBlur.addEventListener("click", () => {
10
+ const componentId = document.getElementById(key);
11
+ componentId.classList.replace("open", "close");
12
+ backgroundBlur.remove();
13
+ });
14
+ },
15
+ drawer: {
16
+ provide: (key) => {
17
+ let drawer = document.getElementById(key);
18
+ if (drawer.classList.contains("close")) {
19
+ drawer.classList.remove("hidden");
20
+ drawer.classList.replace("close", "open");
21
+ methods.addBlurBackground(key);
22
+ } else {
23
+ drawer.classList.replace("open", "close");
24
+ const bgBlur = document.querySelector(".bg-blur-drawer");
25
+ bgBlur?.remove();
26
+ }
27
+ }
28
+ }
29
+ };
30
+ return {
31
+ provide: {
32
+ drawer: (key = "drawer") => methods.drawer.provide(key)
33
+ }
34
+ };
35
+ });
@@ -0,0 +1,2 @@
1
+ declare const _default: any;
2
+ export default _default;
@@ -0,0 +1,38 @@
1
+ import { defineNuxtPlugin } from "#app";
2
+ import { GloriousStore } from "../stores/GloriousStore.mjs";
3
+ export default defineNuxtPlugin(() => {
4
+ const methods = {
5
+ addBlurBackground: (key) => {
6
+ const backgroundBlur = document.createElement("div");
7
+ backgroundBlur.classList.add("bg-blur-modal");
8
+ const nuxt = document.getElementById("__nuxt");
9
+ nuxt.appendChild(backgroundBlur);
10
+ backgroundBlur.addEventListener("click", () => {
11
+ const componentId = document.getElementById(key);
12
+ componentId.classList.replace("open", "close");
13
+ backgroundBlur.remove();
14
+ });
15
+ },
16
+ modal: {
17
+ provide: (key, keepData = {}) => {
18
+ const modal = document.getElementById(key);
19
+ const gloriousStore = GloriousStore();
20
+ gloriousStore.keepData = keepData;
21
+ if (modal?.classList.contains("close")) {
22
+ modal?.classList.replace("close", "open");
23
+ modal.style.bottom = `-${modal.offsetHeight}px`;
24
+ methods.addBlurBackground(key);
25
+ } else {
26
+ modal?.classList.add("close");
27
+ const bgBlur = document.querySelector(".bg-blur-modal");
28
+ bgBlur?.remove();
29
+ }
30
+ }
31
+ }
32
+ };
33
+ return {
34
+ provide: {
35
+ modal: (key = "modal", keepData = {}) => methods.modal.provide(key, keepData)
36
+ }
37
+ };
38
+ });
@@ -0,0 +1,6 @@
1
+ declare const _default: import("nuxt/app").Plugin<{
2
+ tailwindColor: (color: string, value: string) => string;
3
+ }> & import("nuxt/app").ObjectPlugin<{
4
+ tailwindColor: (color: string, value: string) => string;
5
+ }>;
6
+ export default _default;
@@ -0,0 +1,10 @@
1
+ import { defineNuxtPlugin } from "nuxt/app";
2
+ import colors from "tailwindcss/colors.js";
3
+ export default defineNuxtPlugin(() => {
4
+ const tailwindColor = colors;
5
+ return {
6
+ provide: {
7
+ tailwindColor: (color, value) => tailwindColor[color][value]
8
+ }
9
+ };
10
+ });
@@ -0,0 +1,2 @@
1
+ declare const _default: any;
2
+ export default _default;
@@ -0,0 +1,11 @@
1
+ import { defineNuxtPlugin, useHead } from "#imports";
2
+ import { useGloriousAppSetting } from "../composables/useGloriousAppSetting.mjs";
3
+ export default defineNuxtPlugin(() => {
4
+ const gloriousAppSetting = useGloriousAppSetting.getSetting();
5
+ useHead({
6
+ htmlAttrs: {
7
+ dir: gloriousAppSetting.dir,
8
+ class: [gloriousAppSetting.darkMode ? "dark" : ""]
9
+ }
10
+ });
11
+ });
@@ -0,0 +1,2 @@
1
+ declare const _default: any;
2
+ export default _default;
@@ -0,0 +1,11 @@
1
+ import { defineNuxtPlugin } from "#app";
2
+ import { useGloriousAppSetting } from "../composables/useGloriousAppSetting.mjs";
3
+ export default defineNuxtPlugin(() => {
4
+ window.addEventListener("keydown", (ev) => {
5
+ const html = document.getElementsByTagName("html")[0];
6
+ if (ev.key === "*")
7
+ useGloriousAppSetting.setDarkMode();
8
+ if (ev.key === "-")
9
+ useGloriousAppSetting.setDir(html.dir === "rtl" ? "ltr" : "rtl");
10
+ });
11
+ });
@@ -0,0 +1,9 @@
1
+ export declare const GloriousStore: import("pinia").StoreDefinition<"GloriousStore", any, {
2
+ authIsLogin(): boolean;
3
+ }, {
4
+ formCreate(key: string | Array<string>): void;
5
+ authLogout(): void;
6
+ authSetToken(token: string, to?: string | null): void;
7
+ authParseToken(token: any): any;
8
+ authGetUser(token?: string): void;
9
+ }>;
@@ -0,0 +1,88 @@
1
+ import { defineStore } from "pinia";
2
+ import { navigateTo, useCookie, useRuntimeConfig, useFetch } from "#imports";
3
+ export const GloriousStore = defineStore("GloriousStore", {
4
+ state: () => ({
5
+ auth: {
6
+ loaded: false,
7
+ user: {}
8
+ },
9
+ loading: {},
10
+ keepData: {},
11
+ forms: {}
12
+ }),
13
+ getters: {
14
+ authIsLogin() {
15
+ const moduleConfig = useRuntimeConfig();
16
+ const cookie = useCookie(moduleConfig.public.glorious.auth.cookie.name);
17
+ return typeof cookie.value !== "undefined";
18
+ }
19
+ },
20
+ actions: {
21
+ formCreate(key) {
22
+ this.forms = {};
23
+ if (typeof key === "string")
24
+ this.forms[key] = {
25
+ form: {},
26
+ errors: []
27
+ };
28
+ else
29
+ key.map((item) => {
30
+ this.forms[item] = {
31
+ form: {},
32
+ errors: []
33
+ };
34
+ });
35
+ },
36
+ authLogout() {
37
+ const moduleConfig = useRuntimeConfig();
38
+ const token = useCookie(moduleConfig.public.glorious.auth.cookie.name);
39
+ token.value = null;
40
+ this.auth.loaded = false;
41
+ navigateTo(moduleConfig.public.glorious.auth.redirect.logout);
42
+ },
43
+ authSetToken(token, to = null) {
44
+ const moduleConfig = useRuntimeConfig();
45
+ const decodeToken = this.authParseToken(token);
46
+ const cookie = useCookie(moduleConfig.public.glorious.auth.cookie.name, {
47
+ expires: new Date(Math.floor(decodeToken.exp * 1e3)),
48
+ httpOnly: moduleConfig.public.glorious.auth.cookie.httpOnly
49
+ });
50
+ cookie.value = token;
51
+ this.authGetUser(token);
52
+ if (to)
53
+ navigateTo(to);
54
+ },
55
+ authParseToken(token) {
56
+ const base64Url = token.split(".")[1];
57
+ const base64 = base64Url.replace(/-/g, "+").replace(/_/g, "/");
58
+ const jsonPayload = decodeURIComponent(
59
+ window.atob(base64).split("").map(function(c) {
60
+ return "%" + ("00" + c.charCodeAt(0).toString(16)).slice(-2);
61
+ }).join("")
62
+ );
63
+ return JSON.parse(jsonPayload);
64
+ },
65
+ authGetUser(token = "") {
66
+ const moduleConfig = useRuntimeConfig();
67
+ useFetch(
68
+ moduleConfig.public.glorious.auth.strategy.endpoints.userInfo.url,
69
+ {
70
+ lazy: false,
71
+ baseURL: moduleConfig.public.glorious.fetch.baseURL,
72
+ headers: {
73
+ Accept: "application/json",
74
+ Authorization: "Bearer " + token
75
+ },
76
+ method: moduleConfig.public.glorious.auth.strategy.endpoints.userInfo.method
77
+ }
78
+ ).then((data) => {
79
+ const pick = moduleConfig.public.glorious.auth.strategy.endpoints.userInfo.pick;
80
+ if (pick !== "")
81
+ this.auth.user = data.data.value[pick];
82
+ else
83
+ this.auth.user = data.data.value;
84
+ this.auth.loaded = true;
85
+ });
86
+ }
87
+ }
88
+ });
@@ -0,0 +1,16 @@
1
+
2
+ import type { ModuleOptions } from './module.js'
3
+
4
+
5
+ declare module '@nuxt/schema' {
6
+ interface NuxtConfig { ['glorious']?: Partial<ModuleOptions> }
7
+ interface NuxtOptions { ['glorious']?: ModuleOptions }
8
+ }
9
+
10
+ declare module 'nuxt/schema' {
11
+ interface NuxtConfig { ['glorious']?: Partial<ModuleOptions> }
12
+ interface NuxtOptions { ['glorious']?: ModuleOptions }
13
+ }
14
+
15
+
16
+ export type { ModuleOptions, default } from './module.js'
@@ -0,0 +1,16 @@
1
+
2
+ import type { ModuleOptions } from './module'
3
+
4
+
5
+ declare module '@nuxt/schema' {
6
+ interface NuxtConfig { ['glorious']?: Partial<ModuleOptions> }
7
+ interface NuxtOptions { ['glorious']?: ModuleOptions }
8
+ }
9
+
10
+ declare module 'nuxt/schema' {
11
+ interface NuxtConfig { ['glorious']?: Partial<ModuleOptions> }
12
+ interface NuxtOptions { ['glorious']?: ModuleOptions }
13
+ }
14
+
15
+
16
+ export type { ModuleOptions, default } from './module'
package/package.json ADDED
@@ -0,0 +1,53 @@
1
+ {
2
+ "version": "0.7.9-7",
3
+ "name": "nuxt-glorious",
4
+ "description": "This package provides many things needed by a project, including server requests and authentication, SEO and other requirements of a project.",
5
+ "repository": "sajadhzj/nuxt-glorious",
6
+ "author": "sajad hossein zadeh (https://github.com/sajadhzj)",
7
+ "license": "MIT",
8
+ "exports": {
9
+ ".": {
10
+ "types": "./dist/types.d.ts",
11
+ "import": "./dist/module.mjs",
12
+ "require": "./dist/module.cjs"
13
+ }
14
+ },
15
+ "main": "./dist/module.cjs",
16
+ "types": "./dist/types.d.ts",
17
+ "files": [
18
+ "dist"
19
+ ],
20
+ "scripts": {
21
+ "prepack": "nuxt-module-build build",
22
+ "dev": "nuxi dev playground",
23
+ "dev:build": "nuxi build playground",
24
+ "dev:prepare": "nuxt-module-build build --stub && nuxt-module-build prepare && nuxi prepare playground",
25
+ "release": "npm run prepack && npm publish",
26
+ "lint": "eslint .",
27
+ "test": "vitest run",
28
+ "test:watch": "vitest watch"
29
+ },
30
+ "dependencies": {
31
+ "@nuxt/kit": "^3.11.1",
32
+ "@nuxtjs/tailwindcss": "^6.12.0",
33
+ "@pinia/nuxt": "^0.5.1",
34
+ "defu": "^6.1.4",
35
+ "pinia": "^2.1.7",
36
+ "sass": "^1.77.5"
37
+ },
38
+ "devDependencies": {
39
+ "@nuxt/devtools": "latest",
40
+ "@nuxt/eslint-config": "^0.2.0",
41
+ "@nuxt/module-builder": "^0.5.5",
42
+ "@nuxt/schema": "^3.11.1",
43
+ "@nuxt/test-utils": "^3.12.0",
44
+ "@types/node": "^20.11.29",
45
+ "changelogen": "^0.5.5",
46
+ "eslint": "^8.57.0",
47
+ "nuxt": "^3.11.1",
48
+ "vitest": "^1.4.0"
49
+ },
50
+ "overrides": {
51
+ "vue": "latest"
52
+ }
53
+ }