@cognicatch/react 1.0.0 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cognicatch-react.css +1 -1
- package/dist/index.cjs +2 -1
- package/dist/index.d.ts +7 -4
- package/dist/index.js +343 -278
- package/package.json +12 -12
|
@@ -1 +1 @@
|
|
|
1
|
-
/*! tailwindcss v4.1.18 | MIT License | https://tailwindcss.com */@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-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking: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-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0}}}@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--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-700:oklch(50.5% .213 27.518);--color-amber-50:oklch(98.7% .022 95.277);--color-amber-100:oklch(96.2% .059 95.617);--color-amber-200:oklch(92.4% .12 95.746);--color-amber-300:oklch(87.9% .169 91.605);--color-amber-400:oklch(82.8% .189 84.429);--color-amber-500:oklch(76.9% .188 70.08);--color-amber-700:oklch(55.5% .163 48.998);--color-amber-800:oklch(47.3% .137 46.201);--color-amber-900:oklch(41.4% .112 45.904);--color-amber-950:oklch(27.9% .077 45.635);--color-emerald-100:oklch(95% .052 163.051);--color-emerald-400:oklch(76.5% .177 163.223);--color-emerald-500:oklch(69.6% .17 162.48);--color-emerald-700:oklch(50.8% .118 165.612);--color-blue-400:oklch(70.7% .165 254.624);--color-blue-500:oklch(62.3% .214 259.815);--color-indigo-500:oklch(58.5% .233 277.117);--color-indigo-600:oklch(51.1% .262 276.966);--color-indigo-700:oklch(45.7% .24 277.023);--color-purple-500:oklch(62.7% .265 303.9);--color-zinc-50:oklch(98.5% 0 0);--color-zinc-100:oklch(96.7% .001 286.375);--color-zinc-200:oklch(92% .004 286.32);--color-zinc-300:oklch(87.1% .006 286.286);--color-zinc-400:oklch(70.5% .015 286.067);--color-zinc-500:oklch(55.2% .016 285.938);--color-zinc-600:oklch(44.2% .017 285.786);--color-zinc-700:oklch(37% .013 285.805);--color-zinc-800:oklch(27.4% .006 286.033);--color-zinc-900:oklch(21% .006 285.885);--color-zinc-950:oklch(14.1% .005 285.823);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-md:28rem;--container-2xl:42rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--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-3xl:1.875rem;--text-3xl--line-height: 1.2 ;--font-weight-medium:500;--font-weight-semibold:600;--tracking-tight:-.025em;--leading-relaxed:1.625;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--radius-2xl:1rem;--radius-3xl:1.5rem;--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4,0,.6,1)infinite;--blur-sm:8px;--blur-md:12px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@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;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{.fixed{position:fixed}.static{position:static}.inset-0{inset:calc(var(--spacing)*0)}.right-0{right:calc(var(--spacing)*0)}.bottom-0{bottom:calc(var(--spacing)*0)}.left-0{left:calc(var(--spacing)*0)}.z-50{z-index:50}.mx-auto{margin-inline:auto}.\!mt-0\.5{margin-top:calc(var(--spacing)*.5)!important}.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-3{margin-bottom:calc(var(--spacing)*3)}.mb-4{margin-bottom:calc(var(--spacing)*4)}.mb-6{margin-bottom:calc(var(--spacing)*6)}.mb-8{margin-bottom:calc(var(--spacing)*8)}.\!line-clamp-2{-webkit-line-clamp:2!important;-webkit-box-orient:vertical!important;display:-webkit-box!important;overflow:hidden!important}.flex{display:flex}.grid{display:grid}.inline{display:inline}.h-1\.5{height:calc(var(--spacing)*1.5)}.h-4{height:calc(var(--spacing)*4)}.h-5{height:calc(var(--spacing)*5)}.h-8{height:calc(var(--spacing)*8)}.h-16{height:calc(var(--spacing)*16)}.h-full{height:100%}.min-h-\[70vh\]{min-height:70vh}.min-h-\[100px\]{min-height:100px}.min-h-screen{min-height:100vh}.w-1\.5{width:calc(var(--spacing)*1.5)}.w-4{width:calc(var(--spacing)*4)}.w-5{width:calc(var(--spacing)*5)}.w-8{width:calc(var(--spacing)*8)}.w-12{width:calc(var(--spacing)*12)}.w-16{width:calc(var(--spacing)*16)}.w-full{width:100%}.max-w-2xl{max-width:var(--container-2xl)}.max-w-\[280px\]{max-width:280px}.flex-1{flex:1}.shrink-0{flex-shrink:0}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-pointer{cursor:pointer}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-1{gap:calc(var(--spacing)*1)}.gap-1\.5{gap:calc(var(--spacing)*1.5)}.gap-2{gap:calc(var(--spacing)*2)}.gap-3{gap:calc(var(--spacing)*3)}.gap-4{gap:calc(var(--spacing)*4)}.gap-6{gap:calc(var(--spacing)*6)}.gap-8{gap:calc(var(--spacing)*8)}.\!rounded-md{border-radius:var(--radius-md)!important}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.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)}.rounded-t-3xl{border-top-left-radius:var(--radius-3xl);border-top-right-radius:var(--radius-3xl)}.\!border{border-style:var(--tw-border-style)!important;border-width:1px!important}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.\!border-transparent{border-color:#0000!important}.\!border-zinc-200{border-color:var(--color-zinc-200)!important}.border-amber-200{border-color:var(--color-amber-200)}.border-amber-200\/60{border-color:#fee68599}@supports (color:color-mix(in lab,red,red)){.border-amber-200\/60{border-color:color-mix(in oklab,var(--color-amber-200)60%,transparent)}}.border-indigo-500\/30{border-color:#625fff4d}@supports (color:color-mix(in lab,red,red)){.border-indigo-500\/30{border-color:color-mix(in oklab,var(--color-indigo-500)30%,transparent)}}.border-red-100{border-color:var(--color-red-100)}.border-red-200{border-color:var(--color-red-200)}.border-transparent{border-color:#0000}.border-zinc-200{border-color:var(--color-zinc-200)}.border-zinc-200\/50{border-color:#e4e4e780}@supports (color:color-mix(in lab,red,red)){.border-zinc-200\/50{border-color:color-mix(in oklab,var(--color-zinc-200)50%,transparent)}}.border-zinc-300{border-color:var(--color-zinc-300)}.border-t-indigo-500{border-top-color:var(--color-indigo-500)}.\!bg-white\/90{background-color:#ffffffe6!important}@supports (color:color-mix(in lab,red,red)){.\!bg-white\/90{background-color:color-mix(in oklab,var(--color-white)90%,transparent)!important}}.\!bg-zinc-900{background-color:var(--color-zinc-900)!important}.bg-amber-50{background-color:var(--color-amber-50)}.bg-amber-100{background-color:var(--color-amber-100)}.bg-emerald-100{background-color:var(--color-emerald-100)}.bg-indigo-600{background-color:var(--color-indigo-600)}.bg-red-50{background-color:var(--color-red-50)}.bg-red-100{background-color:var(--color-red-100)}.bg-red-600{background-color:var(--color-red-600)}.bg-transparent{background-color:#0000}.bg-white{background-color:var(--color-white)}.bg-zinc-50{background-color:var(--color-zinc-50)}.bg-zinc-50\/50{background-color:#fafafa80}@supports (color:color-mix(in lab,red,red)){.bg-zinc-50\/50{background-color:color-mix(in oklab,var(--color-zinc-50)50%,transparent)}}.bg-zinc-100{background-color:var(--color-zinc-100)}.bg-zinc-200{background-color:var(--color-zinc-200)}.bg-zinc-900{background-color:var(--color-zinc-900)}.bg-zinc-900\/20{background-color:#18181b33}@supports (color:color-mix(in lab,red,red)){.bg-zinc-900\/20{background-color:color-mix(in oklab,var(--color-zinc-900)20%,transparent)}}.bg-gradient-to-br{--tw-gradient-position:to bottom right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.from-indigo-500\/20{--tw-gradient-from:#625fff33}@supports (color:color-mix(in lab,red,red)){.from-indigo-500\/20{--tw-gradient-from:color-mix(in oklab,var(--color-indigo-500)20%,transparent)}}.from-indigo-500\/20{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-purple-500\/20{--tw-gradient-to:#ac4bff33}@supports (color:color-mix(in lab,red,red)){.to-purple-500\/20{--tw-gradient-to:color-mix(in oklab,var(--color-purple-500)20%,transparent)}}.to-purple-500\/20{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.p-0{padding:calc(var(--spacing)*0)}.p-1{padding:calc(var(--spacing)*1)}.p-2{padding:calc(var(--spacing)*2)}.p-4{padding:calc(var(--spacing)*4)}.p-6{padding:calc(var(--spacing)*6)}.p-8{padding:calc(var(--spacing)*8)}.\!px-3{padding-inline:calc(var(--spacing)*3)!important}.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-6{padding-inline:calc(var(--spacing)*6)}.\!py-1\.5{padding-block:calc(var(--spacing)*1.5)!important}.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)}.pt-8{padding-top:calc(var(--spacing)*8)}.pb-10{padding-bottom:calc(var(--spacing)*10)}.pb-12{padding-bottom:calc(var(--spacing)*12)}.text-center{text-align:center}.font-sans{font-family:var(--font-sans)}.\!text-sm{font-size:var(--text-sm)!important;line-height:var(--tw-leading,var(--text-sm--line-height))!important}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--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))}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.\!font-medium{--tw-font-weight:var(--font-weight-medium)!important;font-weight:var(--font-weight-medium)!important}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.\!text-white{color:var(--color-white)!important}.\!text-zinc-500{color:var(--color-zinc-500)!important}.\!text-zinc-900{color:var(--color-zinc-900)!important}.text-amber-500{color:var(--color-amber-500)}.text-amber-700{color:var(--color-amber-700)}.text-amber-800{color:var(--color-amber-800)}.text-amber-900{color:var(--color-amber-900)}.text-blue-500{color:var(--color-blue-500)}.text-emerald-500{color:var(--color-emerald-500)}.text-emerald-700{color:var(--color-emerald-700)}.text-indigo-500{color:var(--color-indigo-500)}.text-red-500{color:var(--color-red-500)}.text-red-600{color:var(--color-red-600)}.text-red-700{color:var(--color-red-700)}.text-white{color:var(--color-white)}.text-zinc-500{color:var(--color-zinc-500)}.text-zinc-600{color:var(--color-zinc-600)}.text-zinc-700{color:var(--color-zinc-700)}.text-zinc-900{color:var(--color-zinc-900)}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.opacity-70{opacity:.7}.opacity-80{opacity:.8}.\!shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a)!important;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)!important}.\!shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a),0 8px 10px -6px var(--tw-shadow-color,#0000001a)!important;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)!important}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.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-indigo-500\/20{--tw-shadow-color:#625fff33}@supports (color:color-mix(in lab,red,red)){.shadow-indigo-500\/20{--tw-shadow-color:color-mix(in oklab,color-mix(in oklab,var(--color-indigo-500)20%,transparent)var(--tw-shadow-alpha),transparent)}}.backdrop-blur-md{--tw-backdrop-blur:blur(var(--blur-md));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.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-500{--tw-duration:.5s;transition-duration:.5s}@media(hover:hover){.hover\:scale-105:hover{--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x)var(--tw-scale-y)}.hover\:scale-\[1\.02\]:hover{scale:1.02}.hover\:border-amber-300:hover{border-color:var(--color-amber-300)}.hover\:\!bg-zinc-800:hover{background-color:var(--color-zinc-800)!important}.hover\:bg-amber-200:hover{background-color:var(--color-amber-200)}.hover\:bg-indigo-700:hover{background-color:var(--color-indigo-700)}.hover\:bg-red-700:hover{background-color:var(--color-red-700)}.hover\:bg-zinc-100:hover{background-color:var(--color-zinc-100)}.hover\:bg-zinc-300:hover{background-color:var(--color-zinc-300)}.hover\:bg-zinc-800:hover{background-color:var(--color-zinc-800)}.hover\:text-amber-900:hover{color:var(--color-amber-900)}.hover\:text-zinc-900:hover{color:var(--color-zinc-900)}}.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-indigo-500\/50:focus{--tw-ring-color:#625fff80}@supports (color:color-mix(in lab,red,red)){.focus\:ring-indigo-500\/50:focus{--tw-ring-color:color-mix(in oklab,var(--color-indigo-500)50%,transparent)}}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus-visible\:underline:focus-visible{text-decoration-line:underline}.focus-visible\:ring-2:focus-visible{--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-visible\:ring-amber-500\/30:focus-visible{--tw-ring-color:#f99c004d}@supports (color:color-mix(in lab,red,red)){.focus-visible\:ring-amber-500\/30:focus-visible{--tw-ring-color:color-mix(in oklab,var(--color-amber-500)30%,transparent)}}.active\:scale-95:active{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x)var(--tw-scale-y)}@media(min-width:40rem){.sm\:top-\[50\%\]{top:50%}.sm\:bottom-auto{bottom:auto}.sm\:left-\[50\%\]{left:50%}.sm\:hidden{display:none}.sm\:w-full{width:100%}.sm\:max-w-md{max-width:var(--container-md)}.sm\:max-w-none{max-width:none}.sm\:-translate-x-1\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.sm\:-translate-y-1\/2{--tw-translate-y: -50% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.sm\:rounded-2xl{border-radius:var(--radius-2xl)}.sm\:border{border-style:var(--tw-border-style);border-width:1px}}.dark\:\!border-zinc-300:where(.dark,.dark *){border-color:var(--color-zinc-300)!important}.dark\:\!border-zinc-800:where(.dark,.dark *){border-color:var(--color-zinc-800)!important}.dark\:border-amber-800\/50:where(.dark,.dark *){border-color:#953d0080}@supports (color:color-mix(in lab,red,red)){.dark\:border-amber-800\/50:where(.dark,.dark *){border-color:color-mix(in oklab,var(--color-amber-800)50%,transparent)}}.dark\:border-amber-900\/40:where(.dark,.dark *){border-color:#7b330666}@supports (color:color-mix(in lab,red,red)){.dark\:border-amber-900\/40:where(.dark,.dark *){border-color:color-mix(in oklab,var(--color-amber-900)40%,transparent)}}.dark\:border-red-500\/20:where(.dark,.dark *){border-color:#fb2c3633}@supports (color:color-mix(in lab,red,red)){.dark\:border-red-500\/20:where(.dark,.dark *){border-color:color-mix(in oklab,var(--color-red-500)20%,transparent)}}.dark\:border-zinc-700:where(.dark,.dark *){border-color:var(--color-zinc-700)}.dark\:border-zinc-800:where(.dark,.dark *){border-color:var(--color-zinc-800)}.dark\:border-zinc-800\/50:where(.dark,.dark *){border-color:#27272a80}@supports (color:color-mix(in lab,red,red)){.dark\:border-zinc-800\/50:where(.dark,.dark *){border-color:color-mix(in oklab,var(--color-zinc-800)50%,transparent)}}.dark\:\!bg-white:where(.dark,.dark *){background-color:var(--color-white)!important}.dark\:\!bg-zinc-950\/80:where(.dark,.dark *){background-color:#09090bcc!important}@supports (color:color-mix(in lab,red,red)){.dark\:\!bg-zinc-950\/80:where(.dark,.dark *){background-color:color-mix(in oklab,var(--color-zinc-950)80%,transparent)!important}}.dark\:bg-amber-500\/10:where(.dark,.dark *){background-color:#f99c001a}@supports (color:color-mix(in lab,red,red)){.dark\:bg-amber-500\/10:where(.dark,.dark *){background-color:color-mix(in oklab,var(--color-amber-500)10%,transparent)}}.dark\:bg-amber-950\/20:where(.dark,.dark *){background-color:#46190133}@supports (color:color-mix(in lab,red,red)){.dark\:bg-amber-950\/20:where(.dark,.dark *){background-color:color-mix(in oklab,var(--color-amber-950)20%,transparent)}}.dark\:bg-amber-950\/50:where(.dark,.dark *){background-color:#46190180}@supports (color:color-mix(in lab,red,red)){.dark\:bg-amber-950\/50:where(.dark,.dark *){background-color:color-mix(in oklab,var(--color-amber-950)50%,transparent)}}.dark\:bg-black\/80:where(.dark,.dark *){background-color:#000c}@supports (color:color-mix(in lab,red,red)){.dark\:bg-black\/80:where(.dark,.dark *){background-color:color-mix(in oklab,var(--color-black)80%,transparent)}}.dark\:bg-emerald-500\/10:where(.dark,.dark *){background-color:#00bb7f1a}@supports (color:color-mix(in lab,red,red)){.dark\:bg-emerald-500\/10:where(.dark,.dark *){background-color:color-mix(in oklab,var(--color-emerald-500)10%,transparent)}}.dark\:bg-red-500\/10:where(.dark,.dark *){background-color:#fb2c361a}@supports (color:color-mix(in lab,red,red)){.dark\:bg-red-500\/10:where(.dark,.dark *){background-color:color-mix(in oklab,var(--color-red-500)10%,transparent)}}.dark\:bg-zinc-100:where(.dark,.dark *){background-color:var(--color-zinc-100)}.dark\:bg-zinc-800:where(.dark,.dark *){background-color:var(--color-zinc-800)}.dark\:bg-zinc-900\/20:where(.dark,.dark *){background-color:#18181b33}@supports (color:color-mix(in lab,red,red)){.dark\:bg-zinc-900\/20:where(.dark,.dark *){background-color:color-mix(in oklab,var(--color-zinc-900)20%,transparent)}}.dark\:bg-zinc-900\/50:where(.dark,.dark *){background-color:#18181b80}@supports (color:color-mix(in lab,red,red)){.dark\:bg-zinc-900\/50:where(.dark,.dark *){background-color:color-mix(in oklab,var(--color-zinc-900)50%,transparent)}}.dark\:bg-zinc-950:where(.dark,.dark *){background-color:var(--color-zinc-950)}.dark\:\!text-black:where(.dark,.dark *){color:var(--color-black)!important}.dark\:\!text-zinc-50:where(.dark,.dark *){color:var(--color-zinc-50)!important}.dark\:\!text-zinc-400:where(.dark,.dark *){color:var(--color-zinc-400)!important}.dark\:text-amber-100:where(.dark,.dark *){color:var(--color-amber-100)}.dark\:text-amber-200\/70:where(.dark,.dark *){color:#fee685b3}@supports (color:color-mix(in lab,red,red)){.dark\:text-amber-200\/70:where(.dark,.dark *){color:color-mix(in oklab,var(--color-amber-200)70%,transparent)}}.dark\:text-amber-200\/80:where(.dark,.dark *){color:#fee685cc}@supports (color:color-mix(in lab,red,red)){.dark\:text-amber-200\/80:where(.dark,.dark *){color:color-mix(in oklab,var(--color-amber-200)80%,transparent)}}.dark\:text-amber-400:where(.dark,.dark *){color:var(--color-amber-400)}.dark\:text-blue-400:where(.dark,.dark *){color:var(--color-blue-400)}.dark\:text-emerald-400:where(.dark,.dark *){color:var(--color-emerald-400)}.dark\:text-red-400:where(.dark,.dark *){color:var(--color-red-400)}.dark\:text-red-500:where(.dark,.dark *){color:var(--color-red-500)}.dark\:text-white:where(.dark,.dark *){color:var(--color-white)}.dark\:text-zinc-50:where(.dark,.dark *){color:var(--color-zinc-50)}.dark\:text-zinc-100:where(.dark,.dark *){color:var(--color-zinc-100)}.dark\:text-zinc-300:where(.dark,.dark *){color:var(--color-zinc-300)}.dark\:text-zinc-400:where(.dark,.dark *){color:var(--color-zinc-400)}.dark\:text-zinc-900:where(.dark,.dark *){color:var(--color-zinc-900)}.dark\:\!shadow-2xl:where(.dark,.dark *){--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040)!important;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)!important}.dark\:shadow-\[0_1px_2px_rgba\(0\,0\,0\,0\.1\)\]:where(.dark,.dark *){--tw-shadow:0 1px 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)}@media(hover:hover){.dark\:hover\:border-amber-700\/50:where(.dark,.dark *):hover{border-color:#b7500080}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:border-amber-700\/50:where(.dark,.dark *):hover{border-color:color-mix(in oklab,var(--color-amber-700)50%,transparent)}}.dark\:hover\:border-zinc-800:where(.dark,.dark *):hover{border-color:var(--color-zinc-800)}.dark\:hover\:\!bg-zinc-100:where(.dark,.dark *):hover{background-color:var(--color-zinc-100)!important}.dark\:hover\:bg-amber-900\/70:where(.dark,.dark *):hover{background-color:#7b3306b3}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-amber-900\/70:where(.dark,.dark *):hover{background-color:color-mix(in oklab,var(--color-amber-900)70%,transparent)}}.dark\:hover\:bg-white:where(.dark,.dark *):hover{background-color:var(--color-white)}.dark\:hover\:bg-zinc-700:where(.dark,.dark *):hover{background-color:var(--color-zinc-700)}.dark\:hover\:bg-zinc-900:where(.dark,.dark *):hover{background-color:var(--color-zinc-900)}.dark\:hover\:text-amber-100:where(.dark,.dark *):hover{color:var(--color-amber-100)}.dark\:hover\:text-zinc-200:where(.dark,.dark *):hover{color:var(--color-zinc-200)}}}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}@keyframes overlayShow{0%{opacity:0}to{opacity:1}}@keyframes overlayHide{0%{opacity:1}to{opacity:0}}@keyframes contentShowDesktop{0%{opacity:0;transform:translateY(8px)scale(.96)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes contentHideDesktop{0%{opacity:1;transform:translateY(0)scale(1)}to{opacity:0;transform:translateY(8px)scale(.96)}}@keyframes contentShowMobile{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes contentHideMobile{0%{transform:translateY(0)}to{transform:translateY(100%)}}.radix-overlay[data-state=open]{animation:.4s cubic-bezier(.16,1,.3,1) overlayShow}.radix-overlay[data-state=closed]{animation:.3s cubic-bezier(.16,1,.3,1) overlayHide}.radix-content[data-state=open]{animation:.4s cubic-bezier(.16,1,.3,1) contentShowMobile}.radix-content[data-state=closed]{animation:.3s cubic-bezier(.16,1,.3,1) contentHideMobile}@media(min-width:640px){.radix-content[data-state=open]{animation:.5s cubic-bezier(.16,1,.3,1) contentShowDesktop}.radix-content[data-state=closed]{animation:.4s cubic-bezier(.16,1,.3,1) contentHideDesktop}}@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-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"<length-percentage>";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"<length-percentage>";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"<length-percentage>";inherits:false;initial-value:100%}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{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-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@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-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}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}
|
|
1
|
+
/*! tailwindcss v4.1.18 | MIT License | https://tailwindcss.com */@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-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking: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-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0}}}@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--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-700:oklch(50.5% .213 27.518);--color-red-900:oklch(39.6% .141 25.723);--color-amber-50:oklch(98.7% .022 95.277);--color-amber-100:oklch(96.2% .059 95.617);--color-amber-200:oklch(92.4% .12 95.746);--color-amber-400:oklch(82.8% .189 84.429);--color-amber-500:oklch(76.9% .188 70.08);--color-amber-700:oklch(55.5% .163 48.998);--color-amber-800:oklch(47.3% .137 46.201);--color-amber-900:oklch(41.4% .112 45.904);--color-amber-950:oklch(27.9% .077 45.635);--color-emerald-100:oklch(95% .052 163.051);--color-emerald-400:oklch(76.5% .177 163.223);--color-emerald-500:oklch(69.6% .17 162.48);--color-emerald-700:oklch(50.8% .118 165.612);--color-blue-500:oklch(62.3% .214 259.815);--color-indigo-500:oklch(58.5% .233 277.117);--color-indigo-600:oklch(51.1% .262 276.966);--color-indigo-700:oklch(45.7% .24 277.023);--color-purple-500:oklch(62.7% .265 303.9);--color-zinc-50:oklch(98.5% 0 0);--color-zinc-100:oklch(96.7% .001 286.375);--color-zinc-200:oklch(92% .004 286.32);--color-zinc-300:oklch(87.1% .006 286.286);--color-zinc-400:oklch(70.5% .015 286.067);--color-zinc-500:oklch(55.2% .016 285.938);--color-zinc-600:oklch(44.2% .017 285.786);--color-zinc-700:oklch(37% .013 285.805);--color-zinc-800:oklch(27.4% .006 286.033);--color-zinc-900:oklch(21% .006 285.885);--color-zinc-950:oklch(14.1% .005 285.823);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-md:28rem;--container-2xl:42rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--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-3xl:1.875rem;--text-3xl--line-height: 1.2 ;--font-weight-medium:500;--font-weight-semibold:600;--tracking-tight:-.025em;--leading-relaxed:1.625;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--radius-2xl:1rem;--radius-3xl:1.5rem;--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4,0,.6,1)infinite;--blur-sm:8px;--blur-md:12px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@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;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{.fixed{position:fixed}.static{position:static}.inset-0{inset:calc(var(--spacing)*0)}.right-0{right:calc(var(--spacing)*0)}.bottom-0{bottom:calc(var(--spacing)*0)}.left-0{left:calc(var(--spacing)*0)}.z-\[99999\]{z-index:99999}.z-\[999999\]{z-index:999999}.mx-auto{margin-inline:auto}.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-3{margin-bottom:calc(var(--spacing)*3)}.mb-4{margin-bottom:calc(var(--spacing)*4)}.mb-6{margin-bottom:calc(var(--spacing)*6)}.mb-8{margin-bottom:calc(var(--spacing)*8)}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.flex{display:flex}.grid{display:grid}.inline{display:inline}.h-1\.5{height:calc(var(--spacing)*1.5)}.h-4{height:calc(var(--spacing)*4)}.h-5{height:calc(var(--spacing)*5)}.h-6{height:calc(var(--spacing)*6)}.h-8{height:calc(var(--spacing)*8)}.h-16{height:calc(var(--spacing)*16)}.h-full{height:100%}.min-h-\[70vh\]{min-height:70vh}.min-h-\[100px\]{min-height:100px}.min-h-screen{min-height:100vh}.w-4{width:calc(var(--spacing)*4)}.w-5{width:calc(var(--spacing)*5)}.w-6{width:calc(var(--spacing)*6)}.w-8{width:calc(var(--spacing)*8)}.w-12{width:calc(var(--spacing)*12)}.w-16{width:calc(var(--spacing)*16)}.w-full{width:100%}.max-w-2xl{max-width:var(--container-2xl)}.max-w-\[280px\]{max-width:280px}.min-w-0{min-width:calc(var(--spacing)*0)}.flex-1{flex:1}.shrink-0{flex-shrink:0}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-pointer{cursor:pointer}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-1{gap:calc(var(--spacing)*1)}.gap-1\.5{gap:calc(var(--spacing)*1.5)}.gap-2{gap:calc(var(--spacing)*2)}.gap-3{gap:calc(var(--spacing)*3)}.gap-4{gap:calc(var(--spacing)*4)}.gap-6{gap:calc(var(--spacing)*6)}.gap-8{gap:calc(var(--spacing)*8)}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.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)}.rounded-t-3xl{border-top-left-radius:var(--radius-3xl);border-top-right-radius:var(--radius-3xl)}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-amber-200{border-color:var(--color-amber-200)}.border-amber-200\/60{border-color:#fee68599}@supports (color:color-mix(in lab,red,red)){.border-amber-200\/60{border-color:color-mix(in oklab,var(--color-amber-200)60%,transparent)}}.border-red-100{border-color:var(--color-red-100)}.border-red-200{border-color:var(--color-red-200)}.border-transparent{border-color:#0000}.border-zinc-200{border-color:var(--color-zinc-200)}.border-zinc-200\/50{border-color:#e4e4e780}@supports (color:color-mix(in lab,red,red)){.border-zinc-200\/50{border-color:color-mix(in oklab,var(--color-zinc-200)50%,transparent)}}.border-zinc-300{border-color:var(--color-zinc-300)}.border-zinc-400\/30{border-color:#9f9fa94d}@supports (color:color-mix(in lab,red,red)){.border-zinc-400\/30{border-color:color-mix(in oklab,var(--color-zinc-400)30%,transparent)}}.border-t-zinc-900{border-top-color:var(--color-zinc-900)}.bg-amber-50{background-color:var(--color-amber-50)}.bg-amber-100{background-color:var(--color-amber-100)}.bg-emerald-100{background-color:var(--color-emerald-100)}.bg-indigo-600{background-color:var(--color-indigo-600)}.bg-red-50{background-color:var(--color-red-50)}.bg-red-100{background-color:var(--color-red-100)}.bg-red-600{background-color:var(--color-red-600)}.bg-transparent{background-color:#0000}.bg-white{background-color:var(--color-white)}.bg-white\/90{background-color:#ffffffe6}@supports (color:color-mix(in lab,red,red)){.bg-white\/90{background-color:color-mix(in oklab,var(--color-white)90%,transparent)}}.bg-zinc-50{background-color:var(--color-zinc-50)}.bg-zinc-50\/50{background-color:#fafafa80}@supports (color:color-mix(in lab,red,red)){.bg-zinc-50\/50{background-color:color-mix(in oklab,var(--color-zinc-50)50%,transparent)}}.bg-zinc-100{background-color:var(--color-zinc-100)}.bg-zinc-200{background-color:var(--color-zinc-200)}.bg-zinc-900{background-color:var(--color-zinc-900)}.bg-zinc-900\/20{background-color:#18181b33}@supports (color:color-mix(in lab,red,red)){.bg-zinc-900\/20{background-color:color-mix(in oklab,var(--color-zinc-900)20%,transparent)}}.bg-gradient-to-br{--tw-gradient-position:to bottom right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.from-indigo-500\/20{--tw-gradient-from:#625fff33}@supports (color:color-mix(in lab,red,red)){.from-indigo-500\/20{--tw-gradient-from:color-mix(in oklab,var(--color-indigo-500)20%,transparent)}}.from-indigo-500\/20{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-purple-500\/20{--tw-gradient-to:#ac4bff33}@supports (color:color-mix(in lab,red,red)){.to-purple-500\/20{--tw-gradient-to:color-mix(in oklab,var(--color-purple-500)20%,transparent)}}.to-purple-500\/20{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.p-0{padding:calc(var(--spacing)*0)}.p-1{padding:calc(var(--spacing)*1)}.p-2{padding:calc(var(--spacing)*2)}.p-3{padding:calc(var(--spacing)*3)}.p-4{padding:calc(var(--spacing)*4)}.p-6{padding:calc(var(--spacing)*6)}.p-8{padding:calc(var(--spacing)*8)}.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-6{padding-inline:calc(var(--spacing)*6)}.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)}.pt-8{padding-top:calc(var(--spacing)*8)}.pb-10{padding-bottom:calc(var(--spacing)*10)}.pb-12{padding-bottom:calc(var(--spacing)*12)}.text-center{text-align:center}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--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))}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.text-amber-500{color:var(--color-amber-500)}.text-amber-700{color:var(--color-amber-700)}.text-amber-900{color:var(--color-amber-900)}.text-blue-500{color:var(--color-blue-500)}.text-emerald-500{color:var(--color-emerald-500)}.text-emerald-700{color:var(--color-emerald-700)}.text-indigo-500{color:var(--color-indigo-500)}.text-red-500{color:var(--color-red-500)}.text-red-600{color:var(--color-red-600)}.text-red-700{color:var(--color-red-700)}.text-white{color:var(--color-white)}.text-zinc-500{color:var(--color-zinc-500)}.text-zinc-600{color:var(--color-zinc-600)}.text-zinc-700{color:var(--color-zinc-700)}.text-zinc-900{color:var(--color-zinc-900)}.underline-offset-4{text-underline-offset:4px}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.opacity-70{opacity:.7}.opacity-90{opacity:.9}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.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)}.shadow-indigo-500\/20{--tw-shadow-color:#625fff33}@supports (color:color-mix(in lab,red,red)){.shadow-indigo-500\/20{--tw-shadow-color:color-mix(in oklab,color-mix(in oklab,var(--color-indigo-500)20%,transparent)var(--tw-shadow-alpha),transparent)}}.backdrop-blur-md{--tw-backdrop-blur:blur(var(--blur-md));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.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-opacity{transition-property:opacity;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-500{--tw-duration:.5s;transition-duration:.5s}@media(hover:hover){.hover\:scale-105:hover{--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x)var(--tw-scale-y)}.hover\:scale-\[1\.02\]:hover{scale:1.02}.hover\:bg-amber-200:hover{background-color:var(--color-amber-200)}.hover\:bg-indigo-700:hover{background-color:var(--color-indigo-700)}.hover\:bg-red-700:hover{background-color:var(--color-red-700)}.hover\:bg-zinc-100:hover{background-color:var(--color-zinc-100)}.hover\:bg-zinc-300:hover{background-color:var(--color-zinc-300)}.hover\:bg-zinc-800:hover{background-color:var(--color-zinc-800)}.hover\:text-zinc-900:hover{color:var(--color-zinc-900)}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-90:hover{opacity:.9}.hover\:opacity-100:hover{opacity:1}}.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-indigo-500\/50:focus{--tw-ring-color:#625fff80}@supports (color:color-mix(in lab,red,red)){.focus\:ring-indigo-500\/50:focus{--tw-ring-color:color-mix(in oklab,var(--color-indigo-500)50%,transparent)}}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.active\:scale-95:active{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x)var(--tw-scale-y)}@media(min-width:40rem){.sm\:top-1\/2{top:50%}.sm\:bottom-auto{bottom:auto}.sm\:left-1\/2{left:50%}.sm\:hidden{display:none}.sm\:w-full{width:100%}.sm\:max-w-md{max-width:var(--container-md)}.sm\:max-w-none{max-width:none}.sm\:-translate-x-1\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.sm\:-translate-y-1\/2{--tw-translate-y: -50% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.sm\:rounded-2xl{border-radius:var(--radius-2xl)}.sm\:border{border-style:var(--tw-border-style);border-width:1px}}.dark\:border-amber-800\/50:where(.dark,.dark *){border-color:#953d0080}@supports (color:color-mix(in lab,red,red)){.dark\:border-amber-800\/50:where(.dark,.dark *){border-color:color-mix(in oklab,var(--color-amber-800)50%,transparent)}}.dark\:border-amber-900\/40:where(.dark,.dark *){border-color:#7b330666}@supports (color:color-mix(in lab,red,red)){.dark\:border-amber-900\/40:where(.dark,.dark *){border-color:color-mix(in oklab,var(--color-amber-900)40%,transparent)}}.dark\:border-red-500\/20:where(.dark,.dark *){border-color:#fb2c3633}@supports (color:color-mix(in lab,red,red)){.dark\:border-red-500\/20:where(.dark,.dark *){border-color:color-mix(in oklab,var(--color-red-500)20%,transparent)}}.dark\:border-zinc-500\/30:where(.dark,.dark *){border-color:#71717b4d}@supports (color:color-mix(in lab,red,red)){.dark\:border-zinc-500\/30:where(.dark,.dark *){border-color:color-mix(in oklab,var(--color-zinc-500)30%,transparent)}}.dark\:border-zinc-700:where(.dark,.dark *){border-color:var(--color-zinc-700)}.dark\:border-zinc-800:where(.dark,.dark *){border-color:var(--color-zinc-800)}.dark\:border-zinc-800\/50:where(.dark,.dark *){border-color:#27272a80}@supports (color:color-mix(in lab,red,red)){.dark\:border-zinc-800\/50:where(.dark,.dark *){border-color:color-mix(in oklab,var(--color-zinc-800)50%,transparent)}}.dark\:border-t-zinc-100:where(.dark,.dark *){border-top-color:var(--color-zinc-100)}.dark\:bg-amber-500\/10:where(.dark,.dark *){background-color:#f99c001a}@supports (color:color-mix(in lab,red,red)){.dark\:bg-amber-500\/10:where(.dark,.dark *){background-color:color-mix(in oklab,var(--color-amber-500)10%,transparent)}}.dark\:bg-amber-950\/20:where(.dark,.dark *){background-color:#46190133}@supports (color:color-mix(in lab,red,red)){.dark\:bg-amber-950\/20:where(.dark,.dark *){background-color:color-mix(in oklab,var(--color-amber-950)20%,transparent)}}.dark\:bg-amber-950\/50:where(.dark,.dark *){background-color:#46190180}@supports (color:color-mix(in lab,red,red)){.dark\:bg-amber-950\/50:where(.dark,.dark *){background-color:color-mix(in oklab,var(--color-amber-950)50%,transparent)}}.dark\:bg-black\/80:where(.dark,.dark *){background-color:#000c}@supports (color:color-mix(in lab,red,red)){.dark\:bg-black\/80:where(.dark,.dark *){background-color:color-mix(in oklab,var(--color-black)80%,transparent)}}.dark\:bg-emerald-500\/10:where(.dark,.dark *){background-color:#00bb7f1a}@supports (color:color-mix(in lab,red,red)){.dark\:bg-emerald-500\/10:where(.dark,.dark *){background-color:color-mix(in oklab,var(--color-emerald-500)10%,transparent)}}.dark\:bg-red-500\/10:where(.dark,.dark *){background-color:#fb2c361a}@supports (color:color-mix(in lab,red,red)){.dark\:bg-red-500\/10:where(.dark,.dark *){background-color:color-mix(in oklab,var(--color-red-500)10%,transparent)}}.dark\:bg-red-900\/20:where(.dark,.dark *){background-color:#82181a33}@supports (color:color-mix(in lab,red,red)){.dark\:bg-red-900\/20:where(.dark,.dark *){background-color:color-mix(in oklab,var(--color-red-900)20%,transparent)}}.dark\:bg-zinc-100:where(.dark,.dark *){background-color:var(--color-zinc-100)}.dark\:bg-zinc-800:where(.dark,.dark *){background-color:var(--color-zinc-800)}.dark\:bg-zinc-900\/20:where(.dark,.dark *){background-color:#18181b33}@supports (color:color-mix(in lab,red,red)){.dark\:bg-zinc-900\/20:where(.dark,.dark *){background-color:color-mix(in oklab,var(--color-zinc-900)20%,transparent)}}.dark\:bg-zinc-900\/50:where(.dark,.dark *){background-color:#18181b80}@supports (color:color-mix(in lab,red,red)){.dark\:bg-zinc-900\/50:where(.dark,.dark *){background-color:color-mix(in oklab,var(--color-zinc-900)50%,transparent)}}.dark\:bg-zinc-950:where(.dark,.dark *){background-color:var(--color-zinc-950)}.dark\:bg-zinc-950\/80:where(.dark,.dark *){background-color:#09090bcc}@supports (color:color-mix(in lab,red,red)){.dark\:bg-zinc-950\/80:where(.dark,.dark *){background-color:color-mix(in oklab,var(--color-zinc-950)80%,transparent)}}.dark\:text-amber-100:where(.dark,.dark *){color:var(--color-amber-100)}.dark\:text-amber-400:where(.dark,.dark *){color:var(--color-amber-400)}.dark\:text-emerald-400:where(.dark,.dark *){color:var(--color-emerald-400)}.dark\:text-red-400:where(.dark,.dark *){color:var(--color-red-400)}.dark\:text-red-500:where(.dark,.dark *){color:var(--color-red-500)}.dark\:text-white:where(.dark,.dark *){color:var(--color-white)}.dark\:text-zinc-50:where(.dark,.dark *){color:var(--color-zinc-50)}.dark\:text-zinc-100:where(.dark,.dark *){color:var(--color-zinc-100)}.dark\:text-zinc-300:where(.dark,.dark *){color:var(--color-zinc-300)}.dark\:text-zinc-400:where(.dark,.dark *){color:var(--color-zinc-400)}.dark\:text-zinc-900:where(.dark,.dark *){color:var(--color-zinc-900)}.dark\:shadow-2xl:where(.dark,.dark *){--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}@media(hover:hover){.dark\:hover\:border-zinc-800:where(.dark,.dark *):hover{border-color:var(--color-zinc-800)}.dark\:hover\:bg-white:where(.dark,.dark *):hover{background-color:var(--color-white)}.dark\:hover\:bg-zinc-700:where(.dark,.dark *):hover{background-color:var(--color-zinc-700)}.dark\:hover\:bg-zinc-900:where(.dark,.dark *):hover{background-color:var(--color-zinc-900)}.dark\:hover\:text-zinc-200:where(.dark,.dark *):hover{color:var(--color-zinc-200)}}}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}@keyframes overlayShow{0%{opacity:0}to{opacity:1}}@keyframes overlayHide{0%{opacity:1}to{opacity:0}}@keyframes contentShowDesktop{0%{opacity:0;transform:translateY(8px)scale(.96)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes contentHideDesktop{0%{opacity:1;transform:translateY(0)scale(1)}to{opacity:0;transform:translateY(8px)scale(.96)}}@keyframes contentShowMobile{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes contentHideMobile{0%{transform:translateY(0)}to{transform:translateY(100%)}}.radix-overlay[data-state=open]{animation:.4s cubic-bezier(.16,1,.3,1) overlayShow}.radix-overlay[data-state=closed]{animation:.3s cubic-bezier(.16,1,.3,1) overlayHide}.radix-content[data-state=open]{animation:.4s cubic-bezier(.16,1,.3,1) contentShowMobile}.radix-content[data-state=closed]{animation:.3s cubic-bezier(.16,1,.3,1) contentHideMobile}@media(min-width:640px){.radix-content[data-state=open]{animation:.5s cubic-bezier(.16,1,.3,1) contentShowDesktop}.radix-content[data-state=closed]{animation:.4s cubic-bezier(.16,1,.3,1) contentHideDesktop}}@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-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"<length-percentage>";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"<length-percentage>";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"<length-percentage>";inherits:false;initial-value:100%}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{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-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@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-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}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}
|
package/dist/index.cjs
CHANGED
|
@@ -1 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("react/jsx-runtime"),g=require("react"),p=require("lucide-react"),C=require("clsx"),N=require("tailwind-merge"),E=require("@radix-ui/react-dialog"),l=require("sonner");function P(r){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(r){for(const a in r)if(a!=="default"){const s=Object.getOwnPropertyDescriptor(r,a);Object.defineProperty(e,a,s.get?s:{enumerable:!0,get:()=>r[a]})}}return e.default=r,Object.freeze(e)}const b=P(E),D=[{name:"email",pattern:/[a-zA-Z0-9._%+\-]+@[a-zA-Z0-9.\-]+\.[a-zA-Z]{2,}/g,replacement:"[EMAIL_REDACTED]"},{name:"bearer_token",pattern:/Bearer\s+[A-Za-z0-9\-._~+/]+=*/gi,replacement:"Bearer [TOKEN_REDACTED]"},{name:"jwt",pattern:/eyJ[A-Za-z0-9\-_]+\.eyJ[A-Za-z0-9\-_]+\.[A-Za-z0-9\-_]+/g,replacement:"[JWT_REDACTED]"},{name:"api_key",pattern:/\b([A-Za-z0-9]{32,})\b/g,replacement:"[KEY_REDACTED]"},{name:"phone",pattern:/(\+?\d[\d\s\-().]{7,}\d)/g,replacement:"[PHONE_REDACTED]"},{name:"ipv4",pattern:/\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b/g,replacement:"[IP_REDACTED]"},{name:"url_query_params",pattern:/([?&](?:token|key|secret|auth|email|user|access_token|refresh_token|api_key|apikey|password|passwd|pwd)=[^&\s]+)/gi,replacement:"[PARAM_REDACTED]"},{name:"ssn",pattern:/\b\d{3}[-\s]?\d{2}[-\s]?\d{4}\b/g,replacement:"[SSN_REDACTED]"},{name:"credit_card",pattern:/\b(?:\d[ -]?){13,19}\b/g,replacement:"[CC_REDACTED]"}];function f(r){let e=r;for(const{pattern:a,replacement:s}of D)e=e.replace(a,s);return e}function c(...r){return N.twMerge(C.clsx(r))}function A({title:r,description:e,primaryAction:a,secondaryAction:s,theme:o,className:i}){return t.jsx("div",{className:c("rounded-xl border p-4 transition-colors","bg-amber-50 border-amber-200/60 shadow-sm","dark:bg-amber-950/20 dark:border-amber-900/40 dark:shadow-[0_1px_2px_rgba(0,0,0,0.1)]",o?.fontFamily,i),style:{backgroundColor:o?.backgroundColor,borderColor:o?.primaryColor?`${o.primaryColor}30`:void 0},children:t.jsxs("div",{className:"flex gap-3",children:[t.jsx(p.AlertTriangle,{className:"h-5 w-5 shrink-0 mt-0.5 text-amber-500 dark:text-amber-400"}),t.jsxs("div",{className:"flex-1",children:[t.jsx("h3",{className:"text-sm font-medium leading-none text-amber-900 dark:text-amber-100",children:r}),t.jsx("p",{className:"mt-2 text-sm leading-relaxed text-amber-800 dark:text-amber-200/80",children:e}),(a||s)&&t.jsxs("div",{className:"mt-4 flex items-center gap-3",children:[a&&t.jsx("button",{onClick:a.onClick,className:c("text-xs font-medium px-3 py-1.5 rounded-md transition-colors","focus-visible:ring-2 focus-visible:ring-amber-500/30 focus:outline-none","bg-amber-100 border border-amber-200 text-amber-900 hover:bg-amber-200 hover:border-amber-300","dark:bg-amber-950/50 dark:border-amber-800/50 dark:text-amber-100 dark:hover:bg-amber-900/70 dark:hover:border-amber-700/50"),children:a.label}),s&&t.jsx("button",{onClick:s.onClick,className:c("text-xs font-medium transition-colors focus-visible:underline focus:outline-none","text-amber-700 hover:text-amber-900","dark:text-amber-200/70 dark:hover:text-amber-100"),children:s.label})]})]})]})})}function w({title:r,description:e,statusUrl:a,isOpen:s,onOpenChange:o,theme:i}){return t.jsx(b.Root,{open:s,onOpenChange:o,children:t.jsxs(b.Portal,{children:[t.jsx(b.Overlay,{className:"radix-overlay fixed inset-0 z-50 bg-zinc-900/20 dark:bg-black/80 backdrop-blur-sm"}),t.jsxs(b.Content,{className:c("radix-content fixed z-50 flex flex-col items-center text-center shadow-2xl transition-colors","bg-white border-zinc-200 dark:bg-zinc-950 dark:border-zinc-800","bottom-0 left-0 right-0 border-t rounded-t-3xl p-8 pb-10","sm:bottom-auto sm:top-[50%] sm:left-[50%] sm:-translate-x-1/2 sm:-translate-y-1/2 sm:w-full sm:max-w-md sm:rounded-2xl sm:border",i?.fontFamily),children:[t.jsx("div",{className:"mx-auto w-12 h-1.5 rounded-full bg-zinc-200 dark:bg-zinc-800 mb-6 sm:hidden"}),t.jsx("div",{className:"w-16 h-16 rounded-full flex items-center justify-center mb-6 border bg-red-50 border-red-100 dark:bg-red-500/10 dark:border-red-500/20",children:t.jsx(p.AlertOctagon,{className:"w-8 h-8 text-red-600 dark:text-red-500"})}),t.jsx(b.Title,{className:"text-xl font-semibold text-zinc-900 dark:text-zinc-50 mb-3 tracking-tight",children:r}),t.jsx(b.Description,{className:"text-sm leading-relaxed mb-8 max-w-[280px] sm:max-w-none text-zinc-600 dark:text-zinc-400",children:e}),t.jsxs("div",{className:"flex flex-col w-full gap-3",children:[t.jsxs("button",{onClick:()=>window.location.reload(),className:c("flex items-center justify-center gap-2 w-full py-3 px-4 rounded-xl font-medium transition-all shadow-sm","bg-zinc-900 text-white hover:bg-zinc-800 dark:bg-zinc-100 dark:text-zinc-900 dark:hover:bg-white hover:scale-[1.02] active:scale-95"),children:[t.jsx(p.RefreshCcw,{className:"w-4 h-4"}),"Atualizar a página"]}),a&&t.jsxs("a",{href:a,target:"_blank",rel:"noopener noreferrer",className:c("flex items-center justify-center gap-2 w-full py-3 px-4 rounded-xl font-medium transition-colors border border-transparent","text-zinc-500 hover:text-zinc-900 hover:bg-zinc-100 dark:text-zinc-400 dark:hover:text-zinc-200 dark:hover:bg-zinc-900 dark:hover:border-zinc-800"),children:["Verificar status do sistema",t.jsx(p.ExternalLink,{className:"w-4 h-4 opacity-70"})]})]})]})]})})}function _({customTheme:r,toastOptions:e,position:a="top-right",...s}){return t.jsx(l.Toaster,{position:a,toastOptions:{...e,classNames:{...e?.classNames,toast:c("backdrop-blur-md font-sans rounded-xl px-4 py-3 transition-colors","!bg-white/90 !border !border-zinc-200 !text-zinc-900 !shadow-xl","dark:!bg-zinc-950/80 dark:!border-zinc-800 dark:!text-zinc-50 dark:!shadow-2xl",r?.fontFamily,e?.classNames?.toast),title:c("!font-medium !text-sm !text-zinc-900 dark:!text-zinc-50",e?.classNames?.title),description:c("!mt-0.5 !text-sm !text-zinc-500 dark:!text-zinc-400 !line-clamp-2",e?.classNames?.description),actionButton:c("!font-medium !rounded-md !shadow-sm transition-colors !px-3 !py-1.5 !border","!bg-zinc-900 !text-white !border-transparent hover:!bg-zinc-800","dark:!bg-white dark:!text-black dark:!border-zinc-300 dark:hover:!bg-zinc-100",e?.classNames?.actionButton)},style:{backgroundColor:r?.backgroundColor,color:r?.textColor,borderColor:r?.primaryColor?`${r.primaryColor}40`:void 0,...e?.style}}})}function z(r,e,a,s){l.toast(r,{description:e,icon:t.jsx(p.AlertCircle,{className:"w-5 h-5 text-red-500 dark:text-red-400"}),action:a?{label:a,onClick:()=>{s&&s()}}:void 0})}const R={success:(r,e)=>l.toast(r,{description:e,icon:t.jsx(p.CheckCircle2,{className:"w-5 h-5 text-emerald-500 dark:text-emerald-400"})}),error:(r,e)=>l.toast(r,{description:e,icon:t.jsx(p.AlertCircle,{className:"w-5 h-5 text-red-500 dark:text-red-400"})}),warning:(r,e)=>l.toast(r,{description:e,icon:t.jsx(p.AlertTriangle,{className:"w-5 h-5 text-amber-500 dark:text-amber-400"})}),info:(r,e)=>l.toast(r,{description:e,icon:t.jsx(p.Info,{className:"w-5 h-5 text-blue-500 dark:text-blue-400"})}),message:(r,e)=>l.toast(r,{description:e}),customTheme:(r,e,a)=>{l.toast.custom(s=>t.jsxs("div",{className:c("w-full flex gap-3 p-4 shadow-2xl transition-all",a.fontFamily),style:{backgroundColor:a.backgroundColor||"#ffffff",color:a.textColor||"#000000",border:`1px solid ${a.primaryColor||"#e4e4e7"}`,borderRadius:a.borderRadius||"12px"},children:[t.jsx("div",{className:"w-1.5 rounded-full shrink-0",style:{backgroundColor:a.primaryColor||"#3b82f6"}}),t.jsxs("div",{className:"flex flex-col gap-1",children:[t.jsx("span",{className:"font-medium text-sm leading-none",children:r}),t.jsx("span",{className:"text-sm opacity-80 leading-relaxed mt-1",children:e})]})]}))}},v=g.createContext(void 0);function T({apiKey:r,apiUrl:e,language:a,children:s}){const o=async i=>{const d=i instanceof Error?i:new Error(String(i)),n=l.toast.loading("Analyzing error context...",{description:"Applying AI recovery heuristics..."});try{const m=f(d.message).slice(0,500),k=f(d.stack||"").slice(0,1500),h=e||"https://api.cognicatch.dev/v1/analyze-error",u=typeof navigator<"u"?navigator.language:"en-US",j=a||u,y=await fetch(h,{method:"POST",headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"},body:JSON.stringify({error:m,stack:k,language:j})});if(!y.ok)throw new Error("SaaS API Error");const x=await y.json();x&&((x.severity||x.level)==="low"?l.toast.info(x.title,{id:n,description:x.description}):l.toast.error(x.title,{id:n,description:x.description}))}catch(m){console.error("AdaptiveUI API Request failed:",m),l.toast.error("Analysis Failed",{id:n,description:"We couldn't reach the AI servers. Please try again later."})}};return t.jsx(v.Provider,{value:{apiKey:r,apiUrl:e,language:a,captureAsyncError:o},children:s})}function S(){const r=g.useContext(v);if(!r)throw new Error("❌ AdaptiveUI Developer Error: You tried to use the 'useAdaptive' hook outside of an <AdaptiveProvider>. Please wrap the root of your application (e.g., App.tsx) with <AdaptiveProvider apiKey='YOUR_KEY'>");return r}class I extends g.Component{static contextType=v;constructor(e){super(e),this.state={hasError:!1,error:null,aiData:null,isProcessingAuto:!1}}static getDerivedStateFromError(e){return{hasError:!0,error:e}}componentDidCatch(e,a){const{mode:s}=this.props;s==="manual"&&this.props.severity==="low"&&z(this.props.title,this.props.description,this.props.actionLabel??void 0,this.handleRecover),s==="auto"&&(this.setState({isProcessingAuto:!0}),this.processAutoMode(e))}processAutoMode=async e=>{const a=this.props,s=a.apiKey||this.context?.apiKey,o=a.apiUrl||this.context?.apiUrl,i=typeof navigator<"u"?navigator.language:"en-US",d=a.language||this.context?.language||i;if(!s){console.error("AdaptiveUI: Missing API Key for auto mode. Provide it via props or <AdaptiveProvider>."),this.setState({isProcessingAuto:!1});return}if(s==="sk_test_mock"){setTimeout(()=>{this.setState({isProcessingAuto:!1,aiData:{severity:"medium",title:"Incomplete data",description:"The dashboard encountered an error while attempting to read user information. Our team has already been notified.",actionLabel:"Reload Widget"}})},1500);return}try{const n=f(e.message).slice(0,500),m=f(e.stack||"").slice(0,1500),h=await fetch(o||"https://api.cognicatch.dev/v1/analyze-error",{method:"POST",headers:{Authorization:`Bearer ${s}`,"Content-Type":"application/json"},body:JSON.stringify({error:n,stack:m,language:d})});if(!h.ok)throw new Error(`SaaS API returned ${h.status}`);const u=await h.json();u&&(u.severity==="low"?(z(u.title,u.description,u.actionLabel??void 0,this.handleRecover),this.setState({isProcessingAuto:!1,hasError:!1,error:null})):this.setState({isProcessingAuto:!1,aiData:u}))}catch(n){console.error("AdaptiveUI AI Request failed:",n),this.setState({isProcessingAuto:!1,aiData:{severity:"medium",title:"Communication Error",description:"We were unable to connect to the analytics servers at this time. Our team has already been notified.",actionLabel:"Reload Component"}})}};handleRecover=()=>{this.setState({hasError:!1,error:null,aiData:null}),this.props.onRecover&&this.props.onRecover()};render(){if(!this.state.hasError)return this.props.children;const{mode:e,theme:a,className:s}=this.props;if(e==="manual"){const{severity:o,title:i,description:d,actionLabel:n}=this.props;if(o==="high")return t.jsx(w,{isOpen:!0,onOpenChange:m=>{m||this.handleRecover()},title:i,description:d,theme:a});if(o==="medium")return t.jsx(A,{title:i,description:d,primaryAction:n?{label:n,onClick:this.handleRecover}:void 0,theme:a,className:s});if(o==="low")return null}if(e==="auto"){if(this.state.isProcessingAuto)return t.jsxs("div",{className:"w-full h-full min-h-[100px] rounded-xl border border-zinc-200/50 dark:border-zinc-800/50 bg-zinc-50/50 dark:bg-zinc-900/20 flex flex-col items-center justify-center p-6 animate-pulse",children:[t.jsx("div",{className:"w-5 h-5 border-2 border-indigo-500/30 border-t-indigo-500 rounded-full animate-spin mb-3"}),t.jsx("p",{className:"text-xs font-medium text-zinc-500 dark:text-zinc-400",children:"Analyzing error context..."})]});if(this.state.aiData){const{severity:o,title:i,description:d,actionLabel:n}=this.state.aiData;if(o==="high")return t.jsx(w,{isOpen:!0,onOpenChange:m=>{m||this.handleRecover()},title:i,description:d,theme:a});if(o==="medium")return t.jsx(A,{title:i,description:d,primaryAction:n?{label:n,onClick:this.handleRecover}:void 0,theme:a,className:s})}}return null}}exports.AdaptiveErrorBoundary=I;exports.AdaptiveProvider=T;exports.AdaptiveToastProvider=_;exports.adaptiveToast=R;exports.useAdaptive=S;
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),g=require("react"),p=require("lucide-react"),E=require("clsx"),_=require("tailwind-merge"),D=require("react-dom"),R=require("@radix-ui/react-dialog"),u=require("sonner");function P(t){const r=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const a in t)if(a!=="default"){const o=Object.getOwnPropertyDescriptor(t,a);Object.defineProperty(r,a,o.get?o:{enumerable:!0,get:()=>t[a]})}}return r.default=t,Object.freeze(r)}const v=P(R),S=[{name:"email",pattern:/[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}/g,replacement:"[EMAIL_REDACTED]"},{name:"bearer_token",pattern:/Bearer\s+[A-Za-z0-9\-._~+/]+=*/gi,replacement:"Bearer [TOKEN_REDACTED]"},{name:"jwt",pattern:/eyJ[A-Za-z0-9\-_]+\.eyJ[A-Za-z0-9\-_]+\.[A-Za-z0-9\-_]+/g,replacement:"[JWT_REDACTED]"},{name:"api_key",pattern:/\b(?:sk|pk|key|api|sec)_[a-zA-Z0-9]{20,}\b|\b[A-Za-z0-9]{32,48}\b/g,replacement:"[KEY_REDACTED]"},{name:"phone",pattern:/(?:\+?\d{1,3}[-.\s]?)?\(?\d{2,4}\)?[-.\s]?\d{3,5}[-.\s]?\d{4}\b/g,replacement:"[PHONE_REDACTED]"},{name:"ipv4",pattern:/\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b/g,replacement:"[IP_REDACTED]"},{name:"url_query_params",pattern:/([?&](?:token|key|secret|auth|email|user|access_token|refresh_token|api_key|apikey|password|passwd|pwd)=[^&\s]+)/gi,replacement:"[PARAM_REDACTED]"},{name:"ssn",pattern:/\b\d{3}[-\s]?\d{2}[-\s]?\d{4}\b/g,replacement:"[SSN_REDACTED]"},{name:"credit_card",pattern:/\b(?:\d[ -]?){12,18}\d\b/g,replacement:"[CC_REDACTED]"}];function w(t,r=1e3){if(!t)return"";let a=String(t);return a.length>r&&(a=a.slice(0,r)+"... [TRUNCATED]"),S.reduce((o,{pattern:s,replacement:n})=>o.replace(s,n),a)}function N(t){let r;if(t.url)try{r=new URL(t.url,"http://dummy.com").pathname}catch{r=void 0}let a=t.componentName;if(!a&&t.componentStack){const o=t.componentStack.split(`
|
|
2
|
+
`)[1]??"";a=/at (\w+)/.exec(o)?.[1]}return{message:w(t.message,500),httpStatus:t.httpStatus,errorCode:t.errorCode?w(t.errorCode,100):void 0,routePath:r,componentName:a}}function x(...t){return _.twMerge(E.clsx(t))}function z({title:t,description:r,severity:a="medium",primaryAction:o,secondaryAction:s,theme:n,className:i}){const l=a==="high";return e.jsx("div",{role:"alert","aria-live":"polite",className:x("rounded-xl border p-4 transition-all shadow-sm",!n?.backgroundColor&&"bg-amber-50 border-amber-200/60 dark:bg-amber-950/20 dark:border-amber-900/40",n?.fontFamily,i),style:{backgroundColor:n?.backgroundColor,color:n?.textColor,borderColor:n?.primaryColor?`${n.primaryColor}40`:void 0},children:e.jsxs("div",{className:"flex gap-3",children:[e.jsx("div",{className:"shrink-0 mt-0.5",children:l?e.jsx(p.AlertCircle,{className:"h-5 w-5 text-red-500"}):e.jsx(p.AlertTriangle,{className:"h-5 w-5 text-amber-500"})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("h3",{className:"text-sm font-medium leading-none text-amber-900 dark:text-amber-100",style:{color:n?.textColor},children:t}),e.jsx("p",{className:"mt-2 text-sm leading-relaxed opacity-90",style:{color:n?.textColor},children:r}),(o||s)&&e.jsxs("div",{className:"mt-4 flex flex-wrap items-center gap-3",children:[o&&e.jsx("button",{onClick:o.onClick,style:n?.primaryColor?{backgroundColor:n.primaryColor,color:"#fff"}:{},className:x("text-xs font-medium px-3 py-1.5 rounded-lg transition-all active:scale-95","bg-amber-100 border border-amber-200 text-amber-900 hover:bg-amber-200","dark:bg-amber-950/50 dark:border-amber-800/50 dark:text-amber-100"),children:o.label}),s&&e.jsx("button",{onClick:s.onClick,className:"text-xs font-medium opacity-70 hover:opacity-100 transition-opacity underline-offset-4 hover:underline",style:{color:n?.textColor},children:s.label})]})]})]})})}function A({title:t,description:r,statusUrl:a,showRefresh:o=!0,isOpen:s,onOpenChange:n,theme:i,onPrimaryAction:l,primaryActionLabel:c="Atualizar a página"}){const[h,b]=g.useState(!1);g.useEffect(()=>{b(!0)},[]);const f=i==="dark"||typeof i=="object"&&i?.backgroundColor==="dark",d=typeof i=="object"?i.primaryColor:void 0,y=typeof i=="object"?i.fontFamily:void 0;if(!h)return null;const k=e.jsx(v.Root,{open:s,onOpenChange:n,children:e.jsx(v.Portal,{children:e.jsxs("div",{className:`cognicatch-ui-wrapper ${f?"dark":""} ${y||""}`,children:[e.jsx(v.Overlay,{className:"radix-overlay fixed inset-0 z-[99999] bg-zinc-900/20 dark:bg-black/80 backdrop-blur-sm"}),e.jsxs(v.Content,{onInteractOutside:m=>m.preventDefault(),onEscapeKeyDown:m=>m.preventDefault(),className:x("radix-content fixed z-[999999] flex flex-col items-center text-center shadow-2xl transition-all","bg-white border-zinc-200 dark:bg-zinc-950 dark:border-zinc-800","bottom-0 left-0 right-0 border-t rounded-t-3xl p-8 pb-10","sm:bottom-auto sm:top-1/2 sm:left-1/2 sm:-translate-x-1/2 sm:-translate-y-1/2 sm:w-full sm:max-w-md sm:rounded-2xl sm:border"),style:{boxSizing:"border-box"},children:[e.jsx("div",{className:"mx-auto w-12 h-1.5 rounded-full bg-zinc-200 dark:bg-zinc-800 mb-6 sm:hidden"}),e.jsx("div",{className:"w-16 h-16 rounded-full flex items-center justify-center mb-6 border bg-red-50 border-red-100 dark:bg-red-500/10 dark:border-red-500/20",children:e.jsx(p.AlertOctagon,{className:"w-8 h-8 text-red-600 dark:text-red-500"})}),e.jsx(v.Title,{className:"text-xl font-semibold text-zinc-900 dark:text-zinc-50 mb-3 tracking-tight",children:t}),e.jsx(v.Description,{className:"text-sm leading-relaxed mb-8 max-w-[280px] sm:max-w-none text-zinc-600 dark:text-zinc-400",children:r}),e.jsxs("div",{className:"flex flex-col w-full gap-3",children:[o&&e.jsxs("button",{onClick:()=>l?l():window.location.reload(),style:d?{backgroundColor:d,borderColor:d}:{},className:x("flex items-center justify-center gap-2 w-full py-3 px-4 rounded-xl font-medium transition-all shadow-sm",d?"text-white hover:opacity-90 hover:scale-[1.02] active:scale-95":"bg-zinc-900 text-white hover:bg-zinc-800 dark:bg-zinc-100 dark:text-zinc-900 dark:hover:bg-white hover:scale-[1.02] active:scale-95"),children:[e.jsx(p.RefreshCcw,{className:"w-4 h-4"}),c]}),a&&e.jsxs("a",{href:a,target:"_blank",rel:"noopener noreferrer",className:x("flex items-center justify-center gap-2 w-full py-3 px-4 rounded-xl font-medium transition-colors border border-transparent","text-zinc-500 hover:text-zinc-900 hover:bg-zinc-100 dark:text-zinc-400 dark:hover:text-zinc-200 dark:hover:bg-zinc-900 dark:hover:border-zinc-800"),children:["Check system status",e.jsx(p.ExternalLink,{className:"w-4 h-4 opacity-70"})]})]})]})]})})});return D.createPortal(k,document.body)}function T({customTheme:t,toastOptions:r,position:a="top-right",...o}){return e.jsx(u.Toaster,{position:a,containerAriaLabel:"Notifications",...o,toastOptions:{...r,classNames:{...r?.classNames,toast:x("bg-white/90 border-zinc-200 text-zinc-900 shadow-xl backdrop-blur-md","dark:bg-zinc-950/80 dark:border-zinc-800 dark:text-zinc-50 dark:shadow-2xl",t?.fontFamily,r?.classNames?.toast),title:x("font-medium text-sm text-zinc-900 dark:text-zinc-50",r?.classNames?.title),description:x("mt-0.5 text-xs text-zinc-500 dark:text-zinc-400 line-clamp-2",r?.classNames?.description),actionButton:x("font-medium rounded-lg transition-all px-3 py-1.5 border text-xs","bg-zinc-900 text-white border-transparent hover:scale-[1.02] active:scale-95","dark:bg-zinc-100 dark:text-zinc-900 dark:hover:bg-white",r?.classNames?.actionButton)},style:{borderRadius:t?.borderRadius||"0.75rem",backgroundColor:t?.backgroundColor,color:t?.textColor,fontFamily:t?.fontFamily,...r?.style}}})}function j(t,r,a,o,s="medium"){const n={low:e.jsx(p.Info,{className:"w-5 h-5 text-blue-500"}),medium:e.jsx(p.AlertTriangle,{className:"w-5 h-5 text-amber-500"}),high:e.jsx(p.AlertCircle,{className:"w-5 h-5 text-red-500"})};return u.toast(t,{description:r,icon:n[s],duration:s==="high"?8e3:5e3,action:a?{label:a,onClick:()=>o?.()}:void 0})}const M={success:(t,r)=>u.toast(t,{description:r,icon:e.jsx(p.CheckCircle2,{className:"w-5 h-5 text-emerald-500"})}),error:(t,r)=>u.toast(t,{description:r,icon:e.jsx(p.AlertCircle,{className:"w-5 h-5 text-red-500"})}),warning:(t,r)=>u.toast(t,{description:r,icon:e.jsx(p.AlertTriangle,{className:"w-5 h-5 text-amber-500 dark:text-amber-400"})}),loading:(t,r)=>u.toast.loading(t,{description:r}),custom:(t,r,a)=>{u.toast.custom(o=>e.jsx("div",{className:x("flex gap-3 p-4 shadow-2xl border",a.fontFamily),style:{backgroundColor:a.backgroundColor||"var(--bg-card)",color:a.textColor||"var(--text-card)",borderColor:a.primaryColor||"#e4e4e7",borderRadius:a.borderRadius||"12px"},children:e.jsxs("div",{className:"flex flex-col gap-1",children:[e.jsx("span",{className:"font-semibold text-sm",children:t}),e.jsx("span",{className:"text-xs opacity-70",children:r})]})}))}},C=g.createContext(void 0);function I({apiKey:t,apiUrl:r,language:a,children:o}){const s=g.useCallback(async i=>{const l=i instanceof Error?i:new Error(String(i)),c=u.toast.loading("Analyzing error context...",{description:"Applying AI recovery heuristics..."});if(t==="sk_test_mock"){setTimeout(()=>{u.toast.info("Mock Mode Analysis",{id:c,description:"This is a mocked async recovery because sk_test_mock was used."})},1500);return}try{const h={message:l.message,componentStack:l.stack,url:typeof window<"u"?window.location.href:void 0},b=N(h),f=r||"https://api.cognicatch.dev/v1/analyze-error",d=typeof navigator<"u"?navigator.language:"en-US",y=a||d,k=await fetch(f,{method:"POST",headers:{Authorization:`Bearer ${t}`,"Content-Type":"application/json"},body:JSON.stringify({error:b.message,stack:b.componentName?`Component: ${b.componentName}`:b.errorCode||"Async Error",routePath:b.routePath,language:y})});if(!k.ok)throw new Error("SaaS API Error");const m=await k.json();m&&((m.severity||m.level)==="low"?u.toast.info(m.title,{id:c,description:m.description}):u.toast.error(m.title,{id:c,description:m.description}))}catch(h){console.error("AdaptiveUI API Request failed:",h),u.toast.error("Analysis Failed",{id:c,description:"We couldn't reach the AI servers. Please try again later."})}},[t,r,a]),n=g.useMemo(()=>({apiKey:t,apiUrl:r,language:a,captureAsyncError:s}),[t,r,a,s]);return e.jsx(C.Provider,{value:n,children:o})}function F(){const t=g.useContext(C);if(!t)throw new Error("❌ AdaptiveUI Developer Error: You tried to use the 'useAdaptive' hook outside of an <AdaptiveProvider>. Please wrap the root of your application (e.g., App.tsx or layout.tsx) with <AdaptiveProvider apiKey='YOUR_KEY'>");return t}const L=({onRecover:t,theme:r})=>{const a=r==="dark";return e.jsx("div",{className:`p-6 rounded-xl border border-zinc-200 dark:border-zinc-800 bg-white dark:bg-zinc-950 shadow-sm ${a?"dark":""}`,children:e.jsxs("div",{className:"flex flex-col items-center text-center gap-4",children:[e.jsx("div",{className:"p-3 rounded-full bg-red-50 dark:bg-red-900/20",children:e.jsx("svg",{className:"w-6 h-6 text-red-600 dark:text-red-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z"})})}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-sm font-semibold text-zinc-900 dark:text-zinc-100",children:"Component Unavailable"}),e.jsx("p",{className:"text-xs text-zinc-500 dark:text-zinc-400 mt-1",children:"An unexpected error occurred in the interface."})]}),e.jsx("button",{onClick:t,style:{backgroundColor:r?.primaryColor||void 0},className:"px-4 py-2 text-xs font-medium bg-zinc-900 dark:bg-zinc-100 text-white dark:text-zinc-900 rounded-lg hover:opacity-90 transition-opacity",children:"Try Reloading"})]})})};class O extends g.Component{static contextType=C;_isMounted=!1;constructor(r){super(r),this.state={hasError:!1,error:null,aiData:null,isProcessingAuto:!1,hasCrashedFallback:!1}}componentDidMount(){this._isMounted=!0}componentWillUnmount(){this._isMounted=!1}static getDerivedStateFromError(r){return{hasError:!0,error:r}}componentDidCatch(r,a){if(this.state.hasCrashedFallback)return;const{mode:o}=this.props;o==="manual"&&this.props.severity==="low"&&j(this.props.title,this.props.description,this.props.actionLabel??void 0,this.handleRecover),o==="auto"&&this._isMounted&&(this.setState({isProcessingAuto:!0}),this.processAutoMode(r,a))}processAutoMode=async(r,a)=>{const o=this.props,s=o.apiKey||this.context?.apiKey,n=o.apiUrl||this.context?.apiUrl,i=typeof navigator<"u"?navigator.language:"en-US",l=o.language||this.context?.language||i;if(!s){console.error("AdaptiveUI: Missing API Key for auto mode. Provide it via props or <AdaptiveProvider>."),this._isMounted&&this.setState({isProcessingAuto:!1});return}if(s==="sk_test_mock"){setTimeout(()=>{this._isMounted&&this.setState({isProcessingAuto:!1,aiData:{severity:"medium",title:"Mock Mode Error",description:"This is a mocked response because sk_test_mock was used.",actionLabel:"Reload Component"}})},1500);return}try{const c={message:r.message,componentStack:a.componentStack||void 0,url:typeof window<"u"?window.location.href:void 0},h=N(c),f=await fetch(n||"https://api.cognicatch.dev/v1/analyze-error",{method:"POST",headers:{Authorization:`Bearer ${s}`,"Content-Type":"application/json"},body:JSON.stringify({error:h.message,stack:h.componentName?`Component: ${h.componentName}`:"No stack",routePath:h.routePath,language:l})});if(!f.ok)throw new Error(`SaaS API returned ${f.status}`);const d=await f.json();d&&this._isMounted&&(d.severity==="low"?(j(d.title,d.description,d.actionLabel??void 0,this.handleRecover),this.setState({isProcessingAuto:!1,aiData:d})):this.setState({isProcessingAuto:!1,aiData:d}))}catch(c){console.error("AdaptiveUI AI Request failed:",c),this._isMounted&&this.setState({isProcessingAuto:!1,aiData:{severity:"medium",title:"Communication Error",description:"We were unable to connect to the analytics servers at this time. Our team has already been notified.",actionLabel:"Reload Component"}})}};handleRecover=()=>{this._isMounted&&this.setState({hasError:!1,error:null,aiData:null,hasCrashedFallback:!1}),this.props.onRecover&&this.props.onRecover()};render(){if(this.state.hasCrashedFallback)return e.jsx(L,{onRecover:this.handleRecover,theme:this.props.theme});if(!this.state.hasError)return this.props.children;const{mode:r,theme:a,className:o}=this.props;if(r==="manual"){const{severity:s,title:n,description:i,actionLabel:l}=this.props;try{if(s==="high")return e.jsx(A,{isOpen:!0,onOpenChange:c=>{c||this.handleRecover()},title:n,description:i,theme:a});if(s==="medium")return e.jsx(z,{title:n,description:i,primaryAction:l?{label:l,onClick:this.handleRecover}:void 0,theme:a,className:o});if(s==="low")return null}catch{return this.setState({hasCrashedFallback:!0}),null}}if(r==="auto"){if(this.state.isProcessingAuto)return e.jsxs("div",{className:"w-full h-full min-h-[100px] rounded-xl border border-zinc-200/50 dark:border-zinc-800/50 bg-zinc-50/50 dark:bg-zinc-900/20 flex flex-col items-center justify-center p-6 animate-pulse",children:[e.jsx("div",{className:"w-5 h-5 border-2 border-zinc-400/30 dark:border-zinc-500/30 border-t-zinc-900 dark:border-t-zinc-100 rounded-full animate-spin mb-3"}),e.jsx("p",{className:"text-xs font-medium text-zinc-500 dark:text-zinc-400",children:"Analyzing error context..."})]});if(this.state.aiData){const{severity:s,title:n,description:i,actionLabel:l}=this.state.aiData;try{if(s==="high")return e.jsx(A,{isOpen:!0,onOpenChange:c=>{c||this.handleRecover()},title:n,description:i,theme:a});if(s==="medium")return e.jsx(z,{title:n,description:i,primaryAction:l?{label:l,onClick:this.handleRecover}:void 0,theme:a,className:o});if(s==="low")return null}catch{return this.setState({hasCrashedFallback:!0}),null}}}return null}}exports.AdaptiveErrorBoundary=O;exports.AdaptiveProvider=I;exports.AdaptiveToastProvider=T;exports.adaptiveToast=M;exports.useAdaptive=F;
|
package/dist/index.d.ts
CHANGED
|
@@ -18,10 +18,13 @@ declare interface AdaptiveContextType {
|
|
|
18
18
|
export declare class AdaptiveErrorBoundary extends Component<Props, State> {
|
|
19
19
|
static contextType: default_2.Context<AdaptiveContextType | undefined>;
|
|
20
20
|
context: default_2.ContextType<typeof AdaptiveContext>;
|
|
21
|
+
private _isMounted;
|
|
21
22
|
constructor(props: Props);
|
|
23
|
+
componentDidMount(): void;
|
|
24
|
+
componentWillUnmount(): void;
|
|
22
25
|
static getDerivedStateFromError(error: Error): Partial<State>;
|
|
23
26
|
componentDidCatch(error: Error, errorInfo: ErrorInfo): void;
|
|
24
|
-
processAutoMode: (error: Error) => Promise<void>;
|
|
27
|
+
processAutoMode: (error: Error, errorInfo: ErrorInfo) => Promise<void>;
|
|
25
28
|
handleRecover: () => void;
|
|
26
29
|
render(): string | number | bigint | boolean | JSX.Element | Iterable<default_2.ReactNode> | Promise<string | number | bigint | boolean | default_2.ReactPortal | default_2.ReactElement<unknown, string | default_2.JSXElementConstructor<any>> | Iterable<default_2.ReactNode> | null | undefined> | null | undefined;
|
|
27
30
|
}
|
|
@@ -39,9 +42,8 @@ export declare const adaptiveToast: {
|
|
|
39
42
|
success: (title: string, description?: string) => string | number;
|
|
40
43
|
error: (title: string, description?: string) => string | number;
|
|
41
44
|
warning: (title: string, description?: string) => string | number;
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
customTheme: (title: string, description: string, theme: ThemeOptions) => void;
|
|
45
|
+
loading: (title: string, description?: string) => string | number;
|
|
46
|
+
custom: (title: string, description: string, theme: ThemeOptions) => void;
|
|
45
47
|
};
|
|
46
48
|
|
|
47
49
|
export declare function AdaptiveToastProvider({ customTheme, toastOptions, position, ...props }: AdaptiveToastProviderProps): JSX.Element;
|
|
@@ -96,6 +98,7 @@ declare interface State {
|
|
|
96
98
|
error: Error | null;
|
|
97
99
|
aiData: GenUIResponse | null;
|
|
98
100
|
isProcessingAuto: boolean;
|
|
101
|
+
hasCrashedFallback: boolean;
|
|
99
102
|
}
|
|
100
103
|
|
|
101
104
|
export declare interface ThemeOptions {
|
package/dist/index.js
CHANGED
|
@@ -1,126 +1,118 @@
|
|
|
1
|
-
import { jsx as
|
|
2
|
-
import { createContext as
|
|
3
|
-
import {
|
|
4
|
-
import { clsx as
|
|
5
|
-
import { twMerge as
|
|
6
|
-
import
|
|
7
|
-
import
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
{
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
},
|
|
15
|
-
|
|
16
|
-
{
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
replacement: "Bearer [TOKEN_REDACTED]"
|
|
20
|
-
},
|
|
21
|
-
// JWT tokens (three base64url segments)
|
|
22
|
-
{
|
|
23
|
-
name: "jwt",
|
|
24
|
-
pattern: /eyJ[A-Za-z0-9\-_]+\.eyJ[A-Za-z0-9\-_]+\.[A-Za-z0-9\-_]+/g,
|
|
25
|
-
replacement: "[JWT_REDACTED]"
|
|
26
|
-
},
|
|
27
|
-
// Generic API keys (long hex or base64-looking strings 32+ chars)
|
|
28
|
-
{
|
|
29
|
-
name: "api_key",
|
|
30
|
-
pattern: /\b([A-Za-z0-9]{32,})\b/g,
|
|
31
|
-
replacement: "[KEY_REDACTED]"
|
|
32
|
-
},
|
|
33
|
-
// Phone numbers (loose match)
|
|
34
|
-
{
|
|
35
|
-
name: "phone",
|
|
36
|
-
pattern: /(\+?\d[\d\s\-().]{7,}\d)/g,
|
|
37
|
-
replacement: "[PHONE_REDACTED]"
|
|
38
|
-
},
|
|
39
|
-
// IP addresses
|
|
40
|
-
{
|
|
41
|
-
name: "ipv4",
|
|
42
|
-
pattern: /\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b/g,
|
|
43
|
-
replacement: "[IP_REDACTED]"
|
|
44
|
-
},
|
|
45
|
-
// URL query parameters that could carry tokens/emails
|
|
46
|
-
{
|
|
47
|
-
name: "url_query_params",
|
|
48
|
-
pattern: /([?&](?:token|key|secret|auth|email|user|access_token|refresh_token|api_key|apikey|password|passwd|pwd)=[^&\s]+)/gi,
|
|
49
|
-
replacement: "[PARAM_REDACTED]"
|
|
50
|
-
},
|
|
51
|
-
// Potential SSNs
|
|
52
|
-
{
|
|
53
|
-
name: "ssn",
|
|
54
|
-
pattern: /\b\d{3}[-\s]?\d{2}[-\s]?\d{4}\b/g,
|
|
55
|
-
replacement: "[SSN_REDACTED]"
|
|
56
|
-
},
|
|
57
|
-
// Credit card numbers (Luhn-ish pattern)
|
|
58
|
-
{
|
|
59
|
-
name: "credit_card",
|
|
60
|
-
pattern: /\b(?:\d[ -]?){13,19}\b/g,
|
|
61
|
-
replacement: "[CC_REDACTED]"
|
|
62
|
-
}
|
|
1
|
+
import { jsx as r, jsxs as m } from "react/jsx-runtime";
|
|
2
|
+
import { useState as D, useEffect as R, createContext as S, useCallback as P, useMemo as T, useContext as M, Component as I } from "react";
|
|
3
|
+
import { AlertCircle as y, AlertTriangle as C, AlertOctagon as F, RefreshCcw as L, ExternalLink as j, CheckCircle2 as O, Info as U } from "lucide-react";
|
|
4
|
+
import { clsx as B } from "clsx";
|
|
5
|
+
import { twMerge as Z } from "tailwind-merge";
|
|
6
|
+
import { createPortal as $ } from "react-dom";
|
|
7
|
+
import * as g from "@radix-ui/react-dialog";
|
|
8
|
+
import { Toaster as J, toast as u } from "sonner";
|
|
9
|
+
const K = [
|
|
10
|
+
{ name: "email", pattern: /[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}/g, replacement: "[EMAIL_REDACTED]" },
|
|
11
|
+
{ name: "bearer_token", pattern: /Bearer\s+[A-Za-z0-9\-._~+/]+=*/gi, replacement: "Bearer [TOKEN_REDACTED]" },
|
|
12
|
+
{ name: "jwt", pattern: /eyJ[A-Za-z0-9\-_]+\.eyJ[A-Za-z0-9\-_]+\.[A-Za-z0-9\-_]+/g, replacement: "[JWT_REDACTED]" },
|
|
13
|
+
{ name: "api_key", pattern: /\b(?:sk|pk|key|api|sec)_[a-zA-Z0-9]{20,}\b|\b[A-Za-z0-9]{32,48}\b/g, replacement: "[KEY_REDACTED]" },
|
|
14
|
+
{ name: "phone", pattern: /(?:\+?\d{1,3}[-.\s]?)?\(?\d{2,4}\)?[-.\s]?\d{3,5}[-.\s]?\d{4}\b/g, replacement: "[PHONE_REDACTED]" },
|
|
15
|
+
{ name: "ipv4", pattern: /\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b/g, replacement: "[IP_REDACTED]" },
|
|
16
|
+
{ name: "url_query_params", pattern: /([?&](?:token|key|secret|auth|email|user|access_token|refresh_token|api_key|apikey|password|passwd|pwd)=[^&\s]+)/gi, replacement: "[PARAM_REDACTED]" },
|
|
17
|
+
{ name: "ssn", pattern: /\b\d{3}[-\s]?\d{2}[-\s]?\d{4}\b/g, replacement: "[SSN_REDACTED]" },
|
|
18
|
+
{ name: "credit_card", pattern: /\b(?:\d[ -]?){12,18}\d\b/g, replacement: "[CC_REDACTED]" }
|
|
63
19
|
];
|
|
64
|
-
function
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
20
|
+
function z(t, e = 1e3) {
|
|
21
|
+
if (!t) return "";
|
|
22
|
+
let o = String(t);
|
|
23
|
+
return o.length > e && (o = o.slice(0, e) + "... [TRUNCATED]"), K.reduce((a, { pattern: n, replacement: i }) => a.replace(n, i), o);
|
|
24
|
+
}
|
|
25
|
+
function _(t) {
|
|
26
|
+
let e;
|
|
27
|
+
if (t.url)
|
|
28
|
+
try {
|
|
29
|
+
e = new URL(t.url, "http://dummy.com").pathname;
|
|
30
|
+
} catch {
|
|
31
|
+
e = void 0;
|
|
32
|
+
}
|
|
33
|
+
let o = t.componentName;
|
|
34
|
+
if (!o && t.componentStack) {
|
|
35
|
+
const a = t.componentStack.split(`
|
|
36
|
+
`)[1] ?? "";
|
|
37
|
+
o = /at (\w+)/.exec(a)?.[1];
|
|
38
|
+
}
|
|
39
|
+
return {
|
|
40
|
+
message: z(t.message, 500),
|
|
41
|
+
httpStatus: t.httpStatus,
|
|
42
|
+
errorCode: t.errorCode ? z(t.errorCode, 100) : void 0,
|
|
43
|
+
routePath: e,
|
|
44
|
+
componentName: o
|
|
45
|
+
};
|
|
69
46
|
}
|
|
70
|
-
function
|
|
71
|
-
return
|
|
47
|
+
function f(...t) {
|
|
48
|
+
return Z(B(t));
|
|
72
49
|
}
|
|
73
|
-
function
|
|
74
|
-
title:
|
|
50
|
+
function A({
|
|
51
|
+
title: t,
|
|
75
52
|
description: e,
|
|
76
|
-
|
|
77
|
-
|
|
53
|
+
severity: o = "medium",
|
|
54
|
+
primaryAction: a,
|
|
55
|
+
secondaryAction: n,
|
|
78
56
|
theme: i,
|
|
79
|
-
className:
|
|
57
|
+
className: s
|
|
80
58
|
}) {
|
|
81
|
-
|
|
59
|
+
const l = o === "high";
|
|
60
|
+
return /* @__PURE__ */ r(
|
|
82
61
|
"div",
|
|
83
62
|
{
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
"
|
|
63
|
+
role: "alert",
|
|
64
|
+
"aria-live": "polite",
|
|
65
|
+
className: f(
|
|
66
|
+
"rounded-xl border p-4 transition-all shadow-sm",
|
|
67
|
+
!i?.backgroundColor && "bg-amber-50 border-amber-200/60 dark:bg-amber-950/20 dark:border-amber-900/40",
|
|
88
68
|
i?.fontFamily,
|
|
89
|
-
|
|
69
|
+
s
|
|
90
70
|
),
|
|
91
71
|
style: {
|
|
92
72
|
backgroundColor: i?.backgroundColor,
|
|
93
|
-
|
|
73
|
+
color: i?.textColor,
|
|
74
|
+
borderColor: i?.primaryColor ? `${i.primaryColor}40` : void 0
|
|
94
75
|
},
|
|
95
|
-
children: /* @__PURE__ */
|
|
96
|
-
/* @__PURE__ */
|
|
97
|
-
/* @__PURE__ */
|
|
98
|
-
/* @__PURE__ */
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
76
|
+
children: /* @__PURE__ */ m("div", { className: "flex gap-3", children: [
|
|
77
|
+
/* @__PURE__ */ r("div", { className: "shrink-0 mt-0.5", children: l ? /* @__PURE__ */ r(y, { className: "h-5 w-5 text-red-500" }) : /* @__PURE__ */ r(C, { className: "h-5 w-5 text-amber-500" }) }),
|
|
78
|
+
/* @__PURE__ */ m("div", { className: "flex-1 min-w-0", children: [
|
|
79
|
+
/* @__PURE__ */ r(
|
|
80
|
+
"h3",
|
|
81
|
+
{
|
|
82
|
+
className: "text-sm font-medium leading-none text-amber-900 dark:text-amber-100",
|
|
83
|
+
style: { color: i?.textColor },
|
|
84
|
+
children: t
|
|
85
|
+
}
|
|
86
|
+
),
|
|
87
|
+
/* @__PURE__ */ r(
|
|
88
|
+
"p",
|
|
89
|
+
{
|
|
90
|
+
className: "mt-2 text-sm leading-relaxed opacity-90",
|
|
91
|
+
style: { color: i?.textColor },
|
|
92
|
+
children: e
|
|
93
|
+
}
|
|
94
|
+
),
|
|
95
|
+
(a || n) && /* @__PURE__ */ m("div", { className: "mt-4 flex flex-wrap items-center gap-3", children: [
|
|
96
|
+
a && /* @__PURE__ */ r(
|
|
102
97
|
"button",
|
|
103
98
|
{
|
|
104
|
-
onClick:
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
"
|
|
108
|
-
"bg-amber-100 border border-amber-200 text-amber-900 hover:bg-amber-200
|
|
109
|
-
"dark:bg-amber-950/50 dark:border-amber-800/50 dark:text-amber-100
|
|
99
|
+
onClick: a.onClick,
|
|
100
|
+
style: i?.primaryColor ? { backgroundColor: i.primaryColor, color: "#fff" } : {},
|
|
101
|
+
className: f(
|
|
102
|
+
"text-xs font-medium px-3 py-1.5 rounded-lg transition-all active:scale-95",
|
|
103
|
+
"bg-amber-100 border border-amber-200 text-amber-900 hover:bg-amber-200",
|
|
104
|
+
"dark:bg-amber-950/50 dark:border-amber-800/50 dark:text-amber-100"
|
|
110
105
|
),
|
|
111
|
-
children:
|
|
106
|
+
children: a.label
|
|
112
107
|
}
|
|
113
108
|
),
|
|
114
|
-
|
|
109
|
+
n && /* @__PURE__ */ r(
|
|
115
110
|
"button",
|
|
116
111
|
{
|
|
117
|
-
onClick:
|
|
118
|
-
className:
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
"dark:text-amber-200/70 dark:hover:text-amber-100"
|
|
122
|
-
),
|
|
123
|
-
children: o.label
|
|
112
|
+
onClick: n.onClick,
|
|
113
|
+
className: "text-xs font-medium opacity-70 hover:opacity-100 transition-opacity underline-offset-4 hover:underline",
|
|
114
|
+
style: { color: i?.textColor },
|
|
115
|
+
children: n.label
|
|
124
116
|
}
|
|
125
117
|
)
|
|
126
118
|
] })
|
|
@@ -129,64 +121,76 @@ function y({
|
|
|
129
121
|
}
|
|
130
122
|
);
|
|
131
123
|
}
|
|
132
|
-
function
|
|
133
|
-
title:
|
|
124
|
+
function N({
|
|
125
|
+
title: t,
|
|
134
126
|
description: e,
|
|
135
|
-
statusUrl:
|
|
136
|
-
|
|
127
|
+
statusUrl: o,
|
|
128
|
+
showRefresh: a = !0,
|
|
129
|
+
isOpen: n,
|
|
137
130
|
onOpenChange: i,
|
|
138
|
-
theme:
|
|
131
|
+
theme: s,
|
|
132
|
+
onPrimaryAction: l,
|
|
133
|
+
primaryActionLabel: c = "Atualizar a página"
|
|
139
134
|
}) {
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
135
|
+
const [h, b] = D(!1);
|
|
136
|
+
R(() => {
|
|
137
|
+
b(!0);
|
|
138
|
+
}, []);
|
|
139
|
+
const x = s === "dark" || typeof s == "object" && s?.backgroundColor === "dark", d = typeof s == "object" ? s.primaryColor : void 0, v = typeof s == "object" ? s.fontFamily : void 0;
|
|
140
|
+
if (!h) return null;
|
|
141
|
+
const k = /* @__PURE__ */ r(g.Root, { open: n, onOpenChange: i, children: /* @__PURE__ */ r(g.Portal, { children: /* @__PURE__ */ m("div", { className: `cognicatch-ui-wrapper ${x ? "dark" : ""} ${v || ""}`, children: [
|
|
142
|
+
/* @__PURE__ */ r(
|
|
143
|
+
g.Overlay,
|
|
143
144
|
{
|
|
144
|
-
className: "radix-overlay fixed inset-0 z-
|
|
145
|
+
className: "radix-overlay fixed inset-0 z-[99999] bg-zinc-900/20 dark:bg-black/80 backdrop-blur-sm"
|
|
145
146
|
}
|
|
146
147
|
),
|
|
147
|
-
/* @__PURE__ */
|
|
148
|
-
|
|
148
|
+
/* @__PURE__ */ m(
|
|
149
|
+
g.Content,
|
|
149
150
|
{
|
|
150
|
-
|
|
151
|
-
|
|
151
|
+
onInteractOutside: (p) => p.preventDefault(),
|
|
152
|
+
onEscapeKeyDown: (p) => p.preventDefault(),
|
|
153
|
+
className: f(
|
|
154
|
+
"radix-content fixed z-[999999] flex flex-col items-center text-center shadow-2xl transition-all",
|
|
152
155
|
"bg-white border-zinc-200 dark:bg-zinc-950 dark:border-zinc-800",
|
|
153
156
|
"bottom-0 left-0 right-0 border-t rounded-t-3xl p-8 pb-10",
|
|
154
|
-
"sm:bottom-auto sm:top-
|
|
155
|
-
n?.fontFamily
|
|
157
|
+
"sm:bottom-auto sm:top-1/2 sm:left-1/2 sm:-translate-x-1/2 sm:-translate-y-1/2 sm:w-full sm:max-w-md sm:rounded-2xl sm:border"
|
|
156
158
|
),
|
|
159
|
+
style: { boxSizing: "border-box" },
|
|
157
160
|
children: [
|
|
158
|
-
/* @__PURE__ */
|
|
159
|
-
/* @__PURE__ */
|
|
160
|
-
/* @__PURE__ */
|
|
161
|
-
/* @__PURE__ */
|
|
162
|
-
/* @__PURE__ */
|
|
163
|
-
/* @__PURE__ */
|
|
161
|
+
/* @__PURE__ */ r("div", { className: "mx-auto w-12 h-1.5 rounded-full bg-zinc-200 dark:bg-zinc-800 mb-6 sm:hidden" }),
|
|
162
|
+
/* @__PURE__ */ r("div", { className: "w-16 h-16 rounded-full flex items-center justify-center mb-6 border bg-red-50 border-red-100 dark:bg-red-500/10 dark:border-red-500/20", children: /* @__PURE__ */ r(F, { className: "w-8 h-8 text-red-600 dark:text-red-500" }) }),
|
|
163
|
+
/* @__PURE__ */ r(g.Title, { className: "text-xl font-semibold text-zinc-900 dark:text-zinc-50 mb-3 tracking-tight", children: t }),
|
|
164
|
+
/* @__PURE__ */ r(g.Description, { className: "text-sm leading-relaxed mb-8 max-w-[280px] sm:max-w-none text-zinc-600 dark:text-zinc-400", children: e }),
|
|
165
|
+
/* @__PURE__ */ m("div", { className: "flex flex-col w-full gap-3", children: [
|
|
166
|
+
a && /* @__PURE__ */ m(
|
|
164
167
|
"button",
|
|
165
168
|
{
|
|
166
|
-
onClick: () => window.location.reload(),
|
|
167
|
-
|
|
169
|
+
onClick: () => l ? l() : window.location.reload(),
|
|
170
|
+
style: d ? { backgroundColor: d, borderColor: d } : {},
|
|
171
|
+
className: f(
|
|
168
172
|
"flex items-center justify-center gap-2 w-full py-3 px-4 rounded-xl font-medium transition-all shadow-sm",
|
|
169
|
-
"bg-zinc-900 text-white hover:bg-zinc-800 dark:bg-zinc-100 dark:text-zinc-900 dark:hover:bg-white hover:scale-[1.02] active:scale-95"
|
|
173
|
+
d ? "text-white hover:opacity-90 hover:scale-[1.02] active:scale-95" : "bg-zinc-900 text-white hover:bg-zinc-800 dark:bg-zinc-100 dark:text-zinc-900 dark:hover:bg-white hover:scale-[1.02] active:scale-95"
|
|
170
174
|
),
|
|
171
175
|
children: [
|
|
172
|
-
/* @__PURE__ */
|
|
173
|
-
|
|
176
|
+
/* @__PURE__ */ r(L, { className: "w-4 h-4" }),
|
|
177
|
+
c
|
|
174
178
|
]
|
|
175
179
|
}
|
|
176
180
|
),
|
|
177
|
-
|
|
181
|
+
o && /* @__PURE__ */ m(
|
|
178
182
|
"a",
|
|
179
183
|
{
|
|
180
|
-
href:
|
|
184
|
+
href: o,
|
|
181
185
|
target: "_blank",
|
|
182
186
|
rel: "noopener noreferrer",
|
|
183
|
-
className:
|
|
187
|
+
className: f(
|
|
184
188
|
"flex items-center justify-center gap-2 w-full py-3 px-4 rounded-xl font-medium transition-colors border border-transparent",
|
|
185
189
|
"text-zinc-500 hover:text-zinc-900 hover:bg-zinc-100 dark:text-zinc-400 dark:hover:text-zinc-200 dark:hover:bg-zinc-900 dark:hover:border-zinc-800"
|
|
186
190
|
),
|
|
187
191
|
children: [
|
|
188
|
-
"
|
|
189
|
-
/* @__PURE__ */
|
|
192
|
+
"Check system status",
|
|
193
|
+
/* @__PURE__ */ r(j, { className: "w-4 h-4 opacity-70" })
|
|
190
194
|
]
|
|
191
195
|
}
|
|
192
196
|
)
|
|
@@ -194,217 +198,260 @@ function w({
|
|
|
194
198
|
]
|
|
195
199
|
}
|
|
196
200
|
)
|
|
197
|
-
] }) });
|
|
201
|
+
] }) }) });
|
|
202
|
+
return $(k, document.body);
|
|
198
203
|
}
|
|
199
|
-
function
|
|
200
|
-
customTheme:
|
|
204
|
+
function te({
|
|
205
|
+
customTheme: t,
|
|
201
206
|
toastOptions: e,
|
|
202
|
-
position:
|
|
203
|
-
...
|
|
207
|
+
position: o = "top-right",
|
|
208
|
+
...a
|
|
204
209
|
}) {
|
|
205
|
-
return /* @__PURE__ */
|
|
206
|
-
|
|
210
|
+
return /* @__PURE__ */ r(
|
|
211
|
+
J,
|
|
207
212
|
{
|
|
208
|
-
position:
|
|
213
|
+
position: o,
|
|
214
|
+
containerAriaLabel: "Notifications",
|
|
215
|
+
...a,
|
|
209
216
|
toastOptions: {
|
|
210
217
|
...e,
|
|
211
218
|
classNames: {
|
|
212
219
|
...e?.classNames,
|
|
213
|
-
toast:
|
|
214
|
-
"
|
|
215
|
-
"
|
|
216
|
-
|
|
217
|
-
r?.fontFamily,
|
|
220
|
+
toast: f(
|
|
221
|
+
"bg-white/90 border-zinc-200 text-zinc-900 shadow-xl backdrop-blur-md",
|
|
222
|
+
"dark:bg-zinc-950/80 dark:border-zinc-800 dark:text-zinc-50 dark:shadow-2xl",
|
|
223
|
+
t?.fontFamily,
|
|
218
224
|
e?.classNames?.toast
|
|
219
225
|
),
|
|
220
|
-
title:
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
"
|
|
226
|
-
e?.classNames?.description
|
|
227
|
-
),
|
|
228
|
-
actionButton: c(
|
|
229
|
-
"!font-medium !rounded-md !shadow-sm transition-colors !px-3 !py-1.5 !border",
|
|
230
|
-
"!bg-zinc-900 !text-white !border-transparent hover:!bg-zinc-800",
|
|
231
|
-
"dark:!bg-white dark:!text-black dark:!border-zinc-300 dark:hover:!bg-zinc-100",
|
|
226
|
+
title: f("font-medium text-sm text-zinc-900 dark:text-zinc-50", e?.classNames?.title),
|
|
227
|
+
description: f("mt-0.5 text-xs text-zinc-500 dark:text-zinc-400 line-clamp-2", e?.classNames?.description),
|
|
228
|
+
actionButton: f(
|
|
229
|
+
"font-medium rounded-lg transition-all px-3 py-1.5 border text-xs",
|
|
230
|
+
"bg-zinc-900 text-white border-transparent hover:scale-[1.02] active:scale-95",
|
|
231
|
+
"dark:bg-zinc-100 dark:text-zinc-900 dark:hover:bg-white",
|
|
232
232
|
e?.classNames?.actionButton
|
|
233
233
|
)
|
|
234
234
|
},
|
|
235
235
|
style: {
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
236
|
+
borderRadius: t?.borderRadius || "0.75rem",
|
|
237
|
+
backgroundColor: t?.backgroundColor,
|
|
238
|
+
color: t?.textColor,
|
|
239
|
+
fontFamily: t?.fontFamily,
|
|
239
240
|
...e?.style
|
|
240
241
|
}
|
|
241
242
|
}
|
|
242
243
|
}
|
|
243
244
|
);
|
|
244
245
|
}
|
|
245
|
-
function
|
|
246
|
-
|
|
246
|
+
function E(t, e, o, a, n = "medium") {
|
|
247
|
+
return u(t, {
|
|
247
248
|
description: e,
|
|
248
|
-
icon:
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
249
|
+
icon: {
|
|
250
|
+
low: /* @__PURE__ */ r(U, { className: "w-5 h-5 text-blue-500" }),
|
|
251
|
+
medium: /* @__PURE__ */ r(C, { className: "w-5 h-5 text-amber-500" }),
|
|
252
|
+
high: /* @__PURE__ */ r(y, { className: "w-5 h-5 text-red-500" })
|
|
253
|
+
}[n],
|
|
254
|
+
duration: n === "high" ? 8e3 : 5e3,
|
|
255
|
+
action: o ? {
|
|
256
|
+
label: o,
|
|
257
|
+
onClick: () => a?.()
|
|
254
258
|
} : void 0
|
|
255
259
|
});
|
|
256
260
|
}
|
|
257
|
-
const
|
|
258
|
-
success: (
|
|
261
|
+
const re = {
|
|
262
|
+
success: (t, e) => u(t, {
|
|
259
263
|
description: e,
|
|
260
|
-
icon: /* @__PURE__ */
|
|
264
|
+
icon: /* @__PURE__ */ r(O, { className: "w-5 h-5 text-emerald-500" })
|
|
261
265
|
}),
|
|
262
|
-
error: (
|
|
266
|
+
error: (t, e) => u(t, {
|
|
263
267
|
description: e,
|
|
264
|
-
icon: /* @__PURE__ */
|
|
268
|
+
icon: /* @__PURE__ */ r(y, { className: "w-5 h-5 text-red-500" })
|
|
265
269
|
}),
|
|
266
|
-
warning: (
|
|
270
|
+
warning: (t, e) => u(t, {
|
|
267
271
|
description: e,
|
|
268
|
-
icon: /* @__PURE__ */
|
|
272
|
+
icon: /* @__PURE__ */ r(C, { className: "w-5 h-5 text-amber-500 dark:text-amber-400" })
|
|
269
273
|
}),
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
}),
|
|
274
|
-
message: (r, e) => l(r, { description: e }),
|
|
275
|
-
customTheme: (r, e, t) => {
|
|
276
|
-
l.custom((o) => /* @__PURE__ */ d(
|
|
274
|
+
loading: (t, e) => u.loading(t, { description: e }),
|
|
275
|
+
custom: (t, e, o) => {
|
|
276
|
+
u.custom((a) => /* @__PURE__ */ r(
|
|
277
277
|
"div",
|
|
278
278
|
{
|
|
279
|
-
className:
|
|
279
|
+
className: f("flex gap-3 p-4 shadow-2xl border", o.fontFamily),
|
|
280
280
|
style: {
|
|
281
|
-
backgroundColor:
|
|
282
|
-
color:
|
|
283
|
-
|
|
284
|
-
borderRadius:
|
|
281
|
+
backgroundColor: o.backgroundColor || "var(--bg-card)",
|
|
282
|
+
color: o.textColor || "var(--text-card)",
|
|
283
|
+
borderColor: o.primaryColor || "#e4e4e7",
|
|
284
|
+
borderRadius: o.borderRadius || "12px"
|
|
285
285
|
},
|
|
286
|
-
children: [
|
|
287
|
-
/* @__PURE__ */
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
className: "w-1.5 rounded-full shrink-0",
|
|
291
|
-
style: { backgroundColor: t.primaryColor || "#3b82f6" }
|
|
292
|
-
}
|
|
293
|
-
),
|
|
294
|
-
/* @__PURE__ */ d("div", { className: "flex flex-col gap-1", children: [
|
|
295
|
-
/* @__PURE__ */ a("span", { className: "font-medium text-sm leading-none", children: r }),
|
|
296
|
-
/* @__PURE__ */ a("span", { className: "text-sm opacity-80 leading-relaxed mt-1", children: e })
|
|
297
|
-
] })
|
|
298
|
-
]
|
|
286
|
+
children: /* @__PURE__ */ m("div", { className: "flex flex-col gap-1", children: [
|
|
287
|
+
/* @__PURE__ */ r("span", { className: "font-semibold text-sm", children: t }),
|
|
288
|
+
/* @__PURE__ */ r("span", { className: "text-xs opacity-70", children: e })
|
|
289
|
+
] })
|
|
299
290
|
}
|
|
300
291
|
));
|
|
301
292
|
}
|
|
302
|
-
},
|
|
303
|
-
function
|
|
304
|
-
apiKey:
|
|
293
|
+
}, w = S(void 0);
|
|
294
|
+
function oe({
|
|
295
|
+
apiKey: t,
|
|
305
296
|
apiUrl: e,
|
|
306
|
-
language:
|
|
307
|
-
children:
|
|
297
|
+
language: o,
|
|
298
|
+
children: a
|
|
308
299
|
}) {
|
|
309
|
-
const
|
|
310
|
-
const
|
|
300
|
+
const n = P(async (s) => {
|
|
301
|
+
const l = s instanceof Error ? s : new Error(String(s)), c = u.loading("Analyzing error context...", {
|
|
311
302
|
description: "Applying AI recovery heuristics..."
|
|
312
303
|
});
|
|
304
|
+
if (t === "sk_test_mock") {
|
|
305
|
+
setTimeout(() => {
|
|
306
|
+
u.info("Mock Mode Analysis", {
|
|
307
|
+
id: c,
|
|
308
|
+
description: "This is a mocked async recovery because sk_test_mock was used."
|
|
309
|
+
});
|
|
310
|
+
}, 1500);
|
|
311
|
+
return;
|
|
312
|
+
}
|
|
313
313
|
try {
|
|
314
|
-
const
|
|
314
|
+
const h = {
|
|
315
|
+
message: l.message,
|
|
316
|
+
componentStack: l.stack,
|
|
317
|
+
url: typeof window < "u" ? window.location.href : void 0
|
|
318
|
+
}, b = _(h), x = e || "https://api.cognicatch.dev/v1/analyze-error", d = typeof navigator < "u" ? navigator.language : "en-US", v = o || d, k = await fetch(x, {
|
|
315
319
|
method: "POST",
|
|
316
320
|
headers: {
|
|
317
|
-
Authorization: `Bearer ${
|
|
321
|
+
Authorization: `Bearer ${t}`,
|
|
318
322
|
"Content-Type": "application/json"
|
|
319
323
|
},
|
|
320
|
-
body: JSON.stringify({
|
|
324
|
+
body: JSON.stringify({
|
|
325
|
+
error: b.message,
|
|
326
|
+
stack: b.componentName ? `Component: ${b.componentName}` : b.errorCode || "Async Error",
|
|
327
|
+
routePath: b.routePath,
|
|
328
|
+
language: v
|
|
329
|
+
})
|
|
321
330
|
});
|
|
322
331
|
if (!k.ok) throw new Error("SaaS API Error");
|
|
323
|
-
const
|
|
324
|
-
|
|
325
|
-
} catch (
|
|
326
|
-
console.error("AdaptiveUI API Request failed:",
|
|
327
|
-
id:
|
|
332
|
+
const p = await k.json();
|
|
333
|
+
p && ((p.severity || p.level) === "low" ? u.info(p.title, { id: c, description: p.description }) : u.error(p.title, { id: c, description: p.description }));
|
|
334
|
+
} catch (h) {
|
|
335
|
+
console.error("AdaptiveUI API Request failed:", h), u.error("Analysis Failed", {
|
|
336
|
+
id: c,
|
|
328
337
|
description: "We couldn't reach the AI servers. Please try again later."
|
|
329
338
|
});
|
|
330
339
|
}
|
|
331
|
-
}
|
|
332
|
-
|
|
340
|
+
}, [t, e, o]), i = T(() => ({
|
|
341
|
+
apiKey: t,
|
|
342
|
+
apiUrl: e,
|
|
343
|
+
language: o,
|
|
344
|
+
captureAsyncError: n
|
|
345
|
+
}), [t, e, o, n]);
|
|
346
|
+
return /* @__PURE__ */ r(w.Provider, { value: i, children: a });
|
|
333
347
|
}
|
|
334
|
-
function
|
|
335
|
-
const
|
|
336
|
-
if (!
|
|
348
|
+
function ae() {
|
|
349
|
+
const t = M(w);
|
|
350
|
+
if (!t)
|
|
337
351
|
throw new Error(
|
|
338
|
-
"❌ AdaptiveUI Developer Error: You tried to use the 'useAdaptive' hook outside of an <AdaptiveProvider>. Please wrap the root of your application (e.g., App.tsx) with <AdaptiveProvider apiKey='YOUR_KEY'>"
|
|
352
|
+
"❌ AdaptiveUI Developer Error: You tried to use the 'useAdaptive' hook outside of an <AdaptiveProvider>. Please wrap the root of your application (e.g., App.tsx or layout.tsx) with <AdaptiveProvider apiKey='YOUR_KEY'>"
|
|
339
353
|
);
|
|
340
|
-
return
|
|
354
|
+
return t;
|
|
341
355
|
}
|
|
342
|
-
|
|
343
|
-
|
|
356
|
+
const W = ({ onRecover: t, theme: e }) => /* @__PURE__ */ r("div", { className: `p-6 rounded-xl border border-zinc-200 dark:border-zinc-800 bg-white dark:bg-zinc-950 shadow-sm ${e === "dark" ? "dark" : ""}`, children: /* @__PURE__ */ m("div", { className: "flex flex-col items-center text-center gap-4", children: [
|
|
357
|
+
/* @__PURE__ */ r("div", { className: "p-3 rounded-full bg-red-50 dark:bg-red-900/20", children: /* @__PURE__ */ r("svg", { className: "w-6 h-6 text-red-600 dark:text-red-400", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: /* @__PURE__ */ r("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z" }) }) }),
|
|
358
|
+
/* @__PURE__ */ m("div", { children: [
|
|
359
|
+
/* @__PURE__ */ r("h3", { className: "text-sm font-semibold text-zinc-900 dark:text-zinc-100", children: "Component Unavailable" }),
|
|
360
|
+
/* @__PURE__ */ r("p", { className: "text-xs text-zinc-500 dark:text-zinc-400 mt-1", children: "An unexpected error occurred in the interface." })
|
|
361
|
+
] }),
|
|
362
|
+
/* @__PURE__ */ r(
|
|
363
|
+
"button",
|
|
364
|
+
{
|
|
365
|
+
onClick: t,
|
|
366
|
+
style: {
|
|
367
|
+
// Se o usuário definiu uma cor primária no objeto ThemeOptions, usamos aqui!
|
|
368
|
+
backgroundColor: e?.primaryColor || void 0
|
|
369
|
+
},
|
|
370
|
+
className: "px-4 py-2 text-xs font-medium bg-zinc-900 dark:bg-zinc-100 text-white dark:text-zinc-900 rounded-lg hover:opacity-90 transition-opacity",
|
|
371
|
+
children: "Try Reloading"
|
|
372
|
+
}
|
|
373
|
+
)
|
|
374
|
+
] }) });
|
|
375
|
+
class ne extends I {
|
|
376
|
+
static contextType = w;
|
|
377
|
+
_isMounted = !1;
|
|
344
378
|
constructor(e) {
|
|
345
379
|
super(e), this.state = {
|
|
346
380
|
hasError: !1,
|
|
347
381
|
error: null,
|
|
348
382
|
aiData: null,
|
|
349
|
-
isProcessingAuto: !1
|
|
383
|
+
isProcessingAuto: !1,
|
|
384
|
+
hasCrashedFallback: !1
|
|
350
385
|
};
|
|
351
386
|
}
|
|
387
|
+
componentDidMount() {
|
|
388
|
+
this._isMounted = !0;
|
|
389
|
+
}
|
|
390
|
+
componentWillUnmount() {
|
|
391
|
+
this._isMounted = !1;
|
|
392
|
+
}
|
|
352
393
|
static getDerivedStateFromError(e) {
|
|
353
394
|
return { hasError: !0, error: e };
|
|
354
395
|
}
|
|
355
|
-
componentDidCatch(e,
|
|
356
|
-
|
|
357
|
-
|
|
396
|
+
componentDidCatch(e, o) {
|
|
397
|
+
if (this.state.hasCrashedFallback) return;
|
|
398
|
+
const { mode: a } = this.props;
|
|
399
|
+
a === "manual" && this.props.severity === "low" && E(
|
|
358
400
|
this.props.title,
|
|
359
401
|
this.props.description,
|
|
360
402
|
this.props.actionLabel ?? void 0,
|
|
361
403
|
this.handleRecover
|
|
362
|
-
),
|
|
404
|
+
), a === "auto" && this._isMounted && (this.setState({ isProcessingAuto: !0 }), this.processAutoMode(e, o));
|
|
363
405
|
}
|
|
364
|
-
processAutoMode = async (e) => {
|
|
365
|
-
const
|
|
366
|
-
if (!
|
|
367
|
-
console.error("AdaptiveUI: Missing API Key for auto mode. Provide it via props or <AdaptiveProvider>."), this.setState({ isProcessingAuto: !1 });
|
|
406
|
+
processAutoMode = async (e, o) => {
|
|
407
|
+
const a = this.props, n = a.apiKey || this.context?.apiKey, i = a.apiUrl || this.context?.apiUrl, s = typeof navigator < "u" ? navigator.language : "en-US", l = a.language || this.context?.language || s;
|
|
408
|
+
if (!n) {
|
|
409
|
+
console.error("AdaptiveUI: Missing API Key for auto mode. Provide it via props or <AdaptiveProvider>."), this._isMounted && this.setState({ isProcessingAuto: !1 });
|
|
368
410
|
return;
|
|
369
411
|
}
|
|
370
|
-
if (
|
|
412
|
+
if (n === "sk_test_mock") {
|
|
371
413
|
setTimeout(() => {
|
|
372
|
-
this.setState({
|
|
414
|
+
this._isMounted && this.setState({
|
|
373
415
|
isProcessingAuto: !1,
|
|
374
416
|
aiData: {
|
|
375
417
|
severity: "medium",
|
|
376
|
-
title: "
|
|
377
|
-
description: "
|
|
378
|
-
actionLabel: "Reload
|
|
418
|
+
title: "Mock Mode Error",
|
|
419
|
+
description: "This is a mocked response because sk_test_mock was used.",
|
|
420
|
+
actionLabel: "Reload Component"
|
|
379
421
|
}
|
|
380
422
|
});
|
|
381
423
|
}, 1500);
|
|
382
424
|
return;
|
|
383
425
|
}
|
|
384
426
|
try {
|
|
385
|
-
const
|
|
427
|
+
const c = {
|
|
428
|
+
message: e.message,
|
|
429
|
+
componentStack: o.componentStack || void 0,
|
|
430
|
+
url: typeof window < "u" ? window.location.href : void 0
|
|
431
|
+
}, h = _(c), x = await fetch(i || "https://api.cognicatch.dev/v1/analyze-error", {
|
|
386
432
|
method: "POST",
|
|
387
433
|
headers: {
|
|
388
|
-
Authorization: `Bearer ${
|
|
434
|
+
Authorization: `Bearer ${n}`,
|
|
389
435
|
"Content-Type": "application/json"
|
|
390
436
|
},
|
|
391
437
|
body: JSON.stringify({
|
|
392
|
-
error:
|
|
393
|
-
stack:
|
|
394
|
-
|
|
438
|
+
error: h.message,
|
|
439
|
+
stack: h.componentName ? `Component: ${h.componentName}` : "No stack",
|
|
440
|
+
routePath: h.routePath,
|
|
441
|
+
language: l
|
|
395
442
|
})
|
|
396
443
|
});
|
|
397
|
-
if (!
|
|
398
|
-
throw new Error(`SaaS API returned ${
|
|
399
|
-
const
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
444
|
+
if (!x.ok)
|
|
445
|
+
throw new Error(`SaaS API returned ${x.status}`);
|
|
446
|
+
const d = await x.json();
|
|
447
|
+
d && this._isMounted && (d.severity === "low" ? (E(
|
|
448
|
+
d.title,
|
|
449
|
+
d.description,
|
|
450
|
+
d.actionLabel ?? void 0,
|
|
404
451
|
this.handleRecover
|
|
405
|
-
), this.setState({ isProcessingAuto: !1,
|
|
406
|
-
} catch (
|
|
407
|
-
console.error("AdaptiveUI AI Request failed:",
|
|
452
|
+
), this.setState({ isProcessingAuto: !1, aiData: d })) : this.setState({ isProcessingAuto: !1, aiData: d }));
|
|
453
|
+
} catch (c) {
|
|
454
|
+
console.error("AdaptiveUI AI Request failed:", c), this._isMounted && this.setState({
|
|
408
455
|
isProcessingAuto: !1,
|
|
409
456
|
aiData: {
|
|
410
457
|
severity: "medium",
|
|
@@ -416,43 +463,61 @@ class V extends R {
|
|
|
416
463
|
}
|
|
417
464
|
};
|
|
418
465
|
handleRecover = () => {
|
|
419
|
-
this.setState({ hasError: !1, error: null, aiData: null }), this.props.onRecover && this.props.onRecover();
|
|
466
|
+
this._isMounted && this.setState({ hasError: !1, error: null, aiData: null, hasCrashedFallback: !1 }), this.props.onRecover && this.props.onRecover();
|
|
420
467
|
};
|
|
421
468
|
render() {
|
|
469
|
+
if (this.state.hasCrashedFallback)
|
|
470
|
+
return /* @__PURE__ */ r(
|
|
471
|
+
W,
|
|
472
|
+
{
|
|
473
|
+
onRecover: this.handleRecover,
|
|
474
|
+
theme: this.props.theme
|
|
475
|
+
}
|
|
476
|
+
);
|
|
422
477
|
if (!this.state.hasError)
|
|
423
478
|
return this.props.children;
|
|
424
|
-
const { mode: e, theme:
|
|
479
|
+
const { mode: e, theme: o, className: a } = this.props;
|
|
425
480
|
if (e === "manual") {
|
|
426
|
-
const { severity:
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
481
|
+
const { severity: n, title: i, description: s, actionLabel: l } = this.props;
|
|
482
|
+
try {
|
|
483
|
+
if (n === "high") return /* @__PURE__ */ r(N, { isOpen: !0, onOpenChange: (c) => {
|
|
484
|
+
c || this.handleRecover();
|
|
485
|
+
}, title: i, description: s, theme: o });
|
|
486
|
+
if (n === "medium") return /* @__PURE__ */ r(A, { title: i, description: s, primaryAction: l ? { label: l, onClick: this.handleRecover } : void 0, theme: o, className: a });
|
|
487
|
+
if (n === "low") return null;
|
|
488
|
+
} catch {
|
|
489
|
+
return this.setState({ hasCrashedFallback: !0 }), null;
|
|
490
|
+
}
|
|
432
491
|
}
|
|
433
492
|
if (e === "auto") {
|
|
434
493
|
if (this.state.isProcessingAuto)
|
|
435
|
-
return /* @__PURE__ */
|
|
436
|
-
/* @__PURE__ */
|
|
437
|
-
/* @__PURE__ */
|
|
494
|
+
return /* @__PURE__ */ m("div", { className: "w-full h-full min-h-[100px] rounded-xl border border-zinc-200/50 dark:border-zinc-800/50 bg-zinc-50/50 dark:bg-zinc-900/20 flex flex-col items-center justify-center p-6 animate-pulse", children: [
|
|
495
|
+
/* @__PURE__ */ r("div", { className: "w-5 h-5 border-2 border-zinc-400/30 dark:border-zinc-500/30 border-t-zinc-900 dark:border-t-zinc-100 rounded-full animate-spin mb-3" }),
|
|
496
|
+
/* @__PURE__ */ r("p", { className: "text-xs font-medium text-zinc-500 dark:text-zinc-400", children: "Analyzing error context..." })
|
|
438
497
|
] });
|
|
439
498
|
if (this.state.aiData) {
|
|
440
|
-
const { severity:
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
499
|
+
const { severity: n, title: i, description: s, actionLabel: l } = this.state.aiData;
|
|
500
|
+
try {
|
|
501
|
+
if (n === "high")
|
|
502
|
+
return /* @__PURE__ */ r(N, { isOpen: !0, onOpenChange: (c) => {
|
|
503
|
+
c || this.handleRecover();
|
|
504
|
+
}, title: i, description: s, theme: o });
|
|
505
|
+
if (n === "medium")
|
|
506
|
+
return /* @__PURE__ */ r(A, { title: i, description: s, primaryAction: l ? { label: l, onClick: this.handleRecover } : void 0, theme: o, className: a });
|
|
507
|
+
if (n === "low")
|
|
508
|
+
return null;
|
|
509
|
+
} catch {
|
|
510
|
+
return this.setState({ hasCrashedFallback: !0 }), null;
|
|
511
|
+
}
|
|
447
512
|
}
|
|
448
513
|
}
|
|
449
514
|
return null;
|
|
450
515
|
}
|
|
451
516
|
}
|
|
452
517
|
export {
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
518
|
+
ne as AdaptiveErrorBoundary,
|
|
519
|
+
oe as AdaptiveProvider,
|
|
520
|
+
te as AdaptiveToastProvider,
|
|
521
|
+
re as adaptiveToast,
|
|
522
|
+
ae as useAdaptive
|
|
458
523
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cognicatch/react",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"description": "GenUI Error Boundaries and AI Recovery UIs for React",
|
|
5
5
|
"private": false,
|
|
6
6
|
"type": "module",
|
|
@@ -29,15 +29,6 @@
|
|
|
29
29
|
"imports": {
|
|
30
30
|
"#/*": "./src/*"
|
|
31
31
|
},
|
|
32
|
-
"scripts": {
|
|
33
|
-
"dev": "vite dev --port 3000",
|
|
34
|
-
"build": "vite build -c vite.config.build.ts",
|
|
35
|
-
"preview": "vite preview",
|
|
36
|
-
"test": "vitest run",
|
|
37
|
-
"format": "biome format",
|
|
38
|
-
"lint": "biome lint",
|
|
39
|
-
"check": "biome check"
|
|
40
|
-
},
|
|
41
32
|
"peerDependencies": {
|
|
42
33
|
"react": "^18.0.0 || ^19.0.0",
|
|
43
34
|
"react-dom": "^18.0.0 || ^19.0.0"
|
|
@@ -79,5 +70,14 @@
|
|
|
79
70
|
"vite-tsconfig-paths": "^5.1.4",
|
|
80
71
|
"vitest": "^3.0.5"
|
|
81
72
|
},
|
|
82
|
-
"packageManager": "pnpm@8.6.12+sha1.a2f983fbf8f2531dc85db2a5d7f398063d51a6f3"
|
|
83
|
-
|
|
73
|
+
"packageManager": "pnpm@8.6.12+sha1.a2f983fbf8f2531dc85db2a5d7f398063d51a6f3",
|
|
74
|
+
"scripts": {
|
|
75
|
+
"dev": "vite dev --port 3000",
|
|
76
|
+
"build": "vite build -c vite.config.build.ts",
|
|
77
|
+
"preview": "vite preview",
|
|
78
|
+
"test": "vitest run",
|
|
79
|
+
"format": "biome format",
|
|
80
|
+
"lint": "biome lint",
|
|
81
|
+
"check": "biome check"
|
|
82
|
+
}
|
|
83
|
+
}
|