nekomeowww commited on
Commit
1d1457f
Β·
1 Parent(s): 6fa8984

release: build fe6036c51aa1042f8f339cf0d0c242f908314948

Browse files
This view is limited to 50 files because it contains too many changes. Β  See raw diff
Files changed (50) hide show
  1. .gitattributes +1 -0
  2. assets/{BasicInputFile-DrdqKFRh.js β†’ BasicInputFile-ASZjsFcd.js} +2 -2
  3. assets/{BasicInputFile-DrdqKFRh.js.map β†’ BasicInputFile-ASZjsFcd.js.map} +1 -1
  4. assets/{CardCreate-Bi7-7ISk.js β†’ CardCreate-CpSqGC5E.js} +1 -1
  5. assets/{CardCreate-Bi7-7ISk.js.map β†’ CardCreate-CpSqGC5E.js.map} +1 -1
  6. assets/CardCreate-DpxALAvW.js +0 -1
  7. assets/CardCreate-Z1G2g7WP.js +1 -0
  8. assets/CardCreationDialog-1wBHkpxm.js +0 -1
  9. assets/CardCreationDialog-B9cU7XjM.js +1 -0
  10. assets/{CardCreationDialog-BnKzWVG2.js β†’ CardCreationDialog-D3b-50Vp.js} +2 -2
  11. assets/{CardCreationDialog-BnKzWVG2.js.map β†’ CardCreationDialog-D3b-50Vp.js.map} +1 -1
  12. assets/CardDetailDialog-CEOiChUH.js +1 -0
  13. assets/CardDetailDialog-CMvAZjWO.js +0 -2
  14. assets/CardDetailDialog-CjVXiFVj.js +0 -1
  15. assets/CardDetailDialog-V9NckGo0.js +2 -0
  16. assets/{CardDetailDialog-CMvAZjWO.js.map β†’ CardDetailDialog-V9NckGo0.js.map} +1 -1
  17. assets/CardListItem-BNMTajYk.js +1 -0
  18. assets/CardListItem-CNFq_DdR.js +0 -1
  19. assets/{CardListItem-mpMlnL8g.js β†’ CardListItem-Eda9_o7D.js} +2 -2
  20. assets/{CardListItem-mpMlnL8g.js.map β†’ CardListItem-Eda9_o7D.js.map} +1 -1
  21. assets/CharacterCreate-C-FeDI8r.js +2 -0
  22. assets/CharacterCreate-C-FeDI8r.js.map +1 -0
  23. assets/CharacterDialog-BG6ZFK4M.js +1 -0
  24. assets/CharacterDialog-uywBmJUv.js +2 -0
  25. assets/CharacterDialog-uywBmJUv.js.map +1 -0
  26. assets/CharacterItem-BprHfsUC.js +2 -0
  27. assets/CharacterItem-BprHfsUC.js.map +1 -0
  28. assets/CharacterItem-BqI3QQb-.js +1 -0
  29. assets/DeleteCardDialog-Bwf_d6r8.js +1 -0
  30. assets/DeleteCardDialog-D8U6WRmc.js +0 -1
  31. assets/{DeleteCardDialog-BMxA6Ls7.js β†’ DeleteCardDialog-DGeRVWYm.js} +2 -2
  32. assets/{DeleteCardDialog-BMxA6Ls7.js.map β†’ DeleteCardDialog-DGeRVWYm.js.map} +1 -1
  33. assets/{DialogPortal-2ogLZMDa.js β†’ DialogPortal-BhPdarFy.js} +2 -2
  34. assets/{DialogPortal-2ogLZMDa.js.map β†’ DialogPortal-BhPdarFy.js.map} +1 -1
  35. assets/{DialogTitle-WndXCd57.js β†’ DialogTitle-D6_neaY1.js} +2 -2
  36. assets/{DialogTitle-WndXCd57.js.map β†’ DialogTitle-D6_neaY1.js.map} +1 -1
  37. assets/{DropdownMenuItem-BuQnKGuD.js β†’ DropdownMenuItem-i92BcXFf.js} +2 -2
  38. assets/{DropdownMenuItem-BuQnKGuD.js.map β†’ DropdownMenuItem-i92BcXFf.js.map} +1 -1
  39. assets/{DropdownMenuTrigger-CLKA4VCz.js β†’ DropdownMenuTrigger-MCmvCyZm.js} +2 -2
  40. assets/{DropdownMenuTrigger-CLKA4VCz.js.map β†’ DropdownMenuTrigger-MCmvCyZm.js.map} +0 -0
  41. assets/{HeaderLink-ltQigpSg.js β†’ HeaderLink-crNkWISd.js} +2 -2
  42. assets/{HeaderLink-ltQigpSg.js.map β†’ HeaderLink-crNkWISd.js.map} +1 -1
  43. assets/{InputFile-p6SaZwhB.js β†’ InputFile-rNUdOmZ6.js} +2 -2
  44. assets/{InputFile-p6SaZwhB.js.map β†’ InputFile-rNUdOmZ6.js.map} +1 -1
  45. assets/{Live2D-DWYzmisH.js β†’ Live2D-B1WGPd_w.js} +0 -0
  46. assets/{Live2D-DWYzmisH.js.map β†’ Live2D-B1WGPd_w.js.map} +0 -0
  47. assets/{_...all_-DQf7GX2x.js β†’ _...all_-D9FhmNcA.js} +2 -2
  48. assets/{_...all_-DQf7GX2x.js.map β†’ _...all_-D9FhmNcA.js.map} +1 -1
  49. assets/__vite-browser-external-JM8C1jhA.js +0 -1
  50. assets/__vite-browser-external-KGLUpgvw.js +1 -0
.gitattributes CHANGED
@@ -9,6 +9,7 @@
9
  *.webp filter=lfs diff=lfs merge=lfs -text
10
  *.bmp filter=lfs diff=lfs merge=lfs -text
11
  *.ttf filter=lfs diff=lfs merge=lfs -text
 
12
  *.task filter=lfs diff=lfs merge=lfs -text
13
  # Default
14
  *.7z filter=lfs diff=lfs merge=lfs -text
 
9
  *.webp filter=lfs diff=lfs merge=lfs -text
10
  *.bmp filter=lfs diff=lfs merge=lfs -text
11
  *.ttf filter=lfs diff=lfs merge=lfs -text
12
+ *.avif filter=lfs diff=lfs merge=lfs -text
13
  *.task filter=lfs diff=lfs merge=lfs -text
14
  # Default
15
  *.7z filter=lfs diff=lfs merge=lfs -text
assets/{BasicInputFile-DrdqKFRh.js β†’ BasicInputFile-ASZjsFcd.js} RENAMED
@@ -1,2 +1,2 @@
1
- import{A as e,K as t,Y as n,jt as r,kt as i,w as a,x as o,xt as s}from"./vue.runtime.esm-bundler-_ZPRHVd_.js";import{k as c}from"./dist-s5uVmXc7.js";var l=[`accept`,`multiple`],u=e({__name:`BasicInputFile`,props:{class:{},isDraggingClasses:{},isNotDraggingClasses:{},accept:{},multiple:{type:Boolean},modelValue:{}},emits:[`update:modelValue`],setup(e,{emit:u}){let d=e,f=u,p=s([]),m=s(),h=s(!1),g=c(h,150);function _(e){let t=e.target;if(t.files){p.value=[];for(let e=0;e<t.files.length;e++)p.value.push(t.files[e]);f(`update:modelValue`,p.value),p.value.length>0&&(m.value=p.value[0]),h.value=!1,t.value=``}}return(s,c)=>(t(),a(`label`,{class:r([`relative`,`cursor-pointer`,d.class,h.value?[...Array.isArray(e.isDraggingClasses)?e.isDraggingClasses:[e.isDraggingClasses]]:[...Array.isArray(e.isNotDraggingClasses)?e.isNotDraggingClasses:[e.isNotDraggingClasses]]]),onDragover:c[0]||=e=>h.value=!0,onDragleave:c[1]||=e=>h.value=!1},[o(`input`,{type:`file`,accept:e.accept,multiple:e.multiple,class:`absolute inset-0 h-0 w-0 cursor-pointer appearance-none opacity-0`,onChange:_},null,40,l),n(s.$slots,`default`,{isDragging:i(g),firstFile:m.value,files:p.value})],34))}});export{u as t};
2
- //# sourceMappingURL=BasicInputFile-DrdqKFRh.js.map
 
1
+ import{A as e,K as t,Y as n,jt as r,kt as i,w as a,x as o,xt as s}from"./vue.runtime.esm-bundler-_ZPRHVd_.js";import{A as c}from"./dist-BAxt-EKk.js";var l=[`accept`,`multiple`],u=e({__name:`BasicInputFile`,props:{class:{},isDraggingClasses:{},isNotDraggingClasses:{},accept:{},multiple:{type:Boolean},modelValue:{}},emits:[`update:modelValue`],setup(e,{emit:u}){let d=e,f=u,p=s([]),m=s(),h=s(!1),g=c(h,150);function _(e){let t=e.target;if(t.files){p.value=[];for(let e=0;e<t.files.length;e++)p.value.push(t.files[e]);f(`update:modelValue`,p.value),p.value.length>0&&(m.value=p.value[0]),h.value=!1,t.value=``}}return(s,c)=>(t(),a(`label`,{class:r([`relative`,`cursor-pointer`,d.class,h.value?[...Array.isArray(e.isDraggingClasses)?e.isDraggingClasses:[e.isDraggingClasses]]:[...Array.isArray(e.isNotDraggingClasses)?e.isNotDraggingClasses:[e.isNotDraggingClasses]]]),onDragover:c[0]||=e=>h.value=!0,onDragleave:c[1]||=e=>h.value=!1},[o(`input`,{type:`file`,accept:e.accept,multiple:e.multiple,class:`absolute inset-0 h-0 w-0 cursor-pointer appearance-none opacity-0`,onChange:_},null,40,l),n(s.$slots,`default`,{isDragging:i(g),firstFile:m.value,files:p.value})],34))}});export{u as t};
2
+ //# sourceMappingURL=BasicInputFile-ASZjsFcd.js.map
assets/{BasicInputFile-DrdqKFRh.js.map β†’ BasicInputFile-ASZjsFcd.js.map} RENAMED
@@ -1 +1 @@
1
- {"version":3,"file":"BasicInputFile-DrdqKFRh.js","names":[],"sources":["../../../../packages/ui/src/components/Form/Input/BasicInputFile.vue","../../../../packages/ui/src/components/Form/Input/BasicInputFile.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { useDebounce } from '@vueuse/core'\nimport { ref } from 'vue'\n\nconst props = defineProps<{\n class?: string | string[] | null\n isDraggingClasses?: string | string[] | null\n isNotDraggingClasses?: string | string[] | null\n accept?: string\n multiple?: boolean\n modelValue?: File[]\n}>()\n\nconst emit = defineEmits<{\n 'update:modelValue': [files: File[]]\n}>()\n\nconst files = ref<File[]>([])\nconst firstFile = ref<File>()\n\nconst isDragging = ref(false)\nconst isDraggingDebounced = useDebounce(isDragging, 150)\n\nfunction handleFileChange(e: Event) {\n const input = e.target as HTMLInputElement\n if (!input.files)\n return\n\n files.value = []\n\n for (let i = 0; i < input.files.length; i++) {\n files.value.push(input.files[i])\n }\n\n emit('update:modelValue', files.value)\n\n if (files.value.length > 0) {\n firstFile.value = files.value[0]\n }\n\n isDragging.value = false\n\n // Allow re-selecting the same file\n input.value = ''\n}\n</script>\n\n<template>\n <label\n :class=\"[\n 'relative',\n 'cursor-pointer',\n props.class,\n isDragging\n ? [...Array.isArray(isDraggingClasses) ? isDraggingClasses : [isDraggingClasses]]\n : [...Array.isArray(isNotDraggingClasses) ? isNotDraggingClasses : [isNotDraggingClasses]],\n ]\"\n @dragover=\"isDragging = true\"\n @dragleave=\"isDragging = false\"\n >\n <input\n type=\"file\"\n :accept=\"accept\"\n :multiple=\"multiple\"\n class=\"absolute inset-0 h-0 w-0 cursor-pointer appearance-none opacity-0\"\n @change=\"handleFileChange\"\n >\n <slot :is-dragging=\"isDraggingDebounced\" :first-file=\"firstFile\" :files=\"files\" />\n </label>\n</template>\n","<script setup lang=\"ts\">\nimport { useDebounce } from '@vueuse/core'\nimport { ref } from 'vue'\n\nconst props = defineProps<{\n class?: string | string[] | null\n isDraggingClasses?: string | string[] | null\n isNotDraggingClasses?: string | string[] | null\n accept?: string\n multiple?: boolean\n modelValue?: File[]\n}>()\n\nconst emit = defineEmits<{\n 'update:modelValue': [files: File[]]\n}>()\n\nconst files = ref<File[]>([])\nconst firstFile = ref<File>()\n\nconst isDragging = ref(false)\nconst isDraggingDebounced = useDebounce(isDragging, 150)\n\nfunction handleFileChange(e: Event) {\n const input = e.target as HTMLInputElement\n if (!input.files)\n return\n\n files.value = []\n\n for (let i = 0; i < input.files.length; i++) {\n files.value.push(input.files[i])\n }\n\n emit('update:modelValue', files.value)\n\n if (files.value.length > 0) {\n firstFile.value = files.value[0]\n }\n\n isDragging.value = false\n\n // Allow re-selecting the same file\n input.value = ''\n}\n</script>\n\n<template>\n <label\n :class=\"[\n 'relative',\n 'cursor-pointer',\n props.class,\n isDragging\n ? [...Array.isArray(isDraggingClasses) ? isDraggingClasses : [isDraggingClasses]]\n : [...Array.isArray(isNotDraggingClasses) ? isNotDraggingClasses : [isNotDraggingClasses]],\n ]\"\n @dragover=\"isDragging = true\"\n @dragleave=\"isDragging = false\"\n >\n <input\n type=\"file\"\n :accept=\"accept\"\n :multiple=\"multiple\"\n class=\"absolute inset-0 h-0 w-0 cursor-pointer appearance-none opacity-0\"\n @change=\"handleFileChange\"\n >\n <slot :is-dragging=\"isDraggingDebounced\" :first-file=\"firstFile\" :files=\"files\" />\n </label>\n</template>\n"],"mappings":"0WCIA,IAAM,EAAQ,EASR,EAAO,EAIP,EAAQ,EAAY,EAAE,CAAA,CACtB,EAAY,GAAU,CAEtB,EAAa,EAAI,GAAK,CACtB,EAAsB,EAAY,EAAY,IAAG,CAEvD,SAAS,EAAiB,EAAU,CAClC,IAAM,EAAQ,EAAE,OACX,KAAM,MAGX,GAAM,MAAQ,EAAC,CAEf,IAAK,IAAI,EAAI,EAAG,EAAI,EAAM,MAAM,OAAQ,IACtC,EAAM,MAAM,KAAK,EAAM,MAAM,GAAE,CAGjC,EAAK,oBAAqB,EAAM,MAAK,CAEjC,EAAM,MAAM,OAAS,IACvB,EAAU,MAAQ,EAAM,MAAM,IAGhC,EAAW,MAAQ,GAGnB,EAAM,MAAQ,sBAKd,EAoBQ,QAAA,CAnBL,MAAK,EAAA,6BAAoD,EAAM,MAAa,EAAA,MAAA,CAAA,GAAyB,MAAM,QAAQ,EAAA,kBAAiB,CAAI,EAAA,kBAAiB,CAAI,EAAA,kBAAiB,CAAA,CAAA,CAAA,GAAiB,MAAM,QAAQ,EAAA,qBAAoB,CAAI,EAAA,qBAAoB,CAAI,EAAA,qBAAoB,CAAA,GAQjR,WAAQ,AAAA,EAAA,KAAA,GAAE,EAAA,MAAU,GACpB,YAAS,AAAA,EAAA,KAAA,GAAE,EAAA,MAAU,KAEtB,EAMC,QAAA,CALC,KAAK,OACJ,OAAQ,EAAA,OACR,SAAU,EAAA,SACX,MAAM,oEACL,SAAQ,cAEX,EAAkF,EAAA,OAAA,UAAA,CAA3E,WAAa,EAAA,EAAmB,CAAG,UAAY,EAAA,MAAY,MAAO,EAAA"}
 
1
+ {"version":3,"file":"BasicInputFile-ASZjsFcd.js","names":[],"sources":["../../../../packages/ui/src/components/Form/Input/BasicInputFile.vue","../../../../packages/ui/src/components/Form/Input/BasicInputFile.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { useDebounce } from '@vueuse/core'\nimport { ref } from 'vue'\n\nconst props = defineProps<{\n class?: string | string[] | null\n isDraggingClasses?: string | string[] | null\n isNotDraggingClasses?: string | string[] | null\n accept?: string\n multiple?: boolean\n modelValue?: File[]\n}>()\n\nconst emit = defineEmits<{\n 'update:modelValue': [files: File[]]\n}>()\n\nconst files = ref<File[]>([])\nconst firstFile = ref<File>()\n\nconst isDragging = ref(false)\nconst isDraggingDebounced = useDebounce(isDragging, 150)\n\nfunction handleFileChange(e: Event) {\n const input = e.target as HTMLInputElement\n if (!input.files)\n return\n\n files.value = []\n\n for (let i = 0; i < input.files.length; i++) {\n files.value.push(input.files[i])\n }\n\n emit('update:modelValue', files.value)\n\n if (files.value.length > 0) {\n firstFile.value = files.value[0]\n }\n\n isDragging.value = false\n\n // Allow re-selecting the same file\n input.value = ''\n}\n</script>\n\n<template>\n <label\n :class=\"[\n 'relative',\n 'cursor-pointer',\n props.class,\n isDragging\n ? [...Array.isArray(isDraggingClasses) ? isDraggingClasses : [isDraggingClasses]]\n : [...Array.isArray(isNotDraggingClasses) ? isNotDraggingClasses : [isNotDraggingClasses]],\n ]\"\n @dragover=\"isDragging = true\"\n @dragleave=\"isDragging = false\"\n >\n <input\n type=\"file\"\n :accept=\"accept\"\n :multiple=\"multiple\"\n class=\"absolute inset-0 h-0 w-0 cursor-pointer appearance-none opacity-0\"\n @change=\"handleFileChange\"\n >\n <slot :is-dragging=\"isDraggingDebounced\" :first-file=\"firstFile\" :files=\"files\" />\n </label>\n</template>\n","<script setup lang=\"ts\">\nimport { useDebounce } from '@vueuse/core'\nimport { ref } from 'vue'\n\nconst props = defineProps<{\n class?: string | string[] | null\n isDraggingClasses?: string | string[] | null\n isNotDraggingClasses?: string | string[] | null\n accept?: string\n multiple?: boolean\n modelValue?: File[]\n}>()\n\nconst emit = defineEmits<{\n 'update:modelValue': [files: File[]]\n}>()\n\nconst files = ref<File[]>([])\nconst firstFile = ref<File>()\n\nconst isDragging = ref(false)\nconst isDraggingDebounced = useDebounce(isDragging, 150)\n\nfunction handleFileChange(e: Event) {\n const input = e.target as HTMLInputElement\n if (!input.files)\n return\n\n files.value = []\n\n for (let i = 0; i < input.files.length; i++) {\n files.value.push(input.files[i])\n }\n\n emit('update:modelValue', files.value)\n\n if (files.value.length > 0) {\n firstFile.value = files.value[0]\n }\n\n isDragging.value = false\n\n // Allow re-selecting the same file\n input.value = ''\n}\n</script>\n\n<template>\n <label\n :class=\"[\n 'relative',\n 'cursor-pointer',\n props.class,\n isDragging\n ? [...Array.isArray(isDraggingClasses) ? isDraggingClasses : [isDraggingClasses]]\n : [...Array.isArray(isNotDraggingClasses) ? isNotDraggingClasses : [isNotDraggingClasses]],\n ]\"\n @dragover=\"isDragging = true\"\n @dragleave=\"isDragging = false\"\n >\n <input\n type=\"file\"\n :accept=\"accept\"\n :multiple=\"multiple\"\n class=\"absolute inset-0 h-0 w-0 cursor-pointer appearance-none opacity-0\"\n @change=\"handleFileChange\"\n >\n <slot :is-dragging=\"isDraggingDebounced\" :first-file=\"firstFile\" :files=\"files\" />\n </label>\n</template>\n"],"mappings":"0WCIA,IAAM,EAAQ,EASR,EAAO,EAIP,EAAQ,EAAY,EAAE,CAAA,CACtB,EAAY,GAAU,CAEtB,EAAa,EAAI,GAAK,CACtB,EAAsB,EAAY,EAAY,IAAG,CAEvD,SAAS,EAAiB,EAAU,CAClC,IAAM,EAAQ,EAAE,OACX,KAAM,MAGX,GAAM,MAAQ,EAAC,CAEf,IAAK,IAAI,EAAI,EAAG,EAAI,EAAM,MAAM,OAAQ,IACtC,EAAM,MAAM,KAAK,EAAM,MAAM,GAAE,CAGjC,EAAK,oBAAqB,EAAM,MAAK,CAEjC,EAAM,MAAM,OAAS,IACvB,EAAU,MAAQ,EAAM,MAAM,IAGhC,EAAW,MAAQ,GAGnB,EAAM,MAAQ,sBAKd,EAoBQ,QAAA,CAnBL,MAAK,EAAA,6BAAoD,EAAM,MAAa,EAAA,MAAA,CAAA,GAAyB,MAAM,QAAQ,EAAA,kBAAiB,CAAI,EAAA,kBAAiB,CAAI,EAAA,kBAAiB,CAAA,CAAA,CAAA,GAAiB,MAAM,QAAQ,EAAA,qBAAoB,CAAI,EAAA,qBAAoB,CAAI,EAAA,qBAAoB,CAAA,GAQjR,WAAQ,AAAA,EAAA,KAAA,GAAE,EAAA,MAAU,GACpB,YAAS,AAAA,EAAA,KAAA,GAAE,EAAA,MAAU,KAEtB,EAMC,QAAA,CALC,KAAK,OACJ,OAAQ,EAAA,OACR,SAAU,EAAA,SACX,MAAM,oEACL,SAAQ,cAEX,EAAkF,EAAA,OAAA,UAAA,CAA3E,WAAa,EAAA,EAAmB,CAAG,UAAY,EAAA,MAAY,MAAO,EAAA"}
assets/{CardCreate-Bi7-7ISk.js β†’ CardCreate-CpSqGC5E.js} RENAMED
@@ -1,2 +1,2 @@
1
  import{A as e,K as t,Pt as n,kt as r,w as i,x as a}from"./vue.runtime.esm-bundler-_ZPRHVd_.js";import{n as o}from"./vue-i18n.runtime-BK0j12fm.js";var s={relative:``,class:`min-h-[120px] flex flex-col cursor-pointer items-center justify-center border-neutral-200 rounded-xl bg-white/60 p-6 dark:border-neutral-700 hover:border-primary-300 dark:bg-black/30 hover:bg-white/80 dark:hover:border-primary-700 dark:hover:bg-black/40`,border:`solid 2`,transition:`all duration-300`,"cursor-pointer":``,"opacity-95":``,hover:`scale-100 opacity-100 shadow-md dark:shadow-lg`},c={"font-medium":``,text:`neutral-600 dark:neutral-300`},l=e({__name:`CardCreate`,setup(e){let{t:l}=o();return(e,o)=>(t(),i(`div`,s,[o[0]||=a(`div`,{"i-solar:add-square-line-duotone":``,"mb-4":``,"text-5xl":``,text:`neutral-400 dark:neutral-500`},null,-1),a(`p`,c,n(r(l)(`settings.pages.card.create_card`)),1)]))}});export{l as t};
2
- //# sourceMappingURL=CardCreate-Bi7-7ISk.js.map
 
1
  import{A as e,K as t,Pt as n,kt as r,w as i,x as a}from"./vue.runtime.esm-bundler-_ZPRHVd_.js";import{n as o}from"./vue-i18n.runtime-BK0j12fm.js";var s={relative:``,class:`min-h-[120px] flex flex-col cursor-pointer items-center justify-center border-neutral-200 rounded-xl bg-white/60 p-6 dark:border-neutral-700 hover:border-primary-300 dark:bg-black/30 hover:bg-white/80 dark:hover:border-primary-700 dark:hover:bg-black/40`,border:`solid 2`,transition:`all duration-300`,"cursor-pointer":``,"opacity-95":``,hover:`scale-100 opacity-100 shadow-md dark:shadow-lg`},c={"font-medium":``,text:`neutral-600 dark:neutral-300`},l=e({__name:`CardCreate`,setup(e){let{t:l}=o();return(e,o)=>(t(),i(`div`,s,[o[0]||=a(`div`,{"i-solar:add-square-line-duotone":``,"mb-4":``,"text-5xl":``,text:`neutral-400 dark:neutral-500`},null,-1),a(`p`,c,n(r(l)(`settings.pages.card.create_card`)),1)]))}});export{l as t};
2
+ //# sourceMappingURL=CardCreate-CpSqGC5E.js.map
assets/{CardCreate-Bi7-7ISk.js.map β†’ CardCreate-CpSqGC5E.js.map} RENAMED
@@ -1 +1 @@
1
- {"version":3,"file":"CardCreate-Bi7-7ISk.js","names":[],"sources":["../../../../packages/stage-pages/src/pages/settings/airi-card/components/CardCreate.vue","../../../../packages/stage-pages/src/pages/settings/airi-card/components/CardCreate.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { useI18n } from 'vue-i18n'\n\nconst { t } = useI18n()\n</script>\n\n<template>\n <!-- Style from ui/InputFile component, may be centralized later -->\n <div\n relative\n class=\"min-h-[120px] flex flex-col cursor-pointer items-center justify-center border-neutral-200 rounded-xl bg-white/60 p-6 dark:border-neutral-700 hover:border-primary-300 dark:bg-black/30 hover:bg-white/80 dark:hover:border-primary-700 dark:hover:bg-black/40\"\n border=\"solid 2\"\n transition=\"all duration-300\"\n cursor-pointer opacity-95\n hover=\"scale-100 opacity-100 shadow-md dark:shadow-lg\"\n >\n <div i-solar:add-square-line-duotone mb-4 text-5xl text=\"neutral-400 dark:neutral-500\" />\n <p font-medium text=\"neutral-600 dark:neutral-300\">\n {{ t('settings.pages.card.create_card') }}\n </p>\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { useI18n } from 'vue-i18n'\n\nconst { t } = useI18n()\n</script>\n\n<template>\n <!-- Style from ui/InputFile component, may be centralized later -->\n <div\n relative\n class=\"min-h-[120px] flex flex-col cursor-pointer items-center justify-center border-neutral-200 rounded-xl bg-white/60 p-6 dark:border-neutral-700 hover:border-primary-300 dark:bg-black/30 hover:bg-white/80 dark:hover:border-primary-700 dark:hover:bg-black/40\"\n border=\"solid 2\"\n transition=\"all duration-300\"\n cursor-pointer opacity-95\n hover=\"scale-100 opacity-100 shadow-md dark:shadow-lg\"\n >\n <div i-solar:add-square-line-duotone mb-4 text-5xl text=\"neutral-400 dark:neutral-500\" />\n <p font-medium text=\"neutral-600 dark:neutral-300\">\n {{ t('settings.pages.card.create_card') }}\n </p>\n </div>\n</template>\n"],"mappings":"ipBCGA,GAAM,CAAE,KAAM,GAAQ,mBAKpB,EAYM,MAZN,EAYM,CAAA,AAAA,EAAA,KAJJ,EAAyF,MAAA,CAApF,kCAAA,GAAgC,OAAA,GAAK,WAAA,GAAS,KAAK,yCACxD,EAEI,IAFJ,EAEI,EADC,EAAA,EAAC,CAAA,kCAAA,CAAA,CAAA,EAAA,CAAA,CAAA"}
 
1
+ {"version":3,"file":"CardCreate-CpSqGC5E.js","names":[],"sources":["../../../../packages/stage-pages/src/pages/settings/airi-card/components/CardCreate.vue","../../../../packages/stage-pages/src/pages/settings/airi-card/components/CardCreate.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { useI18n } from 'vue-i18n'\n\nconst { t } = useI18n()\n</script>\n\n<template>\n <!-- Style from ui/InputFile component, may be centralized later -->\n <div\n relative\n class=\"min-h-[120px] flex flex-col cursor-pointer items-center justify-center border-neutral-200 rounded-xl bg-white/60 p-6 dark:border-neutral-700 hover:border-primary-300 dark:bg-black/30 hover:bg-white/80 dark:hover:border-primary-700 dark:hover:bg-black/40\"\n border=\"solid 2\"\n transition=\"all duration-300\"\n cursor-pointer opacity-95\n hover=\"scale-100 opacity-100 shadow-md dark:shadow-lg\"\n >\n <div i-solar:add-square-line-duotone mb-4 text-5xl text=\"neutral-400 dark:neutral-500\" />\n <p font-medium text=\"neutral-600 dark:neutral-300\">\n {{ t('settings.pages.card.create_card') }}\n </p>\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { useI18n } from 'vue-i18n'\n\nconst { t } = useI18n()\n</script>\n\n<template>\n <!-- Style from ui/InputFile component, may be centralized later -->\n <div\n relative\n class=\"min-h-[120px] flex flex-col cursor-pointer items-center justify-center border-neutral-200 rounded-xl bg-white/60 p-6 dark:border-neutral-700 hover:border-primary-300 dark:bg-black/30 hover:bg-white/80 dark:hover:border-primary-700 dark:hover:bg-black/40\"\n border=\"solid 2\"\n transition=\"all duration-300\"\n cursor-pointer opacity-95\n hover=\"scale-100 opacity-100 shadow-md dark:shadow-lg\"\n >\n <div i-solar:add-square-line-duotone mb-4 text-5xl text=\"neutral-400 dark:neutral-500\" />\n <p font-medium text=\"neutral-600 dark:neutral-300\">\n {{ t('settings.pages.card.create_card') }}\n </p>\n </div>\n</template>\n"],"mappings":"ipBCGA,GAAM,CAAE,KAAM,GAAQ,mBAKpB,EAYM,MAZN,EAYM,CAAA,AAAA,EAAA,KAJJ,EAAyF,MAAA,CAApF,kCAAA,GAAgC,OAAA,GAAK,WAAA,GAAS,KAAK,yCACxD,EAEI,IAFJ,EAEI,EADC,EAAA,EAAC,CAAA,kCAAA,CAAA,CAAA,EAAA,CAAA,CAAA"}
assets/CardCreate-DpxALAvW.js DELETED
@@ -1 +0,0 @@
1
- import{t as e}from"./CardCreate-Bi7-7ISk.js";export{e as default};
 
 
assets/CardCreate-Z1G2g7WP.js ADDED
@@ -0,0 +1 @@
 
 
1
+ import{t as e}from"./CardCreate-CpSqGC5E.js";export{e as default};
assets/CardCreationDialog-1wBHkpxm.js DELETED
@@ -1 +0,0 @@
1
- import"./src-B0kTFhyw.js";import"./resettable-BKThqTUq.js";import"./environment-B9MED9Mn.js";import"./speech-BBHhUAo6.js";import"./stream-transcription-DKUM7eVP.js";import"./airi-card-DYprqM5O.js";import{t as e}from"./CardCreationDialog-BnKzWVG2.js";export{e as default};
 
 
assets/CardCreationDialog-B9cU7XjM.js ADDED
@@ -0,0 +1 @@
 
 
1
+ import"./src-CuCahbAr.js";import"./environment-B9MED9Mn.js";import"./speech-CZOrJx0w.js";import"./resettable--O0wHmRQ.js";import"./stream-transcription-BWzrFso9.js";import"./airi-card-DZOfF0t0.js";import{t as e}from"./CardCreationDialog-D3b-50Vp.js";export{e as default};
assets/{CardCreationDialog-BnKzWVG2.js β†’ CardCreationDialog-D3b-50Vp.js} RENAMED
@@ -1,4 +1,4 @@
1
- import{o as e,t}from"./chunk-B78Zgmat.js";import{A as n,C as r,J as i,K as a,O as o,Pt as s,R as c,S as ee,Tt as te,b as l,gt as u,jt as d,k as f,kt as p,lt as m,m as h,nt as ne,w as g,x as _,xt as v}from"./vue.runtime.esm-bundler-_ZPRHVd_.js";import{g as y,i as b,l as re}from"./src-B0kTFhyw.js";import{i as ie,m as ae,r as x,t as S}from"./DialogTitle-WndXCd57.js";import{t as oe}from"./DialogPortal-2ogLZMDa.js";import{t as C}from"./_plugin-vue_export-helper-DSrzDOgY.js";import{n as se}from"./vue-i18n.runtime-BK0j12fm.js";import{t as w}from"./airi-card-DYprqM5O.js";var T=t(((e,t)=>{function n(e){return e.toLowerCase()}t.exports=n})),E=t(((e,t)=>{t.exports=T()})),D=t(((e,t)=>{function n(e,t,n){return e.replace(t,n)}t.exports=n})),O=t(((e,t)=>{t.exports=D()})),k=t(((e,t)=>{t.exports=String.prototype.trim!==void 0})),A=t(((e,t)=>{t.exports=String.prototype.trim})),j=t(((e,t)=>{var n=A(),r=`
2
  \r
3
  \f\vαš€β€€β€β€‚β€ƒβ€„β€…β€†β€‡β€ˆβ€‰β€Š\u2028\u2029β€―βŸγ€€ο»Ώ`,i=`᠎`;function a(){return n.call(r)===``&&n.call(i)===i}t.exports=a})),M=t(((e,t)=>{var n=O(),r=/^[\u0020\f\n\r\t\v\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]*([\S\s]*?)[\u0020\f\n\r\t\v\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]*$/;function i(e){return n(e,r,`$1`)}t.exports=i})),N=t(((e,t)=>{var n=A();function r(e){return n.call(e)}t.exports=r})),P=t(((e,t)=>{var n=k(),r=j(),i=M(),a=N();t.exports=n&&r()?a:i})),F=t(((e,t)=>{var n=E(),r=O(),i=P(),a=/\s+/g,o=/[!"'(),–.:;<>?`{}|~\/\\\[\]_#$*&^@%]+/g,s=/([a-z0-9])([A-Z])/g;function c(e){return e=r(e,o,` `),e=r(e,s,`$1 $2`),e=i(e),e=r(e,a,`-`),n(e)}t.exports=c})),I=e(t(((e,t)=>{t.exports=F()}))(),1),L={class:`w-full flex flex-col gap-5`},R={class:`mt-4`},z={class:`border-b border-neutral-200 dark:border-neutral-700`},B={class:`flex justify-center -mb-px sm:justify-start space-x-1`},V=[`onClick`],H={class:`flex items-center gap-1`},U={key:0,class:`w-full rounded-xl bg-red900`},W={class:`w-full p-4`},G={key:1,class:`tab-content ml-auto mr-auto w-95%`},ce={class:`mb-3`},le={class:`input-list ml-auto mr-auto w-90% flex flex-row flex-wrap justify-center gap-8`},ue={key:2,class:`tab-content ml-auto mr-auto w-95%`},de={class:`input-list ml-auto mr-auto w-90% flex flex-row flex-wrap justify-center gap-8`},fe={key:3,class:`tab-content ml-auto mr-auto w-95%`},pe={class:`input-list ml-auto mr-auto w-90% flex flex-row flex-wrap justify-center gap-8`},me={class:`ml-auto mr-1 flex flex-row gap-2`},K=C(n({__name:`CardCreationDialog`,props:c({modelValue:{type:Boolean}},{modelValue:{type:Boolean},modelModifiers:{}}),emits:c([`update:modelValue`],[`update:modelValue`]),setup(e,{emit:t}){let n=t,c=ne(e,`modelValue`),{t:C}=se(),T=w(),E=v(``),D=[{id:`identity`,label:C(`settings.pages.card.creation.identity`),icon:`i-solar:emoji-funny-square-bold-duotone`},{id:`behavior`,label:C(`settings.pages.card.creation.behavior`),icon:`i-solar:chat-round-line-bold-duotone`},{id:`settings`,label:C(`settings.pages.card.creation.settings`),icon:`i-solar:settings-bold-duotone`}],O=l({get:()=>D.find(e=>e.id===E.value)?E.value:D[0]?.id||``,set:e=>{E.value=e}}),k=v(!1),A=v(``);function j(e){let t=te(e);if(t.name.length>0)if(/^(?:\d+\.)+\d+$/.test(t.version))if(t.description.length>0)if(t.personality.length>0)if(t.scenario.length>0)if(t.systemPrompt.length>0){if(!(t.postHistoryInstructions.length>0))return k.value=!0,A.value=C(`settings.pages.card.creation.errors.posthistoryinstructions`),!1}else return k.value=!0,A.value=C(`settings.pages.card.creation.errors.systemprompt`),!1;else return k.value=!0,A.value=C(`settings.pages.card.creation.errors.scenario`),!1;else return k.value=!0,A.value=C(`settings.pages.card.creation.errors.personality`),!1;else return k.value=!0,A.value=C(`settings.pages.card.creation.errors.description`),!1;else return k.value=!0,A.value=C(`settings.pages.card.creation.errors.version`),!1;else return k.value=!0,A.value=C(`settings.pages.card.creation.errors.name`),!1;return k.value=!1,T.addCard(t),c.value=!1,!0}let M=v({name:C(`settings.pages.card.creation.defaults.name`),nickname:void 0,version:`1.0`,description:``,notes:void 0,personality:C(`settings.pages.card.creation.defaults.personality`),scenario:C(`settings.pages.card.creation.defaults.scenario`),systemPrompt:C(`settings.pages.card.creation.defaults.systemprompt`),postHistoryInstructions:C(`settings.pages.card.creation.defaults.posthistoryinstructions`),greetings:[],messageExample:[]});function N(e,t){return l({get:()=>M.value[e]??``,set:n=>{let r=n.trim();M.value[e]=r.length>0?t?t(r):r:``}})}let P=N(`name`,e=>(0,I.default)(e)),F=N(`nickname`),K=N(`description`),q=N(`notes`),J=N(`personality`),Y=N(`scenario`),X=l({get:()=>M.value.greetings??[],set:e=>{M.value.greetings=e||[]}}),Z=N(`version`),Q=N(`systemPrompt`),$=N(`postHistoryInstructions`);return(e,t)=>(a(),ee(p(ae),{open:c.value,"onUpdate:open":t[12]||=e=>n(`update:modelValue`,e)},{default:m(()=>[f(p(oe),null,{default:m(()=>[f(p(x),{class:`fixed inset-0 z-100 bg-black/50 backdrop-blur-sm data-[state=closed]:animate-fadeOut data-[state=open]:animate-fadeIn`}),f(p(ie),{class:`fixed left-1/2 top-1/2 z-100 m-0 max-h-[90vh] max-w-6xl w-[92vw] flex flex-col overflow-auto border border-neutral-200 rounded-xl bg-white p-5 shadow-xl 2xl:w-[60vw] lg:w-[80vw] md:w-[85vw] xl:w-[70vw] -translate-x-1/2 -translate-y-1/2 data-[state=closed]:animate-contentHide data-[state=open]:animate-contentShow dark:border-neutral-700 dark:bg-neutral-800 sm:p-6`},{default:m(()=>[_(`div`,L,[f(p(S),{"text-2xl":``,"font-normal":``,class:`from-primary-500 to-primary-400 bg-gradient-to-r bg-clip-text text-transparent`},{default:m(()=>[o(s(p(C)(`settings.pages.card.create_card`)),1)]),_:1}),_(`div`,R,[_(`div`,z,[_(`div`,B,[(a(),g(h,null,i(D,e=>_(`button`,{key:e.id,class:d([`px-4 py-2 text-sm font-medium`,[O.value===e.id?`text-primary-600 dark:text-primary-400 border-b-2 border-primary-500 dark:border-primary-400`:`text-neutral-500 dark:text-neutral-400 hover:text-neutral-700 dark:hover:text-neutral-300`]]),onClick:t=>O.value=e.id},[_(`div`,H,[_(`div`,{class:d(e.icon)},null,2),o(` `+s(e.label),1)])],10,V)),64))])])]),k.value?(a(),g(`div`,U,[_(`p`,W,s(A.value),1)])):r(``,!0),O.value===`identity`?(a(),g(`div`,G,[_(`p`,ce,s(p(C)(`settings.pages.card.creation.fields_info.subtitle`)),1),_(`div`,le,[f(p(y),{modelValue:p(P),"onUpdate:modelValue":t[0]||=e=>u(P)?P.value=e:null,label:p(C)(`settings.pages.card.creation.name`),description:p(C)(`settings.pages.card.creation.fields_info.name`),required:!0},null,8,[`modelValue`,`label`,`description`]),f(p(y),{modelValue:p(F),"onUpdate:modelValue":t[1]||=e=>u(F)?F.value=e:null,label:p(C)(`settings.pages.card.creation.nickname`),description:p(C)(`settings.pages.card.creation.fields_info.nickname`)},null,8,[`modelValue`,`label`,`description`]),f(p(y),{modelValue:p(K),"onUpdate:modelValue":t[2]||=e=>u(K)?K.value=e:null,label:p(C)(`settings.pages.card.creation.description`),"single-line":!1,required:!0,description:p(C)(`settings.pages.card.creation.fields_info.description`)},null,8,[`modelValue`,`label`,`description`]),f(p(y),{modelValue:p(q),"onUpdate:modelValue":t[3]||=e=>u(q)?q.value=e:null,label:p(C)(`settings.pages.card.creator_notes`),"single-line":!1,description:p(C)(`settings.pages.card.creation.fields_info.notes`)},null,8,[`modelValue`,`label`,`description`])])])):O.value===`behavior`?(a(),g(`div`,ue,[_(`div`,de,[f(p(y),{modelValue:p(J),"onUpdate:modelValue":t[4]||=e=>u(J)?J.value=e:null,label:p(C)(`settings.pages.card.personality`),"single-line":!1,required:!0,description:p(C)(`settings.pages.card.creation.fields_info.personality`)},null,8,[`modelValue`,`label`,`description`]),f(p(y),{modelValue:p(Y),"onUpdate:modelValue":t[5]||=e=>u(Y)?Y.value=e:null,label:p(C)(`settings.pages.card.scenario`),"single-line":!1,required:!0,description:p(C)(`settings.pages.card.creation.fields_info.scenario`)},null,8,[`modelValue`,`label`,`description`]),f(p(re),{modelValue:X.value,"onUpdate:modelValue":t[6]||=e=>X.value=e,label:p(C)(`settings.pages.card.creation.greetings`),description:p(C)(`settings.pages.card.creation.fields_info.greetings`)},null,8,[`modelValue`,`label`,`description`])])])):O.value===`settings`?(a(),g(`div`,fe,[_(`div`,pe,[f(p(y),{modelValue:p(Q),"onUpdate:modelValue":t[7]||=e=>u(Q)?Q.value=e:null,label:p(C)(`settings.pages.card.systemprompt`),"single-line":!1,required:!0,description:p(C)(`settings.pages.card.creation.fields_info.systemprompt`)},null,8,[`modelValue`,`label`,`description`]),f(p(y),{modelValue:p($),"onUpdate:modelValue":t[8]||=e=>u($)?$.value=e:null,label:p(C)(`settings.pages.card.posthistoryinstructions`),"single-line":!1,required:!0,description:p(C)(`settings.pages.card.creation.fields_info.posthistoryinstructions`)},null,8,[`modelValue`,`label`,`description`]),f(p(y),{modelValue:p(Z),"onUpdate:modelValue":t[9]||=e=>u(Z)?Z.value=e:null,label:p(C)(`settings.pages.card.creation.version`),required:!0,description:p(C)(`settings.pages.card.creation.fields_info.version`)},null,8,[`modelValue`,`label`,`description`])])])):r(``,!0),_(`div`,me,[f(p(b),{variant:`secondary`,icon:`i-solar:undo-left-bold-duotone`,label:p(C)(`settings.pages.card.cancel`),disabled:!1,onClick:t[10]||=e=>c.value=!1},null,8,[`label`]),f(p(b),{variant:`primary`,icon:`i-solar:check-circle-bold-duotone`,label:p(C)(`settings.pages.card.creation.create`),disabled:!1,onClick:t[11]||=e=>j(M.value)},null,8,[`label`])])])]),_:1})]),_:1})]),_:1},8,[`open`]))}}),[[`__scopeId`,`data-v-0fa1507b`]]);export{K as t};
4
- //# sourceMappingURL=CardCreationDialog-BnKzWVG2.js.map
 
1
+ import{o as e,t}from"./chunk-B78Zgmat.js";import{A as n,C as r,J as i,K as a,O as o,Pt as s,R as c,S as ee,Tt as te,b as l,gt as u,jt as d,k as f,kt as p,lt as m,m as h,nt as ne,w as g,x as _,xt as v}from"./vue.runtime.esm-bundler-_ZPRHVd_.js";import{g as y,i as b,l as re}from"./src-CuCahbAr.js";import{i as ie,m as ae,r as x,t as S}from"./DialogTitle-D6_neaY1.js";import{t as oe}from"./DialogPortal-BhPdarFy.js";import{t as C}from"./_plugin-vue_export-helper-DSrzDOgY.js";import{n as se}from"./vue-i18n.runtime-BK0j12fm.js";import{t as w}from"./airi-card-DZOfF0t0.js";var T=t(((e,t)=>{function n(e){return e.toLowerCase()}t.exports=n})),E=t(((e,t)=>{t.exports=T()})),D=t(((e,t)=>{function n(e,t,n){return e.replace(t,n)}t.exports=n})),O=t(((e,t)=>{t.exports=D()})),k=t(((e,t)=>{t.exports=String.prototype.trim!==void 0})),A=t(((e,t)=>{t.exports=String.prototype.trim})),j=t(((e,t)=>{var n=A(),r=`
2
  \r
3
  \f\vαš€β€€β€β€‚β€ƒβ€„β€…β€†β€‡β€ˆβ€‰β€Š\u2028\u2029β€―βŸγ€€ο»Ώ`,i=`᠎`;function a(){return n.call(r)===``&&n.call(i)===i}t.exports=a})),M=t(((e,t)=>{var n=O(),r=/^[\u0020\f\n\r\t\v\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]*([\S\s]*?)[\u0020\f\n\r\t\v\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]*$/;function i(e){return n(e,r,`$1`)}t.exports=i})),N=t(((e,t)=>{var n=A();function r(e){return n.call(e)}t.exports=r})),P=t(((e,t)=>{var n=k(),r=j(),i=M(),a=N();t.exports=n&&r()?a:i})),F=t(((e,t)=>{var n=E(),r=O(),i=P(),a=/\s+/g,o=/[!"'(),–.:;<>?`{}|~\/\\\[\]_#$*&^@%]+/g,s=/([a-z0-9])([A-Z])/g;function c(e){return e=r(e,o,` `),e=r(e,s,`$1 $2`),e=i(e),e=r(e,a,`-`),n(e)}t.exports=c})),I=e(t(((e,t)=>{t.exports=F()}))(),1),L={class:`w-full flex flex-col gap-5`},R={class:`mt-4`},z={class:`border-b border-neutral-200 dark:border-neutral-700`},B={class:`flex justify-center -mb-px sm:justify-start space-x-1`},V=[`onClick`],H={class:`flex items-center gap-1`},U={key:0,class:`w-full rounded-xl bg-red900`},W={class:`w-full p-4`},G={key:1,class:`tab-content ml-auto mr-auto w-95%`},ce={class:`mb-3`},le={class:`input-list ml-auto mr-auto w-90% flex flex-row flex-wrap justify-center gap-8`},ue={key:2,class:`tab-content ml-auto mr-auto w-95%`},de={class:`input-list ml-auto mr-auto w-90% flex flex-row flex-wrap justify-center gap-8`},fe={key:3,class:`tab-content ml-auto mr-auto w-95%`},pe={class:`input-list ml-auto mr-auto w-90% flex flex-row flex-wrap justify-center gap-8`},me={class:`ml-auto mr-1 flex flex-row gap-2`},K=C(n({__name:`CardCreationDialog`,props:c({modelValue:{type:Boolean}},{modelValue:{type:Boolean},modelModifiers:{}}),emits:c([`update:modelValue`],[`update:modelValue`]),setup(e,{emit:t}){let n=t,c=ne(e,`modelValue`),{t:C}=se(),T=w(),E=v(``),D=[{id:`identity`,label:C(`settings.pages.card.creation.identity`),icon:`i-solar:emoji-funny-square-bold-duotone`},{id:`behavior`,label:C(`settings.pages.card.creation.behavior`),icon:`i-solar:chat-round-line-bold-duotone`},{id:`settings`,label:C(`settings.pages.card.creation.settings`),icon:`i-solar:settings-bold-duotone`}],O=l({get:()=>D.find(e=>e.id===E.value)?E.value:D[0]?.id||``,set:e=>{E.value=e}}),k=v(!1),A=v(``);function j(e){let t=te(e);if(t.name.length>0)if(/^(?:\d+\.)+\d+$/.test(t.version))if(t.description.length>0)if(t.personality.length>0)if(t.scenario.length>0)if(t.systemPrompt.length>0){if(!(t.postHistoryInstructions.length>0))return k.value=!0,A.value=C(`settings.pages.card.creation.errors.posthistoryinstructions`),!1}else return k.value=!0,A.value=C(`settings.pages.card.creation.errors.systemprompt`),!1;else return k.value=!0,A.value=C(`settings.pages.card.creation.errors.scenario`),!1;else return k.value=!0,A.value=C(`settings.pages.card.creation.errors.personality`),!1;else return k.value=!0,A.value=C(`settings.pages.card.creation.errors.description`),!1;else return k.value=!0,A.value=C(`settings.pages.card.creation.errors.version`),!1;else return k.value=!0,A.value=C(`settings.pages.card.creation.errors.name`),!1;return k.value=!1,T.addCard(t),c.value=!1,!0}let M=v({name:C(`settings.pages.card.creation.defaults.name`),nickname:void 0,version:`1.0`,description:``,notes:void 0,personality:C(`settings.pages.card.creation.defaults.personality`),scenario:C(`settings.pages.card.creation.defaults.scenario`),systemPrompt:C(`settings.pages.card.creation.defaults.systemprompt`),postHistoryInstructions:C(`settings.pages.card.creation.defaults.posthistoryinstructions`),greetings:[],messageExample:[]});function N(e,t){return l({get:()=>M.value[e]??``,set:n=>{let r=n.trim();M.value[e]=r.length>0?t?t(r):r:``}})}let P=N(`name`,e=>(0,I.default)(e)),F=N(`nickname`),K=N(`description`),q=N(`notes`),J=N(`personality`),Y=N(`scenario`),X=l({get:()=>M.value.greetings??[],set:e=>{M.value.greetings=e||[]}}),Z=N(`version`),Q=N(`systemPrompt`),$=N(`postHistoryInstructions`);return(e,t)=>(a(),ee(p(ae),{open:c.value,"onUpdate:open":t[12]||=e=>n(`update:modelValue`,e)},{default:m(()=>[f(p(oe),null,{default:m(()=>[f(p(x),{class:`fixed inset-0 z-100 bg-black/50 backdrop-blur-sm data-[state=closed]:animate-fadeOut data-[state=open]:animate-fadeIn`}),f(p(ie),{class:`fixed left-1/2 top-1/2 z-100 m-0 max-h-[90vh] max-w-6xl w-[92vw] flex flex-col overflow-auto border border-neutral-200 rounded-xl bg-white p-5 shadow-xl 2xl:w-[60vw] lg:w-[80vw] md:w-[85vw] xl:w-[70vw] -translate-x-1/2 -translate-y-1/2 data-[state=closed]:animate-contentHide data-[state=open]:animate-contentShow dark:border-neutral-700 dark:bg-neutral-800 sm:p-6`},{default:m(()=>[_(`div`,L,[f(p(S),{"text-2xl":``,"font-normal":``,class:`from-primary-500 to-primary-400 bg-gradient-to-r bg-clip-text text-transparent`},{default:m(()=>[o(s(p(C)(`settings.pages.card.create_card`)),1)]),_:1}),_(`div`,R,[_(`div`,z,[_(`div`,B,[(a(),g(h,null,i(D,e=>_(`button`,{key:e.id,class:d([`px-4 py-2 text-sm font-medium`,[O.value===e.id?`text-primary-600 dark:text-primary-400 border-b-2 border-primary-500 dark:border-primary-400`:`text-neutral-500 dark:text-neutral-400 hover:text-neutral-700 dark:hover:text-neutral-300`]]),onClick:t=>O.value=e.id},[_(`div`,H,[_(`div`,{class:d(e.icon)},null,2),o(` `+s(e.label),1)])],10,V)),64))])])]),k.value?(a(),g(`div`,U,[_(`p`,W,s(A.value),1)])):r(``,!0),O.value===`identity`?(a(),g(`div`,G,[_(`p`,ce,s(p(C)(`settings.pages.card.creation.fields_info.subtitle`)),1),_(`div`,le,[f(p(y),{modelValue:p(P),"onUpdate:modelValue":t[0]||=e=>u(P)?P.value=e:null,label:p(C)(`settings.pages.card.creation.name`),description:p(C)(`settings.pages.card.creation.fields_info.name`),required:!0},null,8,[`modelValue`,`label`,`description`]),f(p(y),{modelValue:p(F),"onUpdate:modelValue":t[1]||=e=>u(F)?F.value=e:null,label:p(C)(`settings.pages.card.creation.nickname`),description:p(C)(`settings.pages.card.creation.fields_info.nickname`)},null,8,[`modelValue`,`label`,`description`]),f(p(y),{modelValue:p(K),"onUpdate:modelValue":t[2]||=e=>u(K)?K.value=e:null,label:p(C)(`settings.pages.card.creation.description`),"single-line":!1,required:!0,description:p(C)(`settings.pages.card.creation.fields_info.description`)},null,8,[`modelValue`,`label`,`description`]),f(p(y),{modelValue:p(q),"onUpdate:modelValue":t[3]||=e=>u(q)?q.value=e:null,label:p(C)(`settings.pages.card.creator_notes`),"single-line":!1,description:p(C)(`settings.pages.card.creation.fields_info.notes`)},null,8,[`modelValue`,`label`,`description`])])])):O.value===`behavior`?(a(),g(`div`,ue,[_(`div`,de,[f(p(y),{modelValue:p(J),"onUpdate:modelValue":t[4]||=e=>u(J)?J.value=e:null,label:p(C)(`settings.pages.card.personality`),"single-line":!1,required:!0,description:p(C)(`settings.pages.card.creation.fields_info.personality`)},null,8,[`modelValue`,`label`,`description`]),f(p(y),{modelValue:p(Y),"onUpdate:modelValue":t[5]||=e=>u(Y)?Y.value=e:null,label:p(C)(`settings.pages.card.scenario`),"single-line":!1,required:!0,description:p(C)(`settings.pages.card.creation.fields_info.scenario`)},null,8,[`modelValue`,`label`,`description`]),f(p(re),{modelValue:X.value,"onUpdate:modelValue":t[6]||=e=>X.value=e,label:p(C)(`settings.pages.card.creation.greetings`),description:p(C)(`settings.pages.card.creation.fields_info.greetings`)},null,8,[`modelValue`,`label`,`description`])])])):O.value===`settings`?(a(),g(`div`,fe,[_(`div`,pe,[f(p(y),{modelValue:p(Q),"onUpdate:modelValue":t[7]||=e=>u(Q)?Q.value=e:null,label:p(C)(`settings.pages.card.systemprompt`),"single-line":!1,required:!0,description:p(C)(`settings.pages.card.creation.fields_info.systemprompt`)},null,8,[`modelValue`,`label`,`description`]),f(p(y),{modelValue:p($),"onUpdate:modelValue":t[8]||=e=>u($)?$.value=e:null,label:p(C)(`settings.pages.card.posthistoryinstructions`),"single-line":!1,required:!0,description:p(C)(`settings.pages.card.creation.fields_info.posthistoryinstructions`)},null,8,[`modelValue`,`label`,`description`]),f(p(y),{modelValue:p(Z),"onUpdate:modelValue":t[9]||=e=>u(Z)?Z.value=e:null,label:p(C)(`settings.pages.card.creation.version`),required:!0,description:p(C)(`settings.pages.card.creation.fields_info.version`)},null,8,[`modelValue`,`label`,`description`])])])):r(``,!0),_(`div`,me,[f(p(b),{variant:`secondary`,icon:`i-solar:undo-left-bold-duotone`,label:p(C)(`settings.pages.card.cancel`),disabled:!1,onClick:t[10]||=e=>c.value=!1},null,8,[`label`]),f(p(b),{variant:`primary`,icon:`i-solar:check-circle-bold-duotone`,label:p(C)(`settings.pages.card.creation.create`),disabled:!1,onClick:t[11]||=e=>j(M.value)},null,8,[`label`])])])]),_:1})]),_:1})]),_:1},8,[`open`]))}}),[[`__scopeId`,`data-v-0fa1507b`]]);export{K as t};
4
+ //# sourceMappingURL=CardCreationDialog-D3b-50Vp.js.map
assets/{CardCreationDialog-BnKzWVG2.js.map β†’ CardCreationDialog-D3b-50Vp.js.map} RENAMED
@@ -1 +1 @@
1
- {"version":3,"file":"CardCreationDialog-BnKzWVG2.js","names":["lowercase","main","replace","main","trim","trim","replace","trim","trim","main","trim"],"sources":["../../../../node_modules/.pnpm/@stdlib+string-base-lowercase@0.4.0/node_modules/@stdlib/string-base-lowercase/lib/main.js","../../../../node_modules/.pnpm/@stdlib+string-base-lowercase@0.4.0/node_modules/@stdlib/string-base-lowercase/lib/index.js","../../../../node_modules/.pnpm/@stdlib+string-base-replace@0.2.2/node_modules/@stdlib/string-base-replace/lib/main.js","../../../../node_modules/.pnpm/@stdlib+string-base-replace@0.2.2/node_modules/@stdlib/string-base-replace/lib/index.js","../../../../node_modules/.pnpm/@stdlib+string-base-trim@0.2.2/node_modules/@stdlib/string-base-trim/lib/has_builtin.js","../../../../node_modules/.pnpm/@stdlib+string-base-trim@0.2.2/node_modules/@stdlib/string-base-trim/lib/builtin.js","../../../../node_modules/.pnpm/@stdlib+string-base-trim@0.2.2/node_modules/@stdlib/string-base-trim/lib/check.js","../../../../node_modules/.pnpm/@stdlib+string-base-trim@0.2.2/node_modules/@stdlib/string-base-trim/lib/polyfill.js","../../../../node_modules/.pnpm/@stdlib+string-base-trim@0.2.2/node_modules/@stdlib/string-base-trim/lib/main.js","../../../../node_modules/.pnpm/@stdlib+string-base-trim@0.2.2/node_modules/@stdlib/string-base-trim/lib/index.js","../../../../node_modules/.pnpm/@stdlib+string-base-kebabcase@0.2.2/node_modules/@stdlib/string-base-kebabcase/lib/main.js","../../../../node_modules/.pnpm/@stdlib+string-base-kebabcase@0.2.2/node_modules/@stdlib/string-base-kebabcase/lib/index.js","../../../../packages/stage-pages/src/pages/settings/airi-card/components/CardCreationDialog.vue","../../../../packages/stage-pages/src/pages/settings/airi-card/components/CardCreationDialog.vue"],"sourcesContent":["/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Converts a string to lowercase.\n*\n* @param {string} str - string to convert\n* @returns {string} lowercase string\n*\n* @example\n* var str = lowercase( 'bEEp' );\n* // returns 'beep'\n*/\nfunction lowercase( str ) {\n\treturn str.toLowerCase();\n}\n\n\n// EXPORTS //\n\nmodule.exports = lowercase;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Convert a string to lowercase.\n*\n* @module @stdlib/string-base-lowercase\n*\n* @example\n* var lowercase = require( '@stdlib/string-base-lowercase' );\n*\n* var str = lowercase( 'bEEp' );\n* // returns 'beep'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Replaces search occurrences with a replacement string.\n*\n* @param {string} str - input string\n* @param {RegExp} search - search expression\n* @param {(string|Function)} newval - replacement value or function\n* @returns {string} new string containing replacement(s)\n*\n* @example\n* var str = 'Hello World';\n* var out = replace( str, /world/i, 'Mr. President' );\n* // returns 'Hello Mr. President'\n*\n* @example\n* var capitalize = require( '@stdlib/string-base-capitalize' );\n*\n* var str = 'Oranges and lemons say the bells of St. Clement\\'s';\n*\n* function replacer( match, p1 ) {\n* return capitalize( p1 );\n* }\n*\n* var out = replace( str, /([^\\s]*)/gi, replacer );\n* // returns 'Oranges And Lemons Say The Bells Of St. Clement\\'s'\n*/\nfunction replace( str, search, newval ) {\n\treturn str.replace( search, newval );\n}\n\n\n// EXPORTS //\n\nmodule.exports = replace;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Replace search occurrences with a replacement string.\n*\n* @module @stdlib/string-base-replace\n*\n* @example\n* var replace = require( '@stdlib/string-base-replace' );\n*\n* var str = 'Hello World';\n* var out = replace( str, /world/i, 'Mr. President' );\n* // returns 'Hello Mr. President'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\nvar bool = ( typeof String.prototype.trim !== 'undefined' );\n\n\n// EXPORTS //\n\nmodule.exports = bool;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\nvar trim = String.prototype.trim;\n\n\n// EXPORTS //\n\nmodule.exports = trim;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar trim = require( './builtin.js' );\n\n\n// VARIABLES //\n\nvar str1 = ' \\n\\t\\r\\n\\f\\v\\u1680\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000\\ufeff';\nvar str2 = '\\u180e';\n\n\n// MAIN //\n\n/**\n* Tests the built-in `String.prototype.trim()` implementation when provided whitespace.\n*\n* ## Notes\n*\n* - For context, see <https://github.com/stdlib-js/stdlib/commit/c3d6458aa08bbd4bd6bf13e3643422f3b2a65dd9>. In short, we can only rely on the built-in `trim` method when it does not consider the Mongolian space separator as whitespace.\n*\n* @private\n* @returns {boolean} boolean indicating whether the built-in implementation returns the expected value\n*\n* @example\n* var b = test();\n* // returns <boolean>\n*/\nfunction test() {\n\treturn ( trim.call( str1 ) === '' ) && ( trim.call( str2 ) === str2 );\n}\n\n\n// EXPORTS //\n\nmodule.exports = test;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar replace = require( '@stdlib/string-base-replace' );\n\n\n// VARIABLES //\n\n// The following regular expression should suffice to polyfill (most?) all environments.\nvar RE = /^[\\u0020\\f\\n\\r\\t\\v\\u00a0\\u1680\\u2000-\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000\\ufeff]*([\\S\\s]*?)[\\u0020\\f\\n\\r\\t\\v\\u00a0\\u1680\\u2000-\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000\\ufeff]*$/;\n\n\n// MAIN //\n\n/**\n* Trims whitespace characters from the beginning and end of a string.\n*\n* @private\n* @param {string} str - input string\n* @returns {string} trimmed string\n*\n* @example\n* var out = trim( ' Whitespace ' );\n* // returns 'Whitespace'\n*\n* @example\n* var out = trim( '\\t\\t\\tTabs\\t\\t\\t' );\n* // returns 'Tabs'\n*\n* @example\n* var out = trim( '\\n\\n\\nNew Lines\\n\\n\\n' );\n* // returns 'New Lines'\n*/\nfunction trim( str ) {\n\treturn replace( str, RE, '$1' );\n}\n\n\n// EXPORTS //\n\nmodule.exports = trim;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar builtin = require( './builtin.js' );\n\n\n// MAIN //\n\n/**\n* Trims whitespace characters from the beginning and end of a string.\n*\n* @param {string} str - input string\n* @returns {string} trimmed string\n*\n* @example\n* var out = trim( ' Whitespace ' );\n* // returns 'Whitespace'\n*\n* @example\n* var out = trim( '\\t\\t\\tTabs\\t\\t\\t' );\n* // returns 'Tabs'\n*\n* @example\n* var out = trim( '\\n\\n\\nNew Lines\\n\\n\\n' );\n* // returns 'New Lines'\n*/\nfunction trim( str ) {\n\treturn builtin.call( str );\n}\n\n\n// EXPORTS //\n\nmodule.exports = trim;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Trim whitespace characters from the beginning and end of a string.\n*\n* @module @stdlib/string-base-trim\n*\n* @example\n* var trim = require( '@stdlib/string-base-trim' );\n*\n* var out = trim( ' Whitespace ' );\n* // returns 'Whitespace'\n*\n* out = trim( '\\t\\t\\tTabs\\t\\t\\t' );\n* // returns 'Tabs'\n*\n* out = trim( '\\n\\n\\nNew Lines\\n\\n\\n' );\n* // returns 'New Lines'\n*/\n\n// MODULES //\n\nvar HAS_BUILTIN = require( './has_builtin.js' );\nvar check = require( './check.js' );\nvar polyfill = require( './polyfill.js' );\nvar main = require( './main.js' );\n\n\n// MAIN //\n\nvar trim;\nif ( HAS_BUILTIN && check() ) {\n\ttrim = main;\n} else {\n\ttrim = polyfill;\n}\n\n\n// EXPORTS //\n\nmodule.exports = trim;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar lowercase = require( '@stdlib/string-base-lowercase' );\nvar replace = require( '@stdlib/string-base-replace' );\nvar trim = require( '@stdlib/string-base-trim' );\n\n\n// VARIABLES //\n\nvar RE_WHITESPACE = /\\s+/g;\nvar RE_SPECIAL = /[!\"'(),–.:;<>?`{}|~\\/\\\\\\[\\]_#$*&^@%]+/g; // eslint-disable-line no-useless-escape\nvar RE_CAMEL = /([a-z0-9])([A-Z])/g;\n\n\n// MAIN //\n\n/**\n* Converts a string to kebab case.\n*\n* @param {string} str - string to convert\n* @returns {string} kebab-cased string\n*\n* @example\n* var str = kebabCase( 'Hello World!' );\n* // returns 'hello-world'\n*\n* @example\n* var str = kebabCase( 'foo bar' );\n* // returns 'foo-bar'\n*\n* @example\n* var str = kebabCase( 'I am a tiny little teapot' );\n* // returns 'i-am-a-tiny-little-teapot'\n*\n* @example\n* var str = kebabCase( 'BEEP boop' );\n* // returns 'beep-boop'\n*\n* @example\n* var str = kebabCase( 'isMobile' );\n* // returns 'is-mobile'\n*/\nfunction kebabCase( str ) {\n\tstr = replace( str, RE_SPECIAL, ' ' );\n\tstr = replace( str, RE_CAMEL, '$1 $2' );\n\tstr = trim( str );\n\tstr = replace( str, RE_WHITESPACE, '-' );\n\treturn lowercase( str );\n}\n\n\n// EXPORTS //\n\nmodule.exports = kebabCase;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Convert a string to kebab case.\n*\n* @module @stdlib/string-base-kebabcase\n*\n* @example\n* var kebabcase = require( '@stdlib/string-base-kebabcase' );\n*\n* var str = kebabcase( 'Foo Bar' );\n* // returns 'foo-bar'\n*\n* str = kebabcase( 'I am a tiny little house' );\n* // returns 'i-am-a-tiny-little-house'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n","<script setup lang=\"ts\">\nimport type { Card } from '@proj-airi/ccc'\n\nimport kebabcase from '@stdlib/string-base-kebabcase'\n\nimport { useAiriCardStore } from '@proj-airi/stage-ui/stores/modules/airi-card'\nimport { Button, FieldInput, FieldValues } from '@proj-airi/ui'\nimport {\n DialogContent,\n DialogOverlay,\n DialogPortal,\n DialogRoot,\n DialogTitle,\n} from 'reka-ui'\nimport { computed, ref, toRaw } from 'vue'\nimport { useI18n } from 'vue-i18n'\n\ninterface Props {\n modelValue: boolean\n}\n\ndefineProps<Props>()\nconst emit = defineEmits<{\n (e: 'update:modelValue', value: boolean): void\n}>()\n\nconst modelValue = defineModel<boolean>()\n\nconst { t } = useI18n()\nconst cardStore = useAiriCardStore()\n\n// Tab type definition\ninterface Tab {\n id: string\n label: string\n icon: string\n}\n\n// Active tab ID state\nconst activeTabId = ref('')\n\n// Tabs for card details\nconst tabs: Tab[] = [\n { id: 'identity', label: t('settings.pages.card.creation.identity'), icon: 'i-solar:emoji-funny-square-bold-duotone' },\n { id: 'behavior', label: t('settings.pages.card.creation.behavior'), icon: 'i-solar:chat-round-line-bold-duotone' },\n { id: 'settings', label: t('settings.pages.card.creation.settings'), icon: 'i-solar:settings-bold-duotone' },\n]\n\n// Active tab state - set to first available tab by default\nconst activeTab = computed({\n get: () => {\n // If current active tab is not in available tabs, reset to first tab\n if (!tabs.find(tab => tab.id === activeTabId.value))\n return tabs[0]?.id || ''\n return activeTabId.value\n },\n set: (value: string) => {\n activeTabId.value = value\n },\n})\n\n// Check for errors, and save built Cards :\n\nconst showError = ref<boolean>(false)\nconst errorMessage = ref<string>('')\n\nfunction saveCard(card: Card): boolean {\n // Before saving, let's validate what the user entered :\n const rawCard: Card = toRaw(card)\n\n if (!(rawCard.name!.length > 0)) { // ! is used, since a default value is provided, and computed values passed to v-model should never be undefined\n // No name\n showError.value = true\n errorMessage.value = t('settings.pages.card.creation.errors.name')\n return false\n }\n else if (!/^(?:\\d+\\.)+\\d+$/.test(rawCard.version)) {\n // Invalid version\n showError.value = true\n errorMessage.value = t('settings.pages.card.creation.errors.version')\n return false\n }\n else if (!(rawCard.description!.length > 0)) {\n // No description\n showError.value = true\n errorMessage.value = t('settings.pages.card.creation.errors.description')\n return false\n }\n else if (!(rawCard.personality!.length > 0)) {\n // No personality\n showError.value = true\n errorMessage.value = t('settings.pages.card.creation.errors.personality')\n return false\n }\n else if (!(rawCard.scenario!.length > 0)) {\n // No Scenario\n showError.value = true\n errorMessage.value = t('settings.pages.card.creation.errors.scenario')\n return false\n }\n else if (!(rawCard.systemPrompt!.length > 0)) {\n // No sys prompt\n showError.value = true\n errorMessage.value = t('settings.pages.card.creation.errors.systemprompt')\n return false\n }\n else if (!(rawCard.postHistoryInstructions!.length > 0)) {\n // No post history prompt\n showError.value = true\n errorMessage.value = t('settings.pages.card.creation.errors.posthistoryinstructions')\n return false\n }\n showError.value = false\n\n cardStore.addCard(rawCard)\n modelValue.value = false // Close this\n return true\n}\n\n// Cards data holders :\n\nconst card = ref<Card>({\n name: t('settings.pages.card.creation.defaults.name'),\n nickname: undefined,\n version: '1.0',\n description: '',\n notes: undefined,\n personality: t('settings.pages.card.creation.defaults.personality'),\n scenario: t('settings.pages.card.creation.defaults.scenario'),\n systemPrompt: t('settings.pages.card.creation.defaults.systemprompt'),\n postHistoryInstructions: t('settings.pages.card.creation.defaults.posthistoryinstructions'),\n greetings: [],\n messageExample: [],\n})\n\nfunction makeComputed<T extends keyof Card>(\n /*\n Function used to generate Computed values, with an optional sanitize function\n */\n key: T,\n transform?: (input: string) => string,\n) {\n return computed({\n get: () => {\n return card.value[key] ?? ''\n },\n set: (val: string) => { // Set,\n const input = val.trim() // We first trim the value\n card.value[key] = (input.length > 0\n ? (transform ? transform(input) : input) // then potentially transform it\n : '') as Card[T]// or default to empty string value if nothing was given\n },\n })\n}\n\nconst cardName = makeComputed('name', input => kebabcase(input))\nconst cardNickname = makeComputed('nickname')\nconst cardDescription = makeComputed('description')\nconst cardNotes = makeComputed('notes')\n\nconst cardPersonality = makeComputed('personality')\nconst cardScenario = makeComputed('scenario')\nconst cardGreetings = computed({\n get: () => card.value.greetings ?? [],\n set: (val: string[]) => {\n card.value.greetings = val || []\n },\n})\n\nconst cardVersion = makeComputed('version')\nconst cardSystemPrompt = makeComputed('systemPrompt')\nconst cardPostHistoryInstructions = makeComputed('postHistoryInstructions')\n</script>\n\n<template>\n <DialogRoot :open=\"modelValue\" @update:open=\"emit('update:modelValue', $event)\">\n <DialogPortal>\n <DialogOverlay class=\"fixed inset-0 z-100 bg-black/50 backdrop-blur-sm data-[state=closed]:animate-fadeOut data-[state=open]:animate-fadeIn\" />\n <DialogContent class=\"fixed left-1/2 top-1/2 z-100 m-0 max-h-[90vh] max-w-6xl w-[92vw] flex flex-col overflow-auto border border-neutral-200 rounded-xl bg-white p-5 shadow-xl 2xl:w-[60vw] lg:w-[80vw] md:w-[85vw] xl:w-[70vw] -translate-x-1/2 -translate-y-1/2 data-[state=closed]:animate-contentHide data-[state=open]:animate-contentShow dark:border-neutral-700 dark:bg-neutral-800 sm:p-6\">\n <div class=\"w-full flex flex-col gap-5\">\n <DialogTitle text-2xl font-normal class=\"from-primary-500 to-primary-400 bg-gradient-to-r bg-clip-text text-transparent\">\n {{ t(\"settings.pages.card.create_card\") }}\n </DialogTitle>\n\n <!-- Dialog tabs -->\n <div class=\"mt-4\">\n <div class=\"border-b border-neutral-200 dark:border-neutral-700\">\n <div class=\"flex justify-center -mb-px sm:justify-start space-x-1\">\n <button\n v-for=\"tab in tabs\"\n :key=\"tab.id\"\n class=\"px-4 py-2 text-sm font-medium\"\n :class=\"[\n activeTab === tab.id\n ? 'text-primary-600 dark:text-primary-400 border-b-2 border-primary-500 dark:border-primary-400'\n : 'text-neutral-500 dark:text-neutral-400 hover:text-neutral-700 dark:hover:text-neutral-300',\n ]\"\n @click=\"activeTab = tab.id\"\n >\n <div class=\"flex items-center gap-1\">\n <div :class=\"tab.icon\" />\n {{ tab.label }}\n </div>\n </button>\n </div>\n </div>\n </div>\n\n <!-- Error div -->\n <div v-if=\"showError\" class=\"w-full rounded-xl bg-red900\">\n <p class=\"w-full p-4\">\n {{ errorMessage }}\n </p>\n </div>\n\n <!-- Actual content -->\n <!-- Identity details -->\n <div v-if=\"activeTab === 'identity'\" class=\"tab-content ml-auto mr-auto w-95%\">\n <p class=\"mb-3\">\n {{ t('settings.pages.card.creation.fields_info.subtitle') }}\n </p>\n\n <div class=\"input-list ml-auto mr-auto w-90% flex flex-row flex-wrap justify-center gap-8\">\n <FieldInput v-model=\"cardName\" :label=\"t('settings.pages.card.creation.name')\" :description=\"t('settings.pages.card.creation.fields_info.name')\" :required=\"true\" />\n <FieldInput v-model=\"cardNickname\" :label=\"t('settings.pages.card.creation.nickname')\" :description=\"t('settings.pages.card.creation.fields_info.nickname')\" />\n <FieldInput v-model=\"cardDescription\" :label=\"t('settings.pages.card.creation.description')\" :single-line=\"false\" :required=\"true\" :description=\"t('settings.pages.card.creation.fields_info.description')\" />\n <FieldInput v-model=\"cardNotes\" :label=\"t('settings.pages.card.creator_notes')\" :single-line=\"false\" :description=\"t('settings.pages.card.creation.fields_info.notes')\" />\n </div>\n </div>\n <!-- Behavior -->\n <div v-else-if=\"activeTab === 'behavior'\" class=\"tab-content ml-auto mr-auto w-95%\">\n <div class=\"input-list ml-auto mr-auto w-90% flex flex-row flex-wrap justify-center gap-8\">\n <FieldInput v-model=\"cardPersonality\" :label=\"t('settings.pages.card.personality')\" :single-line=\"false\" :required=\"true\" :description=\"t('settings.pages.card.creation.fields_info.personality')\" />\n <FieldInput v-model=\"cardScenario\" :label=\"t('settings.pages.card.scenario')\" :single-line=\"false\" :required=\"true\" :description=\"t('settings.pages.card.creation.fields_info.scenario')\" />\n <FieldValues v-model=\"cardGreetings\" :label=\"t('settings.pages.card.creation.greetings')\" :description=\"t('settings.pages.card.creation.fields_info.greetings')\" />\n </div>\n </div>\n <!-- Settings -->\n <div v-else-if=\"activeTab === 'settings'\" class=\"tab-content ml-auto mr-auto w-95%\">\n <div class=\"input-list ml-auto mr-auto w-90% flex flex-row flex-wrap justify-center gap-8\">\n <FieldInput v-model=\"cardSystemPrompt\" :label=\"t('settings.pages.card.systemprompt')\" :single-line=\"false\" :required=\"true\" :description=\"t('settings.pages.card.creation.fields_info.systemprompt')\" />\n <FieldInput v-model=\"cardPostHistoryInstructions\" :label=\"t('settings.pages.card.posthistoryinstructions')\" :single-line=\"false\" :required=\"true\" :description=\"t('settings.pages.card.creation.fields_info.posthistoryinstructions')\" />\n <FieldInput v-model=\"cardVersion\" :label=\"t('settings.pages.card.creation.version')\" :required=\"true\" :description=\"t('settings.pages.card.creation.fields_info.version')\" />\n </div>\n </div>\n\n <div class=\"ml-auto mr-1 flex flex-row gap-2\">\n <Button\n variant=\"secondary\"\n icon=\"i-solar:undo-left-bold-duotone\"\n :label=\"t('settings.pages.card.cancel')\"\n :disabled=\"false\"\n @click=\"modelValue = false\"\n />\n <Button\n variant=\"primary\"\n icon=\"i-solar:check-circle-bold-duotone\"\n :label=\"t('settings.pages.card.creation.create')\"\n :disabled=\"false\"\n @click=\"saveCard(card)\"\n />\n </div>\n </div>\n </DialogContent>\n </DialogPortal>\n </DialogRoot>\n</template>\n\n<style scoped>\n.input-list > * {\n min-width: 45%;\n }\n\n @media (max-width: 641px) {\n .input-list * {\n min-width: unset;\n width: 100%;\n }\n}\n</style>\n","<script setup lang=\"ts\">\nimport type { Card } from '@proj-airi/ccc'\n\nimport kebabcase from '@stdlib/string-base-kebabcase'\n\nimport { useAiriCardStore } from '@proj-airi/stage-ui/stores/modules/airi-card'\nimport { Button, FieldInput, FieldValues } from '@proj-airi/ui'\nimport {\n DialogContent,\n DialogOverlay,\n DialogPortal,\n DialogRoot,\n DialogTitle,\n} from 'reka-ui'\nimport { computed, ref, toRaw } from 'vue'\nimport { useI18n } from 'vue-i18n'\n\ninterface Props {\n modelValue: boolean\n}\n\ndefineProps<Props>()\nconst emit = defineEmits<{\n (e: 'update:modelValue', value: boolean): void\n}>()\n\nconst modelValue = defineModel<boolean>()\n\nconst { t } = useI18n()\nconst cardStore = useAiriCardStore()\n\n// Tab type definition\ninterface Tab {\n id: string\n label: string\n icon: string\n}\n\n// Active tab ID state\nconst activeTabId = ref('')\n\n// Tabs for card details\nconst tabs: Tab[] = [\n { id: 'identity', label: t('settings.pages.card.creation.identity'), icon: 'i-solar:emoji-funny-square-bold-duotone' },\n { id: 'behavior', label: t('settings.pages.card.creation.behavior'), icon: 'i-solar:chat-round-line-bold-duotone' },\n { id: 'settings', label: t('settings.pages.card.creation.settings'), icon: 'i-solar:settings-bold-duotone' },\n]\n\n// Active tab state - set to first available tab by default\nconst activeTab = computed({\n get: () => {\n // If current active tab is not in available tabs, reset to first tab\n if (!tabs.find(tab => tab.id === activeTabId.value))\n return tabs[0]?.id || ''\n return activeTabId.value\n },\n set: (value: string) => {\n activeTabId.value = value\n },\n})\n\n// Check for errors, and save built Cards :\n\nconst showError = ref<boolean>(false)\nconst errorMessage = ref<string>('')\n\nfunction saveCard(card: Card): boolean {\n // Before saving, let's validate what the user entered :\n const rawCard: Card = toRaw(card)\n\n if (!(rawCard.name!.length > 0)) { // ! is used, since a default value is provided, and computed values passed to v-model should never be undefined\n // No name\n showError.value = true\n errorMessage.value = t('settings.pages.card.creation.errors.name')\n return false\n }\n else if (!/^(?:\\d+\\.)+\\d+$/.test(rawCard.version)) {\n // Invalid version\n showError.value = true\n errorMessage.value = t('settings.pages.card.creation.errors.version')\n return false\n }\n else if (!(rawCard.description!.length > 0)) {\n // No description\n showError.value = true\n errorMessage.value = t('settings.pages.card.creation.errors.description')\n return false\n }\n else if (!(rawCard.personality!.length > 0)) {\n // No personality\n showError.value = true\n errorMessage.value = t('settings.pages.card.creation.errors.personality')\n return false\n }\n else if (!(rawCard.scenario!.length > 0)) {\n // No Scenario\n showError.value = true\n errorMessage.value = t('settings.pages.card.creation.errors.scenario')\n return false\n }\n else if (!(rawCard.systemPrompt!.length > 0)) {\n // No sys prompt\n showError.value = true\n errorMessage.value = t('settings.pages.card.creation.errors.systemprompt')\n return false\n }\n else if (!(rawCard.postHistoryInstructions!.length > 0)) {\n // No post history prompt\n showError.value = true\n errorMessage.value = t('settings.pages.card.creation.errors.posthistoryinstructions')\n return false\n }\n showError.value = false\n\n cardStore.addCard(rawCard)\n modelValue.value = false // Close this\n return true\n}\n\n// Cards data holders :\n\nconst card = ref<Card>({\n name: t('settings.pages.card.creation.defaults.name'),\n nickname: undefined,\n version: '1.0',\n description: '',\n notes: undefined,\n personality: t('settings.pages.card.creation.defaults.personality'),\n scenario: t('settings.pages.card.creation.defaults.scenario'),\n systemPrompt: t('settings.pages.card.creation.defaults.systemprompt'),\n postHistoryInstructions: t('settings.pages.card.creation.defaults.posthistoryinstructions'),\n greetings: [],\n messageExample: [],\n})\n\nfunction makeComputed<T extends keyof Card>(\n /*\n Function used to generate Computed values, with an optional sanitize function\n */\n key: T,\n transform?: (input: string) => string,\n) {\n return computed({\n get: () => {\n return card.value[key] ?? ''\n },\n set: (val: string) => { // Set,\n const input = val.trim() // We first trim the value\n card.value[key] = (input.length > 0\n ? (transform ? transform(input) : input) // then potentially transform it\n : '') as Card[T]// or default to empty string value if nothing was given\n },\n })\n}\n\nconst cardName = makeComputed('name', input => kebabcase(input))\nconst cardNickname = makeComputed('nickname')\nconst cardDescription = makeComputed('description')\nconst cardNotes = makeComputed('notes')\n\nconst cardPersonality = makeComputed('personality')\nconst cardScenario = makeComputed('scenario')\nconst cardGreetings = computed({\n get: () => card.value.greetings ?? [],\n set: (val: string[]) => {\n card.value.greetings = val || []\n },\n})\n\nconst cardVersion = makeComputed('version')\nconst cardSystemPrompt = makeComputed('systemPrompt')\nconst cardPostHistoryInstructions = makeComputed('postHistoryInstructions')\n</script>\n\n<template>\n <DialogRoot :open=\"modelValue\" @update:open=\"emit('update:modelValue', $event)\">\n <DialogPortal>\n <DialogOverlay class=\"fixed inset-0 z-100 bg-black/50 backdrop-blur-sm data-[state=closed]:animate-fadeOut data-[state=open]:animate-fadeIn\" />\n <DialogContent class=\"fixed left-1/2 top-1/2 z-100 m-0 max-h-[90vh] max-w-6xl w-[92vw] flex flex-col overflow-auto border border-neutral-200 rounded-xl bg-white p-5 shadow-xl 2xl:w-[60vw] lg:w-[80vw] md:w-[85vw] xl:w-[70vw] -translate-x-1/2 -translate-y-1/2 data-[state=closed]:animate-contentHide data-[state=open]:animate-contentShow dark:border-neutral-700 dark:bg-neutral-800 sm:p-6\">\n <div class=\"w-full flex flex-col gap-5\">\n <DialogTitle text-2xl font-normal class=\"from-primary-500 to-primary-400 bg-gradient-to-r bg-clip-text text-transparent\">\n {{ t(\"settings.pages.card.create_card\") }}\n </DialogTitle>\n\n <!-- Dialog tabs -->\n <div class=\"mt-4\">\n <div class=\"border-b border-neutral-200 dark:border-neutral-700\">\n <div class=\"flex justify-center -mb-px sm:justify-start space-x-1\">\n <button\n v-for=\"tab in tabs\"\n :key=\"tab.id\"\n class=\"px-4 py-2 text-sm font-medium\"\n :class=\"[\n activeTab === tab.id\n ? 'text-primary-600 dark:text-primary-400 border-b-2 border-primary-500 dark:border-primary-400'\n : 'text-neutral-500 dark:text-neutral-400 hover:text-neutral-700 dark:hover:text-neutral-300',\n ]\"\n @click=\"activeTab = tab.id\"\n >\n <div class=\"flex items-center gap-1\">\n <div :class=\"tab.icon\" />\n {{ tab.label }}\n </div>\n </button>\n </div>\n </div>\n </div>\n\n <!-- Error div -->\n <div v-if=\"showError\" class=\"w-full rounded-xl bg-red900\">\n <p class=\"w-full p-4\">\n {{ errorMessage }}\n </p>\n </div>\n\n <!-- Actual content -->\n <!-- Identity details -->\n <div v-if=\"activeTab === 'identity'\" class=\"tab-content ml-auto mr-auto w-95%\">\n <p class=\"mb-3\">\n {{ t('settings.pages.card.creation.fields_info.subtitle') }}\n </p>\n\n <div class=\"input-list ml-auto mr-auto w-90% flex flex-row flex-wrap justify-center gap-8\">\n <FieldInput v-model=\"cardName\" :label=\"t('settings.pages.card.creation.name')\" :description=\"t('settings.pages.card.creation.fields_info.name')\" :required=\"true\" />\n <FieldInput v-model=\"cardNickname\" :label=\"t('settings.pages.card.creation.nickname')\" :description=\"t('settings.pages.card.creation.fields_info.nickname')\" />\n <FieldInput v-model=\"cardDescription\" :label=\"t('settings.pages.card.creation.description')\" :single-line=\"false\" :required=\"true\" :description=\"t('settings.pages.card.creation.fields_info.description')\" />\n <FieldInput v-model=\"cardNotes\" :label=\"t('settings.pages.card.creator_notes')\" :single-line=\"false\" :description=\"t('settings.pages.card.creation.fields_info.notes')\" />\n </div>\n </div>\n <!-- Behavior -->\n <div v-else-if=\"activeTab === 'behavior'\" class=\"tab-content ml-auto mr-auto w-95%\">\n <div class=\"input-list ml-auto mr-auto w-90% flex flex-row flex-wrap justify-center gap-8\">\n <FieldInput v-model=\"cardPersonality\" :label=\"t('settings.pages.card.personality')\" :single-line=\"false\" :required=\"true\" :description=\"t('settings.pages.card.creation.fields_info.personality')\" />\n <FieldInput v-model=\"cardScenario\" :label=\"t('settings.pages.card.scenario')\" :single-line=\"false\" :required=\"true\" :description=\"t('settings.pages.card.creation.fields_info.scenario')\" />\n <FieldValues v-model=\"cardGreetings\" :label=\"t('settings.pages.card.creation.greetings')\" :description=\"t('settings.pages.card.creation.fields_info.greetings')\" />\n </div>\n </div>\n <!-- Settings -->\n <div v-else-if=\"activeTab === 'settings'\" class=\"tab-content ml-auto mr-auto w-95%\">\n <div class=\"input-list ml-auto mr-auto w-90% flex flex-row flex-wrap justify-center gap-8\">\n <FieldInput v-model=\"cardSystemPrompt\" :label=\"t('settings.pages.card.systemprompt')\" :single-line=\"false\" :required=\"true\" :description=\"t('settings.pages.card.creation.fields_info.systemprompt')\" />\n <FieldInput v-model=\"cardPostHistoryInstructions\" :label=\"t('settings.pages.card.posthistoryinstructions')\" :single-line=\"false\" :required=\"true\" :description=\"t('settings.pages.card.creation.fields_info.posthistoryinstructions')\" />\n <FieldInput v-model=\"cardVersion\" :label=\"t('settings.pages.card.creation.version')\" :required=\"true\" :description=\"t('settings.pages.card.creation.fields_info.version')\" />\n </div>\n </div>\n\n <div class=\"ml-auto mr-1 flex flex-row gap-2\">\n <Button\n variant=\"secondary\"\n icon=\"i-solar:undo-left-bold-duotone\"\n :label=\"t('settings.pages.card.cancel')\"\n :disabled=\"false\"\n @click=\"modelValue = false\"\n />\n <Button\n variant=\"primary\"\n icon=\"i-solar:check-circle-bold-duotone\"\n :label=\"t('settings.pages.card.creation.create')\"\n :disabled=\"false\"\n @click=\"saveCard(card)\"\n />\n </div>\n </div>\n </DialogContent>\n </DialogPortal>\n </DialogRoot>\n</template>\n\n<style scoped>\n.input-list > * {\n min-width: 45%;\n }\n\n @media (max-width: 641px) {\n .input-list * {\n min-width: unset;\n width: 100%;\n }\n}\n</style>\n"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11],"mappings":"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"}
 
1
+ {"version":3,"file":"CardCreationDialog-D3b-50Vp.js","names":["lowercase","main","replace","main","trim","trim","replace","trim","trim","main","trim"],"sources":["../../../../node_modules/.pnpm/@stdlib+string-base-lowercase@0.4.0/node_modules/@stdlib/string-base-lowercase/lib/main.js","../../../../node_modules/.pnpm/@stdlib+string-base-lowercase@0.4.0/node_modules/@stdlib/string-base-lowercase/lib/index.js","../../../../node_modules/.pnpm/@stdlib+string-base-replace@0.2.2/node_modules/@stdlib/string-base-replace/lib/main.js","../../../../node_modules/.pnpm/@stdlib+string-base-replace@0.2.2/node_modules/@stdlib/string-base-replace/lib/index.js","../../../../node_modules/.pnpm/@stdlib+string-base-trim@0.2.2/node_modules/@stdlib/string-base-trim/lib/has_builtin.js","../../../../node_modules/.pnpm/@stdlib+string-base-trim@0.2.2/node_modules/@stdlib/string-base-trim/lib/builtin.js","../../../../node_modules/.pnpm/@stdlib+string-base-trim@0.2.2/node_modules/@stdlib/string-base-trim/lib/check.js","../../../../node_modules/.pnpm/@stdlib+string-base-trim@0.2.2/node_modules/@stdlib/string-base-trim/lib/polyfill.js","../../../../node_modules/.pnpm/@stdlib+string-base-trim@0.2.2/node_modules/@stdlib/string-base-trim/lib/main.js","../../../../node_modules/.pnpm/@stdlib+string-base-trim@0.2.2/node_modules/@stdlib/string-base-trim/lib/index.js","../../../../node_modules/.pnpm/@stdlib+string-base-kebabcase@0.2.2/node_modules/@stdlib/string-base-kebabcase/lib/main.js","../../../../node_modules/.pnpm/@stdlib+string-base-kebabcase@0.2.2/node_modules/@stdlib/string-base-kebabcase/lib/index.js","../../../../packages/stage-pages/src/pages/settings/airi-card/components/CardCreationDialog.vue","../../../../packages/stage-pages/src/pages/settings/airi-card/components/CardCreationDialog.vue"],"sourcesContent":["/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Converts a string to lowercase.\n*\n* @param {string} str - string to convert\n* @returns {string} lowercase string\n*\n* @example\n* var str = lowercase( 'bEEp' );\n* // returns 'beep'\n*/\nfunction lowercase( str ) {\n\treturn str.toLowerCase();\n}\n\n\n// EXPORTS //\n\nmodule.exports = lowercase;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Convert a string to lowercase.\n*\n* @module @stdlib/string-base-lowercase\n*\n* @example\n* var lowercase = require( '@stdlib/string-base-lowercase' );\n*\n* var str = lowercase( 'bEEp' );\n* // returns 'beep'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Replaces search occurrences with a replacement string.\n*\n* @param {string} str - input string\n* @param {RegExp} search - search expression\n* @param {(string|Function)} newval - replacement value or function\n* @returns {string} new string containing replacement(s)\n*\n* @example\n* var str = 'Hello World';\n* var out = replace( str, /world/i, 'Mr. President' );\n* // returns 'Hello Mr. President'\n*\n* @example\n* var capitalize = require( '@stdlib/string-base-capitalize' );\n*\n* var str = 'Oranges and lemons say the bells of St. Clement\\'s';\n*\n* function replacer( match, p1 ) {\n* return capitalize( p1 );\n* }\n*\n* var out = replace( str, /([^\\s]*)/gi, replacer );\n* // returns 'Oranges And Lemons Say The Bells Of St. Clement\\'s'\n*/\nfunction replace( str, search, newval ) {\n\treturn str.replace( search, newval );\n}\n\n\n// EXPORTS //\n\nmodule.exports = replace;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Replace search occurrences with a replacement string.\n*\n* @module @stdlib/string-base-replace\n*\n* @example\n* var replace = require( '@stdlib/string-base-replace' );\n*\n* var str = 'Hello World';\n* var out = replace( str, /world/i, 'Mr. President' );\n* // returns 'Hello Mr. President'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\nvar bool = ( typeof String.prototype.trim !== 'undefined' );\n\n\n// EXPORTS //\n\nmodule.exports = bool;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\nvar trim = String.prototype.trim;\n\n\n// EXPORTS //\n\nmodule.exports = trim;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar trim = require( './builtin.js' );\n\n\n// VARIABLES //\n\nvar str1 = ' \\n\\t\\r\\n\\f\\v\\u1680\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000\\ufeff';\nvar str2 = '\\u180e';\n\n\n// MAIN //\n\n/**\n* Tests the built-in `String.prototype.trim()` implementation when provided whitespace.\n*\n* ## Notes\n*\n* - For context, see <https://github.com/stdlib-js/stdlib/commit/c3d6458aa08bbd4bd6bf13e3643422f3b2a65dd9>. In short, we can only rely on the built-in `trim` method when it does not consider the Mongolian space separator as whitespace.\n*\n* @private\n* @returns {boolean} boolean indicating whether the built-in implementation returns the expected value\n*\n* @example\n* var b = test();\n* // returns <boolean>\n*/\nfunction test() {\n\treturn ( trim.call( str1 ) === '' ) && ( trim.call( str2 ) === str2 );\n}\n\n\n// EXPORTS //\n\nmodule.exports = test;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar replace = require( '@stdlib/string-base-replace' );\n\n\n// VARIABLES //\n\n// The following regular expression should suffice to polyfill (most?) all environments.\nvar RE = /^[\\u0020\\f\\n\\r\\t\\v\\u00a0\\u1680\\u2000-\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000\\ufeff]*([\\S\\s]*?)[\\u0020\\f\\n\\r\\t\\v\\u00a0\\u1680\\u2000-\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000\\ufeff]*$/;\n\n\n// MAIN //\n\n/**\n* Trims whitespace characters from the beginning and end of a string.\n*\n* @private\n* @param {string} str - input string\n* @returns {string} trimmed string\n*\n* @example\n* var out = trim( ' Whitespace ' );\n* // returns 'Whitespace'\n*\n* @example\n* var out = trim( '\\t\\t\\tTabs\\t\\t\\t' );\n* // returns 'Tabs'\n*\n* @example\n* var out = trim( '\\n\\n\\nNew Lines\\n\\n\\n' );\n* // returns 'New Lines'\n*/\nfunction trim( str ) {\n\treturn replace( str, RE, '$1' );\n}\n\n\n// EXPORTS //\n\nmodule.exports = trim;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar builtin = require( './builtin.js' );\n\n\n// MAIN //\n\n/**\n* Trims whitespace characters from the beginning and end of a string.\n*\n* @param {string} str - input string\n* @returns {string} trimmed string\n*\n* @example\n* var out = trim( ' Whitespace ' );\n* // returns 'Whitespace'\n*\n* @example\n* var out = trim( '\\t\\t\\tTabs\\t\\t\\t' );\n* // returns 'Tabs'\n*\n* @example\n* var out = trim( '\\n\\n\\nNew Lines\\n\\n\\n' );\n* // returns 'New Lines'\n*/\nfunction trim( str ) {\n\treturn builtin.call( str );\n}\n\n\n// EXPORTS //\n\nmodule.exports = trim;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Trim whitespace characters from the beginning and end of a string.\n*\n* @module @stdlib/string-base-trim\n*\n* @example\n* var trim = require( '@stdlib/string-base-trim' );\n*\n* var out = trim( ' Whitespace ' );\n* // returns 'Whitespace'\n*\n* out = trim( '\\t\\t\\tTabs\\t\\t\\t' );\n* // returns 'Tabs'\n*\n* out = trim( '\\n\\n\\nNew Lines\\n\\n\\n' );\n* // returns 'New Lines'\n*/\n\n// MODULES //\n\nvar HAS_BUILTIN = require( './has_builtin.js' );\nvar check = require( './check.js' );\nvar polyfill = require( './polyfill.js' );\nvar main = require( './main.js' );\n\n\n// MAIN //\n\nvar trim;\nif ( HAS_BUILTIN && check() ) {\n\ttrim = main;\n} else {\n\ttrim = polyfill;\n}\n\n\n// EXPORTS //\n\nmodule.exports = trim;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar lowercase = require( '@stdlib/string-base-lowercase' );\nvar replace = require( '@stdlib/string-base-replace' );\nvar trim = require( '@stdlib/string-base-trim' );\n\n\n// VARIABLES //\n\nvar RE_WHITESPACE = /\\s+/g;\nvar RE_SPECIAL = /[!\"'(),–.:;<>?`{}|~\\/\\\\\\[\\]_#$*&^@%]+/g; // eslint-disable-line no-useless-escape\nvar RE_CAMEL = /([a-z0-9])([A-Z])/g;\n\n\n// MAIN //\n\n/**\n* Converts a string to kebab case.\n*\n* @param {string} str - string to convert\n* @returns {string} kebab-cased string\n*\n* @example\n* var str = kebabCase( 'Hello World!' );\n* // returns 'hello-world'\n*\n* @example\n* var str = kebabCase( 'foo bar' );\n* // returns 'foo-bar'\n*\n* @example\n* var str = kebabCase( 'I am a tiny little teapot' );\n* // returns 'i-am-a-tiny-little-teapot'\n*\n* @example\n* var str = kebabCase( 'BEEP boop' );\n* // returns 'beep-boop'\n*\n* @example\n* var str = kebabCase( 'isMobile' );\n* // returns 'is-mobile'\n*/\nfunction kebabCase( str ) {\n\tstr = replace( str, RE_SPECIAL, ' ' );\n\tstr = replace( str, RE_CAMEL, '$1 $2' );\n\tstr = trim( str );\n\tstr = replace( str, RE_WHITESPACE, '-' );\n\treturn lowercase( str );\n}\n\n\n// EXPORTS //\n\nmodule.exports = kebabCase;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Convert a string to kebab case.\n*\n* @module @stdlib/string-base-kebabcase\n*\n* @example\n* var kebabcase = require( '@stdlib/string-base-kebabcase' );\n*\n* var str = kebabcase( 'Foo Bar' );\n* // returns 'foo-bar'\n*\n* str = kebabcase( 'I am a tiny little house' );\n* // returns 'i-am-a-tiny-little-house'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n","<script setup lang=\"ts\">\nimport type { Card } from '@proj-airi/ccc'\n\nimport kebabcase from '@stdlib/string-base-kebabcase'\n\nimport { useAiriCardStore } from '@proj-airi/stage-ui/stores/modules/airi-card'\nimport { Button, FieldInput, FieldValues } from '@proj-airi/ui'\nimport {\n DialogContent,\n DialogOverlay,\n DialogPortal,\n DialogRoot,\n DialogTitle,\n} from 'reka-ui'\nimport { computed, ref, toRaw } from 'vue'\nimport { useI18n } from 'vue-i18n'\n\ninterface Props {\n modelValue: boolean\n}\n\ndefineProps<Props>()\nconst emit = defineEmits<{\n (e: 'update:modelValue', value: boolean): void\n}>()\n\nconst modelValue = defineModel<boolean>()\n\nconst { t } = useI18n()\nconst cardStore = useAiriCardStore()\n\n// Tab type definition\ninterface Tab {\n id: string\n label: string\n icon: string\n}\n\n// Active tab ID state\nconst activeTabId = ref('')\n\n// Tabs for card details\nconst tabs: Tab[] = [\n { id: 'identity', label: t('settings.pages.card.creation.identity'), icon: 'i-solar:emoji-funny-square-bold-duotone' },\n { id: 'behavior', label: t('settings.pages.card.creation.behavior'), icon: 'i-solar:chat-round-line-bold-duotone' },\n { id: 'settings', label: t('settings.pages.card.creation.settings'), icon: 'i-solar:settings-bold-duotone' },\n]\n\n// Active tab state - set to first available tab by default\nconst activeTab = computed({\n get: () => {\n // If current active tab is not in available tabs, reset to first tab\n if (!tabs.find(tab => tab.id === activeTabId.value))\n return tabs[0]?.id || ''\n return activeTabId.value\n },\n set: (value: string) => {\n activeTabId.value = value\n },\n})\n\n// Check for errors, and save built Cards :\n\nconst showError = ref<boolean>(false)\nconst errorMessage = ref<string>('')\n\nfunction saveCard(card: Card): boolean {\n // Before saving, let's validate what the user entered :\n const rawCard: Card = toRaw(card)\n\n if (!(rawCard.name!.length > 0)) { // ! is used, since a default value is provided, and computed values passed to v-model should never be undefined\n // No name\n showError.value = true\n errorMessage.value = t('settings.pages.card.creation.errors.name')\n return false\n }\n else if (!/^(?:\\d+\\.)+\\d+$/.test(rawCard.version)) {\n // Invalid version\n showError.value = true\n errorMessage.value = t('settings.pages.card.creation.errors.version')\n return false\n }\n else if (!(rawCard.description!.length > 0)) {\n // No description\n showError.value = true\n errorMessage.value = t('settings.pages.card.creation.errors.description')\n return false\n }\n else if (!(rawCard.personality!.length > 0)) {\n // No personality\n showError.value = true\n errorMessage.value = t('settings.pages.card.creation.errors.personality')\n return false\n }\n else if (!(rawCard.scenario!.length > 0)) {\n // No Scenario\n showError.value = true\n errorMessage.value = t('settings.pages.card.creation.errors.scenario')\n return false\n }\n else if (!(rawCard.systemPrompt!.length > 0)) {\n // No sys prompt\n showError.value = true\n errorMessage.value = t('settings.pages.card.creation.errors.systemprompt')\n return false\n }\n else if (!(rawCard.postHistoryInstructions!.length > 0)) {\n // No post history prompt\n showError.value = true\n errorMessage.value = t('settings.pages.card.creation.errors.posthistoryinstructions')\n return false\n }\n showError.value = false\n\n cardStore.addCard(rawCard)\n modelValue.value = false // Close this\n return true\n}\n\n// Cards data holders :\n\nconst card = ref<Card>({\n name: t('settings.pages.card.creation.defaults.name'),\n nickname: undefined,\n version: '1.0',\n description: '',\n notes: undefined,\n personality: t('settings.pages.card.creation.defaults.personality'),\n scenario: t('settings.pages.card.creation.defaults.scenario'),\n systemPrompt: t('settings.pages.card.creation.defaults.systemprompt'),\n postHistoryInstructions: t('settings.pages.card.creation.defaults.posthistoryinstructions'),\n greetings: [],\n messageExample: [],\n})\n\nfunction makeComputed<T extends keyof Card>(\n /*\n Function used to generate Computed values, with an optional sanitize function\n */\n key: T,\n transform?: (input: string) => string,\n) {\n return computed({\n get: () => {\n return card.value[key] ?? ''\n },\n set: (val: string) => { // Set,\n const input = val.trim() // We first trim the value\n card.value[key] = (input.length > 0\n ? (transform ? transform(input) : input) // then potentially transform it\n : '') as Card[T]// or default to empty string value if nothing was given\n },\n })\n}\n\nconst cardName = makeComputed('name', input => kebabcase(input))\nconst cardNickname = makeComputed('nickname')\nconst cardDescription = makeComputed('description')\nconst cardNotes = makeComputed('notes')\n\nconst cardPersonality = makeComputed('personality')\nconst cardScenario = makeComputed('scenario')\nconst cardGreetings = computed({\n get: () => card.value.greetings ?? [],\n set: (val: string[]) => {\n card.value.greetings = val || []\n },\n})\n\nconst cardVersion = makeComputed('version')\nconst cardSystemPrompt = makeComputed('systemPrompt')\nconst cardPostHistoryInstructions = makeComputed('postHistoryInstructions')\n</script>\n\n<template>\n <DialogRoot :open=\"modelValue\" @update:open=\"emit('update:modelValue', $event)\">\n <DialogPortal>\n <DialogOverlay class=\"fixed inset-0 z-100 bg-black/50 backdrop-blur-sm data-[state=closed]:animate-fadeOut data-[state=open]:animate-fadeIn\" />\n <DialogContent class=\"fixed left-1/2 top-1/2 z-100 m-0 max-h-[90vh] max-w-6xl w-[92vw] flex flex-col overflow-auto border border-neutral-200 rounded-xl bg-white p-5 shadow-xl 2xl:w-[60vw] lg:w-[80vw] md:w-[85vw] xl:w-[70vw] -translate-x-1/2 -translate-y-1/2 data-[state=closed]:animate-contentHide data-[state=open]:animate-contentShow dark:border-neutral-700 dark:bg-neutral-800 sm:p-6\">\n <div class=\"w-full flex flex-col gap-5\">\n <DialogTitle text-2xl font-normal class=\"from-primary-500 to-primary-400 bg-gradient-to-r bg-clip-text text-transparent\">\n {{ t(\"settings.pages.card.create_card\") }}\n </DialogTitle>\n\n <!-- Dialog tabs -->\n <div class=\"mt-4\">\n <div class=\"border-b border-neutral-200 dark:border-neutral-700\">\n <div class=\"flex justify-center -mb-px sm:justify-start space-x-1\">\n <button\n v-for=\"tab in tabs\"\n :key=\"tab.id\"\n class=\"px-4 py-2 text-sm font-medium\"\n :class=\"[\n activeTab === tab.id\n ? 'text-primary-600 dark:text-primary-400 border-b-2 border-primary-500 dark:border-primary-400'\n : 'text-neutral-500 dark:text-neutral-400 hover:text-neutral-700 dark:hover:text-neutral-300',\n ]\"\n @click=\"activeTab = tab.id\"\n >\n <div class=\"flex items-center gap-1\">\n <div :class=\"tab.icon\" />\n {{ tab.label }}\n </div>\n </button>\n </div>\n </div>\n </div>\n\n <!-- Error div -->\n <div v-if=\"showError\" class=\"w-full rounded-xl bg-red900\">\n <p class=\"w-full p-4\">\n {{ errorMessage }}\n </p>\n </div>\n\n <!-- Actual content -->\n <!-- Identity details -->\n <div v-if=\"activeTab === 'identity'\" class=\"tab-content ml-auto mr-auto w-95%\">\n <p class=\"mb-3\">\n {{ t('settings.pages.card.creation.fields_info.subtitle') }}\n </p>\n\n <div class=\"input-list ml-auto mr-auto w-90% flex flex-row flex-wrap justify-center gap-8\">\n <FieldInput v-model=\"cardName\" :label=\"t('settings.pages.card.creation.name')\" :description=\"t('settings.pages.card.creation.fields_info.name')\" :required=\"true\" />\n <FieldInput v-model=\"cardNickname\" :label=\"t('settings.pages.card.creation.nickname')\" :description=\"t('settings.pages.card.creation.fields_info.nickname')\" />\n <FieldInput v-model=\"cardDescription\" :label=\"t('settings.pages.card.creation.description')\" :single-line=\"false\" :required=\"true\" :description=\"t('settings.pages.card.creation.fields_info.description')\" />\n <FieldInput v-model=\"cardNotes\" :label=\"t('settings.pages.card.creator_notes')\" :single-line=\"false\" :description=\"t('settings.pages.card.creation.fields_info.notes')\" />\n </div>\n </div>\n <!-- Behavior -->\n <div v-else-if=\"activeTab === 'behavior'\" class=\"tab-content ml-auto mr-auto w-95%\">\n <div class=\"input-list ml-auto mr-auto w-90% flex flex-row flex-wrap justify-center gap-8\">\n <FieldInput v-model=\"cardPersonality\" :label=\"t('settings.pages.card.personality')\" :single-line=\"false\" :required=\"true\" :description=\"t('settings.pages.card.creation.fields_info.personality')\" />\n <FieldInput v-model=\"cardScenario\" :label=\"t('settings.pages.card.scenario')\" :single-line=\"false\" :required=\"true\" :description=\"t('settings.pages.card.creation.fields_info.scenario')\" />\n <FieldValues v-model=\"cardGreetings\" :label=\"t('settings.pages.card.creation.greetings')\" :description=\"t('settings.pages.card.creation.fields_info.greetings')\" />\n </div>\n </div>\n <!-- Settings -->\n <div v-else-if=\"activeTab === 'settings'\" class=\"tab-content ml-auto mr-auto w-95%\">\n <div class=\"input-list ml-auto mr-auto w-90% flex flex-row flex-wrap justify-center gap-8\">\n <FieldInput v-model=\"cardSystemPrompt\" :label=\"t('settings.pages.card.systemprompt')\" :single-line=\"false\" :required=\"true\" :description=\"t('settings.pages.card.creation.fields_info.systemprompt')\" />\n <FieldInput v-model=\"cardPostHistoryInstructions\" :label=\"t('settings.pages.card.posthistoryinstructions')\" :single-line=\"false\" :required=\"true\" :description=\"t('settings.pages.card.creation.fields_info.posthistoryinstructions')\" />\n <FieldInput v-model=\"cardVersion\" :label=\"t('settings.pages.card.creation.version')\" :required=\"true\" :description=\"t('settings.pages.card.creation.fields_info.version')\" />\n </div>\n </div>\n\n <div class=\"ml-auto mr-1 flex flex-row gap-2\">\n <Button\n variant=\"secondary\"\n icon=\"i-solar:undo-left-bold-duotone\"\n :label=\"t('settings.pages.card.cancel')\"\n :disabled=\"false\"\n @click=\"modelValue = false\"\n />\n <Button\n variant=\"primary\"\n icon=\"i-solar:check-circle-bold-duotone\"\n :label=\"t('settings.pages.card.creation.create')\"\n :disabled=\"false\"\n @click=\"saveCard(card)\"\n />\n </div>\n </div>\n </DialogContent>\n </DialogPortal>\n </DialogRoot>\n</template>\n\n<style scoped>\n.input-list > * {\n min-width: 45%;\n }\n\n @media (max-width: 641px) {\n .input-list * {\n min-width: unset;\n width: 100%;\n }\n}\n</style>\n","<script setup lang=\"ts\">\nimport type { Card } from '@proj-airi/ccc'\n\nimport kebabcase from '@stdlib/string-base-kebabcase'\n\nimport { useAiriCardStore } from '@proj-airi/stage-ui/stores/modules/airi-card'\nimport { Button, FieldInput, FieldValues } from '@proj-airi/ui'\nimport {\n DialogContent,\n DialogOverlay,\n DialogPortal,\n DialogRoot,\n DialogTitle,\n} from 'reka-ui'\nimport { computed, ref, toRaw } from 'vue'\nimport { useI18n } from 'vue-i18n'\n\ninterface Props {\n modelValue: boolean\n}\n\ndefineProps<Props>()\nconst emit = defineEmits<{\n (e: 'update:modelValue', value: boolean): void\n}>()\n\nconst modelValue = defineModel<boolean>()\n\nconst { t } = useI18n()\nconst cardStore = useAiriCardStore()\n\n// Tab type definition\ninterface Tab {\n id: string\n label: string\n icon: string\n}\n\n// Active tab ID state\nconst activeTabId = ref('')\n\n// Tabs for card details\nconst tabs: Tab[] = [\n { id: 'identity', label: t('settings.pages.card.creation.identity'), icon: 'i-solar:emoji-funny-square-bold-duotone' },\n { id: 'behavior', label: t('settings.pages.card.creation.behavior'), icon: 'i-solar:chat-round-line-bold-duotone' },\n { id: 'settings', label: t('settings.pages.card.creation.settings'), icon: 'i-solar:settings-bold-duotone' },\n]\n\n// Active tab state - set to first available tab by default\nconst activeTab = computed({\n get: () => {\n // If current active tab is not in available tabs, reset to first tab\n if (!tabs.find(tab => tab.id === activeTabId.value))\n return tabs[0]?.id || ''\n return activeTabId.value\n },\n set: (value: string) => {\n activeTabId.value = value\n },\n})\n\n// Check for errors, and save built Cards :\n\nconst showError = ref<boolean>(false)\nconst errorMessage = ref<string>('')\n\nfunction saveCard(card: Card): boolean {\n // Before saving, let's validate what the user entered :\n const rawCard: Card = toRaw(card)\n\n if (!(rawCard.name!.length > 0)) { // ! is used, since a default value is provided, and computed values passed to v-model should never be undefined\n // No name\n showError.value = true\n errorMessage.value = t('settings.pages.card.creation.errors.name')\n return false\n }\n else if (!/^(?:\\d+\\.)+\\d+$/.test(rawCard.version)) {\n // Invalid version\n showError.value = true\n errorMessage.value = t('settings.pages.card.creation.errors.version')\n return false\n }\n else if (!(rawCard.description!.length > 0)) {\n // No description\n showError.value = true\n errorMessage.value = t('settings.pages.card.creation.errors.description')\n return false\n }\n else if (!(rawCard.personality!.length > 0)) {\n // No personality\n showError.value = true\n errorMessage.value = t('settings.pages.card.creation.errors.personality')\n return false\n }\n else if (!(rawCard.scenario!.length > 0)) {\n // No Scenario\n showError.value = true\n errorMessage.value = t('settings.pages.card.creation.errors.scenario')\n return false\n }\n else if (!(rawCard.systemPrompt!.length > 0)) {\n // No sys prompt\n showError.value = true\n errorMessage.value = t('settings.pages.card.creation.errors.systemprompt')\n return false\n }\n else if (!(rawCard.postHistoryInstructions!.length > 0)) {\n // No post history prompt\n showError.value = true\n errorMessage.value = t('settings.pages.card.creation.errors.posthistoryinstructions')\n return false\n }\n showError.value = false\n\n cardStore.addCard(rawCard)\n modelValue.value = false // Close this\n return true\n}\n\n// Cards data holders :\n\nconst card = ref<Card>({\n name: t('settings.pages.card.creation.defaults.name'),\n nickname: undefined,\n version: '1.0',\n description: '',\n notes: undefined,\n personality: t('settings.pages.card.creation.defaults.personality'),\n scenario: t('settings.pages.card.creation.defaults.scenario'),\n systemPrompt: t('settings.pages.card.creation.defaults.systemprompt'),\n postHistoryInstructions: t('settings.pages.card.creation.defaults.posthistoryinstructions'),\n greetings: [],\n messageExample: [],\n})\n\nfunction makeComputed<T extends keyof Card>(\n /*\n Function used to generate Computed values, with an optional sanitize function\n */\n key: T,\n transform?: (input: string) => string,\n) {\n return computed({\n get: () => {\n return card.value[key] ?? ''\n },\n set: (val: string) => { // Set,\n const input = val.trim() // We first trim the value\n card.value[key] = (input.length > 0\n ? (transform ? transform(input) : input) // then potentially transform it\n : '') as Card[T]// or default to empty string value if nothing was given\n },\n })\n}\n\nconst cardName = makeComputed('name', input => kebabcase(input))\nconst cardNickname = makeComputed('nickname')\nconst cardDescription = makeComputed('description')\nconst cardNotes = makeComputed('notes')\n\nconst cardPersonality = makeComputed('personality')\nconst cardScenario = makeComputed('scenario')\nconst cardGreetings = computed({\n get: () => card.value.greetings ?? [],\n set: (val: string[]) => {\n card.value.greetings = val || []\n },\n})\n\nconst cardVersion = makeComputed('version')\nconst cardSystemPrompt = makeComputed('systemPrompt')\nconst cardPostHistoryInstructions = makeComputed('postHistoryInstructions')\n</script>\n\n<template>\n <DialogRoot :open=\"modelValue\" @update:open=\"emit('update:modelValue', $event)\">\n <DialogPortal>\n <DialogOverlay class=\"fixed inset-0 z-100 bg-black/50 backdrop-blur-sm data-[state=closed]:animate-fadeOut data-[state=open]:animate-fadeIn\" />\n <DialogContent class=\"fixed left-1/2 top-1/2 z-100 m-0 max-h-[90vh] max-w-6xl w-[92vw] flex flex-col overflow-auto border border-neutral-200 rounded-xl bg-white p-5 shadow-xl 2xl:w-[60vw] lg:w-[80vw] md:w-[85vw] xl:w-[70vw] -translate-x-1/2 -translate-y-1/2 data-[state=closed]:animate-contentHide data-[state=open]:animate-contentShow dark:border-neutral-700 dark:bg-neutral-800 sm:p-6\">\n <div class=\"w-full flex flex-col gap-5\">\n <DialogTitle text-2xl font-normal class=\"from-primary-500 to-primary-400 bg-gradient-to-r bg-clip-text text-transparent\">\n {{ t(\"settings.pages.card.create_card\") }}\n </DialogTitle>\n\n <!-- Dialog tabs -->\n <div class=\"mt-4\">\n <div class=\"border-b border-neutral-200 dark:border-neutral-700\">\n <div class=\"flex justify-center -mb-px sm:justify-start space-x-1\">\n <button\n v-for=\"tab in tabs\"\n :key=\"tab.id\"\n class=\"px-4 py-2 text-sm font-medium\"\n :class=\"[\n activeTab === tab.id\n ? 'text-primary-600 dark:text-primary-400 border-b-2 border-primary-500 dark:border-primary-400'\n : 'text-neutral-500 dark:text-neutral-400 hover:text-neutral-700 dark:hover:text-neutral-300',\n ]\"\n @click=\"activeTab = tab.id\"\n >\n <div class=\"flex items-center gap-1\">\n <div :class=\"tab.icon\" />\n {{ tab.label }}\n </div>\n </button>\n </div>\n </div>\n </div>\n\n <!-- Error div -->\n <div v-if=\"showError\" class=\"w-full rounded-xl bg-red900\">\n <p class=\"w-full p-4\">\n {{ errorMessage }}\n </p>\n </div>\n\n <!-- Actual content -->\n <!-- Identity details -->\n <div v-if=\"activeTab === 'identity'\" class=\"tab-content ml-auto mr-auto w-95%\">\n <p class=\"mb-3\">\n {{ t('settings.pages.card.creation.fields_info.subtitle') }}\n </p>\n\n <div class=\"input-list ml-auto mr-auto w-90% flex flex-row flex-wrap justify-center gap-8\">\n <FieldInput v-model=\"cardName\" :label=\"t('settings.pages.card.creation.name')\" :description=\"t('settings.pages.card.creation.fields_info.name')\" :required=\"true\" />\n <FieldInput v-model=\"cardNickname\" :label=\"t('settings.pages.card.creation.nickname')\" :description=\"t('settings.pages.card.creation.fields_info.nickname')\" />\n <FieldInput v-model=\"cardDescription\" :label=\"t('settings.pages.card.creation.description')\" :single-line=\"false\" :required=\"true\" :description=\"t('settings.pages.card.creation.fields_info.description')\" />\n <FieldInput v-model=\"cardNotes\" :label=\"t('settings.pages.card.creator_notes')\" :single-line=\"false\" :description=\"t('settings.pages.card.creation.fields_info.notes')\" />\n </div>\n </div>\n <!-- Behavior -->\n <div v-else-if=\"activeTab === 'behavior'\" class=\"tab-content ml-auto mr-auto w-95%\">\n <div class=\"input-list ml-auto mr-auto w-90% flex flex-row flex-wrap justify-center gap-8\">\n <FieldInput v-model=\"cardPersonality\" :label=\"t('settings.pages.card.personality')\" :single-line=\"false\" :required=\"true\" :description=\"t('settings.pages.card.creation.fields_info.personality')\" />\n <FieldInput v-model=\"cardScenario\" :label=\"t('settings.pages.card.scenario')\" :single-line=\"false\" :required=\"true\" :description=\"t('settings.pages.card.creation.fields_info.scenario')\" />\n <FieldValues v-model=\"cardGreetings\" :label=\"t('settings.pages.card.creation.greetings')\" :description=\"t('settings.pages.card.creation.fields_info.greetings')\" />\n </div>\n </div>\n <!-- Settings -->\n <div v-else-if=\"activeTab === 'settings'\" class=\"tab-content ml-auto mr-auto w-95%\">\n <div class=\"input-list ml-auto mr-auto w-90% flex flex-row flex-wrap justify-center gap-8\">\n <FieldInput v-model=\"cardSystemPrompt\" :label=\"t('settings.pages.card.systemprompt')\" :single-line=\"false\" :required=\"true\" :description=\"t('settings.pages.card.creation.fields_info.systemprompt')\" />\n <FieldInput v-model=\"cardPostHistoryInstructions\" :label=\"t('settings.pages.card.posthistoryinstructions')\" :single-line=\"false\" :required=\"true\" :description=\"t('settings.pages.card.creation.fields_info.posthistoryinstructions')\" />\n <FieldInput v-model=\"cardVersion\" :label=\"t('settings.pages.card.creation.version')\" :required=\"true\" :description=\"t('settings.pages.card.creation.fields_info.version')\" />\n </div>\n </div>\n\n <div class=\"ml-auto mr-1 flex flex-row gap-2\">\n <Button\n variant=\"secondary\"\n icon=\"i-solar:undo-left-bold-duotone\"\n :label=\"t('settings.pages.card.cancel')\"\n :disabled=\"false\"\n @click=\"modelValue = false\"\n />\n <Button\n variant=\"primary\"\n icon=\"i-solar:check-circle-bold-duotone\"\n :label=\"t('settings.pages.card.creation.create')\"\n :disabled=\"false\"\n @click=\"saveCard(card)\"\n />\n </div>\n </div>\n </DialogContent>\n </DialogPortal>\n </DialogRoot>\n</template>\n\n<style scoped>\n.input-list > * {\n min-width: 45%;\n }\n\n @media (max-width: 641px) {\n .input-list * {\n min-width: unset;\n width: 100%;\n }\n}\n</style>\n"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11],"mappings":"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"}
assets/CardDetailDialog-CEOiChUH.js ADDED
@@ -0,0 +1 @@
 
 
1
+ import"./src-CuCahbAr.js";import"./DeleteCardDialog-DGeRVWYm.js";import"./environment-B9MED9Mn.js";import"./speech-CZOrJx0w.js";import"./purify.es-Cr7Ra6ys.js";import"./resettable--O0wHmRQ.js";import"./stream-transcription-BWzrFso9.js";import"./airi-card-DZOfF0t0.js";import{t as e}from"./CardDetailDialog-V9NckGo0.js";export{e as default};
assets/CardDetailDialog-CMvAZjWO.js DELETED
@@ -1,2 +0,0 @@
1
- import{A as e,C as t,J as n,K as r,O as i,Pt as a,b as o,jt as s,k as c,kt as l,lt as u,m as d,w as f,x as p,xt as m}from"./vue.runtime.esm-bundler-_ZPRHVd_.js";import{i as ee}from"./src-B0kTFhyw.js";import{a as te}from"./resettable-BKThqTUq.js";import{i as ne,m as re,r as ie,t as ae}from"./DialogTitle-WndXCd57.js";import{t as h}from"./DeleteCardDialog-BMxA6Ls7.js";import{t as g}from"./DialogPortal-2ogLZMDa.js";import{t as oe}from"./purify.es-Cr7Ra6ys.js";import{n as se}from"./vue-i18n.runtime-BK0j12fm.js";import{t as ce}from"./airi-card-DYprqM5O.js";var le={key:0,class:`w-full flex flex-col gap-5`},ue={flex:`~ col`,"gap-3":``},de={flex:`~ row`,"items-center":``,"justify-between":``},fe={flex:`~ row`,"items-center":``,"gap-2":``},pe={key:0,class:`flex items-center gap-1 rounded-full bg-primary-100 px-2 py-0.5 text-xs text-primary-600 font-medium dark:bg-primary-900/40 dark:text-primary-400`},me={"mt-1":``,"text-sm":``,"text-neutral-500":``,"dark:text-neutral-400":``},he={"font-medium":``},_={flex:`~ row`,"gap-2":``},v={class:`mt-4`},y={class:`border-b border-neutral-200 dark:border-neutral-700`},b={class:`flex justify-center -mb-px sm:justify-start space-x-1`},x=[`onClick`],S={class:`flex items-center gap-1`},C={key:0},w=[`innerHTML`],T={key:1},E=[`innerHTML`],D={key:2},O={flex:`~ col`,"max-h-60":``,"gap-4":``,"overflow-auto":``,"pr-1":``,"sm:max-h-80":``},k={key:0,flex:`~ col`,"gap-2":``},A={"text-lg":``,"text-neutral-500":``,"font-medium":``,"dark:text-neutral-400":``},j=[`innerHTML`],M={key:3},N={grid:`~ cols-1 sm:cols-3`,"gap-4":``},P={flex:`~ col`,bg:`white/60 dark:black/30`,"gap-1":``,"rounded-lg":``,"p-3":``,border:`~ neutral-200/50 dark:neutral-700/30`,transition:`all duration-200`,hover:`bg-white/80 dark:bg-black/40`},F={flex:`~ row`,"items-center":``,"gap-2":``,"text-sm":``,"text-neutral-500":``,"dark:text-neutral-400":``},ge={truncate:``,"font-medium":``},I={flex:`~ col`,bg:`white/60 dark:black/30`,"gap-2":``,"rounded-lg":``,"p-3":``,border:`~ neutral-200/50 dark:neutral-700/30`,transition:`all duration-200`,hover:`bg-white/80 dark:bg-black/40`},L={flex:`~ row`,"items-center":``,"gap-2":``,"text-sm":``,"text-neutral-500":``,"dark:text-neutral-400":``},_e={truncate:``,"font-medium":``},ve={flex:`~ col`,bg:`white/60 dark:black/30`,"gap-2":``,"rounded-lg":``,"p-3":``,border:`~ neutral-200/50 dark:neutral-700/30`,transition:`all duration-200`,hover:`bg-white/80 dark:bg-black/40`},ye={flex:`~ row`,"items-center":``,"gap-2":``,"text-sm":``,"text-neutral-500":``,"dark:text-neutral-400":``},be={truncate:``,"font-medium":``},xe={key:1,bg:`neutral-50/50 dark:neutral-900/50`,"rounded-xl":``,"p-8":``,"text-center":``,border:`~ neutral-200/50 dark:neutral-700/30`,shadow:`sm`},R=e({__name:`CardDetailDialog`,props:{modelValue:{type:Boolean},cardId:{}},emits:[`update:modelValue`],setup(e,{emit:R}){let z=e,B=R,{t:V}=se(),H=ce(),{removeCard:Se}=H,{activeCardId:U}=te(H),W=o(()=>{if(z.cardId)return H.getCard(z.cardId)}),G=o(()=>{if(!W.value||!W.value.extensions?.airi?.modules)return{consciousness:``,speech:``,voice:``};let e=W.value.extensions.airi.modules;return{consciousness:e.consciousness?.model||``,speech:e.speech?.model||``,voice:e.speech?.voice_id||``}}),K=o(()=>W.value?{personality:W.value.personality,scenario:W.value.scenario,systemPrompt:W.value.systemPrompt,postHistoryInstructions:W.value.postHistoryInstructions}:{}),q=o(()=>z.cardId===U.value),J=m(!1);function Ce(){J.value=!0,setTimeout(()=>{U.value=z.cardId,J.value=!1},300)}function Y(e){return oe.sanitize(e?.replace(/\{\{(.*?)\}\}/g,`<span class="bg-primary-500/20 inline-block">{{ $1 }}</span>`).trim())}let X=m(!1);function we(){W.value&&(Se(z.cardId),B(`update:modelValue`,!1)),X.value=!1}let Z=m(``),Q=o(()=>{let e=[];return W.value?.description&&e.push({id:`description`,label:V(`settings.pages.card.description_label`),icon:`i-solar:document-text-linear`}),W.value?.notes&&e.push({id:`notes`,label:V(`settings.pages.card.creator_notes`),icon:`i-solar:notes-linear`}),Object.values(K.value).some(e=>!!e)&&e.push({id:`character`,label:V(`settings.pages.card.character`),icon:`i-solar:user-rounded-linear`}),e.push({id:`modules`,label:V(`settings.pages.card.modules`),icon:`i-solar:tuning-square-linear`}),e}),$=o({get:()=>Q.value.find(e=>e.id===Z.value)?Z.value:Q.value[0]?.id||``,set:e=>{Z.value=e}});return(o,m)=>(r(),f(d,null,[c(l(re),{open:e.modelValue,"onUpdate:open":m[0]||=e=>B(`update:modelValue`,e)},{default:u(()=>[c(l(g),null,{default:u(()=>[c(l(ie),{class:`fixed inset-0 z-100 bg-black/50 backdrop-blur-sm data-[state=closed]:animate-fadeOut data-[state=open]:animate-fadeIn`}),c(l(ne),{class:`fixed left-1/2 top-1/2 z-100 m-0 max-h-[90vh] max-w-6xl w-[92vw] flex flex-col overflow-auto border border-neutral-200 rounded-xl bg-white p-5 shadow-xl 2xl:w-[60vw] lg:w-[80vw] md:w-[85vw] xl:w-[70vw] -translate-x-1/2 -translate-y-1/2 data-[state=closed]:animate-contentHide data-[state=open]:animate-contentShow dark:border-neutral-700 dark:bg-neutral-800 sm:p-6`},{default:u(()=>[W.value?(r(),f(`div`,le,[p(`div`,ue,[p(`div`,de,[p(`div`,null,[p(`div`,fe,[c(l(ae),{"text-2xl":``,"font-normal":``,class:`from-primary-500 to-primary-400 bg-gradient-to-r bg-clip-text text-transparent`},{default:u(()=>[i(a(W.value.name),1)]),_:1}),q.value?(r(),f(`div`,pe,[m[3]||=p(`div`,{"i-solar:check-circle-bold-duotone":``,"text-xs":``},null,-1),i(` `+a(l(V)(`settings.pages.card.active_badge`)),1)])):t(``,!0)]),p(`div`,me,[i(` v`+a(W.value.version)+` `,1),W.value.creator?(r(),f(d,{key:0},[i(` Β· `+a(l(V)(`settings.pages.card.created_by`))+` `,1),p(`span`,he,a(W.value.creator),1)],64)):t(``,!0)])]),p(`div`,_,[c(l(ee),{variant:`primary`,icon:q.value?`i-solar:check-circle-bold-duotone`:`i-solar:play-circle-broken`,label:q.value?l(V)(`settings.pages.card.active`):l(V)(`settings.pages.card.activate`),disabled:q.value,class:s({"animate-pulse":J.value}),onClick:Ce},null,8,[`icon`,`label`,`disabled`,`class`])])]),p(`div`,v,[p(`div`,y,[p(`div`,b,[(r(!0),f(d,null,n(Q.value,e=>(r(),f(`button`,{key:e.id,class:s([`px-4 py-2 text-sm font-medium`,[$.value===e.id?`text-primary-600 dark:text-primary-400 border-b-2 border-primary-500 dark:border-primary-400`:`text-neutral-500 dark:text-neutral-400 hover:text-neutral-700 dark:hover:text-neutral-300`]]),onClick:t=>$.value=e.id},[p(`div`,S,[p(`div`,{class:s(e.icon)},null,2),i(` `+a(e.label),1)])],10,x))),128))])])]),$.value===`notes`&&W.value.notes?(r(),f(`div`,C,[p(`div`,{bg:`white/60 dark:black/30`,border:`~ neutral-200/50 dark:neutral-700/30`,"max-h-60":``,"overflow-auto":``,"whitespace-pre-line":``,"rounded-lg":``,"p-4":``,"text-neutral-700":``,"sm:max-h-80":``,"dark:text-neutral-300":``,transition:`all duration-200`,hover:`bg-white/80 dark:bg-black/40`,innerHTML:Y(W.value.notes)},null,8,w)])):t(``,!0),$.value===`description`&&W.value.description?(r(),f(`div`,T,[p(`div`,{bg:`white/60 dark:black/30`,"max-h-60":``,"overflow-auto":``,"whitespace-pre-line":``,"rounded-lg":``,"p-4":``,"sm:max-h-80":``,text:`neutral-600 dark:neutral-300`,border:`~ neutral-200/50 dark:neutral-700/30`,innerHTML:Y(W.value.description)},null,8,E)])):t(``,!0),$.value===`character`&&Object.values(K.value).some(e=>!!e)?(r(),f(`div`,D,[p(`div`,O,[(r(!0),f(d,null,n(K.value,(e,n)=>(r(),f(d,{key:n},[e?(r(),f(`div`,k,[p(`h2`,A,a(l(V)(`settings.pages.card.${n.toLowerCase()}`)),1),p(`div`,{bg:`white/60 dark:black/30`,border:`~ neutral-200/50 dark:neutral-700/30`,transition:`all duration-200`,hover:`bg-white/80 dark:bg-black/40`,"max-h-none":``,"overflow-auto":``,"whitespace-pre-line":``,"rounded-lg":``,"p-3":``,"text-neutral-700":``,"dark:text-neutral-300":``,innerHTML:Y(e)},null,8,j)])):t(``,!0)],64))),128))])])):t(``,!0),$.value===`modules`?(r(),f(`div`,M,[p(`div`,N,[p(`div`,P,[p(`span`,F,[m[4]||=p(`div`,{"i-lucide:ghost":``},null,-1),i(` `+a(l(V)(`settings.pages.card.consciousness.model`)),1)]),p(`div`,ge,a(G.value.consciousness??`default`),1)]),p(`div`,I,[p(`span`,L,[m[5]||=p(`div`,{"i-lucide:mic":``},null,-1),i(` `+a(l(V)(`settings.pages.card.speech.model`)),1)]),p(`div`,_e,a(G.value.speech??`default`),1)]),p(`div`,ve,[p(`span`,ye,[m[6]||=p(`div`,{"i-lucide:music":``},null,-1),i(` `+a(l(V)(`settings.pages.card.speech.voice`)),1)]),p(`div`,be,a(G.value.voice??`default`),1)])])])):t(``,!0)])])):(r(),f(`div`,xe,[m[7]||=p(`div`,{"i-solar:card-search-broken":``,"mx-auto":``,"mb-3":``,"text-6xl":``,"text-neutral-400":``},null,-1),i(` `+a(l(V)(`settings.pages.card.card_not_found`)),1)]))]),_:1})]),_:1})]),_:1},8,[`open`]),c(h,{modelValue:X.value,"onUpdate:modelValue":m[1]||=e=>X.value=e,"card-name":W.value?.name,onConfirm:we,onCancel:m[2]||=e=>X.value=!1},null,8,[`modelValue`,`card-name`])],64))}});export{R as t};
2
- //# sourceMappingURL=CardDetailDialog-CMvAZjWO.js.map
 
 
 
assets/CardDetailDialog-CjVXiFVj.js DELETED
@@ -1 +0,0 @@
1
- import"./src-B0kTFhyw.js";import"./resettable-BKThqTUq.js";import"./DeleteCardDialog-BMxA6Ls7.js";import"./environment-B9MED9Mn.js";import"./speech-BBHhUAo6.js";import"./purify.es-Cr7Ra6ys.js";import"./stream-transcription-DKUM7eVP.js";import"./airi-card-DYprqM5O.js";import{t as e}from"./CardDetailDialog-CMvAZjWO.js";export{e as default};
 
 
assets/CardDetailDialog-V9NckGo0.js ADDED
@@ -0,0 +1,2 @@
 
 
 
1
+ import{A as e,C as t,J as n,K as r,O as i,Pt as a,b as o,jt as s,k as c,kt as l,lt as u,m as d,w as f,x as p,xt as m}from"./vue.runtime.esm-bundler-_ZPRHVd_.js";import{i as ee}from"./src-CuCahbAr.js";import{r as te}from"./pinia-DNsugCtk.js";import{i as ne,m as re,r as ie,t as ae}from"./DialogTitle-D6_neaY1.js";import{t as h}from"./DeleteCardDialog-DGeRVWYm.js";import{t as g}from"./DialogPortal-BhPdarFy.js";import{t as oe}from"./purify.es-Cr7Ra6ys.js";import{n as se}from"./vue-i18n.runtime-BK0j12fm.js";import{t as ce}from"./airi-card-DZOfF0t0.js";var le={key:0,class:`w-full flex flex-col gap-5`},ue={flex:`~ col`,"gap-3":``},de={flex:`~ row`,"items-center":``,"justify-between":``},fe={flex:`~ row`,"items-center":``,"gap-2":``},pe={key:0,class:`flex items-center gap-1 rounded-full bg-primary-100 px-2 py-0.5 text-xs text-primary-600 font-medium dark:bg-primary-900/40 dark:text-primary-400`},me={"mt-1":``,"text-sm":``,"text-neutral-500":``,"dark:text-neutral-400":``},he={"font-medium":``},_={flex:`~ row`,"gap-2":``},v={class:`mt-4`},y={class:`border-b border-neutral-200 dark:border-neutral-700`},b={class:`flex justify-center -mb-px sm:justify-start space-x-1`},x=[`onClick`],S={class:`flex items-center gap-1`},C={key:0},w=[`innerHTML`],T={key:1},E=[`innerHTML`],D={key:2},O={flex:`~ col`,"max-h-60":``,"gap-4":``,"overflow-auto":``,"pr-1":``,"sm:max-h-80":``},k={key:0,flex:`~ col`,"gap-2":``},A={"text-lg":``,"text-neutral-500":``,"font-medium":``,"dark:text-neutral-400":``},j=[`innerHTML`],M={key:3},N={grid:`~ cols-1 sm:cols-3`,"gap-4":``},P={flex:`~ col`,bg:`white/60 dark:black/30`,"gap-1":``,"rounded-lg":``,"p-3":``,border:`~ neutral-200/50 dark:neutral-700/30`,transition:`all duration-200`,hover:`bg-white/80 dark:bg-black/40`},F={flex:`~ row`,"items-center":``,"gap-2":``,"text-sm":``,"text-neutral-500":``,"dark:text-neutral-400":``},ge={truncate:``,"font-medium":``},I={flex:`~ col`,bg:`white/60 dark:black/30`,"gap-2":``,"rounded-lg":``,"p-3":``,border:`~ neutral-200/50 dark:neutral-700/30`,transition:`all duration-200`,hover:`bg-white/80 dark:bg-black/40`},L={flex:`~ row`,"items-center":``,"gap-2":``,"text-sm":``,"text-neutral-500":``,"dark:text-neutral-400":``},_e={truncate:``,"font-medium":``},ve={flex:`~ col`,bg:`white/60 dark:black/30`,"gap-2":``,"rounded-lg":``,"p-3":``,border:`~ neutral-200/50 dark:neutral-700/30`,transition:`all duration-200`,hover:`bg-white/80 dark:bg-black/40`},ye={flex:`~ row`,"items-center":``,"gap-2":``,"text-sm":``,"text-neutral-500":``,"dark:text-neutral-400":``},be={truncate:``,"font-medium":``},xe={key:1,bg:`neutral-50/50 dark:neutral-900/50`,"rounded-xl":``,"p-8":``,"text-center":``,border:`~ neutral-200/50 dark:neutral-700/30`,shadow:`sm`},R=e({__name:`CardDetailDialog`,props:{modelValue:{type:Boolean},cardId:{}},emits:[`update:modelValue`],setup(e,{emit:R}){let z=e,B=R,{t:V}=se(),H=ce(),{removeCard:Se}=H,{activeCardId:U}=te(H),W=o(()=>{if(z.cardId)return H.getCard(z.cardId)}),G=o(()=>{if(!W.value||!W.value.extensions?.airi?.modules)return{consciousness:``,speech:``,voice:``};let e=W.value.extensions.airi.modules;return{consciousness:e.consciousness?.model||``,speech:e.speech?.model||``,voice:e.speech?.voice_id||``}}),K=o(()=>W.value?{personality:W.value.personality,scenario:W.value.scenario,systemPrompt:W.value.systemPrompt,postHistoryInstructions:W.value.postHistoryInstructions}:{}),q=o(()=>z.cardId===U.value),J=m(!1);function Ce(){J.value=!0,setTimeout(()=>{U.value=z.cardId,J.value=!1},300)}function Y(e){return oe.sanitize(e?.replace(/\{\{(.*?)\}\}/g,`<span class="bg-primary-500/20 inline-block">{{ $1 }}</span>`).trim())}let X=m(!1);function we(){W.value&&(Se(z.cardId),B(`update:modelValue`,!1)),X.value=!1}let Z=m(``),Q=o(()=>{let e=[];return W.value?.description&&e.push({id:`description`,label:V(`settings.pages.card.description_label`),icon:`i-solar:document-text-linear`}),W.value?.notes&&e.push({id:`notes`,label:V(`settings.pages.card.creator_notes`),icon:`i-solar:notes-linear`}),Object.values(K.value).some(e=>!!e)&&e.push({id:`character`,label:V(`settings.pages.card.character`),icon:`i-solar:user-rounded-linear`}),e.push({id:`modules`,label:V(`settings.pages.card.modules`),icon:`i-solar:tuning-square-linear`}),e}),$=o({get:()=>Q.value.find(e=>e.id===Z.value)?Z.value:Q.value[0]?.id||``,set:e=>{Z.value=e}});return(o,m)=>(r(),f(d,null,[c(l(re),{open:e.modelValue,"onUpdate:open":m[0]||=e=>B(`update:modelValue`,e)},{default:u(()=>[c(l(g),null,{default:u(()=>[c(l(ie),{class:`fixed inset-0 z-100 bg-black/50 backdrop-blur-sm data-[state=closed]:animate-fadeOut data-[state=open]:animate-fadeIn`}),c(l(ne),{class:`fixed left-1/2 top-1/2 z-100 m-0 max-h-[90vh] max-w-6xl w-[92vw] flex flex-col overflow-auto border border-neutral-200 rounded-xl bg-white p-5 shadow-xl 2xl:w-[60vw] lg:w-[80vw] md:w-[85vw] xl:w-[70vw] -translate-x-1/2 -translate-y-1/2 data-[state=closed]:animate-contentHide data-[state=open]:animate-contentShow dark:border-neutral-700 dark:bg-neutral-800 sm:p-6`},{default:u(()=>[W.value?(r(),f(`div`,le,[p(`div`,ue,[p(`div`,de,[p(`div`,null,[p(`div`,fe,[c(l(ae),{"text-2xl":``,"font-normal":``,class:`from-primary-500 to-primary-400 bg-gradient-to-r bg-clip-text text-transparent`},{default:u(()=>[i(a(W.value.name),1)]),_:1}),q.value?(r(),f(`div`,pe,[m[3]||=p(`div`,{"i-solar:check-circle-bold-duotone":``,"text-xs":``},null,-1),i(` `+a(l(V)(`settings.pages.card.active_badge`)),1)])):t(``,!0)]),p(`div`,me,[i(` v`+a(W.value.version)+` `,1),W.value.creator?(r(),f(d,{key:0},[i(` Β· `+a(l(V)(`settings.pages.card.created_by`))+` `,1),p(`span`,he,a(W.value.creator),1)],64)):t(``,!0)])]),p(`div`,_,[c(l(ee),{variant:`primary`,icon:q.value?`i-solar:check-circle-bold-duotone`:`i-solar:play-circle-broken`,label:q.value?l(V)(`settings.pages.card.active`):l(V)(`settings.pages.card.activate`),disabled:q.value,class:s({"animate-pulse":J.value}),onClick:Ce},null,8,[`icon`,`label`,`disabled`,`class`])])]),p(`div`,v,[p(`div`,y,[p(`div`,b,[(r(!0),f(d,null,n(Q.value,e=>(r(),f(`button`,{key:e.id,class:s([`px-4 py-2 text-sm font-medium`,[$.value===e.id?`text-primary-600 dark:text-primary-400 border-b-2 border-primary-500 dark:border-primary-400`:`text-neutral-500 dark:text-neutral-400 hover:text-neutral-700 dark:hover:text-neutral-300`]]),onClick:t=>$.value=e.id},[p(`div`,S,[p(`div`,{class:s(e.icon)},null,2),i(` `+a(e.label),1)])],10,x))),128))])])]),$.value===`notes`&&W.value.notes?(r(),f(`div`,C,[p(`div`,{bg:`white/60 dark:black/30`,border:`~ neutral-200/50 dark:neutral-700/30`,"max-h-60":``,"overflow-auto":``,"whitespace-pre-line":``,"rounded-lg":``,"p-4":``,"text-neutral-700":``,"sm:max-h-80":``,"dark:text-neutral-300":``,transition:`all duration-200`,hover:`bg-white/80 dark:bg-black/40`,innerHTML:Y(W.value.notes)},null,8,w)])):t(``,!0),$.value===`description`&&W.value.description?(r(),f(`div`,T,[p(`div`,{bg:`white/60 dark:black/30`,"max-h-60":``,"overflow-auto":``,"whitespace-pre-line":``,"rounded-lg":``,"p-4":``,"sm:max-h-80":``,text:`neutral-600 dark:neutral-300`,border:`~ neutral-200/50 dark:neutral-700/30`,innerHTML:Y(W.value.description)},null,8,E)])):t(``,!0),$.value===`character`&&Object.values(K.value).some(e=>!!e)?(r(),f(`div`,D,[p(`div`,O,[(r(!0),f(d,null,n(K.value,(e,n)=>(r(),f(d,{key:n},[e?(r(),f(`div`,k,[p(`h2`,A,a(l(V)(`settings.pages.card.${n.toLowerCase()}`)),1),p(`div`,{bg:`white/60 dark:black/30`,border:`~ neutral-200/50 dark:neutral-700/30`,transition:`all duration-200`,hover:`bg-white/80 dark:bg-black/40`,"max-h-none":``,"overflow-auto":``,"whitespace-pre-line":``,"rounded-lg":``,"p-3":``,"text-neutral-700":``,"dark:text-neutral-300":``,innerHTML:Y(e)},null,8,j)])):t(``,!0)],64))),128))])])):t(``,!0),$.value===`modules`?(r(),f(`div`,M,[p(`div`,N,[p(`div`,P,[p(`span`,F,[m[4]||=p(`div`,{"i-lucide:ghost":``},null,-1),i(` `+a(l(V)(`settings.pages.card.consciousness.model`)),1)]),p(`div`,ge,a(G.value.consciousness??`default`),1)]),p(`div`,I,[p(`span`,L,[m[5]||=p(`div`,{"i-lucide:mic":``},null,-1),i(` `+a(l(V)(`settings.pages.card.speech.model`)),1)]),p(`div`,_e,a(G.value.speech??`default`),1)]),p(`div`,ve,[p(`span`,ye,[m[6]||=p(`div`,{"i-lucide:music":``},null,-1),i(` `+a(l(V)(`settings.pages.card.speech.voice`)),1)]),p(`div`,be,a(G.value.voice??`default`),1)])])])):t(``,!0)])])):(r(),f(`div`,xe,[m[7]||=p(`div`,{"i-solar:card-search-broken":``,"mx-auto":``,"mb-3":``,"text-6xl":``,"text-neutral-400":``},null,-1),i(` `+a(l(V)(`settings.pages.card.card_not_found`)),1)]))]),_:1})]),_:1})]),_:1},8,[`open`]),c(h,{modelValue:X.value,"onUpdate:modelValue":m[1]||=e=>X.value=e,"card-name":W.value?.name,onConfirm:we,onCancel:m[2]||=e=>X.value=!1},null,8,[`modelValue`,`card-name`])],64))}});export{R as t};
2
+ //# sourceMappingURL=CardDetailDialog-V9NckGo0.js.map
assets/{CardDetailDialog-CMvAZjWO.js.map β†’ CardDetailDialog-V9NckGo0.js.map} RENAMED
@@ -1 +1 @@
1
- {"version":3,"file":"CardDetailDialog-CMvAZjWO.js","names":[],"sources":["../../../../packages/stage-pages/src/pages/settings/airi-card/components/CardDetailDialog.vue","../../../../packages/stage-pages/src/pages/settings/airi-card/components/CardDetailDialog.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { AiriCard } from '@proj-airi/stage-ui/stores/modules/airi-card'\n\nimport DOMPurify from 'dompurify'\n\nimport { useAiriCardStore } from '@proj-airi/stage-ui/stores/modules/airi-card'\nimport { Button } from '@proj-airi/ui'\nimport { storeToRefs } from 'pinia'\nimport {\n DialogContent,\n DialogOverlay,\n DialogPortal,\n DialogRoot,\n DialogTitle,\n} from 'reka-ui'\nimport { computed, ref } from 'vue'\nimport { useI18n } from 'vue-i18n'\n\nimport DeleteCardDialog from './DeleteCardDialog.vue'\n\ninterface Props {\n modelValue: boolean\n cardId: string\n}\n\nconst props = defineProps<Props>()\nconst emit = defineEmits<{\n (e: 'update:modelValue', value: boolean): void\n}>()\n\nconst { t } = useI18n()\nconst cardStore = useAiriCardStore()\nconst { removeCard } = cardStore\nconst { activeCardId } = storeToRefs(cardStore)\n\n// Get selected card data\nconst selectedCard = computed<AiriCard | undefined>(() => {\n if (!props.cardId)\n return undefined\n return cardStore.getCard(props.cardId)\n})\n\n// Get module settings\nconst moduleSettings = computed(() => {\n if (!selectedCard.value || !selectedCard.value.extensions?.airi?.modules) {\n return {\n consciousness: '',\n speech: '',\n voice: '',\n }\n }\n\n const airiExt = selectedCard.value.extensions.airi.modules\n return {\n consciousness: airiExt.consciousness?.model || '',\n speech: airiExt.speech?.model || '',\n voice: airiExt.speech?.voice_id || '',\n }\n})\n\n// Get character settings\nconst characterSettings = computed(() => {\n if (!selectedCard.value)\n return {}\n\n return {\n personality: selectedCard.value.personality,\n scenario: selectedCard.value.scenario,\n systemPrompt: selectedCard.value.systemPrompt,\n postHistoryInstructions: selectedCard.value.postHistoryInstructions,\n }\n})\n\n// Check if card is active\nconst isActive = computed(() => props.cardId === activeCardId.value)\n\n// Animation control for card activation\nconst isActivating = ref(false)\n\nfunction handleActivate() {\n isActivating.value = true\n setTimeout(() => {\n activeCardId.value = props.cardId\n isActivating.value = false\n }, 300)\n}\n\nfunction highlightTagToHtml(text: string) {\n return DOMPurify.sanitize(text?.replace(/\\{\\{(.*?)\\}\\}/g, '<span class=\"bg-primary-500/20 inline-block\">{{ $1 }}</span>').trim())\n}\n\n// Delete confirmation\nconst showDeleteConfirm = ref(false)\n\nfunction handleDeleteConfirm() {\n if (selectedCard.value) {\n removeCard(props.cardId)\n emit('update:modelValue', false)\n }\n showDeleteConfirm.value = false\n}\n\n// Tab type definition\ninterface Tab {\n id: string\n label: string\n icon: string\n}\n\n// Active tab ID state\nconst activeTabId = ref('')\n\n// Tabs for card details\nconst tabs = computed<Tab[]>(() => {\n const availableTabs: Tab[] = []\n\n // Description tab - always show if there's description\n if (selectedCard.value?.description) {\n availableTabs.push({\n id: 'description',\n label: t('settings.pages.card.description_label'),\n icon: 'i-solar:document-text-linear',\n })\n }\n\n // Notes tab - only show if there are creator notes\n if (selectedCard.value?.notes) {\n availableTabs.push({\n id: 'notes',\n label: t('settings.pages.card.creator_notes'),\n icon: 'i-solar:notes-linear',\n })\n }\n\n // Character tab - only show if there are character settings\n if (Object.values(characterSettings.value).some(value => !!value)) {\n availableTabs.push({\n id: 'character',\n label: t('settings.pages.card.character'),\n icon: 'i-solar:user-rounded-linear',\n })\n }\n\n // Modules tab - always show\n availableTabs.push({\n id: 'modules',\n label: t('settings.pages.card.modules'),\n icon: 'i-solar:tuning-square-linear',\n })\n\n return availableTabs\n})\n\n// Active tab state - set to first available tab by default\nconst activeTab = computed({\n get: () => {\n // If current active tab is not in available tabs, reset to first tab\n if (!tabs.value.find(tab => tab.id === activeTabId.value))\n return tabs.value[0]?.id || ''\n return activeTabId.value\n },\n set: (value: string) => {\n activeTabId.value = value\n },\n})\n</script>\n\n<template>\n <DialogRoot :open=\"modelValue\" @update:open=\"emit('update:modelValue', $event)\">\n <DialogPortal>\n <DialogOverlay class=\"fixed inset-0 z-100 bg-black/50 backdrop-blur-sm data-[state=closed]:animate-fadeOut data-[state=open]:animate-fadeIn\" />\n <DialogContent class=\"fixed left-1/2 top-1/2 z-100 m-0 max-h-[90vh] max-w-6xl w-[92vw] flex flex-col overflow-auto border border-neutral-200 rounded-xl bg-white p-5 shadow-xl 2xl:w-[60vw] lg:w-[80vw] md:w-[85vw] xl:w-[70vw] -translate-x-1/2 -translate-y-1/2 data-[state=closed]:animate-contentHide data-[state=open]:animate-contentShow dark:border-neutral-700 dark:bg-neutral-800 sm:p-6\">\n <div v-if=\"selectedCard\" class=\"w-full flex flex-col gap-5\">\n <!-- Header with status indicator -->\n <div flex=\"~ col\" gap-3>\n <div flex=\"~ row\" items-center justify-between>\n <div>\n <div flex=\"~ row\" items-center gap-2>\n <DialogTitle text-2xl font-normal class=\"from-primary-500 to-primary-400 bg-gradient-to-r bg-clip-text text-transparent\">\n {{ selectedCard.name }}\n </DialogTitle>\n <div v-if=\"isActive\" class=\"flex items-center gap-1 rounded-full bg-primary-100 px-2 py-0.5 text-xs text-primary-600 font-medium dark:bg-primary-900/40 dark:text-primary-400\">\n <div i-solar:check-circle-bold-duotone text-xs />\n {{ t('settings.pages.card.active_badge') }}\n </div>\n </div>\n <div mt-1 text-sm text-neutral-500 dark:text-neutral-400>\n v{{ selectedCard.version }}\n <template v-if=\"selectedCard.creator\">\n Β· {{ t('settings.pages.card.created_by') }} <span font-medium>{{ selectedCard.creator }}</span>\n </template>\n </div>\n </div>\n\n <!-- Action buttons -->\n <div flex=\"~ row\" gap-2>\n <!-- Activation button -->\n <Button\n variant=\"primary\"\n :icon=\"isActive ? 'i-solar:check-circle-bold-duotone' : 'i-solar:play-circle-broken'\"\n :label=\"isActive ? t('settings.pages.card.active') : t('settings.pages.card.activate')\"\n :disabled=\"isActive\"\n :class=\"{ 'animate-pulse': isActivating }\"\n @click=\"handleActivate\"\n />\n </div>\n </div>\n\n <!-- Card content tabs -->\n <div class=\"mt-4\">\n <div class=\"border-b border-neutral-200 dark:border-neutral-700\">\n <div class=\"flex justify-center -mb-px sm:justify-start space-x-1\">\n <button\n v-for=\"tab in tabs\"\n :key=\"tab.id\"\n class=\"px-4 py-2 text-sm font-medium\"\n :class=\"[\n activeTab === tab.id\n ? 'text-primary-600 dark:text-primary-400 border-b-2 border-primary-500 dark:border-primary-400'\n : 'text-neutral-500 dark:text-neutral-400 hover:text-neutral-700 dark:hover:text-neutral-300',\n ]\"\n @click=\"activeTab = tab.id\"\n >\n <div class=\"flex items-center gap-1\">\n <div :class=\"tab.icon\" />\n {{ tab.label }}\n </div>\n </button>\n </div>\n </div>\n </div>\n\n <!-- Creator notes -->\n <div v-if=\"activeTab === 'notes' && selectedCard.notes\">\n <div\n bg=\"white/60 dark:black/30\"\n border=\"~ neutral-200/50 dark:neutral-700/30\"\n max-h-60 overflow-auto whitespace-pre-line rounded-lg p-4 text-neutral-700 sm:max-h-80 dark:text-neutral-300 transition=\"all duration-200\"\n hover=\"bg-white/80 dark:bg-black/40\"\n v-html=\"highlightTagToHtml(selectedCard.notes)\"\n />\n </div>\n\n <!-- Description section -->\n <div v-if=\"activeTab === 'description' && selectedCard.description\">\n <div\n bg=\"white/60 dark:black/30\"\n max-h-60 overflow-auto whitespace-pre-line rounded-lg p-4 sm:max-h-80\n text=\"neutral-600 dark:neutral-300\"\n border=\"~ neutral-200/50 dark:neutral-700/30\"\n v-html=\"highlightTagToHtml(selectedCard.description)\"\n />\n </div>\n\n <!-- Character -->\n <div v-if=\"activeTab === 'character' && Object.values(characterSettings).some(value => !!value)\">\n <div flex=\"~ col\" max-h-60 gap-4 overflow-auto pr-1 sm:max-h-80>\n <template v-for=\"(value, key) in characterSettings\" :key=\"key\">\n <div v-if=\"value\" flex=\"~ col\" gap-2>\n <h2 text-lg text-neutral-500 font-medium dark:text-neutral-400>\n {{ t(`settings.pages.card.${key.toLowerCase()}`) }}\n </h2>\n <div\n bg=\"white/60 dark:black/30\"\n border=\"~ neutral-200/50 dark:neutral-700/30\"\n transition=\"all duration-200\"\n hover=\"bg-white/80 dark:bg-black/40\"\n max-h-none overflow-auto whitespace-pre-line rounded-lg p-3 text-neutral-700 dark:text-neutral-300\n v-html=\"highlightTagToHtml(value)\"\n />\n </div>\n </template>\n </div>\n </div>\n\n <!-- Modules -->\n <div v-if=\"activeTab === 'modules'\">\n <div grid=\"~ cols-1 sm:cols-3\" gap-4>\n <div\n flex=\"~ col\"\n bg=\"white/60 dark:black/30\"\n gap-1 rounded-lg p-3\n border=\"~ neutral-200/50 dark:neutral-700/30\"\n transition=\"all duration-200\"\n hover=\"bg-white/80 dark:bg-black/40\"\n >\n <span flex=\"~ row\" items-center gap-2 text-sm text-neutral-500 dark:text-neutral-400>\n <div i-lucide:ghost />\n {{ t('settings.pages.card.consciousness.model') }}\n </span>\n <div truncate font-medium>\n {{ moduleSettings.consciousness ?? 'default' }}\n </div>\n </div>\n\n <div\n flex=\"~ col\"\n bg=\"white/60 dark:black/30\"\n gap-2 rounded-lg p-3\n border=\"~ neutral-200/50 dark:neutral-700/30\"\n transition=\"all duration-200\"\n hover=\"bg-white/80 dark:bg-black/40\"\n >\n <span flex=\"~ row\" items-center gap-2 text-sm text-neutral-500 dark:text-neutral-400>\n <div i-lucide:mic />\n {{ t('settings.pages.card.speech.model') }}\n </span>\n <div truncate font-medium>\n {{ moduleSettings.speech ?? 'default' }}\n </div>\n </div>\n\n <div\n flex=\"~ col\"\n bg=\"white/60 dark:black/30\"\n gap-2 rounded-lg p-3\n border=\"~ neutral-200/50 dark:neutral-700/30\"\n transition=\"all duration-200\"\n hover=\"bg-white/80 dark:bg-black/40\"\n >\n <span flex=\"~ row\" items-center gap-2 text-sm text-neutral-500 dark:text-neutral-400>\n <div i-lucide:music />\n {{ t('settings.pages.card.speech.voice') }}\n </span>\n <div truncate font-medium>\n {{ moduleSettings.voice ?? 'default' }}\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div\n v-else\n bg=\"neutral-50/50 dark:neutral-900/50\"\n rounded-xl p-8 text-center\n border=\"~ neutral-200/50 dark:neutral-700/30\"\n shadow=\"sm\"\n >\n <div i-solar:card-search-broken mx-auto mb-3 text-6xl text-neutral-400 />\n {{ t('settings.pages.card.card_not_found') }}\n </div>\n </DialogContent>\n </DialogPortal>\n </DialogRoot>\n\n <!-- Delete confirmation dialog -->\n <DeleteCardDialog\n v-model=\"showDeleteConfirm\"\n :card-name=\"selectedCard?.name\"\n @confirm=\"handleDeleteConfirm\"\n @cancel=\"showDeleteConfirm = false\"\n />\n</template>\n","<script setup lang=\"ts\">\nimport type { AiriCard } from '@proj-airi/stage-ui/stores/modules/airi-card'\n\nimport DOMPurify from 'dompurify'\n\nimport { useAiriCardStore } from '@proj-airi/stage-ui/stores/modules/airi-card'\nimport { Button } from '@proj-airi/ui'\nimport { storeToRefs } from 'pinia'\nimport {\n DialogContent,\n DialogOverlay,\n DialogPortal,\n DialogRoot,\n DialogTitle,\n} from 'reka-ui'\nimport { computed, ref } from 'vue'\nimport { useI18n } from 'vue-i18n'\n\nimport DeleteCardDialog from './DeleteCardDialog.vue'\n\ninterface Props {\n modelValue: boolean\n cardId: string\n}\n\nconst props = defineProps<Props>()\nconst emit = defineEmits<{\n (e: 'update:modelValue', value: boolean): void\n}>()\n\nconst { t } = useI18n()\nconst cardStore = useAiriCardStore()\nconst { removeCard } = cardStore\nconst { activeCardId } = storeToRefs(cardStore)\n\n// Get selected card data\nconst selectedCard = computed<AiriCard | undefined>(() => {\n if (!props.cardId)\n return undefined\n return cardStore.getCard(props.cardId)\n})\n\n// Get module settings\nconst moduleSettings = computed(() => {\n if (!selectedCard.value || !selectedCard.value.extensions?.airi?.modules) {\n return {\n consciousness: '',\n speech: '',\n voice: '',\n }\n }\n\n const airiExt = selectedCard.value.extensions.airi.modules\n return {\n consciousness: airiExt.consciousness?.model || '',\n speech: airiExt.speech?.model || '',\n voice: airiExt.speech?.voice_id || '',\n }\n})\n\n// Get character settings\nconst characterSettings = computed(() => {\n if (!selectedCard.value)\n return {}\n\n return {\n personality: selectedCard.value.personality,\n scenario: selectedCard.value.scenario,\n systemPrompt: selectedCard.value.systemPrompt,\n postHistoryInstructions: selectedCard.value.postHistoryInstructions,\n }\n})\n\n// Check if card is active\nconst isActive = computed(() => props.cardId === activeCardId.value)\n\n// Animation control for card activation\nconst isActivating = ref(false)\n\nfunction handleActivate() {\n isActivating.value = true\n setTimeout(() => {\n activeCardId.value = props.cardId\n isActivating.value = false\n }, 300)\n}\n\nfunction highlightTagToHtml(text: string) {\n return DOMPurify.sanitize(text?.replace(/\\{\\{(.*?)\\}\\}/g, '<span class=\"bg-primary-500/20 inline-block\">{{ $1 }}</span>').trim())\n}\n\n// Delete confirmation\nconst showDeleteConfirm = ref(false)\n\nfunction handleDeleteConfirm() {\n if (selectedCard.value) {\n removeCard(props.cardId)\n emit('update:modelValue', false)\n }\n showDeleteConfirm.value = false\n}\n\n// Tab type definition\ninterface Tab {\n id: string\n label: string\n icon: string\n}\n\n// Active tab ID state\nconst activeTabId = ref('')\n\n// Tabs for card details\nconst tabs = computed<Tab[]>(() => {\n const availableTabs: Tab[] = []\n\n // Description tab - always show if there's description\n if (selectedCard.value?.description) {\n availableTabs.push({\n id: 'description',\n label: t('settings.pages.card.description_label'),\n icon: 'i-solar:document-text-linear',\n })\n }\n\n // Notes tab - only show if there are creator notes\n if (selectedCard.value?.notes) {\n availableTabs.push({\n id: 'notes',\n label: t('settings.pages.card.creator_notes'),\n icon: 'i-solar:notes-linear',\n })\n }\n\n // Character tab - only show if there are character settings\n if (Object.values(characterSettings.value).some(value => !!value)) {\n availableTabs.push({\n id: 'character',\n label: t('settings.pages.card.character'),\n icon: 'i-solar:user-rounded-linear',\n })\n }\n\n // Modules tab - always show\n availableTabs.push({\n id: 'modules',\n label: t('settings.pages.card.modules'),\n icon: 'i-solar:tuning-square-linear',\n })\n\n return availableTabs\n})\n\n// Active tab state - set to first available tab by default\nconst activeTab = computed({\n get: () => {\n // If current active tab is not in available tabs, reset to first tab\n if (!tabs.value.find(tab => tab.id === activeTabId.value))\n return tabs.value[0]?.id || ''\n return activeTabId.value\n },\n set: (value: string) => {\n activeTabId.value = value\n },\n})\n</script>\n\n<template>\n <DialogRoot :open=\"modelValue\" @update:open=\"emit('update:modelValue', $event)\">\n <DialogPortal>\n <DialogOverlay class=\"fixed inset-0 z-100 bg-black/50 backdrop-blur-sm data-[state=closed]:animate-fadeOut data-[state=open]:animate-fadeIn\" />\n <DialogContent class=\"fixed left-1/2 top-1/2 z-100 m-0 max-h-[90vh] max-w-6xl w-[92vw] flex flex-col overflow-auto border border-neutral-200 rounded-xl bg-white p-5 shadow-xl 2xl:w-[60vw] lg:w-[80vw] md:w-[85vw] xl:w-[70vw] -translate-x-1/2 -translate-y-1/2 data-[state=closed]:animate-contentHide data-[state=open]:animate-contentShow dark:border-neutral-700 dark:bg-neutral-800 sm:p-6\">\n <div v-if=\"selectedCard\" class=\"w-full flex flex-col gap-5\">\n <!-- Header with status indicator -->\n <div flex=\"~ col\" gap-3>\n <div flex=\"~ row\" items-center justify-between>\n <div>\n <div flex=\"~ row\" items-center gap-2>\n <DialogTitle text-2xl font-normal class=\"from-primary-500 to-primary-400 bg-gradient-to-r bg-clip-text text-transparent\">\n {{ selectedCard.name }}\n </DialogTitle>\n <div v-if=\"isActive\" class=\"flex items-center gap-1 rounded-full bg-primary-100 px-2 py-0.5 text-xs text-primary-600 font-medium dark:bg-primary-900/40 dark:text-primary-400\">\n <div i-solar:check-circle-bold-duotone text-xs />\n {{ t('settings.pages.card.active_badge') }}\n </div>\n </div>\n <div mt-1 text-sm text-neutral-500 dark:text-neutral-400>\n v{{ selectedCard.version }}\n <template v-if=\"selectedCard.creator\">\n Β· {{ t('settings.pages.card.created_by') }} <span font-medium>{{ selectedCard.creator }}</span>\n </template>\n </div>\n </div>\n\n <!-- Action buttons -->\n <div flex=\"~ row\" gap-2>\n <!-- Activation button -->\n <Button\n variant=\"primary\"\n :icon=\"isActive ? 'i-solar:check-circle-bold-duotone' : 'i-solar:play-circle-broken'\"\n :label=\"isActive ? t('settings.pages.card.active') : t('settings.pages.card.activate')\"\n :disabled=\"isActive\"\n :class=\"{ 'animate-pulse': isActivating }\"\n @click=\"handleActivate\"\n />\n </div>\n </div>\n\n <!-- Card content tabs -->\n <div class=\"mt-4\">\n <div class=\"border-b border-neutral-200 dark:border-neutral-700\">\n <div class=\"flex justify-center -mb-px sm:justify-start space-x-1\">\n <button\n v-for=\"tab in tabs\"\n :key=\"tab.id\"\n class=\"px-4 py-2 text-sm font-medium\"\n :class=\"[\n activeTab === tab.id\n ? 'text-primary-600 dark:text-primary-400 border-b-2 border-primary-500 dark:border-primary-400'\n : 'text-neutral-500 dark:text-neutral-400 hover:text-neutral-700 dark:hover:text-neutral-300',\n ]\"\n @click=\"activeTab = tab.id\"\n >\n <div class=\"flex items-center gap-1\">\n <div :class=\"tab.icon\" />\n {{ tab.label }}\n </div>\n </button>\n </div>\n </div>\n </div>\n\n <!-- Creator notes -->\n <div v-if=\"activeTab === 'notes' && selectedCard.notes\">\n <div\n bg=\"white/60 dark:black/30\"\n border=\"~ neutral-200/50 dark:neutral-700/30\"\n max-h-60 overflow-auto whitespace-pre-line rounded-lg p-4 text-neutral-700 sm:max-h-80 dark:text-neutral-300 transition=\"all duration-200\"\n hover=\"bg-white/80 dark:bg-black/40\"\n v-html=\"highlightTagToHtml(selectedCard.notes)\"\n />\n </div>\n\n <!-- Description section -->\n <div v-if=\"activeTab === 'description' && selectedCard.description\">\n <div\n bg=\"white/60 dark:black/30\"\n max-h-60 overflow-auto whitespace-pre-line rounded-lg p-4 sm:max-h-80\n text=\"neutral-600 dark:neutral-300\"\n border=\"~ neutral-200/50 dark:neutral-700/30\"\n v-html=\"highlightTagToHtml(selectedCard.description)\"\n />\n </div>\n\n <!-- Character -->\n <div v-if=\"activeTab === 'character' && Object.values(characterSettings).some(value => !!value)\">\n <div flex=\"~ col\" max-h-60 gap-4 overflow-auto pr-1 sm:max-h-80>\n <template v-for=\"(value, key) in characterSettings\" :key=\"key\">\n <div v-if=\"value\" flex=\"~ col\" gap-2>\n <h2 text-lg text-neutral-500 font-medium dark:text-neutral-400>\n {{ t(`settings.pages.card.${key.toLowerCase()}`) }}\n </h2>\n <div\n bg=\"white/60 dark:black/30\"\n border=\"~ neutral-200/50 dark:neutral-700/30\"\n transition=\"all duration-200\"\n hover=\"bg-white/80 dark:bg-black/40\"\n max-h-none overflow-auto whitespace-pre-line rounded-lg p-3 text-neutral-700 dark:text-neutral-300\n v-html=\"highlightTagToHtml(value)\"\n />\n </div>\n </template>\n </div>\n </div>\n\n <!-- Modules -->\n <div v-if=\"activeTab === 'modules'\">\n <div grid=\"~ cols-1 sm:cols-3\" gap-4>\n <div\n flex=\"~ col\"\n bg=\"white/60 dark:black/30\"\n gap-1 rounded-lg p-3\n border=\"~ neutral-200/50 dark:neutral-700/30\"\n transition=\"all duration-200\"\n hover=\"bg-white/80 dark:bg-black/40\"\n >\n <span flex=\"~ row\" items-center gap-2 text-sm text-neutral-500 dark:text-neutral-400>\n <div i-lucide:ghost />\n {{ t('settings.pages.card.consciousness.model') }}\n </span>\n <div truncate font-medium>\n {{ moduleSettings.consciousness ?? 'default' }}\n </div>\n </div>\n\n <div\n flex=\"~ col\"\n bg=\"white/60 dark:black/30\"\n gap-2 rounded-lg p-3\n border=\"~ neutral-200/50 dark:neutral-700/30\"\n transition=\"all duration-200\"\n hover=\"bg-white/80 dark:bg-black/40\"\n >\n <span flex=\"~ row\" items-center gap-2 text-sm text-neutral-500 dark:text-neutral-400>\n <div i-lucide:mic />\n {{ t('settings.pages.card.speech.model') }}\n </span>\n <div truncate font-medium>\n {{ moduleSettings.speech ?? 'default' }}\n </div>\n </div>\n\n <div\n flex=\"~ col\"\n bg=\"white/60 dark:black/30\"\n gap-2 rounded-lg p-3\n border=\"~ neutral-200/50 dark:neutral-700/30\"\n transition=\"all duration-200\"\n hover=\"bg-white/80 dark:bg-black/40\"\n >\n <span flex=\"~ row\" items-center gap-2 text-sm text-neutral-500 dark:text-neutral-400>\n <div i-lucide:music />\n {{ t('settings.pages.card.speech.voice') }}\n </span>\n <div truncate font-medium>\n {{ moduleSettings.voice ?? 'default' }}\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div\n v-else\n bg=\"neutral-50/50 dark:neutral-900/50\"\n rounded-xl p-8 text-center\n border=\"~ neutral-200/50 dark:neutral-700/30\"\n shadow=\"sm\"\n >\n <div i-solar:card-search-broken mx-auto mb-3 text-6xl text-neutral-400 />\n {{ t('settings.pages.card.card_not_found') }}\n </div>\n </DialogContent>\n </DialogPortal>\n </DialogRoot>\n\n <!-- Delete confirmation dialog -->\n <DeleteCardDialog\n v-model=\"showDeleteConfirm\"\n :card-name=\"selectedCard?.name\"\n @confirm=\"handleDeleteConfirm\"\n @cancel=\"showDeleteConfirm = false\"\n />\n</template>\n"],"mappings":"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"}
 
1
+ {"version":3,"file":"CardDetailDialog-V9NckGo0.js","names":[],"sources":["../../../../packages/stage-pages/src/pages/settings/airi-card/components/CardDetailDialog.vue","../../../../packages/stage-pages/src/pages/settings/airi-card/components/CardDetailDialog.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { AiriCard } from '@proj-airi/stage-ui/stores/modules/airi-card'\n\nimport DOMPurify from 'dompurify'\n\nimport { useAiriCardStore } from '@proj-airi/stage-ui/stores/modules/airi-card'\nimport { Button } from '@proj-airi/ui'\nimport { storeToRefs } from 'pinia'\nimport {\n DialogContent,\n DialogOverlay,\n DialogPortal,\n DialogRoot,\n DialogTitle,\n} from 'reka-ui'\nimport { computed, ref } from 'vue'\nimport { useI18n } from 'vue-i18n'\n\nimport DeleteCardDialog from './DeleteCardDialog.vue'\n\ninterface Props {\n modelValue: boolean\n cardId: string\n}\n\nconst props = defineProps<Props>()\nconst emit = defineEmits<{\n (e: 'update:modelValue', value: boolean): void\n}>()\n\nconst { t } = useI18n()\nconst cardStore = useAiriCardStore()\nconst { removeCard } = cardStore\nconst { activeCardId } = storeToRefs(cardStore)\n\n// Get selected card data\nconst selectedCard = computed<AiriCard | undefined>(() => {\n if (!props.cardId)\n return undefined\n return cardStore.getCard(props.cardId)\n})\n\n// Get module settings\nconst moduleSettings = computed(() => {\n if (!selectedCard.value || !selectedCard.value.extensions?.airi?.modules) {\n return {\n consciousness: '',\n speech: '',\n voice: '',\n }\n }\n\n const airiExt = selectedCard.value.extensions.airi.modules\n return {\n consciousness: airiExt.consciousness?.model || '',\n speech: airiExt.speech?.model || '',\n voice: airiExt.speech?.voice_id || '',\n }\n})\n\n// Get character settings\nconst characterSettings = computed(() => {\n if (!selectedCard.value)\n return {}\n\n return {\n personality: selectedCard.value.personality,\n scenario: selectedCard.value.scenario,\n systemPrompt: selectedCard.value.systemPrompt,\n postHistoryInstructions: selectedCard.value.postHistoryInstructions,\n }\n})\n\n// Check if card is active\nconst isActive = computed(() => props.cardId === activeCardId.value)\n\n// Animation control for card activation\nconst isActivating = ref(false)\n\nfunction handleActivate() {\n isActivating.value = true\n setTimeout(() => {\n activeCardId.value = props.cardId\n isActivating.value = false\n }, 300)\n}\n\nfunction highlightTagToHtml(text: string) {\n return DOMPurify.sanitize(text?.replace(/\\{\\{(.*?)\\}\\}/g, '<span class=\"bg-primary-500/20 inline-block\">{{ $1 }}</span>').trim())\n}\n\n// Delete confirmation\nconst showDeleteConfirm = ref(false)\n\nfunction handleDeleteConfirm() {\n if (selectedCard.value) {\n removeCard(props.cardId)\n emit('update:modelValue', false)\n }\n showDeleteConfirm.value = false\n}\n\n// Tab type definition\ninterface Tab {\n id: string\n label: string\n icon: string\n}\n\n// Active tab ID state\nconst activeTabId = ref('')\n\n// Tabs for card details\nconst tabs = computed<Tab[]>(() => {\n const availableTabs: Tab[] = []\n\n // Description tab - always show if there's description\n if (selectedCard.value?.description) {\n availableTabs.push({\n id: 'description',\n label: t('settings.pages.card.description_label'),\n icon: 'i-solar:document-text-linear',\n })\n }\n\n // Notes tab - only show if there are creator notes\n if (selectedCard.value?.notes) {\n availableTabs.push({\n id: 'notes',\n label: t('settings.pages.card.creator_notes'),\n icon: 'i-solar:notes-linear',\n })\n }\n\n // Character tab - only show if there are character settings\n if (Object.values(characterSettings.value).some(value => !!value)) {\n availableTabs.push({\n id: 'character',\n label: t('settings.pages.card.character'),\n icon: 'i-solar:user-rounded-linear',\n })\n }\n\n // Modules tab - always show\n availableTabs.push({\n id: 'modules',\n label: t('settings.pages.card.modules'),\n icon: 'i-solar:tuning-square-linear',\n })\n\n return availableTabs\n})\n\n// Active tab state - set to first available tab by default\nconst activeTab = computed({\n get: () => {\n // If current active tab is not in available tabs, reset to first tab\n if (!tabs.value.find(tab => tab.id === activeTabId.value))\n return tabs.value[0]?.id || ''\n return activeTabId.value\n },\n set: (value: string) => {\n activeTabId.value = value\n },\n})\n</script>\n\n<template>\n <DialogRoot :open=\"modelValue\" @update:open=\"emit('update:modelValue', $event)\">\n <DialogPortal>\n <DialogOverlay class=\"fixed inset-0 z-100 bg-black/50 backdrop-blur-sm data-[state=closed]:animate-fadeOut data-[state=open]:animate-fadeIn\" />\n <DialogContent class=\"fixed left-1/2 top-1/2 z-100 m-0 max-h-[90vh] max-w-6xl w-[92vw] flex flex-col overflow-auto border border-neutral-200 rounded-xl bg-white p-5 shadow-xl 2xl:w-[60vw] lg:w-[80vw] md:w-[85vw] xl:w-[70vw] -translate-x-1/2 -translate-y-1/2 data-[state=closed]:animate-contentHide data-[state=open]:animate-contentShow dark:border-neutral-700 dark:bg-neutral-800 sm:p-6\">\n <div v-if=\"selectedCard\" class=\"w-full flex flex-col gap-5\">\n <!-- Header with status indicator -->\n <div flex=\"~ col\" gap-3>\n <div flex=\"~ row\" items-center justify-between>\n <div>\n <div flex=\"~ row\" items-center gap-2>\n <DialogTitle text-2xl font-normal class=\"from-primary-500 to-primary-400 bg-gradient-to-r bg-clip-text text-transparent\">\n {{ selectedCard.name }}\n </DialogTitle>\n <div v-if=\"isActive\" class=\"flex items-center gap-1 rounded-full bg-primary-100 px-2 py-0.5 text-xs text-primary-600 font-medium dark:bg-primary-900/40 dark:text-primary-400\">\n <div i-solar:check-circle-bold-duotone text-xs />\n {{ t('settings.pages.card.active_badge') }}\n </div>\n </div>\n <div mt-1 text-sm text-neutral-500 dark:text-neutral-400>\n v{{ selectedCard.version }}\n <template v-if=\"selectedCard.creator\">\n Β· {{ t('settings.pages.card.created_by') }} <span font-medium>{{ selectedCard.creator }}</span>\n </template>\n </div>\n </div>\n\n <!-- Action buttons -->\n <div flex=\"~ row\" gap-2>\n <!-- Activation button -->\n <Button\n variant=\"primary\"\n :icon=\"isActive ? 'i-solar:check-circle-bold-duotone' : 'i-solar:play-circle-broken'\"\n :label=\"isActive ? t('settings.pages.card.active') : t('settings.pages.card.activate')\"\n :disabled=\"isActive\"\n :class=\"{ 'animate-pulse': isActivating }\"\n @click=\"handleActivate\"\n />\n </div>\n </div>\n\n <!-- Card content tabs -->\n <div class=\"mt-4\">\n <div class=\"border-b border-neutral-200 dark:border-neutral-700\">\n <div class=\"flex justify-center -mb-px sm:justify-start space-x-1\">\n <button\n v-for=\"tab in tabs\"\n :key=\"tab.id\"\n class=\"px-4 py-2 text-sm font-medium\"\n :class=\"[\n activeTab === tab.id\n ? 'text-primary-600 dark:text-primary-400 border-b-2 border-primary-500 dark:border-primary-400'\n : 'text-neutral-500 dark:text-neutral-400 hover:text-neutral-700 dark:hover:text-neutral-300',\n ]\"\n @click=\"activeTab = tab.id\"\n >\n <div class=\"flex items-center gap-1\">\n <div :class=\"tab.icon\" />\n {{ tab.label }}\n </div>\n </button>\n </div>\n </div>\n </div>\n\n <!-- Creator notes -->\n <div v-if=\"activeTab === 'notes' && selectedCard.notes\">\n <div\n bg=\"white/60 dark:black/30\"\n border=\"~ neutral-200/50 dark:neutral-700/30\"\n max-h-60 overflow-auto whitespace-pre-line rounded-lg p-4 text-neutral-700 sm:max-h-80 dark:text-neutral-300 transition=\"all duration-200\"\n hover=\"bg-white/80 dark:bg-black/40\"\n v-html=\"highlightTagToHtml(selectedCard.notes)\"\n />\n </div>\n\n <!-- Description section -->\n <div v-if=\"activeTab === 'description' && selectedCard.description\">\n <div\n bg=\"white/60 dark:black/30\"\n max-h-60 overflow-auto whitespace-pre-line rounded-lg p-4 sm:max-h-80\n text=\"neutral-600 dark:neutral-300\"\n border=\"~ neutral-200/50 dark:neutral-700/30\"\n v-html=\"highlightTagToHtml(selectedCard.description)\"\n />\n </div>\n\n <!-- Character -->\n <div v-if=\"activeTab === 'character' && Object.values(characterSettings).some(value => !!value)\">\n <div flex=\"~ col\" max-h-60 gap-4 overflow-auto pr-1 sm:max-h-80>\n <template v-for=\"(value, key) in characterSettings\" :key=\"key\">\n <div v-if=\"value\" flex=\"~ col\" gap-2>\n <h2 text-lg text-neutral-500 font-medium dark:text-neutral-400>\n {{ t(`settings.pages.card.${key.toLowerCase()}`) }}\n </h2>\n <div\n bg=\"white/60 dark:black/30\"\n border=\"~ neutral-200/50 dark:neutral-700/30\"\n transition=\"all duration-200\"\n hover=\"bg-white/80 dark:bg-black/40\"\n max-h-none overflow-auto whitespace-pre-line rounded-lg p-3 text-neutral-700 dark:text-neutral-300\n v-html=\"highlightTagToHtml(value)\"\n />\n </div>\n </template>\n </div>\n </div>\n\n <!-- Modules -->\n <div v-if=\"activeTab === 'modules'\">\n <div grid=\"~ cols-1 sm:cols-3\" gap-4>\n <div\n flex=\"~ col\"\n bg=\"white/60 dark:black/30\"\n gap-1 rounded-lg p-3\n border=\"~ neutral-200/50 dark:neutral-700/30\"\n transition=\"all duration-200\"\n hover=\"bg-white/80 dark:bg-black/40\"\n >\n <span flex=\"~ row\" items-center gap-2 text-sm text-neutral-500 dark:text-neutral-400>\n <div i-lucide:ghost />\n {{ t('settings.pages.card.consciousness.model') }}\n </span>\n <div truncate font-medium>\n {{ moduleSettings.consciousness ?? 'default' }}\n </div>\n </div>\n\n <div\n flex=\"~ col\"\n bg=\"white/60 dark:black/30\"\n gap-2 rounded-lg p-3\n border=\"~ neutral-200/50 dark:neutral-700/30\"\n transition=\"all duration-200\"\n hover=\"bg-white/80 dark:bg-black/40\"\n >\n <span flex=\"~ row\" items-center gap-2 text-sm text-neutral-500 dark:text-neutral-400>\n <div i-lucide:mic />\n {{ t('settings.pages.card.speech.model') }}\n </span>\n <div truncate font-medium>\n {{ moduleSettings.speech ?? 'default' }}\n </div>\n </div>\n\n <div\n flex=\"~ col\"\n bg=\"white/60 dark:black/30\"\n gap-2 rounded-lg p-3\n border=\"~ neutral-200/50 dark:neutral-700/30\"\n transition=\"all duration-200\"\n hover=\"bg-white/80 dark:bg-black/40\"\n >\n <span flex=\"~ row\" items-center gap-2 text-sm text-neutral-500 dark:text-neutral-400>\n <div i-lucide:music />\n {{ t('settings.pages.card.speech.voice') }}\n </span>\n <div truncate font-medium>\n {{ moduleSettings.voice ?? 'default' }}\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div\n v-else\n bg=\"neutral-50/50 dark:neutral-900/50\"\n rounded-xl p-8 text-center\n border=\"~ neutral-200/50 dark:neutral-700/30\"\n shadow=\"sm\"\n >\n <div i-solar:card-search-broken mx-auto mb-3 text-6xl text-neutral-400 />\n {{ t('settings.pages.card.card_not_found') }}\n </div>\n </DialogContent>\n </DialogPortal>\n </DialogRoot>\n\n <!-- Delete confirmation dialog -->\n <DeleteCardDialog\n v-model=\"showDeleteConfirm\"\n :card-name=\"selectedCard?.name\"\n @confirm=\"handleDeleteConfirm\"\n @cancel=\"showDeleteConfirm = false\"\n />\n</template>\n","<script setup lang=\"ts\">\nimport type { AiriCard } from '@proj-airi/stage-ui/stores/modules/airi-card'\n\nimport DOMPurify from 'dompurify'\n\nimport { useAiriCardStore } from '@proj-airi/stage-ui/stores/modules/airi-card'\nimport { Button } from '@proj-airi/ui'\nimport { storeToRefs } from 'pinia'\nimport {\n DialogContent,\n DialogOverlay,\n DialogPortal,\n DialogRoot,\n DialogTitle,\n} from 'reka-ui'\nimport { computed, ref } from 'vue'\nimport { useI18n } from 'vue-i18n'\n\nimport DeleteCardDialog from './DeleteCardDialog.vue'\n\ninterface Props {\n modelValue: boolean\n cardId: string\n}\n\nconst props = defineProps<Props>()\nconst emit = defineEmits<{\n (e: 'update:modelValue', value: boolean): void\n}>()\n\nconst { t } = useI18n()\nconst cardStore = useAiriCardStore()\nconst { removeCard } = cardStore\nconst { activeCardId } = storeToRefs(cardStore)\n\n// Get selected card data\nconst selectedCard = computed<AiriCard | undefined>(() => {\n if (!props.cardId)\n return undefined\n return cardStore.getCard(props.cardId)\n})\n\n// Get module settings\nconst moduleSettings = computed(() => {\n if (!selectedCard.value || !selectedCard.value.extensions?.airi?.modules) {\n return {\n consciousness: '',\n speech: '',\n voice: '',\n }\n }\n\n const airiExt = selectedCard.value.extensions.airi.modules\n return {\n consciousness: airiExt.consciousness?.model || '',\n speech: airiExt.speech?.model || '',\n voice: airiExt.speech?.voice_id || '',\n }\n})\n\n// Get character settings\nconst characterSettings = computed(() => {\n if (!selectedCard.value)\n return {}\n\n return {\n personality: selectedCard.value.personality,\n scenario: selectedCard.value.scenario,\n systemPrompt: selectedCard.value.systemPrompt,\n postHistoryInstructions: selectedCard.value.postHistoryInstructions,\n }\n})\n\n// Check if card is active\nconst isActive = computed(() => props.cardId === activeCardId.value)\n\n// Animation control for card activation\nconst isActivating = ref(false)\n\nfunction handleActivate() {\n isActivating.value = true\n setTimeout(() => {\n activeCardId.value = props.cardId\n isActivating.value = false\n }, 300)\n}\n\nfunction highlightTagToHtml(text: string) {\n return DOMPurify.sanitize(text?.replace(/\\{\\{(.*?)\\}\\}/g, '<span class=\"bg-primary-500/20 inline-block\">{{ $1 }}</span>').trim())\n}\n\n// Delete confirmation\nconst showDeleteConfirm = ref(false)\n\nfunction handleDeleteConfirm() {\n if (selectedCard.value) {\n removeCard(props.cardId)\n emit('update:modelValue', false)\n }\n showDeleteConfirm.value = false\n}\n\n// Tab type definition\ninterface Tab {\n id: string\n label: string\n icon: string\n}\n\n// Active tab ID state\nconst activeTabId = ref('')\n\n// Tabs for card details\nconst tabs = computed<Tab[]>(() => {\n const availableTabs: Tab[] = []\n\n // Description tab - always show if there's description\n if (selectedCard.value?.description) {\n availableTabs.push({\n id: 'description',\n label: t('settings.pages.card.description_label'),\n icon: 'i-solar:document-text-linear',\n })\n }\n\n // Notes tab - only show if there are creator notes\n if (selectedCard.value?.notes) {\n availableTabs.push({\n id: 'notes',\n label: t('settings.pages.card.creator_notes'),\n icon: 'i-solar:notes-linear',\n })\n }\n\n // Character tab - only show if there are character settings\n if (Object.values(characterSettings.value).some(value => !!value)) {\n availableTabs.push({\n id: 'character',\n label: t('settings.pages.card.character'),\n icon: 'i-solar:user-rounded-linear',\n })\n }\n\n // Modules tab - always show\n availableTabs.push({\n id: 'modules',\n label: t('settings.pages.card.modules'),\n icon: 'i-solar:tuning-square-linear',\n })\n\n return availableTabs\n})\n\n// Active tab state - set to first available tab by default\nconst activeTab = computed({\n get: () => {\n // If current active tab is not in available tabs, reset to first tab\n if (!tabs.value.find(tab => tab.id === activeTabId.value))\n return tabs.value[0]?.id || ''\n return activeTabId.value\n },\n set: (value: string) => {\n activeTabId.value = value\n },\n})\n</script>\n\n<template>\n <DialogRoot :open=\"modelValue\" @update:open=\"emit('update:modelValue', $event)\">\n <DialogPortal>\n <DialogOverlay class=\"fixed inset-0 z-100 bg-black/50 backdrop-blur-sm data-[state=closed]:animate-fadeOut data-[state=open]:animate-fadeIn\" />\n <DialogContent class=\"fixed left-1/2 top-1/2 z-100 m-0 max-h-[90vh] max-w-6xl w-[92vw] flex flex-col overflow-auto border border-neutral-200 rounded-xl bg-white p-5 shadow-xl 2xl:w-[60vw] lg:w-[80vw] md:w-[85vw] xl:w-[70vw] -translate-x-1/2 -translate-y-1/2 data-[state=closed]:animate-contentHide data-[state=open]:animate-contentShow dark:border-neutral-700 dark:bg-neutral-800 sm:p-6\">\n <div v-if=\"selectedCard\" class=\"w-full flex flex-col gap-5\">\n <!-- Header with status indicator -->\n <div flex=\"~ col\" gap-3>\n <div flex=\"~ row\" items-center justify-between>\n <div>\n <div flex=\"~ row\" items-center gap-2>\n <DialogTitle text-2xl font-normal class=\"from-primary-500 to-primary-400 bg-gradient-to-r bg-clip-text text-transparent\">\n {{ selectedCard.name }}\n </DialogTitle>\n <div v-if=\"isActive\" class=\"flex items-center gap-1 rounded-full bg-primary-100 px-2 py-0.5 text-xs text-primary-600 font-medium dark:bg-primary-900/40 dark:text-primary-400\">\n <div i-solar:check-circle-bold-duotone text-xs />\n {{ t('settings.pages.card.active_badge') }}\n </div>\n </div>\n <div mt-1 text-sm text-neutral-500 dark:text-neutral-400>\n v{{ selectedCard.version }}\n <template v-if=\"selectedCard.creator\">\n Β· {{ t('settings.pages.card.created_by') }} <span font-medium>{{ selectedCard.creator }}</span>\n </template>\n </div>\n </div>\n\n <!-- Action buttons -->\n <div flex=\"~ row\" gap-2>\n <!-- Activation button -->\n <Button\n variant=\"primary\"\n :icon=\"isActive ? 'i-solar:check-circle-bold-duotone' : 'i-solar:play-circle-broken'\"\n :label=\"isActive ? t('settings.pages.card.active') : t('settings.pages.card.activate')\"\n :disabled=\"isActive\"\n :class=\"{ 'animate-pulse': isActivating }\"\n @click=\"handleActivate\"\n />\n </div>\n </div>\n\n <!-- Card content tabs -->\n <div class=\"mt-4\">\n <div class=\"border-b border-neutral-200 dark:border-neutral-700\">\n <div class=\"flex justify-center -mb-px sm:justify-start space-x-1\">\n <button\n v-for=\"tab in tabs\"\n :key=\"tab.id\"\n class=\"px-4 py-2 text-sm font-medium\"\n :class=\"[\n activeTab === tab.id\n ? 'text-primary-600 dark:text-primary-400 border-b-2 border-primary-500 dark:border-primary-400'\n : 'text-neutral-500 dark:text-neutral-400 hover:text-neutral-700 dark:hover:text-neutral-300',\n ]\"\n @click=\"activeTab = tab.id\"\n >\n <div class=\"flex items-center gap-1\">\n <div :class=\"tab.icon\" />\n {{ tab.label }}\n </div>\n </button>\n </div>\n </div>\n </div>\n\n <!-- Creator notes -->\n <div v-if=\"activeTab === 'notes' && selectedCard.notes\">\n <div\n bg=\"white/60 dark:black/30\"\n border=\"~ neutral-200/50 dark:neutral-700/30\"\n max-h-60 overflow-auto whitespace-pre-line rounded-lg p-4 text-neutral-700 sm:max-h-80 dark:text-neutral-300 transition=\"all duration-200\"\n hover=\"bg-white/80 dark:bg-black/40\"\n v-html=\"highlightTagToHtml(selectedCard.notes)\"\n />\n </div>\n\n <!-- Description section -->\n <div v-if=\"activeTab === 'description' && selectedCard.description\">\n <div\n bg=\"white/60 dark:black/30\"\n max-h-60 overflow-auto whitespace-pre-line rounded-lg p-4 sm:max-h-80\n text=\"neutral-600 dark:neutral-300\"\n border=\"~ neutral-200/50 dark:neutral-700/30\"\n v-html=\"highlightTagToHtml(selectedCard.description)\"\n />\n </div>\n\n <!-- Character -->\n <div v-if=\"activeTab === 'character' && Object.values(characterSettings).some(value => !!value)\">\n <div flex=\"~ col\" max-h-60 gap-4 overflow-auto pr-1 sm:max-h-80>\n <template v-for=\"(value, key) in characterSettings\" :key=\"key\">\n <div v-if=\"value\" flex=\"~ col\" gap-2>\n <h2 text-lg text-neutral-500 font-medium dark:text-neutral-400>\n {{ t(`settings.pages.card.${key.toLowerCase()}`) }}\n </h2>\n <div\n bg=\"white/60 dark:black/30\"\n border=\"~ neutral-200/50 dark:neutral-700/30\"\n transition=\"all duration-200\"\n hover=\"bg-white/80 dark:bg-black/40\"\n max-h-none overflow-auto whitespace-pre-line rounded-lg p-3 text-neutral-700 dark:text-neutral-300\n v-html=\"highlightTagToHtml(value)\"\n />\n </div>\n </template>\n </div>\n </div>\n\n <!-- Modules -->\n <div v-if=\"activeTab === 'modules'\">\n <div grid=\"~ cols-1 sm:cols-3\" gap-4>\n <div\n flex=\"~ col\"\n bg=\"white/60 dark:black/30\"\n gap-1 rounded-lg p-3\n border=\"~ neutral-200/50 dark:neutral-700/30\"\n transition=\"all duration-200\"\n hover=\"bg-white/80 dark:bg-black/40\"\n >\n <span flex=\"~ row\" items-center gap-2 text-sm text-neutral-500 dark:text-neutral-400>\n <div i-lucide:ghost />\n {{ t('settings.pages.card.consciousness.model') }}\n </span>\n <div truncate font-medium>\n {{ moduleSettings.consciousness ?? 'default' }}\n </div>\n </div>\n\n <div\n flex=\"~ col\"\n bg=\"white/60 dark:black/30\"\n gap-2 rounded-lg p-3\n border=\"~ neutral-200/50 dark:neutral-700/30\"\n transition=\"all duration-200\"\n hover=\"bg-white/80 dark:bg-black/40\"\n >\n <span flex=\"~ row\" items-center gap-2 text-sm text-neutral-500 dark:text-neutral-400>\n <div i-lucide:mic />\n {{ t('settings.pages.card.speech.model') }}\n </span>\n <div truncate font-medium>\n {{ moduleSettings.speech ?? 'default' }}\n </div>\n </div>\n\n <div\n flex=\"~ col\"\n bg=\"white/60 dark:black/30\"\n gap-2 rounded-lg p-3\n border=\"~ neutral-200/50 dark:neutral-700/30\"\n transition=\"all duration-200\"\n hover=\"bg-white/80 dark:bg-black/40\"\n >\n <span flex=\"~ row\" items-center gap-2 text-sm text-neutral-500 dark:text-neutral-400>\n <div i-lucide:music />\n {{ t('settings.pages.card.speech.voice') }}\n </span>\n <div truncate font-medium>\n {{ moduleSettings.voice ?? 'default' }}\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div\n v-else\n bg=\"neutral-50/50 dark:neutral-900/50\"\n rounded-xl p-8 text-center\n border=\"~ neutral-200/50 dark:neutral-700/30\"\n shadow=\"sm\"\n >\n <div i-solar:card-search-broken mx-auto mb-3 text-6xl text-neutral-400 />\n {{ t('settings.pages.card.card_not_found') }}\n </div>\n </DialogContent>\n </DialogPortal>\n </DialogRoot>\n\n <!-- Delete confirmation dialog -->\n <DeleteCardDialog\n v-model=\"showDeleteConfirm\"\n :card-name=\"selectedCard?.name\"\n @confirm=\"handleDeleteConfirm\"\n @cancel=\"showDeleteConfirm = false\"\n />\n</template>\n"],"mappings":"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"}
assets/CardListItem-BNMTajYk.js ADDED
@@ -0,0 +1 @@
 
 
1
+ import"./settings-HpNQcYmx.js";import"./src-CuCahbAr.js";import"./widgets-DKs3SdKb.js";import"./components-C_14MOg3.js";import"./environment-B9MED9Mn.js";import"./constants-CJcJrBhf.js";import"./speech-CZOrJx0w.js";import"./purify.es-Cr7Ra6ys.js";import"./queues-C4nZtLkC.js";import"./resettable--O0wHmRQ.js";import"./libs-D0vU3suT.js";import"./stream-transcription-BWzrFso9.js";import"./browser-COTffbCo.js";import"./transformers.web-BIjUcao2.js";import"./__vite-browser-external-OxRfFa9r.js";import{t as e}from"./CardListItem-Eda9_o7D.js";export{e as default};
assets/CardListItem-CNFq_DdR.js DELETED
@@ -1 +0,0 @@
1
- import"./settings-C_Rz593l.js";import"./src-B0kTFhyw.js";import"./widgets-Dd-ctSsI.js";import"./resettable-BKThqTUq.js";import"./components-jbMt89mt.js";import"./environment-B9MED9Mn.js";import"./constants-CJcJrBhf.js";import"./speech-BBHhUAo6.js";import"./purify.es-Cr7Ra6ys.js";import"./queues-DWKRFHm2.js";import"./libs-_Zz8dFxa.js";import"./stream-transcription-DKUM7eVP.js";import"./browser-K6qgZgn-.js";import"./transformers.web-CYvGV_r9.js";import"./__vite-browser-external-BzqcraBV.js";import{t as e}from"./CardListItem-mpMlnL8g.js";export{e as default};
 
 
assets/{CardListItem-mpMlnL8g.js β†’ CardListItem-Eda9_o7D.js} RENAMED
@@ -1,2 +1,2 @@
1
- import{A as e,C as t,K as n,Pt as r,S as i,f as a,jt as o,kt as s,lt as c,w as l,x as u}from"./vue.runtime.esm-bundler-_ZPRHVd_.js";import{Y as d}from"./components-jbMt89mt.js";var f={relative:``,flex:`~ col 1`,"justify-between":``,"gap-3":``,"overflow-hidden":``,"rounded-lg":``,bg:`white dark:neutral-900`,"p-5":``,transition:`all ease-in-out duration-400`,after:`content-empty absolute inset-0 z--2 w-full h-full bg-dotted-[neutral-200/80] bg-size-10px mask-image-[linear-gradient(165deg,white_30%,transparent_50%)] transition-all duration-400 ease-in-out`,hover:`after:bg-dotted-[primary-300/50] dark:after:bg-dotted-[primary-200/20] text-primary-600/80 dark:text-primary-300/80`},p={"z-1":``,flex:``,"items-start":``,"justify-between":``,"gap-2":``},m={"flex-1":``,truncate:``,"text-lg":``,"font-normal":``},h={key:0,"shrink-0":``,"rounded-md":``,"p-1":``,bg:`primary-100 dark:primary-900/40`,text:`primary-600 dark:primary-400`},g={key:0,"line-clamp-3":``,"min-h-40px":``,"flex-1":``,"text-sm":``,text:`neutral-500 dark:neutral-400`},_={"z-1":``,flex:``,"items-center":``,"justify-between":``,"text-xs":``,text:`neutral-500 dark:neutral-400`},v={flex:``,"items-center":``,"gap-1.5":``},y={flex:``,"items-center":``,"gap-0.5":``},b={flex:``,"items-center":``,"gap-0.5":``},x={flex:``,"items-center":``,"justify-end":``,"px-2":``,"py-1.5":``},S=[`disabled`],C=e({__name:`CardListItem`,props:{id:{},name:{},description:{},isActive:{type:Boolean},isSelected:{type:Boolean},version:{},consciousnessModel:{},voiceModel:{}},emits:[`select`,`activate`,`delete`],setup(e,{emit:C}){let w=C;return(C,T)=>(n(),i(s(d),{relative:``,"min-h-120px":``,flex:`~ col`,"cursor-pointer":``,"overflow-hidden":``,"rounded-xl":``,class:o([e.isSelected?`border-2 border-primary-400 dark:border-primary-600`:`border-2 border-neutral-100 dark:border-neutral-800/25`]),bg:`neutral-200/50 dark:neutral-800/50`,"drop-shadow":`none hover:[0px_4px_4px_rgba(220,220,220,0.4)] active:[0px_0px_0px_rgba(220,220,220,0.25)] dark:hover:none`,transition:`all ease-in-out duration-400`,before:`content-empty absolute inset-0 z-0 w-25% h-full transition-all duration-400 ease-in-out bg-gradient-to-r from-primary-500/0 to-primary-500/0 dark:from-primary-400/0 dark:to-primary-400/0 mask-image-[linear-gradient(120deg,white_100%)] opacity-0`,hover:`before:opacity-100 before:bg-gradient-to-r before:from-primary-500/20 before:via-primary-500/10 before:to-transparent before:dark:from-primary-400/20 before:dark:via-primary-400/10 before:dark:to-transparent`,onClick:T[2]||=e=>w(`select`)},{default:c(()=>[u(`div`,f,[u(`div`,p,[u(`h3`,m,r(e.name),1),e.isActive?(n(),l(`div`,h,[...T[3]||=[u(`div`,{"i-solar:check-circle-bold-duotone":``,"text-sm":``},null,-1)]])):t(``,!0)]),e.description?(n(),l(`p`,g,r(e.description),1)):t(``,!0),u(`div`,_,[u(`div`,null,`v`+r(e.version),1),u(`div`,v,[u(`div`,y,[T[4]||=u(`div`,{"i-lucide:ghost":``,"text-xs":``},null,-1),u(`span`,null,r(e.consciousnessModel),1)]),u(`div`,b,[T[5]||=u(`div`,{"i-lucide:mic":``,"text-xs":``},null,-1),u(`span`,null,r(e.voiceModel),1)])])])]),u(`div`,x,[u(`button`,{"rounded-lg":``,"p-1.5":``,"transition-colors":``,hover:`bg-neutral-200 dark:bg-neutral-700/50`,disabled:e.isActive,onClick:T[0]||=a(e=>w(`activate`),[`stop`])},[u(`div`,{class:o([e.isActive?`i-solar:check-circle-bold-duotone text-primary-500 dark:text-primary-400`:`i-solar:play-circle-broken text-neutral-500 dark:text-neutral-400`])},null,2)],8,S),e.id===`default`?t(``,!0):(n(),l(`button`,{key:0,"rounded-lg":``,"p-1.5":``,"transition-colors":``,hover:`bg-neutral-200 dark:bg-neutral-700/50`,onClick:T[1]||=a(e=>w(`delete`),[`stop`])},[...T[6]||=[u(`div`,{"i-solar:trash-bin-trash-linear":``,text:`neutral-500 dark:neutral-400`},null,-1)]]))])]),_:1},8,[`class`]))}});export{C as t};
2
- //# sourceMappingURL=CardListItem-mpMlnL8g.js.map
 
1
+ import{A as e,C as t,K as n,Pt as r,S as i,f as a,jt as o,kt as s,lt as c,w as l,x as u}from"./vue.runtime.esm-bundler-_ZPRHVd_.js";import{Y as d}from"./components-C_14MOg3.js";var f={relative:``,flex:`~ col 1`,"justify-between":``,"gap-3":``,"overflow-hidden":``,"rounded-lg":``,bg:`white dark:neutral-900`,"p-5":``,transition:`all ease-in-out duration-400`,after:`content-empty absolute inset-0 z--2 w-full h-full bg-dotted-[neutral-200/80] bg-size-10px mask-image-[linear-gradient(165deg,white_30%,transparent_50%)] transition-all duration-400 ease-in-out`,hover:`after:bg-dotted-[primary-300/50] dark:after:bg-dotted-[primary-200/20] text-primary-600/80 dark:text-primary-300/80`},p={"z-1":``,flex:``,"items-start":``,"justify-between":``,"gap-2":``},m={"flex-1":``,truncate:``,"text-lg":``,"font-normal":``},h={key:0,"shrink-0":``,"rounded-md":``,"p-1":``,bg:`primary-100 dark:primary-900/40`,text:`primary-600 dark:primary-400`},g={key:0,"line-clamp-3":``,"min-h-40px":``,"flex-1":``,"text-sm":``,text:`neutral-500 dark:neutral-400`},_={"z-1":``,flex:``,"items-center":``,"justify-between":``,"text-xs":``,text:`neutral-500 dark:neutral-400`},v={flex:``,"items-center":``,"gap-1.5":``},y={flex:``,"items-center":``,"gap-0.5":``},b={flex:``,"items-center":``,"gap-0.5":``},x={flex:``,"items-center":``,"justify-end":``,"px-2":``,"py-1.5":``},S=[`disabled`],C=e({__name:`CardListItem`,props:{id:{},name:{},description:{},isActive:{type:Boolean},isSelected:{type:Boolean},version:{},consciousnessModel:{},voiceModel:{}},emits:[`select`,`activate`,`delete`],setup(e,{emit:C}){let w=C;return(C,T)=>(n(),i(s(d),{relative:``,"min-h-120px":``,flex:`~ col`,"cursor-pointer":``,"overflow-hidden":``,"rounded-xl":``,class:o([e.isSelected?`border-2 border-primary-400 dark:border-primary-600`:`border-2 border-neutral-100 dark:border-neutral-800/25`]),bg:`neutral-200/50 dark:neutral-800/50`,"drop-shadow":`none hover:[0px_4px_4px_rgba(220,220,220,0.4)] active:[0px_0px_0px_rgba(220,220,220,0.25)] dark:hover:none`,transition:`all ease-in-out duration-400`,before:`content-empty absolute inset-0 z-0 w-25% h-full transition-all duration-400 ease-in-out bg-gradient-to-r from-primary-500/0 to-primary-500/0 dark:from-primary-400/0 dark:to-primary-400/0 mask-image-[linear-gradient(120deg,white_100%)] opacity-0`,hover:`before:opacity-100 before:bg-gradient-to-r before:from-primary-500/20 before:via-primary-500/10 before:to-transparent before:dark:from-primary-400/20 before:dark:via-primary-400/10 before:dark:to-transparent`,onClick:T[2]||=e=>w(`select`)},{default:c(()=>[u(`div`,f,[u(`div`,p,[u(`h3`,m,r(e.name),1),e.isActive?(n(),l(`div`,h,[...T[3]||=[u(`div`,{"i-solar:check-circle-bold-duotone":``,"text-sm":``},null,-1)]])):t(``,!0)]),e.description?(n(),l(`p`,g,r(e.description),1)):t(``,!0),u(`div`,_,[u(`div`,null,`v`+r(e.version),1),u(`div`,v,[u(`div`,y,[T[4]||=u(`div`,{"i-lucide:ghost":``,"text-xs":``},null,-1),u(`span`,null,r(e.consciousnessModel),1)]),u(`div`,b,[T[5]||=u(`div`,{"i-lucide:mic":``,"text-xs":``},null,-1),u(`span`,null,r(e.voiceModel),1)])])])]),u(`div`,x,[u(`button`,{"rounded-lg":``,"p-1.5":``,"transition-colors":``,hover:`bg-neutral-200 dark:bg-neutral-700/50`,disabled:e.isActive,onClick:T[0]||=a(e=>w(`activate`),[`stop`])},[u(`div`,{class:o([e.isActive?`i-solar:check-circle-bold-duotone text-primary-500 dark:text-primary-400`:`i-solar:play-circle-broken text-neutral-500 dark:text-neutral-400`])},null,2)],8,S),e.id===`default`?t(``,!0):(n(),l(`button`,{key:0,"rounded-lg":``,"p-1.5":``,"transition-colors":``,hover:`bg-neutral-200 dark:bg-neutral-700/50`,onClick:T[1]||=a(e=>w(`delete`),[`stop`])},[...T[6]||=[u(`div`,{"i-solar:trash-bin-trash-linear":``,text:`neutral-500 dark:neutral-400`},null,-1)]]))])]),_:1},8,[`class`]))}});export{C as t};
2
+ //# sourceMappingURL=CardListItem-Eda9_o7D.js.map
assets/{CardListItem-mpMlnL8g.js.map β†’ CardListItem-Eda9_o7D.js.map} RENAMED
@@ -1 +1 @@
1
- {"version":3,"file":"CardListItem-mpMlnL8g.js","names":[],"sources":["../../../../packages/stage-pages/src/pages/settings/airi-card/components/CardListItem.vue","../../../../packages/stage-pages/src/pages/settings/airi-card/components/CardListItem.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { CursorFloating } from '@proj-airi/stage-ui/components'\n\ninterface Props {\n id: string\n name: string\n description?: string\n isActive: boolean\n isSelected: boolean\n version: string\n consciousnessModel: string\n voiceModel: string\n}\n\ndefineProps<Props>()\nconst emit = defineEmits<{\n (e: 'select'): void\n (e: 'activate'): void\n (e: 'delete'): void\n}>()\n</script>\n\n<template>\n <CursorFloating\n relative min-h-120px flex=\"~ col\" cursor-pointer overflow-hidden rounded-xl\n :class=\"[\n isSelected\n ? 'border-2 border-primary-400 dark:border-primary-600'\n : 'border-2 border-neutral-100 dark:border-neutral-800/25',\n ]\"\n bg=\"neutral-200/50 dark:neutral-800/50\"\n drop-shadow=\"none hover:[0px_4px_4px_rgba(220,220,220,0.4)] active:[0px_0px_0px_rgba(220,220,220,0.25)] dark:hover:none\"\n transition=\"all ease-in-out duration-400\"\n before=\"content-empty absolute inset-0 z-0 w-25% h-full transition-all duration-400 ease-in-out bg-gradient-to-r from-primary-500/0 to-primary-500/0 dark:from-primary-400/0 dark:to-primary-400/0 mask-image-[linear-gradient(120deg,white_100%)] opacity-0\"\n hover=\"before:opacity-100 before:bg-gradient-to-r before:from-primary-500/20 before:via-primary-500/10 before:to-transparent before:dark:from-primary-400/20 before:dark:via-primary-400/10 before:dark:to-transparent\"\n @click=\"emit('select')\"\n >\n <!-- Card content -->\n <div\n relative flex=\"~ col 1\" justify-between gap-3 overflow-hidden rounded-lg bg=\"white dark:neutral-900\" p-5\n transition=\"all ease-in-out duration-400\"\n after=\"content-empty absolute inset-0 z--2 w-full h-full bg-dotted-[neutral-200/80] bg-size-10px mask-image-[linear-gradient(165deg,white_30%,transparent_50%)] transition-all duration-400 ease-in-out\"\n hover=\"after:bg-dotted-[primary-300/50] dark:after:bg-dotted-[primary-200/20] text-primary-600/80 dark:text-primary-300/80\"\n >\n <!-- Card header (name and badge) -->\n <div z-1 flex items-start justify-between gap-2>\n <h3 flex-1 truncate text-lg font-normal>\n {{ name }}\n </h3>\n <div v-if=\"isActive\" shrink-0 rounded-md p-1 bg=\"primary-100 dark:primary-900/40\" text=\"primary-600 dark:primary-400\">\n <div i-solar:check-circle-bold-duotone text-sm />\n </div>\n </div>\n\n <!-- Card description -->\n <p v-if=\"description\" line-clamp-3 min-h-40px flex-1 text-sm text=\"neutral-500 dark:neutral-400\">\n {{ description }}\n </p>\n\n <!-- Card stats -->\n <div z-1 flex items-center justify-between text-xs text=\"neutral-500 dark:neutral-400\">\n <div>v{{ version }}</div>\n <div flex items-center gap-1.5>\n <div flex items-center gap-0.5>\n <div i-lucide:ghost text-xs />\n <span>{{ consciousnessModel }}</span>\n </div>\n <div flex items-center gap-0.5>\n <div i-lucide:mic text-xs />\n <span>{{ voiceModel }}</span>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Card actions -->\n <div flex items-center justify-end px-2 py-1.5>\n <button\n rounded-lg p-1.5 transition-colors hover=\"bg-neutral-200 dark:bg-neutral-700/50\"\n :disabled=\"isActive\"\n @click.stop=\"emit('activate')\"\n >\n <div\n :class=\"[\n isActive\n ? 'i-solar:check-circle-bold-duotone text-primary-500 dark:text-primary-400'\n : 'i-solar:play-circle-broken text-neutral-500 dark:text-neutral-400',\n ]\"\n />\n </button>\n\n <button\n v-if=\"id !== 'default'\"\n rounded-lg p-1.5 transition-colors hover=\"bg-neutral-200 dark:bg-neutral-700/50\"\n @click.stop=\"emit('delete')\"\n >\n <div i-solar:trash-bin-trash-linear text=\"neutral-500 dark:neutral-400\" />\n </button>\n </div>\n </CursorFloating>\n</template>\n","<script setup lang=\"ts\">\nimport { CursorFloating } from '@proj-airi/stage-ui/components'\n\ninterface Props {\n id: string\n name: string\n description?: string\n isActive: boolean\n isSelected: boolean\n version: string\n consciousnessModel: string\n voiceModel: string\n}\n\ndefineProps<Props>()\nconst emit = defineEmits<{\n (e: 'select'): void\n (e: 'activate'): void\n (e: 'delete'): void\n}>()\n</script>\n\n<template>\n <CursorFloating\n relative min-h-120px flex=\"~ col\" cursor-pointer overflow-hidden rounded-xl\n :class=\"[\n isSelected\n ? 'border-2 border-primary-400 dark:border-primary-600'\n : 'border-2 border-neutral-100 dark:border-neutral-800/25',\n ]\"\n bg=\"neutral-200/50 dark:neutral-800/50\"\n drop-shadow=\"none hover:[0px_4px_4px_rgba(220,220,220,0.4)] active:[0px_0px_0px_rgba(220,220,220,0.25)] dark:hover:none\"\n transition=\"all ease-in-out duration-400\"\n before=\"content-empty absolute inset-0 z-0 w-25% h-full transition-all duration-400 ease-in-out bg-gradient-to-r from-primary-500/0 to-primary-500/0 dark:from-primary-400/0 dark:to-primary-400/0 mask-image-[linear-gradient(120deg,white_100%)] opacity-0\"\n hover=\"before:opacity-100 before:bg-gradient-to-r before:from-primary-500/20 before:via-primary-500/10 before:to-transparent before:dark:from-primary-400/20 before:dark:via-primary-400/10 before:dark:to-transparent\"\n @click=\"emit('select')\"\n >\n <!-- Card content -->\n <div\n relative flex=\"~ col 1\" justify-between gap-3 overflow-hidden rounded-lg bg=\"white dark:neutral-900\" p-5\n transition=\"all ease-in-out duration-400\"\n after=\"content-empty absolute inset-0 z--2 w-full h-full bg-dotted-[neutral-200/80] bg-size-10px mask-image-[linear-gradient(165deg,white_30%,transparent_50%)] transition-all duration-400 ease-in-out\"\n hover=\"after:bg-dotted-[primary-300/50] dark:after:bg-dotted-[primary-200/20] text-primary-600/80 dark:text-primary-300/80\"\n >\n <!-- Card header (name and badge) -->\n <div z-1 flex items-start justify-between gap-2>\n <h3 flex-1 truncate text-lg font-normal>\n {{ name }}\n </h3>\n <div v-if=\"isActive\" shrink-0 rounded-md p-1 bg=\"primary-100 dark:primary-900/40\" text=\"primary-600 dark:primary-400\">\n <div i-solar:check-circle-bold-duotone text-sm />\n </div>\n </div>\n\n <!-- Card description -->\n <p v-if=\"description\" line-clamp-3 min-h-40px flex-1 text-sm text=\"neutral-500 dark:neutral-400\">\n {{ description }}\n </p>\n\n <!-- Card stats -->\n <div z-1 flex items-center justify-between text-xs text=\"neutral-500 dark:neutral-400\">\n <div>v{{ version }}</div>\n <div flex items-center gap-1.5>\n <div flex items-center gap-0.5>\n <div i-lucide:ghost text-xs />\n <span>{{ consciousnessModel }}</span>\n </div>\n <div flex items-center gap-0.5>\n <div i-lucide:mic text-xs />\n <span>{{ voiceModel }}</span>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Card actions -->\n <div flex items-center justify-end px-2 py-1.5>\n <button\n rounded-lg p-1.5 transition-colors hover=\"bg-neutral-200 dark:bg-neutral-700/50\"\n :disabled=\"isActive\"\n @click.stop=\"emit('activate')\"\n >\n <div\n :class=\"[\n isActive\n ? 'i-solar:check-circle-bold-duotone text-primary-500 dark:text-primary-400'\n : 'i-solar:play-circle-broken text-neutral-500 dark:text-neutral-400',\n ]\"\n />\n </button>\n\n <button\n v-if=\"id !== 'default'\"\n rounded-lg p-1.5 transition-colors hover=\"bg-neutral-200 dark:bg-neutral-700/50\"\n @click.stop=\"emit('delete')\"\n >\n <div i-solar:trash-bin-trash-linear text=\"neutral-500 dark:neutral-400\" />\n </button>\n </div>\n </CursorFloating>\n</template>\n"],"mappings":"0iDCeA,IAAM,EAAO,oBAQX,EA4EiB,EAAA,EAAA,CAAA,CA3Ef,SAAA,GAAS,cAAA,GAAY,KAAK,QAAQ,iBAAA,GAAe,kBAAA,GAAgB,aAAA,GAChE,MAAK,EAAA,CAAU,EAAA,WAAA,sDAAA,yDAAA,CAAA,CAKhB,GAAG,qCACH,cAAY,6GACZ,WAAW,+BACX,OAAO,uPACP,MAAM,kNACL,QAAK,AAAA,EAAA,KAAA,GAAE,EAAI,SAAA,iBAsCN,CAnCN,EAmCM,MAnCN,EAmCM,CA5BJ,EAOM,MAPN,EAOM,CANJ,EAEK,KAFL,EAEK,EADA,EAAA,KAAI,CAAA,EAAA,CAEE,EAAA,UAAA,GAAA,CAAX,EAEM,MAFN,EAEM,CAAA,GAAA,AAAA,EAAA,KAAA,CADJ,EAAiD,MAAA,CAA5C,oCAAA,GAAkC,UAAA,4BAKlC,EAAA,aAAA,GAAA,CAAT,EAEI,IAFJ,EAEI,EADC,EAAA,YAAW,CAAA,EAAA,EAAA,EAAA,GAAA,GAAA,CAIhB,EAYM,MAZN,EAYM,CAXJ,EAAyB,MAAA,KAApB,IAAC,EAAG,EAAA,QAAO,CAAA,EAAA,CAChB,EASM,MATN,EASM,CARJ,EAGM,MAHN,EAGM,CAAA,AAAA,EAAA,KAFJ,EAA8B,MAAA,CAAzB,iBAAA,GAAe,UAAA,aACpB,EAAqC,OAAA,KAAA,EAA5B,EAAA,mBAAkB,CAAA,EAAA,CAAA,CAAA,CAE7B,EAGM,MAHN,EAGM,CAAA,AAAA,EAAA,KAFJ,EAA4B,MAAA,CAAvB,eAAA,GAAa,UAAA,aAClB,EAA6B,OAAA,KAAA,EAApB,EAAA,WAAU,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAO3B,EAsBM,MAtBN,EAsBM,CArBJ,EAYS,SAAA,CAXP,aAAA,GAAW,QAAA,GAAM,oBAAA,GAAkB,MAAM,wCACxC,SAAU,EAAA,SACV,QAAK,AAAA,EAAA,KAAA,EAAA,GAAO,EAAI,WAAA,CAAA,CAAA,OAAA,CAAA,GAEjB,EAME,MAAA,CALC,MAAK,EAAA,CAAgB,EAAA,SAAA,2EAAA,oEAAA,CAAA,CAAA,CAAA,KAAA,EAAA,CAAA,CAAA,EAAA,EAAA,CASlB,EAAA,KAAE,oBAAA,GAAA,CADV,EAMS,SAAA,OAJP,aAAA,GAAW,QAAA,GAAM,oBAAA,GAAkB,MAAM,wCACxC,QAAK,AAAA,EAAA,KAAA,EAAA,GAAO,EAAI,SAAA,CAAA,CAAA,OAAA,CAAA,cAEjB,EAA0E,MAAA,CAArE,iCAAA,GAA+B,KAAK"}
 
1
+ {"version":3,"file":"CardListItem-Eda9_o7D.js","names":[],"sources":["../../../../packages/stage-pages/src/pages/settings/airi-card/components/CardListItem.vue","../../../../packages/stage-pages/src/pages/settings/airi-card/components/CardListItem.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { CursorFloating } from '@proj-airi/stage-ui/components'\n\ninterface Props {\n id: string\n name: string\n description?: string\n isActive: boolean\n isSelected: boolean\n version: string\n consciousnessModel: string\n voiceModel: string\n}\n\ndefineProps<Props>()\nconst emit = defineEmits<{\n (e: 'select'): void\n (e: 'activate'): void\n (e: 'delete'): void\n}>()\n</script>\n\n<template>\n <CursorFloating\n relative min-h-120px flex=\"~ col\" cursor-pointer overflow-hidden rounded-xl\n :class=\"[\n isSelected\n ? 'border-2 border-primary-400 dark:border-primary-600'\n : 'border-2 border-neutral-100 dark:border-neutral-800/25',\n ]\"\n bg=\"neutral-200/50 dark:neutral-800/50\"\n drop-shadow=\"none hover:[0px_4px_4px_rgba(220,220,220,0.4)] active:[0px_0px_0px_rgba(220,220,220,0.25)] dark:hover:none\"\n transition=\"all ease-in-out duration-400\"\n before=\"content-empty absolute inset-0 z-0 w-25% h-full transition-all duration-400 ease-in-out bg-gradient-to-r from-primary-500/0 to-primary-500/0 dark:from-primary-400/0 dark:to-primary-400/0 mask-image-[linear-gradient(120deg,white_100%)] opacity-0\"\n hover=\"before:opacity-100 before:bg-gradient-to-r before:from-primary-500/20 before:via-primary-500/10 before:to-transparent before:dark:from-primary-400/20 before:dark:via-primary-400/10 before:dark:to-transparent\"\n @click=\"emit('select')\"\n >\n <!-- Card content -->\n <div\n relative flex=\"~ col 1\" justify-between gap-3 overflow-hidden rounded-lg bg=\"white dark:neutral-900\" p-5\n transition=\"all ease-in-out duration-400\"\n after=\"content-empty absolute inset-0 z--2 w-full h-full bg-dotted-[neutral-200/80] bg-size-10px mask-image-[linear-gradient(165deg,white_30%,transparent_50%)] transition-all duration-400 ease-in-out\"\n hover=\"after:bg-dotted-[primary-300/50] dark:after:bg-dotted-[primary-200/20] text-primary-600/80 dark:text-primary-300/80\"\n >\n <!-- Card header (name and badge) -->\n <div z-1 flex items-start justify-between gap-2>\n <h3 flex-1 truncate text-lg font-normal>\n {{ name }}\n </h3>\n <div v-if=\"isActive\" shrink-0 rounded-md p-1 bg=\"primary-100 dark:primary-900/40\" text=\"primary-600 dark:primary-400\">\n <div i-solar:check-circle-bold-duotone text-sm />\n </div>\n </div>\n\n <!-- Card description -->\n <p v-if=\"description\" line-clamp-3 min-h-40px flex-1 text-sm text=\"neutral-500 dark:neutral-400\">\n {{ description }}\n </p>\n\n <!-- Card stats -->\n <div z-1 flex items-center justify-between text-xs text=\"neutral-500 dark:neutral-400\">\n <div>v{{ version }}</div>\n <div flex items-center gap-1.5>\n <div flex items-center gap-0.5>\n <div i-lucide:ghost text-xs />\n <span>{{ consciousnessModel }}</span>\n </div>\n <div flex items-center gap-0.5>\n <div i-lucide:mic text-xs />\n <span>{{ voiceModel }}</span>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Card actions -->\n <div flex items-center justify-end px-2 py-1.5>\n <button\n rounded-lg p-1.5 transition-colors hover=\"bg-neutral-200 dark:bg-neutral-700/50\"\n :disabled=\"isActive\"\n @click.stop=\"emit('activate')\"\n >\n <div\n :class=\"[\n isActive\n ? 'i-solar:check-circle-bold-duotone text-primary-500 dark:text-primary-400'\n : 'i-solar:play-circle-broken text-neutral-500 dark:text-neutral-400',\n ]\"\n />\n </button>\n\n <button\n v-if=\"id !== 'default'\"\n rounded-lg p-1.5 transition-colors hover=\"bg-neutral-200 dark:bg-neutral-700/50\"\n @click.stop=\"emit('delete')\"\n >\n <div i-solar:trash-bin-trash-linear text=\"neutral-500 dark:neutral-400\" />\n </button>\n </div>\n </CursorFloating>\n</template>\n","<script setup lang=\"ts\">\nimport { CursorFloating } from '@proj-airi/stage-ui/components'\n\ninterface Props {\n id: string\n name: string\n description?: string\n isActive: boolean\n isSelected: boolean\n version: string\n consciousnessModel: string\n voiceModel: string\n}\n\ndefineProps<Props>()\nconst emit = defineEmits<{\n (e: 'select'): void\n (e: 'activate'): void\n (e: 'delete'): void\n}>()\n</script>\n\n<template>\n <CursorFloating\n relative min-h-120px flex=\"~ col\" cursor-pointer overflow-hidden rounded-xl\n :class=\"[\n isSelected\n ? 'border-2 border-primary-400 dark:border-primary-600'\n : 'border-2 border-neutral-100 dark:border-neutral-800/25',\n ]\"\n bg=\"neutral-200/50 dark:neutral-800/50\"\n drop-shadow=\"none hover:[0px_4px_4px_rgba(220,220,220,0.4)] active:[0px_0px_0px_rgba(220,220,220,0.25)] dark:hover:none\"\n transition=\"all ease-in-out duration-400\"\n before=\"content-empty absolute inset-0 z-0 w-25% h-full transition-all duration-400 ease-in-out bg-gradient-to-r from-primary-500/0 to-primary-500/0 dark:from-primary-400/0 dark:to-primary-400/0 mask-image-[linear-gradient(120deg,white_100%)] opacity-0\"\n hover=\"before:opacity-100 before:bg-gradient-to-r before:from-primary-500/20 before:via-primary-500/10 before:to-transparent before:dark:from-primary-400/20 before:dark:via-primary-400/10 before:dark:to-transparent\"\n @click=\"emit('select')\"\n >\n <!-- Card content -->\n <div\n relative flex=\"~ col 1\" justify-between gap-3 overflow-hidden rounded-lg bg=\"white dark:neutral-900\" p-5\n transition=\"all ease-in-out duration-400\"\n after=\"content-empty absolute inset-0 z--2 w-full h-full bg-dotted-[neutral-200/80] bg-size-10px mask-image-[linear-gradient(165deg,white_30%,transparent_50%)] transition-all duration-400 ease-in-out\"\n hover=\"after:bg-dotted-[primary-300/50] dark:after:bg-dotted-[primary-200/20] text-primary-600/80 dark:text-primary-300/80\"\n >\n <!-- Card header (name and badge) -->\n <div z-1 flex items-start justify-between gap-2>\n <h3 flex-1 truncate text-lg font-normal>\n {{ name }}\n </h3>\n <div v-if=\"isActive\" shrink-0 rounded-md p-1 bg=\"primary-100 dark:primary-900/40\" text=\"primary-600 dark:primary-400\">\n <div i-solar:check-circle-bold-duotone text-sm />\n </div>\n </div>\n\n <!-- Card description -->\n <p v-if=\"description\" line-clamp-3 min-h-40px flex-1 text-sm text=\"neutral-500 dark:neutral-400\">\n {{ description }}\n </p>\n\n <!-- Card stats -->\n <div z-1 flex items-center justify-between text-xs text=\"neutral-500 dark:neutral-400\">\n <div>v{{ version }}</div>\n <div flex items-center gap-1.5>\n <div flex items-center gap-0.5>\n <div i-lucide:ghost text-xs />\n <span>{{ consciousnessModel }}</span>\n </div>\n <div flex items-center gap-0.5>\n <div i-lucide:mic text-xs />\n <span>{{ voiceModel }}</span>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Card actions -->\n <div flex items-center justify-end px-2 py-1.5>\n <button\n rounded-lg p-1.5 transition-colors hover=\"bg-neutral-200 dark:bg-neutral-700/50\"\n :disabled=\"isActive\"\n @click.stop=\"emit('activate')\"\n >\n <div\n :class=\"[\n isActive\n ? 'i-solar:check-circle-bold-duotone text-primary-500 dark:text-primary-400'\n : 'i-solar:play-circle-broken text-neutral-500 dark:text-neutral-400',\n ]\"\n />\n </button>\n\n <button\n v-if=\"id !== 'default'\"\n rounded-lg p-1.5 transition-colors hover=\"bg-neutral-200 dark:bg-neutral-700/50\"\n @click.stop=\"emit('delete')\"\n >\n <div i-solar:trash-bin-trash-linear text=\"neutral-500 dark:neutral-400\" />\n </button>\n </div>\n </CursorFloating>\n</template>\n"],"mappings":"0iDCeA,IAAM,EAAO,oBAQX,EA4EiB,EAAA,EAAA,CAAA,CA3Ef,SAAA,GAAS,cAAA,GAAY,KAAK,QAAQ,iBAAA,GAAe,kBAAA,GAAgB,aAAA,GAChE,MAAK,EAAA,CAAU,EAAA,WAAA,sDAAA,yDAAA,CAAA,CAKhB,GAAG,qCACH,cAAY,6GACZ,WAAW,+BACX,OAAO,uPACP,MAAM,kNACL,QAAK,AAAA,EAAA,KAAA,GAAE,EAAI,SAAA,iBAsCN,CAnCN,EAmCM,MAnCN,EAmCM,CA5BJ,EAOM,MAPN,EAOM,CANJ,EAEK,KAFL,EAEK,EADA,EAAA,KAAI,CAAA,EAAA,CAEE,EAAA,UAAA,GAAA,CAAX,EAEM,MAFN,EAEM,CAAA,GAAA,AAAA,EAAA,KAAA,CADJ,EAAiD,MAAA,CAA5C,oCAAA,GAAkC,UAAA,4BAKlC,EAAA,aAAA,GAAA,CAAT,EAEI,IAFJ,EAEI,EADC,EAAA,YAAW,CAAA,EAAA,EAAA,EAAA,GAAA,GAAA,CAIhB,EAYM,MAZN,EAYM,CAXJ,EAAyB,MAAA,KAApB,IAAC,EAAG,EAAA,QAAO,CAAA,EAAA,CAChB,EASM,MATN,EASM,CARJ,EAGM,MAHN,EAGM,CAAA,AAAA,EAAA,KAFJ,EAA8B,MAAA,CAAzB,iBAAA,GAAe,UAAA,aACpB,EAAqC,OAAA,KAAA,EAA5B,EAAA,mBAAkB,CAAA,EAAA,CAAA,CAAA,CAE7B,EAGM,MAHN,EAGM,CAAA,AAAA,EAAA,KAFJ,EAA4B,MAAA,CAAvB,eAAA,GAAa,UAAA,aAClB,EAA6B,OAAA,KAAA,EAApB,EAAA,WAAU,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAO3B,EAsBM,MAtBN,EAsBM,CArBJ,EAYS,SAAA,CAXP,aAAA,GAAW,QAAA,GAAM,oBAAA,GAAkB,MAAM,wCACxC,SAAU,EAAA,SACV,QAAK,AAAA,EAAA,KAAA,EAAA,GAAO,EAAI,WAAA,CAAA,CAAA,OAAA,CAAA,GAEjB,EAME,MAAA,CALC,MAAK,EAAA,CAAgB,EAAA,SAAA,2EAAA,oEAAA,CAAA,CAAA,CAAA,KAAA,EAAA,CAAA,CAAA,EAAA,EAAA,CASlB,EAAA,KAAE,oBAAA,GAAA,CADV,EAMS,SAAA,OAJP,aAAA,GAAW,QAAA,GAAM,oBAAA,GAAkB,MAAM,wCACxC,QAAK,AAAA,EAAA,KAAA,EAAA,GAAO,EAAI,SAAA,CAAA,CAAA,OAAA,CAAA,cAEjB,EAA0E,MAAA,CAArE,iCAAA,GAA+B,KAAK"}
assets/CharacterCreate-C-FeDI8r.js ADDED
@@ -0,0 +1,2 @@
 
 
 
1
+ import{K as e,w as t,x as n}from"./vue.runtime.esm-bundler-_ZPRHVd_.js";import{t as r}from"./_plugin-vue_export-helper-DSrzDOgY.js";var i={},a={relative:``,class:`min-h-[120px] flex flex-col cursor-pointer items-center justify-center border-neutral-200 rounded-xl bg-white/60 p-6 dark:border-neutral-700 hover:border-primary-300 dark:bg-black/30 hover:bg-white/80 dark:hover:border-primary-700 dark:hover:bg-black/40`,border:`solid 2`,transition:`all duration-300`,"cursor-pointer":``,"opacity-95":``,hover:`scale-100 opacity-100 shadow-md dark:shadow-lg`};function o(r,i){return e(),t(`div`,a,[...i[0]||=[n(`div`,{"i-solar:add-square-line-duotone":``,"mb-4":``,"text-5xl":``,text:`neutral-400 dark:neutral-500`},null,-1),n(`p`,{"font-medium":``,text:`neutral-600 dark:neutral-300`},` Create New Character `,-1)]])}var s=r(i,[[`render`,o]]);export{s as default};
2
+ //# sourceMappingURL=CharacterCreate-C-FeDI8r.js.map
assets/CharacterCreate-C-FeDI8r.js.map ADDED
@@ -0,0 +1 @@
 
 
1
+ {"version":3,"file":"CharacterCreate-C-FeDI8r.js","names":[],"sources":["../../src/pages/settings/characters/components/CharacterCreate.vue"],"sourcesContent":["<script setup lang=\"ts\">\n</script>\n\n<template>\n <div\n relative\n class=\"min-h-[120px] flex flex-col cursor-pointer items-center justify-center border-neutral-200 rounded-xl bg-white/60 p-6 dark:border-neutral-700 hover:border-primary-300 dark:bg-black/30 hover:bg-white/80 dark:hover:border-primary-700 dark:hover:bg-black/40\"\n border=\"solid 2\"\n transition=\"all duration-300\"\n cursor-pointer opacity-95\n hover=\"scale-100 opacity-100 shadow-md dark:shadow-lg\"\n >\n <div i-solar:add-square-line-duotone mb-4 text-5xl text=\"neutral-400 dark:neutral-500\" />\n <p font-medium text=\"neutral-600 dark:neutral-300\">\n Create New Character\n </p>\n </div>\n</template>\n"],"mappings":"gJAKI,SAAA,GACA,MAAM,gQACN,OAAO,UACP,WAAW,mBACX,iBAAA,GAAe,aAAA,GACf,MAAM,6EANR,EAYM,MAZN,EAYM,CAAA,GAAA,AAAA,EAAA,KAAA,CAJJ,EAAyF,MAAA,CAApF,kCAAA,GAAgC,OAAA,GAAK,WAAA,GAAS,KAAK,yCACxD,EAEI,IAAA,CAFD,cAAA,GAAY,KAAK,gCAA+B,yBAEnD,GAAA,CAAA,CAAA,CAAA"}
assets/CharacterDialog-BG6ZFK4M.js ADDED
@@ -0,0 +1 @@
 
 
1
+ import"./src-CuCahbAr.js";import"./auth-CKmPFukP.js";import{t as e}from"./CharacterDialog-uywBmJUv.js";export{e as default};
assets/CharacterDialog-uywBmJUv.js ADDED
@@ -0,0 +1,2 @@
 
 
 
1
+ import{A as e,J as t,K as n,O as r,Pt as i,S as a,at as o,b as s,jt as c,k as l,kt as u,l as d,lt as f,m as p,u as m,ut as h,w as g,x as _,xt as v,yt as ee}from"./vue.runtime.esm-bundler-_ZPRHVd_.js";import{g as y,i as b}from"./src-CuCahbAr.js";import{n as x}from"./pinia-DNsugCtk.js";import{i as S,m as C,r as w,t as T}from"./DialogTitle-D6_neaY1.js";import{t as te}from"./DialogPortal-BhPdarFy.js";import{o as E,t as D}from"./auth-CKmPFukP.js";import{a as O,c as k,d as A,f as j,i as M,l as N,n as P,o as F,s as I,t as L,u as R}from"./dist-DX8jfTgN.js";var ne=(e,t,n={})=>{let r=`${e}=${t}`;if(e.startsWith(`__Secure-`)&&!n.secure)throw Error(`__Secure- Cookie must have Secure attributes`);if(e.startsWith(`__Host-`)){if(!n.secure)throw Error(`__Host- Cookie must have Secure attributes`);if(n.path!==`/`)throw Error(`__Host- Cookie must have Path attributes with "/"`);if(n.domain)throw Error(`__Host- Cookie must not have Domain attributes`)}if(n&&typeof n.maxAge==`number`&&n.maxAge>=0){if(n.maxAge>3456e4)throw Error(`Cookies Max-Age SHOULD NOT be greater than 400 days (34560000 seconds) in duration.`);r+=`; Max-Age=${n.maxAge|0}`}if(n.domain&&n.prefix!==`host`&&(r+=`; Domain=${n.domain}`),n.path&&(r+=`; Path=${n.path}`),n.expires){if(n.expires.getTime()-Date.now()>3456e7)throw Error(`Cookies Expires SHOULD NOT be greater than 400 days (34560000 seconds) in the future.`);r+=`; Expires=${n.expires.toUTCString()}`}if(n.httpOnly&&(r+=`; HttpOnly`),n.secure&&(r+=`; Secure`),n.sameSite&&(r+=`; SameSite=${n.sameSite.charAt(0).toUpperCase()+n.sameSite.slice(1)}`),n.priority&&(r+=`; Priority=${n.priority.charAt(0).toUpperCase()+n.priority.slice(1)}`),n.partitioned){if(!n.secure)throw Error(`Partitioned Cookie must have Secure attributes`);r+=`; Partitioned`}return r},re=(e,t,n)=>(t=encodeURIComponent(t),ne(e,t,n)),ie=(e,t)=>(e=e.replace(/\/+$/,``),e+=`/`,t=t.replace(/^\/+/,``),e+t),z=(e,t)=>{for(let[n,r]of Object.entries(t)){let t=RegExp(`/:`+n+`(?:{[^/]+})?\\??`);e=e.replace(t,r?`/${r}`:``)}return e},ae=e=>{let t=new URLSearchParams;for(let[n,r]of Object.entries(e))if(r!==void 0)if(Array.isArray(r))for(let e of r)t.append(n,e);else t.set(n,r);return t},oe=(e,t)=>{switch(t){case`ws`:return e.replace(/^http/,`ws`);case`http`:return e.replace(/^ws/,`http`)}},B=e=>/^https?:\/\/[^\/]+?\/index(?=\?|$)/.test(e)?e.replace(/\/index(?=\?|$)/,`/`):e.replace(/\/index(?=\?|$)/,``);function V(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function H(e,t){if(!V(e)&&!V(t))return t;let n={...e};for(let e in t){let r=t[e];V(n[e])&&V(r)?n[e]=H(n[e],r):n[e]=r}return n}var U=(e,t)=>new Proxy(()=>{},{get(n,r){if(!(typeof r!=`string`||r===`then`))return U(e,[...t,r])},apply(n,r,i){return e({path:t,args:i})}}),W=class{url;method;buildSearchParams;queryParams=void 0;pathParams={};rBody;cType=void 0;constructor(e,t,n){this.url=e,this.method=t,this.buildSearchParams=n.buildSearchParams}fetch=async(e,t)=>{if(e){if(e.query&&(this.queryParams=this.buildSearchParams(e.query)),e.form){let t=new FormData;for(let[n,r]of Object.entries(e.form))if(Array.isArray(r))for(let e of r)t.append(n,e);else t.append(n,r);this.rBody=t}e.json&&(this.rBody=JSON.stringify(e.json),this.cType=`application/json`),e.param&&(this.pathParams=e.param)}let n=this.method.toUpperCase(),r={...e?.header,...typeof t?.headers==`function`?await t.headers():t?.headers};if(e?.cookie){let t=[];for(let[n,r]of Object.entries(e.cookie))t.push(re(n,r,{path:`/`}));r.Cookie=t.join(`,`)}this.cType&&(r[`Content-Type`]=this.cType);let i=new Headers(r??void 0),a=this.url;a=B(a),a=z(a,this.pathParams),this.queryParams&&(a=a+`?`+this.queryParams.toString()),n=this.method.toUpperCase();let o=!(n===`GET`||n===`HEAD`);return(t?.fetch||fetch)(a,{body:o?this.rBody:void 0,method:n,headers:i,...t?.init})}};const G=((e,t)=>U(function n(r){let i=t?.buildSearchParams??ae,a=[...r.path],o=a.slice(-3).reverse();if(o[0]===`toString`)return o[1]===`name`?o[2]||``:n.toString();if(o[0]===`valueOf`)return o[1]===`name`?o[2]||``:n;let s=``;if(/^\$/.test(o[0])){let e=a.pop();e&&(s=e.replace(/^\$/,``))}let c=ie(e,a.join(`/`));if(s===`url`){let e=c;return r.args[0]&&(r.args[0].param&&(e=z(c,r.args[0].param)),r.args[0].query&&(e=e+`?`+i(r.args[0].query).toString())),e=B(e),new URL(e)}if(s===`ws`){let e=oe(r.args[0]&&r.args[0].param?z(c,r.args[0].param):c,`ws`),n=new URL(e),i=r.args[0]?.query;return i&&Object.entries(i).forEach(([e,t])=>{Array.isArray(t)?t.forEach(t=>n.searchParams.append(e,t)):n.searchParams.set(e,t)}),((...e)=>t?.webSocket!==void 0&&typeof t.webSocket==`function`?t.webSocket(...e):new WebSocket(...e))(n.toString())}let l=new W(c,s,{buildSearchParams:i});if(s){t??={};let e=H(t,{...r.args[1]});return l.fetch(r.args[0],e)}return l},[]))(D,{fetch:(e,t)=>{let n=E(),r=new Headers(t?.headers);return n.authToken&&r.set(`Authorization`,`Bearer ${n.authToken}`),fetch(e,{...t,headers:r,credentials:`include`})}}),K=x(`characters`,()=>{let e=v(new Map),t=v(!1),n=v(null);async function r(){t.value=!0,n.value=null;try{let t=await G.api.characters.$get();if(!t.ok)throw Error(`Failed to fetch characters`);let n=await t.json();e.value.clear();for(let t of n)e.value.set(t.id,t)}catch(e){throw n.value=e,e}finally{t.value=!1}}async function i(r){t.value=!0,n.value=null;try{let t=await G.api.characters[`:id`].$get({param:{id:r}});if(!t.ok)throw Error(`Failed to fetch character`);let n=await t.json();return e.value.set(n.id,n),n}catch(e){throw n.value=e,e}finally{t.value=!1}}async function a(r){t.value=!0,n.value=null;try{let t=await G.api.characters.$post({json:r});if(!t.ok)throw Error(`Failed to create character`);let n=await t.json();return e.value.set(n.id,n),n}catch(e){throw n.value=e,e}finally{t.value=!1}}async function o(r,i){t.value=!0,n.value=null;try{let t=await G.api.characters[`:id`].$patch({param:{id:r},json:i});if(!t.ok)throw Error(`Failed to update character`);let n=(await t.json())[0];return e.value.set(n.id,n),n}catch(e){throw n.value=e,e}finally{t.value=!1}}async function s(r){t.value=!0,n.value=null;try{if(!(await G.api.characters[`:id`].$delete({param:{id:r}})).ok)throw Error(`Failed to delete character`);e.value.delete(r)}catch(e){throw n.value=e,e}finally{t.value=!1}}function c(t){return e.value.get(t)}return{characters:e,isLoading:t,error:n,fetchList:r,fetchById:i,create:a,update:o,remove:s,getCharacter:c}}),q=F({vrm:I(F({urls:L(R())})),live2d:I(F({urls:L(R())}))}),J=F({apiKey:R(),apiBaseUrl:R(),llm:I(F({temperature:O(),model:R()})),tts:I(F({ssml:R(),voiceId:R(),speed:O(),pitch:O()})),vlm:I(F({image:R()})),asr:I(F({audio:R()}))});var Y=j([M(`llm`),M(`tts`),M(`vlm`),M(`asr`)]),X=j([M(`vrm`),M(`live2d`)]),Z=j([M(`system`),M(`personality`),M(`greetings`)]),Q=k(j([R(),P()]),A(e=>new Date(e)));const se=F({id:R(),version:R(),coverUrl:R(),creatorId:R(),ownerId:R(),characterId:R(),createdAt:Q,updatedAt:Q}),ce=F({id:R(),characterId:R(),type:Y,config:J}),le=F({id:R(),characterId:R(),name:R(),type:X,description:R(),config:q,createdAt:Q,updatedAt:Q}),ue=F({id:R(),characterId:R(),language:R(),name:R(),description:R(),tags:L(R()),createdAt:Q,updatedAt:Q}),de=F({id:R(),characterId:R(),language:R(),type:Z,content:R()});F({...se.entries,capabilities:L(ce),avatarModels:L(le),i18n:L(ue),prompts:L(de)});const fe=F({character:F({version:R(),coverUrl:R(),characterId:R()}),capabilities:I(L(F({type:Y,config:J}))),avatarModels:I(L(F({name:R(),type:X,description:R(),config:q}))),i18n:I(L(F({language:R(),name:R(),description:R(),tags:L(R())}))),prompts:I(L(F({language:R(),type:Z,content:R()})))});F({version:I(R()),coverUrl:I(R()),characterId:I(R())});var pe={class:`h-full flex flex-col`},me={class:`flex items-center justify-between border-b border-neutral-100 p-4 dark:border-neutral-800`},he={class:`flex flex-1 overflow-hidden`},ge={class:`w-48 bg-neutral-50 p-2 dark:bg-neutral-900/50`},_e=[`onClick`],ve={class:`flex-1 overflow-y-auto p-6`},ye={class:`space-y-4`},$={class:`grid grid-cols-2 gap-4`},be={class:`space-y-6`},xe={class:`space-y-4`},Se={class:`flex flex-col gap-1.5`},Ce={class:`space-y-4`},we={class:`flex flex-col gap-1.5`},Te={class:`flex items-center justify-end gap-2 border-t border-neutral-100 p-4 dark:border-neutral-800`},Ee=e({__name:`CharacterDialog`,props:{modelValue:{type:Boolean},character:{}},emits:[`update:modelValue`,`submit`],setup(e,{emit:x}){let E=e,D=x,O=K(),k=ee({characterId:``,version:`1.0.0`,coverUrl:``,name:``,description:``,llmModel:``,llmTemperature:.7,ttsVoiceId:``,ttsSpeed:1});o(()=>E.character,e=>{if(e){let t=e.i18n?.find(e=>e.language===`en`)||e.i18n?.[0],n=e.capabilities?.find(e=>e.type===`llm`),r=e.capabilities?.find(e=>e.type===`tts`);k.characterId=e.characterId,k.version=e.version,k.coverUrl=e.coverUrl,k.name=t?.name||``,k.description=t?.description||``,k.llmModel=n?.config.llm?.model||``,k.llmTemperature=n?.config.llm?.temperature||.7,k.ttsVoiceId=r?.config.tts?.voiceId||``,k.ttsSpeed=r?.config.tts?.speed||1}else k.characterId=``,k.version=`1.0.0`,k.coverUrl=``,k.name=``,k.description=``,k.llmModel=`gpt-4o-mini`,k.llmTemperature=.7,k.ttsVoiceId=``,k.ttsSpeed=1},{immediate:!0});let A=v({}),j=v(!1);async function M(){A.value={},j.value=!0;let e={character:{characterId:k.characterId,version:k.version,coverUrl:k.coverUrl},i18n:[{language:`en`,name:k.name,description:k.description,tags:[]}],capabilities:[{type:`llm`,config:{apiKey:``,apiBaseUrl:``,llm:{model:k.llmModel,temperature:k.llmTemperature}}},{type:`tts`,config:{apiKey:``,apiBaseUrl:``,tts:{voiceId:k.ttsVoiceId,speed:k.ttsSpeed,ssml:``,pitch:1}}}],avatarModels:[],prompts:[]},t=N(fe,e);if(!t.success){t.issues.forEach(e=>{let t=e.path?.map(e=>e.key).join(`.`)||`global`;A.value[t]=e.message}),j.value=!1;return}try{E.character?await O.update(E.character.id,{characterId:k.characterId,version:k.version,coverUrl:k.coverUrl}):await O.create(e),D(`submit`),D(`update:modelValue`,!1)}catch(e){console.error(e)}finally{j.value=!1}}let P=v(`identity`),F=[{id:`identity`,label:`Identity`,icon:`i-solar:user-id-bold-duotone`},{id:`capabilities`,label:`Capabilities`,icon:`i-solar:cpu-bolt-bold-duotone`}],I=s({get:()=>E.modelValue,set:e=>D(`update:modelValue`,e)});return(o,s)=>(n(),a(u(C),{open:I.value,"onUpdate:open":s[11]||=e=>I.value=e},{default:f(()=>[l(u(te),null,{default:f(()=>[l(u(w),{class:`data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50 backdrop-blur-sm`}),l(u(S),{class:`data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] fixed left-1/2 top-1/2 z-50 max-h-85vh max-w-2xl w-full overflow-hidden rounded-2xl bg-white p-0 shadow-xl -translate-x-1/2 -translate-y-1/2 dark:bg-neutral-900`},{default:f(()=>[_(`div`,pe,[_(`div`,me,[l(u(T),{class:`text-lg font-semibold`},{default:f(()=>[r(i(e.character?`Edit Character`:`Create Character`),1)]),_:1}),_(`button`,{class:`rounded-full p-1 text-neutral-500 hover:bg-neutral-100 dark:hover:bg-neutral-800`,onClick:s[0]||=e=>I.value=!1},[...s[12]||=[_(`div`,{"i-solar:close-circle-bold":``,class:`text-xl`},null,-1)]])]),_(`div`,he,[_(`div`,ge,[(n(),g(p,null,t(F,e=>_(`button`,{key:e.id,class:c([`mb-1 w-full flex items-center gap-2 rounded-lg px-3 py-2 text-sm font-medium transition-colors`,P.value===e.id?`bg-white text-primary-600 shadow-sm dark:bg-neutral-800 dark:text-primary-400`:`text-neutral-600 hover:bg-neutral-100 dark:text-neutral-400 dark:hover:bg-neutral-800`]),onClick:t=>P.value=e.id},[_(`div`,{class:c(e.icon)},null,2),r(` `+i(e.label),1)],10,_e)),64))]),_(`div`,ve,[h(_(`div`,ye,[_(`div`,$,[l(u(y),{modelValue:k.characterId,"onUpdate:modelValue":s[1]||=e=>k.characterId=e,label:`Handle ID`,placeholder:`e.g. airi-core`,required:``},null,8,[`modelValue`]),l(u(y),{modelValue:k.version,"onUpdate:modelValue":s[2]||=e=>k.version=e,label:`Version`,placeholder:`1.0.0`},null,8,[`modelValue`])]),l(u(y),{modelValue:k.name,"onUpdate:modelValue":s[3]||=e=>k.name=e,label:`Name (EN)`,placeholder:`Character Name`,required:``},null,8,[`modelValue`]),l(u(y),{modelValue:k.description,"onUpdate:modelValue":s[4]||=e=>k.description=e,label:`Description`,type:`textarea`,placeholder:`Short description...`},null,8,[`modelValue`]),l(u(y),{modelValue:k.coverUrl,"onUpdate:modelValue":s[5]||=e=>k.coverUrl=e,label:`Cover URL`,placeholder:`https://...`},null,8,[`modelValue`])],512),[[m,P.value===`identity`]]),h(_(`div`,be,[_(`div`,xe,[s[14]||=_(`h3`,{class:`text-sm text-neutral-900 font-semibold dark:text-neutral-100`},` LLM Configuration `,-1),l(u(y),{modelValue:k.llmModel,"onUpdate:modelValue":s[6]||=e=>k.llmModel=e,label:`Model`,placeholder:`gpt-4o`},null,8,[`modelValue`]),_(`div`,Se,[s[13]||=_(`label`,{class:`text-sm text-neutral-700 font-medium dark:text-neutral-300`},`Temperature`,-1),h(_(`input`,{"onUpdate:modelValue":s[7]||=e=>k.llmTemperature=e,type:`number`,step:`0.1`,min:`0`,max:`2`,class:`w-full border border-neutral-200 rounded-lg bg-white px-3 py-2 text-sm outline-none dark:border-neutral-700 focus:border-primary-500 dark:bg-neutral-800 focus:ring-2 focus:ring-primary-500/20`},null,512),[[d,k.llmTemperature,void 0,{number:!0}]])])]),_(`div`,Ce,[s[16]||=_(`h3`,{class:`text-sm text-neutral-900 font-semibold dark:text-neutral-100`},` TTS Configuration `,-1),l(u(y),{modelValue:k.ttsVoiceId,"onUpdate:modelValue":s[8]||=e=>k.ttsVoiceId=e,label:`Voice ID`,placeholder:`Voice ID`},null,8,[`modelValue`]),_(`div`,we,[s[15]||=_(`label`,{class:`text-sm text-neutral-700 font-medium dark:text-neutral-300`},`Speed`,-1),h(_(`input`,{"onUpdate:modelValue":s[9]||=e=>k.ttsSpeed=e,type:`number`,step:`0.1`,min:`0.5`,max:`2`,class:`w-full border border-neutral-200 rounded-lg bg-white px-3 py-2 text-sm outline-none dark:border-neutral-700 focus:border-primary-500 dark:bg-neutral-800 focus:ring-2 focus:ring-primary-500/20`},null,512),[[d,k.ttsSpeed,void 0,{number:!0}]])])])],512),[[m,P.value===`capabilities`]])])]),_(`div`,Te,[l(u(b),{variant:`ghost`,onClick:s[10]||=e=>I.value=!1},{default:f(()=>[...s[17]||=[r(` Cancel `,-1)]]),_:1}),l(u(b),{loading:j.value,onClick:M},{default:f(()=>[r(i(e.character?`Save Changes`:`Create`),1)]),_:1},8,[`loading`])])])]),_:1})]),_:1})]),_:1},8,[`open`]))}});export{K as n,Ee as t};
2
+ //# sourceMappingURL=CharacterDialog-uywBmJUv.js.map
assets/CharacterDialog-uywBmJUv.js.map ADDED
@@ -0,0 +1 @@
 
 
1
+ {"version":3,"file":"CharacterDialog-uywBmJUv.js","names":[],"sources":["../../../../node_modules/.pnpm/hono@4.11.3/node_modules/hono/dist/utils/cookie.js","../../../../node_modules/.pnpm/hono@4.11.3/node_modules/hono/dist/client/utils.js","../../../../node_modules/.pnpm/hono@4.11.3/node_modules/hono/dist/client/client.js","../../../../packages/stage-ui/src/composables/api.ts","../../../../packages/stage-ui/src/stores/characters.ts","../../../../packages/stage-ui/src/types/character.ts","../../src/pages/settings/characters/components/CharacterDialog.vue","../../src/pages/settings/characters/components/CharacterDialog.vue"],"sourcesContent":["// src/utils/cookie.ts\nimport { decodeURIComponent_, tryDecode } from \"./url.js\";\nvar algorithm = { name: \"HMAC\", hash: \"SHA-256\" };\nvar getCryptoKey = async (secret) => {\n const secretBuf = typeof secret === \"string\" ? new TextEncoder().encode(secret) : secret;\n return await crypto.subtle.importKey(\"raw\", secretBuf, algorithm, false, [\"sign\", \"verify\"]);\n};\nvar makeSignature = async (value, secret) => {\n const key = await getCryptoKey(secret);\n const signature = await crypto.subtle.sign(algorithm.name, key, new TextEncoder().encode(value));\n return btoa(String.fromCharCode(...new Uint8Array(signature)));\n};\nvar verifySignature = async (base64Signature, value, secret) => {\n try {\n const signatureBinStr = atob(base64Signature);\n const signature = new Uint8Array(signatureBinStr.length);\n for (let i = 0, len = signatureBinStr.length; i < len; i++) {\n signature[i] = signatureBinStr.charCodeAt(i);\n }\n return await crypto.subtle.verify(algorithm, secret, signature, new TextEncoder().encode(value));\n } catch {\n return false;\n }\n};\nvar validCookieNameRegEx = /^[\\w!#$%&'*.^`|~+-]+$/;\nvar validCookieValueRegEx = /^[ !#-:<-[\\]-~]*$/;\nvar parse = (cookie, name) => {\n if (name && cookie.indexOf(name) === -1) {\n return {};\n }\n const pairs = cookie.trim().split(\";\");\n const parsedCookie = {};\n for (let pairStr of pairs) {\n pairStr = pairStr.trim();\n const valueStartPos = pairStr.indexOf(\"=\");\n if (valueStartPos === -1) {\n continue;\n }\n const cookieName = pairStr.substring(0, valueStartPos).trim();\n if (name && name !== cookieName || !validCookieNameRegEx.test(cookieName)) {\n continue;\n }\n let cookieValue = pairStr.substring(valueStartPos + 1).trim();\n if (cookieValue.startsWith('\"') && cookieValue.endsWith('\"')) {\n cookieValue = cookieValue.slice(1, -1);\n }\n if (validCookieValueRegEx.test(cookieValue)) {\n parsedCookie[cookieName] = cookieValue.indexOf(\"%\") !== -1 ? tryDecode(cookieValue, decodeURIComponent_) : cookieValue;\n if (name) {\n break;\n }\n }\n }\n return parsedCookie;\n};\nvar parseSigned = async (cookie, secret, name) => {\n const parsedCookie = {};\n const secretKey = await getCryptoKey(secret);\n for (const [key, value] of Object.entries(parse(cookie, name))) {\n const signatureStartPos = value.lastIndexOf(\".\");\n if (signatureStartPos < 1) {\n continue;\n }\n const signedValue = value.substring(0, signatureStartPos);\n const signature = value.substring(signatureStartPos + 1);\n if (signature.length !== 44 || !signature.endsWith(\"=\")) {\n continue;\n }\n const isVerified = await verifySignature(signature, signedValue, secretKey);\n parsedCookie[key] = isVerified ? signedValue : false;\n }\n return parsedCookie;\n};\nvar _serialize = (name, value, opt = {}) => {\n let cookie = `${name}=${value}`;\n if (name.startsWith(\"__Secure-\") && !opt.secure) {\n throw new Error(\"__Secure- Cookie must have Secure attributes\");\n }\n if (name.startsWith(\"__Host-\")) {\n if (!opt.secure) {\n throw new Error(\"__Host- Cookie must have Secure attributes\");\n }\n if (opt.path !== \"/\") {\n throw new Error('__Host- Cookie must have Path attributes with \"/\"');\n }\n if (opt.domain) {\n throw new Error(\"__Host- Cookie must not have Domain attributes\");\n }\n }\n if (opt && typeof opt.maxAge === \"number\" && opt.maxAge >= 0) {\n if (opt.maxAge > 3456e4) {\n throw new Error(\n \"Cookies Max-Age SHOULD NOT be greater than 400 days (34560000 seconds) in duration.\"\n );\n }\n cookie += `; Max-Age=${opt.maxAge | 0}`;\n }\n if (opt.domain && opt.prefix !== \"host\") {\n cookie += `; Domain=${opt.domain}`;\n }\n if (opt.path) {\n cookie += `; Path=${opt.path}`;\n }\n if (opt.expires) {\n if (opt.expires.getTime() - Date.now() > 3456e7) {\n throw new Error(\n \"Cookies Expires SHOULD NOT be greater than 400 days (34560000 seconds) in the future.\"\n );\n }\n cookie += `; Expires=${opt.expires.toUTCString()}`;\n }\n if (opt.httpOnly) {\n cookie += \"; HttpOnly\";\n }\n if (opt.secure) {\n cookie += \"; Secure\";\n }\n if (opt.sameSite) {\n cookie += `; SameSite=${opt.sameSite.charAt(0).toUpperCase() + opt.sameSite.slice(1)}`;\n }\n if (opt.priority) {\n cookie += `; Priority=${opt.priority.charAt(0).toUpperCase() + opt.priority.slice(1)}`;\n }\n if (opt.partitioned) {\n if (!opt.secure) {\n throw new Error(\"Partitioned Cookie must have Secure attributes\");\n }\n cookie += \"; Partitioned\";\n }\n return cookie;\n};\nvar serialize = (name, value, opt) => {\n value = encodeURIComponent(value);\n return _serialize(name, value, opt);\n};\nvar serializeSigned = async (name, value, secret, opt = {}) => {\n const signature = await makeSignature(value, secret);\n value = `${value}.${signature}`;\n value = encodeURIComponent(value);\n return _serialize(name, value, opt);\n};\nexport {\n parse,\n parseSigned,\n serialize,\n serializeSigned\n};\n","// src/client/utils.ts\nimport { fetchRP, DetailedError } from \"./fetch-result-please.js\";\nvar mergePath = (base, path) => {\n base = base.replace(/\\/+$/, \"\");\n base = base + \"/\";\n path = path.replace(/^\\/+/, \"\");\n return base + path;\n};\nvar replaceUrlParam = (urlString, params) => {\n for (const [k, v] of Object.entries(params)) {\n const reg = new RegExp(\"/:\" + k + \"(?:{[^/]+})?\\\\??\");\n urlString = urlString.replace(reg, v ? `/${v}` : \"\");\n }\n return urlString;\n};\nvar buildSearchParams = (query) => {\n const searchParams = new URLSearchParams();\n for (const [k, v] of Object.entries(query)) {\n if (v === void 0) {\n continue;\n }\n if (Array.isArray(v)) {\n for (const v2 of v) {\n searchParams.append(k, v2);\n }\n } else {\n searchParams.set(k, v);\n }\n }\n return searchParams;\n};\nvar replaceUrlProtocol = (urlString, protocol) => {\n switch (protocol) {\n case \"ws\":\n return urlString.replace(/^http/, \"ws\");\n case \"http\":\n return urlString.replace(/^ws/, \"http\");\n }\n};\nvar removeIndexString = (urlString) => {\n if (/^https?:\\/\\/[^\\/]+?\\/index(?=\\?|$)/.test(urlString)) {\n return urlString.replace(/\\/index(?=\\?|$)/, \"/\");\n }\n return urlString.replace(/\\/index(?=\\?|$)/, \"\");\n};\nfunction isObject(item) {\n return typeof item === \"object\" && item !== null && !Array.isArray(item);\n}\nfunction deepMerge(target, source) {\n if (!isObject(target) && !isObject(source)) {\n return source;\n }\n const merged = { ...target };\n for (const key in source) {\n const value = source[key];\n if (isObject(merged[key]) && isObject(value)) {\n merged[key] = deepMerge(merged[key], value);\n } else {\n merged[key] = value;\n }\n }\n return merged;\n}\nasync function parseResponse(fetchRes) {\n return fetchRP(fetchRes);\n}\nexport {\n DetailedError,\n buildSearchParams,\n deepMerge,\n mergePath,\n parseResponse,\n removeIndexString,\n replaceUrlParam,\n replaceUrlProtocol\n};\n","// src/client/client.ts\nimport { serialize } from \"../utils/cookie.js\";\nimport {\n buildSearchParams,\n deepMerge,\n mergePath,\n removeIndexString,\n replaceUrlParam,\n replaceUrlProtocol\n} from \"./utils.js\";\nvar createProxy = (callback, path) => {\n const proxy = new Proxy(() => {\n }, {\n get(_obj, key) {\n if (typeof key !== \"string\" || key === \"then\") {\n return void 0;\n }\n return createProxy(callback, [...path, key]);\n },\n apply(_1, _2, args) {\n return callback({\n path,\n args\n });\n }\n });\n return proxy;\n};\nvar ClientRequestImpl = class {\n url;\n method;\n buildSearchParams;\n queryParams = void 0;\n pathParams = {};\n rBody;\n cType = void 0;\n constructor(url, method, options) {\n this.url = url;\n this.method = method;\n this.buildSearchParams = options.buildSearchParams;\n }\n fetch = async (args, opt) => {\n if (args) {\n if (args.query) {\n this.queryParams = this.buildSearchParams(args.query);\n }\n if (args.form) {\n const form = new FormData();\n for (const [k, v] of Object.entries(args.form)) {\n if (Array.isArray(v)) {\n for (const v2 of v) {\n form.append(k, v2);\n }\n } else {\n form.append(k, v);\n }\n }\n this.rBody = form;\n }\n if (args.json) {\n this.rBody = JSON.stringify(args.json);\n this.cType = \"application/json\";\n }\n if (args.param) {\n this.pathParams = args.param;\n }\n }\n let methodUpperCase = this.method.toUpperCase();\n const headerValues = {\n ...args?.header,\n ...typeof opt?.headers === \"function\" ? await opt.headers() : opt?.headers\n };\n if (args?.cookie) {\n const cookies = [];\n for (const [key, value] of Object.entries(args.cookie)) {\n cookies.push(serialize(key, value, { path: \"/\" }));\n }\n headerValues[\"Cookie\"] = cookies.join(\",\");\n }\n if (this.cType) {\n headerValues[\"Content-Type\"] = this.cType;\n }\n const headers = new Headers(headerValues ?? void 0);\n let url = this.url;\n url = removeIndexString(url);\n url = replaceUrlParam(url, this.pathParams);\n if (this.queryParams) {\n url = url + \"?\" + this.queryParams.toString();\n }\n methodUpperCase = this.method.toUpperCase();\n const setBody = !(methodUpperCase === \"GET\" || methodUpperCase === \"HEAD\");\n return (opt?.fetch || fetch)(url, {\n body: setBody ? this.rBody : void 0,\n method: methodUpperCase,\n headers,\n ...opt?.init\n });\n };\n};\nvar hc = (baseUrl, options) => createProxy(function proxyCallback(opts) {\n const buildSearchParamsOption = options?.buildSearchParams ?? buildSearchParams;\n const parts = [...opts.path];\n const lastParts = parts.slice(-3).reverse();\n if (lastParts[0] === \"toString\") {\n if (lastParts[1] === \"name\") {\n return lastParts[2] || \"\";\n }\n return proxyCallback.toString();\n }\n if (lastParts[0] === \"valueOf\") {\n if (lastParts[1] === \"name\") {\n return lastParts[2] || \"\";\n }\n return proxyCallback;\n }\n let method = \"\";\n if (/^\\$/.test(lastParts[0])) {\n const last = parts.pop();\n if (last) {\n method = last.replace(/^\\$/, \"\");\n }\n }\n const path = parts.join(\"/\");\n const url = mergePath(baseUrl, path);\n if (method === \"url\") {\n let result = url;\n if (opts.args[0]) {\n if (opts.args[0].param) {\n result = replaceUrlParam(url, opts.args[0].param);\n }\n if (opts.args[0].query) {\n result = result + \"?\" + buildSearchParamsOption(opts.args[0].query).toString();\n }\n }\n result = removeIndexString(result);\n return new URL(result);\n }\n if (method === \"ws\") {\n const webSocketUrl = replaceUrlProtocol(\n opts.args[0] && opts.args[0].param ? replaceUrlParam(url, opts.args[0].param) : url,\n \"ws\"\n );\n const targetUrl = new URL(webSocketUrl);\n const queryParams = opts.args[0]?.query;\n if (queryParams) {\n Object.entries(queryParams).forEach(([key, value]) => {\n if (Array.isArray(value)) {\n value.forEach((item) => targetUrl.searchParams.append(key, item));\n } else {\n targetUrl.searchParams.set(key, value);\n }\n });\n }\n const establishWebSocket = (...args) => {\n if (options?.webSocket !== void 0 && typeof options.webSocket === \"function\") {\n return options.webSocket(...args);\n }\n return new WebSocket(...args);\n };\n return establishWebSocket(targetUrl.toString());\n }\n const req = new ClientRequestImpl(url, method, {\n buildSearchParams: buildSearchParamsOption\n });\n if (method) {\n options ??= {};\n const args = deepMerge(options, { ...opts.args[1] });\n return req.fetch(opts.args[0], args);\n }\n return req;\n}, []);\nexport {\n hc\n};\n","import type { AppType } from '../../../../apps/server/src/app'\n\nimport { useAuthStore } from '@proj-airi/stage-ui/stores/auth'\nimport { hc } from 'hono/client'\n\nimport { SERVER_URL } from '../libs/auth'\n\nexport const client = hc<AppType>(SERVER_URL, {\n fetch: (input: RequestInfo | URL, init?: RequestInit) => {\n const authStore = useAuthStore()\n const headers = new Headers(init?.headers)\n if (authStore.authToken) {\n headers.set('Authorization', `Bearer ${authStore.authToken}`)\n }\n return fetch(input, {\n ...init,\n headers,\n credentials: 'include', // Send cookies with request (for sessions, etc)\n })\n },\n})\n","// FIXME: fix the types\n\nimport type { Character, CreateCharacterPayload, UpdateCharacterPayload } from '../types/character'\n\nimport { defineStore } from 'pinia'\nimport { ref } from 'vue'\n\nimport { client } from '../composables/api'\n\nexport const useCharacterStore = defineStore('characters', () => {\n const characters = ref<Map<string, Character>>(new Map())\n const isLoading = ref(false)\n const error = ref<unknown>(null)\n\n async function fetchList() {\n isLoading.value = true\n error.value = null\n try {\n const res = await client.api.characters.$get()\n if (!res.ok) {\n throw new Error('Failed to fetch characters')\n }\n const data = await res.json()\n\n characters.value.clear()\n for (const char of data) {\n characters.value.set(char.id, char as unknown as Character)\n }\n }\n catch (err) {\n error.value = err\n throw err\n }\n finally {\n isLoading.value = false\n }\n }\n\n async function fetchById(id: string) {\n isLoading.value = true\n error.value = null\n try {\n const res = await client.api.characters[':id'].$get({\n param: { id },\n })\n if (!res.ok) {\n throw new Error('Failed to fetch character')\n }\n const data = await res.json()\n\n characters.value.set(data.id, data as unknown as Character)\n return data\n }\n catch (err) {\n error.value = err\n throw err\n }\n finally {\n isLoading.value = false\n }\n }\n\n async function create(payload: CreateCharacterPayload) {\n isLoading.value = true\n error.value = null\n try {\n const res = await client.api.characters.$post({\n json: payload,\n })\n if (!res.ok) {\n throw new Error('Failed to create character')\n }\n const data = await res.json()\n\n characters.value.set(data.id, data as unknown as Character)\n return data\n }\n catch (err) {\n error.value = err\n throw err\n }\n finally {\n isLoading.value = false\n }\n }\n\n async function update(id: string, payload: UpdateCharacterPayload) {\n isLoading.value = true\n error.value = null\n try {\n const res = await client.api.characters[':id'].$patch({\n param: { id },\n // @ts-expect-error - TODO: fix this\n json: payload,\n })\n if (!res.ok) {\n throw new Error('Failed to update character')\n }\n const data = (await res.json())[0] as unknown as Character\n\n characters.value.set(data.id, data)\n return data\n }\n catch (err) {\n error.value = err\n throw err\n }\n finally {\n isLoading.value = false\n }\n }\n\n async function remove(id: string) {\n isLoading.value = true\n error.value = null\n try {\n const res = await client.api.characters[':id'].$delete({\n param: { id },\n })\n if (!res.ok) {\n throw new Error('Failed to delete character')\n }\n\n characters.value.delete(id)\n }\n catch (err) {\n error.value = err\n throw err\n }\n finally {\n isLoading.value = false\n }\n }\n\n function getCharacter(id: string) {\n return characters.value.get(id)\n }\n\n return {\n characters,\n isLoading,\n error,\n fetchList,\n fetchById,\n create,\n update,\n remove,\n getCharacter,\n }\n})\n","import type { InferOutput } from 'valibot'\n\nimport { array, date, literal, number, object, optional, pipe, string, transform, union } from 'valibot'\n\n// --- Enums & Configs ---\n\nexport const AvatarModelConfigSchema = object({\n vrm: optional(object({\n urls: array(string()),\n })),\n live2d: optional(object({\n urls: array(string()),\n })),\n})\n\nexport const CharacterCapabilityConfigSchema = object({\n apiKey: string(),\n apiBaseUrl: string(),\n llm: optional(object({\n temperature: number(),\n model: string(),\n })),\n tts: optional(object({\n ssml: string(),\n voiceId: string(),\n speed: number(),\n pitch: number(),\n })),\n vlm: optional(object({\n image: string(),\n })),\n asr: optional(object({\n audio: string(),\n })),\n})\n\nconst CharacterCapabilityTypeSchema = union([\n literal('llm'),\n literal('tts'),\n literal('vlm'),\n literal('asr'),\n])\n\nconst AvatarModelTypeSchema = union([\n literal('vrm'),\n literal('live2d'),\n])\n\nconst PromptTypeSchema = union([\n literal('system'),\n literal('personality'),\n literal('greetings'),\n])\n\nconst DateSchema = pipe(\n union([string(), date()]),\n transform(v => new Date(v)),\n)\n\n// --- Base Entities (mimicking database tables) ---\n\nexport const CharacterBaseSchema = object({\n id: string(),\n version: string(),\n coverUrl: string(),\n creatorId: string(),\n ownerId: string(),\n characterId: string(),\n createdAt: DateSchema,\n updatedAt: DateSchema,\n})\n\nexport const CharacterCapabilitySchema = object({\n id: string(),\n characterId: string(),\n type: CharacterCapabilityTypeSchema,\n config: CharacterCapabilityConfigSchema,\n})\n\nexport const AvatarModelSchema = object({\n id: string(),\n characterId: string(),\n name: string(),\n type: AvatarModelTypeSchema,\n description: string(),\n config: AvatarModelConfigSchema,\n createdAt: DateSchema,\n updatedAt: DateSchema,\n})\n\nexport const CharacterI18nSchema = object({\n id: string(),\n characterId: string(),\n language: string(),\n name: string(),\n description: string(),\n tags: array(string()),\n createdAt: DateSchema,\n updatedAt: DateSchema,\n})\n\nexport const CharacterPromptSchema = object({\n id: string(),\n characterId: string(),\n language: string(),\n type: PromptTypeSchema,\n content: string(),\n})\n\n// --- Aggregated Character (with relations) ---\n\nexport const CharacterWithRelationsSchema = object({\n ...CharacterBaseSchema.entries,\n capabilities: array(CharacterCapabilitySchema),\n avatarModels: array(AvatarModelSchema),\n i18n: array(CharacterI18nSchema),\n prompts: array(CharacterPromptSchema),\n})\n\n// --- API Request Schemas ---\n\nexport const CreateCharacterSchema = object({\n character: object({\n version: string(),\n coverUrl: string(),\n characterId: string(),\n // creatorId & ownerId are handled by server\n }),\n capabilities: optional(array(object({\n type: CharacterCapabilityTypeSchema,\n config: CharacterCapabilityConfigSchema,\n }))),\n avatarModels: optional(array(object({\n name: string(),\n type: AvatarModelTypeSchema,\n description: string(),\n config: AvatarModelConfigSchema,\n }))),\n i18n: optional(array(object({\n language: string(),\n name: string(),\n description: string(),\n tags: array(string()),\n }))),\n prompts: optional(array(object({\n language: string(),\n type: PromptTypeSchema,\n content: string(),\n }))),\n})\n\nexport const UpdateCharacterSchema = object({\n version: optional(string()),\n coverUrl: optional(string()),\n characterId: optional(string()),\n})\n\n// --- Type Exports ---\n\nexport type Character = InferOutput<typeof CharacterWithRelationsSchema>\nexport type CharacterBase = InferOutput<typeof CharacterBaseSchema>\nexport type CharacterCapability = InferOutput<typeof CharacterCapabilitySchema>\nexport type AvatarModel = InferOutput<typeof AvatarModelSchema>\nexport type CharacterI18n = InferOutput<typeof CharacterI18nSchema>\nexport type CharacterPrompt = InferOutput<typeof CharacterPromptSchema>\n\nexport type CreateCharacterPayload = InferOutput<typeof CreateCharacterSchema>\nexport type UpdateCharacterPayload = InferOutput<typeof UpdateCharacterSchema>\n","<script setup lang=\"ts\">\nimport type { Character, CreateCharacterPayload } from '@proj-airi/stage-ui/types/character'\n\nimport { useCharacterStore } from '@proj-airi/stage-ui/stores/characters'\nimport { CreateCharacterSchema } from '@proj-airi/stage-ui/types/character'\nimport { Button, FieldInput } from '@proj-airi/ui'\nimport {\n DialogContent,\n DialogOverlay,\n DialogPortal,\n DialogRoot,\n DialogTitle,\n} from 'reka-ui'\nimport { safeParse } from 'valibot'\nimport { computed, reactive, ref, watch } from 'vue'\n\ninterface Props {\n modelValue: boolean\n character?: Character\n}\n\nconst props = defineProps<Props>()\nconst emit = defineEmits<{\n (e: 'update:modelValue', value: boolean): void\n (e: 'submit'): void\n}>()\n\nconst characterStore = useCharacterStore()\n\n// Form State\nconst form = reactive({\n characterId: '',\n version: '1.0.0',\n coverUrl: '',\n name: '',\n description: '',\n\n // Capability: LLM\n llmModel: '',\n llmTemperature: 0.7,\n\n // Capability: TTS\n ttsVoiceId: '',\n ttsSpeed: 1.0,\n})\n\n// Initialize form when character prop changes or dialog opens\nwatch(() => props.character, (char) => {\n if (char) {\n const i18n = char.i18n?.find(i => i.language === 'en') || char.i18n?.[0]\n const llm = char.capabilities?.find(c => c.type === 'llm')\n const tts = char.capabilities?.find(c => c.type === 'tts')\n\n form.characterId = char.characterId\n form.version = char.version\n form.coverUrl = char.coverUrl\n form.name = i18n?.name || ''\n form.description = i18n?.description || ''\n\n form.llmModel = llm?.config.llm?.model || ''\n form.llmTemperature = llm?.config.llm?.temperature || 0.7\n\n form.ttsVoiceId = tts?.config.tts?.voiceId || ''\n form.ttsSpeed = tts?.config.tts?.speed || 1.0\n }\n else {\n // Reset defaults\n form.characterId = ''\n form.version = '1.0.0'\n form.coverUrl = ''\n form.name = ''\n form.description = ''\n form.llmModel = 'gpt-4o-mini'\n form.llmTemperature = 0.7\n form.ttsVoiceId = ''\n form.ttsSpeed = 1.0\n }\n}, { immediate: true })\n\nconst errors = ref<Record<string, string>>({})\nconst isSubmitting = ref(false)\n\nasync function handleSubmit() {\n errors.value = {}\n isSubmitting.value = true\n\n // Construct Payload\n const payload: CreateCharacterPayload = {\n character: {\n characterId: form.characterId,\n version: form.version,\n coverUrl: form.coverUrl,\n },\n i18n: [{\n language: 'en',\n name: form.name,\n description: form.description,\n tags: [],\n }],\n capabilities: [\n {\n type: 'llm',\n config: {\n apiKey: '', // TODO: Handle secrets\n apiBaseUrl: '',\n llm: {\n model: form.llmModel,\n temperature: form.llmTemperature,\n },\n },\n },\n {\n type: 'tts',\n config: {\n apiKey: '',\n apiBaseUrl: '',\n tts: {\n voiceId: form.ttsVoiceId,\n speed: form.ttsSpeed,\n ssml: '',\n pitch: 1.0,\n },\n },\n },\n ],\n avatarModels: [], // TODO: Add avatar model support\n prompts: [], // TODO: Add prompt support\n }\n\n // Validate\n const result = safeParse(CreateCharacterSchema, payload)\n if (!result.success) {\n // Simple error mapping\n result.issues.forEach((issue) => {\n const path = issue.path?.map(p => p.key).join('.') || 'global'\n errors.value[path] = issue.message\n })\n isSubmitting.value = false\n return\n }\n\n try {\n if (props.character) {\n // TODO: Implement update logic (requires diffing or full replacement strategy on backend)\n // For now, we only support Create in this dialog fully or partial updates if we map correctly.\n // Since UpdateCharacterSchema is partial, we'd need a separate flow.\n // The current store.update takes UpdateCharacterPayload which is limited.\n // Let's assume Create for now or minimal Update.\n // Actually, let's just use create for new and warn for edit.\n await characterStore.update(props.character.id, {\n characterId: form.characterId,\n version: form.version,\n coverUrl: form.coverUrl,\n })\n // Capabilities/I18n update not supported in simple UpdateCharacterSchema yet?\n // Checking types/character.ts: UpdateCharacterSchema only has version, coverUrl, characterId.\n // So deep update is not supported by the simple endpoint yet?\n // The plan said \"update(id, payload)\".\n // The backend `update` endpoint only updates the `character` table fields.\n // To update relations, we'd need specific endpoints or a smarter update endpoint.\n // I will only update basic info for now.\n }\n else {\n await characterStore.create(payload)\n }\n emit('submit')\n emit('update:modelValue', false)\n }\n catch (err) {\n console.error(err)\n // Handle API errors\n }\n finally {\n isSubmitting.value = false\n }\n}\n\n// Tab State\nconst activeTab = ref('identity')\nconst tabs = [\n { id: 'identity', label: 'Identity', icon: 'i-solar:user-id-bold-duotone' },\n { id: 'capabilities', label: 'Capabilities', icon: 'i-solar:cpu-bolt-bold-duotone' },\n // { id: 'models', label: 'Models', icon: 'i-solar:box-minimalistic-bold-duotone' },\n]\n\nconst isOpen = computed({\n get: () => props.modelValue,\n set: val => emit('update:modelValue', val),\n})\n</script>\n\n<template>\n <DialogRoot v-model:open=\"isOpen\">\n <DialogPortal>\n <DialogOverlay class=\"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50 backdrop-blur-sm\" />\n <DialogContent class=\"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] fixed left-1/2 top-1/2 z-50 max-h-85vh max-w-2xl w-full overflow-hidden rounded-2xl bg-white p-0 shadow-xl -translate-x-1/2 -translate-y-1/2 dark:bg-neutral-900\">\n <div class=\"h-full flex flex-col\">\n <!-- Header -->\n <div class=\"flex items-center justify-between border-b border-neutral-100 p-4 dark:border-neutral-800\">\n <DialogTitle class=\"text-lg font-semibold\">\n {{ character ? 'Edit Character' : 'Create Character' }}\n </DialogTitle>\n <button class=\"rounded-full p-1 text-neutral-500 hover:bg-neutral-100 dark:hover:bg-neutral-800\" @click=\"isOpen = false\">\n <div i-solar:close-circle-bold class=\"text-xl\" />\n </button>\n </div>\n\n <!-- Body -->\n <div class=\"flex flex-1 overflow-hidden\">\n <!-- Sidebar / Tabs -->\n <div class=\"w-48 bg-neutral-50 p-2 dark:bg-neutral-900/50\">\n <button\n v-for=\"tab in tabs\"\n :key=\"tab.id\"\n class=\"mb-1 w-full flex items-center gap-2 rounded-lg px-3 py-2 text-sm font-medium transition-colors\"\n :class=\"activeTab === tab.id ? 'bg-white text-primary-600 shadow-sm dark:bg-neutral-800 dark:text-primary-400' : 'text-neutral-600 hover:bg-neutral-100 dark:text-neutral-400 dark:hover:bg-neutral-800'\"\n @click=\"activeTab = tab.id\"\n >\n <div :class=\"tab.icon\" />\n {{ tab.label }}\n </button>\n </div>\n\n <!-- Content -->\n <div class=\"flex-1 overflow-y-auto p-6\">\n <!-- Identity Tab -->\n <div v-show=\"activeTab === 'identity'\" class=\"space-y-4\">\n <div class=\"grid grid-cols-2 gap-4\">\n <FieldInput v-model=\"form.characterId\" label=\"Handle ID\" placeholder=\"e.g. airi-core\" required />\n <FieldInput v-model=\"form.version\" label=\"Version\" placeholder=\"1.0.0\" />\n </div>\n\n <FieldInput v-model=\"form.name\" label=\"Name (EN)\" placeholder=\"Character Name\" required />\n <FieldInput v-model=\"form.description\" label=\"Description\" type=\"textarea\" placeholder=\"Short description...\" />\n <FieldInput v-model=\"form.coverUrl\" label=\"Cover URL\" placeholder=\"https://...\" />\n </div>\n\n <!-- Capabilities Tab -->\n <div v-show=\"activeTab === 'capabilities'\" class=\"space-y-6\">\n <div class=\"space-y-4\">\n <h3 class=\"text-sm text-neutral-900 font-semibold dark:text-neutral-100\">\n LLM Configuration\n </h3>\n <FieldInput v-model=\"form.llmModel\" label=\"Model\" placeholder=\"gpt-4o\" />\n <!-- Use number input for temperature properly -->\n <div class=\"flex flex-col gap-1.5\">\n <label class=\"text-sm text-neutral-700 font-medium dark:text-neutral-300\">Temperature</label>\n <input\n v-model.number=\"form.llmTemperature\"\n type=\"number\"\n step=\"0.1\"\n min=\"0\"\n max=\"2\"\n class=\"w-full border border-neutral-200 rounded-lg bg-white px-3 py-2 text-sm outline-none dark:border-neutral-700 focus:border-primary-500 dark:bg-neutral-800 focus:ring-2 focus:ring-primary-500/20\"\n >\n </div>\n </div>\n\n <div class=\"space-y-4\">\n <h3 class=\"text-sm text-neutral-900 font-semibold dark:text-neutral-100\">\n TTS Configuration\n </h3>\n <FieldInput v-model=\"form.ttsVoiceId\" label=\"Voice ID\" placeholder=\"Voice ID\" />\n <div class=\"flex flex-col gap-1.5\">\n <label class=\"text-sm text-neutral-700 font-medium dark:text-neutral-300\">Speed</label>\n <input\n v-model.number=\"form.ttsSpeed\"\n type=\"number\"\n step=\"0.1\"\n min=\"0.5\"\n max=\"2\"\n class=\"w-full border border-neutral-200 rounded-lg bg-white px-3 py-2 text-sm outline-none dark:border-neutral-700 focus:border-primary-500 dark:bg-neutral-800 focus:ring-2 focus:ring-primary-500/20\"\n >\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Footer -->\n <div class=\"flex items-center justify-end gap-2 border-t border-neutral-100 p-4 dark:border-neutral-800\">\n <Button variant=\"ghost\" @click=\"isOpen = false\">\n Cancel\n </Button>\n <Button :loading=\"isSubmitting\" @click=\"handleSubmit\">\n {{ character ? 'Save Changes' : 'Create' }}\n </Button>\n </div>\n </div>\n </DialogContent>\n </DialogPortal>\n </DialogRoot>\n</template>\n","<script setup lang=\"ts\">\nimport type { Character, CreateCharacterPayload } from '@proj-airi/stage-ui/types/character'\n\nimport { useCharacterStore } from '@proj-airi/stage-ui/stores/characters'\nimport { CreateCharacterSchema } from '@proj-airi/stage-ui/types/character'\nimport { Button, FieldInput } from '@proj-airi/ui'\nimport {\n DialogContent,\n DialogOverlay,\n DialogPortal,\n DialogRoot,\n DialogTitle,\n} from 'reka-ui'\nimport { safeParse } from 'valibot'\nimport { computed, reactive, ref, watch } from 'vue'\n\ninterface Props {\n modelValue: boolean\n character?: Character\n}\n\nconst props = defineProps<Props>()\nconst emit = defineEmits<{\n (e: 'update:modelValue', value: boolean): void\n (e: 'submit'): void\n}>()\n\nconst characterStore = useCharacterStore()\n\n// Form State\nconst form = reactive({\n characterId: '',\n version: '1.0.0',\n coverUrl: '',\n name: '',\n description: '',\n\n // Capability: LLM\n llmModel: '',\n llmTemperature: 0.7,\n\n // Capability: TTS\n ttsVoiceId: '',\n ttsSpeed: 1.0,\n})\n\n// Initialize form when character prop changes or dialog opens\nwatch(() => props.character, (char) => {\n if (char) {\n const i18n = char.i18n?.find(i => i.language === 'en') || char.i18n?.[0]\n const llm = char.capabilities?.find(c => c.type === 'llm')\n const tts = char.capabilities?.find(c => c.type === 'tts')\n\n form.characterId = char.characterId\n form.version = char.version\n form.coverUrl = char.coverUrl\n form.name = i18n?.name || ''\n form.description = i18n?.description || ''\n\n form.llmModel = llm?.config.llm?.model || ''\n form.llmTemperature = llm?.config.llm?.temperature || 0.7\n\n form.ttsVoiceId = tts?.config.tts?.voiceId || ''\n form.ttsSpeed = tts?.config.tts?.speed || 1.0\n }\n else {\n // Reset defaults\n form.characterId = ''\n form.version = '1.0.0'\n form.coverUrl = ''\n form.name = ''\n form.description = ''\n form.llmModel = 'gpt-4o-mini'\n form.llmTemperature = 0.7\n form.ttsVoiceId = ''\n form.ttsSpeed = 1.0\n }\n}, { immediate: true })\n\nconst errors = ref<Record<string, string>>({})\nconst isSubmitting = ref(false)\n\nasync function handleSubmit() {\n errors.value = {}\n isSubmitting.value = true\n\n // Construct Payload\n const payload: CreateCharacterPayload = {\n character: {\n characterId: form.characterId,\n version: form.version,\n coverUrl: form.coverUrl,\n },\n i18n: [{\n language: 'en',\n name: form.name,\n description: form.description,\n tags: [],\n }],\n capabilities: [\n {\n type: 'llm',\n config: {\n apiKey: '', // TODO: Handle secrets\n apiBaseUrl: '',\n llm: {\n model: form.llmModel,\n temperature: form.llmTemperature,\n },\n },\n },\n {\n type: 'tts',\n config: {\n apiKey: '',\n apiBaseUrl: '',\n tts: {\n voiceId: form.ttsVoiceId,\n speed: form.ttsSpeed,\n ssml: '',\n pitch: 1.0,\n },\n },\n },\n ],\n avatarModels: [], // TODO: Add avatar model support\n prompts: [], // TODO: Add prompt support\n }\n\n // Validate\n const result = safeParse(CreateCharacterSchema, payload)\n if (!result.success) {\n // Simple error mapping\n result.issues.forEach((issue) => {\n const path = issue.path?.map(p => p.key).join('.') || 'global'\n errors.value[path] = issue.message\n })\n isSubmitting.value = false\n return\n }\n\n try {\n if (props.character) {\n // TODO: Implement update logic (requires diffing or full replacement strategy on backend)\n // For now, we only support Create in this dialog fully or partial updates if we map correctly.\n // Since UpdateCharacterSchema is partial, we'd need a separate flow.\n // The current store.update takes UpdateCharacterPayload which is limited.\n // Let's assume Create for now or minimal Update.\n // Actually, let's just use create for new and warn for edit.\n await characterStore.update(props.character.id, {\n characterId: form.characterId,\n version: form.version,\n coverUrl: form.coverUrl,\n })\n // Capabilities/I18n update not supported in simple UpdateCharacterSchema yet?\n // Checking types/character.ts: UpdateCharacterSchema only has version, coverUrl, characterId.\n // So deep update is not supported by the simple endpoint yet?\n // The plan said \"update(id, payload)\".\n // The backend `update` endpoint only updates the `character` table fields.\n // To update relations, we'd need specific endpoints or a smarter update endpoint.\n // I will only update basic info for now.\n }\n else {\n await characterStore.create(payload)\n }\n emit('submit')\n emit('update:modelValue', false)\n }\n catch (err) {\n console.error(err)\n // Handle API errors\n }\n finally {\n isSubmitting.value = false\n }\n}\n\n// Tab State\nconst activeTab = ref('identity')\nconst tabs = [\n { id: 'identity', label: 'Identity', icon: 'i-solar:user-id-bold-duotone' },\n { id: 'capabilities', label: 'Capabilities', icon: 'i-solar:cpu-bolt-bold-duotone' },\n // { id: 'models', label: 'Models', icon: 'i-solar:box-minimalistic-bold-duotone' },\n]\n\nconst isOpen = computed({\n get: () => props.modelValue,\n set: val => emit('update:modelValue', val),\n})\n</script>\n\n<template>\n <DialogRoot v-model:open=\"isOpen\">\n <DialogPortal>\n <DialogOverlay class=\"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50 backdrop-blur-sm\" />\n <DialogContent class=\"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] fixed left-1/2 top-1/2 z-50 max-h-85vh max-w-2xl w-full overflow-hidden rounded-2xl bg-white p-0 shadow-xl -translate-x-1/2 -translate-y-1/2 dark:bg-neutral-900\">\n <div class=\"h-full flex flex-col\">\n <!-- Header -->\n <div class=\"flex items-center justify-between border-b border-neutral-100 p-4 dark:border-neutral-800\">\n <DialogTitle class=\"text-lg font-semibold\">\n {{ character ? 'Edit Character' : 'Create Character' }}\n </DialogTitle>\n <button class=\"rounded-full p-1 text-neutral-500 hover:bg-neutral-100 dark:hover:bg-neutral-800\" @click=\"isOpen = false\">\n <div i-solar:close-circle-bold class=\"text-xl\" />\n </button>\n </div>\n\n <!-- Body -->\n <div class=\"flex flex-1 overflow-hidden\">\n <!-- Sidebar / Tabs -->\n <div class=\"w-48 bg-neutral-50 p-2 dark:bg-neutral-900/50\">\n <button\n v-for=\"tab in tabs\"\n :key=\"tab.id\"\n class=\"mb-1 w-full flex items-center gap-2 rounded-lg px-3 py-2 text-sm font-medium transition-colors\"\n :class=\"activeTab === tab.id ? 'bg-white text-primary-600 shadow-sm dark:bg-neutral-800 dark:text-primary-400' : 'text-neutral-600 hover:bg-neutral-100 dark:text-neutral-400 dark:hover:bg-neutral-800'\"\n @click=\"activeTab = tab.id\"\n >\n <div :class=\"tab.icon\" />\n {{ tab.label }}\n </button>\n </div>\n\n <!-- Content -->\n <div class=\"flex-1 overflow-y-auto p-6\">\n <!-- Identity Tab -->\n <div v-show=\"activeTab === 'identity'\" class=\"space-y-4\">\n <div class=\"grid grid-cols-2 gap-4\">\n <FieldInput v-model=\"form.characterId\" label=\"Handle ID\" placeholder=\"e.g. airi-core\" required />\n <FieldInput v-model=\"form.version\" label=\"Version\" placeholder=\"1.0.0\" />\n </div>\n\n <FieldInput v-model=\"form.name\" label=\"Name (EN)\" placeholder=\"Character Name\" required />\n <FieldInput v-model=\"form.description\" label=\"Description\" type=\"textarea\" placeholder=\"Short description...\" />\n <FieldInput v-model=\"form.coverUrl\" label=\"Cover URL\" placeholder=\"https://...\" />\n </div>\n\n <!-- Capabilities Tab -->\n <div v-show=\"activeTab === 'capabilities'\" class=\"space-y-6\">\n <div class=\"space-y-4\">\n <h3 class=\"text-sm text-neutral-900 font-semibold dark:text-neutral-100\">\n LLM Configuration\n </h3>\n <FieldInput v-model=\"form.llmModel\" label=\"Model\" placeholder=\"gpt-4o\" />\n <!-- Use number input for temperature properly -->\n <div class=\"flex flex-col gap-1.5\">\n <label class=\"text-sm text-neutral-700 font-medium dark:text-neutral-300\">Temperature</label>\n <input\n v-model.number=\"form.llmTemperature\"\n type=\"number\"\n step=\"0.1\"\n min=\"0\"\n max=\"2\"\n class=\"w-full border border-neutral-200 rounded-lg bg-white px-3 py-2 text-sm outline-none dark:border-neutral-700 focus:border-primary-500 dark:bg-neutral-800 focus:ring-2 focus:ring-primary-500/20\"\n >\n </div>\n </div>\n\n <div class=\"space-y-4\">\n <h3 class=\"text-sm text-neutral-900 font-semibold dark:text-neutral-100\">\n TTS Configuration\n </h3>\n <FieldInput v-model=\"form.ttsVoiceId\" label=\"Voice ID\" placeholder=\"Voice ID\" />\n <div class=\"flex flex-col gap-1.5\">\n <label class=\"text-sm text-neutral-700 font-medium dark:text-neutral-300\">Speed</label>\n <input\n v-model.number=\"form.ttsSpeed\"\n type=\"number\"\n step=\"0.1\"\n min=\"0.5\"\n max=\"2\"\n class=\"w-full border border-neutral-200 rounded-lg bg-white px-3 py-2 text-sm outline-none dark:border-neutral-700 focus:border-primary-500 dark:bg-neutral-800 focus:ring-2 focus:ring-primary-500/20\"\n >\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Footer -->\n <div class=\"flex items-center justify-end gap-2 border-t border-neutral-100 p-4 dark:border-neutral-800\">\n <Button variant=\"ghost\" @click=\"isOpen = false\">\n Cancel\n </Button>\n <Button :loading=\"isSubmitting\" @click=\"handleSubmit\">\n {{ character ? 'Save Changes' : 'Create' }}\n </Button>\n </div>\n </div>\n </DialogContent>\n </DialogPortal>\n </DialogRoot>\n</template>\n"],"x_google_ignoreList":[0,1,2],"mappings":"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"}
assets/CharacterItem-BprHfsUC.js ADDED
@@ -0,0 +1,2 @@
 
 
 
1
+ import{A as e,C as t,K as n,Pt as r,S as i,b as a,f as o,jt as s,kt as c,lt as l,w as u,x as d}from"./vue.runtime.esm-bundler-_ZPRHVd_.js";import{Y as f}from"./components-C_14MOg3.js";var p={class:`after:bg-size-10px after:mask-image-[linear-gradient(165deg,white_30%,transparent_50%)] relative flex flex-1 flex-col justify-between gap-3 overflow-hidden rounded-lg bg-white p-5 text-primary-600/80 transition-all duration-400 ease-in-out after:absolute after:inset-0 after:z--2 after:h-full after:w-full dark:bg-neutral-900 dark:text-primary-300/80 after:transition-all after:duration-400 after:ease-in-out after:content-empty after:bg-dotted-[neutral-200/80] dark:after:bg-dotted-[primary-200/20] hover:after:bg-dotted-[primary-300/50]`},m={class:`z-1 flex items-start justify-between gap-2`},h={class:`flex-1 truncate text-lg font-normal`},g={key:0,class:`shrink-0 rounded-md bg-primary-100 p-1 text-primary-600 dark:bg-primary-900/40 dark:text-primary-400`},_={key:0,class:`line-clamp-3 min-h-40px flex-1 text-sm text-neutral-500 dark:text-neutral-400`},v={class:`z-1 flex items-center justify-between text-xs text-neutral-500 dark:text-neutral-400`},y={class:`flex items-center gap-1.5`},b={class:`flex items-center gap-0.5`},x={class:`flex items-center gap-0.5`},S={class:`flex items-center justify-end px-2 py-1.5`},C=[`disabled`],w=e({__name:`CharacterItem`,props:{character:{},isActive:{type:Boolean},isSelected:{type:Boolean}},emits:[`select`,`activate`,`delete`],setup(e,{emit:w}){let T=e,E=w,D=a(()=>{if(T.character.i18n?.length)return T.character.i18n.find(e=>e.language===`en`)||T.character.i18n[0]}),O=a(()=>D.value?.name||`Unknown`),k=a(()=>D.value?.description||``),A=a(()=>T.character.capabilities&&T.character.capabilities.find(e=>e.type===`llm`)?.config.llm?.model||`-`),j=a(()=>T.character.capabilities&&T.character.capabilities.find(e=>e.type===`tts`)?.config.tts?.voiceId||`-`);return(a,w)=>(n(),i(c(f),{class:s([`before:mask-image-[linear-gradient(120deg,white_100%)] before:bg-linear-to-r hover:before:bg-linear-to-r relative min-h-120px flex flex-col cursor-pointer overflow-hidden rounded-xl bg-neutral-200/50 drop-shadow-none transition-all duration-400 ease-in-out before:absolute before:inset-0 before:z-0 before:h-full before:w-25% dark:bg-neutral-800/50 before:from-primary-500/0 before:to-primary-500/0 before:opacity-0 active:drop-shadow-[0px_0px_0px_rgba(220,220,220,0.25)] hover:drop-shadow-[0px_4px_4px_rgba(220,220,220,0.4)] before:transition-all before:duration-400 before:ease-in-out before:content-empty dark:before:from-primary-400/0 hover:before:from-primary-500/20 hover:before:via-primary-500/10 dark:before:to-primary-400/0 hover:before:to-transparent hover:before:opacity-100 dark:hover:drop-shadow-none dark:hover:before:from-primary-400/20 dark:hover:before:via-primary-400/10 dark:hover:before:to-transparent`,[e.isSelected?`border-2 border-primary-400 dark:border-primary-600`:`border-2 border-neutral-100 dark:border-neutral-800/25`]]),onClick:w[2]||=e=>E(`select`)},{default:l(()=>[d(`div`,p,[d(`div`,m,[d(`h3`,h,r(O.value),1),e.isActive?(n(),u(`div`,g,[...w[3]||=[d(`div`,{class:`i-solar:check-circle-bold-duotone text-sm`},null,-1)]])):t(``,!0)]),k.value?(n(),u(`p`,_,r(k.value),1)):t(``,!0),d(`div`,v,[d(`div`,null,`v`+r(e.character.version),1),d(`div`,y,[d(`div`,b,[w[4]||=d(`div`,{class:`i-lucide:ghost text-xs`},null,-1),d(`span`,null,r(A.value),1)]),d(`div`,x,[w[5]||=d(`div`,{class:`i-lucide:mic text-xs`},null,-1),d(`span`,null,r(j.value),1)])])])]),d(`div`,S,[d(`button`,{class:`rounded-lg p-1.5 transition-colors hover:bg-neutral-200 dark:hover:bg-neutral-700/50`,disabled:e.isActive,onClick:w[0]||=o(e=>E(`activate`),[`stop`])},[d(`div`,{class:s([e.isActive?`i-solar:check-circle-bold-duotone text-primary-500 dark:text-primary-400`:`i-solar:play-circle-broken text-neutral-500 dark:text-neutral-400`])},null,2)],8,C),d(`button`,{class:`rounded-lg p-1.5 transition-colors hover:bg-neutral-200 dark:hover:bg-neutral-700/50`,onClick:w[1]||=o(e=>E(`delete`),[`stop`])},[...w[6]||=[d(`div`,{class:`i-solar:trash-bin-trash-linear text-neutral-500 dark:text-neutral-400`},null,-1)]])])]),_:1},8,[`class`]))}});export{w as t};
2
+ //# sourceMappingURL=CharacterItem-BprHfsUC.js.map
assets/CharacterItem-BprHfsUC.js.map ADDED
@@ -0,0 +1 @@
 
 
1
+ {"version":3,"file":"CharacterItem-BprHfsUC.js","names":[],"sources":["../../src/pages/settings/characters/components/CharacterItem.vue","../../src/pages/settings/characters/components/CharacterItem.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { Character } from '@proj-airi/stage-ui/types/character'\n\nimport { CursorFloating } from '@proj-airi/stage-ui/components'\nimport { computed } from 'vue'\n\ninterface Props {\n character: Character\n isActive: boolean\n isSelected: boolean\n}\n\nconst props = defineProps<Props>()\nconst emit = defineEmits<{\n (e: 'select'): void\n (e: 'activate'): void\n (e: 'delete'): void\n}>()\n\nconst i18n = computed(() => {\n // TODO: Use current locale\n if (!props.character.i18n?.length)\n return undefined\n return props.character.i18n.find(i => i.language === 'en') || props.character.i18n[0]\n})\n\nconst name = computed(() => i18n.value?.name || 'Unknown')\nconst description = computed(() => i18n.value?.description || '')\n\nconst consciousnessModel = computed(() => {\n if (!props.character.capabilities)\n return '-'\n const cap = props.character.capabilities.find(c => c.type === 'llm')\n return cap?.config.llm?.model || '-'\n})\n\nconst voiceModel = computed(() => {\n if (!props.character.capabilities)\n return '-'\n const cap = props.character.capabilities.find(c => c.type === 'tts')\n return cap?.config.tts?.voiceId || '-'\n})\n</script>\n\n<template>\n <CursorFloating\n class=\"before:mask-image-[linear-gradient(120deg,white_100%)] before:bg-linear-to-r hover:before:bg-linear-to-r relative min-h-120px flex flex-col cursor-pointer overflow-hidden rounded-xl bg-neutral-200/50 drop-shadow-none transition-all duration-400 ease-in-out before:absolute before:inset-0 before:z-0 before:h-full before:w-25% dark:bg-neutral-800/50 before:from-primary-500/0 before:to-primary-500/0 before:opacity-0 active:drop-shadow-[0px_0px_0px_rgba(220,220,220,0.25)] hover:drop-shadow-[0px_4px_4px_rgba(220,220,220,0.4)] before:transition-all before:duration-400 before:ease-in-out before:content-empty dark:before:from-primary-400/0 hover:before:from-primary-500/20 hover:before:via-primary-500/10 dark:before:to-primary-400/0 hover:before:to-transparent hover:before:opacity-100 dark:hover:drop-shadow-none dark:hover:before:from-primary-400/20 dark:hover:before:via-primary-400/10 dark:hover:before:to-transparent\"\n :class=\"[\n isSelected\n ? 'border-2 border-primary-400 dark:border-primary-600'\n : 'border-2 border-neutral-100 dark:border-neutral-800/25',\n ]\"\n @click=\"emit('select')\"\n >\n <!-- Card content -->\n <div\n class=\"after:bg-size-10px after:mask-image-[linear-gradient(165deg,white_30%,transparent_50%)] relative flex flex-1 flex-col justify-between gap-3 overflow-hidden rounded-lg bg-white p-5 text-primary-600/80 transition-all duration-400 ease-in-out after:absolute after:inset-0 after:z--2 after:h-full after:w-full dark:bg-neutral-900 dark:text-primary-300/80 after:transition-all after:duration-400 after:ease-in-out after:content-empty after:bg-dotted-[neutral-200/80] dark:after:bg-dotted-[primary-200/20] hover:after:bg-dotted-[primary-300/50]\"\n >\n <!-- Card header (name and badge) -->\n <div class=\"z-1 flex items-start justify-between gap-2\">\n <h3 class=\"flex-1 truncate text-lg font-normal\">\n {{ name }}\n </h3>\n <div v-if=\"isActive\" class=\"shrink-0 rounded-md bg-primary-100 p-1 text-primary-600 dark:bg-primary-900/40 dark:text-primary-400\">\n <div class=\"i-solar:check-circle-bold-duotone text-sm\" />\n </div>\n </div>\n\n <!-- Card description -->\n <p v-if=\"description\" class=\"line-clamp-3 min-h-40px flex-1 text-sm text-neutral-500 dark:text-neutral-400\">\n {{ description }}\n </p>\n\n <!-- Card stats -->\n <div class=\"z-1 flex items-center justify-between text-xs text-neutral-500 dark:text-neutral-400\">\n <div>v{{ character.version }}</div>\n <div class=\"flex items-center gap-1.5\">\n <div class=\"flex items-center gap-0.5\">\n <div class=\"i-lucide:ghost text-xs\" />\n <span>{{ consciousnessModel }}</span>\n </div>\n <div class=\"flex items-center gap-0.5\">\n <div class=\"i-lucide:mic text-xs\" />\n <span>{{ voiceModel }}</span>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Card actions -->\n <div class=\"flex items-center justify-end px-2 py-1.5\">\n <button\n class=\"rounded-lg p-1.5 transition-colors hover:bg-neutral-200 dark:hover:bg-neutral-700/50\"\n :disabled=\"isActive\"\n @click.stop=\"emit('activate')\"\n >\n <div\n :class=\"[\n isActive\n ? 'i-solar:check-circle-bold-duotone text-primary-500 dark:text-primary-400'\n : 'i-solar:play-circle-broken text-neutral-500 dark:text-neutral-400',\n ]\"\n />\n </button>\n\n <button\n class=\"rounded-lg p-1.5 transition-colors hover:bg-neutral-200 dark:hover:bg-neutral-700/50\"\n @click.stop=\"emit('delete')\"\n >\n <div class=\"i-solar:trash-bin-trash-linear text-neutral-500 dark:text-neutral-400\" />\n </button>\n </div>\n </CursorFloating>\n</template>\n","<script setup lang=\"ts\">\nimport type { Character } from '@proj-airi/stage-ui/types/character'\n\nimport { CursorFloating } from '@proj-airi/stage-ui/components'\nimport { computed } from 'vue'\n\ninterface Props {\n character: Character\n isActive: boolean\n isSelected: boolean\n}\n\nconst props = defineProps<Props>()\nconst emit = defineEmits<{\n (e: 'select'): void\n (e: 'activate'): void\n (e: 'delete'): void\n}>()\n\nconst i18n = computed(() => {\n // TODO: Use current locale\n if (!props.character.i18n?.length)\n return undefined\n return props.character.i18n.find(i => i.language === 'en') || props.character.i18n[0]\n})\n\nconst name = computed(() => i18n.value?.name || 'Unknown')\nconst description = computed(() => i18n.value?.description || '')\n\nconst consciousnessModel = computed(() => {\n if (!props.character.capabilities)\n return '-'\n const cap = props.character.capabilities.find(c => c.type === 'llm')\n return cap?.config.llm?.model || '-'\n})\n\nconst voiceModel = computed(() => {\n if (!props.character.capabilities)\n return '-'\n const cap = props.character.capabilities.find(c => c.type === 'tts')\n return cap?.config.tts?.voiceId || '-'\n})\n</script>\n\n<template>\n <CursorFloating\n class=\"before:mask-image-[linear-gradient(120deg,white_100%)] before:bg-linear-to-r hover:before:bg-linear-to-r relative min-h-120px flex flex-col cursor-pointer overflow-hidden rounded-xl bg-neutral-200/50 drop-shadow-none transition-all duration-400 ease-in-out before:absolute before:inset-0 before:z-0 before:h-full before:w-25% dark:bg-neutral-800/50 before:from-primary-500/0 before:to-primary-500/0 before:opacity-0 active:drop-shadow-[0px_0px_0px_rgba(220,220,220,0.25)] hover:drop-shadow-[0px_4px_4px_rgba(220,220,220,0.4)] before:transition-all before:duration-400 before:ease-in-out before:content-empty dark:before:from-primary-400/0 hover:before:from-primary-500/20 hover:before:via-primary-500/10 dark:before:to-primary-400/0 hover:before:to-transparent hover:before:opacity-100 dark:hover:drop-shadow-none dark:hover:before:from-primary-400/20 dark:hover:before:via-primary-400/10 dark:hover:before:to-transparent\"\n :class=\"[\n isSelected\n ? 'border-2 border-primary-400 dark:border-primary-600'\n : 'border-2 border-neutral-100 dark:border-neutral-800/25',\n ]\"\n @click=\"emit('select')\"\n >\n <!-- Card content -->\n <div\n class=\"after:bg-size-10px after:mask-image-[linear-gradient(165deg,white_30%,transparent_50%)] relative flex flex-1 flex-col justify-between gap-3 overflow-hidden rounded-lg bg-white p-5 text-primary-600/80 transition-all duration-400 ease-in-out after:absolute after:inset-0 after:z--2 after:h-full after:w-full dark:bg-neutral-900 dark:text-primary-300/80 after:transition-all after:duration-400 after:ease-in-out after:content-empty after:bg-dotted-[neutral-200/80] dark:after:bg-dotted-[primary-200/20] hover:after:bg-dotted-[primary-300/50]\"\n >\n <!-- Card header (name and badge) -->\n <div class=\"z-1 flex items-start justify-between gap-2\">\n <h3 class=\"flex-1 truncate text-lg font-normal\">\n {{ name }}\n </h3>\n <div v-if=\"isActive\" class=\"shrink-0 rounded-md bg-primary-100 p-1 text-primary-600 dark:bg-primary-900/40 dark:text-primary-400\">\n <div class=\"i-solar:check-circle-bold-duotone text-sm\" />\n </div>\n </div>\n\n <!-- Card description -->\n <p v-if=\"description\" class=\"line-clamp-3 min-h-40px flex-1 text-sm text-neutral-500 dark:text-neutral-400\">\n {{ description }}\n </p>\n\n <!-- Card stats -->\n <div class=\"z-1 flex items-center justify-between text-xs text-neutral-500 dark:text-neutral-400\">\n <div>v{{ character.version }}</div>\n <div class=\"flex items-center gap-1.5\">\n <div class=\"flex items-center gap-0.5\">\n <div class=\"i-lucide:ghost text-xs\" />\n <span>{{ consciousnessModel }}</span>\n </div>\n <div class=\"flex items-center gap-0.5\">\n <div class=\"i-lucide:mic text-xs\" />\n <span>{{ voiceModel }}</span>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Card actions -->\n <div class=\"flex items-center justify-end px-2 py-1.5\">\n <button\n class=\"rounded-lg p-1.5 transition-colors hover:bg-neutral-200 dark:hover:bg-neutral-700/50\"\n :disabled=\"isActive\"\n @click.stop=\"emit('activate')\"\n >\n <div\n :class=\"[\n isActive\n ? 'i-solar:check-circle-bold-duotone text-primary-500 dark:text-primary-400'\n : 'i-solar:play-circle-broken text-neutral-500 dark:text-neutral-400',\n ]\"\n />\n </button>\n\n <button\n class=\"rounded-lg p-1.5 transition-colors hover:bg-neutral-200 dark:hover:bg-neutral-700/50\"\n @click.stop=\"emit('delete')\"\n >\n <div class=\"i-solar:trash-bin-trash-linear text-neutral-500 dark:text-neutral-400\" />\n </button>\n </div>\n </CursorFloating>\n</template>\n"],"mappings":"m9CCYA,IAAM,EAAQ,EACR,EAAO,EAMP,EAAO,MAAe,CAErB,KAAM,UAAU,MAAM,OAE3B,OAAO,EAAM,UAAU,KAAK,KAAK,GAAK,EAAE,WAAa,KAAK,EAAI,EAAM,UAAU,KAAK,IACpF,CAEK,EAAO,MAAe,EAAK,OAAO,MAAQ,UAAS,CACnD,EAAc,MAAe,EAAK,OAAO,aAAe,GAAE,CAE1D,EAAqB,MACpB,EAAM,UAAU,cAET,EAAM,UAAU,aAAa,KAAK,GAAK,EAAE,OAAS,MAAK,EACvD,OAAO,KAAK,OAFf,IAGV,CAEK,EAAa,MACZ,EAAM,UAAU,cAET,EAAM,UAAU,aAAa,KAAK,GAAK,EAAE,OAAS,MAAK,EACvD,OAAO,KAAK,SAFf,IAGV,mBAIC,EAmEiB,EAAA,EAAA,CAAA,CAlEf,MAAK,EAAA,CAAC,45BAA25B,CACj5B,EAAA,WAAA,sDAAA,yDAAA,CAAA,CAAA,CAKf,QAAK,AAAA,EAAA,KAAA,GAAE,EAAI,SAAA,iBAmCN,CAhCN,EAgCM,MAhCN,EAgCM,CA5BJ,EAOM,MAPN,EAOM,CANJ,EAEK,KAFL,EAEK,EADA,EAAA,MAAI,CAAA,EAAA,CAEE,EAAA,UAAA,GAAA,CAAX,EAEM,MAFN,EAEM,CAAA,GAAA,AAAA,EAAA,KAAA,CADJ,EAAyD,MAAA,CAApD,MAAM,4CAA2C,CAAA,KAAA,GAAA,CAAA,CAAA,CAAA,EAAA,EAAA,GAAA,GAAA,CAAA,CAAA,CAKjD,EAAA,OAAA,GAAA,CAAT,EAEI,IAFJ,EAEI,EADC,EAAA,MAAW,CAAA,EAAA,EAAA,EAAA,GAAA,GAAA,CAIhB,EAYM,MAZN,EAYM,CAXJ,EAAmC,MAAA,KAA9B,IAAC,EAAG,EAAA,UAAU,QAAO,CAAA,EAAA,CAC1B,EASM,MATN,EASM,CARJ,EAGM,MAHN,EAGM,CAAA,AAAA,EAAA,KAFJ,EAAsC,MAAA,CAAjC,MAAM,yBAAwB,CAAA,KAAA,GAAA,CACnC,EAAqC,OAAA,KAAA,EAA5B,EAAA,MAAkB,CAAA,EAAA,CAAA,CAAA,CAE7B,EAGM,MAHN,EAGM,CAAA,AAAA,EAAA,KAFJ,EAAoC,MAAA,CAA/B,MAAM,uBAAsB,CAAA,KAAA,GAAA,CACjC,EAA6B,OAAA,KAAA,EAApB,EAAA,MAAU,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAO3B,EAqBM,MArBN,EAqBM,CApBJ,EAYS,SAAA,CAXP,MAAM,uFACL,SAAU,EAAA,SACV,QAAK,AAAA,EAAA,KAAA,EAAA,GAAO,EAAI,WAAA,CAAA,CAAA,OAAA,CAAA,GAEjB,EAME,MAAA,CALC,MAAK,EAAA,CAAgB,EAAA,SAAA,2EAAA,oEAAA,CAAA,CAAA,CAAA,KAAA,EAAA,CAAA,CAAA,EAAA,EAAA,CAQ1B,EAKS,SAAA,CAJP,MAAM,uFACL,QAAK,AAAA,EAAA,KAAA,EAAA,GAAO,EAAI,SAAA,CAAA,CAAA,OAAA,CAAA,cAEjB,EAAqF,MAAA,CAAhF,MAAM,wEAAuE,CAAA,KAAA,GAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA"}
assets/CharacterItem-BqI3QQb-.js ADDED
@@ -0,0 +1 @@
 
 
1
+ import"./settings-HpNQcYmx.js";import"./src-CuCahbAr.js";import"./widgets-DKs3SdKb.js";import"./components-C_14MOg3.js";import"./environment-B9MED9Mn.js";import"./constants-CJcJrBhf.js";import"./speech-CZOrJx0w.js";import"./purify.es-Cr7Ra6ys.js";import"./queues-C4nZtLkC.js";import"./resettable--O0wHmRQ.js";import"./libs-D0vU3suT.js";import"./stream-transcription-BWzrFso9.js";import"./browser-COTffbCo.js";import"./transformers.web-BIjUcao2.js";import"./__vite-browser-external-OxRfFa9r.js";import{t as e}from"./CharacterItem-BprHfsUC.js";export{e as default};
assets/DeleteCardDialog-Bwf_d6r8.js ADDED
@@ -0,0 +1 @@
 
 
1
+ import"./src-CuCahbAr.js";import{t as e}from"./DeleteCardDialog-DGeRVWYm.js";export{e as default};
assets/DeleteCardDialog-D8U6WRmc.js DELETED
@@ -1 +0,0 @@
1
- import"./src-B0kTFhyw.js";import{t as e}from"./DeleteCardDialog-BMxA6Ls7.js";export{e as default};
 
 
assets/{DeleteCardDialog-BMxA6Ls7.js β†’ DeleteCardDialog-DGeRVWYm.js} RENAMED
@@ -1,2 +1,2 @@
1
- import{A as e,B as t,K as n,M as r,Mt as i,O as a,Pt as o,S as s,W as c,Y as l,f as u,k as d,kt as f,lt as p,x as m,xt as h,z as g}from"./vue.runtime.esm-bundler-_ZPRHVd_.js";import{N as _,U as v,V as y,i as b,it as x,z as S}from"./src-B0kTFhyw.js";import{h as C,i as w,m as T,n as E,r as D,t as O}from"./DialogTitle-WndXCd57.js";import{n as k}from"./vue-i18n.runtime-BK0j12fm.js";var A=e({__name:`DialogClose`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`button`}},setup(e){let t=e;y();let r=C();return(e,i)=>(n(),s(f(_),g(t,{type:e.as===`button`?`button`:void 0,onClick:i[0]||=e=>f(r).onOpenChange(!1)}),{default:p(()=>[l(e.$slots,`default`)]),_:3},16,[`type`]))}}),j=e({__name:`DialogDescription`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`p`}},setup(e){let t=e;y();let r=C();return(e,i)=>(n(),s(f(_),g(t,{id:f(r).descriptionId}),{default:p(()=>[l(e.$slots,`default`)]),_:3},16,[`id`]))}}),M=e({__name:`AlertDialogAction`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`button`}},setup(e){let t=e;return y(),(e,a)=>(n(),s(f(A),i(r(t)),{default:p(()=>[l(e.$slots,`default`)]),_:3},16))}}),[N,P]=x(`AlertDialogContent`),F=e({__name:`AlertDialogContent`,props:{forceMount:{type:Boolean,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`openAutoFocus`,`closeAutoFocus`],setup(e,{emit:r}){let i=e,a=v(r);y();let o=h();return P({onCancelElementChange:e=>{o.value=e}}),(e,r)=>(n(),s(f(w),g({...i,...f(a)},{role:`alertdialog`,onPointerDownOutside:r[0]||=u(()=>{},[`prevent`]),onInteractOutside:r[1]||=u(()=>{},[`prevent`]),onOpenAutoFocus:r[2]||=()=>{t(()=>{o.value?.focus({preventScroll:!0})})}}),{default:p(()=>[l(e.$slots,`default`)]),_:3},16))}}),I=e({__name:`AlertDialogCancel`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`button`}},setup(e){let t=e,r=N(),{forwardRef:i,currentElement:a}=y();return c(()=>{r.onCancelElementChange(a.value)}),(e,r)=>(n(),s(f(A),g(t,{ref:f(i)}),{default:p(()=>[l(e.$slots,`default`)]),_:3},16))}}),L=e({__name:`AlertDialogDescription`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`p`}},setup(e){let t=e;return y(),(e,a)=>(n(),s(f(j),i(r(t)),{default:p(()=>[l(e.$slots,`default`)]),_:3},16))}}),R=e({__name:`AlertDialogOverlay`,props:{forceMount:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){let t=e;return y(),(e,a)=>(n(),s(f(D),i(r(t)),{default:p(()=>[l(e.$slots,`default`)]),_:3},16))}}),z=e({__name:`AlertDialogPortal`,props:{to:{type:null,required:!1},disabled:{type:Boolean,required:!1},defer:{type:Boolean,required:!1},forceMount:{type:Boolean,required:!1}},setup(e){let t=e;return(e,a)=>(n(),s(f(E),i(r(t)),{default:p(()=>[l(e.$slots,`default`)]),_:3},16))}}),B=e({__name:`AlertDialogRoot`,props:{open:{type:Boolean,required:!1},defaultOpen:{type:Boolean,required:!1}},emits:[`update:open`],setup(e,{emit:t}){let a=S(e,t);return y(),(e,t)=>(n(),s(f(T),g(f(a),{modal:!0}),{default:p(t=>[l(e.$slots,`default`,i(r(t)))]),_:3},16))}}),V=e({__name:`AlertDialogTitle`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`h2`}},setup(e){let t=e;return y(),(e,a)=>(n(),s(f(O),i(r(t)),{default:p(()=>[l(e.$slots,`default`)]),_:3},16))}}),H={class:`flex flex-row justify-end gap-3`},U=e({__name:`DeleteCardDialog`,props:{modelValue:{type:Boolean},cardName:{}},emits:[`update:modelValue`,`confirm`,`cancel`],setup(e,{emit:t}){let r=t,{t:i}=k();function c(){r(`update:modelValue`,!1),r(`cancel`)}function l(){r(`update:modelValue`,!1),r(`confirm`)}return(t,u)=>(n(),s(f(B),{open:e.modelValue,"onUpdate:open":u[0]||=e=>r(`update:modelValue`,e)},{default:p(()=>[d(f(z),null,{default:p(()=>[d(f(R),{class:`fixed inset-0 z-100 bg-black/50 data-[state=closed]:animate-fadeOut data-[state=open]:animate-fadeIn`}),d(f(F),{class:`fixed left-1/2 top-1/2 z-100 max-w-md w-full border border-neutral-200 rounded-xl bg-white p-6 shadow-xl -translate-x-1/2 -translate-y-1/2 data-[state=closed]:animate-contentHide data-[state=open]:animate-contentShow dark:border-neutral-700 dark:bg-neutral-800`},{default:p(()=>[d(f(V),{class:`mb-4 text-xl font-normal`},{default:p(()=>[a(o(f(i)(`settings.pages.card.delete_card`)),1)]),_:1}),d(f(L),{class:`mb-6`},{default:p(()=>[a(o(f(i)(`settings.pages.card.delete_confirmation`))+` `,1),m(`b`,null,`"`+o(e.cardName||``)+`"`,1)]),_:1}),m(`div`,H,[d(f(I),{"as-child":``},{default:p(()=>[d(f(b),{variant:`secondary`,label:f(i)(`settings.pages.card.cancel`),onClick:c},null,8,[`label`])]),_:1}),d(f(M),{"as-child":``},{default:p(()=>[d(f(b),{variant:`danger`,label:f(i)(`settings.pages.card.delete`),onClick:l},null,8,[`label`])]),_:1})])]),_:1})]),_:1})]),_:1},8,[`open`]))}});export{U as t};
2
- //# sourceMappingURL=DeleteCardDialog-BMxA6Ls7.js.map
 
1
+ import{A as e,B as t,K as n,M as r,Mt as i,O as a,Pt as o,S as s,W as c,Y as l,f as u,k as d,kt as f,lt as p,x as m,xt as h,z as g}from"./vue.runtime.esm-bundler-_ZPRHVd_.js";import{N as _,U as v,V as y,i as b,it as x,z as S}from"./src-CuCahbAr.js";import{h as C,i as w,m as T,n as E,r as D,t as O}from"./DialogTitle-D6_neaY1.js";import{n as k}from"./vue-i18n.runtime-BK0j12fm.js";var A=e({__name:`DialogClose`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`button`}},setup(e){let t=e;y();let r=C();return(e,i)=>(n(),s(f(_),g(t,{type:e.as===`button`?`button`:void 0,onClick:i[0]||=e=>f(r).onOpenChange(!1)}),{default:p(()=>[l(e.$slots,`default`)]),_:3},16,[`type`]))}}),j=e({__name:`DialogDescription`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`p`}},setup(e){let t=e;y();let r=C();return(e,i)=>(n(),s(f(_),g(t,{id:f(r).descriptionId}),{default:p(()=>[l(e.$slots,`default`)]),_:3},16,[`id`]))}}),M=e({__name:`AlertDialogAction`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`button`}},setup(e){let t=e;return y(),(e,a)=>(n(),s(f(A),i(r(t)),{default:p(()=>[l(e.$slots,`default`)]),_:3},16))}}),[N,P]=x(`AlertDialogContent`),F=e({__name:`AlertDialogContent`,props:{forceMount:{type:Boolean,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`openAutoFocus`,`closeAutoFocus`],setup(e,{emit:r}){let i=e,a=v(r);y();let o=h();return P({onCancelElementChange:e=>{o.value=e}}),(e,r)=>(n(),s(f(w),g({...i,...f(a)},{role:`alertdialog`,onPointerDownOutside:r[0]||=u(()=>{},[`prevent`]),onInteractOutside:r[1]||=u(()=>{},[`prevent`]),onOpenAutoFocus:r[2]||=()=>{t(()=>{o.value?.focus({preventScroll:!0})})}}),{default:p(()=>[l(e.$slots,`default`)]),_:3},16))}}),I=e({__name:`AlertDialogCancel`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`button`}},setup(e){let t=e,r=N(),{forwardRef:i,currentElement:a}=y();return c(()=>{r.onCancelElementChange(a.value)}),(e,r)=>(n(),s(f(A),g(t,{ref:f(i)}),{default:p(()=>[l(e.$slots,`default`)]),_:3},16))}}),L=e({__name:`AlertDialogDescription`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`p`}},setup(e){let t=e;return y(),(e,a)=>(n(),s(f(j),i(r(t)),{default:p(()=>[l(e.$slots,`default`)]),_:3},16))}}),R=e({__name:`AlertDialogOverlay`,props:{forceMount:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){let t=e;return y(),(e,a)=>(n(),s(f(D),i(r(t)),{default:p(()=>[l(e.$slots,`default`)]),_:3},16))}}),z=e({__name:`AlertDialogPortal`,props:{to:{type:null,required:!1},disabled:{type:Boolean,required:!1},defer:{type:Boolean,required:!1},forceMount:{type:Boolean,required:!1}},setup(e){let t=e;return(e,a)=>(n(),s(f(E),i(r(t)),{default:p(()=>[l(e.$slots,`default`)]),_:3},16))}}),B=e({__name:`AlertDialogRoot`,props:{open:{type:Boolean,required:!1},defaultOpen:{type:Boolean,required:!1}},emits:[`update:open`],setup(e,{emit:t}){let a=S(e,t);return y(),(e,t)=>(n(),s(f(T),g(f(a),{modal:!0}),{default:p(t=>[l(e.$slots,`default`,i(r(t)))]),_:3},16))}}),V=e({__name:`AlertDialogTitle`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`h2`}},setup(e){let t=e;return y(),(e,a)=>(n(),s(f(O),i(r(t)),{default:p(()=>[l(e.$slots,`default`)]),_:3},16))}}),H={class:`flex flex-row justify-end gap-3`},U=e({__name:`DeleteCardDialog`,props:{modelValue:{type:Boolean},cardName:{}},emits:[`update:modelValue`,`confirm`,`cancel`],setup(e,{emit:t}){let r=t,{t:i}=k();function c(){r(`update:modelValue`,!1),r(`cancel`)}function l(){r(`update:modelValue`,!1),r(`confirm`)}return(t,u)=>(n(),s(f(B),{open:e.modelValue,"onUpdate:open":u[0]||=e=>r(`update:modelValue`,e)},{default:p(()=>[d(f(z),null,{default:p(()=>[d(f(R),{class:`fixed inset-0 z-100 bg-black/50 data-[state=closed]:animate-fadeOut data-[state=open]:animate-fadeIn`}),d(f(F),{class:`fixed left-1/2 top-1/2 z-100 max-w-md w-full border border-neutral-200 rounded-xl bg-white p-6 shadow-xl -translate-x-1/2 -translate-y-1/2 data-[state=closed]:animate-contentHide data-[state=open]:animate-contentShow dark:border-neutral-700 dark:bg-neutral-800`},{default:p(()=>[d(f(V),{class:`mb-4 text-xl font-normal`},{default:p(()=>[a(o(f(i)(`settings.pages.card.delete_card`)),1)]),_:1}),d(f(L),{class:`mb-6`},{default:p(()=>[a(o(f(i)(`settings.pages.card.delete_confirmation`))+` `,1),m(`b`,null,`"`+o(e.cardName||``)+`"`,1)]),_:1}),m(`div`,H,[d(f(I),{"as-child":``},{default:p(()=>[d(f(b),{variant:`secondary`,label:f(i)(`settings.pages.card.cancel`),onClick:c},null,8,[`label`])]),_:1}),d(f(M),{"as-child":``},{default:p(()=>[d(f(b),{variant:`danger`,label:f(i)(`settings.pages.card.delete`),onClick:l},null,8,[`label`])]),_:1})])]),_:1})]),_:1})]),_:1},8,[`open`]))}});export{U as t};
2
+ //# sourceMappingURL=DeleteCardDialog-DGeRVWYm.js.map
assets/{DeleteCardDialog-BMxA6Ls7.js.map β†’ DeleteCardDialog-DGeRVWYm.js.map} RENAMED
@@ -1 +1 @@
1
- {"version":3,"file":"DeleteCardDialog-BMxA6Ls7.js","names":[],"sources":["../../../../node_modules/.pnpm/reka-ui@2.7.0_typescript@5.9.3_vue@3.5.25_typescript@5.9.3_/node_modules/reka-ui/dist/Dialog/DialogClose.js","../../../../node_modules/.pnpm/reka-ui@2.7.0_typescript@5.9.3_vue@3.5.25_typescript@5.9.3_/node_modules/reka-ui/dist/Dialog/DialogDescription.js","../../../../node_modules/.pnpm/reka-ui@2.7.0_typescript@5.9.3_vue@3.5.25_typescript@5.9.3_/node_modules/reka-ui/dist/AlertDialog/AlertDialogAction.js","../../../../node_modules/.pnpm/reka-ui@2.7.0_typescript@5.9.3_vue@3.5.25_typescript@5.9.3_/node_modules/reka-ui/dist/AlertDialog/AlertDialogContent.js","../../../../node_modules/.pnpm/reka-ui@2.7.0_typescript@5.9.3_vue@3.5.25_typescript@5.9.3_/node_modules/reka-ui/dist/AlertDialog/AlertDialogCancel.js","../../../../node_modules/.pnpm/reka-ui@2.7.0_typescript@5.9.3_vue@3.5.25_typescript@5.9.3_/node_modules/reka-ui/dist/AlertDialog/AlertDialogDescription.js","../../../../node_modules/.pnpm/reka-ui@2.7.0_typescript@5.9.3_vue@3.5.25_typescript@5.9.3_/node_modules/reka-ui/dist/AlertDialog/AlertDialogOverlay.js","../../../../node_modules/.pnpm/reka-ui@2.7.0_typescript@5.9.3_vue@3.5.25_typescript@5.9.3_/node_modules/reka-ui/dist/AlertDialog/AlertDialogPortal.js","../../../../node_modules/.pnpm/reka-ui@2.7.0_typescript@5.9.3_vue@3.5.25_typescript@5.9.3_/node_modules/reka-ui/dist/AlertDialog/AlertDialogRoot.js","../../../../node_modules/.pnpm/reka-ui@2.7.0_typescript@5.9.3_vue@3.5.25_typescript@5.9.3_/node_modules/reka-ui/dist/AlertDialog/AlertDialogTitle.js","../../../../packages/stage-pages/src/pages/settings/airi-card/components/DeleteCardDialog.vue","../../../../packages/stage-pages/src/pages/settings/airi-card/components/DeleteCardDialog.vue"],"sourcesContent":["import { useForwardExpose } from \"../shared/useForwardExpose.js\";\nimport { Primitive } from \"../Primitive/Primitive.js\";\nimport { injectDialogRootContext } from \"./DialogRoot.js\";\nimport { createBlock, defineComponent, mergeProps, openBlock, renderSlot, unref, withCtx } from \"vue\";\n\n//#region src/Dialog/DialogClose.vue?vue&type=script&setup=true&lang.ts\nvar DialogClose_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({\n\t__name: \"DialogClose\",\n\tprops: {\n\t\tasChild: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false\n\t\t},\n\t\tas: {\n\t\t\ttype: null,\n\t\t\trequired: false,\n\t\t\tdefault: \"button\"\n\t\t}\n\t},\n\tsetup(__props) {\n\t\tconst props = __props;\n\t\tuseForwardExpose();\n\t\tconst rootContext = injectDialogRootContext();\n\t\treturn (_ctx, _cache) => {\n\t\t\treturn openBlock(), createBlock(unref(Primitive), mergeProps(props, {\n\t\t\t\ttype: _ctx.as === \"button\" ? \"button\" : void 0,\n\t\t\t\tonClick: _cache[0] || (_cache[0] = ($event) => unref(rootContext).onOpenChange(false))\n\t\t\t}), {\n\t\t\t\tdefault: withCtx(() => [renderSlot(_ctx.$slots, \"default\")]),\n\t\t\t\t_: 3\n\t\t\t}, 16, [\"type\"]);\n\t\t};\n\t}\n});\n\n//#endregion\n//#region src/Dialog/DialogClose.vue\nvar DialogClose_default = DialogClose_vue_vue_type_script_setup_true_lang_default;\n\n//#endregion\nexport { DialogClose_default };\n//# sourceMappingURL=DialogClose.js.map","import { useForwardExpose } from \"../shared/useForwardExpose.js\";\nimport { Primitive } from \"../Primitive/Primitive.js\";\nimport { injectDialogRootContext } from \"./DialogRoot.js\";\nimport { createBlock, defineComponent, mergeProps, openBlock, renderSlot, unref, withCtx } from \"vue\";\n\n//#region src/Dialog/DialogDescription.vue?vue&type=script&setup=true&lang.ts\nvar DialogDescription_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({\n\t__name: \"DialogDescription\",\n\tprops: {\n\t\tasChild: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false\n\t\t},\n\t\tas: {\n\t\t\ttype: null,\n\t\t\trequired: false,\n\t\t\tdefault: \"p\"\n\t\t}\n\t},\n\tsetup(__props) {\n\t\tconst props = __props;\n\t\tuseForwardExpose();\n\t\tconst rootContext = injectDialogRootContext();\n\t\treturn (_ctx, _cache) => {\n\t\t\treturn openBlock(), createBlock(unref(Primitive), mergeProps(props, { id: unref(rootContext).descriptionId }), {\n\t\t\t\tdefault: withCtx(() => [renderSlot(_ctx.$slots, \"default\")]),\n\t\t\t\t_: 3\n\t\t\t}, 16, [\"id\"]);\n\t\t};\n\t}\n});\n\n//#endregion\n//#region src/Dialog/DialogDescription.vue\nvar DialogDescription_default = DialogDescription_vue_vue_type_script_setup_true_lang_default;\n\n//#endregion\nexport { DialogDescription_default };\n//# sourceMappingURL=DialogDescription.js.map","import { useForwardExpose } from \"../shared/useForwardExpose.js\";\nimport { DialogClose_default } from \"../Dialog/DialogClose.js\";\nimport { createBlock, defineComponent, guardReactiveProps, normalizeProps, openBlock, renderSlot, unref, withCtx } from \"vue\";\n\n//#region src/AlertDialog/AlertDialogAction.vue?vue&type=script&setup=true&lang.ts\nvar AlertDialogAction_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({\n\t__name: \"AlertDialogAction\",\n\tprops: {\n\t\tasChild: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false\n\t\t},\n\t\tas: {\n\t\t\ttype: null,\n\t\t\trequired: false,\n\t\t\tdefault: \"button\"\n\t\t}\n\t},\n\tsetup(__props) {\n\t\tconst props = __props;\n\t\tuseForwardExpose();\n\t\treturn (_ctx, _cache) => {\n\t\t\treturn openBlock(), createBlock(unref(DialogClose_default), normalizeProps(guardReactiveProps(props)), {\n\t\t\t\tdefault: withCtx(() => [renderSlot(_ctx.$slots, \"default\")]),\n\t\t\t\t_: 3\n\t\t\t}, 16);\n\t\t};\n\t}\n});\n\n//#endregion\n//#region src/AlertDialog/AlertDialogAction.vue\nvar AlertDialogAction_default = AlertDialogAction_vue_vue_type_script_setup_true_lang_default;\n\n//#endregion\nexport { AlertDialogAction_default };\n//# sourceMappingURL=AlertDialogAction.js.map","import { createContext } from \"../shared/createContext.js\";\nimport { useEmitAsProps } from \"../shared/useEmitAsProps.js\";\nimport { useForwardExpose } from \"../shared/useForwardExpose.js\";\nimport { DialogContent_default } from \"../Dialog/DialogContent.js\";\nimport { createBlock, defineComponent, mergeProps, nextTick, openBlock, ref, renderSlot, unref, withCtx, withModifiers } from \"vue\";\n\n//#region src/AlertDialog/AlertDialogContent.vue?vue&type=script&setup=true&lang.ts\nconst [injectAlertDialogContentContext, provideAlertDialogContentContext] = createContext(\"AlertDialogContent\");\nvar AlertDialogContent_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({\n\t__name: \"AlertDialogContent\",\n\tprops: {\n\t\tforceMount: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false\n\t\t},\n\t\tdisableOutsidePointerEvents: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false\n\t\t},\n\t\tasChild: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false\n\t\t},\n\t\tas: {\n\t\t\ttype: null,\n\t\t\trequired: false\n\t\t}\n\t},\n\temits: [\n\t\t\"escapeKeyDown\",\n\t\t\"pointerDownOutside\",\n\t\t\"focusOutside\",\n\t\t\"interactOutside\",\n\t\t\"openAutoFocus\",\n\t\t\"closeAutoFocus\"\n\t],\n\tsetup(__props, { emit: __emit }) {\n\t\tconst props = __props;\n\t\tconst emits = __emit;\n\t\tconst emitsAsProps = useEmitAsProps(emits);\n\t\tuseForwardExpose();\n\t\tconst cancelElement = ref();\n\t\tprovideAlertDialogContentContext({ onCancelElementChange: (el) => {\n\t\t\tcancelElement.value = el;\n\t\t} });\n\t\treturn (_ctx, _cache) => {\n\t\t\treturn openBlock(), createBlock(unref(DialogContent_default), mergeProps({\n\t\t\t\t...props,\n\t\t\t\t...unref(emitsAsProps)\n\t\t\t}, {\n\t\t\t\trole: \"alertdialog\",\n\t\t\t\tonPointerDownOutside: _cache[0] || (_cache[0] = withModifiers(() => {}, [\"prevent\"])),\n\t\t\t\tonInteractOutside: _cache[1] || (_cache[1] = withModifiers(() => {}, [\"prevent\"])),\n\t\t\t\tonOpenAutoFocus: _cache[2] || (_cache[2] = () => {\n\t\t\t\t\tnextTick(() => {\n\t\t\t\t\t\tcancelElement.value?.focus({ preventScroll: true });\n\t\t\t\t\t});\n\t\t\t\t})\n\t\t\t}), {\n\t\t\t\tdefault: withCtx(() => [renderSlot(_ctx.$slots, \"default\")]),\n\t\t\t\t_: 3\n\t\t\t}, 16);\n\t\t};\n\t}\n});\n\n//#endregion\n//#region src/AlertDialog/AlertDialogContent.vue\nvar AlertDialogContent_default = AlertDialogContent_vue_vue_type_script_setup_true_lang_default;\n\n//#endregion\nexport { AlertDialogContent_default, injectAlertDialogContentContext };\n//# sourceMappingURL=AlertDialogContent.js.map","import { useForwardExpose } from \"../shared/useForwardExpose.js\";\nimport { DialogClose_default } from \"../Dialog/DialogClose.js\";\nimport { injectAlertDialogContentContext } from \"./AlertDialogContent.js\";\nimport { createBlock, defineComponent, mergeProps, onMounted, openBlock, renderSlot, unref, withCtx } from \"vue\";\n\n//#region src/AlertDialog/AlertDialogCancel.vue?vue&type=script&setup=true&lang.ts\nvar AlertDialogCancel_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({\n\t__name: \"AlertDialogCancel\",\n\tprops: {\n\t\tasChild: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false\n\t\t},\n\t\tas: {\n\t\t\ttype: null,\n\t\t\trequired: false,\n\t\t\tdefault: \"button\"\n\t\t}\n\t},\n\tsetup(__props) {\n\t\tconst props = __props;\n\t\tconst contentContext = injectAlertDialogContentContext();\n\t\tconst { forwardRef, currentElement } = useForwardExpose();\n\t\tonMounted(() => {\n\t\t\tcontentContext.onCancelElementChange(currentElement.value);\n\t\t});\n\t\treturn (_ctx, _cache) => {\n\t\t\treturn openBlock(), createBlock(unref(DialogClose_default), mergeProps(props, { ref: unref(forwardRef) }), {\n\t\t\t\tdefault: withCtx(() => [renderSlot(_ctx.$slots, \"default\")]),\n\t\t\t\t_: 3\n\t\t\t}, 16);\n\t\t};\n\t}\n});\n\n//#endregion\n//#region src/AlertDialog/AlertDialogCancel.vue\nvar AlertDialogCancel_default = AlertDialogCancel_vue_vue_type_script_setup_true_lang_default;\n\n//#endregion\nexport { AlertDialogCancel_default };\n//# sourceMappingURL=AlertDialogCancel.js.map","import { useForwardExpose } from \"../shared/useForwardExpose.js\";\nimport { DialogDescription_default } from \"../Dialog/DialogDescription.js\";\nimport { createBlock, defineComponent, guardReactiveProps, normalizeProps, openBlock, renderSlot, unref, withCtx } from \"vue\";\n\n//#region src/AlertDialog/AlertDialogDescription.vue?vue&type=script&setup=true&lang.ts\nvar AlertDialogDescription_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({\n\t__name: \"AlertDialogDescription\",\n\tprops: {\n\t\tasChild: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false\n\t\t},\n\t\tas: {\n\t\t\ttype: null,\n\t\t\trequired: false,\n\t\t\tdefault: \"p\"\n\t\t}\n\t},\n\tsetup(__props) {\n\t\tconst props = __props;\n\t\tuseForwardExpose();\n\t\treturn (_ctx, _cache) => {\n\t\t\treturn openBlock(), createBlock(unref(DialogDescription_default), normalizeProps(guardReactiveProps(props)), {\n\t\t\t\tdefault: withCtx(() => [renderSlot(_ctx.$slots, \"default\")]),\n\t\t\t\t_: 3\n\t\t\t}, 16);\n\t\t};\n\t}\n});\n\n//#endregion\n//#region src/AlertDialog/AlertDialogDescription.vue\nvar AlertDialogDescription_default = AlertDialogDescription_vue_vue_type_script_setup_true_lang_default;\n\n//#endregion\nexport { AlertDialogDescription_default };\n//# sourceMappingURL=AlertDialogDescription.js.map","import { useForwardExpose } from \"../shared/useForwardExpose.js\";\nimport { DialogOverlay_default } from \"../Dialog/DialogOverlay.js\";\nimport { createBlock, defineComponent, guardReactiveProps, normalizeProps, openBlock, renderSlot, unref, withCtx } from \"vue\";\n\n//#region src/AlertDialog/AlertDialogOverlay.vue?vue&type=script&setup=true&lang.ts\nvar AlertDialogOverlay_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({\n\t__name: \"AlertDialogOverlay\",\n\tprops: {\n\t\tforceMount: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false\n\t\t},\n\t\tasChild: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false\n\t\t},\n\t\tas: {\n\t\t\ttype: null,\n\t\t\trequired: false\n\t\t}\n\t},\n\tsetup(__props) {\n\t\tconst props = __props;\n\t\tuseForwardExpose();\n\t\treturn (_ctx, _cache) => {\n\t\t\treturn openBlock(), createBlock(unref(DialogOverlay_default), normalizeProps(guardReactiveProps(props)), {\n\t\t\t\tdefault: withCtx(() => [renderSlot(_ctx.$slots, \"default\")]),\n\t\t\t\t_: 3\n\t\t\t}, 16);\n\t\t};\n\t}\n});\n\n//#endregion\n//#region src/AlertDialog/AlertDialogOverlay.vue\nvar AlertDialogOverlay_default = AlertDialogOverlay_vue_vue_type_script_setup_true_lang_default;\n\n//#endregion\nexport { AlertDialogOverlay_default };\n//# sourceMappingURL=AlertDialogOverlay.js.map","import { Teleport_default } from \"../Teleport/Teleport.js\";\nimport { createBlock, defineComponent, guardReactiveProps, normalizeProps, openBlock, renderSlot, unref, withCtx } from \"vue\";\n\n//#region src/AlertDialog/AlertDialogPortal.vue?vue&type=script&setup=true&lang.ts\nvar AlertDialogPortal_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({\n\t__name: \"AlertDialogPortal\",\n\tprops: {\n\t\tto: {\n\t\t\ttype: null,\n\t\t\trequired: false\n\t\t},\n\t\tdisabled: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false\n\t\t},\n\t\tdefer: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false\n\t\t},\n\t\tforceMount: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false\n\t\t}\n\t},\n\tsetup(__props) {\n\t\tconst props = __props;\n\t\treturn (_ctx, _cache) => {\n\t\t\treturn openBlock(), createBlock(unref(Teleport_default), normalizeProps(guardReactiveProps(props)), {\n\t\t\t\tdefault: withCtx(() => [renderSlot(_ctx.$slots, \"default\")]),\n\t\t\t\t_: 3\n\t\t\t}, 16);\n\t\t};\n\t}\n});\n\n//#endregion\n//#region src/AlertDialog/AlertDialogPortal.vue\nvar AlertDialogPortal_default = AlertDialogPortal_vue_vue_type_script_setup_true_lang_default;\n\n//#endregion\nexport { AlertDialogPortal_default };\n//# sourceMappingURL=AlertDialogPortal.js.map","import { useForwardExpose } from \"../shared/useForwardExpose.js\";\nimport { useForwardPropsEmits } from \"../shared/useForwardPropsEmits.js\";\nimport { DialogRoot_default } from \"../Dialog/DialogRoot.js\";\nimport { createBlock, defineComponent, guardReactiveProps, mergeProps, normalizeProps, openBlock, renderSlot, unref, withCtx } from \"vue\";\n\n//#region src/AlertDialog/AlertDialogRoot.vue?vue&type=script&setup=true&lang.ts\nvar AlertDialogRoot_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({\n\t__name: \"AlertDialogRoot\",\n\tprops: {\n\t\topen: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false\n\t\t},\n\t\tdefaultOpen: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false\n\t\t}\n\t},\n\temits: [\"update:open\"],\n\tsetup(__props, { emit: __emit }) {\n\t\tconst props = __props;\n\t\tconst emits = __emit;\n\t\tconst forwarded = useForwardPropsEmits(props, emits);\n\t\tuseForwardExpose();\n\t\treturn (_ctx, _cache) => {\n\t\t\treturn openBlock(), createBlock(unref(DialogRoot_default), mergeProps(unref(forwarded), { modal: true }), {\n\t\t\t\tdefault: withCtx((slotProps) => [renderSlot(_ctx.$slots, \"default\", normalizeProps(guardReactiveProps(slotProps)))]),\n\t\t\t\t_: 3\n\t\t\t}, 16);\n\t\t};\n\t}\n});\n\n//#endregion\n//#region src/AlertDialog/AlertDialogRoot.vue\nvar AlertDialogRoot_default = AlertDialogRoot_vue_vue_type_script_setup_true_lang_default;\n\n//#endregion\nexport { AlertDialogRoot_default };\n//# sourceMappingURL=AlertDialogRoot.js.map","import { useForwardExpose } from \"../shared/useForwardExpose.js\";\nimport { DialogTitle_default } from \"../Dialog/DialogTitle.js\";\nimport { createBlock, defineComponent, guardReactiveProps, normalizeProps, openBlock, renderSlot, unref, withCtx } from \"vue\";\n\n//#region src/AlertDialog/AlertDialogTitle.vue?vue&type=script&setup=true&lang.ts\nvar AlertDialogTitle_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({\n\t__name: \"AlertDialogTitle\",\n\tprops: {\n\t\tasChild: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false\n\t\t},\n\t\tas: {\n\t\t\ttype: null,\n\t\t\trequired: false,\n\t\t\tdefault: \"h2\"\n\t\t}\n\t},\n\tsetup(__props) {\n\t\tconst props = __props;\n\t\tuseForwardExpose();\n\t\treturn (_ctx, _cache) => {\n\t\t\treturn openBlock(), createBlock(unref(DialogTitle_default), normalizeProps(guardReactiveProps(props)), {\n\t\t\t\tdefault: withCtx(() => [renderSlot(_ctx.$slots, \"default\")]),\n\t\t\t\t_: 3\n\t\t\t}, 16);\n\t\t};\n\t}\n});\n\n//#endregion\n//#region src/AlertDialog/AlertDialogTitle.vue\nvar AlertDialogTitle_default = AlertDialogTitle_vue_vue_type_script_setup_true_lang_default;\n\n//#endregion\nexport { AlertDialogTitle_default };\n//# sourceMappingURL=AlertDialogTitle.js.map","<script setup lang=\"ts\">\nimport { Button } from '@proj-airi/ui'\nimport {\n AlertDialogAction,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogOverlay,\n AlertDialogPortal,\n AlertDialogRoot,\n AlertDialogTitle,\n} from 'reka-ui'\nimport { useI18n } from 'vue-i18n'\n\ninterface Props {\n modelValue: boolean\n cardName?: string\n}\n\ndefineProps<Props>()\nconst emit = defineEmits<{\n (e: 'update:modelValue', value: boolean): void\n (e: 'confirm'): void\n (e: 'cancel'): void\n}>()\n\nconst { t } = useI18n()\n\nfunction handleCancel() {\n emit('update:modelValue', false)\n emit('cancel')\n}\n\nfunction handleConfirm() {\n emit('update:modelValue', false)\n emit('confirm')\n}\n</script>\n\n<template>\n <AlertDialogRoot :open=\"modelValue\" @update:open=\"emit('update:modelValue', $event)\">\n <AlertDialogPortal>\n <AlertDialogOverlay class=\"fixed inset-0 z-100 bg-black/50 data-[state=closed]:animate-fadeOut data-[state=open]:animate-fadeIn\" />\n <AlertDialogContent\n class=\"fixed left-1/2 top-1/2 z-100 max-w-md w-full border border-neutral-200 rounded-xl bg-white p-6 shadow-xl -translate-x-1/2 -translate-y-1/2 data-[state=closed]:animate-contentHide data-[state=open]:animate-contentShow dark:border-neutral-700 dark:bg-neutral-800\"\n >\n <AlertDialogTitle class=\"mb-4 text-xl font-normal\">\n {{ t('settings.pages.card.delete_card') }}\n </AlertDialogTitle>\n <AlertDialogDescription class=\"mb-6\">\n {{ t('settings.pages.card.delete_confirmation') }} <b>\"{{ cardName || '' }}\"</b>\n </AlertDialogDescription>\n\n <div class=\"flex flex-row justify-end gap-3\">\n <AlertDialogCancel as-child>\n <Button\n variant=\"secondary\"\n :label=\"t('settings.pages.card.cancel')\"\n @click=\"handleCancel\"\n />\n </AlertDialogCancel>\n <AlertDialogAction as-child>\n <Button\n variant=\"danger\"\n :label=\"t('settings.pages.card.delete')\"\n @click=\"handleConfirm\"\n />\n </AlertDialogAction>\n </div>\n </AlertDialogContent>\n </AlertDialogPortal>\n </AlertDialogRoot>\n</template>\n","<script setup lang=\"ts\">\nimport { Button } from '@proj-airi/ui'\nimport {\n AlertDialogAction,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogOverlay,\n AlertDialogPortal,\n AlertDialogRoot,\n AlertDialogTitle,\n} from 'reka-ui'\nimport { useI18n } from 'vue-i18n'\n\ninterface Props {\n modelValue: boolean\n cardName?: string\n}\n\ndefineProps<Props>()\nconst emit = defineEmits<{\n (e: 'update:modelValue', value: boolean): void\n (e: 'confirm'): void\n (e: 'cancel'): void\n}>()\n\nconst { t } = useI18n()\n\nfunction handleCancel() {\n emit('update:modelValue', false)\n emit('cancel')\n}\n\nfunction handleConfirm() {\n emit('update:modelValue', false)\n emit('confirm')\n}\n</script>\n\n<template>\n <AlertDialogRoot :open=\"modelValue\" @update:open=\"emit('update:modelValue', $event)\">\n <AlertDialogPortal>\n <AlertDialogOverlay class=\"fixed inset-0 z-100 bg-black/50 data-[state=closed]:animate-fadeOut data-[state=open]:animate-fadeIn\" />\n <AlertDialogContent\n class=\"fixed left-1/2 top-1/2 z-100 max-w-md w-full border border-neutral-200 rounded-xl bg-white p-6 shadow-xl -translate-x-1/2 -translate-y-1/2 data-[state=closed]:animate-contentHide data-[state=open]:animate-contentShow dark:border-neutral-700 dark:bg-neutral-800\"\n >\n <AlertDialogTitle class=\"mb-4 text-xl font-normal\">\n {{ t('settings.pages.card.delete_card') }}\n </AlertDialogTitle>\n <AlertDialogDescription class=\"mb-6\">\n {{ t('settings.pages.card.delete_confirmation') }} <b>\"{{ cardName || '' }}\"</b>\n </AlertDialogDescription>\n\n <div class=\"flex flex-row justify-end gap-3\">\n <AlertDialogCancel as-child>\n <Button\n variant=\"secondary\"\n :label=\"t('settings.pages.card.cancel')\"\n @click=\"handleCancel\"\n />\n </AlertDialogCancel>\n <AlertDialogAction as-child>\n <Button\n variant=\"danger\"\n :label=\"t('settings.pages.card.delete')\"\n @click=\"handleConfirm\"\n />\n </AlertDialogAction>\n </div>\n </AlertDialogContent>\n </AlertDialogPortal>\n </AlertDialogRoot>\n</template>\n"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9],"mappings":"6XAqCA,IAAI,EA/B0E,EAAgB,CAC7F,OAAQ,cACR,MAAO,CACN,QAAS,CACR,KAAM,QACN,SAAU,GACV,CACD,GAAI,CACH,KAAM,KACN,SAAU,GACV,QAAS,SACT,CACD,CACD,MAAM,EAAS,CACd,IAAM,EAAQ,EACd,GAAkB,CAClB,IAAM,EAAc,GAAyB,CAC7C,OAAQ,EAAM,KACN,GAAW,CAAE,EAAY,EAAM,EAAU,CAAE,EAAW,EAAO,CACnE,KAAM,EAAK,KAAO,SAAW,SAAW,IAAK,GAC7C,QAAS,AAAc,EAAO,KAAM,GAAW,EAAM,EAAY,CAAC,aAAa,GAAM,CACrF,CAAC,CAAE,CACH,QAAS,MAAc,CAAC,EAAW,EAAK,OAAQ,UAAU,CAAC,CAAC,CAC5D,EAAG,EACH,CAAE,GAAI,CAAC,OAAO,CAAC,GAGlB,CAAC,CCCE,EA5BgF,EAAgB,CACnG,OAAQ,oBACR,MAAO,CACN,QAAS,CACR,KAAM,QACN,SAAU,GACV,CACD,GAAI,CACH,KAAM,KACN,SAAU,GACV,QAAS,IACT,CACD,CACD,MAAM,EAAS,CACd,IAAM,EAAQ,EACd,GAAkB,CAClB,IAAM,EAAc,GAAyB,CAC7C,OAAQ,EAAM,KACN,GAAW,CAAE,EAAY,EAAM,EAAU,CAAE,EAAW,EAAO,CAAE,GAAI,EAAM,EAAY,CAAC,cAAe,CAAC,CAAE,CAC9G,QAAS,MAAc,CAAC,EAAW,EAAK,OAAQ,UAAU,CAAC,CAAC,CAC5D,EAAG,EACH,CAAE,GAAI,CAAC,KAAK,CAAC,GAGhB,CAAC,CCEE,EA3BgF,EAAgB,CACnG,OAAQ,oBACR,MAAO,CACN,QAAS,CACR,KAAM,QACN,SAAU,GACV,CACD,GAAI,CACH,KAAM,KACN,SAAU,GACV,QAAS,SACT,CACD,CACD,MAAM,EAAS,CACd,IAAM,EAAQ,EAEd,OADA,GAAkB,EACV,EAAM,KACN,GAAW,CAAE,EAAY,EAAM,EAAoB,CAAE,EAAe,EAAmB,EAAM,CAAC,CAAE,CACtG,QAAS,MAAc,CAAC,EAAW,EAAK,OAAQ,UAAU,CAAC,CAAC,CAC5D,EAAG,EACH,CAAE,GAAG,GAGR,CAAC,CCrBI,CAAC,EAAiC,GAAoC,EAAc,qBAAqB,CA6D3G,EA5DiF,EAAgB,CACpG,OAAQ,qBACR,MAAO,CACN,WAAY,CACX,KAAM,QACN,SAAU,GACV,CACD,4BAA6B,CAC5B,KAAM,QACN,SAAU,GACV,CACD,QAAS,CACR,KAAM,QACN,SAAU,GACV,CACD,GAAI,CACH,KAAM,KACN,SAAU,GACV,CACD,CACD,MAAO,CACN,gBACA,qBACA,eACA,kBACA,gBACA,iBACA,CACD,MAAM,EAAS,CAAE,KAAM,GAAU,CAChC,IAAM,EAAQ,EAER,EAAe,EADP,EAC4B,CAC1C,GAAkB,CAClB,IAAM,EAAgB,GAAK,CAI3B,OAHA,EAAiC,CAAE,sBAAwB,GAAO,CACjE,EAAc,MAAQ,GACpB,CAAC,EACI,EAAM,KACN,GAAW,CAAE,EAAY,EAAM,EAAsB,CAAE,EAAW,CACxE,GAAG,EACH,GAAG,EAAM,EAAa,CACtB,CAAE,CACF,KAAM,cACN,qBAAsB,AAAc,EAAO,KAAK,MAAoB,GAAI,CAAC,UAAU,CAAC,CACpF,kBAAmB,AAAc,EAAO,KAAK,MAAoB,GAAI,CAAC,UAAU,CAAC,CACjF,gBAAiB,AAAc,EAAO,SAAW,CAChD,MAAe,CACd,EAAc,OAAO,MAAM,CAAE,cAAe,GAAM,CAAC,EAClD,EAEH,CAAC,CAAE,CACH,QAAS,MAAc,CAAC,EAAW,EAAK,OAAQ,UAAU,CAAC,CAAC,CAC5D,EAAG,EACH,CAAE,GAAG,GAGR,CAAC,CC3BE,EA/BgF,EAAgB,CACnG,OAAQ,oBACR,MAAO,CACN,QAAS,CACR,KAAM,QACN,SAAU,GACV,CACD,GAAI,CACH,KAAM,KACN,SAAU,GACV,QAAS,SACT,CACD,CACD,MAAM,EAAS,CACd,IAAM,EAAQ,EACR,EAAiB,GAAiC,CAClD,CAAE,aAAY,kBAAmB,GAAkB,CAIzD,OAHA,MAAgB,CACf,EAAe,sBAAsB,EAAe,MAAM,EACzD,EACM,EAAM,KACN,GAAW,CAAE,EAAY,EAAM,EAAoB,CAAE,EAAW,EAAO,CAAE,IAAK,EAAM,EAAW,CAAE,CAAC,CAAE,CAC1G,QAAS,MAAc,CAAC,EAAW,EAAK,OAAQ,UAAU,CAAC,CAAC,CAC5D,EAAG,EACH,CAAE,GAAG,GAGR,CAAC,CCDE,EA3BqF,EAAgB,CACxG,OAAQ,yBACR,MAAO,CACN,QAAS,CACR,KAAM,QACN,SAAU,GACV,CACD,GAAI,CACH,KAAM,KACN,SAAU,GACV,QAAS,IACT,CACD,CACD,MAAM,EAAS,CACd,IAAM,EAAQ,EAEd,OADA,GAAkB,EACV,EAAM,KACN,GAAW,CAAE,EAAY,EAAM,EAA0B,CAAE,EAAe,EAAmB,EAAM,CAAC,CAAE,CAC5G,QAAS,MAAc,CAAC,EAAW,EAAK,OAAQ,UAAU,CAAC,CAAC,CAC5D,EAAG,EACH,CAAE,GAAG,GAGR,CAAC,CCOE,EA9BiF,EAAgB,CACpG,OAAQ,qBACR,MAAO,CACN,WAAY,CACX,KAAM,QACN,SAAU,GACV,CACD,QAAS,CACR,KAAM,QACN,SAAU,GACV,CACD,GAAI,CACH,KAAM,KACN,SAAU,GACV,CACD,CACD,MAAM,EAAS,CACd,IAAM,EAAQ,EAEd,OADA,GAAkB,EACV,EAAM,KACN,GAAW,CAAE,EAAY,EAAM,EAAsB,CAAE,EAAe,EAAmB,EAAM,CAAC,CAAE,CACxG,QAAS,MAAc,CAAC,EAAW,EAAK,OAAQ,UAAU,CAAC,CAAC,CAC5D,EAAG,EACH,CAAE,GAAG,GAGR,CAAC,CCME,EAjCgF,EAAgB,CACnG,OAAQ,oBACR,MAAO,CACN,GAAI,CACH,KAAM,KACN,SAAU,GACV,CACD,SAAU,CACT,KAAM,QACN,SAAU,GACV,CACD,MAAO,CACN,KAAM,QACN,SAAU,GACV,CACD,WAAY,CACX,KAAM,QACN,SAAU,GACV,CACD,CACD,MAAM,EAAS,CACd,IAAM,EAAQ,EACd,OAAQ,EAAM,KACN,GAAW,CAAE,EAAY,EAAM,EAAiB,CAAE,EAAe,EAAmB,EAAM,CAAC,CAAE,CACnG,QAAS,MAAc,CAAC,EAAW,EAAK,OAAQ,UAAU,CAAC,CAAC,CAC5D,EAAG,EACH,CAAE,GAAG,GAGR,CAAC,CCEE,EA7B8E,EAAgB,CACjG,OAAQ,kBACR,MAAO,CACN,KAAM,CACL,KAAM,QACN,SAAU,GACV,CACD,YAAa,CACZ,KAAM,QACN,SAAU,GACV,CACD,CACD,MAAO,CAAC,cAAc,CACtB,MAAM,EAAS,CAAE,KAAM,GAAU,CAGhC,IAAM,EAAY,EAFJ,EACA,EACsC,CAEpD,OADA,GAAkB,EACV,EAAM,KACN,GAAW,CAAE,EAAY,EAAM,EAAmB,CAAE,EAAW,EAAM,EAAU,CAAE,CAAE,MAAO,GAAM,CAAC,CAAE,CACzG,QAAS,EAAS,GAAc,CAAC,EAAW,EAAK,OAAQ,UAAW,EAAe,EAAmB,EAAU,CAAC,CAAC,CAAC,CAAC,CACpH,EAAG,EACH,CAAE,GAAG,GAGR,CAAC,CCCE,EA3B+E,EAAgB,CAClG,OAAQ,mBACR,MAAO,CACN,QAAS,CACR,KAAM,QACN,SAAU,GACV,CACD,GAAI,CACH,KAAM,KACN,SAAU,GACV,QAAS,KACT,CACD,CACD,MAAM,EAAS,CACd,IAAM,EAAQ,EAEd,OADA,GAAkB,EACV,EAAM,KACN,GAAW,CAAE,EAAY,EAAM,EAAoB,CAAE,EAAe,EAAmB,EAAM,CAAC,CAAE,CACtG,QAAS,MAAc,CAAC,EAAW,EAAK,OAAQ,UAAU,CAAC,CAAC,CAC5D,EAAG,EACH,CAAE,GAAG,GAGR,CAAC,2LERF,IAAM,EAAO,EAMP,CAAE,KAAM,GAAQ,CAEtB,SAAS,GAAe,CACtB,EAAK,oBAAqB,GAAK,CAC/B,EAAK,SAAQ,CAGf,SAAS,GAAgB,CACvB,EAAK,oBAAqB,GAAK,CAC/B,EAAK,UAAS,mBAKd,EA+BkB,EAAA,EAAA,CAAA,CA/BA,KAAM,EAAA,WAAa,gBAAW,AAAA,EAAA,KAAA,GAAE,EAAI,oBAAsB,EAAM,iBA8B5D,CA7BpB,EA6BoB,EAAA,EAAA,CAAA,KAAA,eA5BiH,CAAnI,EAAmI,EAAA,EAAA,CAAA,CAA/G,MAAM,uGAAsG,CAAA,CAChI,EA0BqB,EAAA,EAAA,CAAA,CAzBnB,MAAM,uQAAsQ,CAAA,eAIzP,CAFnB,EAEmB,EAAA,EAAA,CAAA,CAFD,MAAM,2BAA0B,CAAA,eACN,CAAA,EAAA,EAAvC,EAAA,EAAC,CAAA,kCAAA,CAAA,CAAA,EAAA,CAAA,CAAA,OAEN,EAEyB,EAAA,EAAA,CAAA,CAFD,MAAM,OAAM,CAAA,eACgB,CAAA,EAAA,EAA/C,EAAA,EAAC,CAAA,0CAAA,CAAA,CAA8C,IAAC,EAAA,CAAA,EAA6B,IAAA,KAA1B,IAAC,EAAG,EAAA,UAAQ,GAAA,CAAS,IAAC,EAAA,CAAA,CAAA,OAG9E,EAeM,MAfN,EAeM,CAdJ,EAMoB,EAAA,EAAA,CAAA,CAND,WAAA,GAAQ,CAAA,eAKvB,CAJF,EAIE,EAAA,EAAA,CAAA,CAHA,QAAQ,YACP,MAAO,EAAA,EAAC,CAAA,6BAAA,CACR,QAAO,6BAGZ,EAMoB,EAAA,EAAA,CAAA,CAND,WAAA,GAAQ,CAAA,eAKvB,CAJF,EAIE,EAAA,EAAA,CAAA,CAHA,QAAQ,SACP,MAAO,EAAA,EAAC,CAAA,6BAAA,CACR,QAAO"}
 
1
+ {"version":3,"file":"DeleteCardDialog-DGeRVWYm.js","names":[],"sources":["../../../../node_modules/.pnpm/reka-ui@2.7.0_typescript@5.9.3_vue@3.5.25_typescript@5.9.3_/node_modules/reka-ui/dist/Dialog/DialogClose.js","../../../../node_modules/.pnpm/reka-ui@2.7.0_typescript@5.9.3_vue@3.5.25_typescript@5.9.3_/node_modules/reka-ui/dist/Dialog/DialogDescription.js","../../../../node_modules/.pnpm/reka-ui@2.7.0_typescript@5.9.3_vue@3.5.25_typescript@5.9.3_/node_modules/reka-ui/dist/AlertDialog/AlertDialogAction.js","../../../../node_modules/.pnpm/reka-ui@2.7.0_typescript@5.9.3_vue@3.5.25_typescript@5.9.3_/node_modules/reka-ui/dist/AlertDialog/AlertDialogContent.js","../../../../node_modules/.pnpm/reka-ui@2.7.0_typescript@5.9.3_vue@3.5.25_typescript@5.9.3_/node_modules/reka-ui/dist/AlertDialog/AlertDialogCancel.js","../../../../node_modules/.pnpm/reka-ui@2.7.0_typescript@5.9.3_vue@3.5.25_typescript@5.9.3_/node_modules/reka-ui/dist/AlertDialog/AlertDialogDescription.js","../../../../node_modules/.pnpm/reka-ui@2.7.0_typescript@5.9.3_vue@3.5.25_typescript@5.9.3_/node_modules/reka-ui/dist/AlertDialog/AlertDialogOverlay.js","../../../../node_modules/.pnpm/reka-ui@2.7.0_typescript@5.9.3_vue@3.5.25_typescript@5.9.3_/node_modules/reka-ui/dist/AlertDialog/AlertDialogPortal.js","../../../../node_modules/.pnpm/reka-ui@2.7.0_typescript@5.9.3_vue@3.5.25_typescript@5.9.3_/node_modules/reka-ui/dist/AlertDialog/AlertDialogRoot.js","../../../../node_modules/.pnpm/reka-ui@2.7.0_typescript@5.9.3_vue@3.5.25_typescript@5.9.3_/node_modules/reka-ui/dist/AlertDialog/AlertDialogTitle.js","../../../../packages/stage-pages/src/pages/settings/airi-card/components/DeleteCardDialog.vue","../../../../packages/stage-pages/src/pages/settings/airi-card/components/DeleteCardDialog.vue"],"sourcesContent":["import { useForwardExpose } from \"../shared/useForwardExpose.js\";\nimport { Primitive } from \"../Primitive/Primitive.js\";\nimport { injectDialogRootContext } from \"./DialogRoot.js\";\nimport { createBlock, defineComponent, mergeProps, openBlock, renderSlot, unref, withCtx } from \"vue\";\n\n//#region src/Dialog/DialogClose.vue?vue&type=script&setup=true&lang.ts\nvar DialogClose_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({\n\t__name: \"DialogClose\",\n\tprops: {\n\t\tasChild: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false\n\t\t},\n\t\tas: {\n\t\t\ttype: null,\n\t\t\trequired: false,\n\t\t\tdefault: \"button\"\n\t\t}\n\t},\n\tsetup(__props) {\n\t\tconst props = __props;\n\t\tuseForwardExpose();\n\t\tconst rootContext = injectDialogRootContext();\n\t\treturn (_ctx, _cache) => {\n\t\t\treturn openBlock(), createBlock(unref(Primitive), mergeProps(props, {\n\t\t\t\ttype: _ctx.as === \"button\" ? \"button\" : void 0,\n\t\t\t\tonClick: _cache[0] || (_cache[0] = ($event) => unref(rootContext).onOpenChange(false))\n\t\t\t}), {\n\t\t\t\tdefault: withCtx(() => [renderSlot(_ctx.$slots, \"default\")]),\n\t\t\t\t_: 3\n\t\t\t}, 16, [\"type\"]);\n\t\t};\n\t}\n});\n\n//#endregion\n//#region src/Dialog/DialogClose.vue\nvar DialogClose_default = DialogClose_vue_vue_type_script_setup_true_lang_default;\n\n//#endregion\nexport { DialogClose_default };\n//# sourceMappingURL=DialogClose.js.map","import { useForwardExpose } from \"../shared/useForwardExpose.js\";\nimport { Primitive } from \"../Primitive/Primitive.js\";\nimport { injectDialogRootContext } from \"./DialogRoot.js\";\nimport { createBlock, defineComponent, mergeProps, openBlock, renderSlot, unref, withCtx } from \"vue\";\n\n//#region src/Dialog/DialogDescription.vue?vue&type=script&setup=true&lang.ts\nvar DialogDescription_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({\n\t__name: \"DialogDescription\",\n\tprops: {\n\t\tasChild: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false\n\t\t},\n\t\tas: {\n\t\t\ttype: null,\n\t\t\trequired: false,\n\t\t\tdefault: \"p\"\n\t\t}\n\t},\n\tsetup(__props) {\n\t\tconst props = __props;\n\t\tuseForwardExpose();\n\t\tconst rootContext = injectDialogRootContext();\n\t\treturn (_ctx, _cache) => {\n\t\t\treturn openBlock(), createBlock(unref(Primitive), mergeProps(props, { id: unref(rootContext).descriptionId }), {\n\t\t\t\tdefault: withCtx(() => [renderSlot(_ctx.$slots, \"default\")]),\n\t\t\t\t_: 3\n\t\t\t}, 16, [\"id\"]);\n\t\t};\n\t}\n});\n\n//#endregion\n//#region src/Dialog/DialogDescription.vue\nvar DialogDescription_default = DialogDescription_vue_vue_type_script_setup_true_lang_default;\n\n//#endregion\nexport { DialogDescription_default };\n//# sourceMappingURL=DialogDescription.js.map","import { useForwardExpose } from \"../shared/useForwardExpose.js\";\nimport { DialogClose_default } from \"../Dialog/DialogClose.js\";\nimport { createBlock, defineComponent, guardReactiveProps, normalizeProps, openBlock, renderSlot, unref, withCtx } from \"vue\";\n\n//#region src/AlertDialog/AlertDialogAction.vue?vue&type=script&setup=true&lang.ts\nvar AlertDialogAction_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({\n\t__name: \"AlertDialogAction\",\n\tprops: {\n\t\tasChild: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false\n\t\t},\n\t\tas: {\n\t\t\ttype: null,\n\t\t\trequired: false,\n\t\t\tdefault: \"button\"\n\t\t}\n\t},\n\tsetup(__props) {\n\t\tconst props = __props;\n\t\tuseForwardExpose();\n\t\treturn (_ctx, _cache) => {\n\t\t\treturn openBlock(), createBlock(unref(DialogClose_default), normalizeProps(guardReactiveProps(props)), {\n\t\t\t\tdefault: withCtx(() => [renderSlot(_ctx.$slots, \"default\")]),\n\t\t\t\t_: 3\n\t\t\t}, 16);\n\t\t};\n\t}\n});\n\n//#endregion\n//#region src/AlertDialog/AlertDialogAction.vue\nvar AlertDialogAction_default = AlertDialogAction_vue_vue_type_script_setup_true_lang_default;\n\n//#endregion\nexport { AlertDialogAction_default };\n//# sourceMappingURL=AlertDialogAction.js.map","import { createContext } from \"../shared/createContext.js\";\nimport { useEmitAsProps } from \"../shared/useEmitAsProps.js\";\nimport { useForwardExpose } from \"../shared/useForwardExpose.js\";\nimport { DialogContent_default } from \"../Dialog/DialogContent.js\";\nimport { createBlock, defineComponent, mergeProps, nextTick, openBlock, ref, renderSlot, unref, withCtx, withModifiers } from \"vue\";\n\n//#region src/AlertDialog/AlertDialogContent.vue?vue&type=script&setup=true&lang.ts\nconst [injectAlertDialogContentContext, provideAlertDialogContentContext] = createContext(\"AlertDialogContent\");\nvar AlertDialogContent_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({\n\t__name: \"AlertDialogContent\",\n\tprops: {\n\t\tforceMount: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false\n\t\t},\n\t\tdisableOutsidePointerEvents: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false\n\t\t},\n\t\tasChild: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false\n\t\t},\n\t\tas: {\n\t\t\ttype: null,\n\t\t\trequired: false\n\t\t}\n\t},\n\temits: [\n\t\t\"escapeKeyDown\",\n\t\t\"pointerDownOutside\",\n\t\t\"focusOutside\",\n\t\t\"interactOutside\",\n\t\t\"openAutoFocus\",\n\t\t\"closeAutoFocus\"\n\t],\n\tsetup(__props, { emit: __emit }) {\n\t\tconst props = __props;\n\t\tconst emits = __emit;\n\t\tconst emitsAsProps = useEmitAsProps(emits);\n\t\tuseForwardExpose();\n\t\tconst cancelElement = ref();\n\t\tprovideAlertDialogContentContext({ onCancelElementChange: (el) => {\n\t\t\tcancelElement.value = el;\n\t\t} });\n\t\treturn (_ctx, _cache) => {\n\t\t\treturn openBlock(), createBlock(unref(DialogContent_default), mergeProps({\n\t\t\t\t...props,\n\t\t\t\t...unref(emitsAsProps)\n\t\t\t}, {\n\t\t\t\trole: \"alertdialog\",\n\t\t\t\tonPointerDownOutside: _cache[0] || (_cache[0] = withModifiers(() => {}, [\"prevent\"])),\n\t\t\t\tonInteractOutside: _cache[1] || (_cache[1] = withModifiers(() => {}, [\"prevent\"])),\n\t\t\t\tonOpenAutoFocus: _cache[2] || (_cache[2] = () => {\n\t\t\t\t\tnextTick(() => {\n\t\t\t\t\t\tcancelElement.value?.focus({ preventScroll: true });\n\t\t\t\t\t});\n\t\t\t\t})\n\t\t\t}), {\n\t\t\t\tdefault: withCtx(() => [renderSlot(_ctx.$slots, \"default\")]),\n\t\t\t\t_: 3\n\t\t\t}, 16);\n\t\t};\n\t}\n});\n\n//#endregion\n//#region src/AlertDialog/AlertDialogContent.vue\nvar AlertDialogContent_default = AlertDialogContent_vue_vue_type_script_setup_true_lang_default;\n\n//#endregion\nexport { AlertDialogContent_default, injectAlertDialogContentContext };\n//# sourceMappingURL=AlertDialogContent.js.map","import { useForwardExpose } from \"../shared/useForwardExpose.js\";\nimport { DialogClose_default } from \"../Dialog/DialogClose.js\";\nimport { injectAlertDialogContentContext } from \"./AlertDialogContent.js\";\nimport { createBlock, defineComponent, mergeProps, onMounted, openBlock, renderSlot, unref, withCtx } from \"vue\";\n\n//#region src/AlertDialog/AlertDialogCancel.vue?vue&type=script&setup=true&lang.ts\nvar AlertDialogCancel_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({\n\t__name: \"AlertDialogCancel\",\n\tprops: {\n\t\tasChild: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false\n\t\t},\n\t\tas: {\n\t\t\ttype: null,\n\t\t\trequired: false,\n\t\t\tdefault: \"button\"\n\t\t}\n\t},\n\tsetup(__props) {\n\t\tconst props = __props;\n\t\tconst contentContext = injectAlertDialogContentContext();\n\t\tconst { forwardRef, currentElement } = useForwardExpose();\n\t\tonMounted(() => {\n\t\t\tcontentContext.onCancelElementChange(currentElement.value);\n\t\t});\n\t\treturn (_ctx, _cache) => {\n\t\t\treturn openBlock(), createBlock(unref(DialogClose_default), mergeProps(props, { ref: unref(forwardRef) }), {\n\t\t\t\tdefault: withCtx(() => [renderSlot(_ctx.$slots, \"default\")]),\n\t\t\t\t_: 3\n\t\t\t}, 16);\n\t\t};\n\t}\n});\n\n//#endregion\n//#region src/AlertDialog/AlertDialogCancel.vue\nvar AlertDialogCancel_default = AlertDialogCancel_vue_vue_type_script_setup_true_lang_default;\n\n//#endregion\nexport { AlertDialogCancel_default };\n//# sourceMappingURL=AlertDialogCancel.js.map","import { useForwardExpose } from \"../shared/useForwardExpose.js\";\nimport { DialogDescription_default } from \"../Dialog/DialogDescription.js\";\nimport { createBlock, defineComponent, guardReactiveProps, normalizeProps, openBlock, renderSlot, unref, withCtx } from \"vue\";\n\n//#region src/AlertDialog/AlertDialogDescription.vue?vue&type=script&setup=true&lang.ts\nvar AlertDialogDescription_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({\n\t__name: \"AlertDialogDescription\",\n\tprops: {\n\t\tasChild: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false\n\t\t},\n\t\tas: {\n\t\t\ttype: null,\n\t\t\trequired: false,\n\t\t\tdefault: \"p\"\n\t\t}\n\t},\n\tsetup(__props) {\n\t\tconst props = __props;\n\t\tuseForwardExpose();\n\t\treturn (_ctx, _cache) => {\n\t\t\treturn openBlock(), createBlock(unref(DialogDescription_default), normalizeProps(guardReactiveProps(props)), {\n\t\t\t\tdefault: withCtx(() => [renderSlot(_ctx.$slots, \"default\")]),\n\t\t\t\t_: 3\n\t\t\t}, 16);\n\t\t};\n\t}\n});\n\n//#endregion\n//#region src/AlertDialog/AlertDialogDescription.vue\nvar AlertDialogDescription_default = AlertDialogDescription_vue_vue_type_script_setup_true_lang_default;\n\n//#endregion\nexport { AlertDialogDescription_default };\n//# sourceMappingURL=AlertDialogDescription.js.map","import { useForwardExpose } from \"../shared/useForwardExpose.js\";\nimport { DialogOverlay_default } from \"../Dialog/DialogOverlay.js\";\nimport { createBlock, defineComponent, guardReactiveProps, normalizeProps, openBlock, renderSlot, unref, withCtx } from \"vue\";\n\n//#region src/AlertDialog/AlertDialogOverlay.vue?vue&type=script&setup=true&lang.ts\nvar AlertDialogOverlay_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({\n\t__name: \"AlertDialogOverlay\",\n\tprops: {\n\t\tforceMount: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false\n\t\t},\n\t\tasChild: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false\n\t\t},\n\t\tas: {\n\t\t\ttype: null,\n\t\t\trequired: false\n\t\t}\n\t},\n\tsetup(__props) {\n\t\tconst props = __props;\n\t\tuseForwardExpose();\n\t\treturn (_ctx, _cache) => {\n\t\t\treturn openBlock(), createBlock(unref(DialogOverlay_default), normalizeProps(guardReactiveProps(props)), {\n\t\t\t\tdefault: withCtx(() => [renderSlot(_ctx.$slots, \"default\")]),\n\t\t\t\t_: 3\n\t\t\t}, 16);\n\t\t};\n\t}\n});\n\n//#endregion\n//#region src/AlertDialog/AlertDialogOverlay.vue\nvar AlertDialogOverlay_default = AlertDialogOverlay_vue_vue_type_script_setup_true_lang_default;\n\n//#endregion\nexport { AlertDialogOverlay_default };\n//# sourceMappingURL=AlertDialogOverlay.js.map","import { Teleport_default } from \"../Teleport/Teleport.js\";\nimport { createBlock, defineComponent, guardReactiveProps, normalizeProps, openBlock, renderSlot, unref, withCtx } from \"vue\";\n\n//#region src/AlertDialog/AlertDialogPortal.vue?vue&type=script&setup=true&lang.ts\nvar AlertDialogPortal_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({\n\t__name: \"AlertDialogPortal\",\n\tprops: {\n\t\tto: {\n\t\t\ttype: null,\n\t\t\trequired: false\n\t\t},\n\t\tdisabled: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false\n\t\t},\n\t\tdefer: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false\n\t\t},\n\t\tforceMount: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false\n\t\t}\n\t},\n\tsetup(__props) {\n\t\tconst props = __props;\n\t\treturn (_ctx, _cache) => {\n\t\t\treturn openBlock(), createBlock(unref(Teleport_default), normalizeProps(guardReactiveProps(props)), {\n\t\t\t\tdefault: withCtx(() => [renderSlot(_ctx.$slots, \"default\")]),\n\t\t\t\t_: 3\n\t\t\t}, 16);\n\t\t};\n\t}\n});\n\n//#endregion\n//#region src/AlertDialog/AlertDialogPortal.vue\nvar AlertDialogPortal_default = AlertDialogPortal_vue_vue_type_script_setup_true_lang_default;\n\n//#endregion\nexport { AlertDialogPortal_default };\n//# sourceMappingURL=AlertDialogPortal.js.map","import { useForwardExpose } from \"../shared/useForwardExpose.js\";\nimport { useForwardPropsEmits } from \"../shared/useForwardPropsEmits.js\";\nimport { DialogRoot_default } from \"../Dialog/DialogRoot.js\";\nimport { createBlock, defineComponent, guardReactiveProps, mergeProps, normalizeProps, openBlock, renderSlot, unref, withCtx } from \"vue\";\n\n//#region src/AlertDialog/AlertDialogRoot.vue?vue&type=script&setup=true&lang.ts\nvar AlertDialogRoot_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({\n\t__name: \"AlertDialogRoot\",\n\tprops: {\n\t\topen: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false\n\t\t},\n\t\tdefaultOpen: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false\n\t\t}\n\t},\n\temits: [\"update:open\"],\n\tsetup(__props, { emit: __emit }) {\n\t\tconst props = __props;\n\t\tconst emits = __emit;\n\t\tconst forwarded = useForwardPropsEmits(props, emits);\n\t\tuseForwardExpose();\n\t\treturn (_ctx, _cache) => {\n\t\t\treturn openBlock(), createBlock(unref(DialogRoot_default), mergeProps(unref(forwarded), { modal: true }), {\n\t\t\t\tdefault: withCtx((slotProps) => [renderSlot(_ctx.$slots, \"default\", normalizeProps(guardReactiveProps(slotProps)))]),\n\t\t\t\t_: 3\n\t\t\t}, 16);\n\t\t};\n\t}\n});\n\n//#endregion\n//#region src/AlertDialog/AlertDialogRoot.vue\nvar AlertDialogRoot_default = AlertDialogRoot_vue_vue_type_script_setup_true_lang_default;\n\n//#endregion\nexport { AlertDialogRoot_default };\n//# sourceMappingURL=AlertDialogRoot.js.map","import { useForwardExpose } from \"../shared/useForwardExpose.js\";\nimport { DialogTitle_default } from \"../Dialog/DialogTitle.js\";\nimport { createBlock, defineComponent, guardReactiveProps, normalizeProps, openBlock, renderSlot, unref, withCtx } from \"vue\";\n\n//#region src/AlertDialog/AlertDialogTitle.vue?vue&type=script&setup=true&lang.ts\nvar AlertDialogTitle_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({\n\t__name: \"AlertDialogTitle\",\n\tprops: {\n\t\tasChild: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false\n\t\t},\n\t\tas: {\n\t\t\ttype: null,\n\t\t\trequired: false,\n\t\t\tdefault: \"h2\"\n\t\t}\n\t},\n\tsetup(__props) {\n\t\tconst props = __props;\n\t\tuseForwardExpose();\n\t\treturn (_ctx, _cache) => {\n\t\t\treturn openBlock(), createBlock(unref(DialogTitle_default), normalizeProps(guardReactiveProps(props)), {\n\t\t\t\tdefault: withCtx(() => [renderSlot(_ctx.$slots, \"default\")]),\n\t\t\t\t_: 3\n\t\t\t}, 16);\n\t\t};\n\t}\n});\n\n//#endregion\n//#region src/AlertDialog/AlertDialogTitle.vue\nvar AlertDialogTitle_default = AlertDialogTitle_vue_vue_type_script_setup_true_lang_default;\n\n//#endregion\nexport { AlertDialogTitle_default };\n//# sourceMappingURL=AlertDialogTitle.js.map","<script setup lang=\"ts\">\nimport { Button } from '@proj-airi/ui'\nimport {\n AlertDialogAction,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogOverlay,\n AlertDialogPortal,\n AlertDialogRoot,\n AlertDialogTitle,\n} from 'reka-ui'\nimport { useI18n } from 'vue-i18n'\n\ninterface Props {\n modelValue: boolean\n cardName?: string\n}\n\ndefineProps<Props>()\nconst emit = defineEmits<{\n (e: 'update:modelValue', value: boolean): void\n (e: 'confirm'): void\n (e: 'cancel'): void\n}>()\n\nconst { t } = useI18n()\n\nfunction handleCancel() {\n emit('update:modelValue', false)\n emit('cancel')\n}\n\nfunction handleConfirm() {\n emit('update:modelValue', false)\n emit('confirm')\n}\n</script>\n\n<template>\n <AlertDialogRoot :open=\"modelValue\" @update:open=\"emit('update:modelValue', $event)\">\n <AlertDialogPortal>\n <AlertDialogOverlay class=\"fixed inset-0 z-100 bg-black/50 data-[state=closed]:animate-fadeOut data-[state=open]:animate-fadeIn\" />\n <AlertDialogContent\n class=\"fixed left-1/2 top-1/2 z-100 max-w-md w-full border border-neutral-200 rounded-xl bg-white p-6 shadow-xl -translate-x-1/2 -translate-y-1/2 data-[state=closed]:animate-contentHide data-[state=open]:animate-contentShow dark:border-neutral-700 dark:bg-neutral-800\"\n >\n <AlertDialogTitle class=\"mb-4 text-xl font-normal\">\n {{ t('settings.pages.card.delete_card') }}\n </AlertDialogTitle>\n <AlertDialogDescription class=\"mb-6\">\n {{ t('settings.pages.card.delete_confirmation') }} <b>\"{{ cardName || '' }}\"</b>\n </AlertDialogDescription>\n\n <div class=\"flex flex-row justify-end gap-3\">\n <AlertDialogCancel as-child>\n <Button\n variant=\"secondary\"\n :label=\"t('settings.pages.card.cancel')\"\n @click=\"handleCancel\"\n />\n </AlertDialogCancel>\n <AlertDialogAction as-child>\n <Button\n variant=\"danger\"\n :label=\"t('settings.pages.card.delete')\"\n @click=\"handleConfirm\"\n />\n </AlertDialogAction>\n </div>\n </AlertDialogContent>\n </AlertDialogPortal>\n </AlertDialogRoot>\n</template>\n","<script setup lang=\"ts\">\nimport { Button } from '@proj-airi/ui'\nimport {\n AlertDialogAction,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogOverlay,\n AlertDialogPortal,\n AlertDialogRoot,\n AlertDialogTitle,\n} from 'reka-ui'\nimport { useI18n } from 'vue-i18n'\n\ninterface Props {\n modelValue: boolean\n cardName?: string\n}\n\ndefineProps<Props>()\nconst emit = defineEmits<{\n (e: 'update:modelValue', value: boolean): void\n (e: 'confirm'): void\n (e: 'cancel'): void\n}>()\n\nconst { t } = useI18n()\n\nfunction handleCancel() {\n emit('update:modelValue', false)\n emit('cancel')\n}\n\nfunction handleConfirm() {\n emit('update:modelValue', false)\n emit('confirm')\n}\n</script>\n\n<template>\n <AlertDialogRoot :open=\"modelValue\" @update:open=\"emit('update:modelValue', $event)\">\n <AlertDialogPortal>\n <AlertDialogOverlay class=\"fixed inset-0 z-100 bg-black/50 data-[state=closed]:animate-fadeOut data-[state=open]:animate-fadeIn\" />\n <AlertDialogContent\n class=\"fixed left-1/2 top-1/2 z-100 max-w-md w-full border border-neutral-200 rounded-xl bg-white p-6 shadow-xl -translate-x-1/2 -translate-y-1/2 data-[state=closed]:animate-contentHide data-[state=open]:animate-contentShow dark:border-neutral-700 dark:bg-neutral-800\"\n >\n <AlertDialogTitle class=\"mb-4 text-xl font-normal\">\n {{ t('settings.pages.card.delete_card') }}\n </AlertDialogTitle>\n <AlertDialogDescription class=\"mb-6\">\n {{ t('settings.pages.card.delete_confirmation') }} <b>\"{{ cardName || '' }}\"</b>\n </AlertDialogDescription>\n\n <div class=\"flex flex-row justify-end gap-3\">\n <AlertDialogCancel as-child>\n <Button\n variant=\"secondary\"\n :label=\"t('settings.pages.card.cancel')\"\n @click=\"handleCancel\"\n />\n </AlertDialogCancel>\n <AlertDialogAction as-child>\n <Button\n variant=\"danger\"\n :label=\"t('settings.pages.card.delete')\"\n @click=\"handleConfirm\"\n />\n </AlertDialogAction>\n </div>\n </AlertDialogContent>\n </AlertDialogPortal>\n </AlertDialogRoot>\n</template>\n"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9],"mappings":"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"}
assets/{DialogPortal-2ogLZMDa.js β†’ DialogPortal-BhPdarFy.js} RENAMED
@@ -1,2 +1,2 @@
1
- import{A as e,K as t,M as n,Mt as r,S as i,Y as a,kt as o,lt as s}from"./vue.runtime.esm-bundler-_ZPRHVd_.js";import{n as c}from"./DialogTitle-WndXCd57.js";var l=e({__name:`DialogPortal`,props:{to:{type:null,required:!1},disabled:{type:Boolean,required:!1},defer:{type:Boolean,required:!1},forceMount:{type:Boolean,required:!1}},setup(e){let l=e;return(e,u)=>(t(),i(o(c),r(n(l)),{default:s(()=>[a(e.$slots,`default`)]),_:3},16))}});export{l as t};
2
- //# sourceMappingURL=DialogPortal-2ogLZMDa.js.map
 
1
+ import{A as e,K as t,M as n,Mt as r,S as i,Y as a,kt as o,lt as s}from"./vue.runtime.esm-bundler-_ZPRHVd_.js";import{n as c}from"./DialogTitle-D6_neaY1.js";var l=e({__name:`DialogPortal`,props:{to:{type:null,required:!1},disabled:{type:Boolean,required:!1},defer:{type:Boolean,required:!1},forceMount:{type:Boolean,required:!1}},setup(e){let l=e;return(e,u)=>(t(),i(o(c),r(n(l)),{default:s(()=>[a(e.$slots,`default`)]),_:3},16))}});export{l as t};
2
+ //# sourceMappingURL=DialogPortal-BhPdarFy.js.map
assets/{DialogPortal-2ogLZMDa.js.map β†’ DialogPortal-BhPdarFy.js.map} RENAMED
@@ -1 +1 @@
1
- {"version":3,"file":"DialogPortal-2ogLZMDa.js","names":[],"sources":["../../../../node_modules/.pnpm/reka-ui@2.7.0_typescript@5.9.3_vue@3.5.25_typescript@5.9.3_/node_modules/reka-ui/dist/Dialog/DialogPortal.js"],"sourcesContent":["import { Teleport_default } from \"../Teleport/Teleport.js\";\nimport { createBlock, defineComponent, guardReactiveProps, normalizeProps, openBlock, renderSlot, unref, withCtx } from \"vue\";\n\n//#region src/Dialog/DialogPortal.vue?vue&type=script&setup=true&lang.ts\nvar DialogPortal_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({\n\t__name: \"DialogPortal\",\n\tprops: {\n\t\tto: {\n\t\t\ttype: null,\n\t\t\trequired: false\n\t\t},\n\t\tdisabled: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false\n\t\t},\n\t\tdefer: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false\n\t\t},\n\t\tforceMount: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false\n\t\t}\n\t},\n\tsetup(__props) {\n\t\tconst props = __props;\n\t\treturn (_ctx, _cache) => {\n\t\t\treturn openBlock(), createBlock(unref(Teleport_default), normalizeProps(guardReactiveProps(props)), {\n\t\t\t\tdefault: withCtx(() => [renderSlot(_ctx.$slots, \"default\")]),\n\t\t\t\t_: 3\n\t\t\t}, 16);\n\t\t};\n\t}\n});\n\n//#endregion\n//#region src/Dialog/DialogPortal.vue\nvar DialogPortal_default = DialogPortal_vue_vue_type_script_setup_true_lang_default;\n\n//#endregion\nexport { DialogPortal_default };\n//# sourceMappingURL=DialogPortal.js.map"],"x_google_ignoreList":[0],"mappings":"4JAqCA,IAAI,EAjC2E,EAAgB,CAC9F,OAAQ,eACR,MAAO,CACN,GAAI,CACH,KAAM,KACN,SAAU,GACV,CACD,SAAU,CACT,KAAM,QACN,SAAU,GACV,CACD,MAAO,CACN,KAAM,QACN,SAAU,GACV,CACD,WAAY,CACX,KAAM,QACN,SAAU,GACV,CACD,CACD,MAAM,EAAS,CACd,IAAM,EAAQ,EACd,OAAQ,EAAM,KACN,GAAW,CAAE,EAAY,EAAM,EAAiB,CAAE,EAAe,EAAmB,EAAM,CAAC,CAAE,CACnG,QAAS,MAAc,CAAC,EAAW,EAAK,OAAQ,UAAU,CAAC,CAAC,CAC5D,EAAG,EACH,CAAE,GAAG,GAGR,CAAC"}
 
1
+ {"version":3,"file":"DialogPortal-BhPdarFy.js","names":[],"sources":["../../../../node_modules/.pnpm/reka-ui@2.7.0_typescript@5.9.3_vue@3.5.25_typescript@5.9.3_/node_modules/reka-ui/dist/Dialog/DialogPortal.js"],"sourcesContent":["import { Teleport_default } from \"../Teleport/Teleport.js\";\nimport { createBlock, defineComponent, guardReactiveProps, normalizeProps, openBlock, renderSlot, unref, withCtx } from \"vue\";\n\n//#region src/Dialog/DialogPortal.vue?vue&type=script&setup=true&lang.ts\nvar DialogPortal_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({\n\t__name: \"DialogPortal\",\n\tprops: {\n\t\tto: {\n\t\t\ttype: null,\n\t\t\trequired: false\n\t\t},\n\t\tdisabled: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false\n\t\t},\n\t\tdefer: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false\n\t\t},\n\t\tforceMount: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false\n\t\t}\n\t},\n\tsetup(__props) {\n\t\tconst props = __props;\n\t\treturn (_ctx, _cache) => {\n\t\t\treturn openBlock(), createBlock(unref(Teleport_default), normalizeProps(guardReactiveProps(props)), {\n\t\t\t\tdefault: withCtx(() => [renderSlot(_ctx.$slots, \"default\")]),\n\t\t\t\t_: 3\n\t\t\t}, 16);\n\t\t};\n\t}\n});\n\n//#endregion\n//#region src/Dialog/DialogPortal.vue\nvar DialogPortal_default = DialogPortal_vue_vue_type_script_setup_true_lang_default;\n\n//#endregion\nexport { DialogPortal_default };\n//# sourceMappingURL=DialogPortal.js.map"],"x_google_ignoreList":[0],"mappings":"4JAqCA,IAAI,EAjC2E,EAAgB,CAC9F,OAAQ,eACR,MAAO,CACN,GAAI,CACH,KAAM,KACN,SAAU,GACV,CACD,SAAU,CACT,KAAM,QACN,SAAU,GACV,CACD,MAAO,CACN,KAAM,QACN,SAAU,GACV,CACD,WAAY,CACX,KAAM,QACN,SAAU,GACV,CACD,CACD,MAAM,EAAS,CACd,IAAM,EAAQ,EACd,OAAQ,EAAM,KACN,GAAW,CAAE,EAAY,EAAM,EAAiB,CAAE,EAAe,EAAmB,EAAM,CAAC,CAAE,CACnG,QAAS,MAAc,CAAC,EAAW,EAAK,OAAQ,UAAU,CAAC,CAAC,CAC5D,EAAG,EACH,CAAE,GAAG,GAGR,CAAC"}
assets/{DialogTitle-WndXCd57.js β†’ DialogTitle-D6_neaY1.js} RENAMED
@@ -1,2 +1,2 @@
1
- import{A as e,B as t,C as n,Dt as r,K as i,S as a,W as o,Y as s,_ as c,k as l,kt as u,lt as d,ot as f,xt as p,yt as m,z as h}from"./vue.runtime.esm-bundler-_ZPRHVd_.js";import{G as g,J as _,L as v,N as y,P as b,Q as ee,R as x,U as S,V as C,X as w,it as T,k as E,q as D,rt as O}from"./src-B0kTFhyw.js";var[k,A]=T(`DialogRoot`),j=e({inheritAttrs:!1,__name:`DialogRoot`,props:{open:{type:Boolean,required:!1,default:void 0},defaultOpen:{type:Boolean,required:!1,default:!1},modal:{type:Boolean,required:!1,default:!0}},emits:[`update:open`],setup(e,{emit:t}){let n=e,i=_(n,`open`,t,{defaultValue:n.defaultOpen,passive:n.open===void 0}),a=p(),o=p(),{modal:c}=r(n);return A({open:i,modal:c,openModal:()=>{i.value=!0},onOpenChange:e=>{i.value=e},onOpenToggle:()=>{i.value=!i.value},contentId:``,titleId:``,descriptionId:``,triggerElement:a,contentElement:o}),(e,t)=>s(e.$slots,`default`,{open:u(i),close:()=>i.value=!1})}}),M=w(()=>p([]));function N(){let e=M();return{add(t){let n=e.value[0];t!==n&&n?.pause(),e.value=P(e.value,t),e.value.unshift(t)},remove(t){e.value=P(e.value,t),e.value[0]?.resume()}}}function P(e,t){let n=[...e],r=n.indexOf(t);return r!==-1&&n.splice(r,1),n}function te(e){return e.filter(e=>e.tagName!==`A`)}var F=`focusScope.autoFocusOnMount`,I=`focusScope.autoFocusOnUnmount`,L={bubbles:!1,cancelable:!0};function R(e,{select:t=!1}={}){let n=O();for(let r of e)if(W(r,{select:t}),O()!==n)return!0}function z(e){let t=B(e);return[V(t,e),V(t.reverse(),e)]}function B(e){let t=[],n=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:e=>{let t=e.tagName===`INPUT`&&e.type===`hidden`;return e.disabled||e.hidden||t?NodeFilter.FILTER_SKIP:e.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;n.nextNode();)t.push(n.currentNode);return t}function V(e,t){for(let n of e)if(!H(n,{upTo:t}))return n}function H(e,{upTo:t}){if(getComputedStyle(e).visibility===`hidden`)return!0;for(;e;){if(t!==void 0&&e===t)return!1;if(getComputedStyle(e).display===`none`)return!0;e=e.parentElement}return!1}function U(e){return e instanceof HTMLInputElement&&`select`in e}function W(e,{select:t=!1}={}){if(e&&e.focus){let n=O();e.focus({preventScroll:!0}),e!==n&&U(e)&&t&&e.select()}}var G=e({__name:`FocusScope`,props:{loop:{type:Boolean,required:!1,default:!1},trapped:{type:Boolean,required:!1,default:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`mountAutoFocus`,`unmountAutoFocus`],setup(e,{emit:n}){let r=e,o=n,{currentRef:c,currentElement:l}=C(),h=p(null),g=N(),_=m({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}});f(e=>{if(!ee)return;let t=l.value;if(!r.trapped)return;function n(e){if(_.paused||!t)return;let n=e.target;t.contains(n)?h.value=n:W(h.value,{select:!0})}function i(e){if(_.paused||!t)return;let n=e.relatedTarget;n!==null&&(t.contains(n)||W(h.value,{select:!0}))}function a(e){t.contains(h.value)||W(t)}document.addEventListener(`focusin`,n),document.addEventListener(`focusout`,i);let o=new MutationObserver(a);t&&o.observe(t,{childList:!0,subtree:!0}),e(()=>{document.removeEventListener(`focusin`,n),document.removeEventListener(`focusout`,i),o.disconnect()})}),f(async e=>{let n=l.value;if(await t(),!n)return;g.add(_);let r=O();if(!n.contains(r)){let e=new CustomEvent(F,L);n.addEventListener(F,e=>o(`mountAutoFocus`,e)),n.dispatchEvent(e),e.defaultPrevented||(R(te(B(n)),{select:!0}),O()===r&&W(n))}e(()=>{n.removeEventListener(F,e=>o(`mountAutoFocus`,e));let e=new CustomEvent(I,L),t=e=>{o(`unmountAutoFocus`,e)};n.addEventListener(I,t),n.dispatchEvent(e),setTimeout(()=>{e.defaultPrevented||W(r??document.body,{select:!0}),n.removeEventListener(I,t),g.remove(_)},0)})});function v(e){if(!r.loop&&!r.trapped||_.paused)return;let t=e.key===`Tab`&&!e.altKey&&!e.ctrlKey&&!e.metaKey,n=O();if(t&&n){let t=e.currentTarget,[i,a]=z(t);i&&a?!e.shiftKey&&n===a?(e.preventDefault(),r.loop&&W(i,{select:!0})):e.shiftKey&&n===i&&(e.preventDefault(),r.loop&&W(a,{select:!0})):n===t&&e.preventDefault()}}return(e,t)=>(i(),a(u(y),{ref_key:`currentRef`,ref:c,tabindex:`-1`,"as-child":e.asChild,as:e.as,onKeydown:v},{default:d(()=>[s(e.$slots,`default`)]),_:3},8,[`as-child`,`as`]))}}),K=`menu.itemSelect`,q=[`Enter`,` `],J=[`ArrowDown`,`PageUp`,`Home`],Y=[`ArrowUp`,`PageDown`,`End`],X=[...J,...Y];[...q],[...q];function Z(e){return e?`open`:`closed`}function ne(e){let t=O();for(let n of e)if(n===t||(n.focus(),O()!==t))return}function re(e,t){let{x:n,y:r}=e,i=!1;for(let e=0,a=t.length-1;e<t.length;a=e++){let o=t[e].x,s=t[e].y,c=t[a].x,l=t[a].y;s>r!=l>r&&n<(c-o)*(r-s)/(l-s)+o&&(i=!i)}return i}function ie(e,t){return t?re({x:e.clientX,y:e.clientY},t):!1}function ae(e){return e.pointerType===`mouse`}var Q=e({__name:`DialogContentImpl`,props:{forceMount:{type:Boolean,required:!1},trapFocus:{type:Boolean,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`openAutoFocus`,`closeAutoFocus`],setup(e,{emit:t}){let n=e,r=t,c=k(),{forwardRef:f,currentElement:p}=C();return c.titleId||=v(void 0,`reka-dialog-title`),c.descriptionId||=v(void 0,`reka-dialog-description`),o(()=>{c.contentElement=p,O()!==document.body&&(c.triggerElement.value=O())}),(e,t)=>(i(),a(u(G),{"as-child":``,loop:``,trapped:n.trapFocus,onMountAutoFocus:t[5]||=e=>r(`openAutoFocus`,e),onUnmountAutoFocus:t[6]||=e=>r(`closeAutoFocus`,e)},{default:d(()=>[l(u(E),h({id:u(c).contentId,ref:u(f),as:e.as,"as-child":e.asChild,"disable-outside-pointer-events":e.disableOutsidePointerEvents,role:`dialog`,"aria-describedby":u(c).descriptionId,"aria-labelledby":u(c).titleId,"data-state":u(Z)(u(c).open.value)},e.$attrs,{onDismiss:t[0]||=e=>u(c).onOpenChange(!1),onEscapeKeyDown:t[1]||=e=>r(`escapeKeyDown`,e),onFocusOutside:t[2]||=e=>r(`focusOutside`,e),onInteractOutside:t[3]||=e=>r(`interactOutside`,e),onPointerDownOutside:t[4]||=e=>r(`pointerDownOutside`,e)}),{default:d(()=>[s(e.$slots,`default`)]),_:3},16,[`id`,`as`,`as-child`,`disable-outside-pointer-events`,`aria-describedby`,`aria-labelledby`,`data-state`])]),_:3},8,[`trapped`]))}}),oe=e({__name:`DialogContentModal`,props:{forceMount:{type:Boolean,required:!1},trapFocus:{type:Boolean,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`openAutoFocus`,`closeAutoFocus`],setup(e,{emit:t}){let n=e,r=t,o=k(),c=S(r),{forwardRef:l,currentElement:f}=C();return x(f),(e,t)=>(i(),a(Q,h({...n,...u(c)},{ref:u(l),"trap-focus":u(o).open.value,"disable-outside-pointer-events":!0,onCloseAutoFocus:t[0]||=e=>{e.defaultPrevented||(e.preventDefault(),u(o).triggerElement.value?.focus())},onPointerDownOutside:t[1]||=e=>{let t=e.detail.originalEvent,n=t.button===0&&t.ctrlKey===!0;(t.button===2||n)&&e.preventDefault()},onFocusOutside:t[2]||=e=>{e.preventDefault()}}),{default:d(()=>[s(e.$slots,`default`)]),_:3},16,[`trap-focus`]))}}),$=e({__name:`DialogContentNonModal`,props:{forceMount:{type:Boolean,required:!1},trapFocus:{type:Boolean,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`openAutoFocus`,`closeAutoFocus`],setup(e,{emit:t}){let n=e,r=S(t);C();let o=k(),c=p(!1),l=p(!1);return(e,t)=>(i(),a(Q,h({...n,...u(r)},{"trap-focus":!1,"disable-outside-pointer-events":!1,onCloseAutoFocus:t[0]||=e=>{e.defaultPrevented||(c.value||u(o).triggerElement.value?.focus(),e.preventDefault()),c.value=!1,l.value=!1},onInteractOutside:t[1]||=e=>{e.defaultPrevented||(c.value=!0,e.detail.originalEvent.type===`pointerdown`&&(l.value=!0));let t=e.target;u(o).triggerElement.value?.contains(t)&&e.preventDefault(),e.detail.originalEvent.type===`focusin`&&l.value&&e.preventDefault()}}),{default:d(()=>[s(e.$slots,`default`)]),_:3},16))}}),se=e({__name:`DialogContent`,props:{forceMount:{type:Boolean,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`openAutoFocus`,`closeAutoFocus`],setup(e,{emit:t}){let n=e,r=t,o=k(),c=S(r),{forwardRef:l}=C();return(e,t)=>(i(),a(u(b),{present:e.forceMount||u(o).open.value},{default:d(()=>[u(o).modal.value?(i(),a(oe,h({key:0,ref:u(l)},{...n,...u(c),...e.$attrs}),{default:d(()=>[s(e.$slots,`default`)]),_:3},16)):(i(),a($,h({key:1,ref:u(l)},{...n,...u(c),...e.$attrs}),{default:d(()=>[s(e.$slots,`default`)]),_:3},16))]),_:3},8,[`present`]))}}),ce=e({__name:`DialogOverlayImpl`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){let t=k();return g(!0),C(),(e,n)=>(i(),a(u(y),{as:e.as,"as-child":e.asChild,"data-state":u(t).open.value?`open`:`closed`,style:{"pointer-events":`auto`}},{default:d(()=>[s(e.$slots,`default`)]),_:3},8,[`as`,`as-child`,`data-state`]))}}),le=e({__name:`DialogOverlay`,props:{forceMount:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){let t=k(),{forwardRef:r}=C();return(e,o)=>u(t)?.modal.value?(i(),a(u(b),{key:0,present:e.forceMount||u(t).open.value},{default:d(()=>[l(ce,h(e.$attrs,{ref:u(r),as:e.as,"as-child":e.asChild}),{default:d(()=>[s(e.$slots,`default`)]),_:3},16,[`as`,`as-child`])]),_:3},8,[`present`])):n(`v-if`,!0)}}),ue=e({__name:`Teleport`,props:{to:{type:null,required:!1,default:`body`},disabled:{type:Boolean,required:!1},defer:{type:Boolean,required:!1},forceMount:{type:Boolean,required:!1}},setup(e){let t=D();return(e,r)=>u(t)||e.forceMount?(i(),a(c,{key:0,to:e.to,disabled:e.disabled,defer:e.defer},[s(e.$slots,`default`)],8,[`to`,`disabled`,`defer`])):n(`v-if`,!0)}}),de=e({__name:`DialogTitle`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`h2`}},setup(e){let t=e,n=k();return C(),(e,r)=>(i(),a(u(y),h(t,{id:u(n).titleId}),{default:d(()=>[s(e.$slots,`default`)]),_:3},16,[`id`]))}});export{X as a,q as c,ae as d,ie as f,k as h,se as i,ne as l,j as m,ue as n,K as o,G as p,le as r,Y as s,de as t,Z as u};
2
- //# sourceMappingURL=DialogTitle-WndXCd57.js.map
 
1
+ import{A as e,B as t,C as n,Dt as r,K as i,S as a,W as o,Y as s,_ as c,k as l,kt as u,lt as d,ot as f,xt as p,yt as m,z as h}from"./vue.runtime.esm-bundler-_ZPRHVd_.js";import{G as g,J as _,L as v,N as y,P as b,Q as ee,R as x,U as S,V as C,X as w,it as T,k as E,q as D,rt as O}from"./src-CuCahbAr.js";var[k,A]=T(`DialogRoot`),j=e({inheritAttrs:!1,__name:`DialogRoot`,props:{open:{type:Boolean,required:!1,default:void 0},defaultOpen:{type:Boolean,required:!1,default:!1},modal:{type:Boolean,required:!1,default:!0}},emits:[`update:open`],setup(e,{emit:t}){let n=e,i=_(n,`open`,t,{defaultValue:n.defaultOpen,passive:n.open===void 0}),a=p(),o=p(),{modal:c}=r(n);return A({open:i,modal:c,openModal:()=>{i.value=!0},onOpenChange:e=>{i.value=e},onOpenToggle:()=>{i.value=!i.value},contentId:``,titleId:``,descriptionId:``,triggerElement:a,contentElement:o}),(e,t)=>s(e.$slots,`default`,{open:u(i),close:()=>i.value=!1})}}),M=w(()=>p([]));function N(){let e=M();return{add(t){let n=e.value[0];t!==n&&n?.pause(),e.value=P(e.value,t),e.value.unshift(t)},remove(t){e.value=P(e.value,t),e.value[0]?.resume()}}}function P(e,t){let n=[...e],r=n.indexOf(t);return r!==-1&&n.splice(r,1),n}function te(e){return e.filter(e=>e.tagName!==`A`)}var F=`focusScope.autoFocusOnMount`,I=`focusScope.autoFocusOnUnmount`,L={bubbles:!1,cancelable:!0};function R(e,{select:t=!1}={}){let n=O();for(let r of e)if(W(r,{select:t}),O()!==n)return!0}function z(e){let t=B(e);return[V(t,e),V(t.reverse(),e)]}function B(e){let t=[],n=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:e=>{let t=e.tagName===`INPUT`&&e.type===`hidden`;return e.disabled||e.hidden||t?NodeFilter.FILTER_SKIP:e.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;n.nextNode();)t.push(n.currentNode);return t}function V(e,t){for(let n of e)if(!H(n,{upTo:t}))return n}function H(e,{upTo:t}){if(getComputedStyle(e).visibility===`hidden`)return!0;for(;e;){if(t!==void 0&&e===t)return!1;if(getComputedStyle(e).display===`none`)return!0;e=e.parentElement}return!1}function U(e){return e instanceof HTMLInputElement&&`select`in e}function W(e,{select:t=!1}={}){if(e&&e.focus){let n=O();e.focus({preventScroll:!0}),e!==n&&U(e)&&t&&e.select()}}var G=e({__name:`FocusScope`,props:{loop:{type:Boolean,required:!1,default:!1},trapped:{type:Boolean,required:!1,default:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`mountAutoFocus`,`unmountAutoFocus`],setup(e,{emit:n}){let r=e,o=n,{currentRef:c,currentElement:l}=C(),h=p(null),g=N(),_=m({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}});f(e=>{if(!ee)return;let t=l.value;if(!r.trapped)return;function n(e){if(_.paused||!t)return;let n=e.target;t.contains(n)?h.value=n:W(h.value,{select:!0})}function i(e){if(_.paused||!t)return;let n=e.relatedTarget;n!==null&&(t.contains(n)||W(h.value,{select:!0}))}function a(e){t.contains(h.value)||W(t)}document.addEventListener(`focusin`,n),document.addEventListener(`focusout`,i);let o=new MutationObserver(a);t&&o.observe(t,{childList:!0,subtree:!0}),e(()=>{document.removeEventListener(`focusin`,n),document.removeEventListener(`focusout`,i),o.disconnect()})}),f(async e=>{let n=l.value;if(await t(),!n)return;g.add(_);let r=O();if(!n.contains(r)){let e=new CustomEvent(F,L);n.addEventListener(F,e=>o(`mountAutoFocus`,e)),n.dispatchEvent(e),e.defaultPrevented||(R(te(B(n)),{select:!0}),O()===r&&W(n))}e(()=>{n.removeEventListener(F,e=>o(`mountAutoFocus`,e));let e=new CustomEvent(I,L),t=e=>{o(`unmountAutoFocus`,e)};n.addEventListener(I,t),n.dispatchEvent(e),setTimeout(()=>{e.defaultPrevented||W(r??document.body,{select:!0}),n.removeEventListener(I,t),g.remove(_)},0)})});function v(e){if(!r.loop&&!r.trapped||_.paused)return;let t=e.key===`Tab`&&!e.altKey&&!e.ctrlKey&&!e.metaKey,n=O();if(t&&n){let t=e.currentTarget,[i,a]=z(t);i&&a?!e.shiftKey&&n===a?(e.preventDefault(),r.loop&&W(i,{select:!0})):e.shiftKey&&n===i&&(e.preventDefault(),r.loop&&W(a,{select:!0})):n===t&&e.preventDefault()}}return(e,t)=>(i(),a(u(y),{ref_key:`currentRef`,ref:c,tabindex:`-1`,"as-child":e.asChild,as:e.as,onKeydown:v},{default:d(()=>[s(e.$slots,`default`)]),_:3},8,[`as-child`,`as`]))}}),K=`menu.itemSelect`,q=[`Enter`,` `],J=[`ArrowDown`,`PageUp`,`Home`],Y=[`ArrowUp`,`PageDown`,`End`],X=[...J,...Y];[...q],[...q];function Z(e){return e?`open`:`closed`}function ne(e){let t=O();for(let n of e)if(n===t||(n.focus(),O()!==t))return}function re(e,t){let{x:n,y:r}=e,i=!1;for(let e=0,a=t.length-1;e<t.length;a=e++){let o=t[e].x,s=t[e].y,c=t[a].x,l=t[a].y;s>r!=l>r&&n<(c-o)*(r-s)/(l-s)+o&&(i=!i)}return i}function ie(e,t){return t?re({x:e.clientX,y:e.clientY},t):!1}function ae(e){return e.pointerType===`mouse`}var Q=e({__name:`DialogContentImpl`,props:{forceMount:{type:Boolean,required:!1},trapFocus:{type:Boolean,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`openAutoFocus`,`closeAutoFocus`],setup(e,{emit:t}){let n=e,r=t,c=k(),{forwardRef:f,currentElement:p}=C();return c.titleId||=v(void 0,`reka-dialog-title`),c.descriptionId||=v(void 0,`reka-dialog-description`),o(()=>{c.contentElement=p,O()!==document.body&&(c.triggerElement.value=O())}),(e,t)=>(i(),a(u(G),{"as-child":``,loop:``,trapped:n.trapFocus,onMountAutoFocus:t[5]||=e=>r(`openAutoFocus`,e),onUnmountAutoFocus:t[6]||=e=>r(`closeAutoFocus`,e)},{default:d(()=>[l(u(E),h({id:u(c).contentId,ref:u(f),as:e.as,"as-child":e.asChild,"disable-outside-pointer-events":e.disableOutsidePointerEvents,role:`dialog`,"aria-describedby":u(c).descriptionId,"aria-labelledby":u(c).titleId,"data-state":u(Z)(u(c).open.value)},e.$attrs,{onDismiss:t[0]||=e=>u(c).onOpenChange(!1),onEscapeKeyDown:t[1]||=e=>r(`escapeKeyDown`,e),onFocusOutside:t[2]||=e=>r(`focusOutside`,e),onInteractOutside:t[3]||=e=>r(`interactOutside`,e),onPointerDownOutside:t[4]||=e=>r(`pointerDownOutside`,e)}),{default:d(()=>[s(e.$slots,`default`)]),_:3},16,[`id`,`as`,`as-child`,`disable-outside-pointer-events`,`aria-describedby`,`aria-labelledby`,`data-state`])]),_:3},8,[`trapped`]))}}),oe=e({__name:`DialogContentModal`,props:{forceMount:{type:Boolean,required:!1},trapFocus:{type:Boolean,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`openAutoFocus`,`closeAutoFocus`],setup(e,{emit:t}){let n=e,r=t,o=k(),c=S(r),{forwardRef:l,currentElement:f}=C();return x(f),(e,t)=>(i(),a(Q,h({...n,...u(c)},{ref:u(l),"trap-focus":u(o).open.value,"disable-outside-pointer-events":!0,onCloseAutoFocus:t[0]||=e=>{e.defaultPrevented||(e.preventDefault(),u(o).triggerElement.value?.focus())},onPointerDownOutside:t[1]||=e=>{let t=e.detail.originalEvent,n=t.button===0&&t.ctrlKey===!0;(t.button===2||n)&&e.preventDefault()},onFocusOutside:t[2]||=e=>{e.preventDefault()}}),{default:d(()=>[s(e.$slots,`default`)]),_:3},16,[`trap-focus`]))}}),$=e({__name:`DialogContentNonModal`,props:{forceMount:{type:Boolean,required:!1},trapFocus:{type:Boolean,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`openAutoFocus`,`closeAutoFocus`],setup(e,{emit:t}){let n=e,r=S(t);C();let o=k(),c=p(!1),l=p(!1);return(e,t)=>(i(),a(Q,h({...n,...u(r)},{"trap-focus":!1,"disable-outside-pointer-events":!1,onCloseAutoFocus:t[0]||=e=>{e.defaultPrevented||(c.value||u(o).triggerElement.value?.focus(),e.preventDefault()),c.value=!1,l.value=!1},onInteractOutside:t[1]||=e=>{e.defaultPrevented||(c.value=!0,e.detail.originalEvent.type===`pointerdown`&&(l.value=!0));let t=e.target;u(o).triggerElement.value?.contains(t)&&e.preventDefault(),e.detail.originalEvent.type===`focusin`&&l.value&&e.preventDefault()}}),{default:d(()=>[s(e.$slots,`default`)]),_:3},16))}}),se=e({__name:`DialogContent`,props:{forceMount:{type:Boolean,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`openAutoFocus`,`closeAutoFocus`],setup(e,{emit:t}){let n=e,r=t,o=k(),c=S(r),{forwardRef:l}=C();return(e,t)=>(i(),a(u(b),{present:e.forceMount||u(o).open.value},{default:d(()=>[u(o).modal.value?(i(),a(oe,h({key:0,ref:u(l)},{...n,...u(c),...e.$attrs}),{default:d(()=>[s(e.$slots,`default`)]),_:3},16)):(i(),a($,h({key:1,ref:u(l)},{...n,...u(c),...e.$attrs}),{default:d(()=>[s(e.$slots,`default`)]),_:3},16))]),_:3},8,[`present`]))}}),ce=e({__name:`DialogOverlayImpl`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){let t=k();return g(!0),C(),(e,n)=>(i(),a(u(y),{as:e.as,"as-child":e.asChild,"data-state":u(t).open.value?`open`:`closed`,style:{"pointer-events":`auto`}},{default:d(()=>[s(e.$slots,`default`)]),_:3},8,[`as`,`as-child`,`data-state`]))}}),le=e({__name:`DialogOverlay`,props:{forceMount:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){let t=k(),{forwardRef:r}=C();return(e,o)=>u(t)?.modal.value?(i(),a(u(b),{key:0,present:e.forceMount||u(t).open.value},{default:d(()=>[l(ce,h(e.$attrs,{ref:u(r),as:e.as,"as-child":e.asChild}),{default:d(()=>[s(e.$slots,`default`)]),_:3},16,[`as`,`as-child`])]),_:3},8,[`present`])):n(`v-if`,!0)}}),ue=e({__name:`Teleport`,props:{to:{type:null,required:!1,default:`body`},disabled:{type:Boolean,required:!1},defer:{type:Boolean,required:!1},forceMount:{type:Boolean,required:!1}},setup(e){let t=D();return(e,r)=>u(t)||e.forceMount?(i(),a(c,{key:0,to:e.to,disabled:e.disabled,defer:e.defer},[s(e.$slots,`default`)],8,[`to`,`disabled`,`defer`])):n(`v-if`,!0)}}),de=e({__name:`DialogTitle`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`h2`}},setup(e){let t=e,n=k();return C(),(e,r)=>(i(),a(u(y),h(t,{id:u(n).titleId}),{default:d(()=>[s(e.$slots,`default`)]),_:3},16,[`id`]))}});export{X as a,q as c,ae as d,ie as f,k as h,se as i,ne as l,j as m,ue as n,K as o,G as p,le as r,Y as s,de as t,Z as u};
2
+ //# sourceMappingURL=DialogTitle-D6_neaY1.js.map
assets/{DialogTitle-WndXCd57.js.map β†’ DialogTitle-D6_neaY1.js.map} RENAMED
@@ -1 +1 @@
1
- {"version":3,"file":"DialogTitle-WndXCd57.js","names":["focusFirst"],"sources":["../../../../node_modules/.pnpm/reka-ui@2.7.0_typescript@5.9.3_vue@3.5.25_typescript@5.9.3_/node_modules/reka-ui/dist/Dialog/DialogRoot.js","../../../../node_modules/.pnpm/reka-ui@2.7.0_typescript@5.9.3_vue@3.5.25_typescript@5.9.3_/node_modules/reka-ui/dist/FocusScope/stack.js","../../../../node_modules/.pnpm/reka-ui@2.7.0_typescript@5.9.3_vue@3.5.25_typescript@5.9.3_/node_modules/reka-ui/dist/FocusScope/utils.js","../../../../node_modules/.pnpm/reka-ui@2.7.0_typescript@5.9.3_vue@3.5.25_typescript@5.9.3_/node_modules/reka-ui/dist/FocusScope/FocusScope.js","../../../../node_modules/.pnpm/reka-ui@2.7.0_typescript@5.9.3_vue@3.5.25_typescript@5.9.3_/node_modules/reka-ui/dist/Menu/utils.js","../../../../node_modules/.pnpm/reka-ui@2.7.0_typescript@5.9.3_vue@3.5.25_typescript@5.9.3_/node_modules/reka-ui/dist/Dialog/DialogContentImpl.js","../../../../node_modules/.pnpm/reka-ui@2.7.0_typescript@5.9.3_vue@3.5.25_typescript@5.9.3_/node_modules/reka-ui/dist/Dialog/DialogContentModal.js","../../../../node_modules/.pnpm/reka-ui@2.7.0_typescript@5.9.3_vue@3.5.25_typescript@5.9.3_/node_modules/reka-ui/dist/Dialog/DialogContentNonModal.js","../../../../node_modules/.pnpm/reka-ui@2.7.0_typescript@5.9.3_vue@3.5.25_typescript@5.9.3_/node_modules/reka-ui/dist/Dialog/DialogContent.js","../../../../node_modules/.pnpm/reka-ui@2.7.0_typescript@5.9.3_vue@3.5.25_typescript@5.9.3_/node_modules/reka-ui/dist/Dialog/DialogOverlayImpl.js","../../../../node_modules/.pnpm/reka-ui@2.7.0_typescript@5.9.3_vue@3.5.25_typescript@5.9.3_/node_modules/reka-ui/dist/Dialog/DialogOverlay.js","../../../../node_modules/.pnpm/reka-ui@2.7.0_typescript@5.9.3_vue@3.5.25_typescript@5.9.3_/node_modules/reka-ui/dist/Teleport/Teleport.js","../../../../node_modules/.pnpm/reka-ui@2.7.0_typescript@5.9.3_vue@3.5.25_typescript@5.9.3_/node_modules/reka-ui/dist/Dialog/DialogTitle.js"],"sourcesContent":["import { createContext } from \"../shared/createContext.js\";\nimport { defineComponent, ref, renderSlot, toRefs, unref } from \"vue\";\nimport { useVModel } from \"@vueuse/core\";\n\n//#region src/Dialog/DialogRoot.vue?vue&type=script&setup=true&lang.ts\nconst [injectDialogRootContext, provideDialogRootContext] = createContext(\"DialogRoot\");\nvar DialogRoot_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({\n\tinheritAttrs: false,\n\t__name: \"DialogRoot\",\n\tprops: {\n\t\topen: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false,\n\t\t\tdefault: void 0\n\t\t},\n\t\tdefaultOpen: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false,\n\t\t\tdefault: false\n\t\t},\n\t\tmodal: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false,\n\t\t\tdefault: true\n\t\t}\n\t},\n\temits: [\"update:open\"],\n\tsetup(__props, { emit: __emit }) {\n\t\tconst props = __props;\n\t\tconst emit = __emit;\n\t\tconst open = useVModel(props, \"open\", emit, {\n\t\t\tdefaultValue: props.defaultOpen,\n\t\t\tpassive: props.open === void 0\n\t\t});\n\t\tconst triggerElement = ref();\n\t\tconst contentElement = ref();\n\t\tconst { modal } = toRefs(props);\n\t\tprovideDialogRootContext({\n\t\t\topen,\n\t\t\tmodal,\n\t\t\topenModal: () => {\n\t\t\t\topen.value = true;\n\t\t\t},\n\t\t\tonOpenChange: (value) => {\n\t\t\t\topen.value = value;\n\t\t\t},\n\t\t\tonOpenToggle: () => {\n\t\t\t\topen.value = !open.value;\n\t\t\t},\n\t\t\tcontentId: \"\",\n\t\t\ttitleId: \"\",\n\t\t\tdescriptionId: \"\",\n\t\t\ttriggerElement,\n\t\t\tcontentElement\n\t\t});\n\t\treturn (_ctx, _cache) => {\n\t\t\treturn renderSlot(_ctx.$slots, \"default\", {\n\t\t\t\topen: unref(open),\n\t\t\t\tclose: () => open.value = false\n\t\t\t});\n\t\t};\n\t}\n});\n\n//#endregion\n//#region src/Dialog/DialogRoot.vue\nvar DialogRoot_default = DialogRoot_vue_vue_type_script_setup_true_lang_default;\n\n//#endregion\nexport { DialogRoot_default, injectDialogRootContext };\n//# sourceMappingURL=DialogRoot.js.map","import { ref } from \"vue\";\nimport { createGlobalState } from \"@vueuse/core\";\n\n//#region src/FocusScope/stack.ts\nconst useFocusStackState = createGlobalState(() => {\n\tconst stack = ref([]);\n\treturn stack;\n});\nfunction createFocusScopesStack() {\n\t/** A stack of focus scopes, with the active one at the top */\n\tconst stack = useFocusStackState();\n\treturn {\n\t\tadd(focusScope) {\n\t\t\tconst activeFocusScope = stack.value[0];\n\t\t\tif (focusScope !== activeFocusScope) activeFocusScope?.pause();\n\t\t\tstack.value = arrayRemove(stack.value, focusScope);\n\t\t\tstack.value.unshift(focusScope);\n\t\t},\n\t\tremove(focusScope) {\n\t\t\tstack.value = arrayRemove(stack.value, focusScope);\n\t\t\tstack.value[0]?.resume();\n\t\t}\n\t};\n}\nfunction arrayRemove(array, item) {\n\tconst updatedArray = [...array];\n\tconst index = updatedArray.indexOf(item);\n\tif (index !== -1) updatedArray.splice(index, 1);\n\treturn updatedArray;\n}\nfunction removeLinks(items) {\n\treturn items.filter((item) => item.tagName !== \"A\");\n}\n\n//#endregion\nexport { createFocusScopesStack, removeLinks };\n//# sourceMappingURL=stack.js.map","import { getActiveElement } from \"../shared/getActiveElement.js\";\n\n//#region src/FocusScope/utils.ts\nconst AUTOFOCUS_ON_MOUNT = \"focusScope.autoFocusOnMount\";\nconst AUTOFOCUS_ON_UNMOUNT = \"focusScope.autoFocusOnUnmount\";\nconst EVENT_OPTIONS = {\n\tbubbles: false,\n\tcancelable: true\n};\n/**\n* Attempts focusing the first element in a list of candidates.\n* Stops when focus has actually moved.\n*/\nfunction focusFirst(candidates, { select = false } = {}) {\n\tconst previouslyFocusedElement = getActiveElement();\n\tfor (const candidate of candidates) {\n\t\tfocus(candidate, { select });\n\t\tif (getActiveElement() !== previouslyFocusedElement) return true;\n\t}\n}\n/**\n* Returns the first and last tabbable elements inside a container.\n*/\nfunction getTabbableEdges(container) {\n\tconst candidates = getTabbableCandidates(container);\n\tconst first = findVisible(candidates, container);\n\tconst last = findVisible(candidates.reverse(), container);\n\treturn [first, last];\n}\n/**\n* Returns a list of potential tabbable candidates.\n*\n* NOTE: This is only a close approximation. For example it doesn't take into account cases like when\n* elements are not visible. This cannot be worked out easily by just reading a property, but rather\n* necessitate runtime knowledge (computed styles, etc). We deal with these cases separately.\n*\n* See: https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker\n* Credit: https://github.com/discord/focus-layers/blob/master/src/util/wrapFocus.tsx#L1\n*/\nfunction getTabbableCandidates(container) {\n\tconst nodes = [];\n\tconst walker = document.createTreeWalker(container, NodeFilter.SHOW_ELEMENT, { acceptNode: (node) => {\n\t\tconst isHiddenInput = node.tagName === \"INPUT\" && node.type === \"hidden\";\n\t\tif (node.disabled || node.hidden || isHiddenInput) return NodeFilter.FILTER_SKIP;\n\t\treturn node.tabIndex >= 0 ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP;\n\t} });\n\twhile (walker.nextNode()) nodes.push(walker.currentNode);\n\treturn nodes;\n}\n/**\n* Returns the first visible element in a list.\n* NOTE: Only checks visibility up to the `container`.\n*/\nfunction findVisible(elements, container) {\n\tfor (const element of elements) if (!isHidden(element, { upTo: container })) return element;\n}\nfunction isHidden(node, { upTo }) {\n\tif (getComputedStyle(node).visibility === \"hidden\") return true;\n\twhile (node) {\n\t\tif (upTo !== void 0 && node === upTo) return false;\n\t\tif (getComputedStyle(node).display === \"none\") return true;\n\t\tnode = node.parentElement;\n\t}\n\treturn false;\n}\nfunction isSelectableInput(element) {\n\treturn element instanceof HTMLInputElement && \"select\" in element;\n}\nfunction focus(element, { select = false } = {}) {\n\tif (element && element.focus) {\n\t\tconst previouslyFocusedElement = getActiveElement();\n\t\telement.focus({ preventScroll: true });\n\t\tif (element !== previouslyFocusedElement && isSelectableInput(element) && select) element.select();\n\t}\n}\n\n//#endregion\nexport { AUTOFOCUS_ON_MOUNT, AUTOFOCUS_ON_UNMOUNT, EVENT_OPTIONS, focus, focusFirst, getTabbableCandidates, getTabbableEdges };\n//# sourceMappingURL=utils.js.map","import { getActiveElement } from \"../shared/getActiveElement.js\";\nimport { useForwardExpose } from \"../shared/useForwardExpose.js\";\nimport { Primitive } from \"../Primitive/Primitive.js\";\nimport { createFocusScopesStack, removeLinks } from \"./stack.js\";\nimport { AUTOFOCUS_ON_MOUNT, AUTOFOCUS_ON_UNMOUNT, EVENT_OPTIONS, focus, focusFirst, getTabbableCandidates, getTabbableEdges } from \"./utils.js\";\nimport { createBlock, defineComponent, nextTick, openBlock, reactive, ref, renderSlot, unref, watchEffect, withCtx } from \"vue\";\nimport { isClient } from \"@vueuse/shared\";\n\n//#region src/FocusScope/FocusScope.vue?vue&type=script&setup=true&lang.ts\nvar FocusScope_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({\n\t__name: \"FocusScope\",\n\tprops: {\n\t\tloop: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false,\n\t\t\tdefault: false\n\t\t},\n\t\ttrapped: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false,\n\t\t\tdefault: false\n\t\t},\n\t\tasChild: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false\n\t\t},\n\t\tas: {\n\t\t\ttype: null,\n\t\t\trequired: false\n\t\t}\n\t},\n\temits: [\"mountAutoFocus\", \"unmountAutoFocus\"],\n\tsetup(__props, { emit: __emit }) {\n\t\tconst props = __props;\n\t\tconst emits = __emit;\n\t\tconst { currentRef, currentElement } = useForwardExpose();\n\t\tconst lastFocusedElementRef = ref(null);\n\t\tconst focusScopesStack = createFocusScopesStack();\n\t\tconst focusScope = reactive({\n\t\t\tpaused: false,\n\t\t\tpause() {\n\t\t\t\tthis.paused = true;\n\t\t\t},\n\t\t\tresume() {\n\t\t\t\tthis.paused = false;\n\t\t\t}\n\t\t});\n\t\twatchEffect((cleanupFn) => {\n\t\t\tif (!isClient) return;\n\t\t\tconst container = currentElement.value;\n\t\t\tif (!props.trapped) return;\n\t\t\tfunction handleFocusIn(event) {\n\t\t\t\tif (focusScope.paused || !container) return;\n\t\t\t\tconst target = event.target;\n\t\t\t\tif (container.contains(target)) lastFocusedElementRef.value = target;\n\t\t\t\telse focus(lastFocusedElementRef.value, { select: true });\n\t\t\t}\n\t\t\tfunction handleFocusOut(event) {\n\t\t\t\tif (focusScope.paused || !container) return;\n\t\t\t\tconst relatedTarget = event.relatedTarget;\n\t\t\t\tif (relatedTarget === null) return;\n\t\t\t\tif (!container.contains(relatedTarget)) focus(lastFocusedElementRef.value, { select: true });\n\t\t\t}\n\t\t\tfunction handleMutations(mutations) {\n\t\t\t\tconst isLastFocusedElementExist = container.contains(lastFocusedElementRef.value);\n\t\t\t\tif (!isLastFocusedElementExist) focus(container);\n\t\t\t}\n\t\t\tdocument.addEventListener(\"focusin\", handleFocusIn);\n\t\t\tdocument.addEventListener(\"focusout\", handleFocusOut);\n\t\t\tconst mutationObserver = new MutationObserver(handleMutations);\n\t\t\tif (container) mutationObserver.observe(container, {\n\t\t\t\tchildList: true,\n\t\t\t\tsubtree: true\n\t\t\t});\n\t\t\tcleanupFn(() => {\n\t\t\t\tdocument.removeEventListener(\"focusin\", handleFocusIn);\n\t\t\t\tdocument.removeEventListener(\"focusout\", handleFocusOut);\n\t\t\t\tmutationObserver.disconnect();\n\t\t\t});\n\t\t});\n\t\twatchEffect(async (cleanupFn) => {\n\t\t\tconst container = currentElement.value;\n\t\t\tawait nextTick();\n\t\t\tif (!container) return;\n\t\t\tfocusScopesStack.add(focusScope);\n\t\t\tconst previouslyFocusedElement = getActiveElement();\n\t\t\tconst hasFocusedCandidate = container.contains(previouslyFocusedElement);\n\t\t\tif (!hasFocusedCandidate) {\n\t\t\t\tconst mountEvent = new CustomEvent(AUTOFOCUS_ON_MOUNT, EVENT_OPTIONS);\n\t\t\t\tcontainer.addEventListener(AUTOFOCUS_ON_MOUNT, (ev) => emits(\"mountAutoFocus\", ev));\n\t\t\t\tcontainer.dispatchEvent(mountEvent);\n\t\t\t\tif (!mountEvent.defaultPrevented) {\n\t\t\t\t\tfocusFirst(removeLinks(getTabbableCandidates(container)), { select: true });\n\t\t\t\t\tif (getActiveElement() === previouslyFocusedElement) focus(container);\n\t\t\t\t}\n\t\t\t}\n\t\t\tcleanupFn(() => {\n\t\t\t\tcontainer.removeEventListener(AUTOFOCUS_ON_MOUNT, (ev) => emits(\"mountAutoFocus\", ev));\n\t\t\t\tconst unmountEvent = new CustomEvent(AUTOFOCUS_ON_UNMOUNT, EVENT_OPTIONS);\n\t\t\t\tconst unmountEventHandler = (ev) => {\n\t\t\t\t\temits(\"unmountAutoFocus\", ev);\n\t\t\t\t};\n\t\t\t\tcontainer.addEventListener(AUTOFOCUS_ON_UNMOUNT, unmountEventHandler);\n\t\t\t\tcontainer.dispatchEvent(unmountEvent);\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tif (!unmountEvent.defaultPrevented) focus(previouslyFocusedElement ?? document.body, { select: true });\n\t\t\t\t\tcontainer.removeEventListener(AUTOFOCUS_ON_UNMOUNT, unmountEventHandler);\n\t\t\t\t\tfocusScopesStack.remove(focusScope);\n\t\t\t\t}, 0);\n\t\t\t});\n\t\t});\n\t\tfunction handleKeyDown(event) {\n\t\t\tif (!props.loop && !props.trapped) return;\n\t\t\tif (focusScope.paused) return;\n\t\t\tconst isTabKey = event.key === \"Tab\" && !event.altKey && !event.ctrlKey && !event.metaKey;\n\t\t\tconst focusedElement = getActiveElement();\n\t\t\tif (isTabKey && focusedElement) {\n\t\t\t\tconst container = event.currentTarget;\n\t\t\t\tconst [first, last] = getTabbableEdges(container);\n\t\t\t\tconst hasTabbableElementsInside = first && last;\n\t\t\t\tif (!hasTabbableElementsInside) {\n\t\t\t\t\tif (focusedElement === container) event.preventDefault();\n\t\t\t\t} else if (!event.shiftKey && focusedElement === last) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tif (props.loop) focus(first, { select: true });\n\t\t\t\t} else if (event.shiftKey && focusedElement === first) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tif (props.loop) focus(last, { select: true });\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn (_ctx, _cache) => {\n\t\t\treturn openBlock(), createBlock(unref(Primitive), {\n\t\t\t\tref_key: \"currentRef\",\n\t\t\t\tref: currentRef,\n\t\t\t\ttabindex: \"-1\",\n\t\t\t\t\"as-child\": _ctx.asChild,\n\t\t\t\tas: _ctx.as,\n\t\t\t\tonKeydown: handleKeyDown\n\t\t\t}, {\n\t\t\t\tdefault: withCtx(() => [renderSlot(_ctx.$slots, \"default\")]),\n\t\t\t\t_: 3\n\t\t\t}, 8, [\"as-child\", \"as\"]);\n\t\t};\n\t}\n});\n\n//#endregion\n//#region src/FocusScope/FocusScope.vue\nvar FocusScope_default = FocusScope_vue_vue_type_script_setup_true_lang_default;\n\n//#endregion\nexport { FocusScope_default };\n//# sourceMappingURL=FocusScope.js.map","import { getActiveElement } from \"../shared/getActiveElement.js\";\n\n//#region src/Menu/utils.ts\nconst ITEM_SELECT = \"menu.itemSelect\";\nconst SELECTION_KEYS = [\"Enter\", \" \"];\nconst FIRST_KEYS = [\n\t\"ArrowDown\",\n\t\"PageUp\",\n\t\"Home\"\n];\nconst LAST_KEYS = [\n\t\"ArrowUp\",\n\t\"PageDown\",\n\t\"End\"\n];\nconst FIRST_LAST_KEYS = [...FIRST_KEYS, ...LAST_KEYS];\nconst SUB_OPEN_KEYS = {\n\tltr: [...SELECTION_KEYS, \"ArrowRight\"],\n\trtl: [...SELECTION_KEYS, \"ArrowLeft\"]\n};\nconst SUB_CLOSE_KEYS = {\n\tltr: [\"ArrowLeft\"],\n\trtl: [\"ArrowRight\"]\n};\nfunction getOpenState(open) {\n\treturn open ? \"open\" : \"closed\";\n}\nfunction isIndeterminate(checked) {\n\treturn checked === \"indeterminate\";\n}\nfunction getCheckedState(checked) {\n\treturn isIndeterminate(checked) ? \"indeterminate\" : checked ? \"checked\" : \"unchecked\";\n}\nfunction focusFirst(candidates) {\n\tconst PREVIOUSLY_FOCUSED_ELEMENT = getActiveElement();\n\tfor (const candidate of candidates) {\n\t\tif (candidate === PREVIOUSLY_FOCUSED_ELEMENT) return;\n\t\tcandidate.focus();\n\t\tif (getActiveElement() !== PREVIOUSLY_FOCUSED_ELEMENT) return;\n\t}\n}\nfunction isPointInPolygon(point, polygon) {\n\tconst { x, y } = point;\n\tlet inside = false;\n\tfor (let i = 0, j = polygon.length - 1; i < polygon.length; j = i++) {\n\t\tconst xi = polygon[i].x;\n\t\tconst yi = polygon[i].y;\n\t\tconst xj = polygon[j].x;\n\t\tconst yj = polygon[j].y;\n\t\tconst intersect = yi > y !== yj > y && x < (xj - xi) * (y - yi) / (yj - yi) + xi;\n\t\tif (intersect) inside = !inside;\n\t}\n\treturn inside;\n}\nfunction isPointerInGraceArea(event, area) {\n\tif (!area) return false;\n\tconst cursorPos = {\n\t\tx: event.clientX,\n\t\ty: event.clientY\n\t};\n\treturn isPointInPolygon(cursorPos, area);\n}\nfunction isMouseEvent(event) {\n\treturn event.pointerType === \"mouse\";\n}\n\n//#endregion\nexport { FIRST_LAST_KEYS, ITEM_SELECT, LAST_KEYS, SELECTION_KEYS, SUB_CLOSE_KEYS, SUB_OPEN_KEYS, focusFirst, getCheckedState, getOpenState, isIndeterminate, isMouseEvent, isPointerInGraceArea };\n//# sourceMappingURL=utils.js.map","import { getActiveElement } from \"../shared/getActiveElement.js\";\nimport { useForwardExpose } from \"../shared/useForwardExpose.js\";\nimport { useId } from \"../shared/useId.js\";\nimport { injectDialogRootContext } from \"./DialogRoot.js\";\nimport { DismissableLayer_default } from \"../DismissableLayer/DismissableLayer.js\";\nimport { FocusScope_default } from \"../FocusScope/FocusScope.js\";\nimport { getOpenState } from \"../Menu/utils.js\";\nimport { useWarning } from \"./utils.js\";\nimport { createBlock, createVNode, defineComponent, mergeProps, onMounted, openBlock, renderSlot, unref, withCtx } from \"vue\";\n\n//#region src/Dialog/DialogContentImpl.vue?vue&type=script&setup=true&lang.ts\nvar DialogContentImpl_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({\n\t__name: \"DialogContentImpl\",\n\tprops: {\n\t\tforceMount: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false\n\t\t},\n\t\ttrapFocus: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false\n\t\t},\n\t\tdisableOutsidePointerEvents: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false\n\t\t},\n\t\tasChild: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false\n\t\t},\n\t\tas: {\n\t\t\ttype: null,\n\t\t\trequired: false\n\t\t}\n\t},\n\temits: [\n\t\t\"escapeKeyDown\",\n\t\t\"pointerDownOutside\",\n\t\t\"focusOutside\",\n\t\t\"interactOutside\",\n\t\t\"openAutoFocus\",\n\t\t\"closeAutoFocus\"\n\t],\n\tsetup(__props, { emit: __emit }) {\n\t\tconst props = __props;\n\t\tconst emits = __emit;\n\t\tconst rootContext = injectDialogRootContext();\n\t\tconst { forwardRef, currentElement: contentElement } = useForwardExpose();\n\t\trootContext.titleId ||= useId(void 0, \"reka-dialog-title\");\n\t\trootContext.descriptionId ||= useId(void 0, \"reka-dialog-description\");\n\t\tonMounted(() => {\n\t\t\trootContext.contentElement = contentElement;\n\t\t\tif (getActiveElement() !== document.body) rootContext.triggerElement.value = getActiveElement();\n\t\t});\n\t\tif (process.env.NODE_ENV !== \"production\") useWarning({\n\t\t\ttitleName: \"DialogTitle\",\n\t\t\tcontentName: \"DialogContent\",\n\t\t\tcomponentLink: \"dialog.html#title\",\n\t\t\ttitleId: rootContext.titleId,\n\t\t\tdescriptionId: rootContext.descriptionId,\n\t\t\tcontentElement\n\t\t});\n\t\treturn (_ctx, _cache) => {\n\t\t\treturn openBlock(), createBlock(unref(FocusScope_default), {\n\t\t\t\t\"as-child\": \"\",\n\t\t\t\tloop: \"\",\n\t\t\t\ttrapped: props.trapFocus,\n\t\t\t\tonMountAutoFocus: _cache[5] || (_cache[5] = ($event) => emits(\"openAutoFocus\", $event)),\n\t\t\t\tonUnmountAutoFocus: _cache[6] || (_cache[6] = ($event) => emits(\"closeAutoFocus\", $event))\n\t\t\t}, {\n\t\t\t\tdefault: withCtx(() => [createVNode(unref(DismissableLayer_default), mergeProps({\n\t\t\t\t\tid: unref(rootContext).contentId,\n\t\t\t\t\tref: unref(forwardRef),\n\t\t\t\t\tas: _ctx.as,\n\t\t\t\t\t\"as-child\": _ctx.asChild,\n\t\t\t\t\t\"disable-outside-pointer-events\": _ctx.disableOutsidePointerEvents,\n\t\t\t\t\trole: \"dialog\",\n\t\t\t\t\t\"aria-describedby\": unref(rootContext).descriptionId,\n\t\t\t\t\t\"aria-labelledby\": unref(rootContext).titleId,\n\t\t\t\t\t\"data-state\": unref(getOpenState)(unref(rootContext).open.value)\n\t\t\t\t}, _ctx.$attrs, {\n\t\t\t\t\tonDismiss: _cache[0] || (_cache[0] = ($event) => unref(rootContext).onOpenChange(false)),\n\t\t\t\t\tonEscapeKeyDown: _cache[1] || (_cache[1] = ($event) => emits(\"escapeKeyDown\", $event)),\n\t\t\t\t\tonFocusOutside: _cache[2] || (_cache[2] = ($event) => emits(\"focusOutside\", $event)),\n\t\t\t\t\tonInteractOutside: _cache[3] || (_cache[3] = ($event) => emits(\"interactOutside\", $event)),\n\t\t\t\t\tonPointerDownOutside: _cache[4] || (_cache[4] = ($event) => emits(\"pointerDownOutside\", $event))\n\t\t\t\t}), {\n\t\t\t\t\tdefault: withCtx(() => [renderSlot(_ctx.$slots, \"default\")]),\n\t\t\t\t\t_: 3\n\t\t\t\t}, 16, [\n\t\t\t\t\t\"id\",\n\t\t\t\t\t\"as\",\n\t\t\t\t\t\"as-child\",\n\t\t\t\t\t\"disable-outside-pointer-events\",\n\t\t\t\t\t\"aria-describedby\",\n\t\t\t\t\t\"aria-labelledby\",\n\t\t\t\t\t\"data-state\"\n\t\t\t\t])]),\n\t\t\t\t_: 3\n\t\t\t}, 8, [\"trapped\"]);\n\t\t};\n\t}\n});\n\n//#endregion\n//#region src/Dialog/DialogContentImpl.vue\nvar DialogContentImpl_default = DialogContentImpl_vue_vue_type_script_setup_true_lang_default;\n\n//#endregion\nexport { DialogContentImpl_default };\n//# sourceMappingURL=DialogContentImpl.js.map","import { useEmitAsProps } from \"../shared/useEmitAsProps.js\";\nimport { useForwardExpose } from \"../shared/useForwardExpose.js\";\nimport { useHideOthers } from \"../shared/useHideOthers.js\";\nimport { injectDialogRootContext } from \"./DialogRoot.js\";\nimport { DialogContentImpl_default } from \"./DialogContentImpl.js\";\nimport { createBlock, defineComponent, mergeProps, openBlock, renderSlot, unref, withCtx } from \"vue\";\n\n//#region src/Dialog/DialogContentModal.vue?vue&type=script&setup=true&lang.ts\nvar DialogContentModal_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({\n\t__name: \"DialogContentModal\",\n\tprops: {\n\t\tforceMount: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false\n\t\t},\n\t\ttrapFocus: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false\n\t\t},\n\t\tdisableOutsidePointerEvents: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false\n\t\t},\n\t\tasChild: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false\n\t\t},\n\t\tas: {\n\t\t\ttype: null,\n\t\t\trequired: false\n\t\t}\n\t},\n\temits: [\n\t\t\"escapeKeyDown\",\n\t\t\"pointerDownOutside\",\n\t\t\"focusOutside\",\n\t\t\"interactOutside\",\n\t\t\"openAutoFocus\",\n\t\t\"closeAutoFocus\"\n\t],\n\tsetup(__props, { emit: __emit }) {\n\t\tconst props = __props;\n\t\tconst emits = __emit;\n\t\tconst rootContext = injectDialogRootContext();\n\t\tconst emitsAsProps = useEmitAsProps(emits);\n\t\tconst { forwardRef, currentElement } = useForwardExpose();\n\t\tuseHideOthers(currentElement);\n\t\treturn (_ctx, _cache) => {\n\t\t\treturn openBlock(), createBlock(DialogContentImpl_default, mergeProps({\n\t\t\t\t...props,\n\t\t\t\t...unref(emitsAsProps)\n\t\t\t}, {\n\t\t\t\tref: unref(forwardRef),\n\t\t\t\t\"trap-focus\": unref(rootContext).open.value,\n\t\t\t\t\"disable-outside-pointer-events\": true,\n\t\t\t\tonCloseAutoFocus: _cache[0] || (_cache[0] = (event) => {\n\t\t\t\t\tif (!event.defaultPrevented) {\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\tunref(rootContext).triggerElement.value?.focus();\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t\tonPointerDownOutside: _cache[1] || (_cache[1] = (event) => {\n\t\t\t\t\tconst originalEvent = event.detail.originalEvent;\n\t\t\t\t\tconst ctrlLeftClick = originalEvent.button === 0 && originalEvent.ctrlKey === true;\n\t\t\t\t\tconst isRightClick = originalEvent.button === 2 || ctrlLeftClick;\n\t\t\t\t\tif (isRightClick) event.preventDefault();\n\t\t\t\t}),\n\t\t\t\tonFocusOutside: _cache[2] || (_cache[2] = (event) => {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t})\n\t\t\t}), {\n\t\t\t\tdefault: withCtx(() => [renderSlot(_ctx.$slots, \"default\")]),\n\t\t\t\t_: 3\n\t\t\t}, 16, [\"trap-focus\"]);\n\t\t};\n\t}\n});\n\n//#endregion\n//#region src/Dialog/DialogContentModal.vue\nvar DialogContentModal_default = DialogContentModal_vue_vue_type_script_setup_true_lang_default;\n\n//#endregion\nexport { DialogContentModal_default };\n//# sourceMappingURL=DialogContentModal.js.map","import { useEmitAsProps } from \"../shared/useEmitAsProps.js\";\nimport { useForwardExpose } from \"../shared/useForwardExpose.js\";\nimport { injectDialogRootContext } from \"./DialogRoot.js\";\nimport { DialogContentImpl_default } from \"./DialogContentImpl.js\";\nimport { createBlock, defineComponent, mergeProps, openBlock, ref, renderSlot, unref, withCtx } from \"vue\";\n\n//#region src/Dialog/DialogContentNonModal.vue?vue&type=script&setup=true&lang.ts\nvar DialogContentNonModal_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({\n\t__name: \"DialogContentNonModal\",\n\tprops: {\n\t\tforceMount: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false\n\t\t},\n\t\ttrapFocus: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false\n\t\t},\n\t\tdisableOutsidePointerEvents: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false\n\t\t},\n\t\tasChild: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false\n\t\t},\n\t\tas: {\n\t\t\ttype: null,\n\t\t\trequired: false\n\t\t}\n\t},\n\temits: [\n\t\t\"escapeKeyDown\",\n\t\t\"pointerDownOutside\",\n\t\t\"focusOutside\",\n\t\t\"interactOutside\",\n\t\t\"openAutoFocus\",\n\t\t\"closeAutoFocus\"\n\t],\n\tsetup(__props, { emit: __emit }) {\n\t\tconst props = __props;\n\t\tconst emits = __emit;\n\t\tconst emitsAsProps = useEmitAsProps(emits);\n\t\tuseForwardExpose();\n\t\tconst rootContext = injectDialogRootContext();\n\t\tconst hasInteractedOutsideRef = ref(false);\n\t\tconst hasPointerDownOutsideRef = ref(false);\n\t\treturn (_ctx, _cache) => {\n\t\t\treturn openBlock(), createBlock(DialogContentImpl_default, mergeProps({\n\t\t\t\t...props,\n\t\t\t\t...unref(emitsAsProps)\n\t\t\t}, {\n\t\t\t\t\"trap-focus\": false,\n\t\t\t\t\"disable-outside-pointer-events\": false,\n\t\t\t\tonCloseAutoFocus: _cache[0] || (_cache[0] = (event) => {\n\t\t\t\t\tif (!event.defaultPrevented) {\n\t\t\t\t\t\tif (!hasInteractedOutsideRef.value) unref(rootContext).triggerElement.value?.focus();\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t\thasInteractedOutsideRef.value = false;\n\t\t\t\t\thasPointerDownOutsideRef.value = false;\n\t\t\t\t}),\n\t\t\t\tonInteractOutside: _cache[1] || (_cache[1] = (event) => {\n\t\t\t\t\tif (!event.defaultPrevented) {\n\t\t\t\t\t\thasInteractedOutsideRef.value = true;\n\t\t\t\t\t\tif (event.detail.originalEvent.type === \"pointerdown\") hasPointerDownOutsideRef.value = true;\n\t\t\t\t\t}\n\t\t\t\t\tconst target = event.target;\n\t\t\t\t\tconst targetIsTrigger = unref(rootContext).triggerElement.value?.contains(target);\n\t\t\t\t\tif (targetIsTrigger) event.preventDefault();\n\t\t\t\t\tif (event.detail.originalEvent.type === \"focusin\" && hasPointerDownOutsideRef.value) event.preventDefault();\n\t\t\t\t})\n\t\t\t}), {\n\t\t\t\tdefault: withCtx(() => [renderSlot(_ctx.$slots, \"default\")]),\n\t\t\t\t_: 3\n\t\t\t}, 16);\n\t\t};\n\t}\n});\n\n//#endregion\n//#region src/Dialog/DialogContentNonModal.vue\nvar DialogContentNonModal_default = DialogContentNonModal_vue_vue_type_script_setup_true_lang_default;\n\n//#endregion\nexport { DialogContentNonModal_default };\n//# sourceMappingURL=DialogContentNonModal.js.map","import { useEmitAsProps } from \"../shared/useEmitAsProps.js\";\nimport { useForwardExpose } from \"../shared/useForwardExpose.js\";\nimport { Presence_default } from \"../Presence/Presence.js\";\nimport { injectDialogRootContext } from \"./DialogRoot.js\";\nimport { DialogContentModal_default } from \"./DialogContentModal.js\";\nimport { DialogContentNonModal_default } from \"./DialogContentNonModal.js\";\nimport { createBlock, createCommentVNode, defineComponent, mergeProps, openBlock, renderSlot, unref, withCtx } from \"vue\";\n\n//#region src/Dialog/DialogContent.vue?vue&type=script&setup=true&lang.ts\nvar DialogContent_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({\n\t__name: \"DialogContent\",\n\tprops: {\n\t\tforceMount: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false\n\t\t},\n\t\tdisableOutsidePointerEvents: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false\n\t\t},\n\t\tasChild: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false\n\t\t},\n\t\tas: {\n\t\t\ttype: null,\n\t\t\trequired: false\n\t\t}\n\t},\n\temits: [\n\t\t\"escapeKeyDown\",\n\t\t\"pointerDownOutside\",\n\t\t\"focusOutside\",\n\t\t\"interactOutside\",\n\t\t\"openAutoFocus\",\n\t\t\"closeAutoFocus\"\n\t],\n\tsetup(__props, { emit: __emit }) {\n\t\tconst props = __props;\n\t\tconst emits = __emit;\n\t\tconst rootContext = injectDialogRootContext();\n\t\tconst emitsAsProps = useEmitAsProps(emits);\n\t\tconst { forwardRef } = useForwardExpose();\n\t\treturn (_ctx, _cache) => {\n\t\t\treturn openBlock(), createBlock(unref(Presence_default), { present: _ctx.forceMount || unref(rootContext).open.value }, {\n\t\t\t\tdefault: withCtx(() => [unref(rootContext).modal.value ? (openBlock(), createBlock(DialogContentModal_default, mergeProps({\n\t\t\t\t\tkey: 0,\n\t\t\t\t\tref: unref(forwardRef)\n\t\t\t\t}, {\n\t\t\t\t\t...props,\n\t\t\t\t\t...unref(emitsAsProps),\n\t\t\t\t\t..._ctx.$attrs\n\t\t\t\t}), {\n\t\t\t\t\tdefault: withCtx(() => [renderSlot(_ctx.$slots, \"default\")]),\n\t\t\t\t\t_: 3\n\t\t\t\t}, 16)) : (openBlock(), createBlock(DialogContentNonModal_default, mergeProps({\n\t\t\t\t\tkey: 1,\n\t\t\t\t\tref: unref(forwardRef)\n\t\t\t\t}, {\n\t\t\t\t\t...props,\n\t\t\t\t\t...unref(emitsAsProps),\n\t\t\t\t\t..._ctx.$attrs\n\t\t\t\t}), {\n\t\t\t\t\tdefault: withCtx(() => [renderSlot(_ctx.$slots, \"default\")]),\n\t\t\t\t\t_: 3\n\t\t\t\t}, 16))]),\n\t\t\t\t_: 3\n\t\t\t}, 8, [\"present\"]);\n\t\t};\n\t}\n});\n\n//#endregion\n//#region src/Dialog/DialogContent.vue\nvar DialogContent_default = DialogContent_vue_vue_type_script_setup_true_lang_default;\n\n//#endregion\nexport { DialogContent_default };\n//# sourceMappingURL=DialogContent.js.map","import { useBodyScrollLock } from \"../shared/useBodyScrollLock.js\";\nimport { useForwardExpose } from \"../shared/useForwardExpose.js\";\nimport { Primitive } from \"../Primitive/Primitive.js\";\nimport { injectDialogRootContext } from \"./DialogRoot.js\";\nimport { createBlock, defineComponent, openBlock, renderSlot, unref, withCtx } from \"vue\";\n\n//#region src/Dialog/DialogOverlayImpl.vue?vue&type=script&setup=true&lang.ts\nvar DialogOverlayImpl_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({\n\t__name: \"DialogOverlayImpl\",\n\tprops: {\n\t\tasChild: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false\n\t\t},\n\t\tas: {\n\t\t\ttype: null,\n\t\t\trequired: false\n\t\t}\n\t},\n\tsetup(__props) {\n\t\tconst rootContext = injectDialogRootContext();\n\t\tuseBodyScrollLock(true);\n\t\tuseForwardExpose();\n\t\treturn (_ctx, _cache) => {\n\t\t\treturn openBlock(), createBlock(unref(Primitive), {\n\t\t\t\tas: _ctx.as,\n\t\t\t\t\"as-child\": _ctx.asChild,\n\t\t\t\t\"data-state\": unref(rootContext).open.value ? \"open\" : \"closed\",\n\t\t\t\tstyle: { \"pointer-events\": \"auto\" }\n\t\t\t}, {\n\t\t\t\tdefault: withCtx(() => [renderSlot(_ctx.$slots, \"default\")]),\n\t\t\t\t_: 3\n\t\t\t}, 8, [\n\t\t\t\t\"as\",\n\t\t\t\t\"as-child\",\n\t\t\t\t\"data-state\"\n\t\t\t]);\n\t\t};\n\t}\n});\n\n//#endregion\n//#region src/Dialog/DialogOverlayImpl.vue\nvar DialogOverlayImpl_default = DialogOverlayImpl_vue_vue_type_script_setup_true_lang_default;\n\n//#endregion\nexport { DialogOverlayImpl_default };\n//# sourceMappingURL=DialogOverlayImpl.js.map","import { useForwardExpose } from \"../shared/useForwardExpose.js\";\nimport { Presence_default } from \"../Presence/Presence.js\";\nimport { injectDialogRootContext } from \"./DialogRoot.js\";\nimport { DialogOverlayImpl_default } from \"./DialogOverlayImpl.js\";\nimport { createBlock, createCommentVNode, createVNode, defineComponent, mergeProps, openBlock, renderSlot, unref, withCtx } from \"vue\";\n\n//#region src/Dialog/DialogOverlay.vue?vue&type=script&setup=true&lang.ts\nvar DialogOverlay_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({\n\t__name: \"DialogOverlay\",\n\tprops: {\n\t\tforceMount: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false\n\t\t},\n\t\tasChild: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false\n\t\t},\n\t\tas: {\n\t\t\ttype: null,\n\t\t\trequired: false\n\t\t}\n\t},\n\tsetup(__props) {\n\t\tconst rootContext = injectDialogRootContext();\n\t\tconst { forwardRef } = useForwardExpose();\n\t\treturn (_ctx, _cache) => {\n\t\t\treturn unref(rootContext)?.modal.value ? (openBlock(), createBlock(unref(Presence_default), {\n\t\t\t\tkey: 0,\n\t\t\t\tpresent: _ctx.forceMount || unref(rootContext).open.value\n\t\t\t}, {\n\t\t\t\tdefault: withCtx(() => [createVNode(DialogOverlayImpl_default, mergeProps(_ctx.$attrs, {\n\t\t\t\t\tref: unref(forwardRef),\n\t\t\t\t\tas: _ctx.as,\n\t\t\t\t\t\"as-child\": _ctx.asChild\n\t\t\t\t}), {\n\t\t\t\t\tdefault: withCtx(() => [renderSlot(_ctx.$slots, \"default\")]),\n\t\t\t\t\t_: 3\n\t\t\t\t}, 16, [\"as\", \"as-child\"])]),\n\t\t\t\t_: 3\n\t\t\t}, 8, [\"present\"])) : createCommentVNode(\"v-if\", true);\n\t\t};\n\t}\n});\n\n//#endregion\n//#region src/Dialog/DialogOverlay.vue\nvar DialogOverlay_default = DialogOverlay_vue_vue_type_script_setup_true_lang_default;\n\n//#endregion\nexport { DialogOverlay_default };\n//# sourceMappingURL=DialogOverlay.js.map","import { Teleport, createBlock, createCommentVNode, defineComponent, openBlock, renderSlot, unref } from \"vue\";\nimport { useMounted } from \"@vueuse/core\";\n\n//#region src/Teleport/Teleport.vue?vue&type=script&setup=true&lang.ts\nvar Teleport_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({\n\t__name: \"Teleport\",\n\tprops: {\n\t\tto: {\n\t\t\ttype: null,\n\t\t\trequired: false,\n\t\t\tdefault: \"body\"\n\t\t},\n\t\tdisabled: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false\n\t\t},\n\t\tdefer: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false\n\t\t},\n\t\tforceMount: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false\n\t\t}\n\t},\n\tsetup(__props) {\n\t\tconst isMounted = useMounted();\n\t\treturn (_ctx, _cache) => {\n\t\t\treturn unref(isMounted) || _ctx.forceMount ? (openBlock(), createBlock(Teleport, {\n\t\t\t\tkey: 0,\n\t\t\t\tto: _ctx.to,\n\t\t\t\tdisabled: _ctx.disabled,\n\t\t\t\tdefer: _ctx.defer\n\t\t\t}, [renderSlot(_ctx.$slots, \"default\")], 8, [\n\t\t\t\t\"to\",\n\t\t\t\t\"disabled\",\n\t\t\t\t\"defer\"\n\t\t\t])) : createCommentVNode(\"v-if\", true);\n\t\t};\n\t}\n});\n\n//#endregion\n//#region src/Teleport/Teleport.vue\nvar Teleport_default = Teleport_vue_vue_type_script_setup_true_lang_default;\n\n//#endregion\nexport { Teleport_default };\n//# sourceMappingURL=Teleport.js.map","import { useForwardExpose } from \"../shared/useForwardExpose.js\";\nimport { Primitive } from \"../Primitive/Primitive.js\";\nimport { injectDialogRootContext } from \"./DialogRoot.js\";\nimport { createBlock, defineComponent, mergeProps, openBlock, renderSlot, unref, withCtx } from \"vue\";\n\n//#region src/Dialog/DialogTitle.vue?vue&type=script&setup=true&lang.ts\nvar DialogTitle_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({\n\t__name: \"DialogTitle\",\n\tprops: {\n\t\tasChild: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false\n\t\t},\n\t\tas: {\n\t\t\ttype: null,\n\t\t\trequired: false,\n\t\t\tdefault: \"h2\"\n\t\t}\n\t},\n\tsetup(__props) {\n\t\tconst props = __props;\n\t\tconst rootContext = injectDialogRootContext();\n\t\tuseForwardExpose();\n\t\treturn (_ctx, _cache) => {\n\t\t\treturn openBlock(), createBlock(unref(Primitive), mergeProps(props, { id: unref(rootContext).titleId }), {\n\t\t\t\tdefault: withCtx(() => [renderSlot(_ctx.$slots, \"default\")]),\n\t\t\t\t_: 3\n\t\t\t}, 16, [\"id\"]);\n\t\t};\n\t}\n});\n\n//#endregion\n//#region src/Dialog/DialogTitle.vue\nvar DialogTitle_default = DialogTitle_vue_vue_type_script_setup_true_lang_default;\n\n//#endregion\nexport { DialogTitle_default };\n//# sourceMappingURL=DialogTitle.js.map"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12],"mappings":"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"}
 
1
+ {"version":3,"file":"DialogTitle-D6_neaY1.js","names":["focusFirst"],"sources":["../../../../node_modules/.pnpm/reka-ui@2.7.0_typescript@5.9.3_vue@3.5.25_typescript@5.9.3_/node_modules/reka-ui/dist/Dialog/DialogRoot.js","../../../../node_modules/.pnpm/reka-ui@2.7.0_typescript@5.9.3_vue@3.5.25_typescript@5.9.3_/node_modules/reka-ui/dist/FocusScope/stack.js","../../../../node_modules/.pnpm/reka-ui@2.7.0_typescript@5.9.3_vue@3.5.25_typescript@5.9.3_/node_modules/reka-ui/dist/FocusScope/utils.js","../../../../node_modules/.pnpm/reka-ui@2.7.0_typescript@5.9.3_vue@3.5.25_typescript@5.9.3_/node_modules/reka-ui/dist/FocusScope/FocusScope.js","../../../../node_modules/.pnpm/reka-ui@2.7.0_typescript@5.9.3_vue@3.5.25_typescript@5.9.3_/node_modules/reka-ui/dist/Menu/utils.js","../../../../node_modules/.pnpm/reka-ui@2.7.0_typescript@5.9.3_vue@3.5.25_typescript@5.9.3_/node_modules/reka-ui/dist/Dialog/DialogContentImpl.js","../../../../node_modules/.pnpm/reka-ui@2.7.0_typescript@5.9.3_vue@3.5.25_typescript@5.9.3_/node_modules/reka-ui/dist/Dialog/DialogContentModal.js","../../../../node_modules/.pnpm/reka-ui@2.7.0_typescript@5.9.3_vue@3.5.25_typescript@5.9.3_/node_modules/reka-ui/dist/Dialog/DialogContentNonModal.js","../../../../node_modules/.pnpm/reka-ui@2.7.0_typescript@5.9.3_vue@3.5.25_typescript@5.9.3_/node_modules/reka-ui/dist/Dialog/DialogContent.js","../../../../node_modules/.pnpm/reka-ui@2.7.0_typescript@5.9.3_vue@3.5.25_typescript@5.9.3_/node_modules/reka-ui/dist/Dialog/DialogOverlayImpl.js","../../../../node_modules/.pnpm/reka-ui@2.7.0_typescript@5.9.3_vue@3.5.25_typescript@5.9.3_/node_modules/reka-ui/dist/Dialog/DialogOverlay.js","../../../../node_modules/.pnpm/reka-ui@2.7.0_typescript@5.9.3_vue@3.5.25_typescript@5.9.3_/node_modules/reka-ui/dist/Teleport/Teleport.js","../../../../node_modules/.pnpm/reka-ui@2.7.0_typescript@5.9.3_vue@3.5.25_typescript@5.9.3_/node_modules/reka-ui/dist/Dialog/DialogTitle.js"],"sourcesContent":["import { createContext } from \"../shared/createContext.js\";\nimport { defineComponent, ref, renderSlot, toRefs, unref } from \"vue\";\nimport { useVModel } from \"@vueuse/core\";\n\n//#region src/Dialog/DialogRoot.vue?vue&type=script&setup=true&lang.ts\nconst [injectDialogRootContext, provideDialogRootContext] = createContext(\"DialogRoot\");\nvar DialogRoot_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({\n\tinheritAttrs: false,\n\t__name: \"DialogRoot\",\n\tprops: {\n\t\topen: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false,\n\t\t\tdefault: void 0\n\t\t},\n\t\tdefaultOpen: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false,\n\t\t\tdefault: false\n\t\t},\n\t\tmodal: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false,\n\t\t\tdefault: true\n\t\t}\n\t},\n\temits: [\"update:open\"],\n\tsetup(__props, { emit: __emit }) {\n\t\tconst props = __props;\n\t\tconst emit = __emit;\n\t\tconst open = useVModel(props, \"open\", emit, {\n\t\t\tdefaultValue: props.defaultOpen,\n\t\t\tpassive: props.open === void 0\n\t\t});\n\t\tconst triggerElement = ref();\n\t\tconst contentElement = ref();\n\t\tconst { modal } = toRefs(props);\n\t\tprovideDialogRootContext({\n\t\t\topen,\n\t\t\tmodal,\n\t\t\topenModal: () => {\n\t\t\t\topen.value = true;\n\t\t\t},\n\t\t\tonOpenChange: (value) => {\n\t\t\t\topen.value = value;\n\t\t\t},\n\t\t\tonOpenToggle: () => {\n\t\t\t\topen.value = !open.value;\n\t\t\t},\n\t\t\tcontentId: \"\",\n\t\t\ttitleId: \"\",\n\t\t\tdescriptionId: \"\",\n\t\t\ttriggerElement,\n\t\t\tcontentElement\n\t\t});\n\t\treturn (_ctx, _cache) => {\n\t\t\treturn renderSlot(_ctx.$slots, \"default\", {\n\t\t\t\topen: unref(open),\n\t\t\t\tclose: () => open.value = false\n\t\t\t});\n\t\t};\n\t}\n});\n\n//#endregion\n//#region src/Dialog/DialogRoot.vue\nvar DialogRoot_default = DialogRoot_vue_vue_type_script_setup_true_lang_default;\n\n//#endregion\nexport { DialogRoot_default, injectDialogRootContext };\n//# sourceMappingURL=DialogRoot.js.map","import { ref } from \"vue\";\nimport { createGlobalState } from \"@vueuse/core\";\n\n//#region src/FocusScope/stack.ts\nconst useFocusStackState = createGlobalState(() => {\n\tconst stack = ref([]);\n\treturn stack;\n});\nfunction createFocusScopesStack() {\n\t/** A stack of focus scopes, with the active one at the top */\n\tconst stack = useFocusStackState();\n\treturn {\n\t\tadd(focusScope) {\n\t\t\tconst activeFocusScope = stack.value[0];\n\t\t\tif (focusScope !== activeFocusScope) activeFocusScope?.pause();\n\t\t\tstack.value = arrayRemove(stack.value, focusScope);\n\t\t\tstack.value.unshift(focusScope);\n\t\t},\n\t\tremove(focusScope) {\n\t\t\tstack.value = arrayRemove(stack.value, focusScope);\n\t\t\tstack.value[0]?.resume();\n\t\t}\n\t};\n}\nfunction arrayRemove(array, item) {\n\tconst updatedArray = [...array];\n\tconst index = updatedArray.indexOf(item);\n\tif (index !== -1) updatedArray.splice(index, 1);\n\treturn updatedArray;\n}\nfunction removeLinks(items) {\n\treturn items.filter((item) => item.tagName !== \"A\");\n}\n\n//#endregion\nexport { createFocusScopesStack, removeLinks };\n//# sourceMappingURL=stack.js.map","import { getActiveElement } from \"../shared/getActiveElement.js\";\n\n//#region src/FocusScope/utils.ts\nconst AUTOFOCUS_ON_MOUNT = \"focusScope.autoFocusOnMount\";\nconst AUTOFOCUS_ON_UNMOUNT = \"focusScope.autoFocusOnUnmount\";\nconst EVENT_OPTIONS = {\n\tbubbles: false,\n\tcancelable: true\n};\n/**\n* Attempts focusing the first element in a list of candidates.\n* Stops when focus has actually moved.\n*/\nfunction focusFirst(candidates, { select = false } = {}) {\n\tconst previouslyFocusedElement = getActiveElement();\n\tfor (const candidate of candidates) {\n\t\tfocus(candidate, { select });\n\t\tif (getActiveElement() !== previouslyFocusedElement) return true;\n\t}\n}\n/**\n* Returns the first and last tabbable elements inside a container.\n*/\nfunction getTabbableEdges(container) {\n\tconst candidates = getTabbableCandidates(container);\n\tconst first = findVisible(candidates, container);\n\tconst last = findVisible(candidates.reverse(), container);\n\treturn [first, last];\n}\n/**\n* Returns a list of potential tabbable candidates.\n*\n* NOTE: This is only a close approximation. For example it doesn't take into account cases like when\n* elements are not visible. This cannot be worked out easily by just reading a property, but rather\n* necessitate runtime knowledge (computed styles, etc). We deal with these cases separately.\n*\n* See: https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker\n* Credit: https://github.com/discord/focus-layers/blob/master/src/util/wrapFocus.tsx#L1\n*/\nfunction getTabbableCandidates(container) {\n\tconst nodes = [];\n\tconst walker = document.createTreeWalker(container, NodeFilter.SHOW_ELEMENT, { acceptNode: (node) => {\n\t\tconst isHiddenInput = node.tagName === \"INPUT\" && node.type === \"hidden\";\n\t\tif (node.disabled || node.hidden || isHiddenInput) return NodeFilter.FILTER_SKIP;\n\t\treturn node.tabIndex >= 0 ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP;\n\t} });\n\twhile (walker.nextNode()) nodes.push(walker.currentNode);\n\treturn nodes;\n}\n/**\n* Returns the first visible element in a list.\n* NOTE: Only checks visibility up to the `container`.\n*/\nfunction findVisible(elements, container) {\n\tfor (const element of elements) if (!isHidden(element, { upTo: container })) return element;\n}\nfunction isHidden(node, { upTo }) {\n\tif (getComputedStyle(node).visibility === \"hidden\") return true;\n\twhile (node) {\n\t\tif (upTo !== void 0 && node === upTo) return false;\n\t\tif (getComputedStyle(node).display === \"none\") return true;\n\t\tnode = node.parentElement;\n\t}\n\treturn false;\n}\nfunction isSelectableInput(element) {\n\treturn element instanceof HTMLInputElement && \"select\" in element;\n}\nfunction focus(element, { select = false } = {}) {\n\tif (element && element.focus) {\n\t\tconst previouslyFocusedElement = getActiveElement();\n\t\telement.focus({ preventScroll: true });\n\t\tif (element !== previouslyFocusedElement && isSelectableInput(element) && select) element.select();\n\t}\n}\n\n//#endregion\nexport { AUTOFOCUS_ON_MOUNT, AUTOFOCUS_ON_UNMOUNT, EVENT_OPTIONS, focus, focusFirst, getTabbableCandidates, getTabbableEdges };\n//# sourceMappingURL=utils.js.map","import { getActiveElement } from \"../shared/getActiveElement.js\";\nimport { useForwardExpose } from \"../shared/useForwardExpose.js\";\nimport { Primitive } from \"../Primitive/Primitive.js\";\nimport { createFocusScopesStack, removeLinks } from \"./stack.js\";\nimport { AUTOFOCUS_ON_MOUNT, AUTOFOCUS_ON_UNMOUNT, EVENT_OPTIONS, focus, focusFirst, getTabbableCandidates, getTabbableEdges } from \"./utils.js\";\nimport { createBlock, defineComponent, nextTick, openBlock, reactive, ref, renderSlot, unref, watchEffect, withCtx } from \"vue\";\nimport { isClient } from \"@vueuse/shared\";\n\n//#region src/FocusScope/FocusScope.vue?vue&type=script&setup=true&lang.ts\nvar FocusScope_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({\n\t__name: \"FocusScope\",\n\tprops: {\n\t\tloop: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false,\n\t\t\tdefault: false\n\t\t},\n\t\ttrapped: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false,\n\t\t\tdefault: false\n\t\t},\n\t\tasChild: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false\n\t\t},\n\t\tas: {\n\t\t\ttype: null,\n\t\t\trequired: false\n\t\t}\n\t},\n\temits: [\"mountAutoFocus\", \"unmountAutoFocus\"],\n\tsetup(__props, { emit: __emit }) {\n\t\tconst props = __props;\n\t\tconst emits = __emit;\n\t\tconst { currentRef, currentElement } = useForwardExpose();\n\t\tconst lastFocusedElementRef = ref(null);\n\t\tconst focusScopesStack = createFocusScopesStack();\n\t\tconst focusScope = reactive({\n\t\t\tpaused: false,\n\t\t\tpause() {\n\t\t\t\tthis.paused = true;\n\t\t\t},\n\t\t\tresume() {\n\t\t\t\tthis.paused = false;\n\t\t\t}\n\t\t});\n\t\twatchEffect((cleanupFn) => {\n\t\t\tif (!isClient) return;\n\t\t\tconst container = currentElement.value;\n\t\t\tif (!props.trapped) return;\n\t\t\tfunction handleFocusIn(event) {\n\t\t\t\tif (focusScope.paused || !container) return;\n\t\t\t\tconst target = event.target;\n\t\t\t\tif (container.contains(target)) lastFocusedElementRef.value = target;\n\t\t\t\telse focus(lastFocusedElementRef.value, { select: true });\n\t\t\t}\n\t\t\tfunction handleFocusOut(event) {\n\t\t\t\tif (focusScope.paused || !container) return;\n\t\t\t\tconst relatedTarget = event.relatedTarget;\n\t\t\t\tif (relatedTarget === null) return;\n\t\t\t\tif (!container.contains(relatedTarget)) focus(lastFocusedElementRef.value, { select: true });\n\t\t\t}\n\t\t\tfunction handleMutations(mutations) {\n\t\t\t\tconst isLastFocusedElementExist = container.contains(lastFocusedElementRef.value);\n\t\t\t\tif (!isLastFocusedElementExist) focus(container);\n\t\t\t}\n\t\t\tdocument.addEventListener(\"focusin\", handleFocusIn);\n\t\t\tdocument.addEventListener(\"focusout\", handleFocusOut);\n\t\t\tconst mutationObserver = new MutationObserver(handleMutations);\n\t\t\tif (container) mutationObserver.observe(container, {\n\t\t\t\tchildList: true,\n\t\t\t\tsubtree: true\n\t\t\t});\n\t\t\tcleanupFn(() => {\n\t\t\t\tdocument.removeEventListener(\"focusin\", handleFocusIn);\n\t\t\t\tdocument.removeEventListener(\"focusout\", handleFocusOut);\n\t\t\t\tmutationObserver.disconnect();\n\t\t\t});\n\t\t});\n\t\twatchEffect(async (cleanupFn) => {\n\t\t\tconst container = currentElement.value;\n\t\t\tawait nextTick();\n\t\t\tif (!container) return;\n\t\t\tfocusScopesStack.add(focusScope);\n\t\t\tconst previouslyFocusedElement = getActiveElement();\n\t\t\tconst hasFocusedCandidate = container.contains(previouslyFocusedElement);\n\t\t\tif (!hasFocusedCandidate) {\n\t\t\t\tconst mountEvent = new CustomEvent(AUTOFOCUS_ON_MOUNT, EVENT_OPTIONS);\n\t\t\t\tcontainer.addEventListener(AUTOFOCUS_ON_MOUNT, (ev) => emits(\"mountAutoFocus\", ev));\n\t\t\t\tcontainer.dispatchEvent(mountEvent);\n\t\t\t\tif (!mountEvent.defaultPrevented) {\n\t\t\t\t\tfocusFirst(removeLinks(getTabbableCandidates(container)), { select: true });\n\t\t\t\t\tif (getActiveElement() === previouslyFocusedElement) focus(container);\n\t\t\t\t}\n\t\t\t}\n\t\t\tcleanupFn(() => {\n\t\t\t\tcontainer.removeEventListener(AUTOFOCUS_ON_MOUNT, (ev) => emits(\"mountAutoFocus\", ev));\n\t\t\t\tconst unmountEvent = new CustomEvent(AUTOFOCUS_ON_UNMOUNT, EVENT_OPTIONS);\n\t\t\t\tconst unmountEventHandler = (ev) => {\n\t\t\t\t\temits(\"unmountAutoFocus\", ev);\n\t\t\t\t};\n\t\t\t\tcontainer.addEventListener(AUTOFOCUS_ON_UNMOUNT, unmountEventHandler);\n\t\t\t\tcontainer.dispatchEvent(unmountEvent);\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tif (!unmountEvent.defaultPrevented) focus(previouslyFocusedElement ?? document.body, { select: true });\n\t\t\t\t\tcontainer.removeEventListener(AUTOFOCUS_ON_UNMOUNT, unmountEventHandler);\n\t\t\t\t\tfocusScopesStack.remove(focusScope);\n\t\t\t\t}, 0);\n\t\t\t});\n\t\t});\n\t\tfunction handleKeyDown(event) {\n\t\t\tif (!props.loop && !props.trapped) return;\n\t\t\tif (focusScope.paused) return;\n\t\t\tconst isTabKey = event.key === \"Tab\" && !event.altKey && !event.ctrlKey && !event.metaKey;\n\t\t\tconst focusedElement = getActiveElement();\n\t\t\tif (isTabKey && focusedElement) {\n\t\t\t\tconst container = event.currentTarget;\n\t\t\t\tconst [first, last] = getTabbableEdges(container);\n\t\t\t\tconst hasTabbableElementsInside = first && last;\n\t\t\t\tif (!hasTabbableElementsInside) {\n\t\t\t\t\tif (focusedElement === container) event.preventDefault();\n\t\t\t\t} else if (!event.shiftKey && focusedElement === last) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tif (props.loop) focus(first, { select: true });\n\t\t\t\t} else if (event.shiftKey && focusedElement === first) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tif (props.loop) focus(last, { select: true });\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn (_ctx, _cache) => {\n\t\t\treturn openBlock(), createBlock(unref(Primitive), {\n\t\t\t\tref_key: \"currentRef\",\n\t\t\t\tref: currentRef,\n\t\t\t\ttabindex: \"-1\",\n\t\t\t\t\"as-child\": _ctx.asChild,\n\t\t\t\tas: _ctx.as,\n\t\t\t\tonKeydown: handleKeyDown\n\t\t\t}, {\n\t\t\t\tdefault: withCtx(() => [renderSlot(_ctx.$slots, \"default\")]),\n\t\t\t\t_: 3\n\t\t\t}, 8, [\"as-child\", \"as\"]);\n\t\t};\n\t}\n});\n\n//#endregion\n//#region src/FocusScope/FocusScope.vue\nvar FocusScope_default = FocusScope_vue_vue_type_script_setup_true_lang_default;\n\n//#endregion\nexport { FocusScope_default };\n//# sourceMappingURL=FocusScope.js.map","import { getActiveElement } from \"../shared/getActiveElement.js\";\n\n//#region src/Menu/utils.ts\nconst ITEM_SELECT = \"menu.itemSelect\";\nconst SELECTION_KEYS = [\"Enter\", \" \"];\nconst FIRST_KEYS = [\n\t\"ArrowDown\",\n\t\"PageUp\",\n\t\"Home\"\n];\nconst LAST_KEYS = [\n\t\"ArrowUp\",\n\t\"PageDown\",\n\t\"End\"\n];\nconst FIRST_LAST_KEYS = [...FIRST_KEYS, ...LAST_KEYS];\nconst SUB_OPEN_KEYS = {\n\tltr: [...SELECTION_KEYS, \"ArrowRight\"],\n\trtl: [...SELECTION_KEYS, \"ArrowLeft\"]\n};\nconst SUB_CLOSE_KEYS = {\n\tltr: [\"ArrowLeft\"],\n\trtl: [\"ArrowRight\"]\n};\nfunction getOpenState(open) {\n\treturn open ? \"open\" : \"closed\";\n}\nfunction isIndeterminate(checked) {\n\treturn checked === \"indeterminate\";\n}\nfunction getCheckedState(checked) {\n\treturn isIndeterminate(checked) ? \"indeterminate\" : checked ? \"checked\" : \"unchecked\";\n}\nfunction focusFirst(candidates) {\n\tconst PREVIOUSLY_FOCUSED_ELEMENT = getActiveElement();\n\tfor (const candidate of candidates) {\n\t\tif (candidate === PREVIOUSLY_FOCUSED_ELEMENT) return;\n\t\tcandidate.focus();\n\t\tif (getActiveElement() !== PREVIOUSLY_FOCUSED_ELEMENT) return;\n\t}\n}\nfunction isPointInPolygon(point, polygon) {\n\tconst { x, y } = point;\n\tlet inside = false;\n\tfor (let i = 0, j = polygon.length - 1; i < polygon.length; j = i++) {\n\t\tconst xi = polygon[i].x;\n\t\tconst yi = polygon[i].y;\n\t\tconst xj = polygon[j].x;\n\t\tconst yj = polygon[j].y;\n\t\tconst intersect = yi > y !== yj > y && x < (xj - xi) * (y - yi) / (yj - yi) + xi;\n\t\tif (intersect) inside = !inside;\n\t}\n\treturn inside;\n}\nfunction isPointerInGraceArea(event, area) {\n\tif (!area) return false;\n\tconst cursorPos = {\n\t\tx: event.clientX,\n\t\ty: event.clientY\n\t};\n\treturn isPointInPolygon(cursorPos, area);\n}\nfunction isMouseEvent(event) {\n\treturn event.pointerType === \"mouse\";\n}\n\n//#endregion\nexport { FIRST_LAST_KEYS, ITEM_SELECT, LAST_KEYS, SELECTION_KEYS, SUB_CLOSE_KEYS, SUB_OPEN_KEYS, focusFirst, getCheckedState, getOpenState, isIndeterminate, isMouseEvent, isPointerInGraceArea };\n//# sourceMappingURL=utils.js.map","import { getActiveElement } from \"../shared/getActiveElement.js\";\nimport { useForwardExpose } from \"../shared/useForwardExpose.js\";\nimport { useId } from \"../shared/useId.js\";\nimport { injectDialogRootContext } from \"./DialogRoot.js\";\nimport { DismissableLayer_default } from \"../DismissableLayer/DismissableLayer.js\";\nimport { FocusScope_default } from \"../FocusScope/FocusScope.js\";\nimport { getOpenState } from \"../Menu/utils.js\";\nimport { useWarning } from \"./utils.js\";\nimport { createBlock, createVNode, defineComponent, mergeProps, onMounted, openBlock, renderSlot, unref, withCtx } from \"vue\";\n\n//#region src/Dialog/DialogContentImpl.vue?vue&type=script&setup=true&lang.ts\nvar DialogContentImpl_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({\n\t__name: \"DialogContentImpl\",\n\tprops: {\n\t\tforceMount: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false\n\t\t},\n\t\ttrapFocus: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false\n\t\t},\n\t\tdisableOutsidePointerEvents: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false\n\t\t},\n\t\tasChild: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false\n\t\t},\n\t\tas: {\n\t\t\ttype: null,\n\t\t\trequired: false\n\t\t}\n\t},\n\temits: [\n\t\t\"escapeKeyDown\",\n\t\t\"pointerDownOutside\",\n\t\t\"focusOutside\",\n\t\t\"interactOutside\",\n\t\t\"openAutoFocus\",\n\t\t\"closeAutoFocus\"\n\t],\n\tsetup(__props, { emit: __emit }) {\n\t\tconst props = __props;\n\t\tconst emits = __emit;\n\t\tconst rootContext = injectDialogRootContext();\n\t\tconst { forwardRef, currentElement: contentElement } = useForwardExpose();\n\t\trootContext.titleId ||= useId(void 0, \"reka-dialog-title\");\n\t\trootContext.descriptionId ||= useId(void 0, \"reka-dialog-description\");\n\t\tonMounted(() => {\n\t\t\trootContext.contentElement = contentElement;\n\t\t\tif (getActiveElement() !== document.body) rootContext.triggerElement.value = getActiveElement();\n\t\t});\n\t\tif (process.env.NODE_ENV !== \"production\") useWarning({\n\t\t\ttitleName: \"DialogTitle\",\n\t\t\tcontentName: \"DialogContent\",\n\t\t\tcomponentLink: \"dialog.html#title\",\n\t\t\ttitleId: rootContext.titleId,\n\t\t\tdescriptionId: rootContext.descriptionId,\n\t\t\tcontentElement\n\t\t});\n\t\treturn (_ctx, _cache) => {\n\t\t\treturn openBlock(), createBlock(unref(FocusScope_default), {\n\t\t\t\t\"as-child\": \"\",\n\t\t\t\tloop: \"\",\n\t\t\t\ttrapped: props.trapFocus,\n\t\t\t\tonMountAutoFocus: _cache[5] || (_cache[5] = ($event) => emits(\"openAutoFocus\", $event)),\n\t\t\t\tonUnmountAutoFocus: _cache[6] || (_cache[6] = ($event) => emits(\"closeAutoFocus\", $event))\n\t\t\t}, {\n\t\t\t\tdefault: withCtx(() => [createVNode(unref(DismissableLayer_default), mergeProps({\n\t\t\t\t\tid: unref(rootContext).contentId,\n\t\t\t\t\tref: unref(forwardRef),\n\t\t\t\t\tas: _ctx.as,\n\t\t\t\t\t\"as-child\": _ctx.asChild,\n\t\t\t\t\t\"disable-outside-pointer-events\": _ctx.disableOutsidePointerEvents,\n\t\t\t\t\trole: \"dialog\",\n\t\t\t\t\t\"aria-describedby\": unref(rootContext).descriptionId,\n\t\t\t\t\t\"aria-labelledby\": unref(rootContext).titleId,\n\t\t\t\t\t\"data-state\": unref(getOpenState)(unref(rootContext).open.value)\n\t\t\t\t}, _ctx.$attrs, {\n\t\t\t\t\tonDismiss: _cache[0] || (_cache[0] = ($event) => unref(rootContext).onOpenChange(false)),\n\t\t\t\t\tonEscapeKeyDown: _cache[1] || (_cache[1] = ($event) => emits(\"escapeKeyDown\", $event)),\n\t\t\t\t\tonFocusOutside: _cache[2] || (_cache[2] = ($event) => emits(\"focusOutside\", $event)),\n\t\t\t\t\tonInteractOutside: _cache[3] || (_cache[3] = ($event) => emits(\"interactOutside\", $event)),\n\t\t\t\t\tonPointerDownOutside: _cache[4] || (_cache[4] = ($event) => emits(\"pointerDownOutside\", $event))\n\t\t\t\t}), {\n\t\t\t\t\tdefault: withCtx(() => [renderSlot(_ctx.$slots, \"default\")]),\n\t\t\t\t\t_: 3\n\t\t\t\t}, 16, [\n\t\t\t\t\t\"id\",\n\t\t\t\t\t\"as\",\n\t\t\t\t\t\"as-child\",\n\t\t\t\t\t\"disable-outside-pointer-events\",\n\t\t\t\t\t\"aria-describedby\",\n\t\t\t\t\t\"aria-labelledby\",\n\t\t\t\t\t\"data-state\"\n\t\t\t\t])]),\n\t\t\t\t_: 3\n\t\t\t}, 8, [\"trapped\"]);\n\t\t};\n\t}\n});\n\n//#endregion\n//#region src/Dialog/DialogContentImpl.vue\nvar DialogContentImpl_default = DialogContentImpl_vue_vue_type_script_setup_true_lang_default;\n\n//#endregion\nexport { DialogContentImpl_default };\n//# sourceMappingURL=DialogContentImpl.js.map","import { useEmitAsProps } from \"../shared/useEmitAsProps.js\";\nimport { useForwardExpose } from \"../shared/useForwardExpose.js\";\nimport { useHideOthers } from \"../shared/useHideOthers.js\";\nimport { injectDialogRootContext } from \"./DialogRoot.js\";\nimport { DialogContentImpl_default } from \"./DialogContentImpl.js\";\nimport { createBlock, defineComponent, mergeProps, openBlock, renderSlot, unref, withCtx } from \"vue\";\n\n//#region src/Dialog/DialogContentModal.vue?vue&type=script&setup=true&lang.ts\nvar DialogContentModal_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({\n\t__name: \"DialogContentModal\",\n\tprops: {\n\t\tforceMount: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false\n\t\t},\n\t\ttrapFocus: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false\n\t\t},\n\t\tdisableOutsidePointerEvents: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false\n\t\t},\n\t\tasChild: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false\n\t\t},\n\t\tas: {\n\t\t\ttype: null,\n\t\t\trequired: false\n\t\t}\n\t},\n\temits: [\n\t\t\"escapeKeyDown\",\n\t\t\"pointerDownOutside\",\n\t\t\"focusOutside\",\n\t\t\"interactOutside\",\n\t\t\"openAutoFocus\",\n\t\t\"closeAutoFocus\"\n\t],\n\tsetup(__props, { emit: __emit }) {\n\t\tconst props = __props;\n\t\tconst emits = __emit;\n\t\tconst rootContext = injectDialogRootContext();\n\t\tconst emitsAsProps = useEmitAsProps(emits);\n\t\tconst { forwardRef, currentElement } = useForwardExpose();\n\t\tuseHideOthers(currentElement);\n\t\treturn (_ctx, _cache) => {\n\t\t\treturn openBlock(), createBlock(DialogContentImpl_default, mergeProps({\n\t\t\t\t...props,\n\t\t\t\t...unref(emitsAsProps)\n\t\t\t}, {\n\t\t\t\tref: unref(forwardRef),\n\t\t\t\t\"trap-focus\": unref(rootContext).open.value,\n\t\t\t\t\"disable-outside-pointer-events\": true,\n\t\t\t\tonCloseAutoFocus: _cache[0] || (_cache[0] = (event) => {\n\t\t\t\t\tif (!event.defaultPrevented) {\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\tunref(rootContext).triggerElement.value?.focus();\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t\tonPointerDownOutside: _cache[1] || (_cache[1] = (event) => {\n\t\t\t\t\tconst originalEvent = event.detail.originalEvent;\n\t\t\t\t\tconst ctrlLeftClick = originalEvent.button === 0 && originalEvent.ctrlKey === true;\n\t\t\t\t\tconst isRightClick = originalEvent.button === 2 || ctrlLeftClick;\n\t\t\t\t\tif (isRightClick) event.preventDefault();\n\t\t\t\t}),\n\t\t\t\tonFocusOutside: _cache[2] || (_cache[2] = (event) => {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t})\n\t\t\t}), {\n\t\t\t\tdefault: withCtx(() => [renderSlot(_ctx.$slots, \"default\")]),\n\t\t\t\t_: 3\n\t\t\t}, 16, [\"trap-focus\"]);\n\t\t};\n\t}\n});\n\n//#endregion\n//#region src/Dialog/DialogContentModal.vue\nvar DialogContentModal_default = DialogContentModal_vue_vue_type_script_setup_true_lang_default;\n\n//#endregion\nexport { DialogContentModal_default };\n//# sourceMappingURL=DialogContentModal.js.map","import { useEmitAsProps } from \"../shared/useEmitAsProps.js\";\nimport { useForwardExpose } from \"../shared/useForwardExpose.js\";\nimport { injectDialogRootContext } from \"./DialogRoot.js\";\nimport { DialogContentImpl_default } from \"./DialogContentImpl.js\";\nimport { createBlock, defineComponent, mergeProps, openBlock, ref, renderSlot, unref, withCtx } from \"vue\";\n\n//#region src/Dialog/DialogContentNonModal.vue?vue&type=script&setup=true&lang.ts\nvar DialogContentNonModal_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({\n\t__name: \"DialogContentNonModal\",\n\tprops: {\n\t\tforceMount: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false\n\t\t},\n\t\ttrapFocus: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false\n\t\t},\n\t\tdisableOutsidePointerEvents: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false\n\t\t},\n\t\tasChild: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false\n\t\t},\n\t\tas: {\n\t\t\ttype: null,\n\t\t\trequired: false\n\t\t}\n\t},\n\temits: [\n\t\t\"escapeKeyDown\",\n\t\t\"pointerDownOutside\",\n\t\t\"focusOutside\",\n\t\t\"interactOutside\",\n\t\t\"openAutoFocus\",\n\t\t\"closeAutoFocus\"\n\t],\n\tsetup(__props, { emit: __emit }) {\n\t\tconst props = __props;\n\t\tconst emits = __emit;\n\t\tconst emitsAsProps = useEmitAsProps(emits);\n\t\tuseForwardExpose();\n\t\tconst rootContext = injectDialogRootContext();\n\t\tconst hasInteractedOutsideRef = ref(false);\n\t\tconst hasPointerDownOutsideRef = ref(false);\n\t\treturn (_ctx, _cache) => {\n\t\t\treturn openBlock(), createBlock(DialogContentImpl_default, mergeProps({\n\t\t\t\t...props,\n\t\t\t\t...unref(emitsAsProps)\n\t\t\t}, {\n\t\t\t\t\"trap-focus\": false,\n\t\t\t\t\"disable-outside-pointer-events\": false,\n\t\t\t\tonCloseAutoFocus: _cache[0] || (_cache[0] = (event) => {\n\t\t\t\t\tif (!event.defaultPrevented) {\n\t\t\t\t\t\tif (!hasInteractedOutsideRef.value) unref(rootContext).triggerElement.value?.focus();\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t\thasInteractedOutsideRef.value = false;\n\t\t\t\t\thasPointerDownOutsideRef.value = false;\n\t\t\t\t}),\n\t\t\t\tonInteractOutside: _cache[1] || (_cache[1] = (event) => {\n\t\t\t\t\tif (!event.defaultPrevented) {\n\t\t\t\t\t\thasInteractedOutsideRef.value = true;\n\t\t\t\t\t\tif (event.detail.originalEvent.type === \"pointerdown\") hasPointerDownOutsideRef.value = true;\n\t\t\t\t\t}\n\t\t\t\t\tconst target = event.target;\n\t\t\t\t\tconst targetIsTrigger = unref(rootContext).triggerElement.value?.contains(target);\n\t\t\t\t\tif (targetIsTrigger) event.preventDefault();\n\t\t\t\t\tif (event.detail.originalEvent.type === \"focusin\" && hasPointerDownOutsideRef.value) event.preventDefault();\n\t\t\t\t})\n\t\t\t}), {\n\t\t\t\tdefault: withCtx(() => [renderSlot(_ctx.$slots, \"default\")]),\n\t\t\t\t_: 3\n\t\t\t}, 16);\n\t\t};\n\t}\n});\n\n//#endregion\n//#region src/Dialog/DialogContentNonModal.vue\nvar DialogContentNonModal_default = DialogContentNonModal_vue_vue_type_script_setup_true_lang_default;\n\n//#endregion\nexport { DialogContentNonModal_default };\n//# sourceMappingURL=DialogContentNonModal.js.map","import { useEmitAsProps } from \"../shared/useEmitAsProps.js\";\nimport { useForwardExpose } from \"../shared/useForwardExpose.js\";\nimport { Presence_default } from \"../Presence/Presence.js\";\nimport { injectDialogRootContext } from \"./DialogRoot.js\";\nimport { DialogContentModal_default } from \"./DialogContentModal.js\";\nimport { DialogContentNonModal_default } from \"./DialogContentNonModal.js\";\nimport { createBlock, createCommentVNode, defineComponent, mergeProps, openBlock, renderSlot, unref, withCtx } from \"vue\";\n\n//#region src/Dialog/DialogContent.vue?vue&type=script&setup=true&lang.ts\nvar DialogContent_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({\n\t__name: \"DialogContent\",\n\tprops: {\n\t\tforceMount: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false\n\t\t},\n\t\tdisableOutsidePointerEvents: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false\n\t\t},\n\t\tasChild: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false\n\t\t},\n\t\tas: {\n\t\t\ttype: null,\n\t\t\trequired: false\n\t\t}\n\t},\n\temits: [\n\t\t\"escapeKeyDown\",\n\t\t\"pointerDownOutside\",\n\t\t\"focusOutside\",\n\t\t\"interactOutside\",\n\t\t\"openAutoFocus\",\n\t\t\"closeAutoFocus\"\n\t],\n\tsetup(__props, { emit: __emit }) {\n\t\tconst props = __props;\n\t\tconst emits = __emit;\n\t\tconst rootContext = injectDialogRootContext();\n\t\tconst emitsAsProps = useEmitAsProps(emits);\n\t\tconst { forwardRef } = useForwardExpose();\n\t\treturn (_ctx, _cache) => {\n\t\t\treturn openBlock(), createBlock(unref(Presence_default), { present: _ctx.forceMount || unref(rootContext).open.value }, {\n\t\t\t\tdefault: withCtx(() => [unref(rootContext).modal.value ? (openBlock(), createBlock(DialogContentModal_default, mergeProps({\n\t\t\t\t\tkey: 0,\n\t\t\t\t\tref: unref(forwardRef)\n\t\t\t\t}, {\n\t\t\t\t\t...props,\n\t\t\t\t\t...unref(emitsAsProps),\n\t\t\t\t\t..._ctx.$attrs\n\t\t\t\t}), {\n\t\t\t\t\tdefault: withCtx(() => [renderSlot(_ctx.$slots, \"default\")]),\n\t\t\t\t\t_: 3\n\t\t\t\t}, 16)) : (openBlock(), createBlock(DialogContentNonModal_default, mergeProps({\n\t\t\t\t\tkey: 1,\n\t\t\t\t\tref: unref(forwardRef)\n\t\t\t\t}, {\n\t\t\t\t\t...props,\n\t\t\t\t\t...unref(emitsAsProps),\n\t\t\t\t\t..._ctx.$attrs\n\t\t\t\t}), {\n\t\t\t\t\tdefault: withCtx(() => [renderSlot(_ctx.$slots, \"default\")]),\n\t\t\t\t\t_: 3\n\t\t\t\t}, 16))]),\n\t\t\t\t_: 3\n\t\t\t}, 8, [\"present\"]);\n\t\t};\n\t}\n});\n\n//#endregion\n//#region src/Dialog/DialogContent.vue\nvar DialogContent_default = DialogContent_vue_vue_type_script_setup_true_lang_default;\n\n//#endregion\nexport { DialogContent_default };\n//# sourceMappingURL=DialogContent.js.map","import { useBodyScrollLock } from \"../shared/useBodyScrollLock.js\";\nimport { useForwardExpose } from \"../shared/useForwardExpose.js\";\nimport { Primitive } from \"../Primitive/Primitive.js\";\nimport { injectDialogRootContext } from \"./DialogRoot.js\";\nimport { createBlock, defineComponent, openBlock, renderSlot, unref, withCtx } from \"vue\";\n\n//#region src/Dialog/DialogOverlayImpl.vue?vue&type=script&setup=true&lang.ts\nvar DialogOverlayImpl_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({\n\t__name: \"DialogOverlayImpl\",\n\tprops: {\n\t\tasChild: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false\n\t\t},\n\t\tas: {\n\t\t\ttype: null,\n\t\t\trequired: false\n\t\t}\n\t},\n\tsetup(__props) {\n\t\tconst rootContext = injectDialogRootContext();\n\t\tuseBodyScrollLock(true);\n\t\tuseForwardExpose();\n\t\treturn (_ctx, _cache) => {\n\t\t\treturn openBlock(), createBlock(unref(Primitive), {\n\t\t\t\tas: _ctx.as,\n\t\t\t\t\"as-child\": _ctx.asChild,\n\t\t\t\t\"data-state\": unref(rootContext).open.value ? \"open\" : \"closed\",\n\t\t\t\tstyle: { \"pointer-events\": \"auto\" }\n\t\t\t}, {\n\t\t\t\tdefault: withCtx(() => [renderSlot(_ctx.$slots, \"default\")]),\n\t\t\t\t_: 3\n\t\t\t}, 8, [\n\t\t\t\t\"as\",\n\t\t\t\t\"as-child\",\n\t\t\t\t\"data-state\"\n\t\t\t]);\n\t\t};\n\t}\n});\n\n//#endregion\n//#region src/Dialog/DialogOverlayImpl.vue\nvar DialogOverlayImpl_default = DialogOverlayImpl_vue_vue_type_script_setup_true_lang_default;\n\n//#endregion\nexport { DialogOverlayImpl_default };\n//# sourceMappingURL=DialogOverlayImpl.js.map","import { useForwardExpose } from \"../shared/useForwardExpose.js\";\nimport { Presence_default } from \"../Presence/Presence.js\";\nimport { injectDialogRootContext } from \"./DialogRoot.js\";\nimport { DialogOverlayImpl_default } from \"./DialogOverlayImpl.js\";\nimport { createBlock, createCommentVNode, createVNode, defineComponent, mergeProps, openBlock, renderSlot, unref, withCtx } from \"vue\";\n\n//#region src/Dialog/DialogOverlay.vue?vue&type=script&setup=true&lang.ts\nvar DialogOverlay_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({\n\t__name: \"DialogOverlay\",\n\tprops: {\n\t\tforceMount: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false\n\t\t},\n\t\tasChild: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false\n\t\t},\n\t\tas: {\n\t\t\ttype: null,\n\t\t\trequired: false\n\t\t}\n\t},\n\tsetup(__props) {\n\t\tconst rootContext = injectDialogRootContext();\n\t\tconst { forwardRef } = useForwardExpose();\n\t\treturn (_ctx, _cache) => {\n\t\t\treturn unref(rootContext)?.modal.value ? (openBlock(), createBlock(unref(Presence_default), {\n\t\t\t\tkey: 0,\n\t\t\t\tpresent: _ctx.forceMount || unref(rootContext).open.value\n\t\t\t}, {\n\t\t\t\tdefault: withCtx(() => [createVNode(DialogOverlayImpl_default, mergeProps(_ctx.$attrs, {\n\t\t\t\t\tref: unref(forwardRef),\n\t\t\t\t\tas: _ctx.as,\n\t\t\t\t\t\"as-child\": _ctx.asChild\n\t\t\t\t}), {\n\t\t\t\t\tdefault: withCtx(() => [renderSlot(_ctx.$slots, \"default\")]),\n\t\t\t\t\t_: 3\n\t\t\t\t}, 16, [\"as\", \"as-child\"])]),\n\t\t\t\t_: 3\n\t\t\t}, 8, [\"present\"])) : createCommentVNode(\"v-if\", true);\n\t\t};\n\t}\n});\n\n//#endregion\n//#region src/Dialog/DialogOverlay.vue\nvar DialogOverlay_default = DialogOverlay_vue_vue_type_script_setup_true_lang_default;\n\n//#endregion\nexport { DialogOverlay_default };\n//# sourceMappingURL=DialogOverlay.js.map","import { Teleport, createBlock, createCommentVNode, defineComponent, openBlock, renderSlot, unref } from \"vue\";\nimport { useMounted } from \"@vueuse/core\";\n\n//#region src/Teleport/Teleport.vue?vue&type=script&setup=true&lang.ts\nvar Teleport_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({\n\t__name: \"Teleport\",\n\tprops: {\n\t\tto: {\n\t\t\ttype: null,\n\t\t\trequired: false,\n\t\t\tdefault: \"body\"\n\t\t},\n\t\tdisabled: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false\n\t\t},\n\t\tdefer: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false\n\t\t},\n\t\tforceMount: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false\n\t\t}\n\t},\n\tsetup(__props) {\n\t\tconst isMounted = useMounted();\n\t\treturn (_ctx, _cache) => {\n\t\t\treturn unref(isMounted) || _ctx.forceMount ? (openBlock(), createBlock(Teleport, {\n\t\t\t\tkey: 0,\n\t\t\t\tto: _ctx.to,\n\t\t\t\tdisabled: _ctx.disabled,\n\t\t\t\tdefer: _ctx.defer\n\t\t\t}, [renderSlot(_ctx.$slots, \"default\")], 8, [\n\t\t\t\t\"to\",\n\t\t\t\t\"disabled\",\n\t\t\t\t\"defer\"\n\t\t\t])) : createCommentVNode(\"v-if\", true);\n\t\t};\n\t}\n});\n\n//#endregion\n//#region src/Teleport/Teleport.vue\nvar Teleport_default = Teleport_vue_vue_type_script_setup_true_lang_default;\n\n//#endregion\nexport { Teleport_default };\n//# sourceMappingURL=Teleport.js.map","import { useForwardExpose } from \"../shared/useForwardExpose.js\";\nimport { Primitive } from \"../Primitive/Primitive.js\";\nimport { injectDialogRootContext } from \"./DialogRoot.js\";\nimport { createBlock, defineComponent, mergeProps, openBlock, renderSlot, unref, withCtx } from \"vue\";\n\n//#region src/Dialog/DialogTitle.vue?vue&type=script&setup=true&lang.ts\nvar DialogTitle_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({\n\t__name: \"DialogTitle\",\n\tprops: {\n\t\tasChild: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false\n\t\t},\n\t\tas: {\n\t\t\ttype: null,\n\t\t\trequired: false,\n\t\t\tdefault: \"h2\"\n\t\t}\n\t},\n\tsetup(__props) {\n\t\tconst props = __props;\n\t\tconst rootContext = injectDialogRootContext();\n\t\tuseForwardExpose();\n\t\treturn (_ctx, _cache) => {\n\t\t\treturn openBlock(), createBlock(unref(Primitive), mergeProps(props, { id: unref(rootContext).titleId }), {\n\t\t\t\tdefault: withCtx(() => [renderSlot(_ctx.$slots, \"default\")]),\n\t\t\t\t_: 3\n\t\t\t}, 16, [\"id\"]);\n\t\t};\n\t}\n});\n\n//#endregion\n//#region src/Dialog/DialogTitle.vue\nvar DialogTitle_default = DialogTitle_vue_vue_type_script_setup_true_lang_default;\n\n//#endregion\nexport { DialogTitle_default };\n//# sourceMappingURL=DialogTitle.js.map"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12],"mappings":"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"}
assets/{DropdownMenuItem-BuQnKGuD.js β†’ DropdownMenuItem-i92BcXFf.js} RENAMED
@@ -1,2 +1,2 @@
1
- import{A as e,B as t,K as n,M as r,Mt as i,S as a,Y as o,k as s,kt as c,lt as l,xt as u,z as d}from"./vue.runtime.esm-bundler-_ZPRHVd_.js";import{N as f,O as p,U as m,V as h}from"./src-B0kTFhyw.js";import{a as g,o as _}from"./DropdownMenuTrigger-CLKA4VCz.js";import{c as v,d as y,o as b}from"./DialogTitle-WndXCd57.js";var x=e({inheritAttrs:!1,__name:`MenuItemImpl`,props:{disabled:{type:Boolean,required:!1},textValue:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){let r=e,i=g(),{forwardRef:m}=h(),{CollectionItem:_}=p(),v=u(!1);async function b(e){e.defaultPrevented||y(e)&&(r.disabled?i.onItemLeave(e):i.onItemEnter(e)||e.currentTarget?.focus({preventScroll:!0}))}async function x(e){await t(),!e.defaultPrevented&&y(e)&&i.onItemLeave(e)}return(e,r)=>(n(),a(c(_),{value:{textValue:e.textValue}},{default:l(()=>[s(c(f),d({ref:c(m),role:`menuitem`,tabindex:`-1`},e.$attrs,{as:e.as,"as-child":e.asChild,"aria-disabled":e.disabled||void 0,"data-disabled":e.disabled?``:void 0,"data-highlighted":v.value?``:void 0,onPointermove:b,onPointerleave:x,onFocus:r[0]||=async n=>{await t(),!(n.defaultPrevented||e.disabled)&&(v.value=!0)},onBlur:r[1]||=async e=>{await t(),!e.defaultPrevented&&(v.value=!1)}}),{default:l(()=>[o(e.$slots,`default`)]),_:3},16,[`as`,`as-child`,`aria-disabled`,`data-disabled`,`data-highlighted`])]),_:3},8,[`value`]))}}),S=e({__name:`MenuItem`,props:{disabled:{type:Boolean,required:!1},textValue:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`select`],setup(e,{emit:r}){let i=e,s=r,{forwardRef:f,currentElement:p}=h(),m=_(),y=g(),S=u(!1);async function C(){let e=p.value;if(!i.disabled&&e){let e=new CustomEvent(b,{bubbles:!0,cancelable:!0});s(`select`,e),await t(),e.defaultPrevented?S.value=!1:m.onClose()}}return(e,r)=>(n(),a(x,d(i,{ref:c(f),onClick:C,onPointerdown:r[0]||=()=>{S.value=!0},onPointerup:r[1]||=async e=>{await t(),!e.defaultPrevented&&(S.value||e.currentTarget?.click())},onKeydown:r[2]||=async t=>{let n=c(y).searchRef.value!==``;e.disabled||n&&t.key===` `||c(v).includes(t.key)&&(t.currentTarget.click(),t.preventDefault())}}),{default:l(()=>[o(e.$slots,`default`)]),_:3},16))}}),C=e({__name:`DropdownMenuItem`,props:{disabled:{type:Boolean,required:!1},textValue:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`select`],setup(e,{emit:t}){let s=e,u=m(t);return h(),(e,t)=>(n(),a(c(S),i(r({...s,...c(u)})),{default:l(()=>[o(e.$slots,`default`)]),_:3},16))}});export{C as t};
2
- //# sourceMappingURL=DropdownMenuItem-BuQnKGuD.js.map
 
1
+ import{A as e,B as t,K as n,M as r,Mt as i,S as a,Y as o,k as s,kt as c,lt as l,xt as u,z as d}from"./vue.runtime.esm-bundler-_ZPRHVd_.js";import{N as f,O as p,U as m,V as h}from"./src-CuCahbAr.js";import{a as g,o as _}from"./DropdownMenuTrigger-MCmvCyZm.js";import{c as v,d as y,o as b}from"./DialogTitle-D6_neaY1.js";var x=e({inheritAttrs:!1,__name:`MenuItemImpl`,props:{disabled:{type:Boolean,required:!1},textValue:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){let r=e,i=g(),{forwardRef:m}=h(),{CollectionItem:_}=p(),v=u(!1);async function b(e){e.defaultPrevented||y(e)&&(r.disabled?i.onItemLeave(e):i.onItemEnter(e)||e.currentTarget?.focus({preventScroll:!0}))}async function x(e){await t(),!e.defaultPrevented&&y(e)&&i.onItemLeave(e)}return(e,r)=>(n(),a(c(_),{value:{textValue:e.textValue}},{default:l(()=>[s(c(f),d({ref:c(m),role:`menuitem`,tabindex:`-1`},e.$attrs,{as:e.as,"as-child":e.asChild,"aria-disabled":e.disabled||void 0,"data-disabled":e.disabled?``:void 0,"data-highlighted":v.value?``:void 0,onPointermove:b,onPointerleave:x,onFocus:r[0]||=async n=>{await t(),!(n.defaultPrevented||e.disabled)&&(v.value=!0)},onBlur:r[1]||=async e=>{await t(),!e.defaultPrevented&&(v.value=!1)}}),{default:l(()=>[o(e.$slots,`default`)]),_:3},16,[`as`,`as-child`,`aria-disabled`,`data-disabled`,`data-highlighted`])]),_:3},8,[`value`]))}}),S=e({__name:`MenuItem`,props:{disabled:{type:Boolean,required:!1},textValue:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`select`],setup(e,{emit:r}){let i=e,s=r,{forwardRef:f,currentElement:p}=h(),m=_(),y=g(),S=u(!1);async function C(){let e=p.value;if(!i.disabled&&e){let e=new CustomEvent(b,{bubbles:!0,cancelable:!0});s(`select`,e),await t(),e.defaultPrevented?S.value=!1:m.onClose()}}return(e,r)=>(n(),a(x,d(i,{ref:c(f),onClick:C,onPointerdown:r[0]||=()=>{S.value=!0},onPointerup:r[1]||=async e=>{await t(),!e.defaultPrevented&&(S.value||e.currentTarget?.click())},onKeydown:r[2]||=async t=>{let n=c(y).searchRef.value!==``;e.disabled||n&&t.key===` `||c(v).includes(t.key)&&(t.currentTarget.click(),t.preventDefault())}}),{default:l(()=>[o(e.$slots,`default`)]),_:3},16))}}),C=e({__name:`DropdownMenuItem`,props:{disabled:{type:Boolean,required:!1},textValue:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`select`],setup(e,{emit:t}){let s=e,u=m(t);return h(),(e,t)=>(n(),a(c(S),i(r({...s,...c(u)})),{default:l(()=>[o(e.$slots,`default`)]),_:3},16))}});export{C as t};
2
+ //# sourceMappingURL=DropdownMenuItem-i92BcXFf.js.map
assets/{DropdownMenuItem-BuQnKGuD.js.map β†’ DropdownMenuItem-i92BcXFf.js.map} RENAMED
@@ -1 +1 @@
1
- {"version":3,"file":"DropdownMenuItem-BuQnKGuD.js","names":[],"sources":["../../../../node_modules/.pnpm/reka-ui@2.7.0_typescript@5.9.3_vue@3.5.25_typescript@5.9.3_/node_modules/reka-ui/dist/Menu/MenuItemImpl.js","../../../../node_modules/.pnpm/reka-ui@2.7.0_typescript@5.9.3_vue@3.5.25_typescript@5.9.3_/node_modules/reka-ui/dist/Menu/MenuItem.js","../../../../node_modules/.pnpm/reka-ui@2.7.0_typescript@5.9.3_vue@3.5.25_typescript@5.9.3_/node_modules/reka-ui/dist/DropdownMenu/DropdownMenuItem.js"],"sourcesContent":["import { useForwardExpose } from \"../shared/useForwardExpose.js\";\nimport { Primitive } from \"../Primitive/Primitive.js\";\nimport { isMouseEvent } from \"./utils.js\";\nimport { useCollection } from \"../Collection/Collection.js\";\nimport { injectMenuContentContext } from \"./MenuContentImpl.js\";\nimport { createBlock, createVNode, defineComponent, mergeProps, nextTick, openBlock, ref, renderSlot, unref, withCtx } from \"vue\";\n\n//#region src/Menu/MenuItemImpl.vue?vue&type=script&setup=true&lang.ts\nvar MenuItemImpl_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({\n\tinheritAttrs: false,\n\t__name: \"MenuItemImpl\",\n\tprops: {\n\t\tdisabled: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false\n\t\t},\n\t\ttextValue: {\n\t\t\ttype: String,\n\t\t\trequired: false\n\t\t},\n\t\tasChild: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false\n\t\t},\n\t\tas: {\n\t\t\ttype: null,\n\t\t\trequired: false\n\t\t}\n\t},\n\tsetup(__props) {\n\t\tconst props = __props;\n\t\tconst contentContext = injectMenuContentContext();\n\t\tconst { forwardRef } = useForwardExpose();\n\t\tconst { CollectionItem } = useCollection();\n\t\tconst isFocused = ref(false);\n\t\tasync function handlePointerMove(event) {\n\t\t\tif (event.defaultPrevented) return;\n\t\t\tif (!isMouseEvent(event)) return;\n\t\t\tif (props.disabled) contentContext.onItemLeave(event);\n\t\t\telse {\n\t\t\t\tconst defaultPrevented = contentContext.onItemEnter(event);\n\t\t\t\tif (!defaultPrevented) {\n\t\t\t\t\tconst item = event.currentTarget;\n\t\t\t\t\titem?.focus({ preventScroll: true });\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tasync function handlePointerLeave(event) {\n\t\t\tawait nextTick();\n\t\t\tif (event.defaultPrevented) return;\n\t\t\tif (!isMouseEvent(event)) return;\n\t\t\tcontentContext.onItemLeave(event);\n\t\t}\n\t\treturn (_ctx, _cache) => {\n\t\t\treturn openBlock(), createBlock(unref(CollectionItem), { value: { textValue: _ctx.textValue } }, {\n\t\t\t\tdefault: withCtx(() => [createVNode(unref(Primitive), mergeProps({\n\t\t\t\t\tref: unref(forwardRef),\n\t\t\t\t\trole: \"menuitem\",\n\t\t\t\t\ttabindex: \"-1\"\n\t\t\t\t}, _ctx.$attrs, {\n\t\t\t\t\tas: _ctx.as,\n\t\t\t\t\t\"as-child\": _ctx.asChild,\n\t\t\t\t\t\"aria-disabled\": _ctx.disabled || void 0,\n\t\t\t\t\t\"data-disabled\": _ctx.disabled ? \"\" : void 0,\n\t\t\t\t\t\"data-highlighted\": isFocused.value ? \"\" : void 0,\n\t\t\t\t\tonPointermove: handlePointerMove,\n\t\t\t\t\tonPointerleave: handlePointerLeave,\n\t\t\t\t\tonFocus: _cache[0] || (_cache[0] = async (event) => {\n\t\t\t\t\t\tawait nextTick();\n\t\t\t\t\t\tif (event.defaultPrevented || _ctx.disabled) return;\n\t\t\t\t\t\tisFocused.value = true;\n\t\t\t\t\t}),\n\t\t\t\t\tonBlur: _cache[1] || (_cache[1] = async (event) => {\n\t\t\t\t\t\tawait nextTick();\n\t\t\t\t\t\tif (event.defaultPrevented) return;\n\t\t\t\t\t\tisFocused.value = false;\n\t\t\t\t\t})\n\t\t\t\t}), {\n\t\t\t\t\tdefault: withCtx(() => [renderSlot(_ctx.$slots, \"default\")]),\n\t\t\t\t\t_: 3\n\t\t\t\t}, 16, [\n\t\t\t\t\t\"as\",\n\t\t\t\t\t\"as-child\",\n\t\t\t\t\t\"aria-disabled\",\n\t\t\t\t\t\"data-disabled\",\n\t\t\t\t\t\"data-highlighted\"\n\t\t\t\t])]),\n\t\t\t\t_: 3\n\t\t\t}, 8, [\"value\"]);\n\t\t};\n\t}\n});\n\n//#endregion\n//#region src/Menu/MenuItemImpl.vue\nvar MenuItemImpl_default = MenuItemImpl_vue_vue_type_script_setup_true_lang_default;\n\n//#endregion\nexport { MenuItemImpl_default };\n//# sourceMappingURL=MenuItemImpl.js.map","import { useForwardExpose } from \"../shared/useForwardExpose.js\";\nimport { ITEM_SELECT, SELECTION_KEYS } from \"./utils.js\";\nimport { injectMenuRootContext } from \"./MenuRoot.js\";\nimport { injectMenuContentContext } from \"./MenuContentImpl.js\";\nimport { MenuItemImpl_default } from \"./MenuItemImpl.js\";\nimport { createBlock, defineComponent, mergeProps, nextTick, openBlock, ref, renderSlot, unref, withCtx } from \"vue\";\n\n//#region src/Menu/MenuItem.vue?vue&type=script&setup=true&lang.ts\nvar MenuItem_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({\n\t__name: \"MenuItem\",\n\tprops: {\n\t\tdisabled: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false\n\t\t},\n\t\ttextValue: {\n\t\t\ttype: String,\n\t\t\trequired: false\n\t\t},\n\t\tasChild: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false\n\t\t},\n\t\tas: {\n\t\t\ttype: null,\n\t\t\trequired: false\n\t\t}\n\t},\n\temits: [\"select\"],\n\tsetup(__props, { emit: __emit }) {\n\t\tconst props = __props;\n\t\tconst emits = __emit;\n\t\tconst { forwardRef, currentElement } = useForwardExpose();\n\t\tconst rootContext = injectMenuRootContext();\n\t\tconst contentContext = injectMenuContentContext();\n\t\tconst isPointerDownRef = ref(false);\n\t\tasync function handleSelect() {\n\t\t\tconst menuItem = currentElement.value;\n\t\t\tif (!props.disabled && menuItem) {\n\t\t\t\tconst itemSelectEvent = new CustomEvent(ITEM_SELECT, {\n\t\t\t\t\tbubbles: true,\n\t\t\t\t\tcancelable: true\n\t\t\t\t});\n\t\t\t\temits(\"select\", itemSelectEvent);\n\t\t\t\tawait nextTick();\n\t\t\t\tif (itemSelectEvent.defaultPrevented) isPointerDownRef.value = false;\n\t\t\t\telse rootContext.onClose();\n\t\t\t}\n\t\t}\n\t\treturn (_ctx, _cache) => {\n\t\t\treturn openBlock(), createBlock(MenuItemImpl_default, mergeProps(props, {\n\t\t\t\tref: unref(forwardRef),\n\t\t\t\tonClick: handleSelect,\n\t\t\t\tonPointerdown: _cache[0] || (_cache[0] = () => {\n\t\t\t\t\tisPointerDownRef.value = true;\n\t\t\t\t}),\n\t\t\t\tonPointerup: _cache[1] || (_cache[1] = async (event) => {\n\t\t\t\t\tawait nextTick();\n\t\t\t\t\tif (event.defaultPrevented) return;\n\t\t\t\t\tif (!isPointerDownRef.value) event.currentTarget?.click();\n\t\t\t\t}),\n\t\t\t\tonKeydown: _cache[2] || (_cache[2] = async (event) => {\n\t\t\t\t\tconst isTypingAhead = unref(contentContext).searchRef.value !== \"\";\n\t\t\t\t\tif (_ctx.disabled || isTypingAhead && event.key === \" \") return;\n\t\t\t\t\tif (unref(SELECTION_KEYS).includes(event.key)) {\n\t\t\t\t\t\tevent.currentTarget.click();\n\t\t\t\t\t\t/**\n\t\t\t\t\t\t* We prevent default browser behaviour for selection keys as they should trigger\n\t\t\t\t\t\t* a selection only:\n\t\t\t\t\t\t* - prevents space from scrolling the page.\n\t\t\t\t\t\t* - if keydown causes focus to move, prevents keydown from firing on the new target.\n\t\t\t\t\t\t*/\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t}), {\n\t\t\t\tdefault: withCtx(() => [renderSlot(_ctx.$slots, \"default\")]),\n\t\t\t\t_: 3\n\t\t\t}, 16);\n\t\t};\n\t}\n});\n\n//#endregion\n//#region src/Menu/MenuItem.vue\nvar MenuItem_default = MenuItem_vue_vue_type_script_setup_true_lang_default;\n\n//#endregion\nexport { MenuItem_default };\n//# sourceMappingURL=MenuItem.js.map","import { useEmitAsProps } from \"../shared/useEmitAsProps.js\";\nimport { useForwardExpose } from \"../shared/useForwardExpose.js\";\nimport { MenuItem_default } from \"../Menu/MenuItem.js\";\nimport { createBlock, defineComponent, guardReactiveProps, normalizeProps, openBlock, renderSlot, unref, withCtx } from \"vue\";\n\n//#region src/DropdownMenu/DropdownMenuItem.vue?vue&type=script&setup=true&lang.ts\nvar DropdownMenuItem_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({\n\t__name: \"DropdownMenuItem\",\n\tprops: {\n\t\tdisabled: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false\n\t\t},\n\t\ttextValue: {\n\t\t\ttype: String,\n\t\t\trequired: false\n\t\t},\n\t\tasChild: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false\n\t\t},\n\t\tas: {\n\t\t\ttype: null,\n\t\t\trequired: false\n\t\t}\n\t},\n\temits: [\"select\"],\n\tsetup(__props, { emit: __emit }) {\n\t\tconst props = __props;\n\t\tconst emits = __emit;\n\t\tconst emitsAsProps = useEmitAsProps(emits);\n\t\tuseForwardExpose();\n\t\treturn (_ctx, _cache) => {\n\t\t\treturn openBlock(), createBlock(unref(MenuItem_default), normalizeProps(guardReactiveProps({\n\t\t\t\t...props,\n\t\t\t\t...unref(emitsAsProps)\n\t\t\t})), {\n\t\t\t\tdefault: withCtx(() => [renderSlot(_ctx.$slots, \"default\")]),\n\t\t\t\t_: 3\n\t\t\t}, 16);\n\t\t};\n\t}\n});\n\n//#endregion\n//#region src/DropdownMenu/DropdownMenuItem.vue\nvar DropdownMenuItem_default = DropdownMenuItem_vue_vue_type_script_setup_true_lang_default;\n\n//#endregion\nexport { DropdownMenuItem_default };\n//# sourceMappingURL=DropdownMenuItem.js.map"],"x_google_ignoreList":[0,1,2],"mappings":"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"}
 
1
+ {"version":3,"file":"DropdownMenuItem-i92BcXFf.js","names":[],"sources":["../../../../node_modules/.pnpm/reka-ui@2.7.0_typescript@5.9.3_vue@3.5.25_typescript@5.9.3_/node_modules/reka-ui/dist/Menu/MenuItemImpl.js","../../../../node_modules/.pnpm/reka-ui@2.7.0_typescript@5.9.3_vue@3.5.25_typescript@5.9.3_/node_modules/reka-ui/dist/Menu/MenuItem.js","../../../../node_modules/.pnpm/reka-ui@2.7.0_typescript@5.9.3_vue@3.5.25_typescript@5.9.3_/node_modules/reka-ui/dist/DropdownMenu/DropdownMenuItem.js"],"sourcesContent":["import { useForwardExpose } from \"../shared/useForwardExpose.js\";\nimport { Primitive } from \"../Primitive/Primitive.js\";\nimport { isMouseEvent } from \"./utils.js\";\nimport { useCollection } from \"../Collection/Collection.js\";\nimport { injectMenuContentContext } from \"./MenuContentImpl.js\";\nimport { createBlock, createVNode, defineComponent, mergeProps, nextTick, openBlock, ref, renderSlot, unref, withCtx } from \"vue\";\n\n//#region src/Menu/MenuItemImpl.vue?vue&type=script&setup=true&lang.ts\nvar MenuItemImpl_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({\n\tinheritAttrs: false,\n\t__name: \"MenuItemImpl\",\n\tprops: {\n\t\tdisabled: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false\n\t\t},\n\t\ttextValue: {\n\t\t\ttype: String,\n\t\t\trequired: false\n\t\t},\n\t\tasChild: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false\n\t\t},\n\t\tas: {\n\t\t\ttype: null,\n\t\t\trequired: false\n\t\t}\n\t},\n\tsetup(__props) {\n\t\tconst props = __props;\n\t\tconst contentContext = injectMenuContentContext();\n\t\tconst { forwardRef } = useForwardExpose();\n\t\tconst { CollectionItem } = useCollection();\n\t\tconst isFocused = ref(false);\n\t\tasync function handlePointerMove(event) {\n\t\t\tif (event.defaultPrevented) return;\n\t\t\tif (!isMouseEvent(event)) return;\n\t\t\tif (props.disabled) contentContext.onItemLeave(event);\n\t\t\telse {\n\t\t\t\tconst defaultPrevented = contentContext.onItemEnter(event);\n\t\t\t\tif (!defaultPrevented) {\n\t\t\t\t\tconst item = event.currentTarget;\n\t\t\t\t\titem?.focus({ preventScroll: true });\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tasync function handlePointerLeave(event) {\n\t\t\tawait nextTick();\n\t\t\tif (event.defaultPrevented) return;\n\t\t\tif (!isMouseEvent(event)) return;\n\t\t\tcontentContext.onItemLeave(event);\n\t\t}\n\t\treturn (_ctx, _cache) => {\n\t\t\treturn openBlock(), createBlock(unref(CollectionItem), { value: { textValue: _ctx.textValue } }, {\n\t\t\t\tdefault: withCtx(() => [createVNode(unref(Primitive), mergeProps({\n\t\t\t\t\tref: unref(forwardRef),\n\t\t\t\t\trole: \"menuitem\",\n\t\t\t\t\ttabindex: \"-1\"\n\t\t\t\t}, _ctx.$attrs, {\n\t\t\t\t\tas: _ctx.as,\n\t\t\t\t\t\"as-child\": _ctx.asChild,\n\t\t\t\t\t\"aria-disabled\": _ctx.disabled || void 0,\n\t\t\t\t\t\"data-disabled\": _ctx.disabled ? \"\" : void 0,\n\t\t\t\t\t\"data-highlighted\": isFocused.value ? \"\" : void 0,\n\t\t\t\t\tonPointermove: handlePointerMove,\n\t\t\t\t\tonPointerleave: handlePointerLeave,\n\t\t\t\t\tonFocus: _cache[0] || (_cache[0] = async (event) => {\n\t\t\t\t\t\tawait nextTick();\n\t\t\t\t\t\tif (event.defaultPrevented || _ctx.disabled) return;\n\t\t\t\t\t\tisFocused.value = true;\n\t\t\t\t\t}),\n\t\t\t\t\tonBlur: _cache[1] || (_cache[1] = async (event) => {\n\t\t\t\t\t\tawait nextTick();\n\t\t\t\t\t\tif (event.defaultPrevented) return;\n\t\t\t\t\t\tisFocused.value = false;\n\t\t\t\t\t})\n\t\t\t\t}), {\n\t\t\t\t\tdefault: withCtx(() => [renderSlot(_ctx.$slots, \"default\")]),\n\t\t\t\t\t_: 3\n\t\t\t\t}, 16, [\n\t\t\t\t\t\"as\",\n\t\t\t\t\t\"as-child\",\n\t\t\t\t\t\"aria-disabled\",\n\t\t\t\t\t\"data-disabled\",\n\t\t\t\t\t\"data-highlighted\"\n\t\t\t\t])]),\n\t\t\t\t_: 3\n\t\t\t}, 8, [\"value\"]);\n\t\t};\n\t}\n});\n\n//#endregion\n//#region src/Menu/MenuItemImpl.vue\nvar MenuItemImpl_default = MenuItemImpl_vue_vue_type_script_setup_true_lang_default;\n\n//#endregion\nexport { MenuItemImpl_default };\n//# sourceMappingURL=MenuItemImpl.js.map","import { useForwardExpose } from \"../shared/useForwardExpose.js\";\nimport { ITEM_SELECT, SELECTION_KEYS } from \"./utils.js\";\nimport { injectMenuRootContext } from \"./MenuRoot.js\";\nimport { injectMenuContentContext } from \"./MenuContentImpl.js\";\nimport { MenuItemImpl_default } from \"./MenuItemImpl.js\";\nimport { createBlock, defineComponent, mergeProps, nextTick, openBlock, ref, renderSlot, unref, withCtx } from \"vue\";\n\n//#region src/Menu/MenuItem.vue?vue&type=script&setup=true&lang.ts\nvar MenuItem_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({\n\t__name: \"MenuItem\",\n\tprops: {\n\t\tdisabled: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false\n\t\t},\n\t\ttextValue: {\n\t\t\ttype: String,\n\t\t\trequired: false\n\t\t},\n\t\tasChild: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false\n\t\t},\n\t\tas: {\n\t\t\ttype: null,\n\t\t\trequired: false\n\t\t}\n\t},\n\temits: [\"select\"],\n\tsetup(__props, { emit: __emit }) {\n\t\tconst props = __props;\n\t\tconst emits = __emit;\n\t\tconst { forwardRef, currentElement } = useForwardExpose();\n\t\tconst rootContext = injectMenuRootContext();\n\t\tconst contentContext = injectMenuContentContext();\n\t\tconst isPointerDownRef = ref(false);\n\t\tasync function handleSelect() {\n\t\t\tconst menuItem = currentElement.value;\n\t\t\tif (!props.disabled && menuItem) {\n\t\t\t\tconst itemSelectEvent = new CustomEvent(ITEM_SELECT, {\n\t\t\t\t\tbubbles: true,\n\t\t\t\t\tcancelable: true\n\t\t\t\t});\n\t\t\t\temits(\"select\", itemSelectEvent);\n\t\t\t\tawait nextTick();\n\t\t\t\tif (itemSelectEvent.defaultPrevented) isPointerDownRef.value = false;\n\t\t\t\telse rootContext.onClose();\n\t\t\t}\n\t\t}\n\t\treturn (_ctx, _cache) => {\n\t\t\treturn openBlock(), createBlock(MenuItemImpl_default, mergeProps(props, {\n\t\t\t\tref: unref(forwardRef),\n\t\t\t\tonClick: handleSelect,\n\t\t\t\tonPointerdown: _cache[0] || (_cache[0] = () => {\n\t\t\t\t\tisPointerDownRef.value = true;\n\t\t\t\t}),\n\t\t\t\tonPointerup: _cache[1] || (_cache[1] = async (event) => {\n\t\t\t\t\tawait nextTick();\n\t\t\t\t\tif (event.defaultPrevented) return;\n\t\t\t\t\tif (!isPointerDownRef.value) event.currentTarget?.click();\n\t\t\t\t}),\n\t\t\t\tonKeydown: _cache[2] || (_cache[2] = async (event) => {\n\t\t\t\t\tconst isTypingAhead = unref(contentContext).searchRef.value !== \"\";\n\t\t\t\t\tif (_ctx.disabled || isTypingAhead && event.key === \" \") return;\n\t\t\t\t\tif (unref(SELECTION_KEYS).includes(event.key)) {\n\t\t\t\t\t\tevent.currentTarget.click();\n\t\t\t\t\t\t/**\n\t\t\t\t\t\t* We prevent default browser behaviour for selection keys as they should trigger\n\t\t\t\t\t\t* a selection only:\n\t\t\t\t\t\t* - prevents space from scrolling the page.\n\t\t\t\t\t\t* - if keydown causes focus to move, prevents keydown from firing on the new target.\n\t\t\t\t\t\t*/\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t}), {\n\t\t\t\tdefault: withCtx(() => [renderSlot(_ctx.$slots, \"default\")]),\n\t\t\t\t_: 3\n\t\t\t}, 16);\n\t\t};\n\t}\n});\n\n//#endregion\n//#region src/Menu/MenuItem.vue\nvar MenuItem_default = MenuItem_vue_vue_type_script_setup_true_lang_default;\n\n//#endregion\nexport { MenuItem_default };\n//# sourceMappingURL=MenuItem.js.map","import { useEmitAsProps } from \"../shared/useEmitAsProps.js\";\nimport { useForwardExpose } from \"../shared/useForwardExpose.js\";\nimport { MenuItem_default } from \"../Menu/MenuItem.js\";\nimport { createBlock, defineComponent, guardReactiveProps, normalizeProps, openBlock, renderSlot, unref, withCtx } from \"vue\";\n\n//#region src/DropdownMenu/DropdownMenuItem.vue?vue&type=script&setup=true&lang.ts\nvar DropdownMenuItem_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({\n\t__name: \"DropdownMenuItem\",\n\tprops: {\n\t\tdisabled: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false\n\t\t},\n\t\ttextValue: {\n\t\t\ttype: String,\n\t\t\trequired: false\n\t\t},\n\t\tasChild: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false\n\t\t},\n\t\tas: {\n\t\t\ttype: null,\n\t\t\trequired: false\n\t\t}\n\t},\n\temits: [\"select\"],\n\tsetup(__props, { emit: __emit }) {\n\t\tconst props = __props;\n\t\tconst emits = __emit;\n\t\tconst emitsAsProps = useEmitAsProps(emits);\n\t\tuseForwardExpose();\n\t\treturn (_ctx, _cache) => {\n\t\t\treturn openBlock(), createBlock(unref(MenuItem_default), normalizeProps(guardReactiveProps({\n\t\t\t\t...props,\n\t\t\t\t...unref(emitsAsProps)\n\t\t\t})), {\n\t\t\t\tdefault: withCtx(() => [renderSlot(_ctx.$slots, \"default\")]),\n\t\t\t\t_: 3\n\t\t\t}, 16);\n\t\t};\n\t}\n});\n\n//#endregion\n//#region src/DropdownMenu/DropdownMenuItem.vue\nvar DropdownMenuItem_default = DropdownMenuItem_vue_vue_type_script_setup_true_lang_default;\n\n//#endregion\nexport { DropdownMenuItem_default };\n//# sourceMappingURL=DropdownMenuItem.js.map"],"x_google_ignoreList":[0,1,2],"mappings":"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"}
assets/{DropdownMenuTrigger-CLKA4VCz.js β†’ DropdownMenuTrigger-MCmvCyZm.js} RENAMED
@@ -1,2 +1,2 @@
1
- import{A as e,B as t,Dt as n,G as r,K as i,L as a,M as o,Mt as s,S as c,W as l,Y as u,at as d,d as f,f as p,gt as m,k as h,kt as g,lt as _,xt as v,z as y}from"./vue.runtime.esm-bundler-_ZPRHVd_.js";import{C as b,D as ee,F as x,G as te,J as S,K as C,L as w,N as T,P as E,R as D,V as O,W as k,Z as A,b as j,it as M,k as N,rt as P,w as F,x as ne,z as I}from"./src-B0kTFhyw.js";import{x as re}from"./widgets-Dd-ctSsI.js";import{a as ie,d as L,f as R,l as z,n as B,p as V,s as H,u as U}from"./DialogTitle-WndXCd57.js";var W=[`INPUT`,`TEXTAREA`];function G(e,t,n,r={}){if(!t||r.enableIgnoredElement&&W.includes(t.nodeName))return null;let{arrowKeyOptions:i=`both`,attributeName:a=`[data-reka-collection-item]`,itemsArray:o=[],loop:s=!0,dir:c=`ltr`,preventScroll:l=!0,focus:u=!1}=r,[d,f,p,m,h,g]=[e.key===`ArrowRight`,e.key===`ArrowLeft`,e.key===`ArrowUp`,e.key===`ArrowDown`,e.key===`Home`,e.key===`End`],_=p||m,v=d||f;if(!h&&!g&&(!_&&!v||i===`vertical`&&v||i===`horizontal`&&_))return null;let y=n?Array.from(n.querySelectorAll(a)):o;if(!y.length)return null;l&&e.preventDefault();let b=null;return v||_?b=K(y,t,{goForward:_?m:c===`ltr`?d:f,loop:s}):h?b=y.at(0)||null:g&&(b=y.at(-1)||null),u&&b?.focus(),b}function K(e,t,n,r=e.length){if(--r===0)return null;let i=e.indexOf(t),a=n.goForward?i+1:i-1;if(!n.loop&&(a<0||a>=e.length))return null;let o=e[(a+e.length)%e.length];return o?o.hasAttribute(`disabled`)&&o.getAttribute(`disabled`)!==`false`?K(e,o,n,r):o:null}var q=e({__name:`MenuAnchor`,props:{reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){let t=e;return(e,n)=>(i(),c(g(b),s(o(t)),{default:_(()=>[u(e.$slots,`default`)]),_:3},16))}});function J(){let e=v(!1);return l(()=>{C(`keydown`,()=>{e.value=!0},{capture:!0,passive:!0}),C([`pointerdown`,`pointermove`],()=>{e.value=!1},{capture:!0,passive:!0})}),e}var ae=A(J),[Y,oe]=M([`MenuRoot`,`MenuSub`],`MenuContext`),[X,se]=M(`MenuRoot`),ce=e({__name:`MenuRoot`,props:{open:{type:Boolean,required:!1,default:!1},dir:{type:String,required:!1},modal:{type:Boolean,required:!1,default:!0}},emits:[`update:open`],setup(e,{emit:t}){let r=e,a=t,{modal:o,dir:s}=n(r),l=k(s),d=S(r,`open`,a),f=v(),p=ae();return oe({open:d,onOpenChange:e=>{d.value=e},content:f,onContentChange:e=>{f.value=e}}),se({onClose:()=>{d.value=!1},isUsingKeyboardRef:p,dir:l,modal:o}),(e,t)=>(i(),c(g(F),null,{default:_(()=>[u(e.$slots,`default`)]),_:3}))}}),[le,ue]=M(`MenuContent`),Z=e({__name:`MenuContentImpl`,props:a({loop:{type:Boolean,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1},disableOutsideScroll:{type:Boolean,required:!1},trapFocus:{type:Boolean,required:!1},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},sideFlip:{type:Boolean,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},alignFlip:{type:Boolean,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1},disableUpdateOnLayoutShift:{type:Boolean,required:!1},prioritizePosition:{type:Boolean,required:!1},reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},{...j}),emits:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`entryFocus`,`openAutoFocus`,`closeAutoFocus`,`dismiss`],setup(e,{emit:t}){let a=e,o=t,s=Y(),l=X(),{trapFocus:f,disableOutsidePointerEvents:p,loop:m}=n(a);re(),te(p.value);let y=v(``),b=v(0),S=v(0),C=v(null),w=v(`right`),T=v(0),E=v(null),D=v(),{forwardRef:k,currentElement:A}=O(),{handleTypeaheadSearch:j}=x();d(A,e=>{s.onContentChange(e)}),r(()=>{window.clearTimeout(b.value)});function M(e){return w.value===C.value?.side&&R(e,C.value?.area)}async function F(e){o(`openAutoFocus`,e),!e.defaultPrevented&&(e.preventDefault(),A.value?.focus({preventScroll:!0}))}function I(e){if(e.defaultPrevented)return;let t=e.target.closest(`[data-reka-menu-content]`)===e.currentTarget,n=e.ctrlKey||e.altKey||e.metaKey,r=e.key.length===1,i=G(e,P(),A.value,{loop:m.value,arrowKeyOptions:`vertical`,dir:l?.dir.value,focus:!0,attributeName:`[data-reka-collection-item]:not([data-disabled])`});if(i)return i?.focus();if(e.code===`Space`)return;let a=D.value?.getItems()??[];if(t&&(e.key===`Tab`&&e.preventDefault(),!n&&r&&j(e.key,a)),e.target!==A.value||!ie.includes(e.key))return;e.preventDefault();let o=[...a.map(e=>e.ref)];H.includes(e.key)&&o.reverse(),z(o)}function B(e){e?.currentTarget?.contains?.(e.target)||(window.clearTimeout(b.value),y.value=``)}function W(e){if(!L(e))return;let t=e.target,n=T.value!==e.clientX;(e?.currentTarget)?.contains(t)&&n&&(w.value=e.clientX>T.value?`right`:`left`,T.value=e.clientX)}return ue({onItemEnter:e=>!!M(e),onItemLeave:e=>{M(e)||(A.value?.focus(),E.value=null)},onTriggerLeave:e=>!!M(e),searchRef:y,pointerGraceTimerRef:S,onPointerGraceIntentChange:e=>{C.value=e}}),(e,t)=>(i(),c(g(V),{"as-child":``,trapped:g(f),onMountAutoFocus:F,onUnmountAutoFocus:t[7]||=e=>o(`closeAutoFocus`,e)},{default:_(()=>[h(g(N),{"as-child":``,"disable-outside-pointer-events":g(p),onEscapeKeyDown:t[2]||=e=>o(`escapeKeyDown`,e),onPointerDownOutside:t[3]||=e=>o(`pointerDownOutside`,e),onFocusOutside:t[4]||=e=>o(`focusOutside`,e),onInteractOutside:t[5]||=e=>o(`interactOutside`,e),onDismiss:t[6]||=e=>o(`dismiss`)},{default:_(()=>[h(g(ee),{ref_key:`rovingFocusGroupRef`,ref:D,"current-tab-stop-id":E.value,"onUpdate:currentTabStopId":t[0]||=e=>E.value=e,"as-child":``,orientation:`vertical`,dir:g(l).dir.value,loop:g(m),onEntryFocus:t[1]||=e=>{o(`entryFocus`,e),g(l).isUsingKeyboardRef.value||e.preventDefault()}},{default:_(()=>[h(g(ne),{ref:g(k),role:`menu`,as:e.as,"as-child":e.asChild,"aria-orientation":`vertical`,"data-reka-menu-content":``,"data-state":g(U)(g(s).open.value),dir:g(l).dir.value,side:e.side,"side-offset":e.sideOffset,align:e.align,"align-offset":e.alignOffset,"avoid-collisions":e.avoidCollisions,"collision-boundary":e.collisionBoundary,"collision-padding":e.collisionPadding,"arrow-padding":e.arrowPadding,"prioritize-position":e.prioritizePosition,"position-strategy":e.positionStrategy,"update-position-strategy":e.updatePositionStrategy,sticky:e.sticky,"hide-when-detached":e.hideWhenDetached,reference:e.reference,onKeydown:I,onBlur:B,onPointermove:W},{default:_(()=>[u(e.$slots,`default`)]),_:3},8,[`as`,`as-child`,`data-state`,`dir`,`side`,`side-offset`,`align`,`align-offset`,`avoid-collisions`,`collision-boundary`,`collision-padding`,`arrow-padding`,`prioritize-position`,`position-strategy`,`update-position-strategy`,`sticky`,`hide-when-detached`,`reference`])]),_:3},8,[`current-tab-stop-id`,`dir`,`loop`])]),_:3},8,[`disable-outside-pointer-events`])]),_:3},8,[`trapped`]))}}),de=e({__name:`MenuRootContentModal`,props:{loop:{type:Boolean,required:!1},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},sideFlip:{type:Boolean,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},alignFlip:{type:Boolean,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1},disableUpdateOnLayoutShift:{type:Boolean,required:!1},prioritizePosition:{type:Boolean,required:!1},reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`entryFocus`,`openAutoFocus`,`closeAutoFocus`],setup(e,{emit:t}){let n=e,r=t,a=I(n,r),o=Y(),{forwardRef:s,currentElement:l}=O();return D(l),(e,t)=>(i(),c(Z,y(g(a),{ref:g(s),"trap-focus":g(o).open.value,"disable-outside-pointer-events":g(o).open.value,"disable-outside-scroll":!0,onDismiss:t[0]||=e=>g(o).onOpenChange(!1),onFocusOutside:t[1]||=p(e=>r(`focusOutside`,e),[`prevent`])}),{default:_(()=>[u(e.$slots,`default`)]),_:3},16,[`trap-focus`,`disable-outside-pointer-events`]))}}),fe=e({__name:`MenuRootContentNonModal`,props:{loop:{type:Boolean,required:!1},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},sideFlip:{type:Boolean,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},alignFlip:{type:Boolean,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1},disableUpdateOnLayoutShift:{type:Boolean,required:!1},prioritizePosition:{type:Boolean,required:!1},reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`entryFocus`,`openAutoFocus`,`closeAutoFocus`],setup(e,{emit:t}){let n=I(e,t),r=Y();return(e,t)=>(i(),c(Z,y(g(n),{"trap-focus":!1,"disable-outside-pointer-events":!1,"disable-outside-scroll":!1,onDismiss:t[0]||=e=>g(r).onOpenChange(!1)}),{default:_(()=>[u(e.$slots,`default`)]),_:3},16))}}),pe=e({__name:`MenuContent`,props:{forceMount:{type:Boolean,required:!1},loop:{type:Boolean,required:!1},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},sideFlip:{type:Boolean,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},alignFlip:{type:Boolean,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1},disableUpdateOnLayoutShift:{type:Boolean,required:!1},prioritizePosition:{type:Boolean,required:!1},reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`entryFocus`,`openAutoFocus`,`closeAutoFocus`],setup(e,{emit:t}){let n=I(e,t),r=Y(),a=X();return(e,t)=>(i(),c(g(E),{present:e.forceMount||g(r).open.value},{default:_(()=>[g(a).modal.value?(i(),c(de,s(y({key:0},{...e.$attrs,...g(n)})),{default:_(()=>[u(e.$slots,`default`)]),_:3},16)):(i(),c(fe,s(y({key:1},{...e.$attrs,...g(n)})),{default:_(()=>[u(e.$slots,`default`)]),_:3},16))]),_:3},8,[`present`]))}}),me=e({__name:`MenuPortal`,props:{to:{type:null,required:!1},disabled:{type:Boolean,required:!1},defer:{type:Boolean,required:!1},forceMount:{type:Boolean,required:!1}},setup(e){let t=e;return(e,n)=>(i(),c(g(B),s(o(t)),{default:_(()=>[u(e.$slots,`default`)]),_:3},16))}}),[Q,he]=M(`DropdownMenuRoot`),ge=e({__name:`DropdownMenuRoot`,props:{defaultOpen:{type:Boolean,required:!1},open:{type:Boolean,required:!1,default:void 0},dir:{type:String,required:!1},modal:{type:Boolean,required:!1,default:!0}},emits:[`update:open`],setup(e,{emit:t}){let r=e,a=t;O();let o=S(r,`open`,a,{defaultValue:r.defaultOpen,passive:r.open===void 0}),s=v(),{modal:l,dir:d}=n(r),f=k(d);return he({open:o,onOpenChange:e=>{o.value=e},onOpenToggle:()=>{o.value=!o.value},triggerId:``,triggerElement:s,contentId:``,modal:l,dir:f}),(e,t)=>(i(),c(g(ce),{open:g(o),"onUpdate:open":t[0]||=e=>m(o)?o.value=e:null,dir:g(f),modal:g(l)},{default:_(()=>[u(e.$slots,`default`,{open:g(o)})]),_:3},8,[`open`,`dir`,`modal`]))}}),$=e({__name:`DropdownMenuContent`,props:{forceMount:{type:Boolean,required:!1},loop:{type:Boolean,required:!1},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},sideFlip:{type:Boolean,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},alignFlip:{type:Boolean,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1},disableUpdateOnLayoutShift:{type:Boolean,required:!1},prioritizePosition:{type:Boolean,required:!1},reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`closeAutoFocus`],setup(e,{emit:t}){let n=I(e,t);O();let r=Q(),a=v(!1);function o(e){e.defaultPrevented||(a.value||setTimeout(()=>{r.triggerElement.value?.focus()},0),a.value=!1,e.preventDefault())}return r.contentId||=w(void 0,`reka-dropdown-menu-content`),(e,t)=>(i(),c(g(pe),y(g(n),{id:g(r).contentId,"aria-labelledby":g(r)?.triggerId,style:{"--reka-dropdown-menu-content-transform-origin":`var(--reka-popper-transform-origin)`,"--reka-dropdown-menu-content-available-width":`var(--reka-popper-available-width)`,"--reka-dropdown-menu-content-available-height":`var(--reka-popper-available-height)`,"--reka-dropdown-menu-trigger-width":`var(--reka-popper-anchor-width)`,"--reka-dropdown-menu-trigger-height":`var(--reka-popper-anchor-height)`},onCloseAutoFocus:o,onInteractOutside:t[0]||=e=>{if(e.defaultPrevented)return;let t=e.detail.originalEvent,n=t.button===0&&t.ctrlKey===!0,i=t.button===2||n;(!g(r).modal.value||i)&&(a.value=!0),g(r).triggerElement.value?.contains(e.target)&&e.preventDefault()}}),{default:_(()=>[u(e.$slots,`default`)]),_:3},16,[`id`,`aria-labelledby`]))}}),_e=e({__name:`DropdownMenuPortal`,props:{to:{type:null,required:!1},disabled:{type:Boolean,required:!1},defer:{type:Boolean,required:!1},forceMount:{type:Boolean,required:!1}},setup(e){let t=e;return(e,n)=>(i(),c(g(me),s(o(t)),{default:_(()=>[u(e.$slots,`default`)]),_:3},16))}}),ve=e({__name:`DropdownMenuTrigger`,props:{disabled:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`button`}},setup(e){let n=e,r=Q(),{forwardRef:a,currentElement:o}=O();return l(()=>{r.triggerElement=o}),r.triggerId||=w(void 0,`reka-dropdown-menu-trigger`),(e,o)=>(i(),c(g(q),{"as-child":``},{default:_(()=>[h(g(T),{id:g(r).triggerId,ref:g(a),type:e.as===`button`?`button`:void 0,"as-child":n.asChild,as:e.as,"aria-haspopup":`menu`,"aria-expanded":g(r).open.value,"aria-controls":g(r).open.value?g(r).contentId:void 0,"data-disabled":e.disabled?``:void 0,disabled:e.disabled,"data-state":g(r).open.value?`open`:`closed`,onClick:o[0]||=async n=>{!e.disabled&&n.button===0&&n.ctrlKey===!1&&(g(r)?.onOpenToggle(),await t(),g(r).open.value&&n.preventDefault())},onKeydown:o[1]||=f(t=>{e.disabled||([`Enter`,` `].includes(t.key)&&g(r).onOpenToggle(),t.key===`ArrowDown`&&g(r).onOpenChange(!0),[`Enter`,` `,`ArrowDown`].includes(t.key)&&t.preventDefault())},[`enter`,`space`,`arrow-down`])},{default:_(()=>[u(e.$slots,`default`)]),_:3},8,[`id`,`type`,`as-child`,`as`,`aria-expanded`,`aria-controls`,`data-disabled`,`disabled`,`data-state`])]),_:3}))}});export{le as a,ge as i,_e as n,X as o,$ as r,ve as t};
2
- //# sourceMappingURL=DropdownMenuTrigger-CLKA4VCz.js.map
 
1
+ import{A as e,B as t,Dt as n,G as r,K as i,L as a,M as o,Mt as s,S as c,W as l,Y as u,at as d,d as f,f as p,gt as m,k as h,kt as g,lt as _,xt as v,z as y}from"./vue.runtime.esm-bundler-_ZPRHVd_.js";import{C as b,D as ee,F as x,G as te,J as S,K as C,L as w,N as T,P as E,R as D,V as O,W as k,Z as A,b as j,it as M,k as N,rt as P,w as F,x as ne,z as I}from"./src-CuCahbAr.js";import{x as re}from"./widgets-DKs3SdKb.js";import{a as ie,d as L,f as R,l as z,n as B,p as V,s as H,u as U}from"./DialogTitle-D6_neaY1.js";var W=[`INPUT`,`TEXTAREA`];function G(e,t,n,r={}){if(!t||r.enableIgnoredElement&&W.includes(t.nodeName))return null;let{arrowKeyOptions:i=`both`,attributeName:a=`[data-reka-collection-item]`,itemsArray:o=[],loop:s=!0,dir:c=`ltr`,preventScroll:l=!0,focus:u=!1}=r,[d,f,p,m,h,g]=[e.key===`ArrowRight`,e.key===`ArrowLeft`,e.key===`ArrowUp`,e.key===`ArrowDown`,e.key===`Home`,e.key===`End`],_=p||m,v=d||f;if(!h&&!g&&(!_&&!v||i===`vertical`&&v||i===`horizontal`&&_))return null;let y=n?Array.from(n.querySelectorAll(a)):o;if(!y.length)return null;l&&e.preventDefault();let b=null;return v||_?b=K(y,t,{goForward:_?m:c===`ltr`?d:f,loop:s}):h?b=y.at(0)||null:g&&(b=y.at(-1)||null),u&&b?.focus(),b}function K(e,t,n,r=e.length){if(--r===0)return null;let i=e.indexOf(t),a=n.goForward?i+1:i-1;if(!n.loop&&(a<0||a>=e.length))return null;let o=e[(a+e.length)%e.length];return o?o.hasAttribute(`disabled`)&&o.getAttribute(`disabled`)!==`false`?K(e,o,n,r):o:null}var q=e({__name:`MenuAnchor`,props:{reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){let t=e;return(e,n)=>(i(),c(g(b),s(o(t)),{default:_(()=>[u(e.$slots,`default`)]),_:3},16))}});function J(){let e=v(!1);return l(()=>{C(`keydown`,()=>{e.value=!0},{capture:!0,passive:!0}),C([`pointerdown`,`pointermove`],()=>{e.value=!1},{capture:!0,passive:!0})}),e}var ae=A(J),[Y,oe]=M([`MenuRoot`,`MenuSub`],`MenuContext`),[X,se]=M(`MenuRoot`),ce=e({__name:`MenuRoot`,props:{open:{type:Boolean,required:!1,default:!1},dir:{type:String,required:!1},modal:{type:Boolean,required:!1,default:!0}},emits:[`update:open`],setup(e,{emit:t}){let r=e,a=t,{modal:o,dir:s}=n(r),l=k(s),d=S(r,`open`,a),f=v(),p=ae();return oe({open:d,onOpenChange:e=>{d.value=e},content:f,onContentChange:e=>{f.value=e}}),se({onClose:()=>{d.value=!1},isUsingKeyboardRef:p,dir:l,modal:o}),(e,t)=>(i(),c(g(F),null,{default:_(()=>[u(e.$slots,`default`)]),_:3}))}}),[le,ue]=M(`MenuContent`),Z=e({__name:`MenuContentImpl`,props:a({loop:{type:Boolean,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1},disableOutsideScroll:{type:Boolean,required:!1},trapFocus:{type:Boolean,required:!1},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},sideFlip:{type:Boolean,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},alignFlip:{type:Boolean,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1},disableUpdateOnLayoutShift:{type:Boolean,required:!1},prioritizePosition:{type:Boolean,required:!1},reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},{...j}),emits:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`entryFocus`,`openAutoFocus`,`closeAutoFocus`,`dismiss`],setup(e,{emit:t}){let a=e,o=t,s=Y(),l=X(),{trapFocus:f,disableOutsidePointerEvents:p,loop:m}=n(a);re(),te(p.value);let y=v(``),b=v(0),S=v(0),C=v(null),w=v(`right`),T=v(0),E=v(null),D=v(),{forwardRef:k,currentElement:A}=O(),{handleTypeaheadSearch:j}=x();d(A,e=>{s.onContentChange(e)}),r(()=>{window.clearTimeout(b.value)});function M(e){return w.value===C.value?.side&&R(e,C.value?.area)}async function F(e){o(`openAutoFocus`,e),!e.defaultPrevented&&(e.preventDefault(),A.value?.focus({preventScroll:!0}))}function I(e){if(e.defaultPrevented)return;let t=e.target.closest(`[data-reka-menu-content]`)===e.currentTarget,n=e.ctrlKey||e.altKey||e.metaKey,r=e.key.length===1,i=G(e,P(),A.value,{loop:m.value,arrowKeyOptions:`vertical`,dir:l?.dir.value,focus:!0,attributeName:`[data-reka-collection-item]:not([data-disabled])`});if(i)return i?.focus();if(e.code===`Space`)return;let a=D.value?.getItems()??[];if(t&&(e.key===`Tab`&&e.preventDefault(),!n&&r&&j(e.key,a)),e.target!==A.value||!ie.includes(e.key))return;e.preventDefault();let o=[...a.map(e=>e.ref)];H.includes(e.key)&&o.reverse(),z(o)}function B(e){e?.currentTarget?.contains?.(e.target)||(window.clearTimeout(b.value),y.value=``)}function W(e){if(!L(e))return;let t=e.target,n=T.value!==e.clientX;(e?.currentTarget)?.contains(t)&&n&&(w.value=e.clientX>T.value?`right`:`left`,T.value=e.clientX)}return ue({onItemEnter:e=>!!M(e),onItemLeave:e=>{M(e)||(A.value?.focus(),E.value=null)},onTriggerLeave:e=>!!M(e),searchRef:y,pointerGraceTimerRef:S,onPointerGraceIntentChange:e=>{C.value=e}}),(e,t)=>(i(),c(g(V),{"as-child":``,trapped:g(f),onMountAutoFocus:F,onUnmountAutoFocus:t[7]||=e=>o(`closeAutoFocus`,e)},{default:_(()=>[h(g(N),{"as-child":``,"disable-outside-pointer-events":g(p),onEscapeKeyDown:t[2]||=e=>o(`escapeKeyDown`,e),onPointerDownOutside:t[3]||=e=>o(`pointerDownOutside`,e),onFocusOutside:t[4]||=e=>o(`focusOutside`,e),onInteractOutside:t[5]||=e=>o(`interactOutside`,e),onDismiss:t[6]||=e=>o(`dismiss`)},{default:_(()=>[h(g(ee),{ref_key:`rovingFocusGroupRef`,ref:D,"current-tab-stop-id":E.value,"onUpdate:currentTabStopId":t[0]||=e=>E.value=e,"as-child":``,orientation:`vertical`,dir:g(l).dir.value,loop:g(m),onEntryFocus:t[1]||=e=>{o(`entryFocus`,e),g(l).isUsingKeyboardRef.value||e.preventDefault()}},{default:_(()=>[h(g(ne),{ref:g(k),role:`menu`,as:e.as,"as-child":e.asChild,"aria-orientation":`vertical`,"data-reka-menu-content":``,"data-state":g(U)(g(s).open.value),dir:g(l).dir.value,side:e.side,"side-offset":e.sideOffset,align:e.align,"align-offset":e.alignOffset,"avoid-collisions":e.avoidCollisions,"collision-boundary":e.collisionBoundary,"collision-padding":e.collisionPadding,"arrow-padding":e.arrowPadding,"prioritize-position":e.prioritizePosition,"position-strategy":e.positionStrategy,"update-position-strategy":e.updatePositionStrategy,sticky:e.sticky,"hide-when-detached":e.hideWhenDetached,reference:e.reference,onKeydown:I,onBlur:B,onPointermove:W},{default:_(()=>[u(e.$slots,`default`)]),_:3},8,[`as`,`as-child`,`data-state`,`dir`,`side`,`side-offset`,`align`,`align-offset`,`avoid-collisions`,`collision-boundary`,`collision-padding`,`arrow-padding`,`prioritize-position`,`position-strategy`,`update-position-strategy`,`sticky`,`hide-when-detached`,`reference`])]),_:3},8,[`current-tab-stop-id`,`dir`,`loop`])]),_:3},8,[`disable-outside-pointer-events`])]),_:3},8,[`trapped`]))}}),de=e({__name:`MenuRootContentModal`,props:{loop:{type:Boolean,required:!1},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},sideFlip:{type:Boolean,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},alignFlip:{type:Boolean,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1},disableUpdateOnLayoutShift:{type:Boolean,required:!1},prioritizePosition:{type:Boolean,required:!1},reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`entryFocus`,`openAutoFocus`,`closeAutoFocus`],setup(e,{emit:t}){let n=e,r=t,a=I(n,r),o=Y(),{forwardRef:s,currentElement:l}=O();return D(l),(e,t)=>(i(),c(Z,y(g(a),{ref:g(s),"trap-focus":g(o).open.value,"disable-outside-pointer-events":g(o).open.value,"disable-outside-scroll":!0,onDismiss:t[0]||=e=>g(o).onOpenChange(!1),onFocusOutside:t[1]||=p(e=>r(`focusOutside`,e),[`prevent`])}),{default:_(()=>[u(e.$slots,`default`)]),_:3},16,[`trap-focus`,`disable-outside-pointer-events`]))}}),fe=e({__name:`MenuRootContentNonModal`,props:{loop:{type:Boolean,required:!1},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},sideFlip:{type:Boolean,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},alignFlip:{type:Boolean,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1},disableUpdateOnLayoutShift:{type:Boolean,required:!1},prioritizePosition:{type:Boolean,required:!1},reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`entryFocus`,`openAutoFocus`,`closeAutoFocus`],setup(e,{emit:t}){let n=I(e,t),r=Y();return(e,t)=>(i(),c(Z,y(g(n),{"trap-focus":!1,"disable-outside-pointer-events":!1,"disable-outside-scroll":!1,onDismiss:t[0]||=e=>g(r).onOpenChange(!1)}),{default:_(()=>[u(e.$slots,`default`)]),_:3},16))}}),pe=e({__name:`MenuContent`,props:{forceMount:{type:Boolean,required:!1},loop:{type:Boolean,required:!1},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},sideFlip:{type:Boolean,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},alignFlip:{type:Boolean,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1},disableUpdateOnLayoutShift:{type:Boolean,required:!1},prioritizePosition:{type:Boolean,required:!1},reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`entryFocus`,`openAutoFocus`,`closeAutoFocus`],setup(e,{emit:t}){let n=I(e,t),r=Y(),a=X();return(e,t)=>(i(),c(g(E),{present:e.forceMount||g(r).open.value},{default:_(()=>[g(a).modal.value?(i(),c(de,s(y({key:0},{...e.$attrs,...g(n)})),{default:_(()=>[u(e.$slots,`default`)]),_:3},16)):(i(),c(fe,s(y({key:1},{...e.$attrs,...g(n)})),{default:_(()=>[u(e.$slots,`default`)]),_:3},16))]),_:3},8,[`present`]))}}),me=e({__name:`MenuPortal`,props:{to:{type:null,required:!1},disabled:{type:Boolean,required:!1},defer:{type:Boolean,required:!1},forceMount:{type:Boolean,required:!1}},setup(e){let t=e;return(e,n)=>(i(),c(g(B),s(o(t)),{default:_(()=>[u(e.$slots,`default`)]),_:3},16))}}),[Q,he]=M(`DropdownMenuRoot`),ge=e({__name:`DropdownMenuRoot`,props:{defaultOpen:{type:Boolean,required:!1},open:{type:Boolean,required:!1,default:void 0},dir:{type:String,required:!1},modal:{type:Boolean,required:!1,default:!0}},emits:[`update:open`],setup(e,{emit:t}){let r=e,a=t;O();let o=S(r,`open`,a,{defaultValue:r.defaultOpen,passive:r.open===void 0}),s=v(),{modal:l,dir:d}=n(r),f=k(d);return he({open:o,onOpenChange:e=>{o.value=e},onOpenToggle:()=>{o.value=!o.value},triggerId:``,triggerElement:s,contentId:``,modal:l,dir:f}),(e,t)=>(i(),c(g(ce),{open:g(o),"onUpdate:open":t[0]||=e=>m(o)?o.value=e:null,dir:g(f),modal:g(l)},{default:_(()=>[u(e.$slots,`default`,{open:g(o)})]),_:3},8,[`open`,`dir`,`modal`]))}}),$=e({__name:`DropdownMenuContent`,props:{forceMount:{type:Boolean,required:!1},loop:{type:Boolean,required:!1},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},sideFlip:{type:Boolean,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},alignFlip:{type:Boolean,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1},disableUpdateOnLayoutShift:{type:Boolean,required:!1},prioritizePosition:{type:Boolean,required:!1},reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`closeAutoFocus`],setup(e,{emit:t}){let n=I(e,t);O();let r=Q(),a=v(!1);function o(e){e.defaultPrevented||(a.value||setTimeout(()=>{r.triggerElement.value?.focus()},0),a.value=!1,e.preventDefault())}return r.contentId||=w(void 0,`reka-dropdown-menu-content`),(e,t)=>(i(),c(g(pe),y(g(n),{id:g(r).contentId,"aria-labelledby":g(r)?.triggerId,style:{"--reka-dropdown-menu-content-transform-origin":`var(--reka-popper-transform-origin)`,"--reka-dropdown-menu-content-available-width":`var(--reka-popper-available-width)`,"--reka-dropdown-menu-content-available-height":`var(--reka-popper-available-height)`,"--reka-dropdown-menu-trigger-width":`var(--reka-popper-anchor-width)`,"--reka-dropdown-menu-trigger-height":`var(--reka-popper-anchor-height)`},onCloseAutoFocus:o,onInteractOutside:t[0]||=e=>{if(e.defaultPrevented)return;let t=e.detail.originalEvent,n=t.button===0&&t.ctrlKey===!0,i=t.button===2||n;(!g(r).modal.value||i)&&(a.value=!0),g(r).triggerElement.value?.contains(e.target)&&e.preventDefault()}}),{default:_(()=>[u(e.$slots,`default`)]),_:3},16,[`id`,`aria-labelledby`]))}}),_e=e({__name:`DropdownMenuPortal`,props:{to:{type:null,required:!1},disabled:{type:Boolean,required:!1},defer:{type:Boolean,required:!1},forceMount:{type:Boolean,required:!1}},setup(e){let t=e;return(e,n)=>(i(),c(g(me),s(o(t)),{default:_(()=>[u(e.$slots,`default`)]),_:3},16))}}),ve=e({__name:`DropdownMenuTrigger`,props:{disabled:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`button`}},setup(e){let n=e,r=Q(),{forwardRef:a,currentElement:o}=O();return l(()=>{r.triggerElement=o}),r.triggerId||=w(void 0,`reka-dropdown-menu-trigger`),(e,o)=>(i(),c(g(q),{"as-child":``},{default:_(()=>[h(g(T),{id:g(r).triggerId,ref:g(a),type:e.as===`button`?`button`:void 0,"as-child":n.asChild,as:e.as,"aria-haspopup":`menu`,"aria-expanded":g(r).open.value,"aria-controls":g(r).open.value?g(r).contentId:void 0,"data-disabled":e.disabled?``:void 0,disabled:e.disabled,"data-state":g(r).open.value?`open`:`closed`,onClick:o[0]||=async n=>{!e.disabled&&n.button===0&&n.ctrlKey===!1&&(g(r)?.onOpenToggle(),await t(),g(r).open.value&&n.preventDefault())},onKeydown:o[1]||=f(t=>{e.disabled||([`Enter`,` `].includes(t.key)&&g(r).onOpenToggle(),t.key===`ArrowDown`&&g(r).onOpenChange(!0),[`Enter`,` `,`ArrowDown`].includes(t.key)&&t.preventDefault())},[`enter`,`space`,`arrow-down`])},{default:_(()=>[u(e.$slots,`default`)]),_:3},8,[`id`,`type`,`as-child`,`as`,`aria-expanded`,`aria-controls`,`data-disabled`,`disabled`,`data-state`])]),_:3}))}});export{le as a,ge as i,_e as n,X as o,$ as r,ve as t};
2
+ //# sourceMappingURL=DropdownMenuTrigger-MCmvCyZm.js.map
assets/{DropdownMenuTrigger-CLKA4VCz.js.map β†’ DropdownMenuTrigger-MCmvCyZm.js.map} RENAMED
The diff for this file is too large to render. See raw diff
 
assets/{HeaderLink-ltQigpSg.js β†’ HeaderLink-crNkWISd.js} RENAMED
@@ -1,2 +1,2 @@
1
- import{A as e,K as t,S as n,kt as r,lt as i,w as a,x as o}from"./vue.runtime.esm-bundler-_ZPRHVd_.js";import{t as s}from"./src-B0kTFhyw.js";import{t as c}from"./vue-router-COpsLyGI.js";import{t as l}from"./_plugin-vue_export-helper-DSrzDOgY.js";var u=`/assets/logo-dark-B0bvNYTh.svg`,d=`/assets/logo-B2aCU-bH.svg`,f=[`src`],p=[`src`],m=l(e({__name:`HeaderLink`,setup(e){let{isDark:l}=s();return(e,s)=>(t(),n(r(c),{to:`/`,flex:`~`,"items-center":``,"gap-2":``,"px-2":``,"text-nowrap":``,"text-2xl":``,"outline-none":``},{default:i(()=>[r(l)?(t(),a(`img`,{key:0,src:r(u),"h-8":``,"w-8":``,class:`theme-colored`},null,8,f)):(t(),a(`img`,{key:1,src:r(d),"h-8":``,"w-8":``,class:`theme-colored`},null,8,p)),s[0]||=o(`div`,{"translate-y":`[2px]`,"font-quicksand":``,"font-semibold":``},[o(`span`,null,`AIRI`)],-1)]),_:1}))}}),[[`__scopeId`,`data-v-ff499fe5`]]);export{d as n,u as r,m as t};
2
- //# sourceMappingURL=HeaderLink-ltQigpSg.js.map
 
1
+ import{A as e,K as t,S as n,kt as r,lt as i,w as a,x as o}from"./vue.runtime.esm-bundler-_ZPRHVd_.js";import{t as s}from"./src-CuCahbAr.js";import{t as c}from"./vue-router-COpsLyGI.js";import{t as l}from"./_plugin-vue_export-helper-DSrzDOgY.js";var u=`/assets/logo-dark-B0bvNYTh.svg`,d=`/assets/logo-B2aCU-bH.svg`,f=[`src`],p=[`src`],m=l(e({__name:`HeaderLink`,setup(e){let{isDark:l}=s();return(e,s)=>(t(),n(r(c),{to:`/`,flex:`~`,"items-center":``,"gap-2":``,"px-2":``,"text-nowrap":``,"text-2xl":``,"outline-none":``},{default:i(()=>[r(l)?(t(),a(`img`,{key:0,src:r(u),"h-8":``,"w-8":``,class:`theme-colored`},null,8,f)):(t(),a(`img`,{key:1,src:r(d),"h-8":``,"w-8":``,class:`theme-colored`},null,8,p)),s[0]||=o(`div`,{"translate-y":`[2px]`,"font-quicksand":``,"font-semibold":``},[o(`span`,null,`AIRI`)],-1)]),_:1}))}}),[[`__scopeId`,`data-v-ff499fe5`]]);export{d as n,u as r,m as t};
2
+ //# sourceMappingURL=HeaderLink-crNkWISd.js.map
assets/{HeaderLink-ltQigpSg.js.map β†’ HeaderLink-crNkWISd.js.map} RENAMED
@@ -1 +1 @@
1
- {"version":3,"file":"HeaderLink-ltQigpSg.js","names":[],"sources":["../../../../packages/stage-layouts/src/assets/logo-dark.svg","../../../../packages/stage-layouts/src/assets/logo.svg","../../../../packages/stage-layouts/src/components/Layouts/HeaderLink.vue","../../../../packages/stage-layouts/src/components/Layouts/HeaderLink.vue"],"sourcesContent":["export default \"__VITE_ASSET__cn7IAAGY294pWGc7MpElVg__\"","export default \"__VITE_ASSET__P4DPfwIRieI8P6q8r4JZRw__\"","<script setup lang=\"ts\">\nimport { useTheme } from '@proj-airi/ui'\nimport { RouterLink } from 'vue-router'\n\nimport LogoDark from '../../assets/logo-dark.svg'\nimport Logo from '../../assets/logo.svg'\n\nconst { isDark: dark } = useTheme()\n</script>\n\n<template>\n <RouterLink\n to=\"/\" flex=\"~\" items-center\n gap-2 px-2 text-nowrap text-2xl outline-none\n >\n <template v-if=\"dark\">\n <img :src=\"LogoDark\" h-8 w-8 class=\"theme-colored\">\n </template>\n <template v-else>\n <img :src=\"Logo\" h-8 w-8 class=\"theme-colored\">\n </template>\n <div translate-y=\"[2px]\" font-quicksand font-semibold>\n <span>AIRI</span>\n </div>\n </RouterLink>\n</template>\n\n<style scoped>\n.theme-colored {\n filter: hue-rotate(calc(var(--chromatic-hue, 0) * 1deg));\n}\n</style>\n","<script setup lang=\"ts\">\nimport { useTheme } from '@proj-airi/ui'\nimport { RouterLink } from 'vue-router'\n\nimport LogoDark from '../../assets/logo-dark.svg'\nimport Logo from '../../assets/logo.svg'\n\nconst { isDark: dark } = useTheme()\n</script>\n\n<template>\n <RouterLink\n to=\"/\" flex=\"~\" items-center\n gap-2 px-2 text-nowrap text-2xl outline-none\n >\n <template v-if=\"dark\">\n <img :src=\"LogoDark\" h-8 w-8 class=\"theme-colored\">\n </template>\n <template v-else>\n <img :src=\"Logo\" h-8 w-8 class=\"theme-colored\">\n </template>\n <div translate-y=\"[2px]\" font-quicksand font-semibold>\n <span>AIRI</span>\n </div>\n </RouterLink>\n</template>\n\n<style scoped>\n.theme-colored {\n filter: hue-rotate(calc(var(--chromatic-hue, 0) * 1deg));\n}\n</style>\n"],"mappings":"qPAAA,IAAA,EAAe,iCCAf,EAAe,oFEOf,GAAM,CAAE,OAAQ,GAAS,GAAS,mBAIhC,EAaa,EAAA,EAAA,CAAA,CAZX,GAAG,IAAI,KAAK,IAAI,eAAA,GAChB,QAAA,GAAM,OAAA,GAAK,cAAA,GAAY,WAAA,GAAS,eAAA,mBAIrB,CAFK,EAAA,EAAI,EAAA,GAAA,CAClB,EAAmD,MAAA,OAA7C,IAAK,EAAA,EAAQ,CAAE,MAAA,GAAI,MAAA,GAAI,MAAM,iCAGnC,EAA+C,MAAA,OAAzC,IAAK,EAAA,EAAI,CAAE,MAAA,GAAI,MAAA,GAAI,MAAM,mCAEjC,EAEM,MAAA,CAFD,cAAY,QAAQ,iBAAA,GAAe,gBAAA,KACtC,EAAiB,OAAA,KAAX,OAAI,CAAA,CAAA,GAAA,CAAA,CAAA"}
 
1
+ {"version":3,"file":"HeaderLink-crNkWISd.js","names":[],"sources":["../../../../packages/stage-layouts/src/assets/logo-dark.svg","../../../../packages/stage-layouts/src/assets/logo.svg","../../../../packages/stage-layouts/src/components/Layouts/HeaderLink.vue","../../../../packages/stage-layouts/src/components/Layouts/HeaderLink.vue"],"sourcesContent":["export default \"__VITE_ASSET__aLISaAY6NSiJFT$6GdtrfA__\"","export default \"__VITE_ASSET__6kssa3xCT2YlMpIbbRNP$Q__\"","<script setup lang=\"ts\">\nimport { useTheme } from '@proj-airi/ui'\nimport { RouterLink } from 'vue-router'\n\nimport LogoDark from '../../assets/logo-dark.svg'\nimport Logo from '../../assets/logo.svg'\n\nconst { isDark: dark } = useTheme()\n</script>\n\n<template>\n <RouterLink\n to=\"/\" flex=\"~\" items-center\n gap-2 px-2 text-nowrap text-2xl outline-none\n >\n <template v-if=\"dark\">\n <img :src=\"LogoDark\" h-8 w-8 class=\"theme-colored\">\n </template>\n <template v-else>\n <img :src=\"Logo\" h-8 w-8 class=\"theme-colored\">\n </template>\n <div translate-y=\"[2px]\" font-quicksand font-semibold>\n <span>AIRI</span>\n </div>\n </RouterLink>\n</template>\n\n<style scoped>\n.theme-colored {\n filter: hue-rotate(calc(var(--chromatic-hue, 0) * 1deg));\n}\n</style>\n","<script setup lang=\"ts\">\nimport { useTheme } from '@proj-airi/ui'\nimport { RouterLink } from 'vue-router'\n\nimport LogoDark from '../../assets/logo-dark.svg'\nimport Logo from '../../assets/logo.svg'\n\nconst { isDark: dark } = useTheme()\n</script>\n\n<template>\n <RouterLink\n to=\"/\" flex=\"~\" items-center\n gap-2 px-2 text-nowrap text-2xl outline-none\n >\n <template v-if=\"dark\">\n <img :src=\"LogoDark\" h-8 w-8 class=\"theme-colored\">\n </template>\n <template v-else>\n <img :src=\"Logo\" h-8 w-8 class=\"theme-colored\">\n </template>\n <div translate-y=\"[2px]\" font-quicksand font-semibold>\n <span>AIRI</span>\n </div>\n </RouterLink>\n</template>\n\n<style scoped>\n.theme-colored {\n filter: hue-rotate(calc(var(--chromatic-hue, 0) * 1deg));\n}\n</style>\n"],"mappings":"qPAAA,IAAA,EAAe,iCCAf,EAAe,oFEOf,GAAM,CAAE,OAAQ,GAAS,GAAS,mBAIhC,EAaa,EAAA,EAAA,CAAA,CAZX,GAAG,IAAI,KAAK,IAAI,eAAA,GAChB,QAAA,GAAM,OAAA,GAAK,cAAA,GAAY,WAAA,GAAS,eAAA,mBAIrB,CAFK,EAAA,EAAI,EAAA,GAAA,CAClB,EAAmD,MAAA,OAA7C,IAAK,EAAA,EAAQ,CAAE,MAAA,GAAI,MAAA,GAAI,MAAM,iCAGnC,EAA+C,MAAA,OAAzC,IAAK,EAAA,EAAI,CAAE,MAAA,GAAI,MAAA,GAAI,MAAM,mCAEjC,EAEM,MAAA,CAFD,cAAY,QAAQ,iBAAA,GAAe,gBAAA,KACtC,EAAiB,OAAA,KAAX,OAAI,CAAA,CAAA,GAAA,CAAA,CAAA"}
assets/{InputFile-p6SaZwhB.js β†’ InputFile-rNUdOmZ6.js} RENAMED
@@ -1,2 +1,2 @@
1
- import{A as e,K as t,S as n,jt as r,lt as i,w as a,x as o}from"./vue.runtime.esm-bundler-_ZPRHVd_.js";import{t as s}from"./BasicInputFile-DrdqKFRh.js";var c={key:0,text:`center`,"text-sm":``},l={key:1,text:`center`,"text-sm":``},u=e({__name:`InputFile`,props:{accept:{},multiple:{type:Boolean}},setup(e){return(u,d)=>(t(),n(s,{class:r([`min-h-[120px] flex flex-col cursor-pointer items-center justify-center rounded-xl p-6`,`border-dashed border-2`,`transition-all duration-300`,`opacity-95`,`hover:scale-100 hover:opacity-100 hover:shadow-md hover:dark:shadow-lg`]),"is-not-dragging-classes":[`border-neutral-200 dark:border-neutral-700 hover:border-primary-300 dark:hover:border-primary-700`,`bg-white/60 dark:bg-black/30 hover:bg-white/80 dark:hover:bg-black/40`],"is-dragging-classes":[`border-primary-400 dark:border-primary-600 hover:border-primary-300 dark:hover:border-primary-700`,`bg-primary-50/5 dark:bg-primary-900/5`],accept:e.accept,multiple:e.multiple},{default:i(({isDragging:e})=>[o(`div`,{class:r([`flex flex-col items-center`,[e?`text-primary-500 dark:text-primary-400`:`text-neutral-400 dark:text-neutral-500`]])},[d[0]||=o(`div`,{"i-solar:upload-square-line-duotone":``,"mb-2":``,"text-5xl":``},null,-1),d[1]||=o(`p`,{"font-medium":``,text:`center lg`},` Upload `,-1),e?(t(),a(`p`,c,` Release to upload `)):(t(),a(`p`,l,` Click or drag and drop a file here `))],2)]),_:1},8,[`accept`,`multiple`]))}});export{u as t};
2
- //# sourceMappingURL=InputFile-p6SaZwhB.js.map
 
1
+ import{A as e,K as t,S as n,jt as r,lt as i,w as a,x as o}from"./vue.runtime.esm-bundler-_ZPRHVd_.js";import{t as s}from"./BasicInputFile-ASZjsFcd.js";var c={key:0,text:`center`,"text-sm":``},l={key:1,text:`center`,"text-sm":``},u=e({__name:`InputFile`,props:{accept:{},multiple:{type:Boolean}},setup(e){return(u,d)=>(t(),n(s,{class:r([`min-h-[120px] flex flex-col cursor-pointer items-center justify-center rounded-xl p-6`,`border-dashed border-2`,`transition-all duration-300`,`opacity-95`,`hover:scale-100 hover:opacity-100 hover:shadow-md hover:dark:shadow-lg`]),"is-not-dragging-classes":[`border-neutral-200 dark:border-neutral-700 hover:border-primary-300 dark:hover:border-primary-700`,`bg-white/60 dark:bg-black/30 hover:bg-white/80 dark:hover:bg-black/40`],"is-dragging-classes":[`border-primary-400 dark:border-primary-600 hover:border-primary-300 dark:hover:border-primary-700`,`bg-primary-50/5 dark:bg-primary-900/5`],accept:e.accept,multiple:e.multiple},{default:i(({isDragging:e})=>[o(`div`,{class:r([`flex flex-col items-center`,[e?`text-primary-500 dark:text-primary-400`:`text-neutral-400 dark:text-neutral-500`]])},[d[0]||=o(`div`,{"i-solar:upload-square-line-duotone":``,"mb-2":``,"text-5xl":``},null,-1),d[1]||=o(`p`,{"font-medium":``,text:`center lg`},` Upload `,-1),e?(t(),a(`p`,c,` Release to upload `)):(t(),a(`p`,l,` Click or drag and drop a file here `))],2)]),_:1},8,[`accept`,`multiple`]))}});export{u as t};
2
+ //# sourceMappingURL=InputFile-rNUdOmZ6.js.map
assets/{InputFile-p6SaZwhB.js.map β†’ InputFile-rNUdOmZ6.js.map} RENAMED
@@ -1 +1 @@
1
- {"version":3,"file":"InputFile-p6SaZwhB.js","names":[],"sources":["../../../../packages/ui/src/components/Form/Input/InputFile.vue","../../../../packages/ui/src/components/Form/Input/InputFile.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport BasicInputFile from './BasicInputFile.vue'\n\ndefineProps<{\n accept?: string\n multiple?: boolean\n}>()\n</script>\n\n<template>\n <BasicInputFile\n :class=\"[\n 'min-h-[120px] flex flex-col cursor-pointer items-center justify-center rounded-xl p-6',\n 'border-dashed border-2',\n 'transition-all duration-300',\n 'opacity-95',\n 'hover:scale-100 hover:opacity-100 hover:shadow-md hover:dark:shadow-lg',\n ]\"\n :is-not-dragging-classes=\"[\n 'border-neutral-200 dark:border-neutral-700 hover:border-primary-300 dark:hover:border-primary-700',\n 'bg-white/60 dark:bg-black/30 hover:bg-white/80 dark:hover:bg-black/40',\n ]\"\n :is-dragging-classes=\"[\n 'border-primary-400 dark:border-primary-600 hover:border-primary-300 dark:hover:border-primary-700',\n 'bg-primary-50/5 dark:bg-primary-900/5',\n ]\"\n :accept=\"accept\"\n :multiple=\"multiple\"\n >\n <template #default=\"{ isDragging }\">\n <div\n class=\"flex flex-col items-center\"\n :class=\"[\n isDragging ? 'text-primary-500 dark:text-primary-400' : 'text-neutral-400 dark:text-neutral-500',\n ]\"\n >\n <div i-solar:upload-square-line-duotone mb-2 text-5xl />\n <p font-medium text=\"center lg\">\n Upload\n </p>\n <p v-if=\"isDragging\" text=\"center\" text-sm>\n Release to upload\n </p>\n <p v-else text=\"center\" text-sm>\n Click or drag and drop a file here\n </p>\n </div>\n </template>\n </BasicInputFile>\n</template>\n","<script setup lang=\"ts\">\nimport BasicInputFile from './BasicInputFile.vue'\n\ndefineProps<{\n accept?: string\n multiple?: boolean\n}>()\n</script>\n\n<template>\n <BasicInputFile\n :class=\"[\n 'min-h-[120px] flex flex-col cursor-pointer items-center justify-center rounded-xl p-6',\n 'border-dashed border-2',\n 'transition-all duration-300',\n 'opacity-95',\n 'hover:scale-100 hover:opacity-100 hover:shadow-md hover:dark:shadow-lg',\n ]\"\n :is-not-dragging-classes=\"[\n 'border-neutral-200 dark:border-neutral-700 hover:border-primary-300 dark:hover:border-primary-700',\n 'bg-white/60 dark:bg-black/30 hover:bg-white/80 dark:hover:bg-black/40',\n ]\"\n :is-dragging-classes=\"[\n 'border-primary-400 dark:border-primary-600 hover:border-primary-300 dark:hover:border-primary-700',\n 'bg-primary-50/5 dark:bg-primary-900/5',\n ]\"\n :accept=\"accept\"\n :multiple=\"multiple\"\n >\n <template #default=\"{ isDragging }\">\n <div\n class=\"flex flex-col items-center\"\n :class=\"[\n isDragging ? 'text-primary-500 dark:text-primary-400' : 'text-neutral-400 dark:text-neutral-500',\n ]\"\n >\n <div i-solar:upload-square-line-duotone mb-2 text-5xl />\n <p font-medium text=\"center lg\">\n Upload\n </p>\n <p v-if=\"isDragging\" text=\"center\" text-sm>\n Release to upload\n </p>\n <p v-else text=\"center\" text-sm>\n Click or drag and drop a file here\n </p>\n </div>\n </template>\n </BasicInputFile>\n</template>\n"],"mappings":"kUCUE,EAsCiB,EAAA,CArCd,MAAK,EAAE,sOAMP,CAAA,CACA,0BAAyB,CAAA,oGAAA,wEAGzB,CACA,sBAAqB,CAAA,oGAAA,wCAGrB,CACA,OAAQ,EAAA,OACR,SAAU,EAAA,WAEA,QAAO,GAiBV,CAjBc,gBAAU,CAC9B,EAgBM,MAAA,CAfJ,MAAK,EAAA,CAAC,6BAA4B,CACd,EAAU,yCAAA,yCAAA,CAAA,CAAA,CAAA,CAAA,QAI9B,EAAwD,MAAA,CAAnD,qCAAA,GAAmC,OAAA,GAAK,WAAA,oBAC7C,EAEI,IAAA,CAFD,cAAA,GAAY,KAAK,aAAY,WAEhC,GAAA,CACS,GAAA,GAAA,CAAT,EAEI,IAFJ,EAA2C,sBAE3C,GAAA,GAAA,CACA,EAEI,IAFJ,EAAgC,uCAEhC"}
 
1
+ {"version":3,"file":"InputFile-rNUdOmZ6.js","names":[],"sources":["../../../../packages/ui/src/components/Form/Input/InputFile.vue","../../../../packages/ui/src/components/Form/Input/InputFile.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport BasicInputFile from './BasicInputFile.vue'\n\ndefineProps<{\n accept?: string\n multiple?: boolean\n}>()\n</script>\n\n<template>\n <BasicInputFile\n :class=\"[\n 'min-h-[120px] flex flex-col cursor-pointer items-center justify-center rounded-xl p-6',\n 'border-dashed border-2',\n 'transition-all duration-300',\n 'opacity-95',\n 'hover:scale-100 hover:opacity-100 hover:shadow-md hover:dark:shadow-lg',\n ]\"\n :is-not-dragging-classes=\"[\n 'border-neutral-200 dark:border-neutral-700 hover:border-primary-300 dark:hover:border-primary-700',\n 'bg-white/60 dark:bg-black/30 hover:bg-white/80 dark:hover:bg-black/40',\n ]\"\n :is-dragging-classes=\"[\n 'border-primary-400 dark:border-primary-600 hover:border-primary-300 dark:hover:border-primary-700',\n 'bg-primary-50/5 dark:bg-primary-900/5',\n ]\"\n :accept=\"accept\"\n :multiple=\"multiple\"\n >\n <template #default=\"{ isDragging }\">\n <div\n class=\"flex flex-col items-center\"\n :class=\"[\n isDragging ? 'text-primary-500 dark:text-primary-400' : 'text-neutral-400 dark:text-neutral-500',\n ]\"\n >\n <div i-solar:upload-square-line-duotone mb-2 text-5xl />\n <p font-medium text=\"center lg\">\n Upload\n </p>\n <p v-if=\"isDragging\" text=\"center\" text-sm>\n Release to upload\n </p>\n <p v-else text=\"center\" text-sm>\n Click or drag and drop a file here\n </p>\n </div>\n </template>\n </BasicInputFile>\n</template>\n","<script setup lang=\"ts\">\nimport BasicInputFile from './BasicInputFile.vue'\n\ndefineProps<{\n accept?: string\n multiple?: boolean\n}>()\n</script>\n\n<template>\n <BasicInputFile\n :class=\"[\n 'min-h-[120px] flex flex-col cursor-pointer items-center justify-center rounded-xl p-6',\n 'border-dashed border-2',\n 'transition-all duration-300',\n 'opacity-95',\n 'hover:scale-100 hover:opacity-100 hover:shadow-md hover:dark:shadow-lg',\n ]\"\n :is-not-dragging-classes=\"[\n 'border-neutral-200 dark:border-neutral-700 hover:border-primary-300 dark:hover:border-primary-700',\n 'bg-white/60 dark:bg-black/30 hover:bg-white/80 dark:hover:bg-black/40',\n ]\"\n :is-dragging-classes=\"[\n 'border-primary-400 dark:border-primary-600 hover:border-primary-300 dark:hover:border-primary-700',\n 'bg-primary-50/5 dark:bg-primary-900/5',\n ]\"\n :accept=\"accept\"\n :multiple=\"multiple\"\n >\n <template #default=\"{ isDragging }\">\n <div\n class=\"flex flex-col items-center\"\n :class=\"[\n isDragging ? 'text-primary-500 dark:text-primary-400' : 'text-neutral-400 dark:text-neutral-500',\n ]\"\n >\n <div i-solar:upload-square-line-duotone mb-2 text-5xl />\n <p font-medium text=\"center lg\">\n Upload\n </p>\n <p v-if=\"isDragging\" text=\"center\" text-sm>\n Release to upload\n </p>\n <p v-else text=\"center\" text-sm>\n Click or drag and drop a file here\n </p>\n </div>\n </template>\n </BasicInputFile>\n</template>\n"],"mappings":"kUCUE,EAsCiB,EAAA,CArCd,MAAK,EAAE,sOAMP,CAAA,CACA,0BAAyB,CAAA,oGAAA,wEAGzB,CACA,sBAAqB,CAAA,oGAAA,wCAGrB,CACA,OAAQ,EAAA,OACR,SAAU,EAAA,WAEA,QAAO,GAiBV,CAjBc,gBAAU,CAC9B,EAgBM,MAAA,CAfJ,MAAK,EAAA,CAAC,6BAA4B,CACd,EAAU,yCAAA,yCAAA,CAAA,CAAA,CAAA,CAAA,QAI9B,EAAwD,MAAA,CAAnD,qCAAA,GAAmC,OAAA,GAAK,WAAA,oBAC7C,EAEI,IAAA,CAFD,cAAA,GAAY,KAAK,aAAY,WAEhC,GAAA,CACS,GAAA,GAAA,CAAT,EAEI,IAFJ,EAA2C,sBAE3C,GAAA,GAAA,CACA,EAEI,IAFJ,EAAgC,uCAEhC"}
assets/{Live2D-DWYzmisH.js β†’ Live2D-B1WGPd_w.js} RENAMED
The diff for this file is too large to render. See raw diff
 
assets/{Live2D-DWYzmisH.js.map β†’ Live2D-B1WGPd_w.js.map} RENAMED
The diff for this file is too large to render. See raw diff
 
assets/{_...all_-DQf7GX2x.js β†’ _...all_-D9FhmNcA.js} RENAMED
@@ -1,2 +1,2 @@
1
- import{A as e,K as t,O as n,k as r,kt as i,lt as a,w as o,x as s}from"./vue.runtime.esm-bundler-_ZPRHVd_.js";import{i as c}from"./src-B0kTFhyw.js";import{o as l}from"./vue-router-COpsLyGI.js";var u={"h-full":``,"w-full":``,flex:``,"flex-col":``,"items-center":``,"justify-center":``,"gap-4":``},d=e({__name:`[...all]`,setup(e){let d=l();return(e,l)=>(t(),o(`div`,u,[l[2]||=s(`div`,{"text-3xl":``},` Where are we? `,-1),s(`div`,null,[r(i(c),{onClick:l[0]||=e=>i(d).go(-1)},{default:a(()=>[...l[1]||=[n(` Go Back `,-1)]]),_:1})])]))}});export{d as default};
2
- //# sourceMappingURL=_...all_-DQf7GX2x.js.map
 
1
+ import{A as e,K as t,O as n,k as r,kt as i,lt as a,w as o,x as s}from"./vue.runtime.esm-bundler-_ZPRHVd_.js";import{i as c}from"./src-CuCahbAr.js";import{o as l}from"./vue-router-COpsLyGI.js";var u={"h-full":``,"w-full":``,flex:``,"flex-col":``,"items-center":``,"justify-center":``,"gap-4":``},d=e({__name:`[...all]`,setup(e){let d=l();return(e,l)=>(t(),o(`div`,u,[l[2]||=s(`div`,{"text-3xl":``},` Where are we? `,-1),s(`div`,null,[r(i(c),{onClick:l[0]||=e=>i(d).go(-1)},{default:a(()=>[...l[1]||=[n(` Go Back `,-1)]]),_:1})])]))}});export{d as default};
2
+ //# sourceMappingURL=_...all_-D9FhmNcA.js.map
assets/{_...all_-DQf7GX2x.js.map β†’ _...all_-D9FhmNcA.js.map} RENAMED
@@ -1 +1 @@
1
- {"version":3,"file":"_...all_-DQf7GX2x.js","names":[],"sources":["../../src/pages/[...all].vue","../../src/pages/[...all].vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { Button } from '@proj-airi/ui'\nimport { useRouter } from 'vue-router'\n\nconst router = useRouter()\n</script>\n\n<template>\n <div h-full w-full flex flex-col items-center justify-center gap-4>\n <div text-3xl>\n Where are we?\n </div>\n <div>\n <Button @click=\"router.go(-1)\">\n Go Back\n </Button>\n </div>\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { Button } from '@proj-airi/ui'\nimport { useRouter } from 'vue-router'\n\nconst router = useRouter()\n</script>\n\n<template>\n <div h-full w-full flex flex-col items-center justify-center gap-4>\n <div text-3xl>\n Where are we?\n </div>\n <div>\n <Button @click=\"router.go(-1)\">\n Go Back\n </Button>\n </div>\n </div>\n</template>\n"],"mappings":"uUCIA,IAAM,EAAS,GAAU,mBAIvB,EASM,MATN,EASM,CAAA,AAAA,EAAA,KARJ,EAEM,MAAA,CAFD,WAAA,GAAQ,CAAC,kBAEd,GAAA,CACA,EAIM,MAAA,KAAA,CAHJ,EAES,EAAA,EAAA,CAAA,CAFA,QAAK,AAAA,EAAA,KAAA,GAAE,EAAA,EAAM,CAAC,GAAE,GAAA,CAAA,CAAA,eAEzB,CAAA,GAAA,AAAA,EAAA,KAAA,CAAA,EAF+B,YAE/B,GAAA,CAAA,CAAA,CAAA"}
 
1
+ {"version":3,"file":"_...all_-D9FhmNcA.js","names":[],"sources":["../../src/pages/[...all].vue","../../src/pages/[...all].vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { Button } from '@proj-airi/ui'\nimport { useRouter } from 'vue-router'\n\nconst router = useRouter()\n</script>\n\n<template>\n <div h-full w-full flex flex-col items-center justify-center gap-4>\n <div text-3xl>\n Where are we?\n </div>\n <div>\n <Button @click=\"router.go(-1)\">\n Go Back\n </Button>\n </div>\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { Button } from '@proj-airi/ui'\nimport { useRouter } from 'vue-router'\n\nconst router = useRouter()\n</script>\n\n<template>\n <div h-full w-full flex flex-col items-center justify-center gap-4>\n <div text-3xl>\n Where are we?\n </div>\n <div>\n <Button @click=\"router.go(-1)\">\n Go Back\n </Button>\n </div>\n </div>\n</template>\n"],"mappings":"uUCIA,IAAM,EAAS,GAAU,mBAIvB,EASM,MATN,EASM,CAAA,AAAA,EAAA,KARJ,EAEM,MAAA,CAFD,WAAA,GAAQ,CAAC,kBAEd,GAAA,CACA,EAIM,MAAA,KAAA,CAHJ,EAES,EAAA,EAAA,CAAA,CAFA,QAAK,AAAA,EAAA,KAAA,GAAE,EAAA,EAAM,CAAC,GAAE,GAAA,CAAA,CAAA,eAEzB,CAAA,GAAA,AAAA,EAAA,KAAA,CAAA,EAF+B,YAE/B,GAAA,CAAA,CAAA,CAAA"}
assets/__vite-browser-external-JM8C1jhA.js DELETED
@@ -1 +0,0 @@
1
- import{t as e}from"./__vite-browser-external-BzqcraBV.js";export default e();
 
 
assets/__vite-browser-external-KGLUpgvw.js ADDED
@@ -0,0 +1 @@
 
 
1
+ import{t as e}from"./__vite-browser-external-OxRfFa9r.js";export default e();