srcdev-nuxt-components 9.3.6 → 9.3.8
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/.claude/hooks/check-component-update.sh +30 -1
- package/.claude/skills/components/accordian-core.md +7 -7
- package/.claude/skills/components/breadcrumb.md +49 -0
- package/.claude/skills/components/content-docs.md +2 -1
- package/.claude/skills/components/expanding-panel.md +5 -5
- package/.claude/skills/components/navigation-items.md +1 -0
- package/.claude/skills/components/responsive-header.md +1 -0
- package/.claude/skills/components/service-detail.md +156 -0
- package/.claude/skills/components/services-card-grid.md +9 -9
- package/.claude/skills/components/services-card.md +82 -30
- package/.claude/skills/index.md +3 -1
- package/.claude/skills/qa-panel.md +2 -2
- package/.vscode/srcdev-component-breadcrumb.code-snippets +14 -0
- package/.vscode/srcdev-component-service-detail.code-snippets +49 -0
- package/.vscode/srcdev-component-services-card.code-snippets +108 -0
- package/app/components/01.atoms/content-wrappers/docs-pages/ContentDocs.vue +22 -16
- package/app/components/01.atoms/navigation/breadcrumb/Breadcrumb.vue +94 -0
- package/app/components/01.atoms/navigation/breadcrumb/CONSUMER-STYLING.md +32 -0
- package/app/components/01.atoms/navigation/breadcrumb/stories/Breadcrumb.stories.ts +87 -0
- package/app/components/01.atoms/navigation/breadcrumb/tests/Breadcrumb.spec.ts +87 -0
- package/app/components/01.atoms/navigation/breadcrumb/tests/__snapshots__/Breadcrumb.spec.ts.snap +13 -0
- package/app/components/02.molecules/expandable/accordian/AccordianCore.vue +5 -1
- package/app/components/02.molecules/expandable/accordian/tests/AccordianCore.spec.ts +22 -14
- package/app/components/02.molecules/expandable/accordian/tests/__snapshots__/AccordianCore.spec.ts.snap +42 -28
- package/app/components/02.molecules/expandable/expanding-panel/CONSUMER-STYLING.md +8 -10
- package/app/components/02.molecules/expandable/expanding-panel/ExpandingPanel.vue +15 -47
- package/app/components/02.molecules/expandable/expanding-panel/tests/__snapshots__/ExpandingPanel.spec.ts.snap +4 -12
- package/app/components/03.organisms/responsive-header/NavigationItems.vue +91 -4
- package/app/components/03.organisms/responsive-header/ResponsiveHeader.vue +5 -1
- package/app/components/03.organisms/responsive-header/tests/NavigationItems.spec.ts +2 -2
- package/app/components/03.organisms/responsive-header/tests/__snapshots__/NavigationItems.spec.ts.snap +13 -13
- package/app/components/03.organisms/responsive-header/tests/__snapshots__/ResponsiveHeader.spec.ts.snap +13 -13
- package/app/components/03.organisms/services/service-detail/CONSUMER-STYLING.md +181 -0
- package/app/components/03.organisms/services/service-detail/ServiceDetail.vue +480 -0
- package/app/components/03.organisms/services/service-detail/stories/ServiceDetail.stories.ts +282 -0
- package/app/components/03.organisms/services/service-detail/tests/ServiceDetail.spec.ts +270 -0
- package/app/components/03.organisms/services/service-detail/tests/__snapshots__/ServiceDetail.spec.ts.snap +99 -0
- package/app/components/03.organisms/services/services-card/CONSUMER-STYLING.md +129 -0
- package/app/components/03.organisms/services/services-card/ServicesCard.vue +153 -39
- package/app/components/03.organisms/services/services-card/stories/ServicesCard.stories.ts +65 -0
- package/app/components/03.organisms/services/services-card/tests/ServicesCard.spec.ts +82 -0
- package/app/components/03.organisms/services/services-card/tests/__snapshots__/ServicesCard.spec.ts.snap +13 -5
- package/app/components/03.organisms/services/services-grids/ServicesCardGrid.vue +3 -7
- package/app/components/03.organisms/services/services-grids/stories/ServicesCardGrid.stories.ts +126 -2
- package/app/components/03.organisms/services/services-grids/stories/ServicesSectionGrid.stories.ts +6 -0
- package/app/components/03.organisms/services/services-grids/tests/__snapshots__/ServicesCardGrid.spec.ts.snap +51 -27
- package/app/components/03.organisms/services/services-section/ServicesSection.vue +19 -0
- package/app/components/03.organisms/services/services-section/tests/__snapshots__/ServicesSection.spec.ts.snap +8 -8
- package/app/types/components/breadcrumb.ts +4 -0
- package/app/types/components/index.ts +1 -0
- package/package.json +2 -2
- package/app/pages/auto-grid.vue +0 -328
- package/app/pages/banner-video.vue +0 -238
- package/app/pages/forms/examples/buttons/index.vue +0 -259
- package/app/pages/forms/examples/material/checkbox-radio-panels.vue +0 -244
- package/app/pages/forms/examples/material/cssbattle.vue +0 -60
- package/app/pages/forms/examples/material/text-fields.vue +0 -910
- package/app/pages/grid-stack.vue +0 -252
- package/app/pages/index.vue +0 -127
- package/app/pages/page-hero-highlights.vue +0 -204
- package/app/pages/samaritan.vue +0 -327
- package/app/pages/typography/hero-text.vue +0 -97
- package/app/pages/typography/index.vue +0 -39
- package/app/pages/typography/page-body.vue +0 -171
- package/app/pages/typography/page-heading.vue +0 -76
- package/app/pages/typography/page-link.vue +0 -103
- package/app/pages/ui/accordian.vue +0 -211
- package/app/pages/ui/anchor-scroll-tab-navigation.vue +0 -191
- package/app/pages/ui/anchor-scroll.vue +0 -367
- package/app/pages/ui/animated-svg-text.vue +0 -85
- package/app/pages/ui/block-decorators.vue +0 -142
- package/app/pages/ui/card-core.vue +0 -82
- package/app/pages/ui/carousel-basic.vue +0 -292
- package/app/pages/ui/carousel-flip.vue +0 -449
- package/app/pages/ui/carousel-infinite.vue +0 -260
- package/app/pages/ui/clipped-panels.vue +0 -101
- package/app/pages/ui/contact-section.vue +0 -323
- package/app/pages/ui/container-glow.vue +0 -106
- package/app/pages/ui/content-width.vue +0 -126
- package/app/pages/ui/deep-expanding-menu.vue +0 -138
- package/app/pages/ui/display-avatar.vue +0 -253
- package/app/pages/ui/display-banner.vue +0 -78
- package/app/pages/ui/display-chip.vue +0 -367
- package/app/pages/ui/display-details.vue +0 -171
- package/app/pages/ui/display-dialog.vue +0 -344
- package/app/pages/ui/display-pill.vue +0 -396
- package/app/pages/ui/display-prompt.vue +0 -284
- package/app/pages/ui/display-toast.vue +0 -311
- package/app/pages/ui/expanding-panel.vue +0 -326
- package/app/pages/ui/glowing-border.vue +0 -111
- package/app/pages/ui/layout-content-docs.vue +0 -72
- package/app/pages/ui/layout-grid-a.vue +0 -96
- package/app/pages/ui/layout-grid-b.vue +0 -132
- package/app/pages/ui/magnetic-navigation.vue +0 -50
- package/app/pages/ui/marquee-scroller.vue +0 -99
- package/app/pages/ui/mask-element.vue +0 -104
- package/app/pages/ui/masonry-columns.vue +0 -55
- package/app/pages/ui/masonry-grid-ordered-experiment.vue +0 -79
- package/app/pages/ui/masonry-grid-ordered.vue +0 -56
- package/app/pages/ui/masonry-grid-sorted.vue +0 -55
- package/app/pages/ui/masonry-grid.vue +0 -55
- package/app/pages/ui/navigation/navigation-horizontal.vue +0 -484
- package/app/pages/ui/navigation/site-navigation/about.vue +0 -36
- package/app/pages/ui/navigation/site-navigation/contact.vue +0 -39
- package/app/pages/ui/navigation/site-navigation/index.vue +0 -38
- package/app/pages/ui/navigation/site-navigation/portfolio.vue +0 -43
- package/app/pages/ui/navigation/site-navigation/services.vue +0 -42
- package/app/pages/ui/navigation/tab-navigation.vue +0 -493
- package/app/pages/ui/page-row.vue +0 -127
- package/app/pages/ui/price-list.vue +0 -65
- package/app/pages/ui/profile-section.vue +0 -142
- package/app/pages/ui/qr-code/[componentName].vue +0 -218
- package/app/pages/ui/rotating-carousel.vue +0 -154
- package/app/pages/ui/scroll-reveal-image.vue +0 -483
- package/app/pages/ui/section-parallax.vue +0 -54
- package/app/pages/ui/services/colour-finder.vue +0 -43
- package/app/pages/ui/services/services-cards.vue +0 -57
- package/app/pages/ui/services/services-section/[slug].vue +0 -61
- package/app/pages/ui/services/services-sections-compact.vue +0 -64
- package/app/pages/ui/settings.vue +0 -54
- package/app/pages/ui/simple-grid.vue +0 -55
- package/app/pages/ui/slider-gallery.vue +0 -261
- package/app/pages/ui/tabs-y.vue +0 -107
- package/app/pages/ui/tabs.vue +0 -189
- package/app/pages/ui/tooltips.vue +0 -104
- package/app/pages/ui/wipe-away-vertical.vue +0 -129
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<div>
|
|
3
|
-
<NuxtLayout name="default">
|
|
4
|
-
<template #layout-content>
|
|
5
|
-
<PageRow tag="div" variant="popout" :style-class-passthrough="['mbe-20']">
|
|
6
|
-
<h1 class="page-heading-3">Masonry Grid Ordered</h1>
|
|
7
|
-
<p class="page-body-normal">Masonry grid ordered displaying dummy posts data</p>
|
|
8
|
-
<CanvasSwitcher v-model:canvas-name="canvasName" />
|
|
9
|
-
</PageRow>
|
|
10
|
-
|
|
11
|
-
<PageRow tag="div" variant="popout" :style-class-passthrough="['mbe-20']">
|
|
12
|
-
<div v-if="status === 'success'" class="masonry-columns">
|
|
13
|
-
<div
|
|
14
|
-
v-for="(item, index) in quotesData?.quotes.slice(0, displayCount)"
|
|
15
|
-
:key="index"
|
|
16
|
-
class="p-10 border border-1 border-grey-dark border-r-4"
|
|
17
|
-
>
|
|
18
|
-
<p class="text-normal wght-700">{{ index + 1 }}: {{ item.author }}</p>
|
|
19
|
-
<p class="text-normal">{{ item.quote }}</p>
|
|
20
|
-
</div>
|
|
21
|
-
</div>
|
|
22
|
-
<p v-else class="page-body-normal">…Loading</p>
|
|
23
|
-
</PageRow>
|
|
24
|
-
</template>
|
|
25
|
-
</NuxtLayout>
|
|
26
|
-
</div>
|
|
27
|
-
</template>
|
|
28
|
-
|
|
29
|
-
<script setup lang="ts">
|
|
30
|
-
import type { IQuotes } from "~/types/types.quotes";
|
|
31
|
-
import type { MediaCanvas } from "~/types/components";
|
|
32
|
-
|
|
33
|
-
definePageMeta({
|
|
34
|
-
layout: false,
|
|
35
|
-
});
|
|
36
|
-
|
|
37
|
-
useHead({
|
|
38
|
-
title: "Masonry Grid Ordered",
|
|
39
|
-
meta: [{ name: "description", content: "Masonry Grid Ordered" }],
|
|
40
|
-
bodyAttrs: {
|
|
41
|
-
class: "",
|
|
42
|
-
},
|
|
43
|
-
});
|
|
44
|
-
const canvasName = ref<MediaCanvas>("desktopCanvas");
|
|
45
|
-
|
|
46
|
-
const displayCount = 12;
|
|
47
|
-
const { data: quotesData, status } = await useFetch<IQuotes>("https://dummyjson.com/quotes");
|
|
48
|
-
</script>
|
|
49
|
-
|
|
50
|
-
<style lang="css">
|
|
51
|
-
.masonry-columns {
|
|
52
|
-
/* column-count: 3; */
|
|
53
|
-
columns: 300px;
|
|
54
|
-
}
|
|
55
|
-
</style>
|
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<div>
|
|
3
|
-
<NuxtLayout name="default">
|
|
4
|
-
<template #layout-content>
|
|
5
|
-
<PageRow tag="div" variant="popout" :style-class-passthrough="['mbe-20']">
|
|
6
|
-
<h1 class="page-heading-3">Masonry Grid Ordered</h1>
|
|
7
|
-
<p class="page-body-normal">Masonry grid ordered displaying dummy posts data</p>
|
|
8
|
-
<CanvasSwitcher v-model:canvas-name="canvasName" />
|
|
9
|
-
</PageRow>
|
|
10
|
-
|
|
11
|
-
<PageRow tag="div" variant="full" :style-class-passthrough="['mbe-20']">
|
|
12
|
-
<MasonryGridOrderedGridExperiment
|
|
13
|
-
v-if="status === 'success'"
|
|
14
|
-
:grid-data="quotesData?.quotes?.slice(0, displayCount).map((q) => ({ ...q, id: String(q.id) })) ?? []"
|
|
15
|
-
:gap="12"
|
|
16
|
-
:min-tile-width="300"
|
|
17
|
-
:fixed-width="useFixedWidth"
|
|
18
|
-
:style-class-passthrough="[canvasName, 'mi-auto']"
|
|
19
|
-
>
|
|
20
|
-
<template v-for="(item, index) in quotesData?.quotes.slice(0, displayCount)" :key="item.id" #[item.id]>
|
|
21
|
-
<div class="demo-grid-item-content">
|
|
22
|
-
<p class="text-normal wght-700">{{ index + 1 }}: {{ item.author }}</p>
|
|
23
|
-
<p class="text-normal">{{ item.quote }}</p>
|
|
24
|
-
</div>
|
|
25
|
-
</template>
|
|
26
|
-
</MasonryGridOrderedGridExperiment>
|
|
27
|
-
<p v-else class="page-body-normal">…Loading</p>
|
|
28
|
-
</PageRow>
|
|
29
|
-
</template>
|
|
30
|
-
</NuxtLayout>
|
|
31
|
-
</div>
|
|
32
|
-
</template>
|
|
33
|
-
|
|
34
|
-
<script setup lang="ts">
|
|
35
|
-
import type { IQuotes } from "~/types/types.quotes";
|
|
36
|
-
import type { MediaCanvas } from "~/types/components";
|
|
37
|
-
|
|
38
|
-
definePageMeta({
|
|
39
|
-
layout: false,
|
|
40
|
-
});
|
|
41
|
-
|
|
42
|
-
useHead({
|
|
43
|
-
title: "Masonry Grid Ordered",
|
|
44
|
-
meta: [{ name: "description", content: "Masonry Grid Ordered" }],
|
|
45
|
-
bodyAttrs: {
|
|
46
|
-
class: "",
|
|
47
|
-
},
|
|
48
|
-
});
|
|
49
|
-
const canvasName = ref<MediaCanvas>("desktopCanvas");
|
|
50
|
-
|
|
51
|
-
const useFixedWidth = true;
|
|
52
|
-
const displayCount = 12;
|
|
53
|
-
const { data: quotesData, status } = await useFetch<IQuotes>("https://dummyjson.com/quotes");
|
|
54
|
-
</script>
|
|
55
|
-
|
|
56
|
-
<style lang="css">
|
|
57
|
-
.mi-auto {
|
|
58
|
-
--_border-color: light-dark(hsl(0, 29%, 3%), hsl(0, 0%, 92%));
|
|
59
|
-
|
|
60
|
-
&.masonry-grid-ordered {
|
|
61
|
-
.masonry-grid-ordered-wrapper {
|
|
62
|
-
background-color: blueviolet;
|
|
63
|
-
|
|
64
|
-
.masonry-grid-ordered-item {
|
|
65
|
-
background-color: darkcyan;
|
|
66
|
-
|
|
67
|
-
.masonry-grid-ordered-content {
|
|
68
|
-
background-color: brown;
|
|
69
|
-
|
|
70
|
-
.demo-grid-item-content {
|
|
71
|
-
outline: 0.1rem solid var(--_border-color);
|
|
72
|
-
padding: 1.2rem;
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
</style>
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<div>
|
|
3
|
-
<NuxtLayout name="default">
|
|
4
|
-
<template #layout-content>
|
|
5
|
-
<PageRow tag="div" variant="popout" :style-class-passthrough="['mbe-20']">
|
|
6
|
-
<h1 class="page-heading-3">Masonry Grid Ordered</h1>
|
|
7
|
-
<p class="page-body-normal">Masonry grid ordered displaying dummy posts data</p>
|
|
8
|
-
<CanvasSwitcher v-model:canvas-name="canvasName" />
|
|
9
|
-
</PageRow>
|
|
10
|
-
|
|
11
|
-
<PageRow tag="div" variant="popout" :style-class-passthrough="['mbe-20']">
|
|
12
|
-
<MasonryGridOrdered
|
|
13
|
-
v-if="status === 'success'"
|
|
14
|
-
:grid-data="quotesData?.quotes.slice(0, displayCount) ?? []"
|
|
15
|
-
:gap="12"
|
|
16
|
-
:min-tile-width="300"
|
|
17
|
-
:fixed-width="useFixedWidth"
|
|
18
|
-
:style-class-passthrough="[canvasName, 'mi-auto']"
|
|
19
|
-
>
|
|
20
|
-
<template v-for="(item, index) in quotesData?.quotes.slice(0, displayCount)" :key="item.id" #[item.id]>
|
|
21
|
-
<div class="p-10 border border-1 border-grey-dark border-r-4">
|
|
22
|
-
<p class="text-normal wght-700">{{ index + 1 }}: {{ item.author }}</p>
|
|
23
|
-
<p class="text-normal">{{ item.quote }}</p>
|
|
24
|
-
</div>
|
|
25
|
-
</template>
|
|
26
|
-
</MasonryGridOrdered>
|
|
27
|
-
<p v-else class="page-body-normal">…Loading</p>
|
|
28
|
-
</PageRow>
|
|
29
|
-
</template>
|
|
30
|
-
</NuxtLayout>
|
|
31
|
-
</div>
|
|
32
|
-
</template>
|
|
33
|
-
|
|
34
|
-
<script setup lang="ts">
|
|
35
|
-
import type { IQuotes } from "~/types/types.quotes";
|
|
36
|
-
import type { MediaCanvas } from "~/types/components";
|
|
37
|
-
|
|
38
|
-
definePageMeta({
|
|
39
|
-
layout: false,
|
|
40
|
-
});
|
|
41
|
-
|
|
42
|
-
useHead({
|
|
43
|
-
title: "Masonry Grid Ordered",
|
|
44
|
-
meta: [{ name: "description", content: "Masonry Grid Ordered" }],
|
|
45
|
-
bodyAttrs: {
|
|
46
|
-
class: "",
|
|
47
|
-
},
|
|
48
|
-
});
|
|
49
|
-
const canvasName = ref<MediaCanvas>("desktopCanvas");
|
|
50
|
-
|
|
51
|
-
const useFixedWidth = true;
|
|
52
|
-
const displayCount = 12;
|
|
53
|
-
const { data: quotesData, status } = await useFetch<IQuotes>("https://dummyjson.com/quotes");
|
|
54
|
-
</script>
|
|
55
|
-
|
|
56
|
-
<style lang="css"></style>
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<div>
|
|
3
|
-
<NuxtLayout name="default">
|
|
4
|
-
<template #layout-content>
|
|
5
|
-
<PageRow tag="div" variant="full" :style-class-passthrough="['mbe-20']">
|
|
6
|
-
<h1 class="page-heading-2">Masonry Grid</h1>
|
|
7
|
-
<CanvasSwitcher v-model:canvas-name="canvasName" />
|
|
8
|
-
</PageRow>
|
|
9
|
-
|
|
10
|
-
<PageRow tag="div" variant="popout" :style-class-passthrough="['mbe-20']">
|
|
11
|
-
<MasonryGridSorted
|
|
12
|
-
:grid-data="quotesData?.quotes.slice(0, qoutesDisplayCount) ?? []"
|
|
13
|
-
:item-min-width="350"
|
|
14
|
-
:gap="3.2"
|
|
15
|
-
unit="rem"
|
|
16
|
-
:style-class-passthrough="[canvasName, 'mi-auto']"
|
|
17
|
-
>
|
|
18
|
-
<template
|
|
19
|
-
v-for="(item, index) in quotesData?.quotes.slice(0, qoutesDisplayCount)"
|
|
20
|
-
:key="item.id"
|
|
21
|
-
#[item.id]
|
|
22
|
-
>
|
|
23
|
-
<div class="">
|
|
24
|
-
<p class="">{{ index + 1 }}: {{ item.author }}</p>
|
|
25
|
-
<p class="">{{ item.quote }}</p>
|
|
26
|
-
</div>
|
|
27
|
-
</template>
|
|
28
|
-
</MasonryGridSorted>
|
|
29
|
-
</PageRow>
|
|
30
|
-
</template>
|
|
31
|
-
</NuxtLayout>
|
|
32
|
-
</div>
|
|
33
|
-
</template>
|
|
34
|
-
|
|
35
|
-
<script setup lang="ts">
|
|
36
|
-
import type { IQuotes } from "~/types/types.quotes";
|
|
37
|
-
import type { MediaCanvas } from "~/types/components";
|
|
38
|
-
|
|
39
|
-
definePageMeta({
|
|
40
|
-
layout: false,
|
|
41
|
-
});
|
|
42
|
-
|
|
43
|
-
useHead({
|
|
44
|
-
title: "Masonry Grid",
|
|
45
|
-
meta: [{ name: "description", content: "Masonry Grid - Nuxt Components Layer extending a Nuxt project" }],
|
|
46
|
-
bodyAttrs: {
|
|
47
|
-
class: "home",
|
|
48
|
-
},
|
|
49
|
-
});
|
|
50
|
-
|
|
51
|
-
const canvasName = ref<MediaCanvas>("desktopCanvas");
|
|
52
|
-
|
|
53
|
-
const qoutesDisplayCount = 21;
|
|
54
|
-
const { data: quotesData } = await useFetch<IQuotes>("https://dummyjson.com/quotes");
|
|
55
|
-
</script>
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<div>
|
|
3
|
-
<NuxtLayout name="default">
|
|
4
|
-
<template #layout-content>
|
|
5
|
-
<PageRow tag="div" variant="full" :style-class-passthrough="['mbe-20']">
|
|
6
|
-
<h1 class="page-heading-2">Masonry Grid</h1>
|
|
7
|
-
<CanvasSwitcher v-model:canvas-name="canvasName" />
|
|
8
|
-
</PageRow>
|
|
9
|
-
|
|
10
|
-
<PageRow tag="div" variant="popout" :style-class-passthrough="['mbe-20']">
|
|
11
|
-
<MasonryGrid
|
|
12
|
-
:grid-data="quotesData?.quotes.slice(0, qoutesDisplayCount) ?? []"
|
|
13
|
-
:item-min-width="350"
|
|
14
|
-
:gap="3.2"
|
|
15
|
-
unit="rem"
|
|
16
|
-
:style-class-passthrough="[canvasName, 'mi-auto']"
|
|
17
|
-
>
|
|
18
|
-
<template
|
|
19
|
-
v-for="(item, index) in quotesData?.quotes.slice(0, qoutesDisplayCount)"
|
|
20
|
-
:key="item.id"
|
|
21
|
-
#[item.id]
|
|
22
|
-
>
|
|
23
|
-
<div class="">
|
|
24
|
-
<p class="">{{ index + 1 }}: {{ item.author }}</p>
|
|
25
|
-
<p class="">{{ item.quote }}</p>
|
|
26
|
-
</div>
|
|
27
|
-
</template>
|
|
28
|
-
</MasonryGrid>
|
|
29
|
-
</PageRow>
|
|
30
|
-
</template>
|
|
31
|
-
</NuxtLayout>
|
|
32
|
-
</div>
|
|
33
|
-
</template>
|
|
34
|
-
|
|
35
|
-
<script setup lang="ts">
|
|
36
|
-
import type { IQuotes } from "~/types/types.quotes";
|
|
37
|
-
import type { MediaCanvas } from "~/types/components";
|
|
38
|
-
|
|
39
|
-
definePageMeta({
|
|
40
|
-
layout: false,
|
|
41
|
-
});
|
|
42
|
-
|
|
43
|
-
useHead({
|
|
44
|
-
title: "Masonry Grid",
|
|
45
|
-
meta: [{ name: "description", content: "Masonry Grid - Nuxt Components Layer extending a Nuxt project" }],
|
|
46
|
-
bodyAttrs: {
|
|
47
|
-
class: "home",
|
|
48
|
-
},
|
|
49
|
-
});
|
|
50
|
-
|
|
51
|
-
const canvasName = ref<MediaCanvas>("desktopCanvas");
|
|
52
|
-
|
|
53
|
-
const qoutesDisplayCount = 21;
|
|
54
|
-
const { data: quotesData } = await useFetch<IQuotes>("https://dummyjson.com/quotes");
|
|
55
|
-
</script>
|