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.
Files changed (126) hide show
  1. package/dist/module.json +1 -1
  2. package/dist/module.mjs +1 -1
  3. package/dist/runtime/components/app/Footer.d.vue.ts +5 -1
  4. package/dist/runtime/components/app/Footer.vue +20 -12
  5. package/dist/runtime/components/app/Footer.vue.d.ts +5 -1
  6. package/dist/runtime/components/app/Header.d.vue.ts +5 -1
  7. package/dist/runtime/components/app/Header.vue +4 -2
  8. package/dist/runtime/components/app/Header.vue.d.ts +5 -1
  9. package/dist/runtime/components/app/HeaderLayer.d.vue.ts +5 -3
  10. package/dist/runtime/components/app/HeaderLayer.vue +11 -2
  11. package/dist/runtime/components/app/HeaderLayer.vue.d.ts +5 -3
  12. package/dist/runtime/components/app/Image.d.vue.ts +13 -0
  13. package/dist/runtime/components/app/Image.vue +189 -0
  14. package/dist/runtime/components/app/Image.vue.d.ts +13 -0
  15. package/dist/runtime/components/app/Logo.d.vue.ts +5 -3
  16. package/dist/runtime/components/app/Logo.vue +9 -1
  17. package/dist/runtime/components/app/Logo.vue.d.ts +5 -3
  18. package/dist/runtime/components/app/NewsletterSignup.d.vue.ts +5 -3
  19. package/dist/runtime/components/app/NewsletterSignup.vue +9 -1
  20. package/dist/runtime/components/app/NewsletterSignup.vue.d.ts +5 -3
  21. package/dist/runtime/components/app/ScrollToTop.d.vue.ts +4 -2
  22. package/dist/runtime/components/app/ScrollToTop.vue +17 -9
  23. package/dist/runtime/components/app/ScrollToTop.vue.d.ts +4 -2
  24. package/dist/runtime/components/blocks/Block.d.vue.ts +5 -3
  25. package/dist/runtime/components/blocks/Block.vue +16 -7
  26. package/dist/runtime/components/blocks/Block.vue.d.ts +5 -3
  27. package/dist/runtime/components/blocks/BlockEditRenderer.d.vue.ts +5 -3
  28. package/dist/runtime/components/blocks/BlockEditRenderer.vue +9 -1
  29. package/dist/runtime/components/blocks/BlockEditRenderer.vue.d.ts +5 -3
  30. package/dist/runtime/components/blocks/BlockEditor.vue +4 -33
  31. package/dist/runtime/components/blocks/BlockViewRenderer.d.vue.ts +5 -3
  32. package/dist/runtime/components/blocks/BlockViewRenderer.vue +9 -1
  33. package/dist/runtime/components/blocks/BlockViewRenderer.vue.d.ts +5 -3
  34. package/dist/runtime/components/blocks/TextRenderer.d.vue.ts +5 -3
  35. package/dist/runtime/components/blocks/TextRenderer.vue +8 -0
  36. package/dist/runtime/components/blocks/TextRenderer.vue.d.ts +5 -3
  37. package/dist/runtime/components/blocks/editor/CalloutBlockEditor.d.vue.ts +5 -1
  38. package/dist/runtime/components/blocks/editor/CalloutBlockEditor.vue +8 -0
  39. package/dist/runtime/components/blocks/editor/CalloutBlockEditor.vue.d.ts +5 -1
  40. package/dist/runtime/components/blocks/editor/CardBlockEditor.d.vue.ts +5 -1
  41. package/dist/runtime/components/blocks/editor/CardBlockEditor.vue +9 -1
  42. package/dist/runtime/components/blocks/editor/CardBlockEditor.vue.d.ts +5 -1
  43. package/dist/runtime/components/blocks/editor/ImageBlockEditor.d.vue.ts +11 -3
  44. package/dist/runtime/components/blocks/editor/ImageBlockEditor.vue +21 -9
  45. package/dist/runtime/components/blocks/editor/ImageBlockEditor.vue.d.ts +11 -3
  46. package/dist/runtime/components/blocks/editor/ParagraphBlockEditor.d.vue.ts +5 -3
  47. package/dist/runtime/components/blocks/editor/ParagraphBlockEditor.vue +11 -7
  48. package/dist/runtime/components/blocks/editor/ParagraphBlockEditor.vue.d.ts +5 -3
  49. package/dist/runtime/components/blocks/editor/SectionBlockEditor.d.vue.ts +5 -3
  50. package/dist/runtime/components/blocks/editor/SectionBlockEditor.vue +15 -5
  51. package/dist/runtime/components/blocks/editor/SectionBlockEditor.vue.d.ts +5 -3
  52. package/dist/runtime/components/blocks/editor/TestBlockEditor.d.vue.ts +5 -3
  53. package/dist/runtime/components/blocks/editor/TestBlockEditor.vue +11 -3
  54. package/dist/runtime/components/blocks/editor/TestBlockEditor.vue.d.ts +5 -3
  55. package/dist/runtime/components/blocks/renderer/CalloutBlockRenderer.d.vue.ts +5 -1
  56. package/dist/runtime/components/blocks/renderer/CalloutBlockRenderer.vue +8 -0
  57. package/dist/runtime/components/blocks/renderer/CalloutBlockRenderer.vue.d.ts +5 -1
  58. package/dist/runtime/components/blocks/renderer/CardBlockRenderer.d.vue.ts +5 -1
  59. package/dist/runtime/components/blocks/renderer/CardBlockRenderer.vue +9 -1
  60. package/dist/runtime/components/blocks/renderer/CardBlockRenderer.vue.d.ts +5 -1
  61. package/dist/runtime/components/blocks/renderer/ImageBlockRenderer.d.vue.ts +5 -1
  62. package/dist/runtime/components/blocks/renderer/ImageBlockRenderer.vue +13 -3
  63. package/dist/runtime/components/blocks/renderer/ImageBlockRenderer.vue.d.ts +5 -1
  64. package/dist/runtime/components/blocks/renderer/ParagraphBlockRenderer.d.vue.ts +5 -1
  65. package/dist/runtime/components/blocks/renderer/ParagraphBlockRenderer.vue +8 -0
  66. package/dist/runtime/components/blocks/renderer/ParagraphBlockRenderer.vue.d.ts +5 -1
  67. package/dist/runtime/components/blocks/renderer/SectionBlockRenderer.d.vue.ts +5 -1
  68. package/dist/runtime/components/blocks/renderer/SectionBlockRenderer.vue +8 -0
  69. package/dist/runtime/components/blocks/renderer/SectionBlockRenderer.vue.d.ts +5 -1
  70. package/dist/runtime/components/blocks/renderer/TestBlockRenderer.d.vue.ts +5 -1
  71. package/dist/runtime/components/blocks/renderer/TestBlockRenderer.vue +8 -0
  72. package/dist/runtime/components/blocks/renderer/TestBlockRenderer.vue.d.ts +5 -1
  73. package/dist/runtime/components/cards/TeamCard.d.vue.ts +5 -3
  74. package/dist/runtime/components/cards/TeamCard.vue +25 -7
  75. package/dist/runtime/components/cards/TeamCard.vue.d.ts +5 -3
  76. package/dist/runtime/components/content/Callout.d.vue.ts +5 -3
  77. package/dist/runtime/components/content/Callout.vue +11 -2
  78. package/dist/runtime/components/content/Callout.vue.d.ts +5 -3
  79. package/dist/runtime/components/content/Section.d.vue.ts +5 -3
  80. package/dist/runtime/components/content/Section.vue +87 -86
  81. package/dist/runtime/components/content/Section.vue.d.ts +5 -3
  82. package/dist/runtime/components/content/Test.d.vue.ts +5 -3
  83. package/dist/runtime/components/content/Test.vue +9 -1
  84. package/dist/runtime/components/content/Test.vue.d.ts +5 -3
  85. package/dist/runtime/components/nodes/LinkNode.d.vue.ts +5 -3
  86. package/dist/runtime/components/nodes/LinkNode.vue +11 -1
  87. package/dist/runtime/components/nodes/LinkNode.vue.d.ts +5 -3
  88. package/dist/runtime/components/nodes/TextNode.d.vue.ts +5 -3
  89. package/dist/runtime/components/nodes/TextNode.vue +9 -1
  90. package/dist/runtime/components/nodes/TextNode.vue.d.ts +5 -3
  91. package/dist/runtime/components/page/PageEditor.d.vue.ts +4 -1
  92. package/dist/runtime/components/page/PageEditor.vue +67 -30
  93. package/dist/runtime/components/page/PageEditor.vue.d.ts +4 -1
  94. package/dist/runtime/components/page/PageMention.d.vue.ts +3 -1
  95. package/dist/runtime/components/page/PageMention.vue +15 -4
  96. package/dist/runtime/components/page/PageMention.vue.d.ts +3 -1
  97. package/dist/runtime/components/page/PagePropertiesEditor.d.vue.ts +8 -2
  98. package/dist/runtime/components/page/PagePropertiesEditor.vue +59 -21
  99. package/dist/runtime/components/page/PagePropertiesEditor.vue.d.ts +8 -2
  100. package/dist/runtime/components/page/PagePropertiesRenderer.d.vue.ts +8 -2
  101. package/dist/runtime/components/page/PagePropertiesRenderer.vue +70 -25
  102. package/dist/runtime/components/page/PagePropertiesRenderer.vue.d.ts +8 -2
  103. package/dist/runtime/components/page/PageRenderer.d.vue.ts +3 -1
  104. package/dist/runtime/components/page/PageRenderer.vue +52 -18
  105. package/dist/runtime/components/page/PageRenderer.vue.d.ts +3 -1
  106. package/dist/runtime/components/page/PageSurround.d.vue.ts +5 -3
  107. package/dist/runtime/components/page/PageSurround.vue +54 -24
  108. package/dist/runtime/components/page/PageSurround.vue.d.ts +5 -3
  109. package/dist/runtime/components/page/PageTOC.d.vue.ts +5 -3
  110. package/dist/runtime/components/page/PageTOC.vue +17 -7
  111. package/dist/runtime/components/page/PageTOC.vue.d.ts +5 -3
  112. package/dist/runtime/components/page/modals/CreatePageModal.vue +27 -21
  113. package/dist/runtime/components/page/modals/DeletePageModal.vue +23 -6
  114. package/dist/runtime/components/swatches/ColorSwatch.d.vue.ts +5 -3
  115. package/dist/runtime/components/swatches/ColorSwatch.vue +25 -11
  116. package/dist/runtime/components/swatches/ColorSwatch.vue.d.ts +5 -3
  117. package/dist/runtime/components/swatches/FontSwatch.d.vue.ts +5 -3
  118. package/dist/runtime/components/swatches/FontSwatch.vue +23 -10
  119. package/dist/runtime/components/swatches/FontSwatch.vue.d.ts +5 -3
  120. package/dist/runtime/components/swatches/ImageSwatch.d.vue.ts +5 -3
  121. package/dist/runtime/components/swatches/ImageSwatch.vue +23 -10
  122. package/dist/runtime/components/swatches/ImageSwatch.vue.d.ts +5 -3
  123. package/dist/runtime/components/utilities/Placeholder.d.vue.ts +5 -1
  124. package/dist/runtime/components/utilities/Placeholder.vue +14 -5
  125. package/dist/runtime/components/utilities/Placeholder.vue.d.ts +5 -1
  126. package/package.json +1 -1
package/dist/module.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rimelight-components",
3
- "version": "2.1.16",
3
+ "version": "2.1.18",
4
4
  "docs": "https://rimelight.com/tools/rimelight-components",
5
5
  "configKey": "rimelightComponents",
6
6
  "compatibility": {
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.16";
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<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
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 lang="ts"></script>
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="py-8 lg:py-12">
5
- <UContainer class="flex flex-col justify-between gap-xl lg:flex-row">
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="flex flex-col items-start lg:order-2">
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<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
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<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
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 header = tv({
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
- } = header();
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<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
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
- type __VLS_Props = {
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<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
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="fixed left-0 right-0 z-50 overflow-hidden transition-[top,height,opacity] duration-200 ease-in-out"
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="w-full">
76
+ <div ref="contentRef" :class="content()">
68
77
  <slot />
69
78
  </div>
70
79
  </div>
@@ -1,13 +1,15 @@
1
- type __VLS_Props = {
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<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
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
- type __VLS_Props = {
1
+ export interface LogoProps {
2
2
  variant?: "mark" | "type";
3
- };
4
- declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
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
- const appConfig = useAppConfig();
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
- type __VLS_Props = {
1
+ export interface LogoProps {
2
2
  variant?: "mark" | "type";
3
- };
4
- declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
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
- type __VLS_Props = {
1
+ export interface NewsletterSignupProps {
2
2
  fieldLabel?: string;
3
3
  description?: string;
4
4
  placeholder?: string;
5
5
  buttonLabel?: string;
6
- };
7
- declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
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="pt-2">
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
- type __VLS_Props = {
1
+ export interface NewsletterSignupProps {
2
2
  fieldLabel?: string;
3
3
  description?: string;
4
4
  placeholder?: string;
5
5
  buttonLabel?: string;
6
- };
7
- declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
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 Props {
1
+ export interface ScrollToTopProps {
2
2
  circleStrokeWidth?: number;
3
3
  duration?: number;
4
4
  }
5
- declare const __VLS_export: import("vue").DefineComponent<Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<Props> & Readonly<{}>, {
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
- variant="ghost"
58
- class="fixed right-4 bottom-4 z-50 size-20 lg:size-16"
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="absolute inset-0 flex items-center justify-center text-center">
85
- <UIcon name="lucide:arrow-up" class="size-6 text-white" />
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 Props {
1
+ export interface ScrollToTopProps {
2
2
  circleStrokeWidth?: number;
3
3
  duration?: number;
4
4
  }
5
- declare const __VLS_export: import("vue").DefineComponent<Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<Props> & Readonly<{}>, {
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>;