srcdev-nuxt-components 9.3.0 → 9.3.2

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 (53) hide show
  1. package/.claude/hooks/check-component-update.sh +66 -0
  2. package/.claude/settings.json +1 -1
  3. package/.claude/skills/component-local-style-override.md +45 -0
  4. package/.claude/skills/components/accordian-core.md +26 -5
  5. package/.claude/skills/components/expanding-panel-classic.md +221 -0
  6. package/.claude/skills/components/expanding-panel.md +8 -8
  7. package/.claude/skills/components/navigation-items.md +51 -0
  8. package/.claude/skills/components/responsive-header.md +161 -0
  9. package/.claude/skills/components/site-header.md +98 -0
  10. package/.claude/skills/index.md +6 -1
  11. package/.claude/skills/page-transitions.md +116 -0
  12. package/.claude/skills/theming-form-geometry-tokens.md +12 -0
  13. package/.claude/skills/theming-override-default.md +14 -0
  14. package/.claude/skills/theming-partial-override.md +17 -0
  15. package/.vscode/srcdev-component-accordian-core.code-snippets +74 -0
  16. package/.vscode/srcdev-component-expanding-panel-classic.code-snippets +121 -0
  17. package/.vscode/srcdev-component-expanding-panel.code-snippets +1 -3
  18. package/.vscode/srcdev-component-responsive-header.code-snippets +46 -0
  19. package/.vscode/srcdev-component-site-header.code-snippets +74 -0
  20. package/app/components/02.molecules/expandable/accordian/AccordianCore.vue +19 -11
  21. package/app/components/02.molecules/expandable/accordian/CONSUMER-STYLING.md +93 -0
  22. package/app/components/02.molecules/expandable/accordian/stories/AccordianCore.stories.ts +31 -0
  23. package/app/components/02.molecules/expandable/accordian/tests/AccordianCore.spec.ts +31 -0
  24. package/app/components/02.molecules/expandable/accordian/tests/__snapshots__/AccordianCore.spec.ts.snap +7 -21
  25. package/app/components/02.molecules/expandable/expanding-panel/CONSUMER-STYLING.md +10 -10
  26. package/app/components/02.molecules/expandable/expanding-panel/ExpandingPanel.vue +35 -37
  27. package/app/components/02.molecules/expandable/expanding-panel/stories/ExpandingPanel.stories.ts +5 -6
  28. package/app/components/02.molecules/expandable/expanding-panel/tests/__snapshots__/ExpandingPanel.spec.ts.snap +5 -13
  29. package/app/components/02.molecules/expandable/expanding-panel-classic/CONSUMER-STYLING.md +103 -0
  30. package/app/components/02.molecules/expandable/expanding-panel-classic/ExpandingPanelClassic.vue +191 -0
  31. package/app/components/02.molecules/expandable/expanding-panel-classic/stories/ExpandingPanelClassic.stories.ts +293 -0
  32. package/app/components/02.molecules/expandable/expanding-panel-classic/tests/ExpandingPanelClassic.spec.ts +514 -0
  33. package/app/components/02.molecules/expandable/expanding-panel-classic/tests/__snapshots__/ExpandingPanelClassic.spec.ts.snap +59 -0
  34. package/app/components/03.organisms/responsive-header/CONSUMER-STYLING.md +66 -0
  35. package/app/components/{responsive-header → 03.organisms/responsive-header}/NavigationItems.vue +21 -28
  36. package/app/components/{responsive-header → 03.organisms/responsive-header}/ResponsiveHeader.vue +141 -43
  37. package/app/components/03.organisms/responsive-header/stories/NavigationItems.stories.ts +80 -0
  38. package/app/components/03.organisms/responsive-header/stories/ResponsiveHeader.stories.ts +122 -0
  39. package/app/components/03.organisms/responsive-header/tests/NavigationItems.spec.ts +155 -0
  40. package/app/components/03.organisms/responsive-header/tests/ResponsiveHeader.spec.ts +319 -0
  41. package/app/components/03.organisms/responsive-header/tests/__snapshots__/NavigationItems.spec.ts.snap +34 -0
  42. package/app/components/03.organisms/responsive-header/tests/__snapshots__/ResponsiveHeader.spec.ts.snap +72 -0
  43. package/app/components/03.organisms/site-header/CONSUMER-STYLING.md +60 -0
  44. package/app/components/03.organisms/site-header/SiteHeader.vue +96 -0
  45. package/app/components/03.organisms/site-header/stories/SiteHeader.stories.ts +135 -0
  46. package/app/components/03.organisms/site-header/tests/SiteHeader.spec.ts +103 -0
  47. package/app/components/03.organisms/site-header/tests/__snapshots__/SiteHeader.spec.ts.snap +15 -0
  48. package/app/components/05.forms/input-select/CONSUMER-STYLING.md +42 -0
  49. package/app/components/05.forms/input-select/InputSelectCore.vue +21 -9
  50. package/app/components/05.forms/input-text/CONSUMER-STYLING.md +60 -0
  51. package/app/components/05.forms/input-text/InputTextCore.vue +17 -8
  52. package/app/layouts/default.vue +64 -67
  53. package/package.json +4 -1
@@ -1,43 +1,35 @@
1
1
  <template>
2
2
  <div class="page-layout">
3
- <PageRow tag="div" variant="full" :style-class-passthrough="['header']">
4
- <template #default>
5
- <header class="responsive-header">
6
- <nav class="home-navigation" aria-label="Home Navigation">
7
- <SkipLinks>
8
- <template #homeLink>
9
- <NuxtLink to="/" class="home-link">
10
- SRCDEV
11
- <span>components</span>
12
- </NuxtLink>
13
- </template>
14
- </SkipLinks>
15
- </nav>
16
- <ResponsiveHeader
17
- :responsive-nav-links
18
- :gap-between-first-and-second-nav="12"
19
- :style-class-passthrough="['site-header-nav']"
20
- :overflow-details-summary-icons="{
21
- more: 'gravity-ui:ellipsis',
22
- burger: 'gravity-ui:bars',
23
- }"
24
- :collapse-at-main-nav-intersection="false"
25
- :allow-expand-on-gesture="false"
26
- >
27
- <template #secondaryNavigation>
28
- <ul class="secondary-navigation-list">
29
- <li class="secondary-navigation-item">
30
- <NuxtLink class="secondary-navigation-link" to="/">
31
- <Icon name="material-symbols:settings-outline-rounded" class="icon" aria-hidden="true" />
32
- <span class="sr-only">Settings</span>
33
- </NuxtLink>
34
- </li>
35
- </ul>
36
- </template>
37
- </ResponsiveHeader>
38
- </header>
3
+ <SiteHeader
4
+ :responsive-nav-links
5
+ :gap-between-first-and-second-nav="12"
6
+ page-row-variant="full"
7
+ :style-class-passthrough="['header']"
8
+ :nav-style-class-passthrough="['site-header-nav']"
9
+ :overflow-details-summary-icons="{
10
+ more: 'gravity-ui:ellipsis',
11
+ burger: 'gravity-ui:bars',
12
+ }"
13
+ :collapse-at-main-nav-intersection="false"
14
+ :allow-expand-on-gesture="false"
15
+ >
16
+ <template #branding>
17
+ <NuxtLink to="/" class="home-link">
18
+ SRCDEV
19
+ <span>components</span>
20
+ </NuxtLink>
39
21
  </template>
40
- </PageRow>
22
+ <template #secondaryNavigation>
23
+ <ul class="secondary-navigation-list">
24
+ <li class="secondary-navigation-item">
25
+ <NuxtLink class="secondary-navigation-link" to="/">
26
+ <Icon name="material-symbols:settings-outline-rounded" class="icon" aria-hidden="true" />
27
+ <span class="sr-only">Settings</span>
28
+ </NuxtLink>
29
+ </li>
30
+ </ul>
31
+ </template>
32
+ </SiteHeader>
41
33
  <PageRow id="main-content" class="main-content" tag="main" variant="full" :is-landmark="true">
42
34
  <template #default>
43
35
  <slot name="layout-content">Page content goes here</slot>
@@ -231,39 +223,31 @@ onMounted(() => {
231
223
 
232
224
  width: 100%;
233
225
 
234
- .responsive-header {
235
- display: grid;
236
- grid-template-columns: auto 1fr;
237
- gap: 24px;
238
- align-items: center;
239
- padding-block: 0;
240
- padding-inline: 24px;
241
- background-color: #000;
226
+ /* SiteHeader token overrides — see .claude/skills/components/site-header.md */
227
+ --site-header-gap: 2.4rem;
228
+ --site-header-padding-inline: 2.4rem;
229
+ --site-header-bg: #000;
230
+ --site-header-position: relative;
231
+ --site-header-z-index: 9;
242
232
 
243
- position: relative;
244
- z-index: 9;
233
+ .home-link {
234
+ display: flex;
235
+ flex-direction: column;
236
+ text-wrap-mode: nowrap;
237
+ font-size: var(--step-5);
238
+ letter-spacing: 0.2em;
239
+ color: var(--slate-00);
240
+ text-decoration: none;
245
241
 
246
- width: 100%;
247
-
248
- .home-link {
249
- display: flex;
250
- flex-direction: column;
251
- text-wrap-mode: nowrap;
252
- font-size: var(--step-5);
253
- letter-spacing: 0.2em;
254
- color: var(--slate-00);
255
- text-decoration: none;
256
-
257
- span {
258
- font-size: var(--step-3);
259
- letter-spacing: initial;
260
- }
242
+ span {
243
+ font-size: var(--step-3);
244
+ letter-spacing: initial;
245
+ }
261
246
 
262
- &:hover {
263
- border-radius: 0.4rem;
264
- outline: 2px solid var(--green-08);
265
- outline-offset: 0.4rem;
266
- }
247
+ &:hover {
248
+ border-radius: 0.4rem;
249
+ outline: 2px solid var(--green-08);
250
+ outline-offset: 0.4rem;
267
251
  }
268
252
  }
269
253
  }
@@ -282,6 +266,19 @@ onMounted(() => {
282
266
  --responsive-header-color: var(--slate-00);
283
267
  --responsive-header-link-color: var(--slate-00);
284
268
 
269
+ /* Fixed (non-fluid) nav-link font-size — deliberately NOT var(--step-*).
270
+ A vw-based clamp() here drifts with the scrollbar (see
271
+ ResponsiveHeader.vue's token comment) without ever re-triggering the
272
+ overflow-collapse ResizeObserver, silently letting one extra item fit
273
+ that shouldn't. Values TBC after a visual pass. */
274
+ --responsive-header-link-font-size: 1.2rem;
275
+ @media (min-width: 768px) {
276
+ --responsive-header-link-font-size: 1.4rem;
277
+ }
278
+ @media (min-width: 1024px) {
279
+ --responsive-header-link-font-size: 1.5rem;
280
+ }
281
+
285
282
  --responsive-header-sub-nav-bg: #000;
286
283
  --responsive-header-sub-nav-border: 1px solid #efefef75;
287
284
 
package/package.json CHANGED
@@ -1,10 +1,13 @@
1
1
  {
2
2
  "name": "srcdev-nuxt-components",
3
3
  "type": "module",
4
- "version": "9.3.0",
4
+ "version": "9.3.2",
5
5
  "main": "nuxt.config.ts",
6
6
  "types": "types.d.ts",
7
7
  "license": "MIT",
8
+ "engines": {
9
+ "node": ">=24.0.0"
10
+ },
8
11
  "scripts": {
9
12
  "postinstall": "node scripts/copy-snippets.mjs",
10
13
  "clean": "rm -rf .nuxt && rm -rf .output",