srcdev-nuxt-components 9.1.49 → 9.1.51
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/settings.json +2 -4
- package/.claude/settings.local.json +22 -2
- package/.claude/skills/components/card-core.md +205 -0
- package/.claude/skills/components/display-dialog.md +128 -0
- package/.claude/skills/components/page-hero-highlights.md +1 -1
- package/.claude/skills/components/page-row.md +157 -0
- package/.claude/skills/components/services-card-grid.md +4 -4
- package/.claude/skills/components/services-section-grid.md +4 -4
- package/.claude/skills/components/tab-navigation.md +222 -0
- package/.claude/skills/composable-dialog-controls.md +55 -43
- package/.claude/skills/index.md +5 -2
- package/app/components/01.atoms/card/CONSUMER-STYLING.md +175 -0
- package/app/components/01.atoms/card/CardCore.vue +48 -21
- package/app/components/01.atoms/display-dialog/CONSUMER-STYLING.md +163 -0
- package/app/components/01.atoms/display-dialog/DisplayDialog.vue +277 -0
- package/app/components/01.atoms/display-dialog/stories/DisplayDialog.stories.ts +177 -0
- package/app/components/01.atoms/display-dialog/tests/DisplayDialog.spec.ts +264 -0
- package/app/components/01.atoms/display-dialog/tests/__snapshots__/DisplayDialog.spec.ts.snap +18 -0
- package/app/components/01.atoms/page-row/CONSUMER-STYLING.md +90 -0
- package/app/components/01.atoms/page-row/PageRow.vue +115 -0
- package/app/components/01.atoms/page-row/stories/PageRow.stories.ts +311 -0
- package/app/components/01.atoms/page-row/tests/PageRow.spec.ts +191 -0
- package/app/components/02.molecules/navigation/tab-navigation/CONSUMER-STYLING.md +145 -0
- package/app/components/02.molecules/navigation/tab-navigation/TabNavigation.vue +20 -9
- package/app/components/02.molecules/navigation/tab-navigation/tests/__snapshots__/TabNavigation.spec.ts.snap +12 -6
- package/app/components/{forms/ui → 05.forms/form-field}/FormField.vue +12 -19
- package/app/components/{forms/ui → 05.forms/form-wrapper}/FormWrapper.vue +6 -6
- package/app/components/{forms → 05.forms}/input-button/InputButtonCore.vue +2 -0
- package/app/components/{forms → 05.forms}/input-button/stories/InputButtonCore.stories.ts +1 -1
- package/app/components/{forms → 05.forms}/input-text/InputTextCore.vue +73 -73
- package/app/components/{forms → 05.forms}/input-text/variants/InputTextAsNumberWithLabel.vue +29 -29
- package/app/components/carousels/CarouselBasic.vue +99 -99
- package/app/components/carousels/CarouselInfinite.vue +150 -150
- package/app/components/deep-expanding-menu/DeepExpandingMenu.vue +111 -111
- package/app/components/responsive-header/ResponsiveHeader.vue +250 -282
- package/app/components/test-storybook/TestStorybook.vue +16 -16
- package/app/composables/tests/useDialogControls.spec.ts +34 -64
- package/app/composables/useDialogControls.ts +19 -33
- package/app/composables/useFormControl.ts +0 -2
- package/app/layouts/default.vue +9 -7
- package/app/pages/auto-grid.vue +37 -20
- package/app/pages/banner-video.vue +2 -2
- package/app/pages/forms/examples/buttons/index.vue +189 -215
- package/app/pages/forms/examples/material/text-fields.vue +2 -2
- package/app/pages/grid-stack.vue +10 -10
- package/app/pages/index.vue +20 -20
- package/app/pages/samaritan.vue +4 -4
- package/app/pages/typography/hero-text.vue +6 -6
- package/app/pages/typography/index.vue +4 -4
- package/app/pages/typography/page-body.vue +4 -4
- package/app/pages/typography/page-heading.vue +4 -4
- package/app/pages/typography/page-link.vue +4 -4
- package/app/pages/ui/accordian.vue +4 -4
- package/app/pages/ui/anchor-scroll-tab-navigation.vue +77 -66
- package/app/pages/ui/anchor-scroll.vue +94 -70
- package/app/pages/ui/animated-svg-text.vue +4 -4
- package/app/pages/ui/block-decorators.vue +11 -11
- package/app/pages/ui/card-core.vue +9 -9
- package/app/pages/ui/carousel-basic.vue +4 -4
- package/app/pages/ui/carousel-flip.vue +2 -2
- package/app/pages/ui/carousel-infinite.vue +4 -4
- package/app/pages/ui/clipped-panels.vue +10 -10
- package/app/pages/ui/contact-section.vue +4 -4
- package/app/pages/ui/container-glow.vue +2 -3
- package/app/pages/ui/deep-expanding-menu.vue +138 -0
- package/app/pages/ui/display-avatar.vue +2 -2
- package/app/pages/ui/display-banner.vue +2 -2
- package/app/pages/ui/display-chip.vue +32 -25
- package/app/pages/ui/display-details.vue +6 -10
- package/app/pages/ui/display-dialog.vue +96 -131
- package/app/pages/ui/display-pill.vue +27 -33
- package/app/pages/ui/display-prompt.vue +4 -4
- package/app/pages/ui/display-toast.vue +2 -2
- package/app/pages/ui/expanding-panel.vue +12 -16
- package/app/pages/ui/glowing-border.vue +12 -12
- package/app/pages/ui/layout-grid-a.vue +6 -6
- package/app/pages/ui/layout-grid-b.vue +4 -4
- package/app/pages/ui/magnetic-navigation.vue +6 -6
- package/app/pages/ui/marquee-scroller.vue +2 -2
- package/app/pages/ui/mask-element.vue +2 -2
- package/app/pages/ui/masonry-columns.vue +4 -4
- package/app/pages/ui/masonry-grid-ordered-experiment.vue +4 -4
- package/app/pages/ui/masonry-grid-ordered.vue +4 -4
- package/app/pages/ui/masonry-grid-sorted.vue +4 -4
- package/app/pages/ui/masonry-grid.vue +4 -4
- package/app/pages/ui/navigation/navigation-horizontal.vue +12 -12
- package/app/pages/ui/navigation/tab-navigation.vue +493 -0
- package/app/pages/ui/page-row.vue +127 -0
- package/app/pages/ui/price-list.vue +4 -4
- package/app/pages/ui/profile-section.vue +4 -4
- package/app/pages/ui/qr-code/[componentName].vue +6 -6
- package/app/pages/ui/rotating-carousel.vue +16 -16
- package/app/pages/ui/scroll-reveal-image.vue +20 -20
- package/app/pages/ui/section-parallax.vue +7 -7
- package/app/pages/ui/services/colour-finder.vue +4 -4
- package/app/pages/ui/services/services-cards.vue +4 -4
- package/app/pages/ui/services/services-section/[slug].vue +4 -4
- package/app/pages/ui/services/services-sections-compact.vue +6 -6
- package/app/pages/ui/settings.vue +10 -10
- package/app/pages/ui/simple-grid.vue +2 -2
- package/app/pages/ui/slider-gallery.vue +5 -5
- package/app/pages/ui/tabs-y.vue +2 -3
- package/app/pages/ui/tabs.vue +6 -9
- package/app/pages/ui/tooltips.vue +9 -9
- package/app/pages/ui/wipe-away-vertical.vue +14 -14
- package/package.json +1 -1
- package/.claude/skills/components/layout-row.md +0 -239
- package/app/components/display-dialog/DisplayDialogCore.vue +0 -276
- package/app/components/display-dialog/variants/DisplayDialogConfirm.vue +0 -47
- package/app/components/display-dialog/variants/DisplayDialogScrollableContent.vue +0 -51
- package/app/components/forms/c12/utils.ts +0 -14
- package/app/components/layout-row/LayoutRow.vue +0 -171
- package/app/components/layout-row/stories/LayoutRow.stories.ts +0 -528
- package/app/pages/ui/layout-row.vue +0 -139
- /package/app/components/{forms → 05.forms}/form-errors/InputError.vue +0 -0
- /package/app/components/{forms → 05.forms}/form-errors/tests/InputError.spec.ts +0 -0
- /package/app/components/{forms → 05.forms}/form-fieldset/FormFieldset.vue +0 -0
- /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts +0 -0
- /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/combo-icons-secondary-chromium-darwin.png +0 -0
- /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/combo-icons-secondary-firefox-darwin.png +0 -0
- /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/combo-icons-secondary-webkit-darwin.png +0 -0
- /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/combo-icons-tertiary-chromium-darwin.png +0 -0
- /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/combo-icons-tertiary-firefox-darwin.png +0 -0
- /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/combo-icons-tertiary-webkit-darwin.png +0 -0
- /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/combo-primary-pending-chromium-darwin.png +0 -0
- /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/combo-primary-pending-firefox-darwin.png +0 -0
- /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/combo-primary-pending-webkit-darwin.png +0 -0
- /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/combo-secondary-pill-chromium-darwin.png +0 -0
- /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/combo-secondary-pill-firefox-darwin.png +0 -0
- /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/combo-secondary-pill-webkit-darwin.png +0 -0
- /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/combo-tertiary-readonly-chromium-darwin.png +0 -0
- /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/combo-tertiary-readonly-firefox-darwin.png +0 -0
- /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/combo-tertiary-readonly-webkit-darwin.png +0 -0
- /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/default-chromium-darwin.png +0 -0
- /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/default-firefox-darwin.png +0 -0
- /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/default-theme-default-chromium-darwin.png +0 -0
- /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/default-theme-default-firefox-darwin.png +0 -0
- /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/default-theme-default-webkit-darwin.png +0 -0
- /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/default-theme-error-chromium-darwin.png +0 -0
- /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/default-theme-error-firefox-darwin.png +0 -0
- /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/default-theme-error-webkit-darwin.png +0 -0
- /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/default-theme-success-chromium-darwin.png +0 -0
- /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/default-theme-success-firefox-darwin.png +0 -0
- /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/default-theme-success-webkit-darwin.png +0 -0
- /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/default-theme-warning-chromium-darwin.png +0 -0
- /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/default-theme-warning-firefox-darwin.png +0 -0
- /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/default-theme-warning-webkit-darwin.png +0 -0
- /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/default-variant-primary-chromium-darwin.png +0 -0
- /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/default-variant-primary-firefox-darwin.png +0 -0
- /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/default-variant-primary-webkit-darwin.png +0 -0
- /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/default-variant-secondary-chromium-darwin.png +0 -0
- /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/default-variant-secondary-firefox-darwin.png +0 -0
- /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/default-variant-secondary-webkit-darwin.png +0 -0
- /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/default-variant-tertiary-chromium-darwin.png +0 -0
- /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/default-variant-tertiary-firefox-darwin.png +0 -0
- /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/default-variant-tertiary-webkit-darwin.png +0 -0
- /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/default-webkit-darwin.png +0 -0
- /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/nuxt-icon-only-component-chromium-darwin.png +0 -0
- /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/nuxt-icon-only-component-firefox-darwin.png +0 -0
- /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/nuxt-icon-only-component-webkit-darwin.png +0 -0
- /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/state-pending-chromium-darwin.png +0 -0
- /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/state-pending-firefox-darwin.png +0 -0
- /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/state-pending-webkit-darwin.png +0 -0
- /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/state-pill-chromium-darwin.png +0 -0
- /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/state-pill-firefox-darwin.png +0 -0
- /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/state-pill-webkit-darwin.png +0 -0
- /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/state-readonly-chromium-darwin.png +0 -0
- /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/state-readonly-firefox-darwin.png +0 -0
- /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/state-readonly-webkit-darwin.png +0 -0
- /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/with-both-nuxt-icon-components-chromium-darwin.png +0 -0
- /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/with-both-nuxt-icon-components-firefox-darwin.png +0 -0
- /package/app/components/{forms → 05.forms}/input-button/playwright/input-button-core.playwright.ts-snapshots/with-both-nuxt-icon-components-webkit-darwin.png +0 -0
- /package/app/components/{forms → 05.forms}/input-button/tests/InputButtonCore.spec.ts +0 -0
- /package/app/components/{forms → 05.forms}/input-button/tests/__snapshots__/InputButtonCore.spec.ts.snap +0 -0
- /package/app/components/{forms → 05.forms}/input-checkbox/MultipleCheckboxes.vue +0 -0
- /package/app/components/{forms → 05.forms}/input-checkbox/SingleCheckbox.vue +0 -0
- /package/app/components/{forms → 05.forms}/input-checkbox/tests/MultipleCheckboxes.spec.ts +0 -0
- /package/app/components/{forms → 05.forms}/input-checkbox/tests/data/tags.json +0 -0
- /package/app/components/{forms → 05.forms}/input-checkbox-radio/InputCheckboxRadioButton.vue +0 -0
- /package/app/components/{forms → 05.forms}/input-checkbox-radio/InputCheckboxRadioCore.vue +0 -0
- /package/app/components/{forms → 05.forms}/input-checkbox-radio/InputCheckboxRadioWithLabel.vue +0 -0
- /package/app/components/{forms → 05.forms}/input-checkbox-radio/tests/InputCheckboxRadioCore.spec.ts +0 -0
- /package/app/components/{forms → 05.forms}/input-copy/InputCopyCore.vue +0 -0
- /package/app/components/{forms → 05.forms}/input-copy/stories/InputCopyCore.stories.ts +0 -0
- /package/app/components/{forms → 05.forms}/input-copy/tests/InputCopyCore.spec.ts +0 -0
- /package/app/components/{forms → 05.forms}/input-copy/tests/__snapshots__/InputCopyCore.spec.ts.snap +0 -0
- /package/app/components/{forms → 05.forms}/input-description/InputDescription.vue +0 -0
- /package/app/components/{forms → 05.forms}/input-description/tests/InputDescription.spec.ts +0 -0
- /package/app/components/{forms → 05.forms}/input-label/InputLabel.vue +0 -0
- /package/app/components/{forms → 05.forms}/input-label/tests/InputLabel.spec.ts +0 -0
- /package/app/components/{forms → 05.forms}/input-number/InputNumberCore.vue +0 -0
- /package/app/components/{forms → 05.forms}/input-number/variants/InputNumberDefault.vue +0 -0
- /package/app/components/{forms → 05.forms}/input-radio/MultipleRadiobuttons.vue +0 -0
- /package/app/components/{forms → 05.forms}/input-radio/tests/MultipleRadioButtons.spec.ts +0 -0
- /package/app/components/{forms → 05.forms}/input-radio/tests/data/tags.json +0 -0
- /package/app/components/{forms → 05.forms}/input-range/InputRangeCore.vue +0 -0
- /package/app/components/{forms → 05.forms}/input-range/variants/InputRangeDefault.vue +0 -0
- /package/app/components/{forms → 05.forms}/input-range-fancy/InputRangeFancyCore.vue +0 -0
- /package/app/components/{forms → 05.forms}/input-range-fancy/InputRangeFancyWithLabel.vue +0 -0
- /package/app/components/{forms → 05.forms}/input-select/InputSelectCore.vue +0 -0
- /package/app/components/{forms → 05.forms}/input-select/variants/InputSelectWithLabel.vue +0 -0
- /package/app/components/{forms → 05.forms}/input-text/stories/InputPasswordWithLabel.stories.ts +0 -0
- /package/app/components/{forms → 05.forms}/input-text/stories/InputTextAsNumberWithLabel.stories.ts +0 -0
- /package/app/components/{forms → 05.forms}/input-text/stories/InputTextCore.stories.ts +0 -0
- /package/app/components/{forms → 05.forms}/input-text/stories/InputTextWithLabel.stories.ts +0 -0
- /package/app/components/{forms → 05.forms}/input-text/variants/InputPasswordWithLabel.vue +0 -0
- /package/app/components/{forms → 05.forms}/input-text/variants/InputTextWithLabel.vue +0 -0
- /package/app/components/{forms → 05.forms}/input-textarea/InputTextareaCore.vue +0 -0
- /package/app/components/{forms → 05.forms}/input-textarea/stories/InputTextareaCore.stories.ts +0 -0
- /package/app/components/{forms → 05.forms}/input-textarea/stories/InputTextareaWithLabel.stories.ts +0 -0
- /package/app/components/{forms → 05.forms}/input-textarea/variants/InputTextareaWithLabel.vue +0 -0
- /package/app/components/{forms → 05.forms}/pending-effect/PendingEffect.vue +0 -0
- /package/app/components/{forms → 05.forms}/toggle-switch/ToggleSwitchCore.vue +0 -0
- /package/app/components/{forms → 05.forms}/toggle-switch/stories/ToggleSwitchCore.stories.ts +0 -0
- /package/app/components/{forms → 05.forms}/toggle-switch/stories/ToggleSwitchWithLabel.stories.ts +0 -0
- /package/app/components/{forms → 05.forms}/toggle-switch/stories/ToggleSwitchWithLabelInline.stories.ts +0 -0
- /package/app/components/{forms → 05.forms}/toggle-switch/variants/ToggleSwitchWithLabel.vue +0 -0
- /package/app/components/{forms → 05.forms}/toggle-switch/variants/ToggleSwitchWithLabelInline.vue +0 -0
- /package/app/components/{forms → 05.forms}/triple-toggle-switch/TripleToggleSwitchCore.vue +0 -0
- /package/app/{components/forms/c12/prop-validators/index.ts → utils/prop-validators.ts} +0 -0
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div>
|
|
3
|
+
<NuxtLayout name="default">
|
|
4
|
+
<template #layout-content>
|
|
5
|
+
<PageRow tag="div" variant="popout" :style-class-passthrough="['mbs-32']">
|
|
6
|
+
<h1 class="page-heading-2">Deep Expanding Menu</h1>
|
|
7
|
+
<p>
|
|
8
|
+
A horizontal navigation menu using the CSS Popover API. Top-level items can be direct links or toggle a
|
|
9
|
+
panel of child links below them.
|
|
10
|
+
</p>
|
|
11
|
+
</PageRow>
|
|
12
|
+
|
|
13
|
+
<PageRow tag="div" variant="popout" :style-class-passthrough="['mbs-32']">
|
|
14
|
+
<h2 class="page-heading-3 mbe-16">Basic example</h2>
|
|
15
|
+
<div class="demo-surface">
|
|
16
|
+
<DeepExpandingMenu :nav-links="basicLinks" />
|
|
17
|
+
</div>
|
|
18
|
+
</PageRow>
|
|
19
|
+
|
|
20
|
+
<PageRow tag="div" variant="popout" :style-class-passthrough="['mbs-32']">
|
|
21
|
+
<h2 class="page-heading-3 mbe-16">Mixed links and groups</h2>
|
|
22
|
+
<div class="demo-surface">
|
|
23
|
+
<DeepExpandingMenu :nav-links="mixedLinks" />
|
|
24
|
+
</div>
|
|
25
|
+
</PageRow>
|
|
26
|
+
|
|
27
|
+
<PageRow tag="div" variant="popout" :style-class-passthrough="['mbs-32', 'mbe-64']">
|
|
28
|
+
<h2 class="page-heading-3 mbe-16">Many child links</h2>
|
|
29
|
+
<div class="demo-surface">
|
|
30
|
+
<DeepExpandingMenu :nav-links="richLinks" />
|
|
31
|
+
</div>
|
|
32
|
+
</PageRow>
|
|
33
|
+
</template>
|
|
34
|
+
</NuxtLayout>
|
|
35
|
+
</div>
|
|
36
|
+
</template>
|
|
37
|
+
|
|
38
|
+
<script setup lang="ts">
|
|
39
|
+
import type { ResponsiveHeaderNavItem } from "~/types/components";
|
|
40
|
+
|
|
41
|
+
definePageMeta({
|
|
42
|
+
layout: false,
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
useHead({
|
|
46
|
+
title: "Deep Expanding Menu",
|
|
47
|
+
meta: [{ name: "description", content: "Examples of Deep Expanding Menu UI Component" }],
|
|
48
|
+
bodyAttrs: {
|
|
49
|
+
class: "deep-expanding-menu-page",
|
|
50
|
+
},
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
const basicLinks: ResponsiveHeaderNavItem[] = [
|
|
54
|
+
{ name: "Home", path: "/" },
|
|
55
|
+
{ name: "About", path: "#about" },
|
|
56
|
+
{
|
|
57
|
+
name: "Services",
|
|
58
|
+
childLinksTitle: "Our Services",
|
|
59
|
+
childLinks: [
|
|
60
|
+
{ name: "Consulting", path: "#consulting" },
|
|
61
|
+
{ name: "Design", path: "#design" },
|
|
62
|
+
{ name: "Development", path: "#development" },
|
|
63
|
+
],
|
|
64
|
+
},
|
|
65
|
+
{ name: "Contact", path: "#contact" },
|
|
66
|
+
];
|
|
67
|
+
|
|
68
|
+
const mixedLinks: ResponsiveHeaderNavItem[] = [
|
|
69
|
+
{ name: "Home", path: "/" },
|
|
70
|
+
{
|
|
71
|
+
name: "Products",
|
|
72
|
+
childLinksTitle: "Browse Products",
|
|
73
|
+
childLinks: [
|
|
74
|
+
{ name: "Electronics", path: "#electronics" },
|
|
75
|
+
{ name: "Clothing", path: "#clothing" },
|
|
76
|
+
{ name: "Books", path: "#books" },
|
|
77
|
+
{ name: "Accessories", path: "#accessories" },
|
|
78
|
+
],
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
name: "Company",
|
|
82
|
+
childLinksTitle: "About Us",
|
|
83
|
+
childLinks: [
|
|
84
|
+
{ name: "Our Story", path: "#story" },
|
|
85
|
+
{ name: "Team", path: "#team" },
|
|
86
|
+
{ name: "Careers", path: "#careers" },
|
|
87
|
+
],
|
|
88
|
+
},
|
|
89
|
+
{ name: "Blog", path: "#blog" },
|
|
90
|
+
{ name: "Contact", path: "#contact" },
|
|
91
|
+
];
|
|
92
|
+
|
|
93
|
+
const richLinks: ResponsiveHeaderNavItem[] = [
|
|
94
|
+
{
|
|
95
|
+
name: "Components",
|
|
96
|
+
childLinksTitle: "UI Components",
|
|
97
|
+
childLinks: [
|
|
98
|
+
{ name: "Carousel", path: "/ui/carousel-basic" },
|
|
99
|
+
{ name: "Accordian", path: "/ui/accordian" },
|
|
100
|
+
{ name: "Tabs", path: "/ui/tabs" },
|
|
101
|
+
{ name: "Dialogs", path: "/ui/display-dialog" },
|
|
102
|
+
{ name: "Tooltips", path: "/ui/tooltips" },
|
|
103
|
+
{ name: "Display Toast", path: "/ui/display-toast" },
|
|
104
|
+
{ name: "Card Core", path: "/ui/card-core" },
|
|
105
|
+
{ name: "Glowing Border", path: "/ui/glowing-border" },
|
|
106
|
+
],
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
name: "Layouts",
|
|
110
|
+
childLinksTitle: "Layout Components",
|
|
111
|
+
childLinks: [
|
|
112
|
+
{ name: "Simple Grid", path: "/ui/simple-grid" },
|
|
113
|
+
{ name: "Masonry Grid", path: "/ui/masonry-grid" },
|
|
114
|
+
{ name: "Block Decorators", path: "/ui/block-decorators" },
|
|
115
|
+
],
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
name: "Navigation",
|
|
119
|
+
childLinksTitle: "Navigation Components",
|
|
120
|
+
childLinks: [
|
|
121
|
+
{ name: "Site Navigation", path: "/ui/navigation/site-navigation" },
|
|
122
|
+
{ name: "Nav Horizontal", path: "/ui/navigation/navigation-horizontal" },
|
|
123
|
+
{ name: "Deep Expanding Menu", path: "/ui/deep-expanding-menu" },
|
|
124
|
+
{ name: "Magnetic Navigation", path: "/ui/magnetic-navigation" },
|
|
125
|
+
],
|
|
126
|
+
},
|
|
127
|
+
];
|
|
128
|
+
</script>
|
|
129
|
+
|
|
130
|
+
<style lang="css">
|
|
131
|
+
.demo-surface {
|
|
132
|
+
/* background-color: light-dark(var(--slate-01), var(--slate-09)); */
|
|
133
|
+
/* border: 1px solid light-dark(var(--slate-03), var(--slate-07)); */
|
|
134
|
+
border-radius: 1.2rem;
|
|
135
|
+
padding: 2.4rem;
|
|
136
|
+
overflow: visible;
|
|
137
|
+
}
|
|
138
|
+
</style>
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
<div>
|
|
3
3
|
<NuxtLayout name="default">
|
|
4
4
|
<template #layout-content>
|
|
5
|
-
<
|
|
5
|
+
<PageRow tag="div" variant="popout">
|
|
6
6
|
<h1 class="page-heading-2">Display Avatar</h1>
|
|
7
7
|
|
|
8
8
|
<form>
|
|
@@ -136,7 +136,7 @@
|
|
|
136
136
|
</div>
|
|
137
137
|
</div>
|
|
138
138
|
</section>
|
|
139
|
-
</
|
|
139
|
+
</PageRow>
|
|
140
140
|
</template>
|
|
141
141
|
</NuxtLayout>
|
|
142
142
|
</div>
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
<div>
|
|
3
3
|
<NuxtLayout name="default">
|
|
4
4
|
<template #layout-content>
|
|
5
|
-
<
|
|
5
|
+
<PageRow tag="div" variant="full" :style-class-passthrough="['mbe-20']">
|
|
6
6
|
<h1 class="page-heading-2">DisplayBanner</h1>
|
|
7
|
-
</
|
|
7
|
+
</PageRow>
|
|
8
8
|
|
|
9
9
|
<DisplayBanner tag="div" :style-class-passthrough="['mbe-20']">
|
|
10
10
|
<template #canvas>
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
<div>
|
|
3
3
|
<NuxtLayout name="default">
|
|
4
4
|
<template #layout-content>
|
|
5
|
-
<
|
|
5
|
+
<PageRow tag="div" variant="popout">
|
|
6
6
|
<h1 class="page-heading-2">Display Chip</h1>
|
|
7
7
|
|
|
8
8
|
<!-- ── QA Panel (dev only) ───────────────────────────────── -->
|
|
@@ -15,7 +15,6 @@
|
|
|
15
15
|
</code>
|
|
16
16
|
</summary>
|
|
17
17
|
<div class="qa-panel__body">
|
|
18
|
-
|
|
19
18
|
<div class="qa-panel__group">
|
|
20
19
|
<span class="qa-panel__label">Size</span>
|
|
21
20
|
<div class="qa-panel__chips">
|
|
@@ -25,7 +24,9 @@
|
|
|
25
24
|
class="qa-panel__chip"
|
|
26
25
|
:class="{ 'is-active': qaSize === preset }"
|
|
27
26
|
@click="qaSize = preset"
|
|
28
|
-
>
|
|
27
|
+
>
|
|
28
|
+
{{ preset }}px
|
|
29
|
+
</button>
|
|
29
30
|
</div>
|
|
30
31
|
</div>
|
|
31
32
|
|
|
@@ -38,7 +39,9 @@
|
|
|
38
39
|
class="qa-panel__chip"
|
|
39
40
|
:class="{ 'is-active': qaMaskWidth === preset }"
|
|
40
41
|
@click="qaMaskWidth = preset"
|
|
41
|
-
>
|
|
42
|
+
>
|
|
43
|
+
{{ preset }}px
|
|
44
|
+
</button>
|
|
42
45
|
</div>
|
|
43
46
|
</div>
|
|
44
47
|
|
|
@@ -51,22 +54,16 @@
|
|
|
51
54
|
class="qa-panel__chip"
|
|
52
55
|
:class="{ 'is-active': qaOffset === preset }"
|
|
53
56
|
@click="qaOffset = preset"
|
|
54
|
-
>
|
|
57
|
+
>
|
|
58
|
+
{{ preset }}px
|
|
59
|
+
</button>
|
|
55
60
|
</div>
|
|
56
61
|
</div>
|
|
57
62
|
|
|
58
63
|
<div class="qa-panel__group">
|
|
59
64
|
<span class="qa-panel__label">Angle — {{ qaAngle }}deg</span>
|
|
60
|
-
<input
|
|
61
|
-
v-model.number="qaAngle"
|
|
62
|
-
type="range"
|
|
63
|
-
min="0"
|
|
64
|
-
max="360"
|
|
65
|
-
step="1"
|
|
66
|
-
class="qa-panel__range"
|
|
67
|
-
/>
|
|
65
|
+
<input v-model.number="qaAngle" type="range" min="0" max="360" step="1" class="qa-panel__range" />
|
|
68
66
|
</div>
|
|
69
|
-
|
|
70
67
|
</div>
|
|
71
68
|
</details>
|
|
72
69
|
</div>
|
|
@@ -144,7 +141,7 @@
|
|
|
144
141
|
</div>
|
|
145
142
|
</div>
|
|
146
143
|
</section>
|
|
147
|
-
</
|
|
144
|
+
</PageRow>
|
|
148
145
|
</template>
|
|
149
146
|
</NuxtLayout>
|
|
150
147
|
</div>
|
|
@@ -177,12 +174,14 @@ const sizePresets = [8, 10, 12, 16, 20, 24];
|
|
|
177
174
|
const maskWidthPresets = [0, 2, 4, 6, 8];
|
|
178
175
|
const offsetPresets = [-4, 0, 2, 4, 8];
|
|
179
176
|
|
|
180
|
-
const chipConfig = computed(
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
}
|
|
177
|
+
const chipConfig = computed(
|
|
178
|
+
(): DisplayChipConfig => ({
|
|
179
|
+
size: `${qaSize.value}px`,
|
|
180
|
+
maskWidth: `${qaMaskWidth.value}px`,
|
|
181
|
+
offset: `${qaOffset.value}px`,
|
|
182
|
+
angle: `${qaAngle.value}deg`,
|
|
183
|
+
})
|
|
184
|
+
);
|
|
186
185
|
</script>
|
|
187
186
|
|
|
188
187
|
<style lang="css">
|
|
@@ -207,7 +206,9 @@ const chipConfig = computed((): DisplayChipConfig => ({
|
|
|
207
206
|
list-style: none;
|
|
208
207
|
user-select: none;
|
|
209
208
|
|
|
210
|
-
&::-webkit-details-marker {
|
|
209
|
+
&::-webkit-details-marker {
|
|
210
|
+
display: none;
|
|
211
|
+
}
|
|
211
212
|
}
|
|
212
213
|
|
|
213
214
|
.qa-panel__title {
|
|
@@ -264,7 +265,9 @@ const chipConfig = computed((): DisplayChipConfig => ({
|
|
|
264
265
|
cursor: pointer;
|
|
265
266
|
transition: background 0.15s;
|
|
266
267
|
|
|
267
|
-
&:hover {
|
|
268
|
+
&:hover {
|
|
269
|
+
background: oklch(0% 0 0 / 0.4);
|
|
270
|
+
}
|
|
268
271
|
|
|
269
272
|
&.is-active {
|
|
270
273
|
background: oklch(55% 0.18 240);
|
|
@@ -301,8 +304,12 @@ const chipConfig = computed((): DisplayChipConfig => ({
|
|
|
301
304
|
transition: background 0.15s;
|
|
302
305
|
}
|
|
303
306
|
|
|
304
|
-
&:hover::-webkit-slider-thumb {
|
|
305
|
-
|
|
307
|
+
&:hover::-webkit-slider-thumb {
|
|
308
|
+
background: oklch(62% 0.18 240);
|
|
309
|
+
}
|
|
310
|
+
&:hover::-moz-range-thumb {
|
|
311
|
+
background: oklch(62% 0.18 240);
|
|
312
|
+
}
|
|
306
313
|
}
|
|
307
314
|
|
|
308
315
|
/* ── Demo grid ─────────────────────────────────────────────────── */
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
<div>
|
|
3
3
|
<NuxtLayout name="default">
|
|
4
4
|
<template #layout-content>
|
|
5
|
-
<
|
|
5
|
+
<PageRow tag="div" variant="full" :style-class-passthrough="['display-details-section', 'mbe-20']">
|
|
6
6
|
<h1 class="page-heading-2">Details element - Unlinked</h1>
|
|
7
7
|
<p class="mbe-12">Following 2 details block behave independantly.</p>
|
|
8
8
|
|
|
@@ -53,13 +53,9 @@
|
|
|
53
53
|
</div>
|
|
54
54
|
</template>
|
|
55
55
|
</DisplayDetailsCore>
|
|
56
|
-
</
|
|
56
|
+
</PageRow>
|
|
57
57
|
|
|
58
|
-
<
|
|
59
|
-
tag="div"
|
|
60
|
-
variant="full-width"
|
|
61
|
-
:style-class-passthrough="['display-details-section', 'mbe-20', 'hidden']"
|
|
62
|
-
>
|
|
58
|
+
<PageRow tag="div" variant="full" :style-class-passthrough="['display-details-section', 'mbe-20', 'hidden']">
|
|
63
59
|
<h2 class="page-heading-2">Details element - Linked</h2>
|
|
64
60
|
<p class="mbe-12">Details panels are linked, only 1 can be open at a time.</p>
|
|
65
61
|
|
|
@@ -108,7 +104,7 @@
|
|
|
108
104
|
</div>
|
|
109
105
|
</template>
|
|
110
106
|
</DisplayDetailsCore>
|
|
111
|
-
</
|
|
107
|
+
</PageRow>
|
|
112
108
|
</template>
|
|
113
109
|
</NuxtLayout>
|
|
114
110
|
</div>
|
|
@@ -117,7 +113,7 @@
|
|
|
117
113
|
<script setup lang="ts">
|
|
118
114
|
definePageMeta({
|
|
119
115
|
layout: false,
|
|
120
|
-
})
|
|
116
|
+
});
|
|
121
117
|
|
|
122
118
|
useHead({
|
|
123
119
|
title: "Browser title tag",
|
|
@@ -127,7 +123,7 @@ useHead({
|
|
|
127
123
|
content: "Meta description content",
|
|
128
124
|
},
|
|
129
125
|
],
|
|
130
|
-
})
|
|
126
|
+
});
|
|
131
127
|
</script>
|
|
132
128
|
|
|
133
129
|
<style lang="css">
|
|
@@ -2,19 +2,20 @@
|
|
|
2
2
|
<div>
|
|
3
3
|
<NuxtLayout name="default">
|
|
4
4
|
<template #layout-content>
|
|
5
|
-
<
|
|
6
|
-
<h1 class="page-heading-2">Dialog
|
|
7
|
-
<p><button @click.prevent="
|
|
5
|
+
<PageRow tag="div" variant="popout" :style-class-passthrough="['mbe-20']">
|
|
6
|
+
<h1 class="page-heading-2">Dialog with scrollable content</h1>
|
|
7
|
+
<p><button type="button" @click.prevent="openDialog('sample1')">Show Dialog</button></p>
|
|
8
8
|
|
|
9
|
-
<
|
|
9
|
+
<DisplayDialog
|
|
10
10
|
v-if="dialogsConfig['sample1']"
|
|
11
11
|
v-model="dialogsConfig['sample1']"
|
|
12
|
+
variant="dialog"
|
|
12
13
|
:style-class-passthrough="['your-modifier-class']"
|
|
13
|
-
:
|
|
14
|
+
:allow-content-scroll="true"
|
|
14
15
|
data-dialog-id="sample1"
|
|
15
16
|
>
|
|
16
17
|
<template #dialogTitle>
|
|
17
|
-
<p class="text-normal wght-700 m-0">
|
|
18
|
+
<p class="text-normal wght-700 m-0">Dialog with scrollable content</p>
|
|
18
19
|
</template>
|
|
19
20
|
|
|
20
21
|
<template #dialogContent>
|
|
@@ -57,36 +58,25 @@
|
|
|
57
58
|
Praesent proin sem nulla mauris justo mi morbi. Neque diam sodales nam nascetur commodo risus. Ornare
|
|
58
59
|
at sit, mattis erat aenean ipsum. Dictum integer ipsum suspendisse sagittis nisl sollicitudin.
|
|
59
60
|
</p>
|
|
60
|
-
<p class="text-normal">
|
|
61
|
-
Curae maximus nam tortor porta sodales at, feugiat iaculis integer. Lacus habitasse odio fames natoque
|
|
62
|
-
neque varius nostra. Imperdiet tellus libero ornare lobortis maximus rutrum parturient litora viverra.
|
|
63
|
-
Praesent proin sem nulla mauris justo mi morbi. Neque diam sodales nam nascetur commodo risus. Ornare
|
|
64
|
-
at sit, mattis erat aenean ipsum. Dictum integer ipsum suspendisse sagittis nisl sollicitudin.
|
|
65
|
-
</p>
|
|
66
|
-
<p class="text-normal">
|
|
67
|
-
Curae maximus nam tortor porta sodales at, feugiat iaculis integer. Lacus habitasse odio fames natoque
|
|
68
|
-
neque varius nostra. Imperdiet tellus libero ornare lobortis maximus rutrum parturient litora viverra.
|
|
69
|
-
Praesent proin sem nulla mauris justo mi morbi. Neque diam sodales nam nascetur commodo risus. Ornare
|
|
70
|
-
at sit, mattis erat aenean ipsum. Dictum integer ipsum suspendisse sagittis nisl sollicitudin.
|
|
71
|
-
</p>
|
|
72
61
|
</div>
|
|
73
62
|
</template>
|
|
74
63
|
<template #actionButtonLeft>
|
|
75
|
-
<button @click.prevent="
|
|
64
|
+
<button type="submit" @click.prevent="closeDialog('sample1', 'cancel')">Cancel</button>
|
|
76
65
|
</template>
|
|
77
66
|
<template #actionButtonRight>
|
|
78
|
-
<button @click.prevent="
|
|
67
|
+
<button type="submit" @click.prevent="closeDialog('sample1', 'confirm')">Confirm</button>
|
|
79
68
|
</template>
|
|
80
|
-
</
|
|
81
|
-
</
|
|
69
|
+
</DisplayDialog>
|
|
70
|
+
</PageRow>
|
|
82
71
|
|
|
83
|
-
<
|
|
72
|
+
<PageRow tag="div" variant="popout" :style-class-passthrough="['mbe-20']">
|
|
84
73
|
<h2 class="page-heading-2">Confirm Dialog</h2>
|
|
85
|
-
<p><button @click.prevent="
|
|
74
|
+
<p><button type="button" @click.prevent="openDialog('logout')">Show Confirm Dialog</button></p>
|
|
86
75
|
|
|
87
|
-
<
|
|
76
|
+
<DisplayDialog
|
|
88
77
|
v-if="dialogsConfig['logout']"
|
|
89
78
|
v-model="dialogsConfig['logout']"
|
|
79
|
+
variant="confirm"
|
|
90
80
|
:style-class-passthrough="['your-modifier-class']"
|
|
91
81
|
data-dialog-id="logout"
|
|
92
82
|
>
|
|
@@ -100,13 +90,72 @@
|
|
|
100
90
|
</div>
|
|
101
91
|
</template>
|
|
102
92
|
<template #actionButtonLeft>
|
|
103
|
-
<button @click.prevent="
|
|
93
|
+
<button type="submit" @click.prevent="closeDialog('logout', 'cancel')">Cancel</button>
|
|
94
|
+
</template>
|
|
95
|
+
<template #actionButtonRight>
|
|
96
|
+
<button type="submit" @click.prevent="closeDialog('logout', 'confirm')">Confirm</button>
|
|
97
|
+
</template>
|
|
98
|
+
</DisplayDialog>
|
|
99
|
+
</PageRow>
|
|
100
|
+
|
|
101
|
+
<PageRow tag="div" variant="popout" :style-class-passthrough="['mbe-20']">
|
|
102
|
+
<h2 class="page-heading-2">Alert Dialog</h2>
|
|
103
|
+
<p class="text-normal">Cannot be dismissed by clicking outside or pressing Escape — requires explicit action.</p>
|
|
104
|
+
<p><button type="button" @click.prevent="openDialog('deleteAccount')">Show Alert Dialog</button></p>
|
|
105
|
+
|
|
106
|
+
<DisplayDialog
|
|
107
|
+
v-if="dialogsConfig['deleteAccount']"
|
|
108
|
+
v-model="dialogsConfig['deleteAccount']"
|
|
109
|
+
variant="alert"
|
|
110
|
+
:style-class-passthrough="['your-modifier-class']"
|
|
111
|
+
data-dialog-id="deleteAccount"
|
|
112
|
+
>
|
|
113
|
+
<template #dialogTitle>
|
|
114
|
+
<p class="text-normal wght-700 m-0">Delete account?</p>
|
|
115
|
+
</template>
|
|
116
|
+
|
|
117
|
+
<template #dialogContent>
|
|
118
|
+
<div class="m-0">
|
|
119
|
+
<p class="text-normal">This action is permanent and cannot be undone. All your data will be removed.</p>
|
|
120
|
+
</div>
|
|
121
|
+
</template>
|
|
122
|
+
<template #actionButtonLeft>
|
|
123
|
+
<button type="button" @click.prevent="closeDialog('deleteAccount', 'cancel')">Cancel</button>
|
|
124
|
+
</template>
|
|
125
|
+
<template #actionButtonRight>
|
|
126
|
+
<button type="button" @click.prevent="closeDialog('deleteAccount', 'confirm')">Delete account</button>
|
|
127
|
+
</template>
|
|
128
|
+
</DisplayDialog>
|
|
129
|
+
</PageRow>
|
|
130
|
+
|
|
131
|
+
<PageRow tag="div" variant="popout" :style-class-passthrough="['mbe-20']">
|
|
132
|
+
<h2 class="page-heading-2">Fullscreen Dialog</h2>
|
|
133
|
+
<p><button type="button" @click.prevent="openDialog('fullscreen')">Show Fullscreen Dialog</button></p>
|
|
134
|
+
|
|
135
|
+
<DisplayDialog
|
|
136
|
+
v-if="dialogsConfig['fullscreen']"
|
|
137
|
+
v-model="dialogsConfig['fullscreen']"
|
|
138
|
+
variant="fullscreen"
|
|
139
|
+
:style-class-passthrough="['your-modifier-class']"
|
|
140
|
+
data-dialog-id="fullscreen"
|
|
141
|
+
>
|
|
142
|
+
<template #dialogTitle>
|
|
143
|
+
<p class="text-normal wght-700 m-0">Fullscreen dialog</p>
|
|
144
|
+
</template>
|
|
145
|
+
|
|
146
|
+
<template #dialogContent>
|
|
147
|
+
<div class="pt-12 pb-12">
|
|
148
|
+
<p class="text-normal">This dialog fills the entire viewport. Useful for immersive flows such as onboarding, image editors, or multi-step wizards.</p>
|
|
149
|
+
</div>
|
|
150
|
+
</template>
|
|
151
|
+
<template #actionButtonLeft>
|
|
152
|
+
<button type="button" @click.prevent="closeDialog('fullscreen', 'cancel')">Cancel</button>
|
|
104
153
|
</template>
|
|
105
154
|
<template #actionButtonRight>
|
|
106
|
-
<button @click.prevent="
|
|
155
|
+
<button type="button" @click.prevent="closeDialog('fullscreen', 'confirm')">Done</button>
|
|
107
156
|
</template>
|
|
108
|
-
</
|
|
109
|
-
</
|
|
157
|
+
</DisplayDialog>
|
|
158
|
+
</PageRow>
|
|
110
159
|
</template>
|
|
111
160
|
</NuxtLayout>
|
|
112
161
|
</div>
|
|
@@ -115,7 +164,7 @@
|
|
|
115
164
|
<script setup lang="ts">
|
|
116
165
|
definePageMeta({
|
|
117
166
|
layout: false,
|
|
118
|
-
})
|
|
167
|
+
});
|
|
119
168
|
|
|
120
169
|
useHead({
|
|
121
170
|
title: "UI Dialogs",
|
|
@@ -123,109 +172,25 @@ useHead({
|
|
|
123
172
|
bodyAttrs: {
|
|
124
173
|
class: "home",
|
|
125
174
|
},
|
|
126
|
-
})
|
|
127
|
-
|
|
128
|
-
const dialogBtnSampleAction = () => {
|
|
129
|
-
console.log("Dialog button action clicked")
|
|
130
|
-
}
|
|
175
|
+
});
|
|
131
176
|
|
|
132
|
-
const { dialogsConfig,
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
const dialogIds = ["logout", "sample1"]
|
|
136
|
-
initialiseDialogs(dialogIds)
|
|
137
|
-
|
|
138
|
-
// Register callbacks for each dialog
|
|
139
|
-
registerDialogCallbacks("sample1", {
|
|
140
|
-
onConfirm: dialogBtnSampleAction,
|
|
177
|
+
const { dialogsConfig, openDialog, closeDialog } = useDialogControls({
|
|
178
|
+
sample1: {
|
|
179
|
+
onConfirm: () => console.log("Sample1 dialog confirmed"),
|
|
141
180
|
onCancel: () => console.log("Sample1 dialog cancelled"),
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
onConfirm: () => {
|
|
146
|
-
dialogBtnSampleAction()
|
|
147
|
-
console.log("User logged out")
|
|
148
|
-
},
|
|
181
|
+
},
|
|
182
|
+
logout: {
|
|
183
|
+
onConfirm: () => console.log("User logged out"),
|
|
149
184
|
onCancel: () => console.log("Logout cancelled"),
|
|
150
|
-
}
|
|
151
|
-
|
|
185
|
+
},
|
|
186
|
+
deleteAccount: {
|
|
187
|
+
onConfirm: () => console.log("Account deleted"),
|
|
188
|
+
onCancel: () => console.log("Delete account cancelled"),
|
|
189
|
+
},
|
|
190
|
+
fullscreen: {
|
|
191
|
+
onConfirm: () => console.log("Fullscreen dialog confirmed"),
|
|
192
|
+
onCancel: () => console.log("Fullscreen dialog cancelled"),
|
|
193
|
+
},
|
|
194
|
+
});
|
|
152
195
|
</script>
|
|
153
196
|
|
|
154
|
-
<style lang="css">
|
|
155
|
-
.your-modifier-class {
|
|
156
|
-
&.display-dialog-core {
|
|
157
|
-
/* Dialog core styles */
|
|
158
|
-
/* Delete or add styles as needed */
|
|
159
|
-
|
|
160
|
-
&[open] {
|
|
161
|
-
@starting-style {
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
/* * Positioning the dialog */
|
|
166
|
-
&[justify-dialog="start"] {
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
&[justify-dialog="center"] {
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
&[justify-dialog="end"] {
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
&[align-dialog="start"] {
|
|
176
|
-
}
|
|
177
|
-
|
|
178
|
-
&[align-dialog="center"] {
|
|
179
|
-
}
|
|
180
|
-
&[align-dialog="end"] {
|
|
181
|
-
}
|
|
182
|
-
|
|
183
|
-
.inner {
|
|
184
|
-
&.confirm {
|
|
185
|
-
}
|
|
186
|
-
|
|
187
|
-
&.dialog {
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
&.form {
|
|
191
|
-
}
|
|
192
|
-
|
|
193
|
-
&.fullscreen {
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
&.modal {
|
|
197
|
-
}
|
|
198
|
-
|
|
199
|
-
.header {
|
|
200
|
-
.col-left {
|
|
201
|
-
}
|
|
202
|
-
|
|
203
|
-
.col-center {
|
|
204
|
-
}
|
|
205
|
-
|
|
206
|
-
.col-right {
|
|
207
|
-
.display-prompt-action {
|
|
208
|
-
&:hover {
|
|
209
|
-
}
|
|
210
|
-
&:focus-visible {
|
|
211
|
-
}
|
|
212
|
-
|
|
213
|
-
.icon {
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
}
|
|
218
|
-
|
|
219
|
-
.dialog-content {
|
|
220
|
-
&.allow-content-scroll {
|
|
221
|
-
&::-webkit-scrollbar {
|
|
222
|
-
}
|
|
223
|
-
}
|
|
224
|
-
}
|
|
225
|
-
|
|
226
|
-
.footer {
|
|
227
|
-
}
|
|
228
|
-
}
|
|
229
|
-
}
|
|
230
|
-
}
|
|
231
|
-
</style>
|