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
@@ -2,51 +2,51 @@
2
2
  const vue = require("vue");
3
3
  const vue$1 = require("@iconify/vue");
4
4
  const Dropdown_vue_vue_type_script_setup_true_lang = require("./Dropdown.vue_vue_type_script_setup_true_lang-BNOHbbm5.cjs");
5
- const _hoisted_1$2 = { class: "flex min-h-screen" };
6
- const _hoisted_2$2 = {
5
+ const _hoisted_1$3 = { class: "flex min-h-screen" };
6
+ const _hoisted_2$3 = {
7
7
  key: 0,
8
8
  class: "absolute inset-0 overflow-hidden pointer-events-none"
9
9
  };
10
- const _hoisted_3$2 = {
10
+ const _hoisted_3$3 = {
11
11
  key: 1,
12
12
  class: "absolute inset-0 opacity-20 pointer-events-none",
13
13
  style: { "background-image": "radial-gradient(circle, rgba(255,255,255,0.4) 1px, transparent 1px)", "background-size": "24px 24px" }
14
14
  };
15
- const _hoisted_4$2 = { class: "relative z-10 flex flex-col justify-center px-16 py-12 text-white w-full" };
16
- const _hoisted_5$2 = { class: "flex items-center gap-3 mb-12" };
17
- const _hoisted_6$2 = { class: "w-14 h-14 bg-white/20 backdrop-blur-sm rounded-2xl flex items-center justify-center" };
18
- const _hoisted_7$2 = {
15
+ const _hoisted_4$3 = { class: "relative z-10 flex flex-col justify-center px-16 py-12 text-white w-full" };
16
+ const _hoisted_5$3 = { class: "flex items-center gap-3 mb-12" };
17
+ const _hoisted_6$3 = { class: "size-14 bg-white/20 backdrop-blur-sm rounded-2xl flex items-center justify-center" };
18
+ const _hoisted_7$3 = {
19
19
  key: 0,
20
20
  class: "text-3xl font-bold"
21
21
  };
22
- const _hoisted_8$2 = {
22
+ const _hoisted_8$3 = {
23
23
  key: 0,
24
24
  class: "text-4xl xl:text-5xl font-bold leading-tight mb-6"
25
25
  };
26
- const _hoisted_9$2 = {
26
+ const _hoisted_9$3 = {
27
27
  key: 1,
28
28
  class: "relative inline-block"
29
29
  };
30
- const _hoisted_10$2 = { class: "relative z-10" };
31
- const _hoisted_11$1 = {
30
+ const _hoisted_10$3 = { class: "relative z-10" };
31
+ const _hoisted_11$2 = {
32
32
  class: "absolute -bottom-2 left-0 w-full",
33
33
  viewBox: "0 0 280 12",
34
34
  fill: "none",
35
35
  preserveAspectRatio: "none"
36
36
  };
37
- const _hoisted_12$1 = ["stroke"];
38
- const _hoisted_13$1 = {
37
+ const _hoisted_12$2 = ["stroke"];
38
+ const _hoisted_13$2 = {
39
39
  key: 0,
40
40
  class: "text-lg text-white/80 max-w-md mb-10"
41
41
  };
42
- const _hoisted_14$1 = {
42
+ const _hoisted_14$2 = {
43
43
  key: 0,
44
44
  class: "space-y-4"
45
45
  };
46
- const _hoisted_15$1 = { class: "w-10 h-10 rounded-xl bg-white/10 backdrop-blur-sm flex items-center justify-center shrink-0" };
46
+ const _hoisted_15$1 = { class: "size-10 rounded-xl bg-white/10 backdrop-blur-sm flex items-center justify-center shrink-0" };
47
47
  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" };
48
48
  const _hoisted_17 = { class: "lg:hidden text-center mb-8" };
49
- 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" };
49
+ 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" };
50
50
  const _hoisted_19 = {
51
51
  key: 0,
52
52
  class: "text-2xl font-bold text-gray-900 dark:text-white"
@@ -64,7 +64,7 @@ const _hoisted_22 = {
64
64
  class: "text-gray-600 dark:text-gray-400"
65
65
  };
66
66
  const _hoisted_23 = { class: "bg-white dark:bg-slate-800/80 rounded-3xl shadow-xl shadow-gray-200/50 dark:shadow-none p-8" };
67
- const _sfc_main$2 = /* @__PURE__ */ vue.defineComponent({
67
+ const _sfc_main$3 = /* @__PURE__ */ vue.defineComponent({
68
68
  __name: "AuthLayout",
69
69
  props: {
70
70
  appName: { default: "" },
@@ -115,7 +115,7 @@ const _sfc_main$2 = /* @__PURE__ */ vue.defineComponent({
115
115
  return classes.filter(Boolean);
116
116
  });
117
117
  return (_ctx, _cache) => {
118
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$2, [
118
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$3, [
119
119
  hasBrandingContent.value || _ctx.$slots["branding-panel"] ? (vue.openBlock(), vue.createElementBlock("div", {
120
120
  key: 0,
121
121
  class: vue.normalizeClass([
@@ -124,56 +124,56 @@ const _sfc_main$2 = /* @__PURE__ */ vue.defineComponent({
124
124
  ])
125
125
  }, [
126
126
  vue.renderSlot(_ctx.$slots, "branding-panel", {}, () => [
127
- __props.showDecorations ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$2, [..._cache[0] || (_cache[0] = [
128
- vue.createElementVNode("div", { class: "absolute -top-20 -left-20 w-80 h-80 bg-white/5 rounded-full blur-3xl" }, null, -1),
129
- vue.createElementVNode("div", { class: "absolute top-1/3 right-10 w-60 h-60 bg-white/5 rounded-full blur-3xl" }, null, -1),
130
- vue.createElementVNode("div", { class: "absolute bottom-20 left-1/4 w-72 h-72 bg-white/5 rounded-full blur-3xl" }, null, -1)
127
+ __props.showDecorations ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$3, [..._cache[0] || (_cache[0] = [
128
+ vue.createElementVNode("div", { class: "absolute -top-20 -left-20 size-80 bg-white/5 rounded-full blur-3xl" }, null, -1),
129
+ vue.createElementVNode("div", { class: "absolute top-1/3 right-10 size-60 bg-white/5 rounded-full blur-3xl" }, null, -1),
130
+ vue.createElementVNode("div", { class: "absolute bottom-20 left-1/4 size-72 bg-white/5 rounded-full blur-3xl" }, null, -1)
131
131
  ])])) : vue.createCommentVNode("", true),
132
- __props.showPattern ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_3$2)) : vue.createCommentVNode("", true),
132
+ __props.showPattern ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_3$3)) : vue.createCommentVNode("", true),
133
133
  __props.showDecorations ? (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 2 }, [
134
- _cache[1] || (_cache[1] = vue.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)),
135
- _cache[2] || (_cache[2] = vue.createElementVNode("div", { class: "absolute bottom-32 left-16 w-12 h-12 border-2 border-white/20 rounded-full pointer-events-none" }, null, -1)),
136
- _cache[3] || (_cache[3] = vue.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))
134
+ _cache[1] || (_cache[1] = vue.createElementVNode("div", { class: "absolute top-20 right-20 size-16 border-2 border-white/20 rounded-2xl rotate-12 pointer-events-none" }, null, -1)),
135
+ _cache[2] || (_cache[2] = vue.createElementVNode("div", { class: "absolute bottom-32 left-16 size-12 border-2 border-white/20 rounded-full pointer-events-none" }, null, -1)),
136
+ _cache[3] || (_cache[3] = vue.createElementVNode("div", { class: "absolute top-1/2 left-10 size-8 bg-white/10 rounded-lg rotate-45 pointer-events-none" }, null, -1))
137
137
  ], 64)) : vue.createCommentVNode("", true),
138
- vue.createElementVNode("div", _hoisted_4$2, [
138
+ vue.createElementVNode("div", _hoisted_4$3, [
139
139
  vue.createElementVNode("div", {
140
140
  class: vue.normalizeClass(__props.brandingAnimation)
141
141
  }, [
142
- vue.createElementVNode("div", _hoisted_5$2, [
142
+ vue.createElementVNode("div", _hoisted_5$3, [
143
143
  vue.renderSlot(_ctx.$slots, "branding-logo", {}, () => [
144
144
  __props.appName || __props.appIcon ? (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 0 }, [
145
- vue.createElementVNode("div", _hoisted_6$2, [
145
+ vue.createElementVNode("div", _hoisted_6$3, [
146
146
  vue.createVNode(vue.unref(vue$1.Icon), {
147
147
  icon: __props.appIcon,
148
- class: "w-8 h-8 text-white"
148
+ class: "size-8 text-white"
149
149
  }, null, 8, ["icon"])
150
150
  ]),
151
- __props.appName ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_7$2, vue.toDisplayString(__props.appName), 1)) : vue.createCommentVNode("", true)
151
+ __props.appName ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_7$3, vue.toDisplayString(__props.appName), 1)) : vue.createCommentVNode("", true)
152
152
  ], 64)) : vue.createCommentVNode("", true)
153
153
  ])
154
154
  ]),
155
155
  vue.renderSlot(_ctx.$slots, "branding-headline", {}, () => [
156
- __props.headline || __props.subHeadline ? (vue.openBlock(), vue.createElementBlock("h1", _hoisted_8$2, [
156
+ __props.headline || __props.subHeadline ? (vue.openBlock(), vue.createElementBlock("h1", _hoisted_8$3, [
157
157
  __props.headline ? (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 0 }, [
158
158
  vue.createTextVNode(vue.toDisplayString(__props.headline), 1),
159
159
  _cache[4] || (_cache[4] = vue.createElementVNode("br", null, null, -1))
160
160
  ], 64)) : vue.createCommentVNode("", true),
161
- __props.subHeadline ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_9$2, [
162
- vue.createElementVNode("span", _hoisted_10$2, vue.toDisplayString(__props.subHeadline), 1),
163
- (vue.openBlock(), vue.createElementBlock("svg", _hoisted_11$1, [
161
+ __props.subHeadline ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_9$3, [
162
+ vue.createElementVNode("span", _hoisted_10$3, vue.toDisplayString(__props.subHeadline), 1),
163
+ (vue.openBlock(), vue.createElementBlock("svg", _hoisted_11$2, [
164
164
  vue.createElementVNode("path", {
165
165
  d: "M2 10C45 4 90 2 140 6C190 10 235 4 278 8",
166
166
  stroke: __props.underlineColor,
167
167
  "stroke-width": "4",
168
168
  "stroke-linecap": "round"
169
- }, null, 8, _hoisted_12$1)
169
+ }, null, 8, _hoisted_12$2)
170
170
  ]))
171
171
  ])) : vue.createCommentVNode("", true)
172
172
  ])) : vue.createCommentVNode("", true)
173
173
  ]),
174
- __props.description ? (vue.openBlock(), vue.createElementBlock("p", _hoisted_13$1, vue.toDisplayString(__props.description), 1)) : vue.createCommentVNode("", true),
174
+ __props.description ? (vue.openBlock(), vue.createElementBlock("p", _hoisted_13$2, vue.toDisplayString(__props.description), 1)) : vue.createCommentVNode("", true),
175
175
  vue.renderSlot(_ctx.$slots, "branding-features", {}, () => [
176
- __props.features.length > 0 ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_14$1, [
176
+ __props.features.length > 0 ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_14$2, [
177
177
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(__props.features, (feature, index) => {
178
178
  return vue.openBlock(), vue.createElementBlock("div", {
179
179
  key: index,
@@ -182,7 +182,7 @@ const _sfc_main$2 = /* @__PURE__ */ vue.defineComponent({
182
182
  vue.createElementVNode("div", _hoisted_15$1, [
183
183
  vue.createVNode(vue.unref(vue$1.Icon), {
184
184
  icon: feature.icon,
185
- class: "w-5 h-5"
185
+ class: "size-5"
186
186
  }, null, 8, ["icon"])
187
187
  ]),
188
188
  vue.createElementVNode("span", null, vue.toDisplayString(feature.text), 1)
@@ -207,7 +207,7 @@ const _sfc_main$2 = /* @__PURE__ */ vue.defineComponent({
207
207
  vue.createElementVNode("div", _hoisted_18, [
208
208
  vue.createVNode(vue.unref(vue$1.Icon), {
209
209
  icon: __props.appIcon,
210
- class: "w-6 h-6 text-white"
210
+ class: "size-6 text-white"
211
211
  }, null, 8, ["icon"])
212
212
  ]),
213
213
  __props.appName ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_19, vue.toDisplayString(__props.appName), 1)) : vue.createCommentVNode("", true)
@@ -233,22 +233,22 @@ const _sfc_main$2 = /* @__PURE__ */ vue.defineComponent({
233
233
  };
234
234
  }
235
235
  });
236
- const _hoisted_1$1 = { class: "font-inter relative flex h-dvh overflow-hidden bg-gray-100 dark:bg-slate-900" };
237
- const _hoisted_2$1 = { class: "flex h-16 items-center px-3" };
238
- const _hoisted_3$1 = { class: "flex flex-1 items-center justify-center gap-3" };
239
- const _hoisted_4$1 = { class: "bg-primary text-primary-foreground flex size-8 items-center justify-center rounded-lg bg-white/20" };
240
- const _hoisted_5$1 = { class: "flex flex-col gap-3 px-3 pb-3" };
241
- const _hoisted_6$1 = { class: "flex flex-1 flex-col min-w-0" };
242
- 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" };
243
- const _hoisted_8$1 = { class: "flex-1" };
244
- const _hoisted_9$1 = { class: "flex items-center gap-3" };
245
- 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" };
246
- const _hoisted_11 = { class: "flex size-8 items-center justify-center rounded-full bg-primary text-sm font-medium text-white" };
247
- const _hoisted_12 = { class: "hidden text-sm font-medium text-gray-700 dark:text-gray-300 md:block" };
248
- const _hoisted_13 = { class: "min-w-48 py-1" };
249
- const _hoisted_14 = { class: "flex flex-1 flex-col overflow-y-auto overflow-x-hidden" };
236
+ const _hoisted_1$2 = { class: "font-inter relative flex h-dvh overflow-hidden bg-gray-100 dark:bg-slate-900" };
237
+ const _hoisted_2$2 = { class: "flex h-16 items-center px-3" };
238
+ const _hoisted_3$2 = { class: "flex flex-1 items-center justify-center gap-3" };
239
+ const _hoisted_4$2 = { class: "bg-primary text-primary-foreground flex size-8 items-center justify-center rounded-lg bg-white/20" };
240
+ const _hoisted_5$2 = { class: "flex flex-col gap-3 px-3 pb-3" };
241
+ const _hoisted_6$2 = { class: "flex flex-1 flex-col min-w-0" };
242
+ 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" };
243
+ const _hoisted_8$2 = { class: "flex-1" };
244
+ const _hoisted_9$2 = { class: "flex items-center gap-3" };
245
+ 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" };
246
+ const _hoisted_11$1 = { class: "flex size-8 items-center justify-center rounded-full bg-primary text-sm font-medium text-white" };
247
+ const _hoisted_12$1 = { class: "hidden text-sm font-medium text-gray-700 dark:text-gray-300 md:block" };
248
+ const _hoisted_13$1 = { class: "min-w-48 py-1" };
249
+ const _hoisted_14$1 = { class: "flex flex-1 flex-col overflow-y-auto overflow-x-hidden" };
250
250
  const _hoisted_15 = { class: "container mx-auto flex flex-1 flex-col gap-5 p-5 max-w-full" };
251
- const _sfc_main$1 = /* @__PURE__ */ vue.defineComponent({
251
+ const _sfc_main$2 = /* @__PURE__ */ vue.defineComponent({
252
252
  __name: "BaseLayout",
253
253
  props: {
254
254
  menuItems: { default: () => [] },
@@ -333,7 +333,7 @@ const _sfc_main$1 = /* @__PURE__ */ vue.defineComponent({
333
333
  }
334
334
  };
335
335
  return (_ctx, _cache) => {
336
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$1, [
336
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$2, [
337
337
  sidebarOpenModel.value ? (vue.openBlock(), vue.createElementBlock("div", {
338
338
  key: 0,
339
339
  class: "absolute z-40 h-full w-full bg-slate-950/20 lg:hidden dark:bg-white/20",
@@ -345,10 +345,10 @@ const _sfc_main$1 = /* @__PURE__ */ vue.defineComponent({
345
345
  __props.sidebarClass
346
346
  ], "@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"])
347
347
  }, [
348
- vue.createElementVNode("div", _hoisted_2$1, [
349
- vue.createElementVNode("div", _hoisted_3$1, [
348
+ vue.createElementVNode("div", _hoisted_2$2, [
349
+ vue.createElementVNode("div", _hoisted_3$2, [
350
350
  vue.renderSlot(_ctx.$slots, "logo", {}, () => [
351
- vue.createElementVNode("div", _hoisted_4$1, [
351
+ vue.createElementVNode("div", _hoisted_4$2, [
352
352
  vue.createVNode(vue.unref(vue$1.Icon), {
353
353
  class: "size-5 text-white",
354
354
  icon: __props.appIcon
@@ -383,12 +383,12 @@ const _sfc_main$1 = /* @__PURE__ */ vue.defineComponent({
383
383
  }), 128))
384
384
  ])
385
385
  ], 2),
386
- vue.createElementVNode("div", _hoisted_5$1, [
386
+ vue.createElementVNode("div", _hoisted_5$2, [
387
387
  vue.renderSlot(_ctx.$slots, "sidebar-footer")
388
388
  ])
389
389
  ], 2),
390
- vue.createElementVNode("div", _hoisted_6$1, [
391
- vue.createElementVNode("header", _hoisted_7$1, [
390
+ vue.createElementVNode("div", _hoisted_6$2, [
391
+ vue.createElementVNode("header", _hoisted_7$2, [
392
392
  vue.createElementVNode("div", null, [
393
393
  vue.createElementVNode("button", {
394
394
  class: "rounded-lg bg-gray-100 p-1 transition hover:bg-gray-200 dark:bg-gray-900 dark:hover:bg-gray-800",
@@ -400,10 +400,10 @@ const _sfc_main$1 = /* @__PURE__ */ vue.defineComponent({
400
400
  })
401
401
  ])
402
402
  ]),
403
- vue.createElementVNode("div", _hoisted_8$1, [
403
+ vue.createElementVNode("div", _hoisted_8$2, [
404
404
  vue.renderSlot(_ctx.$slots, "header-center")
405
405
  ]),
406
- vue.createElementVNode("div", _hoisted_9$1, [
406
+ vue.createElementVNode("div", _hoisted_9$2, [
407
407
  vue.renderSlot(_ctx.$slots, "header-actions"),
408
408
  __props.showDarkToggle ? (vue.openBlock(), vue.createElementBlock("button", {
409
409
  key: 0,
@@ -420,9 +420,9 @@ const _sfc_main$1 = /* @__PURE__ */ vue.defineComponent({
420
420
  align: "right"
421
421
  }, {
422
422
  trigger: vue.withCtx(() => [
423
- vue.createElementVNode("button", _hoisted_10$1, [
424
- vue.createElementVNode("div", _hoisted_11, vue.toDisplayString(__props.userAvatar || "?"), 1),
425
- vue.createElementVNode("span", _hoisted_12, vue.toDisplayString(__props.userName), 1),
423
+ vue.createElementVNode("button", _hoisted_10$2, [
424
+ vue.createElementVNode("div", _hoisted_11$1, vue.toDisplayString(__props.userAvatar || "?"), 1),
425
+ vue.createElementVNode("span", _hoisted_12$1, vue.toDisplayString(__props.userName), 1),
426
426
  vue.createVNode(vue.unref(vue$1.Icon), {
427
427
  icon: "lucide:chevron-down",
428
428
  class: "size-4 text-gray-500"
@@ -430,7 +430,7 @@ const _sfc_main$1 = /* @__PURE__ */ vue.defineComponent({
430
430
  ])
431
431
  ]),
432
432
  default: vue.withCtx(({ close }) => [
433
- vue.createElementVNode("div", _hoisted_13, [
433
+ vue.createElementVNode("div", _hoisted_13$1, [
434
434
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(__props.userMenuItems, (item) => {
435
435
  return vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(item.link ? routerLinkComponent.value : "button"), vue.mergeProps({
436
436
  key: item.label
@@ -458,7 +458,7 @@ const _sfc_main$1 = /* @__PURE__ */ vue.defineComponent({
458
458
  })) : vue.createCommentVNode("", true)
459
459
  ])
460
460
  ]),
461
- vue.createElementVNode("div", _hoisted_14, [
461
+ vue.createElementVNode("div", _hoisted_14$1, [
462
462
  vue.createElementVNode("main", _hoisted_15, [
463
463
  vue.renderSlot(_ctx.$slots, "default", {}, () => [
464
464
  routerViewComponent.value ? (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(routerViewComponent.value), { key: 0 })) : vue.createCommentVNode("", true)
@@ -470,29 +470,29 @@ const _sfc_main$1 = /* @__PURE__ */ vue.defineComponent({
470
470
  };
471
471
  }
472
472
  });
473
- const _hoisted_1 = { class: "flex flex-col gap-4" };
474
- const _hoisted_2 = {
473
+ const _hoisted_1$1 = { class: "flex flex-col gap-4" };
474
+ const _hoisted_2$1 = {
475
475
  key: 0,
476
476
  "aria-label": "Breadcrumb"
477
477
  };
478
- const _hoisted_3 = { class: "flex items-center" };
479
- const _hoisted_4 = {
478
+ const _hoisted_3$1 = { class: "flex items-center" };
479
+ const _hoisted_4$1 = {
480
480
  key: 0,
481
481
  class: "mx-3 text-sm font-semibold text-gray-400 dark:text-gray-600"
482
482
  };
483
- const _hoisted_5 = { class: "flex flex-col gap-4 md:flex-row md:items-start md:justify-between" };
484
- const _hoisted_6 = { class: "flex flex-col gap-1 min-w-0 flex-1" };
485
- const _hoisted_7 = {
483
+ const _hoisted_5$1 = { class: "flex flex-col gap-4 md:flex-row md:items-start md:justify-between" };
484
+ const _hoisted_6$1 = { class: "flex flex-col gap-1 min-w-0 flex-1" };
485
+ const _hoisted_7$1 = {
486
486
  key: 0,
487
487
  class: "text-2xl font-bold text-gray-900 dark:text-gray-100 truncate"
488
488
  };
489
- const _hoisted_8 = {
489
+ const _hoisted_8$1 = {
490
490
  key: 1,
491
491
  class: "text-sm text-gray-600 dark:text-gray-400"
492
492
  };
493
- const _hoisted_9 = { class: "flex items-center gap-2 flex-wrap shrink-0" };
494
- const _hoisted_10 = { class: "flex-1" };
495
- const _sfc_main = /* @__PURE__ */ vue.defineComponent({
493
+ const _hoisted_9$1 = { class: "flex items-center gap-2 flex-wrap shrink-0" };
494
+ const _hoisted_10$1 = { class: "flex-1" };
495
+ const _sfc_main$1 = /* @__PURE__ */ vue.defineComponent({
496
496
  __name: "PageLayout",
497
497
  props: {
498
498
  title: {},
@@ -517,15 +517,15 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
517
517
  return { to: link };
518
518
  };
519
519
  return (_ctx, _cache) => {
520
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1, [
521
- __props.breadcrumbs && __props.breadcrumbs.length > 0 ? (vue.openBlock(), vue.createElementBlock("nav", _hoisted_2, [
522
- vue.createElementVNode("ol", _hoisted_3, [
520
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$1, [
521
+ __props.breadcrumbs && __props.breadcrumbs.length > 0 ? (vue.openBlock(), vue.createElementBlock("nav", _hoisted_2$1, [
522
+ vue.createElementVNode("ol", _hoisted_3$1, [
523
523
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(__props.breadcrumbs, (breadcrumb, index) => {
524
524
  return vue.openBlock(), vue.createElementBlock("li", {
525
525
  key: index,
526
526
  class: "flex items-center"
527
527
  }, [
528
- index > 0 ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_4, " / ")) : vue.createCommentVNode("", true),
528
+ index > 0 ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_4$1, " / ")) : vue.createCommentVNode("", true),
529
529
  vue.renderSlot(_ctx.$slots, "breadcrumb", {
530
530
  breadcrumb,
531
531
  index,
@@ -547,31 +547,178 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
547
547
  }), 128))
548
548
  ])
549
549
  ])) : vue.createCommentVNode("", true),
550
- vue.createElementVNode("div", _hoisted_5, [
551
- vue.createElementVNode("div", _hoisted_6, [
552
- __props.title ? (vue.openBlock(), vue.createElementBlock("h1", _hoisted_7, [
550
+ vue.createElementVNode("div", _hoisted_5$1, [
551
+ vue.createElementVNode("div", _hoisted_6$1, [
552
+ __props.title ? (vue.openBlock(), vue.createElementBlock("h1", _hoisted_7$1, [
553
553
  vue.renderSlot(_ctx.$slots, "title", {}, () => [
554
554
  vue.createTextVNode(vue.toDisplayString(__props.title), 1)
555
555
  ])
556
556
  ])) : vue.createCommentVNode("", true),
557
- __props.description ? (vue.openBlock(), vue.createElementBlock("p", _hoisted_8, [
557
+ __props.description ? (vue.openBlock(), vue.createElementBlock("p", _hoisted_8$1, [
558
558
  vue.renderSlot(_ctx.$slots, "description", {}, () => [
559
559
  vue.createTextVNode(vue.toDisplayString(__props.description), 1)
560
560
  ])
561
561
  ])) : vue.createCommentVNode("", true)
562
562
  ]),
563
- vue.createElementVNode("div", _hoisted_9, [
563
+ vue.createElementVNode("div", _hoisted_9$1, [
564
564
  vue.renderSlot(_ctx.$slots, "actions")
565
565
  ])
566
566
  ]),
567
- vue.createElementVNode("div", _hoisted_10, [
567
+ vue.createElementVNode("div", _hoisted_10$1, [
568
568
  vue.renderSlot(_ctx.$slots, "default")
569
569
  ])
570
570
  ]);
571
571
  };
572
572
  }
573
573
  });
574
- exports._sfc_main = _sfc_main$2;
575
- exports._sfc_main$1 = _sfc_main$1;
576
- exports._sfc_main$2 = _sfc_main;
577
- //# sourceMappingURL=PageLayout.vue_vue_type_script_setup_true_lang-hhzpkC6_.cjs.map
574
+ const _hoisted_1 = { class: "relative overflow-hidden bg-linear-to-br from-primary-600 via-primary-500 to-primary-400" };
575
+ const _hoisted_2 = {
576
+ key: 0,
577
+ class: "absolute inset-0 overflow-hidden pointer-events-none"
578
+ };
579
+ const _hoisted_3 = {
580
+ key: 1,
581
+ class: "absolute inset-0 overflow-hidden pointer-events-none"
582
+ };
583
+ const _hoisted_4 = { class: "relative px-4 pt-8 pb-10 sm:px-6 lg:px-8 max-w-5xl mx-auto" };
584
+ const _hoisted_5 = { class: "text-center mb-8 animate-fade-in-up" };
585
+ const _hoisted_6 = {
586
+ key: 0,
587
+ 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"
588
+ };
589
+ const _hoisted_7 = {
590
+ key: 1,
591
+ class: "text-sm font-medium text-white"
592
+ };
593
+ const _hoisted_8 = { class: "text-2xl sm:text-3xl font-bold text-white mb-2" };
594
+ const _hoisted_9 = {
595
+ key: 1,
596
+ class: "text-primary-100 text-sm sm:text-base"
597
+ };
598
+ const _hoisted_10 = {
599
+ key: 0,
600
+ class: "animate-fade-in-up [animation-delay:0.1s]"
601
+ };
602
+ const _hoisted_11 = {
603
+ key: 0,
604
+ class: "w-10 h-10 mx-auto mb-2 rounded-xl bg-white/20 flex items-center justify-center"
605
+ };
606
+ const _hoisted_12 = { class: "text-2xl sm:text-3xl font-bold text-white" };
607
+ const _hoisted_13 = { class: "text-xs sm:text-sm text-primary-100" };
608
+ const _hoisted_14 = {
609
+ key: 2,
610
+ class: "absolute bottom-0 left-0 right-0"
611
+ };
612
+ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
613
+ __name: "PageHero",
614
+ props: {
615
+ title: {},
616
+ subtitle: {},
617
+ badge: {},
618
+ badgeIcon: {},
619
+ showBlobs: { type: Boolean, default: true },
620
+ showWave: { type: Boolean, default: true },
621
+ stats: {},
622
+ gradientDirection: { default: "br" },
623
+ decorativeIcons: {}
624
+ },
625
+ setup(__props) {
626
+ return (_ctx, _cache) => {
627
+ var _a, _b;
628
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1, [
629
+ __props.showBlobs ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2, [..._cache[0] || (_cache[0] = [
630
+ vue.createElementVNode("div", { class: "absolute -top-20 -right-20 w-72 h-72 bg-white/10 rounded-full blur-3xl animate-float" }, null, -1),
631
+ vue.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)
632
+ ])])) : vue.createCommentVNode("", true),
633
+ ((_a = __props.decorativeIcons) == null ? void 0 : _a.length) ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_3, [
634
+ __props.decorativeIcons[0] ? (vue.openBlock(), vue.createBlock(vue.unref(vue$1.Icon), {
635
+ key: 0,
636
+ icon: __props.decorativeIcons[0],
637
+ class: "absolute top-12 right-8 w-24 h-24 text-white/5 rotate-12"
638
+ }, null, 8, ["icon"])) : vue.createCommentVNode("", true),
639
+ __props.decorativeIcons[1] ? (vue.openBlock(), vue.createBlock(vue.unref(vue$1.Icon), {
640
+ key: 1,
641
+ icon: __props.decorativeIcons[1],
642
+ class: "absolute bottom-8 left-12 w-20 h-20 text-white/5 -rotate-12"
643
+ }, null, 8, ["icon"])) : vue.createCommentVNode("", true)
644
+ ])) : vue.createCommentVNode("", true),
645
+ vue.renderSlot(_ctx.$slots, "background"),
646
+ vue.createElementVNode("div", _hoisted_4, [
647
+ vue.createElementVNode("div", _hoisted_5, [
648
+ __props.badge || __props.badgeIcon || _ctx.$slots.badge ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_6, [
649
+ vue.renderSlot(_ctx.$slots, "badge", {}, () => [
650
+ __props.badgeIcon ? (vue.openBlock(), vue.createBlock(vue.unref(vue$1.Icon), {
651
+ key: 0,
652
+ icon: __props.badgeIcon,
653
+ class: "w-5 h-5 text-white"
654
+ }, null, 8, ["icon"])) : vue.createCommentVNode("", true),
655
+ __props.badge ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_7, vue.toDisplayString(__props.badge), 1)) : vue.createCommentVNode("", true)
656
+ ])
657
+ ])) : vue.createCommentVNode("", true),
658
+ vue.createElementVNode("h1", _hoisted_8, [
659
+ vue.renderSlot(_ctx.$slots, "title", {}, () => [
660
+ vue.createTextVNode(vue.toDisplayString(__props.title), 1)
661
+ ])
662
+ ]),
663
+ __props.subtitle || _ctx.$slots.subtitle ? (vue.openBlock(), vue.createElementBlock("p", _hoisted_9, [
664
+ vue.renderSlot(_ctx.$slots, "subtitle", {}, () => [
665
+ vue.createTextVNode(vue.toDisplayString(__props.subtitle), 1)
666
+ ])
667
+ ])) : vue.createCommentVNode("", true)
668
+ ]),
669
+ ((_b = __props.stats) == null ? void 0 : _b.length) || _ctx.$slots.stats ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_10, [
670
+ vue.renderSlot(_ctx.$slots, "stats", {}, () => {
671
+ var _a2, _b2, _c;
672
+ return [
673
+ vue.createElementVNode("div", {
674
+ class: vue.normalizeClass(["grid gap-3 sm:gap-4", [
675
+ ((_a2 = __props.stats) == null ? void 0 : _a2.length) === 2 ? "grid-cols-2" : "",
676
+ ((_b2 = __props.stats) == null ? void 0 : _b2.length) === 3 ? "grid-cols-3" : "",
677
+ ((_c = __props.stats) == null ? void 0 : _c.length) === 4 ? "grid-cols-2 sm:grid-cols-4" : "",
678
+ __props.stats && __props.stats.length > 4 ? "grid-cols-2 sm:grid-cols-3 lg:grid-cols-4" : ""
679
+ ]])
680
+ }, [
681
+ (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(__props.stats, (stat, index) => {
682
+ return vue.openBlock(), vue.createElementBlock("div", {
683
+ key: index,
684
+ class: "bg-white/15 backdrop-blur-sm rounded-2xl p-4 border border-white/20 text-center"
685
+ }, [
686
+ stat.icon ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_11, [
687
+ vue.createVNode(vue.unref(vue$1.Icon), {
688
+ icon: stat.icon,
689
+ class: "w-5 h-5 text-white"
690
+ }, null, 8, ["icon"])
691
+ ])) : vue.createCommentVNode("", true),
692
+ vue.createElementVNode("div", _hoisted_12, vue.toDisplayString(stat.value), 1),
693
+ vue.createElementVNode("div", _hoisted_13, vue.toDisplayString(stat.label), 1)
694
+ ]);
695
+ }), 128))
696
+ ], 2)
697
+ ];
698
+ })
699
+ ])) : vue.createCommentVNode("", true),
700
+ vue.renderSlot(_ctx.$slots, "content")
701
+ ]),
702
+ __props.showWave ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_14, [..._cache[1] || (_cache[1] = [
703
+ vue.createElementVNode("svg", {
704
+ viewBox: "0 0 1440 80",
705
+ fill: "none",
706
+ xmlns: "http://www.w3.org/2000/svg",
707
+ class: "w-full h-auto",
708
+ preserveAspectRatio: "none"
709
+ }, [
710
+ vue.createElementVNode("path", {
711
+ 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",
712
+ class: "fill-gray-50 dark:fill-slate-900"
713
+ })
714
+ ], -1)
715
+ ])])) : vue.createCommentVNode("", true)
716
+ ]);
717
+ };
718
+ }
719
+ });
720
+ exports._sfc_main = _sfc_main$3;
721
+ exports._sfc_main$1 = _sfc_main$2;
722
+ exports._sfc_main$2 = _sfc_main$1;
723
+ exports._sfc_main$3 = _sfc_main;
724
+ //# sourceMappingURL=PageHero.vue_vue_type_script_setup_true_lang-CKCmOxOa.cjs.map