srcdev-nuxt-components 9.2.4 → 9.2.6

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 (36) hide show
  1. package/.claude/settings.json +35 -1
  2. package/.claude/skills/components/content-docs.md +165 -0
  3. package/.claude/skills/components/expanding-panel.md +55 -0
  4. package/.claude/skills/index.md +4 -2
  5. package/.claude/skills/qa-panel.md +5 -6
  6. package/.claude/skills/setup-postinstall.md +11 -5
  7. package/.claude/skills/theming-typography-tokens.md +109 -0
  8. package/.vscode/srcdev-component-content-docs.code-snippets +129 -0
  9. package/.vscode/srcdev-component-expanding-panel.code-snippets +123 -0
  10. package/README.md +10 -4
  11. package/app/components/01.atoms/content-wrappers/docs-pages/ContentDocs.vue +410 -0
  12. package/app/components/01.atoms/content-wrappers/docs-pages/playwright/content-docs.playwright.ts +53 -0
  13. package/app/components/01.atoms/content-wrappers/docs-pages/playwright/content-docs.playwright.ts-snapshots/default-chromium-darwin.png +0 -0
  14. package/app/components/01.atoms/content-wrappers/docs-pages/playwright/content-docs.playwright.ts-snapshots/state-desktop-chromium-darwin.png +0 -0
  15. package/app/components/01.atoms/content-wrappers/docs-pages/playwright/content-docs.playwright.ts-snapshots/state-mobile-chromium-darwin.png +0 -0
  16. package/app/components/01.atoms/content-wrappers/docs-pages/playwright/content-docs.playwright.ts-snapshots/state-tablet-chromium-darwin.png +0 -0
  17. package/app/components/01.atoms/content-wrappers/docs-pages/stories/ContentDocs.stories.ts +172 -0
  18. package/app/components/01.atoms/content-wrappers/docs-pages/tests/ContentDocs.spec.ts +218 -0
  19. package/app/components/02.molecules/expandable/expanding-panel/CONSUMER-STYLING.md +103 -0
  20. package/app/components/02.molecules/expandable/expanding-panel/ExpandingPanel.vue +97 -56
  21. package/app/components/02.molecules/expandable/expanding-panel/stories/ExpandingPanel.stories.ts +50 -2
  22. package/app/components/02.molecules/expandable/expanding-panel/tests/ExpandingPanel.spec.ts +79 -2
  23. package/app/components/02.molecules/expandable/expanding-panel/tests/__snapshots__/ExpandingPanel.spec.ts.snap +25 -4
  24. package/app/components/02.molecules/pricing-card/CONSUMER-STYLING.md +4 -0
  25. package/app/components/02.molecules/pricing-card/PricingCard.vue +5 -2
  26. package/app/components/02.molecules/pricing-card/tests/PricingCard.spec.ts +15 -1
  27. package/app/components/layout-grids/LayoutGridA.vue +59 -59
  28. package/app/composables/tests/useContainerBreakpoints.spec.ts +91 -0
  29. package/app/composables/useContainerBreakpoints.ts +71 -0
  30. package/app/layouts/default.vue +1 -0
  31. package/app/pages/ui/expanding-panel.vue +266 -129
  32. package/app/pages/ui/layout-content-docs.vue +72 -0
  33. package/app/pages/ui/layout-grid-a.vue +5 -58
  34. package/app/types/components/content-docs.d.ts +5 -0
  35. package/app/types/components/index.ts +1 -0
  36. package/package.json +1 -1
@@ -2,134 +2,142 @@
2
2
  <div>
3
3
  <NuxtLayout name="default">
4
4
  <template #layout-content>
5
- <PageRow tag="div" variant="full" :style-class-passthrough="['expanding-panel-section', 'mbe-20']">
6
- <h1 class="page-heading-2">Details element - Unlinked</h1>
7
- <p class="mbe-12">Following 2 details block behave independantly.</p>
8
-
9
- <ExpandingPanel :animation-duration="300" icon-size="medium" :style-class-passthrough="['custom-style-1']">
10
- <template #summary>
11
- <h3 class="page-heading-3 mb-2">Expander Panel 1 (Fast)</h3>
12
- </template>
13
- <template #icon>
14
- <Icon name="bi:caret-down-fill" class="icon" />
15
- </template>
16
- <template #content>
17
- <div>
18
- <p class="mt-0">Details content</p>
19
- <p>Details content</p>
20
- <p>Details content</p>
21
- <p>Details content</p>
22
- <p>Details content</p>
23
- </div>
24
- </template>
25
- </ExpandingPanel>
26
-
27
- <ExpandingPanel :animation-duration="2000" icon-size="medium" :style-class-passthrough="['custom-style-2']">
28
- <template #summary>
29
- <h3 class="page-heading-3 mb-2">Expander Panel 2 (Slow)</h3>
30
- </template>
31
- <template #icon>
32
- <Icon name="bi:caret-down-fill" class="icon" />
33
- </template>
34
- <template #content>
35
- <div>
36
- <p class="mt-0">Details content</p>
37
- <p>Details content</p>
38
- <p>Details content</p>
39
- <p>Details content</p>
40
- <p>Details content</p>
41
- </div>
42
- </template>
43
- </ExpandingPanel>
44
- </PageRow>
5
+ <PageRow tag="div" variant="content" :style-class-passthrough="['expanding-panel-section', 'mb-20']">
6
+ <!-- ── QA Panel ─────────────────────────────────────────────── -->
7
+ <div class="qa-panel">
8
+ <details class="qa-panel__details" open>
9
+ <summary class="qa-panel__summary">
10
+ <span class="qa-panel__title">QA — ExpandingPanel</span>
11
+ <code class="qa-panel__status">
12
+ duration:{{ qaAnimationDuration }}ms · forceOpened:{{ qaForceOpened }} · contentIsOnTop:{{
13
+ qaContentIsOnTop
14
+ }}
15
+ · linked:{{ qaLinked }}
16
+ </code>
17
+ </summary>
18
+ <div class="qa-panel__body">
19
+ <div class="qa-panel__group">
20
+ <span class="qa-panel__label">Animation Duration</span>
21
+ <div class="qa-panel__chips">
22
+ <button
23
+ v-for="d in animationDurations"
24
+ :key="d"
25
+ class="qa-panel__chip"
26
+ :class="{ 'is-active': qaAnimationDuration === d }"
27
+ @click="qaAnimationDuration = d"
28
+ >
29
+ {{ d }}ms
30
+ </button>
31
+ </div>
32
+ </div>
45
33
 
46
- <PageRow tag="div" variant="full" :style-class-passthrough="['expanding-panel-section', 'mbe-20', 'hidden']">
47
- <h2 class="page-heading-2">Details element - Linked</h2>
48
- <p class="mbe-12">Details panels are linked, only 1 can be open at a time.</p>
49
-
50
- <ExpandingPanel
51
- :animation-duration="300"
52
- name="details-linked"
53
- icon-size="medium"
54
- :style-class-passthrough="['linked']"
55
- >
56
- <template #summary>
57
- <h3 class="page-heading-3 mb-2">Expander Panel 1 Linked</h3>
58
- </template>
59
- <template #icon>
60
- <Icon name="bi:caret-down-fill" class="icon" />
61
- </template>
62
- <template #content>
63
- <div>
64
- <p class="mt-0">Details content</p>
65
- <p>Details content</p>
66
- <p>Details content</p>
67
- <p>Details content</p>
68
- <p>Details content</p>
69
- </div>
70
- </template>
71
- </ExpandingPanel>
72
-
73
- <ExpandingPanel
74
- :animation-duration="300"
75
- name="details-linked"
76
- icon-size="medium"
77
- :style-class-passthrough="['linked']"
78
- >
79
- <template #summary>
80
- <h3 class="page-heading-3 mb-2">Expander Panel 2 Linked</h3>
81
- </template>
82
- <template #icon>
83
- <Icon name="bi:caret-down-fill" class="icon" />
84
- </template>
85
- <template #content>
86
- <div>
87
- <p class="mt-0">Details content</p>
88
- <p>Details content</p>
89
- <p>Details content</p>
90
- <p>Details content</p>
91
- <p>Details content</p>
34
+ <div class="qa-panel__group">
35
+ <span class="qa-panel__label">Force Opened</span>
36
+ <div class="qa-panel__chips">
37
+ <button
38
+ class="qa-panel__chip"
39
+ :class="{ 'is-active': !qaForceOpened }"
40
+ @click="qaForceOpened = false"
41
+ >
42
+ off
43
+ </button>
44
+ <button
45
+ class="qa-panel__chip"
46
+ :class="{ 'is-active': qaForceOpened }"
47
+ @click="qaForceOpened = true"
48
+ >
49
+ on
50
+ </button>
51
+ </div>
52
+ </div>
53
+
54
+ <div class="qa-panel__group">
55
+ <span class="qa-panel__label">Content Is On Top</span>
56
+ <div class="qa-panel__chips">
57
+ <button
58
+ class="qa-panel__chip"
59
+ :class="{ 'is-active': !qaContentIsOnTop }"
60
+ @click="qaContentIsOnTop = false"
61
+ >
62
+ off
63
+ </button>
64
+ <button
65
+ class="qa-panel__chip"
66
+ :class="{ 'is-active': qaContentIsOnTop }"
67
+ @click="qaContentIsOnTop = true"
68
+ >
69
+ on
70
+ </button>
71
+ </div>
72
+ </div>
73
+
74
+ <div class="qa-panel__group">
75
+ <span class="qa-panel__label">Linked (shared name)</span>
76
+ <div class="qa-panel__chips">
77
+ <button class="qa-panel__chip" :class="{ 'is-active': !qaLinked }" @click="qaLinked = false">
78
+ off
79
+ </button>
80
+ <button class="qa-panel__chip" :class="{ 'is-active': qaLinked }" @click="qaLinked = true">
81
+ on
82
+ </button>
83
+ </div>
84
+ </div>
92
85
  </div>
93
- </template>
94
- </ExpandingPanel>
86
+ </details>
87
+ </div>
95
88
  </PageRow>
96
89
 
97
- <PageRow tag="div" variant="full" :style-class-passthrough="['expanding-panel-section', 'mbe-20']">
98
- <h1 class="page-heading-2">Details element - forceOpened</h1>
99
- <p class="page-body-normal">Will be displayed as force opened via prop forceOpened</p>
100
- <p class="page-body-normal">Also contains a button and link within content which toggles to closed</p>
101
- <p class="mbe-12">
102
- <button class="btn btn-primary" @click="forceOpened = !forceOpened">
103
- Toggle forceOpened (currently: {{ forceOpened }})
104
- </button>
105
- </p>
106
-
107
- <ExpandingPanel v-model="isPanelOpen" :animation-duration="300" icon-size="medium" :force-opened>
108
- <template #summary>
109
- <h3 class="page-heading-3 mb-2">Expander Panel Force Opened</h3>
110
- </template>
111
- <template #icon>
112
- <Icon name="bi:caret-down-fill" class="icon" />
113
- </template>
114
- <template #content>
115
- <div>
116
- <p class="mt-0">Details content with test link and button</p>
117
- <p>
118
- <button @click.prevent="closePanel()" @keydown.enter="closePanel()">
119
- Close via reactive binding
120
- </button>
121
- </p>
122
- <p>
123
- <a href="#forceClose" @click="closePanel()" @keydown.enter="closePanel()" class="page-link-normal">
124
- Close via ref
125
- </a>
126
- </p>
127
- <p>Details content</p>
128
- <p>Details content</p>
129
- <p>Details content</p>
130
- </div>
131
- </template>
132
- </ExpandingPanel>
90
+ <PageRow tag="div" variant="content" :style-class-passthrough="['qa-panel__preview']">
91
+ <section class="qa-panel__preview">
92
+ <h2 class="page-heading-3">Interactive preview</h2>
93
+ <div style="position: relative">
94
+ <ExpandingPanel
95
+ v-model="qaOpen1"
96
+ :name="qaPanel1Name"
97
+ :animation-duration="qaAnimationDuration"
98
+ :force-opened="qaForceOpened"
99
+ :content-is-on-top="qaContentIsOnTop"
100
+ :style-class-passthrough="['qa-preview-panel']"
101
+ >
102
+ <template #summary>
103
+ <h3 class="page-heading-3 mb-2">Interactive preview panel 1</h3>
104
+ </template>
105
+ <template #content>
106
+ <!-- Wrapper INSIDE the slot carries visual styling — never .inner itself,
107
+ see .claude/skills/components/expanding-panel.md for why -->
108
+ <div class="qa-preview-panel-body">
109
+ <p class="mt-0">Content driven by the controls above.</p>
110
+ <p class="mb-0">
111
+ Toggle "Content Is On Top" to see it overlay the text below instead of pushing it down.
112
+ </p>
113
+ </div>
114
+ </template>
115
+ </ExpandingPanel>
116
+
117
+ <!-- When "Linked" is on, this shares its name with panel 1 above, grouping them
118
+ into a native accordion (only one open at a time). -->
119
+ <ExpandingPanel
120
+ v-model="qaOpen2"
121
+ :name="qaPanel2Name"
122
+ :animation-duration="qaAnimationDuration"
123
+ :force-opened="qaForceOpened"
124
+ :content-is-on-top="qaContentIsOnTop"
125
+ :style-class-passthrough="['qa-preview-panel']"
126
+ >
127
+ <template #summary>
128
+ <h3 class="page-heading-3 mb-2">Interactive preview panel 2</h3>
129
+ </template>
130
+ <template #content>
131
+ <div class="qa-preview-panel-body">
132
+ <p class="mt-0">When "Linked" is on, opening this panel closes panel 1, and vice versa.</p>
133
+ <p class="mb-0">Also driven by the controls above.</p>
134
+ </div>
135
+ </template>
136
+ </ExpandingPanel>
137
+
138
+ <p class="mbs-16">Page content below the preview panel — stays in place when contentIsOnTop is on.</p>
139
+ </div>
140
+ </section>
133
141
  </PageRow>
134
142
  </template>
135
143
  </NuxtLayout>
@@ -149,14 +157,32 @@ useHead({
149
157
  content: "Meta description content",
150
158
  },
151
159
  ],
160
+ bodyAttrs: {
161
+ class: "ui-expanding-panel-page",
162
+ },
152
163
  });
153
164
 
154
- const forceOpened = ref(false);
155
- const isPanelOpen = ref(false);
165
+ const animationDurations = [0, 300, 800] as const;
166
+ type AnimationDuration = (typeof animationDurations)[number];
156
167
 
157
- const closePanel = () => {
158
- isPanelOpen.value = false;
159
- };
168
+ const qaAnimationDuration = ref<AnimationDuration>(300);
169
+ const qaForceOpened = ref(false);
170
+ const qaContentIsOnTop = ref(false);
171
+ const qaLinked = ref(false);
172
+ const qaOpen1 = ref(false);
173
+ const qaOpen2 = ref(false);
174
+
175
+ const qaPanel1Name = "qa-preview-1";
176
+ const qaPanel2Name = computed(() => (qaLinked.value ? qaPanel1Name : "qa-preview-2"));
177
+
178
+ // forceOpened only forces panels *open*; a panel's own isPanelOpen state is left untouched
179
+ // by the component (see expanding-panel skill notes), so toggling forceOpened off can leave
180
+ // a panel open or closed depending on hidden prior clicks. Reset both panels to a known,
181
+ // visible state on every toggle so the QA control always produces an obvious response.
182
+ watch(qaForceOpened, () => {
183
+ qaOpen1.value = false;
184
+ qaOpen2.value = false;
185
+ });
160
186
  </script>
161
187
 
162
188
  <style lang="css">
@@ -186,4 +212,115 @@ const closePanel = () => {
186
212
  }
187
213
  }
188
214
  }
215
+
216
+ .ui-expanding-panel-page {
217
+ .qa-panel {
218
+ background: oklch(15% 0 0);
219
+ color: white;
220
+ font-size: 1.3rem;
221
+ margin-block-end: 2rem;
222
+ }
223
+
224
+ .qa-panel__details {
225
+ padding: 1rem 2rem;
226
+ }
227
+
228
+ .qa-panel__summary {
229
+ cursor: pointer;
230
+ display: flex;
231
+ align-items: center;
232
+ gap: 1.6rem;
233
+ list-style: none;
234
+ user-select: none;
235
+
236
+ &::-webkit-details-marker {
237
+ display: none;
238
+ }
239
+ }
240
+
241
+ .qa-panel__title {
242
+ font-weight: 600;
243
+ font-size: 1.1rem;
244
+ text-transform: uppercase;
245
+ letter-spacing: 0.08em;
246
+ }
247
+
248
+ .qa-panel__status {
249
+ font-family: monospace;
250
+ font-size: 1.2rem;
251
+ background: oklch(0% 0 0 / 0.3);
252
+ padding: 0.2rem 0.8rem;
253
+ border-radius: 0.4rem;
254
+ user-select: text;
255
+ cursor: text;
256
+ }
257
+
258
+ .qa-panel__body {
259
+ display: flex;
260
+ flex-wrap: wrap;
261
+ gap: 2.4rem;
262
+ padding-block: 1.2rem 0.4rem;
263
+ }
264
+
265
+ .qa-panel__group {
266
+ display: flex;
267
+ flex-direction: column;
268
+ gap: 0.6rem;
269
+ }
270
+
271
+ .qa-panel__label {
272
+ font-size: 1.1rem;
273
+ text-transform: uppercase;
274
+ letter-spacing: 0.08em;
275
+ opacity: 0.55;
276
+ }
277
+
278
+ .qa-panel__chips {
279
+ display: flex;
280
+ flex-wrap: wrap;
281
+ gap: 0.4rem;
282
+ }
283
+
284
+ .qa-panel__chip {
285
+ font-family: monospace;
286
+ font-size: 1.2rem;
287
+ color: white;
288
+ background: oklch(0% 0 0 / 0.25);
289
+ border: 1px solid oklch(100% 0 0 / 0.18);
290
+ padding: 0.3rem 1rem;
291
+ border-radius: 0.4rem;
292
+ cursor: pointer;
293
+ transition: background 0.15s;
294
+
295
+ &:hover {
296
+ background: oklch(0% 0 0 / 0.4);
297
+ }
298
+
299
+ &.is-active {
300
+ background: oklch(55% 0.18 240);
301
+ border-color: oklch(55% 0.18 240);
302
+ }
303
+ }
304
+
305
+ .qa-panel__preview {
306
+ padding: 0 2rem 2rem;
307
+
308
+ .expanding-panel.qa-preview-panel {
309
+ --expanding-panel-content-z-index: 20;
310
+
311
+ + .expanding-panel.qa-preview-panel {
312
+ margin-block-start: 1rem;
313
+ }
314
+ }
315
+
316
+ .qa-preview-panel-body {
317
+ background-color: white;
318
+ color: black;
319
+ border: 1px solid oklch(0% 0 0 / 0.15);
320
+ border-radius: 0.4rem;
321
+ padding: 1rem;
322
+ box-shadow: 0 4px 12px rgb(0 0 0 / 15%);
323
+ }
324
+ }
325
+ }
189
326
  </style>
@@ -0,0 +1,72 @@
1
+ <template>
2
+ <div>
3
+ <NuxtLayout name="default">
4
+ <template #layout-content>
5
+ <PageRow tag="div" variant="content" :style-class-passthrough="['mbe-20']">
6
+ <h1 class="page-heading-2">Layout Content Docs</h1>
7
+
8
+ <CanvasSwitcher v-model:canvas-name="canvasName" />
9
+ </PageRow>
10
+
11
+ <PageRow tag="div" variant="content" :style-class-passthrough="['mbe-20']">
12
+ <div :class="[canvasName]">
13
+ <ContentDocs
14
+ v-model:active-nav-item="activeNavItem"
15
+ v-model:active-page-nav-item="activePageNavItem"
16
+ :docs-nav-items="docsNavItems"
17
+ :docs-page-nav-items="docsPageNavItems"
18
+ >
19
+ <template #docsContent>
20
+ <h3 class="page-heading-3">Docs Content</h3>
21
+ <p>
22
+ Mi nibh quisque taciti porta curabitur nostra volutpat. Habitant sodales arcu habitasse mi duis
23
+ conubia leo lacinia. Montes torquent sodales adipiscing; proin semper feugiat morbi ullamcorper
24
+ praesent. Arcu luctus tempor quam ligula vestibulum sapien faucibus ridiculus. Cursus consequat
25
+ ultricies consectetur class suscipit quisque convallis eget? Dignissim mattis luctus enim habitant
26
+ porta pretium litora. Parturient montes imperdiet massa; sollicitudin varius hac aptent. Eleifend
27
+ parturient mattis tellus nisi a montes.
28
+ </p>
29
+ </template>
30
+ </ContentDocs>
31
+ </div>
32
+ </PageRow>
33
+ </template>
34
+ </NuxtLayout>
35
+ </div>
36
+ </template>
37
+
38
+ <script setup lang="ts">
39
+ import type { MediaCanvas, DocsNavItem } from "~/types/components";
40
+ definePageMeta({
41
+ layout: false,
42
+ });
43
+
44
+ useHead({
45
+ title: "UI Layout Content Docs",
46
+ meta: [{ name: "description", content: "Examples of UI Component Layout Content Docs" }],
47
+ bodyAttrs: {
48
+ class: "content-docs-demo-page",
49
+ },
50
+ });
51
+
52
+ const canvasName = ref<MediaCanvas>("mobileCanvas");
53
+
54
+ const docsNavItems: DocsNavItem[] = [
55
+ { label: "Getting started", to: "/ui/layout-content-docs", icon: "lucide:rocket" },
56
+ { label: "Installation", to: "/ui/layout-content-docs#installation", icon: "lucide:download" },
57
+ { label: "Configuration", to: "/ui/layout-content-docs#configuration" },
58
+ { label: "Theming", to: "/ui/layout-content-docs#theming", icon: "lucide:palette" },
59
+ { label: "Accessibility", to: "/ui/layout-content-docs#accessibility" },
60
+ { label: "Troubleshooting", to: "/ui/layout-content-docs#troubleshooting", icon: "lucide:life-buoy" },
61
+ ];
62
+
63
+ const docsPageNavItems: DocsNavItem[] = [
64
+ { label: "Overview", to: "/ui/layout-content-docs#overview", icon: "lucide:eye" },
65
+ { label: "Examples", to: "/ui/layout-content-docs#examples" },
66
+ { label: "Props", to: "/ui/layout-content-docs#props", icon: "lucide:settings-2" },
67
+ { label: "Slots", to: "/ui/layout-content-docs#slots" },
68
+ ];
69
+
70
+ const activeNavItem = ref<string | undefined>(docsNavItems[0]?.to);
71
+ const activePageNavItem = ref<string | undefined>(undefined);
72
+ </script>
@@ -2,14 +2,14 @@
2
2
  <div>
3
3
  <NuxtLayout name="default">
4
4
  <template #layout-content>
5
- <PageRow tag="div" variant="full" :styleClassPassthrough="['mbe-20']">
5
+ <PageRow tag="div" variant="full" :style-class-passthrough="['mbe-20']">
6
6
  <h1 class="page-heading-2">Layout Grid 'A'</h1>
7
7
 
8
- <CanvasSwitcher v-model:canvasName="canvasName" />
8
+ <CanvasSwitcher v-model:canvas-name="canvasName" />
9
9
  </PageRow>
10
10
 
11
- <PageRow tag="div" variant="popout" :styleClassPassthrough="['mbe-20']">
12
- <LayoutGridA :styleClassPassthrough="[canvasName]">
11
+ <PageRow tag="div" variant="popout" :style-class-passthrough="['mbe-20']">
12
+ <LayoutGridA :style-class-passthrough="[canvasName]">
13
13
  <template #slot1>
14
14
  <h3 class="page-heading-3">Slot 1</h3>
15
15
  <p>
@@ -56,7 +56,7 @@
56
56
  </LayoutGridA>
57
57
  </PageRow>
58
58
 
59
- <PageRow tag="div" variant="full" :styleClassPassthrough="['mbe-20']">
59
+ <PageRow tag="div" variant="full" :style-class-passthrough="['mbe-20']">
60
60
  <h2 class="page-heading-2">Full Width</h2>
61
61
  <p>
62
62
  Lorem ipsum odor amet, consectetuer adipiscing elit. Nec elementum maecenas placerat laoreet curae elit
@@ -94,56 +94,3 @@ useHead({
94
94
 
95
95
  const canvasName = ref<MediaCanvas>("desktopCanvas");
96
96
  </script>
97
-
98
- <style lang="css">
99
- .canvas-switcher {
100
- display: flex;
101
- align-items: center;
102
- gap: 20px;
103
-
104
- ul {
105
- display: flex;
106
- gap: 10px;
107
- list-style-type: none;
108
- margin: 0;
109
- padding: 0;
110
-
111
- li {
112
- button {
113
- all: unset;
114
- display: flex;
115
- align-items: center;
116
- justify-content: center;
117
- padding: 5px;
118
- border: 0px solid light-dark(var(--slate-10), var(--slate-02));
119
- border-radius: 4px;
120
- cursor: pointer;
121
-
122
- .icon {
123
- color: light-dark(var(--slate-10), var(--slate-02));
124
-
125
- width: 24px;
126
- height: 24px;
127
-
128
- &.current {
129
- color: light-dark(var(--green-10), var(--green-04));
130
- }
131
- }
132
- }
133
- }
134
- }
135
- }
136
-
137
- .layout-grid-a-wrapper {
138
- margin-inline: auto;
139
- &.mobile {
140
- max-width: 412px;
141
- }
142
- &.tablet {
143
- max-width: 768px;
144
- }
145
- &.desktop {
146
- max-width: 1060px;
147
- }
148
- }
149
- </style>
@@ -0,0 +1,5 @@
1
+ export interface DocsNavItem {
2
+ label: string;
3
+ to: string;
4
+ icon?: string;
5
+ }
@@ -13,3 +13,4 @@ export * from "./alert-mask-core.d"
13
13
  export * from "./hero-text"
14
14
  export * from "./navigation-horizontal.d"
15
15
  export * from "./social-icons-list.d"
16
+ export * from "./content-docs.d"
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "srcdev-nuxt-components",
3
3
  "type": "module",
4
- "version": "9.2.4",
4
+ "version": "9.2.6",
5
5
  "main": "nuxt.config.ts",
6
6
  "types": "types.d.ts",
7
7
  "license": "MIT",