srcdev-nuxt-components 9.3.7 → 9.3.8
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/hooks/check-component-update.sh +30 -1
- package/.claude/skills/components/breadcrumb.md +49 -0
- package/.claude/skills/components/content-docs.md +1 -1
- package/.claude/skills/components/service-detail.md +156 -0
- package/.claude/skills/components/services-card-grid.md +9 -9
- package/.claude/skills/components/services-card.md +82 -30
- package/.claude/skills/index.md +3 -1
- package/.claude/skills/qa-panel.md +2 -2
- package/.vscode/srcdev-component-breadcrumb.code-snippets +14 -0
- package/.vscode/srcdev-component-service-detail.code-snippets +49 -0
- package/.vscode/srcdev-component-services-card.code-snippets +108 -0
- package/app/components/01.atoms/navigation/breadcrumb/Breadcrumb.vue +94 -0
- package/app/components/01.atoms/navigation/breadcrumb/CONSUMER-STYLING.md +32 -0
- package/app/components/01.atoms/navigation/breadcrumb/stories/Breadcrumb.stories.ts +87 -0
- package/app/components/01.atoms/navigation/breadcrumb/tests/Breadcrumb.spec.ts +87 -0
- package/app/components/01.atoms/navigation/breadcrumb/tests/__snapshots__/Breadcrumb.spec.ts.snap +13 -0
- package/app/components/03.organisms/services/service-detail/CONSUMER-STYLING.md +181 -0
- package/app/components/03.organisms/services/service-detail/ServiceDetail.vue +480 -0
- package/app/components/03.organisms/services/service-detail/stories/ServiceDetail.stories.ts +282 -0
- package/app/components/03.organisms/services/service-detail/tests/ServiceDetail.spec.ts +270 -0
- package/app/components/03.organisms/services/service-detail/tests/__snapshots__/ServiceDetail.spec.ts.snap +99 -0
- package/app/components/03.organisms/services/services-card/CONSUMER-STYLING.md +129 -0
- package/app/components/03.organisms/services/services-card/ServicesCard.vue +153 -39
- package/app/components/03.organisms/services/services-card/stories/ServicesCard.stories.ts +65 -0
- package/app/components/03.organisms/services/services-card/tests/ServicesCard.spec.ts +82 -0
- package/app/components/03.organisms/services/services-card/tests/__snapshots__/ServicesCard.spec.ts.snap +13 -5
- package/app/components/03.organisms/services/services-grids/ServicesCardGrid.vue +3 -7
- package/app/components/03.organisms/services/services-grids/stories/ServicesCardGrid.stories.ts +126 -2
- package/app/components/03.organisms/services/services-grids/stories/ServicesSectionGrid.stories.ts +6 -0
- package/app/components/03.organisms/services/services-grids/tests/__snapshots__/ServicesCardGrid.spec.ts.snap +51 -27
- package/app/types/components/breadcrumb.ts +4 -0
- package/app/types/components/index.ts +1 -0
- package/package.json +2 -2
- package/app/pages/auto-grid.vue +0 -328
- package/app/pages/banner-video.vue +0 -238
- package/app/pages/forms/examples/buttons/index.vue +0 -259
- package/app/pages/forms/examples/material/checkbox-radio-panels.vue +0 -244
- package/app/pages/forms/examples/material/cssbattle.vue +0 -60
- package/app/pages/forms/examples/material/text-fields.vue +0 -910
- package/app/pages/grid-stack.vue +0 -252
- package/app/pages/index.vue +0 -127
- package/app/pages/page-hero-highlights.vue +0 -204
- package/app/pages/samaritan.vue +0 -327
- package/app/pages/typography/hero-text.vue +0 -97
- package/app/pages/typography/index.vue +0 -39
- package/app/pages/typography/page-body.vue +0 -171
- package/app/pages/typography/page-heading.vue +0 -76
- package/app/pages/typography/page-link.vue +0 -103
- package/app/pages/ui/accordian.vue +0 -211
- package/app/pages/ui/anchor-scroll-tab-navigation.vue +0 -191
- package/app/pages/ui/anchor-scroll.vue +0 -367
- package/app/pages/ui/animated-svg-text.vue +0 -85
- package/app/pages/ui/block-decorators.vue +0 -142
- package/app/pages/ui/card-core.vue +0 -82
- package/app/pages/ui/carousel-basic.vue +0 -292
- package/app/pages/ui/carousel-flip.vue +0 -449
- package/app/pages/ui/carousel-infinite.vue +0 -260
- package/app/pages/ui/clipped-panels.vue +0 -101
- package/app/pages/ui/contact-section.vue +0 -323
- package/app/pages/ui/container-glow.vue +0 -106
- package/app/pages/ui/content-width.vue +0 -126
- package/app/pages/ui/deep-expanding-menu.vue +0 -138
- package/app/pages/ui/display-avatar.vue +0 -253
- package/app/pages/ui/display-banner.vue +0 -78
- package/app/pages/ui/display-chip.vue +0 -367
- package/app/pages/ui/display-details.vue +0 -171
- package/app/pages/ui/display-dialog.vue +0 -344
- package/app/pages/ui/display-pill.vue +0 -396
- package/app/pages/ui/display-prompt.vue +0 -284
- package/app/pages/ui/display-toast.vue +0 -311
- package/app/pages/ui/expanding-panel.vue +0 -326
- package/app/pages/ui/glowing-border.vue +0 -111
- package/app/pages/ui/layout-content-docs.vue +0 -72
- package/app/pages/ui/layout-grid-a.vue +0 -96
- package/app/pages/ui/layout-grid-b.vue +0 -132
- package/app/pages/ui/magnetic-navigation.vue +0 -50
- package/app/pages/ui/marquee-scroller.vue +0 -99
- package/app/pages/ui/mask-element.vue +0 -104
- package/app/pages/ui/masonry-columns.vue +0 -55
- package/app/pages/ui/masonry-grid-ordered-experiment.vue +0 -79
- package/app/pages/ui/masonry-grid-ordered.vue +0 -56
- package/app/pages/ui/masonry-grid-sorted.vue +0 -55
- package/app/pages/ui/masonry-grid.vue +0 -55
- package/app/pages/ui/navigation/navigation-horizontal.vue +0 -484
- package/app/pages/ui/navigation/site-navigation/about.vue +0 -36
- package/app/pages/ui/navigation/site-navigation/contact.vue +0 -39
- package/app/pages/ui/navigation/site-navigation/index.vue +0 -38
- package/app/pages/ui/navigation/site-navigation/portfolio.vue +0 -43
- package/app/pages/ui/navigation/site-navigation/services.vue +0 -42
- package/app/pages/ui/navigation/tab-navigation.vue +0 -493
- package/app/pages/ui/page-row.vue +0 -127
- package/app/pages/ui/price-list.vue +0 -65
- package/app/pages/ui/profile-section.vue +0 -142
- package/app/pages/ui/qr-code/[componentName].vue +0 -218
- package/app/pages/ui/rotating-carousel.vue +0 -154
- package/app/pages/ui/scroll-reveal-image.vue +0 -483
- package/app/pages/ui/section-parallax.vue +0 -54
- package/app/pages/ui/services/colour-finder.vue +0 -43
- package/app/pages/ui/services/services-cards.vue +0 -57
- package/app/pages/ui/services/services-section/[slug].vue +0 -61
- package/app/pages/ui/services/services-sections-compact.vue +0 -64
- package/app/pages/ui/settings.vue +0 -54
- package/app/pages/ui/simple-grid.vue +0 -55
- package/app/pages/ui/slider-gallery.vue +0 -261
- package/app/pages/ui/tabs-y.vue +0 -107
- package/app/pages/ui/tabs.vue +0 -189
- package/app/pages/ui/tooltips.vue +0 -104
- package/app/pages/ui/wipe-away-vertical.vue +0 -129
|
@@ -1,344 +0,0 @@
|
|
|
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">Display Dialog</h1>
|
|
7
|
-
|
|
8
|
-
<div v-if="isDev" class="qa-panel">
|
|
9
|
-
<details class="qa-panel__details">
|
|
10
|
-
<summary class="qa-panel__summary">
|
|
11
|
-
<span class="qa-panel__title">QA — DisplayDialog</span>
|
|
12
|
-
<code class="qa-panel__status">
|
|
13
|
-
{{ qaVariant }} · {{ qaTheme ?? "no theme" }}
|
|
14
|
-
</code>
|
|
15
|
-
</summary>
|
|
16
|
-
<div class="qa-panel__body">
|
|
17
|
-
<div class="qa-panel__group">
|
|
18
|
-
<span class="qa-panel__label">Variant</span>
|
|
19
|
-
<div class="qa-panel__chips">
|
|
20
|
-
<button
|
|
21
|
-
v-for="opt in variants"
|
|
22
|
-
:key="opt"
|
|
23
|
-
class="qa-panel__chip"
|
|
24
|
-
:class="{ 'is-active': qaVariant === opt }"
|
|
25
|
-
@click="qaVariant = opt"
|
|
26
|
-
>
|
|
27
|
-
{{ opt }}
|
|
28
|
-
</button>
|
|
29
|
-
</div>
|
|
30
|
-
</div>
|
|
31
|
-
|
|
32
|
-
<div class="qa-panel__group">
|
|
33
|
-
<span class="qa-panel__label">Theme</span>
|
|
34
|
-
<div class="qa-panel__chips">
|
|
35
|
-
<button
|
|
36
|
-
v-for="opt in themes"
|
|
37
|
-
:key="String(opt)"
|
|
38
|
-
class="qa-panel__chip"
|
|
39
|
-
:class="{ 'is-active': qaTheme === opt }"
|
|
40
|
-
@click="qaTheme = opt"
|
|
41
|
-
>
|
|
42
|
-
{{ opt ?? "none" }}
|
|
43
|
-
</button>
|
|
44
|
-
</div>
|
|
45
|
-
</div>
|
|
46
|
-
</div>
|
|
47
|
-
</details>
|
|
48
|
-
</div>
|
|
49
|
-
|
|
50
|
-
<p>
|
|
51
|
-
<button type="button" @click.prevent="openDialog('demo')">Open Dialog</button>
|
|
52
|
-
</p>
|
|
53
|
-
|
|
54
|
-
<DisplayDialog
|
|
55
|
-
v-if="dialogsConfig['demo']"
|
|
56
|
-
v-model="dialogsConfig['demo']"
|
|
57
|
-
:variant="qaVariant"
|
|
58
|
-
:theme="qaTheme"
|
|
59
|
-
:allow-content-scroll="qaVariant === 'dialog'"
|
|
60
|
-
data-dialog-id="demo"
|
|
61
|
-
>
|
|
62
|
-
<template #dialogTitle>
|
|
63
|
-
<p class="text-normal wght-700 m-0">{{ dialogTitle }}</p>
|
|
64
|
-
</template>
|
|
65
|
-
|
|
66
|
-
<template #dialogContent>
|
|
67
|
-
<div class="pt-12 pb-12">
|
|
68
|
-
<p class="text-normal">{{ dialogBody }}</p>
|
|
69
|
-
<template v-if="qaVariant === 'dialog'">
|
|
70
|
-
<p class="text-normal">
|
|
71
|
-
Justo molestie felis tellus tellus taciti? Ullamcorper viverra quis felis donec aliquam torquent
|
|
72
|
-
imperdiet. Curabitur vitae quis malesuada imperdiet hendrerit felis quam dictum. Aptent curabitur
|
|
73
|
-
lacus dapibus; nunc enim vestibulum finibus. Lorem commodo tortor blandit nisl curabitur interdum
|
|
74
|
-
ultricies magnis.
|
|
75
|
-
</p>
|
|
76
|
-
<p class="text-normal">
|
|
77
|
-
Lobortis efficitur enim litora dictum montes. Sagittis eget etiam curae suspendisse cubilia. Ante
|
|
78
|
-
aliquam orci mus ultricies nostra. Ad augue quam egestas ipsum sem lacus tempus. Magnis enim posuere
|
|
79
|
-
eros montes fermentum velit.
|
|
80
|
-
</p>
|
|
81
|
-
<p class="text-normal">
|
|
82
|
-
Venenatis adipiscing integer eget donec ridiculus risus. Nulla quis sollicitudin sem nam bibendum
|
|
83
|
-
ligula. Curabitur malesuada platea egestas venenatis in torquent. Eget eros euismod vehicula consequat
|
|
84
|
-
at, efficitur ullamcorper.
|
|
85
|
-
</p>
|
|
86
|
-
</template>
|
|
87
|
-
</div>
|
|
88
|
-
</template>
|
|
89
|
-
|
|
90
|
-
<template #actionButtonLeft>
|
|
91
|
-
<button type="button" @click.prevent="closeDialog('demo', 'cancel')">Cancel</button>
|
|
92
|
-
</template>
|
|
93
|
-
<template #actionButtonRight>
|
|
94
|
-
<button type="button" @click.prevent="closeDialog('demo', 'confirm')">{{ confirmLabel }}</button>
|
|
95
|
-
</template>
|
|
96
|
-
</DisplayDialog>
|
|
97
|
-
</PageRow>
|
|
98
|
-
|
|
99
|
-
<PageRow tag="div" variant="content" :style-class-passthrough="['mbe-20']">
|
|
100
|
-
<h2 class="page-heading-2">Nested dialog pattern</h2>
|
|
101
|
-
<p class="text-normal">
|
|
102
|
-
A dialog managing its own internal confirm sub-dialog via a local
|
|
103
|
-
<code>useDialogControls</code> instance. Tick "Simulate unsaved changes" before
|
|
104
|
-
clicking Cancel to trigger the nested confirm.
|
|
105
|
-
</p>
|
|
106
|
-
<p>
|
|
107
|
-
<button type="button" @click.prevent="openNestedDialog('editProfile')">Open nested dialog demo</button>
|
|
108
|
-
</p>
|
|
109
|
-
|
|
110
|
-
<DisplayDialog
|
|
111
|
-
v-if="nestedDialogsConfig['editProfile']"
|
|
112
|
-
v-model="nestedDialogsConfig['editProfile']"
|
|
113
|
-
variant="dialog"
|
|
114
|
-
data-dialog-id="nested-edit"
|
|
115
|
-
>
|
|
116
|
-
<template #dialogTitle>
|
|
117
|
-
<p class="text-normal wght-700 m-0">Edit profile</p>
|
|
118
|
-
</template>
|
|
119
|
-
<template #dialogContent>
|
|
120
|
-
<div class="pt-12 pb-12 nested-demo-content">
|
|
121
|
-
<p class="text-normal">Make some changes below, then click Cancel to trigger the nested confirm dialog.</p>
|
|
122
|
-
<label class="nested-demo-label">
|
|
123
|
-
<input v-model="nestedHasChanges" type="checkbox" />
|
|
124
|
-
Simulate unsaved changes
|
|
125
|
-
</label>
|
|
126
|
-
</div>
|
|
127
|
-
</template>
|
|
128
|
-
<template #actionButtonLeft>
|
|
129
|
-
<button type="button" @click="handleNestedCancel">Cancel</button>
|
|
130
|
-
</template>
|
|
131
|
-
<template #actionButtonRight>
|
|
132
|
-
<button type="button" @click="closeNestedDialog('editProfile', 'confirm')">Save</button>
|
|
133
|
-
</template>
|
|
134
|
-
</DisplayDialog>
|
|
135
|
-
|
|
136
|
-
<DisplayDialog
|
|
137
|
-
v-if="nestedDialogsConfig['confirmDiscard']"
|
|
138
|
-
v-model="nestedDialogsConfig['confirmDiscard']"
|
|
139
|
-
variant="confirm"
|
|
140
|
-
theme="warning"
|
|
141
|
-
:lock-viewport="false"
|
|
142
|
-
data-dialog-id="nested-confirm"
|
|
143
|
-
>
|
|
144
|
-
<template #dialogTitle>
|
|
145
|
-
<p class="text-normal wght-700 m-0">Discard changes?</p>
|
|
146
|
-
</template>
|
|
147
|
-
<template #dialogContent>
|
|
148
|
-
<div class="m-0">
|
|
149
|
-
<p class="text-normal">Your unsaved changes will be lost.</p>
|
|
150
|
-
</div>
|
|
151
|
-
</template>
|
|
152
|
-
<template #actionButtonLeft>
|
|
153
|
-
<button type="button" @click="closeNestedDialog('confirmDiscard', 'cancel')">Keep editing</button>
|
|
154
|
-
</template>
|
|
155
|
-
<template #actionButtonRight>
|
|
156
|
-
<button type="button" @click="closeNestedDialog('confirmDiscard', 'confirm')">Discard</button>
|
|
157
|
-
</template>
|
|
158
|
-
</DisplayDialog>
|
|
159
|
-
</PageRow>
|
|
160
|
-
</template>
|
|
161
|
-
</NuxtLayout>
|
|
162
|
-
</div>
|
|
163
|
-
</template>
|
|
164
|
-
|
|
165
|
-
<script setup lang="ts">
|
|
166
|
-
import type { SemanticTheme } from "~/types/components";
|
|
167
|
-
|
|
168
|
-
definePageMeta({ layout: false });
|
|
169
|
-
|
|
170
|
-
useHead({
|
|
171
|
-
title: "UI Dialogs",
|
|
172
|
-
meta: [{ name: "description", content: "Examples of Dialogs" }],
|
|
173
|
-
bodyAttrs: { class: "displayDialog-page" },
|
|
174
|
-
});
|
|
175
|
-
|
|
176
|
-
const isDev = import.meta.dev;
|
|
177
|
-
|
|
178
|
-
const variants = ["dialog", "modal", "confirm", "alert", "fullscreen"] as const;
|
|
179
|
-
type DialogVariant = (typeof variants)[number];
|
|
180
|
-
|
|
181
|
-
const themes = [undefined, "info", "success", "warning", "error"] as const;
|
|
182
|
-
|
|
183
|
-
const qaVariant = ref<DialogVariant>("confirm");
|
|
184
|
-
const qaTheme = ref<SemanticTheme | undefined>(undefined);
|
|
185
|
-
|
|
186
|
-
const dialogTitle = computed(() => {
|
|
187
|
-
if (qaTheme.value === "error") return "Delete account?";
|
|
188
|
-
if (qaTheme.value === "warning") return "Confirm action";
|
|
189
|
-
if (qaVariant.value === "dialog") return "Dialog with scrollable content";
|
|
190
|
-
if (qaVariant.value === "confirm") return "Confirm logout?";
|
|
191
|
-
if (qaVariant.value === "alert") return "Alert — action required";
|
|
192
|
-
if (qaVariant.value === "fullscreen") return "Fullscreen dialog";
|
|
193
|
-
return "Dialog";
|
|
194
|
-
});
|
|
195
|
-
|
|
196
|
-
const dialogBody = computed(() => {
|
|
197
|
-
if (qaTheme.value === "error")
|
|
198
|
-
return "This action is permanent and cannot be undone. All your data will be removed.";
|
|
199
|
-
if (qaVariant.value === "alert")
|
|
200
|
-
return "Cannot be dismissed by clicking outside or pressing Escape — an explicit action is required.";
|
|
201
|
-
if (qaVariant.value === "fullscreen")
|
|
202
|
-
return "This dialog fills the entire viewport. Useful for immersive flows such as onboarding, image editors, or multi-step wizards.";
|
|
203
|
-
if (qaVariant.value === "dialog")
|
|
204
|
-
return "Lorem ipsum odor amet, consectetuer adipiscing elit. Scelerisque tincidunt vestibulum litora torquent aliquam a. Sem litora tellus mattis nisi vehicula sodales arcu egestas.";
|
|
205
|
-
return "Are you sure you want to continue? This will apply the selected action.";
|
|
206
|
-
});
|
|
207
|
-
|
|
208
|
-
const confirmLabel = computed(() => {
|
|
209
|
-
if (qaTheme.value === "error") return "Delete account";
|
|
210
|
-
if (qaVariant.value === "confirm") return "Log out";
|
|
211
|
-
return "Confirm";
|
|
212
|
-
});
|
|
213
|
-
|
|
214
|
-
const { dialogsConfig, openDialog, closeDialog } = useDialogControls({
|
|
215
|
-
demo: {
|
|
216
|
-
onConfirm: () => {},
|
|
217
|
-
onCancel: () => {},
|
|
218
|
-
},
|
|
219
|
-
});
|
|
220
|
-
|
|
221
|
-
const nestedHasChanges = ref(false);
|
|
222
|
-
|
|
223
|
-
const { dialogsConfig: nestedDialogsConfig, openDialog: openNestedDialog, closeDialog: closeNestedDialog } = useDialogControls({
|
|
224
|
-
editProfile: { onConfirm: () => {}, onCancel: () => {} },
|
|
225
|
-
confirmDiscard: {
|
|
226
|
-
onConfirm: () => { nestedDialogsConfig.editProfile = false; },
|
|
227
|
-
onCancel: () => {},
|
|
228
|
-
},
|
|
229
|
-
});
|
|
230
|
-
|
|
231
|
-
const handleNestedCancel = () => {
|
|
232
|
-
if (nestedHasChanges.value) {
|
|
233
|
-
openNestedDialog("confirmDiscard");
|
|
234
|
-
} else {
|
|
235
|
-
closeNestedDialog("editProfile", "cancel");
|
|
236
|
-
}
|
|
237
|
-
};
|
|
238
|
-
</script>
|
|
239
|
-
|
|
240
|
-
<style lang="css">
|
|
241
|
-
.displayDialog-page {
|
|
242
|
-
.qa-panel {
|
|
243
|
-
background: oklch(15% 0 0);
|
|
244
|
-
color: white;
|
|
245
|
-
font-size: 1.3rem;
|
|
246
|
-
margin-block: 1.2rem;
|
|
247
|
-
}
|
|
248
|
-
|
|
249
|
-
.qa-panel__details {
|
|
250
|
-
padding: 1rem 2rem;
|
|
251
|
-
}
|
|
252
|
-
|
|
253
|
-
.qa-panel__summary {
|
|
254
|
-
cursor: pointer;
|
|
255
|
-
display: flex;
|
|
256
|
-
align-items: center;
|
|
257
|
-
gap: 1.6rem;
|
|
258
|
-
list-style: none;
|
|
259
|
-
user-select: none;
|
|
260
|
-
|
|
261
|
-
&::-webkit-details-marker {
|
|
262
|
-
display: none;
|
|
263
|
-
}
|
|
264
|
-
}
|
|
265
|
-
|
|
266
|
-
.qa-panel__title {
|
|
267
|
-
font-weight: 600;
|
|
268
|
-
font-size: 1.1rem;
|
|
269
|
-
text-transform: uppercase;
|
|
270
|
-
letter-spacing: 0.08em;
|
|
271
|
-
}
|
|
272
|
-
|
|
273
|
-
.qa-panel__status {
|
|
274
|
-
font-family: monospace;
|
|
275
|
-
font-size: 1.2rem;
|
|
276
|
-
background: oklch(0% 0 0 / 0.3);
|
|
277
|
-
padding: 0.2rem 0.8rem;
|
|
278
|
-
border-radius: 0.4rem;
|
|
279
|
-
user-select: text;
|
|
280
|
-
cursor: text;
|
|
281
|
-
}
|
|
282
|
-
|
|
283
|
-
.qa-panel__body {
|
|
284
|
-
display: flex;
|
|
285
|
-
flex-wrap: wrap;
|
|
286
|
-
gap: 2.4rem;
|
|
287
|
-
padding-block: 1.2rem 0.4rem;
|
|
288
|
-
}
|
|
289
|
-
|
|
290
|
-
.qa-panel__group {
|
|
291
|
-
display: flex;
|
|
292
|
-
flex-direction: column;
|
|
293
|
-
gap: 0.6rem;
|
|
294
|
-
}
|
|
295
|
-
|
|
296
|
-
.qa-panel__label {
|
|
297
|
-
font-size: 1.1rem;
|
|
298
|
-
text-transform: uppercase;
|
|
299
|
-
letter-spacing: 0.08em;
|
|
300
|
-
opacity: 0.55;
|
|
301
|
-
}
|
|
302
|
-
|
|
303
|
-
.qa-panel__chips {
|
|
304
|
-
display: flex;
|
|
305
|
-
flex-wrap: wrap;
|
|
306
|
-
gap: 0.4rem;
|
|
307
|
-
}
|
|
308
|
-
|
|
309
|
-
.nested-demo-content {
|
|
310
|
-
display: flex;
|
|
311
|
-
flex-direction: column;
|
|
312
|
-
gap: 1.6rem;
|
|
313
|
-
}
|
|
314
|
-
|
|
315
|
-
.nested-demo-label {
|
|
316
|
-
display: flex;
|
|
317
|
-
align-items: center;
|
|
318
|
-
gap: 0.8rem;
|
|
319
|
-
cursor: pointer;
|
|
320
|
-
font-size: 1.4rem;
|
|
321
|
-
}
|
|
322
|
-
|
|
323
|
-
.qa-panel__chip {
|
|
324
|
-
font-family: monospace;
|
|
325
|
-
font-size: 1.2rem;
|
|
326
|
-
color: white;
|
|
327
|
-
background: oklch(0% 0 0 / 0.25);
|
|
328
|
-
border: 1px solid oklch(100% 0 0 / 0.18);
|
|
329
|
-
padding: 0.3rem 1rem;
|
|
330
|
-
border-radius: 0.4rem;
|
|
331
|
-
cursor: pointer;
|
|
332
|
-
transition: background 0.15s;
|
|
333
|
-
|
|
334
|
-
&:hover {
|
|
335
|
-
background: oklch(0% 0 0 / 0.4);
|
|
336
|
-
}
|
|
337
|
-
|
|
338
|
-
&.is-active {
|
|
339
|
-
background: oklch(55% 0.18 240);
|
|
340
|
-
border-color: oklch(55% 0.18 240);
|
|
341
|
-
}
|
|
342
|
-
}
|
|
343
|
-
}
|
|
344
|
-
</style>
|