cisse-vue-ui 0.2.8 → 0.3.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 (110) hide show
  1. package/README.md +666 -664
  2. package/dist/{Switch.vue_vue_type_script_setup_true_lang-dRPxDu8I.js → DatePicker.vue_vue_type_script_setup_true_lang-DgGJ5-8v.js} +372 -60
  3. package/dist/DatePicker.vue_vue_type_script_setup_true_lang-DgGJ5-8v.js.map +1 -0
  4. package/dist/{Switch.vue_vue_type_script_setup_true_lang-wRTWorCd.cjs → DatePicker.vue_vue_type_script_setup_true_lang-qux1VNn0.cjs} +371 -59
  5. package/dist/DatePicker.vue_vue_type_script_setup_true_lang-qux1VNn0.cjs.map +1 -0
  6. package/dist/Dropdown.vue_vue_type_script_setup_true_lang-B9DsCY8M.js.map +1 -1
  7. package/dist/Dropdown.vue_vue_type_script_setup_true_lang-nMP2OxXp.cjs.map +1 -1
  8. package/dist/PageLayout.vue_vue_type_script_setup_true_lang-Bnw5L-xO.cjs.map +1 -1
  9. package/dist/PageLayout.vue_vue_type_script_setup_true_lang-D8uD3-Fe.js.map +1 -1
  10. package/dist/{CollapsibleCard.vue_vue_type_script_setup_true_lang-Y1wvT4aS.js → Popover.vue_vue_type_script_setup_true_lang-Q7gRZsT9.js} +203 -43
  11. package/dist/Popover.vue_vue_type_script_setup_true_lang-Q7gRZsT9.js.map +1 -0
  12. package/dist/{CollapsibleCard.vue_vue_type_script_setup_true_lang-ClNZxjzF.cjs → Popover.vue_vue_type_script_setup_true_lang-dvlDTcf1.cjs} +191 -31
  13. package/dist/Popover.vue_vue_type_script_setup_true_lang-dvlDTcf1.cjs.map +1 -0
  14. package/dist/{EmptyState.vue_vue_type_script_setup_true_lang-DzDK0MZi.cjs → Skeleton.vue_vue_type_script_setup_true_lang-D2S5g9s5.cjs} +313 -62
  15. package/dist/Skeleton.vue_vue_type_script_setup_true_lang-D2S5g9s5.cjs.map +1 -0
  16. package/dist/{EmptyState.vue_vue_type_script_setup_true_lang-BBLBf32F.js → Skeleton.vue_vue_type_script_setup_true_lang-DRC4EADS.js} +314 -63
  17. package/dist/Skeleton.vue_vue_type_script_setup_true_lang-DRC4EADS.js.map +1 -0
  18. package/dist/_plugin-vue_export-helper-1tPrXgE0.js +11 -0
  19. package/dist/_plugin-vue_export-helper-1tPrXgE0.js.map +1 -0
  20. package/dist/_plugin-vue_export-helper-DM9IkUGy.cjs +10 -0
  21. package/dist/_plugin-vue_export-helper-DM9IkUGy.cjs.map +1 -0
  22. package/dist/cisse-vue-ui.css +83 -0
  23. package/dist/components/core/Avatar.stories.d.ts +12 -0
  24. package/dist/components/core/Button.stories.d.ts +18 -0
  25. package/dist/components/core/CardComponent.stories.d.ts +10 -0
  26. package/dist/components/core/CollapsibleCard.stories.d.ts +10 -0
  27. package/dist/components/core/Dropdown.stories.d.ts +11 -0
  28. package/dist/components/core/Popover.stories.d.ts +10 -0
  29. package/dist/components/core/Popover.vue.d.ts +42 -0
  30. package/dist/components/core/StatusBadge.stories.d.ts +13 -0
  31. package/dist/components/core/Stepper.stories.d.ts +12 -0
  32. package/dist/components/core/Tabs.stories.d.ts +10 -0
  33. package/dist/components/core/Tooltip.stories.d.ts +10 -0
  34. package/dist/components/core/Tooltip.vue.d.ts +32 -0
  35. package/dist/components/core/index.cjs +15 -13
  36. package/dist/components/core/index.cjs.map +1 -1
  37. package/dist/components/core/index.d.ts +4 -0
  38. package/dist/components/core/index.js +4 -2
  39. package/dist/components/feedback/Alert.stories.d.ts +13 -0
  40. package/dist/components/feedback/EmptyState.stories.d.ts +13 -0
  41. package/dist/components/feedback/LoadingSpinner.stories.d.ts +11 -0
  42. package/dist/components/feedback/Modal.stories.d.ts +11 -0
  43. package/dist/components/feedback/PaginationControls.stories.d.ts +12 -0
  44. package/dist/components/feedback/Progress.stories.d.ts +14 -0
  45. package/dist/components/feedback/Progress.vue.d.ts +30 -0
  46. package/dist/components/feedback/Skeleton.stories.d.ts +15 -0
  47. package/dist/components/feedback/Skeleton.vue.d.ts +19 -0
  48. package/dist/components/feedback/Toast.stories.d.ts +12 -0
  49. package/dist/components/feedback/Toast.vue.d.ts +23 -0
  50. package/dist/components/feedback/ToastContainer.vue.d.ts +22 -0
  51. package/dist/components/feedback/index.cjs +12 -8
  52. package/dist/components/feedback/index.cjs.map +1 -1
  53. package/dist/components/feedback/index.d.ts +8 -0
  54. package/dist/components/feedback/index.js +6 -2
  55. package/dist/components/form/Checkbox.stories.d.ts +13 -0
  56. package/dist/components/form/DatePicker.stories.d.ts +15 -0
  57. package/dist/components/form/DatePicker.vue.d.ts +34 -0
  58. package/dist/components/form/FormGroup.stories.d.ts +10 -0
  59. package/dist/components/form/FormInput.stories.d.ts +12 -0
  60. package/dist/components/form/FormSelect.stories.d.ts +11 -0
  61. package/dist/components/form/Slider.stories.d.ts +13 -0
  62. package/dist/components/form/Slider.vue.d.ts +29 -0
  63. package/dist/components/form/Switch.stories.d.ts +11 -0
  64. package/dist/components/form/index.cjs +10 -8
  65. package/dist/components/form/index.cjs.map +1 -1
  66. package/dist/components/form/index.d.ts +2 -0
  67. package/dist/components/form/index.js +3 -1
  68. package/dist/components/index.cjs +37 -29
  69. package/dist/components/index.cjs.map +1 -1
  70. package/dist/components/index.js +12 -4
  71. package/dist/components/layout/BaseLayout.stories.d.ts +9 -0
  72. package/dist/components/layout/BaseLayout.vue.d.ts +1 -1
  73. package/dist/components/layout/PageLayout.stories.d.ts +10 -0
  74. package/dist/components/type/BadgeType.stories.d.ts +13 -0
  75. package/dist/components/type/BooleanType.stories.d.ts +12 -0
  76. package/dist/components/type/DateType.stories.d.ts +12 -0
  77. package/dist/components/type/NumberType.stories.d.ts +11 -0
  78. package/dist/components/type/TextType.stories.d.ts +10 -0
  79. package/dist/composables/index.cjs +7 -6
  80. package/dist/composables/index.cjs.map +1 -1
  81. package/dist/composables/index.d.ts +1 -0
  82. package/dist/composables/index.js +3 -2
  83. package/dist/composables/useToast.d.ts +30 -0
  84. package/dist/index-BQtfDfYo.js +59 -0
  85. package/dist/index-BQtfDfYo.js.map +1 -0
  86. package/dist/index-CzzlUYhY.cjs +58 -0
  87. package/dist/index-CzzlUYhY.cjs.map +1 -0
  88. package/dist/index.cjs +45 -36
  89. package/dist/index.cjs.map +1 -1
  90. package/dist/index.js +15 -6
  91. package/dist/style.css +1 -1
  92. package/dist/useDropdown-DHFnd259.cjs.map +1 -1
  93. package/dist/useDropdown-iVu14E6s.js.map +1 -1
  94. package/dist/{useModal-Aq8hn152.js → useToast-DT9hFfpM.js} +49 -1
  95. package/dist/useToast-DT9hFfpM.js.map +1 -0
  96. package/dist/{useModal-DDF_ZS8C.cjs → useToast-nJXpFz_M.cjs} +49 -1
  97. package/dist/useToast-nJXpFz_M.cjs.map +1 -0
  98. package/package.json +21 -2
  99. package/dist/CollapsibleCard.vue_vue_type_script_setup_true_lang-ClNZxjzF.cjs.map +0 -1
  100. package/dist/CollapsibleCard.vue_vue_type_script_setup_true_lang-Y1wvT4aS.js.map +0 -1
  101. package/dist/EmptyState.vue_vue_type_script_setup_true_lang-BBLBf32F.js.map +0 -1
  102. package/dist/EmptyState.vue_vue_type_script_setup_true_lang-DzDK0MZi.cjs.map +0 -1
  103. package/dist/Switch.vue_vue_type_script_setup_true_lang-dRPxDu8I.js.map +0 -1
  104. package/dist/Switch.vue_vue_type_script_setup_true_lang-wRTWorCd.cjs.map +0 -1
  105. package/dist/index-BEUu6KNI.js +0 -51
  106. package/dist/index-BEUu6KNI.js.map +0 -1
  107. package/dist/index-DHo9Tbn4.cjs +0 -50
  108. package/dist/index-DHo9Tbn4.cjs.map +0 -1
  109. package/dist/useModal-Aq8hn152.js.map +0 -1
  110. package/dist/useModal-DDF_ZS8C.cjs.map +0 -1
@@ -1,6 +1,6 @@
1
1
  import { defineComponent, createElementBlock, openBlock, createCommentVNode, renderSlot, createElementVNode, createTextVNode, toDisplayString, useSlots, computed, createVNode, Fragment, renderList, normalizeClass, createBlock, resolveDynamicComponent, withCtx, onMounted, nextTick, getCurrentInstance, getCurrentScope, hasInjectionContext, inject, watch, shallowRef, toValue, watchEffect, unref, createSlots, ref, withDirectives, vModelText, withModifiers, Teleport, Transition, normalizeStyle, resolveComponent, mergeProps, provide, vShow } from "vue";
2
- import { _ as _sfc_main$c } from "./Checkbox.vue_vue_type_script_setup_true_lang-B-nLCCNY.js";
3
- import { e as _sfc_main$d, d as _sfc_main$e, c as _sfc_main$f, b as _sfc_main$g, a as _sfc_main$h } from "./BadgeType.vue_vue_type_script_setup_true_lang-CnB5eNEM.js";
2
+ import { _ as _sfc_main$e } from "./Checkbox.vue_vue_type_script_setup_true_lang-B-nLCCNY.js";
3
+ import { e as _sfc_main$f, d as _sfc_main$g, c as _sfc_main$h, b as _sfc_main$i, a as _sfc_main$j } from "./BadgeType.vue_vue_type_script_setup_true_lang-CnB5eNEM.js";
4
4
  import { Icon } from "@iconify/vue";
5
5
  import { u as useDropdown } from "./useDropdown-iVu14E6s.js";
6
6
  const _hoisted_1$8 = { class: "flex flex-col overflow-hidden rounded-lg bg-white shadow-md dark:bg-slate-950" };
@@ -18,7 +18,7 @@ const _hoisted_5$3 = {
18
18
  class: "text-sm font-normal text-gray-600 dark:text-gray-400"
19
19
  };
20
20
  const _hoisted_6$3 = { class: "flex gap-2" };
21
- const _sfc_main$b = /* @__PURE__ */ defineComponent({
21
+ const _sfc_main$d = /* @__PURE__ */ defineComponent({
22
22
  __name: "CardComponent",
23
23
  props: {
24
24
  title: {},
@@ -71,7 +71,7 @@ const _hoisted_9$2 = {
71
71
  class: "flex items-center justify-end gap-2 px-3 py-4"
72
72
  };
73
73
  const _hoisted_10$1 = { key: 0 };
74
- const _sfc_main$a = /* @__PURE__ */ defineComponent({
74
+ const _sfc_main$c = /* @__PURE__ */ defineComponent({
75
75
  __name: "TableComponent",
76
76
  props: {
77
77
  properties: {},
@@ -87,14 +87,14 @@ const _sfc_main$a = /* @__PURE__ */ defineComponent({
87
87
  const props = __props;
88
88
  const emit = __emit;
89
89
  const typeComponents = {
90
- text: _sfc_main$h,
91
- number: _sfc_main$g,
92
- date: _sfc_main$f,
93
- boolean: _sfc_main$e,
94
- badge: _sfc_main$d
90
+ text: _sfc_main$j,
91
+ number: _sfc_main$i,
92
+ date: _sfc_main$h,
93
+ boolean: _sfc_main$g,
94
+ badge: _sfc_main$f
95
95
  };
96
96
  const getTypeComponent = (type = "text") => {
97
- return typeComponents[type] || _sfc_main$h;
97
+ return typeComponents[type] || _sfc_main$j;
98
98
  };
99
99
  const visibleProperties = computed(() => props.properties.filter((p) => !p.hidden));
100
100
  const getKey = (item) => {
@@ -166,7 +166,7 @@ const _sfc_main$a = /* @__PURE__ */ defineComponent({
166
166
  createElementVNode("thead", _hoisted_4$2, [
167
167
  createElementVNode("tr", null, [
168
168
  __props.selectable ? (openBlock(), createElementBlock("th", _hoisted_5$2, [
169
- createVNode(_sfc_main$c, {
169
+ createVNode(_sfc_main$e, {
170
170
  "model-value": allSelected.value,
171
171
  indeterminate: someSelected.value,
172
172
  disabled: selectableItems.value.length === 0,
@@ -193,7 +193,7 @@ const _sfc_main$a = /* @__PURE__ */ defineComponent({
193
193
  class: normalizeClass(["hover:bg-black/5 dark:hover:bg-white/5 transition-colors", { "bg-primary/5 dark:bg-primary/10": isSelected(item) }])
194
194
  }, [
195
195
  __props.selectable ? (openBlock(), createElementBlock("td", _hoisted_8$2, [
196
- isSelectable(item) ? (openBlock(), createBlock(_sfc_main$c, {
196
+ isSelectable(item) ? (openBlock(), createBlock(_sfc_main$e, {
197
197
  key: 0,
198
198
  "model-value": isSelected(item),
199
199
  "onUpdate:modelValue": ($event) => handleSelect(item)
@@ -254,7 +254,7 @@ const _hoisted_7$1 = {
254
254
  const _hoisted_8$1 = { class: "flex-1 min-w-0" };
255
255
  const _hoisted_9$1 = { class: "flex-shrink-0" };
256
256
  const _hoisted_10 = { key: 1 };
257
- const _sfc_main$9 = /* @__PURE__ */ defineComponent({
257
+ const _sfc_main$b = /* @__PURE__ */ defineComponent({
258
258
  __name: "MobileList",
259
259
  props: {
260
260
  items: {},
@@ -302,10 +302,10 @@ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
302
302
  const hasEmptySlot = computed(() => !!slots.empty);
303
303
  return (_ctx, _cache) => {
304
304
  return openBlock(), createElementBlock("div", _hoisted_1$6, [
305
- __props.selectable && selectableItems.value.length > 0 ? (openBlock(), createBlock(_sfc_main$b, { key: 0 }, {
305
+ __props.selectable && selectableItems.value.length > 0 ? (openBlock(), createBlock(_sfc_main$d, { key: 0 }, {
306
306
  default: withCtx(() => [
307
307
  createElementVNode("div", _hoisted_2$4, [
308
- createVNode(_sfc_main$c, {
308
+ createVNode(_sfc_main$e, {
309
309
  "model-value": allSelected.value,
310
310
  indeterminate: someSelected.value,
311
311
  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => emit("selectAll"))
@@ -317,7 +317,7 @@ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
317
317
  _: 1
318
318
  })) : createCommentVNode("", true),
319
319
  (openBlock(true), createElementBlock(Fragment, null, renderList(__props.items, (item) => {
320
- return openBlock(), createBlock(_sfc_main$b, {
320
+ return openBlock(), createBlock(_sfc_main$d, {
321
321
  key: getKey(item),
322
322
  class: normalizeClass(["hover:shadow-lg transition-all duration-200", {
323
323
  "ring-2 ring-primary": isSelected(item)
@@ -326,7 +326,7 @@ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
326
326
  default: withCtx(() => [
327
327
  createElementVNode("div", _hoisted_5$1, [
328
328
  __props.selectable ? (openBlock(), createElementBlock("div", _hoisted_6$1, [
329
- isSelectable(item) ? (openBlock(), createBlock(_sfc_main$c, {
329
+ isSelectable(item) ? (openBlock(), createBlock(_sfc_main$e, {
330
330
  key: 0,
331
331
  "model-value": isSelected(item),
332
332
  "onUpdate:modelValue": ($event) => handleSelect(item)
@@ -552,7 +552,7 @@ function useBreakpoints(breakpoints, options = {}) {
552
552
  }
553
553
  });
554
554
  }
555
- const _sfc_main$8 = /* @__PURE__ */ defineComponent({
555
+ const _sfc_main$a = /* @__PURE__ */ defineComponent({
556
556
  __name: "ResponsiveList",
557
557
  props: {
558
558
  items: {},
@@ -607,7 +607,7 @@ const _sfc_main$8 = /* @__PURE__ */ defineComponent({
607
607
  const isDesktop = computed(() => breakpoints.greaterOrEqual(props.breakpoint).value);
608
608
  return (_ctx, _cache) => {
609
609
  return openBlock(), createElementBlock("div", null, [
610
- !isDesktop.value ? (openBlock(), createBlock(_sfc_main$9, {
610
+ !isDesktop.value ? (openBlock(), createBlock(_sfc_main$b, {
611
611
  key: 0,
612
612
  items: __props.items,
613
613
  "key-field": __props.keyField,
@@ -632,9 +632,9 @@ const _sfc_main$8 = /* @__PURE__ */ defineComponent({
632
632
  renderSlot(_ctx.$slots, "empty")
633
633
  ]),
634
634
  _: 3
635
- }, 8, ["items", "key-field", "selectable", "selected-items", "selectable-filter"])) : (openBlock(), createBlock(_sfc_main$b, { key: 1 }, {
635
+ }, 8, ["items", "key-field", "selectable", "selected-items", "selectable-filter"])) : (openBlock(), createBlock(_sfc_main$d, { key: 1 }, {
636
636
  default: withCtx(() => [
637
- createVNode(_sfc_main$a, {
637
+ createVNode(_sfc_main$c, {
638
638
  items: __props.items,
639
639
  properties: tableProperties.value,
640
640
  "key-field": __props.keyField,
@@ -696,7 +696,7 @@ const _hoisted_9 = {
696
696
  key: 1,
697
697
  class: "mt-1 text-sm text-red-600"
698
698
  };
699
- const _sfc_main$7 = /* @__PURE__ */ defineComponent({
699
+ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
700
700
  __name: "AutocompleteComponent",
701
701
  props: {
702
702
  modelValue: {},
@@ -905,7 +905,7 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
905
905
  };
906
906
  }
907
907
  });
908
- const _sfc_main$6 = /* @__PURE__ */ defineComponent({
908
+ const _sfc_main$8 = /* @__PURE__ */ defineComponent({
909
909
  __name: "TableAction",
910
910
  props: {
911
911
  link: {},
@@ -974,7 +974,7 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
974
974
  };
975
975
  }
976
976
  });
977
- const _sfc_main$5 = /* @__PURE__ */ defineComponent({
977
+ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
978
978
  __name: "Button",
979
979
  props: {
980
980
  variant: { default: "primary" },
@@ -1070,7 +1070,7 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
1070
1070
  const _hoisted_1$4 = { class: "relative inline-block" };
1071
1071
  const _hoisted_2$2 = ["src", "alt"];
1072
1072
  const _hoisted_3 = { key: 1 };
1073
- const _sfc_main$4 = /* @__PURE__ */ defineComponent({
1073
+ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
1074
1074
  __name: "Avatar",
1075
1075
  props: {
1076
1076
  src: {},
@@ -1150,7 +1150,7 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
1150
1150
  });
1151
1151
  const _hoisted_1$3 = ["aria-selected", "disabled", "onClick"];
1152
1152
  const _hoisted_2$1 = { class: "mt-4" };
1153
- const _sfc_main$3 = /* @__PURE__ */ defineComponent({
1153
+ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
1154
1154
  __name: "Tabs",
1155
1155
  props: {
1156
1156
  tabs: {},
@@ -1226,7 +1226,7 @@ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
1226
1226
  }
1227
1227
  });
1228
1228
  const _hoisted_1$2 = { role: "tabpanel" };
1229
- const _sfc_main$2 = /* @__PURE__ */ defineComponent({
1229
+ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
1230
1230
  __name: "TabPanel",
1231
1231
  props: {
1232
1232
  value: {}
@@ -1248,7 +1248,7 @@ const _hoisted_1$1 = {
1248
1248
  key: 2,
1249
1249
  class: "text-sm font-semibold"
1250
1250
  };
1251
- const _sfc_main$1 = /* @__PURE__ */ defineComponent({
1251
+ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
1252
1252
  __name: "Stepper",
1253
1253
  props: {
1254
1254
  steps: {},
@@ -1347,7 +1347,7 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
1347
1347
  });
1348
1348
  const _hoisted_1 = { class: "overflow-hidden" };
1349
1349
  const _hoisted_2 = { class: "space-y-4 p-6" };
1350
- const _sfc_main = /* @__PURE__ */ defineComponent({
1350
+ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
1351
1351
  __name: "CollapsibleCard",
1352
1352
  props: {
1353
1353
  title: {},
@@ -1361,7 +1361,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
1361
1361
  isExpanded.value = !isExpanded.value;
1362
1362
  };
1363
1363
  return (_ctx, _cache) => {
1364
- return openBlock(), createBlock(_sfc_main$b, {
1364
+ return openBlock(), createBlock(_sfc_main$d, {
1365
1365
  title: __props.title,
1366
1366
  description: __props.description
1367
1367
  }, {
@@ -1404,18 +1404,178 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
1404
1404
  };
1405
1405
  }
1406
1406
  });
1407
+ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
1408
+ __name: "Tooltip",
1409
+ props: {
1410
+ content: {},
1411
+ position: { default: "top" },
1412
+ delay: { default: 0 },
1413
+ disabled: { type: Boolean, default: false }
1414
+ },
1415
+ setup(__props) {
1416
+ const props = __props;
1417
+ const isVisible = ref(false);
1418
+ let timeoutId = null;
1419
+ const show = () => {
1420
+ if (props.disabled) return;
1421
+ if (props.delay > 0) {
1422
+ timeoutId = setTimeout(() => {
1423
+ isVisible.value = true;
1424
+ }, props.delay);
1425
+ } else {
1426
+ isVisible.value = true;
1427
+ }
1428
+ };
1429
+ const hide = () => {
1430
+ if (timeoutId) {
1431
+ clearTimeout(timeoutId);
1432
+ timeoutId = null;
1433
+ }
1434
+ isVisible.value = false;
1435
+ };
1436
+ const positionClasses = computed(() => {
1437
+ const base = "absolute z-50 px-2 py-1 text-xs font-medium text-white bg-gray-900 rounded shadow-lg whitespace-nowrap dark:bg-gray-700";
1438
+ const arrow = "after:absolute after:border-4 after:border-transparent";
1439
+ switch (props.position) {
1440
+ case "top":
1441
+ return `${base} ${arrow} bottom-full left-1/2 -translate-x-1/2 mb-2 after:top-full after:left-1/2 after:-translate-x-1/2 after:border-t-gray-900 dark:after:border-t-gray-700`;
1442
+ case "bottom":
1443
+ return `${base} ${arrow} top-full left-1/2 -translate-x-1/2 mt-2 after:bottom-full after:left-1/2 after:-translate-x-1/2 after:border-b-gray-900 dark:after:border-b-gray-700`;
1444
+ case "left":
1445
+ return `${base} ${arrow} right-full top-1/2 -translate-y-1/2 mr-2 after:left-full after:top-1/2 after:-translate-y-1/2 after:border-l-gray-900 dark:after:border-l-gray-700`;
1446
+ case "right":
1447
+ return `${base} ${arrow} left-full top-1/2 -translate-y-1/2 ml-2 after:right-full after:top-1/2 after:-translate-y-1/2 after:border-r-gray-900 dark:after:border-r-gray-700`;
1448
+ default:
1449
+ return base;
1450
+ }
1451
+ });
1452
+ return (_ctx, _cache) => {
1453
+ return openBlock(), createElementBlock("div", {
1454
+ class: "relative inline-block",
1455
+ onMouseenter: show,
1456
+ onMouseleave: hide,
1457
+ onFocus: show,
1458
+ onBlur: hide
1459
+ }, [
1460
+ renderSlot(_ctx.$slots, "default"),
1461
+ createVNode(Transition, {
1462
+ "enter-active-class": "transition duration-150 ease-out",
1463
+ "enter-from-class": "opacity-0 scale-95",
1464
+ "enter-to-class": "opacity-100 scale-100",
1465
+ "leave-active-class": "transition duration-100 ease-in",
1466
+ "leave-from-class": "opacity-100 scale-100",
1467
+ "leave-to-class": "opacity-0 scale-95"
1468
+ }, {
1469
+ default: withCtx(() => [
1470
+ isVisible.value && __props.content ? (openBlock(), createElementBlock("div", {
1471
+ key: 0,
1472
+ class: normalizeClass(positionClasses.value),
1473
+ role: "tooltip"
1474
+ }, toDisplayString(__props.content), 3)) : createCommentVNode("", true)
1475
+ ]),
1476
+ _: 1
1477
+ })
1478
+ ], 32);
1479
+ };
1480
+ }
1481
+ });
1482
+ const _sfc_main = /* @__PURE__ */ defineComponent({
1483
+ __name: "Popover",
1484
+ props: {
1485
+ position: { default: "bottom" },
1486
+ hover: { type: Boolean, default: false },
1487
+ teleport: { type: Boolean, default: true },
1488
+ width: { default: "auto" }
1489
+ },
1490
+ setup(__props) {
1491
+ const props = __props;
1492
+ const triggerRef = ref();
1493
+ const popoverRef = ref();
1494
+ const { isOpen, dropdownStyle, toggle, close, open } = useDropdown(triggerRef, popoverRef, {
1495
+ teleport: props.teleport,
1496
+ gap: 8
1497
+ });
1498
+ const handleTrigger = () => {
1499
+ if (!props.hover) {
1500
+ toggle();
1501
+ }
1502
+ };
1503
+ const handleMouseEnter = () => {
1504
+ if (props.hover) {
1505
+ open();
1506
+ }
1507
+ };
1508
+ const handleMouseLeave = () => {
1509
+ if (props.hover) {
1510
+ close();
1511
+ }
1512
+ };
1513
+ const widthClasses = {
1514
+ auto: "w-auto min-w-[12rem]",
1515
+ sm: "w-48",
1516
+ md: "w-64",
1517
+ lg: "w-80"
1518
+ };
1519
+ return (_ctx, _cache) => {
1520
+ return openBlock(), createElementBlock("div", {
1521
+ class: "relative inline-block",
1522
+ onMouseenter: handleMouseEnter,
1523
+ onMouseleave: handleMouseLeave
1524
+ }, [
1525
+ createElementVNode("div", {
1526
+ ref_key: "triggerRef",
1527
+ ref: triggerRef,
1528
+ onClick: handleTrigger
1529
+ }, [
1530
+ renderSlot(_ctx.$slots, "trigger")
1531
+ ], 512),
1532
+ (openBlock(), createBlock(Teleport, {
1533
+ to: "body",
1534
+ disabled: !__props.teleport
1535
+ }, [
1536
+ createVNode(Transition, {
1537
+ "enter-active-class": "transition duration-150 ease-out",
1538
+ "enter-from-class": "opacity-0 scale-95",
1539
+ "enter-to-class": "opacity-100 scale-100",
1540
+ "leave-active-class": "transition duration-100 ease-in",
1541
+ "leave-from-class": "opacity-100 scale-100",
1542
+ "leave-to-class": "opacity-0 scale-95"
1543
+ }, {
1544
+ default: withCtx(() => [
1545
+ unref(isOpen) ? (openBlock(), createElementBlock("div", {
1546
+ key: 0,
1547
+ ref_key: "popoverRef",
1548
+ ref: popoverRef,
1549
+ style: normalizeStyle(unref(dropdownStyle)),
1550
+ class: normalizeClass([
1551
+ "z-[9999] rounded-lg border border-gray-200 bg-white p-4 shadow-lg dark:border-gray-700 dark:bg-gray-800",
1552
+ widthClasses[__props.width]
1553
+ ])
1554
+ }, [
1555
+ renderSlot(_ctx.$slots, "default", { close: unref(close) })
1556
+ ], 6)) : createCommentVNode("", true)
1557
+ ]),
1558
+ _: 3
1559
+ })
1560
+ ], 8, ["disabled"]))
1561
+ ], 32);
1562
+ };
1563
+ }
1564
+ });
1407
1565
  export {
1408
- _sfc_main$b as _,
1409
- _sfc_main$a as a,
1410
- _sfc_main$9 as b,
1411
- _sfc_main$8 as c,
1412
- _sfc_main$7 as d,
1413
- _sfc_main$6 as e,
1414
- _sfc_main$5 as f,
1415
- _sfc_main$4 as g,
1416
- _sfc_main$3 as h,
1417
- _sfc_main$2 as i,
1418
- _sfc_main$1 as j,
1419
- _sfc_main as k
1566
+ _sfc_main$d as _,
1567
+ _sfc_main$c as a,
1568
+ _sfc_main$b as b,
1569
+ _sfc_main$a as c,
1570
+ _sfc_main$9 as d,
1571
+ _sfc_main$8 as e,
1572
+ _sfc_main$7 as f,
1573
+ _sfc_main$6 as g,
1574
+ _sfc_main$5 as h,
1575
+ _sfc_main$4 as i,
1576
+ _sfc_main$3 as j,
1577
+ _sfc_main$2 as k,
1578
+ _sfc_main$1 as l,
1579
+ _sfc_main as m
1420
1580
  };
1421
- //# sourceMappingURL=CollapsibleCard.vue_vue_type_script_setup_true_lang-Y1wvT4aS.js.map
1581
+ //# sourceMappingURL=Popover.vue_vue_type_script_setup_true_lang-Q7gRZsT9.js.map