UNPKG

react-cookie-manager

Version:

🍪 The ultimate React cookie consent solution. Automatically block trackers, manage consent preferences, and protect user privacy with an elegant UI. Perfect for modern web applications.

711 lines 325 kB
!function(){"use strict";try{if("undefined"!=typeof document){var e=document.createElement("style");e.appendChild(document.createTextNode('.cookie-manager *,.cookie-manager :after,.cookie-manager :before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }.cookie-manager ::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }.cookie-manager *,.cookie-manager :after,.cookie-manager :before{box-sizing:border-box;border:0 solid #e5e7eb}.cookie-manager :after,.cookie-manager :before{--tw-content:""}.cookie-manager,.cookie-manager :host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}.cookie-manager body{margin:0;line-height:inherit}.cookie-manager hr{height:0;color:inherit;border-top-width:1px}.cookie-manager abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.cookie-manager h1,.cookie-manager h2,.cookie-manager h3,.cookie-manager h4,.cookie-manager h5,.cookie-manager h6{font-size:inherit;font-weight:inherit}.cookie-manager a{color:inherit;text-decoration:inherit}.cookie-manager b,.cookie-manager strong{font-weight:bolder}.cookie-manager code,.cookie-manager kbd,.cookie-manager pre,.cookie-manager samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}.cookie-manager small{font-size:80%}.cookie-manager sub,.cookie-manager sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}.cookie-manager sub{bottom:-.25em}.cookie-manager sup{top:-.5em}.cookie-manager table{text-indent:0;border-color:inherit;border-collapse:collapse}.cookie-manager button,.cookie-manager input,.cookie-manager optgroup,.cookie-manager select,.cookie-manager textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}.cookie-manager button,.cookie-manager select{text-transform:none}.cookie-manager button,.cookie-manager input:where([type=button]),.cookie-manager input:where([type=reset]),.cookie-manager input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}.cookie-manager :-moz-focusring{outline:auto}.cookie-manager :-moz-ui-invalid{box-shadow:none}.cookie-manager progress{vertical-align:baseline}.cookie-manager ::-webkit-inner-spin-button,.cookie-manager ::-webkit-outer-spin-button{height:auto}.cookie-manager [type=search]{-webkit-appearance:textfield;outline-offset:-2px}.cookie-manager ::-webkit-search-decoration{-webkit-appearance:none}.cookie-manager ::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}.cookie-manager summary{display:list-item}.cookie-manager blockquote,.cookie-manager dd,.cookie-manager dl,.cookie-manager figure,.cookie-manager h1,.cookie-manager h2,.cookie-manager h3,.cookie-manager h4,.cookie-manager h5,.cookie-manager h6,.cookie-manager hr,.cookie-manager p,.cookie-manager pre{margin:0}.cookie-manager fieldset{margin:0;padding:0}.cookie-manager legend{padding:0}.cookie-manager menu,.cookie-manager ol,.cookie-manager ul{list-style:none;margin:0;padding:0}.cookie-manager dialog{padding:0}.cookie-manager textarea{resize:vertical}.cookie-manager input::-moz-placeholder,.cookie-manager textarea::-moz-placeholder{opacity:1;color:#9ca3af}.cookie-manager input::placeholder,.cookie-manager textarea::placeholder{opacity:1;color:#9ca3af}.cookie-manager [role=button],.cookie-manager button{cursor:pointer}.cookie-manager :disabled{cursor:default}.cookie-manager audio,.cookie-manager canvas,.cookie-manager embed,.cookie-manager iframe,.cookie-manager img,.cookie-manager object,.cookie-manager svg,.cookie-manager video{display:block;vertical-align:middle}.cookie-manager img,.cookie-manager video{max-width:100%;height:auto}.cookie-manager [hidden]:where(:not([hidden=until-found])){display:none}.cookie-manager .cookie-consent-blocked-iframe{min-height:200px}.cookie-manager .cookie-consent-blocked-iframe,.cookie-manager .cookie-consent-wrapper-content{width:100%;height:100%;display:flex;align-items:center;justify-content:center;position:absolute;top:0;left:0;z-index:100}.cookie-manager .cookie-consent-wrapper-content{flex-direction:column;text-align:center;padding:24px;color:#f3f4f6;font-size:15px;line-height:1.6}.cookie-manager .dark .cookie-consent-blocked-iframe{color:#e5e7eb}.cookie-manager [data-cookie-consent-placeholder=true]{display:flex!important;visibility:visible!important;opacity:1!important}.cookie-manager iframe[data-cookie-blocked=true]{opacity:0!important;pointer-events:none!important}.cookie-manager .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.cookie-manager .visible{visibility:visible}.cookie-manager .invisible{visibility:hidden}.cookie-manager .static{position:static}.cookie-manager .fixed{position:fixed}.cookie-manager .absolute{position:absolute}.cookie-manager .relative{position:relative}.cookie-manager .inset-0{top:0;right:0;bottom:0;left:0}.cookie-manager .inset-x-0{left:0;right:0}.cookie-manager .-right-2{right:-.5rem}.cookie-manager .-top-2{top:-.5rem}.cookie-manager .bottom-0{bottom:0}.cookie-manager .bottom-4{bottom:1rem}.cookie-manager .bottom-6{bottom:1.5rem}.cookie-manager .left-1\\/2{left:50%}.cookie-manager .left-4{left:1rem}.cookie-manager .left-6{left:1.5rem}.cookie-manager .z-\\[99999\\]{z-index:99999}.cookie-manager .mx-auto{margin-left:auto;margin-right:auto}.cookie-manager .my-0{margin-top:0;margin-bottom:0}.cookie-manager .mb-1{margin-bottom:.25rem}.cookie-manager .mb-2{margin-bottom:.5rem}.cookie-manager .mb-3{margin-bottom:.75rem}.cookie-manager .mb-6{margin-bottom:1.5rem}.cookie-manager .ml-auto{margin-left:auto}.cookie-manager .mr-auto{margin-right:auto}.cookie-manager .mt-1{margin-top:.25rem}.cookie-manager .mt-2{margin-top:.5rem}.cookie-manager .block{display:block}.cookie-manager .inline{display:inline}.cookie-manager .flex{display:flex}.cookie-manager .inline-flex{display:inline-flex}.cookie-manager .hidden{display:none}.cookie-manager .h-12{height:3rem}.cookie-manager .h-6{height:1.5rem}.cookie-manager .w-11{width:2.75rem}.cookie-manager .w-12{width:3rem}.cookie-manager .w-6{width:1.5rem}.cookie-manager .w-80{width:20rem}.cookie-manager .w-full{width:100%}.cookie-manager .max-w-\\[calc\\(100vw-32px\\)\\]{max-width:calc(100vw - 32px)}.cookie-manager .max-w-lg{max-width:32rem}.cookie-manager .flex-1{flex:1 1 0%}.cookie-manager .-translate-x-1\\/2{--tw-translate-x:-50%}.cookie-manager .-translate-x-1\\/2,.cookie-manager .translate-y-0{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.cookie-manager .translate-y-0{--tw-translate-y:0px}.cookie-manager .translate-y-full{--tw-translate-y:100%}.cookie-manager .rotate-0,.cookie-manager .translate-y-full{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.cookie-manager .rotate-0{--tw-rotate:0deg}.cookie-manager .scale-100{--tw-scale-x:1;--tw-scale-y:1}.cookie-manager .scale-100,.cookie-manager .scale-95{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.cookie-manager .scale-95{--tw-scale-x:.95;--tw-scale-y:.95}.cookie-manager .transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.cookie-manager .cursor-pointer{cursor:pointer}.cookie-manager .resize{resize:both}.cookie-manager .flex-col{flex-direction:column}.cookie-manager .items-start{align-items:flex-start}.cookie-manager .items-center{align-items:center}.cookie-manager .justify-end{justify-content:flex-end}.cookie-manager .justify-center{justify-content:center}.cookie-manager .justify-between{justify-content:space-between}.cookie-manager .gap-2{gap:.5rem}.cookie-manager .gap-3{gap:.75rem}.cookie-manager .gap-4{gap:1rem}.cookie-manager .gap-6{gap:1.5rem}.cookie-manager .rounded-2xl{border-radius:1rem}.cookie-manager .rounded-full{border-radius:9999px}.cookie-manager .rounded-lg{border-radius:.5rem}.cookie-manager .rounded-md{border-radius:.375rem}.cookie-manager .rounded-xl{border-radius:.75rem}.cookie-manager .border{border-width:1px}.cookie-manager .border-black\\/10{border-color:#0000001a}.cookie-manager .border-blue-500{--tw-border-opacity:1;border-color:rgb(59 130 246/var(--tw-border-opacity,1))}.cookie-manager .bg-black\\/20{background-color:#0003}.cookie-manager .bg-black\\/40{background-color:#0006}.cookie-manager .bg-black\\/95{background-color:#000000f2}.cookie-manager .bg-blue-500{--tw-bg-opacity:1;background-color:rgb(59 130 246/var(--tw-bg-opacity,1))}.cookie-manager .bg-gray-200{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity,1))}.cookie-manager .bg-gray-700{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.cookie-manager .bg-gray-800{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity,1))}.cookie-manager .bg-transparent{background-color:transparent}.cookie-manager .bg-white\\/95{background-color:#fffffff2}.cookie-manager .p-4{padding:1rem}.cookie-manager .p-6{padding:1.5rem}.cookie-manager .px-3{padding-left:.75rem;padding-right:.75rem}.cookie-manager .px-4{padding-left:1rem;padding-right:1rem}.cookie-manager .py-1{padding-top:.25rem;padding-bottom:.25rem}.cookie-manager .py-1\\.5{padding-top:.375rem;padding-bottom:.375rem}.cookie-manager .py-2{padding-top:.5rem;padding-bottom:.5rem}.cookie-manager .py-2\\.5{padding-top:.625rem;padding-bottom:.625rem}.cookie-manager .pb-4{padding-bottom:1rem}.cookie-manager .pt-2{padding-top:.5rem}.cookie-manager .text-left{text-align:left}.cookie-manager .text-center{text-align:center}.cookie-manager .text-right{text-align:right}.cookie-manager .text-lg{font-size:1.125rem;line-height:1.75rem}.cookie-manager .text-sm{font-size:.875rem;line-height:1.25rem}.cookie-manager .text-xs{font-size:.75rem;line-height:1rem}.cookie-manager .font-medium{font-weight:500}.cookie-manager .font-semibold{font-weight:600}.cookie-manager .text-blue-500{--tw-text-opacity:1;color:rgb(59 130 246/var(--tw-text-opacity,1))}.cookie-manager .text-gray-200{--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity,1))}.cookie-manager .text-gray-300{--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity,1))}.cookie-manager .text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}.cookie-manager .text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.cookie-manager .text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}.cookie-manager .text-gray-700{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity,1))}.cookie-manager .text-gray-800{--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity,1))}.cookie-manager .text-gray-900{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity,1))}.cookie-manager .text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.cookie-manager .opacity-0{opacity:0}.cookie-manager .opacity-100{opacity:1}.cookie-manager .shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.cookie-manager .ring-1{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.cookie-manager .ring-1,.cookie-manager .ring-2{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.cookie-manager .ring-2{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.cookie-manager .ring-black\\/10{--tw-ring-color:rgba(0,0,0,.1)}.cookie-manager .ring-gray-200{--tw-ring-opacity:1;--tw-ring-color:rgb(229 231 235/var(--tw-ring-opacity,1))}.cookie-manager .ring-white\\/10{--tw-ring-color:hsla(0,0%,100%,.1)}.cookie-manager .blur{--tw-blur:blur(8px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.cookie-manager .backdrop-blur-sm{--tw-backdrop-blur:blur(4px)}.cookie-manager .backdrop-blur-sm,.cookie-manager .backdrop-saturate-150{-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)}.cookie-manager .backdrop-saturate-150{--tw-backdrop-saturate:saturate(1.5)}.cookie-manager .transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.cookie-manager .transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.cookie-manager .transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.cookie-manager .transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.cookie-manager .duration-200{transition-duration:.2s}.cookie-manager .duration-300{transition-duration:.3s}.cookie-manager .duration-500{transition-duration:.5s}.cookie-manager .ease-\\[cubic-bezier\\(0\\.32\\,0\\.72\\,0\\,1\\)\\]{transition-timing-function:cubic-bezier(.32,.72,0,1)}.cookie-manager .after\\:absolute:after{content:var(--tw-content);position:absolute}.cookie-manager .after\\:left-\\[2px\\]:after{content:var(--tw-content);left:2px}.cookie-manager .after\\:top-0\\.5:after{content:var(--tw-content);top:.125rem}.cookie-manager .after\\:h-5:after{content:var(--tw-content);height:1.25rem}.cookie-manager .after\\:w-5:after{content:var(--tw-content);width:1.25rem}.cookie-manager .after\\:rounded-full:after{content:var(--tw-content);border-radius:9999px}.cookie-manager .after\\:bg-white:after{content:var(--tw-content);--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.cookie-manager .after\\:transition-all:after{content:var(--tw-content);transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.cookie-manager .after\\:content-\\[\\\'\\\'\\]:after{--tw-content:"";content:var(--tw-content)}.cookie-manager .hover\\:-translate-y-2:hover{--tw-translate-y:-.5rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.cookie-manager .hover\\:rotate-12:hover{--tw-rotate:12deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.cookie-manager .hover\\:scale-105:hover{--tw-scale-x:1.05;--tw-scale-y:1.05;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.cookie-manager .hover\\:scale-110:hover{--tw-scale-x:1.1;--tw-scale-y:1.1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.cookie-manager .hover\\:border-blue-400:hover{--tw-border-opacity:1;border-color:rgb(96 165 250/var(--tw-border-opacity,1))}.cookie-manager .hover\\:border-blue-600:hover{--tw-border-opacity:1;border-color:rgb(37 99 235/var(--tw-border-opacity,1))}.cookie-manager .hover\\:bg-blue-600:hover{--tw-bg-opacity:1;background-color:rgb(37 99 235/var(--tw-bg-opacity,1))}.cookie-manager .hover\\:bg-gray-300:hover{--tw-bg-opacity:1;background-color:rgb(209 213 219/var(--tw-bg-opacity,1))}.cookie-manager .hover\\:bg-gray-600:hover{--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity,1))}.cookie-manager .hover\\:bg-gray-700:hover{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.cookie-manager .hover\\:text-blue-400:hover{--tw-text-opacity:1;color:rgb(96 165 250/var(--tw-text-opacity,1))}.cookie-manager .hover\\:text-blue-600:hover{--tw-text-opacity:1;color:rgb(37 99 235/var(--tw-text-opacity,1))}.cookie-manager .hover\\:text-gray-200:hover{--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity,1))}.cookie-manager .hover\\:text-gray-700:hover{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity,1))}.cookie-manager .hover\\:text-gray-900:hover{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity,1))}.cookie-manager .hover\\:text-white:hover{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.cookie-manager .focus\\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.cookie-manager .focus\\:outline-transparent:focus{outline-color:transparent}.cookie-manager .focus\\:ring-2:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.cookie-manager .focus\\:ring-blue-500:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(59 130 246/var(--tw-ring-opacity,1))}.cookie-manager .focus\\:ring-offset-2:focus{--tw-ring-offset-width:2px}.cookie-manager .focus-visible\\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.cookie-manager .focus-visible\\:outline-transparent:focus-visible{outline-color:transparent}.cookie-manager .peer:checked~.peer-checked\\:bg-blue-500{--tw-bg-opacity:1;background-color:rgb(59 130 246/var(--tw-bg-opacity,1))}.cookie-manager .peer:checked~.peer-checked\\:after\\:translate-x-full:after{content:var(--tw-content);--tw-translate-x:100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.cookie-manager .peer:focus~.peer-focus\\:ring-2{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.cookie-manager .peer:focus~.peer-focus\\:ring-blue-500{--tw-ring-opacity:1;--tw-ring-color:rgb(59 130 246/var(--tw-ring-opacity,1))}@media (min-width:640px){.cookie-manager .sm\\:w-auto{width:auto}.cookie-manager .sm\\:flex-row{flex-direction:row}.cookie-manager .sm\\:justify-end{justify-content:flex-end}.cookie-manager .sm\\:py-1\\.5{padding-top:.375rem;padding-bottom:.375rem}.cookie-manager .sm\\:text-left{text-align:left}.cookie-manager .sm\\:text-sm{font-size:.875rem;line-height:1.25rem}}@media (min-width:768px){.cookie-manager .md\\:max-w-2xl{max-width:42rem}}')),document.head.appendChild(e)}}catch(a){console.error("vite-plugin-css-injected-by-js",a)}}(); import { jsxs, jsx } from "react/jsx-runtime"; import React, { useMemo, useState, useEffect, useRef, useContext, createContext } from "react"; import { createPortal } from "react-dom"; const BUILT_INS = [ { id: "Analytics", titleKey: "manageAnalyticsTitle", descKey: "manageAnalyticsSubtitle" }, { id: "Social", titleKey: "manageSocialTitle", descKey: "manageSocialSubtitle" }, { id: "Advertising", titleKey: "manageAdvertTitle", descKey: "manageAdvertSubtitle" } ]; const BUILT_IN_IDS = BUILT_INS.map((b) => b.id); const isHidden = (cookieCategories, id) => cookieCategories ? cookieCategories[id] === false : false; const resolveCategories = (categories, cookieCategories, tFunction) => { const overrides = /* @__PURE__ */ new Map(); const customOrder = []; for (const def of categories || []) { overrides.set(def.id, def); if (!BUILT_IN_IDS.includes(def.id)) customOrder.push(def); } const resolved = []; for (const b of BUILT_INS) { if (isHidden(cookieCategories, b.id)) continue; const o = overrides.get(b.id); resolved.push({ id: b.id, title: (o == null ? void 0 : o.title) ?? tFunction(b.titleKey), description: (o == null ? void 0 : o.description) ?? tFunction(b.descKey), essential: (o == null ? void 0 : o.essential) ?? false, defaultConsent: (o == null ? void 0 : o.defaultConsent) ?? false, trackerDomains: (o == null ? void 0 : o.trackerDomains) ?? [], builtin: true }); } for (const c of customOrder) { if (isHidden(cookieCategories, c.id)) continue; resolved.push({ id: c.id, title: c.title ?? c.id, description: c.description ?? "", essential: c.essential ?? false, defaultConsent: c.defaultConsent ?? false, trackerDomains: c.trackerDomains ?? [], builtin: false }); } return resolved; }; const consentIdsFor = (resolved) => { const ids = [...BUILT_IN_IDS]; for (const c of resolved) { if (!c.builtin && !ids.includes(c.id)) ids.push(c.id); } return ids; }; const buildPrefs = (ids, consented) => { const prefs = {}; for (const id of ids) prefs[id] = consented; return prefs; }; const defaultPrefsFor = (resolved) => { const prefs = buildPrefs(BUILT_IN_IDS, false); for (const c of resolved) prefs[c.id] = c.defaultConsent; return prefs; }; const consentToPrefs = (consent) => { var _a; const prefs = {}; for (const id of Object.keys(consent)) { prefs[id] = ((_a = consent[id]) == null ? void 0 : _a.consented) ?? false; } return prefs; }; const customBlockedDomainsFor = (resolved, prefs) => { const out = []; for (const c of resolved) { if (c.essential || c.trackerDomains.length === 0) continue; const consented = prefs ? prefs[c.id] === true : false; if (!consented) out.push(...c.trackerDomains); } return out; }; function r(e) { var t, f, n = ""; if ("string" == typeof e || "number" == typeof e) n += e; else if ("object" == typeof e) if (Array.isArray(e)) { var o = e.length; for (t = 0; t < o; t++) e[t] && (f = r(e[t])) && (n && (n += " "), n += f); } else for (f in e) e[f] && (n && (n += " "), n += f); return n; } function clsx() { for (var e, t, f = 0, n = "", o = arguments.length; f < o; f++) (e = arguments[f]) && (t = r(e)) && (n && (n += " "), n += t); return n; } const CLASS_PART_SEPARATOR = "-"; const createClassGroupUtils = (config) => { const classMap = createClassMap(config); const { conflictingClassGroups, conflictingClassGroupModifiers } = config; const getClassGroupId = (className) => { const classParts = className.split(CLASS_PART_SEPARATOR); if (classParts[0] === "" && classParts.length !== 1) { classParts.shift(); } return getGroupRecursive(classParts, classMap) || getGroupIdForArbitraryProperty(className); }; const getConflictingClassGroupIds = (classGroupId, hasPostfixModifier) => { const conflicts = conflictingClassGroups[classGroupId] || []; if (hasPostfixModifier && conflictingClassGroupModifiers[classGroupId]) { return [...conflicts, ...conflictingClassGroupModifiers[classGroupId]]; } return conflicts; }; return { getClassGroupId, getConflictingClassGroupIds }; }; const getGroupRecursive = (classParts, classPartObject) => { var _a; if (classParts.length === 0) { return classPartObject.classGroupId; } const currentClassPart = classParts[0]; const nextClassPartObject = classPartObject.nextPart.get(currentClassPart); const classGroupFromNextClassPart = nextClassPartObject ? getGroupRecursive(classParts.slice(1), nextClassPartObject) : void 0; if (classGroupFromNextClassPart) { return classGroupFromNextClassPart; } if (classPartObject.validators.length === 0) { return void 0; } const classRest = classParts.join(CLASS_PART_SEPARATOR); return (_a = classPartObject.validators.find(({ validator }) => validator(classRest))) == null ? void 0 : _a.classGroupId; }; const arbitraryPropertyRegex = /^\[(.+)\]$/; const getGroupIdForArbitraryProperty = (className) => { if (arbitraryPropertyRegex.test(className)) { const arbitraryPropertyClassName = arbitraryPropertyRegex.exec(className)[1]; const property = arbitraryPropertyClassName == null ? void 0 : arbitraryPropertyClassName.substring(0, arbitraryPropertyClassName.indexOf(":")); if (property) { return "arbitrary.." + property; } } }; const createClassMap = (config) => { const { theme, classGroups } = config; const classMap = { nextPart: /* @__PURE__ */ new Map(), validators: [] }; for (const classGroupId in classGroups) { processClassesRecursively(classGroups[classGroupId], classMap, classGroupId, theme); } return classMap; }; const processClassesRecursively = (classGroup, classPartObject, classGroupId, theme) => { classGroup.forEach((classDefinition) => { if (typeof classDefinition === "string") { const classPartObjectToEdit = classDefinition === "" ? classPartObject : getPart(classPartObject, classDefinition); classPartObjectToEdit.classGroupId = classGroupId; return; } if (typeof classDefinition === "function") { if (isThemeGetter(classDefinition)) { processClassesRecursively(classDefinition(theme), classPartObject, classGroupId, theme); return; } classPartObject.validators.push({ validator: classDefinition, classGroupId }); return; } Object.entries(classDefinition).forEach(([key, classGroup2]) => { processClassesRecursively(classGroup2, getPart(classPartObject, key), classGroupId, theme); }); }); }; const getPart = (classPartObject, path) => { let currentClassPartObject = classPartObject; path.split(CLASS_PART_SEPARATOR).forEach((pathPart) => { if (!currentClassPartObject.nextPart.has(pathPart)) { currentClassPartObject.nextPart.set(pathPart, { nextPart: /* @__PURE__ */ new Map(), validators: [] }); } currentClassPartObject = currentClassPartObject.nextPart.get(pathPart); }); return currentClassPartObject; }; const isThemeGetter = (func) => func.isThemeGetter; const createLruCache = (maxCacheSize) => { if (maxCacheSize < 1) { return { get: () => void 0, set: () => { } }; } let cacheSize = 0; let cache = /* @__PURE__ */ new Map(); let previousCache = /* @__PURE__ */ new Map(); const update = (key, value) => { cache.set(key, value); cacheSize++; if (cacheSize > maxCacheSize) { cacheSize = 0; previousCache = cache; cache = /* @__PURE__ */ new Map(); } }; return { get(key) { let value = cache.get(key); if (value !== void 0) { return value; } if ((value = previousCache.get(key)) !== void 0) { update(key, value); return value; } }, set(key, value) { if (cache.has(key)) { cache.set(key, value); } else { update(key, value); } } }; }; const IMPORTANT_MODIFIER = "!"; const MODIFIER_SEPARATOR = ":"; const MODIFIER_SEPARATOR_LENGTH = MODIFIER_SEPARATOR.length; const createParseClassName = (config) => { const { prefix, experimentalParseClassName } = config; let parseClassName = (className) => { const modifiers = []; let bracketDepth = 0; let parenDepth = 0; let modifierStart = 0; let postfixModifierPosition; for (let index = 0; index < className.length; index++) { let currentCharacter = className[index]; if (bracketDepth === 0 && parenDepth === 0) { if (currentCharacter === MODIFIER_SEPARATOR) { modifiers.push(className.slice(modifierStart, index)); modifierStart = index + MODIFIER_SEPARATOR_LENGTH; continue; } if (currentCharacter === "/") { postfixModifierPosition = index; continue; } } if (currentCharacter === "[") { bracketDepth++; } else if (currentCharacter === "]") { bracketDepth--; } else if (currentCharacter === "(") { parenDepth++; } else if (currentCharacter === ")") { parenDepth--; } } const baseClassNameWithImportantModifier = modifiers.length === 0 ? className : className.substring(modifierStart); const baseClassName = stripImportantModifier(baseClassNameWithImportantModifier); const hasImportantModifier = baseClassName !== baseClassNameWithImportantModifier; const maybePostfixModifierPosition = postfixModifierPosition && postfixModifierPosition > modifierStart ? postfixModifierPosition - modifierStart : void 0; return { modifiers, hasImportantModifier, baseClassName, maybePostfixModifierPosition }; }; if (prefix) { const fullPrefix = prefix + MODIFIER_SEPARATOR; const parseClassNameOriginal = parseClassName; parseClassName = (className) => className.startsWith(fullPrefix) ? parseClassNameOriginal(className.substring(fullPrefix.length)) : { isExternal: true, modifiers: [], hasImportantModifier: false, baseClassName: className, maybePostfixModifierPosition: void 0 }; } if (experimentalParseClassName) { const parseClassNameOriginal = parseClassName; parseClassName = (className) => experimentalParseClassName({ className, parseClassName: parseClassNameOriginal }); } return parseClassName; }; const stripImportantModifier = (baseClassName) => { if (baseClassName.endsWith(IMPORTANT_MODIFIER)) { return baseClassName.substring(0, baseClassName.length - 1); } if (baseClassName.startsWith(IMPORTANT_MODIFIER)) { return baseClassName.substring(1); } return baseClassName; }; const createSortModifiers = (config) => { const orderSensitiveModifiers = Object.fromEntries(config.orderSensitiveModifiers.map((modifier) => [modifier, true])); const sortModifiers = (modifiers) => { if (modifiers.length <= 1) { return modifiers; } const sortedModifiers = []; let unsortedModifiers = []; modifiers.forEach((modifier) => { const isPositionSensitive = modifier[0] === "[" || orderSensitiveModifiers[modifier]; if (isPositionSensitive) { sortedModifiers.push(...unsortedModifiers.sort(), modifier); unsortedModifiers = []; } else { unsortedModifiers.push(modifier); } }); sortedModifiers.push(...unsortedModifiers.sort()); return sortedModifiers; }; return sortModifiers; }; const createConfigUtils = (config) => ({ cache: createLruCache(config.cacheSize), parseClassName: createParseClassName(config), sortModifiers: createSortModifiers(config), ...createClassGroupUtils(config) }); const SPLIT_CLASSES_REGEX = /\s+/; const mergeClassList = (classList, configUtils) => { const { parseClassName, getClassGroupId, getConflictingClassGroupIds, sortModifiers } = configUtils; const classGroupsInConflict = []; const classNames = classList.trim().split(SPLIT_CLASSES_REGEX); let result = ""; for (let index = classNames.length - 1; index >= 0; index -= 1) { const originalClassName = classNames[index]; const { isExternal, modifiers, hasImportantModifier, baseClassName, maybePostfixModifierPosition } = parseClassName(originalClassName); if (isExternal) { result = originalClassName + (result.length > 0 ? " " + result : result); continue; } let hasPostfixModifier = !!maybePostfixModifierPosition; let classGroupId = getClassGroupId(hasPostfixModifier ? baseClassName.substring(0, maybePostfixModifierPosition) : baseClassName); if (!classGroupId) { if (!hasPostfixModifier) { result = originalClassName + (result.length > 0 ? " " + result : result); continue; } classGroupId = getClassGroupId(baseClassName); if (!classGroupId) { result = originalClassName + (result.length > 0 ? " " + result : result); continue; } hasPostfixModifier = false; } const variantModifier = sortModifiers(modifiers).join(":"); const modifierId = hasImportantModifier ? variantModifier + IMPORTANT_MODIFIER : variantModifier; const classId = modifierId + classGroupId; if (classGroupsInConflict.includes(classId)) { continue; } classGroupsInConflict.push(classId); const conflictGroups = getConflictingClassGroupIds(classGroupId, hasPostfixModifier); for (let i = 0; i < conflictGroups.length; ++i) { const group = conflictGroups[i]; classGroupsInConflict.push(modifierId + group); } result = originalClassName + (result.length > 0 ? " " + result : result); } return result; }; function twJoin() { let index = 0; let argument; let resolvedValue; let string = ""; while (index < arguments.length) { if (argument = arguments[index++]) { if (resolvedValue = toValue(argument)) { string && (string += " "); string += resolvedValue; } } } return string; } const toValue = (mix) => { if (typeof mix === "string") { return mix; } let resolvedValue; let string = ""; for (let k = 0; k < mix.length; k++) { if (mix[k]) { if (resolvedValue = toValue(mix[k])) { string && (string += " "); string += resolvedValue; } } } return string; }; function createTailwindMerge(createConfigFirst, ...createConfigRest) { let configUtils; let cacheGet; let cacheSet; let functionToCall = initTailwindMerge; function initTailwindMerge(classList) { const config = createConfigRest.reduce((previousConfig, createConfigCurrent) => createConfigCurrent(previousConfig), createConfigFirst()); configUtils = createConfigUtils(config); cacheGet = configUtils.cache.get; cacheSet = configUtils.cache.set; functionToCall = tailwindMerge; return tailwindMerge(classList); } function tailwindMerge(classList) { const cachedResult = cacheGet(classList); if (cachedResult) { return cachedResult; } const result = mergeClassList(classList, configUtils); cacheSet(classList, result); return result; } return function callTailwindMerge() { return functionToCall(twJoin.apply(null, arguments)); }; } const fromTheme = (key) => { const themeGetter = (theme) => theme[key] || []; themeGetter.isThemeGetter = true; return themeGetter; }; const arbitraryValueRegex = /^\[(?:(\w[\w-]*):)?(.+)\]$/i; const arbitraryVariableRegex = /^\((?:(\w[\w-]*):)?(.+)\)$/i; const fractionRegex = /^\d+\/\d+$/; const tshirtUnitRegex = /^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/; const lengthUnitRegex = /\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/; const colorFunctionRegex = /^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/; const shadowRegex = /^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/; const imageRegex = /^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/; const isFraction = (value) => fractionRegex.test(value); const isNumber = (value) => !!value && !Number.isNaN(Number(value)); const isInteger = (value) => !!value && Number.isInteger(Number(value)); const isPercent = (value) => value.endsWith("%") && isNumber(value.slice(0, -1)); const isTshirtSize = (value) => tshirtUnitRegex.test(value); const isAny = () => true; const isLengthOnly = (value) => ( // `colorFunctionRegex` check is necessary because color functions can have percentages in them which which would be incorrectly classified as lengths. // For example, `hsl(0 0% 0%)` would be classified as a length without this check. // I could also use lookbehind assertion in `lengthUnitRegex` but that isn't supported widely enough. lengthUnitRegex.test(value) && !colorFunctionRegex.test(value) ); const isNever = () => false; const isShadow = (value) => shadowRegex.test(value); const isImage = (value) => imageRegex.test(value); const isAnyNonArbitrary = (value) => !isArbitraryValue(value) && !isArbitraryVariable(value); const isArbitrarySize = (value) => getIsArbitraryValue(value, isLabelSize, isNever); const isArbitraryValue = (value) => arbitraryValueRegex.test(value); const isArbitraryLength = (value) => getIsArbitraryValue(value, isLabelLength, isLengthOnly); const isArbitraryNumber = (value) => getIsArbitraryValue(value, isLabelNumber, isNumber); const isArbitraryPosition = (value) => getIsArbitraryValue(value, isLabelPosition, isNever); const isArbitraryImage = (value) => getIsArbitraryValue(value, isLabelImage, isImage); const isArbitraryShadow = (value) => getIsArbitraryValue(value, isLabelShadow, isShadow); const isArbitraryVariable = (value) => arbitraryVariableRegex.test(value); const isArbitraryVariableLength = (value) => getIsArbitraryVariable(value, isLabelLength); const isArbitraryVariableFamilyName = (value) => getIsArbitraryVariable(value, isLabelFamilyName); const isArbitraryVariablePosition = (value) => getIsArbitraryVariable(value, isLabelPosition); const isArbitraryVariableSize = (value) => getIsArbitraryVariable(value, isLabelSize); const isArbitraryVariableImage = (value) => getIsArbitraryVariable(value, isLabelImage); const isArbitraryVariableShadow = (value) => getIsArbitraryVariable(value, isLabelShadow, true); const getIsArbitraryValue = (value, testLabel, testValue) => { const result = arbitraryValueRegex.exec(value); if (result) { if (result[1]) { return testLabel(result[1]); } return testValue(result[2]); } return false; }; const getIsArbitraryVariable = (value, testLabel, shouldMatchNoLabel = false) => { const result = arbitraryVariableRegex.exec(value); if (result) { if (result[1]) { return testLabel(result[1]); } return shouldMatchNoLabel; } return false; }; const isLabelPosition = (label) => label === "position" || label === "percentage"; const isLabelImage = (label) => label === "image" || label === "url"; const isLabelSize = (label) => label === "length" || label === "size" || label === "bg-size"; const isLabelLength = (label) => label === "length"; const isLabelNumber = (label) => label === "number"; const isLabelFamilyName = (label) => label === "family-name"; const isLabelShadow = (label) => label === "shadow"; const getDefaultConfig = () => { const themeColor = fromTheme("color"); const themeFont = fromTheme("font"); const themeText = fromTheme("text"); const themeFontWeight = fromTheme("font-weight"); const themeTracking = fromTheme("tracking"); const themeLeading = fromTheme("leading"); const themeBreakpoint = fromTheme("breakpoint"); const themeContainer = fromTheme("container"); const themeSpacing = fromTheme("spacing"); const themeRadius = fromTheme("radius"); const themeShadow = fromTheme("shadow"); const themeInsetShadow = fromTheme("inset-shadow"); const themeTextShadow = fromTheme("text-shadow"); const themeDropShadow = fromTheme("drop-shadow"); const themeBlur = fromTheme("blur"); const themePerspective = fromTheme("perspective"); const themeAspect = fromTheme("aspect"); const themeEase = fromTheme("ease"); const themeAnimate = fromTheme("animate"); const scaleBreak = () => ["auto", "avoid", "all", "avoid-page", "page", "left", "right", "column"]; const scalePosition = () => [ "center", "top", "bottom", "left", "right", "top-left", // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378 "left-top", "top-right", // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378 "right-top", "bottom-right", // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378 "right-bottom", "bottom-left", // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378 "left-bottom" ]; const scalePositionWithArbitrary = () => [...scalePosition(), isArbitraryVariable, isArbitraryValue]; const scaleOverflow = () => ["auto", "hidden", "clip", "visible", "scroll"]; const scaleOverscroll = () => ["auto", "contain", "none"]; const scaleUnambiguousSpacing = () => [isArbitraryVariable, isArbitraryValue, themeSpacing]; const scaleInset = () => [isFraction, "full", "auto", ...scaleUnambiguousSpacing()]; const scaleGridTemplateColsRows = () => [isInteger, "none", "subgrid", isArbitraryVariable, isArbitraryValue]; const scaleGridColRowStartAndEnd = () => ["auto", { span: ["full", isInteger, isArbitraryVariable, isArbitraryValue] }, isInteger, isArbitraryVariable, isArbitraryValue]; const scaleGridColRowStartOrEnd = () => [isInteger, "auto", isArbitraryVariable, isArbitraryValue]; const scaleGridAutoColsRows = () => ["auto", "min", "max", "fr", isArbitraryVariable, isArbitraryValue]; const scaleAlignPrimaryAxis = () => ["start", "end", "center", "between", "around", "evenly", "stretch", "baseline", "center-safe", "end-safe"]; const scaleAlignSecondaryAxis = () => ["start", "end", "center", "stretch", "center-safe", "end-safe"]; const scaleMargin = () => ["auto", ...scaleUnambiguousSpacing()]; const scaleSizing = () => [isFraction, "auto", "full", "dvw", "dvh", "lvw", "lvh", "svw", "svh", "min", "max", "fit", ...scaleUnambiguousSpacing()]; const scaleColor = () => [themeColor, isArbitraryVariable, isArbitraryValue]; const scaleBgPosition = () => [...scalePosition(), isArbitraryVariablePosition, isArbitraryPosition, { position: [isArbitraryVariable, isArbitraryValue] }]; const scaleBgRepeat = () => ["no-repeat", { repeat: ["", "x", "y", "space", "round"] }]; const scaleBgSize = () => ["auto", "cover", "contain", isArbitraryVariableSize, isArbitrarySize, { size: [isArbitraryVariable, isArbitraryValue] }]; const scaleGradientStopPosition = () => [isPercent, isArbitraryVariableLength, isArbitraryLength]; const scaleRadius = () => [ // Deprecated since Tailwind CSS v4.0.0 "", "none", "full", themeRadius, isArbitraryVariable, isArbitraryValue ]; const scaleBorderWidth = () => ["", isNumber, isArbitraryVariableLength, isArbitraryLength]; const scaleLineStyle = () => ["solid", "dashed", "dotted", "double"]; const scaleBlendMode = () => ["normal", "multiply", "screen", "overlay", "darken", "lighten", "color-dodge", "color-burn", "hard-light", "soft-light", "difference", "exclusion", "hue", "saturation", "color", "luminosity"]; const scaleMaskImagePosition = () => [isNumber, isPercent, isArbitraryVariablePosition, isArbitraryPosition]; const scaleBlur = () => [ // Deprecated since Tailwind CSS v4.0.0 "", "none", themeBlur, isArbitraryVariable, isArbitraryValue ]; const scaleRotate = () => ["none", isNumber, isArbitraryVariable, isArbitraryValue]; const scaleScale = () => ["none", isNumber, isArbitraryVariable, isArbitraryValue]; const scaleSkew = () => [isNumber, isArbitraryVariable, isArbitraryValue]; const scaleTranslate = () => [isFraction, "full", ...scaleUnambiguousSpacing()]; return { cacheSize: 500, theme: { animate: ["spin", "ping", "pulse", "bounce"], aspect: ["video"], blur: [isTshirtSize], breakpoint: [isTshirtSize], color: [isAny], container: [isTshirtSize], "drop-shadow": [isTshirtSize], ease: ["in", "out", "in-out"], font: [isAnyNonArbitrary], "font-weight": ["thin", "extralight", "light", "normal", "medium", "semibold", "bold", "extrabold", "black"], "inset-shadow": [isTshirtSize], leading: ["none", "tight", "snug", "normal", "relaxed", "loose"], perspective: ["dramatic", "near", "normal", "midrange", "distant", "none"], radius: [isTshirtSize], shadow: [isTshirtSize], spacing: ["px", isNumber], text: [isTshirtSize], "text-shadow": [isTshirtSize], tracking: ["tighter", "tight", "normal", "wide", "wider", "widest"] }, classGroups: { // -------------- // --- Layout --- // -------------- /** * Aspect Ratio * @see https://tailwindcss.com/docs/aspect-ratio */ aspect: [{ aspect: ["auto", "square", isFraction, isArbitraryValue, isArbitraryVariable, themeAspect] }], /** * Container * @see https://tailwindcss.com/docs/container * @deprecated since Tailwind CSS v4.0.0 */ container: ["container"], /** * Columns * @see https://tailwindcss.com/docs/columns */ columns: [{ columns: [isNumber, isArbitraryValue, isArbitraryVariable, themeContainer] }], /** * Break After * @see https://tailwindcss.com/docs/break-after */ "break-after": [{ "break-after": scaleBreak() }], /** * Break Before * @see https://tailwindcss.com/docs/break-before */ "break-before": [{ "break-before": scaleBreak() }], /** * Break Inside * @see https://tailwindcss.com/docs/break-inside */ "break-inside": [{ "break-inside": ["auto", "avoid", "avoid-page", "avoid-column"] }], /** * Box Decoration Break * @see https://tailwindcss.com/docs/box-decoration-break */ "box-decoration": [{ "box-decoration": ["slice", "clone"] }], /** * Box Sizing * @see https://tailwindcss.com/docs/box-sizing */ box: [{ box: ["border", "content"] }], /** * Display * @see https://tailwindcss.com/docs/display */ display: ["block", "inline-block", "inline", "flex", "inline-flex", "table", "inline-table", "table-caption", "table-cell", "table-column", "table-column-group", "table-footer-group", "table-header-group", "table-row-group", "table-row", "flow-root", "grid", "inline-grid", "contents", "list-item", "hidden"], /** * Screen Reader Only * @see https://tailwindcss.com/docs/display#screen-reader-only */ sr: ["sr-only", "not-sr-only"], /** * Floats * @see https://tailwindcss.com/