veloce-vue 0.10.0 → 0.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/README.md +28 -24
  2. package/components/{Button → button}/Index.vue.d.ts +1 -1
  3. package/components/checkbox/Index.vue.d.ts +43 -0
  4. package/components/checkbox/props.d.ts +14 -0
  5. package/components/checkbox/stories.d.ts +9 -0
  6. package/components/drawer/Index.vue.d.ts +77 -0
  7. package/components/drawer/props.d.ts +23 -0
  8. package/components/drawer/stories.d.ts +9 -0
  9. package/components/input/Index.vue.d.ts +54 -0
  10. package/components/input/props.d.ts +19 -0
  11. package/components/input/stories.d.ts +9 -0
  12. package/components/modal/Index.vue.d.ts +29 -0
  13. package/components/modal/props.d.ts +6 -0
  14. package/components/modal/stories.d.ts +6 -0
  15. package/components/popover/Index.vue.d.ts +47 -0
  16. package/components/popover/props.d.ts +15 -0
  17. package/components/popover/stories.d.ts +7 -0
  18. package/components/range-slider/Index.vue.d.ts +28 -0
  19. package/components/range-slider/props.d.ts +10 -0
  20. package/components/range-slider/stories.d.ts +7 -0
  21. package/components/select/Index.vue.d.ts +58 -0
  22. package/components/select/props.d.ts +23 -0
  23. package/components/select/stories.d.ts +11 -0
  24. package/components/separator/Index.vue.d.ts +44 -0
  25. package/components/separator/props.d.ts +19 -0
  26. package/components/separator/stories.d.ts +7 -0
  27. package/components/tooltip/Index.vue.d.ts +47 -0
  28. package/components/tooltip/props.d.ts +15 -0
  29. package/components/tooltip/stories.d.ts +10 -0
  30. package/exports.d.ts +11 -2
  31. package/index.cjs +1 -1
  32. package/index.cjs.map +1 -1
  33. package/index.js +609 -63
  34. package/index.js.map +1 -1
  35. package/package.json +1 -1
  36. package/pages/Home/stories.d.ts +30 -1
  37. package/pages/config/Index.vue.d.ts +3 -0
  38. package/pages/config/stories.d.ts +6 -0
  39. package/veloce-vue.css +1 -1
  40. /package/components/{Accordion → accordion}/Index.vue.d.ts +0 -0
  41. /package/components/{Accordion → accordion}/stories.d.ts +0 -0
  42. /package/components/{Button → button}/props.d.ts +0 -0
  43. /package/components/{Button → button}/stories.d.ts +0 -0
  44. /package/{composables → utils}/useRandomId.d.ts +0 -0
@@ -0,0 +1,44 @@
1
+ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
2
+ readonly direction: {
3
+ readonly type: () => "horizontal" | "vertical";
4
+ readonly default: "horizontal";
5
+ readonly options: readonly ["horizontal", "vertical"];
6
+ };
7
+ readonly color: {
8
+ readonly type: StringConstructor;
9
+ readonly default: "#16476A";
10
+ };
11
+ readonly label: {
12
+ readonly type: StringConstructor;
13
+ readonly default: "";
14
+ };
15
+ readonly icon: {
16
+ readonly type: StringConstructor;
17
+ readonly default: "";
18
+ };
19
+ }>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
20
+ readonly direction: {
21
+ readonly type: () => "horizontal" | "vertical";
22
+ readonly default: "horizontal";
23
+ readonly options: readonly ["horizontal", "vertical"];
24
+ };
25
+ readonly color: {
26
+ readonly type: StringConstructor;
27
+ readonly default: "#16476A";
28
+ };
29
+ readonly label: {
30
+ readonly type: StringConstructor;
31
+ readonly default: "";
32
+ };
33
+ readonly icon: {
34
+ readonly type: StringConstructor;
35
+ readonly default: "";
36
+ };
37
+ }>> & Readonly<{}>, {
38
+ readonly label: string;
39
+ readonly icon: string;
40
+ readonly direction: "horizontal" | "vertical";
41
+ readonly color: string;
42
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
43
+ declare const _default: typeof __VLS_export;
44
+ export default _default;
@@ -0,0 +1,19 @@
1
+ export declare const props: {
2
+ readonly direction: {
3
+ readonly type: () => "horizontal" | "vertical";
4
+ readonly default: "horizontal";
5
+ readonly options: readonly ["horizontal", "vertical"];
6
+ };
7
+ readonly color: {
8
+ readonly type: StringConstructor;
9
+ readonly default: "#16476A";
10
+ };
11
+ readonly label: {
12
+ readonly type: StringConstructor;
13
+ readonly default: "";
14
+ };
15
+ readonly icon: {
16
+ readonly type: StringConstructor;
17
+ readonly default: "";
18
+ };
19
+ };
@@ -0,0 +1,7 @@
1
+ import type { Meta, StoryObj } from "@storybook/vue3-vite";
2
+ import Separator from "./Index.vue";
3
+ declare const meta: Meta<typeof Separator>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof Separator>;
6
+ export declare const Horizontal: Story;
7
+ export declare const Vertical: Story;
@@ -0,0 +1,47 @@
1
+ declare var __VLS_1: {}, __VLS_3: {};
2
+ type __VLS_Slots = {} & {
3
+ default?: (props: typeof __VLS_1) => any;
4
+ } & {
5
+ body?: (props: typeof __VLS_3) => any;
6
+ };
7
+ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
8
+ readonly content: {
9
+ readonly type: StringConstructor;
10
+ readonly default: "";
11
+ };
12
+ readonly position: {
13
+ readonly type: () => "top" | "bottom" | "left" | "right";
14
+ readonly default: "bottom";
15
+ readonly options: readonly ["top", "bottom", "left", "right"];
16
+ };
17
+ readonly bodyClass: {
18
+ readonly type: StringConstructor;
19
+ readonly default: "";
20
+ };
21
+ }>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
22
+ readonly content: {
23
+ readonly type: StringConstructor;
24
+ readonly default: "";
25
+ };
26
+ readonly position: {
27
+ readonly type: () => "top" | "bottom" | "left" | "right";
28
+ readonly default: "bottom";
29
+ readonly options: readonly ["top", "bottom", "left", "right"];
30
+ };
31
+ readonly bodyClass: {
32
+ readonly type: StringConstructor;
33
+ readonly default: "";
34
+ };
35
+ }>> & Readonly<{}>, {
36
+ readonly position: "left" | "right" | "bottom" | "top";
37
+ readonly bodyClass: string;
38
+ readonly content: string;
39
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
40
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
41
+ declare const _default: typeof __VLS_export;
42
+ export default _default;
43
+ type __VLS_WithSlots<T, S> = T & {
44
+ new (): {
45
+ $slots: S;
46
+ };
47
+ };
@@ -0,0 +1,15 @@
1
+ export declare const props: {
2
+ readonly content: {
3
+ readonly type: StringConstructor;
4
+ readonly default: "";
5
+ };
6
+ readonly position: {
7
+ readonly type: () => "top" | "bottom" | "left" | "right";
8
+ readonly default: "bottom";
9
+ readonly options: readonly ["top", "bottom", "left", "right"];
10
+ };
11
+ readonly bodyClass: {
12
+ readonly type: StringConstructor;
13
+ readonly default: "";
14
+ };
15
+ };
@@ -0,0 +1,10 @@
1
+ import type { Meta, StoryObj } from "@storybook/vue3-vite";
2
+ import Tooltip from "./Index.vue";
3
+ declare const meta: Meta<typeof Tooltip>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof Tooltip>;
6
+ export declare const Default: Story;
7
+ export declare const Top: Story;
8
+ export declare const Bottom: Story;
9
+ export declare const Left: Story;
10
+ export declare const Right: Story;
package/exports.d.ts CHANGED
@@ -1,3 +1,12 @@
1
- export { default as Button } from "./components/Button/Index.vue";
2
- export { default as Accordion } from "./components/Accordion/Index.vue";
1
+ export { default as Accordion } from "./components/accordion/Index.vue";
2
+ export { default as Button } from "./components/button/Index.vue";
3
+ export { default as Checkbox } from "./components/checkbox/Index.vue";
4
+ export { default as Drawer } from "./components/drawer/Index.vue";
5
+ export { default as Input } from "./components/input/Index.vue";
6
+ export { default as Modal } from "./components/modal/Index.vue";
7
+ export { default as Popover } from "./components/popover/Index.vue";
8
+ export { default as RangeSlider } from "./components/range-slider/Index.vue";
9
+ export { default as Select } from "./components/select/Index.vue";
10
+ export { default as Separator } from "./components/separator/Index.vue";
11
+ export { default as Tooltip } from "./components/tooltip/Index.vue";
3
12
  export { config } from "./utils/config";
package/index.cjs CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),i={label:{type:String,default:""},loading:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},variant:{type:String,default:"solid",options:["outlined","text","ghost","solid"]},icon:{type:String,default:""},iconClass:{type:String,default:""},iconPosition:{type:String,default:"right",options:["left","right"]},rounded:{type:Boolean,default:!1}},c=["disabled"],d=e.defineComponent({__name:"Index",props:i,setup(o){const t=o,r=e.computed(()=>{switch(t.variant){case"outlined":return"!border-primary text-primary bg-transparent hover:bg-primary disabled:hover:bg-transparent disabled:hover:text-primary hover:text-white";case"text":return"bg-transparent text-primary hover:bg-gray-200 disabled:hover:bg-transparent disabled:hover:text-primary";case"ghost":return"text-primary bg-gray-100 hover:bg-gray-200 disabled:hover:bg-transparent disabled:hover:text-primary";default:return"bg-primary text-white hover:bg-primary/75 disabled:hover:bg-primary disabled:hover:text-white"}});return(s,l)=>{const n=e.resolveComponent("Icon");return e.openBlock(),e.createElementBlock("button",{type:"button",disabled:t.disabled||t.loading,class:e.normalizeClass([r.value,{"rounded-full":t.rounded},"flex cursor-pointer items-center justify-center gap-2 rounded border border-transparent px-3 py-2 transition duration-200 disabled:cursor-not-allowed disabled:opacity-75 "])},[e.createElementVNode("div",{class:e.normalizeClass([{"justify-center":!t.icon},"flex w-full items-center justify-between gap-2"])},[t.label?(e.openBlock(),e.createElementBlock("span",{key:0,class:e.normalizeClass({"order-2":t.iconPosition==="left"})},e.toDisplayString(t.label),3)):e.createCommentVNode("",!0),t.icon&&!t.loading?(e.openBlock(),e.createBlock(n,{key:1,icon:t.icon,class:e.normalizeClass(t.iconClass)},null,8,["icon","class"])):e.createCommentVNode("",!0)],2),t.loading?(e.openBlock(),e.createBlock(n,{key:0,icon:"loading"})):e.createCommentVNode("",!0)],10,c)}}}),p={class:"w-full divide-y divide-gray-200 rounded border border-slate-200 bg-white"},u=["onClick"],m={class:"title text-gray-600"},y={key:0,class:"p-3 text-gray-500"},g={key:1,class:"px-3 py-6 text-center text-gray-500"},b=e.defineComponent({__name:"Index",props:{items:{type:Array,required:!0}},setup(o){const t=e.ref(null);return(r,s)=>{const l=e.resolveComponent("Icon");return e.openBlock(),e.createElementBlock("div",p,[o.items.length?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(o.items,(n,a)=>(e.openBlock(),e.createElementBlock("div",{key:a},[e.createElementVNode("div",{class:e.normalizeClass([{"bg-primary/5":t.value===a},"hover:bg-primary/5 relative flex cursor-pointer justify-between gap-4 p-3 font-medium duration-100"]),onClick:h=>t.value=t.value===a?null:a},[e.createElementVNode("span",m,e.toDisplayString(n.title),1),e.createVNode(l,{icon:"chevron-down",class:e.normalizeClass([{"rotate-180":t.value===a},"icon text-[1.4rem] text-gray-400 duration-200"])},null,8,["class"])],10,u),t.value===a?(e.openBlock(),e.createElementBlock("div",y,[n.slot?e.renderSlot(r.$slots,n.slot,{key:0}):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(e.toDisplayString(n.content),1)],64))])):e.createCommentVNode("",!0)]))),128)):(e.openBlock(),e.createElementBlock("div",g,"No items to show"))])}}}),v=o=>({install(){if(!o||!o.colors){console.warn("No config provided for the theme settings");return}f(o.colors)}}),f=o=>{const t=document.documentElement;for(const r in o)o[r]&&t.style.setProperty(`--ui-color-${r}`,o[r])};exports.Accordion=b;exports.Button=d;exports.config=v;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),k={class:"w-full divide-y divide-gray-200 rounded border border-slate-200 bg-white"},x=["onClick"],B={class:"title text-gray-600"},C={key:0,class:"p-3 text-gray-500"},E={key:1,class:"px-3 py-6 text-center text-gray-500"},V=e.defineComponent({__name:"Index",props:{items:{type:Array,required:!0}},setup(n){const t=e.ref(null);return(o,a)=>{const r=e.resolveComponent("Icon");return e.openBlock(),e.createElementBlock("div",k,[n.items.length?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(n.items,(l,s)=>(e.openBlock(),e.createElementBlock("div",{key:s},[e.createElementVNode("div",{class:e.normalizeClass([{"bg-primary/5":t.value===s},"hover:bg-primary/5 relative flex cursor-pointer justify-between gap-4 p-3 font-medium duration-100"]),onClick:i=>t.value=t.value===s?null:s},[e.createElementVNode("span",B,e.toDisplayString(l.title),1),e.createVNode(r,{icon:"chevron-down",class:e.normalizeClass([{"rotate-180":t.value===s},"icon text-[1.4rem] text-gray-400 duration-200"])},null,8,["class"])],10,x),t.value===s?(e.openBlock(),e.createElementBlock("div",C,[l.slot?e.renderSlot(o.$slots,l.slot,{key:0}):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(e.toDisplayString(l.content),1)],64))])):e.createCommentVNode("",!0)]))),128)):(e.openBlock(),e.createElementBlock("div",E,"No items to show"))])}}}),$={label:{type:String,default:""},loading:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},variant:{type:String,default:"solid",options:["outlined","text","ghost","solid"]},icon:{type:String,default:""},iconClass:{type:String,default:""},iconPosition:{type:String,default:"right",options:["left","right"]},rounded:{type:Boolean,default:!1}},_=["disabled"],m=e.defineComponent({__name:"Index",props:$,setup(n){const t=n,o=e.computed(()=>{switch(t.variant){case"outlined":return"!border-primary text-primary bg-transparent hover:bg-primary disabled:hover:bg-transparent disabled:hover:text-primary hover:text-white";case"text":return"bg-transparent text-primary hover:bg-gray-200 disabled:hover:bg-transparent disabled:hover:text-primary";case"ghost":return"text-primary bg-gray-100 hover:bg-gray-200 disabled:hover:bg-transparent disabled:hover:text-primary";default:return"bg-primary text-white hover:bg-primary/75 disabled:hover:bg-primary disabled:hover:text-white"}});return(a,r)=>{const l=e.resolveComponent("Icon");return e.openBlock(),e.createElementBlock("button",{type:"button",disabled:t.disabled||t.loading,class:e.normalizeClass([o.value,{"rounded-full":t.rounded},"flex cursor-pointer items-center justify-center gap-2 rounded border border-transparent px-3 py-2 transition duration-200 disabled:cursor-not-allowed disabled:opacity-75 "])},[e.createElementVNode("div",{class:e.normalizeClass([{"justify-center":!t.icon},"flex w-full items-center justify-between gap-2"])},[t.label?(e.openBlock(),e.createElementBlock("span",{key:0,class:e.normalizeClass({"order-2":t.iconPosition==="left"})},e.toDisplayString(t.label),3)):e.createCommentVNode("",!0),t.icon&&!t.loading?(e.openBlock(),e.createBlock(l,{key:1,icon:t.icon,class:e.normalizeClass([t.iconClass,"duration-200"])},null,8,["icon","class"])):e.createCommentVNode("",!0)],2),t.loading?(e.openBlock(),e.createBlock(l,{key:0,icon:"loading"})):e.createCommentVNode("",!0)],10,_)}}}),N={label:{type:String,default:""},labelClass:{type:String,default:""},checkboxClass:{type:String,default:""}},f=(n,t)=>{const o=n.__vccOpts||n;for(const[a,r]of t)o[a]=r;return o},S={},z={xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24"};function L(n,t){return e.openBlock(),e.createElementBlock("svg",z,[...t[0]||(t[0]=[e.createElementVNode("path",{fill:"currentColor",d:"m9.55 15.15l8.475-8.475q.3-.3.7-.3t.7.3t.3.713t-.3.712l-9.175 9.2q-.3.3-.7.3t-.7-.3L4.55 13q-.3-.3-.288-.712t.313-.713t.713-.3t.712.3z"},null,-1)])])}const M=f(S,[["render",L]]),I={},D={xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24"};function T(n,t){return e.openBlock(),e.createElementBlock("svg",D,[...t[0]||(t[0]=[e.createElementVNode("path",{fill:"currentColor",d:"m12 13.4l-4.9 4.9q-.275.275-.7.275t-.7-.275t-.275-.7t.275-.7l4.9-4.9l-4.9-4.9q-.275-.275-.275-.7t.275-.7t.7-.275t.7.275l4.9 4.9l4.9-4.9q.275-.275.7-.275t.7.275t.275.7t-.275.7L13.4 12l4.9 4.9q.275.275.275.7t-.275.7t-.7.275t-.7-.275z"},null,-1)])])}const q=f(I,[["render",T]]),j={},O={xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24"};function A(n,t){return e.openBlock(),e.createElementBlock("svg",O,[...t[0]||(t[0]=[e.createElementVNode("path",{fill:"currentColor",d:"M12,1A11,11,0,1,0,23,12,11,11,0,0,0,12,1Zm0,19a8,8,0,1,1,8-8A8,8,0,0,1,12,20Z",opacity:"0.25"},null,-1),e.createElementVNode("path",{fill:"currentColor",d:"M10.14,1.16a11,11,0,0,0-9,8.92A1.59,1.59,0,0,0,2.46,12,1.52,1.52,0,0,0,4.11,10.7a8,8,0,0,1,6.66-6.61A1.42,1.42,0,0,0,12,2.69h0A1.57,1.57,0,0,0,10.14,1.16Z"},[e.createElementVNode("animateTransform",{type:"rotate",attributeName:"transform",dur:"0.75s",repeatCount:"indefinite",values:"0 12 12;360 12 12"})],-1)])])}const F=f(j,[["render",A]]),P={},X={xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"-5 -8 24 24"};function U(n,t){return e.openBlock(),e.createElementBlock("svg",X,[...t[0]||(t[0]=[e.createElementVNode("path",{fill:"currentColor",d:"m7.071 5.314l4.95-4.95a1 1 0 1 1 1.414 1.414L7.778 7.435a1 1 0 0 1-1.414 0L.707 1.778A1 1 0 1 1 2.121.364z"},null,-1)])])}const Z=f(P,[["render",U]]),R={},K={xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24"};function Q(n,t){return e.openBlock(),e.createElementBlock("svg",K,[...t[0]||(t[0]=[e.createElementVNode("g",{fill:"none"},[e.createElementVNode("path",{fill:"currentColor","fill-opacity":"0.16",d:"M10.575 5.217L3.517 17a1.667 1.667 0 0 0 1.425 2.5h14.116a1.666 1.666 0 0 0 1.425-2.5L13.426 5.217a1.666 1.666 0 0 0-2.85 0"}),e.createElementVNode("path",{stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-miterlimit":"10","stroke-width":"1.5",d:"M12 16h.008M12 10v3m-1.425-7.783L3.517 17a1.667 1.667 0 0 0 1.425 2.5h14.116a1.666 1.666 0 0 0 1.425-2.5L13.426 5.217a1.666 1.666 0 0 0-2.85 0"})],-1)])])}const G=f(R,[["render",Q]]),g={check:M,close:q,loading:F,"chevron-down":Z,alert:G},b=e.defineComponent({__name:"index",props:{icon:{},fallbackIcon:{},class:{},size:{}},setup(n){const t=n,o=e.computed(()=>t.size??24),a=e.computed(()=>{const r=t.icon,l=t.fallbackIcon?t.fallbackIcon:"alert";return g[r]??g[l]});return(r,l)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(a.value),{class:e.normalizeClass(["shrink-0",t.class]),width:o.value,height:o.value},null,8,["class","width","height"]))}}),H=e.defineComponent({__name:"Index",props:e.mergeModels(N,{modelValue:{},modelModifiers:{}}),emits:["update:modelValue"],setup(n){const t=e.useModel(n,"modelValue");return(o,a)=>(e.openBlock(),e.createElementBlock("div",{class:"flex w-fit cursor-pointer gap-2 select-none",onClick:a[0]||(a[0]=r=>t.value=!t.value)},[e.createElementVNode("div",{class:e.normalizeClass([[{"bg-primary":t.value},o.checkboxClass],"border-primary m-0 size-6 rounded-sm border-2 duration-200"])},[t.value?(e.openBlock(),e.createBlock(b,{key:0,icon:"check",class:e.normalizeClass([{"text-white":t.value},"size-5"])},null,8,["class"])):e.createCommentVNode("",!0)],2),e.createElementVNode("div",{class:e.normalizeClass(o.labelClass)},e.toDisplayString(o.label),3)]))}}),J={direction:{type:String,default:"bottom",options:["left","bottom","right"]},title:{type:String,default:""},description:{type:String,default:""},showFooter:{type:Boolean,default:!1},show:{type:Boolean,default:!1}},W={class:"flex justify-between border-b border-gray-200 p-2"},Y={class:"font-semibold"},ee={class:"text-sm text-gray-500"},te={class:"ml-auto"},oe={class:"size-full overflow-auto p-2"},le={key:0,class:"border-t border-gray-200 p-2"},ne=e.defineComponent({__name:"Index",props:e.mergeModels(J,{modelValue:{},modelModifiers:{}}),emits:["update:modelValue"],setup(n){const t=n,o=e.useModel(n,"modelValue"),a=e.computed(()=>{let l="";switch(t.direction){case"left":l=o.value?"fixed top-0 left-0 bottom-0":"fixed top-0 -left-full bottom-0";break;case"bottom":l=o.value?"fixed left-0 bottom-0 right-0":"fixed left-0 right-0 -bottom-full";break;case"right":l=o.value?"fixed top-0 right-0 bottom-0":"fixed top-0 -right-full bottom-0";break;default:alert("Invalid direction")}return l}),r=e.computed(()=>{let l="";switch(t.direction){case"left":l="w-full max-w-[360px]";break;case"bottom":l="w-full h-full max-h-[90dvh]";break;case"right":l="w-full max-w-[360px]";break}return l});return e.watch(o,()=>{o.value?document.body.classList.add("overflow-hidden"):document.body.classList.remove("overflow-hidden")}),(l,s)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createElementVNode("div",{onClick:s[0]||(s[0]=i=>o.value=!o.value)},[e.renderSlot(l.$slots,"default")]),e.createElementVNode("div",{class:e.normalizeClass([[a.value,r.value],"z-50 flex flex-col justify-between bg-white duration-300"])},[e.createElementVNode("div",W,[e.createElementVNode("div",null,[e.createElementVNode("h4",Y,e.toDisplayString(l.title),1),e.createElementVNode("p",ee,e.toDisplayString(l.description),1)]),e.createElementVNode("div",te,[e.createVNode(m,{icon:"close",class:"!p-1",circle:"",variant:"text",onClick:s[1]||(s[1]=i=>o.value=!1)})])]),e.createElementVNode("div",oe,[e.renderSlot(l.$slots,"content")]),l.showFooter?(e.openBlock(),e.createElementBlock("div",le,[e.renderSlot(l.$slots,"footer")])):e.createCommentVNode("",!0)],2),e.createElementVNode("div",{class:e.normalizeClass([o.value?"opacity-100":"pointer-events-none","fixed inset-0 z-[49] bg-black/40 opacity-0 duration-200"]),onClick:s[2]||(s[2]=i=>o.value=!1)},null,2)],64))}}),re={icon:{type:String,default:""},placeholder:{type:String,default:""},helpText:{type:String,default:""},type:{type:String,default:"text",options:["text","password"]}},se=["type"],ae={key:0,class:"ml-1 pt-1 text-xs text-gray-400"},ie=e.defineComponent({__name:"Index",props:e.mergeModels(re,{modelValue:{},modelModifiers:{}}),emits:["update:modelValue"],setup(n){const t=e.useModel(n,"modelValue");return(o,a)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass([{"mb-6":o.helpText},"relative h-[42px]"])},[e.withDirectives(e.createElementVNode("input",{type:o.type,"onUpdate:modelValue":a[0]||(a[0]=r=>t.value=r),class:"hover:border-primary/60 peer outline-primary h-full w-full rounded-md border border-gray-200 px-3 duration-200",placeholder:" "},null,8,se),[[e.vModelDynamic,t.value]]),e.createElementVNode("div",{class:e.normalizeClass([t.value?"-top-2.5 text-sm text-black":"top-[9px]","absolute left-3 bg-white px-[2px] text-black duration-100 peer-placeholder-shown:text-gray-400 peer-focus:-top-2.5 peer-focus:text-sm peer-focus:text-black"])},e.toDisplayString(o.placeholder),3),o.helpText?(e.openBlock(),e.createElementBlock("div",ae,e.toDisplayString(o.helpText),1)):e.createCommentVNode("",!0)],2))}}),ce={show:{type:Boolean,default:!1}},de={key:0,class:"fixed top-0 left-0 z-20 flex h-screen w-screen items-center justify-center backdrop-blur-[2px]"},ue={class:"flex max-w-[600px] flex-col overflow-hidden rounded border border-gray-200 bg-white text-slate-500 shadow-xl shadow-slate-700/10 sm:max-h-[95dvh] sm:w-[90%]",role:"document"},pe={class:"flex items-center gap-4 border-b border-gray-200 px-4 py-2"},me={class:"max-h-[calc(100dvh-100px)] flex-1 overflow-auto px-4 py-2 sm:max-h-[75vh]"},fe={class:"flex items-center justify-end gap-4 border-t border-gray-200 px-4 py-2"},ve=e.defineComponent({__name:"Index",props:ce,emits:["update:show"],setup(n,{emit:t}){const o=n,a=t,r=e.ref(o.show??!1);return e.watch(()=>o.show,l=>{l!==r.value&&(r.value=l)}),e.watch(r,l=>{a("update:show",l),document.body.classList.toggle("overflow-hidden",l)}),(l,s)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createElementVNode("div",{class:"w-full",onClick:s[0]||(s[0]=i=>r.value=!0)},[e.renderSlot(l.$slots,"default")]),r.value?(e.openBlock(),e.createElementBlock("div",de,[e.createElementVNode("div",ue,[e.createElementVNode("div",pe,[s[4]||(s[4]=e.createElementVNode("h3",{class:"text-primary flex-1 text-xl font-medium"},"Modal title",-1)),e.createVNode(m,{icon:"close",class:"!p-1",variant:"ghost",circle:"",onClick:s[1]||(s[1]=i=>r.value=!1)})]),e.createElementVNode("div",me,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(15,i=>e.createElementVNode("p",null,"Lorem ipsum dolor sit amet consectetur adipisicing elit. Nemo autem consequatur aspernatur animi voluptate quasi non, maxime iste, harum ipsa reiciendis laborum ad unde a sequi molestias? Dolore, obcaecati sed?")),64))]),e.createElementVNode("div",fe,[e.createVNode(m,{class:"!px-3 !py-1",variant:"ghost",label:"Close",onClick:s[2]||(s[2]=i=>r.value=!1)}),e.createVNode(m,{class:"!px-3 !py-1",label:"Save",onClick:s[3]||(s[3]=i=>r.value=!1)})])])])):e.createCommentVNode("",!0)],64))}}),ye={position:{type:String,default:"bottom",options:["top","bottom"]},bodyClass:{type:String,default:""},contentClass:{type:String,default:""}},he=e.defineComponent({__name:"Index",props:ye,setup(n){const t=e.ref(!0);return(o,a)=>(e.openBlock(),e.createElementBlock("div",{class:"relative inline-block",onMouseleave:a[1]||(a[1]=r=>t.value=!1)},[e.createElementVNode("div",{class:"relative",onMouseover:a[0]||(a[0]=r=>t.value=!0)},[t.value?(e.openBlock(),e.createElementBlock("svg",{key:0,class:e.normalizeClass([{"top-full":o.position==="bottom","bottom-full rotate-180":o.position==="top"},"absolute left-1/2 w-4 -translate-x-1/2 text-gray-200"]),xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},[...a[2]||(a[2]=[e.createElementVNode("path",{fill:"currentColor",d:"M3 19h18a1.002 1.002 0 0 0 .823-1.569l-9-13c-.373-.539-1.271-.539-1.645 0l-9 13A.999.999 0 0 0 3 19"},null,-1)])],2)):e.createCommentVNode("",!0),e.renderSlot(o.$slots,"default")],32),t.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass([[o.bodyClass,{"bottom-full mb-3":o.position==="top"},{"top-full mt-3":o.position==="bottom"}],"absolute left-1/2 z-10 w-fit -translate-x-1/2"])},[e.createElementVNode("div",{class:e.normalizeClass([o.contentClass,"w-[200px] rounded-md border border-gray-200 bg-white p-3"])},[e.renderSlot(o.$slots,"body")],2)],2)):e.createCommentVNode("",!0)],32))}}),ge={showTooltip:{type:Boolean,default:!1},value:{type:Number,default:0}},be={class:"progress-container relative min-w-full py-4"},we={class:"relative h-2 rounded-full bg-gray-200"},ke=e.defineComponent({__name:"Index",props:ge,emits:["update:value"],setup(n,{emit:t}){const o=n,a=t,r=e.ref(o.value),l=e.ref(!1),s=e.ref(!1),i=d=>{if(!l.value)return;const p=document.querySelector(".progress-container");if(!p)return;const v=p.getBoundingClientRect();let y;d instanceof TouchEvent?y=d.touches[0]?.clientX??0:y=d.clientX;const w=y-v.left,h=Math.max(0,Math.min(100,w/v.width*100));r.value=h,a("update:value",h)},c=d=>{l.value=!0,s.value=!0,i(d)},u=()=>{l.value=!1,s.value=!1};return e.onMounted(()=>{window.addEventListener("mousemove",i),window.addEventListener("mouseup",u),window.addEventListener("mouseleave",u),window.addEventListener("touchmove",i,{passive:!1}),window.addEventListener("touchend",u),window.addEventListener("touchcancel",u)}),e.onUnmounted(()=>{window.removeEventListener("mousemove",i),window.removeEventListener("mouseup",u),window.removeEventListener("mouseleave",u),window.removeEventListener("touchmove",i),window.removeEventListener("touchend",u),window.removeEventListener("touchcancel",u)}),(d,p)=>(e.openBlock(),e.createElementBlock("div",be,[e.createElementVNode("div",we,[e.createElementVNode("div",{class:"bg-primary absolute h-2 rounded-full",style:e.normalizeStyle({width:r.value+"%"})},null,4),e.createElementVNode("div",{class:"absolute top-1/2 -ml-2 flex h-4 w-4 -translate-y-1/2 cursor-pointer items-center justify-center rounded-full border border-gray-300 bg-white shadow",style:e.normalizeStyle({left:r.value+"%"}),unselectable:"on",onselectstart:"return false;",onMousedown:c,onTouchstart:c},null,36),s.value&&d.showTooltip?(e.openBlock(),e.createElementBlock("div",{key:0,class:"absolute -top-9 mx-auto w-10 -translate-x-1/2 rounded bg-gray-800 px-2 py-1 text-xs text-white",style:e.normalizeStyle({left:r.value+"%"})},[e.createTextVNode(e.toDisplayString(Math.round(r.value))+"% ",1),p[0]||(p[0]=e.createElementVNode("span",{class:"absolute -bottom-1 left-1/2 -ml-1 h-2 w-2 rotate-45 bg-gray-800"},null,-1))],4)):e.createCommentVNode("",!0)])]))}}),xe={modelValue:{type:String,default:""},options:{type:Array,required:!0},variant:{type:String,default:"solid",options:["outlined","text","ghost","solid"]},showFilter:{type:Boolean,default:!1},isOpen:{type:Boolean,default:!1}},Be={class:"relative"},Ce={key:0,class:"absolute top-full z-10 mt-1 flex w-full list-none flex-col rounded border border-gray-200 bg-white shadow-md shadow-slate-500/10"},Ee={key:0,class:"border-b border-gray-200 p-2"},Ve=["onClick"],$e=e.defineComponent({__name:"Index",props:xe,emits:["update:modelValue","update:isOpen"],setup(n,{emit:t}){const o=n,a=t,r=e.ref(o.modelValue),l=c=>{r.value=c,a("update:modelValue",c),a("update:isOpen",!1)},s=e.ref(""),i=e.computed(()=>s.value?o.options.filter(c=>c.toLowerCase().includes(s.value.toLowerCase())):o.options);return(c,u)=>(e.openBlock(),e.createElementBlock("div",Be,[e.createVNode(m,{"icon-class":c.isOpen?"rotate-180":"",icon:"chevron-down",class:"w-full",variant:c.variant,label:r.value||"Select",onClick:u[0]||(u[0]=d=>c.isOpen=!c.isOpen)},null,8,["icon-class","variant","label"]),c.isOpen?(e.openBlock(),e.createElementBlock("ul",Ce,[c.showFilter?(e.openBlock(),e.createElementBlock("li",Ee,[e.withDirectives(e.createElementVNode("input",{type:"text","onUpdate:modelValue":u[1]||(u[1]=d=>s.value=d),class:"focus:border-primary w-full rounded-sm border border-gray-200 px-2 py-1 focus:outline-none",placeholder:"Search"},null,512),[[e.vModelText,s.value]])])):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.value,(d,p)=>(e.openBlock(),e.createElementBlock("li",{key:p,class:e.normalizeClass([d===r.value&&"bg-primary/10","hover:bg-primary/5 cursor-pointer px-4 py-2"]),onClick:v=>l(d)},e.toDisplayString(d),11,Ve))),128))])):e.createCommentVNode("",!0)]))}}),_e={direction:{type:String,default:"horizontal",options:["horizontal","vertical"]},color:{type:String,default:"#16476A"},label:{type:String,default:""},icon:{type:String,default:""}},Ne={key:1,class:"absolute inset-0 m-auto flex h-fit w-fit shrink-0 items-center justify-center bg-white p-1"},Se=e.defineComponent({__name:"Index",props:_e,setup(n){return(t,o)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass([t.direction==="horizontal"?"h-[1px] w-full":t.direction==="vertical"?"h-full w-[1px]":"","relative bg-gray-200"]),style:e.normalizeStyle({backgroundColor:t.color})},[t.direction==="horizontal"&&t.label&&!t.icon?(e.openBlock(),e.createElementBlock("span",{key:0,class:"absolute inset-0 m-auto flex w-fit items-center justify-center rounded-sm border border-gray-100 bg-white px-1 py-2 text-sm",style:e.normalizeStyle({color:t.color,borderColor:t.color})},"Test label",4)):e.createCommentVNode("",!0),t.direction==="horizontal"&&!t.label&&t.icon?(e.openBlock(),e.createElementBlock("span",Ne,[e.createVNode(b,{icon:t.icon,class:"size-6",style:e.normalizeStyle({color:t.color})},null,8,["icon","style"])])):e.createCommentVNode("",!0)],6))}}),ze={content:{type:String,default:""},position:{type:String,default:"bottom",options:["top","bottom","left","right"]},bodyClass:{type:String,default:""}},Le={key:0},Me=e.defineComponent({__name:"Index",props:ze,setup(n){const t=e.ref(!1);return(o,a)=>(e.openBlock(),e.createElementBlock("div",{class:"relative inline-block",onMouseenter:a[0]||(a[0]=r=>t.value=!0),onMouseleave:a[1]||(a[1]=r=>t.value=!1)},[e.renderSlot(o.$slots,"default"),t.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["absolute z-10 w-max rounded-md bg-white px-3 py-2 text-sm text-primary border shadow-xl transition-opacity duration-200",o.position==="top"&&"bottom-full left-1/2 mb-2 -translate-x-1/2",o.position==="bottom"&&"top-full left-1/2 mt-2 -translate-x-1/2",o.position==="left"&&"top-1/2 right-full mr-2 -translate-y-1/2",o.position==="right"&&"top-1/2 left-full ml-2 -translate-y-1/2",o.bodyClass])},[o.content?e.renderSlot(o.$slots,"body",{key:1}):(e.openBlock(),e.createElementBlock("span",Le,e.toDisplayString(o.content),1))],2)):e.createCommentVNode("",!0)],32))}}),Ie=n=>({install(){if(!n||!n.colors){console.warn("No config provided for the theme settings");return}De(n.colors)}}),De=n=>{const t=document.documentElement;for(const o in n)n[o]&&t.style.setProperty(`--ui-color-${o}`,n[o])};exports.Accordion=V;exports.Button=m;exports.Checkbox=H;exports.Drawer=ne;exports.Input=ie;exports.Modal=ve;exports.Popover=he;exports.RangeSlider=ke;exports.Select=$e;exports.Separator=Se;exports.Tooltip=Me;exports.config=Ie;
2
2
  //# sourceMappingURL=index.cjs.map
package/index.cjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../../src/components/Button/props.ts","../../src/components/Button/Index.vue","../../src/components/Accordion/Index.vue","../../src/utils/config.ts"],"sourcesContent":["import type { PropType } from \"vue\";\n\nexport const props = {\n label: { type: String, default: \"\" },\n loading: { type: Boolean, default: false },\n disabled: { type: Boolean, default: false },\n variant: {\n type: String as PropType<\"outlined\" | \"text\" | \"ghost\" | \"solid\">,\n default: \"solid\",\n options: [\"outlined\", \"text\", \"ghost\", \"solid\"],\n },\n icon: { type: String, default: \"\" },\n iconClass: { type: String, default: \"\" },\n iconPosition: {\n type: String as PropType<\"left\" | \"right\">,\n default: \"right\",\n options: [\"left\", \"right\"],\n },\n rounded: { type: Boolean, default: false },\n} as const;\n","<script setup lang=\"ts\">\nimport { computed } from \"vue\";\nimport { props as buttonProps } from \"./props\";\n\nconst props = defineProps(buttonProps);\n\nconst classes = computed(() => {\n switch (props.variant) {\n case \"outlined\":\n return \"!border-primary text-primary bg-transparent hover:bg-primary disabled:hover:bg-transparent disabled:hover:text-primary hover:text-white\";\n case \"text\":\n return \"bg-transparent text-primary hover:bg-gray-200 disabled:hover:bg-transparent disabled:hover:text-primary\";\n case \"ghost\":\n return \"text-primary bg-gray-100 hover:bg-gray-200 disabled:hover:bg-transparent disabled:hover:text-primary\";\n default:\n return \"bg-primary text-white hover:bg-primary/75 disabled:hover:bg-primary disabled:hover:text-white\"; // solid\n }\n});\n</script>\n\n<template>\n <!-- prettier-ignore -->\n <button \n type=\"button\" \n :disabled=\"props.disabled || props.loading\" \n :class=\"[\n classes, { 'rounded-full': props.rounded }, \n 'flex cursor-pointer items-center justify-center gap-2 rounded border border-transparent px-3 py-2 transition duration-200 disabled:cursor-not-allowed disabled:opacity-75 '\n ]\"\n >\n <div :class=\"{ 'justify-center': !props.icon }\" class=\"flex w-full items-center justify-between gap-2\">\n <span v-if=\"props.label\" :class=\"{ 'order-2': props.iconPosition === 'left' }\"> {{ props.label }} </span>\n <Icon v-if=\"props.icon && !props.loading\" :icon=\"props.icon\" :class=\"props.iconClass\" />\n </div>\n\n <Icon v-if=\"props.loading\" icon=\"loading\" />\n </button>\n</template>\n","<script setup lang=\"ts\">\nimport { ref } from \"vue\";\n\n// Props definition\n// `items` is an array of objects where each object represents an accordion item.\n// Each item has a `title` (string), `content` (string), and an optional `slot` (string) for custom slot rendering.\ndefineProps({\n items: { type: Array as () => { title: string; content: string; slot?: string }[], required: true },\n});\n\n// This ref holds the index of the currently active (opened) accordion item.\n// If `null`, no accordion item is open.\nconst activeIndex = ref<Number | null>(null);\n</script>\n\n<template>\n <!-- Accordion Container -->\n <div class=\"w-full divide-y divide-gray-200 rounded border border-slate-200 bg-white\">\n <!-- Iterate through items array -->\n <div v-for=\"(item, index) in items\" :key=\"index\" v-if=\"items.length\">\n <!-- Accordion Header -->\n <!-- Clicking toggles activeIndex between `index` and `null` (for collapse) -->\n <div :class=\"{ 'bg-primary/5': activeIndex === index }\" class=\"hover:bg-primary/5 relative flex cursor-pointer justify-between gap-4 p-3 font-medium duration-100\" @click=\"activeIndex = activeIndex === index ? null : index\">\n <!-- Accordion Title -->\n <span class=\"title text-gray-600\">{{ item.title }}</span>\n <!-- Chevron Icon -->\n <Icon icon=\"chevron-down\" :class=\"{ 'rotate-180': activeIndex === index }\" class=\"icon text-[1.4rem] text-gray-400 duration-200\" />\n </div>\n\n <!-- Accordion Body -->\n <div v-if=\"activeIndex === index\" class=\"p-3 text-gray-500\">\n <!-- If slot name is provided, render slot content -->\n <template v-if=\"item.slot\">\n <slot :name=\"item.slot\" />\n </template>\n <!-- Otherwise, render static content -->\n <template v-else>\n {{ item.content }}\n </template>\n </div>\n </div>\n\n <!-- Fallback message if no items provided -->\n <div class=\"px-3 py-6 text-center text-gray-500\" v-else>No items to show</div>\n </div>\n</template>\n","import type { Colors, config as Config } from \"@/types/config\";\n\n// create theme settings\nexport const config = (config: Config) => {\n return {\n install() {\n if (!config || !config.colors) {\n console.warn(\"No config provided for the theme settings\");\n return;\n }\n\n // apply colors\n applyCSSVars(config.colors);\n },\n };\n};\n\n// apply the colors to the root element\nconst applyCSSVars = (colors: Colors) => {\n const root = document.documentElement;\n\n // apply the colors to the root element\n for (const color in colors) {\n if (colors[color as keyof Colors]) {\n root.style.setProperty(`--ui-color-${color}`, colors[color as keyof Colors]);\n }\n }\n};\n"],"names":["props","__props","classes","computed","_createElementBlock","_normalizeClass","_createElementVNode","_toDisplayString","_createBlock","_component_Icon","activeIndex","ref","_openBlock","_hoisted_1","_Fragment","_renderList","item","index","_hoisted_3","_createVNode","_hoisted_4","_renderSlot","_ctx","_createTextVNode","_hoisted_5","config","applyCSSVars","colors","root","color"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","sources":["../../src/components/accordion/Index.vue","../../src/components/button/props.ts","../../src/components/button/Index.vue","../../src/components/checkbox/props.ts","../../src/icons/check.vue","../../src/icons/close.vue","../../src/icons/loading.vue","../../src/icons/chevron-down.vue","../../src/icons/alert.vue","../../src/components/icon/index.ts","../../src/components/icon/index.vue","../../src/components/checkbox/Index.vue","../../src/components/drawer/props.ts","../../src/components/drawer/Index.vue","../../src/components/input/props.ts","../../src/components/input/Index.vue","../../src/components/modal/props.ts","../../src/components/modal/Index.vue","../../src/components/popover/props.ts","../../src/components/popover/Index.vue","../../src/components/range-slider/props.ts","../../src/components/range-slider/Index.vue","../../src/components/select/props.ts","../../src/components/select/Index.vue","../../src/components/separator/props.ts","../../src/components/separator/Index.vue","../../src/components/tooltip/props.ts","../../src/components/tooltip/Index.vue","../../src/utils/config.ts"],"sourcesContent":["<script setup lang=\"ts\">\nimport { ref } from \"vue\";\n\n// Props definition\n// `items` is an array of objects where each object represents an accordion item.\n// Each item has a `title` (string), `content` (string), and an optional `slot` (string) for custom slot rendering.\ndefineProps({\n items: { type: Array as () => { title: string; content: string; slot?: string }[], required: true },\n});\n\n// This ref holds the index of the currently active (opened) accordion item.\n// If `null`, no accordion item is open.\nconst activeIndex = ref<Number | null>(null);\n</script>\n\n<template>\n <!-- Accordion Container -->\n <div class=\"w-full divide-y divide-gray-200 rounded border border-slate-200 bg-white\">\n <!-- Iterate through items array -->\n <div v-for=\"(item, index) in items\" :key=\"index\" v-if=\"items.length\">\n <!-- Accordion Header -->\n <!-- Clicking toggles activeIndex between `index` and `null` (for collapse) -->\n <div :class=\"{ 'bg-primary/5': activeIndex === index }\" class=\"hover:bg-primary/5 relative flex cursor-pointer justify-between gap-4 p-3 font-medium duration-100\" @click=\"activeIndex = activeIndex === index ? null : index\">\n <!-- Accordion Title -->\n <span class=\"title text-gray-600\">{{ item.title }}</span>\n <!-- Chevron Icon -->\n <Icon icon=\"chevron-down\" :class=\"{ 'rotate-180': activeIndex === index }\" class=\"icon text-[1.4rem] text-gray-400 duration-200\" />\n </div>\n\n <!-- Accordion Body -->\n <div v-if=\"activeIndex === index\" class=\"p-3 text-gray-500\">\n <!-- If slot name is provided, render slot content -->\n <template v-if=\"item.slot\">\n <slot :name=\"item.slot\" />\n </template>\n <!-- Otherwise, render static content -->\n <template v-else>\n {{ item.content }}\n </template>\n </div>\n </div>\n\n <!-- Fallback message if no items provided -->\n <div class=\"px-3 py-6 text-center text-gray-500\" v-else>No items to show</div>\n </div>\n</template>\n","import type { PropType } from \"vue\";\n\nexport const props = {\n label: { type: String, default: \"\" },\n loading: { type: Boolean, default: false },\n disabled: { type: Boolean, default: false },\n variant: {\n type: String as PropType<\"outlined\" | \"text\" | \"ghost\" | \"solid\">,\n default: \"solid\",\n options: [\"outlined\", \"text\", \"ghost\", \"solid\"],\n },\n icon: { type: String, default: \"\" },\n iconClass: { type: String, default: \"\" },\n iconPosition: {\n type: String as PropType<\"left\" | \"right\">,\n default: \"right\",\n options: [\"left\", \"right\"],\n },\n rounded: { type: Boolean, default: false },\n} as const;\n","<script setup lang=\"ts\">\nimport { computed } from \"vue\";\nimport { props as buttonProps } from \"./props\";\n\nconst props = defineProps(buttonProps);\n\nconst classes = computed(() => {\n switch (props.variant) {\n case \"outlined\":\n return \"!border-primary text-primary bg-transparent hover:bg-primary disabled:hover:bg-transparent disabled:hover:text-primary hover:text-white\";\n case \"text\":\n return \"bg-transparent text-primary hover:bg-gray-200 disabled:hover:bg-transparent disabled:hover:text-primary\";\n case \"ghost\":\n return \"text-primary bg-gray-100 hover:bg-gray-200 disabled:hover:bg-transparent disabled:hover:text-primary\";\n default:\n return \"bg-primary text-white hover:bg-primary/75 disabled:hover:bg-primary disabled:hover:text-white\"; // solid\n }\n});\n</script>\n\n<template>\n <!-- prettier-ignore -->\n <button \n type=\"button\" \n :disabled=\"props.disabled || props.loading\" \n :class=\"[\n classes, { 'rounded-full': props.rounded }, \n 'flex cursor-pointer items-center justify-center gap-2 rounded border border-transparent px-3 py-2 transition duration-200 disabled:cursor-not-allowed disabled:opacity-75 '\n ]\"\n >\n <div :class=\"{ 'justify-center': !props.icon }\" class=\"flex w-full items-center justify-between gap-2\">\n <span v-if=\"props.label\" :class=\"{ 'order-2': props.iconPosition === 'left' }\"> {{ props.label }} </span>\n <Icon v-if=\"props.icon && !props.loading\" :icon=\"props.icon\" :class=\"props.iconClass\" class=\"duration-200\" />\n </div>\n\n <Icon v-if=\"props.loading\" icon=\"loading\" />\n </button>\n</template>\n","export const props = {\n label: { type: String, default: \"\" },\n labelClass: { type: String, default: \"\" },\n checkboxClass: { type: String, default: \"\" },\n} as const;\n","<template>\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\">\n <path fill=\"currentColor\" d=\"m9.55 15.15l8.475-8.475q.3-.3.7-.3t.7.3t.3.713t-.3.712l-9.175 9.2q-.3.3-.7.3t-.7-.3L4.55 13q-.3-.3-.288-.712t.313-.713t.713-.3t.712.3z\" />\n </svg>\n</template>\n","<template>\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\">\n <path fill=\"currentColor\" d=\"m12 13.4l-4.9 4.9q-.275.275-.7.275t-.7-.275t-.275-.7t.275-.7l4.9-4.9l-4.9-4.9q-.275-.275-.275-.7t.275-.7t.7-.275t.7.275l4.9 4.9l4.9-4.9q.275-.275.7-.275t.7.275t.275.7t-.275.7L13.4 12l4.9 4.9q.275.275.275.7t-.275.7t-.7.275t-.7-.275z\" />\n </svg>\n</template>\n","<template>\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\">\n <path fill=\"currentColor\" d=\"M12,1A11,11,0,1,0,23,12,11,11,0,0,0,12,1Zm0,19a8,8,0,1,1,8-8A8,8,0,0,1,12,20Z\" opacity=\"0.25\" />\n <path fill=\"currentColor\" d=\"M10.14,1.16a11,11,0,0,0-9,8.92A1.59,1.59,0,0,0,2.46,12,1.52,1.52,0,0,0,4.11,10.7a8,8,0,0,1,6.66-6.61A1.42,1.42,0,0,0,12,2.69h0A1.57,1.57,0,0,0,10.14,1.16Z\"><animateTransform type=\"rotate\" attributeName=\"transform\" dur=\"0.75s\" repeatCount=\"indefinite\" values=\"0 12 12;360 12 12\" /></path>\n </svg>\n</template>\n","<template>\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"-5 -8 24 24\">\n <path fill=\"currentColor\" d=\"m7.071 5.314l4.95-4.95a1 1 0 1 1 1.414 1.414L7.778 7.435a1 1 0 0 1-1.414 0L.707 1.778A1 1 0 1 1 2.121.364z\" />\n </svg>\n</template>\n","<template>\n\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\">\n\t\t<g fill=\"none\">\n\t\t\t<path fill=\"currentColor\" fill-opacity=\"0.16\" d=\"M10.575 5.217L3.517 17a1.667 1.667 0 0 0 1.425 2.5h14.116a1.666 1.666 0 0 0 1.425-2.5L13.426 5.217a1.666 1.666 0 0 0-2.85 0\" />\n\t\t\t<path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-miterlimit=\"10\" stroke-width=\"1.5\" d=\"M12 16h.008M12 10v3m-1.425-7.783L3.517 17a1.667 1.667 0 0 0 1.425 2.5h14.116a1.666 1.666 0 0 0 1.425-2.5L13.426 5.217a1.666 1.666 0 0 0-2.85 0\" />\n\t\t</g>\n\t</svg>\n</template>\n","import Check from \"../../icons/check.vue\";\nimport Close from \"../../icons/close.vue\";\nimport Loading from \"../../icons/loading.vue\";\nimport ChevronDown from \"../../icons/chevron-down.vue\";\nimport Alert from \"../../icons/alert.vue\";\n\n// Map of all icons\nexport const icons = {\n check: Check,\n close: Close,\n loading: Loading,\n \"chevron-down\": ChevronDown,\n alert: Alert,\n} as const;\n\n// icons names for autocomplete\nexport type IconNames = keyof typeof icons;\nexport const IconsList = Object.keys(icons) as IconNames[];\n","<script setup lang=\"ts\">\nimport { computed } from \"vue\";\nimport { icons, type IconNames } from \"./index.ts\";\n\n// Props\nconst props = defineProps<{\n icon: IconNames | (string & {}); // autocomplete for known + allow any string\n fallbackIcon?: IconNames | (string & {}); // same for fallback\n class?: string;\n size?: number | string;\n}>();\n\nconst size = computed(() => props.size ?? 24);\n\n// component to render\nconst IconComponent = computed(() => {\n const key = props.icon as IconNames;\n const fallbackKey = props.fallbackIcon ? props.fallbackIcon : \"alert\";\n\n return icons[key] ?? icons[fallbackKey as IconNames];\n});\n</script>\n\n<template>\n <component :is=\"IconComponent\" :class=\"['shrink-0', props.class]\" :width=\"size\" :height=\"size\" />\n</template>\n","<script setup lang=\"ts\">\nimport { props } from \"./props\";\nimport Icon from \"../icon/index.vue\";\n\ndefineProps(props);\n\nconst modelValue = defineModel();\n</script>\n\n<template>\n <div class=\"flex w-fit cursor-pointer gap-2 select-none\" @click=\"modelValue = !modelValue\">\n <div :class=\"[{ 'bg-primary': modelValue }, checkboxClass]\" class=\"border-primary m-0 size-6 rounded-sm border-2 duration-200\">\n <Icon v-if=\"modelValue\" icon=\"check\" :class=\"{ 'text-white': modelValue }\" class=\"size-5\" />\n </div>\n <div :class=\"labelClass\">{{ label }}</div>\n </div>\n</template>\n","export const props = {\n direction: { type: String as () => \"left\" | \"bottom\" | \"right\", default: \"bottom\", options: [\"left\", \"bottom\", \"right\"] },\n title: { type: String, default: \"\" },\n description: { type: String, default: \"\" },\n showFooter: { type: Boolean, default: false },\n show: { type: Boolean, default: false },\n} as const;\n","<template>\n <div @click=\"show = !show\">\n <slot />\n </div>\n\n <!-- drawer -->\n <div :class=\"[drawerdirections, defaultClasses]\" class=\"z-50 flex flex-col justify-between bg-white duration-300\">\n <div class=\"flex justify-between border-b border-gray-200 p-2\">\n <div>\n <h4 class=\"font-semibold\">{{ title }}</h4>\n <p class=\"text-sm text-gray-500\">{{ description }}</p>\n </div>\n <div class=\"ml-auto\">\n <Button icon=\"close\" class=\"!p-1\" circle variant=\"text\" @click=\"show = false\" />\n </div>\n </div>\n <div class=\"size-full overflow-auto p-2\">\n <slot name=\"content\" />\n </div>\n <!-- footer -->\n <div v-if=\"showFooter\" class=\"border-t border-gray-200 p-2\">\n <slot name=\"footer\" />\n </div>\n </div>\n <div :class=\"show ? 'opacity-100' : 'pointer-events-none'\" class=\"fixed inset-0 z-[49] bg-black/40 opacity-0 duration-200\" @click=\"show = false\"></div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, watch } from \"vue\";\nimport Button from \"../button/Index.vue\";\nimport { props as drawerProps } from \"./props\";\n\nconst props = defineProps(drawerProps);\n\nconst show = defineModel();\n\nconst drawerdirections = computed(() => {\n let currClasses = \"\";\n\n switch (props.direction) {\n case \"left\":\n currClasses = show.value ? \"fixed top-0 left-0 bottom-0\" : \"fixed top-0 -left-full bottom-0\";\n break;\n case \"bottom\":\n currClasses = show.value ? \"fixed left-0 bottom-0 right-0\" : \"fixed left-0 right-0 -bottom-full\";\n break;\n case \"right\":\n currClasses = show.value ? \"fixed top-0 right-0 bottom-0\" : \"fixed top-0 -right-full bottom-0\";\n break;\n default:\n alert(\"Invalid direction\");\n }\n\n return currClasses;\n});\n\nconst defaultClasses = computed(() => {\n let classes = \"\";\n\n switch (props.direction) {\n case \"left\":\n classes = \"w-full max-w-[360px]\";\n break;\n case \"bottom\":\n classes = \"w-full h-full max-h-[90dvh]\";\n break;\n case \"right\":\n classes = \"w-full max-w-[360px]\";\n break;\n default:\n break;\n }\n\n return classes;\n});\n\nwatch(show, () => {\n if (show.value) {\n document.body.classList.add(\"overflow-hidden\");\n } else {\n document.body.classList.remove(\"overflow-hidden\");\n }\n});\n</script>\n","export const props = {\n icon: { type: String, default: \"\" },\n placeholder: { type: String, default: \"\" },\n helpText: { type: String, default: \"\" },\n type: { type: String, default: \"text\", options: [\"text\", \"password\"] },\n} as const;\n","<script setup lang=\"ts\">\nimport { props as inputProps } from \"./props\";\n\nconst props = defineProps(inputProps);\n\nconst model = defineModel();\n</script>\n<template>\n <div :class=\"{ 'mb-6': helpText }\" class=\"relative h-[42px]\">\n <input :type=\"type\" v-model=\"model\" class=\"hover:border-primary/60 peer outline-primary h-full w-full rounded-md border border-gray-200 px-3 duration-200\" placeholder=\" \" />\n <div :class=\"model ? '-top-2.5 text-sm text-black' : 'top-[9px]'\" class=\"absolute left-3 bg-white px-[2px] text-black duration-100 peer-placeholder-shown:text-gray-400 peer-focus:-top-2.5 peer-focus:text-sm peer-focus:text-black\">{{ placeholder }}</div>\n <div v-if=\"helpText\" class=\"ml-1 pt-1 text-xs text-gray-400\">{{ helpText }}</div>\n </div>\n</template>\n","export const props = {\n show: { type: Boolean, default: false },\n} as const;\n","<script setup lang=\"ts\">\nimport { ref, watch } from \"vue\";\nimport Button from \"../button/Index.vue\";\nimport { props as modalProps } from \"./props\";\n\nconst props = defineProps(modalProps);\nconst emit = defineEmits([\"update:show\"]);\n\nconst show = ref(props.show ?? false);\n\n// Keep `show` in sync with external prop\nwatch(\n () => props.show,\n (val) => {\n if (val !== show.value) show.value = val;\n },\n);\n\n// Emit change when internal state changes\nwatch(show, (val) => {\n emit(\"update:show\", val);\n document.body.classList.toggle(\"overflow-hidden\", val);\n});\n</script>\n\n<template>\n <div class=\"w-full\" @click=\"show = true\">\n <slot />\n </div>\n\n <!-- Modal backdrop -->\n <div v-if=\"show\" class=\"fixed top-0 left-0 z-20 flex h-screen w-screen items-center justify-center backdrop-blur-[2px]\">\n <!-- Modal -->\n <div class=\"flex max-w-[600px] flex-col overflow-hidden rounded border border-gray-200 bg-white text-slate-500 shadow-xl shadow-slate-700/10 sm:max-h-[95dvh] sm:w-[90%]\" role=\"document\">\n <!-- Modal header -->\n <div class=\"flex items-center gap-4 border-b border-gray-200 px-4 py-2\">\n <h3 class=\"text-primary flex-1 text-xl font-medium\">Modal title</h3>\n <Button icon=\"close\" class=\"!p-1\" variant=\"ghost\" circle @click=\"show = false\" />\n </div>\n\n <!-- Modal body -->\n <div class=\"max-h-[calc(100dvh-100px)] flex-1 overflow-auto px-4 py-2 sm:max-h-[75vh]\">\n <p v-for=\"_ in 15\">Lorem ipsum dolor sit amet consectetur adipisicing elit. Nemo autem consequatur aspernatur animi voluptate quasi non, maxime iste, harum ipsa reiciendis laborum ad unde a sequi molestias? Dolore, obcaecati sed?</p>\n </div>\n\n <!-- Modal footer -->\n <div class=\"flex items-center justify-end gap-4 border-t border-gray-200 px-4 py-2\">\n <Button class=\"!px-3 !py-1\" variant=\"ghost\" label=\"Close\" @click=\"show = false\" />\n <Button class=\"!px-3 !py-1\" label=\"Save\" @click=\"show = false\" />\n </div>\n </div>\n </div>\n</template>\n","export const props = {\n position: { type: String as () => \"top\" | \"bottom\", default: \"bottom\", options: [\"top\", \"bottom\"] },\n bodyClass: { type: String, default: \"\" },\n contentClass: { type: String, default: \"\" },\n} as const;\n","<script setup lang=\"ts\">\nimport { ref } from \"vue\";\nimport { props } from \"./props\";\n\nconst isOpen = ref(true);\n\ndefineProps(props);\n</script>\n\n<template>\n <div class=\"relative inline-block\" @mouseleave=\"isOpen = false\">\n <!-- component to render the popover on -->\n <div class=\"relative\" @mouseover=\"isOpen = true\">\n <!-- arrow icon -->\n <svg v-if=\"isOpen\" :class=\"{ 'top-full': position === 'bottom', 'bottom-full rotate-180': position === 'top' }\" class=\"absolute left-1/2 w-4 -translate-x-1/2 text-gray-200\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n <path fill=\"currentColor\" d=\"M3 19h18a1.002 1.002 0 0 0 .823-1.569l-9-13c-.373-.539-1.271-.539-1.645 0l-9 13A.999.999 0 0 0 3 19\" />\n </svg>\n\n <!-- popover trigger -->\n <slot />\n </div>\n\n <!-- popover content -->\n <div v-if=\"isOpen\" :class=\"[bodyClass, { 'bottom-full mb-3': position === 'top' }, { 'top-full mt-3': position === 'bottom' }]\" class=\"absolute left-1/2 z-10 w-fit -translate-x-1/2\">\n <div :class=\"contentClass\" class=\"w-[200px] rounded-md border border-gray-200 bg-white p-3\">\n <slot name=\"body\" />\n </div>\n </div>\n </div>\n</template>\n","export const props = {\n showTooltip: { type: Boolean, default: false },\n value: { type: Number, default: 0 },\n} as const;\n","<script setup lang=\"ts\">\nimport { onMounted, onUnmounted, ref } from \"vue\";\nimport { props as rangeSliderProps } from \"./props.ts\";\n\nconst props = defineProps(rangeSliderProps);\n\nconst emit = defineEmits([\"update:value\"]);\n\nconst progress = ref<number>(props.value);\nconst isDragging = ref<boolean>(false);\nconst tooltipVisible = ref<boolean>(false);\n\nconst updateProgress = (event: MouseEvent | TouchEvent) => {\n if (!isDragging.value) return;\n\n const progressBar = document.querySelector(\".progress-container\") as HTMLElement;\n if (!progressBar) return;\n\n const rect = progressBar.getBoundingClientRect();\n let clientX: number;\n\n // Check if the event is a touch event or mouse event\n if (event instanceof TouchEvent) {\n clientX = event.touches[0]?.clientX ?? 0;\n } else {\n clientX = event.clientX;\n }\n\n const offsetX = clientX - rect.left;\n const newProgress = Math.max(0, Math.min(100, (offsetX / rect.width) * 100));\n\n progress.value = newProgress;\n emit(\"update:value\", newProgress);\n};\n\nconst startDrag = (event: MouseEvent | TouchEvent) => {\n isDragging.value = true;\n tooltipVisible.value = true;\n updateProgress(event);\n};\n\nconst stopDragging = () => {\n isDragging.value = false;\n tooltipVisible.value = false;\n};\n\n// Attach global event listeners\nonMounted(() => {\n // Mouse events\n window.addEventListener(\"mousemove\", updateProgress);\n window.addEventListener(\"mouseup\", stopDragging);\n window.addEventListener(\"mouseleave\", stopDragging);\n\n // Touch events\n window.addEventListener(\"touchmove\", updateProgress, { passive: false });\n window.addEventListener(\"touchend\", stopDragging);\n window.addEventListener(\"touchcancel\", stopDragging);\n});\n\nonUnmounted(() => {\n // Remove Mouse events\n window.removeEventListener(\"mousemove\", updateProgress);\n window.removeEventListener(\"mouseup\", stopDragging);\n window.removeEventListener(\"mouseleave\", stopDragging);\n\n // Remove Touch events\n window.removeEventListener(\"touchmove\", updateProgress);\n window.removeEventListener(\"touchend\", stopDragging);\n window.removeEventListener(\"touchcancel\", stopDragging);\n});\n</script>\n\n<template>\n <!-- Progress Bar Container -->\n <div class=\"progress-container relative min-w-full py-4\">\n <!-- Progress Bar -->\n <div class=\"relative h-2 rounded-full bg-gray-200\">\n <!-- Filled Progress -->\n <div class=\"bg-primary absolute h-2 rounded-full\" :style=\"{ width: progress + '%' }\"></div>\n\n <!-- Draggable Knob -->\n <div class=\"absolute top-1/2 -ml-2 flex h-4 w-4 -translate-y-1/2 cursor-pointer items-center justify-center rounded-full border border-gray-300 bg-white shadow\" :style=\"{ left: progress + '%' }\" unselectable=\"on\" onselectstart=\"return false;\" @mousedown=\"startDrag\" @touchstart=\"startDrag\"></div>\n\n <!-- Tooltip -->\n <div v-if=\"tooltipVisible && showTooltip\" class=\"absolute -top-9 mx-auto w-10 -translate-x-1/2 rounded bg-gray-800 px-2 py-1 text-xs text-white\" :style=\"{ left: progress + '%' }\">\n {{ Math.round(progress) }}%\n <span class=\"absolute -bottom-1 left-1/2 -ml-1 h-2 w-2 rotate-45 bg-gray-800\"></span>\n </div>\n </div>\n </div>\n</template>\n","export const props = {\n modelValue: { type: String, default: \"\" },\n options: { type: Array as () => string[], required: true },\n variant: { type: String as () => \"outlined\" | \"text\" | \"ghost\" | \"solid\", default: \"solid\", options: [\"outlined\", \"text\", \"ghost\", \"solid\"] },\n showFilter: { type: Boolean, default: false },\n isOpen: { type: Boolean, default: false },\n} as const;\n","<script setup lang=\"ts\">\nimport { computed, ref } from \"vue\";\nimport Button from \"../button/Index.vue\";\nimport { props as selectProps } from \"./props.ts\";\n\nconst props = defineProps(selectProps);\n\nconst emit = defineEmits([\"update:modelValue\", \"update:isOpen\"]);\n\nconst selectedOption = ref(props.modelValue);\n\nconst selectOption = (option: string) => {\n selectedOption.value = option;\n emit(\"update:modelValue\", option);\n emit(\"update:isOpen\", false);\n};\n\nconst searchQuery = ref(\"\");\n\n// Computed for filtering options based on search input\nconst filteredOptions = computed(() => {\n if (!searchQuery.value) return props.options;\n return props.options.filter((option: string) => option.toLowerCase().includes(searchQuery.value.toLowerCase()));\n});\n</script>\n\n<template>\n <div class=\"relative\">\n <!-- select trigger -->\n <Button :icon-class=\"isOpen ? 'rotate-180' : ''\" icon=\"chevron-down\" class=\"w-full\" :variant=\"variant\" :label=\"selectedOption || 'Select'\" @click=\"isOpen = !isOpen\" />\n\n <!-- select menu -->\n <ul v-if=\"isOpen\" class=\"absolute top-full z-10 mt-1 flex w-full list-none flex-col rounded border border-gray-200 bg-white shadow-md shadow-slate-500/10\">\n <li v-if=\"showFilter\" class=\"border-b border-gray-200 p-2\">\n <input type=\"text\" v-model=\"searchQuery\" class=\"focus:border-primary w-full rounded-sm border border-gray-200 px-2 py-1 focus:outline-none\" placeholder=\"Search\" />\n </li>\n <li v-for=\"(option, index) in filteredOptions\" :key=\"index\" :class=\"option === selectedOption && 'bg-primary/10'\" class=\"hover:bg-primary/5 cursor-pointer px-4 py-2\" @click=\"selectOption(option)\">\n {{ option }}\n </li>\n </ul>\n </div>\n</template>\n","export const props = {\n direction: { type: String as () => \"horizontal\" | \"vertical\", default: \"horizontal\", options: [\"horizontal\", \"vertical\"] },\n color: { type: String, default: \"#16476A\" },\n label: { type: String, default: \"\" },\n icon: { type: String, default: \"\" },\n} as const;\n","<script setup lang=\"ts\">\nimport { defineProps } from \"vue\";\nimport { props } from \"./props\";\nimport Icon from \"../icon/index.vue\";\n\ndefineProps(props);\n</script>\n\n<template>\n <div :class=\"direction === 'horizontal' ? 'h-[1px] w-full' : direction === 'vertical' ? 'h-full w-[1px]' : ''\" class=\"relative bg-gray-200\" :style=\"{ backgroundColor: color }\">\n <span v-if=\"direction === 'horizontal' && label && !icon\" class=\"absolute inset-0 m-auto flex w-fit items-center justify-center rounded-sm border border-gray-100 bg-white px-1 py-2 text-sm\" :style=\"{ color: color, borderColor: color }\">Test label</span>\n <span v-if=\"direction === 'horizontal' && !label && icon\" class=\"absolute inset-0 m-auto flex h-fit w-fit shrink-0 items-center justify-center bg-white p-1\">\n <Icon :icon=\"icon\" class=\"size-6\" :style=\"{ color: color }\" />\n </span>\n </div>\n</template>\n","export const props = {\n content: { type: String, default: \"\" },\n position: { type: String as () => \"top\" | \"bottom\" | \"left\" | \"right\", default: \"bottom\", options: [\"top\", \"bottom\", \"left\", \"right\"] },\n bodyClass: { type: String, default: \"\" },\n} as const;\n","<script setup lang=\"ts\">\nimport { ref } from \"vue\";\nimport { props } from \"./props\";\n\nconst isVisible = ref(false);\n\ndefineProps(props);\n</script>\n\n<template>\n <div class=\"relative inline-block\" @mouseenter=\"isVisible = true\" @mouseleave=\"isVisible = false\">\n <!-- Tooltip trigger -->\n <slot />\n\n <!-- Tooltip content -->\n <!-- prettier-ignore -->\n <div \n\t\tv-if=\"isVisible\" \n\t\t:class=\"[\n\t\t\t'absolute z-10 w-max rounded-md bg-white px-3 py-2 text-sm text-primary border shadow-xl transition-opacity duration-200',\n\t\t\tposition === 'top' && 'bottom-full left-1/2 mb-2 -translate-x-1/2',\n\t\t\tposition === 'bottom' && 'top-full left-1/2 mt-2 -translate-x-1/2',\n\t\t\tposition === 'left' && 'top-1/2 right-full mr-2 -translate-y-1/2',\n\t\t\tposition === 'right' && 'top-1/2 left-full ml-2 -translate-y-1/2',\n\t\t\tbodyClass\n\t\t]\">\n <span v-if=\"!content\">{{ content }}</span>\n\t\t<slot name=\"body\" v-else />\n\t\t</div>\n </div>\n</template>\n","import type { Colors, config as Config } from \"@/types/config\";\n\n// create theme settings\nexport const config = (config: Config) => {\n return {\n install() {\n if (!config || !config.colors) {\n console.warn(\"No config provided for the theme settings\");\n return;\n }\n\n // apply colors\n applyCSSVars(config.colors);\n },\n };\n};\n\n// apply the colors to the root element\nconst applyCSSVars = (colors: Colors) => {\n const root = document.documentElement;\n\n // apply the colors to the root element\n for (const color in colors) {\n if (colors[color as keyof Colors]) {\n root.style.setProperty(`--ui-color-${color}`, colors[color as keyof Colors]);\n }\n }\n};\n"],"names":["activeIndex","ref","_openBlock","_createElementBlock","_hoisted_1","__props","_Fragment","_renderList","item","index","_createElementVNode","_normalizeClass","_hoisted_3","_toDisplayString","_createVNode","_component_Icon","_hoisted_4","_renderSlot","_ctx","_createTextVNode","_hoisted_5","props","classes","computed","_createBlock","_cache","icons","Check","Close","Loading","ChevronDown","Alert","size","IconComponent","key","fallbackKey","_resolveDynamicComponent","modelValue","_useModel","$event","checkboxClass","Icon","labelClass","label","show","drawerdirections","currClasses","defaultClasses","watch","_hoisted_2","title","description","Button","showFooter","_hoisted_6","model","helpText","type","placeholder","emit","__emit","val","_","isOpen","position","bodyClass","contentClass","progress","isDragging","tooltipVisible","updateProgress","event","progressBar","rect","clientX","offsetX","newProgress","startDrag","stopDragging","onMounted","onUnmounted","showTooltip","selectedOption","selectOption","option","searchQuery","filteredOptions","variant","showFilter","direction","color","icon","_normalizeStyle","isVisible","content","config","applyCSSVars","colors","root"],"mappings":"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"}