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.
Files changed (126) hide show
  1. package/.claude/hooks/check-component-update.sh +30 -1
  2. package/.claude/skills/components/accordian-core.md +7 -7
  3. package/.claude/skills/components/breadcrumb.md +49 -0
  4. package/.claude/skills/components/content-docs.md +2 -1
  5. package/.claude/skills/components/expanding-panel.md +5 -5
  6. package/.claude/skills/components/navigation-items.md +1 -0
  7. package/.claude/skills/components/responsive-header.md +1 -0
  8. package/.claude/skills/components/service-detail.md +156 -0
  9. package/.claude/skills/components/services-card-grid.md +9 -9
  10. package/.claude/skills/components/services-card.md +82 -30
  11. package/.claude/skills/index.md +3 -1
  12. package/.claude/skills/qa-panel.md +2 -2
  13. package/.vscode/srcdev-component-breadcrumb.code-snippets +14 -0
  14. package/.vscode/srcdev-component-service-detail.code-snippets +49 -0
  15. package/.vscode/srcdev-component-services-card.code-snippets +108 -0
  16. package/app/components/01.atoms/content-wrappers/docs-pages/ContentDocs.vue +22 -16
  17. package/app/components/01.atoms/navigation/breadcrumb/Breadcrumb.vue +94 -0
  18. package/app/components/01.atoms/navigation/breadcrumb/CONSUMER-STYLING.md +32 -0
  19. package/app/components/01.atoms/navigation/breadcrumb/stories/Breadcrumb.stories.ts +87 -0
  20. package/app/components/01.atoms/navigation/breadcrumb/tests/Breadcrumb.spec.ts +87 -0
  21. package/app/components/01.atoms/navigation/breadcrumb/tests/__snapshots__/Breadcrumb.spec.ts.snap +13 -0
  22. package/app/components/02.molecules/expandable/accordian/AccordianCore.vue +5 -1
  23. package/app/components/02.molecules/expandable/accordian/tests/AccordianCore.spec.ts +22 -14
  24. package/app/components/02.molecules/expandable/accordian/tests/__snapshots__/AccordianCore.spec.ts.snap +42 -28
  25. package/app/components/02.molecules/expandable/expanding-panel/CONSUMER-STYLING.md +8 -10
  26. package/app/components/02.molecules/expandable/expanding-panel/ExpandingPanel.vue +15 -47
  27. package/app/components/02.molecules/expandable/expanding-panel/tests/__snapshots__/ExpandingPanel.spec.ts.snap +4 -12
  28. package/app/components/03.organisms/responsive-header/NavigationItems.vue +91 -4
  29. package/app/components/03.organisms/responsive-header/ResponsiveHeader.vue +5 -1
  30. package/app/components/03.organisms/responsive-header/tests/NavigationItems.spec.ts +2 -2
  31. package/app/components/03.organisms/responsive-header/tests/__snapshots__/NavigationItems.spec.ts.snap +13 -13
  32. package/app/components/03.organisms/responsive-header/tests/__snapshots__/ResponsiveHeader.spec.ts.snap +13 -13
  33. package/app/components/03.organisms/services/service-detail/CONSUMER-STYLING.md +181 -0
  34. package/app/components/03.organisms/services/service-detail/ServiceDetail.vue +480 -0
  35. package/app/components/03.organisms/services/service-detail/stories/ServiceDetail.stories.ts +282 -0
  36. package/app/components/03.organisms/services/service-detail/tests/ServiceDetail.spec.ts +270 -0
  37. package/app/components/03.organisms/services/service-detail/tests/__snapshots__/ServiceDetail.spec.ts.snap +99 -0
  38. package/app/components/03.organisms/services/services-card/CONSUMER-STYLING.md +129 -0
  39. package/app/components/03.organisms/services/services-card/ServicesCard.vue +153 -39
  40. package/app/components/03.organisms/services/services-card/stories/ServicesCard.stories.ts +65 -0
  41. package/app/components/03.organisms/services/services-card/tests/ServicesCard.spec.ts +82 -0
  42. package/app/components/03.organisms/services/services-card/tests/__snapshots__/ServicesCard.spec.ts.snap +13 -5
  43. package/app/components/03.organisms/services/services-grids/ServicesCardGrid.vue +3 -7
  44. package/app/components/03.organisms/services/services-grids/stories/ServicesCardGrid.stories.ts +126 -2
  45. package/app/components/03.organisms/services/services-grids/stories/ServicesSectionGrid.stories.ts +6 -0
  46. package/app/components/03.organisms/services/services-grids/tests/__snapshots__/ServicesCardGrid.spec.ts.snap +51 -27
  47. package/app/components/03.organisms/services/services-section/ServicesSection.vue +19 -0
  48. package/app/components/03.organisms/services/services-section/tests/__snapshots__/ServicesSection.spec.ts.snap +8 -8
  49. package/app/types/components/breadcrumb.ts +4 -0
  50. package/app/types/components/index.ts +1 -0
  51. package/package.json +2 -2
  52. package/app/pages/auto-grid.vue +0 -328
  53. package/app/pages/banner-video.vue +0 -238
  54. package/app/pages/forms/examples/buttons/index.vue +0 -259
  55. package/app/pages/forms/examples/material/checkbox-radio-panels.vue +0 -244
  56. package/app/pages/forms/examples/material/cssbattle.vue +0 -60
  57. package/app/pages/forms/examples/material/text-fields.vue +0 -910
  58. package/app/pages/grid-stack.vue +0 -252
  59. package/app/pages/index.vue +0 -127
  60. package/app/pages/page-hero-highlights.vue +0 -204
  61. package/app/pages/samaritan.vue +0 -327
  62. package/app/pages/typography/hero-text.vue +0 -97
  63. package/app/pages/typography/index.vue +0 -39
  64. package/app/pages/typography/page-body.vue +0 -171
  65. package/app/pages/typography/page-heading.vue +0 -76
  66. package/app/pages/typography/page-link.vue +0 -103
  67. package/app/pages/ui/accordian.vue +0 -211
  68. package/app/pages/ui/anchor-scroll-tab-navigation.vue +0 -191
  69. package/app/pages/ui/anchor-scroll.vue +0 -367
  70. package/app/pages/ui/animated-svg-text.vue +0 -85
  71. package/app/pages/ui/block-decorators.vue +0 -142
  72. package/app/pages/ui/card-core.vue +0 -82
  73. package/app/pages/ui/carousel-basic.vue +0 -292
  74. package/app/pages/ui/carousel-flip.vue +0 -449
  75. package/app/pages/ui/carousel-infinite.vue +0 -260
  76. package/app/pages/ui/clipped-panels.vue +0 -101
  77. package/app/pages/ui/contact-section.vue +0 -323
  78. package/app/pages/ui/container-glow.vue +0 -106
  79. package/app/pages/ui/content-width.vue +0 -126
  80. package/app/pages/ui/deep-expanding-menu.vue +0 -138
  81. package/app/pages/ui/display-avatar.vue +0 -253
  82. package/app/pages/ui/display-banner.vue +0 -78
  83. package/app/pages/ui/display-chip.vue +0 -367
  84. package/app/pages/ui/display-details.vue +0 -171
  85. package/app/pages/ui/display-dialog.vue +0 -344
  86. package/app/pages/ui/display-pill.vue +0 -396
  87. package/app/pages/ui/display-prompt.vue +0 -284
  88. package/app/pages/ui/display-toast.vue +0 -311
  89. package/app/pages/ui/expanding-panel.vue +0 -326
  90. package/app/pages/ui/glowing-border.vue +0 -111
  91. package/app/pages/ui/layout-content-docs.vue +0 -72
  92. package/app/pages/ui/layout-grid-a.vue +0 -96
  93. package/app/pages/ui/layout-grid-b.vue +0 -132
  94. package/app/pages/ui/magnetic-navigation.vue +0 -50
  95. package/app/pages/ui/marquee-scroller.vue +0 -99
  96. package/app/pages/ui/mask-element.vue +0 -104
  97. package/app/pages/ui/masonry-columns.vue +0 -55
  98. package/app/pages/ui/masonry-grid-ordered-experiment.vue +0 -79
  99. package/app/pages/ui/masonry-grid-ordered.vue +0 -56
  100. package/app/pages/ui/masonry-grid-sorted.vue +0 -55
  101. package/app/pages/ui/masonry-grid.vue +0 -55
  102. package/app/pages/ui/navigation/navigation-horizontal.vue +0 -484
  103. package/app/pages/ui/navigation/site-navigation/about.vue +0 -36
  104. package/app/pages/ui/navigation/site-navigation/contact.vue +0 -39
  105. package/app/pages/ui/navigation/site-navigation/index.vue +0 -38
  106. package/app/pages/ui/navigation/site-navigation/portfolio.vue +0 -43
  107. package/app/pages/ui/navigation/site-navigation/services.vue +0 -42
  108. package/app/pages/ui/navigation/tab-navigation.vue +0 -493
  109. package/app/pages/ui/page-row.vue +0 -127
  110. package/app/pages/ui/price-list.vue +0 -65
  111. package/app/pages/ui/profile-section.vue +0 -142
  112. package/app/pages/ui/qr-code/[componentName].vue +0 -218
  113. package/app/pages/ui/rotating-carousel.vue +0 -154
  114. package/app/pages/ui/scroll-reveal-image.vue +0 -483
  115. package/app/pages/ui/section-parallax.vue +0 -54
  116. package/app/pages/ui/services/colour-finder.vue +0 -43
  117. package/app/pages/ui/services/services-cards.vue +0 -57
  118. package/app/pages/ui/services/services-section/[slug].vue +0 -61
  119. package/app/pages/ui/services/services-sections-compact.vue +0 -64
  120. package/app/pages/ui/settings.vue +0 -54
  121. package/app/pages/ui/simple-grid.vue +0 -55
  122. package/app/pages/ui/slider-gallery.vue +0 -261
  123. package/app/pages/ui/tabs-y.vue +0 -107
  124. package/app/pages/ui/tabs.vue +0 -189
  125. package/app/pages/ui/tooltips.vue +0 -104
  126. package/app/pages/ui/wipe-away-vertical.vue +0 -129
@@ -1,252 +0,0 @@
1
- <template>
2
- <div>
3
- <NuxtLayout name="default">
4
- <template #layout-content>
5
- <!-- Demo 3: BannerVideo + overlay -->
6
- <PageRow tag="div" variant="full" :style-class-passthrough="['mbe-48']">
7
- <GridStack :tag="tag" class="grid-stack-video-demo">
8
- <template #layer-1>
9
- <BannerVideo
10
- src="/images/banners/video/lake-banner.mp4"
11
- poster="/images/banners/video/lake-banner.jpg"
12
- alt="A serene lake landscape"
13
- aspect-ratio="4/3"
14
- object-fit="cover"
15
- vertical-position="center"
16
- horizontal-position="center"
17
- />
18
- </template>
19
- <template #layer-2>
20
- <div class="video-overlay">
21
- <div class="video-overlay__content">
22
- <p class="video-overlay__eyebrow">GridStack layer-2</p>
23
- <h2 class="video-overlay__heading">Content over video</h2>
24
- <p class="video-overlay__body">
25
- This layer sits on top of the BannerVideo without
26
- <code>position: absolute</code>
27
- .
28
- </p>
29
- </div>
30
- </div>
31
- </template>
32
- </GridStack>
33
- </PageRow>
34
-
35
- <PageRow tag="div" variant="full" :style-class-passthrough="['mbe-32']">
36
- <h1 class="page-heading-1">GridStack</h1>
37
- <p class="page-body-normal">
38
- Stacks slot content in the z-axis using
39
- <code>grid-template-areas</code>
40
- — no
41
- <code>position: absolute</code>
42
- . Layers share a single grid area; DOM order determines z-order (last slot is on top).
43
- </p>
44
- </PageRow>
45
-
46
- <!-- Demo 1: Two layers -->
47
- <PageRow tag="div" variant="full" :style-class-passthrough="['mbe-48']">
48
- <h2 class="page-heading-2 mbe-16">Two layers</h2>
49
- <GridStack class="grid-stack-demo">
50
- <template #layer-1>
51
- <div class="demo-layer demo-layer--base">layer-1 (base)</div>
52
- </template>
53
- <template #layer-2>
54
- <div class="demo-layer demo-layer--overlay">layer-2 (overlay)</div>
55
- </template>
56
- </GridStack>
57
- </PageRow>
58
-
59
- <!-- Demo 2: Three layers -->
60
- <PageRow tag="div" variant="full" :style-class-passthrough="['mbe-48']">
61
- <h2 class="page-heading-2 mbe-16">Three layers</h2>
62
- <GridStack class="grid-stack-demo">
63
- <template #layer-1>
64
- <div class="demo-layer demo-layer--base">layer-1 (base)</div>
65
- </template>
66
- <template #layer-2>
67
- <div class="demo-layer demo-layer--mid">layer-2 (mid)</div>
68
- </template>
69
- <template #layer-3>
70
- <div class="demo-layer demo-layer--overlay">layer-3 (overlay)</div>
71
- </template>
72
- </GridStack>
73
- </PageRow>
74
-
75
- <!-- Controls -->
76
- <PageRow tag="div" variant="full">
77
- <div class="grid-stack-demo-controls">
78
- <p class="demo-controls__heading">Props (video demo)</p>
79
- <div class="demo-controls__row">
80
- <MultipleRadiobuttons
81
- v-model="tag"
82
- v-model:field-data="tagData"
83
- name="tag"
84
- label="tag"
85
- legend="tag"
86
- error-message=""
87
- :is-button="true"
88
- :is-pill="true"
89
- :field-has-error="false"
90
- options-layout="inline"
91
- />
92
- </div>
93
- </div>
94
- </PageRow>
95
- </template>
96
- </NuxtLayout>
97
- </div>
98
- </template>
99
-
100
- <script setup lang="ts">
101
- import type { IFormMultipleOptions } from "~/types/forms/types.forms";
102
-
103
- definePageMeta({
104
- layout: false,
105
- });
106
-
107
- useHead({
108
- title: "GridStack",
109
- meta: [{ name: "description", content: "GridStack component demo" }],
110
- bodyAttrs: { class: "grid-stack-page" },
111
- });
112
-
113
- const tag = ref<"div" | "section" | "article" | "main">("div");
114
-
115
- const tagData = ref<IFormMultipleOptions>({
116
- data: [
117
- { id: "tag-div", name: "tag", value: "div", label: "div" },
118
- { id: "tag-section", name: "tag", value: "section", label: "section" },
119
- { id: "tag-article", name: "tag", value: "article", label: "article" },
120
- { id: "tag-main", name: "tag", value: "main", label: "main" },
121
- ],
122
- total: 4,
123
- skip: 0,
124
- limit: 4,
125
- });
126
- </script>
127
-
128
- <style lang="css">
129
- .grid-stack-page {
130
- code {
131
- font-family: monospace;
132
- font-size: 0.9em;
133
- background: var(--slate-02);
134
- padding: 0.1em 0.4em;
135
- border-radius: 0.3rem;
136
- }
137
-
138
- .mbe-16 {
139
- margin-block-end: 1.6rem;
140
- }
141
- .mbe-48 {
142
- margin-block-end: 4.8rem;
143
- }
144
-
145
- /* Colored layer demos */
146
- .grid-stack-demo {
147
- border-radius: 0.8rem;
148
- overflow: hidden;
149
- }
150
-
151
- .demo-layer {
152
- display: flex;
153
- align-items: center;
154
- justify-content: center;
155
- min-block-size: 20rem;
156
- font-size: 1.4rem;
157
- font-weight: 600;
158
- border-radius: 0.8rem;
159
- }
160
-
161
- .demo-layer--base {
162
- background: var(--slate-03);
163
- color: var(--slate-09);
164
- }
165
-
166
- .demo-layer--mid {
167
- background: color-mix(in srgb, var(--orange-06) 40%, transparent);
168
- color: var(--orange-10);
169
- margin: 2rem;
170
- border-radius: 0.6rem;
171
- border: 2px dashed var(--orange-07);
172
- }
173
-
174
- .demo-layer--overlay {
175
- display: flex;
176
- align-items: flex-end;
177
- justify-content: flex-start;
178
- padding: 1.6rem;
179
- background: linear-gradient(to top, color-mix(in srgb, var(--slate-10) 60%, transparent) 0%, transparent 60%);
180
- color: white;
181
- border-radius: 0.8rem;
182
- pointer-events: none;
183
- }
184
-
185
- /* Video overlay demo */
186
- .video-overlay {
187
- display: grid;
188
- place-items: center;
189
- pointer-events: none;
190
- }
191
-
192
- .video-overlay__content {
193
- text-align: center;
194
- padding: 2.4rem;
195
- pointer-events: auto;
196
- }
197
-
198
- .video-overlay__eyebrow {
199
- font-size: 1.1rem;
200
- font-weight: 700;
201
- text-transform: uppercase;
202
- letter-spacing: 0.12em;
203
- color: white;
204
- margin-block-end: 0.8rem;
205
- opacity: 0.8;
206
- }
207
-
208
- .video-overlay__heading {
209
- font-size: 4rem;
210
- font-weight: 700;
211
- color: white;
212
- margin-block-end: 1.2rem;
213
- text-shadow: 0 2px 12px rgba(0 0 0 / 0.5);
214
- }
215
-
216
- .video-overlay__body {
217
- font-size: 1.6rem;
218
- color: white;
219
- opacity: 0.9;
220
- text-shadow: 0 1px 6px rgba(0 0 0 / 0.4);
221
- }
222
-
223
- .video-overlay__body code {
224
- background: rgba(0 0 0 / 0.3);
225
- color: white;
226
- }
227
-
228
- /* Controls */
229
- .grid-stack-demo-controls {
230
- padding: 1.6rem;
231
- border: 1px solid var(--slate-06);
232
- border-radius: 0.8rem;
233
-
234
- .demo-controls__heading {
235
- font-size: 1.1rem;
236
- font-weight: 600;
237
- text-transform: uppercase;
238
- letter-spacing: 0.08em;
239
- color: var(--slate-08);
240
- margin-block-end: 1.2rem;
241
- }
242
-
243
- .demo-controls__row {
244
- margin-block-end: 1.2rem;
245
-
246
- &:last-child {
247
- margin-block-end: 0;
248
- }
249
- }
250
- }
251
- }
252
- </style>
@@ -1,127 +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
- <h2 class="page-heading-2">GridStack</h2>
7
- <NuxtLink class="page-body-normal" to="/grid-stack">GridStack</NuxtLink>
8
- </PageRow>
9
-
10
- <PageRow tag="div" variant="full" :style-class-passthrough="['mbe-20']">
11
- <h2 class="page-heading-2">AutoGrid</h2>
12
- <NuxtLink class="page-body-normal" to="/auto-grid">AutoGrid</NuxtLink>
13
- </PageRow>
14
-
15
- <PageRow tag="div" variant="full" :style-class-passthrough="['mbe-20']">
16
- <h1 class="page-heading-1">Nuxt3 Components Layer</h1>
17
- <p>
18
- A collection of hand rolled UI components for Nuxt3 that can be added as a layer (extended into another
19
- Nuxt3 app)
20
- </p>
21
- </PageRow>
22
-
23
- <PageRow tag="div" variant="full" :style-class-passthrough="['mbe-20']">
24
- <h1 class="page-heading-1">Services test pages</h1>
25
- <NuxtLink class="page-body-normal" to="/ui/services/services-cards">Services Cards</NuxtLink>
26
- </PageRow>
27
-
28
- <PageRow tag="div" variant="full" :style-class-passthrough="['mbe-20']">
29
- <NuxtLink class="page-body-normal" to="/ui/services/services-sections-compact">
30
- Services Sections Compact
31
- </NuxtLink>
32
- </PageRow>
33
-
34
- <PageRow tag="div" variant="full" :style-class-passthrough="['mbe-20']">
35
- <h1 class="page-heading-1">Profile Section</h1>
36
- <NuxtLink class="page-body-normal" to="/ui/profile-section">Profile Section</NuxtLink>
37
- </PageRow>
38
-
39
- <PageRow tag="div" variant="full" :style-class-passthrough="['mbe-20']">
40
- <h1 class="page-heading-1">Contact Section</h1>
41
- <NuxtLink class="page-body-normal" to="/ui/contact-section">Contact Section</NuxtLink>
42
- </PageRow>
43
-
44
- <PageRow tag="div" variant="inset-content" :style-class-passthrough="['mbe-20']">
45
- <h2 class="page-heading-2">PopOver component 1</h2>
46
- <ClientOnly>
47
- <p>popoverSupported({{ popoverSupported }})</p>
48
- </ClientOnly>
49
-
50
- <PopOver popovertarget="profile1">
51
- <template #trigger>
52
- <img class="profile-image" src="https://ui-avatars.com/api/name=1?background=0A8A0A&color=fff" alt="" />
53
- </template>
54
- <template #popoverCotent>
55
- <h2>Popover content 1</h2>
56
- </template>
57
- </PopOver>
58
- </PageRow>
59
-
60
- <PageRow tag="div" variant="inset-content" :style-class-passthrough="['mbe-20']">
61
- <h2 class="page-heading-2">PopOver component 2</h2>
62
- <div class="justify-end">
63
- <PopOver popovertarget="profile2">
64
- <template #trigger>
65
- <img class="profile-image" src="https://ui-avatars.com/api/name=2?background=0A8A0A&color=fff" alt="" />
66
- </template>
67
- <template #popoverCotent>
68
- <h2>Popover content 2</h2>
69
- </template>
70
- </PopOver>
71
- </div>
72
- </PageRow>
73
-
74
- <PageRow tag="div" variant="popout" :style-class-passthrough="['mbe-20']">
75
- <h2 class="page-heading-2">Masonry Grid</h2>
76
- <MasonryGrid :grid-data="quotesData?.quotes.slice(0, qoutesDisplayCount) ?? {}">
77
- <template
78
- v-for="(item, index) in quotesData?.quotes.slice(0, qoutesDisplayCount)"
79
- :key="item.id"
80
- #[item.id]
81
- >
82
- <div>
83
- <p class="">{{ index + 1 }}: {{ item.author }}</p>
84
- <p class="">{{ item.quote }}</p>
85
- </div>
86
- </template>
87
- </MasonryGrid>
88
- </PageRow>
89
- </template>
90
- </NuxtLayout>
91
- </div>
92
- </template>
93
-
94
- <script setup lang="ts">
95
- import type { IQuotes } from "~/types/types.quotes";
96
-
97
- definePageMeta({
98
- layout: false,
99
- });
100
-
101
- useHead({
102
- title: "Home",
103
- meta: [{ name: "description", content: "Nuxt Components Layer extending a Nuxt project" }],
104
- bodyAttrs: {
105
- class: "home",
106
- },
107
- });
108
-
109
- const qoutesDisplayCount = 21;
110
- const { data: quotesData } = await useFetch<IQuotes>("https://dummyjson.com/quotes");
111
-
112
- const popoverSupported = computed(() => {
113
- return "anchorName" in document.documentElement.style;
114
- });
115
- </script>
116
-
117
- <style lang="css">
118
- .justify-end {
119
- display: flex;
120
- justify-content: flex-end;
121
- }
122
-
123
- .qr-code {
124
- width: 250px;
125
- height: 250px;
126
- }
127
- </style>
@@ -1,204 +0,0 @@
1
- <template>
2
- <div>
3
- <NuxtLayout name="default">
4
- <template #layout-content>
5
- <PageHeroHighlights
6
- tag="section"
7
- :width-constrained="widthConstrained"
8
- :content-align="contentAlign"
9
- :content-panel="contentPanel"
10
- :highlights-equal-widths="highlightsEqualWidths"
11
- :highlights-justify="highlightsJustify"
12
- :highlight-title-baseline="highlightTitleBaseline"
13
- :style-class-passthrough="['mbe-32']"
14
- >
15
- <template #header="{ headingId }">
16
- <PageHeroHighlightsHeader>
17
- <template #start>
18
- <h1 :id="headingId" class="page-heading-1">Dashboard</h1>
19
- <p class="page-body-normal">Overview of your account activity and key metrics.</p>
20
- </template>
21
- <template #end>
22
- <h1 :id="headingId" class="page-heading-1">Dashboard</h1>
23
- <p class="page-body-normal">Overview of your account activity and key metrics.</p>
24
- </template>
25
- </PageHeroHighlightsHeader>
26
- </template>
27
- <template #highlights>
28
- <div class="highlight">
29
- <div class="title"><h3 class="page-heading-3 m-0">Key Metrics</h3></div>
30
- <div class="body">
31
- <p class="page-body-normal">Your most important stats at a glance.</p>
32
- <p class="page-body-normal">Your most important stats at a glance.</p>
33
- </div>
34
- </div>
35
- </template>
36
- <template #content>
37
- <div class="some-class">
38
- <p class="page-heading-2">Recent Activity</p>
39
- <p class="page-body-normal">Your most recent transactions and events will appear here.</p>
40
- </div>
41
-
42
- <div class="demo-controls">
43
- <p class="demo-controls__heading">Props</p>
44
- <div class="demo-controls__toggles">
45
- <ToggleSwitchWithLabelInline
46
- v-model="widthConstrained"
47
- name="widthConstrained"
48
- label="widthConstrained"
49
- />
50
- <ToggleSwitchWithLabelInline v-model="contentPanel" name="contentPanel" label="contentPanel" />
51
- <ToggleSwitchWithLabelInline
52
- v-model="highlightsEqualWidths"
53
- name="highlightsEqualWidths"
54
- label="highlightsEqualWidths"
55
- />
56
- <ToggleSwitchWithLabelInline
57
- v-model="highlightTitleBaseline"
58
- name="highlightTitleBaseline"
59
- label="highlightTitleBaseline"
60
- />
61
- </div>
62
- <div class="demo-controls__selects">
63
- <MultipleRadiobuttons
64
- v-model="contentAlign"
65
- v-model:field-data="contentAlignData"
66
- name="contentAlign"
67
- legend="contentAlign"
68
- label="contentAlign"
69
- error-message=""
70
- :is-button="true"
71
- :is-pill="true"
72
- :field-has-error="false"
73
- options-layout="inline"
74
- />
75
- <MultipleRadiobuttons
76
- v-model="highlightsJustify"
77
- v-model:field-data="highlightsJustifyData"
78
- name="highlightsJustify"
79
- legend="highlightsJustify"
80
- label="highlightsJustify"
81
- error-message=""
82
- :is-button="true"
83
- :is-pill="true"
84
- :field-has-error="false"
85
- options-layout="inline"
86
- />
87
- </div>
88
- </div>
89
- </template>
90
- </PageHeroHighlights>
91
- </template>
92
- </NuxtLayout>
93
- </div>
94
- </template>
95
-
96
- <script setup lang="ts">
97
- import type { IFormMultipleOptions } from "~/types/forms/types.forms";
98
-
99
- definePageMeta({
100
- layout: false,
101
- });
102
-
103
- useHead({
104
- title: "Page Hero Highlights",
105
- meta: [
106
- {
107
- name: "description",
108
- content: "Page Hero Highlights Meta description content",
109
- },
110
- ],
111
- bodyAttrs: {
112
- class: "page-hero-highlights-page",
113
- },
114
- });
115
-
116
- const widthConstrained = ref(false);
117
- const contentAlign = ref<"start" | "center">("start");
118
- const contentPanel = ref(true);
119
- const highlightsEqualWidths = ref(false);
120
- const highlightsJustify = ref<"start" | "center" | "end" | "space-between" | "space-around">("start");
121
- const highlightTitleBaseline = ref(true);
122
-
123
- const contentAlignData = ref<IFormMultipleOptions>({
124
- data: [
125
- { id: "align-start", name: "contentAlign", value: "start", label: "start" },
126
- { id: "align-center", name: "contentAlign", value: "center", label: "center" },
127
- ],
128
- total: 2,
129
- skip: 0,
130
- limit: 2,
131
- });
132
-
133
- const highlightsJustifyData = ref<IFormMultipleOptions>({
134
- data: [
135
- { id: "justify-start", name: "highlightsJustify", value: "start", label: "start" },
136
- { id: "justify-center", name: "highlightsJustify", value: "center", label: "center" },
137
- { id: "justify-end", name: "highlightsJustify", value: "end", label: "end" },
138
- { id: "justify-space-between", name: "highlightsJustify", value: "space-between", label: "space-between" },
139
- { id: "justify-space-around", name: "highlightsJustify", value: "space-around", label: "space-around" },
140
- ],
141
- total: 5,
142
- skip: 0,
143
- limit: 5,
144
- });
145
- </script>
146
-
147
- <style lang="css">
148
- .page-hero-highlights-page {
149
- .page-hero-highlights {
150
- /* Layout tokens */
151
- --max-width: 1064px;
152
- --page-hero-highlights-gutter-mobile: 16px;
153
- --page-hero-highlights-gutter-tablet: 40px;
154
- --page-hero-highlights-gutter-desktop: 32px;
155
-
156
- .page-hero-highlights-header {
157
- /* User themable tokens */
158
- --phh-padding-block-mobile: 1.6rem 6rem;
159
- --phh-padding-block-tablet: 2.4rem 6rem;
160
- --phh-padding-block-desktop: 4.2rem 7.4rem;
161
- }
162
-
163
- .content-row {
164
- .content-slot {
165
- color: black;
166
-
167
- .some-class {
168
- padding-block-end: 2.4rem;
169
- }
170
- }
171
- }
172
- }
173
-
174
- .demo-controls {
175
- margin-block-start: 2.4rem;
176
- padding: 1.6rem;
177
- border: 1px solid var(--slate-06);
178
- border-radius: 0.8rem;
179
- background: var(--slate-01);
180
-
181
- .demo-controls__heading {
182
- font-size: 1.1rem;
183
- font-weight: 600;
184
- text-transform: uppercase;
185
- letter-spacing: 0.08em;
186
- color: var(--slate-08);
187
- margin-block-end: 1.2rem;
188
- }
189
-
190
- .demo-controls__toggles {
191
- display: flex;
192
- flex-wrap: wrap;
193
- gap: 0.4rem 2.4rem;
194
- margin-block-end: 1.6rem;
195
- }
196
-
197
- .demo-controls__selects {
198
- display: flex;
199
- flex-direction: column;
200
- gap: 0.8rem;
201
- }
202
- }
203
- }
204
- </style>