cisse-vue-ui 0.2.0 → 0.2.1
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.
- package/dist/{CollapsibleCard.vue_vue_type_script_setup_true_lang-Cs6KGC-0.cjs → CollapsibleCard.vue_vue_type_script_setup_true_lang-BEE4gCBC.cjs} +55 -46
- package/dist/CollapsibleCard.vue_vue_type_script_setup_true_lang-BEE4gCBC.cjs.map +1 -0
- package/dist/{CollapsibleCard.vue_vue_type_script_setup_true_lang-DTGAuLCh.js → CollapsibleCard.vue_vue_type_script_setup_true_lang-Dehf9Ji3.js} +56 -47
- package/dist/CollapsibleCard.vue_vue_type_script_setup_true_lang-Dehf9Ji3.js.map +1 -0
- package/dist/cisse-vue-ui.css +47 -0
- package/dist/components/core/index.cjs +10 -10
- package/dist/components/core/index.js +10 -10
- package/dist/components/index.cjs +10 -10
- package/dist/components/index.js +10 -10
- package/dist/{index-Ck4eaNes.js → index-CZNg2ZUJ.js} +14 -14
- package/dist/index-CZNg2ZUJ.js.map +1 -0
- package/dist/{index-c27X2k2e.cjs → index-ChNwGBwZ.cjs} +11 -11
- package/dist/index-ChNwGBwZ.cjs.map +1 -0
- package/dist/index.cjs +11 -11
- package/dist/index.js +11 -11
- package/dist/style.css +1 -1
- package/package.json +1 -1
- package/dist/CollapsibleCard.vue_vue_type_script_setup_true_lang-Cs6KGC-0.cjs.map +0 -1
- package/dist/CollapsibleCard.vue_vue_type_script_setup_true_lang-DTGAuLCh.js.map +0 -1
- package/dist/index-Ck4eaNes.js.map +0 -1
- package/dist/index-c27X2k2e.cjs.map +0 -1
package/dist/style.css
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */
|
|
2
|
-
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-space-x-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-font-weight:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-duration:initial;--tw-ease:initial}}}@layer theme{:root,:host{--color-red-50:oklch(97.1% .013 17.38);--color-red-100:oklch(93.6% .032 17.717);--color-red-200:oklch(88.5% .062 18.334);--color-red-400:oklch(70.4% .191 22.216);--color-red-500:oklch(63.7% .237 25.331);--color-red-600:oklch(57.7% .245 27.325);--color-red-800:oklch(44.4% .177 26.899);--color-red-900:oklch(39.6% .141 25.723);--color-red-950:oklch(25.8% .092 26.042);--color-orange-100:oklch(95.4% .038 75.164);--color-orange-400:oklch(75% .183 55.934);--color-orange-800:oklch(47% .157 37.304);--color-orange-900:oklch(40.8% .123 38.172);--color-yellow-50:oklch(98.7% .026 102.212);--color-yellow-100:oklch(97.3% .071 103.193);--color-yellow-200:oklch(94.5% .129 101.54);--color-yellow-400:oklch(85.2% .199 91.936);--color-yellow-500:oklch(79.5% .184 86.047);--color-yellow-600:oklch(68.1% .162 75.834);--color-yellow-800:oklch(47.6% .114 61.907);--color-yellow-900:oklch(42.1% .095 57.708);--color-yellow-950:oklch(28.6% .066 53.813);--color-green-50:oklch(98.2% .018 155.826);--color-green-100:oklch(96.2% .044 156.743);--color-green-200:oklch(92.5% .084 155.995);--color-green-400:oklch(79.2% .209 151.711);--color-green-500:oklch(72.3% .219 149.579);--color-green-600:oklch(62.7% .194 149.214);--color-green-800:oklch(44.8% .119 151.328);--color-green-900:oklch(39.3% .095 152.535);--color-green-950:oklch(26.6% .065 152.934);--color-blue-50:oklch(97% .014 254.604);--color-blue-100:oklch(93.2% .032 255.585);--color-blue-200:oklch(88.2% .059 254.128);--color-blue-400:oklch(70.7% .165 254.624);--color-blue-500:oklch(62.3% .214 259.815);--color-blue-600:oklch(54.6% .245 262.881);--color-blue-800:oklch(42.4% .199 265.638);--color-blue-900:oklch(37.9% .146 265.522);--color-blue-950:oklch(28.2% .091 267.935);--color-purple-100:oklch(94.6% .033 307.174);--color-purple-400:oklch(71.4% .203 305.504);--color-purple-800:oklch(43.8% .218 303.724);--color-purple-900:oklch(38.1% .176 304.987);--color-pink-100:oklch(94.8% .028 342.258);--color-pink-400:oklch(71.8% .202 349.761);--color-pink-500:oklch(65.6% .241 354.308);--color-pink-600:oklch(59.2% .249 .584);--color-pink-800:oklch(45.9% .187 3.815);--color-pink-900:oklch(40.8% .153 2.432);--color-slate-200:oklch(92.9% .013 255.508);--color-slate-800:oklch(27.9% .041 260.031);--color-slate-900:oklch(20.8% .042 265.755);--color-slate-950:oklch(12.9% .042 264.695);--color-gray-50:oklch(98.5% .002 247.839);--color-gray-100:oklch(96.7% .003 264.542);--color-gray-200:oklch(92.8% .006 264.531);--color-gray-300:oklch(87.2% .01 258.338);--color-gray-400:oklch(70.7% .022 261.325);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-600:oklch(44.6% .03 256.802);--color-gray-700:oklch(37.3% .034 259.733);--color-gray-800:oklch(27.8% .033 256.848);--color-gray-900:oklch(21% .034 264.665);--color-gray-950:oklch(13% .028 261.692);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-md:28rem;--container-3xl:48rem;--container-5xl:64rem;--container-7xl:80rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-base:1rem;--text-base--line-height:calc(1.5/1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75/1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2/1.5);--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--ease-in:cubic-bezier(.4,0,1,1);--ease-out:cubic-bezier(0,0,.2,1);--ease-in-out:cubic-bezier(.4,0,.2,1);--animate-spin:spin 1s linear infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--font-inter:"Inter","sans-serif";--font-outfit:Outfit,sans-serif;--color-primary:oklch(55.892% .22344 260);--color-primary-50:oklch(97% .02 260);--color-primary-100:oklch(94% .04 260);--color-primary-200:oklch(88% .08 260);--color-primary-300:oklch(78% .14 260);--color-primary-400:oklch(68% .18 260);--color-primary-500:oklch(55.892% .22344 260);--color-primary-600:oklch(48% .2 260);--color-primary-700:oklch(40% .17 260);--color-primary-800:oklch(32% .14 260);--color-primary-900:oklch(25% .1 260);--color-primary-950:oklch(18% .08 260);--color-primary-foreground:oklch(100% 0 none);--color-secondary:oklch(55% .2 10);--color-secondary-foreground:oklch(100% 0 none)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.\@container{container-type:inline-size}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:calc(var(--spacing)*0)}.top-0{top:calc(var(--spacing)*0)}.top-0\.25{top:calc(var(--spacing)*.25)}.top-1\/2{top:50%}.top-5{top:calc(var(--spacing)*5)}.top-6{top:calc(var(--spacing)*6)}.top-12{top:calc(var(--spacing)*12)}.right-0{right:calc(var(--spacing)*0)}.right-0\.25{right:calc(var(--spacing)*.25)}.right-5{right:calc(var(--spacing)*5)}.bottom-0{bottom:calc(var(--spacing)*0)}.left-0{left:calc(var(--spacing)*0)}.left-3{left:calc(var(--spacing)*3)}.left-6{left:calc(var(--spacing)*6)}.z-10{z-index:10}.z-40{z-index:40}.z-50{z-index:50}.z-\[9999\]{z-index:9999}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.mx-3{margin-inline:calc(var(--spacing)*3)}.mx-4{margin-inline:calc(var(--spacing)*4)}.mx-auto{margin-inline:auto}.my-1{margin-block:calc(var(--spacing)*1)}.mt-0\.5{margin-top:calc(var(--spacing)*.5)}.mt-1{margin-top:calc(var(--spacing)*1)}.mt-2{margin-top:calc(var(--spacing)*2)}.mt-4{margin-top:calc(var(--spacing)*4)}.-mb-px{margin-bottom:-1px}.mb-1{margin-bottom:calc(var(--spacing)*1)}.mb-2{margin-bottom:calc(var(--spacing)*2)}.mb-4{margin-bottom:calc(var(--spacing)*4)}.block{display:block}.flex{display:flex}.hidden{display:none}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.size-1\.5{width:calc(var(--spacing)*1.5);height:calc(var(--spacing)*1.5)}.size-1\/2{width:50%;height:50%}.size-2{width:calc(var(--spacing)*2);height:calc(var(--spacing)*2)}.size-2\.5{width:calc(var(--spacing)*2.5);height:calc(var(--spacing)*2.5)}.size-3{width:calc(var(--spacing)*3);height:calc(var(--spacing)*3)}.size-4{width:calc(var(--spacing)*4);height:calc(var(--spacing)*4)}.size-5{width:calc(var(--spacing)*5);height:calc(var(--spacing)*5)}.size-6{width:calc(var(--spacing)*6);height:calc(var(--spacing)*6)}.size-8{width:calc(var(--spacing)*8);height:calc(var(--spacing)*8)}.size-10{width:calc(var(--spacing)*10);height:calc(var(--spacing)*10)}.size-12{width:calc(var(--spacing)*12);height:calc(var(--spacing)*12)}.size-16{width:calc(var(--spacing)*16);height:calc(var(--spacing)*16)}.size-20{width:calc(var(--spacing)*20);height:calc(var(--spacing)*20)}.size-full{width:100%;height:100%}.h-0\.5{height:calc(var(--spacing)*.5)}.h-4{height:calc(var(--spacing)*4)}.h-5{height:calc(var(--spacing)*5)}.h-6{height:calc(var(--spacing)*6)}.h-7{height:calc(var(--spacing)*7)}.h-8{height:calc(var(--spacing)*8)}.h-10{height:calc(var(--spacing)*10)}.h-12{height:calc(var(--spacing)*12)}.h-16{height:calc(var(--spacing)*16)}.h-dvh{height:100dvh}.h-full{height:100%}.max-h-0{max-height:calc(var(--spacing)*0)}.max-h-60{max-height:calc(var(--spacing)*60)}.max-h-\[90vh\]{max-height:90vh}.max-h-\[2000px\]{max-height:2000px}.w-0\.5{width:calc(var(--spacing)*.5)}.w-4{width:calc(var(--spacing)*4)}.w-5{width:calc(var(--spacing)*5)}.w-8{width:calc(var(--spacing)*8)}.w-9{width:calc(var(--spacing)*9)}.w-10{width:calc(var(--spacing)*10)}.w-11{width:calc(var(--spacing)*11)}.w-12{width:calc(var(--spacing)*12)}.w-14{width:calc(var(--spacing)*14)}.w-16{width:calc(var(--spacing)*16)}.w-32{width:calc(var(--spacing)*32)}.w-48{width:calc(var(--spacing)*48)}.w-64{width:calc(var(--spacing)*64)}.w-76{width:calc(var(--spacing)*76)}.w-auto{width:auto}.w-full{width:100%}.max-w-3xl{max-width:var(--container-3xl)}.max-w-5xl{max-width:var(--container-5xl)}.max-w-7xl{max-width:var(--container-7xl)}.max-w-full{max-width:100%}.max-w-md{max-width:var(--container-md)}.min-w-0{min-width:calc(var(--spacing)*0)}.min-w-48{min-width:calc(var(--spacing)*48)}.min-w-\[10rem\]{min-width:10rem}.flex-1{flex:1}.flex-shrink-0,.shrink-0{flex-shrink:0}.-translate-x-1\/2{--tw-translate-x:calc(calc(1/2*100%)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.-translate-x-2{--tw-translate-x:calc(var(--spacing)*-2);translate:var(--tw-translate-x)var(--tw-translate-y)}.-translate-x-76{--tw-translate-x:calc(var(--spacing)*-76);translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-x-0{--tw-translate-x:calc(var(--spacing)*0);translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-x-1{--tw-translate-x:calc(var(--spacing)*1);translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-x-5{--tw-translate-x:calc(var(--spacing)*5);translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-x-6{--tw-translate-x:calc(var(--spacing)*6);translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-x-8{--tw-translate-x:calc(var(--spacing)*8);translate:var(--tw-translate-x)var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y:calc(calc(1/2*100%)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.scale-95{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x)var(--tw-scale-y)}.scale-100{--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x)var(--tw-scale-y)}.rotate-180{rotate:180deg}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.animate-spin{animation:var(--animate-spin)}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.resize{resize:both}.flex-col{flex-direction:column}.flex-row{flex-direction:row}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-0\.5{gap:calc(var(--spacing)*.5)}.gap-1{gap:calc(var(--spacing)*1)}.gap-1\.5{gap:calc(var(--spacing)*1.5)}.gap-2{gap:calc(var(--spacing)*2)}.gap-2\.5{gap:calc(var(--spacing)*2.5)}.gap-3{gap:calc(var(--spacing)*3)}.gap-4{gap:calc(var(--spacing)*4)}.gap-5{gap:calc(var(--spacing)*5)}.gap-8{gap:calc(var(--spacing)*8)}.gap-10{gap:calc(var(--spacing)*10)}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*3)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*3)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*4)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-x-3>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*3)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*3)*calc(1 - var(--tw-space-x-reverse)))}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px*var(--tw-divide-y-reverse));border-bottom-width:calc(1px*calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-black\/10>:not(:last-child)){border-color:#0000001a}@supports (color:color-mix(in lab, red, red)){:where(.divide-black\/10>:not(:last-child)){border-color:color-mix(in oklab,var(--color-black)10%,transparent)}}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-xl{border-radius:var(--radius-xl)}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-4{border-style:var(--tw-border-style);border-width:4px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-solid{--tw-border-style:solid;border-style:solid}.border-blue-200{border-color:var(--color-blue-200)}.border-gray-200{border-color:var(--color-gray-200)}.border-gray-300{border-color:var(--color-gray-300)}.border-green-200{border-color:var(--color-green-200)}.border-primary{border-color:var(--color-primary)}.border-red-200{border-color:var(--color-red-200)}.border-red-500{border-color:var(--color-red-500)}.border-slate-200{border-color:var(--color-slate-200)}.border-transparent{border-color:#0000}.border-yellow-200{border-color:var(--color-yellow-200)}.border-r-transparent{border-right-color:#0000}.bg-\[\#172b4c\]{background-color:#172b4c}.bg-black\/5{background-color:#0000000d}@supports (color:color-mix(in lab, red, red)){.bg-black\/5{background-color:color-mix(in oklab,var(--color-black)5%,transparent)}}.bg-black\/50{background-color:#00000080}@supports (color:color-mix(in lab, red, red)){.bg-black\/50{background-color:color-mix(in oklab,var(--color-black)50%,transparent)}}.bg-blue-50{background-color:var(--color-blue-50)}.bg-blue-100{background-color:var(--color-blue-100)}.bg-blue-500{background-color:var(--color-blue-500)}.bg-gray-50{background-color:var(--color-gray-50)}.bg-gray-100{background-color:var(--color-gray-100)}.bg-gray-200{background-color:var(--color-gray-200)}.bg-gray-300{background-color:var(--color-gray-300)}.bg-gray-400{background-color:var(--color-gray-400)}.bg-green-50{background-color:var(--color-green-50)}.bg-green-100{background-color:var(--color-green-100)}.bg-green-500{background-color:var(--color-green-500)}.bg-orange-100{background-color:var(--color-orange-100)}.bg-pink-100{background-color:var(--color-pink-100)}.bg-primary{background-color:var(--color-primary)}.bg-primary-500{background-color:var(--color-primary-500)}.bg-primary\/5{background-color:#0768f30d}@supports (color:color-mix(in lab, red, red)){.bg-primary\/5{background-color:color-mix(in oklab,var(--color-primary)5%,transparent)}}.bg-primary\/10{background-color:#0768f31a}@supports (color:color-mix(in lab, red, red)){.bg-primary\/10{background-color:color-mix(in oklab,var(--color-primary)10%,transparent)}}.bg-purple-100{background-color:var(--color-purple-100)}.bg-red-50{background-color:var(--color-red-50)}.bg-red-100{background-color:var(--color-red-100)}.bg-red-500{background-color:var(--color-red-500)}.bg-red-600{background-color:var(--color-red-600)}.bg-secondary{background-color:var(--color-secondary)}.bg-slate-950\/20{background-color:#02061833}@supports (color:color-mix(in lab, red, red)){.bg-slate-950\/20{background-color:color-mix(in oklab,var(--color-slate-950)20%,transparent)}}.bg-transparent{background-color:#0000}.bg-white{background-color:var(--color-white)}.bg-white\/10{background-color:#ffffff1a}@supports (color:color-mix(in lab, red, red)){.bg-white\/10{background-color:color-mix(in oklab,var(--color-white)10%,transparent)}}.bg-white\/20{background-color:#fff3}@supports (color:color-mix(in lab, red, red)){.bg-white\/20{background-color:color-mix(in oklab,var(--color-white)20%,transparent)}}.bg-yellow-50{background-color:var(--color-yellow-50)}.bg-yellow-100{background-color:var(--color-yellow-100)}.bg-yellow-500{background-color:var(--color-yellow-500)}.object-cover{object-fit:cover}.p-1{padding:calc(var(--spacing)*1)}.p-1\.5{padding:calc(var(--spacing)*1.5)}.p-2{padding:calc(var(--spacing)*2)}.p-3{padding:calc(var(--spacing)*3)}.p-4{padding:calc(var(--spacing)*4)}.p-5{padding:calc(var(--spacing)*5)}.p-6{padding:calc(var(--spacing)*6)}.px-2{padding-inline:calc(var(--spacing)*2)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-4{padding-inline:calc(var(--spacing)*4)}.px-5{padding-inline:calc(var(--spacing)*5)}.px-6{padding-inline:calc(var(--spacing)*6)}.py-1{padding-block:calc(var(--spacing)*1)}.py-1\.5{padding-block:calc(var(--spacing)*1.5)}.py-2{padding-block:calc(var(--spacing)*2)}.py-2\.5{padding-block:calc(var(--spacing)*2.5)}.py-3{padding-block:calc(var(--spacing)*3)}.py-4{padding-block:calc(var(--spacing)*4)}.py-12{padding-block:calc(var(--spacing)*12)}.pt-2{padding-top:calc(var(--spacing)*2)}.pr-4{padding-right:calc(var(--spacing)*4)}.pb-3{padding-bottom:calc(var(--spacing)*3)}.pl-10{padding-left:calc(var(--spacing)*10)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.font-inter{font-family:var(--font-inter)}.font-outfit{font-family:var(--font-outfit)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.whitespace-nowrap{white-space:nowrap}.text-blue-500{color:var(--color-blue-500)}.text-blue-600{color:var(--color-blue-600)}.text-blue-800{color:var(--color-blue-800)}.text-gray-400{color:var(--color-gray-400)}.text-gray-500{color:var(--color-gray-500)}.text-gray-600{color:var(--color-gray-600)}.text-gray-700{color:var(--color-gray-700)}.text-gray-800{color:var(--color-gray-800)}.text-gray-900{color:var(--color-gray-900)}.text-green-500{color:var(--color-green-500)}.text-green-600{color:var(--color-green-600)}.text-green-800{color:var(--color-green-800)}.text-orange-800{color:var(--color-orange-800)}.text-pink-800{color:var(--color-pink-800)}.text-primary{color:var(--color-primary)}.text-primary-foreground{color:var(--color-primary-foreground)}.text-primary\/90{color:#0768f3e6}@supports (color:color-mix(in lab, red, red)){.text-primary\/90{color:color-mix(in oklab,var(--color-primary)90%,transparent)}}.text-purple-800{color:var(--color-purple-800)}.text-red-500{color:var(--color-red-500)}.text-red-600{color:var(--color-red-600)}.text-red-800{color:var(--color-red-800)}.text-secondary-foreground{color:var(--color-secondary-foreground)}.text-white{color:var(--color-white)}.text-white\/50{color:#ffffff80}@supports (color:color-mix(in lab, red, red)){.text-white\/50{color:color-mix(in oklab,var(--color-white)50%,transparent)}}.text-yellow-500{color:var(--color-yellow-500)}.text-yellow-600{color:var(--color-yellow-600)}.text-yellow-800{color:var(--color-yellow-800)}.uppercase{text-transform:uppercase}.underline{text-decoration-line:underline}.placeholder-gray-400::placeholder{color:var(--color-gray-400)}.opacity-0{opacity:0}.opacity-50{opacity:.5}.opacity-100{opacity:1}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a),0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-2{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-primary{--tw-ring-color:var(--color-primary)}.ring-primary\/20{--tw-ring-color:#0768f333}@supports (color:color-mix(in lab, red, red)){.ring-primary\/20{--tw-ring-color:color-mix(in oklab,var(--color-primary)20%,transparent)}}.ring-white{--tw-ring-color:var(--color-white)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-75{--tw-duration:75ms;transition-duration:75ms}.duration-100{--tw-duration:.1s;transition-duration:.1s}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.duration-500{--tw-duration:.5s;transition-duration:.5s}.duration-1000{--tw-duration:1s;transition-duration:1s}.ease-in{--tw-ease:var(--ease-in);transition-timing-function:var(--ease-in)}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.outline-none{--tw-outline-style:none;outline-style:none}@media (hover:hover){.group-hover\:text-blue-900:is(:where(.group):hover *){color:var(--color-blue-900)}.group-hover\:text-gray-900:is(:where(.group):hover *){color:var(--color-gray-900)}.group-hover\:text-green-900:is(:where(.group):hover *){color:var(--color-green-900)}.group-hover\:text-red-900:is(:where(.group):hover *){color:var(--color-red-900)}.group-hover\:text-white\/80:is(:where(.group):hover *){color:#fffc}@supports (color:color-mix(in lab, red, red)){.group-hover\:text-white\/80:is(:where(.group):hover *){color:color-mix(in oklab,var(--color-white)80%,transparent)}}.group-hover\:text-yellow-900:is(:where(.group):hover *){color:var(--color-yellow-900)}}.peer-invalid\:visible:is(:where(.peer):invalid~*){visibility:visible}.invalid\:border-pink-500:invalid{border-color:var(--color-pink-500)}.invalid\:text-pink-600:invalid{color:var(--color-pink-600)}@media (hover:hover){.hover\:border-gray-300:hover{border-color:var(--color-gray-300)}.hover\:border-gray-400:hover{border-color:var(--color-gray-400)}.hover\:border-primary\/30:hover{border-color:#0768f34d}@supports (color:color-mix(in lab, red, red)){.hover\:border-primary\/30:hover{border-color:color-mix(in oklab,var(--color-primary)30%,transparent)}}.hover\:bg-black\/5:hover{background-color:#0000000d}@supports (color:color-mix(in lab, red, red)){.hover\:bg-black\/5:hover{background-color:color-mix(in oklab,var(--color-black)5%,transparent)}}.hover\:bg-blue-100:hover{background-color:var(--color-blue-100)}.hover\:bg-gray-50:hover{background-color:var(--color-gray-50)}.hover\:bg-gray-100:hover{background-color:var(--color-gray-100)}.hover\:bg-gray-200:hover{background-color:var(--color-gray-200)}.hover\:bg-green-100:hover{background-color:var(--color-green-100)}.hover\:bg-green-600:hover{background-color:var(--color-green-600)}.hover\:bg-primary\/90:hover{background-color:#0768f3e6}@supports (color:color-mix(in lab, red, red)){.hover\:bg-primary\/90:hover{background-color:color-mix(in oklab,var(--color-primary)90%,transparent)}}.hover\:bg-red-50:hover{background-color:var(--color-red-50)}.hover\:bg-red-100:hover{background-color:var(--color-red-100)}.hover\:bg-red-600:hover{background-color:var(--color-red-600)}.hover\:bg-secondary\/90:hover{background-color:#ca2356e6}@supports (color:color-mix(in lab, red, red)){.hover\:bg-secondary\/90:hover{background-color:color-mix(in oklab,var(--color-secondary)90%,transparent)}}.hover\:bg-white\/20:hover{background-color:#fff3}@supports (color:color-mix(in lab, red, red)){.hover\:bg-white\/20:hover{background-color:color-mix(in oklab,var(--color-white)20%,transparent)}}.hover\:bg-yellow-100:hover{background-color:var(--color-yellow-100)}.hover\:text-gray-600:hover{color:var(--color-gray-600)}.hover\:text-gray-700:hover{color:var(--color-gray-700)}.hover\:text-gray-800:hover{color:var(--color-gray-800)}.hover\:text-gray-900:hover{color:var(--color-gray-900)}.hover\:text-primary\/90:hover{color:#0768f3e6}@supports (color:color-mix(in lab, red, red)){.hover\:text-primary\/90:hover{color:color-mix(in oklab,var(--color-primary)90%,transparent)}}.hover\:underline:hover{text-decoration-line:underline}.hover\:shadow-md:hover{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}.focus\:border-primary:focus{border-color:var(--color-primary)}.focus\:ring-1:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-green-500:focus{--tw-ring-color:var(--color-green-500)}.focus\:ring-primary:focus{--tw-ring-color:var(--color-primary)}.focus\:ring-red-500:focus{--tw-ring-color:var(--color-red-500)}.focus\:ring-secondary:focus{--tw-ring-color:var(--color-secondary)}.focus\:ring-offset-2:focus{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus\:invalid\:border-pink-500:focus:invalid{border-color:var(--color-pink-500)}.focus\:invalid\:ring-pink-500:focus:invalid{--tw-ring-color:var(--color-pink-500)}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:border-gray-200:disabled{border-color:var(--color-gray-200)}.disabled\:bg-gray-50:disabled{background-color:var(--color-gray-50)}.disabled\:text-gray-500:disabled{color:var(--color-gray-500)}.disabled\:opacity-50:disabled{opacity:.5}.disabled\:shadow-none:disabled{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.data-\[error\=true\]\:text-red-500[data-error=true]{color:var(--color-red-500)}@media (min-width:40rem){.sm\:block{display:block}.sm\:hidden{display:none}}@media (min-width:48rem){.md\:block{display:block}.md\:hidden{display:none}.md\:flex-row{flex-direction:row}.md\:items-center{align-items:center}.md\:justify-between{justify-content:space-between}}@media (min-width:64rem){.lg\:relative{position:relative}.lg\:block{display:block}.lg\:hidden{display:none}.lg\:w-16{width:calc(var(--spacing)*16)}.lg\:w-60{width:calc(var(--spacing)*60)}.lg\:translate-x-0{--tw-translate-x:calc(var(--spacing)*0);translate:var(--tw-translate-x)var(--tw-translate-y)}.lg\:justify-center{justify-content:center}}@media (min-width:80rem){.xl\:block{display:block}.xl\:hidden{display:none}}@media (min-width:96rem){.\32 xl\:block{display:block}.\32 xl\:hidden{display:none}}:where(.dark\:divide-white\/10:is(.dark *)>:not(:last-child)){border-color:#ffffff1a}@supports (color:color-mix(in lab, red, red)){:where(.dark\:divide-white\/10:is(.dark *)>:not(:last-child)){border-color:color-mix(in oklab,var(--color-white)10%,transparent)}}.dark\:border-blue-800:is(.dark *){border-color:var(--color-blue-800)}.dark\:border-gray-600:is(.dark *){border-color:var(--color-gray-600)}.dark\:border-gray-700:is(.dark *){border-color:var(--color-gray-700)}.dark\:border-gray-800:is(.dark *){border-color:var(--color-gray-800)}.dark\:border-green-800:is(.dark *){border-color:var(--color-green-800)}.dark\:border-red-800:is(.dark *){border-color:var(--color-red-800)}.dark\:border-slate-800:is(.dark *){border-color:var(--color-slate-800)}.dark\:border-yellow-800:is(.dark *){border-color:var(--color-yellow-800)}.dark\:bg-black:is(.dark *){background-color:var(--color-black)}.dark\:bg-blue-900\/20:is(.dark *){background-color:#1c398e33}@supports (color:color-mix(in lab, red, red)){.dark\:bg-blue-900\/20:is(.dark *){background-color:color-mix(in oklab,var(--color-blue-900)20%,transparent)}}.dark\:bg-blue-900\/30:is(.dark *){background-color:#1c398e4d}@supports (color:color-mix(in lab, red, red)){.dark\:bg-blue-900\/30:is(.dark *){background-color:color-mix(in oklab,var(--color-blue-900)30%,transparent)}}.dark\:bg-blue-950:is(.dark *){background-color:var(--color-blue-950)}.dark\:bg-gray-600:is(.dark *){background-color:var(--color-gray-600)}.dark\:bg-gray-700:is(.dark *){background-color:var(--color-gray-700)}.dark\:bg-gray-800:is(.dark *){background-color:var(--color-gray-800)}.dark\:bg-gray-800\/50:is(.dark *){background-color:#1e293980}@supports (color:color-mix(in lab, red, red)){.dark\:bg-gray-800\/50:is(.dark *){background-color:color-mix(in oklab,var(--color-gray-800)50%,transparent)}}.dark\:bg-gray-900:is(.dark *){background-color:var(--color-gray-900)}.dark\:bg-gray-950:is(.dark *){background-color:var(--color-gray-950)}.dark\:bg-green-900\/20:is(.dark *){background-color:#0d542b33}@supports (color:color-mix(in lab, red, red)){.dark\:bg-green-900\/20:is(.dark *){background-color:color-mix(in oklab,var(--color-green-900)20%,transparent)}}.dark\:bg-green-900\/30:is(.dark *){background-color:#0d542b4d}@supports (color:color-mix(in lab, red, red)){.dark\:bg-green-900\/30:is(.dark *){background-color:color-mix(in oklab,var(--color-green-900)30%,transparent)}}.dark\:bg-green-950:is(.dark *){background-color:var(--color-green-950)}.dark\:bg-orange-900\/30:is(.dark *){background-color:#7e2a0c4d}@supports (color:color-mix(in lab, red, red)){.dark\:bg-orange-900\/30:is(.dark *){background-color:color-mix(in oklab,var(--color-orange-900)30%,transparent)}}.dark\:bg-pink-900\/30:is(.dark *){background-color:#8610434d}@supports (color:color-mix(in lab, red, red)){.dark\:bg-pink-900\/30:is(.dark *){background-color:color-mix(in oklab,var(--color-pink-900)30%,transparent)}}.dark\:bg-primary\/10:is(.dark *){background-color:#0768f31a}@supports (color:color-mix(in lab, red, red)){.dark\:bg-primary\/10:is(.dark *){background-color:color-mix(in oklab,var(--color-primary)10%,transparent)}}.dark\:bg-purple-900\/30:is(.dark *){background-color:#59168b4d}@supports (color:color-mix(in lab, red, red)){.dark\:bg-purple-900\/30:is(.dark *){background-color:color-mix(in oklab,var(--color-purple-900)30%,transparent)}}.dark\:bg-red-900\/20:is(.dark *){background-color:#82181a33}@supports (color:color-mix(in lab, red, red)){.dark\:bg-red-900\/20:is(.dark *){background-color:color-mix(in oklab,var(--color-red-900)20%,transparent)}}.dark\:bg-red-900\/30:is(.dark *){background-color:#82181a4d}@supports (color:color-mix(in lab, red, red)){.dark\:bg-red-900\/30:is(.dark *){background-color:color-mix(in oklab,var(--color-red-900)30%,transparent)}}.dark\:bg-red-950:is(.dark *){background-color:var(--color-red-950)}.dark\:bg-slate-900:is(.dark *){background-color:var(--color-slate-900)}.dark\:bg-slate-950:is(.dark *){background-color:var(--color-slate-950)}.dark\:bg-white\/5:is(.dark *){background-color:#ffffff0d}@supports (color:color-mix(in lab, red, red)){.dark\:bg-white\/5:is(.dark *){background-color:color-mix(in oklab,var(--color-white)5%,transparent)}}.dark\:bg-white\/20:is(.dark *){background-color:#fff3}@supports (color:color-mix(in lab, red, red)){.dark\:bg-white\/20:is(.dark *){background-color:color-mix(in oklab,var(--color-white)20%,transparent)}}.dark\:bg-yellow-900\/20:is(.dark *){background-color:#733e0a33}@supports (color:color-mix(in lab, red, red)){.dark\:bg-yellow-900\/20:is(.dark *){background-color:color-mix(in oklab,var(--color-yellow-900)20%,transparent)}}.dark\:bg-yellow-900\/30:is(.dark *){background-color:#733e0a4d}@supports (color:color-mix(in lab, red, red)){.dark\:bg-yellow-900\/30:is(.dark *){background-color:color-mix(in oklab,var(--color-yellow-900)30%,transparent)}}.dark\:bg-yellow-950:is(.dark *){background-color:var(--color-yellow-950)}.dark\:text-blue-400:is(.dark *){color:var(--color-blue-400)}.dark\:text-gray-100:is(.dark *){color:var(--color-gray-100)}.dark\:text-gray-200:is(.dark *){color:var(--color-gray-200)}.dark\:text-gray-300:is(.dark *){color:var(--color-gray-300)}.dark\:text-gray-400:is(.dark *){color:var(--color-gray-400)}.dark\:text-gray-500:is(.dark *){color:var(--color-gray-500)}.dark\:text-gray-600:is(.dark *){color:var(--color-gray-600)}.dark\:text-gray-700:is(.dark *){color:var(--color-gray-700)}.dark\:text-green-400:is(.dark *){color:var(--color-green-400)}.dark\:text-orange-400:is(.dark *){color:var(--color-orange-400)}.dark\:text-pink-400:is(.dark *){color:var(--color-pink-400)}.dark\:text-primary:is(.dark *){color:var(--color-primary)}.dark\:text-purple-400:is(.dark *){color:var(--color-purple-400)}.dark\:text-red-400:is(.dark *){color:var(--color-red-400)}.dark\:text-white:is(.dark *){color:var(--color-white)}.dark\:text-yellow-400:is(.dark *){color:var(--color-yellow-400)}.dark\:placeholder-gray-500:is(.dark *)::placeholder{color:var(--color-gray-500)}.dark\:ring-gray-900:is(.dark *){--tw-ring-color:var(--color-gray-900)}@media (hover:hover){.dark\:group-hover\:text-blue-100:is(.dark *):is(:where(.group):hover *){color:var(--color-blue-100)}.dark\:group-hover\:text-gray-100:is(.dark *):is(:where(.group):hover *){color:var(--color-gray-100)}.dark\:group-hover\:text-gray-500:is(.dark *):is(:where(.group):hover *){color:var(--color-gray-500)}.dark\:group-hover\:text-green-100:is(.dark *):is(:where(.group):hover *){color:var(--color-green-100)}.dark\:group-hover\:text-red-100:is(.dark *):is(:where(.group):hover *){color:var(--color-red-100)}.dark\:group-hover\:text-yellow-100:is(.dark *):is(:where(.group):hover *){color:var(--color-yellow-100)}.dark\:hover\:border-gray-600:is(.dark *):hover{border-color:var(--color-gray-600)}.dark\:hover\:border-primary\/50:is(.dark *):hover{border-color:#0768f380}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:border-primary\/50:is(.dark *):hover{border-color:color-mix(in oklab,var(--color-primary)50%,transparent)}}.dark\:hover\:bg-blue-900:is(.dark *):hover{background-color:var(--color-blue-900)}.dark\:hover\:bg-gray-700:is(.dark *):hover{background-color:var(--color-gray-700)}.dark\:hover\:bg-gray-800:is(.dark *):hover{background-color:var(--color-gray-800)}.dark\:hover\:bg-green-900:is(.dark *):hover{background-color:var(--color-green-900)}.dark\:hover\:bg-red-900:is(.dark *):hover{background-color:var(--color-red-900)}.dark\:hover\:bg-red-900\/20:is(.dark *):hover{background-color:#82181a33}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-red-900\/20:is(.dark *):hover{background-color:color-mix(in oklab,var(--color-red-900)20%,transparent)}}.dark\:hover\:bg-white\/5:is(.dark *):hover{background-color:#ffffff0d}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-white\/5:is(.dark *):hover{background-color:color-mix(in oklab,var(--color-white)5%,transparent)}}.dark\:hover\:bg-yellow-900:is(.dark *):hover{background-color:var(--color-yellow-900)}.dark\:hover\:text-gray-100:is(.dark *):hover{color:var(--color-gray-100)}.dark\:hover\:text-gray-300:is(.dark *):hover{color:var(--color-gray-300)}.dark\:hover\:text-gray-400:is(.dark *):hover{color:var(--color-gray-400)}}.dark\:focus\:border-primary:is(.dark *):focus{border-color:var(--color-primary)}.dark\:focus\:ring-primary:is(.dark *):focus{--tw-ring-color:var(--color-primary)}.dark\:focus\:ring-offset-gray-900:is(.dark *):focus{--tw-ring-offset-color:var(--color-gray-900)}.dark\:disabled\:border-gray-800:is(.dark *):disabled{border-color:var(--color-gray-800)}.dark\:disabled\:bg-gray-950:is(.dark *):disabled{background-color:var(--color-gray-950)}.dark\:disabled\:text-gray-500:is(.dark *):disabled{color:var(--color-gray-500)}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}
|
|
2
|
+
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-space-x-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-font-weight:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-duration:initial;--tw-ease:initial}}}@layer theme{:root,:host{--color-red-50:oklch(97.1% .013 17.38);--color-red-100:oklch(93.6% .032 17.717);--color-red-200:oklch(88.5% .062 18.334);--color-red-400:oklch(70.4% .191 22.216);--color-red-500:oklch(63.7% .237 25.331);--color-red-600:oklch(57.7% .245 27.325);--color-red-800:oklch(44.4% .177 26.899);--color-red-900:oklch(39.6% .141 25.723);--color-red-950:oklch(25.8% .092 26.042);--color-orange-100:oklch(95.4% .038 75.164);--color-orange-400:oklch(75% .183 55.934);--color-orange-800:oklch(47% .157 37.304);--color-orange-900:oklch(40.8% .123 38.172);--color-yellow-50:oklch(98.7% .026 102.212);--color-yellow-100:oklch(97.3% .071 103.193);--color-yellow-200:oklch(94.5% .129 101.54);--color-yellow-400:oklch(85.2% .199 91.936);--color-yellow-500:oklch(79.5% .184 86.047);--color-yellow-600:oklch(68.1% .162 75.834);--color-yellow-800:oklch(47.6% .114 61.907);--color-yellow-900:oklch(42.1% .095 57.708);--color-yellow-950:oklch(28.6% .066 53.813);--color-green-50:oklch(98.2% .018 155.826);--color-green-100:oklch(96.2% .044 156.743);--color-green-200:oklch(92.5% .084 155.995);--color-green-400:oklch(79.2% .209 151.711);--color-green-500:oklch(72.3% .219 149.579);--color-green-600:oklch(62.7% .194 149.214);--color-green-800:oklch(44.8% .119 151.328);--color-green-900:oklch(39.3% .095 152.535);--color-green-950:oklch(26.6% .065 152.934);--color-blue-50:oklch(97% .014 254.604);--color-blue-100:oklch(93.2% .032 255.585);--color-blue-200:oklch(88.2% .059 254.128);--color-blue-400:oklch(70.7% .165 254.624);--color-blue-500:oklch(62.3% .214 259.815);--color-blue-600:oklch(54.6% .245 262.881);--color-blue-800:oklch(42.4% .199 265.638);--color-blue-900:oklch(37.9% .146 265.522);--color-blue-950:oklch(28.2% .091 267.935);--color-purple-100:oklch(94.6% .033 307.174);--color-purple-400:oklch(71.4% .203 305.504);--color-purple-800:oklch(43.8% .218 303.724);--color-purple-900:oklch(38.1% .176 304.987);--color-pink-100:oklch(94.8% .028 342.258);--color-pink-400:oklch(71.8% .202 349.761);--color-pink-500:oklch(65.6% .241 354.308);--color-pink-600:oklch(59.2% .249 .584);--color-pink-800:oklch(45.9% .187 3.815);--color-pink-900:oklch(40.8% .153 2.432);--color-slate-200:oklch(92.9% .013 255.508);--color-slate-800:oklch(27.9% .041 260.031);--color-slate-900:oklch(20.8% .042 265.755);--color-slate-950:oklch(12.9% .042 264.695);--color-gray-50:oklch(98.5% .002 247.839);--color-gray-100:oklch(96.7% .003 264.542);--color-gray-200:oklch(92.8% .006 264.531);--color-gray-300:oklch(87.2% .01 258.338);--color-gray-400:oklch(70.7% .022 261.325);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-600:oklch(44.6% .03 256.802);--color-gray-700:oklch(37.3% .034 259.733);--color-gray-800:oklch(27.8% .033 256.848);--color-gray-900:oklch(21% .034 264.665);--color-gray-950:oklch(13% .028 261.692);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-md:28rem;--container-3xl:48rem;--container-5xl:64rem;--container-7xl:80rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-base:1rem;--text-base--line-height:calc(1.5/1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75/1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2/1.5);--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--ease-in:cubic-bezier(.4,0,1,1);--ease-out:cubic-bezier(0,0,.2,1);--ease-in-out:cubic-bezier(.4,0,.2,1);--animate-spin:spin 1s linear infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--font-inter:"Inter","sans-serif";--font-outfit:Outfit,sans-serif;--color-primary:oklch(55.892% .22344 260);--color-primary-50:oklch(97% .02 260);--color-primary-100:oklch(94% .04 260);--color-primary-200:oklch(88% .08 260);--color-primary-300:oklch(78% .14 260);--color-primary-400:oklch(68% .18 260);--color-primary-500:oklch(55.892% .22344 260);--color-primary-600:oklch(48% .2 260);--color-primary-700:oklch(40% .17 260);--color-primary-800:oklch(32% .14 260);--color-primary-900:oklch(25% .1 260);--color-primary-950:oklch(18% .08 260);--color-primary-foreground:oklch(100% 0 none);--color-secondary:oklch(55% .2 10);--color-secondary-foreground:oklch(100% 0 none)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.\@container{container-type:inline-size}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:calc(var(--spacing)*0)}.top-0{top:calc(var(--spacing)*0)}.top-0\.25{top:calc(var(--spacing)*.25)}.top-1\/2{top:50%}.top-5{top:calc(var(--spacing)*5)}.top-6{top:calc(var(--spacing)*6)}.top-12{top:calc(var(--spacing)*12)}.right-0{right:calc(var(--spacing)*0)}.right-0\.25{right:calc(var(--spacing)*.25)}.right-5{right:calc(var(--spacing)*5)}.bottom-0{bottom:calc(var(--spacing)*0)}.left-0{left:calc(var(--spacing)*0)}.left-3{left:calc(var(--spacing)*3)}.left-6{left:calc(var(--spacing)*6)}.z-10{z-index:10}.z-40{z-index:40}.z-50{z-index:50}.z-\[9999\]{z-index:9999}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.mx-3{margin-inline:calc(var(--spacing)*3)}.mx-4{margin-inline:calc(var(--spacing)*4)}.mx-auto{margin-inline:auto}.my-1{margin-block:calc(var(--spacing)*1)}.mt-0\.5{margin-top:calc(var(--spacing)*.5)}.mt-1{margin-top:calc(var(--spacing)*1)}.mt-2{margin-top:calc(var(--spacing)*2)}.mt-4{margin-top:calc(var(--spacing)*4)}.-mb-px{margin-bottom:-1px}.mb-1{margin-bottom:calc(var(--spacing)*1)}.mb-2{margin-bottom:calc(var(--spacing)*2)}.mb-4{margin-bottom:calc(var(--spacing)*4)}.block{display:block}.flex{display:flex}.hidden{display:none}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.size-1\.5{width:calc(var(--spacing)*1.5);height:calc(var(--spacing)*1.5)}.size-1\/2{width:50%;height:50%}.size-2{width:calc(var(--spacing)*2);height:calc(var(--spacing)*2)}.size-2\.5{width:calc(var(--spacing)*2.5);height:calc(var(--spacing)*2.5)}.size-3{width:calc(var(--spacing)*3);height:calc(var(--spacing)*3)}.size-4{width:calc(var(--spacing)*4);height:calc(var(--spacing)*4)}.size-5{width:calc(var(--spacing)*5);height:calc(var(--spacing)*5)}.size-6{width:calc(var(--spacing)*6);height:calc(var(--spacing)*6)}.size-8{width:calc(var(--spacing)*8);height:calc(var(--spacing)*8)}.size-10{width:calc(var(--spacing)*10);height:calc(var(--spacing)*10)}.size-12{width:calc(var(--spacing)*12);height:calc(var(--spacing)*12)}.size-16{width:calc(var(--spacing)*16);height:calc(var(--spacing)*16)}.size-20{width:calc(var(--spacing)*20);height:calc(var(--spacing)*20)}.size-full{width:100%;height:100%}.h-0\.5{height:calc(var(--spacing)*.5)}.h-4{height:calc(var(--spacing)*4)}.h-5{height:calc(var(--spacing)*5)}.h-6{height:calc(var(--spacing)*6)}.h-7{height:calc(var(--spacing)*7)}.h-8{height:calc(var(--spacing)*8)}.h-10{height:calc(var(--spacing)*10)}.h-12{height:calc(var(--spacing)*12)}.h-16{height:calc(var(--spacing)*16)}.h-dvh{height:100dvh}.h-full{height:100%}.max-h-0{max-height:calc(var(--spacing)*0)}.max-h-60{max-height:calc(var(--spacing)*60)}.max-h-\[90vh\]{max-height:90vh}.max-h-\[2000px\]{max-height:2000px}.w-0\.5{width:calc(var(--spacing)*.5)}.w-4{width:calc(var(--spacing)*4)}.w-5{width:calc(var(--spacing)*5)}.w-8{width:calc(var(--spacing)*8)}.w-9{width:calc(var(--spacing)*9)}.w-10{width:calc(var(--spacing)*10)}.w-11{width:calc(var(--spacing)*11)}.w-12{width:calc(var(--spacing)*12)}.w-14{width:calc(var(--spacing)*14)}.w-16{width:calc(var(--spacing)*16)}.w-32{width:calc(var(--spacing)*32)}.w-48{width:calc(var(--spacing)*48)}.w-64{width:calc(var(--spacing)*64)}.w-76{width:calc(var(--spacing)*76)}.w-auto{width:auto}.w-full{width:100%}.max-w-3xl{max-width:var(--container-3xl)}.max-w-5xl{max-width:var(--container-5xl)}.max-w-7xl{max-width:var(--container-7xl)}.max-w-full{max-width:100%}.max-w-md{max-width:var(--container-md)}.min-w-0{min-width:calc(var(--spacing)*0)}.min-w-48{min-width:calc(var(--spacing)*48)}.min-w-\[10rem\]{min-width:10rem}.flex-1{flex:1}.flex-shrink-0,.shrink-0{flex-shrink:0}.-translate-x-1\/2{--tw-translate-x:calc(calc(1/2*100%)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.-translate-x-2{--tw-translate-x:calc(var(--spacing)*-2);translate:var(--tw-translate-x)var(--tw-translate-y)}.-translate-x-76{--tw-translate-x:calc(var(--spacing)*-76);translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-x-0{--tw-translate-x:calc(var(--spacing)*0);translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-x-1{--tw-translate-x:calc(var(--spacing)*1);translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-x-5{--tw-translate-x:calc(var(--spacing)*5);translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-x-6{--tw-translate-x:calc(var(--spacing)*6);translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-x-8{--tw-translate-x:calc(var(--spacing)*8);translate:var(--tw-translate-x)var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y:calc(calc(1/2*100%)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.scale-95{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x)var(--tw-scale-y)}.scale-100{--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x)var(--tw-scale-y)}.rotate-180{rotate:180deg}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.animate-spin{animation:var(--animate-spin)}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.resize{resize:both}.flex-col{flex-direction:column}.flex-row{flex-direction:row}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-0\.5{gap:calc(var(--spacing)*.5)}.gap-1{gap:calc(var(--spacing)*1)}.gap-1\.5{gap:calc(var(--spacing)*1.5)}.gap-2{gap:calc(var(--spacing)*2)}.gap-2\.5{gap:calc(var(--spacing)*2.5)}.gap-3{gap:calc(var(--spacing)*3)}.gap-4{gap:calc(var(--spacing)*4)}.gap-5{gap:calc(var(--spacing)*5)}.gap-8{gap:calc(var(--spacing)*8)}.gap-10{gap:calc(var(--spacing)*10)}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*3)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*3)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*4)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-x-3>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*3)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*3)*calc(1 - var(--tw-space-x-reverse)))}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px*var(--tw-divide-y-reverse));border-bottom-width:calc(1px*calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-black\/10>:not(:last-child)){border-color:#0000001a}@supports (color:color-mix(in lab, red, red)){:where(.divide-black\/10>:not(:last-child)){border-color:color-mix(in oklab,var(--color-black)10%,transparent)}}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-xl{border-radius:var(--radius-xl)}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-4{border-style:var(--tw-border-style);border-width:4px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-solid{--tw-border-style:solid;border-style:solid}.border-blue-200{border-color:var(--color-blue-200)}.border-gray-200{border-color:var(--color-gray-200)}.border-gray-300{border-color:var(--color-gray-300)}.border-green-200{border-color:var(--color-green-200)}.border-primary{border-color:var(--color-primary)}.border-red-200{border-color:var(--color-red-200)}.border-red-500{border-color:var(--color-red-500)}.border-slate-200{border-color:var(--color-slate-200)}.border-transparent{border-color:#0000}.border-yellow-200{border-color:var(--color-yellow-200)}.border-r-transparent{border-right-color:#0000}.bg-\[\#172b4c\]{background-color:#172b4c}.bg-black\/5{background-color:#0000000d}@supports (color:color-mix(in lab, red, red)){.bg-black\/5{background-color:color-mix(in oklab,var(--color-black)5%,transparent)}}.bg-black\/50{background-color:#00000080}@supports (color:color-mix(in lab, red, red)){.bg-black\/50{background-color:color-mix(in oklab,var(--color-black)50%,transparent)}}.bg-blue-50{background-color:var(--color-blue-50)}.bg-blue-100{background-color:var(--color-blue-100)}.bg-blue-500{background-color:var(--color-blue-500)}.bg-gray-50{background-color:var(--color-gray-50)}.bg-gray-100{background-color:var(--color-gray-100)}.bg-gray-200{background-color:var(--color-gray-200)}.bg-gray-300{background-color:var(--color-gray-300)}.bg-gray-400{background-color:var(--color-gray-400)}.bg-green-50{background-color:var(--color-green-50)}.bg-green-100{background-color:var(--color-green-100)}.bg-green-500{background-color:var(--color-green-500)}.bg-orange-100{background-color:var(--color-orange-100)}.bg-pink-100{background-color:var(--color-pink-100)}.bg-primary{background-color:var(--color-primary)}.bg-primary-500{background-color:var(--color-primary-500)}.bg-primary\/5{background-color:#0768f30d}@supports (color:color-mix(in lab, red, red)){.bg-primary\/5{background-color:color-mix(in oklab,var(--color-primary)5%,transparent)}}.bg-primary\/10{background-color:#0768f31a}@supports (color:color-mix(in lab, red, red)){.bg-primary\/10{background-color:color-mix(in oklab,var(--color-primary)10%,transparent)}}.bg-purple-100{background-color:var(--color-purple-100)}.bg-red-50{background-color:var(--color-red-50)}.bg-red-100{background-color:var(--color-red-100)}.bg-red-500{background-color:var(--color-red-500)}.bg-red-600{background-color:var(--color-red-600)}.bg-secondary{background-color:var(--color-secondary)}.bg-slate-950\/20{background-color:#02061833}@supports (color:color-mix(in lab, red, red)){.bg-slate-950\/20{background-color:color-mix(in oklab,var(--color-slate-950)20%,transparent)}}.bg-transparent{background-color:#0000}.bg-white{background-color:var(--color-white)}.bg-white\/10{background-color:#ffffff1a}@supports (color:color-mix(in lab, red, red)){.bg-white\/10{background-color:color-mix(in oklab,var(--color-white)10%,transparent)}}.bg-white\/20{background-color:#fff3}@supports (color:color-mix(in lab, red, red)){.bg-white\/20{background-color:color-mix(in oklab,var(--color-white)20%,transparent)}}.bg-yellow-50{background-color:var(--color-yellow-50)}.bg-yellow-100{background-color:var(--color-yellow-100)}.bg-yellow-500{background-color:var(--color-yellow-500)}.object-cover{object-fit:cover}.p-1{padding:calc(var(--spacing)*1)}.p-1\.5{padding:calc(var(--spacing)*1.5)}.p-2{padding:calc(var(--spacing)*2)}.p-3{padding:calc(var(--spacing)*3)}.p-4{padding:calc(var(--spacing)*4)}.p-5{padding:calc(var(--spacing)*5)}.p-6{padding:calc(var(--spacing)*6)}.px-2{padding-inline:calc(var(--spacing)*2)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-4{padding-inline:calc(var(--spacing)*4)}.px-5{padding-inline:calc(var(--spacing)*5)}.px-6{padding-inline:calc(var(--spacing)*6)}.py-1{padding-block:calc(var(--spacing)*1)}.py-1\.5{padding-block:calc(var(--spacing)*1.5)}.py-2{padding-block:calc(var(--spacing)*2)}.py-2\.5{padding-block:calc(var(--spacing)*2.5)}.py-3{padding-block:calc(var(--spacing)*3)}.py-4{padding-block:calc(var(--spacing)*4)}.py-12{padding-block:calc(var(--spacing)*12)}.pt-2{padding-top:calc(var(--spacing)*2)}.pr-4{padding-right:calc(var(--spacing)*4)}.pb-3{padding-bottom:calc(var(--spacing)*3)}.pl-10{padding-left:calc(var(--spacing)*10)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.font-inter{font-family:var(--font-inter)}.font-outfit{font-family:var(--font-outfit)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.whitespace-nowrap{white-space:nowrap}.text-blue-500{color:var(--color-blue-500)}.text-blue-600{color:var(--color-blue-600)}.text-blue-800{color:var(--color-blue-800)}.text-gray-400{color:var(--color-gray-400)}.text-gray-500{color:var(--color-gray-500)}.text-gray-600{color:var(--color-gray-600)}.text-gray-700{color:var(--color-gray-700)}.text-gray-800{color:var(--color-gray-800)}.text-gray-900{color:var(--color-gray-900)}.text-green-500{color:var(--color-green-500)}.text-green-600{color:var(--color-green-600)}.text-green-800{color:var(--color-green-800)}.text-orange-800{color:var(--color-orange-800)}.text-pink-800{color:var(--color-pink-800)}.text-primary{color:var(--color-primary)}.text-primary-foreground{color:var(--color-primary-foreground)}.text-primary\/90{color:#0768f3e6}@supports (color:color-mix(in lab, red, red)){.text-primary\/90{color:color-mix(in oklab,var(--color-primary)90%,transparent)}}.text-purple-800{color:var(--color-purple-800)}.text-red-500{color:var(--color-red-500)}.text-red-600{color:var(--color-red-600)}.text-red-800{color:var(--color-red-800)}.text-secondary-foreground{color:var(--color-secondary-foreground)}.text-white{color:var(--color-white)}.text-white\/50{color:#ffffff80}@supports (color:color-mix(in lab, red, red)){.text-white\/50{color:color-mix(in oklab,var(--color-white)50%,transparent)}}.text-yellow-500{color:var(--color-yellow-500)}.text-yellow-600{color:var(--color-yellow-600)}.text-yellow-800{color:var(--color-yellow-800)}.uppercase{text-transform:uppercase}.underline{text-decoration-line:underline}.placeholder-gray-400::placeholder{color:var(--color-gray-400)}.opacity-0{opacity:0}.opacity-50{opacity:.5}.opacity-100{opacity:1}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a),0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-2{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-primary{--tw-ring-color:var(--color-primary)}.ring-primary\/20{--tw-ring-color:#0768f333}@supports (color:color-mix(in lab, red, red)){.ring-primary\/20{--tw-ring-color:color-mix(in oklab,var(--color-primary)20%,transparent)}}.ring-white{--tw-ring-color:var(--color-white)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-75{--tw-duration:75ms;transition-duration:75ms}.duration-100{--tw-duration:.1s;transition-duration:.1s}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.duration-500{--tw-duration:.5s;transition-duration:.5s}.duration-1000{--tw-duration:1s;transition-duration:1s}.ease-in{--tw-ease:var(--ease-in);transition-timing-function:var(--ease-in)}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.outline-none{--tw-outline-style:none;outline-style:none}@media (hover:hover){.group-hover\:text-blue-900:is(:where(.group):hover *){color:var(--color-blue-900)}.group-hover\:text-gray-900:is(:where(.group):hover *){color:var(--color-gray-900)}.group-hover\:text-green-900:is(:where(.group):hover *){color:var(--color-green-900)}.group-hover\:text-red-900:is(:where(.group):hover *){color:var(--color-red-900)}.group-hover\:text-white\/80:is(:where(.group):hover *){color:#fffc}@supports (color:color-mix(in lab, red, red)){.group-hover\:text-white\/80:is(:where(.group):hover *){color:color-mix(in oklab,var(--color-white)80%,transparent)}}.group-hover\:text-yellow-900:is(:where(.group):hover *){color:var(--color-yellow-900)}}.peer-invalid\:visible:is(:where(.peer):invalid~*){visibility:visible}.invalid\:border-pink-500:invalid{border-color:var(--color-pink-500)}.invalid\:text-pink-600:invalid{color:var(--color-pink-600)}@media (hover:hover){.hover\:border-gray-300:hover{border-color:var(--color-gray-300)}.hover\:border-gray-400:hover{border-color:var(--color-gray-400)}.hover\:border-primary\/30:hover{border-color:#0768f34d}@supports (color:color-mix(in lab, red, red)){.hover\:border-primary\/30:hover{border-color:color-mix(in oklab,var(--color-primary)30%,transparent)}}.hover\:bg-black\/5:hover{background-color:#0000000d}@supports (color:color-mix(in lab, red, red)){.hover\:bg-black\/5:hover{background-color:color-mix(in oklab,var(--color-black)5%,transparent)}}.hover\:bg-blue-100:hover{background-color:var(--color-blue-100)}.hover\:bg-gray-50:hover{background-color:var(--color-gray-50)}.hover\:bg-gray-100:hover{background-color:var(--color-gray-100)}.hover\:bg-gray-200:hover{background-color:var(--color-gray-200)}.hover\:bg-green-100:hover{background-color:var(--color-green-100)}.hover\:bg-green-600:hover{background-color:var(--color-green-600)}.hover\:bg-primary\/90:hover{background-color:#0768f3e6}@supports (color:color-mix(in lab, red, red)){.hover\:bg-primary\/90:hover{background-color:color-mix(in oklab,var(--color-primary)90%,transparent)}}.hover\:bg-red-50:hover{background-color:var(--color-red-50)}.hover\:bg-red-100:hover{background-color:var(--color-red-100)}.hover\:bg-red-600:hover{background-color:var(--color-red-600)}.hover\:bg-secondary\/90:hover{background-color:#ca2356e6}@supports (color:color-mix(in lab, red, red)){.hover\:bg-secondary\/90:hover{background-color:color-mix(in oklab,var(--color-secondary)90%,transparent)}}.hover\:bg-white\/20:hover{background-color:#fff3}@supports (color:color-mix(in lab, red, red)){.hover\:bg-white\/20:hover{background-color:color-mix(in oklab,var(--color-white)20%,transparent)}}.hover\:bg-yellow-100:hover{background-color:var(--color-yellow-100)}.hover\:text-gray-600:hover{color:var(--color-gray-600)}.hover\:text-gray-700:hover{color:var(--color-gray-700)}.hover\:text-gray-800:hover{color:var(--color-gray-800)}.hover\:text-gray-900:hover{color:var(--color-gray-900)}.hover\:text-primary\/90:hover{color:#0768f3e6}@supports (color:color-mix(in lab, red, red)){.hover\:text-primary\/90:hover{color:color-mix(in oklab,var(--color-primary)90%,transparent)}}.hover\:underline:hover{text-decoration-line:underline}.hover\:shadow-md:hover{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}.focus\:border-primary:focus{border-color:var(--color-primary)}.focus\:ring-1:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-green-500:focus{--tw-ring-color:var(--color-green-500)}.focus\:ring-primary:focus{--tw-ring-color:var(--color-primary)}.focus\:ring-red-500:focus{--tw-ring-color:var(--color-red-500)}.focus\:ring-secondary:focus{--tw-ring-color:var(--color-secondary)}.focus\:ring-offset-2:focus{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus\:invalid\:border-pink-500:focus:invalid{border-color:var(--color-pink-500)}.focus\:invalid\:ring-pink-500:focus:invalid{--tw-ring-color:var(--color-pink-500)}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:border-gray-200:disabled{border-color:var(--color-gray-200)}.disabled\:bg-gray-50:disabled{background-color:var(--color-gray-50)}.disabled\:text-gray-500:disabled{color:var(--color-gray-500)}.disabled\:opacity-50:disabled{opacity:.5}.disabled\:shadow-none:disabled{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.data-\[error\=true\]\:text-red-500[data-error=true]{color:var(--color-red-500)}@media (min-width:48rem){.md\:block{display:block}.md\:flex-row{flex-direction:row}.md\:items-center{align-items:center}.md\:justify-between{justify-content:space-between}}@media (min-width:64rem){.lg\:relative{position:relative}.lg\:hidden{display:none}.lg\:w-16{width:calc(var(--spacing)*16)}.lg\:w-60{width:calc(var(--spacing)*60)}.lg\:translate-x-0{--tw-translate-x:calc(var(--spacing)*0);translate:var(--tw-translate-x)var(--tw-translate-y)}.lg\:justify-center{justify-content:center}}:where(.dark\:divide-white\/10:is(.dark *)>:not(:last-child)){border-color:#ffffff1a}@supports (color:color-mix(in lab, red, red)){:where(.dark\:divide-white\/10:is(.dark *)>:not(:last-child)){border-color:color-mix(in oklab,var(--color-white)10%,transparent)}}.dark\:border-blue-800:is(.dark *){border-color:var(--color-blue-800)}.dark\:border-gray-600:is(.dark *){border-color:var(--color-gray-600)}.dark\:border-gray-700:is(.dark *){border-color:var(--color-gray-700)}.dark\:border-gray-800:is(.dark *){border-color:var(--color-gray-800)}.dark\:border-green-800:is(.dark *){border-color:var(--color-green-800)}.dark\:border-red-800:is(.dark *){border-color:var(--color-red-800)}.dark\:border-slate-800:is(.dark *){border-color:var(--color-slate-800)}.dark\:border-yellow-800:is(.dark *){border-color:var(--color-yellow-800)}.dark\:bg-black:is(.dark *){background-color:var(--color-black)}.dark\:bg-blue-900\/20:is(.dark *){background-color:#1c398e33}@supports (color:color-mix(in lab, red, red)){.dark\:bg-blue-900\/20:is(.dark *){background-color:color-mix(in oklab,var(--color-blue-900)20%,transparent)}}.dark\:bg-blue-900\/30:is(.dark *){background-color:#1c398e4d}@supports (color:color-mix(in lab, red, red)){.dark\:bg-blue-900\/30:is(.dark *){background-color:color-mix(in oklab,var(--color-blue-900)30%,transparent)}}.dark\:bg-blue-950:is(.dark *){background-color:var(--color-blue-950)}.dark\:bg-gray-600:is(.dark *){background-color:var(--color-gray-600)}.dark\:bg-gray-700:is(.dark *){background-color:var(--color-gray-700)}.dark\:bg-gray-800:is(.dark *){background-color:var(--color-gray-800)}.dark\:bg-gray-800\/50:is(.dark *){background-color:#1e293980}@supports (color:color-mix(in lab, red, red)){.dark\:bg-gray-800\/50:is(.dark *){background-color:color-mix(in oklab,var(--color-gray-800)50%,transparent)}}.dark\:bg-gray-900:is(.dark *){background-color:var(--color-gray-900)}.dark\:bg-gray-950:is(.dark *){background-color:var(--color-gray-950)}.dark\:bg-green-900\/20:is(.dark *){background-color:#0d542b33}@supports (color:color-mix(in lab, red, red)){.dark\:bg-green-900\/20:is(.dark *){background-color:color-mix(in oklab,var(--color-green-900)20%,transparent)}}.dark\:bg-green-900\/30:is(.dark *){background-color:#0d542b4d}@supports (color:color-mix(in lab, red, red)){.dark\:bg-green-900\/30:is(.dark *){background-color:color-mix(in oklab,var(--color-green-900)30%,transparent)}}.dark\:bg-green-950:is(.dark *){background-color:var(--color-green-950)}.dark\:bg-orange-900\/30:is(.dark *){background-color:#7e2a0c4d}@supports (color:color-mix(in lab, red, red)){.dark\:bg-orange-900\/30:is(.dark *){background-color:color-mix(in oklab,var(--color-orange-900)30%,transparent)}}.dark\:bg-pink-900\/30:is(.dark *){background-color:#8610434d}@supports (color:color-mix(in lab, red, red)){.dark\:bg-pink-900\/30:is(.dark *){background-color:color-mix(in oklab,var(--color-pink-900)30%,transparent)}}.dark\:bg-primary\/10:is(.dark *){background-color:#0768f31a}@supports (color:color-mix(in lab, red, red)){.dark\:bg-primary\/10:is(.dark *){background-color:color-mix(in oklab,var(--color-primary)10%,transparent)}}.dark\:bg-purple-900\/30:is(.dark *){background-color:#59168b4d}@supports (color:color-mix(in lab, red, red)){.dark\:bg-purple-900\/30:is(.dark *){background-color:color-mix(in oklab,var(--color-purple-900)30%,transparent)}}.dark\:bg-red-900\/20:is(.dark *){background-color:#82181a33}@supports (color:color-mix(in lab, red, red)){.dark\:bg-red-900\/20:is(.dark *){background-color:color-mix(in oklab,var(--color-red-900)20%,transparent)}}.dark\:bg-red-900\/30:is(.dark *){background-color:#82181a4d}@supports (color:color-mix(in lab, red, red)){.dark\:bg-red-900\/30:is(.dark *){background-color:color-mix(in oklab,var(--color-red-900)30%,transparent)}}.dark\:bg-red-950:is(.dark *){background-color:var(--color-red-950)}.dark\:bg-slate-900:is(.dark *){background-color:var(--color-slate-900)}.dark\:bg-slate-950:is(.dark *){background-color:var(--color-slate-950)}.dark\:bg-white\/5:is(.dark *){background-color:#ffffff0d}@supports (color:color-mix(in lab, red, red)){.dark\:bg-white\/5:is(.dark *){background-color:color-mix(in oklab,var(--color-white)5%,transparent)}}.dark\:bg-white\/20:is(.dark *){background-color:#fff3}@supports (color:color-mix(in lab, red, red)){.dark\:bg-white\/20:is(.dark *){background-color:color-mix(in oklab,var(--color-white)20%,transparent)}}.dark\:bg-yellow-900\/20:is(.dark *){background-color:#733e0a33}@supports (color:color-mix(in lab, red, red)){.dark\:bg-yellow-900\/20:is(.dark *){background-color:color-mix(in oklab,var(--color-yellow-900)20%,transparent)}}.dark\:bg-yellow-900\/30:is(.dark *){background-color:#733e0a4d}@supports (color:color-mix(in lab, red, red)){.dark\:bg-yellow-900\/30:is(.dark *){background-color:color-mix(in oklab,var(--color-yellow-900)30%,transparent)}}.dark\:bg-yellow-950:is(.dark *){background-color:var(--color-yellow-950)}.dark\:text-blue-400:is(.dark *){color:var(--color-blue-400)}.dark\:text-gray-100:is(.dark *){color:var(--color-gray-100)}.dark\:text-gray-200:is(.dark *){color:var(--color-gray-200)}.dark\:text-gray-300:is(.dark *){color:var(--color-gray-300)}.dark\:text-gray-400:is(.dark *){color:var(--color-gray-400)}.dark\:text-gray-500:is(.dark *){color:var(--color-gray-500)}.dark\:text-gray-600:is(.dark *){color:var(--color-gray-600)}.dark\:text-gray-700:is(.dark *){color:var(--color-gray-700)}.dark\:text-green-400:is(.dark *){color:var(--color-green-400)}.dark\:text-orange-400:is(.dark *){color:var(--color-orange-400)}.dark\:text-pink-400:is(.dark *){color:var(--color-pink-400)}.dark\:text-primary:is(.dark *){color:var(--color-primary)}.dark\:text-purple-400:is(.dark *){color:var(--color-purple-400)}.dark\:text-red-400:is(.dark *){color:var(--color-red-400)}.dark\:text-white:is(.dark *){color:var(--color-white)}.dark\:text-yellow-400:is(.dark *){color:var(--color-yellow-400)}.dark\:placeholder-gray-500:is(.dark *)::placeholder{color:var(--color-gray-500)}.dark\:ring-gray-900:is(.dark *){--tw-ring-color:var(--color-gray-900)}@media (hover:hover){.dark\:group-hover\:text-blue-100:is(.dark *):is(:where(.group):hover *){color:var(--color-blue-100)}.dark\:group-hover\:text-gray-100:is(.dark *):is(:where(.group):hover *){color:var(--color-gray-100)}.dark\:group-hover\:text-gray-500:is(.dark *):is(:where(.group):hover *){color:var(--color-gray-500)}.dark\:group-hover\:text-green-100:is(.dark *):is(:where(.group):hover *){color:var(--color-green-100)}.dark\:group-hover\:text-red-100:is(.dark *):is(:where(.group):hover *){color:var(--color-red-100)}.dark\:group-hover\:text-yellow-100:is(.dark *):is(:where(.group):hover *){color:var(--color-yellow-100)}.dark\:hover\:border-gray-600:is(.dark *):hover{border-color:var(--color-gray-600)}.dark\:hover\:border-primary\/50:is(.dark *):hover{border-color:#0768f380}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:border-primary\/50:is(.dark *):hover{border-color:color-mix(in oklab,var(--color-primary)50%,transparent)}}.dark\:hover\:bg-blue-900:is(.dark *):hover{background-color:var(--color-blue-900)}.dark\:hover\:bg-gray-700:is(.dark *):hover{background-color:var(--color-gray-700)}.dark\:hover\:bg-gray-800:is(.dark *):hover{background-color:var(--color-gray-800)}.dark\:hover\:bg-green-900:is(.dark *):hover{background-color:var(--color-green-900)}.dark\:hover\:bg-red-900:is(.dark *):hover{background-color:var(--color-red-900)}.dark\:hover\:bg-red-900\/20:is(.dark *):hover{background-color:#82181a33}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-red-900\/20:is(.dark *):hover{background-color:color-mix(in oklab,var(--color-red-900)20%,transparent)}}.dark\:hover\:bg-white\/5:is(.dark *):hover{background-color:#ffffff0d}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-white\/5:is(.dark *):hover{background-color:color-mix(in oklab,var(--color-white)5%,transparent)}}.dark\:hover\:bg-yellow-900:is(.dark *):hover{background-color:var(--color-yellow-900)}.dark\:hover\:text-gray-100:is(.dark *):hover{color:var(--color-gray-100)}.dark\:hover\:text-gray-300:is(.dark *):hover{color:var(--color-gray-300)}.dark\:hover\:text-gray-400:is(.dark *):hover{color:var(--color-gray-400)}}.dark\:focus\:border-primary:is(.dark *):focus{border-color:var(--color-primary)}.dark\:focus\:ring-primary:is(.dark *):focus{--tw-ring-color:var(--color-primary)}.dark\:focus\:ring-offset-gray-900:is(.dark *):focus{--tw-ring-offset-color:var(--color-gray-900)}.dark\:disabled\:border-gray-800:is(.dark *):disabled{border-color:var(--color-gray-800)}.dark\:disabled\:bg-gray-950:is(.dark *):disabled{background-color:var(--color-gray-950)}.dark\:disabled\:text-gray-500:is(.dark *):disabled{color:var(--color-gray-500)}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"CollapsibleCard.vue_vue_type_script_setup_true_lang-Cs6KGC-0.cjs","sources":["../src/components/core/CardComponent.vue","../src/components/core/TableComponent.vue","../src/components/core/MobileList.vue","../src/components/core/ResponsiveList.vue","../src/components/core/AutocompleteComponent.vue","../src/components/core/TableAction.vue","../src/components/core/Button.vue","../src/components/core/Avatar.vue","../src/components/core/Tabs.vue","../src/components/core/TabPanel.vue","../src/components/core/Stepper.vue","../src/components/core/CollapsibleCard.vue"],"sourcesContent":["<script lang=\"ts\" setup>\ndefineProps<{\n title?: string\n description?: string\n}>()\n</script>\n\n<template>\n <div class=\"flex flex-col overflow-hidden rounded-lg bg-white shadow-md dark:bg-slate-950\">\n <div\n v-if=\"title || description || $slots.title || $slots.description || $slots.actions\"\n class=\"flex items-center justify-between border-b border-gray-200 px-5 py-3 dark:border-gray-700\"\n >\n <div class=\"flex flex-col gap-0.5\">\n <span\n v-if=\"title || $slots.title\"\n class=\"text-md font-semibold text-gray-800 dark:text-gray-200\"\n >\n <slot name=\"title\">\n {{ title }}\n </slot>\n </span>\n\n <span\n v-if=\"description || $slots.description\"\n class=\"text-sm font-normal text-gray-600 dark:text-gray-400\"\n >\n <slot name=\"description\">\n {{ description }}\n </slot>\n </span>\n </div>\n\n <div class=\"flex gap-2\">\n <slot name=\"actions\" />\n </div>\n </div>\n\n <slot />\n </div>\n</template>\n","<script lang=\"ts\" setup>\nimport type { Property } from '@/types'\nimport TextType from '@/components/type/TextType.vue'\nimport NumberType from '@/components/type/NumberType.vue'\nimport DateType from '@/components/type/DateType.vue'\nimport BooleanType from '@/components/type/BooleanType.vue'\nimport BadgeType from '@/components/type/BadgeType.vue'\nimport Checkbox from '@/components/form/Checkbox.vue'\nimport { computed, type Component, useSlots } from 'vue'\n\ntype ItemType = { id: number | string; [key: string]: unknown }\n\nconst props = withDefaults(\n defineProps<{\n /** Column definitions */\n properties: Property[]\n /** Array of items to display */\n items: ItemType[]\n /** Enable selection mode */\n selectable?: boolean\n /** Set of selected item keys */\n selectedItems?: Set<string>\n /** Filter function to determine if an item is selectable */\n selectableFilter?: (item: ItemType) => boolean\n /** Key field for unique identification (default: 'id') */\n keyField?: string\n }>(),\n {\n selectable: false,\n keyField: 'id',\n },\n)\n\nconst emit = defineEmits<{\n /** Emitted when an item is selected/deselected */\n select: [id: string]\n /** Emitted when select all is toggled */\n selectAll: []\n}>()\n\nconst slots = useSlots()\n\n// Type components mapping\nconst typeComponents: Record<string, Component> = {\n text: TextType,\n number: NumberType,\n date: DateType,\n boolean: BooleanType,\n badge: BadgeType,\n}\n\nconst getTypeComponent = (type: string = 'text'): Component => {\n return typeComponents[type] || TextType\n}\n\n// Filter out hidden properties\nconst visibleProperties = computed(() => props.properties.filter((p) => !p.hidden))\n\n// Get item key\nconst getKey = (item: ItemType): string => {\n const keyValue = item[props.keyField]\n return String(keyValue ?? Math.random())\n}\n\n// Get nested property value\nconst getItemValue = (item: Record<string, unknown>, property: Property): unknown => {\n if (property.name.includes('.')) {\n let value: unknown = item\n for (const key of property.name.split('.')) {\n if (value && typeof value === 'object' && key in value) {\n value = (value as Record<string, unknown>)[key]\n } else {\n return undefined\n }\n }\n return value\n }\n return item[property.name]\n}\n\nconst getAlignmentClass = (align?: 'left' | 'center' | 'right') => {\n switch (align) {\n case 'center':\n return 'text-center'\n case 'right':\n return 'text-right'\n default:\n return 'text-left'\n }\n}\n\nconst getMainClass = (main?: boolean) => {\n if (main) {\n return 'text-sm font-semibold text-gray-900 dark:text-gray-100'\n }\n return 'text-xs font-medium text-gray-600 dark:text-gray-400'\n}\n\n// Selection logic\nconst selectableItems = computed(() => {\n if (!props.selectableFilter) return props.items\n return props.items.filter(props.selectableFilter)\n})\n\nconst allSelected = computed(() => {\n if (selectableItems.value.length === 0) return false\n return selectableItems.value.every((item) => props.selectedItems?.has(getKey(item)))\n})\n\nconst someSelected = computed(() => {\n return (props.selectedItems?.size || 0) > 0 && !allSelected.value\n})\n\nconst isSelected = (item: ItemType): boolean => {\n return props.selectedItems?.has(getKey(item)) || false\n}\n\nconst isSelectable = (item: ItemType): boolean => {\n if (!props.selectable) return false\n if (!props.selectableFilter) return true\n return props.selectableFilter(item)\n}\n\nconst handleSelect = (item: ItemType) => {\n emit('select', getKey(item))\n}\n\nconst hasActionSlot = computed(() => !!slots.action)\n</script>\n\n<template>\n <div\n class=\"bg-white dark:bg-gray-800 rounded-xl border border-gray-200 dark:border-gray-700 overflow-hidden\"\n >\n <div class=\"overflow-x-auto\">\n <table class=\"w-full divide-y divide-black/10 text-left dark:divide-white/10\">\n <thead\n class=\"bg-black/5 text-sm font-semibold text-gray-600 uppercase dark:bg-white/5 dark:text-gray-400\"\n >\n <tr>\n <!-- Selection header -->\n <th v-if=\"selectable\" class=\"w-12 px-3 py-3\">\n <Checkbox\n :model-value=\"allSelected\"\n :indeterminate=\"someSelected\"\n :disabled=\"selectableItems.length === 0\"\n @update:model-value=\"emit('selectAll')\"\n />\n </th>\n\n <th\n v-for=\"property in visibleProperties\"\n :key=\"property.name\"\n :class=\"[getAlignmentClass(property.align), 'px-3 py-3']\"\n >\n <slot :name=\"'header-' + property.name\" :property>\n {{ property.label ?? property.name }}\n </slot>\n </th>\n\n <th v-if=\"hasActionSlot\" class=\"px-3 py-3 text-right\"></th>\n </tr>\n </thead>\n\n <tbody class=\"divide-y divide-black/10 font-medium dark:divide-white/10\">\n <tr\n v-for=\"item in items\"\n :key=\"getKey(item)\"\n class=\"hover:bg-black/5 dark:hover:bg-white/5 transition-colors\"\n :class=\"{ 'bg-primary/5 dark:bg-primary/10': isSelected(item) }\"\n >\n <!-- Selection cell -->\n <td v-if=\"selectable\" class=\"px-3 py-4\">\n <Checkbox\n v-if=\"isSelectable(item)\"\n :model-value=\"isSelected(item)\"\n @update:model-value=\"handleSelect(item)\"\n />\n </td>\n\n <td\n v-for=\"property in visibleProperties\"\n :key=\"property.name\"\n :class=\"[\n getAlignmentClass(property.align),\n getMainClass(property.main),\n property.className,\n 'px-3 py-4',\n ]\"\n >\n <slot\n :item=\"item\"\n :name=\"'item-' + property.name\"\n :property\n :value=\"getItemValue(item, property)\"\n >\n <component\n :is=\"getTypeComponent(property.type || 'text')\"\n :value=\"getItemValue(item, property)\"\n />\n </slot>\n </td>\n\n <td v-if=\"hasActionSlot\" class=\"flex items-center justify-end gap-2 px-3 py-4\">\n <slot :item=\"item\" name=\"action\"></slot>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n\n <!-- Empty state -->\n <div v-if=\"!items || items.length === 0\">\n <slot name=\"empty\"></slot>\n </div>\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { computed, useSlots } from 'vue'\nimport Checkbox from '@/components/form/Checkbox.vue'\n\nexport interface MobileListColumn {\n key: string\n label: string\n /** Hide this column on mobile */\n hideOnMobile?: boolean\n /** Mark as primary info (shown prominently) */\n primary?: boolean\n /** Mark as secondary info */\n secondary?: boolean\n}\n\ntype ItemType = { id: number | string; [key: string]: unknown }\n\nconst props = withDefaults(\n defineProps<{\n /** Array of items to display */\n items: ItemType[]\n /** Key field for unique identification */\n keyField?: string\n /** Enable selection mode */\n selectable?: boolean\n /** Set of selected item keys */\n selectedItems?: Set<string>\n /** Filter function to determine if an item is selectable */\n selectableFilter?: (item: ItemType) => boolean\n }>(),\n {\n keyField: 'id',\n selectable: false,\n },\n)\n\nconst emit = defineEmits<{\n /** Emitted when an item is selected/deselected */\n select: [id: string]\n /** Emitted when select all is toggled */\n selectAll: []\n}>()\n\ndefineSlots<{\n /** Avatar/icon slot for each item */\n avatar?: (props: { item: ItemType }) => unknown\n /** Main content area for each item */\n content?: (props: { item: ItemType }) => unknown\n /** Actions slot (right side) for each item */\n actions?: (props: { item: ItemType }) => unknown\n /** Empty state slot */\n empty?: () => unknown\n}>()\n\nconst slots = useSlots()\n\nconst getKey = (item: ItemType): string => {\n const keyValue = item[props.keyField]\n return String(keyValue ?? Math.random())\n}\n\nconst selectableItems = computed(() => {\n if (!props.selectableFilter) return props.items\n return props.items.filter(props.selectableFilter)\n})\n\nconst allSelected = computed(() => {\n if (selectableItems.value.length === 0) return false\n return selectableItems.value.every((item) => props.selectedItems?.has(getKey(item)))\n})\n\nconst someSelected = computed(() => {\n return (props.selectedItems?.size || 0) > 0 && !allSelected.value\n})\n\nconst isSelected = (item: ItemType): boolean => {\n return props.selectedItems?.has(getKey(item)) || false\n}\n\nconst isSelectable = (item: ItemType): boolean => {\n if (!props.selectable) return false\n if (!props.selectableFilter) return true\n return props.selectableFilter(item)\n}\n\nconst handleSelect = (item: ItemType) => {\n emit('select', getKey(item))\n}\n\nconst hasEmptySlot = computed(() => !!slots.empty)\n</script>\n\n<template>\n <div class=\"space-y-3\">\n <!-- Select All Header (when selectable) -->\n <div\n v-if=\"selectable && selectableItems.length > 0\"\n class=\"flex items-center gap-3 p-3 bg-gray-50 dark:bg-gray-800/50 rounded-xl\"\n >\n <Checkbox\n :model-value=\"allSelected\"\n :indeterminate=\"someSelected\"\n @update:model-value=\"emit('selectAll')\"\n />\n <span class=\"text-sm text-gray-600 dark:text-gray-400\">\n {{ allSelected ? 'Tout désélectionner' : 'Tout sélectionner' }}\n </span>\n <span\n v-if=\"selectedItems && selectedItems.size > 0\"\n class=\"text-sm text-primary font-medium\"\n >\n ({{ selectedItems.size }} sélectionné{{ selectedItems.size > 1 ? 's' : '' }})\n </span>\n </div>\n\n <!-- Items List -->\n <div\n v-for=\"item in items\"\n :key=\"getKey(item)\"\n class=\"bg-white dark:bg-gray-800 rounded-xl border border-gray-200 dark:border-gray-700 hover:border-primary/30 dark:hover:border-primary/50 hover:shadow-md transition-all duration-200\"\n :class=\"{\n 'ring-2 ring-primary border-primary': isSelected(item),\n }\"\n >\n <div class=\"p-4 flex items-center gap-4\">\n <!-- Checkbox -->\n <div v-if=\"selectable\" class=\"flex-shrink-0\">\n <Checkbox\n v-if=\"isSelectable(item)\"\n :model-value=\"isSelected(item)\"\n @update:model-value=\"handleSelect(item)\"\n />\n <div v-else class=\"w-5 h-5\" />\n </div>\n\n <!-- Avatar slot -->\n <slot name=\"avatar\" :item=\"item\" />\n\n <!-- Content -->\n <div class=\"flex-1 min-w-0\">\n <slot name=\"content\" :item=\"item\" />\n </div>\n\n <!-- Actions -->\n <div class=\"flex-shrink-0\">\n <slot name=\"actions\" :item=\"item\" />\n </div>\n </div>\n </div>\n\n <!-- Empty state -->\n <div v-if=\"items.length === 0 && hasEmptySlot\">\n <slot name=\"empty\" />\n </div>\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { computed, useSlots } from 'vue'\nimport type { Property } from '@/types'\nimport MobileList from './MobileList.vue'\nimport TableComponent from './TableComponent.vue'\n\nexport interface ResponsiveListColumn {\n /** Column key - corresponds to the data field name (alias for 'name' for backward compatibility) */\n key?: string\n /** Column name - corresponds to the data field name */\n name?: string\n /** Display label for the column header */\n label?: string\n /** Column type for automatic rendering */\n type?: 'text' | 'number' | 'date' | 'badge' | 'boolean' | string\n /** Text alignment in the column */\n align?: 'left' | 'center' | 'right'\n /** Header CSS class */\n headerClass?: string\n /** Cell CSS class */\n className?: string\n /** Whether the column is sortable */\n sortable?: boolean\n /** Whether to hide the column */\n hidden?: boolean\n /** Whether the column is the main/primary column */\n main?: boolean\n /** Hide this column on mobile view */\n hideOnMobile?: boolean\n}\n\ntype ItemType = { id: number | string; [key: string]: unknown }\n\nconst props = withDefaults(\n defineProps<{\n /** Array of items to display */\n items: ItemType[]\n /** Column definitions (extends Property with mobile options) */\n columns: ResponsiveListColumn[]\n /** Key field for unique identification */\n keyField?: string\n /** Enable selection mode */\n selectable?: boolean\n /** Set of selected item keys */\n selectedItems?: Set<string>\n /** Filter function to determine if an item is selectable */\n selectableFilter?: (item: ItemType) => boolean\n /** Breakpoint for switching between mobile and desktop views (default: 'lg' = 1024px) */\n breakpoint?: 'sm' | 'md' | 'lg' | 'xl' | '2xl'\n }>(),\n {\n keyField: 'id',\n selectable: false,\n breakpoint: 'lg',\n },\n)\n\nconst emit = defineEmits<{\n /** Emitted when an item is selected/deselected */\n select: [id: string]\n /** Emitted when select all is toggled */\n selectAll: []\n}>()\n\ndefineSlots<{\n // Mobile slots\n /** Avatar/icon slot for mobile view */\n avatar?: (props: { item: ItemType }) => unknown\n /** Main content for mobile view */\n mobileContent?: (props: { item: ItemType }) => unknown\n /** Actions for mobile view */\n mobileActions?: (props: { item: ItemType }) => unknown\n\n // Table cell slots - dynamic based on column key\n /** Custom cell rendering for table view */\n [key: `cell-${string}`]: (props: { item: ItemType; value: unknown }) => unknown\n\n // Shared slots\n /** Actions column for table view, also used as fallback for mobile */\n actions?: (props: { item: ItemType }) => unknown\n /** Empty state slot */\n empty?: () => unknown\n}>()\n\nconst slots = useSlots()\n\n// Helper to get column key (supports both 'key' and 'name' for backward compatibility)\nconst getColumnKey = (col: ResponsiveListColumn): string => col.key || col.name || ''\n\n// Convert columns to Property format for TableComponent\nconst tableProperties = computed<Property[]>(() =>\n props.columns.map((col) => ({\n name: getColumnKey(col),\n label: col.label,\n type: col.type,\n sortable: col.sortable,\n hidden: col.hidden,\n align: col.align,\n className: col.className,\n main: col.main,\n })),\n)\n\n// Get breakpoint class\nconst breakpointClass = computed(() => {\n const breakpoints: Record<string, { mobile: string; desktop: string }> = {\n sm: { mobile: 'sm:hidden', desktop: 'hidden sm:block' },\n md: { mobile: 'md:hidden', desktop: 'hidden md:block' },\n lg: { mobile: 'lg:hidden', desktop: 'hidden lg:block' },\n xl: { mobile: 'xl:hidden', desktop: 'hidden xl:block' },\n '2xl': { mobile: '2xl:hidden', desktop: 'hidden 2xl:block' },\n }\n return breakpoints[props.breakpoint]\n})\n\n// Get cell value for table slots\nconst getCellValue = (item: ItemType, key: string): unknown => {\n const keys = key.split('.')\n let value: unknown = item\n for (const k of keys) {\n if (value && typeof value === 'object' && k in value) {\n value = (value as Record<string, unknown>)[k]\n } else {\n return undefined\n }\n }\n return value\n}\n\n// Check if a cell slot exists\nconst hasCellSlot = (key: string): boolean => {\n return !!slots[`cell-${key}`]\n}\n\nconst hasActionsSlot = computed(() => !!slots.actions)\n</script>\n\n<template>\n <div>\n <!-- Mobile View -->\n <div :class=\"breakpointClass.mobile\">\n <MobileList\n :items=\"items\"\n :key-field=\"keyField\"\n :selectable=\"selectable\"\n :selected-items=\"selectedItems\"\n :selectable-filter=\"selectableFilter\"\n @select=\"emit('select', $event)\"\n @select-all=\"emit('selectAll')\"\n >\n <template #avatar=\"{ item }\">\n <slot name=\"avatar\" :item=\"item\" />\n </template>\n\n <template #content=\"{ item }\">\n <slot name=\"mobileContent\" :item=\"item\" />\n </template>\n\n <template #actions=\"{ item }\">\n <slot name=\"mobileActions\" :item=\"item\">\n <slot name=\"actions\" :item=\"item\" />\n </slot>\n </template>\n\n <template #empty>\n <slot name=\"empty\" />\n </template>\n </MobileList>\n </div>\n\n <!-- Desktop View -->\n <div :class=\"breakpointClass.desktop\">\n <TableComponent\n :items=\"items\"\n :properties=\"tableProperties\"\n :key-field=\"keyField\"\n :selectable=\"selectable\"\n :selected-items=\"selectedItems\"\n :selectable-filter=\"selectableFilter\"\n @select=\"emit('select', $event)\"\n @select-all=\"emit('selectAll')\"\n >\n <!-- Forward cell slots -->\n <template v-for=\"col in columns\" :key=\"getColumnKey(col)\" #[`item-${getColumnKey(col)}`]=\"{ item, value }\">\n <slot\n v-if=\"hasCellSlot(getColumnKey(col))\"\n :name=\"`cell-${getColumnKey(col)}`\"\n :item=\"item\"\n :value=\"getCellValue(item, getColumnKey(col))\"\n />\n <template v-else>{{ value }}</template>\n </template>\n\n <!-- Actions slot -->\n <template v-if=\"hasActionsSlot\" #action=\"{ item }\">\n <slot name=\"actions\" :item=\"item\" />\n </template>\n\n <template #empty>\n <slot name=\"empty\" />\n </template>\n </TableComponent>\n </div>\n </div>\n</template>\n","<script lang=\"ts\" setup>\nimport { computed, nextTick, onUnmounted, ref, watch } from 'vue'\nimport { Icon } from '@iconify/vue'\nimport type { AutocompleteOption } from '@/types'\n\nconst props = withDefaults(\n defineProps<{\n modelValue: string | null\n options: AutocompleteOption[]\n placeholder?: string\n disabled?: boolean\n label?: string\n error?: string\n noResultsText?: string\n /** Use teleport to body to avoid overflow clipping */\n teleport?: boolean\n }>(),\n {\n teleport: true,\n },\n)\n\nconst emit = defineEmits<{\n 'update:modelValue': [value: string | null]\n}>()\n\nconst searchQuery = ref('')\nconst isOpen = ref(false)\nconst highlightedIndex = ref(-1)\nconst inputRef = ref<HTMLInputElement | null>(null)\nconst dropdownRef = ref<HTMLDivElement | null>(null)\nconst containerRef = ref<HTMLDivElement | null>(null)\nconst inputWrapperRef = ref<HTMLDivElement | null>(null)\nconst dropdownPosition = ref({ top: 0, left: 0, width: 0 })\n\nconst filteredOptions = computed(() => {\n if (!searchQuery.value) {\n return props.options\n }\n const query = searchQuery.value.toLowerCase()\n return props.options.filter(\n (option) =>\n option.label.toLowerCase().includes(query) || option.value.toLowerCase().includes(query),\n )\n})\n\nconst selectedLabel = computed(() => {\n if (!props.modelValue) return ''\n const option = props.options.find((opt) => opt.value === props.modelValue)\n return option?.label || ''\n})\n\nwatch(\n () => props.modelValue,\n () => {\n if (!isOpen.value) {\n searchQuery.value = selectedLabel.value\n }\n },\n { immediate: true },\n)\n\nconst updatePosition = () => {\n if (!inputWrapperRef.value || !props.teleport) return\n const rect = inputWrapperRef.value.getBoundingClientRect()\n dropdownPosition.value = {\n top: rect.bottom + window.scrollY + 8,\n left: rect.left + window.scrollX,\n width: rect.width,\n }\n}\n\nconst openDropdown = () => {\n if (props.disabled) return\n isOpen.value = true\n searchQuery.value = ''\n highlightedIndex.value = -1\n nextTick(() => {\n inputRef.value?.focus()\n updatePosition()\n })\n}\n\nconst closeDropdown = () => {\n isOpen.value = false\n searchQuery.value = selectedLabel.value\n highlightedIndex.value = -1\n}\n\nconst selectOption = (option: AutocompleteOption) => {\n emit('update:modelValue', option.value)\n searchQuery.value = option.label\n closeDropdown()\n}\n\nconst clearSelection = () => {\n emit('update:modelValue', null)\n searchQuery.value = ''\n highlightedIndex.value = -1\n nextTick(() => {\n inputRef.value?.focus()\n })\n}\n\nconst handleKeydown = (event: KeyboardEvent) => {\n if (!isOpen.value) return\n\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault()\n highlightedIndex.value = Math.min(\n highlightedIndex.value + 1,\n filteredOptions.value.length - 1,\n )\n scrollToHighlighted()\n break\n case 'ArrowUp':\n event.preventDefault()\n highlightedIndex.value = Math.max(highlightedIndex.value - 1, 0)\n scrollToHighlighted()\n break\n case 'Enter':\n event.preventDefault()\n if (highlightedIndex.value >= 0 && filteredOptions.value[highlightedIndex.value]) {\n selectOption(filteredOptions.value[highlightedIndex.value])\n }\n break\n case 'Escape':\n event.preventDefault()\n closeDropdown()\n break\n }\n}\n\nconst scrollToHighlighted = () => {\n nextTick(() => {\n if (dropdownRef.value) {\n const highlightedElement = dropdownRef.value.querySelector(\n `[data-index=\"${highlightedIndex.value}\"]`,\n ) as HTMLElement\n if (highlightedElement) {\n highlightedElement.scrollIntoView({ block: 'nearest' })\n }\n }\n })\n}\n\nconst handleClickOutside = (event: MouseEvent) => {\n const target = event.target as Node\n const isInsideContainer = containerRef.value?.contains(target)\n const isInsideDropdown = dropdownRef.value?.contains(target)\n if (!isInsideContainer && !isInsideDropdown) {\n closeDropdown()\n }\n}\n\nwatch(isOpen, (newValue) => {\n if (newValue) {\n document.addEventListener('click', handleClickOutside)\n window.addEventListener('scroll', updatePosition, true)\n window.addEventListener('resize', updatePosition)\n } else {\n document.removeEventListener('click', handleClickOutside)\n window.removeEventListener('scroll', updatePosition, true)\n window.removeEventListener('resize', updatePosition)\n }\n})\n\nonUnmounted(() => {\n document.removeEventListener('click', handleClickOutside)\n window.removeEventListener('scroll', updatePosition, true)\n window.removeEventListener('resize', updatePosition)\n})\n\nconst dropdownStyle = computed(() => {\n if (!props.teleport) return {}\n return {\n position: 'absolute' as const,\n top: `${dropdownPosition.value.top}px`,\n left: `${dropdownPosition.value.left}px`,\n width: `${dropdownPosition.value.width}px`,\n }\n})\n</script>\n\n<template>\n <div ref=\"containerRef\" class=\"autocomplete-container\">\n <label v-if=\"label\" class=\"mb-2 block text-sm font-medium text-gray-700 dark:text-gray-300\">\n {{ label }}\n </label>\n\n <div class=\"relative\">\n <div\n ref=\"inputWrapperRef\"\n :class=\"{\n 'border-red-500': error,\n 'border-gray-300 dark:border-gray-600': !error && !isOpen,\n 'border-primary ring-2 ring-primary/20': isOpen,\n 'cursor-not-allowed opacity-50': disabled,\n }\"\n class=\"flex items-center gap-2 rounded-lg border bg-white px-3 py-2 transition dark:bg-gray-800\"\n >\n <Icon class=\"size-5 text-gray-400\" icon=\"lucide:search\" />\n\n <input\n ref=\"inputRef\"\n v-model=\"searchQuery\"\n :disabled=\"disabled\"\n :placeholder=\"placeholder || 'Search...'\"\n class=\"flex-1 bg-transparent text-sm outline-none dark:text-white\"\n type=\"text\"\n @focus=\"openDropdown\"\n @keydown=\"handleKeydown\"\n />\n\n <button\n v-if=\"modelValue && !disabled\"\n class=\"rounded p-1 transition hover:bg-gray-100 dark:hover:bg-gray-700\"\n type=\"button\"\n @click.stop=\"clearSelection\"\n >\n <Icon class=\"size-4 text-gray-400\" icon=\"lucide:x\" />\n </button>\n\n <button\n :disabled=\"disabled\"\n class=\"rounded p-1 transition hover:bg-gray-100 dark:hover:bg-gray-700\"\n type=\"button\"\n @click.stop=\"isOpen ? closeDropdown() : openDropdown()\"\n >\n <Icon\n :class=\"{ 'rotate-180': isOpen }\"\n class=\"size-4 text-gray-400 transition\"\n icon=\"lucide:chevron-down\"\n />\n </button>\n </div>\n\n <!-- Dropdown -->\n <Teleport to=\"body\" :disabled=\"!teleport\">\n <Transition\n enter-active-class=\"transition duration-100 ease-out\"\n enter-from-class=\"opacity-0 scale-95\"\n enter-to-class=\"opacity-100 scale-100\"\n leave-active-class=\"transition duration-75 ease-in\"\n leave-from-class=\"opacity-100 scale-100\"\n leave-to-class=\"opacity-0 scale-95\"\n >\n <div\n v-if=\"isOpen\"\n ref=\"dropdownRef\"\n :style=\"dropdownStyle\"\n :class=\"[\n 'autocomplete-dropdown z-[9999] max-h-60 overflow-auto rounded-lg border border-gray-200 bg-white shadow-lg dark:border-gray-700 dark:bg-gray-800',\n !teleport && 'absolute mt-2 w-full',\n ]\"\n >\n <div v-if=\"filteredOptions.length === 0\" class=\"px-4 py-3 text-sm text-gray-500\">\n {{ noResultsText || 'No results found' }}\n </div>\n\n <button\n v-for=\"(option, index) in filteredOptions\"\n :key=\"option.value\"\n :class=\"{\n 'bg-gray-100 dark:bg-gray-700': highlightedIndex === index,\n 'bg-primary/10': modelValue === option.value,\n }\"\n :data-index=\"index\"\n class=\"flex w-full items-center gap-2 px-4 py-2 text-left text-sm transition hover:bg-gray-100 dark:hover:bg-gray-700\"\n type=\"button\"\n @click=\"selectOption(option)\"\n >\n <Icon\n v-if=\"modelValue === option.value\"\n class=\"size-4 text-primary\"\n icon=\"lucide:check\"\n />\n <span class=\"flex-1 dark:text-white\">{{ option.label }}</span>\n <span class=\"text-xs text-gray-400\">({{ option.value }})</span>\n </button>\n </div>\n </Transition>\n </Teleport>\n </div>\n\n <p v-if=\"error\" class=\"mt-1 text-sm text-red-600\">{{ error }}</p>\n </div>\n</template>\n","<script lang=\"ts\" setup>\nimport { computed, resolveComponent } from 'vue'\nimport { Icon } from '@iconify/vue'\nimport type { TableActionColor } from '@/types'\n\nconst { color, icon, link } = defineProps<{\n link?: string\n icon: string\n color?: TableActionColor\n}>()\n\nconst colorClass = computed(() => {\n switch (color) {\n case 'info':\n return 'border-blue-200 hover:bg-blue-100 dark:border-blue-800 dark:hover:bg-blue-900'\n case 'warning':\n return 'border-yellow-200 hover:bg-yellow-100 dark:border-yellow-800 dark:hover:bg-yellow-900'\n case 'success':\n return 'border-green-200 hover:bg-green-100 dark:border-green-800 dark:hover:bg-green-900'\n case 'error':\n return 'border-red-200 hover:bg-red-100 dark:border-red-800 dark:hover:bg-red-900'\n default:\n return 'border-gray-200 hover:bg-gray-100 dark:border-gray-700 dark:bg-gray-900 dark:hover:bg-gray-800'\n }\n})\n\nconst iconColorClass = computed(() => {\n switch (color) {\n case 'info':\n return 'text-blue-600 group-hover:text-blue-900 dark:text-blue-400 dark:group-hover:text-blue-100'\n case 'warning':\n return 'text-yellow-600 group-hover:text-yellow-900 dark:text-yellow-400 dark:group-hover:text-yellow-100'\n case 'success':\n return 'text-green-600 group-hover:text-green-900 dark:text-green-400 dark:group-hover:text-green-100'\n case 'error':\n return 'text-red-600 group-hover:text-red-900 dark:text-red-400 dark:group-hover:text-red-100'\n default:\n return 'text-gray-600 group-hover:text-gray-900 dark:text-gray-400 dark:group-hover:text-gray-100'\n }\n})\n\n// Try to resolve RouterLink, fallback to 'a' tag\nconst linkComponent = computed(() => {\n if (!link) return 'button'\n try {\n const RouterLink = resolveComponent('RouterLink')\n if (typeof RouterLink !== 'string') {\n return RouterLink\n }\n } catch {\n // RouterLink not available\n }\n return 'a'\n})\n\nconst linkProps = computed(() => {\n if (!link) return {}\n if (linkComponent.value === 'a') {\n return { href: link }\n }\n return { to: link }\n})\n</script>\n\n<template>\n <component\n :is=\"linkComponent\"\n v-bind=\"linkProps\"\n :class=\"colorClass\"\n class=\"group flex size-8 items-center justify-center rounded-lg border\"\n >\n <Icon :class=\"iconColorClass\" :icon class=\"size-4\" />\n </component>\n</template>\n","<script lang=\"ts\" setup>\nimport { computed, resolveComponent } from 'vue'\nimport { Icon } from '@iconify/vue'\n\nexport type ButtonVariant = 'primary' | 'secondary' | 'outline' | 'ghost' | 'danger' | 'success'\nexport type ButtonSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl'\n\nconst props = withDefaults(\n defineProps<{\n /** Button variant */\n variant?: ButtonVariant\n /** Button size */\n size?: ButtonSize\n /** Icon to show (left side) */\n icon?: string\n /** Icon on right side */\n iconRight?: string\n /** Loading state */\n loading?: boolean\n /** Disabled state */\n disabled?: boolean\n /** Full width */\n block?: boolean\n /** Link href (renders as <a>) */\n href?: string\n /** Router link (renders as RouterLink) */\n to?: string\n /** Button type */\n type?: 'button' | 'submit' | 'reset'\n }>(),\n {\n variant: 'primary',\n size: 'md',\n type: 'button',\n },\n)\n\nconst emit = defineEmits<{\n click: [event: MouseEvent]\n}>()\n\nconst variantClasses: Record<ButtonVariant, string> = {\n primary: 'bg-primary text-primary-foreground hover:bg-primary/90 focus:ring-primary',\n secondary: 'bg-secondary text-secondary-foreground hover:bg-secondary/90 focus:ring-secondary',\n outline: 'border border-gray-300 bg-transparent text-gray-700 hover:bg-gray-50 focus:ring-primary dark:border-gray-600 dark:text-gray-300 dark:hover:bg-gray-800',\n ghost: 'bg-transparent text-gray-700 hover:bg-gray-100 focus:ring-primary dark:text-gray-300 dark:hover:bg-gray-800',\n danger: 'bg-red-500 text-white hover:bg-red-600 focus:ring-red-500',\n success: 'bg-green-500 text-white hover:bg-green-600 focus:ring-green-500',\n}\n\nconst sizeClasses: Record<ButtonSize, string> = {\n xs: 'px-2 py-1 text-xs gap-1',\n sm: 'px-3 py-1.5 text-sm gap-1.5',\n md: 'px-4 py-2 text-sm gap-2',\n lg: 'px-5 py-2.5 text-base gap-2',\n xl: 'px-6 py-3 text-lg gap-2.5',\n}\n\nconst iconSizeClasses: Record<ButtonSize, string> = {\n xs: 'size-3',\n sm: 'size-4',\n md: 'size-4',\n lg: 'size-5',\n xl: 'size-6',\n}\n\nconst classes = computed(() => [\n 'inline-flex items-center justify-center font-medium rounded-lg transition-colors focus:outline-none focus:ring-2 focus:ring-offset-2 disabled:opacity-50 disabled:cursor-not-allowed',\n variantClasses[props.variant],\n sizeClasses[props.size],\n props.block && 'w-full',\n])\n\nconst component = computed(() => {\n if (props.to) {\n try {\n const RouterLink = resolveComponent('RouterLink')\n if (typeof RouterLink !== 'string') return RouterLink\n } catch {\n // RouterLink not available\n }\n }\n if (props.href) return 'a'\n return 'button'\n})\n\nconst componentProps = computed(() => {\n if (props.to) return { to: props.to }\n if (props.href) return { href: props.href }\n return { type: props.type, disabled: props.disabled || props.loading }\n})\n\nconst handleClick = (event: MouseEvent) => {\n if (props.disabled || props.loading) return\n emit('click', event)\n}\n</script>\n\n<template>\n <component\n :is=\"component\"\n v-bind=\"componentProps\"\n :class=\"classes\"\n @click=\"handleClick\"\n >\n <Icon\n v-if=\"loading\"\n icon=\"lucide:loader-2\"\n :class=\"[iconSizeClasses[size], 'animate-spin']\"\n />\n <Icon\n v-else-if=\"icon\"\n :icon=\"icon\"\n :class=\"iconSizeClasses[size]\"\n />\n <slot />\n <Icon\n v-if=\"iconRight && !loading\"\n :icon=\"iconRight\"\n :class=\"iconSizeClasses[size]\"\n />\n </component>\n</template>\n","<script lang=\"ts\" setup>\nimport { computed, ref } from 'vue'\nimport { Icon } from '@iconify/vue'\n\nexport type AvatarSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl'\n\nconst props = withDefaults(\n defineProps<{\n /** Image source URL */\n src?: string\n /** Alt text for image */\n alt?: string\n /** Fallback name (shows initials) */\n name?: string\n /** Size variant */\n size?: AvatarSize\n /** Show online status indicator */\n status?: 'online' | 'offline' | 'away' | 'busy'\n /** Rounded style */\n rounded?: 'full' | 'lg' | 'md'\n }>(),\n {\n size: 'md',\n rounded: 'full',\n },\n)\n\nconst imageError = ref(false)\n\nconst sizeClasses: Record<AvatarSize, string> = {\n xs: 'size-6 text-xs',\n sm: 'size-8 text-sm',\n md: 'size-10 text-base',\n lg: 'size-12 text-lg',\n xl: 'size-16 text-xl',\n '2xl': 'size-20 text-2xl',\n}\n\nconst statusSizes: Record<AvatarSize, string> = {\n xs: 'size-1.5',\n sm: 'size-2',\n md: 'size-2.5',\n lg: 'size-3',\n xl: 'size-4',\n '2xl': 'size-5',\n}\n\nconst statusColors: Record<string, string> = {\n online: 'bg-green-500',\n offline: 'bg-gray-400',\n away: 'bg-yellow-500',\n busy: 'bg-red-500',\n}\n\nconst roundedClasses: Record<string, string> = {\n full: 'rounded-full',\n lg: 'rounded-lg',\n md: 'rounded-md',\n}\n\nconst initials = computed(() => {\n if (!props.name) return ''\n return props.name\n .split(' ')\n .map(n => n[0])\n .slice(0, 2)\n .join('')\n .toUpperCase()\n})\n\nconst showImage = computed(() => props.src && !imageError.value)\n</script>\n\n<template>\n <div class=\"relative inline-block\">\n <div\n :class=\"[\n 'flex items-center justify-center overflow-hidden bg-gray-200 font-medium text-gray-600 dark:bg-gray-700 dark:text-gray-300',\n sizeClasses[size],\n roundedClasses[rounded],\n ]\"\n >\n <img\n v-if=\"showImage\"\n :src=\"src\"\n :alt=\"alt || name\"\n class=\"size-full object-cover\"\n @error=\"imageError = true\"\n />\n <span v-else-if=\"initials\">{{ initials }}</span>\n <Icon v-else icon=\"lucide:user\" class=\"size-1/2\" />\n </div>\n <span\n v-if=\"status\"\n :class=\"[\n 'absolute bottom-0 right-0 block rounded-full ring-2 ring-white dark:ring-gray-900',\n statusSizes[size],\n statusColors[status],\n ]\"\n />\n </div>\n</template>\n","<script lang=\"ts\" setup>\nimport { computed, provide } from 'vue'\n\nexport interface Tab {\n key: string\n label: string\n icon?: string\n disabled?: boolean\n}\n\nconst props = withDefaults(\n defineProps<{\n /** Array of tab definitions */\n tabs: Tab[]\n /** Currently active tab key */\n modelValue?: string\n /** Tab style variant */\n variant?: 'underline' | 'pills' | 'boxed'\n }>(),\n {\n variant: 'underline',\n },\n)\n\nconst emit = defineEmits<{\n 'update:modelValue': [value: string]\n}>()\n\nconst activeTab = computed({\n get: () => props.modelValue || props.tabs[0]?.key,\n set: (value: string) => emit('update:modelValue', value),\n})\n\nconst selectTab = (tab: Tab) => {\n if (tab.disabled) return\n activeTab.value = tab.key\n}\n\nconst variantClasses = {\n underline: {\n container: 'border-b border-gray-200 dark:border-gray-700',\n tab: 'border-b-2 -mb-px px-4 py-2',\n active: 'border-primary text-primary dark:text-primary',\n inactive: 'border-transparent text-gray-500 hover:text-gray-700 hover:border-gray-300 dark:text-gray-400 dark:hover:text-gray-300',\n },\n pills: {\n container: 'gap-2',\n tab: 'px-4 py-2 rounded-lg',\n active: 'bg-primary text-white',\n inactive: 'text-gray-500 hover:bg-gray-100 dark:text-gray-400 dark:hover:bg-gray-800',\n },\n boxed: {\n container: 'bg-gray-100 dark:bg-gray-800 p-1 rounded-lg gap-1',\n tab: 'px-4 py-2 rounded-md',\n active: 'bg-white dark:bg-gray-900 text-gray-900 dark:text-white shadow-sm',\n inactive: 'text-gray-500 hover:text-gray-700 dark:text-gray-400 dark:hover:text-gray-300',\n },\n}\n\nprovide('activeTab', activeTab)\n</script>\n\n<template>\n <div>\n <div\n :class=\"[\n 'flex',\n variantClasses[variant].container,\n ]\"\n role=\"tablist\"\n >\n <button\n v-for=\"tab in tabs\"\n :key=\"tab.key\"\n type=\"button\"\n role=\"tab\"\n :aria-selected=\"activeTab === tab.key\"\n :disabled=\"tab.disabled\"\n :class=\"[\n 'text-sm font-medium transition-colors focus:outline-none disabled:cursor-not-allowed disabled:opacity-50',\n variantClasses[variant].tab,\n activeTab === tab.key\n ? variantClasses[variant].active\n : variantClasses[variant].inactive,\n ]\"\n @click=\"selectTab(tab)\"\n >\n {{ tab.label }}\n </button>\n </div>\n <div class=\"mt-4\">\n <slot :active-tab=\"activeTab\" />\n </div>\n </div>\n</template>\n","<script lang=\"ts\" setup>\nimport { inject, computed, type Ref } from 'vue'\n\nconst props = defineProps<{\n /** Tab key this panel belongs to */\n value: string\n}>()\n\nconst activeTab = inject<Ref<string>>('activeTab')\n\nconst isActive = computed(() => activeTab?.value === props.value)\n</script>\n\n<template>\n <div v-show=\"isActive\" role=\"tabpanel\">\n <slot />\n </div>\n</template>\n","<script lang=\"ts\" setup>\nimport { Icon } from '@iconify/vue'\n\nexport interface Step {\n key: string | number\n title: string\n description?: string\n icon?: string\n}\n\nconst props = withDefaults(\n defineProps<{\n /** Array of step definitions */\n steps: Step[]\n /** Current step (key or index) */\n modelValue?: string | number\n /** Orientation */\n orientation?: 'horizontal' | 'vertical'\n }>(),\n {\n orientation: 'horizontal',\n },\n)\n\ndefineEmits<{\n 'update:modelValue': [value: string | number]\n}>()\n\nconst getCurrentStepIndex = () => {\n if (props.modelValue === undefined) return 0\n const index = props.steps.findIndex((s) => s.key === props.modelValue)\n return index >= 0 ? index : 0\n}\n\nconst isStepComplete = (index: number) => index < getCurrentStepIndex()\nconst isStepActive = (index: number) => index === getCurrentStepIndex()\nconst isStepPending = (index: number) => index > getCurrentStepIndex()\n</script>\n\n<template>\n <div\n :class=\"[\n 'w-full',\n orientation === 'vertical' ? 'flex flex-col' : '',\n ]\"\n >\n <div\n :class=\"[\n orientation === 'horizontal'\n ? 'relative flex items-start justify-between'\n : 'relative flex flex-col gap-4',\n ]\"\n >\n <!-- Horizontal Progress Line -->\n <template v-if=\"orientation === 'horizontal'\">\n <div\n class=\"absolute left-0 top-6 h-0.5 w-full bg-gray-200 dark:bg-gray-700\"\n aria-hidden=\"true\"\n />\n <div\n class=\"absolute left-0 top-6 h-0.5 bg-primary transition-all duration-500 ease-in-out\"\n :style=\"{\n width: `${(getCurrentStepIndex() / (steps.length - 1)) * 100}%`,\n }\"\n aria-hidden=\"true\"\n />\n </template>\n\n <!-- Steps -->\n <div\n v-for=\"(step, index) in steps\"\n :key=\"step.key\"\n :class=\"[\n 'relative',\n orientation === 'horizontal'\n ? 'flex flex-1 flex-col items-center'\n : 'flex items-start gap-4',\n ]\"\n >\n <!-- Vertical Line -->\n <div\n v-if=\"orientation === 'vertical' && index < steps.length - 1\"\n class=\"absolute left-6 top-12 h-full w-0.5 -translate-x-1/2\"\n :class=\"isStepComplete(index) ? 'bg-primary' : 'bg-gray-200 dark:bg-gray-700'\"\n />\n\n <!-- Step Circle -->\n <div\n class=\"relative z-10 flex size-12 shrink-0 items-center justify-center rounded-full border-2 transition-all duration-300\"\n :class=\"{\n 'border-primary bg-primary text-white shadow-lg': isStepActive(index) || isStepComplete(index),\n 'border-gray-300 bg-white text-gray-400 dark:border-gray-600 dark:bg-gray-800 dark:text-gray-500':\n isStepPending(index),\n }\"\n >\n <Icon\n v-if=\"isStepComplete(index)\"\n icon=\"lucide:check\"\n class=\"size-6\"\n />\n <Icon\n v-else-if=\"step.icon\"\n :icon=\"step.icon\"\n class=\"size-6\"\n />\n <span v-else class=\"text-sm font-semibold\">{{ index + 1 }}</span>\n </div>\n\n <!-- Step Content -->\n <div\n :class=\"[\n orientation === 'horizontal'\n ? 'mt-4 flex flex-col items-center text-center'\n : 'flex flex-col pt-2',\n ]\"\n >\n <p\n class=\"text-sm font-semibold transition-colors\"\n :class=\"{\n 'text-primary dark:text-primary': isStepActive(index) || isStepComplete(index),\n 'text-gray-500 dark:text-gray-400': isStepPending(index),\n }\"\n >\n {{ step.title }}\n </p>\n <p\n v-if=\"step.description\"\n class=\"mt-1 text-xs\"\n :class=\"{\n 'text-gray-600 dark:text-gray-300': isStepActive(index),\n 'text-gray-500 dark:text-gray-400': !isStepActive(index),\n }\"\n >\n {{ step.description }}\n </p>\n </div>\n </div>\n </div>\n </div>\n</template>\n","<script lang=\"ts\" setup>\nimport { Icon } from '@iconify/vue'\nimport { ref } from 'vue'\nimport CardComponent from './CardComponent.vue'\n\nconst props = withDefaults(\n defineProps<{\n /** Card title */\n title?: string\n /** Card description */\n description?: string\n /** Whether the card is initially expanded */\n defaultExpanded?: boolean\n }>(),\n {\n defaultExpanded: true,\n },\n)\n\nconst isExpanded = ref(props.defaultExpanded)\n\nconst toggle = () => {\n isExpanded.value = !isExpanded.value\n}\n</script>\n\n<template>\n <CardComponent :title=\"title\" :description=\"description\">\n <template #actions>\n <slot name=\"actions\" />\n <button\n type=\"button\"\n class=\"rounded-lg p-1.5 text-gray-500 hover:bg-gray-100 dark:text-gray-400 dark:hover:bg-gray-800\"\n @click=\"toggle\"\n >\n <Icon\n :icon=\"isExpanded ? 'lucide:chevron-up' : 'lucide:chevron-down'\"\n class=\"size-5\"\n />\n </button>\n </template>\n\n <Transition\n enter-active-class=\"transition-all duration-200 ease-out\"\n enter-from-class=\"opacity-0 max-h-0\"\n enter-to-class=\"opacity-100 max-h-[2000px]\"\n leave-active-class=\"transition-all duration-200 ease-in\"\n leave-from-class=\"opacity-100 max-h-[2000px]\"\n leave-to-class=\"opacity-0 max-h-0\"\n >\n <div v-show=\"isExpanded\" class=\"overflow-hidden\">\n <div class=\"space-y-4 p-6\">\n <slot />\n </div>\n </div>\n </Transition>\n </CardComponent>\n</template>\n"],"names":["_openBlock","_createElementBlock","_hoisted_1","$slots","_hoisted_2","_createElementVNode","_hoisted_3","_hoisted_4","_renderSlot","_hoisted_5","_hoisted_6","useSlots","TextType","NumberType","DateType","BooleanType","BadgeType","computed","_createVNode","Checkbox","_Fragment","_renderList","_normalizeClass","_createTextVNode","_toDisplayString","_hoisted_7","_hoisted_8","_createBlock","_resolveDynamicComponent","_hoisted_9","_hoisted_10","MobileList","_withCtx","TableComponent","ref","watch","nextTick","onUnmounted","_unref","Icon","_withModifiers","_Teleport","_Transition","resolveComponent","_mergeProps","provide","inject","_withDirectives","_normalizeStyle","CardComponent"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"CollapsibleCard.vue_vue_type_script_setup_true_lang-DTGAuLCh.js","sources":["../src/components/core/CardComponent.vue","../src/components/core/TableComponent.vue","../src/components/core/MobileList.vue","../src/components/core/ResponsiveList.vue","../src/components/core/AutocompleteComponent.vue","../src/components/core/TableAction.vue","../src/components/core/Button.vue","../src/components/core/Avatar.vue","../src/components/core/Tabs.vue","../src/components/core/TabPanel.vue","../src/components/core/Stepper.vue","../src/components/core/CollapsibleCard.vue"],"sourcesContent":["<script lang=\"ts\" setup>\ndefineProps<{\n title?: string\n description?: string\n}>()\n</script>\n\n<template>\n <div class=\"flex flex-col overflow-hidden rounded-lg bg-white shadow-md dark:bg-slate-950\">\n <div\n v-if=\"title || description || $slots.title || $slots.description || $slots.actions\"\n class=\"flex items-center justify-between border-b border-gray-200 px-5 py-3 dark:border-gray-700\"\n >\n <div class=\"flex flex-col gap-0.5\">\n <span\n v-if=\"title || $slots.title\"\n class=\"text-md font-semibold text-gray-800 dark:text-gray-200\"\n >\n <slot name=\"title\">\n {{ title }}\n </slot>\n </span>\n\n <span\n v-if=\"description || $slots.description\"\n class=\"text-sm font-normal text-gray-600 dark:text-gray-400\"\n >\n <slot name=\"description\">\n {{ description }}\n </slot>\n </span>\n </div>\n\n <div class=\"flex gap-2\">\n <slot name=\"actions\" />\n </div>\n </div>\n\n <slot />\n </div>\n</template>\n","<script lang=\"ts\" setup>\nimport type { Property } from '@/types'\nimport TextType from '@/components/type/TextType.vue'\nimport NumberType from '@/components/type/NumberType.vue'\nimport DateType from '@/components/type/DateType.vue'\nimport BooleanType from '@/components/type/BooleanType.vue'\nimport BadgeType from '@/components/type/BadgeType.vue'\nimport Checkbox from '@/components/form/Checkbox.vue'\nimport { computed, type Component, useSlots } from 'vue'\n\ntype ItemType = { id: number | string; [key: string]: unknown }\n\nconst props = withDefaults(\n defineProps<{\n /** Column definitions */\n properties: Property[]\n /** Array of items to display */\n items: ItemType[]\n /** Enable selection mode */\n selectable?: boolean\n /** Set of selected item keys */\n selectedItems?: Set<string>\n /** Filter function to determine if an item is selectable */\n selectableFilter?: (item: ItemType) => boolean\n /** Key field for unique identification (default: 'id') */\n keyField?: string\n }>(),\n {\n selectable: false,\n keyField: 'id',\n },\n)\n\nconst emit = defineEmits<{\n /** Emitted when an item is selected/deselected */\n select: [id: string]\n /** Emitted when select all is toggled */\n selectAll: []\n}>()\n\nconst slots = useSlots()\n\n// Type components mapping\nconst typeComponents: Record<string, Component> = {\n text: TextType,\n number: NumberType,\n date: DateType,\n boolean: BooleanType,\n badge: BadgeType,\n}\n\nconst getTypeComponent = (type: string = 'text'): Component => {\n return typeComponents[type] || TextType\n}\n\n// Filter out hidden properties\nconst visibleProperties = computed(() => props.properties.filter((p) => !p.hidden))\n\n// Get item key\nconst getKey = (item: ItemType): string => {\n const keyValue = item[props.keyField]\n return String(keyValue ?? Math.random())\n}\n\n// Get nested property value\nconst getItemValue = (item: Record<string, unknown>, property: Property): unknown => {\n if (property.name.includes('.')) {\n let value: unknown = item\n for (const key of property.name.split('.')) {\n if (value && typeof value === 'object' && key in value) {\n value = (value as Record<string, unknown>)[key]\n } else {\n return undefined\n }\n }\n return value\n }\n return item[property.name]\n}\n\nconst getAlignmentClass = (align?: 'left' | 'center' | 'right') => {\n switch (align) {\n case 'center':\n return 'text-center'\n case 'right':\n return 'text-right'\n default:\n return 'text-left'\n }\n}\n\nconst getMainClass = (main?: boolean) => {\n if (main) {\n return 'text-sm font-semibold text-gray-900 dark:text-gray-100'\n }\n return 'text-xs font-medium text-gray-600 dark:text-gray-400'\n}\n\n// Selection logic\nconst selectableItems = computed(() => {\n if (!props.selectableFilter) return props.items\n return props.items.filter(props.selectableFilter)\n})\n\nconst allSelected = computed(() => {\n if (selectableItems.value.length === 0) return false\n return selectableItems.value.every((item) => props.selectedItems?.has(getKey(item)))\n})\n\nconst someSelected = computed(() => {\n return (props.selectedItems?.size || 0) > 0 && !allSelected.value\n})\n\nconst isSelected = (item: ItemType): boolean => {\n return props.selectedItems?.has(getKey(item)) || false\n}\n\nconst isSelectable = (item: ItemType): boolean => {\n if (!props.selectable) return false\n if (!props.selectableFilter) return true\n return props.selectableFilter(item)\n}\n\nconst handleSelect = (item: ItemType) => {\n emit('select', getKey(item))\n}\n\nconst hasActionSlot = computed(() => !!slots.action)\n</script>\n\n<template>\n <div\n class=\"bg-white dark:bg-gray-800 rounded-xl border border-gray-200 dark:border-gray-700 overflow-hidden\"\n >\n <div class=\"overflow-x-auto\">\n <table class=\"w-full divide-y divide-black/10 text-left dark:divide-white/10\">\n <thead\n class=\"bg-black/5 text-sm font-semibold text-gray-600 uppercase dark:bg-white/5 dark:text-gray-400\"\n >\n <tr>\n <!-- Selection header -->\n <th v-if=\"selectable\" class=\"w-12 px-3 py-3\">\n <Checkbox\n :model-value=\"allSelected\"\n :indeterminate=\"someSelected\"\n :disabled=\"selectableItems.length === 0\"\n @update:model-value=\"emit('selectAll')\"\n />\n </th>\n\n <th\n v-for=\"property in visibleProperties\"\n :key=\"property.name\"\n :class=\"[getAlignmentClass(property.align), 'px-3 py-3']\"\n >\n <slot :name=\"'header-' + property.name\" :property>\n {{ property.label ?? property.name }}\n </slot>\n </th>\n\n <th v-if=\"hasActionSlot\" class=\"px-3 py-3 text-right\"></th>\n </tr>\n </thead>\n\n <tbody class=\"divide-y divide-black/10 font-medium dark:divide-white/10\">\n <tr\n v-for=\"item in items\"\n :key=\"getKey(item)\"\n class=\"hover:bg-black/5 dark:hover:bg-white/5 transition-colors\"\n :class=\"{ 'bg-primary/5 dark:bg-primary/10': isSelected(item) }\"\n >\n <!-- Selection cell -->\n <td v-if=\"selectable\" class=\"px-3 py-4\">\n <Checkbox\n v-if=\"isSelectable(item)\"\n :model-value=\"isSelected(item)\"\n @update:model-value=\"handleSelect(item)\"\n />\n </td>\n\n <td\n v-for=\"property in visibleProperties\"\n :key=\"property.name\"\n :class=\"[\n getAlignmentClass(property.align),\n getMainClass(property.main),\n property.className,\n 'px-3 py-4',\n ]\"\n >\n <slot\n :item=\"item\"\n :name=\"'item-' + property.name\"\n :property\n :value=\"getItemValue(item, property)\"\n >\n <component\n :is=\"getTypeComponent(property.type || 'text')\"\n :value=\"getItemValue(item, property)\"\n />\n </slot>\n </td>\n\n <td v-if=\"hasActionSlot\" class=\"flex items-center justify-end gap-2 px-3 py-4\">\n <slot :item=\"item\" name=\"action\"></slot>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n\n <!-- Empty state -->\n <div v-if=\"!items || items.length === 0\">\n <slot name=\"empty\"></slot>\n </div>\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { computed, useSlots } from 'vue'\nimport Checkbox from '@/components/form/Checkbox.vue'\n\nexport interface MobileListColumn {\n key: string\n label: string\n /** Hide this column on mobile */\n hideOnMobile?: boolean\n /** Mark as primary info (shown prominently) */\n primary?: boolean\n /** Mark as secondary info */\n secondary?: boolean\n}\n\ntype ItemType = { id: number | string; [key: string]: unknown }\n\nconst props = withDefaults(\n defineProps<{\n /** Array of items to display */\n items: ItemType[]\n /** Key field for unique identification */\n keyField?: string\n /** Enable selection mode */\n selectable?: boolean\n /** Set of selected item keys */\n selectedItems?: Set<string>\n /** Filter function to determine if an item is selectable */\n selectableFilter?: (item: ItemType) => boolean\n }>(),\n {\n keyField: 'id',\n selectable: false,\n },\n)\n\nconst emit = defineEmits<{\n /** Emitted when an item is selected/deselected */\n select: [id: string]\n /** Emitted when select all is toggled */\n selectAll: []\n}>()\n\ndefineSlots<{\n /** Avatar/icon slot for each item */\n avatar?: (props: { item: ItemType }) => unknown\n /** Main content area for each item */\n content?: (props: { item: ItemType }) => unknown\n /** Actions slot (right side) for each item */\n actions?: (props: { item: ItemType }) => unknown\n /** Empty state slot */\n empty?: () => unknown\n}>()\n\nconst slots = useSlots()\n\nconst getKey = (item: ItemType): string => {\n const keyValue = item[props.keyField]\n return String(keyValue ?? Math.random())\n}\n\nconst selectableItems = computed(() => {\n if (!props.selectableFilter) return props.items\n return props.items.filter(props.selectableFilter)\n})\n\nconst allSelected = computed(() => {\n if (selectableItems.value.length === 0) return false\n return selectableItems.value.every((item) => props.selectedItems?.has(getKey(item)))\n})\n\nconst someSelected = computed(() => {\n return (props.selectedItems?.size || 0) > 0 && !allSelected.value\n})\n\nconst isSelected = (item: ItemType): boolean => {\n return props.selectedItems?.has(getKey(item)) || false\n}\n\nconst isSelectable = (item: ItemType): boolean => {\n if (!props.selectable) return false\n if (!props.selectableFilter) return true\n return props.selectableFilter(item)\n}\n\nconst handleSelect = (item: ItemType) => {\n emit('select', getKey(item))\n}\n\nconst hasEmptySlot = computed(() => !!slots.empty)\n</script>\n\n<template>\n <div class=\"space-y-3\">\n <!-- Select All Header (when selectable) -->\n <div\n v-if=\"selectable && selectableItems.length > 0\"\n class=\"flex items-center gap-3 p-3 bg-gray-50 dark:bg-gray-800/50 rounded-xl\"\n >\n <Checkbox\n :model-value=\"allSelected\"\n :indeterminate=\"someSelected\"\n @update:model-value=\"emit('selectAll')\"\n />\n <span class=\"text-sm text-gray-600 dark:text-gray-400\">\n {{ allSelected ? 'Tout désélectionner' : 'Tout sélectionner' }}\n </span>\n <span\n v-if=\"selectedItems && selectedItems.size > 0\"\n class=\"text-sm text-primary font-medium\"\n >\n ({{ selectedItems.size }} sélectionné{{ selectedItems.size > 1 ? 's' : '' }})\n </span>\n </div>\n\n <!-- Items List -->\n <div\n v-for=\"item in items\"\n :key=\"getKey(item)\"\n class=\"bg-white dark:bg-gray-800 rounded-xl border border-gray-200 dark:border-gray-700 hover:border-primary/30 dark:hover:border-primary/50 hover:shadow-md transition-all duration-200\"\n :class=\"{\n 'ring-2 ring-primary border-primary': isSelected(item),\n }\"\n >\n <div class=\"p-4 flex items-center gap-4\">\n <!-- Checkbox -->\n <div v-if=\"selectable\" class=\"flex-shrink-0\">\n <Checkbox\n v-if=\"isSelectable(item)\"\n :model-value=\"isSelected(item)\"\n @update:model-value=\"handleSelect(item)\"\n />\n <div v-else class=\"w-5 h-5\" />\n </div>\n\n <!-- Avatar slot -->\n <slot name=\"avatar\" :item=\"item\" />\n\n <!-- Content -->\n <div class=\"flex-1 min-w-0\">\n <slot name=\"content\" :item=\"item\" />\n </div>\n\n <!-- Actions -->\n <div class=\"flex-shrink-0\">\n <slot name=\"actions\" :item=\"item\" />\n </div>\n </div>\n </div>\n\n <!-- Empty state -->\n <div v-if=\"items.length === 0 && hasEmptySlot\">\n <slot name=\"empty\" />\n </div>\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { computed, useSlots } from 'vue'\nimport type { Property } from '@/types'\nimport MobileList from './MobileList.vue'\nimport TableComponent from './TableComponent.vue'\n\nexport interface ResponsiveListColumn {\n /** Column key - corresponds to the data field name (alias for 'name' for backward compatibility) */\n key?: string\n /** Column name - corresponds to the data field name */\n name?: string\n /** Display label for the column header */\n label?: string\n /** Column type for automatic rendering */\n type?: 'text' | 'number' | 'date' | 'badge' | 'boolean' | string\n /** Text alignment in the column */\n align?: 'left' | 'center' | 'right'\n /** Header CSS class */\n headerClass?: string\n /** Cell CSS class */\n className?: string\n /** Whether the column is sortable */\n sortable?: boolean\n /** Whether to hide the column */\n hidden?: boolean\n /** Whether the column is the main/primary column */\n main?: boolean\n /** Hide this column on mobile view */\n hideOnMobile?: boolean\n}\n\ntype ItemType = { id: number | string; [key: string]: unknown }\n\nconst props = withDefaults(\n defineProps<{\n /** Array of items to display */\n items: ItemType[]\n /** Column definitions (extends Property with mobile options) */\n columns: ResponsiveListColumn[]\n /** Key field for unique identification */\n keyField?: string\n /** Enable selection mode */\n selectable?: boolean\n /** Set of selected item keys */\n selectedItems?: Set<string>\n /** Filter function to determine if an item is selectable */\n selectableFilter?: (item: ItemType) => boolean\n /** Breakpoint for switching between mobile and desktop views (default: 'lg' = 1024px) */\n breakpoint?: 'sm' | 'md' | 'lg' | 'xl' | '2xl'\n }>(),\n {\n keyField: 'id',\n selectable: false,\n breakpoint: 'lg',\n },\n)\n\nconst emit = defineEmits<{\n /** Emitted when an item is selected/deselected */\n select: [id: string]\n /** Emitted when select all is toggled */\n selectAll: []\n}>()\n\ndefineSlots<{\n // Mobile slots\n /** Avatar/icon slot for mobile view */\n avatar?: (props: { item: ItemType }) => unknown\n /** Main content for mobile view */\n mobileContent?: (props: { item: ItemType }) => unknown\n /** Actions for mobile view */\n mobileActions?: (props: { item: ItemType }) => unknown\n\n // Table cell slots - dynamic based on column key\n /** Custom cell rendering for table view */\n [key: `cell-${string}`]: (props: { item: ItemType; value: unknown }) => unknown\n\n // Shared slots\n /** Actions column for table view, also used as fallback for mobile */\n actions?: (props: { item: ItemType }) => unknown\n /** Empty state slot */\n empty?: () => unknown\n}>()\n\nconst slots = useSlots()\n\n// Helper to get column key (supports both 'key' and 'name' for backward compatibility)\nconst getColumnKey = (col: ResponsiveListColumn): string => col.key || col.name || ''\n\n// Convert columns to Property format for TableComponent\nconst tableProperties = computed<Property[]>(() =>\n props.columns.map((col) => ({\n name: getColumnKey(col),\n label: col.label,\n type: col.type,\n sortable: col.sortable,\n hidden: col.hidden,\n align: col.align,\n className: col.className,\n main: col.main,\n })),\n)\n\n// Get breakpoint class\nconst breakpointClass = computed(() => {\n const breakpoints: Record<string, { mobile: string; desktop: string }> = {\n sm: { mobile: 'sm:hidden', desktop: 'hidden sm:block' },\n md: { mobile: 'md:hidden', desktop: 'hidden md:block' },\n lg: { mobile: 'lg:hidden', desktop: 'hidden lg:block' },\n xl: { mobile: 'xl:hidden', desktop: 'hidden xl:block' },\n '2xl': { mobile: '2xl:hidden', desktop: 'hidden 2xl:block' },\n }\n return breakpoints[props.breakpoint]\n})\n\n// Get cell value for table slots\nconst getCellValue = (item: ItemType, key: string): unknown => {\n const keys = key.split('.')\n let value: unknown = item\n for (const k of keys) {\n if (value && typeof value === 'object' && k in value) {\n value = (value as Record<string, unknown>)[k]\n } else {\n return undefined\n }\n }\n return value\n}\n\n// Check if a cell slot exists\nconst hasCellSlot = (key: string): boolean => {\n return !!slots[`cell-${key}`]\n}\n\nconst hasActionsSlot = computed(() => !!slots.actions)\n</script>\n\n<template>\n <div>\n <!-- Mobile View -->\n <div :class=\"breakpointClass.mobile\">\n <MobileList\n :items=\"items\"\n :key-field=\"keyField\"\n :selectable=\"selectable\"\n :selected-items=\"selectedItems\"\n :selectable-filter=\"selectableFilter\"\n @select=\"emit('select', $event)\"\n @select-all=\"emit('selectAll')\"\n >\n <template #avatar=\"{ item }\">\n <slot name=\"avatar\" :item=\"item\" />\n </template>\n\n <template #content=\"{ item }\">\n <slot name=\"mobileContent\" :item=\"item\" />\n </template>\n\n <template #actions=\"{ item }\">\n <slot name=\"mobileActions\" :item=\"item\">\n <slot name=\"actions\" :item=\"item\" />\n </slot>\n </template>\n\n <template #empty>\n <slot name=\"empty\" />\n </template>\n </MobileList>\n </div>\n\n <!-- Desktop View -->\n <div :class=\"breakpointClass.desktop\">\n <TableComponent\n :items=\"items\"\n :properties=\"tableProperties\"\n :key-field=\"keyField\"\n :selectable=\"selectable\"\n :selected-items=\"selectedItems\"\n :selectable-filter=\"selectableFilter\"\n @select=\"emit('select', $event)\"\n @select-all=\"emit('selectAll')\"\n >\n <!-- Forward cell slots -->\n <template v-for=\"col in columns\" :key=\"getColumnKey(col)\" #[`item-${getColumnKey(col)}`]=\"{ item, value }\">\n <slot\n v-if=\"hasCellSlot(getColumnKey(col))\"\n :name=\"`cell-${getColumnKey(col)}`\"\n :item=\"item\"\n :value=\"getCellValue(item, getColumnKey(col))\"\n />\n <template v-else>{{ value }}</template>\n </template>\n\n <!-- Actions slot -->\n <template v-if=\"hasActionsSlot\" #action=\"{ item }\">\n <slot name=\"actions\" :item=\"item\" />\n </template>\n\n <template #empty>\n <slot name=\"empty\" />\n </template>\n </TableComponent>\n </div>\n </div>\n</template>\n","<script lang=\"ts\" setup>\nimport { computed, nextTick, onUnmounted, ref, watch } from 'vue'\nimport { Icon } from '@iconify/vue'\nimport type { AutocompleteOption } from '@/types'\n\nconst props = withDefaults(\n defineProps<{\n modelValue: string | null\n options: AutocompleteOption[]\n placeholder?: string\n disabled?: boolean\n label?: string\n error?: string\n noResultsText?: string\n /** Use teleport to body to avoid overflow clipping */\n teleport?: boolean\n }>(),\n {\n teleport: true,\n },\n)\n\nconst emit = defineEmits<{\n 'update:modelValue': [value: string | null]\n}>()\n\nconst searchQuery = ref('')\nconst isOpen = ref(false)\nconst highlightedIndex = ref(-1)\nconst inputRef = ref<HTMLInputElement | null>(null)\nconst dropdownRef = ref<HTMLDivElement | null>(null)\nconst containerRef = ref<HTMLDivElement | null>(null)\nconst inputWrapperRef = ref<HTMLDivElement | null>(null)\nconst dropdownPosition = ref({ top: 0, left: 0, width: 0 })\n\nconst filteredOptions = computed(() => {\n if (!searchQuery.value) {\n return props.options\n }\n const query = searchQuery.value.toLowerCase()\n return props.options.filter(\n (option) =>\n option.label.toLowerCase().includes(query) || option.value.toLowerCase().includes(query),\n )\n})\n\nconst selectedLabel = computed(() => {\n if (!props.modelValue) return ''\n const option = props.options.find((opt) => opt.value === props.modelValue)\n return option?.label || ''\n})\n\nwatch(\n () => props.modelValue,\n () => {\n if (!isOpen.value) {\n searchQuery.value = selectedLabel.value\n }\n },\n { immediate: true },\n)\n\nconst updatePosition = () => {\n if (!inputWrapperRef.value || !props.teleport) return\n const rect = inputWrapperRef.value.getBoundingClientRect()\n dropdownPosition.value = {\n top: rect.bottom + window.scrollY + 8,\n left: rect.left + window.scrollX,\n width: rect.width,\n }\n}\n\nconst openDropdown = () => {\n if (props.disabled) return\n isOpen.value = true\n searchQuery.value = ''\n highlightedIndex.value = -1\n nextTick(() => {\n inputRef.value?.focus()\n updatePosition()\n })\n}\n\nconst closeDropdown = () => {\n isOpen.value = false\n searchQuery.value = selectedLabel.value\n highlightedIndex.value = -1\n}\n\nconst selectOption = (option: AutocompleteOption) => {\n emit('update:modelValue', option.value)\n searchQuery.value = option.label\n closeDropdown()\n}\n\nconst clearSelection = () => {\n emit('update:modelValue', null)\n searchQuery.value = ''\n highlightedIndex.value = -1\n nextTick(() => {\n inputRef.value?.focus()\n })\n}\n\nconst handleKeydown = (event: KeyboardEvent) => {\n if (!isOpen.value) return\n\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault()\n highlightedIndex.value = Math.min(\n highlightedIndex.value + 1,\n filteredOptions.value.length - 1,\n )\n scrollToHighlighted()\n break\n case 'ArrowUp':\n event.preventDefault()\n highlightedIndex.value = Math.max(highlightedIndex.value - 1, 0)\n scrollToHighlighted()\n break\n case 'Enter':\n event.preventDefault()\n if (highlightedIndex.value >= 0 && filteredOptions.value[highlightedIndex.value]) {\n selectOption(filteredOptions.value[highlightedIndex.value])\n }\n break\n case 'Escape':\n event.preventDefault()\n closeDropdown()\n break\n }\n}\n\nconst scrollToHighlighted = () => {\n nextTick(() => {\n if (dropdownRef.value) {\n const highlightedElement = dropdownRef.value.querySelector(\n `[data-index=\"${highlightedIndex.value}\"]`,\n ) as HTMLElement\n if (highlightedElement) {\n highlightedElement.scrollIntoView({ block: 'nearest' })\n }\n }\n })\n}\n\nconst handleClickOutside = (event: MouseEvent) => {\n const target = event.target as Node\n const isInsideContainer = containerRef.value?.contains(target)\n const isInsideDropdown = dropdownRef.value?.contains(target)\n if (!isInsideContainer && !isInsideDropdown) {\n closeDropdown()\n }\n}\n\nwatch(isOpen, (newValue) => {\n if (newValue) {\n document.addEventListener('click', handleClickOutside)\n window.addEventListener('scroll', updatePosition, true)\n window.addEventListener('resize', updatePosition)\n } else {\n document.removeEventListener('click', handleClickOutside)\n window.removeEventListener('scroll', updatePosition, true)\n window.removeEventListener('resize', updatePosition)\n }\n})\n\nonUnmounted(() => {\n document.removeEventListener('click', handleClickOutside)\n window.removeEventListener('scroll', updatePosition, true)\n window.removeEventListener('resize', updatePosition)\n})\n\nconst dropdownStyle = computed(() => {\n if (!props.teleport) return {}\n return {\n position: 'absolute' as const,\n top: `${dropdownPosition.value.top}px`,\n left: `${dropdownPosition.value.left}px`,\n width: `${dropdownPosition.value.width}px`,\n }\n})\n</script>\n\n<template>\n <div ref=\"containerRef\" class=\"autocomplete-container\">\n <label v-if=\"label\" class=\"mb-2 block text-sm font-medium text-gray-700 dark:text-gray-300\">\n {{ label }}\n </label>\n\n <div class=\"relative\">\n <div\n ref=\"inputWrapperRef\"\n :class=\"{\n 'border-red-500': error,\n 'border-gray-300 dark:border-gray-600': !error && !isOpen,\n 'border-primary ring-2 ring-primary/20': isOpen,\n 'cursor-not-allowed opacity-50': disabled,\n }\"\n class=\"flex items-center gap-2 rounded-lg border bg-white px-3 py-2 transition dark:bg-gray-800\"\n >\n <Icon class=\"size-5 text-gray-400\" icon=\"lucide:search\" />\n\n <input\n ref=\"inputRef\"\n v-model=\"searchQuery\"\n :disabled=\"disabled\"\n :placeholder=\"placeholder || 'Search...'\"\n class=\"flex-1 bg-transparent text-sm outline-none dark:text-white\"\n type=\"text\"\n @focus=\"openDropdown\"\n @keydown=\"handleKeydown\"\n />\n\n <button\n v-if=\"modelValue && !disabled\"\n class=\"rounded p-1 transition hover:bg-gray-100 dark:hover:bg-gray-700\"\n type=\"button\"\n @click.stop=\"clearSelection\"\n >\n <Icon class=\"size-4 text-gray-400\" icon=\"lucide:x\" />\n </button>\n\n <button\n :disabled=\"disabled\"\n class=\"rounded p-1 transition hover:bg-gray-100 dark:hover:bg-gray-700\"\n type=\"button\"\n @click.stop=\"isOpen ? closeDropdown() : openDropdown()\"\n >\n <Icon\n :class=\"{ 'rotate-180': isOpen }\"\n class=\"size-4 text-gray-400 transition\"\n icon=\"lucide:chevron-down\"\n />\n </button>\n </div>\n\n <!-- Dropdown -->\n <Teleport to=\"body\" :disabled=\"!teleport\">\n <Transition\n enter-active-class=\"transition duration-100 ease-out\"\n enter-from-class=\"opacity-0 scale-95\"\n enter-to-class=\"opacity-100 scale-100\"\n leave-active-class=\"transition duration-75 ease-in\"\n leave-from-class=\"opacity-100 scale-100\"\n leave-to-class=\"opacity-0 scale-95\"\n >\n <div\n v-if=\"isOpen\"\n ref=\"dropdownRef\"\n :style=\"dropdownStyle\"\n :class=\"[\n 'autocomplete-dropdown z-[9999] max-h-60 overflow-auto rounded-lg border border-gray-200 bg-white shadow-lg dark:border-gray-700 dark:bg-gray-800',\n !teleport && 'absolute mt-2 w-full',\n ]\"\n >\n <div v-if=\"filteredOptions.length === 0\" class=\"px-4 py-3 text-sm text-gray-500\">\n {{ noResultsText || 'No results found' }}\n </div>\n\n <button\n v-for=\"(option, index) in filteredOptions\"\n :key=\"option.value\"\n :class=\"{\n 'bg-gray-100 dark:bg-gray-700': highlightedIndex === index,\n 'bg-primary/10': modelValue === option.value,\n }\"\n :data-index=\"index\"\n class=\"flex w-full items-center gap-2 px-4 py-2 text-left text-sm transition hover:bg-gray-100 dark:hover:bg-gray-700\"\n type=\"button\"\n @click=\"selectOption(option)\"\n >\n <Icon\n v-if=\"modelValue === option.value\"\n class=\"size-4 text-primary\"\n icon=\"lucide:check\"\n />\n <span class=\"flex-1 dark:text-white\">{{ option.label }}</span>\n <span class=\"text-xs text-gray-400\">({{ option.value }})</span>\n </button>\n </div>\n </Transition>\n </Teleport>\n </div>\n\n <p v-if=\"error\" class=\"mt-1 text-sm text-red-600\">{{ error }}</p>\n </div>\n</template>\n","<script lang=\"ts\" setup>\nimport { computed, resolveComponent } from 'vue'\nimport { Icon } from '@iconify/vue'\nimport type { TableActionColor } from '@/types'\n\nconst { color, icon, link } = defineProps<{\n link?: string\n icon: string\n color?: TableActionColor\n}>()\n\nconst colorClass = computed(() => {\n switch (color) {\n case 'info':\n return 'border-blue-200 hover:bg-blue-100 dark:border-blue-800 dark:hover:bg-blue-900'\n case 'warning':\n return 'border-yellow-200 hover:bg-yellow-100 dark:border-yellow-800 dark:hover:bg-yellow-900'\n case 'success':\n return 'border-green-200 hover:bg-green-100 dark:border-green-800 dark:hover:bg-green-900'\n case 'error':\n return 'border-red-200 hover:bg-red-100 dark:border-red-800 dark:hover:bg-red-900'\n default:\n return 'border-gray-200 hover:bg-gray-100 dark:border-gray-700 dark:bg-gray-900 dark:hover:bg-gray-800'\n }\n})\n\nconst iconColorClass = computed(() => {\n switch (color) {\n case 'info':\n return 'text-blue-600 group-hover:text-blue-900 dark:text-blue-400 dark:group-hover:text-blue-100'\n case 'warning':\n return 'text-yellow-600 group-hover:text-yellow-900 dark:text-yellow-400 dark:group-hover:text-yellow-100'\n case 'success':\n return 'text-green-600 group-hover:text-green-900 dark:text-green-400 dark:group-hover:text-green-100'\n case 'error':\n return 'text-red-600 group-hover:text-red-900 dark:text-red-400 dark:group-hover:text-red-100'\n default:\n return 'text-gray-600 group-hover:text-gray-900 dark:text-gray-400 dark:group-hover:text-gray-100'\n }\n})\n\n// Try to resolve RouterLink, fallback to 'a' tag\nconst linkComponent = computed(() => {\n if (!link) return 'button'\n try {\n const RouterLink = resolveComponent('RouterLink')\n if (typeof RouterLink !== 'string') {\n return RouterLink\n }\n } catch {\n // RouterLink not available\n }\n return 'a'\n})\n\nconst linkProps = computed(() => {\n if (!link) return {}\n if (linkComponent.value === 'a') {\n return { href: link }\n }\n return { to: link }\n})\n</script>\n\n<template>\n <component\n :is=\"linkComponent\"\n v-bind=\"linkProps\"\n :class=\"colorClass\"\n class=\"group flex size-8 items-center justify-center rounded-lg border\"\n >\n <Icon :class=\"iconColorClass\" :icon class=\"size-4\" />\n </component>\n</template>\n","<script lang=\"ts\" setup>\nimport { computed, resolveComponent } from 'vue'\nimport { Icon } from '@iconify/vue'\n\nexport type ButtonVariant = 'primary' | 'secondary' | 'outline' | 'ghost' | 'danger' | 'success'\nexport type ButtonSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl'\n\nconst props = withDefaults(\n defineProps<{\n /** Button variant */\n variant?: ButtonVariant\n /** Button size */\n size?: ButtonSize\n /** Icon to show (left side) */\n icon?: string\n /** Icon on right side */\n iconRight?: string\n /** Loading state */\n loading?: boolean\n /** Disabled state */\n disabled?: boolean\n /** Full width */\n block?: boolean\n /** Link href (renders as <a>) */\n href?: string\n /** Router link (renders as RouterLink) */\n to?: string\n /** Button type */\n type?: 'button' | 'submit' | 'reset'\n }>(),\n {\n variant: 'primary',\n size: 'md',\n type: 'button',\n },\n)\n\nconst emit = defineEmits<{\n click: [event: MouseEvent]\n}>()\n\nconst variantClasses: Record<ButtonVariant, string> = {\n primary: 'bg-primary text-primary-foreground hover:bg-primary/90 focus:ring-primary',\n secondary: 'bg-secondary text-secondary-foreground hover:bg-secondary/90 focus:ring-secondary',\n outline: 'border border-gray-300 bg-transparent text-gray-700 hover:bg-gray-50 focus:ring-primary dark:border-gray-600 dark:text-gray-300 dark:hover:bg-gray-800',\n ghost: 'bg-transparent text-gray-700 hover:bg-gray-100 focus:ring-primary dark:text-gray-300 dark:hover:bg-gray-800',\n danger: 'bg-red-500 text-white hover:bg-red-600 focus:ring-red-500',\n success: 'bg-green-500 text-white hover:bg-green-600 focus:ring-green-500',\n}\n\nconst sizeClasses: Record<ButtonSize, string> = {\n xs: 'px-2 py-1 text-xs gap-1',\n sm: 'px-3 py-1.5 text-sm gap-1.5',\n md: 'px-4 py-2 text-sm gap-2',\n lg: 'px-5 py-2.5 text-base gap-2',\n xl: 'px-6 py-3 text-lg gap-2.5',\n}\n\nconst iconSizeClasses: Record<ButtonSize, string> = {\n xs: 'size-3',\n sm: 'size-4',\n md: 'size-4',\n lg: 'size-5',\n xl: 'size-6',\n}\n\nconst classes = computed(() => [\n 'inline-flex items-center justify-center font-medium rounded-lg transition-colors focus:outline-none focus:ring-2 focus:ring-offset-2 disabled:opacity-50 disabled:cursor-not-allowed',\n variantClasses[props.variant],\n sizeClasses[props.size],\n props.block && 'w-full',\n])\n\nconst component = computed(() => {\n if (props.to) {\n try {\n const RouterLink = resolveComponent('RouterLink')\n if (typeof RouterLink !== 'string') return RouterLink\n } catch {\n // RouterLink not available\n }\n }\n if (props.href) return 'a'\n return 'button'\n})\n\nconst componentProps = computed(() => {\n if (props.to) return { to: props.to }\n if (props.href) return { href: props.href }\n return { type: props.type, disabled: props.disabled || props.loading }\n})\n\nconst handleClick = (event: MouseEvent) => {\n if (props.disabled || props.loading) return\n emit('click', event)\n}\n</script>\n\n<template>\n <component\n :is=\"component\"\n v-bind=\"componentProps\"\n :class=\"classes\"\n @click=\"handleClick\"\n >\n <Icon\n v-if=\"loading\"\n icon=\"lucide:loader-2\"\n :class=\"[iconSizeClasses[size], 'animate-spin']\"\n />\n <Icon\n v-else-if=\"icon\"\n :icon=\"icon\"\n :class=\"iconSizeClasses[size]\"\n />\n <slot />\n <Icon\n v-if=\"iconRight && !loading\"\n :icon=\"iconRight\"\n :class=\"iconSizeClasses[size]\"\n />\n </component>\n</template>\n","<script lang=\"ts\" setup>\nimport { computed, ref } from 'vue'\nimport { Icon } from '@iconify/vue'\n\nexport type AvatarSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl'\n\nconst props = withDefaults(\n defineProps<{\n /** Image source URL */\n src?: string\n /** Alt text for image */\n alt?: string\n /** Fallback name (shows initials) */\n name?: string\n /** Size variant */\n size?: AvatarSize\n /** Show online status indicator */\n status?: 'online' | 'offline' | 'away' | 'busy'\n /** Rounded style */\n rounded?: 'full' | 'lg' | 'md'\n }>(),\n {\n size: 'md',\n rounded: 'full',\n },\n)\n\nconst imageError = ref(false)\n\nconst sizeClasses: Record<AvatarSize, string> = {\n xs: 'size-6 text-xs',\n sm: 'size-8 text-sm',\n md: 'size-10 text-base',\n lg: 'size-12 text-lg',\n xl: 'size-16 text-xl',\n '2xl': 'size-20 text-2xl',\n}\n\nconst statusSizes: Record<AvatarSize, string> = {\n xs: 'size-1.5',\n sm: 'size-2',\n md: 'size-2.5',\n lg: 'size-3',\n xl: 'size-4',\n '2xl': 'size-5',\n}\n\nconst statusColors: Record<string, string> = {\n online: 'bg-green-500',\n offline: 'bg-gray-400',\n away: 'bg-yellow-500',\n busy: 'bg-red-500',\n}\n\nconst roundedClasses: Record<string, string> = {\n full: 'rounded-full',\n lg: 'rounded-lg',\n md: 'rounded-md',\n}\n\nconst initials = computed(() => {\n if (!props.name) return ''\n return props.name\n .split(' ')\n .map(n => n[0])\n .slice(0, 2)\n .join('')\n .toUpperCase()\n})\n\nconst showImage = computed(() => props.src && !imageError.value)\n</script>\n\n<template>\n <div class=\"relative inline-block\">\n <div\n :class=\"[\n 'flex items-center justify-center overflow-hidden bg-gray-200 font-medium text-gray-600 dark:bg-gray-700 dark:text-gray-300',\n sizeClasses[size],\n roundedClasses[rounded],\n ]\"\n >\n <img\n v-if=\"showImage\"\n :src=\"src\"\n :alt=\"alt || name\"\n class=\"size-full object-cover\"\n @error=\"imageError = true\"\n />\n <span v-else-if=\"initials\">{{ initials }}</span>\n <Icon v-else icon=\"lucide:user\" class=\"size-1/2\" />\n </div>\n <span\n v-if=\"status\"\n :class=\"[\n 'absolute bottom-0 right-0 block rounded-full ring-2 ring-white dark:ring-gray-900',\n statusSizes[size],\n statusColors[status],\n ]\"\n />\n </div>\n</template>\n","<script lang=\"ts\" setup>\nimport { computed, provide } from 'vue'\n\nexport interface Tab {\n key: string\n label: string\n icon?: string\n disabled?: boolean\n}\n\nconst props = withDefaults(\n defineProps<{\n /** Array of tab definitions */\n tabs: Tab[]\n /** Currently active tab key */\n modelValue?: string\n /** Tab style variant */\n variant?: 'underline' | 'pills' | 'boxed'\n }>(),\n {\n variant: 'underline',\n },\n)\n\nconst emit = defineEmits<{\n 'update:modelValue': [value: string]\n}>()\n\nconst activeTab = computed({\n get: () => props.modelValue || props.tabs[0]?.key,\n set: (value: string) => emit('update:modelValue', value),\n})\n\nconst selectTab = (tab: Tab) => {\n if (tab.disabled) return\n activeTab.value = tab.key\n}\n\nconst variantClasses = {\n underline: {\n container: 'border-b border-gray-200 dark:border-gray-700',\n tab: 'border-b-2 -mb-px px-4 py-2',\n active: 'border-primary text-primary dark:text-primary',\n inactive: 'border-transparent text-gray-500 hover:text-gray-700 hover:border-gray-300 dark:text-gray-400 dark:hover:text-gray-300',\n },\n pills: {\n container: 'gap-2',\n tab: 'px-4 py-2 rounded-lg',\n active: 'bg-primary text-white',\n inactive: 'text-gray-500 hover:bg-gray-100 dark:text-gray-400 dark:hover:bg-gray-800',\n },\n boxed: {\n container: 'bg-gray-100 dark:bg-gray-800 p-1 rounded-lg gap-1',\n tab: 'px-4 py-2 rounded-md',\n active: 'bg-white dark:bg-gray-900 text-gray-900 dark:text-white shadow-sm',\n inactive: 'text-gray-500 hover:text-gray-700 dark:text-gray-400 dark:hover:text-gray-300',\n },\n}\n\nprovide('activeTab', activeTab)\n</script>\n\n<template>\n <div>\n <div\n :class=\"[\n 'flex',\n variantClasses[variant].container,\n ]\"\n role=\"tablist\"\n >\n <button\n v-for=\"tab in tabs\"\n :key=\"tab.key\"\n type=\"button\"\n role=\"tab\"\n :aria-selected=\"activeTab === tab.key\"\n :disabled=\"tab.disabled\"\n :class=\"[\n 'text-sm font-medium transition-colors focus:outline-none disabled:cursor-not-allowed disabled:opacity-50',\n variantClasses[variant].tab,\n activeTab === tab.key\n ? variantClasses[variant].active\n : variantClasses[variant].inactive,\n ]\"\n @click=\"selectTab(tab)\"\n >\n {{ tab.label }}\n </button>\n </div>\n <div class=\"mt-4\">\n <slot :active-tab=\"activeTab\" />\n </div>\n </div>\n</template>\n","<script lang=\"ts\" setup>\nimport { inject, computed, type Ref } from 'vue'\n\nconst props = defineProps<{\n /** Tab key this panel belongs to */\n value: string\n}>()\n\nconst activeTab = inject<Ref<string>>('activeTab')\n\nconst isActive = computed(() => activeTab?.value === props.value)\n</script>\n\n<template>\n <div v-show=\"isActive\" role=\"tabpanel\">\n <slot />\n </div>\n</template>\n","<script lang=\"ts\" setup>\nimport { Icon } from '@iconify/vue'\n\nexport interface Step {\n key: string | number\n title: string\n description?: string\n icon?: string\n}\n\nconst props = withDefaults(\n defineProps<{\n /** Array of step definitions */\n steps: Step[]\n /** Current step (key or index) */\n modelValue?: string | number\n /** Orientation */\n orientation?: 'horizontal' | 'vertical'\n }>(),\n {\n orientation: 'horizontal',\n },\n)\n\ndefineEmits<{\n 'update:modelValue': [value: string | number]\n}>()\n\nconst getCurrentStepIndex = () => {\n if (props.modelValue === undefined) return 0\n const index = props.steps.findIndex((s) => s.key === props.modelValue)\n return index >= 0 ? index : 0\n}\n\nconst isStepComplete = (index: number) => index < getCurrentStepIndex()\nconst isStepActive = (index: number) => index === getCurrentStepIndex()\nconst isStepPending = (index: number) => index > getCurrentStepIndex()\n</script>\n\n<template>\n <div\n :class=\"[\n 'w-full',\n orientation === 'vertical' ? 'flex flex-col' : '',\n ]\"\n >\n <div\n :class=\"[\n orientation === 'horizontal'\n ? 'relative flex items-start justify-between'\n : 'relative flex flex-col gap-4',\n ]\"\n >\n <!-- Horizontal Progress Line -->\n <template v-if=\"orientation === 'horizontal'\">\n <div\n class=\"absolute left-0 top-6 h-0.5 w-full bg-gray-200 dark:bg-gray-700\"\n aria-hidden=\"true\"\n />\n <div\n class=\"absolute left-0 top-6 h-0.5 bg-primary transition-all duration-500 ease-in-out\"\n :style=\"{\n width: `${(getCurrentStepIndex() / (steps.length - 1)) * 100}%`,\n }\"\n aria-hidden=\"true\"\n />\n </template>\n\n <!-- Steps -->\n <div\n v-for=\"(step, index) in steps\"\n :key=\"step.key\"\n :class=\"[\n 'relative',\n orientation === 'horizontal'\n ? 'flex flex-1 flex-col items-center'\n : 'flex items-start gap-4',\n ]\"\n >\n <!-- Vertical Line -->\n <div\n v-if=\"orientation === 'vertical' && index < steps.length - 1\"\n class=\"absolute left-6 top-12 h-full w-0.5 -translate-x-1/2\"\n :class=\"isStepComplete(index) ? 'bg-primary' : 'bg-gray-200 dark:bg-gray-700'\"\n />\n\n <!-- Step Circle -->\n <div\n class=\"relative z-10 flex size-12 shrink-0 items-center justify-center rounded-full border-2 transition-all duration-300\"\n :class=\"{\n 'border-primary bg-primary text-white shadow-lg': isStepActive(index) || isStepComplete(index),\n 'border-gray-300 bg-white text-gray-400 dark:border-gray-600 dark:bg-gray-800 dark:text-gray-500':\n isStepPending(index),\n }\"\n >\n <Icon\n v-if=\"isStepComplete(index)\"\n icon=\"lucide:check\"\n class=\"size-6\"\n />\n <Icon\n v-else-if=\"step.icon\"\n :icon=\"step.icon\"\n class=\"size-6\"\n />\n <span v-else class=\"text-sm font-semibold\">{{ index + 1 }}</span>\n </div>\n\n <!-- Step Content -->\n <div\n :class=\"[\n orientation === 'horizontal'\n ? 'mt-4 flex flex-col items-center text-center'\n : 'flex flex-col pt-2',\n ]\"\n >\n <p\n class=\"text-sm font-semibold transition-colors\"\n :class=\"{\n 'text-primary dark:text-primary': isStepActive(index) || isStepComplete(index),\n 'text-gray-500 dark:text-gray-400': isStepPending(index),\n }\"\n >\n {{ step.title }}\n </p>\n <p\n v-if=\"step.description\"\n class=\"mt-1 text-xs\"\n :class=\"{\n 'text-gray-600 dark:text-gray-300': isStepActive(index),\n 'text-gray-500 dark:text-gray-400': !isStepActive(index),\n }\"\n >\n {{ step.description }}\n </p>\n </div>\n </div>\n </div>\n </div>\n</template>\n","<script lang=\"ts\" setup>\nimport { Icon } from '@iconify/vue'\nimport { ref } from 'vue'\nimport CardComponent from './CardComponent.vue'\n\nconst props = withDefaults(\n defineProps<{\n /** Card title */\n title?: string\n /** Card description */\n description?: string\n /** Whether the card is initially expanded */\n defaultExpanded?: boolean\n }>(),\n {\n defaultExpanded: true,\n },\n)\n\nconst isExpanded = ref(props.defaultExpanded)\n\nconst toggle = () => {\n isExpanded.value = !isExpanded.value\n}\n</script>\n\n<template>\n <CardComponent :title=\"title\" :description=\"description\">\n <template #actions>\n <slot name=\"actions\" />\n <button\n type=\"button\"\n class=\"rounded-lg p-1.5 text-gray-500 hover:bg-gray-100 dark:text-gray-400 dark:hover:bg-gray-800\"\n @click=\"toggle\"\n >\n <Icon\n :icon=\"isExpanded ? 'lucide:chevron-up' : 'lucide:chevron-down'\"\n class=\"size-5\"\n />\n </button>\n </template>\n\n <Transition\n enter-active-class=\"transition-all duration-200 ease-out\"\n enter-from-class=\"opacity-0 max-h-0\"\n enter-to-class=\"opacity-100 max-h-[2000px]\"\n leave-active-class=\"transition-all duration-200 ease-in\"\n leave-from-class=\"opacity-100 max-h-[2000px]\"\n leave-to-class=\"opacity-0 max-h-0\"\n >\n <div v-show=\"isExpanded\" class=\"overflow-hidden\">\n <div class=\"space-y-4 p-6\">\n <slot />\n </div>\n </div>\n </Transition>\n </CardComponent>\n</template>\n"],"names":["_openBlock","_createElementBlock","_hoisted_1","$slots","_hoisted_2","_createElementVNode","_hoisted_3","_hoisted_4","_renderSlot","_hoisted_5","_hoisted_6","TextType","NumberType","DateType","BooleanType","BadgeType","_createVNode","Checkbox","_Fragment","_renderList","_normalizeClass","_createTextVNode","_toDisplayString","_hoisted_7","_hoisted_8","_createBlock","_resolveDynamicComponent","_hoisted_9","_hoisted_10","MobileList","_withCtx","TableComponent","_unref","_withModifiers","_Teleport","_Transition","_mergeProps","_withDirectives","_normalizeStyle","CardComponent"],"mappings":"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"}
|