@auronui/vue 1.0.19 → 1.0.21
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/dist/cjs/index.cjs +286 -110
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/components/alert-dialog/AlertDialogAction.js.map +1 -1
- package/dist/components/alert-dialog/AlertDialogAction.vue_vue_type_script_setup_true_lang.js +25 -5
- package/dist/components/alert-dialog/AlertDialogAction.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/alert-dialog/AlertDialogCancel.js.map +1 -1
- package/dist/components/alert-dialog/AlertDialogCancel.vue_vue_type_script_setup_true_lang.js +25 -5
- package/dist/components/alert-dialog/AlertDialogCancel.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/avatar/AvatarGroup.js.map +1 -1
- package/dist/components/avatar/AvatarGroup.vue_vue_type_script_setup_true_lang.js +1 -0
- package/dist/components/avatar/AvatarGroup.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/button/Button.js.map +1 -1
- package/dist/components/button/Button.vue_vue_type_script_setup_true_lang.js +4 -1
- package/dist/components/button/Button.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/chip/Chip.js.map +1 -1
- package/dist/components/chip/Chip.vue_vue_type_script_setup_true_lang.js +6 -1
- package/dist/components/chip/Chip.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/drawer/Drawer.js.map +1 -1
- package/dist/components/drawer/Drawer.vue_vue_type_script_lang.js +42 -4
- package/dist/components/drawer/Drawer.vue_vue_type_script_lang.js.map +1 -1
- package/dist/components/drawer/DrawerClose.js.map +1 -1
- package/dist/components/drawer/DrawerClose.vue_vue_type_script_setup_true_lang.js +15 -3
- package/dist/components/drawer/DrawerClose.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/drawer/DrawerContent.js.map +1 -1
- package/dist/components/drawer/DrawerContent.vue_vue_type_script_setup_true_lang.js +62 -10
- package/dist/components/drawer/DrawerContent.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/drawer/DrawerMain.js +7 -0
- package/dist/components/drawer/DrawerMain.js.map +1 -0
- package/dist/components/drawer/DrawerMain.vue_vue_type_script_setup_true_lang.js +32 -0
- package/dist/components/drawer/DrawerMain.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/drawer/DrawerTrigger.js.map +1 -1
- package/dist/components/drawer/DrawerTrigger.vue_vue_type_script_setup_true_lang.js +16 -3
- package/dist/components/drawer/DrawerTrigger.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/drawer/drawer.context.js.map +1 -1
- package/dist/components/toolbar/ToolbarToggleGroup.js.map +1 -1
- package/dist/components/toolbar/ToolbarToggleGroup.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/index.d.ts +656 -573
- package/dist/index.js +2 -1
- package/dist/packages/styles/src/components/drawer/drawer.styles.js +13 -5
- package/dist/packages/styles/src/components/drawer/drawer.styles.js.map +1 -1
- package/dist/utils/warnDeprecated.js +6 -0
- package/dist/utils/warnDeprecated.js.map +1 -0
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AlertDialogAction.js","names":[],"sources":["../../../src/components/alert-dialog/AlertDialogAction.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { AlertDialogAction } from 'reka-ui'\nimport { buttonVariants } from '@auronui/styles'\nimport { composeClassName , type ClassValue} from '../../utils/composeClassName'\n\n/**\n * AlertDialogAction — confirm button for destructive flows.\n *\n * Wraps reka-ui AlertDialogAction which renders <button type=\"button\"> by default\n * (confirmed: AlertDialogAction uses DialogClose which sets type=\"button\" when as=\"button\").\n *\n * D-04: Do NOT override the button type — reka-ui's default `type=\"button\"` is intentional\n * and prevents accidental form submission / Enter-key propagation.\n */\nconst props = withDefaults(defineProps<{\n variant?: 'danger' | 'danger-soft' | 'primary' | 'secondary' | 'ghost' | 'outline' | 'success' | 'success-soft' | 'warning' | 'warning-soft' | 'tertiary'\n size?: 'sm' | 'md' | 'lg'\n class?: ClassValue\n /** Override default classes for any slot. Keys correspond to slot names (e.g., base). */\n classNames?: Partial<{\n base: ClassValue\n }>\n asChild?: boolean\n}>(), {\n variant: 'danger',\n size: 'md',\n asChild: false,\n})\n\nconst slotFns = buttonVariants({ variant:
|
|
1
|
+
{"version":3,"file":"AlertDialogAction.js","names":[],"sources":["../../../src/components/alert-dialog/AlertDialogAction.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { AlertDialogAction } from 'reka-ui'\nimport { buttonVariants, type ButtonVariants } from '@auronui/styles'\nimport { composeClassName , type ClassValue} from '../../utils/composeClassName'\nimport { warnDeprecatedVariant } from '../../utils/warnDeprecated'\nimport { computed } from 'vue'\n\n/**\n * AlertDialogAction — confirm button for destructive flows.\n *\n * Wraps reka-ui AlertDialogAction which renders <button type=\"button\"> by default\n * (confirmed: AlertDialogAction uses DialogClose which sets type=\"button\" when as=\"button\").\n *\n * D-04: Do NOT override the button type — reka-ui's default `type=\"button\"` is intentional\n * and prevents accidental form submission / Enter-key propagation.\n */\nconst props = withDefaults(defineProps<{\n /** variant — use 'bordered' for the outline style; 'outline' is @deprecated */\n variant?: 'danger' | 'danger-soft' | 'primary' | 'secondary' | 'ghost' | 'bordered' | 'outline' | 'success' | 'success-soft' | 'warning' | 'warning-soft' | 'tertiary'\n size?: 'sm' | 'md' | 'lg'\n class?: ClassValue\n /** Override default classes for any slot. Keys correspond to slot names (e.g., base). */\n classNames?: Partial<{\n base: ClassValue\n }>\n asChild?: boolean\n}>(), {\n variant: 'danger',\n size: 'md',\n asChild: false,\n})\n\n// Map legacy variant names to buttonVariants-compatible variants\nconst LEGACY_VARIANTS: Record<string, ButtonVariants['variant']> = {\n primary: 'primary',\n secondary: 'secondary',\n tertiary: 'secondary',\n danger: 'danger',\n 'danger-soft': 'danger-soft',\n success: 'success',\n 'success-soft': 'success-soft',\n warning: 'warning',\n 'warning-soft': 'warning-soft',\n ghost: 'ghost',\n bordered: 'bordered',\n}\n\nconst resolvedVariant = computed(() => {\n const v = props.variant\n if (!v) return v\n if (v === 'outline') {\n warnDeprecatedVariant('AlertDialogAction', 'outline', 'bordered')\n return 'bordered' as ButtonVariants['variant']\n }\n return (LEGACY_VARIANTS[v] ?? v) as ButtonVariants['variant']\n})\n\nconst slotFns = computed(() => buttonVariants({ variant: resolvedVariant.value, size: props.size }))\n</script>\n\n<template>\n <AlertDialogAction\n :as-child=\"props.asChild\"\n :class=\"composeClassName(slotFns.base(), props.class, props.classNames?.base)\"\n >\n <slot />\n </AlertDialogAction>\n</template>\n"],"mappings":""}
|
package/dist/components/alert-dialog/AlertDialogAction.vue_vue_type_script_setup_true_lang.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { composeClassName } from "../../utils/composeClassName.js";
|
|
2
|
-
import
|
|
2
|
+
import "../../utils/warnDeprecated.js";
|
|
3
|
+
import { computed, createBlock, defineComponent, normalizeClass, openBlock, renderSlot, unref, withCtx } from "vue";
|
|
3
4
|
import { buttonVariants } from "@auronui/styles";
|
|
4
5
|
import { AlertDialogAction } from "reka-ui";
|
|
5
6
|
//#region src/components/alert-dialog/AlertDialogAction.vue?vue&type=script&setup=true&lang.ts
|
|
@@ -32,14 +33,33 @@ var AlertDialogAction_vue_vue_type_script_setup_true_lang_default = /* @__PURE__
|
|
|
32
33
|
},
|
|
33
34
|
setup(__props) {
|
|
34
35
|
const props = __props;
|
|
35
|
-
const
|
|
36
|
-
|
|
37
|
-
|
|
36
|
+
const LEGACY_VARIANTS = {
|
|
37
|
+
primary: "primary",
|
|
38
|
+
secondary: "secondary",
|
|
39
|
+
tertiary: "secondary",
|
|
40
|
+
danger: "danger",
|
|
41
|
+
"danger-soft": "danger-soft",
|
|
42
|
+
success: "success",
|
|
43
|
+
"success-soft": "success-soft",
|
|
44
|
+
warning: "warning",
|
|
45
|
+
"warning-soft": "warning-soft",
|
|
46
|
+
ghost: "ghost",
|
|
47
|
+
bordered: "bordered"
|
|
48
|
+
};
|
|
49
|
+
const resolvedVariant = computed(() => {
|
|
50
|
+
const v = props.variant;
|
|
51
|
+
if (!v) return v;
|
|
52
|
+
if (v === "outline") return "bordered";
|
|
53
|
+
return LEGACY_VARIANTS[v] ?? v;
|
|
38
54
|
});
|
|
55
|
+
const slotFns = computed(() => buttonVariants({
|
|
56
|
+
variant: resolvedVariant.value,
|
|
57
|
+
size: props.size
|
|
58
|
+
}));
|
|
39
59
|
return (_ctx, _cache) => {
|
|
40
60
|
return openBlock(), createBlock(unref(AlertDialogAction), {
|
|
41
61
|
"as-child": props.asChild,
|
|
42
|
-
class: normalizeClass(unref(composeClassName)(
|
|
62
|
+
class: normalizeClass(unref(composeClassName)(slotFns.value.base(), props.class, props.classNames?.base))
|
|
43
63
|
}, {
|
|
44
64
|
default: withCtx(() => [renderSlot(_ctx.$slots, "default")]),
|
|
45
65
|
_: 3
|
package/dist/components/alert-dialog/AlertDialogAction.vue_vue_type_script_setup_true_lang.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AlertDialogAction.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/alert-dialog/AlertDialogAction.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { AlertDialogAction } from 'reka-ui'\nimport { buttonVariants } from '@auronui/styles'\nimport { composeClassName , type ClassValue} from '../../utils/composeClassName'\n\n/**\n * AlertDialogAction — confirm button for destructive flows.\n *\n * Wraps reka-ui AlertDialogAction which renders <button type=\"button\"> by default\n * (confirmed: AlertDialogAction uses DialogClose which sets type=\"button\" when as=\"button\").\n *\n * D-04: Do NOT override the button type — reka-ui's default `type=\"button\"` is intentional\n * and prevents accidental form submission / Enter-key propagation.\n */\nconst props = withDefaults(defineProps<{\n variant?: 'danger' | 'danger-soft' | 'primary' | 'secondary' | 'ghost' | 'outline' | 'success' | 'success-soft' | 'warning' | 'warning-soft' | 'tertiary'\n size?: 'sm' | 'md' | 'lg'\n class?: ClassValue\n /** Override default classes for any slot. Keys correspond to slot names (e.g., base). */\n classNames?: Partial<{\n base: ClassValue\n }>\n asChild?: boolean\n}>(), {\n variant: 'danger',\n size: 'md',\n asChild: false,\n})\n\nconst slotFns = buttonVariants({ variant:
|
|
1
|
+
{"version":3,"file":"AlertDialogAction.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/alert-dialog/AlertDialogAction.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { AlertDialogAction } from 'reka-ui'\nimport { buttonVariants, type ButtonVariants } from '@auronui/styles'\nimport { composeClassName , type ClassValue} from '../../utils/composeClassName'\nimport { warnDeprecatedVariant } from '../../utils/warnDeprecated'\nimport { computed } from 'vue'\n\n/**\n * AlertDialogAction — confirm button for destructive flows.\n *\n * Wraps reka-ui AlertDialogAction which renders <button type=\"button\"> by default\n * (confirmed: AlertDialogAction uses DialogClose which sets type=\"button\" when as=\"button\").\n *\n * D-04: Do NOT override the button type — reka-ui's default `type=\"button\"` is intentional\n * and prevents accidental form submission / Enter-key propagation.\n */\nconst props = withDefaults(defineProps<{\n /** variant — use 'bordered' for the outline style; 'outline' is @deprecated */\n variant?: 'danger' | 'danger-soft' | 'primary' | 'secondary' | 'ghost' | 'bordered' | 'outline' | 'success' | 'success-soft' | 'warning' | 'warning-soft' | 'tertiary'\n size?: 'sm' | 'md' | 'lg'\n class?: ClassValue\n /** Override default classes for any slot. Keys correspond to slot names (e.g., base). */\n classNames?: Partial<{\n base: ClassValue\n }>\n asChild?: boolean\n}>(), {\n variant: 'danger',\n size: 'md',\n asChild: false,\n})\n\n// Map legacy variant names to buttonVariants-compatible variants\nconst LEGACY_VARIANTS: Record<string, ButtonVariants['variant']> = {\n primary: 'primary',\n secondary: 'secondary',\n tertiary: 'secondary',\n danger: 'danger',\n 'danger-soft': 'danger-soft',\n success: 'success',\n 'success-soft': 'success-soft',\n warning: 'warning',\n 'warning-soft': 'warning-soft',\n ghost: 'ghost',\n bordered: 'bordered',\n}\n\nconst resolvedVariant = computed(() => {\n const v = props.variant\n if (!v) return v\n if (v === 'outline') {\n warnDeprecatedVariant('AlertDialogAction', 'outline', 'bordered')\n return 'bordered' as ButtonVariants['variant']\n }\n return (LEGACY_VARIANTS[v] ?? v) as ButtonVariants['variant']\n})\n\nconst slotFns = computed(() => buttonVariants({ variant: resolvedVariant.value, size: props.size }))\n</script>\n\n<template>\n <AlertDialogAction\n :as-child=\"props.asChild\"\n :class=\"composeClassName(slotFns.base(), props.class, props.classNames?.base)\"\n >\n <slot />\n </AlertDialogAction>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgBA,MAAM,QAAQ;EAiBd,MAAM,kBAA6D;GACjE,SAAS;GACT,WAAW;GACX,UAAU;GACV,QAAQ;GACR,eAAe;GACf,SAAS;GACT,gBAAgB;GAChB,SAAS;GACT,gBAAgB;GAChB,OAAO;GACP,UAAU;GACZ;EAEA,MAAM,kBAAkB,eAAe;GACrC,MAAM,IAAI,MAAM;AAChB,OAAI,CAAC,EAAG,QAAO;AACf,OAAI,MAAM,UAER,QAAO;AAET,UAAQ,gBAAgB,MAAM;IAC/B;EAED,MAAM,UAAU,eAAe,eAAe;GAAE,SAAS,gBAAgB;GAAO,MAAM,MAAM;GAAM,CAAC,CAAA;;uBAIjG,YAKoB,MAAA,kBAAA,EAAA;IAJjB,YAAU,MAAM;IAChB,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,MAAI,EAAI,MAAM,OAAO,MAAM,YAAY,KAAI,CAAA;;2BAEpE,CAAR,WAAQ,KAAA,QAAA,UAAA,CAAA,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AlertDialogCancel.js","names":[],"sources":["../../../src/components/alert-dialog/AlertDialogCancel.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { AlertDialogCancel } from 'reka-ui'\nimport { buttonVariants } from '@auronui/styles'\nimport { composeClassName , type ClassValue} from '../../utils/composeClassName'\n\n/**\n * AlertDialogCancel — dismiss button for alert dialogs.\n * Wraps reka-ui AlertDialogCancel which renders <button type=\"button\"> by default.\n */\nconst props = withDefaults(defineProps<{\n variant?: 'danger' | 'danger-soft' | 'primary' | 'secondary' | 'ghost' | 'outline' | 'success' | 'success-soft' | 'warning' | 'warning-soft' | 'tertiary'\n size?: 'sm' | 'md' | 'lg'\n class?: ClassValue\n /** Per-slot class name overrides */\n classNames?: Partial<{ base: ClassValue }>\n asChild?: boolean\n}>(), {\n variant: 'secondary',\n size: 'md',\n asChild: false,\n})\n\nconst slotFns = buttonVariants({ variant:
|
|
1
|
+
{"version":3,"file":"AlertDialogCancel.js","names":[],"sources":["../../../src/components/alert-dialog/AlertDialogCancel.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { AlertDialogCancel } from 'reka-ui'\nimport { buttonVariants, type ButtonVariants } from '@auronui/styles'\nimport { composeClassName , type ClassValue} from '../../utils/composeClassName'\nimport { warnDeprecatedVariant } from '../../utils/warnDeprecated'\nimport { computed } from 'vue'\n\n/**\n * AlertDialogCancel — dismiss button for alert dialogs.\n * Wraps reka-ui AlertDialogCancel which renders <button type=\"button\"> by default.\n */\nconst props = withDefaults(defineProps<{\n /** variant — use 'bordered' for the outline style; 'outline' is @deprecated */\n variant?: 'danger' | 'danger-soft' | 'primary' | 'secondary' | 'ghost' | 'bordered' | 'outline' | 'success' | 'success-soft' | 'warning' | 'warning-soft' | 'tertiary'\n size?: 'sm' | 'md' | 'lg'\n class?: ClassValue\n /** Per-slot class name overrides */\n classNames?: Partial<{ base: ClassValue }>\n asChild?: boolean\n}>(), {\n variant: 'secondary',\n size: 'md',\n asChild: false,\n})\n\n// Map legacy variant names to buttonVariants-compatible variants\nconst LEGACY_VARIANTS: Record<string, ButtonVariants['variant']> = {\n primary: 'primary',\n secondary: 'secondary',\n tertiary: 'secondary',\n danger: 'danger',\n 'danger-soft': 'danger-soft',\n success: 'success',\n 'success-soft': 'success-soft',\n warning: 'warning',\n 'warning-soft': 'warning-soft',\n ghost: 'ghost',\n bordered: 'bordered',\n}\n\nconst resolvedVariant = computed(() => {\n const v = props.variant\n if (!v) return v\n if (v === 'outline') {\n warnDeprecatedVariant('AlertDialogCancel', 'outline', 'bordered')\n return 'bordered' as ButtonVariants['variant']\n }\n return (LEGACY_VARIANTS[v] ?? v) as ButtonVariants['variant']\n})\n\nconst slotFns = computed(() => buttonVariants({ variant: resolvedVariant.value, size: props.size }))\n</script>\n\n<template>\n <AlertDialogCancel\n :as-child=\"props.asChild\"\n :class=\"composeClassName(slotFns.base(), props.class, props.classNames?.base)\"\n >\n <slot />\n </AlertDialogCancel>\n</template>\n"],"mappings":""}
|
package/dist/components/alert-dialog/AlertDialogCancel.vue_vue_type_script_setup_true_lang.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { composeClassName } from "../../utils/composeClassName.js";
|
|
2
|
-
import
|
|
2
|
+
import "../../utils/warnDeprecated.js";
|
|
3
|
+
import { computed, createBlock, defineComponent, normalizeClass, openBlock, renderSlot, unref, withCtx } from "vue";
|
|
3
4
|
import { buttonVariants } from "@auronui/styles";
|
|
4
5
|
import { AlertDialogCancel } from "reka-ui";
|
|
5
6
|
//#region src/components/alert-dialog/AlertDialogCancel.vue?vue&type=script&setup=true&lang.ts
|
|
@@ -27,14 +28,33 @@ var AlertDialogCancel_vue_vue_type_script_setup_true_lang_default = /* @__PURE__
|
|
|
27
28
|
},
|
|
28
29
|
setup(__props) {
|
|
29
30
|
const props = __props;
|
|
30
|
-
const
|
|
31
|
-
|
|
32
|
-
|
|
31
|
+
const LEGACY_VARIANTS = {
|
|
32
|
+
primary: "primary",
|
|
33
|
+
secondary: "secondary",
|
|
34
|
+
tertiary: "secondary",
|
|
35
|
+
danger: "danger",
|
|
36
|
+
"danger-soft": "danger-soft",
|
|
37
|
+
success: "success",
|
|
38
|
+
"success-soft": "success-soft",
|
|
39
|
+
warning: "warning",
|
|
40
|
+
"warning-soft": "warning-soft",
|
|
41
|
+
ghost: "ghost",
|
|
42
|
+
bordered: "bordered"
|
|
43
|
+
};
|
|
44
|
+
const resolvedVariant = computed(() => {
|
|
45
|
+
const v = props.variant;
|
|
46
|
+
if (!v) return v;
|
|
47
|
+
if (v === "outline") return "bordered";
|
|
48
|
+
return LEGACY_VARIANTS[v] ?? v;
|
|
33
49
|
});
|
|
50
|
+
const slotFns = computed(() => buttonVariants({
|
|
51
|
+
variant: resolvedVariant.value,
|
|
52
|
+
size: props.size
|
|
53
|
+
}));
|
|
34
54
|
return (_ctx, _cache) => {
|
|
35
55
|
return openBlock(), createBlock(unref(AlertDialogCancel), {
|
|
36
56
|
"as-child": props.asChild,
|
|
37
|
-
class: normalizeClass(unref(composeClassName)(
|
|
57
|
+
class: normalizeClass(unref(composeClassName)(slotFns.value.base(), props.class, props.classNames?.base))
|
|
38
58
|
}, {
|
|
39
59
|
default: withCtx(() => [renderSlot(_ctx.$slots, "default")]),
|
|
40
60
|
_: 3
|
package/dist/components/alert-dialog/AlertDialogCancel.vue_vue_type_script_setup_true_lang.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AlertDialogCancel.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/alert-dialog/AlertDialogCancel.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { AlertDialogCancel } from 'reka-ui'\nimport { buttonVariants } from '@auronui/styles'\nimport { composeClassName , type ClassValue} from '../../utils/composeClassName'\n\n/**\n * AlertDialogCancel — dismiss button for alert dialogs.\n * Wraps reka-ui AlertDialogCancel which renders <button type=\"button\"> by default.\n */\nconst props = withDefaults(defineProps<{\n variant?: 'danger' | 'danger-soft' | 'primary' | 'secondary' | 'ghost' | 'outline' | 'success' | 'success-soft' | 'warning' | 'warning-soft' | 'tertiary'\n size?: 'sm' | 'md' | 'lg'\n class?: ClassValue\n /** Per-slot class name overrides */\n classNames?: Partial<{ base: ClassValue }>\n asChild?: boolean\n}>(), {\n variant: 'secondary',\n size: 'md',\n asChild: false,\n})\n\nconst slotFns = buttonVariants({ variant:
|
|
1
|
+
{"version":3,"file":"AlertDialogCancel.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/alert-dialog/AlertDialogCancel.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { AlertDialogCancel } from 'reka-ui'\nimport { buttonVariants, type ButtonVariants } from '@auronui/styles'\nimport { composeClassName , type ClassValue} from '../../utils/composeClassName'\nimport { warnDeprecatedVariant } from '../../utils/warnDeprecated'\nimport { computed } from 'vue'\n\n/**\n * AlertDialogCancel — dismiss button for alert dialogs.\n * Wraps reka-ui AlertDialogCancel which renders <button type=\"button\"> by default.\n */\nconst props = withDefaults(defineProps<{\n /** variant — use 'bordered' for the outline style; 'outline' is @deprecated */\n variant?: 'danger' | 'danger-soft' | 'primary' | 'secondary' | 'ghost' | 'bordered' | 'outline' | 'success' | 'success-soft' | 'warning' | 'warning-soft' | 'tertiary'\n size?: 'sm' | 'md' | 'lg'\n class?: ClassValue\n /** Per-slot class name overrides */\n classNames?: Partial<{ base: ClassValue }>\n asChild?: boolean\n}>(), {\n variant: 'secondary',\n size: 'md',\n asChild: false,\n})\n\n// Map legacy variant names to buttonVariants-compatible variants\nconst LEGACY_VARIANTS: Record<string, ButtonVariants['variant']> = {\n primary: 'primary',\n secondary: 'secondary',\n tertiary: 'secondary',\n danger: 'danger',\n 'danger-soft': 'danger-soft',\n success: 'success',\n 'success-soft': 'success-soft',\n warning: 'warning',\n 'warning-soft': 'warning-soft',\n ghost: 'ghost',\n bordered: 'bordered',\n}\n\nconst resolvedVariant = computed(() => {\n const v = props.variant\n if (!v) return v\n if (v === 'outline') {\n warnDeprecatedVariant('AlertDialogCancel', 'outline', 'bordered')\n return 'bordered' as ButtonVariants['variant']\n }\n return (LEGACY_VARIANTS[v] ?? v) as ButtonVariants['variant']\n})\n\nconst slotFns = computed(() => buttonVariants({ variant: resolvedVariant.value, size: props.size }))\n</script>\n\n<template>\n <AlertDialogCancel\n :as-child=\"props.asChild\"\n :class=\"composeClassName(slotFns.base(), props.class, props.classNames?.base)\"\n >\n <slot />\n </AlertDialogCancel>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAWA,MAAM,QAAQ;EAed,MAAM,kBAA6D;GACjE,SAAS;GACT,WAAW;GACX,UAAU;GACV,QAAQ;GACR,eAAe;GACf,SAAS;GACT,gBAAgB;GAChB,SAAS;GACT,gBAAgB;GAChB,OAAO;GACP,UAAU;GACZ;EAEA,MAAM,kBAAkB,eAAe;GACrC,MAAM,IAAI,MAAM;AAChB,OAAI,CAAC,EAAG,QAAO;AACf,OAAI,MAAM,UAER,QAAO;AAET,UAAQ,gBAAgB,MAAM;IAC/B;EAED,MAAM,UAAU,eAAe,eAAe;GAAE,SAAS,gBAAgB;GAAO,MAAM,MAAM;GAAM,CAAC,CAAA;;uBAIjG,YAKoB,MAAA,kBAAA,EAAA;IAJjB,YAAU,MAAM;IAChB,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,MAAI,EAAI,MAAM,OAAO,MAAM,YAAY,KAAI,CAAA;;2BAEpE,CAAR,WAAQ,KAAA,QAAA,UAAA,CAAA,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AvatarGroup.js","names":[],"sources":["../../../src/components/avatar/AvatarGroup.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, toRef, ref, h, Fragment, type VNode } from 'vue'\nimport { composeClassName } from '../../utils/composeClassName'\nimport { useAvatarGroupProvide } from './avatar-group.context'\nimport Avatar from './Avatar.vue'\n\
|
|
1
|
+
{"version":3,"file":"AvatarGroup.js","names":[],"sources":["../../../src/components/avatar/AvatarGroup.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, toRef, ref, h, Fragment, type VNode } from 'vue'\nimport { type AvatarVariants } from '@auronui/styles'\nimport { composeClassName } from '../../utils/composeClassName'\nimport { useAvatarGroupProvide } from './avatar-group.context'\nimport Avatar from './Avatar.vue'\n\ntype AvatarShorthandItem = {\n src?: string\n alt?: string\n name?: string\n color?: AvatarVariants['color']\n variant?: AvatarVariants['variant']\n isBordered?: boolean\n isDisabled?: boolean\n showFallback?: boolean\n}\n\nconst props = withDefaults(defineProps<{\n size?: 'sm' | 'md' | 'lg'\n isBordered?: boolean\n isDisabled?: boolean\n isGrid?: boolean\n max?: number\n total?: number\n renderCount?: (count: number) => string\n class?: string\n /** Shorthand API: render avatars from an array instead of the compound slot API */\n avatars?: AvatarShorthandItem[]\n}>(), {\n size: 'md',\n\n isBordered: false,\n isDisabled: false,\n isGrid: false,\n})\n\nconst slots = defineSlots<{\n default?(): VNode[];\n}>()\n\n// Provide context using toRef() for reactivity (canonical pattern from ButtonGroup)\nuseAvatarGroupProvide({\n size: toRef(props, 'size'),\n isBordered: toRef(props, 'isBordered'),\n isDisabled: toRef(props, 'isDisabled'),\n isGrid: toRef(props, 'isGrid'),\n isInGroup: ref(true),\n})\n\nconst containerClass = computed(() =>\n composeClassName('flex items-center flex-row', props.class)\n)\n\nconst visibleAvatars = computed(() => {\n if (!props.avatars) return []\n return props.max !== undefined ? props.avatars.slice(0, props.max) : props.avatars\n})\nconst avatarOverflowCount = computed(() => {\n if (!props.avatars || props.max === undefined) return 0\n const total = props.total ?? props.avatars.length\n return total - props.max\n})\nconst avatarOverflowLabel = computed(() => {\n if (avatarOverflowCount.value <= 0) return ''\n return props.renderCount ? props.renderCount(avatarOverflowCount.value) : `+${avatarOverflowCount.value}`\n})\n\n// Flatten slot vnodes (handles Fragments from v-for etc.)\nfunction flattenVNodes(vnodes: VNode[]): VNode[] {\n const result: VNode[] = []\n for (const vnode of vnodes) {\n if (vnode.type === Fragment && Array.isArray(vnode.children)) {\n result.push(...flattenVNodes(vnode.children as VNode[]))\n } else {\n result.push(vnode)\n }\n }\n return result\n}\n\n// Determine which vnodes to render when max is set\nfunction getSlicedNodes(): VNode[] {\n const defaultSlot = slots.default?.()\n if (!defaultSlot) return []\n\n const allNodes = flattenVNodes(defaultSlot)\n\n if (props.max === undefined) {\n return allNodes\n }\n\n const visibleNodes = allNodes.slice(0, props.max)\n const totalCount = props.total ?? allNodes.length\n const overflowCount = totalCount - props.max\n\n if (overflowCount <= 0) {\n return visibleNodes\n }\n\n const counterLabel = props.renderCount\n ? props.renderCount(overflowCount)\n : `+${overflowCount}`\n\n // Render counter avatar with a fallback slot so the full label string is shown\n const counterNode = h(Avatar, {}, {\n fallback: () => h('span', { class: 'avatar__name text-xs font-medium leading-none' }, counterLabel),\n })\n\n return [...visibleNodes, counterNode]\n}\n</script>\n\n<template>\n <div\n role=\"group\"\n :class=\"containerClass\"\n >\n <template v-if=\"props.avatars\">\n <Avatar\n v-for=\"(avatar, idx) in visibleAvatars\"\n :key=\"idx\"\n v-bind=\"avatar\"\n />\n <Avatar v-if=\"avatarOverflowCount > 0\">\n <template #fallback>\n <span class=\"avatar__name text-xs font-medium leading-none\">{{ avatarOverflowLabel }}</span>\n </template>\n </Avatar>\n </template>\n <template v-else-if=\"props.max !== undefined\">\n <!-- Use render function output for sliced vnodes -->\n <template\n v-for=\"(node, _i) in getSlicedNodes()\"\n :key=\"_i\"\n >\n <component :is=\"node\" />\n </template>\n </template>\n <template v-else>\n <slot />\n </template>\n </div>\n</template>\n"],"mappings":""}
|
|
@@ -2,6 +2,7 @@ import { composeClassName } from "../../utils/composeClassName.js";
|
|
|
2
2
|
import { useAvatarGroupProvide } from "./avatar-group.context.js";
|
|
3
3
|
import Avatar_default from "./Avatar.js";
|
|
4
4
|
import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, defineComponent, h, mergeProps, normalizeClass, openBlock, ref, renderList, renderSlot, resolveDynamicComponent, toDisplayString, toRef, useSlots, withCtx } from "vue";
|
|
5
|
+
import "@auronui/styles";
|
|
5
6
|
//#region src/components/avatar/AvatarGroup.vue?vue&type=script&setup=true&lang.ts
|
|
6
7
|
var _hoisted_1 = { class: "avatar__name text-xs font-medium leading-none" };
|
|
7
8
|
var AvatarGroup_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AvatarGroup.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/avatar/AvatarGroup.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, toRef, ref, h, Fragment, type VNode } from 'vue'\nimport { composeClassName } from '../../utils/composeClassName'\nimport { useAvatarGroupProvide } from './avatar-group.context'\nimport Avatar from './Avatar.vue'\n\
|
|
1
|
+
{"version":3,"file":"AvatarGroup.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/avatar/AvatarGroup.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, toRef, ref, h, Fragment, type VNode } from 'vue'\nimport { type AvatarVariants } from '@auronui/styles'\nimport { composeClassName } from '../../utils/composeClassName'\nimport { useAvatarGroupProvide } from './avatar-group.context'\nimport Avatar from './Avatar.vue'\n\ntype AvatarShorthandItem = {\n src?: string\n alt?: string\n name?: string\n color?: AvatarVariants['color']\n variant?: AvatarVariants['variant']\n isBordered?: boolean\n isDisabled?: boolean\n showFallback?: boolean\n}\n\nconst props = withDefaults(defineProps<{\n size?: 'sm' | 'md' | 'lg'\n isBordered?: boolean\n isDisabled?: boolean\n isGrid?: boolean\n max?: number\n total?: number\n renderCount?: (count: number) => string\n class?: string\n /** Shorthand API: render avatars from an array instead of the compound slot API */\n avatars?: AvatarShorthandItem[]\n}>(), {\n size: 'md',\n\n isBordered: false,\n isDisabled: false,\n isGrid: false,\n})\n\nconst slots = defineSlots<{\n default?(): VNode[];\n}>()\n\n// Provide context using toRef() for reactivity (canonical pattern from ButtonGroup)\nuseAvatarGroupProvide({\n size: toRef(props, 'size'),\n isBordered: toRef(props, 'isBordered'),\n isDisabled: toRef(props, 'isDisabled'),\n isGrid: toRef(props, 'isGrid'),\n isInGroup: ref(true),\n})\n\nconst containerClass = computed(() =>\n composeClassName('flex items-center flex-row', props.class)\n)\n\nconst visibleAvatars = computed(() => {\n if (!props.avatars) return []\n return props.max !== undefined ? props.avatars.slice(0, props.max) : props.avatars\n})\nconst avatarOverflowCount = computed(() => {\n if (!props.avatars || props.max === undefined) return 0\n const total = props.total ?? props.avatars.length\n return total - props.max\n})\nconst avatarOverflowLabel = computed(() => {\n if (avatarOverflowCount.value <= 0) return ''\n return props.renderCount ? props.renderCount(avatarOverflowCount.value) : `+${avatarOverflowCount.value}`\n})\n\n// Flatten slot vnodes (handles Fragments from v-for etc.)\nfunction flattenVNodes(vnodes: VNode[]): VNode[] {\n const result: VNode[] = []\n for (const vnode of vnodes) {\n if (vnode.type === Fragment && Array.isArray(vnode.children)) {\n result.push(...flattenVNodes(vnode.children as VNode[]))\n } else {\n result.push(vnode)\n }\n }\n return result\n}\n\n// Determine which vnodes to render when max is set\nfunction getSlicedNodes(): VNode[] {\n const defaultSlot = slots.default?.()\n if (!defaultSlot) return []\n\n const allNodes = flattenVNodes(defaultSlot)\n\n if (props.max === undefined) {\n return allNodes\n }\n\n const visibleNodes = allNodes.slice(0, props.max)\n const totalCount = props.total ?? allNodes.length\n const overflowCount = totalCount - props.max\n\n if (overflowCount <= 0) {\n return visibleNodes\n }\n\n const counterLabel = props.renderCount\n ? props.renderCount(overflowCount)\n : `+${overflowCount}`\n\n // Render counter avatar with a fallback slot so the full label string is shown\n const counterNode = h(Avatar, {}, {\n fallback: () => h('span', { class: 'avatar__name text-xs font-medium leading-none' }, counterLabel),\n })\n\n return [...visibleNodes, counterNode]\n}\n</script>\n\n<template>\n <div\n role=\"group\"\n :class=\"containerClass\"\n >\n <template v-if=\"props.avatars\">\n <Avatar\n v-for=\"(avatar, idx) in visibleAvatars\"\n :key=\"idx\"\n v-bind=\"avatar\"\n />\n <Avatar v-if=\"avatarOverflowCount > 0\">\n <template #fallback>\n <span class=\"avatar__name text-xs font-medium leading-none\">{{ avatarOverflowLabel }}</span>\n </template>\n </Avatar>\n </template>\n <template v-else-if=\"props.max !== undefined\">\n <!-- Use render function output for sliced vnodes -->\n <template\n v-for=\"(node, _i) in getSlicedNodes()\"\n :key=\"_i\"\n >\n <component :is=\"node\" />\n </template>\n </template>\n <template v-else>\n <slot />\n </template>\n </div>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkBA,MAAM,QAAQ;EAmBd,MAAM,QAAQ,UAAA;AAKd,wBAAsB;GACpB,MAAM,MAAM,OAAO,OAAO;GAC1B,YAAY,MAAM,OAAO,aAAa;GACtC,YAAY,MAAM,OAAO,aAAa;GACtC,QAAQ,MAAM,OAAO,SAAS;GAC9B,WAAW,IAAI,KAAK;GACrB,CAAA;EAED,MAAM,iBAAiB,eACrB,iBAAiB,8BAA8B,MAAM,MAAK,CAC5D;EAEA,MAAM,iBAAiB,eAAe;AACpC,OAAI,CAAC,MAAM,QAAS,QAAO,EAAC;AAC5B,UAAO,MAAM,QAAQ,KAAA,IAAY,MAAM,QAAQ,MAAM,GAAG,MAAM,IAAI,GAAG,MAAM;IAC5E;EACD,MAAM,sBAAsB,eAAe;AACzC,OAAI,CAAC,MAAM,WAAW,MAAM,QAAQ,KAAA,EAAW,QAAO;AAEtD,WADc,MAAM,SAAS,MAAM,QAAQ,UAC5B,MAAM;IACtB;EACD,MAAM,sBAAsB,eAAe;AACzC,OAAI,oBAAoB,SAAS,EAAG,QAAO;AAC3C,UAAO,MAAM,cAAc,MAAM,YAAY,oBAAoB,MAAM,GAAG,IAAI,oBAAoB;IACnG;EAGD,SAAS,cAAc,QAA0B;GAC/C,MAAM,SAAkB,EAAC;AACzB,QAAK,MAAM,SAAS,OAClB,KAAI,MAAM,SAAS,YAAY,MAAM,QAAQ,MAAM,SAAS,CAC1D,QAAO,KAAK,GAAG,cAAc,MAAM,SAAoB,CAAA;OAEvD,QAAO,KAAK,MAAK;AAGrB,UAAO;;EAIT,SAAS,iBAA0B;GACjC,MAAM,cAAc,MAAM,WAAU;AACpC,OAAI,CAAC,YAAa,QAAO,EAAC;GAE1B,MAAM,WAAW,cAAc,YAAW;AAE1C,OAAI,MAAM,QAAQ,KAAA,EAChB,QAAO;GAGT,MAAM,eAAe,SAAS,MAAM,GAAG,MAAM,IAAG;GAEhD,MAAM,iBADa,MAAM,SAAS,SAAS,UACR,MAAM;AAEzC,OAAI,iBAAiB,EACnB,QAAO;GAGT,MAAM,eAAe,MAAM,cACvB,MAAM,YAAY,cAAa,GAC/B,IAAI;GAGR,MAAM,cAAc,EAAE,gBAAQ,EAAE,EAAE,EAChC,gBAAgB,EAAE,QAAQ,EAAE,OAAO,iDAAiD,EAAE,aAAa,EACpG,CAAA;AAED,UAAO,CAAC,GAAG,cAAc,YAAW;;;uBAKpC,mBA4BM,OAAA;IA3BJ,MAAK;IACJ,OAAK,eAAE,eAAA,MAAc;OAEN,MAAM,WAAA,WAAA,EAAtB,mBAWW,UAAA,EAAA,KAAA,GAAA,EAAA,EAAA,UAAA,KAAA,EAVT,mBAIE,UAAA,MAAA,WAHwB,eAAA,QAAhB,QAAQ,QAAG;wBADrB,YAIE,gBAJF,WAIE,EAFC,KAAK,KAAG,EAAA,EAAA,SAAA,MAAA,EACD,OAAM,EAAA,MAAA,GAAA;cAEF,oBAAA,QAAmB,KAAA,WAAA,EAAjC,YAIS,gBAAA,EAAA,KAAA,GAAA,EAAA;IAHI,UAAQ,cAC2E,CAA5F,mBAA4F,QAA5F,YAA4F,gBAA7B,oBAAA,MAAmB,EAAA,EAAA,CAAA,CAAA;;+CAInE,MAAM,QAAQ,KAAA,KAAA,UAAA,KAAA,EAEjC,mBAKW,UAAA,EAAA,KAAA,GAAA,EAAA,WAJY,gBAAc,GAA3B,MAAM,OAAE;wBAGhB,YAAwB,wBAAR,KAAI,EAAA,EAAA,KAFd,IAAE,CAAA;eAMV,WAAQ,KAAA,QAAA,WAAA,EAAA,KAAA,GAAA,CAAA,CAAA,EAAA,EAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Button.js","names":[],"sources":["../../../src/components/button/Button.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, ref } from 'vue'\nimport { Primitive } from 'reka-ui'\nimport { buttonVariants, type ButtonVariants } from '@auronui/styles'\nimport { composeClassName , type ClassValue} from '../../utils/composeClassName'\nimport { useButtonGroupInject } from './button-group.context'\nimport Spinner from '../spinner/Spinner.vue'\n\nconst props = withDefaults(defineProps<{\n variant?: ButtonVariants['variant']\n color?: ButtonVariants['color']\n size?: ButtonVariants['size']\n radius?: ButtonVariants['radius']\n isIconOnly?: boolean\n fullWidth?: boolean\n disabled?: boolean\n isLoading?: boolean\n as?: string | object\n class?: ClassValue\n /** Override classes for individual slots (base, startContent, label, endContent, spinner) */\n classNames?: Partial<{\n base: ClassValue\n startContent: ClassValue\n label: ClassValue\n endContent: ClassValue\n spinner: ClassValue\n }>\n value?: string | number\n}>(), {\n variant: undefined,\n color: undefined,\n size: undefined,\n radius: undefined,\n isIconOnly: false,\n fullWidth: false,\n disabled: false,\n isLoading: false,\n as: 'button',\n value: undefined,\n})\n\n// Inject ButtonGroup context unconditionally with fallback defaults (D-12)\n// When no ButtonGroup is present, inject returns these fallback values (no-op)\nconst groupCtx = useButtonGroupInject({\n variant: ref('solid'),\n color: ref('primary'),\n size: ref('md'),\n disabled: ref(false),\n fullWidth: ref(false),\n orientation: ref('horizontal'),\n selectionMode: ref('single'),\n selectedValue: ref(null),\n isValueSelected: () => false,\n selectValue: () => {},\n})\n\nconst isSelected = computed(() => groupCtx.isValueSelected(props.value))\n\nfunction handleClick() {\n if (props.value !== undefined) groupCtx.selectValue(props.value)\n}\n\n// Prop precedence rules (D-13):\n// - group disabled ALWAYS wins over child prop\n// - all other props: child prop wins over group value (child ?? group)\nconst isDisabled = computed(() => groupCtx.disabled.value || props.disabled)\nconst finalVariant = computed(() => props.variant ?? groupCtx.variant.value)\nconst finalColor = computed(() => props.color ?? groupCtx.color.value)\nconst finalSize = computed(() => props.size ?? groupCtx.size.value)\nconst finalFullWidth = computed(() => props.fullWidth || groupCtx.fullWidth.value)\n\n// Map legacy variant names to new variant+color so old usage keeps working\nconst LEGACY_VARIANTS: Record<string, { variant: string; color: string }> = {\n primary: { variant: 'solid', color: 'primary' },\n secondary: { variant: 'default', color: 'default' },\n tertiary: { variant: 'default', color: 'default' },\n danger: { variant: 'solid', color: 'danger' },\n 'danger-soft': { variant: 'soft', color: 'danger' },\n success: { variant: 'solid', color: 'success' },\n 'success-soft':{ variant: 'soft', color: 'success' },\n warning: { variant: 'solid', color: 'warning' },\n 'warning-soft':{ variant: 'soft', color: 'warning' },\n}\n\nconst resolvedVariant = computed(() => {\n const v = finalVariant.value\n return (LEGACY_VARIANTS[v]?.variant ?? v) as ButtonVariants['variant']\n})\n\nconst resolvedColor = computed(() => {\n const v = finalVariant.value\n // If caller explicitly set color, respect it; otherwise infer from legacy variant\n if (props.color === undefined && LEGACY_VARIANTS[v]) return LEGACY_VARIANTS[v].color as ButtonVariants['color']\n return finalColor.value\n})\n\nconst slotFns = computed(() =>\n buttonVariants({\n variant: resolvedVariant.value,\n color: resolvedColor.value,\n size: finalSize.value,\n radius: props.radius,\n isIconOnly: props.isIconOnly,\n fullWidth: finalFullWidth.value,\n isLoading: props.isLoading,\n })\n)\n\n// Spinner size scales with button size\nconst spinnerSize = computed(() => {\n if (finalSize.value === 'xs' || finalSize.value === 'sm') return 'sm' as const\n if (finalSize.value === 'lg' || finalSize.value === 'xl') return 'lg' as const\n return 'md' as const\n})\n</script>\n\n<template>\n <Primitive\n :as=\"props.as\"\n :class=\"composeClassName(slotFns.base(), props.class, props.classNames?.base)\"\n :disabled=\"isDisabled || props.isLoading || undefined\"\n :data-disabled=\"isDisabled || undefined\"\n :data-loading=\"props.isLoading || undefined\"\n :data-orientation=\"groupCtx.orientation.value\"\n :data-selected=\"isSelected || undefined\"\n v-bind=\"$attrs\"\n @click=\"handleClick\"\n >\n <!-- startContent named slot -->\n <span\n v-if=\"$slots.startContent\"\n :class=\"composeClassName(slotFns.startContent(), props.classNames?.startContent)\"\n >\n <slot name=\"startContent\" />\n </span>\n\n <!-- default (label) slot -->\n <span :class=\"composeClassName(slotFns.label(), props.classNames?.label)\">\n <slot />\n </span>\n\n <!-- endContent named slot -->\n <span\n v-if=\"$slots.endContent\"\n :class=\"composeClassName(slotFns.endContent(), props.classNames?.endContent)\"\n >\n <slot name=\"endContent\" />\n </span>\n\n <!-- Loading spinner: absolute-centered, only rendered when isLoading=true (D-08, D-09) -->\n <!-- color=\"current\" inherits --button-fg so spinner contrasts with the button background -->\n <span\n v-if=\"props.isLoading\"\n :class=\"composeClassName(slotFns.spinner(), props.classNames?.spinner)\"\n aria-hidden=\"true\"\n data-slot=\"spinner\"\n >\n <Spinner\n :size=\"spinnerSize\"\n color=\"current\"\n />\n </span>\n </Primitive>\n</template>\n"],"mappings":""}
|
|
1
|
+
{"version":3,"file":"Button.js","names":[],"sources":["../../../src/components/button/Button.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, ref } from 'vue'\nimport { Primitive } from 'reka-ui'\nimport { buttonVariants, type ButtonVariants } from '@auronui/styles'\nimport { composeClassName , type ClassValue} from '../../utils/composeClassName'\nimport { useButtonGroupInject } from './button-group.context'\nimport Spinner from '../spinner/Spinner.vue'\nimport { warnDeprecatedVariant } from '../../utils/warnDeprecated'\n\nconst props = withDefaults(defineProps<{\n /**\n * Visual style of the button.\n * @deprecated 'outline' — use 'bordered' instead.\n */\n variant?: ButtonVariants['variant'] | 'outline'\n color?: ButtonVariants['color']\n size?: ButtonVariants['size']\n radius?: ButtonVariants['radius']\n isIconOnly?: boolean\n fullWidth?: boolean\n disabled?: boolean\n isLoading?: boolean\n as?: string | object\n class?: ClassValue\n /** Override classes for individual slots (base, startContent, label, endContent, spinner) */\n classNames?: Partial<{\n base: ClassValue\n startContent: ClassValue\n label: ClassValue\n endContent: ClassValue\n spinner: ClassValue\n }>\n value?: string | number\n}>(), {\n variant: undefined,\n color: undefined,\n size: undefined,\n radius: undefined,\n isIconOnly: false,\n fullWidth: false,\n disabled: false,\n isLoading: false,\n as: 'button',\n value: undefined,\n})\n\n// Inject ButtonGroup context unconditionally with fallback defaults (D-12)\n// When no ButtonGroup is present, inject returns these fallback values (no-op)\nconst groupCtx = useButtonGroupInject({\n variant: ref('solid'),\n color: ref('primary'),\n size: ref('md'),\n disabled: ref(false),\n fullWidth: ref(false),\n orientation: ref('horizontal'),\n selectionMode: ref('single'),\n selectedValue: ref(null),\n isValueSelected: () => false,\n selectValue: () => {},\n})\n\nconst isSelected = computed(() => groupCtx.isValueSelected(props.value))\n\nfunction handleClick() {\n if (props.value !== undefined) groupCtx.selectValue(props.value)\n}\n\n// Prop precedence rules (D-13):\n// - group disabled ALWAYS wins over child prop\n// - all other props: child prop wins over group value (child ?? group)\nconst isDisabled = computed(() => groupCtx.disabled.value || props.disabled)\nconst finalVariant = computed(() => props.variant ?? groupCtx.variant.value)\nconst finalColor = computed(() => props.color ?? groupCtx.color.value)\nconst finalSize = computed(() => props.size ?? groupCtx.size.value)\nconst finalFullWidth = computed(() => props.fullWidth || groupCtx.fullWidth.value)\n\n// Map legacy variant names to new variant+color so old usage keeps working\nconst LEGACY_VARIANTS: Record<string, { variant: string; color: string }> = {\n primary: { variant: 'solid', color: 'primary' },\n secondary: { variant: 'default', color: 'default' },\n tertiary: { variant: 'default', color: 'default' },\n danger: { variant: 'solid', color: 'danger' },\n 'danger-soft': { variant: 'soft', color: 'danger' },\n success: { variant: 'solid', color: 'success' },\n 'success-soft':{ variant: 'soft', color: 'success' },\n warning: { variant: 'solid', color: 'warning' },\n 'warning-soft':{ variant: 'soft', color: 'warning' },\n}\n\nconst resolvedVariant = computed(() => {\n const v = finalVariant.value\n if (!v) return v\n if (v === 'outline') {\n warnDeprecatedVariant('Button', 'outline', 'bordered')\n return 'bordered' as ButtonVariants['variant']\n }\n return (LEGACY_VARIANTS[v]?.variant ?? v) as ButtonVariants['variant']\n})\n\nconst resolvedColor = computed(() => {\n const v = finalVariant.value\n // If caller explicitly set color, respect it; otherwise infer from legacy variant\n if (props.color === undefined && v && LEGACY_VARIANTS[v]) return LEGACY_VARIANTS[v].color as ButtonVariants['color']\n return finalColor.value\n})\n\nconst slotFns = computed(() =>\n buttonVariants({\n variant: resolvedVariant.value,\n color: resolvedColor.value,\n size: finalSize.value,\n radius: props.radius,\n isIconOnly: props.isIconOnly,\n fullWidth: finalFullWidth.value,\n isLoading: props.isLoading,\n })\n)\n\n// Spinner size scales with button size\nconst spinnerSize = computed(() => {\n if (finalSize.value === 'xs' || finalSize.value === 'sm') return 'sm' as const\n if (finalSize.value === 'lg' || finalSize.value === 'xl') return 'lg' as const\n return 'md' as const\n})\n</script>\n\n<template>\n <Primitive\n :as=\"props.as\"\n :class=\"composeClassName(slotFns.base(), props.class, props.classNames?.base)\"\n :disabled=\"isDisabled || props.isLoading || undefined\"\n :data-disabled=\"isDisabled || undefined\"\n :data-loading=\"props.isLoading || undefined\"\n :data-orientation=\"groupCtx.orientation.value\"\n :data-selected=\"isSelected || undefined\"\n v-bind=\"$attrs\"\n @click=\"handleClick\"\n >\n <!-- startContent named slot -->\n <span\n v-if=\"$slots.startContent\"\n :class=\"composeClassName(slotFns.startContent(), props.classNames?.startContent)\"\n >\n <slot name=\"startContent\" />\n </span>\n\n <!-- default (label) slot -->\n <span :class=\"composeClassName(slotFns.label(), props.classNames?.label)\">\n <slot />\n </span>\n\n <!-- endContent named slot -->\n <span\n v-if=\"$slots.endContent\"\n :class=\"composeClassName(slotFns.endContent(), props.classNames?.endContent)\"\n >\n <slot name=\"endContent\" />\n </span>\n\n <!-- Loading spinner: absolute-centered, only rendered when isLoading=true (D-08, D-09) -->\n <!-- color=\"current\" inherits --button-fg so spinner contrasts with the button background -->\n <span\n v-if=\"props.isLoading\"\n :class=\"composeClassName(slotFns.spinner(), props.classNames?.spinner)\"\n aria-hidden=\"true\"\n data-slot=\"spinner\"\n >\n <Spinner\n :size=\"spinnerSize\"\n color=\"current\"\n />\n </span>\n </Primitive>\n</template>\n"],"mappings":""}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { composeClassName } from "../../utils/composeClassName.js";
|
|
2
2
|
import Spinner_default from "../spinner/Spinner.js";
|
|
3
|
+
import "../../utils/warnDeprecated.js";
|
|
3
4
|
import { useButtonGroupInject } from "./button-group.context.js";
|
|
4
5
|
import { computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createVNode, defineComponent, mergeProps, normalizeClass, openBlock, ref, renderSlot, unref, withCtx } from "vue";
|
|
5
6
|
import { buttonVariants } from "@auronui/styles";
|
|
@@ -102,11 +103,13 @@ var Button_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineC
|
|
|
102
103
|
};
|
|
103
104
|
const resolvedVariant = computed(() => {
|
|
104
105
|
const v = finalVariant.value;
|
|
106
|
+
if (!v) return v;
|
|
107
|
+
if (v === "outline") return "bordered";
|
|
105
108
|
return LEGACY_VARIANTS[v]?.variant ?? v;
|
|
106
109
|
});
|
|
107
110
|
const resolvedColor = computed(() => {
|
|
108
111
|
const v = finalVariant.value;
|
|
109
|
-
if (props.color === void 0 && LEGACY_VARIANTS[v]) return LEGACY_VARIANTS[v].color;
|
|
112
|
+
if (props.color === void 0 && v && LEGACY_VARIANTS[v]) return LEGACY_VARIANTS[v].color;
|
|
110
113
|
return finalColor.value;
|
|
111
114
|
});
|
|
112
115
|
const slotFns = computed(() => buttonVariants({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Button.vue_vue_type_script_setup_true_lang.js","names":["$attrs","$slots"],"sources":["../../../src/components/button/Button.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, ref } from 'vue'\nimport { Primitive } from 'reka-ui'\nimport { buttonVariants, type ButtonVariants } from '@auronui/styles'\nimport { composeClassName , type ClassValue} from '../../utils/composeClassName'\nimport { useButtonGroupInject } from './button-group.context'\nimport Spinner from '../spinner/Spinner.vue'\n\nconst props = withDefaults(defineProps<{\n variant?: ButtonVariants['variant']\n color?: ButtonVariants['color']\n size?: ButtonVariants['size']\n radius?: ButtonVariants['radius']\n isIconOnly?: boolean\n fullWidth?: boolean\n disabled?: boolean\n isLoading?: boolean\n as?: string | object\n class?: ClassValue\n /** Override classes for individual slots (base, startContent, label, endContent, spinner) */\n classNames?: Partial<{\n base: ClassValue\n startContent: ClassValue\n label: ClassValue\n endContent: ClassValue\n spinner: ClassValue\n }>\n value?: string | number\n}>(), {\n variant: undefined,\n color: undefined,\n size: undefined,\n radius: undefined,\n isIconOnly: false,\n fullWidth: false,\n disabled: false,\n isLoading: false,\n as: 'button',\n value: undefined,\n})\n\n// Inject ButtonGroup context unconditionally with fallback defaults (D-12)\n// When no ButtonGroup is present, inject returns these fallback values (no-op)\nconst groupCtx = useButtonGroupInject({\n variant: ref('solid'),\n color: ref('primary'),\n size: ref('md'),\n disabled: ref(false),\n fullWidth: ref(false),\n orientation: ref('horizontal'),\n selectionMode: ref('single'),\n selectedValue: ref(null),\n isValueSelected: () => false,\n selectValue: () => {},\n})\n\nconst isSelected = computed(() => groupCtx.isValueSelected(props.value))\n\nfunction handleClick() {\n if (props.value !== undefined) groupCtx.selectValue(props.value)\n}\n\n// Prop precedence rules (D-13):\n// - group disabled ALWAYS wins over child prop\n// - all other props: child prop wins over group value (child ?? group)\nconst isDisabled = computed(() => groupCtx.disabled.value || props.disabled)\nconst finalVariant = computed(() => props.variant ?? groupCtx.variant.value)\nconst finalColor = computed(() => props.color ?? groupCtx.color.value)\nconst finalSize = computed(() => props.size ?? groupCtx.size.value)\nconst finalFullWidth = computed(() => props.fullWidth || groupCtx.fullWidth.value)\n\n// Map legacy variant names to new variant+color so old usage keeps working\nconst LEGACY_VARIANTS: Record<string, { variant: string; color: string }> = {\n primary: { variant: 'solid', color: 'primary' },\n secondary: { variant: 'default', color: 'default' },\n tertiary: { variant: 'default', color: 'default' },\n danger: { variant: 'solid', color: 'danger' },\n 'danger-soft': { variant: 'soft', color: 'danger' },\n success: { variant: 'solid', color: 'success' },\n 'success-soft':{ variant: 'soft', color: 'success' },\n warning: { variant: 'solid', color: 'warning' },\n 'warning-soft':{ variant: 'soft', color: 'warning' },\n}\n\nconst resolvedVariant = computed(() => {\n const v = finalVariant.value\n return (LEGACY_VARIANTS[v]?.variant ?? v) as ButtonVariants['variant']\n})\n\nconst resolvedColor = computed(() => {\n const v = finalVariant.value\n // If caller explicitly set color, respect it; otherwise infer from legacy variant\n if (props.color === undefined && LEGACY_VARIANTS[v]) return LEGACY_VARIANTS[v].color as ButtonVariants['color']\n return finalColor.value\n})\n\nconst slotFns = computed(() =>\n buttonVariants({\n variant: resolvedVariant.value,\n color: resolvedColor.value,\n size: finalSize.value,\n radius: props.radius,\n isIconOnly: props.isIconOnly,\n fullWidth: finalFullWidth.value,\n isLoading: props.isLoading,\n })\n)\n\n// Spinner size scales with button size\nconst spinnerSize = computed(() => {\n if (finalSize.value === 'xs' || finalSize.value === 'sm') return 'sm' as const\n if (finalSize.value === 'lg' || finalSize.value === 'xl') return 'lg' as const\n return 'md' as const\n})\n</script>\n\n<template>\n <Primitive\n :as=\"props.as\"\n :class=\"composeClassName(slotFns.base(), props.class, props.classNames?.base)\"\n :disabled=\"isDisabled || props.isLoading || undefined\"\n :data-disabled=\"isDisabled || undefined\"\n :data-loading=\"props.isLoading || undefined\"\n :data-orientation=\"groupCtx.orientation.value\"\n :data-selected=\"isSelected || undefined\"\n v-bind=\"$attrs\"\n @click=\"handleClick\"\n >\n <!-- startContent named slot -->\n <span\n v-if=\"$slots.startContent\"\n :class=\"composeClassName(slotFns.startContent(), props.classNames?.startContent)\"\n >\n <slot name=\"startContent\" />\n </span>\n\n <!-- default (label) slot -->\n <span :class=\"composeClassName(slotFns.label(), props.classNames?.label)\">\n <slot />\n </span>\n\n <!-- endContent named slot -->\n <span\n v-if=\"$slots.endContent\"\n :class=\"composeClassName(slotFns.endContent(), props.classNames?.endContent)\"\n >\n <slot name=\"endContent\" />\n </span>\n\n <!-- Loading spinner: absolute-centered, only rendered when isLoading=true (D-08, D-09) -->\n <!-- color=\"current\" inherits --button-fg so spinner contrasts with the button background -->\n <span\n v-if=\"props.isLoading\"\n :class=\"composeClassName(slotFns.spinner(), props.classNames?.spinner)\"\n aria-hidden=\"true\"\n data-slot=\"spinner\"\n >\n <Spinner\n :size=\"spinnerSize\"\n color=\"current\"\n />\n </span>\n </Primitive>\n</template>\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"Button.vue_vue_type_script_setup_true_lang.js","names":["$attrs","$slots"],"sources":["../../../src/components/button/Button.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, ref } from 'vue'\nimport { Primitive } from 'reka-ui'\nimport { buttonVariants, type ButtonVariants } from '@auronui/styles'\nimport { composeClassName , type ClassValue} from '../../utils/composeClassName'\nimport { useButtonGroupInject } from './button-group.context'\nimport Spinner from '../spinner/Spinner.vue'\nimport { warnDeprecatedVariant } from '../../utils/warnDeprecated'\n\nconst props = withDefaults(defineProps<{\n /**\n * Visual style of the button.\n * @deprecated 'outline' — use 'bordered' instead.\n */\n variant?: ButtonVariants['variant'] | 'outline'\n color?: ButtonVariants['color']\n size?: ButtonVariants['size']\n radius?: ButtonVariants['radius']\n isIconOnly?: boolean\n fullWidth?: boolean\n disabled?: boolean\n isLoading?: boolean\n as?: string | object\n class?: ClassValue\n /** Override classes for individual slots (base, startContent, label, endContent, spinner) */\n classNames?: Partial<{\n base: ClassValue\n startContent: ClassValue\n label: ClassValue\n endContent: ClassValue\n spinner: ClassValue\n }>\n value?: string | number\n}>(), {\n variant: undefined,\n color: undefined,\n size: undefined,\n radius: undefined,\n isIconOnly: false,\n fullWidth: false,\n disabled: false,\n isLoading: false,\n as: 'button',\n value: undefined,\n})\n\n// Inject ButtonGroup context unconditionally with fallback defaults (D-12)\n// When no ButtonGroup is present, inject returns these fallback values (no-op)\nconst groupCtx = useButtonGroupInject({\n variant: ref('solid'),\n color: ref('primary'),\n size: ref('md'),\n disabled: ref(false),\n fullWidth: ref(false),\n orientation: ref('horizontal'),\n selectionMode: ref('single'),\n selectedValue: ref(null),\n isValueSelected: () => false,\n selectValue: () => {},\n})\n\nconst isSelected = computed(() => groupCtx.isValueSelected(props.value))\n\nfunction handleClick() {\n if (props.value !== undefined) groupCtx.selectValue(props.value)\n}\n\n// Prop precedence rules (D-13):\n// - group disabled ALWAYS wins over child prop\n// - all other props: child prop wins over group value (child ?? group)\nconst isDisabled = computed(() => groupCtx.disabled.value || props.disabled)\nconst finalVariant = computed(() => props.variant ?? groupCtx.variant.value)\nconst finalColor = computed(() => props.color ?? groupCtx.color.value)\nconst finalSize = computed(() => props.size ?? groupCtx.size.value)\nconst finalFullWidth = computed(() => props.fullWidth || groupCtx.fullWidth.value)\n\n// Map legacy variant names to new variant+color so old usage keeps working\nconst LEGACY_VARIANTS: Record<string, { variant: string; color: string }> = {\n primary: { variant: 'solid', color: 'primary' },\n secondary: { variant: 'default', color: 'default' },\n tertiary: { variant: 'default', color: 'default' },\n danger: { variant: 'solid', color: 'danger' },\n 'danger-soft': { variant: 'soft', color: 'danger' },\n success: { variant: 'solid', color: 'success' },\n 'success-soft':{ variant: 'soft', color: 'success' },\n warning: { variant: 'solid', color: 'warning' },\n 'warning-soft':{ variant: 'soft', color: 'warning' },\n}\n\nconst resolvedVariant = computed(() => {\n const v = finalVariant.value\n if (!v) return v\n if (v === 'outline') {\n warnDeprecatedVariant('Button', 'outline', 'bordered')\n return 'bordered' as ButtonVariants['variant']\n }\n return (LEGACY_VARIANTS[v]?.variant ?? v) as ButtonVariants['variant']\n})\n\nconst resolvedColor = computed(() => {\n const v = finalVariant.value\n // If caller explicitly set color, respect it; otherwise infer from legacy variant\n if (props.color === undefined && v && LEGACY_VARIANTS[v]) return LEGACY_VARIANTS[v].color as ButtonVariants['color']\n return finalColor.value\n})\n\nconst slotFns = computed(() =>\n buttonVariants({\n variant: resolvedVariant.value,\n color: resolvedColor.value,\n size: finalSize.value,\n radius: props.radius,\n isIconOnly: props.isIconOnly,\n fullWidth: finalFullWidth.value,\n isLoading: props.isLoading,\n })\n)\n\n// Spinner size scales with button size\nconst spinnerSize = computed(() => {\n if (finalSize.value === 'xs' || finalSize.value === 'sm') return 'sm' as const\n if (finalSize.value === 'lg' || finalSize.value === 'xl') return 'lg' as const\n return 'md' as const\n})\n</script>\n\n<template>\n <Primitive\n :as=\"props.as\"\n :class=\"composeClassName(slotFns.base(), props.class, props.classNames?.base)\"\n :disabled=\"isDisabled || props.isLoading || undefined\"\n :data-disabled=\"isDisabled || undefined\"\n :data-loading=\"props.isLoading || undefined\"\n :data-orientation=\"groupCtx.orientation.value\"\n :data-selected=\"isSelected || undefined\"\n v-bind=\"$attrs\"\n @click=\"handleClick\"\n >\n <!-- startContent named slot -->\n <span\n v-if=\"$slots.startContent\"\n :class=\"composeClassName(slotFns.startContent(), props.classNames?.startContent)\"\n >\n <slot name=\"startContent\" />\n </span>\n\n <!-- default (label) slot -->\n <span :class=\"composeClassName(slotFns.label(), props.classNames?.label)\">\n <slot />\n </span>\n\n <!-- endContent named slot -->\n <span\n v-if=\"$slots.endContent\"\n :class=\"composeClassName(slotFns.endContent(), props.classNames?.endContent)\"\n >\n <slot name=\"endContent\" />\n </span>\n\n <!-- Loading spinner: absolute-centered, only rendered when isLoading=true (D-08, D-09) -->\n <!-- color=\"current\" inherits --button-fg so spinner contrasts with the button background -->\n <span\n v-if=\"props.isLoading\"\n :class=\"composeClassName(slotFns.spinner(), props.classNames?.spinner)\"\n aria-hidden=\"true\"\n data-slot=\"spinner\"\n >\n <Spinner\n :size=\"spinnerSize\"\n color=\"current\"\n />\n </span>\n </Primitive>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EASA,MAAM,QAAQ;EAuCd,MAAM,WAAW,qBAAqB;GACpC,SAAS,IAAI,QAAQ;GACrB,OAAO,IAAI,UAAU;GACrB,MAAM,IAAI,KAAK;GACf,UAAU,IAAI,MAAM;GACpB,WAAW,IAAI,MAAM;GACrB,aAAa,IAAI,aAAa;GAC9B,eAAe,IAAI,SAAS;GAC5B,eAAe,IAAI,KAAK;GACxB,uBAAuB;GACvB,mBAAmB;GACpB,CAAA;EAED,MAAM,aAAa,eAAe,SAAS,gBAAgB,MAAM,MAAM,CAAA;EAEvE,SAAS,cAAc;AACrB,OAAI,MAAM,UAAU,KAAA,EAAW,UAAS,YAAY,MAAM,MAAK;;EAMjE,MAAM,aAAa,eAAe,SAAS,SAAS,SAAS,MAAM,SAAQ;EAC3E,MAAM,eAAe,eAAe,MAAM,WAAW,SAAS,QAAQ,MAAK;EAC3E,MAAM,aAAa,eAAe,MAAM,SAAS,SAAS,MAAM,MAAK;EACrE,MAAM,YAAY,eAAe,MAAM,QAAQ,SAAS,KAAK,MAAK;EAClE,MAAM,iBAAiB,eAAe,MAAM,aAAa,SAAS,UAAU,MAAK;EAGjF,MAAM,kBAAsE;GAC1E,SAAe;IAAE,SAAS;IAAW,OAAO;IAAW;GACvD,WAAe;IAAE,SAAS;IAAW,OAAO;IAAW;GACvD,UAAe;IAAE,SAAS;IAAW,OAAO;IAAW;GACvD,QAAe;IAAE,SAAS;IAAW,OAAO;IAAU;GACtD,eAAe;IAAE,SAAS;IAAW,OAAO;IAAU;GACtD,SAAe;IAAE,SAAS;IAAW,OAAO;IAAW;GACvD,gBAAe;IAAE,SAAS;IAAW,OAAO;IAAW;GACvD,SAAe;IAAE,SAAS;IAAW,OAAO;IAAW;GACvD,gBAAe;IAAE,SAAS;IAAW,OAAO;IAAW;GACzD;EAEA,MAAM,kBAAkB,eAAe;GACrC,MAAM,IAAI,aAAa;AACvB,OAAI,CAAC,EAAG,QAAO;AACf,OAAI,MAAM,UAER,QAAO;AAET,UAAQ,gBAAgB,IAAI,WAAW;IACxC;EAED,MAAM,gBAAgB,eAAe;GACnC,MAAM,IAAI,aAAa;AAEvB,OAAI,MAAM,UAAU,KAAA,KAAa,KAAK,gBAAgB,GAAI,QAAO,gBAAgB,GAAG;AACpF,UAAO,WAAW;IACnB;EAED,MAAM,UAAU,eACd,eAAe;GACb,SAAS,gBAAgB;GACzB,OAAO,cAAc;GACrB,MAAM,UAAU;GAChB,QAAQ,MAAM;GACd,YAAY,MAAM;GAClB,WAAW,eAAe;GAC1B,WAAW,MAAM;GAClB,CAAA,CACH;EAGA,MAAM,cAAc,eAAe;AACjC,OAAI,UAAU,UAAU,QAAQ,UAAU,UAAU,KAAM,QAAO;AACjE,OAAI,UAAU,UAAU,QAAQ,UAAU,UAAU,KAAM,QAAO;AACjE,UAAO;IACR;;uBAIC,YA6CY,MAAA,UAAA,EA7CZ,WA6CY;IA5CT,IAAI,MAAM;IACV,OAAO,MAAA,iBAAgB,CAAC,QAAA,MAAQ,MAAI,EAAI,MAAM,OAAO,MAAM,YAAY,KAAI;IAC3E,UAAU,WAAA,SAAc,MAAM,aAAa,KAAA;IAC3C,iBAAe,WAAA,SAAc,KAAA;IAC7B,gBAAc,MAAM,aAAa,KAAA;IACjC,oBAAkB,MAAA,SAAQ,CAAC,YAAY;IACvC,iBAAe,WAAA,SAAc,KAAA;MACtBA,KAAAA,QAAM,EACb,SAAO,aAAW,CAAA,EAAA;2BAQZ;KAJCC,KAAAA,OAAO,gBAAA,WAAA,EADf,mBAKO,QAAA;;MAHJ,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,cAAY,EAAI,MAAM,YAAY,aAAY,CAAA;SAE/E,WAA4B,KAAA,QAAA,eAAA,CAAA,EAAA,EAAA,IAAA,mBAAA,IAAA,KAAA;KAI9B,mBAEO,QAAA,EAFA,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,OAAK,EAAI,MAAM,YAAY,MAAK,CAAA,EAAA,EAAA,CACrE,WAAQ,KAAA,QAAA,UAAA,CAAA,EAAA,EAAA;KAKFA,KAAAA,OAAO,cAAA,WAAA,EADf,mBAKO,QAAA;;MAHJ,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,YAAU,EAAI,MAAM,YAAY,WAAU,CAAA;SAE3E,WAA0B,KAAA,QAAA,aAAA,CAAA,EAAA,EAAA,IAAA,mBAAA,IAAA,KAAA;KAMpB,MAAM,aAAA,WAAA,EADd,mBAUO,QAAA;;MARJ,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,SAAO,EAAI,MAAM,YAAY,QAAO,CAAA;MACrE,eAAY;MACZ,aAAU;SAEV,YAGE,iBAAA;MAFC,MAAM,YAAA;MACP,OAAM"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Chip.js","names":[],"sources":["../../../src/components/chip/Chip.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from \"vue\";\nimport { chipVariants, type ChipVariants } from \"@auronui/styles\";\nimport { composeClassName , type ClassValue} from \"../../utils/composeClassName\";\n\nconst props = withDefaults(\n defineProps<{\n color?: ChipVariants[\"color\"];\n size?: ChipVariants[\"size\"];\n variant?: ChipVariants[\"variant\"];\n /** Show a colored dot indicator before the label */\n dot?: boolean;\n /** Render a built-in close button that emits `close` */\n isClosable?: boolean;\n /** Aria-label for the close button */\n closeAriaLabel?: string;\n class?: ClassValue;\n /** Override classes for named slots */\n classNames?: Partial<{\n base: ClassValue;\n dot: ClassValue;\n startContent: ClassValue;\n label: ClassValue;\n endContent: ClassValue;\n closeButton: ClassValue;\n }>;\n }>(),\n {\n color: \"default\",\n variant: \"solid\",\n dot: false,\n isClosable: false,\n closeAriaLabel: \"Remove\",\n }\n);\n\nconst emit = defineEmits<{\n (e: \"close\"): void;\n}>();\n\nconst slotFns = computed(() =>\n chipVariants({\n color: props.color,\n size: props.size,\n variant:
|
|
1
|
+
{"version":3,"file":"Chip.js","names":[],"sources":["../../../src/components/chip/Chip.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from \"vue\";\nimport { chipVariants, type ChipVariants } from \"@auronui/styles\";\nimport { composeClassName , type ClassValue} from \"../../utils/composeClassName\";\nimport { warnDeprecatedVariant } from '../../utils/warnDeprecated';\n\nconst props = withDefaults(\n defineProps<{\n color?: ChipVariants[\"color\"];\n size?: ChipVariants[\"size\"];\n /**\n * Visual style of the chip.\n * @deprecated 'outlined' — use 'bordered' instead.\n */\n variant?: ChipVariants[\"variant\"] | 'outlined';\n /** Show a colored dot indicator before the label */\n dot?: boolean;\n /** Render a built-in close button that emits `close` */\n isClosable?: boolean;\n /** Aria-label for the close button */\n closeAriaLabel?: string;\n class?: ClassValue;\n /** Override classes for named slots */\n classNames?: Partial<{\n base: ClassValue;\n dot: ClassValue;\n startContent: ClassValue;\n label: ClassValue;\n endContent: ClassValue;\n closeButton: ClassValue;\n }>;\n }>(),\n {\n color: \"default\",\n variant: \"solid\",\n dot: false,\n isClosable: false,\n closeAriaLabel: \"Remove\",\n }\n);\n\nconst emit = defineEmits<{\n (e: \"close\"): void;\n}>();\n\nconst resolvedVariant = computed(() => {\n if (props.variant === 'outlined') {\n warnDeprecatedVariant('Chip', 'outlined', 'bordered')\n return 'bordered' as ChipVariants['variant']\n }\n return props.variant\n})\n\nconst slotFns = computed(() =>\n chipVariants({\n color: props.color,\n size: props.size,\n variant: resolvedVariant.value,\n })\n);\n</script>\n\n<template>\n <span :class=\"composeClassName(slotFns.base(), props.class, props.classNames?.base)\">\n <span\n v-if=\"dot\"\n :class=\"composeClassName(slotFns.dot(), props.classNames?.dot)\"\n aria-hidden=\"true\"\n />\n <span\n v-if=\"$slots.startContent\"\n :class=\"composeClassName(slotFns.startContent(), props.classNames?.startContent)\"\n aria-hidden=\"true\"\n >\n <slot name=\"startContent\" />\n </span>\n\n <span :class=\"composeClassName(slotFns.label(), props.classNames?.label)\">\n <slot />\n </span>\n\n <span\n v-if=\"$slots.endContent && !isClosable\"\n :class=\"composeClassName(slotFns.endContent(), props.classNames?.endContent)\"\n aria-hidden=\"true\"\n >\n <slot name=\"endContent\" />\n </span>\n\n <button\n v-if=\"isClosable\"\n type=\"button\"\n :class=\"composeClassName(slotFns.closeButton(), props.classNames?.closeButton)\"\n :aria-label=\"closeAriaLabel\"\n @click=\"emit('close')\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n <line\n x1=\"18\"\n y1=\"6\"\n x2=\"6\"\n y2=\"18\"\n />\n <line\n x1=\"6\"\n y1=\"6\"\n x2=\"18\"\n y2=\"18\"\n />\n </svg>\n </button>\n </span>\n</template>\n"],"mappings":""}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { composeClassName } from "../../utils/composeClassName.js";
|
|
2
|
+
import "../../utils/warnDeprecated.js";
|
|
2
3
|
import { computed, createCommentVNode, createElementBlock, createElementVNode, defineComponent, normalizeClass, openBlock, renderSlot, unref } from "vue";
|
|
3
4
|
import { chipVariants } from "@auronui/styles";
|
|
4
5
|
//#region src/components/chip/Chip.vue?vue&type=script&setup=true&lang.ts
|
|
@@ -31,10 +32,14 @@ var Chip_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineCom
|
|
|
31
32
|
setup(__props, { emit: __emit }) {
|
|
32
33
|
const props = __props;
|
|
33
34
|
const emit = __emit;
|
|
35
|
+
const resolvedVariant = computed(() => {
|
|
36
|
+
if (props.variant === "outlined") return "bordered";
|
|
37
|
+
return props.variant;
|
|
38
|
+
});
|
|
34
39
|
const slotFns = computed(() => chipVariants({
|
|
35
40
|
color: props.color,
|
|
36
41
|
size: props.size,
|
|
37
|
-
variant:
|
|
42
|
+
variant: resolvedVariant.value
|
|
38
43
|
}));
|
|
39
44
|
return (_ctx, _cache) => {
|
|
40
45
|
return openBlock(), createElementBlock("span", { class: normalizeClass(unref(composeClassName)(slotFns.value.base(), props.class, props.classNames?.base)) }, [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Chip.vue_vue_type_script_setup_true_lang.js","names":["$slots"],"sources":["../../../src/components/chip/Chip.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from \"vue\";\nimport { chipVariants, type ChipVariants } from \"@auronui/styles\";\nimport { composeClassName , type ClassValue} from \"../../utils/composeClassName\";\n\nconst props = withDefaults(\n defineProps<{\n color?: ChipVariants[\"color\"];\n size?: ChipVariants[\"size\"];\n variant?: ChipVariants[\"variant\"];\n /** Show a colored dot indicator before the label */\n dot?: boolean;\n /** Render a built-in close button that emits `close` */\n isClosable?: boolean;\n /** Aria-label for the close button */\n closeAriaLabel?: string;\n class?: ClassValue;\n /** Override classes for named slots */\n classNames?: Partial<{\n base: ClassValue;\n dot: ClassValue;\n startContent: ClassValue;\n label: ClassValue;\n endContent: ClassValue;\n closeButton: ClassValue;\n }>;\n }>(),\n {\n color: \"default\",\n variant: \"solid\",\n dot: false,\n isClosable: false,\n closeAriaLabel: \"Remove\",\n }\n);\n\nconst emit = defineEmits<{\n (e: \"close\"): void;\n}>();\n\nconst slotFns = computed(() =>\n chipVariants({\n color: props.color,\n size: props.size,\n variant:
|
|
1
|
+
{"version":3,"file":"Chip.vue_vue_type_script_setup_true_lang.js","names":["$slots"],"sources":["../../../src/components/chip/Chip.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from \"vue\";\nimport { chipVariants, type ChipVariants } from \"@auronui/styles\";\nimport { composeClassName , type ClassValue} from \"../../utils/composeClassName\";\nimport { warnDeprecatedVariant } from '../../utils/warnDeprecated';\n\nconst props = withDefaults(\n defineProps<{\n color?: ChipVariants[\"color\"];\n size?: ChipVariants[\"size\"];\n /**\n * Visual style of the chip.\n * @deprecated 'outlined' — use 'bordered' instead.\n */\n variant?: ChipVariants[\"variant\"] | 'outlined';\n /** Show a colored dot indicator before the label */\n dot?: boolean;\n /** Render a built-in close button that emits `close` */\n isClosable?: boolean;\n /** Aria-label for the close button */\n closeAriaLabel?: string;\n class?: ClassValue;\n /** Override classes for named slots */\n classNames?: Partial<{\n base: ClassValue;\n dot: ClassValue;\n startContent: ClassValue;\n label: ClassValue;\n endContent: ClassValue;\n closeButton: ClassValue;\n }>;\n }>(),\n {\n color: \"default\",\n variant: \"solid\",\n dot: false,\n isClosable: false,\n closeAriaLabel: \"Remove\",\n }\n);\n\nconst emit = defineEmits<{\n (e: \"close\"): void;\n}>();\n\nconst resolvedVariant = computed(() => {\n if (props.variant === 'outlined') {\n warnDeprecatedVariant('Chip', 'outlined', 'bordered')\n return 'bordered' as ChipVariants['variant']\n }\n return props.variant\n})\n\nconst slotFns = computed(() =>\n chipVariants({\n color: props.color,\n size: props.size,\n variant: resolvedVariant.value,\n })\n);\n</script>\n\n<template>\n <span :class=\"composeClassName(slotFns.base(), props.class, props.classNames?.base)\">\n <span\n v-if=\"dot\"\n :class=\"composeClassName(slotFns.dot(), props.classNames?.dot)\"\n aria-hidden=\"true\"\n />\n <span\n v-if=\"$slots.startContent\"\n :class=\"composeClassName(slotFns.startContent(), props.classNames?.startContent)\"\n aria-hidden=\"true\"\n >\n <slot name=\"startContent\" />\n </span>\n\n <span :class=\"composeClassName(slotFns.label(), props.classNames?.label)\">\n <slot />\n </span>\n\n <span\n v-if=\"$slots.endContent && !isClosable\"\n :class=\"composeClassName(slotFns.endContent(), props.classNames?.endContent)\"\n aria-hidden=\"true\"\n >\n <slot name=\"endContent\" />\n </span>\n\n <button\n v-if=\"isClosable\"\n type=\"button\"\n :class=\"composeClassName(slotFns.closeButton(), props.classNames?.closeButton)\"\n :aria-label=\"closeAriaLabel\"\n @click=\"emit('close')\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n <line\n x1=\"18\"\n y1=\"6\"\n x2=\"6\"\n y2=\"18\"\n />\n <line\n x1=\"6\"\n y1=\"6\"\n x2=\"18\"\n y2=\"18\"\n />\n </svg>\n </button>\n </span>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAMA,MAAM,QAAQ;EAmCd,MAAM,OAAO;EAIb,MAAM,kBAAkB,eAAe;AACrC,OAAI,MAAM,YAAY,WAEpB,QAAO;AAET,UAAO,MAAM;IACd;EAED,MAAM,UAAU,eACd,aAAa;GACX,OAAO,MAAM;GACb,MAAM,MAAM;GACZ,SAAS,gBAAgB;GAC1B,CAAA,CACF;;uBAIC,mBA0DO,QAAA,EA1DA,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,MAAI,EAAI,MAAM,OAAO,MAAM,YAAY,KAAI,CAAA,EAAA,EAAA;IAExE,QAAA,OAAA,WAAA,EADR,mBAIE,QAAA;;KAFC,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,KAAG,EAAI,MAAM,YAAY,IAAG,CAAA;KAC7D,eAAY;;IAGNA,KAAAA,OAAO,gBAAA,WAAA,EADf,mBAMO,QAAA;;KAJJ,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,cAAY,EAAI,MAAM,YAAY,aAAY,CAAA;KAC/E,eAAY;QAEZ,WAA4B,KAAA,QAAA,eAAA,CAAA,EAAA,EAAA,IAAA,mBAAA,IAAA,KAAA;IAG9B,mBAEO,QAAA,EAFA,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,OAAK,EAAI,MAAM,YAAY,MAAK,CAAA,EAAA,EAAA,CACrE,WAAQ,KAAA,QAAA,UAAA,CAAA,EAAA,EAAA;IAIFA,KAAAA,OAAO,cAAU,CAAK,QAAA,cAAA,WAAA,EAD9B,mBAMO,QAAA;;KAJJ,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,YAAU,EAAI,MAAM,YAAY,WAAU,CAAA;KAC3E,eAAY;QAEZ,WAA0B,KAAA,QAAA,aAAA,CAAA,EAAA,EAAA,IAAA,mBAAA,IAAA,KAAA;IAIpB,QAAA,cAAA,WAAA,EADR,mBA+BS,UAAA;;KA7BP,MAAK;KACJ,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,aAAW,EAAI,MAAM,YAAY,YAAW,CAAA;KAC5E,cAAY,QAAA;KACZ,SAAK,OAAA,OAAA,OAAA,MAAA,WAAE,KAAI,QAAA;sCAEZ,mBAuBM,OAAA;KAtBJ,OAAM;KACN,SAAQ;KACR,MAAK;KACL,QAAO;KACP,gBAAa;KACb,kBAAe;KACf,mBAAgB;KAChB,eAAY;KACZ,WAAU;QAEV,mBAKE,QAAA;KAJA,IAAG;KACH,IAAG;KACH,IAAG;KACH,IAAG;QAEL,mBAKE,QAAA;KAJA,IAAG;KACH,IAAG;KACH,IAAG;KACH,IAAG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Drawer.js","names":[],"sources":["../../../src/components/drawer/Drawer.vue"],"sourcesContent":["<script lang=\"ts\">\nimport { defineComponent, computed, h, toRef } from 'vue'\nimport { DialogRoot } from 'reka-ui'\nimport { useDrawerProvide } from './drawer.context'\nimport type { DrawerPlacement, DrawerSize } from './drawer.context'\n\n/**\n * Drawer root component. Wraps Reka UI's DialogRoot.\n *\n * Uses Options API / render-function style to avoid Vue SFC compiled template\n * from forwarding `open: undefined` to DialogRoot — same pattern as Modal.vue.\n * Reka's `useVModel` checks `props.open === undefined` to choose uncontrolled\n * vs controlled mode.\n */\nexport default defineComponent({\n name: 'Drawer',\n props: {\n defaultOpen: { type: Boolean, default: false },\n open: { type: Boolean, default: undefined },\n modal: { type: Boolean, default: true },\n placement: {\n type: String as () => DrawerPlacement,\n default: 'right',\n },\n size: {\n type: String as () => DrawerSize,\n default: 'md',\n },\n },\n emits: ['update:open'],\n setup(props, { slots, emit }) {\n // Provide context to all Drawer sub-components\n useDrawerProvide({\n placement: toRef(props, 'placement'),\n size: toRef(props, 'size'),\n })\n\n const rootProps = computed(() => {\n const p: Record<string, unknown> = {\n defaultOpen: props.defaultOpen,\n modal: props.modal,\n 'onUpdate:open': (val: boolean) => emit('update:open', val),\n }\n // Only include `open` when explicitly controlled — omitting the key lets\n // Reka use `defaultOpen` for uncontrolled behavior.\n if (props.open !== undefined) {\n p.open = props.open\n }\n return p\n })\n\n return () => h(DialogRoot, rootProps.value, slots)\n },\n})\n</script>\n"],"mappings":""}
|
|
1
|
+
{"version":3,"file":"Drawer.js","names":[],"sources":["../../../src/components/drawer/Drawer.vue"],"sourcesContent":["<script lang=\"ts\">\nimport { defineComponent, computed, h, toRef, ref } from 'vue'\nimport { DialogRoot } from 'reka-ui'\nimport { drawerVariants } from '@auronui/styles/components/drawer'\nimport { useDrawerProvide } from './drawer.context'\nimport type { DrawerPlacement, DrawerSize } from './drawer.context'\n\n/**\n * Drawer root component. Wraps Reka UI's DialogRoot.\n *\n * Uses Options API / render-function style to avoid Vue SFC compiled template\n * from forwarding `open: undefined` to DialogRoot — same pattern as Modal.vue.\n * Reka's `useVModel` checks `props.open === undefined` to choose uncontrolled\n * vs controlled mode.\n *\n * When `dock=true` the component renders a flex container div and manages its\n * own open state without Reka, so the drawer panel shifts content in the DOM\n * rather than overlaying it.\n */\nexport default defineComponent({\n name: 'Drawer',\n props: {\n defaultOpen: { type: Boolean, default: false },\n open: { type: Boolean, default: undefined },\n modal: { type: Boolean, default: true },\n placement: {\n type: String as () => DrawerPlacement,\n default: 'right',\n },\n size: {\n type: String as () => DrawerSize,\n default: 'md',\n },\n inline: { type: Boolean, default: false },\n hideBackdrop: { type: Boolean, default: false },\n dock: { type: Boolean, default: false },\n },\n emits: ['update:open'],\n setup(props, { slots, emit }) {\n const styles = drawerVariants()\n\n // Dock mode: open state managed locally (no Reka dialog)\n const localPushOpen = ref(props.defaultOpen ?? false)\n const dockOpen = computed(() =>\n props.open !== undefined ? props.open : localPushOpen.value,\n )\n\n function toggleDock() {\n const next = !dockOpen.value\n if (props.open === undefined) localPushOpen.value = next\n emit('update:open', next)\n }\n\n function closeDock() {\n if (props.open === undefined) localPushOpen.value = false\n emit('update:open', false)\n }\n\n // Provide context to all Drawer sub-components\n useDrawerProvide({\n placement: toRef(props, 'placement'),\n size: toRef(props, 'size'),\n inline: toRef(props, 'inline'),\n hideBackdrop: toRef(props, 'hideBackdrop'),\n dock: toRef(props, 'dock'),\n dockOpen,\n toggleDock,\n closeDock,\n })\n\n const rootProps = computed(() => {\n const p: Record<string, unknown> = {\n defaultOpen: props.defaultOpen,\n // inline and hideBackdrop both require non-modal: no scroll lock, no focus trap\n modal: props.inline || props.hideBackdrop ? false : props.modal,\n 'onUpdate:open': (val: boolean) => emit('update:open', val),\n }\n // Only include `open` when explicitly controlled — omitting the key lets\n // Reka use `defaultOpen` for uncontrolled behavior.\n if (props.open !== undefined) {\n p.open = props.open\n }\n return p\n })\n\n return () => {\n // Dock mode: render a flex container that shifts content\n if (props.dock) {\n return h(\n 'div',\n { class: styles.dockContainer({ placement: props.placement }) },\n slots.default?.(),\n )\n }\n return h(DialogRoot, rootProps.value, slots)\n }\n },\n})\n</script>\n"],"mappings":""}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
+
import { drawerVariants } from "../../packages/styles/src/components/drawer/drawer.styles.js";
|
|
1
2
|
import { useDrawerProvide } from "./drawer.context.js";
|
|
2
|
-
import { computed, defineComponent, h, toRef } from "vue";
|
|
3
|
+
import { computed, defineComponent, h, ref, toRef } from "vue";
|
|
3
4
|
import { DialogRoot } from "reka-ui";
|
|
4
5
|
//#region src/components/drawer/Drawer.vue?vue&type=script&lang.ts
|
|
5
6
|
/**
|
|
@@ -9,6 +10,10 @@ import { DialogRoot } from "reka-ui";
|
|
|
9
10
|
* from forwarding `open: undefined` to DialogRoot — same pattern as Modal.vue.
|
|
10
11
|
* Reka's `useVModel` checks `props.open === undefined` to choose uncontrolled
|
|
11
12
|
* vs controlled mode.
|
|
13
|
+
*
|
|
14
|
+
* When `dock=true` the component renders a flex container div and manages its
|
|
15
|
+
* own open state without Reka, so the drawer panel shifts content in the DOM
|
|
16
|
+
* rather than overlaying it.
|
|
12
17
|
*/
|
|
13
18
|
var Drawer_vue_vue_type_script_lang_default = defineComponent({
|
|
14
19
|
name: "Drawer",
|
|
@@ -32,24 +37,57 @@ var Drawer_vue_vue_type_script_lang_default = defineComponent({
|
|
|
32
37
|
size: {
|
|
33
38
|
type: String,
|
|
34
39
|
default: "md"
|
|
40
|
+
},
|
|
41
|
+
inline: {
|
|
42
|
+
type: Boolean,
|
|
43
|
+
default: false
|
|
44
|
+
},
|
|
45
|
+
hideBackdrop: {
|
|
46
|
+
type: Boolean,
|
|
47
|
+
default: false
|
|
48
|
+
},
|
|
49
|
+
dock: {
|
|
50
|
+
type: Boolean,
|
|
51
|
+
default: false
|
|
35
52
|
}
|
|
36
53
|
},
|
|
37
54
|
emits: ["update:open"],
|
|
38
55
|
setup(props, { slots, emit }) {
|
|
56
|
+
const styles = drawerVariants();
|
|
57
|
+
const localPushOpen = ref(props.defaultOpen ?? false);
|
|
58
|
+
const dockOpen = computed(() => props.open !== void 0 ? props.open : localPushOpen.value);
|
|
59
|
+
function toggleDock() {
|
|
60
|
+
const next = !dockOpen.value;
|
|
61
|
+
if (props.open === void 0) localPushOpen.value = next;
|
|
62
|
+
emit("update:open", next);
|
|
63
|
+
}
|
|
64
|
+
function closeDock() {
|
|
65
|
+
if (props.open === void 0) localPushOpen.value = false;
|
|
66
|
+
emit("update:open", false);
|
|
67
|
+
}
|
|
39
68
|
useDrawerProvide({
|
|
40
69
|
placement: toRef(props, "placement"),
|
|
41
|
-
size: toRef(props, "size")
|
|
70
|
+
size: toRef(props, "size"),
|
|
71
|
+
inline: toRef(props, "inline"),
|
|
72
|
+
hideBackdrop: toRef(props, "hideBackdrop"),
|
|
73
|
+
dock: toRef(props, "dock"),
|
|
74
|
+
dockOpen,
|
|
75
|
+
toggleDock,
|
|
76
|
+
closeDock
|
|
42
77
|
});
|
|
43
78
|
const rootProps = computed(() => {
|
|
44
79
|
const p = {
|
|
45
80
|
defaultOpen: props.defaultOpen,
|
|
46
|
-
modal: props.modal,
|
|
81
|
+
modal: props.inline || props.hideBackdrop ? false : props.modal,
|
|
47
82
|
"onUpdate:open": (val) => emit("update:open", val)
|
|
48
83
|
};
|
|
49
84
|
if (props.open !== void 0) p.open = props.open;
|
|
50
85
|
return p;
|
|
51
86
|
});
|
|
52
|
-
return () =>
|
|
87
|
+
return () => {
|
|
88
|
+
if (props.dock) return h("div", { class: styles.dockContainer({ placement: props.placement }) }, slots.default?.());
|
|
89
|
+
return h(DialogRoot, rootProps.value, slots);
|
|
90
|
+
};
|
|
53
91
|
}
|
|
54
92
|
});
|
|
55
93
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Drawer.vue_vue_type_script_lang.js","names":[],"sources":["../../../src/components/drawer/Drawer.vue"],"sourcesContent":["<script lang=\"ts\">\nimport { defineComponent, computed, h, toRef } from 'vue'\nimport { DialogRoot } from 'reka-ui'\nimport { useDrawerProvide } from './drawer.context'\nimport type { DrawerPlacement, DrawerSize } from './drawer.context'\n\n/**\n * Drawer root component. Wraps Reka UI's DialogRoot.\n *\n * Uses Options API / render-function style to avoid Vue SFC compiled template\n * from forwarding `open: undefined` to DialogRoot — same pattern as Modal.vue.\n * Reka's `useVModel` checks `props.open === undefined` to choose uncontrolled\n * vs controlled mode.\n */\nexport default defineComponent({\n name: 'Drawer',\n props: {\n defaultOpen: { type: Boolean, default: false },\n open: { type: Boolean, default: undefined },\n modal: { type: Boolean, default: true },\n placement: {\n type: String as () => DrawerPlacement,\n default: 'right',\n },\n size: {\n type: String as () => DrawerSize,\n default: 'md',\n },\n },\n emits: ['update:open'],\n setup(props, { slots, emit }) {\n // Provide context to all Drawer sub-components\n useDrawerProvide({\n placement: toRef(props, 'placement'),\n size: toRef(props, 'size'),\n })\n\n const rootProps = computed(() => {\n const p: Record<string, unknown> = {\n defaultOpen: props.defaultOpen,\n modal: props.modal,\n 'onUpdate:open': (val: boolean) => emit('update:open', val),\n }\n // Only include `open` when explicitly controlled — omitting the key lets\n // Reka use `defaultOpen` for uncontrolled behavior.\n if (props.open !== undefined) {\n p.open = props.open\n }\n return p\n })\n\n return () => h(DialogRoot, rootProps.value, slots)\n },\n})\n</script>\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"Drawer.vue_vue_type_script_lang.js","names":[],"sources":["../../../src/components/drawer/Drawer.vue"],"sourcesContent":["<script lang=\"ts\">\nimport { defineComponent, computed, h, toRef, ref } from 'vue'\nimport { DialogRoot } from 'reka-ui'\nimport { drawerVariants } from '@auronui/styles/components/drawer'\nimport { useDrawerProvide } from './drawer.context'\nimport type { DrawerPlacement, DrawerSize } from './drawer.context'\n\n/**\n * Drawer root component. Wraps Reka UI's DialogRoot.\n *\n * Uses Options API / render-function style to avoid Vue SFC compiled template\n * from forwarding `open: undefined` to DialogRoot — same pattern as Modal.vue.\n * Reka's `useVModel` checks `props.open === undefined` to choose uncontrolled\n * vs controlled mode.\n *\n * When `dock=true` the component renders a flex container div and manages its\n * own open state without Reka, so the drawer panel shifts content in the DOM\n * rather than overlaying it.\n */\nexport default defineComponent({\n name: 'Drawer',\n props: {\n defaultOpen: { type: Boolean, default: false },\n open: { type: Boolean, default: undefined },\n modal: { type: Boolean, default: true },\n placement: {\n type: String as () => DrawerPlacement,\n default: 'right',\n },\n size: {\n type: String as () => DrawerSize,\n default: 'md',\n },\n inline: { type: Boolean, default: false },\n hideBackdrop: { type: Boolean, default: false },\n dock: { type: Boolean, default: false },\n },\n emits: ['update:open'],\n setup(props, { slots, emit }) {\n const styles = drawerVariants()\n\n // Dock mode: open state managed locally (no Reka dialog)\n const localPushOpen = ref(props.defaultOpen ?? false)\n const dockOpen = computed(() =>\n props.open !== undefined ? props.open : localPushOpen.value,\n )\n\n function toggleDock() {\n const next = !dockOpen.value\n if (props.open === undefined) localPushOpen.value = next\n emit('update:open', next)\n }\n\n function closeDock() {\n if (props.open === undefined) localPushOpen.value = false\n emit('update:open', false)\n }\n\n // Provide context to all Drawer sub-components\n useDrawerProvide({\n placement: toRef(props, 'placement'),\n size: toRef(props, 'size'),\n inline: toRef(props, 'inline'),\n hideBackdrop: toRef(props, 'hideBackdrop'),\n dock: toRef(props, 'dock'),\n dockOpen,\n toggleDock,\n closeDock,\n })\n\n const rootProps = computed(() => {\n const p: Record<string, unknown> = {\n defaultOpen: props.defaultOpen,\n // inline and hideBackdrop both require non-modal: no scroll lock, no focus trap\n modal: props.inline || props.hideBackdrop ? false : props.modal,\n 'onUpdate:open': (val: boolean) => emit('update:open', val),\n }\n // Only include `open` when explicitly controlled — omitting the key lets\n // Reka use `defaultOpen` for uncontrolled behavior.\n if (props.open !== undefined) {\n p.open = props.open\n }\n return p\n })\n\n return () => {\n // Dock mode: render a flex container that shifts content\n if (props.dock) {\n return h(\n 'div',\n { class: styles.dockContainer({ placement: props.placement }) },\n slots.default?.(),\n )\n }\n return h(DialogRoot, rootProps.value, slots)\n }\n },\n})\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;AAmBA,IAAA,0CAAe,gBAAgB;CAC7B,MAAM;CACN,OAAO;EACL,aAAa;GAAE,MAAM;GAAS,SAAS;GAAO;EAC9C,MAAM;GAAE,MAAM;GAAS,SAAS,KAAA;GAAW;EAC3C,OAAO;GAAE,MAAM;GAAS,SAAS;GAAM;EACvC,WAAW;GACT,MAAM;GACN,SAAS;GACV;EACD,MAAM;GACJ,MAAM;GACN,SAAS;GACV;EACD,QAAQ;GAAE,MAAM;GAAS,SAAS;GAAO;EACzC,cAAc;GAAE,MAAM;GAAS,SAAS;GAAO;EAC/C,MAAM;GAAE,MAAM;GAAS,SAAS;GAAO;EACxC;CACD,OAAO,CAAC,cAAc;CACtB,MAAM,OAAO,EAAE,OAAO,QAAQ;EAC5B,MAAM,SAAS,gBAAe;EAG9B,MAAM,gBAAgB,IAAI,MAAM,eAAe,MAAK;EACpD,MAAM,WAAW,eACf,MAAM,SAAS,KAAA,IAAY,MAAM,OAAO,cAAc,MACxD;EAEA,SAAS,aAAa;GACpB,MAAM,OAAO,CAAC,SAAS;AACvB,OAAI,MAAM,SAAS,KAAA,EAAW,eAAc,QAAQ;AACpD,QAAK,eAAe,KAAI;;EAG1B,SAAS,YAAY;AACnB,OAAI,MAAM,SAAS,KAAA,EAAW,eAAc,QAAQ;AACpD,QAAK,eAAe,MAAK;;AAI3B,mBAAiB;GACf,WAAW,MAAM,OAAO,YAAY;GACpC,MAAM,MAAM,OAAO,OAAO;GAC1B,QAAQ,MAAM,OAAO,SAAS;GAC9B,cAAc,MAAM,OAAO,eAAe;GAC1C,MAAM,MAAM,OAAO,OAAO;GAC1B;GACA;GACA;GACD,CAAA;EAED,MAAM,YAAY,eAAe;GAC/B,MAAM,IAA6B;IACjC,aAAa,MAAM;IAEnB,OAAO,MAAM,UAAU,MAAM,eAAe,QAAQ,MAAM;IAC1D,kBAAkB,QAAiB,KAAK,eAAe,IAAI;IAC7D;AAGA,OAAI,MAAM,SAAS,KAAA,EACjB,GAAE,OAAO,MAAM;AAEjB,UAAO;IACR;AAED,eAAa;AAEX,OAAI,MAAM,KACR,QAAO,EACL,OACA,EAAE,OAAO,OAAO,cAAc,EAAE,WAAW,MAAM,WAAW,CAAA,EAAG,EAC/D,MAAM,WAAW,CACnB;AAEF,UAAO,EAAE,YAAY,UAAU,OAAO,MAAK;;;CAGhD,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DrawerClose.js","names":[],"sources":["../../../src/components/drawer/DrawerClose.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { DialogClose } from 'reka-ui'\nimport { drawerVariants } from '@auronui/styles/components/drawer'\nimport { composeClassName } from '../../utils/composeClassName'\n\nconst props = withDefaults(defineProps<{\n asChild?: boolean\n class?: string\n}>(), {\n asChild: false,\n})\n\nconst styles = drawerVariants()\n</script>\n\n<template>\n <DialogClose\n :as-child=\"props.asChild\"\n :class=\"composeClassName(styles.closeTrigger(), props.class)\"\n >\n <slot />\n </DialogClose>\n</template>\n"],"mappings":""}
|
|
1
|
+
{"version":3,"file":"DrawerClose.js","names":[],"sources":["../../../src/components/drawer/DrawerClose.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { DialogClose, Primitive } from 'reka-ui'\nimport { drawerVariants } from '@auronui/styles/components/drawer'\nimport { composeClassName } from '../../utils/composeClassName'\nimport { useDrawerInject } from './drawer.context'\n\nconst props = withDefaults(defineProps<{\n asChild?: boolean\n class?: string\n}>(), {\n asChild: false,\n})\n\nconst ctx = useDrawerInject()\nconst styles = drawerVariants()\n</script>\n\n<template>\n <!-- dock mode: close open state directly (no Reka dialog context) -->\n <Primitive\n v-if=\"ctx.dock.value\"\n :as-child=\"props.asChild\"\n as=\"button\"\n :class=\"composeClassName(styles.closeTrigger(), props.class)\"\n @click=\"ctx.closeDock()\"\n >\n <slot />\n </Primitive>\n\n <!-- default / inline / hideBackdrop modes: Reka manages close -->\n <DialogClose\n v-else\n :as-child=\"props.asChild\"\n :class=\"composeClassName(styles.closeTrigger(), props.class)\"\n >\n <slot />\n </DialogClose>\n</template>\n"],"mappings":""}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { composeClassName } from "../../utils/composeClassName.js";
|
|
2
2
|
import { drawerVariants } from "../../packages/styles/src/components/drawer/drawer.styles.js";
|
|
3
|
+
import { useDrawerInject } from "./drawer.context.js";
|
|
3
4
|
import { createBlock, defineComponent, normalizeClass, openBlock, renderSlot, unref, withCtx } from "vue";
|
|
4
|
-
import { DialogClose } from "reka-ui";
|
|
5
|
+
import { DialogClose, Primitive } from "reka-ui";
|
|
5
6
|
//#region src/components/drawer/DrawerClose.vue?vue&type=script&setup=true&lang.ts
|
|
6
7
|
var DrawerClose_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
|
|
7
8
|
__name: "DrawerClose",
|
|
@@ -14,15 +15,26 @@ var DrawerClose_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ de
|
|
|
14
15
|
},
|
|
15
16
|
setup(__props) {
|
|
16
17
|
const props = __props;
|
|
18
|
+
const ctx = useDrawerInject();
|
|
17
19
|
const styles = drawerVariants();
|
|
18
20
|
return (_ctx, _cache) => {
|
|
19
|
-
return openBlock(), createBlock(unref(
|
|
21
|
+
return unref(ctx).dock.value ? (openBlock(), createBlock(unref(Primitive), {
|
|
22
|
+
key: 0,
|
|
23
|
+
"as-child": props.asChild,
|
|
24
|
+
as: "button",
|
|
25
|
+
class: normalizeClass(unref(composeClassName)(unref(styles).closeTrigger(), props.class)),
|
|
26
|
+
onClick: _cache[0] || (_cache[0] = ($event) => unref(ctx).closeDock())
|
|
27
|
+
}, {
|
|
28
|
+
default: withCtx(() => [renderSlot(_ctx.$slots, "default")]),
|
|
29
|
+
_: 3
|
|
30
|
+
}, 8, ["as-child", "class"])) : (openBlock(), createBlock(unref(DialogClose), {
|
|
31
|
+
key: 1,
|
|
20
32
|
"as-child": props.asChild,
|
|
21
33
|
class: normalizeClass(unref(composeClassName)(unref(styles).closeTrigger(), props.class))
|
|
22
34
|
}, {
|
|
23
35
|
default: withCtx(() => [renderSlot(_ctx.$slots, "default")]),
|
|
24
36
|
_: 3
|
|
25
|
-
}, 8, ["as-child", "class"]);
|
|
37
|
+
}, 8, ["as-child", "class"]));
|
|
26
38
|
};
|
|
27
39
|
}
|
|
28
40
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DrawerClose.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/drawer/DrawerClose.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { DialogClose } from 'reka-ui'\nimport { drawerVariants } from '@auronui/styles/components/drawer'\nimport { composeClassName } from '../../utils/composeClassName'\n\nconst props = withDefaults(defineProps<{\n asChild?: boolean\n class?: string\n}>(), {\n asChild: false,\n})\n\nconst styles = drawerVariants()\n</script>\n\n<template>\n <DialogClose\n :as-child=\"props.asChild\"\n :class=\"composeClassName(styles.closeTrigger(), props.class)\"\n >\n <slot />\n </DialogClose>\n</template>\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"DrawerClose.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/drawer/DrawerClose.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { DialogClose, Primitive } from 'reka-ui'\nimport { drawerVariants } from '@auronui/styles/components/drawer'\nimport { composeClassName } from '../../utils/composeClassName'\nimport { useDrawerInject } from './drawer.context'\n\nconst props = withDefaults(defineProps<{\n asChild?: boolean\n class?: string\n}>(), {\n asChild: false,\n})\n\nconst ctx = useDrawerInject()\nconst styles = drawerVariants()\n</script>\n\n<template>\n <!-- dock mode: close open state directly (no Reka dialog context) -->\n <Primitive\n v-if=\"ctx.dock.value\"\n :as-child=\"props.asChild\"\n as=\"button\"\n :class=\"composeClassName(styles.closeTrigger(), props.class)\"\n @click=\"ctx.closeDock()\"\n >\n <slot />\n </Primitive>\n\n <!-- default / inline / hideBackdrop modes: Reka manages close -->\n <DialogClose\n v-else\n :as-child=\"props.asChild\"\n :class=\"composeClassName(styles.closeTrigger(), props.class)\"\n >\n <slot />\n </DialogClose>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;EAMA,MAAM,QAAQ;EAOd,MAAM,MAAM,iBAAgB;EAC5B,MAAM,SAAS,gBAAe;;UAMpB,MAAA,IAAG,CAAC,KAAK,SAAA,WAAA,EADjB,YAQY,MAAA,UAAA,EAAA;;IANT,YAAU,MAAM;IACjB,IAAG;IACF,OAAK,eAAE,MAAA,iBAAgB,CAAC,MAAA,OAAM,CAAC,cAAY,EAAI,MAAM,MAAK,CAAA;IAC1D,SAAK,OAAA,OAAA,OAAA,MAAA,WAAE,MAAA,IAAG,CAAC,WAAS;;2BAEb,CAAR,WAAQ,KAAA,QAAA,UAAA,CAAA,CAAA;;iDAIV,YAMc,MAAA,YAAA,EAAA;;IAJX,YAAU,MAAM;IAChB,OAAK,eAAE,MAAA,iBAAgB,CAAC,MAAA,OAAM,CAAC,cAAY,EAAI,MAAM,MAAK,CAAA;;2BAEnD,CAAR,WAAQ,KAAA,QAAA,UAAA,CAAA,CAAA"}
|