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.
Files changed (223) hide show
  1. package/.claude/settings.json +2 -4
  2. package/.claude/settings.local.json +22 -2
  3. package/.claude/skills/components/card-core.md +205 -0
  4. package/.claude/skills/components/display-dialog.md +128 -0
  5. package/.claude/skills/components/page-hero-highlights.md +1 -1
  6. package/.claude/skills/components/page-row.md +157 -0
  7. package/.claude/skills/components/services-card-grid.md +4 -4
  8. package/.claude/skills/components/services-section-grid.md +4 -4
  9. package/.claude/skills/components/tab-navigation.md +222 -0
  10. package/.claude/skills/composable-anchor-scroll.md +110 -28
  11. package/.claude/skills/composable-dialog-controls.md +55 -43
  12. package/.claude/skills/index.md +5 -2
  13. package/app/components/01.atoms/card/CONSUMER-STYLING.md +175 -0
  14. package/app/components/01.atoms/card/CardCore.vue +48 -21
  15. package/app/components/01.atoms/display-dialog/CONSUMER-STYLING.md +163 -0
  16. package/app/components/01.atoms/display-dialog/DisplayDialog.vue +277 -0
  17. package/app/components/01.atoms/display-dialog/stories/DisplayDialog.stories.ts +177 -0
  18. package/app/components/01.atoms/display-dialog/tests/DisplayDialog.spec.ts +264 -0
  19. package/app/components/01.atoms/display-dialog/tests/__snapshots__/DisplayDialog.spec.ts.snap +18 -0
  20. package/app/components/01.atoms/page-row/CONSUMER-STYLING.md +90 -0
  21. package/app/components/01.atoms/page-row/PageRow.vue +115 -0
  22. package/app/components/01.atoms/page-row/stories/PageRow.stories.ts +311 -0
  23. package/app/components/01.atoms/page-row/tests/PageRow.spec.ts +191 -0
  24. package/app/components/02.molecules/navigation/tab-navigation/CONSUMER-STYLING.md +145 -0
  25. package/app/components/02.molecules/navigation/tab-navigation/TabNavigation.vue +52 -11
  26. package/app/components/02.molecules/navigation/tab-navigation/tests/__snapshots__/TabNavigation.spec.ts.snap +12 -6
  27. package/app/components/{forms/ui → 05.forms/form-field}/FormField.vue +12 -19
  28. package/app/components/{forms/ui → 05.forms/form-wrapper}/FormWrapper.vue +6 -6
  29. package/app/components/{forms → 05.forms}/input-button/InputButtonCore.vue +2 -0
  30. package/app/components/{forms → 05.forms}/input-button/stories/InputButtonCore.stories.ts +1 -1
  31. package/app/components/{forms → 05.forms}/input-text/InputTextCore.vue +73 -73
  32. package/app/components/{forms → 05.forms}/input-text/variants/InputTextAsNumberWithLabel.vue +29 -29
  33. package/app/components/carousels/CarouselBasic.vue +99 -99
  34. package/app/components/carousels/CarouselInfinite.vue +150 -150
  35. package/app/components/deep-expanding-menu/DeepExpandingMenu.vue +111 -111
  36. package/app/components/responsive-header/ResponsiveHeader.vue +250 -282
  37. package/app/components/test-storybook/TestStorybook.vue +16 -16
  38. package/app/composables/tests/useDialogControls.spec.ts +34 -64
  39. package/app/composables/useAnchorScroll.ts +16 -3
  40. package/app/composables/useDialogControls.ts +19 -33
  41. package/app/composables/useFormControl.ts +0 -2
  42. package/app/composables/useNavCollapse.ts +5 -1
  43. package/app/layouts/default.vue +10 -7
  44. package/app/pages/auto-grid.vue +37 -20
  45. package/app/pages/banner-video.vue +2 -2
  46. package/app/pages/forms/examples/buttons/index.vue +189 -215
  47. package/app/pages/forms/examples/material/text-fields.vue +2 -2
  48. package/app/pages/grid-stack.vue +10 -10
  49. package/app/pages/index.vue +20 -20
  50. package/app/pages/samaritan.vue +4 -4
  51. package/app/pages/typography/hero-text.vue +6 -6
  52. package/app/pages/typography/index.vue +4 -4
  53. package/app/pages/typography/page-body.vue +4 -4
  54. package/app/pages/typography/page-heading.vue +4 -4
  55. package/app/pages/typography/page-link.vue +4 -4
  56. package/app/pages/ui/accordian.vue +4 -4
  57. package/app/pages/ui/anchor-scroll-tab-navigation.vue +191 -0
  58. package/app/pages/ui/anchor-scroll.vue +105 -71
  59. package/app/pages/ui/animated-svg-text.vue +4 -4
  60. package/app/pages/ui/block-decorators.vue +11 -11
  61. package/app/pages/ui/card-core.vue +9 -9
  62. package/app/pages/ui/carousel-basic.vue +4 -4
  63. package/app/pages/ui/carousel-flip.vue +2 -2
  64. package/app/pages/ui/carousel-infinite.vue +4 -4
  65. package/app/pages/ui/clipped-panels.vue +10 -10
  66. package/app/pages/ui/contact-section.vue +4 -4
  67. package/app/pages/ui/container-glow.vue +2 -3
  68. package/app/pages/ui/deep-expanding-menu.vue +138 -0
  69. package/app/pages/ui/display-avatar.vue +2 -2
  70. package/app/pages/ui/display-banner.vue +2 -2
  71. package/app/pages/ui/display-chip.vue +32 -25
  72. package/app/pages/ui/display-details.vue +6 -10
  73. package/app/pages/ui/display-dialog.vue +96 -131
  74. package/app/pages/ui/display-pill.vue +27 -33
  75. package/app/pages/ui/display-prompt.vue +4 -4
  76. package/app/pages/ui/display-toast.vue +2 -2
  77. package/app/pages/ui/expanding-panel.vue +12 -16
  78. package/app/pages/ui/glowing-border.vue +12 -12
  79. package/app/pages/ui/layout-grid-a.vue +6 -6
  80. package/app/pages/ui/layout-grid-b.vue +4 -4
  81. package/app/pages/ui/magnetic-navigation.vue +6 -6
  82. package/app/pages/ui/marquee-scroller.vue +2 -2
  83. package/app/pages/ui/mask-element.vue +2 -2
  84. package/app/pages/ui/masonry-columns.vue +4 -4
  85. package/app/pages/ui/masonry-grid-ordered-experiment.vue +4 -4
  86. package/app/pages/ui/masonry-grid-ordered.vue +4 -4
  87. package/app/pages/ui/masonry-grid-sorted.vue +4 -4
  88. package/app/pages/ui/masonry-grid.vue +4 -4
  89. package/app/pages/ui/navigation/navigation-horizontal.vue +12 -12
  90. package/app/pages/ui/navigation/tab-navigation.vue +493 -0
  91. package/app/pages/ui/page-row.vue +127 -0
  92. package/app/pages/ui/price-list.vue +4 -4
  93. package/app/pages/ui/profile-section.vue +4 -4
  94. package/app/pages/ui/qr-code/[componentName].vue +6 -6
  95. package/app/pages/ui/rotating-carousel.vue +16 -16
  96. package/app/pages/ui/scroll-reveal-image.vue +20 -20
  97. package/app/pages/ui/section-parallax.vue +7 -7
  98. package/app/pages/ui/services/colour-finder.vue +4 -4
  99. package/app/pages/ui/services/services-cards.vue +4 -4
  100. package/app/pages/ui/services/services-section/[slug].vue +4 -4
  101. package/app/pages/ui/services/services-sections-compact.vue +6 -6
  102. package/app/pages/ui/settings.vue +10 -10
  103. package/app/pages/ui/simple-grid.vue +2 -2
  104. package/app/pages/ui/slider-gallery.vue +5 -5
  105. package/app/pages/ui/tabs-y.vue +2 -3
  106. package/app/pages/ui/tabs.vue +6 -9
  107. package/app/pages/ui/tooltips.vue +9 -9
  108. package/app/pages/ui/wipe-away-vertical.vue +14 -14
  109. package/package.json +1 -1
  110. package/.claude/skills/components/layout-row.md +0 -239
  111. package/app/components/display-dialog/DisplayDialogCore.vue +0 -276
  112. package/app/components/display-dialog/variants/DisplayDialogConfirm.vue +0 -47
  113. package/app/components/display-dialog/variants/DisplayDialogScrollableContent.vue +0 -51
  114. package/app/components/forms/c12/utils.ts +0 -14
  115. package/app/components/layout-row/LayoutRow.vue +0 -171
  116. package/app/components/layout-row/stories/LayoutRow.stories.ts +0 -528
  117. package/app/pages/ui/layout-row.vue +0 -139
  118. /package/app/components/{forms → 05.forms}/form-errors/InputError.vue +0 -0
  119. /package/app/components/{forms → 05.forms}/form-errors/tests/InputError.spec.ts +0 -0
  120. /package/app/components/{forms → 05.forms}/form-fieldset/FormFieldset.vue +0 -0
  121. /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts +0 -0
  122. /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/combo-icons-secondary-chromium-darwin.png +0 -0
  123. /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/combo-icons-secondary-firefox-darwin.png +0 -0
  124. /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/combo-icons-secondary-webkit-darwin.png +0 -0
  125. /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/combo-icons-tertiary-chromium-darwin.png +0 -0
  126. /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/combo-icons-tertiary-firefox-darwin.png +0 -0
  127. /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/combo-icons-tertiary-webkit-darwin.png +0 -0
  128. /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/combo-primary-pending-chromium-darwin.png +0 -0
  129. /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/combo-primary-pending-firefox-darwin.png +0 -0
  130. /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/combo-primary-pending-webkit-darwin.png +0 -0
  131. /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/combo-secondary-pill-chromium-darwin.png +0 -0
  132. /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/combo-secondary-pill-firefox-darwin.png +0 -0
  133. /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/combo-secondary-pill-webkit-darwin.png +0 -0
  134. /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/combo-tertiary-readonly-chromium-darwin.png +0 -0
  135. /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/combo-tertiary-readonly-firefox-darwin.png +0 -0
  136. /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/combo-tertiary-readonly-webkit-darwin.png +0 -0
  137. /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/default-chromium-darwin.png +0 -0
  138. /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/default-firefox-darwin.png +0 -0
  139. /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/default-theme-default-chromium-darwin.png +0 -0
  140. /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/default-theme-default-firefox-darwin.png +0 -0
  141. /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/default-theme-default-webkit-darwin.png +0 -0
  142. /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/default-theme-error-chromium-darwin.png +0 -0
  143. /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/default-theme-error-firefox-darwin.png +0 -0
  144. /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/default-theme-error-webkit-darwin.png +0 -0
  145. /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/default-theme-success-chromium-darwin.png +0 -0
  146. /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/default-theme-success-firefox-darwin.png +0 -0
  147. /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/default-theme-success-webkit-darwin.png +0 -0
  148. /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/default-theme-warning-chromium-darwin.png +0 -0
  149. /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/default-theme-warning-firefox-darwin.png +0 -0
  150. /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/default-theme-warning-webkit-darwin.png +0 -0
  151. /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/default-variant-primary-chromium-darwin.png +0 -0
  152. /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/default-variant-primary-firefox-darwin.png +0 -0
  153. /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/default-variant-primary-webkit-darwin.png +0 -0
  154. /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/default-variant-secondary-chromium-darwin.png +0 -0
  155. /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/default-variant-secondary-firefox-darwin.png +0 -0
  156. /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/default-variant-secondary-webkit-darwin.png +0 -0
  157. /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/default-variant-tertiary-chromium-darwin.png +0 -0
  158. /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/default-variant-tertiary-firefox-darwin.png +0 -0
  159. /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/default-variant-tertiary-webkit-darwin.png +0 -0
  160. /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/default-webkit-darwin.png +0 -0
  161. /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/nuxt-icon-only-component-chromium-darwin.png +0 -0
  162. /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/nuxt-icon-only-component-firefox-darwin.png +0 -0
  163. /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/nuxt-icon-only-component-webkit-darwin.png +0 -0
  164. /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/state-pending-chromium-darwin.png +0 -0
  165. /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/state-pending-firefox-darwin.png +0 -0
  166. /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/state-pending-webkit-darwin.png +0 -0
  167. /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/state-pill-chromium-darwin.png +0 -0
  168. /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/state-pill-firefox-darwin.png +0 -0
  169. /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/state-pill-webkit-darwin.png +0 -0
  170. /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/state-readonly-chromium-darwin.png +0 -0
  171. /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/state-readonly-firefox-darwin.png +0 -0
  172. /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/state-readonly-webkit-darwin.png +0 -0
  173. /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
  174. /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
  175. /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
  176. /package/app/components/{forms → 05.forms}/input-button/tests/InputButtonCore.spec.ts +0 -0
  177. /package/app/components/{forms → 05.forms}/input-button/tests/__snapshots__/InputButtonCore.spec.ts.snap +0 -0
  178. /package/app/components/{forms → 05.forms}/input-checkbox/MultipleCheckboxes.vue +0 -0
  179. /package/app/components/{forms → 05.forms}/input-checkbox/SingleCheckbox.vue +0 -0
  180. /package/app/components/{forms → 05.forms}/input-checkbox/tests/MultipleCheckboxes.spec.ts +0 -0
  181. /package/app/components/{forms → 05.forms}/input-checkbox/tests/data/tags.json +0 -0
  182. /package/app/components/{forms → 05.forms}/input-checkbox-radio/InputCheckboxRadioButton.vue +0 -0
  183. /package/app/components/{forms → 05.forms}/input-checkbox-radio/InputCheckboxRadioCore.vue +0 -0
  184. /package/app/components/{forms → 05.forms}/input-checkbox-radio/InputCheckboxRadioWithLabel.vue +0 -0
  185. /package/app/components/{forms → 05.forms}/input-checkbox-radio/tests/InputCheckboxRadioCore.spec.ts +0 -0
  186. /package/app/components/{forms → 05.forms}/input-copy/InputCopyCore.vue +0 -0
  187. /package/app/components/{forms → 05.forms}/input-copy/stories/InputCopyCore.stories.ts +0 -0
  188. /package/app/components/{forms → 05.forms}/input-copy/tests/InputCopyCore.spec.ts +0 -0
  189. /package/app/components/{forms → 05.forms}/input-copy/tests/__snapshots__/InputCopyCore.spec.ts.snap +0 -0
  190. /package/app/components/{forms → 05.forms}/input-description/InputDescription.vue +0 -0
  191. /package/app/components/{forms → 05.forms}/input-description/tests/InputDescription.spec.ts +0 -0
  192. /package/app/components/{forms → 05.forms}/input-label/InputLabel.vue +0 -0
  193. /package/app/components/{forms → 05.forms}/input-label/tests/InputLabel.spec.ts +0 -0
  194. /package/app/components/{forms → 05.forms}/input-number/InputNumberCore.vue +0 -0
  195. /package/app/components/{forms → 05.forms}/input-number/variants/InputNumberDefault.vue +0 -0
  196. /package/app/components/{forms → 05.forms}/input-radio/MultipleRadiobuttons.vue +0 -0
  197. /package/app/components/{forms → 05.forms}/input-radio/tests/MultipleRadioButtons.spec.ts +0 -0
  198. /package/app/components/{forms → 05.forms}/input-radio/tests/data/tags.json +0 -0
  199. /package/app/components/{forms → 05.forms}/input-range/InputRangeCore.vue +0 -0
  200. /package/app/components/{forms → 05.forms}/input-range/variants/InputRangeDefault.vue +0 -0
  201. /package/app/components/{forms → 05.forms}/input-range-fancy/InputRangeFancyCore.vue +0 -0
  202. /package/app/components/{forms → 05.forms}/input-range-fancy/InputRangeFancyWithLabel.vue +0 -0
  203. /package/app/components/{forms → 05.forms}/input-select/InputSelectCore.vue +0 -0
  204. /package/app/components/{forms → 05.forms}/input-select/variants/InputSelectWithLabel.vue +0 -0
  205. /package/app/components/{forms → 05.forms}/input-text/stories/InputPasswordWithLabel.stories.ts +0 -0
  206. /package/app/components/{forms → 05.forms}/input-text/stories/InputTextAsNumberWithLabel.stories.ts +0 -0
  207. /package/app/components/{forms → 05.forms}/input-text/stories/InputTextCore.stories.ts +0 -0
  208. /package/app/components/{forms → 05.forms}/input-text/stories/InputTextWithLabel.stories.ts +0 -0
  209. /package/app/components/{forms → 05.forms}/input-text/variants/InputPasswordWithLabel.vue +0 -0
  210. /package/app/components/{forms → 05.forms}/input-text/variants/InputTextWithLabel.vue +0 -0
  211. /package/app/components/{forms → 05.forms}/input-textarea/InputTextareaCore.vue +0 -0
  212. /package/app/components/{forms → 05.forms}/input-textarea/stories/InputTextareaCore.stories.ts +0 -0
  213. /package/app/components/{forms → 05.forms}/input-textarea/stories/InputTextareaWithLabel.stories.ts +0 -0
  214. /package/app/components/{forms → 05.forms}/input-textarea/variants/InputTextareaWithLabel.vue +0 -0
  215. /package/app/components/{forms → 05.forms}/pending-effect/PendingEffect.vue +0 -0
  216. /package/app/components/{forms → 05.forms}/toggle-switch/ToggleSwitchCore.vue +0 -0
  217. /package/app/components/{forms → 05.forms}/toggle-switch/stories/ToggleSwitchCore.stories.ts +0 -0
  218. /package/app/components/{forms → 05.forms}/toggle-switch/stories/ToggleSwitchWithLabel.stories.ts +0 -0
  219. /package/app/components/{forms → 05.forms}/toggle-switch/stories/ToggleSwitchWithLabelInline.stories.ts +0 -0
  220. /package/app/components/{forms → 05.forms}/toggle-switch/variants/ToggleSwitchWithLabel.vue +0 -0
  221. /package/app/components/{forms → 05.forms}/toggle-switch/variants/ToggleSwitchWithLabelInline.vue +0 -0
  222. /package/app/components/{forms → 05.forms}/triple-toggle-switch/TripleToggleSwitchCore.vue +0 -0
  223. /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
- <LayoutRow tag="div" variant="content" :style-class-passthrough="['mbe-4']">
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 <code class="inline-code">#hash</code> link clicks and smooth-scrolls to
9
- the target element. Routes and external links pass through to NuxtLink unchanged.
10
- Respects <code class="inline-code">prefers-reduced-motion</code> when the user opts
11
- out of motion, the default browser anchor jump is preserved with no custom scroll code
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> with a dynamic offset so section
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
- </LayoutRow>
21
+ </PageRow>
20
22
 
21
23
  <div ref="stickyNavRef" class="anchor-scroll-sticky-nav">
22
- <LayoutRow tag="div" variant="content">
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
- >{{ section.label }}</a>
33
+ >
34
+ {{ section.label }}
35
+ </a>
31
36
  </li>
32
37
  </ul>
33
38
  </nav>
34
- </LayoutRow>
39
+ </PageRow>
35
40
  </div>
36
41
 
37
42
  <section id="overview" class="anchor-demo-section">
38
- <LayoutRow tag="div" variant="content">
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> (which handles routes) and the browser's
43
- native anchor scrolling (which has no smooth-scroll guarantee).
44
- <code class="inline-code">useAnchorScroll</code> fills that gap.
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 <code class="inline-code">#hash</code> href to
48
- <code class="inline-code">handleNavClick</code> — it prevents the default jump,
49
- pushes the hash into the URL, and scrolls to the matching element. Every other href
50
- (routes, external URLs) is a no-op, so the same handler is safe to attach to all
51
- navigation links without conditional logic in the template.
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 <code class="inline-code">offset</code> shifts the final scroll position
55
- upward — useful when a sticky bar would otherwise obscure the section heading. Pass a
56
- number for a fixed bar height or a getter function to read the bar's live height at
57
- scroll time.
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
- </LayoutRow>
68
+ </PageRow>
60
69
  </section>
61
70
 
62
71
  <section id="api" class="anchor-demo-section">
63
- <LayoutRow tag="div" variant="content">
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 | (() =&gt; 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
- element's height at scroll time rather than at composable init.
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) =&gt; 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) =&gt; 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>). Respects the same motion preference and
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
- </LayoutRow>
128
+ </PageRow>
123
129
  </section>
124
130
 
125
131
  <section id="usage" class="anchor-demo-section">
126
- <LayoutRow tag="div" variant="content">
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> already has
132
- <code class="inline-code">useAnchorScroll</code> wired up internally. Pass anchor
133
- hrefs in <code class="inline-code">navItemData</code> and it works automatically.
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">const navItemData = {
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
- <pre class="demo-code">&lt;TabNavigation :nav-item-data="navItemData" /&gt;
145
- </pre>
153
+ </pre
154
+ >
155
+ <pre class="demo-code">
156
+ &lt;TabNavigation :nav-item-data="navItemData" /&gt;
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
- the composable directly. Pass a getter for
151
- <code class="inline-code">offset</code> so it reads the element height at scroll
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">const stickyNavRef = ref&lt;HTMLElement | null&gt;(null);
167
+ <pre class="demo-code">
168
+ const stickyNavRef = ref&lt;HTMLElement | null&gt;(null);
155
169
 
156
170
  const { handleNavClick } = useAnchorScroll({
157
171
  offset: () =&gt; stickyNavRef.value?.offsetHeight ?? 0,
158
172
  });
159
- </pre>
160
- <pre class="demo-code">&lt;div ref="stickyNavRef" class="sticky-nav"&gt;
173
+ </pre
174
+ >
175
+ <pre class="demo-code">
176
+ &lt;div ref="stickyNavRef" class="sticky-nav"&gt;
161
177
  &lt;a href="#overview" @click="(e) =&gt; handleNavClick(e, '#overview')"&gt;Overview&lt;/a&gt;
162
178
  &lt;a href="#api" @click="(e) =&gt; handleNavClick(e, '#api')"&gt;API&lt;/a&gt;
163
179
  &lt;/div&gt;
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 <code class="inline-code">scrollToAnchor</code> when you need to scroll without
169
- a click event — for example, after a form submission or on route entry.
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">const { scrollToAnchor } = useAnchorScroll({ offset: 64 });
189
+ <pre class="demo-code">
190
+ const { scrollToAnchor } = useAnchorScroll({ offset: 64 });
172
191
 
173
192
  onMounted(() =&gt; {
174
193
  if (route.hash) scrollToAnchor(route.hash);
175
194
  });
176
- </pre>
177
- </LayoutRow>
195
+ </pre
196
+ >
197
+ </PageRow>
178
198
  </section>
179
199
 
180
200
  <section id="motion" class="anchor-demo-section">
181
- <LayoutRow tag="div" variant="content">
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 <code class="inline-code">prefers-reduced-motion: reduce</code> is active,
185
- <code class="inline-code">handleNavClick</code> returns early without calling
186
- <code class="inline-code">preventDefault</code>. The browser or Vue Router handles
187
- the anchor navigation natively — an instant jump with no custom scroll code
188
- involved. No special configuration needed.
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
- a section link in the bar above. The page will jump immediately instead of
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> respects the same preference:
197
- it uses <code class="inline-code">behavior: "instant"</code> when reduced motion
198
- is detected, so programmatic scrolls are equally accessible.
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
- </LayoutRow>
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: color 200ms ease, border-color 200ms ease;
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
- <LayoutRow tag="div" variant="full-width" :styleClassPassthrough="['display-details-section', 'mbe-20']">
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
- </LayoutRow>
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
- <LayoutRow tag="div" variant="full-width" :style-class-passthrough="['mbe-20']">
5
+ <PageRow tag="div" variant="full" :style-class-passthrough="['mbe-20']">
6
6
  <h2 class="page-heading-2">Block Decorators</h2>
7
- </LayoutRow>
8
- <LayoutRow tag="div" variant="full-width" :style-class-passthrough="['mbe-20']">
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
- </LayoutRow>
54
- <LayoutRow tag="div" variant="full-width" :style-class-passthrough="['mbe-20']">
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
- </LayoutRow>
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
- <LayoutRow tag="div" variant="full-width" :style-class-passthrough="['mbe-20']">
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
- </LayoutRow>
26
+ </PageRow>
27
27
 
28
- <LayoutRow tag="div" variant="inset-content" :style-class-passthrough="['mbe-20']">
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
- </LayoutRow>
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
- <LayoutRow tag="div" variant="content" :style-class-passthrough="['mbe-20']">
5
+ <PageRow tag="div" variant="content" :style-class-passthrough="['mbe-20']">
6
6
  <h1 class="page-heading-2">Carousel (Basic)</h1>
7
- </LayoutRow>
7
+ </PageRow>
8
8
 
9
- <LayoutRow tag="div" variant="popout" :style-class-passthrough="['mbe-20']">
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
- </LayoutRow>
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
- <LayoutRow tag="div" variant="content" :style-class-passthrough="['mbe-20']">
5
+ <PageRow tag="div" variant="content" :style-class-passthrough="['mbe-20']">
6
6
  <h1 class="page-heading-2">Carousel</h1>
7
- </LayoutRow>
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
- <LayoutRow tag="div" variant="content" :style-class-passthrough="['mbe-20']">
5
+ <PageRow tag="div" variant="content" :style-class-passthrough="['mbe-20']">
6
6
  <h1 class="page-heading-2">Carousel (Infinite)</h1>
7
- </LayoutRow>
7
+ </PageRow>
8
8
 
9
- <LayoutRow tag="div" variant="popout" :style-class-passthrough="['mbe-20']">
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
- </LayoutRow>
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
- <LayoutRow tag="div" variant="full-width" :style-class-passthrough="['mbe-20']">
5
+ <PageRow tag="div" variant="full" :style-class-passthrough="['mbe-20']">
6
6
  <h1 class="page-heading-2">Clipped Panels</h1>
7
- </LayoutRow>
8
- <LayoutRow tag="div" variant="full-width" :style-class-passthrough="['mbe-20']">
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
- </LayoutRow>
16
- <LayoutRow tag="div" variant="full-width" :style-class-passthrough="['mbe-20']">
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
- </LayoutRow>
24
- <LayoutRow tag="div" variant="full-width" :style-class-passthrough="['mbe-20']">
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
- </LayoutRow>
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
- <LayoutRow tag="div" variant="content" :style-class-passthrough="['mbe-20']">
5
+ <PageRow tag="div" variant="content" :style-class-passthrough="['mbe-20']">
6
6
  <h2 class="page-heading-2">Profile Section</h2>
7
- </LayoutRow>
7
+ </PageRow>
8
8
 
9
- <LayoutRow tag="div" variant="content" :style-class-passthrough="['mbe-20']">
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
- </LayoutRow>
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
- <LayoutRow tag="div" variant="popout" :style-class-passthrough="['mbe-20']">
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
- </LayoutRow>
28
+ </PageRow>
30
29
  </template>
31
30
  </NuxtLayout>
32
31
  </div>