@khipu/design-system 0.3.4 → 0.3.5-alpha.2
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/beercss/khipu-beercss.css +62 -17
- package/dist/beercss/khipu-beercss.js +62 -0
- package/dist/beercss/khipu-beercss.min.css +1 -1
- package/dist/beercss/khipu-beercss.min.js +1 -1
- package/dist/beercss/khipu-beercss.scoped.css +62 -17
- package/dist/beercss/khipu-beercss.scoped.min.css +1 -1
- package/dist/beercss/metadata.json +5 -5
- package/dist/index.js +213 -147
- package/dist/index.mjs +83 -17
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
const _emptyNodeList=[],_weakElements=new WeakSet,isChrome=navigator.userAgent.includes("Chrome");navigator.userAgent.includes("Firefox"),navigator.userAgent.includes("Safari"),navigator.userAgent.includes("Windows");const isMac=navigator.userAgent.includes("Macintosh");navigator.userAgent.includes("Linux"),navigator.userAgent.includes("Android");const isIOS=/iPad|iPhone|iPod/.test(navigator.userAgent);function isDark(){return null==window?void 0:window.matchMedia("(prefers-color-scheme: dark)").matches}async function wait(e){await new Promise(t=>setTimeout(t,e))}function guid(){return"fxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{const t=16*Math.random()|0;return("x"===e?t:3&t|8).toString(16)})}function query(e,t){try{return"string"==typeof e?(t??document).querySelector(e):e}catch{return null}}function queryAll(e,t){try{return"string"==typeof e?(t??document).querySelectorAll(e):e??_emptyNodeList}catch{return _emptyNodeList}}function hasClass(e,t){return(null==e?void 0:e.classList.contains(t))??!1}function hasTag(e,t){var n;return(null==(n=null==e?void 0:e.tagName)?void 0:n.toLowerCase())===t}function hasType(e,t){var n;return(null==(n=null==e?void 0:e.type)?void 0:n.toLowerCase())===t}function addClass(e,t){if(e instanceof NodeList)for(let n=0;n<e.length;n++)e[n].classList.add(t);else null==e||e.classList.add(t)}function removeClass(e,t){if(e instanceof NodeList)for(let n=0;n<e.length;n++)e[n].classList.remove(t);else null==e||e.classList.remove(t)}function on(e,t,n,a=!0){(null==e?void 0:e.addEventListener)&&e.addEventListener(t,n,a)}function onWeak(e,t,n,a=!0){addWeakElement(e),on(e,t,n,a)}function off(e,t,n,a=!0){(null==e?void 0:e.removeEventListener)&&e.removeEventListener(t,n,a)}function insertBefore(e,t){var n;null==(n=null==t?void 0:t.parentNode)||n.insertBefore(e,t)}function prev(e){return null==e?void 0:e.previousElementSibling}function next(e){return null==e?void 0:e.nextElementSibling}function parent(e){return null==e?void 0:e.parentElement}function create(e){const t=document.createElement("div");for(let n=0,a=Object.keys(e),o=a.length;n<o;n++){const o=a[n],i=e[o];t.setAttribute(o,i)}return t}function blurActiveElement(){var e;null==(e=document.activeElement)||e.blur()}function queryAllDataUi(e){return queryAll('[data-ui="#'+e+'"]')}function queryDataUi(e){return query('[data-ui="#'+e+'"]')}function updateAllClickable(e){e.id&&hasClass(e,"page")&&(e=queryDataUi(e.id)??e);const t=parent(e);if(!hasClass(t,"tabs")&&!hasClass(t,"tabbed")&&!hasTag(t,"nav"))return;const n=queryAll("a",t);for(let e=0;e<n.length;e++)removeClass(n[e],"active");hasTag(e,"button")||hasClass(e,"button")||hasClass(e,"chip")||addClass(e,"active")}function addWeakElement(e){_weakElements.has(e)||_weakElements.add(e)}function rootSizeInPixels(){const e=getComputedStyle(document.documentElement).getPropertyValue("--size")||"16px";return e.includes("%")?16*parseInt(e)/100:e.includes("em")?16*parseInt(e):parseInt(e)}function updatePlaceholder(e){e.placeholder||(e.placeholder=" ")}function onClickLabel(e){const t=query("input:not([type=file], [type=checkbox], [type=radio]), select, textarea",parent(e.currentTarget));t&&t.focus()}function onFocusInput(e){updateInput(e.currentTarget)}function onBlurInput(e){updateInput(e.currentTarget)}function onChangeFile(e){updateFile(e.currentTarget)}function onChangeColor(e){updateColor(e.currentTarget)}function onKeydownFile(e){updateFile(e.currentTarget,e)}function onKeydownColor(e){updateColor(e.currentTarget,e)}function onPasswordIconClick(e){var t;const n=e.currentTarget,a=query("input",parent(n));a&&(null==(t=n.textContent)?void 0:t.includes("visibility"))&&("password"===a.type?(a.type="text",n.textContent="visibility_off"):(a.type="password",n.textContent="visibility"))}function onInputTextarea(e){updateTextarea(e.currentTarget)}function updateAllLabels(){const e=queryAll(".field > label");for(let t=0;t<e.length;t++)onWeak(e[t],"click",onClickLabel)}function updateAllInputs(){const e=queryAll(".field > input:not([type=file], [type=color], [type=range])");for(let t=0;t<e.length;t++)onWeak(e[t],"focus",onFocusInput),onWeak(e[t],"blur",onBlurInput),updateInput(e[t])}function updateAllSelects(){const e=queryAll(".field > select");for(let t=0;t<e.length;t++)onWeak(e[t],"focus",onFocusInput),onWeak(e[t],"blur",onBlurInput)}function updateAllFiles(){const e=queryAll(".field > input[type=file]");for(let t=0;t<e.length;t++)onWeak(e[t],"change",onChangeFile),updateFile(e[t])}function updateAllColors(){const e=queryAll(".field > input[type=color]");for(let t=0;t<e.length;t++)onWeak(e[t],"change",onChangeColor),updateColor(e[t])}function updateAllTextareas(){const e=queryAll(".field > textarea");for(let t=0;t<e.length;t++)onWeak(e[t],"focus",onFocusInput),onWeak(e[t],"blur",onBlurInput),updatePlaceholder(e[t]),(!isChrome||isMac||isIOS)&&(onWeak(e[t],"input",onInputTextarea),updateTextarea(e[t]))}function updateAllPasswordIcons(){const e=queryAll(".field:has(> input[type=password]) > i, a");for(let t=0;t<e.length;t++)onWeak(e[t],"click",onPasswordIconClick)}function updateInput(e){hasType(e,"number")&&!e.value&&(e.value=""),updatePlaceholder(e)}function updateFile(e,t){if("Enter"===(null==t?void 0:t.key)){const t=prev(e);if(!hasType(t,"file"))return;return void t.click()}const n=next(e);hasType(n,"text")&&(n.value=e.files?Array.from(e.files).map(e=>e.name).join(", "):"",n.readOnly=!0,onWeak(n,"keydown",onKeydownFile,!1),updateInput(n))}function updateColor(e,t){if("Enter"===(null==t?void 0:t.key)){const t=prev(e);if(!hasType(t,"color"))return;return void t.click()}const n=next(e);hasType(n,"text")&&(n.readOnly=!0,n.value=e.value,onWeak(n,"keydown",onKeydownColor,!1),updateInput(n))}function updateTextarea(e){if(updatePlaceholder(e),e.hasAttribute("rows"))return;const t=rootSizeInPixels();e.style.blockSize="auto",e.style.blockSize=e.scrollHeight-t+"px"}function updateAllFields(){updateAllLabels(),updateAllInputs(),updateAllSelects(),updateAllFiles(),updateAllColors(),updateAllTextareas(),updateAllPasswordIcons()}function onInputDocument$1(e){const t=e.target;(hasTag(t,"input")||hasTag(t,"select"))&&("range"===t.type?(t.focus(),updateRange(t)):updateAllRanges())}function onChangeInput(e){if(!window.matchMedia("(pointer: coarse)").matches)return;e.target.blur()}function updateAllRanges(){const e=document.body,t=queryAll(".slider > input[type=range]");t.length?on(e,"input",onInputDocument$1,!1):off(e,"input",onInputDocument$1,!1);for(let e=0;e<t.length;e++)updateRange(t[e])}function updateRange(e){onWeak(e,"change",onChangeInput);const t=parent(e),n=query("span",t),a=queryAll("input",t);if(!a.length||!n)return;const o=rootSizeInPixels(),i=hasClass(t,"max")?0:.25*o*100/a[0].offsetWidth,r=[],s=[];for(let e=0,t=a.length;e<t;e++){const t=parseFloat(a[e].min)||0,n=parseFloat(a[e].max)||100,o=parseFloat(a[e].value)||0,l=100*(o-t)/(n-t),c=i/2-i*l/100;r.push(l+c),s.push(o)}let l=r[0],c=0,u=100-c-l,d=s[0],p=s[1]||0;a.length>1&&(l=Math.abs(r[1]-r[0]),c=r[1]>r[0]?r[0]:r[1],u=100-c-l,p>d&&(d=s[1]||0,p=s[0])),requestAnimationFrame(()=>t.style.cssText=`--_start: ${c}%; --_end: ${u}%; --_value1: '${d}'; --_value2: '${p}';`)}function updateAllSliders(){updateAllRanges()}const _lastTheme={light:"",dark:""};function getMode(){var e;return(null==(e=null==document?void 0:document.body)?void 0:e.classList.contains("dark"))?"dark":"light"}function lastTheme(){if(_lastTheme.light&&_lastTheme.dark)return _lastTheme;const e=document.body,t=document.createElement("body");t.className="light",e.appendChild(t);const n=document.createElement("body");n.className="dark",e.appendChild(n);const a=getComputedStyle(t),o=getComputedStyle(n),i=["--primary","--on-primary","--primary-container","--on-primary-container","--secondary","--on-secondary","--secondary-container","--on-secondary-container","--tertiary","--on-tertiary","--tertiary-container","--on-tertiary-container","--error","--on-error","--error-container","--on-error-container","--background","--on-background","--surface","--on-surface","--surface-variant","--on-surface-variant","--outline","--outline-variant","--shadow","--scrim","--inverse-surface","--inverse-on-surface","--inverse-primary","--surface-dim","--surface-bright","--surface-container-lowest","--surface-container-low","--surface-container","--surface-container-high","--surface-container-highest"];for(let e=0,t=i.length;e<t;e++)_lastTheme.light+=i[e]+":"+a.getPropertyValue(i[e])+";",_lastTheme.dark+=i[e]+":"+o.getPropertyValue(i[e])+";";return e.removeChild(t),e.removeChild(n),_lastTheme}async function updateTheme(e){const t=globalThis,n=document.body;return e&&t.materialDynamicColors?e.light&&e.dark?(_lastTheme.light=e.light,_lastTheme.dark=e.dark,n.setAttribute("style",e[getMode()]),e):t.materialDynamicColors(e).then(e=>{const t=e=>{let t="";for(let n=0,a=Object.keys(e),o=a.length;n<o;n++){const o=a[n],i=e[o];t+="--"+o.replace(/([a-z0-9]|(?=[A-Z]))([A-Z])/g,"$1-$2").toLowerCase()+":"+i+";"}return t};return _lastTheme.light=t(e.light),_lastTheme.dark=t(e.dark),n.setAttribute("style",_lastTheme[getMode()]),_lastTheme}):lastTheme()}function updateMode(e){const t=globalThis,n=document.body;if(!n)return e;if(!e)return getMode();"auto"===e&&(e=isDark()?"dark":"light"),n.classList.remove("light","dark"),n.classList.add(e);const a="light"===e?_lastTheme.light:_lastTheme.dark;return t.materialDynamicColors&&n.setAttribute("style",a),getMode()}const _dialogs=[];function onKeydownDialog(e){if("Escape"===e.key){const t=e.currentTarget;updateDialog(t,t)}}function focusOnDialogOrElement(e){(query("[autofocus]",e)??e).focus()}function closeDialog(e,t){removeClass(queryAllDataUi(e.id),"active"),removeClass(e,"active"),removeClass(t,"active"),e.close(),_dialogs.pop();const n=_dialogs[_dialogs.length-1];n&&n.focus()}async function openDialog(e,t,n,a){hasTag(a,"button")||hasClass(a,"button")||hasClass(a,"chip")||addClass(a,"active"),addClass(t,"active"),addClass(e,"active"),n?e.showModal():e.show(),await wait(90),n||on(e,"keydown",onKeydownDialog,!1),_dialogs.push(e),focusOnDialogOrElement(e)}function onClickOverlay(e){const t=e.currentTarget,n=next(t);hasTag(n,"dialog")&&closeDialog(n,t)}async function updateDialog(e,t){blurActiveElement();let n=prev(t);const a=hasClass(t,"active")||t.open,o=hasClass(t,"modal");o||off(t,"keydown",onKeydownDialog,!1),hasClass(n,"overlay")||(n=create({class:"overlay"}),insertBefore(n,t),await wait(90)),o||onWeak(n,"click",onClickOverlay,!1),a?closeDialog(t,n):openDialog(t,n,o,e)}let _timeoutMenu,_timeoutSnackbar;function onClickDocument(e){off(document.body,"click",onClickDocument);const t=e.target,n=queryAll("menu.active");for(let a=0;a<n.length;a++)updateMenu(t,n[a],e)}function focusOnMenuOrInput(e){setTimeout(()=>{const t=query(".field > input",e);t?t.focus():e.focus()},90)}function updateMenu(e,t,n){_timeoutMenu&&clearTimeout(_timeoutMenu),_timeoutMenu=setTimeout(()=>{on(document.body,"click",onClickDocument),hasTag(document.activeElement,"input")||blurActiveElement();const a=hasClass(t,"active"),o=(null==n?void 0:n.target)===e,i=!!e.closest("menu");!a&&i||a&&o?removeClass(t,"active"):(removeClass(queryAll("menu.active"),"active"),addClass(t,"active"),focusOnMenuOrInput(t))},90)}function onClickSnackbar(e){removeClass(e.currentTarget,"active"),_timeoutSnackbar&&clearTimeout(_timeoutSnackbar)}function updateSnackbar(e,t){blurActiveElement();const n=queryAll(".snackbar.active");for(let e=0;e<n.length;e++)removeClass(n[e],"active");addClass(e,"active"),onWeak(e,"click",onClickSnackbar),_timeoutSnackbar&&clearTimeout(_timeoutSnackbar),-1!==t&&(_timeoutSnackbar=setTimeout(()=>{removeClass(e,"active")},t??6e3))}function updatePage(e){const t=parent(e);t&&removeClass(queryAll(":scope > .page",t),"active"),addClass(e,"active")}function onMousedownRipple(e){updateRipple(e)}function onKeydownRipple(e){" "===(null==e?void 0:e.key)&&updateRipple(e)}function updateRipple(e){const t=e instanceof MouseEvent,n=e.currentTarget,a=n.getBoundingClientRect(),o=Math.max(a.width,a.height),i=o/2,r=t?e.clientX-a.left-i:a.width/2-i,s=t?e.clientY-a.top-i:a.height/2-i,l=document.createElement("div");l.className="ripple-js";const c=document.createElement("div");c.style.inlineSize=c.style.blockSize=`${o}px`,c.style.left=`${r}px`,c.style.top=`${s}px`,onWeak(c,"animationend",()=>{l.remove()}),l.appendChild(c),n.appendChild(l)}function updateAllRipples(){const e=queryAll(".slow-ripple, .ripple, .fast-ripple");for(let t=0;t<e.length;t++)onWeak(e[t],"mousedown",onMousedownRipple),onWeak(e[t],"keydown",onKeydownRipple)}function onInputDocument(e){const t=e.target;hasTag(t,"progress")?updateProgress(t):updateAllProgress()}function updateProgress(e){requestAnimationFrame(()=>{if(e.hasAttribute("value")||e.hasAttribute("max"))e.style.setProperty("--_value",String(e.value));else{const t=hasClass(e,"circle")?"50":"100";e.style.setProperty("--_value",t),e.setAttribute("value",t),e.setAttribute("max","100"),e.classList.add("indeterminate")}})}function updateAllProgress(){if(isChrome&&!isMac&&!isIOS)return;const e=document.body,t=queryAll("progress");t.length?on(e,"input",onInputDocument,!1):off(e,"input",onInputDocument,!1);for(let e=0;e<t.length;e++)updateProgress(t[e])}const _context=globalThis;let _timeoutMutation,_mutation;function onMutation(){_timeoutMutation&&clearTimeout(_timeoutMutation),_timeoutMutation=setTimeout(async()=>await _ui(),180)}async function run(e,t,n,a){if(t||(t=query(e.getAttribute("data-ui"))))if(updateAllClickable(e),hasTag(t,"dialog"))requestAnimationFrame(()=>updateDialog(e,t));else if(hasTag(t,"menu"))requestAnimationFrame(()=>updateMenu(e,t,a));else if(hasClass(t,"snackbar"))requestAnimationFrame(()=>updateSnackbar(t,n));else{if(!hasClass(t,"page"))return hasClass(t,"active")?(removeClass(e,"active"),void removeClass(t,"active")):void addClass(t,"active");requestAnimationFrame(()=>updatePage(t))}else e.classList.toggle("active")}function onClickElement(e){run(e.currentTarget,null,null,e)}function onKeydownElement(e){"Enter"===e.key&&run(e.currentTarget,null,null,e)}function setup(){_context.ui||_mutation||!_context.MutationObserver||(_mutation=new MutationObserver(onMutation),_mutation.observe(document.body,{childList:!0,subtree:!0}),onMutation())}function updateAllDataUis(){const e=queryAll("[data-ui]");for(let t=0,n=e.length;t<n;t++)onWeak(e[t],"click",onClickElement),hasTag(e[t],"a")&&!e[t].getAttribute("href")&&onWeak(e[t],"keydown",onKeydownElement)}function _ui(e,t){if(e){if("setup"===e)return void setup();if("guid"===e)return guid();if("mode"===e)return updateMode(t);if("theme"===e)return updateTheme(t);const n=query(e);if(!n)return;run(n,n,t)}updateAllDataUis(),updateAllFields(),updateAllRipples(),updateAllSliders(),updateAllProgress()}function start(){var e;if(_context.ui)return;const t=null==(e=_context.document)?void 0:e.body;!t||t.classList.contains("dark")||t.classList.contains("light")||updateMode("auto"),setup(),_context.ui=_ui}start();const ui=_context.ui;!function(e){"use strict";const t={init:function(e={}){const t={sidebarSelector:e.sidebarSelector||".kds-sidebar"},n=document.querySelector(t.sidebarSelector);n?(!function(e){if(!e)return;const t=e.querySelector(".kds-sidebar-header"),n=e.querySelector(".kds-sidebar-header-dropdown");if(!t||!n)return;t.addEventListener("click",function(e){e.stopPropagation(),n.classList.toggle("kds-dropdown-open");const a=t.querySelector(".kds-sidebar-dropdown-icon");a&&(a.style.transform=n.classList.contains("kds-dropdown-open")?"rotate(180deg)":"rotate(0deg)")}),document.addEventListener("click",function(a){if(!e.contains(a.target)){n.classList.remove("kds-dropdown-open");const e=t.querySelector(".kds-sidebar-dropdown-icon");e&&(e.style.transform="rotate(0deg)")}}),n.querySelectorAll("a").forEach(e=>{e.addEventListener("click",function(){n.classList.remove("kds-dropdown-open");const e=t.querySelector(".kds-sidebar-dropdown-icon");e&&(e.style.transform="rotate(0deg)")})})}(n),function(e){if(!e)return;const t=e.querySelectorAll(".kds-sidebar-nav-item");t.forEach(n=>{n.addEventListener("click",function(n){"#"===this.getAttribute("href")&&n.preventDefault(),t.forEach(e=>{e.classList.remove("active")}),this.classList.add("active");const a=new CustomEvent("kds-sidebar-nav-change",{detail:{item:this,text:this.querySelector("span")?.textContent||""},bubbles:!0});e.dispatchEvent(a)})})}(n),function(){const e=document.querySelector(".kds-hamburger-btn"),t=document.querySelector(".kds-sidebar-close-btn"),n=document.querySelector(".kds-sidebar");e&&n&&(e.addEventListener("click",function(){n.classList.toggle("kds-sidebar-open")}),t&&t.addEventListener("click",function(){n.classList.remove("kds-sidebar-open")}),document.addEventListener("keydown",function(e){"Escape"===e.key&&n.classList.contains("kds-sidebar-open")&&n.classList.remove("kds-sidebar-open")}))}(),console.log("[Khipu Sidebar] Initialized successfully")):console.warn("[Khipu Sidebar] Sidebar not found with selector:",t.sidebarSelector)}};"function"==typeof define&&define.amd?define(function(){return t}):"object"==typeof module&&module.exports?module.exports=t:e.KhipuSidebar=t}("undefined"!=typeof window?window:this),function(){"use strict";function e(){console.log("Initializing Khipu Material Design components..."),void 0!==window.KhipuSidebar&&window.KhipuSidebar.init(),function(){const e=document.getElementById("menu-toggle"),t=document.getElementById("material-sidenav");e&&t&&(e.addEventListener("click",function(){t.classList.toggle("active")}),document.addEventListener("click",function(n){if(t.classList.contains("active")){t.contains(n.target)||e.contains(n.target)||t.classList.remove("active")}}))}(),document.querySelectorAll('.snackbar[data-auto-dismiss="true"]').forEach(function(e){var n=e.querySelector("span");n&&n.classList.add("max");var a=document.createElement("button");a.className="kds-snackbar-close",a.setAttribute("aria-label","Cerrar"),a.innerHTML='<i class="material-symbols-outlined">close</i>',a.onclick=function(){t(e)},e.appendChild(a),setTimeout(function(){t(e)},5e3)}),window.closeModal=function(e){const t=document.getElementById(e);t&&t.classList.remove("active")},n(),a(),o(),i(),d(),p(),f(),r(),s(),c(),u(),l(),function(e){e=e||document;var t=.72,n=16,a=128,o=.02;function i(e,t){if(e){var i=new Image;i.crossOrigin="anonymous",i.onload=function(){try{var e=document.createElement("canvas");e.width=n,e.height=n;var r=e.getContext("2d");if(!r)return void t(null);r.drawImage(i,0,0,n,n);for(var s=r.getImageData(0,0,n,n).data,l=0,c=0,u=0;u<s.length;u+=4)s[u+3]<a||(l+=(.2126*s[u]+.7152*s[u+1]+.0722*s[u+2])/255,c++);if(c<n*n*o)return void t(null);t(l/c)}catch(e){t(null)}},i.onerror=function(){t(null)},i.src=e}else t(null)}e.querySelectorAll(".kds-invoice-merchant").forEach(function(e){var n=e.querySelector("img");if(n){var a=e.style.background;e.style.background="",e.classList.add("kds-invoice-merchant-neutral"),n.addEventListener("error",function(){e.classList.remove("kds-invoice-merchant-neutral","dark"),e.style.background=a}),i(n.getAttribute("src"),function(n){null!=n&&n>t&&e.classList.contains("kds-invoice-merchant-neutral")&&e.classList.add("dark")})}})}(),console.log("Material Design initialization complete!")}function t(e){e.classList.remove("active"),setTimeout(function(){e.remove()},300)}function n(e){(e=e||document).querySelectorAll(".kds-invoice-sticky").forEach(function(e){if(!e.querySelector(".kds-brand-inner")){var t=e.closest(".kds-screen")||e.parentElement,n=t?t.querySelector(".kds-brand-row"):null,a=n?n.querySelector("svg, img"):null;if(a){var o=e.querySelector(".kds-invoice-header"),i=o?o.firstElementChild:null;if(i){var r=document.createElement("div");r.className="kds-brand-inner",r.appendChild(a.cloneNode(!0)),i.insertBefore(r,i.firstChild)}}}})}function a(e){(e=e||document).querySelectorAll(".kds-screen").forEach(function(e){var t=e.querySelector(".kds-secure-footer");if(t){var n=e.querySelectorAll(".kds-card-elevated:not(.kds-invoice-sticky)");if(n.length){var a=n[n.length-1];t.classList.add("inside"),a.appendChild(t)}}})}function o(e){(e=e||document).addEventListener("click",function(e){var t=e.target.closest("[data-expand-toggle]");if(t){var n="true"===t.getAttribute("aria-expanded");t.setAttribute("aria-expanded",String(!n));var a=t.getAttribute("aria-controls"),o=a?document.getElementById(a):t.parentElement.querySelector("[data-expand-panel]");o&&(n?(o.classList.remove("open"),o.style.maxHeight=""):(o.classList.add("open"),o.style.maxHeight=o.scrollHeight+"px"))}})}function i(e){(e=e||document).addEventListener("click",function(e){var t=e.target.closest(".kds-copy-row[data-copy]");if(t)navigator.clipboard.writeText(t.dataset.copy).then(function(){t.classList.add("copied"),setTimeout(function(){t.classList.remove("copied")},1200)});else{var n=e.target.closest(".kds-copy-all[data-copy-all]");if(n){var a=n.dataset.copyAll,o=a?document.querySelector(a):n.closest(".kds-copy-header").nextElementSibling;if(!o)return;var i=o.querySelectorAll("[data-copy]"),r=[];i.forEach(function(e){r.push(e.dataset.copy)}),navigator.clipboard.writeText(r.join("\n")).then(function(){i.forEach(function(e){e.classList.add("copied"),setTimeout(function(){e.classList.remove("copied")},1200)})})}}})}function r(e){(e=e||document).querySelectorAll(".kds-countdown[data-deadline]").forEach(function(e){var t=new Date(e.dataset.deadline).getTime(),n=e.dataset.serverNow?new Date(e.dataset.serverNow).getTime():Date.now(),a=Date.now()-n,o=e.querySelector("[data-h]"),i=e.querySelector("[data-m]"),r=e.querySelector("[data-s]");function s(e){return e<10?"0"+e:String(e)}function l(){var n=Date.now()-a,l=Math.max(0,t-n),u=Math.floor(l/1e3),d=Math.floor(u/3600),p=Math.floor(u%3600/60),f=u%60;o&&(o.textContent=s(d)),i&&(i.textContent=s(p)),r&&(r.textContent=s(f)),l<3e5&&e.classList.add("urgent"),l<=0&&(clearInterval(c),e.dispatchEvent(new CustomEvent("kds:countdown:expired",{bubbles:!0})))}l();var c=setInterval(l,1e3)})}function s(e){(e=e||document).querySelectorAll(".kds-segmented-tabs").forEach(function(e){var t=e.querySelectorAll("button");e.style.setProperty("--_tab-count",t.length);var n=0;t.forEach(function(e,t){(e.classList.contains("active")||"true"===e.getAttribute("aria-selected"))&&(n=t)}),e.style.setProperty("--_active-idx",n);var a=e.parentElement;a&&a.querySelectorAll("[data-kds-tab-panel]").forEach(function(e,t){e.hidden=t!==n})}),e.addEventListener("click",function(e){var t=e.target.closest(".kds-segmented-tabs button");if(t){var n=t.closest(".kds-segmented-tabs"),a=n.querySelectorAll("button");a.forEach(function(e){e.classList.remove("active"),e.setAttribute("aria-selected","false")}),t.classList.add("active"),t.setAttribute("aria-selected","true");var o=Array.prototype.indexOf.call(a,t);n.style.setProperty("--_active-idx",o);var i=n.parentElement;i&&i.querySelectorAll("[data-kds-tab-panel]").forEach(function(e,t){e.hidden=t!==o}),n.dispatchEvent(new CustomEvent("kds:tab:change",{bubbles:!0,detail:{index:o,button:t}}))}})}function l(e){var t=(e=e||document).querySelector("#bankModal"),n=e.querySelector("#bankSearch"),a=e.querySelector("#bankModalList"),o=e.querySelector("#bankNoResults");function i(e){if(a){var t=e.toLowerCase().trim(),n=a.querySelectorAll(".kds-bank-row"),i=0;n.forEach(function(e){var n=e.querySelector(".kds-bank-row-name");if(n){var a=n.textContent.toLowerCase(),o=!t||-1!==a.indexOf(t);e.style.display=o?"":"none",o&&i++}}),o&&o.classList.toggle("visible",0===i)}}t&&(e.addEventListener("click",function(e){e.target.closest("[data-open-bank-modal]")&&(t.classList.add("open"),n&&(n.value="",n.focus()),i(""))}),e.addEventListener("click",function(e){e.target.closest("[data-close-bank-modal]")&&t.classList.remove("open")}),a&&a.addEventListener("click",function(e){var n=e.target.closest(".kds-bank-row");if(n){var a=n.dataset.bankId||n.dataset.bank||"",o=n.querySelector(".kds-bank-row-name");t.dispatchEvent(new CustomEvent("kds:bank:selected",{bubbles:!0,detail:{id:a,name:o?o.textContent:"",element:n}})),t.classList.remove("open")}}),n&&n.addEventListener("input",function(e){i(e.target.value)}),window.Khipu||(window.Khipu={}),window.Khipu.filterBanks=i)}function c(e){e=e||document;var t=!1;function n(){return window.innerWidth<768}function a(){var a=e.querySelector(".kds-screen.active");if(a&&a.querySelector(".kds-invoice-sticky"))return n()?void(t||(t=!0,requestAnimationFrame(function(){t=!1;var n=e.querySelector(".kds-screen.active");if(n){var a=n.querySelector(".kds-invoice-sticky");if(a){var o=window.scrollY||window.pageYOffset,i=Math.min(Math.max((o-0)/20,0),1);if(!n.style.getPropertyValue("--collapse-collapsible-h")){var r=a.querySelector(".kds-invoice-collapsible");r&&n.style.setProperty("--collapse-collapsible-h",r.offsetHeight+"px")}n.style.setProperty("--collapse-progress",i),a.classList.toggle("is-collapsed",i>=1),i>0&&a.querySelectorAll('[data-expand-toggle][aria-expanded="true"]').forEach(function(e){e.setAttribute("aria-expanded","false");var t=e.getAttribute("aria-controls"),n=t?document.getElementById(t):null;n&&n.classList.remove("open")})}}}))):(a.style.removeProperty("--collapse-progress"),void a.style.removeProperty("--collapse-collapsible-h"))}window.addEventListener("resize",function(){n()||(e.querySelectorAll(".kds-screen").forEach(function(e){e.style.removeProperty("--collapse-progress"),e.style.removeProperty("--collapse-collapsible-h")}),e.querySelectorAll(".kds-invoice-sticky.is-collapsed").forEach(function(e){e.classList.remove("is-collapsed")}))}),window.addEventListener("scroll",a,{passive:!0}),a()}function u(e){var t=(e=e||document).querySelectorAll("[data-hide-on-scroll]");if(t.length){var n=0,a=!1,o=new Map;window.addEventListener("scroll",r,{passive:!0}),window.addEventListener("resize",r),window.addEventListener("message",function(e){e.data&&"VIEWPORT_OFFSET"===e.data.type&&(n=Math.max(0,e.data.offsetTop||0),r())}),i()}function i(){a=!1;var e=Math.max(window.scrollY||window.pageYOffset||0,n);t.forEach(function(t){var n=parseInt(t.getAttribute("data-hide-threshold"),10)||8,a=parseInt(t.getAttribute("data-hide-top-offset"),10)||0,i=t.getAttribute("data-hide-class")||"kds-fab--hidden",r=o.has(t)?o.get(t):e;if(e<=a)return t.classList.remove(i),void o.set(t,e);var s=e-r;Math.abs(s)<n||(t.classList.toggle(i,s>0),o.set(t,e))})}function r(){a||(a=!0,requestAnimationFrame(i))}}function d(e){(e=e||document).addEventListener("click",function(e){var t=e.target.closest(".kds-copyable-table-row[data-copy]");t&&navigator.clipboard.writeText(t.dataset.copy).then(function(){t.classList.add("copied"),setTimeout(function(){t.classList.remove("copied")},1200)})})}function p(e){(e=e||document).addEventListener("click",function(e){var t=e.target.closest(".kds-copy-all-btn[data-copy-all]");if(t){var n=t.dataset.copyAll,a=n?document.querySelector(n):t.previousElementSibling;if(a){var o=a.querySelectorAll(".kds-copyable-table-row[data-copy]"),i=[];o.forEach(function(e){var t=e.querySelector(".kds-key"),n=e.dataset.copy;t?i.push(t.textContent.trim()+": "+n):i.push(n)}),navigator.clipboard.writeText(i.join("\n")).then(function(){t.classList.add("copied");var e=t.querySelector("span:not(.kds-icon)"),n=e?e.textContent:"";e&&(e.textContent="Copiado"),o.forEach(function(e){e.classList.add("copied")}),setTimeout(function(){t.classList.remove("copied"),e&&(e.textContent=n),o.forEach(function(e){e.classList.remove("copied")})},1400)})}}})}function f(e){(e=e||document).querySelectorAll(".kds-info-tip[data-tip]").forEach(function(e){if(!e.querySelector(".kds-tip-bubble")){var t=document.createElement("span");t.className="kds-tip-bubble",t.setAttribute("role","tooltip"),t.textContent=e.dataset.tip,e.appendChild(t)}}),e.addEventListener("click",function(e){var t=e.target.closest(".kds-info-tip");if(t){e.preventDefault(),e.stopPropagation();var n="true"===t.getAttribute("aria-expanded");return document.querySelectorAll('.kds-info-tip[aria-expanded="true"]').forEach(function(e){e.setAttribute("aria-expanded","false")}),void t.setAttribute("aria-expanded",String(!n))}document.querySelectorAll('.kds-info-tip[aria-expanded="true"]').forEach(function(e){e.setAttribute("aria-expanded","false")})})}function m(e,n,a){n=n||"info",a=a||5e3;var o=document.createElement("div");o.className="snackbar active "+n,o.setAttribute("data-auto-dismiss","true"),o.style.setProperty("--kds-snackbar-duration",a+"ms");var i=document.createElement("i");i.className="material-symbols-outlined",i.textContent="success"===n?"check_circle":"error"===n?"error":"info";var r=document.createElement("span");r.className="max",r.textContent=e;var s=document.createElement("button");s.className="kds-snackbar-close",s.setAttribute("aria-label","Cerrar"),s.innerHTML='<i class="material-symbols-outlined">close</i>',s.onclick=function(){t(o)},o.appendChild(i),o.appendChild(r),o.appendChild(s),document.body.appendChild(o),setTimeout(function(){t(o)},a)}"loading"===document.readyState?document.addEventListener("DOMContentLoaded",e):e(),window.Khipu||(window.Khipu={}),window.Khipu.showSnackbar=m,window.Khipu.closeModal=window.closeModal,window.Khipu.initBrandInner=n,window.Khipu.initSecureFooterInside=a,window.Khipu.initExpandToggle=o,window.Khipu.initCopyRow=i,window.Khipu.initCountdown=r,window.Khipu.initSegmentedTabs=s,window.Khipu.initCopyableTable=d,window.Khipu.initCopyAllBtn=p,window.Khipu.initInfoTip=f,window.Khipu.initBankModal=l,window.Khipu.initStickyInvoice=c,window.Khipu.initHideOnScroll=u,window.showSnackbar=m}();
|
|
1
|
+
const _emptyNodeList=[],_weakElements=new WeakSet,isChrome=navigator.userAgent.includes("Chrome");navigator.userAgent.includes("Firefox"),navigator.userAgent.includes("Safari"),navigator.userAgent.includes("Windows");const isMac=navigator.userAgent.includes("Macintosh");navigator.userAgent.includes("Linux"),navigator.userAgent.includes("Android");const isIOS=/iPad|iPhone|iPod/.test(navigator.userAgent);function isDark(){return null==window?void 0:window.matchMedia("(prefers-color-scheme: dark)").matches}async function wait(e){await new Promise(t=>setTimeout(t,e))}function guid(){return"fxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{const t=16*Math.random()|0;return("x"===e?t:3&t|8).toString(16)})}function query(e,t){try{return"string"==typeof e?(t??document).querySelector(e):e}catch{return null}}function queryAll(e,t){try{return"string"==typeof e?(t??document).querySelectorAll(e):e??_emptyNodeList}catch{return _emptyNodeList}}function hasClass(e,t){return(null==e?void 0:e.classList.contains(t))??!1}function hasTag(e,t){var n;return(null==(n=null==e?void 0:e.tagName)?void 0:n.toLowerCase())===t}function hasType(e,t){var n;return(null==(n=null==e?void 0:e.type)?void 0:n.toLowerCase())===t}function addClass(e,t){if(e instanceof NodeList)for(let n=0;n<e.length;n++)e[n].classList.add(t);else null==e||e.classList.add(t)}function removeClass(e,t){if(e instanceof NodeList)for(let n=0;n<e.length;n++)e[n].classList.remove(t);else null==e||e.classList.remove(t)}function on(e,t,n,a=!0){(null==e?void 0:e.addEventListener)&&e.addEventListener(t,n,a)}function onWeak(e,t,n,a=!0){addWeakElement(e),on(e,t,n,a)}function off(e,t,n,a=!0){(null==e?void 0:e.removeEventListener)&&e.removeEventListener(t,n,a)}function insertBefore(e,t){var n;null==(n=null==t?void 0:t.parentNode)||n.insertBefore(e,t)}function prev(e){return null==e?void 0:e.previousElementSibling}function next(e){return null==e?void 0:e.nextElementSibling}function parent(e){return null==e?void 0:e.parentElement}function create(e){const t=document.createElement("div");for(let n=0,a=Object.keys(e),o=a.length;n<o;n++){const o=a[n],i=e[o];t.setAttribute(o,i)}return t}function blurActiveElement(){var e;null==(e=document.activeElement)||e.blur()}function queryAllDataUi(e){return queryAll('[data-ui="#'+e+'"]')}function queryDataUi(e){return query('[data-ui="#'+e+'"]')}function updateAllClickable(e){e.id&&hasClass(e,"page")&&(e=queryDataUi(e.id)??e);const t=parent(e);if(!hasClass(t,"tabs")&&!hasClass(t,"tabbed")&&!hasTag(t,"nav"))return;const n=queryAll("a",t);for(let e=0;e<n.length;e++)removeClass(n[e],"active");hasTag(e,"button")||hasClass(e,"button")||hasClass(e,"chip")||addClass(e,"active")}function addWeakElement(e){_weakElements.has(e)||_weakElements.add(e)}function rootSizeInPixels(){const e=getComputedStyle(document.documentElement).getPropertyValue("--size")||"16px";return e.includes("%")?16*parseInt(e)/100:e.includes("em")?16*parseInt(e):parseInt(e)}function updatePlaceholder(e){e.placeholder||(e.placeholder=" ")}function onClickLabel(e){const t=query("input:not([type=file], [type=checkbox], [type=radio]), select, textarea",parent(e.currentTarget));t&&t.focus()}function onFocusInput(e){updateInput(e.currentTarget)}function onBlurInput(e){updateInput(e.currentTarget)}function onChangeFile(e){updateFile(e.currentTarget)}function onChangeColor(e){updateColor(e.currentTarget)}function onKeydownFile(e){updateFile(e.currentTarget,e)}function onKeydownColor(e){updateColor(e.currentTarget,e)}function onPasswordIconClick(e){var t;const n=e.currentTarget,a=query("input",parent(n));a&&(null==(t=n.textContent)?void 0:t.includes("visibility"))&&("password"===a.type?(a.type="text",n.textContent="visibility_off"):(a.type="password",n.textContent="visibility"))}function onInputTextarea(e){updateTextarea(e.currentTarget)}function updateAllLabels(){const e=queryAll(".field > label");for(let t=0;t<e.length;t++)onWeak(e[t],"click",onClickLabel)}function updateAllInputs(){const e=queryAll(".field > input:not([type=file], [type=color], [type=range])");for(let t=0;t<e.length;t++)onWeak(e[t],"focus",onFocusInput),onWeak(e[t],"blur",onBlurInput),updateInput(e[t])}function updateAllSelects(){const e=queryAll(".field > select");for(let t=0;t<e.length;t++)onWeak(e[t],"focus",onFocusInput),onWeak(e[t],"blur",onBlurInput)}function updateAllFiles(){const e=queryAll(".field > input[type=file]");for(let t=0;t<e.length;t++)onWeak(e[t],"change",onChangeFile),updateFile(e[t])}function updateAllColors(){const e=queryAll(".field > input[type=color]");for(let t=0;t<e.length;t++)onWeak(e[t],"change",onChangeColor),updateColor(e[t])}function updateAllTextareas(){const e=queryAll(".field > textarea");for(let t=0;t<e.length;t++)onWeak(e[t],"focus",onFocusInput),onWeak(e[t],"blur",onBlurInput),updatePlaceholder(e[t]),(!isChrome||isMac||isIOS)&&(onWeak(e[t],"input",onInputTextarea),updateTextarea(e[t]))}function updateAllPasswordIcons(){const e=queryAll(".field:has(> input[type=password]) > i, a");for(let t=0;t<e.length;t++)onWeak(e[t],"click",onPasswordIconClick)}function updateInput(e){hasType(e,"number")&&!e.value&&(e.value=""),updatePlaceholder(e)}function updateFile(e,t){if("Enter"===(null==t?void 0:t.key)){const t=prev(e);if(!hasType(t,"file"))return;return void t.click()}const n=next(e);hasType(n,"text")&&(n.value=e.files?Array.from(e.files).map(e=>e.name).join(", "):"",n.readOnly=!0,onWeak(n,"keydown",onKeydownFile,!1),updateInput(n))}function updateColor(e,t){if("Enter"===(null==t?void 0:t.key)){const t=prev(e);if(!hasType(t,"color"))return;return void t.click()}const n=next(e);hasType(n,"text")&&(n.readOnly=!0,n.value=e.value,onWeak(n,"keydown",onKeydownColor,!1),updateInput(n))}function updateTextarea(e){if(updatePlaceholder(e),e.hasAttribute("rows"))return;const t=rootSizeInPixels();e.style.blockSize="auto",e.style.blockSize=e.scrollHeight-t+"px"}function updateAllFields(){updateAllLabels(),updateAllInputs(),updateAllSelects(),updateAllFiles(),updateAllColors(),updateAllTextareas(),updateAllPasswordIcons()}function onInputDocument$1(e){const t=e.target;(hasTag(t,"input")||hasTag(t,"select"))&&("range"===t.type?(t.focus(),updateRange(t)):updateAllRanges())}function onChangeInput(e){if(!window.matchMedia("(pointer: coarse)").matches)return;e.target.blur()}function updateAllRanges(){const e=document.body,t=queryAll(".slider > input[type=range]");t.length?on(e,"input",onInputDocument$1,!1):off(e,"input",onInputDocument$1,!1);for(let e=0;e<t.length;e++)updateRange(t[e])}function updateRange(e){onWeak(e,"change",onChangeInput);const t=parent(e),n=query("span",t),a=queryAll("input",t);if(!a.length||!n)return;const o=rootSizeInPixels(),i=hasClass(t,"max")?0:.25*o*100/a[0].offsetWidth,r=[],s=[];for(let e=0,t=a.length;e<t;e++){const t=parseFloat(a[e].min)||0,n=parseFloat(a[e].max)||100,o=parseFloat(a[e].value)||0,l=100*(o-t)/(n-t),c=i/2-i*l/100;r.push(l+c),s.push(o)}let l=r[0],c=0,u=100-c-l,d=s[0],p=s[1]||0;a.length>1&&(l=Math.abs(r[1]-r[0]),c=r[1]>r[0]?r[0]:r[1],u=100-c-l,p>d&&(d=s[1]||0,p=s[0])),requestAnimationFrame(()=>t.style.cssText=`--_start: ${c}%; --_end: ${u}%; --_value1: '${d}'; --_value2: '${p}';`)}function updateAllSliders(){updateAllRanges()}const _lastTheme={light:"",dark:""};function getMode(){var e;return(null==(e=null==document?void 0:document.body)?void 0:e.classList.contains("dark"))?"dark":"light"}function lastTheme(){if(_lastTheme.light&&_lastTheme.dark)return _lastTheme;const e=document.body,t=document.createElement("body");t.className="light",e.appendChild(t);const n=document.createElement("body");n.className="dark",e.appendChild(n);const a=getComputedStyle(t),o=getComputedStyle(n),i=["--primary","--on-primary","--primary-container","--on-primary-container","--secondary","--on-secondary","--secondary-container","--on-secondary-container","--tertiary","--on-tertiary","--tertiary-container","--on-tertiary-container","--error","--on-error","--error-container","--on-error-container","--background","--on-background","--surface","--on-surface","--surface-variant","--on-surface-variant","--outline","--outline-variant","--shadow","--scrim","--inverse-surface","--inverse-on-surface","--inverse-primary","--surface-dim","--surface-bright","--surface-container-lowest","--surface-container-low","--surface-container","--surface-container-high","--surface-container-highest"];for(let e=0,t=i.length;e<t;e++)_lastTheme.light+=i[e]+":"+a.getPropertyValue(i[e])+";",_lastTheme.dark+=i[e]+":"+o.getPropertyValue(i[e])+";";return e.removeChild(t),e.removeChild(n),_lastTheme}async function updateTheme(e){const t=globalThis,n=document.body;return e&&t.materialDynamicColors?e.light&&e.dark?(_lastTheme.light=e.light,_lastTheme.dark=e.dark,n.setAttribute("style",e[getMode()]),e):t.materialDynamicColors(e).then(e=>{const t=e=>{let t="";for(let n=0,a=Object.keys(e),o=a.length;n<o;n++){const o=a[n],i=e[o];t+="--"+o.replace(/([a-z0-9]|(?=[A-Z]))([A-Z])/g,"$1-$2").toLowerCase()+":"+i+";"}return t};return _lastTheme.light=t(e.light),_lastTheme.dark=t(e.dark),n.setAttribute("style",_lastTheme[getMode()]),_lastTheme}):lastTheme()}function updateMode(e){const t=globalThis,n=document.body;if(!n)return e;if(!e)return getMode();"auto"===e&&(e=isDark()?"dark":"light"),n.classList.remove("light","dark"),n.classList.add(e);const a="light"===e?_lastTheme.light:_lastTheme.dark;return t.materialDynamicColors&&n.setAttribute("style",a),getMode()}const _dialogs=[];function onKeydownDialog(e){if("Escape"===e.key){const t=e.currentTarget;updateDialog(t,t)}}function focusOnDialogOrElement(e){(query("[autofocus]",e)??e).focus()}function closeDialog(e,t){removeClass(queryAllDataUi(e.id),"active"),removeClass(e,"active"),removeClass(t,"active"),e.close(),_dialogs.pop();const n=_dialogs[_dialogs.length-1];n&&n.focus()}async function openDialog(e,t,n,a){hasTag(a,"button")||hasClass(a,"button")||hasClass(a,"chip")||addClass(a,"active"),addClass(t,"active"),addClass(e,"active"),n?e.showModal():e.show(),await wait(90),n||on(e,"keydown",onKeydownDialog,!1),_dialogs.push(e),focusOnDialogOrElement(e)}function onClickOverlay(e){const t=e.currentTarget,n=next(t);hasTag(n,"dialog")&&closeDialog(n,t)}async function updateDialog(e,t){blurActiveElement();let n=prev(t);const a=hasClass(t,"active")||t.open,o=hasClass(t,"modal");o||off(t,"keydown",onKeydownDialog,!1),hasClass(n,"overlay")||(n=create({class:"overlay"}),insertBefore(n,t),await wait(90)),o||onWeak(n,"click",onClickOverlay,!1),a?closeDialog(t,n):openDialog(t,n,o,e)}let _timeoutMenu,_timeoutSnackbar;function onClickDocument(e){off(document.body,"click",onClickDocument);const t=e.target,n=queryAll("menu.active");for(let a=0;a<n.length;a++)updateMenu(t,n[a],e)}function focusOnMenuOrInput(e){setTimeout(()=>{const t=query(".field > input",e);t?t.focus():e.focus()},90)}function updateMenu(e,t,n){_timeoutMenu&&clearTimeout(_timeoutMenu),_timeoutMenu=setTimeout(()=>{on(document.body,"click",onClickDocument),hasTag(document.activeElement,"input")||blurActiveElement();const a=hasClass(t,"active"),o=(null==n?void 0:n.target)===e,i=!!e.closest("menu");!a&&i||a&&o?removeClass(t,"active"):(removeClass(queryAll("menu.active"),"active"),addClass(t,"active"),focusOnMenuOrInput(t))},90)}function onClickSnackbar(e){removeClass(e.currentTarget,"active"),_timeoutSnackbar&&clearTimeout(_timeoutSnackbar)}function updateSnackbar(e,t){blurActiveElement();const n=queryAll(".snackbar.active");for(let e=0;e<n.length;e++)removeClass(n[e],"active");addClass(e,"active"),onWeak(e,"click",onClickSnackbar),_timeoutSnackbar&&clearTimeout(_timeoutSnackbar),-1!==t&&(_timeoutSnackbar=setTimeout(()=>{removeClass(e,"active")},t??6e3))}function updatePage(e){const t=parent(e);t&&removeClass(queryAll(":scope > .page",t),"active"),addClass(e,"active")}function onMousedownRipple(e){updateRipple(e)}function onKeydownRipple(e){" "===(null==e?void 0:e.key)&&updateRipple(e)}function updateRipple(e){const t=e instanceof MouseEvent,n=e.currentTarget,a=n.getBoundingClientRect(),o=Math.max(a.width,a.height),i=o/2,r=t?e.clientX-a.left-i:a.width/2-i,s=t?e.clientY-a.top-i:a.height/2-i,l=document.createElement("div");l.className="ripple-js";const c=document.createElement("div");c.style.inlineSize=c.style.blockSize=`${o}px`,c.style.left=`${r}px`,c.style.top=`${s}px`,onWeak(c,"animationend",()=>{l.remove()}),l.appendChild(c),n.appendChild(l)}function updateAllRipples(){const e=queryAll(".slow-ripple, .ripple, .fast-ripple");for(let t=0;t<e.length;t++)onWeak(e[t],"mousedown",onMousedownRipple),onWeak(e[t],"keydown",onKeydownRipple)}function onInputDocument(e){const t=e.target;hasTag(t,"progress")?updateProgress(t):updateAllProgress()}function updateProgress(e){requestAnimationFrame(()=>{if(e.hasAttribute("value")||e.hasAttribute("max"))e.style.setProperty("--_value",String(e.value));else{const t=hasClass(e,"circle")?"50":"100";e.style.setProperty("--_value",t),e.setAttribute("value",t),e.setAttribute("max","100"),e.classList.add("indeterminate")}})}function updateAllProgress(){if(isChrome&&!isMac&&!isIOS)return;const e=document.body,t=queryAll("progress");t.length?on(e,"input",onInputDocument,!1):off(e,"input",onInputDocument,!1);for(let e=0;e<t.length;e++)updateProgress(t[e])}const _context=globalThis;let _timeoutMutation,_mutation;function onMutation(){_timeoutMutation&&clearTimeout(_timeoutMutation),_timeoutMutation=setTimeout(async()=>await _ui(),180)}async function run(e,t,n,a){if(t||(t=query(e.getAttribute("data-ui"))))if(updateAllClickable(e),hasTag(t,"dialog"))requestAnimationFrame(()=>updateDialog(e,t));else if(hasTag(t,"menu"))requestAnimationFrame(()=>updateMenu(e,t,a));else if(hasClass(t,"snackbar"))requestAnimationFrame(()=>updateSnackbar(t,n));else{if(!hasClass(t,"page"))return hasClass(t,"active")?(removeClass(e,"active"),void removeClass(t,"active")):void addClass(t,"active");requestAnimationFrame(()=>updatePage(t))}else e.classList.toggle("active")}function onClickElement(e){run(e.currentTarget,null,null,e)}function onKeydownElement(e){"Enter"===e.key&&run(e.currentTarget,null,null,e)}function setup(){_context.ui||_mutation||!_context.MutationObserver||(_mutation=new MutationObserver(onMutation),_mutation.observe(document.body,{childList:!0,subtree:!0}),onMutation())}function updateAllDataUis(){const e=queryAll("[data-ui]");for(let t=0,n=e.length;t<n;t++)onWeak(e[t],"click",onClickElement),hasTag(e[t],"a")&&!e[t].getAttribute("href")&&onWeak(e[t],"keydown",onKeydownElement)}function _ui(e,t){if(e){if("setup"===e)return void setup();if("guid"===e)return guid();if("mode"===e)return updateMode(t);if("theme"===e)return updateTheme(t);const n=query(e);if(!n)return;run(n,n,t)}updateAllDataUis(),updateAllFields(),updateAllRipples(),updateAllSliders(),updateAllProgress()}function start(){var e;if(_context.ui)return;const t=null==(e=_context.document)?void 0:e.body;!t||t.classList.contains("dark")||t.classList.contains("light")||updateMode("auto"),setup(),_context.ui=_ui}start();const ui=_context.ui;!function(e){"use strict";const t={init:function(e={}){const t={sidebarSelector:e.sidebarSelector||".kds-sidebar"},n=document.querySelector(t.sidebarSelector);n?(!function(e){if(!e)return;const t=e.querySelector(".kds-sidebar-header"),n=e.querySelector(".kds-sidebar-header-dropdown");if(!t||!n)return;t.addEventListener("click",function(e){e.stopPropagation(),n.classList.toggle("kds-dropdown-open");const a=t.querySelector(".kds-sidebar-dropdown-icon");a&&(a.style.transform=n.classList.contains("kds-dropdown-open")?"rotate(180deg)":"rotate(0deg)")}),document.addEventListener("click",function(a){if(!e.contains(a.target)){n.classList.remove("kds-dropdown-open");const e=t.querySelector(".kds-sidebar-dropdown-icon");e&&(e.style.transform="rotate(0deg)")}}),n.querySelectorAll("a").forEach(e=>{e.addEventListener("click",function(){n.classList.remove("kds-dropdown-open");const e=t.querySelector(".kds-sidebar-dropdown-icon");e&&(e.style.transform="rotate(0deg)")})})}(n),function(e){if(!e)return;const t=e.querySelectorAll(".kds-sidebar-nav-item");t.forEach(n=>{n.addEventListener("click",function(n){"#"===this.getAttribute("href")&&n.preventDefault(),t.forEach(e=>{e.classList.remove("active")}),this.classList.add("active");const a=new CustomEvent("kds-sidebar-nav-change",{detail:{item:this,text:this.querySelector("span")?.textContent||""},bubbles:!0});e.dispatchEvent(a)})})}(n),function(){const e=document.querySelector(".kds-hamburger-btn"),t=document.querySelector(".kds-sidebar-close-btn"),n=document.querySelector(".kds-sidebar");e&&n&&(e.addEventListener("click",function(){n.classList.toggle("kds-sidebar-open")}),t&&t.addEventListener("click",function(){n.classList.remove("kds-sidebar-open")}),document.addEventListener("keydown",function(e){"Escape"===e.key&&n.classList.contains("kds-sidebar-open")&&n.classList.remove("kds-sidebar-open")}))}(),console.log("[Khipu Sidebar] Initialized successfully")):console.warn("[Khipu Sidebar] Sidebar not found with selector:",t.sidebarSelector)}};"function"==typeof define&&define.amd?define(function(){return t}):"object"==typeof module&&module.exports?module.exports=t:e.KhipuSidebar=t}("undefined"!=typeof window?window:this),function(){"use strict";function e(){console.log("Initializing Khipu Material Design components..."),void 0!==window.KhipuSidebar&&window.KhipuSidebar.init(),function(){const e=document.getElementById("menu-toggle"),t=document.getElementById("material-sidenav");e&&t&&(e.addEventListener("click",function(){t.classList.toggle("active")}),document.addEventListener("click",function(n){if(t.classList.contains("active")){t.contains(n.target)||e.contains(n.target)||t.classList.remove("active")}}))}(),document.querySelectorAll('.snackbar[data-auto-dismiss="true"]').forEach(function(e){var t=e.querySelector("span");t&&t.classList.add("max");var a=document.createElement("button");a.className="kds-snackbar-close",a.setAttribute("aria-label","Cerrar"),a.innerHTML='<i class="material-symbols-outlined">close</i>',a.onclick=function(){n(e)},e.appendChild(a),setTimeout(function(){n(e)},5e3)}),window.closeModal=function(e){const t=document.getElementById(e);t&&t.classList.remove("active")},a(),o(),i(),r(),p(),f(),m(),s(),l(),u(),d(),c(),function(e){e=e||document;var t=.72,n=16,a=128,o=.02;function i(e,t){if(e){var i=new Image;i.crossOrigin="anonymous",i.onload=function(){try{var e=document.createElement("canvas");e.width=n,e.height=n;var r=e.getContext("2d");if(!r)return void t(null);r.drawImage(i,0,0,n,n);for(var s=r.getImageData(0,0,n,n).data,l=0,c=0,u=0;u<s.length;u+=4)s[u+3]<a||(l+=(.2126*s[u]+.7152*s[u+1]+.0722*s[u+2])/255,c++);if(c<n*n*o)return void t(null);t(l/c)}catch(e){t(null)}},i.onerror=function(){t(null)},i.src=e}else t(null)}e.querySelectorAll(".kds-invoice-merchant").forEach(function(e){var n=e.querySelector("img");if(n){var a=e.style.background;e.style.background="",e.classList.add("kds-invoice-merchant-neutral"),n.addEventListener("error",function(){e.classList.remove("kds-invoice-merchant-neutral","dark"),e.style.background=a}),i(n.getAttribute("src"),function(n){null!=n&&n>t&&e.classList.contains("kds-invoice-merchant-neutral")&&e.classList.add("dark")})}})}(),t(),console.log("Material Design initialization complete!")}function t(e){e=e||document;if(!("undefined"==typeof ResizeObserver||"function"!=typeof Element.prototype.animate||window.matchMedia&&window.matchMedia("(prefers-reduced-motion: reduce)").matches)){var t=e.querySelectorAll(".kds-screen > .kds-card-elevated");Array.prototype.forEach.call(t,function(e){if("on"!==e.getAttribute("data-kds-height-transition")){e.setAttribute("data-kds-height-transition","on");var t=e.offsetHeight,n=!1,a=new ResizeObserver(function(){if(!n){var a=e.offsetHeight;if(Math.abs(a-t)<8)t=a;else{n=!0;var o=e.animate([{height:t+"px"},{height:a+"px"}],{duration:280,easing:"ease-out"});t=a,o.finished.then(function(){n=!1,t=e.offsetHeight}).catch(function(){n=!1})}}});a.observe(e)}})}}function n(e){e.classList.remove("active"),setTimeout(function(){e.remove()},300)}function a(e){(e=e||document).querySelectorAll(".kds-invoice-sticky").forEach(function(e){if(!e.querySelector(".kds-brand-inner")){var t=e.closest(".kds-screen")||e.parentElement,n=t?t.querySelector(".kds-brand-row"):null,a=n?n.querySelector("svg, img"):null;if(a){var o=e.querySelector(".kds-invoice-header"),i=o?o.firstElementChild:null;if(i){var r=document.createElement("div");r.className="kds-brand-inner",r.appendChild(a.cloneNode(!0)),i.insertBefore(r,i.firstChild)}}}})}function o(e){(e=e||document).querySelectorAll(".kds-screen").forEach(function(e){var t=e.querySelector(".kds-secure-footer");if(t){var n=e.querySelectorAll(".kds-card-elevated:not(.kds-invoice-sticky)");if(n.length){var a=n[n.length-1];t.classList.add("inside"),a.appendChild(t)}}})}function i(e){(e=e||document).addEventListener("click",function(e){var t=e.target.closest("[data-expand-toggle]");if(t){var n="true"===t.getAttribute("aria-expanded");t.setAttribute("aria-expanded",String(!n));var a=t.getAttribute("aria-controls"),o=a?document.getElementById(a):t.parentElement.querySelector("[data-expand-panel]");o&&(n?(o.classList.remove("open"),o.style.maxHeight=""):(o.classList.add("open"),o.style.maxHeight=o.scrollHeight+"px"))}})}function r(e){(e=e||document).addEventListener("click",function(e){var t=e.target.closest(".kds-copy-row[data-copy]");if(t)navigator.clipboard.writeText(t.dataset.copy).then(function(){t.classList.add("copied"),setTimeout(function(){t.classList.remove("copied")},1200)});else{var n=e.target.closest(".kds-copy-all[data-copy-all]");if(n){var a=n.dataset.copyAll,o=a?document.querySelector(a):n.closest(".kds-copy-header").nextElementSibling;if(!o)return;var i=o.querySelectorAll("[data-copy]"),r=[];i.forEach(function(e){r.push(e.dataset.copy)}),navigator.clipboard.writeText(r.join("\n")).then(function(){i.forEach(function(e){e.classList.add("copied"),setTimeout(function(){e.classList.remove("copied")},1200)})})}}})}function s(e){(e=e||document).querySelectorAll(".kds-countdown[data-deadline]").forEach(function(e){var t=new Date(e.dataset.deadline).getTime(),n=e.dataset.serverNow?new Date(e.dataset.serverNow).getTime():Date.now(),a=Date.now()-n,o=e.querySelector("[data-h]"),i=e.querySelector("[data-m]"),r=e.querySelector("[data-s]");function s(e){return e<10?"0"+e:String(e)}function l(){var n=Date.now()-a,l=Math.max(0,t-n),u=Math.floor(l/1e3),d=Math.floor(u/3600),p=Math.floor(u%3600/60),f=u%60;o&&(o.textContent=s(d)),i&&(i.textContent=s(p)),r&&(r.textContent=s(f)),l<3e5&&e.classList.add("urgent"),l<=0&&(clearInterval(c),e.dispatchEvent(new CustomEvent("kds:countdown:expired",{bubbles:!0})))}l();var c=setInterval(l,1e3)})}function l(e){(e=e||document).querySelectorAll(".kds-segmented-tabs").forEach(function(e){var t=e.querySelectorAll("button");e.style.setProperty("--_tab-count",t.length);var n=0;t.forEach(function(e,t){(e.classList.contains("active")||"true"===e.getAttribute("aria-selected"))&&(n=t)}),e.style.setProperty("--_active-idx",n);var a=e.parentElement;a&&a.querySelectorAll("[data-kds-tab-panel]").forEach(function(e,t){e.hidden=t!==n})}),e.addEventListener("click",function(e){var t=e.target.closest(".kds-segmented-tabs button");if(t){var n=t.closest(".kds-segmented-tabs"),a=n.querySelectorAll("button");a.forEach(function(e){e.classList.remove("active"),e.setAttribute("aria-selected","false")}),t.classList.add("active"),t.setAttribute("aria-selected","true");var o=Array.prototype.indexOf.call(a,t);n.style.setProperty("--_active-idx",o);var i=n.parentElement;i&&i.querySelectorAll("[data-kds-tab-panel]").forEach(function(e,t){e.hidden=t!==o}),n.dispatchEvent(new CustomEvent("kds:tab:change",{bubbles:!0,detail:{index:o,button:t}}))}})}function c(e){var t=(e=e||document).querySelector("#bankModal"),n=e.querySelector("#bankSearch"),a=e.querySelector("#bankModalList"),o=e.querySelector("#bankNoResults");function i(e){if(a){var t=e.toLowerCase().trim(),n=a.querySelectorAll(".kds-bank-row"),i=0;n.forEach(function(e){var n=e.querySelector(".kds-bank-row-name");if(n){var a=n.textContent.toLowerCase(),o=!t||-1!==a.indexOf(t);e.style.display=o?"":"none",o&&i++}}),o&&o.classList.toggle("visible",0===i)}}t&&(e.addEventListener("click",function(e){e.target.closest("[data-open-bank-modal]")&&(t.classList.add("open"),n&&(n.value="",n.focus()),i(""))}),e.addEventListener("click",function(e){e.target.closest("[data-close-bank-modal]")&&t.classList.remove("open")}),a&&a.addEventListener("click",function(e){var n=e.target.closest(".kds-bank-row");if(n){var a=n.dataset.bankId||n.dataset.bank||"",o=n.querySelector(".kds-bank-row-name");t.dispatchEvent(new CustomEvent("kds:bank:selected",{bubbles:!0,detail:{id:a,name:o?o.textContent:"",element:n}})),t.classList.remove("open")}}),n&&n.addEventListener("input",function(e){i(e.target.value)}),window.Khipu||(window.Khipu={}),window.Khipu.filterBanks=i)}function u(e){e=e||document;var t=!1;function n(){return window.innerWidth<768}function a(){var a=e.querySelector(".kds-screen.active");if(a&&a.querySelector(".kds-invoice-sticky"))return n()?void(t||(t=!0,requestAnimationFrame(function(){t=!1;var n=e.querySelector(".kds-screen.active");if(n){var a=n.querySelector(".kds-invoice-sticky");if(a){var o=window.scrollY||window.pageYOffset,i=Math.min(Math.max((o-0)/20,0),1);if(!n.style.getPropertyValue("--collapse-collapsible-h")){var r=a.querySelector(".kds-invoice-collapsible");r&&n.style.setProperty("--collapse-collapsible-h",r.offsetHeight+"px")}n.style.setProperty("--collapse-progress",i),a.classList.toggle("is-collapsed",i>=1),i>0&&a.querySelectorAll('[data-expand-toggle][aria-expanded="true"]').forEach(function(e){e.setAttribute("aria-expanded","false");var t=e.getAttribute("aria-controls"),n=t?document.getElementById(t):null;n&&n.classList.remove("open")})}}}))):(a.style.removeProperty("--collapse-progress"),void a.style.removeProperty("--collapse-collapsible-h"))}window.addEventListener("resize",function(){n()||(e.querySelectorAll(".kds-screen").forEach(function(e){e.style.removeProperty("--collapse-progress"),e.style.removeProperty("--collapse-collapsible-h")}),e.querySelectorAll(".kds-invoice-sticky.is-collapsed").forEach(function(e){e.classList.remove("is-collapsed")}))}),window.addEventListener("scroll",a,{passive:!0}),a()}function d(e){var t=(e=e||document).querySelectorAll("[data-hide-on-scroll]");if(t.length){var n=0,a=!1,o=new Map;window.addEventListener("scroll",r,{passive:!0}),window.addEventListener("resize",r),window.addEventListener("message",function(e){e.data&&"VIEWPORT_OFFSET"===e.data.type&&(n=Math.max(0,e.data.offsetTop||0),r())}),i()}function i(){a=!1;var e=Math.max(window.scrollY||window.pageYOffset||0,n);t.forEach(function(t){var n=parseInt(t.getAttribute("data-hide-threshold"),10)||8,a=parseInt(t.getAttribute("data-hide-top-offset"),10)||0,i=t.getAttribute("data-hide-class")||"kds-fab--hidden",r=o.has(t)?o.get(t):e;if(e<=a)return t.classList.remove(i),void o.set(t,e);var s=e-r;Math.abs(s)<n||(t.classList.toggle(i,s>0),o.set(t,e))})}function r(){a||(a=!0,requestAnimationFrame(i))}}function p(e){(e=e||document).addEventListener("click",function(e){var t=e.target.closest(".kds-copyable-table-row[data-copy]");t&&navigator.clipboard.writeText(t.dataset.copy).then(function(){t.classList.add("copied"),setTimeout(function(){t.classList.remove("copied")},1200)})})}function f(e){(e=e||document).addEventListener("click",function(e){var t=e.target.closest(".kds-copy-all-btn[data-copy-all]");if(t){var n=t.dataset.copyAll,a=n?document.querySelector(n):t.previousElementSibling;if(a){var o=a.querySelectorAll(".kds-copyable-table-row[data-copy]"),i=[];o.forEach(function(e){var t=e.querySelector(".kds-key"),n=e.dataset.copy;t?i.push(t.textContent.trim()+": "+n):i.push(n)}),navigator.clipboard.writeText(i.join("\n")).then(function(){t.classList.add("copied");var e=t.querySelector("span:not(.kds-icon)"),n=e?e.textContent:"";e&&(e.textContent="Copiado"),o.forEach(function(e){e.classList.add("copied")}),setTimeout(function(){t.classList.remove("copied"),e&&(e.textContent=n),o.forEach(function(e){e.classList.remove("copied")})},1400)})}}})}function m(e){(e=e||document).querySelectorAll(".kds-info-tip[data-tip]").forEach(function(e){if(!e.querySelector(".kds-tip-bubble")){var t=document.createElement("span");t.className="kds-tip-bubble",t.setAttribute("role","tooltip"),t.textContent=e.dataset.tip,e.appendChild(t)}}),e.addEventListener("click",function(e){var t=e.target.closest(".kds-info-tip");if(t){e.preventDefault(),e.stopPropagation();var n="true"===t.getAttribute("aria-expanded");return document.querySelectorAll('.kds-info-tip[aria-expanded="true"]').forEach(function(e){e.setAttribute("aria-expanded","false")}),void t.setAttribute("aria-expanded",String(!n))}document.querySelectorAll('.kds-info-tip[aria-expanded="true"]').forEach(function(e){e.setAttribute("aria-expanded","false")})})}function v(e,t,a){t=t||"info",a=a||5e3;var o=document.createElement("div");o.className="snackbar active "+t,o.setAttribute("data-auto-dismiss","true"),o.style.setProperty("--kds-snackbar-duration",a+"ms");var i=document.createElement("i");i.className="material-symbols-outlined",i.textContent="success"===t?"check_circle":"error"===t?"error":"info";var r=document.createElement("span");r.className="max",r.textContent=e;var s=document.createElement("button");s.className="kds-snackbar-close",s.setAttribute("aria-label","Cerrar"),s.innerHTML='<i class="material-symbols-outlined">close</i>',s.onclick=function(){n(o)},o.appendChild(i),o.appendChild(r),o.appendChild(s),document.body.appendChild(o),setTimeout(function(){n(o)},a)}"loading"===document.readyState?document.addEventListener("DOMContentLoaded",e):e(),window.Khipu||(window.Khipu={}),window.Khipu.showSnackbar=v,window.Khipu.closeModal=window.closeModal,window.Khipu.initBrandInner=a,window.Khipu.initSecureFooterInside=o,window.Khipu.initExpandToggle=i,window.Khipu.initCopyRow=r,window.Khipu.initCountdown=s,window.Khipu.initSegmentedTabs=l,window.Khipu.initCopyableTable=p,window.Khipu.initCopyAllBtn=f,window.Khipu.initInfoTip=m,window.Khipu.initBankModal=c,window.Khipu.initStickyInvoice=u,window.Khipu.initHideOnScroll=d,window.Khipu.initCardHeightTransition=t,window.showSnackbar=v}();
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
*
|
|
16
16
|
* AUTO-GENERATED FILE - DO NOT EDIT MANUALLY
|
|
17
17
|
* Source: design-system/src/tokens/tokens.json
|
|
18
|
-
* Generated: 2026-08-
|
|
18
|
+
* Generated: 2026-08-13T15:55:41.056Z
|
|
19
19
|
*
|
|
20
20
|
* To regenerate:
|
|
21
21
|
* cd design-system && npm run tokens:generate
|
|
@@ -687,6 +687,37 @@
|
|
|
687
687
|
--outline: var(--kds-color-input-border);
|
|
688
688
|
--outline-variant: var(--kds-border-light);
|
|
689
689
|
|
|
690
|
+
/* ========================================
|
|
691
|
+
EXTENDED BRAND ROLES
|
|
692
|
+
|
|
693
|
+
Several roles used to resolve straight to --kds-color-primary-main, which
|
|
694
|
+
meant a brand could not have (say) a green link next to a navy button.
|
|
695
|
+
They are split into their own tokens:
|
|
696
|
+
|
|
697
|
+
--kds-color-accent form icon, expand toggle, checkbox/radio
|
|
698
|
+
--kds-color-accent-soft form icon backdrop
|
|
699
|
+
--kds-font-family-heading display/heading tier
|
|
700
|
+
--kds-invoice-amount-font-family
|
|
701
|
+
--kds-invoice-amount-color
|
|
702
|
+
--kds-button-font-family
|
|
703
|
+
--kds-button-text-transform
|
|
704
|
+
--kds-button-primary-bg
|
|
705
|
+
--kds-button-primary-bg-hover
|
|
706
|
+
|
|
707
|
+
These are deliberately NOT declared here. Each one is consumed as
|
|
708
|
+
var(--new-token, <the expression it used to be>), so the default is
|
|
709
|
+
supplied at the point of use.
|
|
710
|
+
|
|
711
|
+
Declaring them as :root aliases looks equivalent but is not. A custom
|
|
712
|
+
property is substituted on the element that DECLARES it, so
|
|
713
|
+
`--kds-color-accent: var(--kds-color-primary-main)` on :root freezes to
|
|
714
|
+
whatever the primary is at :root. A brand that sets its primary further
|
|
715
|
+
down the tree (which is how khenshin-web applies merchant styles) would
|
|
716
|
+
inherit the already-resolved Khipu purple and lose its own colour. Using
|
|
717
|
+
them as fallbacks resolves against the primary in effect at the consuming
|
|
718
|
+
element, so unbranded output and existing brands are both unchanged.
|
|
719
|
+
======================================== */
|
|
720
|
+
|
|
690
721
|
/* ========================================
|
|
691
722
|
ONBOARDING COMPONENTS TOKENS
|
|
692
723
|
======================================== */
|
|
@@ -1012,12 +1043,12 @@
|
|
|
1012
1043
|
width: 100%;
|
|
1013
1044
|
|
|
1014
1045
|
/* Typography - Using design tokens */
|
|
1015
|
-
font-family: var(--kds-font-family-secondary);
|
|
1046
|
+
font-family: var(--kds-button-font-family, var(--kds-font-family-secondary));
|
|
1016
1047
|
font-weight: var(--kds-font-weight-medium); /* 500 */
|
|
1017
1048
|
font-size: var(--kds-typography-button-font-size); /* 0.875rem = 14px */
|
|
1018
1049
|
line-height: var(--kds-typography-button-line-height); /* 1.5 */
|
|
1019
1050
|
letter-spacing: var(--kds-typography-button-letter-spacing); /* 0.46px */
|
|
1020
|
-
text-transform: uppercase;
|
|
1051
|
+
text-transform: var(--kds-button-text-transform, uppercase);
|
|
1021
1052
|
|
|
1022
1053
|
/* Spacing - Using design tokens */
|
|
1023
1054
|
padding: var(--kds-spacing-button-padding); /* 0 16px */
|
|
@@ -1074,16 +1105,19 @@
|
|
|
1074
1105
|
/* Primary button - Khipu purple */
|
|
1075
1106
|
.kds-theme-root button.kds-btn-primary,
|
|
1076
1107
|
.kds-theme-root a.kds-btn-primary {
|
|
1077
|
-
background: var(--kds-color-primary-main);
|
|
1108
|
+
background: var(--kds-button-primary-bg, var(--kds-color-primary-main)); /* #8347AD */
|
|
1078
1109
|
color: var(--kds-color-primary-contrast); /* #FFF light / dark-purple on dark (lavender bg) */
|
|
1079
1110
|
border: none;
|
|
1080
1111
|
box-shadow: 0 1px 2px rgba(131, 71, 173, .25);
|
|
1081
1112
|
}
|
|
1082
1113
|
|
|
1083
|
-
/* Hover State - background más oscuro
|
|
1114
|
+
/* Hover State - background más oscuro.
|
|
1115
|
+
Its own token, not primary-dark: once a brand sets the button background
|
|
1116
|
+
independently of the primary, deriving hover from the primary would snap it
|
|
1117
|
+
back to the brand's other colour on the first pointer-over. */
|
|
1084
1118
|
.kds-theme-root button.kds-btn-primary:hover:not(:disabled),
|
|
1085
1119
|
.kds-theme-root a.kds-btn-primary:hover:not(:disabled) {
|
|
1086
|
-
background: var(--kds-color-primary-dark);
|
|
1120
|
+
background: var(--kds-button-primary-bg-hover, var(--kds-color-primary-dark)); /* #5B3179 */
|
|
1087
1121
|
}
|
|
1088
1122
|
|
|
1089
1123
|
/* Active/Focus State */
|
|
@@ -1091,7 +1125,7 @@
|
|
|
1091
1125
|
.kds-theme-root button.kds-btn-primary:focus-visible:not(:disabled),
|
|
1092
1126
|
.kds-theme-root a.kds-btn-primary:active:not(:disabled),
|
|
1093
1127
|
.kds-theme-root a.kds-btn-primary:focus-visible:not(:disabled) {
|
|
1094
|
-
background: var(--kds-color-primary-dark);
|
|
1128
|
+
background: var(--kds-button-primary-bg-hover, var(--kds-color-primary-dark));
|
|
1095
1129
|
}
|
|
1096
1130
|
|
|
1097
1131
|
/* Dark mode: the button is a light lavender with dark text, so hover/active must
|
|
@@ -3242,7 +3276,7 @@
|
|
|
3242
3276
|
/* Checked state */
|
|
3243
3277
|
.kds-theme-root label.checkbox input[type="checkbox"]:checked,
|
|
3244
3278
|
.kds-theme-root label.radio input[type="radio"]:checked {
|
|
3245
|
-
accent-color: var(--primary);
|
|
3279
|
+
accent-color: var(--kds-color-accent, var(--primary));
|
|
3246
3280
|
}
|
|
3247
3281
|
|
|
3248
3282
|
/* Disabled state */
|
|
@@ -5011,9 +5045,12 @@
|
|
|
5011
5045
|
background-color: var(--kds-color-info-soft);
|
|
5012
5046
|
}
|
|
5013
5047
|
|
|
5014
|
-
/* ── Typography variants ──
|
|
5048
|
+
/* ── Typography variants ──
|
|
5049
|
+
The display/heading tier resolves through --kds-font-family-heading so a
|
|
5050
|
+
brand can pair a display face with a different body face. Unset by default,
|
|
5051
|
+
so it falls through to the primary family and output is unchanged. */
|
|
5015
5052
|
.kds-theme-root .kds-text-display1 {
|
|
5016
|
-
font-family: var(--kds-font-family-primary, 'Public Sans', sans-serif);
|
|
5053
|
+
font-family: var(--kds-font-family-heading, var(--kds-font-family-primary, 'Public Sans', sans-serif));
|
|
5017
5054
|
font-size: var(--kds-font-size-4xl, 36px);
|
|
5018
5055
|
font-weight: var(--kds-font-weight-bold, 700);
|
|
5019
5056
|
line-height: var(--kds-line-height-tight, 1.2);
|
|
@@ -5021,7 +5058,7 @@
|
|
|
5021
5058
|
}
|
|
5022
5059
|
|
|
5023
5060
|
.kds-theme-root .kds-text-display2 {
|
|
5024
|
-
font-family: var(--kds-font-family-primary, 'Public Sans', sans-serif);
|
|
5061
|
+
font-family: var(--kds-font-family-heading, var(--kds-font-family-primary, 'Public Sans', sans-serif));
|
|
5025
5062
|
font-size: var(--kds-font-size-3xl, 30px);
|
|
5026
5063
|
font-weight: var(--kds-font-weight-bold, 700);
|
|
5027
5064
|
line-height: var(--kds-line-height-tight, 1.2);
|
|
@@ -5029,21 +5066,21 @@
|
|
|
5029
5066
|
}
|
|
5030
5067
|
|
|
5031
5068
|
.kds-theme-root .kds-text-heading1 {
|
|
5032
|
-
font-family: var(--kds-font-family-primary, 'Public Sans', sans-serif);
|
|
5069
|
+
font-family: var(--kds-font-family-heading, var(--kds-font-family-primary, 'Public Sans', sans-serif));
|
|
5033
5070
|
font-size: var(--kds-font-size-2xl, 24px);
|
|
5034
5071
|
font-weight: var(--kds-font-weight-semibold, 600);
|
|
5035
5072
|
line-height: var(--kds-line-height-snug, 1.375);
|
|
5036
5073
|
}
|
|
5037
5074
|
|
|
5038
5075
|
.kds-theme-root .kds-text-heading2 {
|
|
5039
|
-
font-family: var(--kds-font-family-primary, 'Public Sans', sans-serif);
|
|
5076
|
+
font-family: var(--kds-font-family-heading, var(--kds-font-family-primary, 'Public Sans', sans-serif));
|
|
5040
5077
|
font-size: var(--kds-font-size-xl, 20px);
|
|
5041
5078
|
font-weight: var(--kds-font-weight-semibold, 600);
|
|
5042
5079
|
line-height: var(--kds-line-height-snug, 1.375);
|
|
5043
5080
|
}
|
|
5044
5081
|
|
|
5045
5082
|
.kds-theme-root .kds-text-heading3 {
|
|
5046
|
-
font-family: var(--kds-font-family-primary, 'Public Sans', sans-serif);
|
|
5083
|
+
font-family: var(--kds-font-family-heading, var(--kds-font-family-primary, 'Public Sans', sans-serif));
|
|
5047
5084
|
font-size: var(--kds-font-size-lg, 18px);
|
|
5048
5085
|
font-weight: var(--kds-font-weight-semibold, 600);
|
|
5049
5086
|
line-height: var(--kds-line-height-normal, 1.5);
|
|
@@ -6268,7 +6305,7 @@
|
|
|
6268
6305
|
irregular arriba (pegado al resumen) y abajo (~26px hasta el panel). Con height
|
|
6269
6306
|
auto el botón ajusta a su contenido y el ritmo lo gobiernan los márgenes. */
|
|
6270
6307
|
height: auto;
|
|
6271
|
-
color: var(--kds-color-primary-main);
|
|
6308
|
+
color: var(--kds-color-accent, var(--kds-color-primary-main));
|
|
6272
6309
|
font-weight: var(--kds-font-weight-medium);
|
|
6273
6310
|
font-size: var(--kds-font-size-sm);
|
|
6274
6311
|
cursor: pointer;
|
|
@@ -7098,11 +7135,13 @@
|
|
|
7098
7135
|
}
|
|
7099
7136
|
|
|
7100
7137
|
.kds-theme-root .kds-invoice-amount {
|
|
7138
|
+
/* inherit: the amount had no family of its own before, it took the body's. */
|
|
7139
|
+
font-family: var(--kds-invoice-amount-font-family, inherit);
|
|
7101
7140
|
font-weight: var(--kds-font-weight-semibold);
|
|
7102
7141
|
font-size: var(--kds-font-size-3xl);
|
|
7103
7142
|
line-height: var(--kds-line-height-tight);
|
|
7104
7143
|
letter-spacing: var(--kds-letter-spacing-wide);
|
|
7105
|
-
color: var(--kds-color-gray-900);
|
|
7144
|
+
color: var(--kds-invoice-amount-color, var(--kds-color-gray-900));
|
|
7106
7145
|
margin: 0;
|
|
7107
7146
|
}
|
|
7108
7147
|
|
|
@@ -7200,6 +7239,8 @@
|
|
|
7200
7239
|
|
|
7201
7240
|
/* -- Card Title -- */
|
|
7202
7241
|
.kds-theme-root .kds-card-title {
|
|
7242
|
+
/* inherit: the card title had no family of its own before. */
|
|
7243
|
+
font-family: var(--kds-font-family-heading, inherit);
|
|
7203
7244
|
font-weight: var(--kds-font-weight-semibold);
|
|
7204
7245
|
font-size: var(--kds-font-size-base);
|
|
7205
7246
|
line-height: 1.5;
|
|
@@ -9081,7 +9122,11 @@
|
|
|
9081
9122
|
|
|
9082
9123
|
.kds-theme-root .kds-form-icon-box {
|
|
9083
9124
|
align-items: center;
|
|
9084
|
-
background: var(--kds-color-background-brand-subtle, #f0f0fa);
|
|
9125
|
+
background: var(--kds-color-accent-soft, var(--kds-color-background-brand-subtle, #f0f0fa));
|
|
9126
|
+
/* The glyph inherits this, so the icon tracks the accent role without the
|
|
9127
|
+
markup having to name a colour utility. Falls back to the primary, which
|
|
9128
|
+
is what the .kds-text-primary utility on the glyph resolved to. */
|
|
9129
|
+
color: var(--kds-color-accent, var(--kds-color-primary-main));
|
|
9085
9130
|
border-radius: var(--kds-radius-md);
|
|
9086
9131
|
display: flex;
|
|
9087
9132
|
height: 52px;
|