srcdev-nuxt-components 9.1.48 → 9.1.50
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-anchor-scroll.md +110 -28
- 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 +52 -11
- 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/useAnchorScroll.ts +16 -3
- package/app/composables/useDialogControls.ts +19 -33
- package/app/composables/useFormControl.ts +0 -2
- package/app/composables/useNavCollapse.ts +5 -1
- package/app/layouts/default.vue +10 -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 +191 -0
- package/app/pages/ui/anchor-scroll.vue +105 -71
- 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,65 +2,74 @@
|
|
|
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">
|
|
26
28
|
<a
|
|
27
29
|
:href="`#${section.id}`"
|
|
28
30
|
class="anchor-nav-link"
|
|
31
|
+
:class="{ 'is-active': `#${section.id}` === activeHash }"
|
|
29
32
|
@click="(e) => handleNavClick(e, `#${section.id}`)"
|
|
30
|
-
>
|
|
33
|
+
>
|
|
34
|
+
{{ section.label }}
|
|
35
|
+
</a>
|
|
31
36
|
</li>
|
|
32
37
|
</ul>
|
|
33
38
|
</nav>
|
|
34
|
-
</
|
|
39
|
+
</PageRow>
|
|
35
40
|
</div>
|
|
36
41
|
|
|
37
42
|
<section id="overview" class="anchor-demo-section">
|
|
38
|
-
<
|
|
43
|
+
<PageRow tag="div" variant="content">
|
|
39
44
|
<h2 class="page-heading-2">Overview</h2>
|
|
40
45
|
<p class="page-body-medium">
|
|
41
46
|
Single-page and anchor-linked layouts need a bridge between
|
|
42
|
-
<code class="inline-code">NuxtLink</code>
|
|
43
|
-
native anchor scrolling (which has no smooth-scroll guarantee).
|
|
44
|
-
<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.
|
|
45
51
|
</p>
|
|
46
52
|
<p class="page-body-medium">
|
|
47
|
-
Pass any
|
|
48
|
-
<code class="inline-code"
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
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.
|
|
52
60
|
</p>
|
|
53
61
|
<p class="page-body-medium">
|
|
54
|
-
An optional
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
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.
|
|
58
67
|
</p>
|
|
59
|
-
</
|
|
68
|
+
</PageRow>
|
|
60
69
|
</section>
|
|
61
70
|
|
|
62
71
|
<section id="api" class="anchor-demo-section">
|
|
63
|
-
<
|
|
72
|
+
<PageRow tag="div" variant="content">
|
|
64
73
|
<h2 class="page-heading-2">API</h2>
|
|
65
74
|
|
|
66
75
|
<h3 class="page-heading-3">Options</h3>
|
|
@@ -80,8 +89,8 @@
|
|
|
80
89
|
<td><code class="inline-code">number | (() => number)</code></td>
|
|
81
90
|
<td><code class="inline-code">0</code></td>
|
|
82
91
|
<td>
|
|
83
|
-
Pixels subtracted from the scroll-to position. Pass a getter to read a sticky
|
|
84
|
-
|
|
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.
|
|
85
94
|
</td>
|
|
86
95
|
</tr>
|
|
87
96
|
</tbody>
|
|
@@ -102,37 +111,38 @@
|
|
|
102
111
|
<tr>
|
|
103
112
|
<td><code class="inline-code">handleNavClick</code></td>
|
|
104
113
|
<td><code class="inline-code">(event: MouseEvent, href: string) => void</code></td>
|
|
105
|
-
<td>
|
|
106
|
-
Attach to click handlers. No-ops silently for non-anchor hrefs so it is safe
|
|
107
|
-
on all links.
|
|
108
|
-
</td>
|
|
114
|
+
<td>Attach to click handlers. No-ops silently for non-anchor hrefs so it is safe on all links.</td>
|
|
109
115
|
</tr>
|
|
110
116
|
<tr>
|
|
111
117
|
<td><code class="inline-code">scrollToAnchor</code></td>
|
|
112
118
|
<td><code class="inline-code">(hash: string) => void</code></td>
|
|
113
119
|
<td>
|
|
114
120
|
Programmatically scroll to a hash string (with or without the leading
|
|
115
|
-
<code class="inline-code">#</code>
|
|
116
|
-
offset.
|
|
121
|
+
<code class="inline-code">#</code>
|
|
122
|
+
). Respects the same motion preference and offset.
|
|
117
123
|
</td>
|
|
118
124
|
</tr>
|
|
119
125
|
</tbody>
|
|
120
126
|
</table>
|
|
121
127
|
</div>
|
|
122
|
-
</
|
|
128
|
+
</PageRow>
|
|
123
129
|
</section>
|
|
124
130
|
|
|
125
131
|
<section id="usage" class="anchor-demo-section">
|
|
126
|
-
<
|
|
132
|
+
<PageRow tag="div" variant="content">
|
|
127
133
|
<h2 class="page-heading-2">Usage</h2>
|
|
128
134
|
|
|
129
135
|
<h3 class="page-heading-3">In TabNavigation</h3>
|
|
130
136
|
<p class="page-body-medium">
|
|
131
|
-
<code class="inline-code">TabNavigation</code>
|
|
132
|
-
|
|
133
|
-
|
|
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.
|
|
134
143
|
</p>
|
|
135
|
-
<pre class="demo-code">
|
|
144
|
+
<pre class="demo-code">
|
|
145
|
+
const navItemData = {
|
|
136
146
|
main: [
|
|
137
147
|
{ text: "About", href: "#about" },
|
|
138
148
|
{ text: "Services", href: "#services" },
|
|
@@ -140,64 +150,77 @@
|
|
|
140
150
|
{ text: "Blog", href: "/blog" }, // route — handled by NuxtLink as normal
|
|
141
151
|
],
|
|
142
152
|
};
|
|
143
|
-
</pre
|
|
144
|
-
|
|
145
|
-
|
|
153
|
+
</pre
|
|
154
|
+
>
|
|
155
|
+
<pre class="demo-code">
|
|
156
|
+
<TabNavigation :nav-item-data="navItemData" />
|
|
157
|
+
</pre
|
|
158
|
+
>
|
|
146
159
|
|
|
147
160
|
<h3 class="page-heading-3">Standalone (this page)</h3>
|
|
148
161
|
<p class="page-body-medium">
|
|
149
|
-
For custom anchor navs — like a sticky section bar or a terms-page sidebar — call
|
|
150
|
-
|
|
151
|
-
<code class="inline-code">offset</code>
|
|
152
|
-
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.
|
|
153
166
|
</p>
|
|
154
|
-
<pre class="demo-code">
|
|
167
|
+
<pre class="demo-code">
|
|
168
|
+
const stickyNavRef = ref<HTMLElement | null>(null);
|
|
155
169
|
|
|
156
170
|
const { handleNavClick } = useAnchorScroll({
|
|
157
171
|
offset: () => stickyNavRef.value?.offsetHeight ?? 0,
|
|
158
172
|
});
|
|
159
|
-
</pre
|
|
160
|
-
|
|
173
|
+
</pre
|
|
174
|
+
>
|
|
175
|
+
<pre class="demo-code">
|
|
176
|
+
<div ref="stickyNavRef" class="sticky-nav">
|
|
161
177
|
<a href="#overview" @click="(e) => handleNavClick(e, '#overview')">Overview</a>
|
|
162
178
|
<a href="#api" @click="(e) => handleNavClick(e, '#api')">API</a>
|
|
163
179
|
</div>
|
|
164
|
-
</pre
|
|
180
|
+
</pre
|
|
181
|
+
>
|
|
165
182
|
|
|
166
183
|
<h3 class="page-heading-3">Programmatic scroll</h3>
|
|
167
184
|
<p class="page-body-medium">
|
|
168
|
-
Use
|
|
169
|
-
|
|
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.
|
|
170
188
|
</p>
|
|
171
|
-
<pre class="demo-code">
|
|
189
|
+
<pre class="demo-code">
|
|
190
|
+
const { scrollToAnchor } = useAnchorScroll({ offset: 64 });
|
|
172
191
|
|
|
173
192
|
onMounted(() => {
|
|
174
193
|
if (route.hash) scrollToAnchor(route.hash);
|
|
175
194
|
});
|
|
176
|
-
</pre
|
|
177
|
-
|
|
195
|
+
</pre
|
|
196
|
+
>
|
|
197
|
+
</PageRow>
|
|
178
198
|
</section>
|
|
179
199
|
|
|
180
200
|
<section id="motion" class="anchor-demo-section">
|
|
181
|
-
<
|
|
201
|
+
<PageRow tag="div" variant="content">
|
|
182
202
|
<h2 class="page-heading-2">Reduced Motion</h2>
|
|
183
203
|
<p class="page-body-medium">
|
|
184
|
-
When
|
|
185
|
-
<code class="inline-code">
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
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.
|
|
189
212
|
</p>
|
|
190
213
|
<p class="page-body-medium">
|
|
191
|
-
To test: open your OS accessibility settings, enable Reduce Motion, then click
|
|
192
|
-
|
|
193
|
-
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.
|
|
194
216
|
</p>
|
|
195
217
|
<p class="page-body-medium">
|
|
196
|
-
<code class="inline-code">scrollToAnchor</code>
|
|
197
|
-
|
|
198
|
-
|
|
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.
|
|
199
222
|
</p>
|
|
200
|
-
</
|
|
223
|
+
</PageRow>
|
|
201
224
|
</section>
|
|
202
225
|
</template>
|
|
203
226
|
</NuxtLayout>
|
|
@@ -216,9 +239,13 @@ const sections = [
|
|
|
216
239
|
{ id: "motion", label: "Reduced Motion" },
|
|
217
240
|
];
|
|
218
241
|
|
|
219
|
-
const { handleNavClick } = useAnchorScroll({
|
|
242
|
+
const { handleNavClick, activeHash } = useAnchorScroll({
|
|
220
243
|
offset: () => stickyNavRef.value?.offsetHeight ?? 0,
|
|
221
244
|
});
|
|
245
|
+
|
|
246
|
+
onMounted(() => {
|
|
247
|
+
if (!activeHash.value && sections[0]) activeHash.value = `#${sections[0].id}`;
|
|
248
|
+
});
|
|
222
249
|
</script>
|
|
223
250
|
|
|
224
251
|
<style lang="css">
|
|
@@ -247,7 +274,9 @@ const { handleNavClick } = useAnchorScroll({
|
|
|
247
274
|
text-decoration: none;
|
|
248
275
|
padding-block: 0.4rem;
|
|
249
276
|
border-block-end: 1.5px solid transparent;
|
|
250
|
-
transition:
|
|
277
|
+
transition:
|
|
278
|
+
color 200ms ease,
|
|
279
|
+
border-color 200ms ease;
|
|
251
280
|
|
|
252
281
|
&:hover,
|
|
253
282
|
&:focus-visible {
|
|
@@ -255,6 +284,11 @@ const { handleNavClick } = useAnchorScroll({
|
|
|
255
284
|
border-block-end-color: currentColor;
|
|
256
285
|
outline: none;
|
|
257
286
|
}
|
|
287
|
+
|
|
288
|
+
&.is-active {
|
|
289
|
+
color: var(--slate-00, currentColor);
|
|
290
|
+
border-block-end-color: currentColor;
|
|
291
|
+
}
|
|
258
292
|
}
|
|
259
293
|
|
|
260
294
|
.anchor-demo-section {
|
|
@@ -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>
|