srcdev-nuxt-components 9.5.7 → 9.6.1
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/skills/component-compliance-checklist.md +8 -2
- package/.claude/skills/component-dynamic-slots.md +3 -3
- package/.claude/skills/component-export-types.md +10 -16
- package/.claude/skills/component-naming.md +1 -1
- package/.claude/skills/components/alert-content.md +9 -1
- package/.claude/skills/components/breadcrumb.md +5 -0
- package/.claude/skills/components/container-glow.md +21 -8
- package/.claude/skills/components/display-avatar.md +13 -7
- package/.claude/skills/components/display-chip.md +37 -24
- package/.claude/skills/components/display-pill.md +58 -8
- package/.claude/skills/components/display-prompt.md +8 -5
- package/.claude/skills/components/display-toast.md +21 -4
- package/.claude/skills/components/glowing-border.md +20 -2
- package/.claude/skills/components/input-button.md +3 -0
- package/.claude/skills/components/responsive-header.md +59 -0
- package/.claude/skills/components/select-menu.md +54 -5
- package/.claude/skills/components/service-detail.md +32 -0
- package/.claude/skills/components/service-summary.md +8 -0
- package/.claude/skills/components/services-card-grid.md +5 -3
- package/.claude/skills/components/services-card.md +22 -12
- package/.claude/skills/components/site-header.md +2 -2
- package/.claude/skills/components/slider-gallery.md +10 -4
- package/.claude/skills/components/tabbed-content.md +300 -0
- package/.claude/skills/composable-anchor-scroll.md +16 -15
- package/.claude/skills/index.md +4 -5
- package/.claude/skills/storybook-add-story.md +53 -0
- package/.claude/skills/theming-status-tokens.md +60 -0
- package/.vscode/srcdev-component-display-avatar.code-snippets +2 -1
- package/.vscode/srcdev-component-display-chip.code-snippets +3 -2
- package/.vscode/srcdev-component-display-pill.code-snippets +10 -0
- package/.vscode/srcdev-component-responsive-header.code-snippets +16 -0
- package/.vscode/srcdev-component-select-menu.code-snippets +28 -0
- package/.vscode/srcdev-component-service-detail.code-snippets +1 -0
- package/.vscode/srcdev-component-service-summary.code-snippets +3 -1
- package/.vscode/srcdev-component-services-card.code-snippets +38 -36
- package/.vscode/srcdev-component-services-grids.code-snippets +2 -1
- package/.vscode/{srcdev-component-tabs-core.code-snippets → srcdev-component-tabbed-content.code-snippets} +35 -16
- package/app/assets/styles/setup/03.theming/_status.css +24 -0
- package/app/assets/styles/setup/03.theming/index.css +1 -0
- package/app/components/01.atoms/animations/container-glow/CONSUMER-STYLING.md +39 -35
- package/app/components/01.atoms/animations/container-glow/ContainerGlow.vue +25 -15
- package/app/components/01.atoms/animations/container-glow/stories/ContainerGlow.stories.ts +130 -24
- package/app/components/01.atoms/animations/container-glow/tests/ContainerGlow.spec.ts +45 -0
- package/app/components/01.atoms/animations/container-glow/tests/__snapshots__/ContainerGlow.spec.ts.snap +2 -2
- package/app/components/01.atoms/animations/glowing-border/CONSUMER-STYLING.md +76 -19
- package/app/components/01.atoms/animations/glowing-border/GlowingBorder.vue +12 -10
- package/app/components/01.atoms/animations/glowing-border/stories/GlowingBorder.stories.ts +201 -42
- package/app/components/01.atoms/animations/glowing-border/tests/GlowingBorder.spec.ts +15 -4
- package/app/components/01.atoms/animations/glowing-border/tests/__snapshots__/GlowingBorder.spec.ts.snap +1 -1
- package/app/components/01.atoms/display-pill/CONSUMER-STYLING.md +78 -9
- package/app/components/01.atoms/display-pill/DisplayPill.vue +59 -23
- package/app/components/01.atoms/display-pill/stories/DisplayPill.stories.ts +240 -16
- package/app/components/01.atoms/display-pill/tests/DisplayPill.spec.ts +43 -14
- package/app/components/01.atoms/display-pill/tests/__snapshots__/DisplayPill.spec.ts.snap +3 -3
- package/app/components/01.atoms/navigation/breadcrumb/Breadcrumb.vue +16 -4
- package/app/components/01.atoms/navigation/breadcrumb/CONSUMER-STYLING.md +28 -5
- package/app/components/01.atoms/navigation/breadcrumb/stories/Breadcrumb.stories.ts +94 -0
- package/app/components/01.atoms/navigation/breadcrumb/tests/Breadcrumb.spec.ts +27 -0
- package/app/components/01.atoms/tabbed-content/CONSUMER-STYLING.md +201 -0
- package/app/components/01.atoms/tabbed-content/TabbedContent.vue +750 -0
- package/app/components/01.atoms/tabbed-content/stories/TabbedContent.stories.ts +279 -0
- package/app/components/01.atoms/tabbed-content/tests/TabbedContent.spec.ts +816 -0
- package/app/components/02.molecules/alert-content/AlertContent.vue +11 -2
- package/app/components/02.molecules/alert-content/AlertContentInner.vue +19 -0
- package/app/components/02.molecules/alert-content/CONSUMER-STYLING.md +17 -4
- package/app/components/02.molecules/alert-content/stories/AlertContent.stories.ts +200 -17
- package/app/components/02.molecules/alert-content/tests/AlertContent.spec.ts +33 -0
- package/app/components/02.molecules/display-avatar/CONSUMER-STYLING.md +7 -5
- package/app/components/02.molecules/display-avatar/DisplayAvatar.vue +6 -2
- package/app/components/02.molecules/display-avatar/stories/DisplayAvatar.stories.ts +24 -3
- package/app/components/02.molecules/display-avatar/tests/DisplayAvatar.spec.ts +19 -0
- package/app/components/02.molecules/display-avatar/tests/__snapshots__/DisplayAvatar.spec.ts.snap +2 -1
- package/app/components/02.molecules/display-chip/CONSUMER-STYLING.md +52 -19
- package/app/components/02.molecules/display-chip/DisplayChip.vue +72 -54
- package/app/components/02.molecules/display-chip/stories/DisplayChip.stories.ts +103 -6
- package/app/components/02.molecules/display-chip/tests/DisplayChip.spec.ts +98 -29
- package/app/components/02.molecules/display-chip/tests/__snapshots__/DisplayChip.spec.ts.snap +8 -4
- package/app/components/02.molecules/prompt/CONSUMER-STYLING.md +9 -1
- package/app/components/02.molecules/prompt/DisplayPrompt.vue +2 -2
- package/app/components/02.molecules/prompt/stories/DisplayPrompt.stories.ts +208 -71
- package/app/components/02.molecules/prompt/tests/DisplayPrompt.spec.ts +19 -6
- package/app/components/02.molecules/select-menu/CONSUMER-STYLING.md +66 -8
- package/app/components/02.molecules/select-menu/SelectMenu.vue +141 -18
- package/app/components/02.molecules/select-menu/stories/SelectMenu.stories.ts +232 -2
- package/app/components/02.molecules/select-menu/tests/SelectMenu.spec.ts +151 -0
- package/app/components/02.molecules/select-menu/tests/__snapshots__/SelectMenu.spec.ts.snap +6 -2
- package/app/components/02.molecules/toast/CONSUMER-STYLING.md +91 -27
- package/app/components/02.molecules/toast/DisplayToast.vue +109 -50
- package/app/components/02.molecules/toast/DisplayToastProvider.vue +109 -45
- package/app/components/02.molecules/toast/stories/DisplayToast.stories.ts +23 -0
- package/app/components/02.molecules/toast/stories/DisplayToastProvider.stories.ts +73 -0
- package/app/components/02.molecules/toast/tests/DisplayToast.spec.ts +132 -18
- package/app/components/02.molecules/toast/tests/DisplayToastProvider.spec.ts +105 -39
- package/app/components/03.organisms/image-galleries/slider-gallery/CONSUMER-STYLING.md +19 -1
- package/app/components/03.organisms/image-galleries/slider-gallery/SliderGallery.vue +65 -7
- package/app/components/03.organisms/image-galleries/slider-gallery/stories/SliderGallery.stories.ts +201 -63
- package/app/components/03.organisms/image-galleries/slider-gallery/tests/SliderGallery.spec.ts +41 -2
- package/app/components/03.organisms/image-galleries/slider-gallery/tests/__snapshots__/SliderGallery.spec.ts.snap +6 -6
- package/app/components/03.organisms/responsive-header/CONSUMER-STYLING.md +42 -11
- package/app/components/03.organisms/responsive-header/NavigationItems.vue +60 -16
- package/app/components/03.organisms/responsive-header/ResponsiveHeader.vue +86 -24
- package/app/components/03.organisms/responsive-header/stories/ResponsiveHeader.stories.ts +52 -0
- package/app/components/03.organisms/responsive-header/tests/NavigationItems.spec.ts +20 -0
- package/app/components/03.organisms/responsive-header/tests/ResponsiveHeader.spec.ts +40 -0
- package/app/components/03.organisms/services/service-detail/CONSUMER-STYLING.md +92 -41
- package/app/components/03.organisms/services/service-detail/ServiceDetail.vue +198 -73
- package/app/components/03.organisms/services/service-detail/stories/ServiceDetail.stories.ts +157 -9
- package/app/components/03.organisms/services/service-detail/tests/ServiceDetail.spec.ts +58 -0
- package/app/components/03.organisms/services/service-detail/tests/__snapshots__/ServiceDetail.spec.ts.snap +5 -4
- package/app/components/03.organisms/services/service-summary/CONSUMER-STYLING.md +30 -0
- package/app/components/03.organisms/services/service-summary/ServiceSummary.vue +32 -8
- package/app/components/03.organisms/services/service-summary/stories/ServiceSummary.stories.ts +147 -0
- package/app/components/03.organisms/services/service-summary/tests/ServiceSummary.spec.ts +26 -0
- package/app/components/03.organisms/services/service-summary/tests/__snapshots__/ServiceSummary.spec.ts.snap +2 -2
- package/app/components/03.organisms/services/services-card/CONSUMER-STYLING.md +104 -63
- package/app/components/03.organisms/services/services-card/ServicesCard.vue +92 -66
- package/app/components/03.organisms/services/services-card/stories/ServicesCard.stories.ts +194 -27
- package/app/components/03.organisms/services/services-card/tests/ServicesCard.spec.ts +34 -8
- package/app/components/03.organisms/services/services-card/tests/__snapshots__/ServicesCard.spec.ts.snap +8 -8
- package/app/components/03.organisms/services/services-grids/CONSUMER-STYLING.md +9 -0
- package/app/components/03.organisms/services/services-grids/ServicesCardGrid.vue +2 -1
- package/app/components/03.organisms/services/services-grids/stories/ServiceSummaryGrid.stories.ts +46 -6
- package/app/components/03.organisms/services/services-grids/stories/ServicesCardGrid.stories.ts +89 -11
- package/app/components/03.organisms/services/services-grids/tests/ServicesCardGrid.spec.ts +8 -0
- package/app/components/03.organisms/services/services-grids/tests/__snapshots__/ServiceSummaryGrid.spec.ts.snap +6 -6
- package/app/components/03.organisms/services/services-grids/tests/__snapshots__/ServicesCardGrid.spec.ts.snap +24 -24
- package/app/components/05.forms/input-button/CONSUMER-STYLING.md +8 -0
- package/app/components/05.forms/input-button/InputButton.vue +3 -1
- package/app/composables/tests/useAnchorScroll.spec.ts +8 -0
- package/app/composables/useAnchorScroll.ts +1 -1
- package/app/composables/useTabs.ts +148 -206
- package/app/types/components/display-chip.d.ts +8 -4
- package/app/types/components/display-toast.d.ts +2 -0
- package/app/types/components/index.ts +0 -1
- package/app/types/components/select-menu.d.ts +2 -0
- package/app/utils/pausableTimeout.ts +41 -0
- package/nuxt.config.ts +1 -1
- package/package.json +1 -1
- package/.claude/skills/components/site-navigation.md +0 -145
- package/.claude/skills/components/tab-navigation.md +0 -272
- package/.claude/skills/components/tabs-core.md +0 -187
- package/.vscode/srcdev-component-site-navigation.code-snippets +0 -38
- package/.vscode/srcdev-component-tab-navigation.code-snippets +0 -30
- package/app/components/01.atoms/navigation/tabs/CONSUMER-STYLING.md +0 -120
- package/app/components/01.atoms/navigation/tabs/TabsCore.vue +0 -272
- package/app/components/01.atoms/navigation/tabs/stories/TabsCore.stories.ts +0 -199
- package/app/components/01.atoms/navigation/tabs/tests/TabsCore.spec.ts +0 -274
- package/app/components/02.molecules/navigation/site-navigation/CONSUMER-STYLING.md +0 -109
- package/app/components/02.molecules/navigation/site-navigation/SiteNavigation.vue +0 -751
- package/app/components/02.molecules/navigation/site-navigation/stories/SiteNavigation.stories.ts +0 -356
- package/app/components/02.molecules/navigation/site-navigation/tests/SiteNavigation.spec.ts +0 -367
- package/app/components/02.molecules/navigation/site-navigation/tests/__snapshots__/SiteNavigation.spec.ts.snap +0 -30
- package/app/components/02.molecules/navigation/tab-navigation/CONSUMER-STYLING.md +0 -150
- package/app/components/02.molecules/navigation/tab-navigation/TabNavigation.vue +0 -518
- package/app/components/02.molecules/navigation/tab-navigation/stories/TabNavigation.stories.ts +0 -340
- package/app/components/02.molecules/navigation/tab-navigation/tests/TabNavigation.spec.ts +0 -339
- package/app/components/02.molecules/navigation/tab-navigation/tests/__snapshots__/TabNavigation.spec.ts.snap +0 -33
- package/app/composables/useNavCollapse.ts +0 -86
- package/app/types/components/nav-item.d.ts +0 -11
|
@@ -4,39 +4,39 @@ exports[`ServiceSummaryGrid > renders correct HTML structure 1`] = `
|
|
|
4
4
|
"<div class="service-summary-grid">
|
|
5
5
|
<div class="service-summary">
|
|
6
6
|
<div class="service-summary__grid">
|
|
7
|
-
<div class="service-summary__image-wrapper"><img data-nuxt-img="" srcset="/_ipx/
|
|
7
|
+
<div class="service-summary__image-wrapper"><img width="1080" height="1080" data-nuxt-img="" srcset="/_ipx/s_1080x1080/images/locs-installation.jpg 1x, /_ipx/s_2160x2160/images/locs-installation.jpg 2x" alt="Locs Installation" loading="eager" fetchpriority="high" class="service-summary__image" src="/_ipx/s_1080x1080/images/locs-installation.jpg"></div>
|
|
8
8
|
<div class="service-summary__info-wrapper service-summary__info-wrapper--align-center">
|
|
9
9
|
<div class="eyebrow-text large">Subtitle for Locs Installation</div>
|
|
10
10
|
<h2 id="v-0-0-0" class="hero-text mb-20 title axis-horizontal">
|
|
11
11
|
<!--v-if--><span class="text-block-0 normal">Locs Installation</span>
|
|
12
12
|
</h2>
|
|
13
|
-
<div class="service-summary__pills"><span class="display-pill md neutral"><!--v-if--><span class="display-pill-label">60 mins</span></span><span class="display-pill md neutral"><!--v-if--><span class="display-pill-label">From £50</span></span></div>
|
|
13
|
+
<div class="service-summary__pills"><span class="display-pill" data-size="md" data-variant="neutral"><!--v-if--><span class="display-pill-label">60 mins</span></span><span class="display-pill" data-size="md" data-variant="neutral"><!--v-if--><span class="display-pill-label">From £50</span></span></div>
|
|
14
14
|
<p class="page-body-normal">What this service is.</p>
|
|
15
15
|
</div>
|
|
16
16
|
</div>
|
|
17
17
|
</div>
|
|
18
18
|
<div class="service-summary">
|
|
19
19
|
<div class="service-summary__grid">
|
|
20
|
-
<div class="service-summary__image-wrapper"><img data-nuxt-img="" srcset="/_ipx/
|
|
20
|
+
<div class="service-summary__image-wrapper"><img width="1080" height="1080" data-nuxt-img="" srcset="/_ipx/s_1080x1080/images/locs-retwist.jpg 1x, /_ipx/s_2160x2160/images/locs-retwist.jpg 2x" alt="Locs Retwist" loading="eager" fetchpriority="auto" class="service-summary__image" src="/_ipx/s_1080x1080/images/locs-retwist.jpg"></div>
|
|
21
21
|
<div class="service-summary__info-wrapper service-summary__info-wrapper--align-center">
|
|
22
22
|
<div class="eyebrow-text large">Subtitle for Locs Retwist</div>
|
|
23
23
|
<h2 id="v-0-0-1" class="hero-text mb-20 title axis-horizontal">
|
|
24
24
|
<!--v-if--><span class="text-block-0 normal">Locs Retwist</span>
|
|
25
25
|
</h2>
|
|
26
|
-
<div class="service-summary__pills"><span class="display-pill md neutral"><!--v-if--><span class="display-pill-label">60 mins</span></span><span class="display-pill md neutral"><!--v-if--><span class="display-pill-label">From £50</span></span></div>
|
|
26
|
+
<div class="service-summary__pills"><span class="display-pill" data-size="md" data-variant="neutral"><!--v-if--><span class="display-pill-label">60 mins</span></span><span class="display-pill" data-size="md" data-variant="neutral"><!--v-if--><span class="display-pill-label">From £50</span></span></div>
|
|
27
27
|
<p class="page-body-normal">What this service is.</p>
|
|
28
28
|
</div>
|
|
29
29
|
</div>
|
|
30
30
|
</div>
|
|
31
31
|
<div class="service-summary">
|
|
32
32
|
<div class="service-summary__grid">
|
|
33
|
-
<div class="service-summary__image-wrapper"><img data-nuxt-img="" srcset="/_ipx/
|
|
33
|
+
<div class="service-summary__image-wrapper"><img width="1080" height="1080" data-nuxt-img="" srcset="/_ipx/s_1080x1080/images/colour-treatment.jpg 1x, /_ipx/s_2160x2160/images/colour-treatment.jpg 2x" alt="Colour Treatment" loading="lazy" fetchpriority="auto" class="service-summary__image" src="/_ipx/s_1080x1080/images/colour-treatment.jpg"></div>
|
|
34
34
|
<div class="service-summary__info-wrapper service-summary__info-wrapper--align-center">
|
|
35
35
|
<div class="eyebrow-text large">Subtitle for Colour Treatment</div>
|
|
36
36
|
<h2 id="v-0-0-2" class="hero-text mb-20 title axis-horizontal">
|
|
37
37
|
<!--v-if--><span class="text-block-0 normal">Colour Treatment</span>
|
|
38
38
|
</h2>
|
|
39
|
-
<div class="service-summary__pills"><span class="display-pill md neutral"><!--v-if--><span class="display-pill-label">60 mins</span></span><span class="display-pill md neutral"><!--v-if--><span class="display-pill-label">From £50</span></span></div>
|
|
39
|
+
<div class="service-summary__pills"><span class="display-pill" data-size="md" data-variant="neutral"><!--v-if--><span class="display-pill-label">60 mins</span></span><span class="display-pill" data-size="md" data-variant="neutral"><!--v-if--><span class="display-pill-label">From £50</span></span></div>
|
|
40
40
|
<p class="page-body-normal">What this service is.</p>
|
|
41
41
|
</div>
|
|
42
42
|
</div>
|
|
@@ -3,20 +3,20 @@
|
|
|
3
3
|
exports[`ServicesCardGrid > renders correct HTML structure 1`] = `
|
|
4
4
|
"<div class="services-card-grid">
|
|
5
5
|
<div class="services-card">
|
|
6
|
-
<div class="grid-stack image-wrapper">
|
|
7
|
-
<div class="grid-stack__layer"><img data-nuxt-img="" srcset="/_ipx/
|
|
6
|
+
<div class="grid-stack services-card-image-wrapper">
|
|
7
|
+
<div class="grid-stack__layer"><img width="640" height="853" data-nuxt-img="" srcset="/_ipx/s_640x853/images/locs-installation.jpg 1x, /_ipx/s_1280x1706/images/locs-installation.jpg 2x" alt="Locs Installation" loading="lazy" class="services-card-image" src="/_ipx/s_640x853/images/locs-installation.jpg"></div>
|
|
8
8
|
<div class="grid-stack__layer"></div>
|
|
9
9
|
</div>
|
|
10
|
-
<div class="details
|
|
10
|
+
<div class="services-card-details">
|
|
11
11
|
<div class="eyebrow-text large">Subtitle for Locs Installation</div>
|
|
12
12
|
<h2 class="hero-text heading axis-horizontal">
|
|
13
13
|
<!--v-if--><span class="text-block-0 normal">Locs Installation</span>
|
|
14
14
|
</h2>
|
|
15
|
-
<div class="description">Short description for Locs Installation.</div>
|
|
16
|
-
<div class="footer">
|
|
17
|
-
<div class="meta">
|
|
18
|
-
<div class="meta-duration">60 mins</div>
|
|
19
|
-
<div class="meta-price">£50</div>
|
|
15
|
+
<div class="services-card-description">Short description for Locs Installation.</div>
|
|
16
|
+
<div class="services-card-footer">
|
|
17
|
+
<div class="services-card-meta">
|
|
18
|
+
<div class="services-card-meta-duration">60 mins</div>
|
|
19
|
+
<div class="services-card-meta-price">£50</div>
|
|
20
20
|
</div><a href="/services/locs-installation" data-testid="input-button" data-theme="default" class="input-button secondary mbs-24 is-link">
|
|
21
21
|
<!--v-if-->
|
|
22
22
|
<!--v-if--><span class="button-text">Enquire about Locs Installation</span><span class="btn-icon right"><span class="iconify i-mdi:arrow-right icon" aria-hidden="true"></span></span>
|
|
@@ -26,20 +26,20 @@ exports[`ServicesCardGrid > renders correct HTML structure 1`] = `
|
|
|
26
26
|
</div>
|
|
27
27
|
</div>
|
|
28
28
|
<div class="services-card">
|
|
29
|
-
<div class="grid-stack image-wrapper">
|
|
30
|
-
<div class="grid-stack__layer"><img data-nuxt-img="" srcset="/_ipx/
|
|
29
|
+
<div class="grid-stack services-card-image-wrapper">
|
|
30
|
+
<div class="grid-stack__layer"><img width="640" height="853" data-nuxt-img="" srcset="/_ipx/s_640x853/images/locs-retwist.jpg 1x, /_ipx/s_1280x1706/images/locs-retwist.jpg 2x" alt="Locs Retwist" loading="lazy" class="services-card-image" src="/_ipx/s_640x853/images/locs-retwist.jpg"></div>
|
|
31
31
|
<div class="grid-stack__layer"></div>
|
|
32
32
|
</div>
|
|
33
|
-
<div class="details
|
|
33
|
+
<div class="services-card-details">
|
|
34
34
|
<div class="eyebrow-text large">Subtitle for Locs Retwist</div>
|
|
35
35
|
<h2 class="hero-text heading axis-horizontal">
|
|
36
36
|
<!--v-if--><span class="text-block-0 normal">Locs Retwist</span>
|
|
37
37
|
</h2>
|
|
38
|
-
<div class="description">Short description for Locs Retwist.</div>
|
|
39
|
-
<div class="footer">
|
|
40
|
-
<div class="meta">
|
|
41
|
-
<div class="meta-duration">60 mins</div>
|
|
42
|
-
<div class="meta-price">£50</div>
|
|
38
|
+
<div class="services-card-description">Short description for Locs Retwist.</div>
|
|
39
|
+
<div class="services-card-footer">
|
|
40
|
+
<div class="services-card-meta">
|
|
41
|
+
<div class="services-card-meta-duration">60 mins</div>
|
|
42
|
+
<div class="services-card-meta-price">£50</div>
|
|
43
43
|
</div><a href="/services/locs-retwist" data-testid="input-button" data-theme="default" class="input-button secondary mbs-24 is-link">
|
|
44
44
|
<!--v-if-->
|
|
45
45
|
<!--v-if--><span class="button-text">Enquire about Locs Retwist</span><span class="btn-icon right"><span class="iconify i-mdi:arrow-right icon" aria-hidden="true"></span></span>
|
|
@@ -49,20 +49,20 @@ exports[`ServicesCardGrid > renders correct HTML structure 1`] = `
|
|
|
49
49
|
</div>
|
|
50
50
|
</div>
|
|
51
51
|
<div class="services-card">
|
|
52
|
-
<div class="grid-stack image-wrapper">
|
|
53
|
-
<div class="grid-stack__layer"><img data-nuxt-img="" srcset="/_ipx/
|
|
52
|
+
<div class="grid-stack services-card-image-wrapper">
|
|
53
|
+
<div class="grid-stack__layer"><img width="640" height="853" data-nuxt-img="" srcset="/_ipx/s_640x853/images/colour-treatment.jpg 1x, /_ipx/s_1280x1706/images/colour-treatment.jpg 2x" alt="Colour Treatment" loading="lazy" class="services-card-image" src="/_ipx/s_640x853/images/colour-treatment.jpg"></div>
|
|
54
54
|
<div class="grid-stack__layer"></div>
|
|
55
55
|
</div>
|
|
56
|
-
<div class="details
|
|
56
|
+
<div class="services-card-details">
|
|
57
57
|
<div class="eyebrow-text large">Subtitle for Colour Treatment</div>
|
|
58
58
|
<h2 class="hero-text heading axis-horizontal">
|
|
59
59
|
<!--v-if--><span class="text-block-0 normal">Colour Treatment</span>
|
|
60
60
|
</h2>
|
|
61
|
-
<div class="description">Short description for Colour Treatment.</div>
|
|
62
|
-
<div class="footer">
|
|
63
|
-
<div class="meta">
|
|
64
|
-
<div class="meta-duration">60 mins</div>
|
|
65
|
-
<div class="meta-price">£50</div>
|
|
61
|
+
<div class="services-card-description">Short description for Colour Treatment.</div>
|
|
62
|
+
<div class="services-card-footer">
|
|
63
|
+
<div class="services-card-meta">
|
|
64
|
+
<div class="services-card-meta-duration">60 mins</div>
|
|
65
|
+
<div class="services-card-meta-price">£50</div>
|
|
66
66
|
</div><a href="/services/colour-treatment" data-testid="input-button" data-theme="default" class="input-button secondary mbs-24 is-link">
|
|
67
67
|
<!--v-if-->
|
|
68
68
|
<!--v-if--><span class="button-text">Enquire about Colour Treatment</span><span class="btn-icon right"><span class="iconify i-mdi:arrow-right icon" aria-hidden="true"></span></span>
|
|
@@ -70,6 +70,14 @@ Same shape again:
|
|
|
70
70
|
something this token set changes. The animated border added by `has-pending-effect` has its own
|
|
71
71
|
`--pending-effect-*` tokens, see `../pending-effect/CONSUMER-STYLING.md`.
|
|
72
72
|
|
|
73
|
+
### Text wrapping
|
|
74
|
+
|
|
75
|
+
| Token | Default | Controls |
|
|
76
|
+
|---|---|---|
|
|
77
|
+
| `--input-button-text-white-space` | `nowrap` | Set `normal` to let a long label wrap onto several lines instead of overflowing the button. Unbroken strings break anywhere once wrapping is on |
|
|
78
|
+
|
|
79
|
+
> Added 2026-10-06. `ServicesCardGrid` sets it to `normal` on its CTA buttons so a long service title stays inside the card.
|
|
80
|
+
|
|
73
81
|
`InputCopy` and `PricingCard` fall back through `--input-button-primary-*` for their own copy/CTA
|
|
74
82
|
buttons (see their own `CONSUMER-STYLING.md`) rather than duplicating this chain.
|
|
75
83
|
|
|
@@ -292,7 +292,9 @@ watch(
|
|
|
292
292
|
|
|
293
293
|
.button-text {
|
|
294
294
|
display: inline-block;
|
|
295
|
-
|
|
295
|
+
min-inline-size: 0;
|
|
296
|
+
white-space: var(--input-button-text-white-space, nowrap);
|
|
297
|
+
overflow-wrap: anywhere;
|
|
296
298
|
font-size: var(--button-font-size);
|
|
297
299
|
line-height: var(--button-line-height);
|
|
298
300
|
font-weight: var(--button-font-weight);
|
|
@@ -75,6 +75,14 @@ describe("useAnchorScroll", () => {
|
|
|
75
75
|
expect(history.pushState).not.toHaveBeenCalled();
|
|
76
76
|
});
|
|
77
77
|
|
|
78
|
+
it("still records the clicked hash as active", () => {
|
|
79
|
+
stubMatchMedia(true);
|
|
80
|
+
appendEl("overview");
|
|
81
|
+
const { handleNavClick, activeHash } = useAnchorScroll();
|
|
82
|
+
handleNavClick(makeEvent(), "#overview");
|
|
83
|
+
expect(activeHash.value).toBe("#overview");
|
|
84
|
+
});
|
|
85
|
+
|
|
78
86
|
it("does not scroll", () => {
|
|
79
87
|
stubMatchMedia(true);
|
|
80
88
|
const el = appendEl("overview");
|
|
@@ -47,10 +47,10 @@ export const useAnchorScroll = (options: UseAnchorScrollOptions = {}) => {
|
|
|
47
47
|
// and smooth-scroll ourselves.
|
|
48
48
|
const handleNavClick = (event: MouseEvent, href: string): void => {
|
|
49
49
|
if (!href.startsWith("#")) return;
|
|
50
|
+
activeHash.value = href;
|
|
50
51
|
if (prefersReducedMotion()) return;
|
|
51
52
|
|
|
52
53
|
event.preventDefault();
|
|
53
|
-
activeHash.value = href;
|
|
54
54
|
history.pushState(null, "", href);
|
|
55
55
|
scrollToAnchor(href);
|
|
56
56
|
};
|