@gluhar/app 6.0.0-next.0 → 6.0.0-next.3
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.
- package/CHANGELOG.md +27 -0
- package/dist/module.json +3 -3
- package/dist/module.mjs +2 -2
- package/dist/runtime/components/GContactLink.vue +9 -18
- package/dist/runtime/components/GContactLink.vue.d.ts +2 -0
- package/dist/runtime/components/GLenisScroller.vue +9 -17
- package/dist/runtime/components/GLenisScroller.vue.d.ts +2 -0
- package/dist/runtime/components/GluharLogo.vue.d.ts +2 -0
- package/dist/runtime/components/SanityImg.vue +18 -35
- package/dist/runtime/components/SanityImg.vue.d.ts +2 -0
- package/dist/runtime/composables/useSanityPage.d.ts +3 -2
- package/dist/runtime/stores/useGStore.d.ts +80 -1
- package/dist/types.d.mts +4 -2
- package/package.json +7 -8
- package/dist/module.cjs +0 -5
- package/dist/module.d.ts +0 -22
- package/dist/types.d.ts +0 -7
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,33 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
# [6.0.0-next.3](https://github.com/gluharco/gluhar/compare/v6.0.0-next.2...v6.0.0-next.3) (2026-10-21)
|
|
7
|
+
|
|
8
|
+
**📝 Note:** Version bump only for package @gluhar/app
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
# [6.0.0-next.2](https://github.com/gluharco/gluhar/compare/v6.0.0-next.1...v6.0.0-next.2) (2026-10-21)
|
|
15
|
+
|
|
16
|
+
**📝 Note:** Version bump only for package @gluhar/app
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
# [6.0.0-next.1](https://github.com/gluharco/gluhar/compare/v6.0.0-next.0...v6.0.0-next.1) (2026-10-20)
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
### 🚀 Enhancements
|
|
26
|
+
|
|
27
|
+
- **release:** Publish from GitHub Actions with npm trusted publishing ([8773cd9](https://github.com/gluharco/gluhar/commit/8773cd99c43cbe6a7dc415e50af8b13a7b8d4daf))
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
|
|
6
33
|
# [5.2.0](https://github.com/gluharco/gluhar/compare/@gluhar/app@5.1.5...@gluhar/app@5.2.0) (2026-04-28)
|
|
7
34
|
|
|
8
35
|
|
package/dist/module.json
CHANGED
package/dist/module.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { defineNuxtModule, createResolver, installModule, addImportsDir, addComponentsDir } from '@nuxt/kit';
|
|
2
2
|
import defu from 'defu';
|
|
3
3
|
|
|
4
|
-
const module = defineNuxtModule({
|
|
4
|
+
const module$1 = defineNuxtModule({
|
|
5
5
|
meta: {
|
|
6
6
|
name: "@gluhar/app",
|
|
7
7
|
configKey: "gluhar"
|
|
@@ -51,4 +51,4 @@ const module = defineNuxtModule({
|
|
|
51
51
|
}
|
|
52
52
|
});
|
|
53
53
|
|
|
54
|
-
export { module as default };
|
|
54
|
+
export { module$1 as default };
|
|
@@ -1,33 +1,24 @@
|
|
|
1
|
-
<script setup
|
|
1
|
+
<script setup>
|
|
2
2
|
import { useResponsive, computed, ref } from "#imports";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
}>();
|
|
9
|
-
|
|
3
|
+
const props = defineProps({
|
|
4
|
+
phone: { type: String, required: false },
|
|
5
|
+
email: { type: String, required: false },
|
|
6
|
+
onCopy: { type: Function, required: false }
|
|
7
|
+
});
|
|
10
8
|
const defaultCursorText = "Copy to clipboard";
|
|
11
9
|
const cursorText = ref(defaultCursorText);
|
|
12
|
-
|
|
13
10
|
const { isMobile } = useResponsive();
|
|
14
|
-
|
|
15
11
|
const href = computed(() => {
|
|
16
|
-
if (!isMobile.value) return
|
|
12
|
+
if (!isMobile.value) return void 0;
|
|
17
13
|
return props.phone ? `tel:${props.phone}` : `mailto:${props.email}`;
|
|
18
14
|
});
|
|
19
|
-
|
|
20
|
-
const handleClick = async (isPhone: boolean) => {
|
|
15
|
+
const handleClick = async (isPhone) => {
|
|
21
16
|
const value = isPhone ? props.phone : props.email;
|
|
22
|
-
|
|
23
17
|
if (isMobile.value) return;
|
|
24
18
|
cursorText.value = "Copied!";
|
|
25
|
-
|
|
26
|
-
await navigator.clipboard.writeText(value!);
|
|
27
|
-
|
|
19
|
+
await navigator.clipboard.writeText(value);
|
|
28
20
|
props.onCopy?.();
|
|
29
21
|
};
|
|
30
|
-
|
|
31
22
|
const onMouseLeave = () => {
|
|
32
23
|
cursorText.value = defaultCursorText;
|
|
33
24
|
};
|
|
@@ -1,33 +1,25 @@
|
|
|
1
|
-
<script setup
|
|
1
|
+
<script setup>
|
|
2
2
|
import { useResizeObserver } from "@vueuse/core";
|
|
3
|
-
import { ref
|
|
3
|
+
import { ref } from "vue";
|
|
4
4
|
import { useLenis } from "#imports";
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
const scrollerRef = ref<HTMLDivElement>();
|
|
12
|
-
const contentRef = ref<HTMLDivElement>();
|
|
13
|
-
|
|
5
|
+
defineProps({
|
|
6
|
+
contentClass: { type: String, required: false },
|
|
7
|
+
contentStyle: { type: Object, required: false }
|
|
8
|
+
});
|
|
9
|
+
const scrollerRef = ref();
|
|
10
|
+
const contentRef = ref();
|
|
14
11
|
const { lenis } = useLenis(scrollerRef);
|
|
15
|
-
|
|
16
12
|
const prevHeight = ref(0);
|
|
17
|
-
|
|
18
13
|
useResizeObserver(contentRef, (entries) => {
|
|
19
14
|
const entry = entries[0];
|
|
20
15
|
const { height } = entry.contentRect;
|
|
21
|
-
|
|
22
16
|
if (height === prevHeight.value) return;
|
|
23
|
-
|
|
24
17
|
prevHeight.value = height;
|
|
25
18
|
lenis.value?.resize();
|
|
26
19
|
});
|
|
27
|
-
|
|
28
20
|
defineExpose({
|
|
29
21
|
lenis,
|
|
30
|
-
scrollerRef
|
|
22
|
+
scrollerRef
|
|
31
23
|
});
|
|
32
24
|
</script>
|
|
33
25
|
|
|
@@ -1,57 +1,40 @@
|
|
|
1
|
-
<script setup
|
|
1
|
+
<script setup>
|
|
2
2
|
import { computed, ref, useMessages } from "#imports";
|
|
3
|
-
import
|
|
4
|
-
import type { SanityImage } from "@gluhar/sanity/types";
|
|
5
|
-
// @ts-ignore
|
|
6
|
-
import imageUrlBuilder from "@sanity/image-url/lib/browser/image-url.esm"; // INFO this is a strange fix
|
|
7
|
-
// import imageUrlBuilder from "@sanity/image-url";
|
|
8
|
-
import type { CropMode, ImageFormat } from "@sanity/image-url/lib/types/types";
|
|
3
|
+
import imageUrlBuilder from "@sanity/image-url/lib/browser/image-url.esm";
|
|
9
4
|
import sanityConfig from "~/config/sanity.config";
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
}>();
|
|
21
|
-
|
|
5
|
+
const props = defineProps({
|
|
6
|
+
image: { type: Object, required: false },
|
|
7
|
+
alt: { type: null, required: false },
|
|
8
|
+
by: { type: String, required: false },
|
|
9
|
+
width: { type: Number, required: false },
|
|
10
|
+
height: { type: Number, required: false },
|
|
11
|
+
format: { type: [String, null], required: false },
|
|
12
|
+
crop: { type: String, required: false },
|
|
13
|
+
dpr: { type: Number, required: false }
|
|
14
|
+
});
|
|
22
15
|
const { l } = useMessages();
|
|
23
|
-
|
|
24
16
|
const builder = imageUrlBuilder(sanityConfig);
|
|
25
|
-
const urlFor = (source
|
|
26
|
-
|
|
27
|
-
const imgRef = ref<HTMLImageElement | null>(null);
|
|
17
|
+
const urlFor = (source) => builder.image(source);
|
|
18
|
+
const imgRef = ref(null);
|
|
28
19
|
const src = computed(() => {
|
|
29
20
|
const { width, height } = imgRef.value?.getBoundingClientRect() || {
|
|
30
|
-
width:
|
|
31
|
-
height:
|
|
21
|
+
width: void 0,
|
|
22
|
+
height: void 0
|
|
32
23
|
};
|
|
33
|
-
|
|
34
|
-
if (!props.image?.asset || (!width && !height)) return undefined;
|
|
35
|
-
|
|
24
|
+
if (!props.image?.asset || !width && !height) return void 0;
|
|
36
25
|
let url = urlFor(props.image);
|
|
37
|
-
|
|
38
26
|
if (props.width) url = url.width(props.width);
|
|
39
27
|
else if (width && (props.by === "width" || !props.by))
|
|
40
28
|
url = url.width(Math.ceil(width));
|
|
41
|
-
|
|
42
29
|
if (props.height) url = url.height(props.height);
|
|
43
30
|
else if (height && (props.by === "height" || !props.by))
|
|
44
31
|
url = url.height(Math.ceil(height));
|
|
45
|
-
|
|
46
32
|
if (props.crop) url = url.fit("crop").crop(props.crop);
|
|
47
|
-
|
|
48
33
|
url = url.format(props.format ?? "webp");
|
|
49
34
|
url = url.quality(100);
|
|
50
|
-
|
|
51
35
|
url = url.dpr(
|
|
52
|
-
props.dpr || typeof window !== "undefined" ? window.devicePixelRatio : 1
|
|
36
|
+
props.dpr || typeof window !== "undefined" ? window.devicePixelRatio : 1
|
|
53
37
|
);
|
|
54
|
-
|
|
55
38
|
return url.url();
|
|
56
39
|
});
|
|
57
40
|
</script>
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { AsyncDataRequestStatus } from "#app";
|
|
1
2
|
import type { SanityPage } from "@gluhar/sanity/types";
|
|
2
3
|
interface Page extends SanityPage {
|
|
3
4
|
_type: "page";
|
|
@@ -13,9 +14,9 @@ export declare const useSanityPage: <PI extends PageInterfaces = {
|
|
|
13
14
|
page: Page;
|
|
14
15
|
}, PT extends PageTypes<PI> = PageTypes<PI>>(types?: PT, slug?: string | string[]) => Promise<{
|
|
15
16
|
page: import("vue").Ref<PI[Extract<keyof PT, string>] | undefined, PI[Extract<keyof PT, string>] | undefined>;
|
|
16
|
-
status: import("vue").Ref<
|
|
17
|
+
status: import("vue").Ref<AsyncDataRequestStatus, AsyncDataRequestStatus>;
|
|
17
18
|
} | {
|
|
18
19
|
page: import("vue").Ref<Page | undefined, Page | undefined>;
|
|
19
|
-
status: import("vue").Ref<
|
|
20
|
+
status: import("vue").Ref<AsyncDataRequestStatus, AsyncDataRequestStatus>;
|
|
20
21
|
}>;
|
|
21
22
|
export {};
|
|
@@ -1 +1,80 @@
|
|
|
1
|
-
|
|
1
|
+
import type { Seo } from "@gluhar/sanity/types";
|
|
2
|
+
export declare const useGStore: import("pinia").StoreDefinition<"gluhar", Pick<{
|
|
3
|
+
defaultSeo: import("vue").Ref<{
|
|
4
|
+
title?: import("@gluhar/i18n/types").LocaleString | undefined;
|
|
5
|
+
description?: import("@gluhar/i18n/types").LocaleString | undefined;
|
|
6
|
+
ogImage?: {
|
|
7
|
+
asset?: {
|
|
8
|
+
url: string;
|
|
9
|
+
} | undefined;
|
|
10
|
+
caption?: import("@gluhar/i18n/types").LocaleString | undefined;
|
|
11
|
+
alt?: import("@gluhar/i18n/types").LocaleString | undefined;
|
|
12
|
+
} | undefined;
|
|
13
|
+
}, Seo | {
|
|
14
|
+
title?: import("@gluhar/i18n/types").LocaleString | undefined;
|
|
15
|
+
description?: import("@gluhar/i18n/types").LocaleString | undefined;
|
|
16
|
+
ogImage?: {
|
|
17
|
+
asset?: {
|
|
18
|
+
url: string;
|
|
19
|
+
} | undefined;
|
|
20
|
+
caption?: import("@gluhar/i18n/types").LocaleString | undefined;
|
|
21
|
+
alt?: import("@gluhar/i18n/types").LocaleString | undefined;
|
|
22
|
+
} | undefined;
|
|
23
|
+
}>;
|
|
24
|
+
setDefaultSeo: (seo: Seo) => void;
|
|
25
|
+
mobileMenuActive: import("vue").Ref<boolean, boolean>;
|
|
26
|
+
toggleMobileMenu: () => void;
|
|
27
|
+
closeMobileMenu: () => void;
|
|
28
|
+
}, "defaultSeo" | "mobileMenuActive">, Pick<{
|
|
29
|
+
defaultSeo: import("vue").Ref<{
|
|
30
|
+
title?: import("@gluhar/i18n/types").LocaleString | undefined;
|
|
31
|
+
description?: import("@gluhar/i18n/types").LocaleString | undefined;
|
|
32
|
+
ogImage?: {
|
|
33
|
+
asset?: {
|
|
34
|
+
url: string;
|
|
35
|
+
} | undefined;
|
|
36
|
+
caption?: import("@gluhar/i18n/types").LocaleString | undefined;
|
|
37
|
+
alt?: import("@gluhar/i18n/types").LocaleString | undefined;
|
|
38
|
+
} | undefined;
|
|
39
|
+
}, Seo | {
|
|
40
|
+
title?: import("@gluhar/i18n/types").LocaleString | undefined;
|
|
41
|
+
description?: import("@gluhar/i18n/types").LocaleString | undefined;
|
|
42
|
+
ogImage?: {
|
|
43
|
+
asset?: {
|
|
44
|
+
url: string;
|
|
45
|
+
} | undefined;
|
|
46
|
+
caption?: import("@gluhar/i18n/types").LocaleString | undefined;
|
|
47
|
+
alt?: import("@gluhar/i18n/types").LocaleString | undefined;
|
|
48
|
+
} | undefined;
|
|
49
|
+
}>;
|
|
50
|
+
setDefaultSeo: (seo: Seo) => void;
|
|
51
|
+
mobileMenuActive: import("vue").Ref<boolean, boolean>;
|
|
52
|
+
toggleMobileMenu: () => void;
|
|
53
|
+
closeMobileMenu: () => void;
|
|
54
|
+
}, never>, Pick<{
|
|
55
|
+
defaultSeo: import("vue").Ref<{
|
|
56
|
+
title?: import("@gluhar/i18n/types").LocaleString | undefined;
|
|
57
|
+
description?: import("@gluhar/i18n/types").LocaleString | undefined;
|
|
58
|
+
ogImage?: {
|
|
59
|
+
asset?: {
|
|
60
|
+
url: string;
|
|
61
|
+
} | undefined;
|
|
62
|
+
caption?: import("@gluhar/i18n/types").LocaleString | undefined;
|
|
63
|
+
alt?: import("@gluhar/i18n/types").LocaleString | undefined;
|
|
64
|
+
} | undefined;
|
|
65
|
+
}, Seo | {
|
|
66
|
+
title?: import("@gluhar/i18n/types").LocaleString | undefined;
|
|
67
|
+
description?: import("@gluhar/i18n/types").LocaleString | undefined;
|
|
68
|
+
ogImage?: {
|
|
69
|
+
asset?: {
|
|
70
|
+
url: string;
|
|
71
|
+
} | undefined;
|
|
72
|
+
caption?: import("@gluhar/i18n/types").LocaleString | undefined;
|
|
73
|
+
alt?: import("@gluhar/i18n/types").LocaleString | undefined;
|
|
74
|
+
} | undefined;
|
|
75
|
+
}>;
|
|
76
|
+
setDefaultSeo: (seo: Seo) => void;
|
|
77
|
+
mobileMenuActive: import("vue").Ref<boolean, boolean>;
|
|
78
|
+
toggleMobileMenu: () => void;
|
|
79
|
+
closeMobileMenu: () => void;
|
|
80
|
+
}, "setDefaultSeo" | "toggleMobileMenu" | "closeMobileMenu">>;
|
package/dist/types.d.mts
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import type { NuxtModule } from '@nuxt/schema'
|
|
2
2
|
|
|
3
|
-
import type { default as Module } from './module.
|
|
3
|
+
import type { default as Module } from './module.mjs'
|
|
4
4
|
|
|
5
5
|
export type ModuleOptions = typeof Module extends NuxtModule<infer O> ? Partial<O> : Record<string, any>
|
|
6
6
|
|
|
7
|
-
export { default } from './module.
|
|
7
|
+
export { default } from './module.mjs'
|
|
8
|
+
|
|
9
|
+
export { type GluharAppOptions } from './module.mjs'
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gluhar/app",
|
|
3
|
-
"version": "6.0.0-next.
|
|
3
|
+
"version": "6.0.0-next.3",
|
|
4
4
|
"description": "Gluhar main package. This combines and configures @gluhar/theme, @gluhar/i18n, @gluhar/sanity and @gluhar/core into one main package. Provides numerous components, composables, utils and types.",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -41,10 +41,10 @@
|
|
|
41
41
|
"test:watch": "vitest watch"
|
|
42
42
|
},
|
|
43
43
|
"dependencies": {
|
|
44
|
-
"@gluhar/core": "^6.0.0-next.
|
|
45
|
-
"@gluhar/i18n": "^6.0.0-next.
|
|
46
|
-
"@gluhar/sanity": "^6.0.0-next.
|
|
47
|
-
"@gluhar/theme": "^6.0.0-next.
|
|
44
|
+
"@gluhar/core": "^6.0.0-next.3",
|
|
45
|
+
"@gluhar/i18n": "^6.0.0-next.3",
|
|
46
|
+
"@gluhar/sanity": "^6.0.0-next.3",
|
|
47
|
+
"@gluhar/theme": "^6.0.0-next.3",
|
|
48
48
|
"@gluhar/v-gsap-nuxt": "^1.5.1",
|
|
49
49
|
"@nuxt/image": "^1.10.0",
|
|
50
50
|
"@nuxt/kit": "^4.5.0",
|
|
@@ -57,7 +57,7 @@
|
|
|
57
57
|
"v-gsap-nuxt": "^1.4.2"
|
|
58
58
|
},
|
|
59
59
|
"devDependencies": {
|
|
60
|
-
"@gluhar/fluid": "^6.0.0-next.
|
|
60
|
+
"@gluhar/fluid": "^6.0.0-next.3",
|
|
61
61
|
"@nuxt/devtools": "latest",
|
|
62
62
|
"@nuxt/eslint-config": "^1.9.0",
|
|
63
63
|
"@nuxt/module-builder": "^1.0.3",
|
|
@@ -71,6 +71,5 @@
|
|
|
71
71
|
},
|
|
72
72
|
"peerDependencies": {
|
|
73
73
|
"nuxt": "^4.5.0"
|
|
74
|
-
}
|
|
75
|
-
"gitHead": "8773cd99c43cbe6a7dc415e50af8b13a7b8d4daf"
|
|
74
|
+
}
|
|
76
75
|
}
|
package/dist/module.cjs
DELETED
package/dist/module.d.ts
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import * as _nuxt_schema from '@nuxt/schema';
|
|
2
|
-
import { GluharI18nOptions } from '@gluhar/i18n';
|
|
3
|
-
import { GluharThemeOptions } from '@gluhar/theme';
|
|
4
|
-
import { GluharSanityOptions } from '@gluhar/sanity';
|
|
5
|
-
import { ModuleOptions } from 'v-gsap-nuxt';
|
|
6
|
-
import { ModuleOptions as ModuleOptions$1 } from '@nuxt/image';
|
|
7
|
-
import { ModuleOptions as ModuleOptions$2 } from 'dayjs-nuxt';
|
|
8
|
-
|
|
9
|
-
interface GluharAppOptions {
|
|
10
|
-
theme?: GluharThemeOptions | false;
|
|
11
|
-
i18n?: GluharI18nOptions | false;
|
|
12
|
-
sanity?: GluharSanityOptions | false;
|
|
13
|
-
vgsap?: (ModuleOptions & {
|
|
14
|
-
dev?: boolean;
|
|
15
|
-
}) | false;
|
|
16
|
-
image?: ModuleOptions$1 | false;
|
|
17
|
-
dayjs?: ModuleOptions$2 | false;
|
|
18
|
-
}
|
|
19
|
-
declare const _default: _nuxt_schema.NuxtModule<GluharAppOptions, GluharAppOptions, false>;
|
|
20
|
-
|
|
21
|
-
export { _default as default };
|
|
22
|
-
export type { GluharAppOptions };
|
package/dist/types.d.ts
DELETED