gdx-ui 2.2.4 → 2.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/base.css CHANGED
@@ -1 +1 @@
1
- body{background:var(--body-bg);color:var(--color);font-family:-apple-system,BlinkMacSystemFont,"SF Pro Text","SF Pro Display",system-ui,sans-serif;font-size:14px;font-weight:300;line-height:1.5em}body,html{box-sizing:border-box;height:100%;margin:0;padding:0}h1,h2,h3,h4,h5,h6{font-weight:300;line-height:1.5em;margin:0 0 15px 0;padding:0}h1{font-size:25px}h2{font-size:20px}h3{font-size:16px}h4,h5,h6{font-size:14px;font-weight:500}small{font-size:12px}b,strong{font-weight:500}a,button.anchor{color:#1d9efc;text-decoration:none;background:0 0;border:none;cursor:pointer;padding:0}a:hover,button.anchor:hover{transition:color .2s ease;color:#0390f7}button{font-size:14px}p{margin:0 0 15px}code,pre{font-family:monospace;font-size:14px;color:#777}pre{background:var(--body-bg);border-radius:15px;border:solid 1px var(--border-color);line-height:1.5em;overflow:auto;padding:15px;text-wrap:wrap}hr{border:none;border-bottom:solid 1px var(--border-color);margin:15px 0}.app-layout{box-sizing:border-box;min-height:100%;display:flex;flex-direction:column}.app-body{flex-grow:1}.app-footer,.app-header{flex-grow:0;flex-shrink:0}.wrapper .span-side{width:250px}.wrapper .span-double{width:835px}.wrapper .adds-4 .span-add{width:263.75px}.wrapper .adds-3 .span-add{width:356.66666667px}.wrapper .span-half{width:542.5px}:root{--base-margin:15px}.theme-light,:root{--color:#272729;--btn-bg:#ECEDEF;--btn-bg-darker:#dee0e3;--el-bg:#FFFFFF;--el-bg-highlight:#f2f5f7;--body-bg:#f1f5f8;--border-color:#DDD;--border-radius:15px;--overlay-color:rgba(0, 0, 0, 0.2);--input-bg:#FFFFFF;--primary-color:#1D9EFC;--success-color:#38c153;--alert-color:#ea0835;--warning-color:#ffd500;--active-color:#64FA00;--color-gray:#777}.blink-soft{animation:blinker 2s linear infinite}@keyframes blinker{50%{opacity:.4}}.box{background:var(--el-bg);box-shadow:0 4px 18px rgba(0,0,0,.1);box-shadow:2px 4px 12px rgba(0,0,0,.1);background:#fff;border-radius:15px;transform:translateY(0);transition:transform .25s ease,box-shadow .25s ease;transition-delay:0s;position:relative;margin-bottom:15px}.box-hover:hover{transform:translateY(-2px);box-shadow:0 14px 30px rgba(0,0,0,.2)}.box-header{color:#777;background:#fff;border-radius:15px 15px 0 0}.box-header-collapsed{border-radius:15px}.box .box-footer .row,.box .box-toolbar .row{margin-bottom:0}.box .box-toolbar .form-element{margin-bottom:0}.box .box-top-btn{position:absolute;right:10px;top:10px}.box .box{box-shadow:none;border:solid 1px var(--border-color)}button:focus-visible{outline:1px auto #1D9EFC}.btn-circle:active,.btn:active{outline:3px solid rgba(29,158,252,.7)!important}.btn-circle:focus-visible,.btn:focus-visible{outline:2px solid #038df2;outline-offset:2px}.btn{border:none;border-radius:7.5px;box-sizing:border-box;display:inline-block;font-size:14px;margin:0;text-align:center;text-decoration:none;vertical-align:middle;cursor:pointer;padding:12px 20px;transition:background .2s cubic-bezier(.4, 0, .2, 1)}.btn.disabled,.btn[disabled]{opacity:50%;pointer-events:none}.btn-normal{border:none}.btn-outline{background:0 0;color:var(--color)}.btn-link{border:solid 1px transparent;background:0 0;color:#1d9efc;font-weight:700}.btn-normal-default{background:var(--btn-bg);border:solid 1px var(--btn-bg);color:var(--color)}.btn-outline-default{border:solid 1px #919191;color:var(--color)}.btn-link-default{color:var(--color)}.btn-link-default:hover{background:#ecedef}.btn-normal-default:hover,.btn-outline-default:hover{background:var(--btn-bg-darker);border-color:var(--btn-bg-darker)}.btn-normal-primary{background:#1d9efc;border:solid 1px #1d9efc;color:#fff}.btn-outline-primary{border:solid 1px #1d9efc;color:#1d9efc}.btn-link-primary{color:#1d9efc}.btn-link-primary:hover{background:#e2f1fb}.btn-normal-primary:hover,.btn-outline-primary:hover{color:#fff;background:#038aed}.btn-normal-alert{background:#ea0835;border:solid 1px #ea0835;color:#fff}.btn-outline-alert{border:solid 1px #ea0835;color:#ea0835}.btn-link-alert{color:#ea0835}.btn-link-alert:hover{background:#fcc5c5}.btn-normal-alert:hover,.btn-outline-alert:hover{color:#fff;background:#c3072c}.btn-normal-success{background:#38c153;border:solid 1px #38c153;color:#fff}.btn-outline-success{border:solid 1px #38c153;color:#38c153}.btn-link-success{color:#38c153}.btn-link-success:hover{background:#ddffd4}.btn-normal-success:hover,.btn-outline-success:hover{color:#fff;background:#2fa145}.btn-normal-warning{background:#ffd500;border:solid 1px #ffd500}.btn-outline-warning{border:solid 1px #ffd500;color:#ca0}.btn-link-warning{color:#ca0}.btn-link-warning:hover{background:#fe9}.btn-normal-warning:hover,.btn-outline-warning:hover{color:#fff;background:#f0c800}.btn-size-large{font-size:20px;padding:15px 30px}.btn-size-small{font-size:12px;font-weight:unset;padding:4px 8px}.btn-circle{border-radius:50%;border:none;box-sizing:border-box;display:inline-flex;align-items:center;justify-content:center;height:35px;width:35px;min-height:35px;min-width:35px;max-height:35px;max-width:35px;aspect-ratio:1/1;margin:0;padding:0;overflow:hidden;background:rgba(0,0,0,.05)}.btn-circle.disabled,.btn-circle[disabled]{opacity:30%;pointer-events:none;cursor:not-allowed}.btn-circle:active{outline:3px solid rgba(29,158,252,.7)!important}.btn-circle:hover{background:rgba(0,0,0,.1)}.btn-circle:active{background:rgba(0,0,0,.3)}.btn-circle-size-default{font-size:1em}.btn-circle-size-small{height:25px;width:25px;min-height:25px;min-width:25px;max-height:25px;max-width:25px;font-size:12px}.btn-circle-size-large{height:48px;width:48px;min-height:48px;min-width:48px;max-height:48px;max-width:48px;font-size:20px}.btn-circle-size-large svg{margin-left:0;margin-top:0}.btn-alert:active{outline:3px solid rgba(234,8,53,.7)!important}.btn-alert:focus-visible{outline:2px solid #c7072d;outline-offset:2px}.btn-success:active{outline:3px solid rgba(56,193,83,.7)!important}.btn-success:focus-visible{outline:2px solid #30a547;outline-offset:2px}.btn-warning:active{outline:3px solid rgba(255,213,0,.7)!important}.btn-warning:focus-visible{outline:2px solid #dbb700;outline-offset:2px}.carousel{width:100%;position:relative;overflow:hidden;background:var(--el-bg);border-radius:15px;user-select:none}.carousel-slide{display:flex;height:100%;will-change:transform}.carousel-img-wrapper{min-width:100%;height:100%;position:relative;overflow:hidden}.carousel-img{width:100%;height:100%;object-fit:cover;display:block}.carousel-title{position:absolute;left:0;right:0;bottom:0;background:rgba(0,0,0,.45);color:#fff;padding:15px;font-size:20px;border-radius:0 0 15px 15px}.carousel-btn{position:absolute;top:50%;transform:translateY(-50%);z-index:9}.carousel-btn-left{left:15px}.carousel-btn-right{right:15px}.carousel-dots{position:absolute;left:0;right:0;bottom:15px;display:flex;justify-content:center;gap:15px;z-index:9}.carousel-dot-btn{width:15px;height:15px;border-radius:50%;border:none;cursor:pointer;outline:0;transition:backgrund .2s}.dialog{background:var(--el-bg);box-shadow:0 4px 18px rgba(0,0,0,.1);box-shadow:2px 4px 12px rgba(0,0,0,.1);background:#fff;border-radius:15px;transform:translateY(0);transition:transform .25s ease,box-shadow .25s ease;transition-delay:0s;box-shadow:0 5px 30px rgba(0,0,0,.5);position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);min-width:320px;max-width:90vw;max-height:calc(100vh - 32px);width:auto;margin:0;z-index:10001;display:flex;flex-direction:column;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}.dialog-hover:hover{transform:translateY(-2px);box-shadow:0 14px 30px rgba(0,0,0,.2)}.dialog h1,.dialog h2,.dialog h3{margin:0}.dialog-title{border-bottom:solid 1px var(--border-color);padding:15px;border-radius:15px 15px 0 0}.dialog-content{padding:15px}.dialog-actions{border-top:solid 1px var(--border-color);padding:15px}.dialog-actions .btn,.dialog-actions .flex,.dialog-actions .row{margin-bottom:0}.dialog-close{position:absolute;top:10px;right:15px}.dialog-close button:focus,.dialog-close button:focus-visible{outline:2px solid #038df2;outline-offset:2px}.dialog .box{box-shadow:none;border:solid 1px var(--border-color)!important}.dialog:focus{outline:0}.dialog-overlay{pointer-events:auto;z-index:10000}.dropdown{background:var(--el-bg);box-shadow:0 4px 18px rgba(0,0,0,.1);box-shadow:2px 4px 12px rgba(0,0,0,.1);background:#fff;border-radius:15px;transform:translateY(0);transition:transform .25s ease,box-shadow .25s ease;transition-delay:0s;border:1px solid var(--border-color);padding:5px 0;position:absolute;z-index:99;min-width:400px;max-width:600px;left:0;cursor:pointer;margin:0}.dropdown-hover:hover{transform:translateY(-2px);box-shadow:0 14px 30px rgba(0,0,0,.2)}.dropdown li{list-style:none;margin:0}.dropdown-item{padding:8px 12px}.dropdown-item:hover{background-color:var(--el-bg-highlight)}.dropdown-active{background-color:#1d9efc!important;color:#fff}.navbar-menu-item .dropdown a{margin:0!important;padding:0!important;color:var(--color)!important}.flex{display:flex;gap:15px}.flex-justify-start{justify-content:flex-start}.flex-justify-center{justify-content:center}.flex-justify-end{justify-content:flex-end}.flex-justify-between{justify-content:space-between}.flex-align-start{align-items:flex-start}.flex-align-center{align-items:center}.flex-align-end{align-items:flex-end}.flex-align-stretch{align-items:stretch}.flex-align-baseline{align-items:baseline}.flex[data-cols]{container-type:inline-size;flex-wrap:wrap;align-items:stretch}.flex[data-cols]>.flex-item{flex:0 0 calc((100% - (var(--flex-cols,1) - 1) * var(--flex-gap,15px))/ var(--flex-cols,1));max-width:calc((100% - (var(--flex-cols,1) - 1) * var(--flex-gap,15px))/ var(--flex-cols,1));box-sizing:border-box}@container (max-width:500px){.flex-item{flex:0 0 calc((100% - (var(--flex-phone-cols,1) - 1) * var(--flex-gap,15px))/ var(--flex-phone-cols,1))!important;max-width:calc((100% - (var(--flex-phone-cols,1) - 1) * var(--flex-gap,15px))/ var(--flex-phone-cols,1))!important}}@container (min-width:501px) and (max-width:900px){.flex-item{flex:0 0 calc((100% - (var(--flex-tablet-cols,2) - 1) * var(--flex-gap,15px))/ var(--flex-tablet-cols,2))!important;max-width:calc((100% - (var(--flex-tablet-cols,2) - 1) * var(--flex-gap,15px))/ var(--flex-tablet-cols,2))!important}}input:focus,select:focus,textarea:focus{outline:3px solid rgba(29,158,252,.7);border-color:#1d9efc;border-color:#4fb4fd}.input-inside,button,input,select,textarea{background:var(--input-bg);color:var(--color);font-family:-apple-system,BlinkMacSystemFont,"SF Pro Text","SF Pro Display",system-ui,sans-serif}.input-inside,input,select,textarea{display:inline-block;padding:10px;box-sizing:border-box;font-size:14px;line-height:1.5em;border-radius:7.5px;vertical-align:middle;border:solid 1px var(--border-color);-webkit-transition:border linear .2s,box-shadow linear .2s;transition:border linear .2s,box-shadow linear .2s;margin-bottom:0!important}.input-inside.large,input.large,select.large,textarea.large{font-size:25px;padding:6px 6px}.input-inside:hover,input:hover,select:hover,textarea:hover{-webkit-transition:border linear .2s,box-shadow linear .2s;transition:border linear .2s,box-shadow linear .2s;border-color:#4fb4fd}.editable{display:inline-block;width:100%;min-height:1.4em;padding:2px 0;box-sizing:border-box;font-size:14px;line-height:1.5em;border-radius:7.5px;vertical-align:middle;border:solid 1px transparent;background:0 0;color:var(--color);white-space:pre-wrap;word-break:break-word;outline:0;margin-bottom:0!important}.editable:focus{background:var(--input-bg);outline:3px solid rgba(29,158,252,.7);border-color:#1d9efc}.editable[data-empty=true]::before{content:attr(data-placeholder);color:#777;pointer-events:none}.editable:focus::before{content:''}.inline-elements .form-element{margin-bottom:0}input[type=color]{border:none;padding:0}.input-alert{-webkit-transition:none!important;transition:none!important;border-color:#ea0835!important}.input-alert:focus{outline:3px solid rgba(234,8,53,.7)!important}.input-wrapper{position:relative}.input-reset-btn{position:absolute;right:8px;top:50%;transform:translateY(-50%);z-index:2}.input-inside{padding:0 4px 0 0;height:auto;position:relative}.input-inside input:focus,.input-inside select:focus{outline:0!important}.input-inside :first-child{border-radius:7.5px 0 0 7.5px}.input-inside :last-child{border-radius:0 7.5px 7.5px 0}.input-inside:focus{outline:3px solid rgba(29,158,252,.7);border-color:#1d9efc}.input-inside{position:relative}.input-inside .btn-circle{height:24px;width:24px}.input-focus{outline:3px solid rgba(29,158,252,.7);border-color:#1d9efc}.input-btns{position:absolute;right:5px;top:5px}.label-inline{padding:0!important}.label-inline label{color:#777;padding:4px 8px}.label-inline select{border-right:none!important;border-left:solid 1px var(--border-color);color:var(--color)}.input-inside{height:auto}.input-inside:after,.input-inside:before{display:table;content:"";line-height:0}.input-inside:after{clear:both}.input-inside button,.input-inside i,.input-inside input,.input-inside span{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.input-inside input,.input-inside textarea{border:0!important;box-shadow:none}.input-inside:focus-within{outline:3px solid rgba(29,158,252,.7);border-color:#1d9efc}.input-inside input:focus,.input-inside select:focus{outline:0!important;border-color:transparent}.input-inside select{border:none;box-shadow:none;margin:0;padding:10px;color:#777;border-right:solid 1px var(--border-color);background:var(--input-bg);border-radius:0;height:40px}.input-inside select:focus{background:#e2f1fb}input.disabled,input[disabled]{background-color:var(--el-bg-color);border:none;box-shadow:none;padding:4px 0!important}input:-moz-read-only,input:read-only{color:brown;border:none!important}input[type=checkbox],input[type=radio]{box-shadow:none;box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}select{margin-top:0;color:var(--color)}textarea{resize:none;height:auto}label{display:block}label input,label select,label textarea{margin-bottom:0}fieldset{border:solid 1px var(--border-color);margin-bottom:15px;border-radius:7.5px}legend{color:#777;padding:0 5px}fieldset label{margin-bottom:15px}td label{margin-bottom:0}.form-inline:after,.form-inline:before{display:table;content:"";line-height:0}.form-inline:after{clear:both}.form-inline button,.form-inline input,.form-inline label,.form-inline select,.form-inline textarea{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.toolbar-group:after,.toolbar-group:before{display:table;content:"";line-height:0}.toolbar-group:after{clear:both}.toolbar-group button,.toolbar-group input,.toolbar-group label,.toolbar-group select,.toolbar-group textarea{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle;margin-right:-5px;border-right:solid 1px #fff;border-radius:0}.toolbar-group button:first-child,.toolbar-group input:first-child,.toolbar-group label:first-child,.toolbar-group select:first-child,.toolbar-group textarea:first-child{border-radius:7.5px 0 0 7.5px}.toolbar-group button:last-child,.toolbar-group input:last-child,.toolbar-group label:last-child,.toolbar-group select:last-child,.toolbar-group textarea:last-child{border-radius:0 7.5px 7.5px 0;border-right:solid 1px var(--border-color)}::placeholder{color:#777;opacity:1}:-ms-input-placeholder{color:var(--border-color)}::-ms-input-placeholder{color:var(--border-color)}label.switch{margin-top:-5px}.switch{position:relative;display:inline-block;width:32px;height:19px}.switch input{opacity:0;width:0;height:0;outline:0}.form-switch{display:inline-block}.swith-label{margin-left:5px}.slider{box-shadow:inset 0 1px 3px rgb(0 0 0 / 10%)!important;border-radius:15px;-webkit-transition:background-color .1s;background-color:#ccc;bottom:-1px;cursor:pointer;left:0;position:absolute;right:1px;top:1px;transition:background-color .1s}.slider:before{border-radius:50%;left:2px;width:15px;-webkit-transition:.1s;background-color:#fff;bottom:2px;content:"";height:15px;position:absolute;transition:.1s}input:checked+.slider{background-color:#38c153}input:focus+.slider{box-shadow:0 0 1px #38c153}input:checked+.slider:before{transform:translateX(12px)}.switch input[type=checkbox]:focus+.slider{outline:0}.switch input[type=checkbox]:focus-visible+.slider{outline:3px solid rgba(29,158,252,.7);border-color:#1d9efc;outline-offset:2px}.cust-radio input[type=radio]:focus+.checkmark{outline:0}.cust-radio input[type=radio]:focus-visible+.checkmark{outline:3px solid rgba(29,158,252,.7);border-color:#1d9efc;outline-offset:2px}.input-label,.input-label-alert{display:block;font-size:12px;margin-bottom:2px}.input-label{color:#777}.input-label-alert{color:#ea0835}.cust-radio{display:block;position:relative;padding-left:18px;padding-right:10px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.cust-radio input{position:absolute;opacity:0;cursor:pointer;height:0;width:0}.checkmark{position:absolute;top:4px;left:0;height:15px;width:15px;background-color:var(--border-color);box-shadow:inset 0 1px 3px rgb(0 0 0 / 20%)!important;border-radius:50%}.cust-radio input:checked~.checkmark{background-color:#1d9efc}.checkmark:after{content:"";position:absolute;display:none}.cust-radio input:checked~.checkmark:after{display:block}.cust-radio .checkmark:after{top:5px;left:5px;width:5px;height:5px;border-radius:50%;background:#fff}.hidden-arrows::-webkit-inner-spin-button,.hidden-arrows::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.code-editor{color:#777;font-family:monospace;font-size:12px;border:0;padding:0;width:100%}.code-editor:focus{outline:0!important}.information{border-radius:15px;padding:15px;margin-bottom:15px;position:relative}.information-icon{position:absolute;top:15px;left:15px;font-size:1.2em;opacity:.75}.information-content-icon{padding-left:30px}.information-large{font-size:25px;padding:30px}.information-default{background:var(--el-bg-highlight)}.information-primary{background:#e2f1fb;color:#1d9efc}.information-primary hr{border-bottom:solid 1px #1d9efc}.information-warning{background:#ffd500;color:var(--color)}.information-success{background:#ddffd4;color:#31a949}.information-success hr{border-bottom:solid 1px #38c153}.information-alert{background:#fcc5c5;color:#ea0835}.information-alert hr{border-bottom:solid 1px #ea0835}.badge{cursor:default;display:inline-block;line-height:1.5em;color:#fff;vertical-align:baseline;white-space:nowrap;position:relative}.badge-content{width:100%;display:flex;align-items:center;justify-content:center}.badge:empty{display:none}.badge .btn-circle{margin-left:5px}.badge-default{background-color:var(--btn-bg);color:#777}.badge.badge-primary{background-color:#1d9efc}.badge.badge-warning{color:var(--color);background-color:#ffd500}.badge.badge-success{background-color:#38c153}.badge.badge-alert{background-color:#ea0835}.badge{border-radius:30px;box-shadow:inset 0 1px 4px rgba(0,0,0,.1)}.badge-content{width:100%;display:flex;align-items:center;justify-content:center;padding:7px 18px}.badge-closable .badge-content{padding-right:0!important}.badge-small .badge-content{padding:2px 10px;font-size:12px;min-height:20px}.clear-list ul{margin:0;padding:0}.clear-list ul li{padding:0;list-style:none;line-height:1.5em}.clear-list.none li{margin:0}.clear-list.compact li{margin:0 0 7.5px 0}.clear-list.default li{margin:0 0 15px 0}.clear-list.plenty li{margin:0 0 22.5px 0}.inline-list ul,ul.inline-list{display:flex;gap:15px;margin:0 0 15px;padding:0}.inline-list ul li,ul.inline-list li{padding:0;list-style:none}.loader-squares{display:flex;gap:8px;justify-content:center;align-items:center;height:40px}.loader-square{width:16px;height:16px;border-radius:15px;animation:loader-grow .7s cubic-bezier(.4,0,.2,1) infinite;transform-origin:center;background-color:#1895ff}.loader-square:first-child{animation-delay:0s}.loader-square:nth-child(2){animation-delay:.15s}.loader-square:nth-child(3){animation-delay:.3s}.loader-square:nth-child(4){animation-delay:.45s}.loader-square:nth-child(5){animation-delay:.6s}@keyframes loader-grow{0%{transform:scale(1);background-color:#1895ff}30%{transform:scale(1.5);background-color:#24d3fc}60%{transform:scale(1);background-color:#1fb5fe}100%{transform:scale(1);background-color:#1895ff}}.loader-lock{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,.1);z-index:9990}.loader-wrapper{position:relative;z-index:9999}.loader-full{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%)}.navbar-header{background:#000;border-bottom:solid 3px #1d9efc;box-shadow:0 4px 12px rgba(0,0,0,.1)}.navbar-responsive{-webkit-backdrop-filter:blur(5px);align-items:center;backdrop-filter:blur(5px);color:#fff;display:flex;min-height:60px;padding:0 15px;position:relative;z-index:100}.navbar-logo img{height:40px}.navbar-main{flex:1}.navbar-menu{display:flex;list-style:none;margin:0;padding:0}.navbar-menu .navbar-menu-item{position:relative;cursor:pointer;display:inline-block;z-index:888}.navbar-menu .navbar-menu-item a{color:#fff;display:block;padding:19px 30px}.navbar-menu .navbar-menu-item>.navbar-submenu{display:none;position:absolute;left:0;top:100%;min-width:160px;z-index:999;color:#fff!important;padding:7.5px 0 15px 0;background:rgba(0,0,0,.8);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-radius:0 0 15px 15px;box-shadow:0 4px 12px rgba(0,0,0,.1)}.navbar-menu .navbar-menu-item>.navbar-submenu a{color:#fff;padding:10px 15px}.navbar-menu .navbar-menu-item>.navbar-submenu li:hover{background-color:rgba(255,255,255,.12);color:#fff}.navbar-menu .navbar-menu-item>.navbar-submenu li:hover>a{color:#fff}.navbar-icon-area,.navbar-menu,.navbar-menu-item.has-submenu>.navbar-submenu{color:#fff;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}.navbar-menu-item.open>.navbar-submenu,.navbar-menu-item:hover>.navbar-submenu{display:block}.navbar-menu-item.active,.navbar-submenu-item.active{background:rgba(255,255,255,.1)}.navbar-icon-btn:hover,.navbar-menu-item:hover,.navbar-submenu-item:hover{background:rgba(255,255,255,.08)}.navbar-submenu{list-style:none;margin:0;padding:0}.navbar-icons{display:flex;gap:.5rem}.navbar-icons .navbar-icon-wrapper{position:relative}.navbar-icons .navbar-icon-btn{color:#fff;background:0 0;border:none;cursor:pointer;font-size:1.2em;height:40px;width:40px;display:flex;align-items:center;justify-content:center;opacity:.8}.navbar-icons .navbar-icon-btn:hover{opacity:1}.navbar-icons .navbar-icon-btn.active{color:#1d9efc;opacity:1}.navbar-hamburger{display:none;background:0 0;border:none;font-size:1.5em;margin-left:1rem;cursor:pointer;color:#fff}.navbar-icon-area{display:none;position:absolute;left:50%;transform:translateX(-50%);top:100%;z-index:99;width:1100px;max-width:calc(100vw - (15px * 2));box-sizing:border-box;background:rgba(0,0,0,.8);border-radius:0 0 15px 15px;padding:15px;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}.navbar-icon-area.open{display:block}.navbar-icon-area-content{display:flex;justify-content:center;width:100%}.pagination{padding-bottom:15px}.pagination-bar{width:100%;display:flex;justify-content:center;align-items:center;padding:15px 0}.pagination-bar-inner{display:flex;align-items:center;gap:15px;min-width:150px;max-width:220px}.pagination-input{width:48px;text-align:center;border-radius:15px;border:1px solid #ccc;padding:4px 0;font-size:1em}.row{display:flex;flex-wrap:wrap;width:100%;gap:15px;margin-bottom:15px}.row-item{box-sizing:border-box}.list-scroller-wrapper{width:100%;position:relative}.list-scroller{display:flex;overflow-x:auto;scroll-behavior:smooth;gap:15px;width:100%;scrollbar-width:none;-ms-overflow-style:none;margin:0;padding:5px}.list-scroller::-webkit-scrollbar{display:none}.list-scroller li{margin:0;padding:0;list-style:none}.list-scroller-btn{position:absolute;z-index:9;background:#ccc;top:50%;transform:translateY(-50%)}.list-scroller-btn-left{left:-15px}.list-scroller-btn-right{right:-15px}.skeleton{background:linear-gradient(90deg,var(--btn-bg) 25%,#aaa 50%,var(--btn-bg) 75%);background-size:200% 100%;animation:skeleton-shimmer 2s infinite linear;border-radius:15px;padding:15px;margin-bottom:15px;position:relative;overflow:hidden}@keyframes skeleton-shimmer{0%{background-position:200% 0}100%{background-position:-200% 0}}.snackbar{padding:15px 60px 15px 15px;color:#fff;border-radius:15px;margin:auto;margin-bottom:15px;box-sizing:border-box;position:relative;min-width:500px;box-shadow:0 3px 10px rgba(0,0,0,.3)}.snackbar .snackbar-close{position:absolute;top:10px;right:10px}.snackbar-stack{position:fixed;bottom:15px;left:50%;transform:translateX(-50%);z-index:9999;display:flex;flex-direction:column;align-items:center}table{max-width:100%;border-collapse:collapse;border-spacing:0}.table{cursor:default;border-bottom:solid 1px transparent;margin-bottom:15px;border-collapse:separate;background:var(--el-bg)}.table thead td,.table thead th{background-color:var(--el-bg);border-bottom:solid 1px var(--border-color);color:#777;font-weight:400;position:sticky;top:0;z-index:5}.table thead td a,.table thead td button.anchor,.table thead th a,.table thead th button.anchor{color:#777!important}.table thead td a:hover,.table thead td button.anchor:hover,.table thead th a:hover,.table thead th button.anchor:hover{text-decoration:underline;color:#5e5e5e}.table thead td:first-child,.table thead th:first-child{border-radius:15px 0 0 0}.table thead td:last-child,.table thead th:last-child{border-radius:0 15px 0 0}.table td,.table th{padding:8px 6px;line-height:1.5em}.table td .form-element,.table th .form-element{margin-bottom:0!important}.table td .btn,.table td .row,.table th .btn,.table th .row{margin-bottom:0}.table tbody td,.table tbody th{border-top:solid 1px transparent}.table .overlined td,.table .overlined th{border-top:solid 1px var(--border-color)}.table .underlined td,.table .underlined th{border-bottom:solid 1px var(--border-color)}.table tr.valign-middle td{vertical-align:middle}.table tr.valign-top td{vertical-align:top}.table tr.valign-bottom td{vertical-align:bottom}.table-striped tbody tr:nth-child(odd){background-color:var(--el-bg-highlight)}.table-hover tbody tr:hover>td{background-color:#cce6f8}.table-hover tbody tr:hover>td.highlight-primary{background-color:#b5dbf5}.table-hover tbody tr:hover>td.highlight-success{background-color:#b5ffa1}.table-hover tbody tr:hover>td.highlight-alert{background-color:#f99595}.table-hover tbody tr:hover>td.highlight-warning{background-color:#ffe666}.table td.highlight-primary,.table th.highlight-primary,.table tr.highlight-primary td,.table tr.highlight-primary th{background-color:#e2f1fb}.table td.highlight-alert,.table th.highlight-alert,.table tr.highlight-alert td,.table tr.highlight-alert th{background-color:#fcc5c5}.table td.highlight-success,.table th.highlight-success,.table tr.highlight-success td,.table tr.highlight-success th{background-color:#ddffd4}.table td.highlight-warning,.table th.highlight-warning,.table tr.highlight-warning td,.table tr.highlight-warning th{background-color:#fe9}.table .input-wrapper,.table .uneditable-input,.table input,.table select,.table textarea{margin-bottom:0}.tabs{display:flex;border-bottom:solid 1px var(--border-color)}.tabs .tab{padding:15px;margin:0;border:none;cursor:pointer;border:solid 1px transparent;border-radius:15px 15px 0 0}.tabs .tab.active{border:solid 1px var(--border-color);border-bottom:solid 1px #fff;color:#1d9efc;position:relative;z-index:9;background:#fff;bottom:-1px}.tabs .tab.disabled,.tabs .tab[disabled]{color:#919191;pointer-events:none}.tab-content{padding:15px;border:solid 1px var(--border-color);border-top:solid 1px transparent;border-radius:0 0 15px 15px;position:relative;z-index:1;background:#fff}.image{display:flex}.image-left{justify-content:flex-start}.image-right{justify-content:flex-end}.image-center{justify-content:center}.thumb{background-color:#fff!important;border-radius:15px;box-sizing:border-box;overflow:hidden;position:relative;display:flex;align-items:center;justify-content:center;width:100%}.thumb img{max-width:100%;max-height:100%;object-fit:contain;display:block}.thumb.thumb-bordered{border:solid 1px var(--border-color)}.thumb-small{width:56px;height:56px}.thumb-smallest{width:32px;height:32px}.thumb-medium{width:80px;height:80px}.thumb-large{width:160px;height:160px}.thumb-largest{width:240px;height:240px}.thumb .thumb-corner{position:absolute;top:-13px;right:-13px}.image-zoom{overflow:hidden;position:relative;touch-action:none;background:#fff}.image-zoom img{position:absolute;user-select:none}.image-zoom-caption{position:absolute;bottom:15px;background:rgba(0,0,0,.25);border-radius:15px;color:#fff;padding:5px 15px;font-size:12px;z-index:9;left:50%;transform:translateX(-50%);display:block}.tooltip-wrapper{position:relative;display:inline-block}.tooltip{position:absolute;bottom:120%;left:50%;transform:translateX(-50%);background:rgba(0,0,0,.7);color:#fff;padding:6px 12px;border-radius:15px;white-space:nowrap;z-index:100;font-size:.9em;box-shadow:0 2px 8px rgba(0,0,0,.15)}ul.tree{list-style:none;padding:0;margin:0 0 15px 0}ul.tree ul.tree{margin-left:-23px;margin-top:4px;margin-bottom:0}ul.tree li{margin:0;padding:3px 10px;line-height:2rem;border-left:1px solid #646464;cursor:default;position:relative}ul.tree li .tree-content{display:inline-block;margin:3px 0 0 15px}ul.tree li .tree-content-button{display:inline-block;margin:3px 0 0 45px}ul.tree li .tree-last-content{display:inline-block;margin:3px 0 0 15px}ul.tree li .tree-button{position:absolute;top:3px;left:15px;z-index:5}ul.tree li:last-child{border-left:none;line-height:15px!important}ul.tree li:last-child:before{border-left:1px solid #646464}ul.tree li:before{position:absolute;top:-3px;height:1.6em;width:15px;color:#fff;border-bottom:1px solid #646464;content:"";display:inline-block;left:0}ul.tree li:after{position:relative;top:-.3em;height:1.6em;width:15px;color:#fff;content:"";display:inline-block;left:-7px}.text-content{line-height:1.5}.text-size-small{font-size:12px}.text-size-normal{font-size:14px}.text-size-large{font-size:25px}.margin-top{margin-top:15px}.margin-bottom{margin-bottom:15px}.margin-both{margin:15px 0}.collapesed{margin:0}.separated{margin:15px 0}.color-default{color:var(--color)!important}.color-primary{color:#1d9efc!important}.color-success{color:#38c153!important}.color-alert{color:#ea0835!important}.color-warning{color:#ffd500!important}.color-active{color:#64fa00!important}.color-gray{color:#777!important}.bg-primary{background-color:#1d9efc!important;color:#fff}.bg-success{background-color:#38c153!important;color:#fff}.bg-alert{background-color:#ea0835!important;color:#fff}.bg-warning{background-color:#ffd500!important;color:#272729}.bg-default,.bg-gray{background-color:#777!important;color:#fff}.bg-active{background-color:#64fa00!important}.bg-alert .btn-circle svg,.bg-default .btn-circle svg,.bg-primary .btn-circle svg,.bg-success .btn-circle svg{color:#fff!important}.inline{display:inline-block;vertical-align:middle}.note{color:#777;font-size:12px;font-weight:400}.note a{color:#777;text-decoration:underline}.note a:hover{color:#1d9efc}.relative{position:relative}.absolute{position:absolute}.corner-btn{position:absolute;right:15px;top:15px}.center{text-align:center}.right{text-align:right}.left{text-align:left}.content{padding:15px}.visible{visibility:visible}.invisible{visibility:hidden}.hidden{display:none}.expanded{width:100%;margin-bottom:15px}.rounded{border-radius:15px}.bordered{border:solid 1px var(--border-color);border-radius:15px}.bordered-primary{border-color:#1d9efc}.border-top{border-top:solid 1px var(--border-color)}.border-bottom{border-bottom:solid 1px var(--border-color)}.overlay{background:var(--overlay-color);height:100%;left:0;position:fixed;top:0;transition:.2s;width:100%;z-index:99}.component-locker{background:var(--overlay-color);border-radius:15px;height:100%;left:0;position:absolute;top:0;transition:.2s;width:100%;z-index:9}.outline-primary{outline:1px dashed #1D9EFC}.outline-success{outline:1px dashed #38c153}.spacing-none{margin-bottom:0}.spacing-compact{margin-bottom:7.5px}.spacing-default,.spacing-normal{margin-bottom:15px}.spacing-plenty{margin-bottom:22.5px}.container-align-left .container-item{display:flex;justify-content:flex-start}.container-align-center .container-item{display:flex;justify-content:center}.container-align-right .container-item{display:flex;justify-content:flex-end}.container .container-item .container-align-left{display:flex;justify-content:flex-start}.container .container-item .container-align-center{display:flex;justify-content:center}.container .container-item .container-align-right{display:flex;justify-content:flex-end}.container-none .container-item{margin-bottom:0}.container-compact .container-item{margin-bottom:7.5px}.container-default .container-item,.container-normal .container-item{margin-bottom:15px}.container-plenty .container-item{margin-bottom:22.5px}.widget{box-shadow:2px 4px 12px rgba(0,0,0,.1);background:#fff;border-radius:15px;transform:translateY(0);transition:transform .25s ease,box-shadow .25s ease;transition-delay:0s}.widget-hover:hover{transform:translateY(-2px);box-shadow:0 14px 30px rgba(0,0,0,.2)}.wrapper{position:relative;margin:auto}.wrapper-large{width:1100px}.wrapper-large .role-mainside{width:835px}.wrapper-large .role-sidebar{width:250px}.wrapper-large .role-half{width:550px}.wrapper-large .box .role-mainside{width:820px}.wrapper-large .box .role-sidebar{width:820px}.wrapper-small{width:366.66666667px}.wrapper-medium{width:550px}@-ms-viewport{width:device-width}@media (max-width:500px){body{font-size:14px}h1,h2,h3{font-size:1.1em}.wrapper-default,.wrapper-large{width:96%;margin:auto}.navbar-icon-area{width:96%;max-width:96%}.row-item{flex:0 0 100%!important;max-width:100%!important}.btn{width:100%}.snackbar{width:100%}.expanded-phone{width:100%}.dialog{width:95%!important}.hide-phone{display:none!important}.show-phone{display:block!important}}@media (min-width:501px) and (max-width:900px){body{font-size:14px}h1{font-size:1.3em}h2,h3{font-size:1.1em}.wrapper-default,.wrapper-large{width:96%;margin:auto}.navbar-icon-area{width:96%;max-width:96%}.row-item{flex:0 0 calc(50% - (15px / 2))!important;max-width:calc(50% - (15px / 2))!important}.snackbar{width:100%}}@media (max-width:900px){.navbar-menu{flex-direction:column;display:none;background:rgba(0,0,0,.88);position:absolute;left:0;top:56px;width:100%;box-shadow:0 4px 16px rgba(0,0,0,.24);color:#fff}.navbar-main.open .navbar-menu{display:flex}.navbar-hamburger{display:block}.navbar-menu-item{width:100%}.navbar-menu-item>a{color:#fff;padding:16px 20px}.navbar-menu-item:hover>.navbar-submenu{display:none}.navbar-menu-item.open>.navbar-submenu{display:block}.navbar-submenu{position:static!important;min-width:100%!important;border:none!important;border-radius:0!important}.navbar-submenu a{color:#fff!important;padding:12px 20px 12px 38px!important}.navbar-submenu-item{color:#fff}.navbar-submenu-item:hover{background:rgba(255,255,255,.08)}.navbar-icons{margin-left:auto}}
1
+ body{background:var(--body-bg);color:var(--color);font-family:-apple-system,BlinkMacSystemFont,"SF Pro Text","SF Pro Display",system-ui,sans-serif;font-size:14px;font-weight:300;line-height:1.5em}body,html{box-sizing:border-box;height:100%;margin:0;padding:0}h1,h2,h3,h4,h5,h6{font-weight:300;line-height:1.5em;margin:0 0 15px 0;padding:0}h1{font-size:25px}h2{font-size:20px}h3{font-size:16px}h4,h5,h6{font-size:14px;font-weight:500}small{font-size:12px}b,strong{font-weight:500}a,button.anchor{color:#1d9efc;text-decoration:none;background:0 0;border:none;cursor:pointer;padding:0}a:hover,button.anchor:hover{transition:color .2s ease;color:#0390f7}button{font-size:14px}p{margin:0 0 15px}code,pre{font-family:monospace;font-size:14px;color:#777}pre{background:var(--body-bg);border-radius:15px;border:solid 1px var(--border-color);line-height:1.5em;overflow:auto;padding:15px;text-wrap:wrap}hr{border:none;border-bottom:solid 1px var(--border-color);margin:15px 0}.app-layout{box-sizing:border-box;min-height:100%;display:flex;flex-direction:column}.app-body{flex-grow:1}.app-footer,.app-header{flex-grow:0;flex-shrink:0}.wrapper .span-side{width:250px}.wrapper .span-double{width:835px}.wrapper .adds-4 .span-add{width:263.75px}.wrapper .adds-3 .span-add{width:356.66666667px}.wrapper .span-half{width:542.5px}:root{--base-margin:15px}.theme-light,:root{--color:#272729;--btn-bg:#ECEDEF;--btn-bg-darker:#dee0e3;--el-bg:#FFFFFF;--el-bg-highlight:#f2f5f7;--body-bg:#f1f5f8;--border-color:#DDD;--border-radius:15px;--overlay-color:rgba(0, 0, 0, 0.2);--input-bg:#FFFFFF;--primary-color:#1D9EFC;--success-color:#38c153;--alert-color:#ea0835;--warning-color:#ffd500;--active-color:#64FA00;--color-gray:#777}.blink-soft{animation:blinker 2s linear infinite}@keyframes blinker{50%{opacity:.4}}.box{background:var(--el-bg);box-shadow:0 4px 18px rgba(0,0,0,.1);box-shadow:2px 4px 12px rgba(0,0,0,.1);background:#fff;border-radius:15px;transform:translateY(0);transition:transform .25s ease,box-shadow .25s ease;transition-delay:0s;position:relative;margin-bottom:15px}.box-hover:hover{transform:translateY(-2px);box-shadow:0 14px 30px rgba(0,0,0,.2)}.box-header{color:#777;background:#fff;border-radius:15px 15px 0 0}.box-header-collapsed{border-radius:15px}.box .box-footer .row,.box .box-toolbar .row{margin-bottom:0}.box .box-toolbar .form-element{margin-bottom:0}.box .box-top-btn{position:absolute;right:10px;top:10px}.box .box{box-shadow:none;border:solid 1px var(--border-color)}button:focus-visible{outline:1px auto #1D9EFC}.btn-circle:active,.btn:active{outline:3px solid rgba(29,158,252,.7)!important}.btn-circle:focus-visible,.btn:focus-visible{outline:2px solid #038df2;outline-offset:2px}.btn{border:none;border-radius:7.5px;box-sizing:border-box;display:inline-block;font-size:14px;margin:0;text-align:center;text-decoration:none;vertical-align:middle;cursor:pointer;padding:12px 20px;transition:background .2s cubic-bezier(.4, 0, .2, 1)}.btn.disabled,.btn[disabled]{opacity:50%;pointer-events:none}.btn.active{box-shadow:inset 0 3px 5px rgba(0,0,0,.125);background:var(--btn-bg);border:solid 1px var(--btn-bg);color:var(--color)}.btn-normal{border:none}.btn-outline{background:0 0;color:var(--color)}.btn-link{border:solid 1px transparent;background:0 0;color:#1d9efc;font-weight:700}.btn-normal-default{background:var(--btn-bg);border:solid 1px var(--btn-bg);color:var(--color)}.btn-outline-default{border:solid 1px #919191;color:var(--color)}.btn-link-default{color:var(--color)}.btn-link-default:hover{background:#ecedef}.btn-normal-default:hover,.btn-outline-default:hover{background:var(--btn-bg-darker);border-color:var(--btn-bg-darker)}.btn-normal-primary{background:#1d9efc;border:solid 1px #1d9efc;color:#fff}.btn-outline-primary{border:solid 1px #1d9efc;color:#1d9efc}.btn-link-primary{color:#1d9efc}.btn-link-primary:hover{background:#e2f1fb}.btn-normal-primary:hover,.btn-outline-primary:hover{color:#fff;background:#038aed}.btn-normal-alert{background:#ea0835;border:solid 1px #ea0835;color:#fff}.btn-outline-alert{border:solid 1px #ea0835;color:#ea0835}.btn-link-alert{color:#ea0835}.btn-link-alert:hover{background:#fcc5c5}.btn-normal-alert:hover,.btn-outline-alert:hover{color:#fff;background:#c3072c}.btn-normal-success{background:#38c153;border:solid 1px #38c153;color:#fff}.btn-outline-success{border:solid 1px #38c153;color:#38c153}.btn-link-success{color:#38c153}.btn-link-success:hover{background:#ddffd4}.btn-normal-success:hover,.btn-outline-success:hover{color:#fff;background:#2fa145}.btn-normal-warning{background:#ffd500;border:solid 1px #ffd500}.btn-outline-warning{border:solid 1px #ffd500;color:#ca0}.btn-link-warning{color:#ca0}.btn-link-warning:hover{background:#fe9}.btn-normal-warning:hover,.btn-outline-warning:hover{color:#fff;background:#f0c800}.btn-size-large{font-size:20px;padding:15px 30px}.btn-size-small{font-size:12px;font-weight:unset;padding:4px 8px}.btn-circle{border-radius:50%;border:none;box-sizing:border-box;display:inline-flex;align-items:center;justify-content:center;height:35px;width:35px;min-height:35px;min-width:35px;max-height:35px;max-width:35px;aspect-ratio:1/1;margin:0;padding:0;overflow:hidden;background:rgba(0,0,0,.05)}.btn-circle.disabled,.btn-circle[disabled]{opacity:30%;pointer-events:none;cursor:not-allowed}.btn-circle:active{outline:3px solid rgba(29,158,252,.7)!important}.btn-circle:hover{background:rgba(0,0,0,.1)}.btn-circle:active{background:rgba(0,0,0,.3)}.btn-circle-size-default{font-size:1em}.btn-circle-size-small{height:25px;width:25px;min-height:25px;min-width:25px;max-height:25px;max-width:25px;font-size:12px}.btn-circle-size-large{height:48px;width:48px;min-height:48px;min-width:48px;max-height:48px;max-width:48px;font-size:20px}.btn-circle-size-large svg{margin-left:0;margin-top:0}.btn-alert:active{outline:3px solid rgba(234,8,53,.7)!important}.btn-alert:focus-visible{outline:2px solid #c7072d;outline-offset:2px}.btn-success:active{outline:3px solid rgba(56,193,83,.7)!important}.btn-success:focus-visible{outline:2px solid #30a547;outline-offset:2px}.btn-warning:active{outline:3px solid rgba(255,213,0,.7)!important}.btn-warning:focus-visible{outline:2px solid #dbb700;outline-offset:2px}.carousel{width:100%;position:relative;overflow:hidden;background:var(--el-bg);border-radius:15px;user-select:none}.carousel-slide{display:flex;height:100%;will-change:transform}.carousel-img-wrapper{min-width:100%;height:100%;position:relative;overflow:hidden}.carousel-img{width:100%;height:100%;object-fit:cover;display:block}.carousel-title{position:absolute;left:0;right:0;bottom:0;background:rgba(0,0,0,.45);color:#fff;padding:15px;font-size:20px;border-radius:0 0 15px 15px}.carousel-btn{position:absolute;top:50%;transform:translateY(-50%);z-index:9}.carousel-btn-left{left:15px}.carousel-btn-right{right:15px}.carousel-dots{position:absolute;left:0;right:0;bottom:15px;display:flex;justify-content:center;gap:15px;z-index:9}.carousel-dot-btn{width:15px;height:15px;border-radius:50%;border:none;cursor:pointer;outline:0;transition:backgrund .2s}.drawer{background:var(--el-bg);box-shadow:0 4px 18px rgba(0,0,0,.1);box-shadow:2px 4px 12px rgba(0,0,0,.1);background:#fff;border-radius:15px;transform:translateY(0);transition:transform .25s ease,box-shadow .25s ease;transition-delay:0s;position:fixed;z-index:10001;display:flex;flex-direction:column;box-shadow:0 5px 30px rgba(0,0,0,.35);max-width:100vw;max-height:100vh}.drawer-hover:hover{transform:translateY(-2px);box-shadow:0 14px 30px rgba(0,0,0,.2)}.drawer-content{flex:1;overflow-y:auto;padding:15px}.drawer-close{position:absolute;top:10px;right:15px;z-index:2}.drawer-right{right:0;top:0;width:min(420px,92vw);height:100vh;border-radius:0;animation:drawer-slide-in-right .2s ease-out}.drawer-left{left:0;top:0;width:min(420px,92vw);height:100vh;border-radius:0;animation:drawer-slide-in-left .2s ease-out}.drawer-top{left:0;top:0;width:100vw;height:min(360px,92vh);border-radius:0 0 15px 15px;animation:drawer-slide-in-top .2s ease-out}.drawer-bottom{left:0;bottom:0;width:100vw;height:min(360px,92vh);border-radius:15px 15px 0 0;animation:drawer-slide-in-bottom .2s ease-out}.drawer-overlay{pointer-events:auto;z-index:10000}@keyframes drawer-slide-in-right{from{transform:translateX(100%)}to{transform:translateX(0)}}@keyframes drawer-slide-in-left{from{transform:translateX(-100%)}to{transform:translateX(0)}}@keyframes drawer-slide-in-top{from{transform:translateY(-100%)}to{transform:translateY(0)}}@keyframes drawer-slide-in-bottom{from{transform:translateY(100%)}to{transform:translateY(0)}}.dialog{background:var(--el-bg);box-shadow:0 4px 18px rgba(0,0,0,.1);box-shadow:2px 4px 12px rgba(0,0,0,.1);background:#fff;border-radius:15px;transform:translateY(0);transition:transform .25s ease,box-shadow .25s ease;transition-delay:0s;box-shadow:0 5px 30px rgba(0,0,0,.5);position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);min-width:320px;max-width:90vw;max-height:calc(100vh - 32px);width:auto;margin:0;z-index:10001;display:flex;flex-direction:column;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}.dialog-hover:hover{transform:translateY(-2px);box-shadow:0 14px 30px rgba(0,0,0,.2)}.dialog h1,.dialog h2,.dialog h3{margin:0}.dialog-title{border-bottom:solid 1px var(--border-color);padding:15px;border-radius:15px 15px 0 0}.dialog-content{padding:15px}.dialog-actions{border-top:solid 1px var(--border-color);padding:15px}.dialog-actions .btn,.dialog-actions .flex,.dialog-actions .row{margin-bottom:0}.dialog-close{position:absolute;top:10px;right:15px}.dialog-close button:focus,.dialog-close button:focus-visible{outline:2px solid #038df2;outline-offset:2px}.dialog .box{box-shadow:none;border:solid 1px var(--border-color)!important}.dialog:focus{outline:0}.dialog-overlay{pointer-events:auto;z-index:10000}.dropdown{background:var(--el-bg);box-shadow:0 4px 18px rgba(0,0,0,.1);box-shadow:2px 4px 12px rgba(0,0,0,.1);background:#fff;border-radius:15px;transform:translateY(0);transition:transform .25s ease,box-shadow .25s ease;transition-delay:0s;border:1px solid var(--border-color);padding:5px 0;position:absolute;z-index:99;min-width:400px;max-width:600px;left:0;cursor:pointer;margin:0}.dropdown-hover:hover{transform:translateY(-2px);box-shadow:0 14px 30px rgba(0,0,0,.2)}.dropdown li{list-style:none;margin:0}.dropdown-item{padding:8px 12px}.dropdown-item:hover{background-color:var(--el-bg-highlight)}.dropdown-active{background-color:#1d9efc!important;color:#fff}.navbar-menu-item .dropdown a{margin:0!important;padding:0!important;color:var(--color)!important}.flex{display:flex;gap:15px}.flex-justify-start{justify-content:flex-start}.flex-justify-center{justify-content:center}.flex-justify-end{justify-content:flex-end}.flex-justify-between{justify-content:space-between}.flex-align-start{align-items:flex-start}.flex-align-center{align-items:center}.flex-align-end{align-items:flex-end}.flex-align-stretch{align-items:stretch}.flex-align-baseline{align-items:baseline}.flex[data-cols]{container-type:inline-size;flex-wrap:wrap;align-items:stretch}.flex[data-cols]>.flex-item{flex:0 0 calc((100% - (var(--flex-cols,1) - 1) * var(--flex-gap,15px))/ var(--flex-cols,1));max-width:calc((100% - (var(--flex-cols,1) - 1) * var(--flex-gap,15px))/ var(--flex-cols,1));box-sizing:border-box}@container (max-width:500px){.flex-item{flex:0 0 calc((100% - (var(--flex-phone-cols,1) - 1) * var(--flex-gap,15px))/ var(--flex-phone-cols,1))!important;max-width:calc((100% - (var(--flex-phone-cols,1) - 1) * var(--flex-gap,15px))/ var(--flex-phone-cols,1))!important}}@container (min-width:501px) and (max-width:900px){.flex-item{flex:0 0 calc((100% - (var(--flex-tablet-cols,2) - 1) * var(--flex-gap,15px))/ var(--flex-tablet-cols,2))!important;max-width:calc((100% - (var(--flex-tablet-cols,2) - 1) * var(--flex-gap,15px))/ var(--flex-tablet-cols,2))!important}}input:focus,select:focus,textarea:focus{outline:3px solid rgba(29,158,252,.7);border-color:#1d9efc;border-color:#4fb4fd}.input-inside,button,input,select,textarea{background:var(--input-bg);color:var(--color);font-family:-apple-system,BlinkMacSystemFont,"SF Pro Text","SF Pro Display",system-ui,sans-serif}.input-inside,input,select,textarea{display:inline-block;padding:10px;box-sizing:border-box;font-size:14px;line-height:1.5em;border-radius:7.5px;vertical-align:middle;border:solid 1px var(--border-color);-webkit-transition:border linear .2s,box-shadow linear .2s;transition:border linear .2s,box-shadow linear .2s;margin-bottom:0!important}.input-inside.large,input.large,select.large,textarea.large{font-size:25px;padding:6px 6px}.input-inside:hover,input:hover,select:hover,textarea:hover{-webkit-transition:border linear .2s,box-shadow linear .2s;transition:border linear .2s,box-shadow linear .2s;border-color:#4fb4fd}.editable{display:inline-block;width:100%;min-height:1.4em;padding:2px 0;box-sizing:border-box;font-size:14px;line-height:1.5em;border-radius:7.5px;vertical-align:middle;border:solid 1px transparent;background:0 0;color:var(--color);white-space:pre-wrap;word-break:break-word;outline:0;margin-bottom:0!important}.editable:focus{background:var(--input-bg);outline:3px solid rgba(29,158,252,.7);border-color:#1d9efc}.editable[data-empty=true]::before{content:attr(data-placeholder);color:#777;pointer-events:none}.editable:focus::before{content:''}.inline-elements .form-element{margin-bottom:0}input[type=color]{border:none;padding:0}.input-alert{-webkit-transition:none!important;transition:none!important;border-color:#ea0835!important}.input-alert:focus{outline:3px solid rgba(234,8,53,.7)!important}.input-wrapper{position:relative}.input-reset-btn{position:absolute;right:8px;top:50%;transform:translateY(-50%);z-index:2}.input-inside{padding:0 4px 0 0;height:auto;position:relative}.input-inside input:focus,.input-inside select:focus{outline:0!important}.input-inside :first-child{border-radius:7.5px 0 0 7.5px}.input-inside :last-child{border-radius:0 7.5px 7.5px 0}.input-inside:focus{outline:3px solid rgba(29,158,252,.7);border-color:#1d9efc}.input-inside{position:relative}.input-inside .btn-circle{height:24px;width:24px}.input-focus{outline:3px solid rgba(29,158,252,.7);border-color:#1d9efc}.input-btns{position:absolute;right:5px;top:5px}.label-inline{padding:0!important}.label-inline label{color:#777;padding:4px 8px}.label-inline select{border-right:none!important;border-left:solid 1px var(--border-color);color:var(--color)}.input-inside{height:auto}.input-inside:after,.input-inside:before{display:table;content:"";line-height:0}.input-inside:after{clear:both}.input-inside button,.input-inside i,.input-inside input,.input-inside span{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.input-inside input,.input-inside textarea{border:0!important;box-shadow:none}.input-inside:focus-within{outline:3px solid rgba(29,158,252,.7);border-color:#1d9efc}.input-inside input:focus,.input-inside select:focus{outline:0!important;border-color:transparent}.input-inside select{border:none;box-shadow:none;margin:0;padding:10px;color:#777;border-right:solid 1px var(--border-color);background:var(--input-bg);border-radius:0;height:40px}.input-inside select:focus{background:#e2f1fb}input.disabled,input[disabled]{background-color:var(--el-bg-color);border:none;box-shadow:none;padding:4px 0!important}input:-moz-read-only,input:read-only{color:brown;border:none!important}input[type=checkbox],input[type=radio]{box-shadow:none;box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}select{margin-top:0;color:var(--color)}textarea{resize:none;height:auto}label{display:block}label input,label select,label textarea{margin-bottom:0}fieldset{border:solid 1px var(--border-color);margin-bottom:15px;border-radius:7.5px}legend{color:#777;padding:0 5px}fieldset label{margin-bottom:15px}td label{margin-bottom:0}.form-inline:after,.form-inline:before{display:table;content:"";line-height:0}.form-inline:after{clear:both}.form-inline button,.form-inline input,.form-inline label,.form-inline select,.form-inline textarea{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.toolbar-group:after,.toolbar-group:before{display:table;content:"";line-height:0}.toolbar-group:after{clear:both}.toolbar-group button,.toolbar-group input,.toolbar-group label,.toolbar-group select,.toolbar-group textarea{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle;margin-right:-5px;border-right:solid 1px #fff;border-radius:0}.toolbar-group button:first-child,.toolbar-group input:first-child,.toolbar-group label:first-child,.toolbar-group select:first-child,.toolbar-group textarea:first-child{border-radius:7.5px 0 0 7.5px}.toolbar-group button:last-child,.toolbar-group input:last-child,.toolbar-group label:last-child,.toolbar-group select:last-child,.toolbar-group textarea:last-child{border-radius:0 7.5px 7.5px 0;border-right:solid 1px var(--border-color)}::placeholder{color:#777;opacity:1}:-ms-input-placeholder{color:var(--border-color)}::-ms-input-placeholder{color:var(--border-color)}label.switch{margin-top:-5px}.switch{position:relative;display:inline-block;width:32px;height:19px}.switch input{opacity:0;width:0;height:0;outline:0}.form-switch{display:inline-block}.swith-label{margin-left:5px}.slider{box-shadow:inset 0 1px 3px rgb(0 0 0 / 10%)!important;border-radius:15px;-webkit-transition:background-color .1s;background-color:#ccc;bottom:-1px;cursor:pointer;left:0;position:absolute;right:1px;top:1px;transition:background-color .1s}.slider:before{border-radius:50%;left:2px;width:15px;-webkit-transition:.1s;background-color:#fff;bottom:2px;content:"";height:15px;position:absolute;transition:.1s}input:checked+.slider{background-color:#38c153}input:focus+.slider{box-shadow:0 0 1px #38c153}input:checked+.slider:before{transform:translateX(12px)}.switch input[type=checkbox]:focus+.slider{outline:0}.switch input[type=checkbox]:focus-visible+.slider{outline:3px solid rgba(29,158,252,.7);border-color:#1d9efc;outline-offset:2px}.cust-radio input[type=radio]:focus+.checkmark{outline:0}.cust-radio input[type=radio]:focus-visible+.checkmark{outline:3px solid rgba(29,158,252,.7);border-color:#1d9efc;outline-offset:2px}.input-label,.input-label-alert{display:block;font-size:12px;margin-bottom:2px}.input-label{color:#777}.input-label-alert{color:#ea0835}.cust-radio{display:block;position:relative;padding-left:18px;padding-right:10px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.cust-radio input{position:absolute;opacity:0;cursor:pointer;height:0;width:0}.checkmark{position:absolute;top:4px;left:0;height:15px;width:15px;background-color:var(--border-color);box-shadow:inset 0 1px 3px rgb(0 0 0 / 20%)!important;border-radius:50%}.cust-radio input:checked~.checkmark{background-color:#1d9efc}.checkmark:after{content:"";position:absolute;display:none}.cust-radio input:checked~.checkmark:after{display:block}.cust-radio .checkmark:after{top:5px;left:5px;width:5px;height:5px;border-radius:50%;background:#fff}.hidden-arrows::-webkit-inner-spin-button,.hidden-arrows::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.code-editor{color:#777;font-family:monospace;font-size:12px;border:0;padding:0;width:100%}.code-editor:focus{outline:0!important}.information{border-radius:15px;padding:15px;margin-bottom:15px;position:relative}.information-icon{position:absolute;top:15px;left:15px;font-size:1.2em;opacity:.75}.information-content-icon{padding-left:30px}.information-large{font-size:25px;padding:30px}.information-default{background:var(--el-bg-highlight)}.information-primary{background:#e2f1fb;color:#1d9efc}.information-primary hr{border-bottom:solid 1px #1d9efc}.information-warning{background:#ffd500;color:var(--color)}.information-success{background:#ddffd4;color:#31a949}.information-success hr{border-bottom:solid 1px #38c153}.information-alert{background:#fcc5c5;color:#ea0835}.information-alert hr{border-bottom:solid 1px #ea0835}.badge{cursor:default;display:inline-block;line-height:1.5em;color:#fff;vertical-align:baseline;white-space:nowrap;position:relative}.badge-content{width:100%;display:flex;align-items:center;justify-content:center}.badge:empty{display:none}.badge .btn-circle{margin-left:5px}.badge-default{background-color:var(--btn-bg);color:#777}.badge.badge-primary{background-color:#1d9efc}.badge.badge-warning{color:var(--color);background-color:#ffd500}.badge.badge-success{background-color:#38c153}.badge.badge-alert{background-color:#ea0835}.badge{border-radius:30px;box-shadow:inset 0 1px 4px rgba(0,0,0,.1)}.badge-content{width:100%;display:flex;align-items:center;justify-content:center;padding:7px 18px}.badge-closable .badge-content{padding-right:0!important}.badge-small .badge-content{padding:2px 10px;font-size:12px;min-height:20px}.clear-list ul{margin:0;padding:0}.clear-list ul li{padding:0;list-style:none;line-height:1.5em}.clear-list.none li{margin:0}.clear-list.compact li{margin:0 0 7.5px 0}.clear-list.default li{margin:0 0 15px 0}.clear-list.plenty li{margin:0 0 22.5px 0}.inline-list ul,ul.inline-list{display:flex;gap:15px;margin:0 0 15px;padding:0}.inline-list ul li,ul.inline-list li{padding:0;list-style:none}.loader-squares{display:flex;gap:8px;justify-content:center;align-items:center;height:40px}.loader-square{width:16px;height:16px;border-radius:15px;animation:loader-grow .7s cubic-bezier(.4,0,.2,1) infinite;transform-origin:center;background-color:#1895ff}.loader-square:first-child{animation-delay:0s}.loader-square:nth-child(2){animation-delay:.15s}.loader-square:nth-child(3){animation-delay:.3s}.loader-square:nth-child(4){animation-delay:.45s}.loader-square:nth-child(5){animation-delay:.6s}@keyframes loader-grow{0%{transform:scale(1);background-color:#1895ff}30%{transform:scale(1.5);background-color:#24d3fc}60%{transform:scale(1);background-color:#1fb5fe}100%{transform:scale(1);background-color:#1895ff}}.loader-lock{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,.1);z-index:9990}.loader-wrapper{position:relative;z-index:9999}.loader-full{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%)}.navbar-header{background:#000;border-bottom:solid 3px #1d9efc;box-shadow:0 4px 12px rgba(0,0,0,.1)}.navbar-responsive{-webkit-backdrop-filter:blur(5px);align-items:center;backdrop-filter:blur(5px);color:#fff;display:flex;min-height:60px;padding:0 15px;position:relative;z-index:100}.navbar-logo img{height:40px}.navbar-main{flex:1}.navbar-menu{display:flex;list-style:none;margin:0;padding:0}.navbar-menu .navbar-menu-item{position:relative;cursor:pointer;display:inline-block;z-index:888}.navbar-menu .navbar-menu-item a{color:#fff;display:block;padding:19px 30px}.navbar-menu .navbar-menu-item>.navbar-submenu{display:none;position:absolute;left:0;top:100%;min-width:160px;z-index:999;color:#fff!important;padding:7.5px 0 15px 0;background:rgba(0,0,0,.8);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-radius:0 0 15px 15px;box-shadow:0 4px 12px rgba(0,0,0,.1)}.navbar-menu .navbar-menu-item>.navbar-submenu a{color:#fff;padding:10px 15px}.navbar-menu .navbar-menu-item>.navbar-submenu li:hover{background-color:rgba(255,255,255,.12);color:#fff}.navbar-menu .navbar-menu-item>.navbar-submenu li:hover>a{color:#fff}.navbar-icon-area,.navbar-menu,.navbar-menu-item.has-submenu>.navbar-submenu{color:#fff;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}.navbar-menu-item.open>.navbar-submenu,.navbar-menu-item:hover>.navbar-submenu{display:block}.navbar-menu-item.active,.navbar-submenu-item.active{background:rgba(255,255,255,.1)}.navbar-icon-btn:hover,.navbar-menu-item:hover,.navbar-submenu-item:hover{background:rgba(255,255,255,.08)}.navbar-submenu{list-style:none;margin:0;padding:0}.navbar-icons{display:flex;gap:.5rem}.navbar-icons .navbar-icon-wrapper{position:relative}.navbar-icons .navbar-icon-btn{color:#fff;background:0 0;border:none;cursor:pointer;font-size:1.2em;height:40px;width:40px;display:flex;align-items:center;justify-content:center;opacity:.8}.navbar-icons .navbar-icon-btn:hover{opacity:1}.navbar-icons .navbar-icon-btn.active{color:#1d9efc;opacity:1}.navbar-hamburger{display:none;background:0 0;border:none;font-size:1.5em;margin-left:1rem;cursor:pointer;color:#fff}.navbar-icon-area{display:none;position:absolute;left:50%;transform:translateX(-50%);top:100%;z-index:99;width:1100px;max-width:calc(100vw - (15px * 2));box-sizing:border-box;background:rgba(0,0,0,.8);border-radius:0 0 15px 15px;padding:15px;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}.navbar-icon-area.open{display:block}.navbar-icon-area-content{display:flex;justify-content:center;width:100%}.pagination{padding-bottom:15px}.pagination-bar{width:100%;display:flex;justify-content:center;align-items:center;padding:15px 0}.pagination-bar-inner{display:flex;align-items:center;gap:15px;min-width:150px;max-width:220px}.pagination-input{width:48px;text-align:center;border-radius:15px;border:1px solid #ccc;padding:4px 0;font-size:1em}.row{display:flex;flex-wrap:wrap;width:100%;gap:15px;margin-bottom:15px}.row-item{box-sizing:border-box}.list-scroller-wrapper{width:100%;position:relative}.list-scroller{display:flex;overflow-x:auto;scroll-behavior:smooth;gap:15px;width:100%;scrollbar-width:none;-ms-overflow-style:none;margin:0;padding:5px}.list-scroller::-webkit-scrollbar{display:none}.list-scroller li{margin:0;padding:0;list-style:none}.list-scroller-btn{position:absolute;z-index:9;background:#ccc;top:50%;transform:translateY(-50%)}.list-scroller-btn-left{left:-15px}.list-scroller-btn-right{right:-15px}.skeleton{background:linear-gradient(90deg,var(--btn-bg) 25%,#aaa 50%,var(--btn-bg) 75%);background-size:200% 100%;animation:skeleton-shimmer 2s infinite linear;border-radius:15px;padding:15px;margin-bottom:15px;position:relative;overflow:hidden}@keyframes skeleton-shimmer{0%{background-position:200% 0}100%{background-position:-200% 0}}.snackbar{padding:15px 60px 15px 15px;color:#fff;border-radius:15px;margin:auto;margin-bottom:15px;box-sizing:border-box;position:relative;min-width:500px;box-shadow:0 3px 10px rgba(0,0,0,.3)}.snackbar .snackbar-close{position:absolute;top:10px;right:10px}.snackbar-stack{position:fixed;bottom:15px;left:50%;transform:translateX(-50%);z-index:9999;display:flex;flex-direction:column;align-items:center}table{max-width:100%;border-collapse:collapse;border-spacing:0}.table{cursor:default;border-bottom:solid 1px transparent;margin-bottom:15px;border-collapse:separate;background:var(--el-bg)}.table thead td,.table thead th{background-color:var(--el-bg);border-bottom:solid 1px var(--border-color);color:#777;font-weight:400;position:sticky;top:0;z-index:5}.table thead td a,.table thead td button.anchor,.table thead th a,.table thead th button.anchor{color:#777!important}.table thead td a:hover,.table thead td button.anchor:hover,.table thead th a:hover,.table thead th button.anchor:hover{text-decoration:underline;color:#5e5e5e}.table thead td:first-child,.table thead th:first-child{border-radius:15px 0 0 0}.table thead td:last-child,.table thead th:last-child{border-radius:0 15px 0 0}.table td,.table th{padding:8px 6px;line-height:1.5em}.table td .form-element,.table th .form-element{margin-bottom:0!important}.table td .btn,.table td .row,.table th .btn,.table th .row{margin-bottom:0}.table tbody td,.table tbody th{border-top:solid 1px transparent}.table .overlined td,.table .overlined th{border-top:solid 1px var(--border-color)}.table .underlined td,.table .underlined th{border-bottom:solid 1px var(--border-color)}.table tr.valign-middle td{vertical-align:middle}.table tr.valign-top td{vertical-align:top}.table tr.valign-bottom td{vertical-align:bottom}.table-striped tbody tr:nth-child(odd){background-color:var(--el-bg-highlight)}.table-hover tbody tr:hover>td{background-color:#cce6f8}.table-hover tbody tr:hover>td.highlight-primary{background-color:#b5dbf5}.table-hover tbody tr:hover>td.highlight-success{background-color:#b5ffa1}.table-hover tbody tr:hover>td.highlight-alert{background-color:#f99595}.table-hover tbody tr:hover>td.highlight-warning{background-color:#ffe666}.table td.highlight-primary,.table th.highlight-primary,.table tr.highlight-primary td,.table tr.highlight-primary th{background-color:#e2f1fb}.table td.highlight-alert,.table th.highlight-alert,.table tr.highlight-alert td,.table tr.highlight-alert th{background-color:#fcc5c5}.table td.highlight-success,.table th.highlight-success,.table tr.highlight-success td,.table tr.highlight-success th{background-color:#ddffd4}.table td.highlight-warning,.table th.highlight-warning,.table tr.highlight-warning td,.table tr.highlight-warning th{background-color:#fe9}.table .input-wrapper,.table .uneditable-input,.table input,.table select,.table textarea{margin-bottom:0}.html-editor .table{table-layout:fixed;width:100%;border-collapse:collapse;border:1px dashed rgba(119,119,119,.4)}.html-editor .table td,.html-editor .table th{border:1px dashed rgba(119,119,119,.4);min-width:40px}.tabs{display:flex;border-bottom:solid 1px var(--border-color)}.tabs .tab{padding:15px;margin:0;border:none;cursor:pointer;border:solid 1px transparent;border-radius:15px 15px 0 0}.tabs .tab.active{border:solid 1px var(--border-color);border-bottom:solid 1px #fff;color:#1d9efc;position:relative;z-index:9;background:#fff;bottom:-1px}.tabs .tab.disabled,.tabs .tab[disabled]{color:#919191;pointer-events:none}.tab-content{padding:15px;border:solid 1px var(--border-color);border-top:solid 1px transparent;border-radius:0 0 15px 15px;position:relative;z-index:1;background:#fff}.image{display:flex}.image-left{justify-content:flex-start}.image-right{justify-content:flex-end}.image-center{justify-content:center}.thumb{background-color:#fff!important;border-radius:15px;box-sizing:border-box;overflow:hidden;position:relative;display:flex;align-items:center;justify-content:center;width:100%}.thumb img{max-width:100%;max-height:100%;object-fit:contain;display:block}.thumb.thumb-bordered{border:solid 1px var(--border-color)}.thumb-small{width:56px;height:56px}.thumb-smallest{width:32px;height:32px}.thumb-medium{width:80px;height:80px}.thumb-large{width:160px;height:160px}.thumb-largest{width:240px;height:240px}.thumb .thumb-corner{position:absolute;top:-13px;right:-13px}.image-zoom{overflow:hidden;position:relative;touch-action:none;background:#fff}.image-zoom img{position:absolute;user-select:none}.image-zoom-caption{position:absolute;bottom:15px;background:rgba(0,0,0,.25);border-radius:15px;color:#fff;padding:5px 15px;font-size:12px;z-index:9;left:50%;transform:translateX(-50%);display:block}.tooltip-wrapper{position:relative;display:inline-block}.tooltip{position:absolute;bottom:120%;left:50%;transform:translateX(-50%);background:rgba(0,0,0,.7);color:#fff;padding:6px 12px;border-radius:15px;white-space:nowrap;z-index:100;font-size:.9em;box-shadow:0 2px 8px rgba(0,0,0,.15)}ul.tree{list-style:none;padding:0;margin:0 0 15px 0}ul.tree ul.tree{margin-left:-23px;margin-top:4px;margin-bottom:0}ul.tree li{margin:0;padding:3px 10px;line-height:2rem;border-left:1px solid #646464;cursor:default;position:relative}ul.tree li .tree-content{display:inline-block;margin:3px 0 0 15px}ul.tree li .tree-content-button{display:inline-block;margin:3px 0 0 45px}ul.tree li .tree-last-content{display:inline-block;margin:3px 0 0 15px}ul.tree li .tree-button{position:absolute;top:3px;left:15px;z-index:5}ul.tree li:last-child{border-left:none;line-height:15px!important}ul.tree li:last-child:before{border-left:1px solid #646464}ul.tree li:before{position:absolute;top:-3px;height:1.6em;width:15px;color:#fff;border-bottom:1px solid #646464;content:"";display:inline-block;left:0}ul.tree li:after{position:relative;top:-.3em;height:1.6em;width:15px;color:#fff;content:"";display:inline-block;left:-7px}.text-content{line-height:1.5}.text-size-small{font-size:12px}.text-size-normal{font-size:14px}.text-size-large{font-size:25px}.margin-top{margin-top:15px}.margin-bottom{margin-bottom:15px}.margin-both{margin:15px 0}.collapesed{margin:0}.separated{margin:15px 0}.color-default{color:var(--color)!important}.color-primary{color:#1d9efc!important}.color-success{color:#38c153!important}.color-alert{color:#ea0835!important}.color-warning{color:#ffd500!important}.color-active{color:#64fa00!important}.color-gray{color:#777!important}.bg-primary{background-color:#1d9efc!important;color:#fff}.bg-success{background-color:#38c153!important;color:#fff}.bg-alert{background-color:#ea0835!important;color:#fff}.bg-warning{background-color:#ffd500!important;color:#272729}.bg-default,.bg-gray{background-color:#777!important;color:#fff}.bg-active{background-color:#64fa00!important}.bg-alert .btn-circle svg,.bg-default .btn-circle svg,.bg-primary .btn-circle svg,.bg-success .btn-circle svg{color:#fff!important}.inline{display:inline-block;vertical-align:middle}.note{color:#777;font-size:12px;font-weight:400}.note a{color:#777;text-decoration:underline}.note a:hover{color:#1d9efc}.relative{position:relative}.absolute{position:absolute}.corner-btn{position:absolute;right:15px;top:15px}.center{text-align:center}.right{text-align:right}.left{text-align:left}.content{padding:15px}.visible{visibility:visible}.invisible{visibility:hidden}.hidden{display:none}.expanded{width:100%;margin-bottom:15px}.rounded{border-radius:15px}.bordered{border:solid 1px var(--border-color);border-radius:15px}.bordered-primary{border-color:#1d9efc}.border-top{border-top:solid 1px var(--border-color)}.border-bottom{border-bottom:solid 1px var(--border-color)}.overlay{background:var(--overlay-color);height:100%;left:0;position:fixed;top:0;transition:.2s;width:100%;z-index:99}.component-locker{background:var(--overlay-color);border-radius:15px;height:100%;left:0;position:absolute;top:0;transition:.2s;width:100%;z-index:9}.outline-primary{outline:1px dashed #1D9EFC}.outline-success{outline:1px dashed #38c153}.spacing-none{margin-bottom:0}.spacing-compact{margin-bottom:7.5px}.spacing-default,.spacing-normal{margin-bottom:15px}.spacing-plenty{margin-bottom:22.5px}.container-align-left .container-item{display:flex;justify-content:flex-start}.container-align-center .container-item{display:flex;justify-content:center}.container-align-right .container-item{display:flex;justify-content:flex-end}.container .container-item .container-align-left{display:flex;justify-content:flex-start}.container .container-item .container-align-center{display:flex;justify-content:center}.container .container-item .container-align-right{display:flex;justify-content:flex-end}.container-none .container-item{margin-bottom:0}.container-compact .container-item{margin-bottom:7.5px}.container-default .container-item,.container-normal .container-item{margin-bottom:15px}.container-plenty .container-item{margin-bottom:22.5px}.widget{box-shadow:2px 4px 12px rgba(0,0,0,.1);background:#fff;border-radius:15px;transform:translateY(0);transition:transform .25s ease,box-shadow .25s ease;transition-delay:0s}.widget-hover:hover{transform:translateY(-2px);box-shadow:0 14px 30px rgba(0,0,0,.2)}.wrapper{position:relative;margin:auto}.wrapper-large{width:1100px}.wrapper-large .role-mainside{width:835px}.wrapper-large .role-sidebar{width:250px}.wrapper-large .role-half{width:550px}.wrapper-large .box .role-mainside{width:820px}.wrapper-large .box .role-sidebar{width:820px}.wrapper-small{width:366.66666667px}.wrapper-medium{width:550px}@-ms-viewport{width:device-width}@media (max-width:500px){body{font-size:14px}h1,h2,h3{font-size:1.1em}.wrapper-default,.wrapper-large{width:96%;margin:auto}.navbar-icon-area{width:96%;max-width:96%}.row-item{flex:0 0 100%!important;max-width:100%!important}.btn{width:100%}.snackbar{width:100%}.expanded-phone{width:100%}.dialog{width:95%!important}.hide-phone{display:none!important}.show-phone{display:block!important}}@media (min-width:501px) and (max-width:900px){body{font-size:14px}h1{font-size:1.3em}h2,h3{font-size:1.1em}.wrapper-default,.wrapper-large{width:96%;margin:auto}.navbar-icon-area{width:96%;max-width:96%}.row-item{flex:0 0 calc(50% - (15px / 2))!important;max-width:calc(50% - (15px / 2))!important}.snackbar{width:100%}}@media (max-width:900px){.navbar-menu{flex-direction:column;display:none;background:rgba(0,0,0,.88);position:absolute;left:0;top:56px;width:100%;box-shadow:0 4px 16px rgba(0,0,0,.24);color:#fff}.navbar-main.open .navbar-menu{display:flex}.navbar-hamburger{display:block}.navbar-menu-item{width:100%}.navbar-menu-item>a{color:#fff;padding:16px 20px}.navbar-menu-item:hover>.navbar-submenu{display:none}.navbar-menu-item.open>.navbar-submenu{display:block}.navbar-submenu{position:static!important;min-width:100%!important;border:none!important;border-radius:0!important}.navbar-submenu a{color:#fff!important;padding:12px 20px 12px 38px!important}.navbar-submenu-item{color:#fff}.navbar-submenu-item:hover{background:rgba(255,255,255,.08)}.navbar-icons{margin-left:auto}}
@@ -13,6 +13,8 @@ var _flex = require("../flex");
13
13
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
14
14
  var ConfirmationDialog = exports.ConfirmationDialog = function ConfirmationDialog(_ref) {
15
15
  var children = _ref.children,
16
+ _ref$open = _ref.open,
17
+ open = _ref$open === void 0 ? true : _ref$open,
16
18
  title = _ref.title,
17
19
  icon = _ref.icon,
18
20
  color = _ref.color,
@@ -25,6 +27,7 @@ var ConfirmationDialog = exports.ConfirmationDialog = function ConfirmationDialo
25
27
  _ref$textCancel = _ref.textCancel,
26
28
  textCancel = _ref$textCancel === void 0 ? 'Cancelar' : _ref$textCancel;
27
29
  return /*#__PURE__*/_react["default"].createElement(_Dialog.Dialog, {
30
+ open: open,
28
31
  width: width,
29
32
  height: height,
30
33
  color: color,
@@ -10,6 +10,7 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
10
10
  var _freeSolidSvgIcons = require("@fortawesome/free-solid-svg-icons");
11
11
  var _util = require("../util");
12
12
  var _button = require("../button");
13
+ var _useOverlayLayer = require("../../hooks/useOverlayLayer");
13
14
  var _excluded = ["children", "className", "spacing"];
14
15
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
15
16
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
@@ -37,6 +38,7 @@ var Dialog = exports.Dialog = function Dialog(_ref) {
37
38
  _ref$closeOnEscape = _ref.closeOnEscape,
38
39
  closeOnEscape = _ref$closeOnEscape === void 0 ? true : _ref$closeOnEscape;
39
40
  var dialogRef = (0, _react.useRef)(null);
41
+ var zIndex = (0, _useOverlayLayer.useOverlayLayer)(open);
40
42
  (0, _react.useEffect)(function () {
41
43
  if (!open || !closeOnEscape) return undefined;
42
44
  var handleKeyDown = function handleKeyDown(event) {
@@ -82,14 +84,18 @@ var Dialog = exports.Dialog = function Dialog(_ref) {
82
84
  isLoading: isLoading
83
85
  }
84
86
  }, /*#__PURE__*/_react["default"].createElement("div", {
85
- className: "overlay dialog-overlay"
87
+ className: "overlay dialog-overlay",
88
+ style: {
89
+ zIndex: zIndex
90
+ }
86
91
  }), /*#__PURE__*/_react["default"].createElement("div", {
87
92
  className: "dialog",
88
93
  tabIndex: -1,
89
94
  ref: dialogRef,
90
95
  style: {
91
96
  width: width,
92
- height: height
97
+ height: height,
98
+ zIndex: zIndex + 1
93
99
  },
94
100
  role: "dialog",
95
101
  "aria-modal": "true"
@@ -0,0 +1,90 @@
1
+ "use strict";
2
+
3
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports["default"] = exports.Drawer = void 0;
8
+ var _react = _interopRequireWildcard(require("react"));
9
+ var _propTypes = _interopRequireDefault(require("prop-types"));
10
+ var _button = require("../button");
11
+ var _freeSolidSvgIcons = require("@fortawesome/free-solid-svg-icons");
12
+ var _useOutsideClick2 = require("../../hooks/useOutsideClick");
13
+ var _useOverlayLayer = require("../../hooks/useOverlayLayer");
14
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
15
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
16
+ var Drawer = exports.Drawer = function Drawer(_ref) {
17
+ var children = _ref.children,
18
+ _ref$open = _ref.open,
19
+ open = _ref$open === void 0 ? false : _ref$open,
20
+ _ref$position = _ref.position,
21
+ position = _ref$position === void 0 ? 'right' : _ref$position,
22
+ onClose = _ref.onClose,
23
+ width = _ref.width,
24
+ height = _ref.height,
25
+ className = _ref.className,
26
+ _ref$closeOnEscape = _ref.closeOnEscape,
27
+ closeOnEscape = _ref$closeOnEscape === void 0 ? true : _ref$closeOnEscape;
28
+ var zIndex = (0, _useOverlayLayer.useOverlayLayer)(open);
29
+ var onClickOutside = (0, _react.useCallback)(function () {
30
+ if (!open) return;
31
+ onClose && onClose();
32
+ }, [open, onClose]);
33
+ var _useOutsideClick = (0, _useOutsideClick2.useOutsideClick)({
34
+ onClickOutside: onClickOutside
35
+ }),
36
+ wrapperRef = _useOutsideClick.wrapperRef;
37
+ (0, _react.useEffect)(function () {
38
+ if (!open || !closeOnEscape) {
39
+ return undefined;
40
+ }
41
+ var handleKeyDown = function handleKeyDown(event) {
42
+ if (event.key === 'Escape') {
43
+ onClose && onClose();
44
+ }
45
+ };
46
+ window.addEventListener('keydown', handleKeyDown);
47
+ return function () {
48
+ return window.removeEventListener('keydown', handleKeyDown);
49
+ };
50
+ }, [open, closeOnEscape, onClose]);
51
+ if (!open) {
52
+ return null;
53
+ }
54
+ return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement("div", {
55
+ className: "overlay drawer-overlay",
56
+ style: {
57
+ zIndex: zIndex
58
+ }
59
+ }), /*#__PURE__*/_react["default"].createElement("aside", {
60
+ ref: wrapperRef,
61
+ className: "drawer drawer-".concat(position, " ").concat(className ? className : ''),
62
+ style: {
63
+ width: width,
64
+ height: height,
65
+ zIndex: zIndex + 1
66
+ },
67
+ role: "dialog",
68
+ "aria-modal": "true"
69
+ }, /*#__PURE__*/_react["default"].createElement("div", {
70
+ className: "drawer-close"
71
+ }, /*#__PURE__*/_react["default"].createElement(_button.IconButton, {
72
+ icon: _freeSolidSvgIcons.faTimes,
73
+ onClick: onClose,
74
+ "aria-expanded": open,
75
+ "aria-label": open ? 'Close drawer' : 'Open drawer'
76
+ })), /*#__PURE__*/_react["default"].createElement("div", {
77
+ className: "drawer-content"
78
+ }, children)));
79
+ };
80
+ Drawer.propTypes = {
81
+ children: _propTypes["default"].any,
82
+ open: _propTypes["default"].bool,
83
+ position: _propTypes["default"].oneOf(['left', 'right', 'top', 'bottom']),
84
+ width: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].number]),
85
+ height: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].number]),
86
+ className: _propTypes["default"].string,
87
+ closeOnEscape: _propTypes["default"].bool,
88
+ onClose: _propTypes["default"].func
89
+ };
90
+ var _default = exports["default"] = Drawer;
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ var _Drawer = require("./Drawer");
7
+ Object.keys(_Drawer).forEach(function (key) {
8
+ if (key === "default" || key === "__esModule") return;
9
+ if (key in exports && exports[key] === _Drawer[key]) return;
10
+ Object.defineProperty(exports, key, {
11
+ enumerable: true,
12
+ get: function get() {
13
+ return _Drawer[key];
14
+ }
15
+ });
16
+ });
@@ -11,8 +11,14 @@ var _reactFontawesome = require("@fortawesome/react-fontawesome");
11
11
  var _freeSolidSvgIcons = require("@fortawesome/free-solid-svg-icons");
12
12
  var _flex = require("../flex");
13
13
  var _button = require("../button");
14
+ var _dialog = require("../dialog");
15
+ var _forms = require("../forms");
16
+ var _excluded = ["icon", "title", "onClick", "active"];
14
17
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
15
18
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
19
+ function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
20
+ function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
21
+ function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }
16
22
  function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
17
23
  function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
18
24
  function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
@@ -27,6 +33,8 @@ var HTMLEditor = function HTMLEditor(_ref) {
27
33
  height = _ref$height === void 0 ? 200 : _ref$height,
28
34
  onChange = _ref.onChange;
29
35
  var editorRef = (0, _react.useRef)(null);
36
+ var selectionRef = (0, _react.useRef)(null);
37
+ var currentLinkRef = (0, _react.useRef)(null);
30
38
  var _useState = (0, _react.useState)(false),
31
39
  _useState2 = _slicedToArray(_useState, 2),
32
40
  isFocuded = _useState2[0],
@@ -39,7 +47,50 @@ var HTMLEditor = function HTMLEditor(_ref) {
39
47
  _useState6 = _slicedToArray(_useState5, 2),
40
48
  showCode = _useState6[0],
41
49
  setShowCode = _useState6[1]; // Nuevo estado
42
-
50
+ var _useState7 = (0, _react.useState)(false),
51
+ _useState8 = _slicedToArray(_useState7, 2),
52
+ showLinkDialog = _useState8[0],
53
+ setShowLinkDialog = _useState8[1];
54
+ var _useState9 = (0, _react.useState)(false),
55
+ _useState0 = _slicedToArray(_useState9, 2),
56
+ showTableDialog = _useState0[0],
57
+ setShowTableDialog = _useState0[1];
58
+ var _useState1 = (0, _react.useState)(''),
59
+ _useState10 = _slicedToArray(_useState1, 2),
60
+ linkUrl = _useState10[0],
61
+ setLinkUrl = _useState10[1];
62
+ var _useState11 = (0, _react.useState)(''),
63
+ _useState12 = _slicedToArray(_useState11, 2),
64
+ linkText = _useState12[0],
65
+ setLinkText = _useState12[1];
66
+ var _useState13 = (0, _react.useState)(false),
67
+ _useState14 = _slicedToArray(_useState13, 2),
68
+ openInNewWindow = _useState14[0],
69
+ setOpenInNewWindow = _useState14[1];
70
+ var _useState15 = (0, _react.useState)(2),
71
+ _useState16 = _slicedToArray(_useState15, 2),
72
+ tableRows = _useState16[0],
73
+ setTableRows = _useState16[1];
74
+ var _useState17 = (0, _react.useState)(2),
75
+ _useState18 = _slicedToArray(_useState17, 2),
76
+ tableCols = _useState18[0],
77
+ setTableCols = _useState18[1];
78
+ var _useState19 = (0, _react.useState)({
79
+ bold: false,
80
+ italic: false,
81
+ h1: false,
82
+ h2: false,
83
+ h3: false,
84
+ orderedList: false,
85
+ unorderedList: false,
86
+ link: false
87
+ }),
88
+ _useState20 = _slicedToArray(_useState19, 2),
89
+ toolbarState = _useState20[0],
90
+ setToolbarState = _useState20[1];
91
+ var stopToolbarMouseDown = function stopToolbarMouseDown(event) {
92
+ event.preventDefault();
93
+ };
43
94
  (0, _react.useEffect)(function () {
44
95
  if (!showCode && editorRef.current) {
45
96
  editorRef.current.innerHTML = html;
@@ -50,23 +101,400 @@ var HTMLEditor = function HTMLEditor(_ref) {
50
101
  var value = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
51
102
  document.execCommand(command, false, value);
52
103
  setHtml(editorRef.current.innerHTML);
104
+ updateToolbarState();
105
+ };
106
+ var normalizeBlockTags = function normalizeBlockTags() {
107
+ if (!editorRef.current) {
108
+ return;
109
+ }
110
+ var blocks = editorRef.current.querySelectorAll(':scope > div');
111
+ blocks.forEach(function (block) {
112
+ var paragraph = document.createElement('p');
113
+ paragraph.innerHTML = block.innerHTML || '<br>';
114
+ block.replaceWith(paragraph);
115
+ });
116
+ };
117
+ var buildTableHtml = function buildTableHtml(rows, cols) {
118
+ var width = "".concat(100 / cols, "%");
119
+ var columns = Array.from({
120
+ length: cols
121
+ }, function () {
122
+ return "<col style=\"width: ".concat(width, ";\">");
123
+ }).join('');
124
+ var bodyRows = Array.from({
125
+ length: rows
126
+ }, function () {
127
+ var cells = Array.from({
128
+ length: cols
129
+ }, function () {
130
+ return '<td><br></td>';
131
+ }).join('');
132
+ return "<tr>".concat(cells, "</tr>");
133
+ }).join('');
134
+ return "<table class=\"table expanded\"><colgroup>".concat(columns, "</colgroup><tbody>").concat(bodyRows, "</tbody></table>");
135
+ };
136
+ var _stripBoldFromNode = function stripBoldFromNode(node) {
137
+ var _element$style;
138
+ if (!node || node.nodeType !== Node.ELEMENT_NODE && node.nodeType !== Node.DOCUMENT_FRAGMENT_NODE) {
139
+ return;
140
+ }
141
+ var children = Array.from(node.childNodes);
142
+ children.forEach(_stripBoldFromNode);
143
+ if (node.nodeType !== Node.ELEMENT_NODE) {
144
+ return;
145
+ }
146
+ var element = node;
147
+ var tagName = element.tagName;
148
+ if (tagName === 'B' || tagName === 'STRONG') {
149
+ var parent = element.parentNode;
150
+ if (!parent) {
151
+ return;
152
+ }
153
+ while (element.firstChild) {
154
+ parent.insertBefore(element.firstChild, element);
155
+ }
156
+ parent.removeChild(element);
157
+ return;
158
+ }
159
+ var weight = ((_element$style = element.style) === null || _element$style === void 0 ? void 0 : _element$style.fontWeight) || '';
160
+ var numericWeight = Number.parseInt(weight, 10);
161
+ if (weight === 'bold' || weight === 'bolder' || !Number.isNaN(numericWeight) && numericWeight >= 600) {
162
+ var _element$getAttribute;
163
+ element.style.fontWeight = '';
164
+ if (!((_element$getAttribute = element.getAttribute('style')) !== null && _element$getAttribute !== void 0 && _element$getAttribute.trim())) {
165
+ element.removeAttribute('style');
166
+ }
167
+ }
168
+ };
169
+ var getSelectionRange = function getSelectionRange() {
170
+ var selection = window.getSelection();
171
+ if (!selection || selection.rangeCount === 0) {
172
+ return null;
173
+ }
174
+ var range = selection.getRangeAt(0);
175
+ if (!editorRef.current || !editorRef.current.contains(range.commonAncestorContainer)) {
176
+ return null;
177
+ }
178
+ return range;
179
+ };
180
+ var syncHtml = function syncHtml() {
181
+ if (!editorRef.current) return;
182
+ normalizeBlockTags();
183
+ var value = editorRef.current.innerHTML;
184
+ setHtml(value);
185
+ if (onChange) onChange(value);
186
+ };
187
+ var getBlockElementFromNode = (0, _react.useCallback)(function (node) {
188
+ var currentNode = node;
189
+ while (currentNode && currentNode !== editorRef.current) {
190
+ if (currentNode.nodeType === Node.ELEMENT_NODE) {
191
+ var tagName = currentNode.tagName;
192
+ if (['H1', 'H2', 'H3', 'LI', 'P', 'DIV'].includes(tagName)) {
193
+ return currentNode;
194
+ }
195
+ }
196
+ currentNode = currentNode.parentNode;
197
+ }
198
+ return null;
199
+ }, []);
200
+ var getAnchorElement = (0, _react.useCallback)(function (node) {
201
+ var currentNode = node;
202
+ while (currentNode && currentNode !== editorRef.current) {
203
+ if (currentNode.nodeType === Node.ELEMENT_NODE && currentNode.tagName === 'A') {
204
+ return currentNode;
205
+ }
206
+ currentNode = currentNode.parentNode;
207
+ }
208
+ return null;
209
+ }, []);
210
+ var hasFormattingInNodeTree = (0, _react.useCallback)(function (node, _ref2) {
211
+ var _ref2$tags = _ref2.tags,
212
+ tags = _ref2$tags === void 0 ? [] : _ref2$tags,
213
+ styleCheck = _ref2.styleCheck;
214
+ var currentNode = node;
215
+ while (currentNode && currentNode !== editorRef.current) {
216
+ if (currentNode.nodeType === Node.ELEMENT_NODE) {
217
+ var tagName = currentNode.tagName;
218
+ if (tags.includes(tagName)) {
219
+ return true;
220
+ }
221
+ if (styleCheck && styleCheck(currentNode)) {
222
+ return true;
223
+ }
224
+ }
225
+ currentNode = currentNode.parentNode;
226
+ }
227
+ return false;
228
+ }, []);
229
+ var getInlineFormatState = (0, _react.useCallback)(function (range, selection) {
230
+ var nodesToCheck = [selection === null || selection === void 0 ? void 0 : selection.anchorNode, range.startContainer, range.endContainer, range.commonAncestorContainer].filter(Boolean);
231
+ var hasBold = nodesToCheck.some(function (node) {
232
+ return hasFormattingInNodeTree(node, {
233
+ tags: ['B', 'STRONG'],
234
+ styleCheck: function styleCheck(element) {
235
+ var _element$style2;
236
+ var weight = ((_element$style2 = element.style) === null || _element$style2 === void 0 ? void 0 : _element$style2.fontWeight) || '';
237
+ if (weight === 'bold' || weight === 'bolder') {
238
+ return true;
239
+ }
240
+ var numericWeight = Number.parseInt(weight, 10);
241
+ return !Number.isNaN(numericWeight) && numericWeight >= 600;
242
+ }
243
+ });
244
+ });
245
+ var hasItalic = nodesToCheck.some(function (node) {
246
+ return hasFormattingInNodeTree(node, {
247
+ tags: ['I', 'EM'],
248
+ styleCheck: function styleCheck(element) {
249
+ var _element$style3;
250
+ return ((_element$style3 = element.style) === null || _element$style3 === void 0 ? void 0 : _element$style3.fontStyle) === 'italic';
251
+ }
252
+ });
253
+ });
254
+ return {
255
+ bold: hasBold,
256
+ italic: hasItalic
257
+ };
258
+ }, [hasFormattingInNodeTree]);
259
+ var getToolbarState = (0, _react.useCallback)(function () {
260
+ var selection = window.getSelection();
261
+ if (!selection || selection.rangeCount === 0) {
262
+ return {
263
+ bold: false,
264
+ italic: false,
265
+ h1: false,
266
+ h2: false,
267
+ h3: false,
268
+ orderedList: false,
269
+ unorderedList: false,
270
+ link: false
271
+ };
272
+ }
273
+ var range = selection.getRangeAt(0);
274
+ if (!editorRef.current || !editorRef.current.contains(range.commonAncestorContainer)) {
275
+ return {
276
+ bold: false,
277
+ italic: false,
278
+ h1: false,
279
+ h2: false,
280
+ h3: false,
281
+ orderedList: false,
282
+ unorderedList: false,
283
+ link: false
284
+ };
285
+ }
286
+ var anchorNode = selection.anchorNode || range.startContainer;
287
+ var blockElement = getBlockElementFromNode(anchorNode);
288
+ var anchorElement = getAnchorElement(anchorNode) || getAnchorElement(range.commonAncestorContainer);
289
+ var listElement = (blockElement === null || blockElement === void 0 ? void 0 : blockElement.tagName) === 'LI' ? blockElement.parentElement : null;
290
+ var inlineFormatState = getInlineFormatState(range, selection);
291
+ return {
292
+ bold: document.queryCommandState('bold') || inlineFormatState.bold,
293
+ italic: document.queryCommandState('italic') || inlineFormatState.italic,
294
+ h1: (blockElement === null || blockElement === void 0 ? void 0 : blockElement.tagName) === 'H1',
295
+ h2: (blockElement === null || blockElement === void 0 ? void 0 : blockElement.tagName) === 'H2',
296
+ h3: (blockElement === null || blockElement === void 0 ? void 0 : blockElement.tagName) === 'H3',
297
+ orderedList: (listElement === null || listElement === void 0 ? void 0 : listElement.tagName) === 'OL' || document.queryCommandState('insertOrderedList'),
298
+ unorderedList: (listElement === null || listElement === void 0 ? void 0 : listElement.tagName) === 'UL' || document.queryCommandState('insertUnorderedList'),
299
+ link: Boolean(anchorElement)
300
+ };
301
+ }, [getAnchorElement, getBlockElementFromNode, getInlineFormatState]);
302
+ var updateToolbarState = (0, _react.useCallback)(function () {
303
+ setToolbarState(getToolbarState());
304
+ }, [getToolbarState]);
305
+ var restoreSelection = function restoreSelection() {
306
+ var selection = window.getSelection();
307
+ var savedRange = selectionRef.current;
308
+ if (!selection || !savedRange) {
309
+ return null;
310
+ }
311
+ selection.removeAllRanges();
312
+ selection.addRange(savedRange);
313
+ return savedRange;
53
314
  };
54
315
  var handleCreateLink = function handleCreateLink() {
55
- var url = window.prompt('Ingrese la URL del enlace:');
56
- if (url) {
57
- execCommand('createLink', url);
316
+ var range = getSelectionRange();
317
+ if (!range) {
318
+ return;
319
+ }
320
+ var selection = window.getSelection();
321
+ var selectedText = (selection === null || selection === void 0 ? void 0 : selection.toString().trim()) || '';
322
+ var anchor = getAnchorElement(range.startContainer) || getAnchorElement(range.endContainer);
323
+ selectionRef.current = range.cloneRange();
324
+ currentLinkRef.current = anchor;
325
+ setLinkUrl((anchor === null || anchor === void 0 ? void 0 : anchor.getAttribute('href')) || '');
326
+ setLinkText((anchor === null || anchor === void 0 ? void 0 : anchor.textContent) || selectedText);
327
+ setOpenInNewWindow((anchor === null || anchor === void 0 ? void 0 : anchor.target) === '_blank');
328
+ setShowLinkDialog(true);
329
+ };
330
+ var handleCreateTable = function handleCreateTable() {
331
+ var range = getSelectionRange();
332
+ if (!range) {
333
+ return;
334
+ }
335
+ selectionRef.current = range.cloneRange();
336
+ setTableRows(2);
337
+ setTableCols(2);
338
+ setShowTableDialog(true);
339
+ };
340
+ var toggleHeading = function toggleHeading(tagName) {
341
+ var selection = window.getSelection();
342
+ if (!selection || selection.rangeCount === 0) {
343
+ return;
344
+ }
345
+ var range = selection.getRangeAt(0);
346
+ if (!editorRef.current || !editorRef.current.contains(range.commonAncestorContainer)) {
347
+ return;
348
+ }
349
+ var currentBlock = getBlockElementFromNode(selection.anchorNode || range.startContainer);
350
+ var nextBlock = (currentBlock === null || currentBlock === void 0 ? void 0 : currentBlock.tagName) === tagName.toUpperCase() ? 'p' : tagName;
351
+ document.execCommand('formatBlock', false, "<".concat(nextBlock, ">"));
352
+ setHtml(editorRef.current.innerHTML);
353
+ updateToolbarState();
354
+ };
355
+ var toggleBold = function toggleBold() {
356
+ var range = getSelectionRange();
357
+ if (!range) {
358
+ return;
359
+ }
360
+
361
+ // If bold is not currently active (or caret only), keep native behavior.
362
+ if (!toolbarState.bold || range.collapsed) {
363
+ execCommand('bold');
364
+ return;
365
+ }
366
+
367
+ // Fallback: remove only bold markup from selected fragment.
368
+ var fragment = range.extractContents();
369
+ var insertedNodes = Array.from(fragment.childNodes);
370
+ _stripBoldFromNode(fragment);
371
+ range.insertNode(fragment);
372
+ if (insertedNodes.length > 0) {
373
+ var selection = window.getSelection();
374
+ var newRange = document.createRange();
375
+ newRange.setStartBefore(insertedNodes[0]);
376
+ newRange.setEndAfter(insertedNodes[insertedNodes.length - 1]);
377
+ selection === null || selection === void 0 || selection.removeAllRanges();
378
+ selection === null || selection === void 0 || selection.addRange(newRange);
379
+ }
380
+ syncHtml();
381
+ updateToolbarState();
382
+ };
383
+ var closeLinkDialog = function closeLinkDialog() {
384
+ setShowLinkDialog(false);
385
+ selectionRef.current = null;
386
+ currentLinkRef.current = null;
387
+ };
388
+ var closeTableDialog = function closeTableDialog() {
389
+ setShowTableDialog(false);
390
+ selectionRef.current = null;
391
+ };
392
+ var applyLink = function applyLink() {
393
+ var url = linkUrl.trim();
394
+ var text = linkText.trim();
395
+ if (!url) {
396
+ return;
397
+ }
398
+ var savedRange = restoreSelection();
399
+ if (!savedRange || !editorRef.current) {
400
+ closeLinkDialog();
401
+ return;
402
+ }
403
+ var selection = window.getSelection();
404
+ var selectedText = (selection === null || selection === void 0 ? void 0 : selection.toString().trim()) || '';
405
+ var resolvedText = text || selectedText || url;
406
+ var existingLink = currentLinkRef.current && editorRef.current.contains(currentLinkRef.current) ? currentLinkRef.current : null;
407
+ if (existingLink) {
408
+ existingLink.setAttribute('href', url);
409
+ if (openInNewWindow) {
410
+ existingLink.setAttribute('target', '_blank');
411
+ existingLink.setAttribute('rel', 'noopener noreferrer');
412
+ } else {
413
+ existingLink.removeAttribute('target');
414
+ existingLink.removeAttribute('rel');
415
+ }
416
+ existingLink.textContent = resolvedText;
417
+ } else {
418
+ var link = document.createElement('a');
419
+ link.setAttribute('href', url);
420
+ if (openInNewWindow) {
421
+ link.setAttribute('target', '_blank');
422
+ link.setAttribute('rel', 'noopener noreferrer');
423
+ }
424
+ link.textContent = resolvedText;
425
+ if (!savedRange.collapsed) {
426
+ savedRange.deleteContents();
427
+ }
428
+ savedRange.insertNode(link);
429
+ savedRange.setStartAfter(link);
430
+ savedRange.collapse(true);
431
+ selection.removeAllRanges();
432
+ selection.addRange(savedRange);
58
433
  }
434
+ syncHtml();
435
+ closeLinkDialog();
436
+ updateToolbarState();
437
+ };
438
+ var applyTable = function applyTable() {
439
+ var rows = Math.max(1, Number(tableRows) || 1);
440
+ var cols = Math.max(1, Number(tableCols) || 1);
441
+ var savedRange = restoreSelection();
442
+ if (!savedRange || !editorRef.current) {
443
+ closeTableDialog();
444
+ return;
445
+ }
446
+ var tableHtml = buildTableHtml(rows, cols);
447
+ document.execCommand('insertHTML', false, tableHtml);
448
+ normalizeBlockTags();
449
+ syncHtml();
450
+ closeTableDialog();
451
+ updateToolbarState();
59
452
  };
60
453
  var handleInput = function handleInput() {
454
+ normalizeBlockTags();
61
455
  var value = editorRef.current.innerHTML;
62
456
  setHtml(value);
63
457
  if (onChange) onChange(value);
458
+ updateToolbarState();
459
+ };
460
+ var handleKeyDown = function handleKeyDown(event) {
461
+ if (event.key !== 'Enter') {
462
+ return;
463
+ }
464
+ event.preventDefault();
465
+ document.execCommand('insertHTML', false, '<p><br></p>');
466
+ normalizeBlockTags();
467
+ if (editorRef.current) {
468
+ setHtml(editorRef.current.innerHTML);
469
+ if (onChange) onChange(editorRef.current.innerHTML);
470
+ }
471
+ updateToolbarState();
64
472
  };
65
473
  var handleHtmlChange = function handleHtmlChange(e) {
66
474
  setHtml(e.target.value);
67
475
  editorRef.current.innerHTML = e.target.value;
68
476
  if (onChange) onChange(e.target.value);
69
477
  };
478
+ (0, _react.useEffect)(function () {
479
+ var editorElement = editorRef.current;
480
+ var handleSelectionChange = function handleSelectionChange() {
481
+ updateToolbarState();
482
+ };
483
+ var handleEditorMouseUp = function handleEditorMouseUp() {
484
+ updateToolbarState();
485
+ };
486
+ var handleEditorKeyUp = function handleEditorKeyUp() {
487
+ updateToolbarState();
488
+ };
489
+ document.addEventListener('selectionchange', handleSelectionChange);
490
+ editorElement === null || editorElement === void 0 || editorElement.addEventListener('mouseup', handleEditorMouseUp);
491
+ editorElement === null || editorElement === void 0 || editorElement.addEventListener('keyup', handleEditorKeyUp);
492
+ return function () {
493
+ document.removeEventListener('selectionchange', handleSelectionChange);
494
+ editorElement === null || editorElement === void 0 || editorElement.removeEventListener('mouseup', handleEditorMouseUp);
495
+ editorElement === null || editorElement === void 0 || editorElement.removeEventListener('keyup', handleEditorKeyUp);
496
+ };
497
+ }, [updateToolbarState]);
70
498
  return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement("div", {
71
499
  className: "bordered rounded \n ".concat(isFocuded ? 'input-focus' : '', "\n ").concat(error ? 'input-alert' : '', "\n "),
72
500
  style: {
@@ -79,60 +507,82 @@ var HTMLEditor = function HTMLEditor(_ref) {
79
507
  gap: 5
80
508
  }, /*#__PURE__*/_react["default"].createElement(CommandButton, {
81
509
  icon: _freeSolidSvgIcons.faBold,
82
- onClick: function onClick() {
83
- return execCommand('bold');
84
- }
510
+ active: toolbarState.bold,
511
+ onClick: toggleBold,
512
+ onMouseDown: stopToolbarMouseDown
85
513
  }), /*#__PURE__*/_react["default"].createElement(CommandButton, {
86
514
  icon: _freeSolidSvgIcons.faItalic,
515
+ active: toolbarState.italic,
87
516
  onClick: function onClick() {
88
517
  return execCommand('italic');
89
- }
518
+ },
519
+ onMouseDown: stopToolbarMouseDown
90
520
  }), /*#__PURE__*/_react["default"].createElement(_flex.FlexItem, null, /*#__PURE__*/_react["default"].createElement(_button.Button, {
91
521
  size: "small",
92
522
  decoration: "link",
523
+ className: toolbarState.h1 ? 'active' : '',
524
+ onMouseDown: stopToolbarMouseDown,
93
525
  onClick: function onClick() {
94
- return execCommand('formatBlock', '<h1>');
526
+ return toggleHeading('h1');
95
527
  }
96
528
  }, "H1")), /*#__PURE__*/_react["default"].createElement(_flex.FlexItem, null, /*#__PURE__*/_react["default"].createElement(_button.Button, {
97
529
  size: "small",
98
530
  decoration: "link",
531
+ className: toolbarState.h2 ? 'active' : '',
532
+ onMouseDown: stopToolbarMouseDown,
99
533
  onClick: function onClick() {
100
- return execCommand('formatBlock', '<h2>');
534
+ return toggleHeading('h2');
101
535
  }
102
536
  }, "H2")), /*#__PURE__*/_react["default"].createElement(_flex.FlexItem, null, /*#__PURE__*/_react["default"].createElement(_button.Button, {
103
537
  size: "small",
104
538
  decoration: "link",
539
+ className: toolbarState.h3 ? 'active' : '',
540
+ onMouseDown: stopToolbarMouseDown,
105
541
  onClick: function onClick() {
106
- return execCommand('formatBlock', '<h3>');
542
+ return toggleHeading('h3');
107
543
  }
108
544
  }, "H3")), /*#__PURE__*/_react["default"].createElement(CommandButton, {
109
545
  icon: _freeSolidSvgIcons.faListOl,
546
+ active: toolbarState.orderedList,
110
547
  onClick: function onClick() {
111
548
  return execCommand('insertOrderedList');
112
549
  },
550
+ onMouseDown: stopToolbarMouseDown,
113
551
  title: "Lista ordenada"
114
552
  }), /*#__PURE__*/_react["default"].createElement(CommandButton, {
115
553
  icon: _freeSolidSvgIcons.faListUl,
554
+ active: toolbarState.unorderedList,
116
555
  onClick: function onClick() {
117
556
  return execCommand('insertUnorderedList');
118
557
  },
558
+ onMouseDown: stopToolbarMouseDown,
119
559
  title: "Lista desordenada"
120
560
  }), /*#__PURE__*/_react["default"].createElement(CommandSeparator, null), /*#__PURE__*/_react["default"].createElement(CommandButton, {
121
561
  icon: _freeSolidSvgIcons.faLink,
562
+ active: toolbarState.link,
122
563
  onClick: handleCreateLink,
564
+ onMouseDown: stopToolbarMouseDown,
123
565
  title: "Agregar enlace"
124
566
  }), /*#__PURE__*/_react["default"].createElement(CommandButton, {
125
567
  icon: _freeSolidSvgIcons.faUnlink,
126
568
  onClick: function onClick() {
127
569
  return execCommand('unlink');
128
570
  },
571
+ onMouseDown: stopToolbarMouseDown,
129
572
  title: "Quitar enlace"
573
+ }), /*#__PURE__*/_react["default"].createElement(CommandSeparator, null), /*#__PURE__*/_react["default"].createElement(CommandButton, {
574
+ icon: _freeSolidSvgIcons.faTable,
575
+ onClick: handleCreateTable,
576
+ onMouseDown: stopToolbarMouseDown,
577
+ title: "Insertar tabla"
130
578
  }), /*#__PURE__*/_react["default"].createElement(CommandSeparator, null), /*#__PURE__*/_react["default"].createElement(CommandButton, {
131
579
  icon: _freeSolidSvgIcons.faTextSlash,
132
580
  onClick: function onClick() {
133
581
  return execCommand('removeFormat');
134
- }
582
+ },
583
+ onMouseDown: stopToolbarMouseDown
135
584
  }))), /*#__PURE__*/_react["default"].createElement("div", {
585
+ className: "html-editor",
136
586
  ref: editorRef,
137
587
  contentEditable: true,
138
588
  style: {
@@ -141,6 +591,7 @@ var HTMLEditor = function HTMLEditor(_ref) {
141
591
  outline: 'none'
142
592
  },
143
593
  onInput: handleInput,
594
+ onKeyDown: handleKeyDown,
144
595
  onFocus: function onFocus() {
145
596
  return setIsFocused(true);
146
597
  },
@@ -177,7 +628,59 @@ var HTMLEditor = function HTMLEditor(_ref) {
177
628
  title: showCode ? 'Mostrar editor visual' : 'Mostrar código HTML'
178
629
  }))), error && /*#__PURE__*/_react["default"].createElement("div", {
179
630
  className: "input-label-alert"
180
- }, error));
631
+ }, error), /*#__PURE__*/_react["default"].createElement(_dialog.ConfirmationDialog, {
632
+ open: showLinkDialog,
633
+ title: currentLinkRef.current ? 'Editar enlace' : 'Agregar enlace',
634
+ icon: _freeSolidSvgIcons.faLink,
635
+ color: "primary",
636
+ textConfirm: "Guardar",
637
+ textCancel: "Cancelar",
638
+ onClose: closeLinkDialog,
639
+ onConfirm: applyLink
640
+ }, /*#__PURE__*/_react["default"].createElement(_forms.Input, {
641
+ label: "URL",
642
+ value: linkUrl,
643
+ onChange: function onChange(event) {
644
+ return setLinkUrl(event.target.value);
645
+ }
646
+ }), /*#__PURE__*/_react["default"].createElement(_forms.Input, {
647
+ label: "Texto",
648
+ value: linkText,
649
+ onChange: function onChange(event) {
650
+ return setLinkText(event.target.value);
651
+ }
652
+ }), /*#__PURE__*/_react["default"].createElement(_forms.Switch, {
653
+ label: "Abrir en nueva ventana",
654
+ checked: openInNewWindow,
655
+ onChange: function onChange(event) {
656
+ return setOpenInNewWindow(event.target.checked);
657
+ }
658
+ })), /*#__PURE__*/_react["default"].createElement(_dialog.ConfirmationDialog, {
659
+ open: showTableDialog,
660
+ title: "Insertar tabla",
661
+ icon: _freeSolidSvgIcons.faTable,
662
+ color: "primary",
663
+ textConfirm: "Insertar",
664
+ textCancel: "Cancelar",
665
+ onClose: closeTableDialog,
666
+ onConfirm: applyTable
667
+ }, /*#__PURE__*/_react["default"].createElement(_forms.Input, {
668
+ type: "number",
669
+ label: "Filas",
670
+ min: 1,
671
+ value: tableRows,
672
+ onChange: function onChange(event) {
673
+ return setTableRows(event.target.value);
674
+ }
675
+ }), /*#__PURE__*/_react["default"].createElement(_forms.Input, {
676
+ type: "number",
677
+ label: "Columnas",
678
+ min: 1,
679
+ value: tableCols,
680
+ onChange: function onChange(event) {
681
+ return setTableCols(event.target.value);
682
+ }
683
+ })));
181
684
  };
182
685
  var CommandSeparator = function CommandSeparator() {
183
686
  return /*#__PURE__*/_react["default"].createElement(_flex.FlexItem, null, /*#__PURE__*/_react["default"].createElement("span", {
@@ -187,16 +690,20 @@ var CommandSeparator = function CommandSeparator() {
187
690
  className: "light-gray"
188
691
  }, "|"));
189
692
  };
190
- var CommandButton = function CommandButton(_ref2) {
191
- var icon = _ref2.icon,
192
- title = _ref2.title,
193
- onClick = _ref2.onClick;
194
- return /*#__PURE__*/_react["default"].createElement(_flex.FlexItem, null, /*#__PURE__*/_react["default"].createElement(_button.Button, {
693
+ var CommandButton = function CommandButton(_ref3) {
694
+ var icon = _ref3.icon,
695
+ title = _ref3.title,
696
+ onClick = _ref3.onClick,
697
+ _ref3$active = _ref3.active,
698
+ active = _ref3$active === void 0 ? false : _ref3$active,
699
+ props = _objectWithoutProperties(_ref3, _excluded);
700
+ return /*#__PURE__*/_react["default"].createElement(_flex.FlexItem, null, /*#__PURE__*/_react["default"].createElement(_button.Button, _extends({
195
701
  size: "small",
196
702
  decoration: "link",
703
+ className: active ? 'active' : '',
197
704
  onClick: onClick,
198
705
  title: title
199
- }, /*#__PURE__*/_react["default"].createElement(_reactFontawesome.FontAwesomeIcon, {
706
+ }, props), /*#__PURE__*/_react["default"].createElement(_reactFontawesome.FontAwesomeIcon, {
200
707
  icon: icon
201
708
  })));
202
709
  };
@@ -58,6 +58,17 @@ Object.keys(_dialog).forEach(function (key) {
58
58
  }
59
59
  });
60
60
  });
61
+ var _drawer = require("./drawer");
62
+ Object.keys(_drawer).forEach(function (key) {
63
+ if (key === "default" || key === "__esModule") return;
64
+ if (key in exports && exports[key] === _drawer[key]) return;
65
+ Object.defineProperty(exports, key, {
66
+ enumerable: true,
67
+ get: function get() {
68
+ return _drawer[key];
69
+ }
70
+ });
71
+ });
61
72
  var _editable = require("./editable");
62
73
  Object.keys(_editable).forEach(function (key) {
63
74
  if (key === "default" || key === "__esModule") return;
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.Skeleton = void 0;
7
7
  var _react = _interopRequireDefault(require("react"));
8
8
  var _propTypes = _interopRequireDefault(require("prop-types"));
9
- var _excluded = ["width", "height"];
9
+ var _excluded = ["width", "height", "spacing"];
10
10
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
11
11
  function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
12
12
  function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
@@ -14,9 +14,11 @@ function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t =
14
14
  var Skeleton = exports.Skeleton = function Skeleton(_ref) {
15
15
  var width = _ref.width,
16
16
  height = _ref.height,
17
+ _ref$spacing = _ref.spacing,
18
+ spacing = _ref$spacing === void 0 ? 'default' : _ref$spacing,
17
19
  props = _objectWithoutProperties(_ref, _excluded);
18
20
  return /*#__PURE__*/_react["default"].createElement("div", _extends({
19
- className: "skeleton blink-soft",
21
+ className: "skeleton blink-soft spacing-".concat(spacing),
20
22
  style: {
21
23
  width: width,
22
24
  height: height
@@ -25,5 +27,6 @@ var Skeleton = exports.Skeleton = function Skeleton(_ref) {
25
27
  };
26
28
  Skeleton.propTypes = {
27
29
  width: _propTypes["default"].oneOfType([_propTypes["default"].number, _propTypes["default"].string]),
28
- height: _propTypes["default"].oneOfType([_propTypes["default"].number, _propTypes["default"].string])
30
+ height: _propTypes["default"].oneOfType([_propTypes["default"].number, _propTypes["default"].string]),
31
+ spacing: _propTypes["default"].oneOf(['none', 'compact', 'default', 'plenty'])
29
32
  };
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useOverlayLayer = void 0;
7
+ var _react = require("react");
8
+ function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
9
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
10
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
11
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
12
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
13
+ function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
14
+ var BASE_Z_INDEX = 10000;
15
+ var nextZIndex = BASE_Z_INDEX;
16
+ var useOverlayLayer = exports.useOverlayLayer = function useOverlayLayer(open) {
17
+ var _useState = (0, _react.useState)(BASE_Z_INDEX),
18
+ _useState2 = _slicedToArray(_useState, 2),
19
+ zIndex = _useState2[0],
20
+ setZIndex = _useState2[1];
21
+ (0, _react.useLayoutEffect)(function () {
22
+ if (!open) return;
23
+ setZIndex(nextZIndex);
24
+ nextZIndex += 2;
25
+ }, [open]);
26
+ return zIndex;
27
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gdx-ui",
3
- "version": "2.2.4",
3
+ "version": "2.4.0",
4
4
  "description": "UI gdx",
5
5
  "main": "index.js",
6
6
  "module": "index.js",
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+
3
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports["default"] = exports.NestedOverlays = exports.DrawerDefault = void 0;
8
+ var _react = _interopRequireWildcard(require("react"));
9
+ var _components = require("../../components");
10
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
11
+ function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
12
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
13
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
14
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
15
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
16
+ function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
17
+ var _default = exports["default"] = {
18
+ title: 'Drawer/Drawer',
19
+ component: _components.Drawer,
20
+ parameters: {
21
+ layout: 'centered'
22
+ },
23
+ tags: ['autodocs']
24
+ };
25
+ var DrawerDefault = exports.DrawerDefault = {
26
+ args: {
27
+ open: true,
28
+ position: 'right'
29
+ },
30
+ render: function render(args) {
31
+ return /*#__PURE__*/_react["default"].createElement(_components.Drawer, args, "Hola mundo");
32
+ }
33
+ };
34
+ var NestedOverlays = exports.NestedOverlays = {
35
+ render: function render() {
36
+ var _useState = (0, _react.useState)(false),
37
+ _useState2 = _slicedToArray(_useState, 2),
38
+ drawerOpen = _useState2[0],
39
+ setDrawerOpen = _useState2[1];
40
+ var _useState3 = (0, _react.useState)(false),
41
+ _useState4 = _slicedToArray(_useState3, 2),
42
+ dialogOpen = _useState4[0],
43
+ setDialogOpen = _useState4[1];
44
+ return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_components.Button, {
45
+ onClick: function onClick() {
46
+ return setDialogOpen(true);
47
+ }
48
+ }, "Open dialog"), /*#__PURE__*/_react["default"].createElement(_components.Button, {
49
+ onClick: function onClick() {
50
+ return setDrawerOpen(true);
51
+ }
52
+ }, "Open drawer"), /*#__PURE__*/_react["default"].createElement(_components.Dialog, {
53
+ open: dialogOpen,
54
+ onClose: function onClose() {
55
+ return setDialogOpen(false);
56
+ }
57
+ }, /*#__PURE__*/_react["default"].createElement(_components.DialogTitle, null, "Dialog"), /*#__PURE__*/_react["default"].createElement(_components.DialogContent, null, /*#__PURE__*/_react["default"].createElement(_components.Button, {
58
+ onClick: function onClick() {
59
+ return setDrawerOpen(true);
60
+ }
61
+ }, "Open drawer"))), /*#__PURE__*/_react["default"].createElement(_components.Drawer, {
62
+ open: drawerOpen,
63
+ onClose: function onClose() {
64
+ return setDrawerOpen(false);
65
+ }
66
+ }, /*#__PURE__*/_react["default"].createElement(_components.Button, {
67
+ onClick: function onClick() {
68
+ return setDialogOpen(true);
69
+ }
70
+ }, "Open dialog")));
71
+ }
72
+ };
@@ -19,7 +19,7 @@ var _default = exports["default"] = {
19
19
  };
20
20
  var BoxDefault = exports.BoxDefault = {
21
21
  args: {
22
- content: 'Click to edit',
22
+ content: '<p>Click to edit</p>',
23
23
  error: undefined,
24
24
  height: 200
25
25
  },
@@ -3,13 +3,25 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports["default"] = void 0;
6
+ exports.Element = void 0;
7
7
  var _react = _interopRequireDefault(require("react"));
8
+ var _excluded = ["className", "main", "rounded"];
8
9
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
9
10
  function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
10
- var Element = function Element(props) {
11
+ function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
12
+ function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }
13
+ var Element = exports.Element = function Element(_ref) {
14
+ var _ref$className = _ref.className,
15
+ className = _ref$className === void 0 ? '' : _ref$className,
16
+ _ref$main = _ref.main,
17
+ main = _ref$main === void 0 ? true : _ref$main,
18
+ _ref$rounded = _ref.rounded,
19
+ rounded = _ref$rounded === void 0 ? true : _ref$rounded,
20
+ props = _objectWithoutProperties(_ref, _excluded);
11
21
  return /*#__PURE__*/_react["default"].createElement("div", _extends({
12
- className: "bg-default content rounded margin-bottom ".concat(props.className || '')
22
+ className: "".concat(className, " content\n ").concat(rounded ? ' rounded' : ''),
23
+ style: {
24
+ backgroundColor: main ? '#c2f0ff' : '#DDD'
25
+ }
13
26
  }, props), "Any Element");
14
- };
15
- var _default = exports["default"] = Element;
27
+ };
@@ -10,6 +10,7 @@ var _Expandable = require("../../components/expandable/Expandable");
10
10
  var _Separator = require("../../components/util/Separator");
11
11
  var _components = require("../../components");
12
12
  var _reactFontawesome = require("@fortawesome/react-fontawesome");
13
+ var _Element = require("./Element");
13
14
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
14
15
  var _default = exports["default"] = {
15
16
  title: 'Tokens/Borders',
@@ -30,12 +31,9 @@ var Borders = exports.Borders = {
30
31
  },
31
32
  render: function render(_ref) {
32
33
  var border = _ref.border;
33
- return /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement("div", {
34
+ return /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement(_Element.Element, {
34
35
  className: "".concat(border, " margin-bottom"),
35
- style: {
36
- padding: '15px',
37
- backgroundColor: '#ccffc1'
38
- }
36
+ rounded: false
39
37
  }, "Some content here"), /*#__PURE__*/_react["default"].createElement("div", null, "Use the class ", /*#__PURE__*/_react["default"].createElement("code", null, ".", border), " to apply this border."));
40
38
  }
41
39
  };
@@ -10,7 +10,19 @@ var _Expandable = require("../../components/expandable/Expandable");
10
10
  var _Separator = require("../../components/util/Separator");
11
11
  var _components = require("../../components");
12
12
  var _reactFontawesome = require("@fortawesome/react-fontawesome");
13
+ var _Element = require("./Element");
13
14
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
15
+ // const Element = ({ className = '', ...props }) => {
16
+ // return (
17
+ // <div
18
+ // className={`${className} content rounded`}
19
+ // style={{ backgroundColor: '#DDD' }}
20
+ // {...props}
21
+ // >
22
+ // Any Element
23
+ // </div>
24
+ // );
25
+ // };
14
26
  var _default = exports["default"] = {
15
27
  title: 'Tokens/Margins',
16
28
  // component: Tokens,
@@ -30,22 +42,12 @@ var Margins = exports.Margins = {
30
42
  },
31
43
  render: function render(_ref) {
32
44
  var margin = _ref.margin;
33
- return /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement("div", {
34
- style: {
35
- padding: '15px',
36
- backgroundColor: '#F5F5F5'
37
- }
38
- }, "Some content here"), /*#__PURE__*/_react["default"].createElement("div", {
39
- className: "".concat(margin),
40
- style: {
41
- padding: '15px',
42
- backgroundColor: '#ccffc1'
43
- }
44
- }, "This element will change its margin based on the selected option. ", /*#__PURE__*/_react["default"].createElement("br", null), "Use the class ", /*#__PURE__*/_react["default"].createElement("code", null, ".", margin), " to apply this margin."), /*#__PURE__*/_react["default"].createElement("div", {
45
- style: {
46
- padding: '15px',
47
- backgroundColor: '#F5F5F5'
48
- }
45
+ return /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement(_Element.Element, {
46
+ main: false
47
+ }, "Some content here"), /*#__PURE__*/_react["default"].createElement(_Element.Element, {
48
+ className: "".concat(margin)
49
+ }, "This element will change its margin based on the selected option. ", /*#__PURE__*/_react["default"].createElement("br", null), "Use the class ", /*#__PURE__*/_react["default"].createElement("code", null, ".", margin), " to apply this margin."), /*#__PURE__*/_react["default"].createElement(_Element.Element, {
50
+ main: false
49
51
  }, "Some content here"));
50
52
  }
51
53
  };