rimelight-components 2.1.16 → 2.1.18
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/dist/module.json +1 -1
- package/dist/module.mjs +1 -1
- package/dist/runtime/components/app/Footer.d.vue.ts +5 -1
- package/dist/runtime/components/app/Footer.vue +20 -12
- package/dist/runtime/components/app/Footer.vue.d.ts +5 -1
- package/dist/runtime/components/app/Header.d.vue.ts +5 -1
- package/dist/runtime/components/app/Header.vue +4 -2
- package/dist/runtime/components/app/Header.vue.d.ts +5 -1
- package/dist/runtime/components/app/HeaderLayer.d.vue.ts +5 -3
- package/dist/runtime/components/app/HeaderLayer.vue +11 -2
- package/dist/runtime/components/app/HeaderLayer.vue.d.ts +5 -3
- package/dist/runtime/components/app/Image.d.vue.ts +13 -0
- package/dist/runtime/components/app/Image.vue +189 -0
- package/dist/runtime/components/app/Image.vue.d.ts +13 -0
- package/dist/runtime/components/app/Logo.d.vue.ts +5 -3
- package/dist/runtime/components/app/Logo.vue +9 -1
- package/dist/runtime/components/app/Logo.vue.d.ts +5 -3
- package/dist/runtime/components/app/NewsletterSignup.d.vue.ts +5 -3
- package/dist/runtime/components/app/NewsletterSignup.vue +9 -1
- package/dist/runtime/components/app/NewsletterSignup.vue.d.ts +5 -3
- package/dist/runtime/components/app/ScrollToTop.d.vue.ts +4 -2
- package/dist/runtime/components/app/ScrollToTop.vue +17 -9
- package/dist/runtime/components/app/ScrollToTop.vue.d.ts +4 -2
- package/dist/runtime/components/blocks/Block.d.vue.ts +5 -3
- package/dist/runtime/components/blocks/Block.vue +16 -7
- package/dist/runtime/components/blocks/Block.vue.d.ts +5 -3
- package/dist/runtime/components/blocks/BlockEditRenderer.d.vue.ts +5 -3
- package/dist/runtime/components/blocks/BlockEditRenderer.vue +9 -1
- package/dist/runtime/components/blocks/BlockEditRenderer.vue.d.ts +5 -3
- package/dist/runtime/components/blocks/BlockEditor.vue +4 -33
- package/dist/runtime/components/blocks/BlockViewRenderer.d.vue.ts +5 -3
- package/dist/runtime/components/blocks/BlockViewRenderer.vue +9 -1
- package/dist/runtime/components/blocks/BlockViewRenderer.vue.d.ts +5 -3
- package/dist/runtime/components/blocks/TextRenderer.d.vue.ts +5 -3
- package/dist/runtime/components/blocks/TextRenderer.vue +8 -0
- package/dist/runtime/components/blocks/TextRenderer.vue.d.ts +5 -3
- package/dist/runtime/components/blocks/editor/CalloutBlockEditor.d.vue.ts +5 -1
- package/dist/runtime/components/blocks/editor/CalloutBlockEditor.vue +8 -0
- package/dist/runtime/components/blocks/editor/CalloutBlockEditor.vue.d.ts +5 -1
- package/dist/runtime/components/blocks/editor/CardBlockEditor.d.vue.ts +5 -1
- package/dist/runtime/components/blocks/editor/CardBlockEditor.vue +9 -1
- package/dist/runtime/components/blocks/editor/CardBlockEditor.vue.d.ts +5 -1
- package/dist/runtime/components/blocks/editor/ImageBlockEditor.d.vue.ts +11 -3
- package/dist/runtime/components/blocks/editor/ImageBlockEditor.vue +21 -9
- package/dist/runtime/components/blocks/editor/ImageBlockEditor.vue.d.ts +11 -3
- package/dist/runtime/components/blocks/editor/ParagraphBlockEditor.d.vue.ts +5 -3
- package/dist/runtime/components/blocks/editor/ParagraphBlockEditor.vue +11 -7
- package/dist/runtime/components/blocks/editor/ParagraphBlockEditor.vue.d.ts +5 -3
- package/dist/runtime/components/blocks/editor/SectionBlockEditor.d.vue.ts +5 -3
- package/dist/runtime/components/blocks/editor/SectionBlockEditor.vue +15 -5
- package/dist/runtime/components/blocks/editor/SectionBlockEditor.vue.d.ts +5 -3
- package/dist/runtime/components/blocks/editor/TestBlockEditor.d.vue.ts +5 -3
- package/dist/runtime/components/blocks/editor/TestBlockEditor.vue +11 -3
- package/dist/runtime/components/blocks/editor/TestBlockEditor.vue.d.ts +5 -3
- package/dist/runtime/components/blocks/renderer/CalloutBlockRenderer.d.vue.ts +5 -1
- package/dist/runtime/components/blocks/renderer/CalloutBlockRenderer.vue +8 -0
- package/dist/runtime/components/blocks/renderer/CalloutBlockRenderer.vue.d.ts +5 -1
- package/dist/runtime/components/blocks/renderer/CardBlockRenderer.d.vue.ts +5 -1
- package/dist/runtime/components/blocks/renderer/CardBlockRenderer.vue +9 -1
- package/dist/runtime/components/blocks/renderer/CardBlockRenderer.vue.d.ts +5 -1
- package/dist/runtime/components/blocks/renderer/ImageBlockRenderer.d.vue.ts +5 -1
- package/dist/runtime/components/blocks/renderer/ImageBlockRenderer.vue +13 -3
- package/dist/runtime/components/blocks/renderer/ImageBlockRenderer.vue.d.ts +5 -1
- package/dist/runtime/components/blocks/renderer/ParagraphBlockRenderer.d.vue.ts +5 -1
- package/dist/runtime/components/blocks/renderer/ParagraphBlockRenderer.vue +8 -0
- package/dist/runtime/components/blocks/renderer/ParagraphBlockRenderer.vue.d.ts +5 -1
- package/dist/runtime/components/blocks/renderer/SectionBlockRenderer.d.vue.ts +5 -1
- package/dist/runtime/components/blocks/renderer/SectionBlockRenderer.vue +8 -0
- package/dist/runtime/components/blocks/renderer/SectionBlockRenderer.vue.d.ts +5 -1
- package/dist/runtime/components/blocks/renderer/TestBlockRenderer.d.vue.ts +5 -1
- package/dist/runtime/components/blocks/renderer/TestBlockRenderer.vue +8 -0
- package/dist/runtime/components/blocks/renderer/TestBlockRenderer.vue.d.ts +5 -1
- package/dist/runtime/components/cards/TeamCard.d.vue.ts +5 -3
- package/dist/runtime/components/cards/TeamCard.vue +25 -7
- package/dist/runtime/components/cards/TeamCard.vue.d.ts +5 -3
- package/dist/runtime/components/content/Callout.d.vue.ts +5 -3
- package/dist/runtime/components/content/Callout.vue +11 -2
- package/dist/runtime/components/content/Callout.vue.d.ts +5 -3
- package/dist/runtime/components/content/Section.d.vue.ts +5 -3
- package/dist/runtime/components/content/Section.vue +87 -86
- package/dist/runtime/components/content/Section.vue.d.ts +5 -3
- package/dist/runtime/components/content/Test.d.vue.ts +5 -3
- package/dist/runtime/components/content/Test.vue +9 -1
- package/dist/runtime/components/content/Test.vue.d.ts +5 -3
- package/dist/runtime/components/nodes/LinkNode.d.vue.ts +5 -3
- package/dist/runtime/components/nodes/LinkNode.vue +11 -1
- package/dist/runtime/components/nodes/LinkNode.vue.d.ts +5 -3
- package/dist/runtime/components/nodes/TextNode.d.vue.ts +5 -3
- package/dist/runtime/components/nodes/TextNode.vue +9 -1
- package/dist/runtime/components/nodes/TextNode.vue.d.ts +5 -3
- package/dist/runtime/components/page/PageEditor.d.vue.ts +4 -1
- package/dist/runtime/components/page/PageEditor.vue +67 -30
- package/dist/runtime/components/page/PageEditor.vue.d.ts +4 -1
- package/dist/runtime/components/page/PageMention.d.vue.ts +3 -1
- package/dist/runtime/components/page/PageMention.vue +15 -4
- package/dist/runtime/components/page/PageMention.vue.d.ts +3 -1
- package/dist/runtime/components/page/PagePropertiesEditor.d.vue.ts +8 -2
- package/dist/runtime/components/page/PagePropertiesEditor.vue +59 -21
- package/dist/runtime/components/page/PagePropertiesEditor.vue.d.ts +8 -2
- package/dist/runtime/components/page/PagePropertiesRenderer.d.vue.ts +8 -2
- package/dist/runtime/components/page/PagePropertiesRenderer.vue +70 -25
- package/dist/runtime/components/page/PagePropertiesRenderer.vue.d.ts +8 -2
- package/dist/runtime/components/page/PageRenderer.d.vue.ts +3 -1
- package/dist/runtime/components/page/PageRenderer.vue +52 -18
- package/dist/runtime/components/page/PageRenderer.vue.d.ts +3 -1
- package/dist/runtime/components/page/PageSurround.d.vue.ts +5 -3
- package/dist/runtime/components/page/PageSurround.vue +54 -24
- package/dist/runtime/components/page/PageSurround.vue.d.ts +5 -3
- package/dist/runtime/components/page/PageTOC.d.vue.ts +5 -3
- package/dist/runtime/components/page/PageTOC.vue +17 -7
- package/dist/runtime/components/page/PageTOC.vue.d.ts +5 -3
- package/dist/runtime/components/page/modals/CreatePageModal.vue +27 -21
- package/dist/runtime/components/page/modals/DeletePageModal.vue +23 -6
- package/dist/runtime/components/swatches/ColorSwatch.d.vue.ts +5 -3
- package/dist/runtime/components/swatches/ColorSwatch.vue +25 -11
- package/dist/runtime/components/swatches/ColorSwatch.vue.d.ts +5 -3
- package/dist/runtime/components/swatches/FontSwatch.d.vue.ts +5 -3
- package/dist/runtime/components/swatches/FontSwatch.vue +23 -10
- package/dist/runtime/components/swatches/FontSwatch.vue.d.ts +5 -3
- package/dist/runtime/components/swatches/ImageSwatch.d.vue.ts +5 -3
- package/dist/runtime/components/swatches/ImageSwatch.vue +23 -10
- package/dist/runtime/components/swatches/ImageSwatch.vue.d.ts +5 -3
- package/dist/runtime/components/utilities/Placeholder.d.vue.ts +5 -1
- package/dist/runtime/components/utilities/Placeholder.vue +14 -5
- package/dist/runtime/components/utilities/Placeholder.vue.d.ts +5 -1
- package/package.json +1 -1
package/dist/module.json
CHANGED
package/dist/module.mjs
CHANGED
|
@@ -4,7 +4,7 @@ import { readdirSync } from 'node:fs';
|
|
|
4
4
|
import { basename } from 'node:path';
|
|
5
5
|
|
|
6
6
|
const name = "rimelight-components";
|
|
7
|
-
const version = "2.1.
|
|
7
|
+
const version = "2.1.18";
|
|
8
8
|
const homepage = "https://rimelight.com/tools/rimelight-components";
|
|
9
9
|
|
|
10
10
|
const defaultOptions = {
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
export interface FooterProps {
|
|
2
|
+
}
|
|
3
|
+
export interface FooterEmits {
|
|
4
|
+
}
|
|
1
5
|
declare var __VLS_7: {}, __VLS_9: {}, __VLS_11: {};
|
|
2
6
|
type __VLS_Slots = {} & {
|
|
3
7
|
left?: (props: typeof __VLS_7) => any;
|
|
@@ -6,7 +10,7 @@ type __VLS_Slots = {} & {
|
|
|
6
10
|
} & {
|
|
7
11
|
right?: (props: typeof __VLS_11) => any;
|
|
8
12
|
};
|
|
9
|
-
declare const __VLS_base: import("vue").DefineComponent<
|
|
13
|
+
declare const __VLS_base: import("vue").DefineComponent<FooterProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<FooterProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
10
14
|
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
11
15
|
declare const _default: typeof __VLS_export;
|
|
12
16
|
export default _default;
|
|
@@ -1,23 +1,31 @@
|
|
|
1
|
-
<script setup
|
|
1
|
+
<script setup>
|
|
2
|
+
import { tv } from "tailwind-variants";
|
|
3
|
+
const {} = defineProps({});
|
|
4
|
+
const emit = defineEmits([]);
|
|
5
|
+
const footerStyles = tv({
|
|
6
|
+
slots: {
|
|
7
|
+
root: "py-8 lg:py-12",
|
|
8
|
+
container: "flex flex-col justify-between gap-xl lg:flex-row",
|
|
9
|
+
left: "order-last flex flex-col items-center justify-between gap-xl lg:order-1 lg:items-start",
|
|
10
|
+
center: "flex flex-col items-start lg:order-2",
|
|
11
|
+
right: "order-first flex flex-col items-center justify-between gap-xl lg:order-3 lg:flex-1 lg:items-end"
|
|
12
|
+
}
|
|
13
|
+
});
|
|
14
|
+
const { root, container, left, center, right } = footerStyles();
|
|
15
|
+
</script>
|
|
2
16
|
|
|
3
17
|
<template>
|
|
4
|
-
<footer class="
|
|
5
|
-
<UContainer class="
|
|
6
|
-
<div
|
|
7
|
-
class="order-last flex flex-col items-center justify-between gap-xl lg:order-1 lg:items-start"
|
|
8
|
-
>
|
|
18
|
+
<footer :class="root()">
|
|
19
|
+
<UContainer :class="container()">
|
|
20
|
+
<div :class="left()">
|
|
9
21
|
<slot name="left" />
|
|
10
22
|
</div>
|
|
11
|
-
<div class="
|
|
23
|
+
<div :class="center()">
|
|
12
24
|
<slot name="center" />
|
|
13
25
|
</div>
|
|
14
|
-
<div
|
|
15
|
-
class="order-first flex flex-col items-center justify-between gap-xl lg:order-3 lg:flex-1 lg:items-end"
|
|
16
|
-
>
|
|
26
|
+
<div :class="right()">
|
|
17
27
|
<slot name="right" />
|
|
18
28
|
</div>
|
|
19
29
|
</UContainer>
|
|
20
30
|
</footer>
|
|
21
31
|
</template>
|
|
22
|
-
|
|
23
|
-
<style scoped></style>
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
export interface FooterProps {
|
|
2
|
+
}
|
|
3
|
+
export interface FooterEmits {
|
|
4
|
+
}
|
|
1
5
|
declare var __VLS_7: {}, __VLS_9: {}, __VLS_11: {};
|
|
2
6
|
type __VLS_Slots = {} & {
|
|
3
7
|
left?: (props: typeof __VLS_7) => any;
|
|
@@ -6,7 +10,7 @@ type __VLS_Slots = {} & {
|
|
|
6
10
|
} & {
|
|
7
11
|
right?: (props: typeof __VLS_11) => any;
|
|
8
12
|
};
|
|
9
|
-
declare const __VLS_base: import("vue").DefineComponent<
|
|
13
|
+
declare const __VLS_base: import("vue").DefineComponent<FooterProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<FooterProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
10
14
|
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
11
15
|
declare const _default: typeof __VLS_export;
|
|
12
16
|
export default _default;
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
export interface HeaderProps {
|
|
2
|
+
}
|
|
3
|
+
export interface HeaderEmits {
|
|
4
|
+
}
|
|
1
5
|
declare var __VLS_7: {}, __VLS_9: {}, __VLS_11: {}, __VLS_13: {}, __VLS_15: {}, __VLS_17: {};
|
|
2
6
|
type __VLS_Slots = {} & {
|
|
3
7
|
left?: (props: typeof __VLS_7) => any;
|
|
@@ -12,7 +16,7 @@ type __VLS_Slots = {} & {
|
|
|
12
16
|
} & {
|
|
13
17
|
'collapsed-right'?: (props: typeof __VLS_17) => any;
|
|
14
18
|
};
|
|
15
|
-
declare const __VLS_base: import("vue").DefineComponent<
|
|
19
|
+
declare const __VLS_base: import("vue").DefineComponent<HeaderProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<HeaderProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
16
20
|
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
17
21
|
declare const _default: typeof __VLS_export;
|
|
18
22
|
export default _default;
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
<script setup>
|
|
2
2
|
import { tv } from "tailwind-variants";
|
|
3
|
-
const
|
|
3
|
+
const {} = defineProps({});
|
|
4
|
+
const emit = defineEmits([]);
|
|
5
|
+
const headerStyles = tv({
|
|
4
6
|
slots: {
|
|
5
7
|
root: "h-(--ui-header-height)",
|
|
6
8
|
container: "h-full flex flex-row items-center p-sm",
|
|
@@ -21,7 +23,7 @@ const {
|
|
|
21
23
|
collapsedLeft,
|
|
22
24
|
collapsedCenter,
|
|
23
25
|
collapsedRight
|
|
24
|
-
} =
|
|
26
|
+
} = headerStyles();
|
|
25
27
|
</script>
|
|
26
28
|
|
|
27
29
|
<template>
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
export interface HeaderProps {
|
|
2
|
+
}
|
|
3
|
+
export interface HeaderEmits {
|
|
4
|
+
}
|
|
1
5
|
declare var __VLS_7: {}, __VLS_9: {}, __VLS_11: {}, __VLS_13: {}, __VLS_15: {}, __VLS_17: {};
|
|
2
6
|
type __VLS_Slots = {} & {
|
|
3
7
|
left?: (props: typeof __VLS_7) => any;
|
|
@@ -12,7 +16,7 @@ type __VLS_Slots = {} & {
|
|
|
12
16
|
} & {
|
|
13
17
|
'collapsed-right'?: (props: typeof __VLS_17) => any;
|
|
14
18
|
};
|
|
15
|
-
declare const __VLS_base: import("vue").DefineComponent<
|
|
19
|
+
declare const __VLS_base: import("vue").DefineComponent<HeaderProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<HeaderProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
16
20
|
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
17
21
|
declare const _default: typeof __VLS_export;
|
|
18
22
|
export default _default;
|
|
@@ -1,13 +1,15 @@
|
|
|
1
|
-
|
|
1
|
+
export interface HeaderLayerProps {
|
|
2
2
|
id: string;
|
|
3
3
|
order?: number;
|
|
4
4
|
hideOnScroll?: boolean;
|
|
5
|
-
}
|
|
5
|
+
}
|
|
6
|
+
export interface HeaderLayerEmits {
|
|
7
|
+
}
|
|
6
8
|
declare var __VLS_1: {};
|
|
7
9
|
type __VLS_Slots = {} & {
|
|
8
10
|
default?: (props: typeof __VLS_1) => any;
|
|
9
11
|
};
|
|
10
|
-
declare const __VLS_base: import("vue").DefineComponent<
|
|
12
|
+
declare const __VLS_base: import("vue").DefineComponent<HeaderLayerProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<HeaderLayerProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
11
13
|
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
12
14
|
declare const _default: typeof __VLS_export;
|
|
13
15
|
export default _default;
|
|
@@ -2,11 +2,20 @@
|
|
|
2
2
|
import { ref, onMounted, onUnmounted, watch, computed, nextTick } from "vue";
|
|
3
3
|
import { useHeaderStack } from "../../composables";
|
|
4
4
|
import { useWindowScroll } from "@vueuse/core";
|
|
5
|
+
import { tv } from "tailwind-variants";
|
|
5
6
|
const props = defineProps({
|
|
6
7
|
id: { type: String, required: true },
|
|
7
8
|
order: { type: Number, required: false },
|
|
8
9
|
hideOnScroll: { type: Boolean, required: false }
|
|
9
10
|
});
|
|
11
|
+
const emit = defineEmits([]);
|
|
12
|
+
const headerLayerStyles = tv({
|
|
13
|
+
slots: {
|
|
14
|
+
root: "fixed left-0 right-0 z-50 overflow-hidden transition-[top,height,opacity] duration-200 ease-in-out",
|
|
15
|
+
content: "w-full"
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
const { root, content } = headerLayerStyles();
|
|
10
19
|
const { registerHeader, unregisterHeader, getOffsetFor } = useHeaderStack();
|
|
11
20
|
const { y: scrollY } = useWindowScroll();
|
|
12
21
|
const contentRef = ref(null);
|
|
@@ -56,7 +65,7 @@ onUnmounted(() => {
|
|
|
56
65
|
|
|
57
66
|
<template>
|
|
58
67
|
<div
|
|
59
|
-
class="
|
|
68
|
+
:class="root()"
|
|
60
69
|
:style="{
|
|
61
70
|
top: `${topOffset}px`,
|
|
62
71
|
height: isVisible ? `${naturalHeight}px` : '0px',
|
|
@@ -64,7 +73,7 @@ onUnmounted(() => {
|
|
|
64
73
|
pointerEvents: isVisible ? 'auto' : 'none'
|
|
65
74
|
}"
|
|
66
75
|
>
|
|
67
|
-
<div ref="contentRef" class="
|
|
76
|
+
<div ref="contentRef" :class="content()">
|
|
68
77
|
<slot />
|
|
69
78
|
</div>
|
|
70
79
|
</div>
|
|
@@ -1,13 +1,15 @@
|
|
|
1
|
-
|
|
1
|
+
export interface HeaderLayerProps {
|
|
2
2
|
id: string;
|
|
3
3
|
order?: number;
|
|
4
4
|
hideOnScroll?: boolean;
|
|
5
|
-
}
|
|
5
|
+
}
|
|
6
|
+
export interface HeaderLayerEmits {
|
|
7
|
+
}
|
|
6
8
|
declare var __VLS_1: {};
|
|
7
9
|
type __VLS_Slots = {} & {
|
|
8
10
|
default?: (props: typeof __VLS_1) => any;
|
|
9
11
|
};
|
|
10
|
-
declare const __VLS_base: import("vue").DefineComponent<
|
|
12
|
+
declare const __VLS_base: import("vue").DefineComponent<HeaderLayerProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<HeaderLayerProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
11
13
|
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
12
14
|
declare const _default: typeof __VLS_export;
|
|
13
15
|
export default _default;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export interface ImageProps {
|
|
2
|
+
src: string;
|
|
3
|
+
alt?: string;
|
|
4
|
+
height?: string | number;
|
|
5
|
+
width?: string | number;
|
|
6
|
+
loading?: "lazy" | "eager";
|
|
7
|
+
fit?: "cover" | "contain" | "fill" | "inside" | "outside";
|
|
8
|
+
}
|
|
9
|
+
export interface ImageEmits {
|
|
10
|
+
}
|
|
11
|
+
declare const __VLS_export: import("vue").DefineComponent<ImageProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<ImageProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
12
|
+
declare const _default: typeof __VLS_export;
|
|
13
|
+
export default _default;
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
<script setup>
|
|
2
|
+
import { ref, reactive, onMounted, useTemplateRef, watch, nextTick } from "vue";
|
|
3
|
+
import { tv } from "tailwind-variants";
|
|
4
|
+
import { useImage } from "#imports";
|
|
5
|
+
const {
|
|
6
|
+
src,
|
|
7
|
+
alt = "Image",
|
|
8
|
+
height,
|
|
9
|
+
width,
|
|
10
|
+
loading = "lazy",
|
|
11
|
+
fit = "cover"
|
|
12
|
+
} = defineProps({
|
|
13
|
+
src: { type: String, required: true },
|
|
14
|
+
alt: { type: String, required: false },
|
|
15
|
+
height: { type: [String, Number], required: false },
|
|
16
|
+
width: { type: [String, Number], required: false },
|
|
17
|
+
loading: { type: String, required: false },
|
|
18
|
+
fit: { type: String, required: false }
|
|
19
|
+
});
|
|
20
|
+
const emit = defineEmits([]);
|
|
21
|
+
const imageStyles = tv({
|
|
22
|
+
slots: {
|
|
23
|
+
base: "cursor-pointer transition-transform duration-300"
|
|
24
|
+
},
|
|
25
|
+
variants: {
|
|
26
|
+
isExpanded: {
|
|
27
|
+
true: {
|
|
28
|
+
base: "w-full h-full object-contain mx-auto block rounded-lg"
|
|
29
|
+
},
|
|
30
|
+
false: {
|
|
31
|
+
base: "w-full h-full object-cover hover:scale-[1.02] active:scale-95"
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
const { base } = imageStyles();
|
|
37
|
+
const img = useImage();
|
|
38
|
+
const isOpen = ref(false);
|
|
39
|
+
const imgRef = ref(null);
|
|
40
|
+
const imgElement = useTemplateRef("imgRef");
|
|
41
|
+
const metadata = reactive({
|
|
42
|
+
width: 0,
|
|
43
|
+
height: 0,
|
|
44
|
+
size: "",
|
|
45
|
+
format: "",
|
|
46
|
+
mimeType: ""
|
|
47
|
+
});
|
|
48
|
+
function formatBytes(bytes) {
|
|
49
|
+
if (bytes === 0) return "0 Bytes";
|
|
50
|
+
const k = 1024;
|
|
51
|
+
const sizes = ["Bytes", "KB", "MB"];
|
|
52
|
+
const i = Math.floor(Math.log(bytes) / Math.log(k));
|
|
53
|
+
return `${parseFloat((bytes / Math.pow(k, i)).toFixed(2))} ${sizes[i]}`;
|
|
54
|
+
}
|
|
55
|
+
async function fetchExtendedMetadata() {
|
|
56
|
+
try {
|
|
57
|
+
const response = await fetch(src, {
|
|
58
|
+
method: "GET",
|
|
59
|
+
mode: "cors"
|
|
60
|
+
});
|
|
61
|
+
if (!response.ok) throw new Error("Network response was not ok");
|
|
62
|
+
const blob = await response.blob();
|
|
63
|
+
metadata.size = formatBytes(blob.size);
|
|
64
|
+
const type = response.headers.get("content-type") || blob.type;
|
|
65
|
+
if (type) {
|
|
66
|
+
metadata.mimeType = type;
|
|
67
|
+
metadata.format = type.split("/")[1]?.split("+")[0]?.toUpperCase() || "IMG";
|
|
68
|
+
}
|
|
69
|
+
if (metadata.format === "SVG") {
|
|
70
|
+
const tempImg = new Image();
|
|
71
|
+
tempImg.src = URL.createObjectURL(blob);
|
|
72
|
+
await tempImg.decode();
|
|
73
|
+
metadata.width = tempImg.naturalWidth;
|
|
74
|
+
metadata.height = tempImg.naturalHeight;
|
|
75
|
+
URL.revokeObjectURL(tempImg.src);
|
|
76
|
+
}
|
|
77
|
+
} catch (e) {
|
|
78
|
+
console.error("Metadata fetch failed:", e);
|
|
79
|
+
metadata.format = src.split(".").pop()?.toUpperCase() || "IMG";
|
|
80
|
+
metadata.size = "Unknown";
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
function updateMetadata(el) {
|
|
84
|
+
if (!import.meta.client || !el) return;
|
|
85
|
+
if (el.naturalWidth > 0) {
|
|
86
|
+
metadata.width = el.naturalWidth;
|
|
87
|
+
metadata.height = el.naturalHeight;
|
|
88
|
+
fetchExtendedMetadata();
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
function handleImageLoad(event) {
|
|
92
|
+
updateMetadata(event.currentTarget);
|
|
93
|
+
}
|
|
94
|
+
async function downloadImage() {
|
|
95
|
+
try {
|
|
96
|
+
const response = await fetch(src);
|
|
97
|
+
const blob = await response.blob();
|
|
98
|
+
const url = window.URL.createObjectURL(blob);
|
|
99
|
+
const link = document.createElement("a");
|
|
100
|
+
link.href = url;
|
|
101
|
+
link.download = `file-${Date.now()}.${metadata.format.toLowerCase()}`;
|
|
102
|
+
document.body.appendChild(link);
|
|
103
|
+
link.click();
|
|
104
|
+
document.body.removeChild(link);
|
|
105
|
+
window.URL.revokeObjectURL(url);
|
|
106
|
+
} catch (error) {
|
|
107
|
+
console.error("Download failed", error);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
onMounted(() => {
|
|
111
|
+
nextTick(() => {
|
|
112
|
+
const el = imgElement.value?.$el;
|
|
113
|
+
if (el) {
|
|
114
|
+
if (el.complete) {
|
|
115
|
+
updateMetadata(el);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
});
|
|
119
|
+
});
|
|
120
|
+
watch(() => imgElement.value, (newVal) => {
|
|
121
|
+
const el = newVal?.$el;
|
|
122
|
+
if (el && el.complete && el.naturalWidth > 0) {
|
|
123
|
+
updateMetadata(el);
|
|
124
|
+
}
|
|
125
|
+
}, { immediate: true });
|
|
126
|
+
</script>
|
|
127
|
+
|
|
128
|
+
<template>
|
|
129
|
+
<UModal v-model="isOpen" title="Image Viewer" :description="`${src}`" :ui="{
|
|
130
|
+
content: 'w-fit max-w-[98vw] sm:max-w-[95vw] mx-auto'
|
|
131
|
+
}">
|
|
132
|
+
<template #default>
|
|
133
|
+
<div class="relative">
|
|
134
|
+
<NuxtImg
|
|
135
|
+
ref="imgRef"
|
|
136
|
+
:src="src"
|
|
137
|
+
:alt="alt"
|
|
138
|
+
:height="height"
|
|
139
|
+
:width="width"
|
|
140
|
+
:loading="loading"
|
|
141
|
+
:class="base({ isExpanded: false })"
|
|
142
|
+
@click="isOpen = true"
|
|
143
|
+
@load="handleImageLoad"
|
|
144
|
+
/>
|
|
145
|
+
</div>
|
|
146
|
+
</template>
|
|
147
|
+
|
|
148
|
+
<template #body>
|
|
149
|
+
<div class="flex flex-col gap-md">
|
|
150
|
+
<div class="flex-1 min-h-0 w-full flex items-center">
|
|
151
|
+
<NuxtImg
|
|
152
|
+
:src="src"
|
|
153
|
+
:alt="alt"
|
|
154
|
+
:class="base({ isExpanded: true })"
|
|
155
|
+
/>
|
|
156
|
+
</div>
|
|
157
|
+
|
|
158
|
+
<USeparator />
|
|
159
|
+
|
|
160
|
+
<div class="flex items-center justify-between gap-xl">
|
|
161
|
+
<div class="flex flex-col gap-xs">
|
|
162
|
+
<div class="flex flex-row gap-xs items-center">
|
|
163
|
+
<UIcon name="lucide:image" class="size-4" />
|
|
164
|
+
<p class="text-sm">Source: <span class="text-dimmed">{{ src }}</span></p>
|
|
165
|
+
</div>
|
|
166
|
+
<div class="flex flex-row gap-xs items-center">
|
|
167
|
+
<UIcon name="lucide:file-question-mark" class="size-4" />
|
|
168
|
+
<p class="text-sm">Format: <span class="text-dimmed">{{ metadata.format }}</span></p>
|
|
169
|
+
</div>
|
|
170
|
+
<div class="flex flex-row gap-xs items-center">
|
|
171
|
+
<UIcon name="lucide:weight" class="size-4" />
|
|
172
|
+
<p class="text-sm">Size: <span class="text-dimmed">{{ metadata.size || "Unknown" }}</span></p>
|
|
173
|
+
</div>
|
|
174
|
+
<div class="flex flex-row gap-xs items-center">
|
|
175
|
+
<UIcon name="lucide:image-upscale" class="size-4" />
|
|
176
|
+
<p class="text-sm">Dimensions: <span class="text-dimmed">{{ metadata.width }} × {{ metadata.height }}</span></p>
|
|
177
|
+
</div>
|
|
178
|
+
</div>
|
|
179
|
+
|
|
180
|
+
<UButton
|
|
181
|
+
icon="lucide:download"
|
|
182
|
+
label="Download Original"
|
|
183
|
+
@click="downloadImage"
|
|
184
|
+
/>
|
|
185
|
+
</div>
|
|
186
|
+
</div>
|
|
187
|
+
</template>
|
|
188
|
+
</UModal>
|
|
189
|
+
</template>
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export interface ImageProps {
|
|
2
|
+
src: string;
|
|
3
|
+
alt?: string;
|
|
4
|
+
height?: string | number;
|
|
5
|
+
width?: string | number;
|
|
6
|
+
loading?: "lazy" | "eager";
|
|
7
|
+
fit?: "cover" | "contain" | "fill" | "inside" | "outside";
|
|
8
|
+
}
|
|
9
|
+
export interface ImageEmits {
|
|
10
|
+
}
|
|
11
|
+
declare const __VLS_export: import("vue").DefineComponent<ImageProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<ImageProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
12
|
+
declare const _default: typeof __VLS_export;
|
|
13
|
+
export default _default;
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
|
|
1
|
+
export interface LogoProps {
|
|
2
2
|
variant?: "mark" | "type";
|
|
3
|
-
}
|
|
4
|
-
|
|
3
|
+
}
|
|
4
|
+
export interface LogoEmits {
|
|
5
|
+
}
|
|
6
|
+
declare const __VLS_export: import("vue").DefineComponent<LogoProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<LogoProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
5
7
|
declare const _default: typeof __VLS_export;
|
|
6
8
|
export default _default;
|
|
@@ -1,10 +1,18 @@
|
|
|
1
1
|
<script setup>
|
|
2
2
|
import { useAppConfig } from "nuxt/app";
|
|
3
3
|
import { computed } from "#imports";
|
|
4
|
-
|
|
4
|
+
import { tv } from "tailwind-variants";
|
|
5
5
|
const { variant = "mark" } = defineProps({
|
|
6
6
|
variant: { type: String, required: false }
|
|
7
7
|
});
|
|
8
|
+
const emit = defineEmits([]);
|
|
9
|
+
const logoStyles = tv({
|
|
10
|
+
slots: {
|
|
11
|
+
root: ""
|
|
12
|
+
}
|
|
13
|
+
});
|
|
14
|
+
const { root } = logoStyles();
|
|
15
|
+
const appConfig = useAppConfig();
|
|
8
16
|
const logoSrc = computed(() => {
|
|
9
17
|
switch (variant) {
|
|
10
18
|
case "type":
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
|
|
1
|
+
export interface LogoProps {
|
|
2
2
|
variant?: "mark" | "type";
|
|
3
|
-
}
|
|
4
|
-
|
|
3
|
+
}
|
|
4
|
+
export interface LogoEmits {
|
|
5
|
+
}
|
|
6
|
+
declare const __VLS_export: import("vue").DefineComponent<LogoProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<LogoProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
5
7
|
declare const _default: typeof __VLS_export;
|
|
6
8
|
export default _default;
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
|
|
1
|
+
export interface NewsletterSignupProps {
|
|
2
2
|
fieldLabel?: string;
|
|
3
3
|
description?: string;
|
|
4
4
|
placeholder?: string;
|
|
5
5
|
buttonLabel?: string;
|
|
6
|
-
}
|
|
7
|
-
|
|
6
|
+
}
|
|
7
|
+
export interface NewsletterSignupEmits {
|
|
8
|
+
}
|
|
9
|
+
declare const __VLS_export: import("vue").DefineComponent<NewsletterSignupProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<NewsletterSignupProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
8
10
|
declare const _default: typeof __VLS_export;
|
|
9
11
|
export default _default;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
<script setup>
|
|
2
|
+
import { tv } from "tailwind-variants";
|
|
2
3
|
const {
|
|
3
4
|
fieldLabel = "Subscribe to our Newsletter",
|
|
4
5
|
description = "Stay updated on new posts and updates. Unsubscribe at any time.",
|
|
@@ -10,12 +11,19 @@ const {
|
|
|
10
11
|
placeholder: { type: String, required: false },
|
|
11
12
|
buttonLabel: { type: String, required: false }
|
|
12
13
|
});
|
|
14
|
+
const emit = defineEmits([]);
|
|
15
|
+
const newsletterSignupStyles = tv({
|
|
16
|
+
slots: {
|
|
17
|
+
group: "pt-2"
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
const { group } = newsletterSignupStyles();
|
|
13
21
|
</script>
|
|
14
22
|
|
|
15
23
|
<template>
|
|
16
24
|
<UForm>
|
|
17
25
|
<UFormField name="email" :label="fieldLabel" :description="description">
|
|
18
|
-
<UFieldGroup class="
|
|
26
|
+
<UFieldGroup :class="group()">
|
|
19
27
|
<UInput type="email" :placeholder="placeholder" />
|
|
20
28
|
<UButton type="submit" :label="buttonLabel" />
|
|
21
29
|
</UFieldGroup>
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
|
|
1
|
+
export interface NewsletterSignupProps {
|
|
2
2
|
fieldLabel?: string;
|
|
3
3
|
description?: string;
|
|
4
4
|
placeholder?: string;
|
|
5
5
|
buttonLabel?: string;
|
|
6
|
-
}
|
|
7
|
-
|
|
6
|
+
}
|
|
7
|
+
export interface NewsletterSignupEmits {
|
|
8
|
+
}
|
|
9
|
+
declare const __VLS_export: import("vue").DefineComponent<NewsletterSignupProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<NewsletterSignupProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
8
10
|
declare const _default: typeof __VLS_export;
|
|
9
11
|
export default _default;
|
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
interface
|
|
1
|
+
export interface ScrollToTopProps {
|
|
2
2
|
circleStrokeWidth?: number;
|
|
3
3
|
duration?: number;
|
|
4
4
|
}
|
|
5
|
-
|
|
5
|
+
export interface ScrollToTopEmits {
|
|
6
|
+
}
|
|
7
|
+
declare const __VLS_export: import("vue").DefineComponent<ScrollToTopProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<ScrollToTopProps> & Readonly<{}>, {
|
|
6
8
|
circleStrokeWidth: number;
|
|
7
9
|
duration: number;
|
|
8
10
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
@@ -1,9 +1,21 @@
|
|
|
1
1
|
<script setup>
|
|
2
2
|
import { computed, onMounted, onUnmounted, ref } from "vue";
|
|
3
|
+
import { tv } from "tailwind-variants";
|
|
3
4
|
const props = defineProps({
|
|
4
5
|
circleStrokeWidth: { type: Number, required: false, default: 4 },
|
|
5
6
|
duration: { type: Number, required: false, default: 0.1 }
|
|
6
7
|
});
|
|
8
|
+
const emit = defineEmits([]);
|
|
9
|
+
const scrollToTopStyles = tv({
|
|
10
|
+
slots: {
|
|
11
|
+
button: "fixed right-4 bottom-4 z-50 size-20 lg:size-16",
|
|
12
|
+
progressBase: "progress-circle-base size-full",
|
|
13
|
+
svg: "size-full",
|
|
14
|
+
iconContainer: "absolute inset-0 flex items-center justify-center text-center",
|
|
15
|
+
icon: "size-6 text-white"
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
const { button, progressBase, svg, iconContainer, icon } = scrollToTopStyles();
|
|
7
19
|
const scrollPercentage = ref(0);
|
|
8
20
|
const minScrollThreshold = 15;
|
|
9
21
|
const isVisible = computed(() => scrollPercentage.value >= minScrollThreshold);
|
|
@@ -53,13 +65,9 @@ const durationInSeconds = computed(() => `${props.duration}s`);
|
|
|
53
65
|
leave-to-class="opacity-0"
|
|
54
66
|
>
|
|
55
67
|
<div v-if="isVisible">
|
|
56
|
-
<UButton
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
@click="scrollToTop"
|
|
60
|
-
>
|
|
61
|
-
<div class="progress-circle-base size-full">
|
|
62
|
-
<svg class="size-full" viewBox="0 0 100 100">
|
|
68
|
+
<UButton variant="ghost" :class="button()" @click="scrollToTop">
|
|
69
|
+
<div :class="progressBase()">
|
|
70
|
+
<svg :class="svg()" viewBox="0 0 100 100">
|
|
63
71
|
<circle
|
|
64
72
|
cx="50"
|
|
65
73
|
cy="50"
|
|
@@ -81,8 +89,8 @@ const durationInSeconds = computed(() => `${props.duration}s`);
|
|
|
81
89
|
class="gauge-primary-stroke opacity-100"
|
|
82
90
|
/>
|
|
83
91
|
</svg>
|
|
84
|
-
<div class="
|
|
85
|
-
<UIcon name="lucide:arrow-up" class="
|
|
92
|
+
<div :class="iconContainer()">
|
|
93
|
+
<UIcon name="lucide:arrow-up" :class="icon()" />
|
|
86
94
|
</div>
|
|
87
95
|
</div>
|
|
88
96
|
</UButton>
|
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
interface
|
|
1
|
+
export interface ScrollToTopProps {
|
|
2
2
|
circleStrokeWidth?: number;
|
|
3
3
|
duration?: number;
|
|
4
4
|
}
|
|
5
|
-
|
|
5
|
+
export interface ScrollToTopEmits {
|
|
6
|
+
}
|
|
7
|
+
declare const __VLS_export: import("vue").DefineComponent<ScrollToTopProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<ScrollToTopProps> & Readonly<{}>, {
|
|
6
8
|
circleStrokeWidth: number;
|
|
7
9
|
duration: number;
|
|
8
10
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|