- Add tailwindcss v4 + @tailwindcss/vite to mall, shop-admin, admin - Add @vmall/shared/theme.css tokens with html[data-accent] presets - Add @vmall/ui kit (VBtn/VBadge/VField/VInput/VCard/VPanel/VTable/VPage, VAccentSwatch, useAccent) as a Nuxt module - Convert all three apps to kit + utilities; delete ui.css/mall.css and every <style scoped>; consoles get accent presets, mall locked to red - Fix VCard boolean prop default (padding) and PDP/store stale useAsyncData keys on param navigation - Archive adopt-tailwind-design-system; new frontend-ui capability spec
29 lines
1.0 KiB
Vue
29 lines
1.0 KiB
Vue
<script setup lang="ts">
|
||
defineProps<{ open: boolean; title?: string }>();
|
||
const emit = defineEmits<{ close: [] }>();
|
||
</script>
|
||
|
||
<template>
|
||
<Teleport to="body">
|
||
<div v-if="open" class="fixed inset-0 z-[900] flex items-center justify-center bg-black/40" @click.self="emit('close')">
|
||
<div class="min-w-[420px] max-w-[720px] rounded-md bg-surface shadow-lg">
|
||
<header v-if="title" class="flex items-center justify-between border-b border-border px-5 py-3.5 text-[15px]">
|
||
<span>{{ title }}</span>
|
||
<button
|
||
type="button"
|
||
class="border-0 bg-transparent text-[20px] text-muted transition-colors hover:text-primary"
|
||
:aria-label="$t('common.cancel')"
|
||
@click="emit('close')"
|
||
>×</button>
|
||
</header>
|
||
<div class="p-5">
|
||
<slot />
|
||
</div>
|
||
<footer v-if="$slots.footer" class="border-t border-border px-5 py-3 text-right">
|
||
<slot name="footer" />
|
||
</footer>
|
||
</div>
|
||
</div>
|
||
</Teleport>
|
||
</template>
|