srcdev-nuxt-components 9.1.49 → 9.1.51
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/settings.json +2 -4
- package/.claude/settings.local.json +22 -2
- package/.claude/skills/components/card-core.md +205 -0
- package/.claude/skills/components/display-dialog.md +128 -0
- package/.claude/skills/components/page-hero-highlights.md +1 -1
- package/.claude/skills/components/page-row.md +157 -0
- package/.claude/skills/components/services-card-grid.md +4 -4
- package/.claude/skills/components/services-section-grid.md +4 -4
- package/.claude/skills/components/tab-navigation.md +222 -0
- package/.claude/skills/composable-dialog-controls.md +55 -43
- package/.claude/skills/index.md +5 -2
- package/app/components/01.atoms/card/CONSUMER-STYLING.md +175 -0
- package/app/components/01.atoms/card/CardCore.vue +48 -21
- package/app/components/01.atoms/display-dialog/CONSUMER-STYLING.md +163 -0
- package/app/components/01.atoms/display-dialog/DisplayDialog.vue +277 -0
- package/app/components/01.atoms/display-dialog/stories/DisplayDialog.stories.ts +177 -0
- package/app/components/01.atoms/display-dialog/tests/DisplayDialog.spec.ts +264 -0
- package/app/components/01.atoms/display-dialog/tests/__snapshots__/DisplayDialog.spec.ts.snap +18 -0
- package/app/components/01.atoms/page-row/CONSUMER-STYLING.md +90 -0
- package/app/components/01.atoms/page-row/PageRow.vue +115 -0
- package/app/components/01.atoms/page-row/stories/PageRow.stories.ts +311 -0
- package/app/components/01.atoms/page-row/tests/PageRow.spec.ts +191 -0
- package/app/components/02.molecules/navigation/tab-navigation/CONSUMER-STYLING.md +145 -0
- package/app/components/02.molecules/navigation/tab-navigation/TabNavigation.vue +20 -9
- package/app/components/02.molecules/navigation/tab-navigation/tests/__snapshots__/TabNavigation.spec.ts.snap +12 -6
- package/app/components/{forms/ui → 05.forms/form-field}/FormField.vue +12 -19
- package/app/components/{forms/ui → 05.forms/form-wrapper}/FormWrapper.vue +6 -6
- package/app/components/{forms → 05.forms}/input-button/InputButtonCore.vue +2 -0
- package/app/components/{forms → 05.forms}/input-button/stories/InputButtonCore.stories.ts +1 -1
- package/app/components/{forms → 05.forms}/input-text/InputTextCore.vue +73 -73
- package/app/components/{forms → 05.forms}/input-text/variants/InputTextAsNumberWithLabel.vue +29 -29
- package/app/components/carousels/CarouselBasic.vue +99 -99
- package/app/components/carousels/CarouselInfinite.vue +150 -150
- package/app/components/deep-expanding-menu/DeepExpandingMenu.vue +111 -111
- package/app/components/responsive-header/ResponsiveHeader.vue +250 -282
- package/app/components/test-storybook/TestStorybook.vue +16 -16
- package/app/composables/tests/useDialogControls.spec.ts +34 -64
- package/app/composables/useDialogControls.ts +19 -33
- package/app/composables/useFormControl.ts +0 -2
- package/app/layouts/default.vue +9 -7
- package/app/pages/auto-grid.vue +37 -20
- package/app/pages/banner-video.vue +2 -2
- package/app/pages/forms/examples/buttons/index.vue +189 -215
- package/app/pages/forms/examples/material/text-fields.vue +2 -2
- package/app/pages/grid-stack.vue +10 -10
- package/app/pages/index.vue +20 -20
- package/app/pages/samaritan.vue +4 -4
- package/app/pages/typography/hero-text.vue +6 -6
- package/app/pages/typography/index.vue +4 -4
- package/app/pages/typography/page-body.vue +4 -4
- package/app/pages/typography/page-heading.vue +4 -4
- package/app/pages/typography/page-link.vue +4 -4
- package/app/pages/ui/accordian.vue +4 -4
- package/app/pages/ui/anchor-scroll-tab-navigation.vue +77 -66
- package/app/pages/ui/anchor-scroll.vue +94 -70
- package/app/pages/ui/animated-svg-text.vue +4 -4
- package/app/pages/ui/block-decorators.vue +11 -11
- package/app/pages/ui/card-core.vue +9 -9
- package/app/pages/ui/carousel-basic.vue +4 -4
- package/app/pages/ui/carousel-flip.vue +2 -2
- package/app/pages/ui/carousel-infinite.vue +4 -4
- package/app/pages/ui/clipped-panels.vue +10 -10
- package/app/pages/ui/contact-section.vue +4 -4
- package/app/pages/ui/container-glow.vue +2 -3
- package/app/pages/ui/deep-expanding-menu.vue +138 -0
- package/app/pages/ui/display-avatar.vue +2 -2
- package/app/pages/ui/display-banner.vue +2 -2
- package/app/pages/ui/display-chip.vue +32 -25
- package/app/pages/ui/display-details.vue +6 -10
- package/app/pages/ui/display-dialog.vue +96 -131
- package/app/pages/ui/display-pill.vue +27 -33
- package/app/pages/ui/display-prompt.vue +4 -4
- package/app/pages/ui/display-toast.vue +2 -2
- package/app/pages/ui/expanding-panel.vue +12 -16
- package/app/pages/ui/glowing-border.vue +12 -12
- package/app/pages/ui/layout-grid-a.vue +6 -6
- package/app/pages/ui/layout-grid-b.vue +4 -4
- package/app/pages/ui/magnetic-navigation.vue +6 -6
- package/app/pages/ui/marquee-scroller.vue +2 -2
- package/app/pages/ui/mask-element.vue +2 -2
- package/app/pages/ui/masonry-columns.vue +4 -4
- package/app/pages/ui/masonry-grid-ordered-experiment.vue +4 -4
- package/app/pages/ui/masonry-grid-ordered.vue +4 -4
- package/app/pages/ui/masonry-grid-sorted.vue +4 -4
- package/app/pages/ui/masonry-grid.vue +4 -4
- package/app/pages/ui/navigation/navigation-horizontal.vue +12 -12
- package/app/pages/ui/navigation/tab-navigation.vue +493 -0
- package/app/pages/ui/page-row.vue +127 -0
- package/app/pages/ui/price-list.vue +4 -4
- package/app/pages/ui/profile-section.vue +4 -4
- package/app/pages/ui/qr-code/[componentName].vue +6 -6
- package/app/pages/ui/rotating-carousel.vue +16 -16
- package/app/pages/ui/scroll-reveal-image.vue +20 -20
- package/app/pages/ui/section-parallax.vue +7 -7
- package/app/pages/ui/services/colour-finder.vue +4 -4
- package/app/pages/ui/services/services-cards.vue +4 -4
- package/app/pages/ui/services/services-section/[slug].vue +4 -4
- package/app/pages/ui/services/services-sections-compact.vue +6 -6
- package/app/pages/ui/settings.vue +10 -10
- package/app/pages/ui/simple-grid.vue +2 -2
- package/app/pages/ui/slider-gallery.vue +5 -5
- package/app/pages/ui/tabs-y.vue +2 -3
- package/app/pages/ui/tabs.vue +6 -9
- package/app/pages/ui/tooltips.vue +9 -9
- package/app/pages/ui/wipe-away-vertical.vue +14 -14
- package/package.json +1 -1
- package/.claude/skills/components/layout-row.md +0 -239
- package/app/components/display-dialog/DisplayDialogCore.vue +0 -276
- package/app/components/display-dialog/variants/DisplayDialogConfirm.vue +0 -47
- package/app/components/display-dialog/variants/DisplayDialogScrollableContent.vue +0 -51
- package/app/components/forms/c12/utils.ts +0 -14
- package/app/components/layout-row/LayoutRow.vue +0 -171
- package/app/components/layout-row/stories/LayoutRow.stories.ts +0 -528
- package/app/pages/ui/layout-row.vue +0 -139
- /package/app/components/{forms → 05.forms}/form-errors/InputError.vue +0 -0
- /package/app/components/{forms → 05.forms}/form-errors/tests/InputError.spec.ts +0 -0
- /package/app/components/{forms → 05.forms}/form-fieldset/FormFieldset.vue +0 -0
- /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts +0 -0
- /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/combo-icons-secondary-chromium-darwin.png +0 -0
- /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/combo-icons-secondary-firefox-darwin.png +0 -0
- /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/combo-icons-secondary-webkit-darwin.png +0 -0
- /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/combo-icons-tertiary-chromium-darwin.png +0 -0
- /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/combo-icons-tertiary-firefox-darwin.png +0 -0
- /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/combo-icons-tertiary-webkit-darwin.png +0 -0
- /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/combo-primary-pending-chromium-darwin.png +0 -0
- /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/combo-primary-pending-firefox-darwin.png +0 -0
- /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/combo-primary-pending-webkit-darwin.png +0 -0
- /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/combo-secondary-pill-chromium-darwin.png +0 -0
- /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/combo-secondary-pill-firefox-darwin.png +0 -0
- /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/combo-secondary-pill-webkit-darwin.png +0 -0
- /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/combo-tertiary-readonly-chromium-darwin.png +0 -0
- /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/combo-tertiary-readonly-firefox-darwin.png +0 -0
- /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/combo-tertiary-readonly-webkit-darwin.png +0 -0
- /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/default-chromium-darwin.png +0 -0
- /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/default-firefox-darwin.png +0 -0
- /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/default-theme-default-chromium-darwin.png +0 -0
- /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/default-theme-default-firefox-darwin.png +0 -0
- /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/default-theme-default-webkit-darwin.png +0 -0
- /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/default-theme-error-chromium-darwin.png +0 -0
- /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/default-theme-error-firefox-darwin.png +0 -0
- /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/default-theme-error-webkit-darwin.png +0 -0
- /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/default-theme-success-chromium-darwin.png +0 -0
- /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/default-theme-success-firefox-darwin.png +0 -0
- /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/default-theme-success-webkit-darwin.png +0 -0
- /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/default-theme-warning-chromium-darwin.png +0 -0
- /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/default-theme-warning-firefox-darwin.png +0 -0
- /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/default-theme-warning-webkit-darwin.png +0 -0
- /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/default-variant-primary-chromium-darwin.png +0 -0
- /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/default-variant-primary-firefox-darwin.png +0 -0
- /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/default-variant-primary-webkit-darwin.png +0 -0
- /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/default-variant-secondary-chromium-darwin.png +0 -0
- /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/default-variant-secondary-firefox-darwin.png +0 -0
- /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/default-variant-secondary-webkit-darwin.png +0 -0
- /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/default-variant-tertiary-chromium-darwin.png +0 -0
- /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/default-variant-tertiary-firefox-darwin.png +0 -0
- /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/default-variant-tertiary-webkit-darwin.png +0 -0
- /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/default-webkit-darwin.png +0 -0
- /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/nuxt-icon-only-component-chromium-darwin.png +0 -0
- /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/nuxt-icon-only-component-firefox-darwin.png +0 -0
- /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/nuxt-icon-only-component-webkit-darwin.png +0 -0
- /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/state-pending-chromium-darwin.png +0 -0
- /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/state-pending-firefox-darwin.png +0 -0
- /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/state-pending-webkit-darwin.png +0 -0
- /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/state-pill-chromium-darwin.png +0 -0
- /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/state-pill-firefox-darwin.png +0 -0
- /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/state-pill-webkit-darwin.png +0 -0
- /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/state-readonly-chromium-darwin.png +0 -0
- /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/state-readonly-firefox-darwin.png +0 -0
- /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/state-readonly-webkit-darwin.png +0 -0
- /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/with-both-nuxt-icon-components-chromium-darwin.png +0 -0
- /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/with-both-nuxt-icon-components-firefox-darwin.png +0 -0
- /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/with-both-nuxt-icon-components-webkit-darwin.png +0 -0
- /package/app/components/{forms → 05.forms}/input-button/tests/InputButtonCore.spec.ts +0 -0
- /package/app/components/{forms → 05.forms}/input-button/tests/__snapshots__/InputButtonCore.spec.ts.snap +0 -0
- /package/app/components/{forms → 05.forms}/input-checkbox/MultipleCheckboxes.vue +0 -0
- /package/app/components/{forms → 05.forms}/input-checkbox/SingleCheckbox.vue +0 -0
- /package/app/components/{forms → 05.forms}/input-checkbox/tests/MultipleCheckboxes.spec.ts +0 -0
- /package/app/components/{forms → 05.forms}/input-checkbox/tests/data/tags.json +0 -0
- /package/app/components/{forms → 05.forms}/input-checkbox-radio/InputCheckboxRadioButton.vue +0 -0
- /package/app/components/{forms → 05.forms}/input-checkbox-radio/InputCheckboxRadioCore.vue +0 -0
- /package/app/components/{forms → 05.forms}/input-checkbox-radio/InputCheckboxRadioWithLabel.vue +0 -0
- /package/app/components/{forms → 05.forms}/input-checkbox-radio/tests/InputCheckboxRadioCore.spec.ts +0 -0
- /package/app/components/{forms → 05.forms}/input-copy/InputCopyCore.vue +0 -0
- /package/app/components/{forms → 05.forms}/input-copy/stories/InputCopyCore.stories.ts +0 -0
- /package/app/components/{forms → 05.forms}/input-copy/tests/InputCopyCore.spec.ts +0 -0
- /package/app/components/{forms → 05.forms}/input-copy/tests/__snapshots__/InputCopyCore.spec.ts.snap +0 -0
- /package/app/components/{forms → 05.forms}/input-description/InputDescription.vue +0 -0
- /package/app/components/{forms → 05.forms}/input-description/tests/InputDescription.spec.ts +0 -0
- /package/app/components/{forms → 05.forms}/input-label/InputLabel.vue +0 -0
- /package/app/components/{forms → 05.forms}/input-label/tests/InputLabel.spec.ts +0 -0
- /package/app/components/{forms → 05.forms}/input-number/InputNumberCore.vue +0 -0
- /package/app/components/{forms → 05.forms}/input-number/variants/InputNumberDefault.vue +0 -0
- /package/app/components/{forms → 05.forms}/input-radio/MultipleRadiobuttons.vue +0 -0
- /package/app/components/{forms → 05.forms}/input-radio/tests/MultipleRadioButtons.spec.ts +0 -0
- /package/app/components/{forms → 05.forms}/input-radio/tests/data/tags.json +0 -0
- /package/app/components/{forms → 05.forms}/input-range/InputRangeCore.vue +0 -0
- /package/app/components/{forms → 05.forms}/input-range/variants/InputRangeDefault.vue +0 -0
- /package/app/components/{forms → 05.forms}/input-range-fancy/InputRangeFancyCore.vue +0 -0
- /package/app/components/{forms → 05.forms}/input-range-fancy/InputRangeFancyWithLabel.vue +0 -0
- /package/app/components/{forms → 05.forms}/input-select/InputSelectCore.vue +0 -0
- /package/app/components/{forms → 05.forms}/input-select/variants/InputSelectWithLabel.vue +0 -0
- /package/app/components/{forms → 05.forms}/input-text/stories/InputPasswordWithLabel.stories.ts +0 -0
- /package/app/components/{forms → 05.forms}/input-text/stories/InputTextAsNumberWithLabel.stories.ts +0 -0
- /package/app/components/{forms → 05.forms}/input-text/stories/InputTextCore.stories.ts +0 -0
- /package/app/components/{forms → 05.forms}/input-text/stories/InputTextWithLabel.stories.ts +0 -0
- /package/app/components/{forms → 05.forms}/input-text/variants/InputPasswordWithLabel.vue +0 -0
- /package/app/components/{forms → 05.forms}/input-text/variants/InputTextWithLabel.vue +0 -0
- /package/app/components/{forms → 05.forms}/input-textarea/InputTextareaCore.vue +0 -0
- /package/app/components/{forms → 05.forms}/input-textarea/stories/InputTextareaCore.stories.ts +0 -0
- /package/app/components/{forms → 05.forms}/input-textarea/stories/InputTextareaWithLabel.stories.ts +0 -0
- /package/app/components/{forms → 05.forms}/input-textarea/variants/InputTextareaWithLabel.vue +0 -0
- /package/app/components/{forms → 05.forms}/pending-effect/PendingEffect.vue +0 -0
- /package/app/components/{forms → 05.forms}/toggle-switch/ToggleSwitchCore.vue +0 -0
- /package/app/components/{forms → 05.forms}/toggle-switch/stories/ToggleSwitchCore.stories.ts +0 -0
- /package/app/components/{forms → 05.forms}/toggle-switch/stories/ToggleSwitchWithLabel.stories.ts +0 -0
- /package/app/components/{forms → 05.forms}/toggle-switch/stories/ToggleSwitchWithLabelInline.stories.ts +0 -0
- /package/app/components/{forms → 05.forms}/toggle-switch/variants/ToggleSwitchWithLabel.vue +0 -0
- /package/app/components/{forms → 05.forms}/toggle-switch/variants/ToggleSwitchWithLabelInline.vue +0 -0
- /package/app/components/{forms → 05.forms}/triple-toggle-switch/TripleToggleSwitchCore.vue +0 -0
- /package/app/{components/forms/c12/prop-validators/index.ts → utils/prop-validators.ts} +0 -0
|
@@ -2,24 +2,26 @@
|
|
|
2
2
|
<div>
|
|
3
3
|
<NuxtLayout name="default">
|
|
4
4
|
<template #layout-content>
|
|
5
|
-
<
|
|
5
|
+
<PageRow tag="div" variant="content" :style-class-passthrough="['mbe-4']">
|
|
6
6
|
<h1 class="page-heading-1">useAnchorScroll</h1>
|
|
7
7
|
<p class="page-body-medium">
|
|
8
|
-
Intercepts
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
8
|
+
Intercepts
|
|
9
|
+
<code class="inline-code">#hash</code>
|
|
10
|
+
link clicks and smooth-scrolls to the target element. Routes and external links pass through to NuxtLink
|
|
11
|
+
unchanged. Respects
|
|
12
|
+
<code class="inline-code">prefers-reduced-motion</code>
|
|
13
|
+
— when the user opts out of motion, the default browser anchor jump is preserved with no custom scroll code
|
|
12
14
|
involved.
|
|
13
15
|
</p>
|
|
14
16
|
<p class="page-body-medium">
|
|
15
17
|
This page demonstrates the composable directly: the sticky bar below uses
|
|
16
|
-
<code class="inline-code">useAnchorScroll</code>
|
|
17
|
-
headings always land just below the bar after scrolling.
|
|
18
|
+
<code class="inline-code">useAnchorScroll</code>
|
|
19
|
+
with a dynamic offset so section headings always land just below the bar after scrolling.
|
|
18
20
|
</p>
|
|
19
|
-
</
|
|
21
|
+
</PageRow>
|
|
20
22
|
|
|
21
23
|
<div ref="stickyNavRef" class="anchor-scroll-sticky-nav">
|
|
22
|
-
<
|
|
24
|
+
<PageRow tag="div" variant="content">
|
|
23
25
|
<nav aria-label="Page sections">
|
|
24
26
|
<ul class="anchor-nav-list">
|
|
25
27
|
<li v-for="section in sections" :key="section.id">
|
|
@@ -28,40 +30,46 @@
|
|
|
28
30
|
class="anchor-nav-link"
|
|
29
31
|
:class="{ 'is-active': `#${section.id}` === activeHash }"
|
|
30
32
|
@click="(e) => handleNavClick(e, `#${section.id}`)"
|
|
31
|
-
>
|
|
33
|
+
>
|
|
34
|
+
{{ section.label }}
|
|
35
|
+
</a>
|
|
32
36
|
</li>
|
|
33
37
|
</ul>
|
|
34
38
|
</nav>
|
|
35
|
-
</
|
|
39
|
+
</PageRow>
|
|
36
40
|
</div>
|
|
37
41
|
|
|
38
42
|
<section id="overview" class="anchor-demo-section">
|
|
39
|
-
<
|
|
43
|
+
<PageRow tag="div" variant="content">
|
|
40
44
|
<h2 class="page-heading-2">Overview</h2>
|
|
41
45
|
<p class="page-body-medium">
|
|
42
46
|
Single-page and anchor-linked layouts need a bridge between
|
|
43
|
-
<code class="inline-code">NuxtLink</code>
|
|
44
|
-
native anchor scrolling (which has no smooth-scroll guarantee).
|
|
45
|
-
<code class="inline-code">useAnchorScroll</code>
|
|
47
|
+
<code class="inline-code">NuxtLink</code>
|
|
48
|
+
(which handles routes) and the browser's native anchor scrolling (which has no smooth-scroll guarantee).
|
|
49
|
+
<code class="inline-code">useAnchorScroll</code>
|
|
50
|
+
fills that gap.
|
|
46
51
|
</p>
|
|
47
52
|
<p class="page-body-medium">
|
|
48
|
-
Pass any
|
|
49
|
-
<code class="inline-code"
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
+
Pass any
|
|
54
|
+
<code class="inline-code">#hash</code>
|
|
55
|
+
href to
|
|
56
|
+
<code class="inline-code">handleNavClick</code>
|
|
57
|
+
— it prevents the default jump, pushes the hash into the URL, and scrolls to the matching element. Every
|
|
58
|
+
other href (routes, external URLs) is a no-op, so the same handler is safe to attach to all navigation
|
|
59
|
+
links without conditional logic in the template.
|
|
53
60
|
</p>
|
|
54
61
|
<p class="page-body-medium">
|
|
55
|
-
An optional
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
scroll
|
|
62
|
+
An optional
|
|
63
|
+
<code class="inline-code">offset</code>
|
|
64
|
+
shifts the final scroll position upward — useful when a sticky bar would otherwise obscure the section
|
|
65
|
+
heading. Pass a number for a fixed bar height or a getter function to read the bar's live height at scroll
|
|
66
|
+
time.
|
|
59
67
|
</p>
|
|
60
|
-
</
|
|
68
|
+
</PageRow>
|
|
61
69
|
</section>
|
|
62
70
|
|
|
63
71
|
<section id="api" class="anchor-demo-section">
|
|
64
|
-
<
|
|
72
|
+
<PageRow tag="div" variant="content">
|
|
65
73
|
<h2 class="page-heading-2">API</h2>
|
|
66
74
|
|
|
67
75
|
<h3 class="page-heading-3">Options</h3>
|
|
@@ -81,8 +89,8 @@
|
|
|
81
89
|
<td><code class="inline-code">number | (() => number)</code></td>
|
|
82
90
|
<td><code class="inline-code">0</code></td>
|
|
83
91
|
<td>
|
|
84
|
-
Pixels subtracted from the scroll-to position. Pass a getter to read a sticky
|
|
85
|
-
|
|
92
|
+
Pixels subtracted from the scroll-to position. Pass a getter to read a sticky element's height at
|
|
93
|
+
scroll time rather than at composable init.
|
|
86
94
|
</td>
|
|
87
95
|
</tr>
|
|
88
96
|
</tbody>
|
|
@@ -103,37 +111,38 @@
|
|
|
103
111
|
<tr>
|
|
104
112
|
<td><code class="inline-code">handleNavClick</code></td>
|
|
105
113
|
<td><code class="inline-code">(event: MouseEvent, href: string) => void</code></td>
|
|
106
|
-
<td>
|
|
107
|
-
Attach to click handlers. No-ops silently for non-anchor hrefs so it is safe
|
|
108
|
-
on all links.
|
|
109
|
-
</td>
|
|
114
|
+
<td>Attach to click handlers. No-ops silently for non-anchor hrefs so it is safe on all links.</td>
|
|
110
115
|
</tr>
|
|
111
116
|
<tr>
|
|
112
117
|
<td><code class="inline-code">scrollToAnchor</code></td>
|
|
113
118
|
<td><code class="inline-code">(hash: string) => void</code></td>
|
|
114
119
|
<td>
|
|
115
120
|
Programmatically scroll to a hash string (with or without the leading
|
|
116
|
-
<code class="inline-code">#</code>
|
|
117
|
-
offset.
|
|
121
|
+
<code class="inline-code">#</code>
|
|
122
|
+
). Respects the same motion preference and offset.
|
|
118
123
|
</td>
|
|
119
124
|
</tr>
|
|
120
125
|
</tbody>
|
|
121
126
|
</table>
|
|
122
127
|
</div>
|
|
123
|
-
</
|
|
128
|
+
</PageRow>
|
|
124
129
|
</section>
|
|
125
130
|
|
|
126
131
|
<section id="usage" class="anchor-demo-section">
|
|
127
|
-
<
|
|
132
|
+
<PageRow tag="div" variant="content">
|
|
128
133
|
<h2 class="page-heading-2">Usage</h2>
|
|
129
134
|
|
|
130
135
|
<h3 class="page-heading-3">In TabNavigation</h3>
|
|
131
136
|
<p class="page-body-medium">
|
|
132
|
-
<code class="inline-code">TabNavigation</code>
|
|
133
|
-
|
|
134
|
-
|
|
137
|
+
<code class="inline-code">TabNavigation</code>
|
|
138
|
+
already has
|
|
139
|
+
<code class="inline-code">useAnchorScroll</code>
|
|
140
|
+
wired up internally. Pass anchor hrefs in
|
|
141
|
+
<code class="inline-code">navItemData</code>
|
|
142
|
+
and it works automatically.
|
|
135
143
|
</p>
|
|
136
|
-
<pre class="demo-code">
|
|
144
|
+
<pre class="demo-code">
|
|
145
|
+
const navItemData = {
|
|
137
146
|
main: [
|
|
138
147
|
{ text: "About", href: "#about" },
|
|
139
148
|
{ text: "Services", href: "#services" },
|
|
@@ -141,64 +150,77 @@
|
|
|
141
150
|
{ text: "Blog", href: "/blog" }, // route — handled by NuxtLink as normal
|
|
142
151
|
],
|
|
143
152
|
};
|
|
144
|
-
</pre
|
|
145
|
-
|
|
146
|
-
|
|
153
|
+
</pre
|
|
154
|
+
>
|
|
155
|
+
<pre class="demo-code">
|
|
156
|
+
<TabNavigation :nav-item-data="navItemData" />
|
|
157
|
+
</pre
|
|
158
|
+
>
|
|
147
159
|
|
|
148
160
|
<h3 class="page-heading-3">Standalone (this page)</h3>
|
|
149
161
|
<p class="page-body-medium">
|
|
150
|
-
For custom anchor navs — like a sticky section bar or a terms-page sidebar — call
|
|
151
|
-
|
|
152
|
-
<code class="inline-code">offset</code>
|
|
153
|
-
time rather than on mount.
|
|
162
|
+
For custom anchor navs — like a sticky section bar or a terms-page sidebar — call the composable directly.
|
|
163
|
+
Pass a getter for
|
|
164
|
+
<code class="inline-code">offset</code>
|
|
165
|
+
so it reads the element height at scroll time rather than on mount.
|
|
154
166
|
</p>
|
|
155
|
-
<pre class="demo-code">
|
|
167
|
+
<pre class="demo-code">
|
|
168
|
+
const stickyNavRef = ref<HTMLElement | null>(null);
|
|
156
169
|
|
|
157
170
|
const { handleNavClick } = useAnchorScroll({
|
|
158
171
|
offset: () => stickyNavRef.value?.offsetHeight ?? 0,
|
|
159
172
|
});
|
|
160
|
-
</pre
|
|
161
|
-
|
|
173
|
+
</pre
|
|
174
|
+
>
|
|
175
|
+
<pre class="demo-code">
|
|
176
|
+
<div ref="stickyNavRef" class="sticky-nav">
|
|
162
177
|
<a href="#overview" @click="(e) => handleNavClick(e, '#overview')">Overview</a>
|
|
163
178
|
<a href="#api" @click="(e) => handleNavClick(e, '#api')">API</a>
|
|
164
179
|
</div>
|
|
165
|
-
</pre
|
|
180
|
+
</pre
|
|
181
|
+
>
|
|
166
182
|
|
|
167
183
|
<h3 class="page-heading-3">Programmatic scroll</h3>
|
|
168
184
|
<p class="page-body-medium">
|
|
169
|
-
Use
|
|
170
|
-
|
|
185
|
+
Use
|
|
186
|
+
<code class="inline-code">scrollToAnchor</code>
|
|
187
|
+
when you need to scroll without a click event — for example, after a form submission or on route entry.
|
|
171
188
|
</p>
|
|
172
|
-
<pre class="demo-code">
|
|
189
|
+
<pre class="demo-code">
|
|
190
|
+
const { scrollToAnchor } = useAnchorScroll({ offset: 64 });
|
|
173
191
|
|
|
174
192
|
onMounted(() => {
|
|
175
193
|
if (route.hash) scrollToAnchor(route.hash);
|
|
176
194
|
});
|
|
177
|
-
</pre
|
|
178
|
-
|
|
195
|
+
</pre
|
|
196
|
+
>
|
|
197
|
+
</PageRow>
|
|
179
198
|
</section>
|
|
180
199
|
|
|
181
200
|
<section id="motion" class="anchor-demo-section">
|
|
182
|
-
<
|
|
201
|
+
<PageRow tag="div" variant="content">
|
|
183
202
|
<h2 class="page-heading-2">Reduced Motion</h2>
|
|
184
203
|
<p class="page-body-medium">
|
|
185
|
-
When
|
|
186
|
-
<code class="inline-code">
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
204
|
+
When
|
|
205
|
+
<code class="inline-code">prefers-reduced-motion: reduce</code>
|
|
206
|
+
is active,
|
|
207
|
+
<code class="inline-code">handleNavClick</code>
|
|
208
|
+
returns early without calling
|
|
209
|
+
<code class="inline-code">preventDefault</code>
|
|
210
|
+
. The browser or Vue Router handles the anchor navigation natively — an instant jump with no custom scroll
|
|
211
|
+
code involved. No special configuration needed.
|
|
190
212
|
</p>
|
|
191
213
|
<p class="page-body-medium">
|
|
192
|
-
To test: open your OS accessibility settings, enable Reduce Motion, then click
|
|
193
|
-
|
|
194
|
-
scrolling.
|
|
214
|
+
To test: open your OS accessibility settings, enable Reduce Motion, then click a section link in the bar
|
|
215
|
+
above. The page will jump immediately instead of scrolling.
|
|
195
216
|
</p>
|
|
196
217
|
<p class="page-body-medium">
|
|
197
|
-
<code class="inline-code">scrollToAnchor</code>
|
|
198
|
-
|
|
199
|
-
|
|
218
|
+
<code class="inline-code">scrollToAnchor</code>
|
|
219
|
+
respects the same preference: it uses
|
|
220
|
+
<code class="inline-code">behavior: "instant"</code>
|
|
221
|
+
when reduced motion is detected, so programmatic scrolls are equally accessible.
|
|
200
222
|
</p>
|
|
201
|
-
</
|
|
223
|
+
</PageRow>
|
|
202
224
|
</section>
|
|
203
225
|
</template>
|
|
204
226
|
</NuxtLayout>
|
|
@@ -252,7 +274,9 @@ onMounted(() => {
|
|
|
252
274
|
text-decoration: none;
|
|
253
275
|
padding-block: 0.4rem;
|
|
254
276
|
border-block-end: 1.5px solid transparent;
|
|
255
|
-
transition:
|
|
277
|
+
transition:
|
|
278
|
+
color 200ms ease,
|
|
279
|
+
border-color 200ms ease;
|
|
256
280
|
|
|
257
281
|
&:hover,
|
|
258
282
|
&:focus-visible {
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
<div>
|
|
3
3
|
<NuxtLayout name="default">
|
|
4
4
|
<template #layout-content>
|
|
5
|
-
<
|
|
5
|
+
<PageRow tag="div" variant="full" :styleClassPassthrough="['display-details-section', 'mbe-20']">
|
|
6
6
|
<h1 class="page-heading-2">Animated SVG Text Component</h1>
|
|
7
7
|
|
|
8
8
|
<AnimatedSvgText :styleClassPassthrough="['luxury-locs-title']">
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
</svg>
|
|
25
25
|
</template>
|
|
26
26
|
</AnimatedSvgText>
|
|
27
|
-
</
|
|
27
|
+
</PageRow>
|
|
28
28
|
</template>
|
|
29
29
|
</NuxtLayout>
|
|
30
30
|
</div>
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
<script setup lang="ts">
|
|
34
34
|
definePageMeta({
|
|
35
35
|
layout: false,
|
|
36
|
-
})
|
|
36
|
+
});
|
|
37
37
|
|
|
38
38
|
useHead({
|
|
39
39
|
title: "Animated SVG Text Component",
|
|
@@ -46,7 +46,7 @@ useHead({
|
|
|
46
46
|
bodyAttrs: {
|
|
47
47
|
class: "animated-svg-text-page",
|
|
48
48
|
},
|
|
49
|
-
})
|
|
49
|
+
});
|
|
50
50
|
</script>
|
|
51
51
|
|
|
52
52
|
<style lang="css">
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
<div>
|
|
3
3
|
<NuxtLayout name="default">
|
|
4
4
|
<template #layout-content>
|
|
5
|
-
<
|
|
5
|
+
<PageRow tag="div" variant="full" :style-class-passthrough="['mbe-20']">
|
|
6
6
|
<h2 class="page-heading-2">Block Decorators</h2>
|
|
7
|
-
</
|
|
8
|
-
<
|
|
7
|
+
</PageRow>
|
|
8
|
+
<PageRow tag="div" variant="full" :style-class-passthrough="['mbe-20']">
|
|
9
9
|
<h3 class="page-heading-3">Configuration options</h3>
|
|
10
10
|
<p class="page-body-normal">
|
|
11
11
|
Use the select drop down to adjust the shadow, inner shadow, and border strength.
|
|
@@ -50,8 +50,8 @@
|
|
|
50
50
|
</select>
|
|
51
51
|
</div>
|
|
52
52
|
</div>
|
|
53
|
-
</
|
|
54
|
-
<
|
|
53
|
+
</PageRow>
|
|
54
|
+
<PageRow tag="div" variant="full" :style-class-passthrough="['mbe-20']">
|
|
55
55
|
<UiBlockDecorated
|
|
56
56
|
tag="div"
|
|
57
57
|
:shadow-strength
|
|
@@ -61,7 +61,7 @@
|
|
|
61
61
|
>
|
|
62
62
|
<p class="page-body-normal">1</p>
|
|
63
63
|
</UiBlockDecorated>
|
|
64
|
-
</
|
|
64
|
+
</PageRow>
|
|
65
65
|
</template>
|
|
66
66
|
</NuxtLayout>
|
|
67
67
|
</div>
|
|
@@ -70,7 +70,7 @@
|
|
|
70
70
|
<script setup lang="ts">
|
|
71
71
|
definePageMeta({
|
|
72
72
|
layout: false,
|
|
73
|
-
})
|
|
73
|
+
});
|
|
74
74
|
|
|
75
75
|
useHead({
|
|
76
76
|
title: "Block Decorators",
|
|
@@ -83,11 +83,11 @@ useHead({
|
|
|
83
83
|
bodyAttrs: {
|
|
84
84
|
class: "block-decorators-page",
|
|
85
85
|
},
|
|
86
|
-
})
|
|
86
|
+
});
|
|
87
87
|
|
|
88
|
-
const shadowStrength = ref(3)
|
|
89
|
-
const innerShadowStrength = ref(4)
|
|
90
|
-
const borderStrength = ref(0)
|
|
88
|
+
const shadowStrength = ref(3);
|
|
89
|
+
const innerShadowStrength = ref(4);
|
|
90
|
+
const borderStrength = ref(0);
|
|
91
91
|
</script>
|
|
92
92
|
|
|
93
93
|
<style lang="css">
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
<div>
|
|
3
3
|
<NuxtLayout name="default">
|
|
4
4
|
<template #layout-content>
|
|
5
|
-
<
|
|
5
|
+
<PageRow tag="div" variant="full" :style-class-passthrough="['mbe-20']">
|
|
6
6
|
<h1 class="page-heading-1">CardCore Component</h1>
|
|
7
7
|
<form class="mb-12">
|
|
8
8
|
<div>
|
|
@@ -23,9 +23,9 @@
|
|
|
23
23
|
<input type="checkbox" id="noOutline" v-model="noOutline" class="form-checkbox" />
|
|
24
24
|
</div>
|
|
25
25
|
</form>
|
|
26
|
-
</
|
|
26
|
+
</PageRow>
|
|
27
27
|
|
|
28
|
-
<
|
|
28
|
+
<PageRow tag="div" variant="inset-content" :style-class-passthrough="['mbe-20']">
|
|
29
29
|
<CardCore :variant="cardCoreVariant" :has-dividers="hasDividers" :no-outline="noOutline">
|
|
30
30
|
<template #header>
|
|
31
31
|
<h2 class="page-heading-2">CardCore Header</h2>
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
<p class="page-body-small">CardCore Footer</p>
|
|
40
40
|
</template>
|
|
41
41
|
</CardCore>
|
|
42
|
-
</
|
|
42
|
+
</PageRow>
|
|
43
43
|
</template>
|
|
44
44
|
</NuxtLayout>
|
|
45
45
|
</div>
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
<script setup lang="ts">
|
|
49
49
|
definePageMeta({
|
|
50
50
|
layout: false,
|
|
51
|
-
})
|
|
51
|
+
});
|
|
52
52
|
|
|
53
53
|
useHead({
|
|
54
54
|
title: "CardCore Component",
|
|
@@ -61,11 +61,11 @@ useHead({
|
|
|
61
61
|
bodyAttrs: {
|
|
62
62
|
class: "card-core-page",
|
|
63
63
|
},
|
|
64
|
-
})
|
|
64
|
+
});
|
|
65
65
|
|
|
66
|
-
const cardCoreVariant = ref("solid")
|
|
67
|
-
const hasDividers = ref(false)
|
|
68
|
-
const noOutline = ref(false)
|
|
66
|
+
const cardCoreVariant = ref("solid");
|
|
67
|
+
const hasDividers = ref(false);
|
|
68
|
+
const noOutline = ref(false);
|
|
69
69
|
</script>
|
|
70
70
|
|
|
71
71
|
<style lang="css">
|
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
<div>
|
|
3
3
|
<NuxtLayout name="default">
|
|
4
4
|
<template #layout-content>
|
|
5
|
-
<
|
|
5
|
+
<PageRow tag="div" variant="content" :style-class-passthrough="['mbe-20']">
|
|
6
6
|
<h1 class="page-heading-2">Carousel (Basic)</h1>
|
|
7
|
-
</
|
|
7
|
+
</PageRow>
|
|
8
8
|
|
|
9
|
-
<
|
|
9
|
+
<PageRow tag="div" variant="popout" :style-class-passthrough="['mbe-20']">
|
|
10
10
|
<CarouselBasic
|
|
11
11
|
v-if="carouselStatus === 'success'"
|
|
12
12
|
:carousel-data-ids
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
</div>
|
|
22
22
|
</template>
|
|
23
23
|
</CarouselBasic>
|
|
24
|
-
</
|
|
24
|
+
</PageRow>
|
|
25
25
|
</template>
|
|
26
26
|
</NuxtLayout>
|
|
27
27
|
</div>
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
<div>
|
|
3
3
|
<NuxtLayout name="default">
|
|
4
4
|
<template #layout-content>
|
|
5
|
-
<
|
|
5
|
+
<PageRow tag="div" variant="content" :style-class-passthrough="['mbe-20']">
|
|
6
6
|
<h1 class="page-heading-2">Carousel</h1>
|
|
7
|
-
</
|
|
7
|
+
</PageRow>
|
|
8
8
|
|
|
9
9
|
<!-- ── QA Panel (dev only) ───────────────────────────────── -->
|
|
10
10
|
<div v-if="isDev" class="qa-panel">
|
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
<div>
|
|
3
3
|
<NuxtLayout name="default">
|
|
4
4
|
<template #layout-content>
|
|
5
|
-
<
|
|
5
|
+
<PageRow tag="div" variant="content" :style-class-passthrough="['mbe-20']">
|
|
6
6
|
<h1 class="page-heading-2">Carousel (Infinite)</h1>
|
|
7
|
-
</
|
|
7
|
+
</PageRow>
|
|
8
8
|
|
|
9
|
-
<
|
|
9
|
+
<PageRow tag="div" variant="popout" :style-class-passthrough="['mbe-20']">
|
|
10
10
|
<CarouselInfinite
|
|
11
11
|
v-if="carouselStatus === 'success'"
|
|
12
12
|
:carousel-data-ids
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
</div>
|
|
23
23
|
</template>
|
|
24
24
|
</CarouselInfinite>
|
|
25
|
-
</
|
|
25
|
+
</PageRow>
|
|
26
26
|
</template>
|
|
27
27
|
</NuxtLayout>
|
|
28
28
|
</div>
|
|
@@ -2,33 +2,33 @@
|
|
|
2
2
|
<div>
|
|
3
3
|
<NuxtLayout name="default">
|
|
4
4
|
<template #layout-content>
|
|
5
|
-
<
|
|
5
|
+
<PageRow tag="div" variant="full" :style-class-passthrough="['mbe-20']">
|
|
6
6
|
<h1 class="page-heading-2">Clipped Panels</h1>
|
|
7
|
-
</
|
|
8
|
-
<
|
|
7
|
+
</PageRow>
|
|
8
|
+
<PageRow tag="div" variant="full" :style-class-passthrough="['mbe-20']">
|
|
9
9
|
<h2 class="page-heading-2">Rectangle</h2>
|
|
10
10
|
<ClippedPanel variant="rectangle">
|
|
11
11
|
<template #default>
|
|
12
12
|
<p>Clipped Panels Rectangle</p>
|
|
13
13
|
</template>
|
|
14
14
|
</ClippedPanel>
|
|
15
|
-
</
|
|
16
|
-
<
|
|
15
|
+
</PageRow>
|
|
16
|
+
<PageRow tag="div" variant="full" :style-class-passthrough="['mbe-20']">
|
|
17
17
|
<h2 class="page-heading-2">Square</h2>
|
|
18
18
|
<ClippedPanel variant="square">
|
|
19
19
|
<template #default>
|
|
20
20
|
<p>Clipped Panels Square</p>
|
|
21
21
|
</template>
|
|
22
22
|
</ClippedPanel>
|
|
23
|
-
</
|
|
24
|
-
<
|
|
23
|
+
</PageRow>
|
|
24
|
+
<PageRow tag="div" variant="full" :style-class-passthrough="['mbe-20']">
|
|
25
25
|
<h2 class="page-heading-2">Circle</h2>
|
|
26
26
|
<div class="counter-panel">
|
|
27
27
|
<div class="counter-panel__counter">1</div>
|
|
28
28
|
<div class="counter-panel__title">Title</div>
|
|
29
29
|
<div class="counter-panel__content">This will be the content</div>
|
|
30
30
|
</div>
|
|
31
|
-
</
|
|
31
|
+
</PageRow>
|
|
32
32
|
</template>
|
|
33
33
|
</NuxtLayout>
|
|
34
34
|
</div>
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
<script setup lang="ts">
|
|
38
38
|
definePageMeta({
|
|
39
39
|
layout: false,
|
|
40
|
-
})
|
|
40
|
+
});
|
|
41
41
|
|
|
42
42
|
useHead({
|
|
43
43
|
title: "Browser title tag",
|
|
@@ -47,7 +47,7 @@ useHead({
|
|
|
47
47
|
content: "Meta description content",
|
|
48
48
|
},
|
|
49
49
|
],
|
|
50
|
-
})
|
|
50
|
+
});
|
|
51
51
|
</script>
|
|
52
52
|
|
|
53
53
|
<style scoped lang="css">
|
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
<div>
|
|
3
3
|
<NuxtLayout name="default">
|
|
4
4
|
<template #layout-content>
|
|
5
|
-
<
|
|
5
|
+
<PageRow tag="div" variant="content" :style-class-passthrough="['mbe-20']">
|
|
6
6
|
<h2 class="page-heading-2">Profile Section</h2>
|
|
7
|
-
</
|
|
7
|
+
</PageRow>
|
|
8
8
|
|
|
9
|
-
<
|
|
9
|
+
<PageRow tag="div" variant="content" :style-class-passthrough="['mbe-20']">
|
|
10
10
|
<ContactSection tag="section" stepper-indicator-size="2.4rem" :style-class-passthrough="['mbe-20']">
|
|
11
11
|
<template #indicator-0>
|
|
12
12
|
<Icon name="lucide-map-pin" class="indicator-icon" />
|
|
@@ -199,7 +199,7 @@
|
|
|
199
199
|
</ClientOnly>
|
|
200
200
|
</template>
|
|
201
201
|
</ContactSection>
|
|
202
|
-
</
|
|
202
|
+
</PageRow>
|
|
203
203
|
</template>
|
|
204
204
|
</NuxtLayout>
|
|
205
205
|
</div>
|
|
@@ -2,12 +2,11 @@
|
|
|
2
2
|
<div>
|
|
3
3
|
<NuxtLayout name="default">
|
|
4
4
|
<template #layout-content>
|
|
5
|
-
<
|
|
5
|
+
<PageRow tag="div" variant="popout" :style-class-passthrough="['mbe-20']">
|
|
6
6
|
<h1 class="page-heading-2">Container Glow Effect</h1>
|
|
7
7
|
<p>Glow will track mouse position</p>
|
|
8
8
|
|
|
9
9
|
<ContainerGlowCore
|
|
10
|
-
|
|
11
10
|
tag="div"
|
|
12
11
|
:style-class-passthrough="['class-scope', 'pbe-20']"
|
|
13
12
|
:config="{
|
|
@@ -26,7 +25,7 @@
|
|
|
26
25
|
</div>
|
|
27
26
|
</template>
|
|
28
27
|
</ContainerGlowCore>
|
|
29
|
-
</
|
|
28
|
+
</PageRow>
|
|
30
29
|
</template>
|
|
31
30
|
</NuxtLayout>
|
|
32
31
|
</div>
|