cisse-vue-ui 0.5.33 → 0.6.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 (84) hide show
  1. package/dist/Button.vue_vue_type_script_setup_true_lang-CBYr0Z2_.js +99 -0
  2. package/dist/Button.vue_vue_type_script_setup_true_lang-CBYr0Z2_.js.map +1 -0
  3. package/dist/Button.vue_vue_type_script_setup_true_lang-CXRj7LEP.cjs +98 -0
  4. package/dist/Button.vue_vue_type_script_setup_true_lang-CXRj7LEP.cjs.map +1 -0
  5. package/dist/{ConfirmDialog.vue_vue_type_script_setup_true_lang-CHIIi5Gu.cjs → ConfirmDialog.vue_vue_type_script_setup_true_lang-Bine-xfp.cjs} +2 -2
  6. package/dist/{ConfirmDialog.vue_vue_type_script_setup_true_lang-CHIIi5Gu.cjs.map → ConfirmDialog.vue_vue_type_script_setup_true_lang-Bine-xfp.cjs.map} +1 -1
  7. package/dist/{ConfirmDialog.vue_vue_type_script_setup_true_lang-DdCwgxtv.js → ConfirmDialog.vue_vue_type_script_setup_true_lang-DqkA1Zr-.js} +2 -2
  8. package/dist/{ConfirmDialog.vue_vue_type_script_setup_true_lang-DdCwgxtv.js.map → ConfirmDialog.vue_vue_type_script_setup_true_lang-DqkA1Zr-.js.map} +1 -1
  9. package/dist/{DarkModeToggle.vue_vue_type_script_setup_true_lang-0K4ucPlO.js → FilterTabs.vue_vue_type_script_setup_true_lang-AFYkni3y.js} +411 -136
  10. package/dist/FilterTabs.vue_vue_type_script_setup_true_lang-AFYkni3y.js.map +1 -0
  11. package/dist/{DarkModeToggle.vue_vue_type_script_setup_true_lang-DOrIWBcH.cjs → FilterTabs.vue_vue_type_script_setup_true_lang-HwjuvIJX.cjs} +398 -123
  12. package/dist/FilterTabs.vue_vue_type_script_setup_true_lang-HwjuvIJX.cjs.map +1 -0
  13. package/dist/{IconPicker.vue_vue_type_script_setup_true_lang-agY_E72J.cjs → FormActions.vue_vue_type_script_setup_true_lang-DzN_fbUC.cjs} +404 -165
  14. package/dist/FormActions.vue_vue_type_script_setup_true_lang-DzN_fbUC.cjs.map +1 -0
  15. package/dist/{IconPicker.vue_vue_type_script_setup_true_lang-Ch1x6Ap9.js → FormActions.vue_vue_type_script_setup_true_lang-d2aur5Pu.js} +405 -166
  16. package/dist/FormActions.vue_vue_type_script_setup_true_lang-d2aur5Pu.js.map +1 -0
  17. package/dist/{Button.vue_vue_type_script_setup_true_lang-BHpVJnRn.js → ListSkeleton.vue_vue_type_script_setup_true_lang-BwtEbaiT.js} +7 -102
  18. package/dist/ListSkeleton.vue_vue_type_script_setup_true_lang-BwtEbaiT.js.map +1 -0
  19. package/dist/{Button.vue_vue_type_script_setup_true_lang-CLmHDal2.cjs → ListSkeleton.vue_vue_type_script_setup_true_lang-DtwwmfWr.cjs} +6 -101
  20. package/dist/ListSkeleton.vue_vue_type_script_setup_true_lang-DtwwmfWr.cjs.map +1 -0
  21. package/dist/{PageLayout.vue_vue_type_script_setup_true_lang-rMu1Z5uH.js → PageHero.vue_vue_type_script_setup_true_lang-C-YXGDTY.js} +244 -97
  22. package/dist/PageHero.vue_vue_type_script_setup_true_lang-C-YXGDTY.js.map +1 -0
  23. package/dist/{PageLayout.vue_vue_type_script_setup_true_lang-hhzpkC6_.cjs → PageHero.vue_vue_type_script_setup_true_lang-CKCmOxOa.cjs} +241 -94
  24. package/dist/PageHero.vue_vue_type_script_setup_true_lang-CKCmOxOa.cjs.map +1 -0
  25. package/dist/components/core/FilterTabs.stories.d.ts +14 -0
  26. package/dist/components/core/FilterTabs.test.d.ts +1 -0
  27. package/dist/components/core/FilterTabs.vue.d.ts +29 -0
  28. package/dist/components/core/StatsCard.stories.d.ts +15 -0
  29. package/dist/components/core/StatsCard.test.d.ts +1 -0
  30. package/dist/components/core/StatsCard.vue.d.ts +44 -0
  31. package/dist/components/core/StatsGrid.stories.d.ts +12 -0
  32. package/dist/components/core/StatsGrid.test.d.ts +1 -0
  33. package/dist/components/core/StatsGrid.vue.d.ts +16 -0
  34. package/dist/components/core/index.cjs +24 -21
  35. package/dist/components/core/index.cjs.map +1 -1
  36. package/dist/components/core/index.d.ts +5 -0
  37. package/dist/components/core/index.js +5 -2
  38. package/dist/components/feedback/index.cjs +5 -5
  39. package/dist/components/feedback/index.js +5 -5
  40. package/dist/components/form/FormActions.stories.d.ts +18 -0
  41. package/dist/components/form/FormActions.test.d.ts +1 -0
  42. package/dist/components/form/FormActions.vue.d.ts +56 -0
  43. package/dist/components/form/FormInput.vue.d.ts +1 -1
  44. package/dist/components/form/FormSection.stories.d.ts +13 -0
  45. package/dist/components/form/FormSection.test.d.ts +1 -0
  46. package/dist/components/form/FormSection.vue.d.ts +49 -0
  47. package/dist/components/form/index.cjs +18 -16
  48. package/dist/components/form/index.cjs.map +1 -1
  49. package/dist/components/form/index.d.ts +2 -0
  50. package/dist/components/form/index.js +3 -1
  51. package/dist/components/index.cjs +52 -45
  52. package/dist/components/index.cjs.map +1 -1
  53. package/dist/components/index.js +22 -15
  54. package/dist/components/index.js.map +1 -1
  55. package/dist/components/layout/PageHero.stories.d.ts +11 -0
  56. package/dist/components/layout/PageHero.test.d.ts +1 -0
  57. package/dist/components/layout/PageHero.vue.d.ts +51 -0
  58. package/dist/components/layout/index.cjs +5 -4
  59. package/dist/components/layout/index.cjs.map +1 -1
  60. package/dist/components/layout/index.d.ts +2 -0
  61. package/dist/components/layout/index.js +2 -1
  62. package/dist/index-6hQQcCpF.js +84 -0
  63. package/dist/index-6hQQcCpF.js.map +1 -0
  64. package/dist/index-Bp7Mpfbi.cjs +83 -0
  65. package/dist/index-Bp7Mpfbi.cjs.map +1 -0
  66. package/dist/index.cjs +53 -46
  67. package/dist/index.cjs.map +1 -1
  68. package/dist/index.js +33 -26
  69. package/dist/index.js.map +1 -1
  70. package/dist/style.css +1 -1
  71. package/dist/types/form.d.ts +4 -0
  72. package/package.json +1 -1
  73. package/dist/Button.vue_vue_type_script_setup_true_lang-BHpVJnRn.js.map +0 -1
  74. package/dist/Button.vue_vue_type_script_setup_true_lang-CLmHDal2.cjs.map +0 -1
  75. package/dist/DarkModeToggle.vue_vue_type_script_setup_true_lang-0K4ucPlO.js.map +0 -1
  76. package/dist/DarkModeToggle.vue_vue_type_script_setup_true_lang-DOrIWBcH.cjs.map +0 -1
  77. package/dist/IconPicker.vue_vue_type_script_setup_true_lang-Ch1x6Ap9.js.map +0 -1
  78. package/dist/IconPicker.vue_vue_type_script_setup_true_lang-agY_E72J.cjs.map +0 -1
  79. package/dist/PageLayout.vue_vue_type_script_setup_true_lang-hhzpkC6_.cjs.map +0 -1
  80. package/dist/PageLayout.vue_vue_type_script_setup_true_lang-rMu1Z5uH.js.map +0 -1
  81. package/dist/index-BBUxkeI7.js +0 -77
  82. package/dist/index-BBUxkeI7.js.map +0 -1
  83. package/dist/index-BlwU8BWn.cjs +0 -76
  84. package/dist/index-BlwU8BWn.cjs.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ListSkeleton.vue_vue_type_script_setup_true_lang-DtwwmfWr.cjs","sources":["../src/components/feedback/CardSkeleton.vue","../src/components/feedback/TableSkeleton.vue","../src/components/feedback/ListSkeleton.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nwithDefaults(\n defineProps<{\n /** Show avatar/icon placeholder */\n showAvatar?: boolean\n /** Number of text lines */\n lines?: number\n /** Show action buttons */\n showActions?: boolean\n }>(),\n {\n showAvatar: false,\n lines: 3,\n showActions: false,\n },\n)\n</script>\n\n<template>\n <div class=\"bg-white dark:bg-gray-900 rounded-lg shadow-md p-4 space-y-4\" aria-hidden=\"true\">\n <!-- Header with avatar -->\n <div v-if=\"showAvatar\" class=\"flex items-center gap-3\">\n <div class=\"size-10 rounded-full bg-gray-200 dark:bg-gray-700 animate-pulse\" />\n <div class=\"flex-1 space-y-2\">\n <div class=\"h-4 bg-gray-200 dark:bg-gray-700 rounded animate-pulse w-1/2\" />\n <div class=\"h-3 bg-gray-200 dark:bg-gray-700 rounded animate-pulse w-1/3\" />\n </div>\n </div>\n\n <!-- Content lines -->\n <div class=\"space-y-2\">\n <div\n v-for=\"line in lines\"\n :key=\"line\"\n class=\"h-4 bg-gray-200 dark:bg-gray-700 rounded animate-pulse\"\n :style=\"{ width: line === lines ? '60%' : '100%' }\"\n />\n </div>\n\n <!-- Actions -->\n <div v-if=\"showActions\" class=\"flex justify-end gap-2 pt-2\">\n <div class=\"h-8 w-20 bg-gray-200 dark:bg-gray-700 rounded animate-pulse\" />\n <div class=\"h-8 w-20 bg-gray-200 dark:bg-gray-700 rounded animate-pulse\" />\n </div>\n </div>\n</template>\n","<script lang=\"ts\" setup>\nwithDefaults(\n defineProps<{\n /** Number of rows */\n rows?: number\n /** Number of columns */\n columns?: number\n /** Show header */\n showHeader?: boolean\n }>(),\n {\n rows: 5,\n columns: 4,\n showHeader: true,\n },\n)\n</script>\n\n<template>\n <div class=\"w-full\" aria-hidden=\"true\">\n <!-- Header -->\n <div\n v-if=\"showHeader\"\n class=\"flex gap-4 px-4 py-3 border-b border-gray-200 dark:border-gray-700\"\n >\n <div\n v-for=\"col in columns\"\n :key=\"`header-${col}`\"\n class=\"flex-1 h-4 bg-gray-200 dark:bg-gray-700 rounded animate-pulse\"\n :style=\"{ maxWidth: col === 1 ? '30%' : '20%' }\"\n />\n </div>\n <!-- Rows -->\n <div\n v-for=\"row in rows\"\n :key=\"`row-${row}`\"\n class=\"flex items-center gap-4 px-4 py-4 border-b border-gray-100 dark:border-gray-800\"\n >\n <div\n v-for=\"col in columns\"\n :key=\"`cell-${row}-${col}`\"\n class=\"flex-1 h-4 bg-gray-200 dark:bg-gray-700 rounded animate-pulse\"\n :style=\"{\n maxWidth: col === 1 ? '40%' : col === columns ? '15%' : '25%',\n opacity: 1 - (row * 0.1)\n }\"\n />\n </div>\n </div>\n</template>\n","<script lang=\"ts\" setup>\nwithDefaults(\n defineProps<{\n /** Number of items */\n items?: number\n /** Show avatar/icon placeholder */\n showAvatar?: boolean\n /** Show secondary text */\n showSecondary?: boolean\n /** Show action button */\n showAction?: boolean\n }>(),\n {\n items: 5,\n showAvatar: true,\n showSecondary: true,\n showAction: false,\n },\n)\n</script>\n\n<template>\n <div class=\"divide-y divide-gray-200 dark:divide-gray-700\" aria-hidden=\"true\">\n <div\n v-for=\"item in items\"\n :key=\"item\"\n class=\"flex items-center gap-4 py-4 px-4\"\n >\n <!-- Avatar -->\n <div\n v-if=\"showAvatar\"\n class=\"shrink-0 size-10 rounded-full bg-gray-200 dark:bg-gray-700 animate-pulse\"\n />\n\n <!-- Content -->\n <div class=\"flex-1 min-w-0 space-y-2\">\n <div\n class=\"h-4 bg-gray-200 dark:bg-gray-700 rounded animate-pulse\"\n :style=\"{ width: `${60 + Math.random() * 30}%` }\"\n />\n <div\n v-if=\"showSecondary\"\n class=\"h-3 bg-gray-200 dark:bg-gray-700 rounded animate-pulse\"\n :style=\"{ width: `${40 + Math.random() * 20}%` }\"\n />\n </div>\n\n <!-- Action -->\n <div\n v-if=\"showAction\"\n class=\"shrink-0 size-8 rounded bg-gray-200 dark:bg-gray-700 animate-pulse\"\n />\n </div>\n </div>\n</template>\n"],"names":["_openBlock","_createElementBlock","_hoisted_1","_hoisted_2","_createElementVNode","_hoisted_3","_Fragment","_renderList","_normalizeStyle","_hoisted_4"],"mappings":"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"}
@@ -1,51 +1,51 @@
1
1
  import { defineComponent, useSlots, computed, resolveComponent, createElementBlock, openBlock, createCommentVNode, createElementVNode, normalizeClass, renderSlot, Fragment, createVNode, unref, toDisplayString, createTextVNode, renderList, createBlock, resolveDynamicComponent, mergeProps, withCtx, ref } from "vue";
2
2
  import { Icon } from "@iconify/vue";
3
- import { _ as _sfc_main$3, a as _sfc_main$4 } from "./Dropdown.vue_vue_type_script_setup_true_lang-nyND94f_.js";
4
- const _hoisted_1$2 = { class: "flex min-h-screen" };
5
- const _hoisted_2$2 = {
3
+ import { _ as _sfc_main$4, a as _sfc_main$5 } from "./Dropdown.vue_vue_type_script_setup_true_lang-nyND94f_.js";
4
+ const _hoisted_1$3 = { class: "flex min-h-screen" };
5
+ const _hoisted_2$3 = {
6
6
  key: 0,
7
7
  class: "absolute inset-0 overflow-hidden pointer-events-none"
8
8
  };
9
- const _hoisted_3$2 = {
9
+ const _hoisted_3$3 = {
10
10
  key: 1,
11
11
  class: "absolute inset-0 opacity-20 pointer-events-none",
12
12
  style: { "background-image": "radial-gradient(circle, rgba(255,255,255,0.4) 1px, transparent 1px)", "background-size": "24px 24px" }
13
13
  };
14
- const _hoisted_4$2 = { class: "relative z-10 flex flex-col justify-center px-16 py-12 text-white w-full" };
15
- const _hoisted_5$2 = { class: "flex items-center gap-3 mb-12" };
16
- const _hoisted_6$2 = { class: "w-14 h-14 bg-white/20 backdrop-blur-sm rounded-2xl flex items-center justify-center" };
17
- const _hoisted_7$2 = {
14
+ const _hoisted_4$3 = { class: "relative z-10 flex flex-col justify-center px-16 py-12 text-white w-full" };
15
+ const _hoisted_5$3 = { class: "flex items-center gap-3 mb-12" };
16
+ const _hoisted_6$3 = { class: "size-14 bg-white/20 backdrop-blur-sm rounded-2xl flex items-center justify-center" };
17
+ const _hoisted_7$3 = {
18
18
  key: 0,
19
19
  class: "text-3xl font-bold"
20
20
  };
21
- const _hoisted_8$2 = {
21
+ const _hoisted_8$3 = {
22
22
  key: 0,
23
23
  class: "text-4xl xl:text-5xl font-bold leading-tight mb-6"
24
24
  };
25
- const _hoisted_9$2 = {
25
+ const _hoisted_9$3 = {
26
26
  key: 1,
27
27
  class: "relative inline-block"
28
28
  };
29
- const _hoisted_10$2 = { class: "relative z-10" };
30
- const _hoisted_11$1 = {
29
+ const _hoisted_10$3 = { class: "relative z-10" };
30
+ const _hoisted_11$2 = {
31
31
  class: "absolute -bottom-2 left-0 w-full",
32
32
  viewBox: "0 0 280 12",
33
33
  fill: "none",
34
34
  preserveAspectRatio: "none"
35
35
  };
36
- const _hoisted_12$1 = ["stroke"];
37
- const _hoisted_13$1 = {
36
+ const _hoisted_12$2 = ["stroke"];
37
+ const _hoisted_13$2 = {
38
38
  key: 0,
39
39
  class: "text-lg text-white/80 max-w-md mb-10"
40
40
  };
41
- const _hoisted_14$1 = {
41
+ const _hoisted_14$2 = {
42
42
  key: 0,
43
43
  class: "space-y-4"
44
44
  };
45
- const _hoisted_15$1 = { class: "w-10 h-10 rounded-xl bg-white/10 backdrop-blur-sm flex items-center justify-center shrink-0" };
45
+ const _hoisted_15$1 = { class: "size-10 rounded-xl bg-white/10 backdrop-blur-sm flex items-center justify-center shrink-0" };
46
46
  const _hoisted_16 = { class: "flex-1 flex items-center justify-center p-6 sm:p-12 bg-gradient-to-br from-gray-50 to-gray-100 dark:from-slate-900 dark:to-slate-800" };
47
47
  const _hoisted_17 = { class: "lg:hidden text-center mb-8" };
48
- const _hoisted_18 = { class: "w-12 h-12 bg-primary-600 rounded-xl flex items-center justify-center shadow-lg shadow-primary-200 dark:shadow-primary-900/30" };
48
+ const _hoisted_18 = { class: "size-12 bg-primary-600 rounded-xl flex items-center justify-center shadow-lg shadow-primary-200 dark:shadow-primary-900/30" };
49
49
  const _hoisted_19 = {
50
50
  key: 0,
51
51
  class: "text-2xl font-bold text-gray-900 dark:text-white"
@@ -63,7 +63,7 @@ const _hoisted_22 = {
63
63
  class: "text-gray-600 dark:text-gray-400"
64
64
  };
65
65
  const _hoisted_23 = { class: "bg-white dark:bg-slate-800/80 rounded-3xl shadow-xl shadow-gray-200/50 dark:shadow-none p-8" };
66
- const _sfc_main$2 = /* @__PURE__ */ defineComponent({
66
+ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
67
67
  __name: "AuthLayout",
68
68
  props: {
69
69
  appName: { default: "" },
@@ -114,7 +114,7 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
114
114
  return classes.filter(Boolean);
115
115
  });
116
116
  return (_ctx, _cache) => {
117
- return openBlock(), createElementBlock("div", _hoisted_1$2, [
117
+ return openBlock(), createElementBlock("div", _hoisted_1$3, [
118
118
  hasBrandingContent.value || _ctx.$slots["branding-panel"] ? (openBlock(), createElementBlock("div", {
119
119
  key: 0,
120
120
  class: normalizeClass([
@@ -123,56 +123,56 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
123
123
  ])
124
124
  }, [
125
125
  renderSlot(_ctx.$slots, "branding-panel", {}, () => [
126
- __props.showDecorations ? (openBlock(), createElementBlock("div", _hoisted_2$2, [..._cache[0] || (_cache[0] = [
127
- createElementVNode("div", { class: "absolute -top-20 -left-20 w-80 h-80 bg-white/5 rounded-full blur-3xl" }, null, -1),
128
- createElementVNode("div", { class: "absolute top-1/3 right-10 w-60 h-60 bg-white/5 rounded-full blur-3xl" }, null, -1),
129
- createElementVNode("div", { class: "absolute bottom-20 left-1/4 w-72 h-72 bg-white/5 rounded-full blur-3xl" }, null, -1)
126
+ __props.showDecorations ? (openBlock(), createElementBlock("div", _hoisted_2$3, [..._cache[0] || (_cache[0] = [
127
+ createElementVNode("div", { class: "absolute -top-20 -left-20 size-80 bg-white/5 rounded-full blur-3xl" }, null, -1),
128
+ createElementVNode("div", { class: "absolute top-1/3 right-10 size-60 bg-white/5 rounded-full blur-3xl" }, null, -1),
129
+ createElementVNode("div", { class: "absolute bottom-20 left-1/4 size-72 bg-white/5 rounded-full blur-3xl" }, null, -1)
130
130
  ])])) : createCommentVNode("", true),
131
- __props.showPattern ? (openBlock(), createElementBlock("div", _hoisted_3$2)) : createCommentVNode("", true),
131
+ __props.showPattern ? (openBlock(), createElementBlock("div", _hoisted_3$3)) : createCommentVNode("", true),
132
132
  __props.showDecorations ? (openBlock(), createElementBlock(Fragment, { key: 2 }, [
133
- _cache[1] || (_cache[1] = createElementVNode("div", { class: "absolute top-20 right-20 w-16 h-16 border-2 border-white/20 rounded-2xl rotate-12 pointer-events-none" }, null, -1)),
134
- _cache[2] || (_cache[2] = createElementVNode("div", { class: "absolute bottom-32 left-16 w-12 h-12 border-2 border-white/20 rounded-full pointer-events-none" }, null, -1)),
135
- _cache[3] || (_cache[3] = createElementVNode("div", { class: "absolute top-1/2 left-10 w-8 h-8 bg-white/10 rounded-lg rotate-45 pointer-events-none" }, null, -1))
133
+ _cache[1] || (_cache[1] = createElementVNode("div", { class: "absolute top-20 right-20 size-16 border-2 border-white/20 rounded-2xl rotate-12 pointer-events-none" }, null, -1)),
134
+ _cache[2] || (_cache[2] = createElementVNode("div", { class: "absolute bottom-32 left-16 size-12 border-2 border-white/20 rounded-full pointer-events-none" }, null, -1)),
135
+ _cache[3] || (_cache[3] = createElementVNode("div", { class: "absolute top-1/2 left-10 size-8 bg-white/10 rounded-lg rotate-45 pointer-events-none" }, null, -1))
136
136
  ], 64)) : createCommentVNode("", true),
137
- createElementVNode("div", _hoisted_4$2, [
137
+ createElementVNode("div", _hoisted_4$3, [
138
138
  createElementVNode("div", {
139
139
  class: normalizeClass(__props.brandingAnimation)
140
140
  }, [
141
- createElementVNode("div", _hoisted_5$2, [
141
+ createElementVNode("div", _hoisted_5$3, [
142
142
  renderSlot(_ctx.$slots, "branding-logo", {}, () => [
143
143
  __props.appName || __props.appIcon ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
144
- createElementVNode("div", _hoisted_6$2, [
144
+ createElementVNode("div", _hoisted_6$3, [
145
145
  createVNode(unref(Icon), {
146
146
  icon: __props.appIcon,
147
- class: "w-8 h-8 text-white"
147
+ class: "size-8 text-white"
148
148
  }, null, 8, ["icon"])
149
149
  ]),
150
- __props.appName ? (openBlock(), createElementBlock("span", _hoisted_7$2, toDisplayString(__props.appName), 1)) : createCommentVNode("", true)
150
+ __props.appName ? (openBlock(), createElementBlock("span", _hoisted_7$3, toDisplayString(__props.appName), 1)) : createCommentVNode("", true)
151
151
  ], 64)) : createCommentVNode("", true)
152
152
  ])
153
153
  ]),
154
154
  renderSlot(_ctx.$slots, "branding-headline", {}, () => [
155
- __props.headline || __props.subHeadline ? (openBlock(), createElementBlock("h1", _hoisted_8$2, [
155
+ __props.headline || __props.subHeadline ? (openBlock(), createElementBlock("h1", _hoisted_8$3, [
156
156
  __props.headline ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
157
157
  createTextVNode(toDisplayString(__props.headline), 1),
158
158
  _cache[4] || (_cache[4] = createElementVNode("br", null, null, -1))
159
159
  ], 64)) : createCommentVNode("", true),
160
- __props.subHeadline ? (openBlock(), createElementBlock("span", _hoisted_9$2, [
161
- createElementVNode("span", _hoisted_10$2, toDisplayString(__props.subHeadline), 1),
162
- (openBlock(), createElementBlock("svg", _hoisted_11$1, [
160
+ __props.subHeadline ? (openBlock(), createElementBlock("span", _hoisted_9$3, [
161
+ createElementVNode("span", _hoisted_10$3, toDisplayString(__props.subHeadline), 1),
162
+ (openBlock(), createElementBlock("svg", _hoisted_11$2, [
163
163
  createElementVNode("path", {
164
164
  d: "M2 10C45 4 90 2 140 6C190 10 235 4 278 8",
165
165
  stroke: __props.underlineColor,
166
166
  "stroke-width": "4",
167
167
  "stroke-linecap": "round"
168
- }, null, 8, _hoisted_12$1)
168
+ }, null, 8, _hoisted_12$2)
169
169
  ]))
170
170
  ])) : createCommentVNode("", true)
171
171
  ])) : createCommentVNode("", true)
172
172
  ]),
173
- __props.description ? (openBlock(), createElementBlock("p", _hoisted_13$1, toDisplayString(__props.description), 1)) : createCommentVNode("", true),
173
+ __props.description ? (openBlock(), createElementBlock("p", _hoisted_13$2, toDisplayString(__props.description), 1)) : createCommentVNode("", true),
174
174
  renderSlot(_ctx.$slots, "branding-features", {}, () => [
175
- __props.features.length > 0 ? (openBlock(), createElementBlock("div", _hoisted_14$1, [
175
+ __props.features.length > 0 ? (openBlock(), createElementBlock("div", _hoisted_14$2, [
176
176
  (openBlock(true), createElementBlock(Fragment, null, renderList(__props.features, (feature, index) => {
177
177
  return openBlock(), createElementBlock("div", {
178
178
  key: index,
@@ -181,7 +181,7 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
181
181
  createElementVNode("div", _hoisted_15$1, [
182
182
  createVNode(unref(Icon), {
183
183
  icon: feature.icon,
184
- class: "w-5 h-5"
184
+ class: "size-5"
185
185
  }, null, 8, ["icon"])
186
186
  ]),
187
187
  createElementVNode("span", null, toDisplayString(feature.text), 1)
@@ -206,7 +206,7 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
206
206
  createElementVNode("div", _hoisted_18, [
207
207
  createVNode(unref(Icon), {
208
208
  icon: __props.appIcon,
209
- class: "w-6 h-6 text-white"
209
+ class: "size-6 text-white"
210
210
  }, null, 8, ["icon"])
211
211
  ]),
212
212
  __props.appName ? (openBlock(), createElementBlock("span", _hoisted_19, toDisplayString(__props.appName), 1)) : createCommentVNode("", true)
@@ -232,22 +232,22 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
232
232
  };
233
233
  }
234
234
  });
235
- const _hoisted_1$1 = { class: "font-inter relative flex h-dvh overflow-hidden bg-gray-100 dark:bg-slate-900" };
236
- const _hoisted_2$1 = { class: "flex h-16 items-center px-3" };
237
- const _hoisted_3$1 = { class: "flex flex-1 items-center justify-center gap-3" };
238
- const _hoisted_4$1 = { class: "bg-primary text-primary-foreground flex size-8 items-center justify-center rounded-lg bg-white/20" };
239
- const _hoisted_5$1 = { class: "flex flex-col gap-3 px-3 pb-3" };
240
- const _hoisted_6$1 = { class: "flex flex-1 flex-col min-w-0" };
241
- const _hoisted_7$1 = { class: "flex h-16 items-center justify-between border-b border-slate-200 bg-white px-4 dark:border-slate-800 dark:bg-slate-950" };
242
- const _hoisted_8$1 = { class: "flex-1" };
243
- const _hoisted_9$1 = { class: "flex items-center gap-3" };
244
- const _hoisted_10$1 = { class: "flex items-center gap-2 rounded-lg p-1.5 transition hover:bg-gray-100 dark:hover:bg-gray-800" };
245
- const _hoisted_11 = { class: "flex size-8 items-center justify-center rounded-full bg-primary text-sm font-medium text-white" };
246
- const _hoisted_12 = { class: "hidden text-sm font-medium text-gray-700 dark:text-gray-300 md:block" };
247
- const _hoisted_13 = { class: "min-w-48 py-1" };
248
- const _hoisted_14 = { class: "flex flex-1 flex-col overflow-y-auto overflow-x-hidden" };
235
+ const _hoisted_1$2 = { class: "font-inter relative flex h-dvh overflow-hidden bg-gray-100 dark:bg-slate-900" };
236
+ const _hoisted_2$2 = { class: "flex h-16 items-center px-3" };
237
+ const _hoisted_3$2 = { class: "flex flex-1 items-center justify-center gap-3" };
238
+ const _hoisted_4$2 = { class: "bg-primary text-primary-foreground flex size-8 items-center justify-center rounded-lg bg-white/20" };
239
+ const _hoisted_5$2 = { class: "flex flex-col gap-3 px-3 pb-3" };
240
+ const _hoisted_6$2 = { class: "flex flex-1 flex-col min-w-0" };
241
+ const _hoisted_7$2 = { class: "flex h-16 items-center justify-between border-b border-slate-200 bg-white px-4 dark:border-slate-800 dark:bg-slate-950" };
242
+ const _hoisted_8$2 = { class: "flex-1" };
243
+ const _hoisted_9$2 = { class: "flex items-center gap-3" };
244
+ const _hoisted_10$2 = { class: "flex items-center gap-2 rounded-lg p-1.5 transition hover:bg-gray-100 dark:hover:bg-gray-800" };
245
+ const _hoisted_11$1 = { class: "flex size-8 items-center justify-center rounded-full bg-primary text-sm font-medium text-white" };
246
+ const _hoisted_12$1 = { class: "hidden text-sm font-medium text-gray-700 dark:text-gray-300 md:block" };
247
+ const _hoisted_13$1 = { class: "min-w-48 py-1" };
248
+ const _hoisted_14$1 = { class: "flex flex-1 flex-col overflow-y-auto overflow-x-hidden" };
249
249
  const _hoisted_15 = { class: "container mx-auto flex flex-1 flex-col gap-5 p-5 max-w-full" };
250
- const _sfc_main$1 = /* @__PURE__ */ defineComponent({
250
+ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
251
251
  __name: "BaseLayout",
252
252
  props: {
253
253
  menuItems: { default: () => [] },
@@ -332,7 +332,7 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
332
332
  }
333
333
  };
334
334
  return (_ctx, _cache) => {
335
- return openBlock(), createElementBlock("div", _hoisted_1$1, [
335
+ return openBlock(), createElementBlock("div", _hoisted_1$2, [
336
336
  sidebarOpenModel.value ? (openBlock(), createElementBlock("div", {
337
337
  key: 0,
338
338
  class: "absolute z-40 h-full w-full bg-slate-950/20 lg:hidden dark:bg-white/20",
@@ -344,10 +344,10 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
344
344
  __props.sidebarClass
345
345
  ], "@container max-lg:absolute max-lg:z-50 flex h-full w-76 flex-col justify-between gap-10 transition-all duration-1000 ease-in-out"])
346
346
  }, [
347
- createElementVNode("div", _hoisted_2$1, [
348
- createElementVNode("div", _hoisted_3$1, [
347
+ createElementVNode("div", _hoisted_2$2, [
348
+ createElementVNode("div", _hoisted_3$2, [
349
349
  renderSlot(_ctx.$slots, "logo", {}, () => [
350
- createElementVNode("div", _hoisted_4$1, [
350
+ createElementVNode("div", _hoisted_4$2, [
351
351
  createVNode(unref(Icon), {
352
352
  class: "size-5 text-white",
353
353
  icon: __props.appIcon
@@ -373,7 +373,7 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
373
373
  }, [
374
374
  renderSlot(_ctx.$slots, "menu", { currentPath: __props.currentPath }, () => [
375
375
  (openBlock(true), createElementBlock(Fragment, null, renderList(__props.menuItems, (item, index) => {
376
- return openBlock(), createBlock(_sfc_main$3, {
376
+ return openBlock(), createBlock(_sfc_main$4, {
377
377
  key: index,
378
378
  "menu-item": item,
379
379
  expanded: sidebarOpenModel.value,
@@ -382,12 +382,12 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
382
382
  }), 128))
383
383
  ])
384
384
  ], 2),
385
- createElementVNode("div", _hoisted_5$1, [
385
+ createElementVNode("div", _hoisted_5$2, [
386
386
  renderSlot(_ctx.$slots, "sidebar-footer")
387
387
  ])
388
388
  ], 2),
389
- createElementVNode("div", _hoisted_6$1, [
390
- createElementVNode("header", _hoisted_7$1, [
389
+ createElementVNode("div", _hoisted_6$2, [
390
+ createElementVNode("header", _hoisted_7$2, [
391
391
  createElementVNode("div", null, [
392
392
  createElementVNode("button", {
393
393
  class: "rounded-lg bg-gray-100 p-1 transition hover:bg-gray-200 dark:bg-gray-900 dark:hover:bg-gray-800",
@@ -399,10 +399,10 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
399
399
  })
400
400
  ])
401
401
  ]),
402
- createElementVNode("div", _hoisted_8$1, [
402
+ createElementVNode("div", _hoisted_8$2, [
403
403
  renderSlot(_ctx.$slots, "header-center")
404
404
  ]),
405
- createElementVNode("div", _hoisted_9$1, [
405
+ createElementVNode("div", _hoisted_9$2, [
406
406
  renderSlot(_ctx.$slots, "header-actions"),
407
407
  __props.showDarkToggle ? (openBlock(), createElementBlock("button", {
408
408
  key: 0,
@@ -414,14 +414,14 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
414
414
  class: "size-5 text-gray-900 dark:text-gray-100"
415
415
  }, null, 8, ["icon"])
416
416
  ])) : createCommentVNode("", true),
417
- __props.userName || __props.userAvatar ? (openBlock(), createBlock(_sfc_main$4, {
417
+ __props.userName || __props.userAvatar ? (openBlock(), createBlock(_sfc_main$5, {
418
418
  key: 1,
419
419
  align: "right"
420
420
  }, {
421
421
  trigger: withCtx(() => [
422
- createElementVNode("button", _hoisted_10$1, [
423
- createElementVNode("div", _hoisted_11, toDisplayString(__props.userAvatar || "?"), 1),
424
- createElementVNode("span", _hoisted_12, toDisplayString(__props.userName), 1),
422
+ createElementVNode("button", _hoisted_10$2, [
423
+ createElementVNode("div", _hoisted_11$1, toDisplayString(__props.userAvatar || "?"), 1),
424
+ createElementVNode("span", _hoisted_12$1, toDisplayString(__props.userName), 1),
425
425
  createVNode(unref(Icon), {
426
426
  icon: "lucide:chevron-down",
427
427
  class: "size-4 text-gray-500"
@@ -429,7 +429,7 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
429
429
  ])
430
430
  ]),
431
431
  default: withCtx(({ close }) => [
432
- createElementVNode("div", _hoisted_13, [
432
+ createElementVNode("div", _hoisted_13$1, [
433
433
  (openBlock(true), createElementBlock(Fragment, null, renderList(__props.userMenuItems, (item) => {
434
434
  return openBlock(), createBlock(resolveDynamicComponent(item.link ? routerLinkComponent.value : "button"), mergeProps({
435
435
  key: item.label
@@ -457,7 +457,7 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
457
457
  })) : createCommentVNode("", true)
458
458
  ])
459
459
  ]),
460
- createElementVNode("div", _hoisted_14, [
460
+ createElementVNode("div", _hoisted_14$1, [
461
461
  createElementVNode("main", _hoisted_15, [
462
462
  renderSlot(_ctx.$slots, "default", {}, () => [
463
463
  routerViewComponent.value ? (openBlock(), createBlock(resolveDynamicComponent(routerViewComponent.value), { key: 0 })) : createCommentVNode("", true)
@@ -469,29 +469,29 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
469
469
  };
470
470
  }
471
471
  });
472
- const _hoisted_1 = { class: "flex flex-col gap-4" };
473
- const _hoisted_2 = {
472
+ const _hoisted_1$1 = { class: "flex flex-col gap-4" };
473
+ const _hoisted_2$1 = {
474
474
  key: 0,
475
475
  "aria-label": "Breadcrumb"
476
476
  };
477
- const _hoisted_3 = { class: "flex items-center" };
478
- const _hoisted_4 = {
477
+ const _hoisted_3$1 = { class: "flex items-center" };
478
+ const _hoisted_4$1 = {
479
479
  key: 0,
480
480
  class: "mx-3 text-sm font-semibold text-gray-400 dark:text-gray-600"
481
481
  };
482
- const _hoisted_5 = { class: "flex flex-col gap-4 md:flex-row md:items-start md:justify-between" };
483
- const _hoisted_6 = { class: "flex flex-col gap-1 min-w-0 flex-1" };
484
- const _hoisted_7 = {
482
+ const _hoisted_5$1 = { class: "flex flex-col gap-4 md:flex-row md:items-start md:justify-between" };
483
+ const _hoisted_6$1 = { class: "flex flex-col gap-1 min-w-0 flex-1" };
484
+ const _hoisted_7$1 = {
485
485
  key: 0,
486
486
  class: "text-2xl font-bold text-gray-900 dark:text-gray-100 truncate"
487
487
  };
488
- const _hoisted_8 = {
488
+ const _hoisted_8$1 = {
489
489
  key: 1,
490
490
  class: "text-sm text-gray-600 dark:text-gray-400"
491
491
  };
492
- const _hoisted_9 = { class: "flex items-center gap-2 flex-wrap shrink-0" };
493
- const _hoisted_10 = { class: "flex-1" };
494
- const _sfc_main = /* @__PURE__ */ defineComponent({
492
+ const _hoisted_9$1 = { class: "flex items-center gap-2 flex-wrap shrink-0" };
493
+ const _hoisted_10$1 = { class: "flex-1" };
494
+ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
495
495
  __name: "PageLayout",
496
496
  props: {
497
497
  title: {},
@@ -516,15 +516,15 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
516
516
  return { to: link };
517
517
  };
518
518
  return (_ctx, _cache) => {
519
- return openBlock(), createElementBlock("div", _hoisted_1, [
520
- __props.breadcrumbs && __props.breadcrumbs.length > 0 ? (openBlock(), createElementBlock("nav", _hoisted_2, [
521
- createElementVNode("ol", _hoisted_3, [
519
+ return openBlock(), createElementBlock("div", _hoisted_1$1, [
520
+ __props.breadcrumbs && __props.breadcrumbs.length > 0 ? (openBlock(), createElementBlock("nav", _hoisted_2$1, [
521
+ createElementVNode("ol", _hoisted_3$1, [
522
522
  (openBlock(true), createElementBlock(Fragment, null, renderList(__props.breadcrumbs, (breadcrumb, index) => {
523
523
  return openBlock(), createElementBlock("li", {
524
524
  key: index,
525
525
  class: "flex items-center"
526
526
  }, [
527
- index > 0 ? (openBlock(), createElementBlock("span", _hoisted_4, " / ")) : createCommentVNode("", true),
527
+ index > 0 ? (openBlock(), createElementBlock("span", _hoisted_4$1, " / ")) : createCommentVNode("", true),
528
528
  renderSlot(_ctx.$slots, "breadcrumb", {
529
529
  breadcrumb,
530
530
  index,
@@ -546,33 +546,180 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
546
546
  }), 128))
547
547
  ])
548
548
  ])) : createCommentVNode("", true),
549
- createElementVNode("div", _hoisted_5, [
550
- createElementVNode("div", _hoisted_6, [
551
- __props.title ? (openBlock(), createElementBlock("h1", _hoisted_7, [
549
+ createElementVNode("div", _hoisted_5$1, [
550
+ createElementVNode("div", _hoisted_6$1, [
551
+ __props.title ? (openBlock(), createElementBlock("h1", _hoisted_7$1, [
552
552
  renderSlot(_ctx.$slots, "title", {}, () => [
553
553
  createTextVNode(toDisplayString(__props.title), 1)
554
554
  ])
555
555
  ])) : createCommentVNode("", true),
556
- __props.description ? (openBlock(), createElementBlock("p", _hoisted_8, [
556
+ __props.description ? (openBlock(), createElementBlock("p", _hoisted_8$1, [
557
557
  renderSlot(_ctx.$slots, "description", {}, () => [
558
558
  createTextVNode(toDisplayString(__props.description), 1)
559
559
  ])
560
560
  ])) : createCommentVNode("", true)
561
561
  ]),
562
- createElementVNode("div", _hoisted_9, [
562
+ createElementVNode("div", _hoisted_9$1, [
563
563
  renderSlot(_ctx.$slots, "actions")
564
564
  ])
565
565
  ]),
566
- createElementVNode("div", _hoisted_10, [
566
+ createElementVNode("div", _hoisted_10$1, [
567
567
  renderSlot(_ctx.$slots, "default")
568
568
  ])
569
569
  ]);
570
570
  };
571
571
  }
572
572
  });
573
+ const _hoisted_1 = { class: "relative overflow-hidden bg-linear-to-br from-primary-600 via-primary-500 to-primary-400" };
574
+ const _hoisted_2 = {
575
+ key: 0,
576
+ class: "absolute inset-0 overflow-hidden pointer-events-none"
577
+ };
578
+ const _hoisted_3 = {
579
+ key: 1,
580
+ class: "absolute inset-0 overflow-hidden pointer-events-none"
581
+ };
582
+ const _hoisted_4 = { class: "relative px-4 pt-8 pb-10 sm:px-6 lg:px-8 max-w-5xl mx-auto" };
583
+ const _hoisted_5 = { class: "text-center mb-8 animate-fade-in-up" };
584
+ const _hoisted_6 = {
585
+ key: 0,
586
+ class: "inline-flex items-center gap-2 px-4 py-2 rounded-full bg-white/15 backdrop-blur-sm border border-white/20 mb-4"
587
+ };
588
+ const _hoisted_7 = {
589
+ key: 1,
590
+ class: "text-sm font-medium text-white"
591
+ };
592
+ const _hoisted_8 = { class: "text-2xl sm:text-3xl font-bold text-white mb-2" };
593
+ const _hoisted_9 = {
594
+ key: 1,
595
+ class: "text-primary-100 text-sm sm:text-base"
596
+ };
597
+ const _hoisted_10 = {
598
+ key: 0,
599
+ class: "animate-fade-in-up [animation-delay:0.1s]"
600
+ };
601
+ const _hoisted_11 = {
602
+ key: 0,
603
+ class: "w-10 h-10 mx-auto mb-2 rounded-xl bg-white/20 flex items-center justify-center"
604
+ };
605
+ const _hoisted_12 = { class: "text-2xl sm:text-3xl font-bold text-white" };
606
+ const _hoisted_13 = { class: "text-xs sm:text-sm text-primary-100" };
607
+ const _hoisted_14 = {
608
+ key: 2,
609
+ class: "absolute bottom-0 left-0 right-0"
610
+ };
611
+ const _sfc_main = /* @__PURE__ */ defineComponent({
612
+ __name: "PageHero",
613
+ props: {
614
+ title: {},
615
+ subtitle: {},
616
+ badge: {},
617
+ badgeIcon: {},
618
+ showBlobs: { type: Boolean, default: true },
619
+ showWave: { type: Boolean, default: true },
620
+ stats: {},
621
+ gradientDirection: { default: "br" },
622
+ decorativeIcons: {}
623
+ },
624
+ setup(__props) {
625
+ return (_ctx, _cache) => {
626
+ var _a, _b;
627
+ return openBlock(), createElementBlock("div", _hoisted_1, [
628
+ __props.showBlobs ? (openBlock(), createElementBlock("div", _hoisted_2, [..._cache[0] || (_cache[0] = [
629
+ createElementVNode("div", { class: "absolute -top-20 -right-20 w-72 h-72 bg-white/10 rounded-full blur-3xl animate-float" }, null, -1),
630
+ createElementVNode("div", { class: "absolute -bottom-32 -left-32 w-96 h-96 bg-white/5 rounded-full blur-3xl animate-float [animation-delay:1s]" }, null, -1)
631
+ ])])) : createCommentVNode("", true),
632
+ ((_a = __props.decorativeIcons) == null ? void 0 : _a.length) ? (openBlock(), createElementBlock("div", _hoisted_3, [
633
+ __props.decorativeIcons[0] ? (openBlock(), createBlock(unref(Icon), {
634
+ key: 0,
635
+ icon: __props.decorativeIcons[0],
636
+ class: "absolute top-12 right-8 w-24 h-24 text-white/5 rotate-12"
637
+ }, null, 8, ["icon"])) : createCommentVNode("", true),
638
+ __props.decorativeIcons[1] ? (openBlock(), createBlock(unref(Icon), {
639
+ key: 1,
640
+ icon: __props.decorativeIcons[1],
641
+ class: "absolute bottom-8 left-12 w-20 h-20 text-white/5 -rotate-12"
642
+ }, null, 8, ["icon"])) : createCommentVNode("", true)
643
+ ])) : createCommentVNode("", true),
644
+ renderSlot(_ctx.$slots, "background"),
645
+ createElementVNode("div", _hoisted_4, [
646
+ createElementVNode("div", _hoisted_5, [
647
+ __props.badge || __props.badgeIcon || _ctx.$slots.badge ? (openBlock(), createElementBlock("div", _hoisted_6, [
648
+ renderSlot(_ctx.$slots, "badge", {}, () => [
649
+ __props.badgeIcon ? (openBlock(), createBlock(unref(Icon), {
650
+ key: 0,
651
+ icon: __props.badgeIcon,
652
+ class: "w-5 h-5 text-white"
653
+ }, null, 8, ["icon"])) : createCommentVNode("", true),
654
+ __props.badge ? (openBlock(), createElementBlock("span", _hoisted_7, toDisplayString(__props.badge), 1)) : createCommentVNode("", true)
655
+ ])
656
+ ])) : createCommentVNode("", true),
657
+ createElementVNode("h1", _hoisted_8, [
658
+ renderSlot(_ctx.$slots, "title", {}, () => [
659
+ createTextVNode(toDisplayString(__props.title), 1)
660
+ ])
661
+ ]),
662
+ __props.subtitle || _ctx.$slots.subtitle ? (openBlock(), createElementBlock("p", _hoisted_9, [
663
+ renderSlot(_ctx.$slots, "subtitle", {}, () => [
664
+ createTextVNode(toDisplayString(__props.subtitle), 1)
665
+ ])
666
+ ])) : createCommentVNode("", true)
667
+ ]),
668
+ ((_b = __props.stats) == null ? void 0 : _b.length) || _ctx.$slots.stats ? (openBlock(), createElementBlock("div", _hoisted_10, [
669
+ renderSlot(_ctx.$slots, "stats", {}, () => {
670
+ var _a2, _b2, _c;
671
+ return [
672
+ createElementVNode("div", {
673
+ class: normalizeClass(["grid gap-3 sm:gap-4", [
674
+ ((_a2 = __props.stats) == null ? void 0 : _a2.length) === 2 ? "grid-cols-2" : "",
675
+ ((_b2 = __props.stats) == null ? void 0 : _b2.length) === 3 ? "grid-cols-3" : "",
676
+ ((_c = __props.stats) == null ? void 0 : _c.length) === 4 ? "grid-cols-2 sm:grid-cols-4" : "",
677
+ __props.stats && __props.stats.length > 4 ? "grid-cols-2 sm:grid-cols-3 lg:grid-cols-4" : ""
678
+ ]])
679
+ }, [
680
+ (openBlock(true), createElementBlock(Fragment, null, renderList(__props.stats, (stat, index) => {
681
+ return openBlock(), createElementBlock("div", {
682
+ key: index,
683
+ class: "bg-white/15 backdrop-blur-sm rounded-2xl p-4 border border-white/20 text-center"
684
+ }, [
685
+ stat.icon ? (openBlock(), createElementBlock("div", _hoisted_11, [
686
+ createVNode(unref(Icon), {
687
+ icon: stat.icon,
688
+ class: "w-5 h-5 text-white"
689
+ }, null, 8, ["icon"])
690
+ ])) : createCommentVNode("", true),
691
+ createElementVNode("div", _hoisted_12, toDisplayString(stat.value), 1),
692
+ createElementVNode("div", _hoisted_13, toDisplayString(stat.label), 1)
693
+ ]);
694
+ }), 128))
695
+ ], 2)
696
+ ];
697
+ })
698
+ ])) : createCommentVNode("", true),
699
+ renderSlot(_ctx.$slots, "content")
700
+ ]),
701
+ __props.showWave ? (openBlock(), createElementBlock("div", _hoisted_14, [..._cache[1] || (_cache[1] = [
702
+ createElementVNode("svg", {
703
+ viewBox: "0 0 1440 80",
704
+ fill: "none",
705
+ xmlns: "http://www.w3.org/2000/svg",
706
+ class: "w-full h-auto",
707
+ preserveAspectRatio: "none"
708
+ }, [
709
+ createElementVNode("path", {
710
+ d: "M0 80L60 74.7C120 69 240 59 360 53.3C480 48 600 48 720 53.3C840 59 960 69 1080 69.3C1200 69 1320 59 1380 53.3L1440 48V80H1380C1320 80 1200 80 1080 80C960 80 840 80 720 80C600 80 480 80 360 80C240 80 120 80 60 80H0Z",
711
+ class: "fill-gray-50 dark:fill-slate-900"
712
+ })
713
+ ], -1)
714
+ ])])) : createCommentVNode("", true)
715
+ ]);
716
+ };
717
+ }
718
+ });
573
719
  export {
574
- _sfc_main$2 as _,
575
- _sfc_main$1 as a,
576
- _sfc_main as b
720
+ _sfc_main$3 as _,
721
+ _sfc_main$2 as a,
722
+ _sfc_main$1 as b,
723
+ _sfc_main as c
577
724
  };
578
- //# sourceMappingURL=PageLayout.vue_vue_type_script_setup_true_lang-rMu1Z5uH.js.map
725
+ //# sourceMappingURL=PageHero.vue_vue_type_script_setup_true_lang-C-YXGDTY.js.map