srcdev-nuxt-components 9.6.18 → 9.6.20
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/rules/consumer/css-relative-colour-calc.md +15 -0
- package/.claude/rules/consumer/ids-from-useid.md +3 -2
- package/.claude/rules/consumer/vue-dynamic-arg-no-spaces.md +16 -0
- package/.claude/skills/component-compliance-checklist.md +11 -1
- package/.claude/skills/component-dynamic-slots.md +2 -2
- package/.claude/skills/component-naming.md +1 -1
- package/.claude/skills/components/accordion-chat.md +99 -0
- package/.claude/skills/components/accordion-group.md +98 -0
- package/.claude/skills/components/action-menu.md +11 -5
- package/.claude/skills/components/auto-grid.md +3 -1
- package/.claude/skills/components/capture-qr-code.md +9 -5
- package/.claude/skills/components/carousel-flip.md +41 -30
- package/.claude/skills/components/column-flow-grid.md +2 -0
- package/.claude/skills/components/dashboard-quad-grid.md +7 -2
- package/.claude/skills/components/dashboard-stats-grid.md +4 -0
- package/.claude/skills/components/decode-qr-code.md +7 -2
- package/.claude/skills/components/deep-expanding-menu-classic.md +31 -30
- package/.claude/skills/components/deep-expanding-menu.md +22 -21
- package/.claude/skills/components/expanding-panel-classic.md +9 -7
- package/.claude/skills/components/expanding-panel.md +9 -8
- package/.claude/skills/components/grid-stack.md +2 -0
- package/.claude/skills/components/layout-grid-by-cols.md +2 -0
- package/.claude/skills/components/masonry-grid.md +9 -1
- package/.claude/skills/components/page-row.md +3 -0
- package/.claude/skills/components/samaritan-prompt.md +24 -8
- package/.claude/skills/components/site-header.md +16 -2
- package/.claude/skills/components/sparkle-effect.md +79 -0
- package/.claude/skills/index.md +16 -14
- package/.claude/skills/storybook-add-story.md +33 -0
- package/.claude/skills/testing-add-unit-test.md +26 -0
- package/.claude/skills/using-component-skills.md +1 -1
- package/.vscode/srcdev-component-accordion-chat.code-snippets +42 -0
- package/.vscode/srcdev-component-accordion-group.code-snippets +38 -0
- package/.vscode/srcdev-component-action-menu.code-snippets +3 -3
- package/.vscode/srcdev-component-capture-decode-qr-code.code-snippets +11 -2
- package/.vscode/srcdev-component-carousel-flip.code-snippets +22 -4
- package/.vscode/srcdev-component-deep-expanding-menu-classic.code-snippets +32 -2
- package/.vscode/srcdev-component-deep-expanding-menu.code-snippets +31 -1
- package/.vscode/srcdev-component-samaritan-prompt.code-snippets +5 -4
- package/.vscode/srcdev-component-site-header.code-snippets +13 -1
- package/.vscode/srcdev-component-sparkle-effect.code-snippets +33 -0
- package/app/components/01.atoms/animations/sparkle-effect/CONSUMER-STYLING.md +75 -0
- package/app/components/01.atoms/animations/sparkle-effect/SparkleEffect.vue +213 -0
- package/app/components/01.atoms/animations/sparkle-effect/stories/SparkleEffect.stories.ts +303 -0
- package/app/components/01.atoms/animations/sparkle-effect/tests/SparkleEffect.spec.ts +150 -0
- package/app/components/01.atoms/content-wrappers/docs-pages/ContentDocs.vue +1 -1
- package/app/components/01.atoms/content-wrappers/layout-grid/dashboard-quad-grid/CONSUMER-STYLING.md +12 -2
- package/app/components/01.atoms/content-wrappers/layout-grid/dashboard-quad-grid/DashboardQuadGrid.vue +19 -17
- package/app/components/01.atoms/content-wrappers/layout-grid/dashboard-quad-grid/stories/DashboardQuadGrid.stories.ts +42 -0
- package/app/components/01.atoms/content-wrappers/layout-grid/dashboard-quad-grid/tests/DashboardQuadGrid.spec.ts +31 -44
- package/app/components/01.atoms/content-wrappers/layout-grid/dashboard-stats-grid/CONSUMER-STYLING.md +13 -1
- package/app/components/01.atoms/content-wrappers/layout-grid/dashboard-stats-grid/DashboardStatsGrid.vue +40 -31
- package/app/components/01.atoms/content-wrappers/layout-grid/dashboard-stats-grid/stories/DashboardStatsGrid.stories.ts +47 -0
- package/app/components/01.atoms/content-wrappers/layout-grid/dashboard-stats-grid/tests/DashboardStatsGrid.spec.ts +51 -53
- package/app/components/01.atoms/content-wrappers/layout-grid/layout-grid-by-cols/CONSUMER-STYLING.md +3 -0
- package/app/components/01.atoms/content-wrappers/layout-grid/layout-grid-by-cols/LayoutGridByCols.vue +4 -0
- package/app/components/01.atoms/content-wrappers/layout-grid/layout-grid-by-cols/stories/LayoutGridByCols.stories.ts +47 -2
- package/app/components/01.atoms/content-wrappers/layout-grid/layout-grid-by-cols/tests/LayoutGridByCols.spec.ts +36 -23
- package/app/components/01.atoms/grids/auto-grid/AutoGrid.vue +7 -3
- package/app/components/01.atoms/grids/auto-grid/CONSUMER-STYLING.md +1 -1
- package/app/components/01.atoms/grids/auto-grid/stories/AutoGrid.stories.ts +46 -1
- package/app/components/01.atoms/grids/auto-grid/tests/AutoGrid.spec.ts +40 -27
- package/app/components/01.atoms/grids/auto-grid/tests/__snapshots__/AutoGrid.spec.ts.snap +1 -1
- package/app/components/01.atoms/grids/column-flow-grid/CONSUMER-STYLING.md +9 -0
- package/app/components/01.atoms/grids/column-flow-grid/ColumnFlowGrid.vue +3 -2
- package/app/components/01.atoms/grids/column-flow-grid/stories/ColumnFlowGrid.stories.ts +46 -0
- package/app/components/01.atoms/grids/column-flow-grid/tests/ColumnFlowGrid.spec.ts +24 -11
- package/app/components/01.atoms/grids/grid-stack/CONSUMER-STYLING.md +3 -0
- package/app/components/01.atoms/grids/grid-stack/GridStack.vue +2 -0
- package/app/components/01.atoms/grids/grid-stack/stories/GridStack.stories.ts +41 -0
- package/app/components/01.atoms/grids/grid-stack/tests/GridStack.spec.ts +26 -13
- package/app/components/01.atoms/grids/masonry-grid/CONSUMER-STYLING.md +15 -0
- package/app/components/01.atoms/grids/masonry-grid/MasonryGrid.vue +51 -31
- package/app/components/01.atoms/grids/masonry-grid/stories/MasonryGrid.stories.ts +48 -0
- package/app/components/01.atoms/grids/masonry-grid/tests/MasonryGrid.spec.ts +84 -29
- package/app/components/01.atoms/page-row/CONSUMER-STYLING.md +6 -1
- package/app/components/01.atoms/page-row/PageRow.vue +16 -15
- package/app/components/01.atoms/page-row/stories/PageRow.stories.ts +23 -0
- package/app/components/01.atoms/page-row/tests/PageRow.spec.ts +6 -5
- package/app/components/02.molecules/action-menu/ActionMenu.vue +6 -2
- package/app/components/02.molecules/action-menu/ActionMenuItem.vue +6 -3
- package/app/components/02.molecules/action-menu/CONSUMER-STYLING.md +11 -4
- package/app/components/02.molecules/action-menu/stories/ActionMenu.stories.ts +130 -18
- package/app/components/02.molecules/expandable/accordion-chat/AccordionChat.vue +227 -0
- package/app/components/02.molecules/expandable/accordion-chat/CONSUMER-STYLING.md +150 -0
- package/app/components/02.molecules/expandable/accordion-chat/stories/AccordionChat.stories.ts +347 -0
- package/app/components/02.molecules/expandable/accordion-chat/tests/AccordionChat.spec.ts +205 -0
- package/app/components/02.molecules/expandable/accordion-chat/tests/__snapshots__/AccordionChat.spec.ts.snap +40 -0
- package/app/components/02.molecules/expandable/{accordian/AccordianCore.vue → accordion-group/AccordionGroup.vue} +32 -20
- package/app/components/02.molecules/expandable/accordion-group/CONSUMER-STYLING.md +66 -0
- package/app/components/02.molecules/expandable/accordion-group/stories/AccordionGroup.stories.ts +238 -0
- package/app/components/02.molecules/expandable/accordion-group/tests/AccordionGroup.spec.ts +172 -0
- package/app/components/02.molecules/expandable/accordion-group/tests/__snapshots__/AccordionGroup.spec.ts.snap +45 -0
- package/app/components/02.molecules/expandable/expanding-panel/CONSUMER-STYLING.md +1 -0
- package/app/components/02.molecules/expandable/expanding-panel/ExpandingPanel.vue +11 -6
- package/app/components/02.molecules/expandable/expanding-panel/stories/ExpandingPanel.stories.ts +82 -1
- package/app/components/02.molecules/expandable/expanding-panel/tests/ExpandingPanel.spec.ts +24 -30
- package/app/components/02.molecules/expandable/expanding-panel/tests/__snapshots__/ExpandingPanel.spec.ts.snap +8 -8
- package/app/components/02.molecules/expandable/expanding-panel-classic/CONSUMER-STYLING.md +1 -0
- package/app/components/02.molecules/expandable/expanding-panel-classic/ExpandingPanelClassic.vue +10 -5
- package/app/components/02.molecules/expandable/expanding-panel-classic/stories/ExpandingPanelClassic.stories.ts +83 -1
- package/app/components/02.molecules/expandable/expanding-panel-classic/tests/ExpandingPanelClassic.spec.ts +24 -30
- package/app/components/02.molecules/expandable/expanding-panel-classic/tests/__snapshots__/ExpandingPanelClassic.spec.ts.snap +8 -8
- package/app/components/02.molecules/navigation/deep-expanding-menu/CONSUMER-STYLING.md +63 -44
- package/app/components/02.molecules/navigation/deep-expanding-menu/DeepExpandingMenu.vue +74 -37
- package/app/components/02.molecules/navigation/deep-expanding-menu/stories/DeepExpandingMenu.stories.ts +139 -19
- package/app/components/02.molecules/navigation/deep-expanding-menu/tests/DeepExpandingMenu.spec.ts +90 -27
- package/app/components/02.molecules/navigation/deep-expanding-menu/tests/__snapshots__/DeepExpandingMenu.spec.ts.snap +8 -8
- package/app/components/02.molecules/navigation/deep-expanding-menu-classic/CONSUMER-STYLING.md +58 -26
- package/app/components/02.molecules/navigation/deep-expanding-menu-classic/DeepExpandingMenuClassic.vue +113 -57
- package/app/components/02.molecules/navigation/deep-expanding-menu-classic/stories/DeepExpandingMenuClassic.stories.ts +139 -19
- package/app/components/02.molecules/navigation/deep-expanding-menu-classic/tests/DeepExpandingMenuClassic.spec.ts +140 -22
- package/app/components/02.molecules/navigation/deep-expanding-menu-classic/tests/__snapshots__/DeepExpandingMenuClassic.spec.ts.snap +9 -9
- package/app/components/02.molecules/qr-code/CONSUMER-STYLING.md +22 -7
- package/app/components/02.molecules/qr-code/CaptureQrCode.vue +63 -71
- package/app/components/02.molecules/qr-code/DecodeQrCode.vue +47 -10
- package/app/components/02.molecules/qr-code/stories/CaptureQrCode.stories.ts +114 -26
- package/app/components/02.molecules/qr-code/stories/DecodeQrCode.stories.ts +115 -24
- package/app/components/02.molecules/qr-code/tests/CaptureQrCode.spec.ts +124 -51
- package/app/components/02.molecules/qr-code/tests/DecodeQrCode.spec.ts +74 -25
- package/app/components/02.molecules/samaritan-prompt/CONSUMER-STYLING.md +22 -10
- package/app/components/02.molecules/samaritan-prompt/SamaritanPrompt.vue +30 -12
- package/app/components/02.molecules/samaritan-prompt/SamaritanPromptMixed.vue +34 -10
- package/app/components/02.molecules/samaritan-prompt/stories/SamaritanPrompt.stories.ts +55 -4
- package/app/components/02.molecules/samaritan-prompt/stories/SamaritanPromptMixed.stories.ts +67 -7
- package/app/components/02.molecules/samaritan-prompt/tests/SamaritanPrompt.spec.ts +113 -29
- package/app/components/02.molecules/samaritan-prompt/tests/SamaritanPromptMixed.spec.ts +92 -45
- package/app/components/03.organisms/image-galleries/carousel-flip/CONSUMER-STYLING.md +82 -29
- package/app/components/03.organisms/image-galleries/carousel-flip/CarouselFlip.vue +176 -113
- package/app/components/03.organisms/image-galleries/carousel-flip/stories/CarouselFlip.stories.ts +153 -23
- package/app/components/03.organisms/image-galleries/carousel-flip/tests/CarouselFlip.spec.ts +119 -63
- package/app/components/03.organisms/responsive-header/tests/__snapshots__/NavigationItems.spec.ts.snap +2 -2
- package/app/components/03.organisms/responsive-header/tests/__snapshots__/ResponsiveHeader.spec.ts.snap +2 -2
- package/app/components/03.organisms/services/service-detail/tests/ServiceDetail.spec.ts +8 -8
- package/app/components/03.organisms/services/service-detail/tests/__snapshots__/ServiceDetail.spec.ts.snap +4 -4
- package/app/components/03.organisms/site-header/CONSUMER-STYLING.md +41 -23
- package/app/components/03.organisms/site-header/SiteHeader.vue +16 -21
- package/app/components/03.organisms/site-header/stories/SiteHeader.stories.ts +138 -0
- package/app/components/03.organisms/site-header/tests/SiteHeader.spec.ts +53 -26
- package/app/components/03.organisms/site-header/tests/__snapshots__/SiteHeader.spec.ts.snap +2 -2
- package/app/types/components/qr-code.d.ts +12 -0
- package/app/utils/graphemes.ts +8 -0
- package/package.json +1 -1
- package/.claude/skills/components/accordian-core.md +0 -180
- package/.vscode/srcdev-component-accordian-core.code-snippets +0 -74
- package/app/components/01.atoms/animations/entry/.nuxt/app.config.mjs +0 -21
- package/app/components/01.atoms/animations/entry/.nuxt/components.d.ts +0 -66
- package/app/components/01.atoms/animations/entry/.nuxt/imports.d.ts +0 -30
- package/app/components/01.atoms/animations/entry/.nuxt/manifest/meta/test.json +0 -1
- package/app/components/01.atoms/animations/entry/.nuxt/types/app.config.d.ts +0 -35
- package/app/components/01.atoms/animations/entry/.nuxt/types/build.d.ts +0 -23
- package/app/components/01.atoms/animations/entry/.nuxt/types/builder-env.d.ts +0 -1
- package/app/components/01.atoms/animations/entry/.nuxt/types/components.d.ts +0 -71
- package/app/components/01.atoms/animations/entry/.nuxt/types/imports.d.ts +0 -386
- package/app/components/01.atoms/animations/entry/.nuxt/types/middleware.d.ts +0 -11
- package/app/components/01.atoms/animations/entry/.nuxt/types/modules.d.ts +0 -79
- package/app/components/01.atoms/animations/entry/.nuxt/types/nitro-layouts.d.ts +0 -17
- package/app/components/01.atoms/animations/entry/.nuxt/types/nitro-nuxt.d.ts +0 -64
- package/app/components/01.atoms/animations/entry/.nuxt/types/plugins.d.ts +0 -29
- package/app/components/01.atoms/animations/entry/.nuxt/types/runtime-config.d.ts +0 -32
- package/app/components/01.atoms/animations/entry/.nuxt/types/shared-imports.d.ts +0 -10
- package/app/components/01.atoms/animations/entry/.nuxt/types/vue-shim.d.ts +0 -0
- package/app/components/01.atoms/animations/entry/.nuxtrc +0 -1
- package/app/components/01.atoms/animations/entry/node_modules/.cache/nuxt/chrome-workspace.json +0 -1
- package/app/components/01.atoms/animations/entry/node_modules/.cache/vite/client/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +0 -1
- package/app/components/02.molecules/expandable/accordian/CONSUMER-STYLING.md +0 -100
- package/app/components/02.molecules/expandable/accordian/stories/AccordianCore.stories.ts +0 -272
- package/app/components/02.molecules/expandable/accordian/tests/AccordianCore.spec.ts +0 -257
- package/app/components/02.molecules/expandable/accordian/tests/__snapshots__/AccordianCore.spec.ts.snap +0 -95
- package/app/components/03.organisms/responsive-header/tests/.nuxt/app.config.mjs +0 -21
- package/app/components/03.organisms/responsive-header/tests/.nuxt/components.d.ts +0 -66
- package/app/components/03.organisms/responsive-header/tests/.nuxt/imports.d.ts +0 -30
- package/app/components/03.organisms/responsive-header/tests/.nuxt/manifest/meta/test.json +0 -1
- package/app/components/03.organisms/responsive-header/tests/.nuxt/types/app.config.d.ts +0 -35
- package/app/components/03.organisms/responsive-header/tests/.nuxt/types/build.d.ts +0 -23
- package/app/components/03.organisms/responsive-header/tests/.nuxt/types/builder-env.d.ts +0 -1
- package/app/components/03.organisms/responsive-header/tests/.nuxt/types/components.d.ts +0 -71
- package/app/components/03.organisms/responsive-header/tests/.nuxt/types/imports.d.ts +0 -386
- package/app/components/03.organisms/responsive-header/tests/.nuxt/types/middleware.d.ts +0 -11
- package/app/components/03.organisms/responsive-header/tests/.nuxt/types/modules.d.ts +0 -79
- package/app/components/03.organisms/responsive-header/tests/.nuxt/types/nitro-layouts.d.ts +0 -17
- package/app/components/03.organisms/responsive-header/tests/.nuxt/types/nitro-nuxt.d.ts +0 -64
- package/app/components/03.organisms/responsive-header/tests/.nuxt/types/plugins.d.ts +0 -29
- package/app/components/03.organisms/responsive-header/tests/.nuxt/types/runtime-config.d.ts +0 -32
- package/app/components/03.organisms/responsive-header/tests/.nuxt/types/shared-imports.d.ts +0 -10
- package/app/components/03.organisms/responsive-header/tests/.nuxt/types/vue-shim.d.ts +0 -0
- package/app/components/03.organisms/responsive-header/tests/node_modules/.cache/nuxt/chrome-workspace.json +0 -1
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
/// <reference path="nitro-layouts.d.ts" />
|
|
3
|
-
/// <reference path="app.config.d.ts" />
|
|
4
|
-
/// <reference path="runtime-config.d.ts" />
|
|
5
|
-
/// <reference path="../../../../../../../node_modules/@nuxt/nitro-server/dist/index.d.mts" />
|
|
6
|
-
/// <reference path="middleware.d.ts" />
|
|
7
|
-
|
|
8
|
-
import type { RuntimeConfig } from 'nuxt/schema'
|
|
9
|
-
import type { H3Event } from 'h3'
|
|
10
|
-
import type { LogObject } from 'consola'
|
|
11
|
-
import type { NuxtIslandContext, NuxtIslandResponse, NuxtRenderHTMLContext } from 'nuxt/app'
|
|
12
|
-
|
|
13
|
-
declare module 'nitropack' {
|
|
14
|
-
interface NitroRuntimeConfigApp {
|
|
15
|
-
buildAssetsDir: string
|
|
16
|
-
cdnURL: string
|
|
17
|
-
}
|
|
18
|
-
interface NitroRuntimeConfig extends RuntimeConfig {}
|
|
19
|
-
interface NitroRouteConfig {
|
|
20
|
-
ssr?: boolean
|
|
21
|
-
noScripts?: boolean
|
|
22
|
-
/** @deprecated Use `noScripts` instead */
|
|
23
|
-
experimentalNoScripts?: boolean
|
|
24
|
-
}
|
|
25
|
-
interface NitroRouteRules {
|
|
26
|
-
ssr?: boolean
|
|
27
|
-
noScripts?: boolean
|
|
28
|
-
/** @deprecated Use `noScripts` instead */
|
|
29
|
-
experimentalNoScripts?: boolean
|
|
30
|
-
appMiddleware?: Record<string, boolean>
|
|
31
|
-
appLayout?: string | false
|
|
32
|
-
}
|
|
33
|
-
interface NitroRuntimeHooks {
|
|
34
|
-
'dev:ssr-logs': (ctx: { logs: LogObject[], path: string }) => void | Promise<void>
|
|
35
|
-
'render:html': (htmlContext: NuxtRenderHTMLContext, context: { event: H3Event }) => void | Promise<void>
|
|
36
|
-
'render:island': (islandResponse: NuxtIslandResponse, context: { event: H3Event, islandContext: NuxtIslandContext }) => void | Promise<void>
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
declare module 'nitropack/types' {
|
|
40
|
-
interface NitroRuntimeConfigApp {
|
|
41
|
-
buildAssetsDir: string
|
|
42
|
-
cdnURL: string
|
|
43
|
-
}
|
|
44
|
-
interface NitroRuntimeConfig extends RuntimeConfig {}
|
|
45
|
-
interface NitroRouteConfig {
|
|
46
|
-
ssr?: boolean
|
|
47
|
-
noScripts?: boolean
|
|
48
|
-
/** @deprecated Use `noScripts` instead */
|
|
49
|
-
experimentalNoScripts?: boolean
|
|
50
|
-
}
|
|
51
|
-
interface NitroRouteRules {
|
|
52
|
-
ssr?: boolean
|
|
53
|
-
noScripts?: boolean
|
|
54
|
-
/** @deprecated Use `noScripts` instead */
|
|
55
|
-
experimentalNoScripts?: boolean
|
|
56
|
-
appMiddleware?: Record<string, boolean>
|
|
57
|
-
appLayout?: string | false
|
|
58
|
-
}
|
|
59
|
-
interface NitroRuntimeHooks {
|
|
60
|
-
'dev:ssr-logs': (ctx: { logs: LogObject[], path: string }) => void | Promise<void>
|
|
61
|
-
'render:html': (htmlContext: NuxtRenderHTMLContext, context: { event: H3Event }) => void | Promise<void>
|
|
62
|
-
'render:island': (islandResponse: NuxtIslandResponse, context: { event: H3Event, islandContext: NuxtIslandContext }) => void | Promise<void>
|
|
63
|
-
}
|
|
64
|
-
}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
// Generated by Nuxt'
|
|
2
|
-
import type { Plugin } from '#app'
|
|
3
|
-
|
|
4
|
-
type Decorate<T extends Record<string, any>> = { [K in keyof T as K extends string ? `$${K}` : never]: T[K] }
|
|
5
|
-
|
|
6
|
-
type InjectionType<A extends Plugin> = A extends {default: Plugin<infer T>} ? Decorate<T> : unknown
|
|
7
|
-
|
|
8
|
-
type NuxtAppInjections =
|
|
9
|
-
InjectionType<typeof import("../../../../../../../node_modules/nuxt/dist/app/plugins/revive-payload.client.js")> &
|
|
10
|
-
InjectionType<typeof import("../../../../../../../node_modules/nuxt/dist/head/runtime/plugins/unhead.js")> &
|
|
11
|
-
InjectionType<typeof import("../../../../../../../node_modules/nuxt/dist/app/plugins/router.js")> &
|
|
12
|
-
InjectionType<typeof import("../../../../../../../node_modules/nuxt/dist/app/plugins/navigation-repaint.client.js")> &
|
|
13
|
-
InjectionType<typeof import("../../../../../../../node_modules/nuxt/dist/app/plugins/check-outdated-build.client.js")> &
|
|
14
|
-
InjectionType<typeof import("../../../../../../../node_modules/nuxt/dist/app/plugins/revive-payload.server.js")> &
|
|
15
|
-
InjectionType<typeof import("../../../../../../../node_modules/nuxt/dist/app/plugins/chunk-reload.client.js")>
|
|
16
|
-
|
|
17
|
-
declare module '#app' {
|
|
18
|
-
interface NuxtApp extends NuxtAppInjections { }
|
|
19
|
-
|
|
20
|
-
interface NuxtAppLiterals {
|
|
21
|
-
pluginName: 'nuxt:revive-payload:client' | 'nuxt:head' | 'nuxt:router' | 'nuxt:revive-payload:server' | 'nuxt:chunk-reload' | 'nuxt:global-components'
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
declare module 'vue' {
|
|
26
|
-
interface ComponentCustomProperties extends NuxtAppInjections { }
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
export { }
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import { RuntimeConfig as UserRuntimeConfig, PublicRuntimeConfig as UserPublicRuntimeConfig } from 'nuxt/schema'
|
|
2
|
-
interface SharedRuntimeConfig {
|
|
3
|
-
app: {
|
|
4
|
-
buildId: string,
|
|
5
|
-
|
|
6
|
-
baseURL: string,
|
|
7
|
-
|
|
8
|
-
buildAssetsDir: string,
|
|
9
|
-
|
|
10
|
-
cdnURL: string,
|
|
11
|
-
},
|
|
12
|
-
|
|
13
|
-
nitro: {
|
|
14
|
-
envPrefix: string,
|
|
15
|
-
},
|
|
16
|
-
}
|
|
17
|
-
interface SharedPublicRuntimeConfig {
|
|
18
|
-
|
|
19
|
-
}
|
|
20
|
-
declare module '@nuxt/schema' {
|
|
21
|
-
interface RuntimeConfig extends UserRuntimeConfig {}
|
|
22
|
-
interface PublicRuntimeConfig extends UserPublicRuntimeConfig {}
|
|
23
|
-
}
|
|
24
|
-
declare module 'nuxt/schema' {
|
|
25
|
-
interface RuntimeConfig extends SharedRuntimeConfig {}
|
|
26
|
-
interface PublicRuntimeConfig extends SharedPublicRuntimeConfig {}
|
|
27
|
-
}
|
|
28
|
-
declare module 'vue' {
|
|
29
|
-
interface ComponentCustomProperties {
|
|
30
|
-
$config: UserRuntimeConfig
|
|
31
|
-
}
|
|
32
|
-
}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
// Generated by auto imports
|
|
2
|
-
export {}
|
|
3
|
-
declare global {
|
|
4
|
-
const useRuntimeConfig: (event?: import('h3').H3Event) => import('nuxt/schema').RuntimeConfig
|
|
5
|
-
const useAppConfig: () => import('nuxt/schema').AppConfig
|
|
6
|
-
const defineAppConfig: <C extends import('nuxt/schema').AppConfigInput>(config: C) => C
|
|
7
|
-
const createError: typeof import('h3')['createError']
|
|
8
|
-
const setResponseStatus: typeof import('h3')['setResponseStatus']
|
|
9
|
-
|
|
10
|
-
}
|
|
File without changes
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
setups.@nuxt/test-utils="4.1.0"
|
package/app/components/01.atoms/animations/entry/node_modules/.cache/nuxt/chrome-workspace.json
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"uuid":"4bddd330-9d58-42dc-984e-629f2c5338a9"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":"4.1.11","results":[[":tests/EntryAnimation.spec.ts",{"duration":0,"failed":true}]]}
|
|
@@ -1,100 +0,0 @@
|
|
|
1
|
-
# AccordianCore — Consumer Styling Guide
|
|
2
|
-
|
|
3
|
-
## No tokens of its own
|
|
4
|
-
|
|
5
|
-
`AccordianCore` doesn't define any `--accordian-*` custom properties. It's a thin wrapper that
|
|
6
|
-
renders `itemCount` copies of a panel component (`ExpandingPanel` by default, or
|
|
7
|
-
`ExpandingPanelClassic` when `variant="classic"`) and forwards `name`/`animationDuration` to each
|
|
8
|
-
one — all real styling surface lives on whichever panel component is active. See that
|
|
9
|
-
component's own `CONSUMER-STYLING.md`:
|
|
10
|
-
|
|
11
|
-
- [../expanding-panel/CONSUMER-STYLING.md](../expanding-panel/CONSUMER-STYLING.md) (default, `variant="modern"`)
|
|
12
|
-
- [../expanding-panel-classic/CONSUMER-STYLING.md](../expanding-panel-classic/CONSUMER-STYLING.md) (`variant="classic"`)
|
|
13
|
-
|
|
14
|
-
`--expanding-panel-*` tokens set at any scope (global, page) apply to `AccordianCore`'s panels
|
|
15
|
-
too, since they're the same underlying component — no `AccordianCore`-specific override is
|
|
16
|
-
needed for summary gap, icon size, etc.
|
|
17
|
-
|
|
18
|
-
---
|
|
19
|
-
|
|
20
|
-
## The `.accordian-item` hook
|
|
21
|
-
|
|
22
|
-
Every panel gets `style-class-passthrough="['accordian-item']"` automatically — this is the one
|
|
23
|
-
`AccordianCore`-specific override surface, used to target *all* panels in the group without
|
|
24
|
-
reaching into `ExpandingPanel`/`ExpandingPanelClassic` internals.
|
|
25
|
-
|
|
26
|
-
```css
|
|
27
|
-
/* In the consuming page's unscoped <style> block */
|
|
28
|
-
.display-accordian {
|
|
29
|
-
.accordian-item.expanding-panel {
|
|
30
|
-
/* modern variant (default) */
|
|
31
|
-
border-block-end: 1px solid var(--theme-border, #e0e0e0);
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
/* If this instance uses variant="classic", target the classic root class instead: */
|
|
35
|
-
.accordian-item.expanding-panel-classic {
|
|
36
|
-
border-block-end: 1px solid var(--theme-border, #e0e0e0);
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
```
|
|
40
|
-
|
|
41
|
-
Note the root class differs by variant (`.expanding-panel` vs `.expanding-panel-classic`) — a
|
|
42
|
-
selector written for one won't match the other. If you switch `variant` on an existing instance,
|
|
43
|
-
check any `.accordian-item.expanding-panel*` overrides still target the right class.
|
|
44
|
-
|
|
45
|
-
---
|
|
46
|
-
|
|
47
|
-
## Local overrides
|
|
48
|
-
|
|
49
|
-
There are no public tokens, so override the classes above with direct properties, scoped to an
|
|
50
|
-
element you own (a page or section class, or a class added with `:style-class-passthrough`). Keep
|
|
51
|
-
the block **unlayered** (no `@layer` wrapper) so it beats the library's `@layer components`. If your
|
|
52
|
-
own file uses `<style scoped>`, selectors that reach inside the component need `:deep()`. Patterns
|
|
53
|
-
and examples: `.claude/skills/component-local-style-override.md`.
|
|
54
|
-
|
|
55
|
-
### Page or section
|
|
56
|
-
|
|
57
|
-
No `:deep()` is required (component styles are unscoped).
|
|
58
|
-
|
|
59
|
-
```css
|
|
60
|
-
.faq-section {
|
|
61
|
-
.display-accordian {
|
|
62
|
-
max-width: 480px;
|
|
63
|
-
|
|
64
|
-
.accordian-item.expanding-panel {
|
|
65
|
-
--expanding-panel-summary-padding-block: 1.6rem;
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
```
|
|
70
|
-
|
|
71
|
-
### One instance
|
|
72
|
-
|
|
73
|
-
Use sparingly — prefer global or page-scoped CSS. `styleClassPassthrough` on `AccordianCore`
|
|
74
|
-
targets the root `.display-accordian` element, not the individual panels (those already get
|
|
75
|
-
`.accordian-item` automatically):
|
|
76
|
-
|
|
77
|
-
```vue
|
|
78
|
-
<AccordianCore name="faq" :item-count="3" :style-class-passthrough="['compact-faq']">
|
|
79
|
-
...
|
|
80
|
-
</AccordianCore>
|
|
81
|
-
```
|
|
82
|
-
|
|
83
|
-
```css
|
|
84
|
-
.display-accordian.compact-faq {
|
|
85
|
-
max-width: 400px;
|
|
86
|
-
}
|
|
87
|
-
```
|
|
88
|
-
|
|
89
|
-
---
|
|
90
|
-
|
|
91
|
-
## Notes
|
|
92
|
-
|
|
93
|
-
- `variant` is group-wide: every panel in one `AccordianCore` renders the same component, so
|
|
94
|
-
there's no per-panel styling divergence caused by variant — just remember which root class
|
|
95
|
-
(`.expanding-panel` vs `.expanding-panel-classic`) your `.accordian-item` selectors need.
|
|
96
|
-
- `contentIsOnTop` isn't exposed on `AccordianCore` — it isn't meaningful for a grouped accordion
|
|
97
|
-
(see `ExpandingPanel`'s own docs for why: it's for a single panel overlaying trailing page
|
|
98
|
-
content, not stacked/grouped panels). Use `ExpandingPanel`/`ExpandingPanelClassic` directly if
|
|
99
|
-
you need an overlay panel.
|
|
100
|
-
|
|
@@ -1,272 +0,0 @@
|
|
|
1
|
-
import AccordianCore from "../AccordianCore.vue";
|
|
2
|
-
import type { Meta, StoryObj } from "@nuxtjs/storybook";
|
|
3
|
-
|
|
4
|
-
const meta: Meta<typeof AccordianCore> = {
|
|
5
|
-
title: "Molecules/Expandable/Accordian Core",
|
|
6
|
-
component: AccordianCore,
|
|
7
|
-
argTypes: {
|
|
8
|
-
name: {
|
|
9
|
-
control: { type: "text" },
|
|
10
|
-
description:
|
|
11
|
-
"Shared name attribute passed to each ExpandingPanel — used to group panels so only one can be open at a time (native <details> behaviour)",
|
|
12
|
-
},
|
|
13
|
-
itemCount: {
|
|
14
|
-
control: { type: "number", min: 0, step: 1 },
|
|
15
|
-
description: "Number of accordion panels to render",
|
|
16
|
-
},
|
|
17
|
-
animationDuration: {
|
|
18
|
-
control: { type: "number", min: 0, step: 50 },
|
|
19
|
-
description: "Expand/collapse animation duration in milliseconds",
|
|
20
|
-
},
|
|
21
|
-
variant: {
|
|
22
|
-
control: { type: "radio" },
|
|
23
|
-
options: ["modern", "classic"],
|
|
24
|
-
description:
|
|
25
|
-
"Which panel implementation to render: 'modern' (ExpandingPanel, ::details-content based) or " +
|
|
26
|
-
"'classic' (ExpandingPanelClassic, grid-template-rows based) — use classic when the open/close " +
|
|
27
|
-
"animation must run identically in every browser today",
|
|
28
|
-
},
|
|
29
|
-
styleClassPassthrough: {
|
|
30
|
-
control: "object",
|
|
31
|
-
description: "Additional CSS classes applied to the root element",
|
|
32
|
-
},
|
|
33
|
-
},
|
|
34
|
-
args: {
|
|
35
|
-
name: undefined,
|
|
36
|
-
itemCount: 3,
|
|
37
|
-
animationDuration: 300,
|
|
38
|
-
variant: "modern",
|
|
39
|
-
styleClassPassthrough: [],
|
|
40
|
-
},
|
|
41
|
-
};
|
|
42
|
-
|
|
43
|
-
export default meta;
|
|
44
|
-
type Story = StoryObj<typeof AccordianCore>;
|
|
45
|
-
|
|
46
|
-
// ─── Helpers ──────────────────────────────────────────────────────────────────
|
|
47
|
-
|
|
48
|
-
/** Builds a slot object for N items with generic placeholder content. */
|
|
49
|
-
function buildGenericSlots(count: number): Record<string, string> {
|
|
50
|
-
const slots: Record<string, string> = {};
|
|
51
|
-
for (let i = 0; i < count; i++) {
|
|
52
|
-
slots[`accordian-${i}-summary`] = `<span>Panel ${i + 1} — Summary</span>`;
|
|
53
|
-
slots[`accordian-${i}-icon`] = `<span>▸</span>`;
|
|
54
|
-
slots[`accordian-${i}-content`] =
|
|
55
|
-
`<p style="margin:0;padding:0.5rem 0">This is the content for panel ${i + 1}. ` +
|
|
56
|
-
`Add whatever you need here — text, images, components.</p>`;
|
|
57
|
-
}
|
|
58
|
-
return slots;
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
// ─── Stories ─────────────────────────────────────────────────────────────────
|
|
62
|
-
|
|
63
|
-
export const Default: Story = {
|
|
64
|
-
args: {
|
|
65
|
-
itemCount: 3,
|
|
66
|
-
animationDuration: 300,
|
|
67
|
-
},
|
|
68
|
-
render: (args) => ({
|
|
69
|
-
components: { AccordianCore },
|
|
70
|
-
setup() {
|
|
71
|
-
return { args, slots: buildGenericSlots(args.itemCount ?? 3) };
|
|
72
|
-
},
|
|
73
|
-
template: `
|
|
74
|
-
<AccordianCore v-bind="args">
|
|
75
|
-
<template v-for="(content, name) in slots" #[name] :key="name">
|
|
76
|
-
<span v-html="content" />
|
|
77
|
-
</template>
|
|
78
|
-
</AccordianCore>
|
|
79
|
-
`,
|
|
80
|
-
}),
|
|
81
|
-
};
|
|
82
|
-
|
|
83
|
-
export const ClassicVariant: Story = {
|
|
84
|
-
name: "Classic Variant",
|
|
85
|
-
args: {
|
|
86
|
-
itemCount: 3,
|
|
87
|
-
animationDuration: 300,
|
|
88
|
-
variant: "classic",
|
|
89
|
-
},
|
|
90
|
-
render: (args) => ({
|
|
91
|
-
components: { AccordianCore },
|
|
92
|
-
setup() {
|
|
93
|
-
return { args, slots: buildGenericSlots(args.itemCount ?? 3) };
|
|
94
|
-
},
|
|
95
|
-
template: `
|
|
96
|
-
<AccordianCore v-bind="args">
|
|
97
|
-
<template v-for="(content, name) in slots" #[name] :key="name">
|
|
98
|
-
<span v-html="content" />
|
|
99
|
-
</template>
|
|
100
|
-
</AccordianCore>
|
|
101
|
-
`,
|
|
102
|
-
}),
|
|
103
|
-
};
|
|
104
|
-
|
|
105
|
-
export const SinglePanel: Story = {
|
|
106
|
-
args: {
|
|
107
|
-
itemCount: 1,
|
|
108
|
-
animationDuration: 300,
|
|
109
|
-
},
|
|
110
|
-
render: (args) => ({
|
|
111
|
-
components: { AccordianCore },
|
|
112
|
-
setup() {
|
|
113
|
-
return { args };
|
|
114
|
-
},
|
|
115
|
-
template: `
|
|
116
|
-
<AccordianCore v-bind="args">
|
|
117
|
-
<template #accordian-0-summary>
|
|
118
|
-
<span>The only panel</span>
|
|
119
|
-
</template>
|
|
120
|
-
<template #accordian-0-content>
|
|
121
|
-
<p style="margin:0;padding:0.5rem 0">Content for the single panel.</p>
|
|
122
|
-
</template>
|
|
123
|
-
</AccordianCore>
|
|
124
|
-
`,
|
|
125
|
-
}),
|
|
126
|
-
};
|
|
127
|
-
|
|
128
|
-
/** Panels share a name so the browser enforces only one open at a time. */
|
|
129
|
-
export const ExclusiveOpen: Story = {
|
|
130
|
-
name: "Exclusive Open (name grouped)",
|
|
131
|
-
args: {
|
|
132
|
-
itemCount: 4,
|
|
133
|
-
name: "exclusive-group",
|
|
134
|
-
animationDuration: 300,
|
|
135
|
-
},
|
|
136
|
-
render: (args) => ({
|
|
137
|
-
components: { AccordianCore },
|
|
138
|
-
setup() {
|
|
139
|
-
return { args, slots: buildGenericSlots(args.itemCount ?? 4) };
|
|
140
|
-
},
|
|
141
|
-
template: `
|
|
142
|
-
<AccordianCore v-bind="args">
|
|
143
|
-
<template v-for="(content, name) in slots" #[name] :key="name">
|
|
144
|
-
<span v-html="content" />
|
|
145
|
-
</template>
|
|
146
|
-
</AccordianCore>
|
|
147
|
-
`,
|
|
148
|
-
}),
|
|
149
|
-
};
|
|
150
|
-
|
|
151
|
-
export const SlowAnimation: Story = {
|
|
152
|
-
name: "Slow Animation (800ms)",
|
|
153
|
-
args: {
|
|
154
|
-
itemCount: 3,
|
|
155
|
-
animationDuration: 800,
|
|
156
|
-
},
|
|
157
|
-
render: (args) => ({
|
|
158
|
-
components: { AccordianCore },
|
|
159
|
-
setup() {
|
|
160
|
-
return { args, slots: buildGenericSlots(args.itemCount ?? 3) };
|
|
161
|
-
},
|
|
162
|
-
template: `
|
|
163
|
-
<AccordianCore v-bind="args">
|
|
164
|
-
<template v-for="(content, name) in slots" #[name] :key="name">
|
|
165
|
-
<span v-html="content" />
|
|
166
|
-
</template>
|
|
167
|
-
</AccordianCore>
|
|
168
|
-
`,
|
|
169
|
-
}),
|
|
170
|
-
};
|
|
171
|
-
|
|
172
|
-
export const NoAnimation: Story = {
|
|
173
|
-
name: "No Animation (0ms)",
|
|
174
|
-
args: {
|
|
175
|
-
itemCount: 3,
|
|
176
|
-
animationDuration: 0,
|
|
177
|
-
},
|
|
178
|
-
render: (args) => ({
|
|
179
|
-
components: { AccordianCore },
|
|
180
|
-
setup() {
|
|
181
|
-
return { args, slots: buildGenericSlots(args.itemCount ?? 3) };
|
|
182
|
-
},
|
|
183
|
-
template: `
|
|
184
|
-
<AccordianCore v-bind="args">
|
|
185
|
-
<template v-for="(content, name) in slots" #[name] :key="name">
|
|
186
|
-
<span v-html="content" />
|
|
187
|
-
</template>
|
|
188
|
-
</AccordianCore>
|
|
189
|
-
`,
|
|
190
|
-
}),
|
|
191
|
-
};
|
|
192
|
-
|
|
193
|
-
export const WithStyleClassPassthrough: Story = {
|
|
194
|
-
name: "With styleClassPassthrough",
|
|
195
|
-
args: {
|
|
196
|
-
itemCount: 2,
|
|
197
|
-
styleClassPassthrough: ["custom-class", "another-class"],
|
|
198
|
-
},
|
|
199
|
-
render: (args) => ({
|
|
200
|
-
components: { AccordianCore },
|
|
201
|
-
setup() {
|
|
202
|
-
return { args, slots: buildGenericSlots(args.itemCount ?? 2) };
|
|
203
|
-
},
|
|
204
|
-
template: `
|
|
205
|
-
<AccordianCore v-bind="args">
|
|
206
|
-
<template v-for="(content, name) in slots" #[name] :key="name">
|
|
207
|
-
<span v-html="content" />
|
|
208
|
-
</template>
|
|
209
|
-
</AccordianCore>
|
|
210
|
-
`,
|
|
211
|
-
}),
|
|
212
|
-
};
|
|
213
|
-
|
|
214
|
-
export const RichContent: Story = {
|
|
215
|
-
name: "Rich Slot Content",
|
|
216
|
-
args: {
|
|
217
|
-
itemCount: 3,
|
|
218
|
-
animationDuration: 300,
|
|
219
|
-
},
|
|
220
|
-
render: (args) => ({
|
|
221
|
-
components: { AccordianCore },
|
|
222
|
-
setup() {
|
|
223
|
-
return { args };
|
|
224
|
-
},
|
|
225
|
-
template: `
|
|
226
|
-
<AccordianCore v-bind="args">
|
|
227
|
-
<template #accordian-0-summary>
|
|
228
|
-
<strong>Delivery & Returns</strong>
|
|
229
|
-
</template>
|
|
230
|
-
<template #accordian-0-content>
|
|
231
|
-
<p style="margin:0;padding:0.5rem 0">
|
|
232
|
-
Free standard delivery on orders over £50. Returns accepted within 30 days.
|
|
233
|
-
</p>
|
|
234
|
-
</template>
|
|
235
|
-
|
|
236
|
-
<template #accordian-1-summary>
|
|
237
|
-
<strong>Materials & Care</strong>
|
|
238
|
-
</template>
|
|
239
|
-
<template #accordian-1-content>
|
|
240
|
-
<ul style="margin:0;padding:0.5rem 0 0.5rem 1.2rem">
|
|
241
|
-
<li>100% organic cotton</li>
|
|
242
|
-
<li>Machine wash at 30°C</li>
|
|
243
|
-
<li>Do not tumble dry</li>
|
|
244
|
-
</ul>
|
|
245
|
-
</template>
|
|
246
|
-
|
|
247
|
-
<template #accordian-2-summary>
|
|
248
|
-
<strong>Sizing Guide</strong>
|
|
249
|
-
</template>
|
|
250
|
-
<template #accordian-2-content>
|
|
251
|
-
<p style="margin:0;padding:0.5rem 0">
|
|
252
|
-
Our pieces run true to size. If you're between sizes, we recommend sizing up.
|
|
253
|
-
</p>
|
|
254
|
-
</template>
|
|
255
|
-
</AccordianCore>
|
|
256
|
-
`,
|
|
257
|
-
}),
|
|
258
|
-
};
|
|
259
|
-
|
|
260
|
-
export const Empty: Story = {
|
|
261
|
-
name: "Zero Items",
|
|
262
|
-
args: {
|
|
263
|
-
itemCount: 0,
|
|
264
|
-
},
|
|
265
|
-
render: (args) => ({
|
|
266
|
-
components: { AccordianCore },
|
|
267
|
-
setup() {
|
|
268
|
-
return { args };
|
|
269
|
-
},
|
|
270
|
-
template: `<AccordianCore v-bind="args" />`,
|
|
271
|
-
}),
|
|
272
|
-
};
|