@adelalawdi/fnon2 2.0.2 → 2.0.3

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/fnon.min.css CHANGED
@@ -1 +1 @@
1
- :root{--fnon-font: "Quicksand", sans-serif;--fnon-z-overlay: 4000;--fnon-z-modal: 4001;--fnon-z-hint: 5000;--fnon-z-wait: 6000;--fnon-radius: 10px;--fnon-transition: .25s ease}.fnon-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--fnon-z-overlay);background:#0006;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity var(--fnon-transition);pointer-events:none}.fnon-overlay.fnon-active{opacity:1;pointer-events:all}.fnon-overlay-hidden{pointer-events:none!important;opacity:0!important}.fnon-task-bar{position:fixed;bottom:0;left:0;right:0;z-index:calc(var(--fnon-z-modal) + 20);display:flex;align-items:center;gap:4px;padding:4px 8px;background:#2d3748;box-shadow:0 -2px 8px #0003;font-family:var(--fnon-font)}.fnon-task-bar-btn{font-family:var(--fnon-font);font-size:.78rem;padding:4px 12px;border:none;border-radius:4px;background:#ffffff26;color:#fff;cursor:pointer;transition:background .15s;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:160px}.fnon-task-bar-btn:hover{background:#ffffff40}.fnon-modal{font-family:var(--fnon-font);background:var(--fnon-bg, #fff);border-radius:var(--fnon-radius);border:2px solid var(--fnon-title-background, #029eff);box-shadow:0 20px 60px #0003;max-width:480px;width:90%;max-height:85vh;display:flex;flex-direction:column;overflow:hidden;transform:translateY(30px) scale(.97);transition:transform var(--fnon-transition),opacity var(--fnon-transition);opacity:0}.fnon-modal.fnon-active{transform:translateY(0) scale(1);opacity:1}.fnon-modal.fnon-minimized{display:none!important}.fnon-modal-title{display:flex;align-items:center;justify-content:space-between;padding:14px 20px;background:var(--fnon-title-background, #029eff);color:var(--fnon-title-color, #fff);font-weight:600;font-size:1rem;-webkit-user-select:none;user-select:none;cursor:grab}.fnon-modal-title:active{cursor:grabbing}.fnon-dragging{transition:none!important}.fnon-dragging .fnon-modal-title{cursor:grabbing}.fnon-modal-title-text{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fnon-modal-controls{display:flex;align-items:center;gap:4px;margin-left:12px}.fnon-modal-controls button{background:none;border:none;color:inherit;cursor:pointer;padding:2px 6px;font-size:14px;line-height:1;border-radius:4px;opacity:.8;transition:opacity .15s}.fnon-modal-controls button:hover{opacity:1;background:#ffffff26}.fnon-modal-controls button:focus-visible{outline:2px solid currentColor;outline-offset:2px}.fnon-modal-body{padding:20px;font-size:.95rem;line-height:1.6;color:#2d3748;overflow-y:auto;flex:1}.fnon-modal-footer{display:flex;justify-content:flex-end;gap:8px;padding:12px 20px;border-top:1px solid #e2e8f0}.fnon-btn{font-family:var(--fnon-font);font-size:.82rem;font-weight:600;padding:8px 20px;border:none;border-radius:6px;cursor:pointer;transition:opacity .15s,transform .1s}.fnon-btn:hover{opacity:.88;transform:translateY(-1px)}.fnon-btn:active{transform:translateY(0)}.fnon-btn:focus-visible{outline:2px solid #c53030;outline-offset:2px}.fnon-btn{background:var(--fnon-btn-ok-background, #029eff);color:var(--fnon-btn-ok-color, #fff);box-shadow:0 2px 6px #00000026}.fnon-btn-light{background:#f8f9fa;color:#2d3748;box-shadow:0 1px 3px #0000001a}.fnon-btn-light:focus-visible{outline:2px solid #029eff;outline-offset:2px}.fnon-btn-danger{background:#ff6b6b;color:#fff}.fnon-btn-success{background:#39da8a;color:#fff}.fnon-btn-warning{background:#fdd347;color:#2d3748}.fnon-btn-info{background:#48dbfb;color:#2d3748}.fnon-btn-dark{background:#222f3e;color:#fff}.fnon-breaking{position:fixed;left:0;right:0;z-index:calc(var(--fnon-z-modal) + 10);font-family:var(--fnon-font);background:var(--fnon-title-background, #ff6b6b);color:var(--fnon-title-color, #fff);box-shadow:0 4px 20px #0003;transition:transform .35s cubic-bezier(.34,1.56,.64,1),opacity .25s;opacity:0}.fnon-breaking.fnon-breaking-top{top:0;transform:translateY(-100%)}.fnon-breaking.fnon-breaking-bottom{bottom:0;transform:translateY(100%);box-shadow:0 -4px 20px #0003}.fnon-breaking.fnon-breaking-active{transform:translateY(0)!important;opacity:1}.fnon-breaking-inner{display:flex;align-items:center;gap:16px;padding:12px 20px;max-width:1100px;margin:0 auto;flex-wrap:wrap}.fnon-breaking-headline{font-weight:700;font-size:.75rem;text-transform:uppercase;letter-spacing:.1em;background:#0003;padding:4px 10px;border-radius:4px;white-space:nowrap}.fnon-breaking-body{flex:1;font-size:.92rem;line-height:1.5}.fnon-breaking-buttons{display:flex;gap:6px}.fnon-breaking-buttons .fnon-btn{font-size:.78rem;padding:5px 14px}.fnon-breaking-close{background:none;border:none;color:inherit;cursor:pointer;padding:4px;opacity:.7;transition:opacity .15s;line-height:0}.fnon-breaking-close:hover{opacity:1}.fnon-breaking-close svg{width:18px;height:18px;fill:currentColor}.fnon-hint-container{position:fixed;z-index:var(--fnon-z-hint);pointer-events:none}.fnon-hint-container.right-top{top:16px;right:16px}.fnon-hint-container.right-center{top:50%;right:16px;transform:translateY(-50%)}.fnon-hint-container.right-bottom{bottom:16px;right:16px}.fnon-hint-container.left-top{top:16px;left:16px}.fnon-hint-container.left-center{top:50%;left:16px;transform:translateY(-50%)}.fnon-hint-container.left-bottom{bottom:16px;left:16px}.fnon-hint-container.center-top{top:16px;left:50%;transform:translate(-50%)}.fnon-hint-container.center-center{top:50%;left:50%;transform:translate(-50%,-50%)}.fnon-hint-container.center-bottom{bottom:16px;left:50%;transform:translate(-50%)}.fnon-hint{font-family:var(--fnon-font);display:flex;align-items:flex-start;gap:10px;padding:12px 16px;margin-bottom:8px;border-radius:8px;box-shadow:0 4px 14px #0000001a;pointer-events:all;max-width:360px;font-size:.88rem;line-height:1.5;transition:transform .3s ease,opacity .3s ease;opacity:0;transform:translate(40px)}.fnon-hint.fnon-hint-active{opacity:1;transform:translate(0)}.fnon-hint.fnon-hint-left-top,.fnon-hint.fnon-hint-left-center,.fnon-hint.fnon-hint-left-bottom{transform:translate(-40px)}.fnon-hint.fnon-hint-left-top.fnon-hint-active,.fnon-hint.fnon-hint-left-center.fnon-hint-active,.fnon-hint.fnon-hint-left-bottom.fnon-hint-active{transform:translate(0)}.fnon-hint.fnon-hint-right-top,.fnon-hint.fnon-hint-right-center,.fnon-hint.fnon-hint-right-bottom{transform:translate(40px)}.fnon-hint.fnon-hint-right-top.fnon-hint-active,.fnon-hint.fnon-hint-right-center.fnon-hint-active,.fnon-hint.fnon-hint-right-bottom.fnon-hint-active{transform:translate(0)}.fnon-hint.fnon-hint-center-top,.fnon-hint.fnon-hint-center-bottom,.fnon-hint.fnon-hint-center-center{transform:translateY(-20px)}.fnon-hint.fnon-hint-center-top.fnon-hint-active,.fnon-hint.fnon-hint-center-bottom.fnon-hint-active,.fnon-hint.fnon-hint-center-center.fnon-hint-active{transform:translateY(0)}.fnon-hint-icon{flex-shrink:0}.fnon-hint-icon svg{width:var(--fnon-icon-w, 20px);height:var(--fnon-icon-h, 20px);display:block}.fnon-hint-progress{position:absolute;bottom:0;left:0;height:3px;border-radius:0 0 0 8px;animation:fnon-hint-progress-shrink var(--display-dur, 4s) linear forwards}@keyframes fnon-hint-progress-shrink{0%{width:100%}to{width:0%}}.fnon-hint-content{flex:1;min-width:0}.fnon-hint-title{font-weight:600;font-size:.9rem;margin-bottom:2px}.fnon-hint-message{font-size:.85rem}.fnon-hint-close{background:none;border:none;cursor:pointer;padding:2px;opacity:.5;font-size:18px;line-height:1;transition:opacity .15s;color:inherit}.fnon-hint-close:hover{opacity:.8}.fnon-hint-close:focus-visible{outline:2px solid currentColor;outline-offset:2px}.fnon-wait-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--fnon-z-wait);background:#fff9;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .25s;pointer-events:none}.fnon-wait-overlay.fnon-wait-active{opacity:1;pointer-events:all}.fnon-wait-box{text-align:center;display:flex;flex-direction:column;align-items:center;gap:16px}.fnon-wait-text{font-family:var(--fnon-font);font-size:1rem;color:#2d3748;font-weight:500}.fnon-box-overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:#ffffffb3;display:flex;align-items:center;justify-content:center;z-index:10;border-radius:inherit}.fnon-box-inner{text-align:center;display:flex;flex-direction:column;align-items:center;gap:8px}.fnon-box-label{font-family:var(--fnon-font);font-size:.85rem;color:#2d3748}.fnon-sp-orbit{--fnon-sp-size: 48px;width:var(--fnon-sp-size);height:var(--fnon-sp-size);position:relative}.fnon-sp-orbit-dot{position:absolute;width:100%;height:100%;border-radius:50%;border:3px solid transparent;border-top-color:var(--fnon-sp-color, #029eff);animation:fnon-spin .8s linear infinite}.fnon-sp-orbit-dot:after{content:"";position:absolute;top:4px;left:4px;right:4px;bottom:4px;border-radius:50%;border:3px solid transparent;border-bottom-color:var(--fnon-sp-color, #029eff);animation:fnon-spin .5s linear infinite reverse}.fnon-sp-pulse{--fnon-sp-size: 48px;display:flex;align-items:center;justify-content:center;gap:5px;height:var(--fnon-sp-size)}.fnon-sp-pulse-bar{width:5px;height:60%;background:var(--fnon-sp-color, #39DA8A);border-radius:3px;animation:fnon-pulse .6s ease-in-out infinite alternate}.fnon-sp-pulse-bar:nth-child(2){animation-delay:.2s;height:90%}.fnon-sp-pulse-bar:nth-child(3){animation-delay:.4s;height:60%}.fnon-sp-spin{--fnon-sp-size: 48px;width:var(--fnon-sp-size);height:var(--fnon-sp-size)}.fnon-sp-spin-ring{width:100%;height:100%;border:4px solid #e2e8f0;border-top-color:var(--fnon-sp-color, #029eff);border-radius:50%;animation:fnon-spin .75s linear infinite}@keyframes fnon-spin{to{transform:rotate(360deg)}}@keyframes fnon-pulse{0%{transform:scaleY(.6)}to{transform:scaleY(1)}}.fnon-modal-sm{max-width:360px}.fnon-modal-nl{max-width:480px}.fnon-modal-lg{max-width:640px}.fnon-modal-xl{max-width:800px}.fnon-modal-fl{position:fixed!important;top:0!important;right:0!important;bottom:0!important;left:0!important;max-width:none!important;width:100%!important;max-height:none!important;height:100%!important;margin:0!important;border-radius:0!important;box-shadow:none!important}.fnon-hidden{display:none!important}.fnon-dp{font-family:var(--fnon-font, "Quicksand", sans-serif);-webkit-user-select:none;user-select:none;background:var(--dp-bg);--dp-accent: #029eff;--dp-bg: #fff;--dp-text: #2d3748;--dp-border: #e2e8f0;--dp-hover: #ebf8ff;--dp-other: #a0aec0;--dp-disabled: #e2e8f0;--dp-selected: #029eff;--dp-selected-text: #fff;--dp-range: #ebf8ff;--dp-popup-bg: #fff;--dp-popup-shadow: 0 8px 25px rgba(0,0,0,.12);--dp-today-ring: #029eff}.fnon-dp.fnon-dp-dark{--dp-bg: #0f172a;--dp-text: #e2e8f0;--dp-border: #334155;--dp-hover: #1e293b;--dp-other: #64748b;--dp-disabled: #334155;--dp-selected: #0284c7;--dp-selected-text: #fff;--dp-range: #1e3a5f;--dp-popup-bg: #1e293b;--dp-popup-shadow: 0 8px 25px rgba(0,0,0,.4);--dp-today-ring: #38bdf8}.fnon-dp-header{display:flex;align-items:center;gap:4px;padding:.75rem .75rem 0;position:relative}.fnon-dp-nav{background:none;border:1px solid var(--dp-border);border-radius:6px;width:32px;height:32px;font-size:1.2rem;cursor:pointer;color:var(--dp-text);display:flex;align-items:center;justify-content:center;transition:all .15s;flex-shrink:0;line-height:1}.fnon-dp-nav:hover{background:var(--dp-hover);border-color:var(--dp-accent);color:var(--dp-accent)}.fnon-dp-nav:focus-visible{outline:2px solid var(--dp-accent);outline-offset:1px}.fnon-dp-nav.fnon-dp-nav-disabled{opacity:.25;cursor:not-allowed;pointer-events:none}.fnon-dp-label{flex:1;text-align:center;background:none;border:1px solid transparent;border-radius:6px;padding:.3rem .5rem;font-size:.9rem;font-weight:600;cursor:pointer;color:var(--dp-text);transition:all .15s;font-family:inherit}.fnon-dp-label:hover{background:var(--dp-hover);border-color:var(--dp-border)}.fnon-dp-label:focus-visible{outline:2px solid var(--dp-accent);outline-offset:1px}.fnon-dp-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;padding:.5rem .75rem .25rem}.fnon-dp-dow{text-align:center;font-size:.65rem;font-weight:600;text-transform:uppercase;color:var(--dp-other);padding:.3rem 0;letter-spacing:.03em}.fnon-dp-day{text-align:center;padding:.4rem 0;font-size:.8rem;border-radius:6px;cursor:pointer;transition:all .12s;color:var(--dp-text);position:relative}.fnon-dp-day:hover:not(.fnon-dp-disabled):not(.fnon-dp-other){background:var(--dp-hover)}.fnon-dp-day:focus-visible{outline:2px solid var(--dp-accent);outline-offset:1px}.fnon-dp-day.fnon-dp-other{color:var(--dp-other);cursor:default}.fnon-dp-day.fnon-dp-disabled{color:var(--dp-disabled);cursor:not-allowed}.fnon-dp-day.fnon-dp-today{font-weight:700;box-shadow:inset 0 0 0 1.5px var(--dp-today-ring)}.fnon-dp-day.fnon-dp-selected{background:var(--dp-selected);color:var(--dp-selected-text);font-weight:600;box-shadow:none}.fnon-dp-day.fnon-dp-range{background:var(--dp-range);border-radius:0}.fnon-dp-day.fnon-dp-range-start{background:var(--dp-selected);color:var(--dp-selected-text);border-radius:6px 0 0 6px;font-weight:600}.fnon-dp-day.fnon-dp-range-end{background:var(--dp-selected);color:var(--dp-selected-text);border-radius:0 6px 6px 0;font-weight:600}.fnon-dp-day.fnon-dp-range-preview{background:var(--dp-range);border-radius:0;opacity:.55}.fnon-dp-time{display:flex;align-items:center;gap:8px;padding:.25rem .75rem .5rem}.fnon-dp-time label{font-size:.75rem;font-weight:600;color:var(--dp-text)}.fnon-dp-time-input{font-family:inherit;font-size:.8rem;padding:.25rem .5rem;border:1px solid var(--dp-border);border-radius:5px;background:transparent;color:var(--dp-text);outline:none}.fnon-dp-time-input:focus{border-color:var(--dp-accent)}.fnon-dp-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:6px;padding:.25rem .75rem .75rem}.fnon-dp-btn{font-family:inherit;font-size:.75rem;padding:.35rem .75rem;border:1px solid var(--dp-border);border-radius:6px;background:transparent;color:var(--dp-text);cursor:pointer;transition:all .15s}.fnon-dp-btn:hover{border-color:var(--dp-accent);color:var(--dp-accent);background:var(--dp-hover)}.fnon-dp-btn:focus-visible{outline:2px solid var(--dp-accent);outline-offset:1px}.fnon-dp-btn.fnon-dp-btn-primary{background:var(--dp-selected);color:var(--dp-selected-text);border-color:var(--dp-selected)}.fnon-dp-btn.fnon-dp-btn-primary:hover{opacity:.88}.fnon-dp-popup{--dp-popup-bg: #fff;--dp-popup-shadow: 0 8px 25px rgba(0,0,0,.12);--dp-border: #e2e8f0;--dp-hover: #ebf8ff;--dp-accent: #029eff;--dp-text: #2d3748;--dp-selected: #029eff;--dp-selected-text: #fff;--dp-today-ring: #029eff;position:fixed;z-index:7000;background:var(--dp-popup-bg);border:1px solid var(--dp-border);border-radius:10px;box-shadow:var(--dp-popup-shadow);padding:.5rem;overflow:hidden;animation:fnon-dp-popup-in .15s ease-out}.fnon-dp-popup.fnon-dp-dark{--dp-popup-bg: #1e293b;--dp-popup-shadow: 0 8px 25px rgba(0,0,0,.4);--dp-border: #334155;--dp-hover: #1e293b;--dp-accent: #0284c7;--dp-text: #e2e8f0;--dp-selected: #0284c7;--dp-selected-text: #fff;--dp-today-ring: #38bdf8}@keyframes fnon-dp-popup-in{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}[dir=rtl] .fnon-hint-container.right-top,[dir=rtl] .fnon-hint-container.right-center,[dir=rtl] .fnon-hint-container.right-bottom{right:auto;left:16px}[dir=rtl] .fnon-hint-container.left-top,[dir=rtl] .fnon-hint-container.left-center,[dir=rtl] .fnon-hint-container.left-bottom{left:auto;right:16px}[dir=rtl] .fnon-hint{transform:translate(-40px)}[dir=rtl] .fnon-hint.fnon-hint-active{transform:translate(0)}[dir=rtl] .fnon-hint-left-top,[dir=rtl] .fnon-hint-left-center,[dir=rtl] .fnon-hint-left-bottom{transform:translate(40px)}[dir=rtl] .fnon-hint-left-top.fnon-hint-active,[dir=rtl] .fnon-hint-left-center.fnon-hint-active,[dir=rtl] .fnon-hint-left-bottom.fnon-hint-active{transform:translate(0)}[dir=rtl] .fnon-hint-right-top,[dir=rtl] .fnon-hint-right-center,[dir=rtl] .fnon-hint-right-bottom{transform:translate(-40px)}[dir=rtl] .fnon-hint-right-top.fnon-hint-active,[dir=rtl] .fnon-hint-right-center.fnon-hint-active,[dir=rtl] .fnon-hint-right-bottom.fnon-hint-active{transform:translate(0)}[dir=rtl] .fnon-hint-progress{left:auto;right:0;border-radius:0 0 8px}[dir=rtl] .fnon-modal-controls{margin-left:0;margin-right:12px}[dir=rtl] .fnon-dp-range-start{border-radius:0 6px 6px 0}[dir=rtl] .fnon-dp-range-end{border-radius:6px 0 0 6px}.fnon-dp-popup-row{display:grid;grid-template-columns:repeat(4,1fr);gap:4px;margin-bottom:4px}.fnon-dp-popup-row:last-child{margin-bottom:0}.fnon-dp-popup-cell{text-align:center;padding:.4rem .2rem;font-size:.78rem;border-radius:6px;cursor:pointer;color:var(--dp-text);transition:all .1s}.fnon-dp-popup-cell:hover{background:var(--dp-hover);color:var(--dp-accent)}.fnon-dp-popup-cell.fnon-dp-popup-active{background:var(--dp-selected);color:var(--dp-selected-text);font-weight:600}.fnon-dp-popup-cell:focus-visible{outline:2px solid var(--dp-accent);outline-offset:1px}.fnon-dp-popup-nav{display:flex;align-items:center;gap:4px;margin-bottom:6px}.fnon-dp-popup-nav-btn{background:none;border:1px solid var(--dp-border);border-radius:5px;width:28px;height:28px;font-size:1rem;line-height:1;padding:0;font-family:inherit;cursor:pointer;color:var(--dp-text);display:flex;align-items:center;justify-content:center;flex-shrink:0}.fnon-dp-popup-nav-btn:hover{background:var(--dp-hover);border-color:var(--dp-accent);color:var(--dp-accent)}.fnon-dp-popup-nav-btn:focus-visible{outline:2px solid var(--dp-accent);outline-offset:1px}.fnon-dp-popup-nav-label{flex:1;text-align:center;font-size:.8rem;font-weight:600;color:var(--dp-text)}.fnon-cm{position:fixed;z-index:999999;min-width:180px;max-width:300px;max-height:min(100vh - 16px,420px);overflow-y:auto;background:#fff;border:1px solid #d1d5db;border-radius:6px;box-shadow:0 4px 16px #0000001f,0 1px 3px #00000014;padding:4px 0;font-family:inherit;font-size:13px;line-height:1.4;color:#1f2937;user-select:none;-webkit-user-select:none}.fnon-cm::-webkit-scrollbar{width:6px}.fnon-cm::-webkit-scrollbar-track{background:transparent}.fnon-cm::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:3px}.fnon-cm-dark{background:#1e293b;border-color:#334155;color:#e2e8f0}.fnon-cm-dark::-webkit-scrollbar-thumb{background:#475569}.fnon-cm-item{display:flex;align-items:center;padding:6px 16px;cursor:pointer;white-space:nowrap;gap:12px;outline:none}.fnon-cm-item:hover,.fnon-cm-item:focus-visible{background:#f3f4f6}.fnon-cm-item:focus-visible{outline:2px solid #029eff;outline-offset:-2px}.fnon-cm-dark .fnon-cm-item:hover,.fnon-cm-dark .fnon-cm-item:focus-visible{background:#334155}.fnon-cm-item-disabled{opacity:.4;cursor:default;pointer-events:none}.fnon-cm-item-text{flex:1;overflow:hidden;text-overflow:ellipsis}.fnon-cm-arrow{font-size:10px;color:#9ca3af;flex-shrink:0}.fnon-cm-dark .fnon-cm-arrow{color:#64748b}.fnon-cm-submenu{position:fixed;z-index:999999;max-width:320px;max-height:min(100vh - 16px,420px);min-width:180px}
1
+ :root{--fnon-font: "Quicksand", sans-serif;--fnon-z-overlay: 4000;--fnon-z-modal: 4001;--fnon-z-hint: 5000;--fnon-z-wait: 6000;--fnon-radius: 10px;--fnon-transition: .25s ease}.fnon-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--fnon-z-overlay);background:#0006;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity var(--fnon-transition);pointer-events:none}.fnon-overlay.fnon-active{opacity:1;pointer-events:all}.fnon-overlay-hidden{pointer-events:none!important;opacity:0!important}.fnon-task-bar{position:fixed;bottom:0;left:0;right:0;z-index:calc(var(--fnon-z-modal) + 20);display:flex;align-items:center;gap:4px;padding:4px 8px;background:#2d3748;box-shadow:0 -2px 8px #0003;font-family:var(--fnon-font)}.fnon-task-bar-btn{font-family:var(--fnon-font);font-size:.78rem;padding:4px 12px;border:none;border-radius:4px;background:#ffffff26;color:#fff;cursor:pointer;transition:background .15s;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:160px}.fnon-task-bar-btn:hover{background:#ffffff40}.fnon-modal{font-family:var(--fnon-font);background:var(--fnon-bg, #fff);border-radius:var(--fnon-radius);border:2px solid var(--fnon-title-background, #029eff);box-shadow:0 20px 60px #0003;max-width:480px;width:90%;max-height:85vh;display:flex;flex-direction:column;overflow:hidden;transform:translateY(30px) scale(.97);transition:transform var(--fnon-transition),opacity var(--fnon-transition);opacity:0}.fnon-modal.fnon-active{transform:translateY(0) scale(1);opacity:1}.fnon-modal.fnon-minimized{display:none!important}.fnon-modal-title{display:flex;align-items:center;justify-content:space-between;padding:14px 20px;background:var(--fnon-title-background, #029eff);color:var(--fnon-title-color, #fff);font-weight:600;font-size:1rem;-webkit-user-select:none;user-select:none;cursor:grab}.fnon-modal-title:active{cursor:grabbing}.fnon-dragging{transition:none!important}.fnon-dragging .fnon-modal-title{cursor:grabbing}.fnon-modal-title-text{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fnon-modal-controls{display:flex;align-items:center;gap:4px;margin-left:12px}.fnon-modal-controls button{background:none;border:none;color:inherit;cursor:pointer;padding:2px 6px;font-size:14px;line-height:1;border-radius:4px;opacity:.8;transition:opacity .15s}.fnon-modal-controls button:hover{opacity:1;background:#ffffff26}.fnon-modal-controls button:focus-visible{outline:2px solid currentColor;outline-offset:2px}.fnon-modal-body{padding:20px;font-size:.95rem;line-height:1.6;color:#2d3748;overflow-y:auto;flex:1}.fnon-modal-footer{display:flex;justify-content:flex-end;gap:8px;padding:12px 20px;border-top:1px solid #e2e8f0}.fnon-btn{font-family:var(--fnon-font);font-size:.82rem;font-weight:600;padding:8px 20px;border:none;border-radius:6px;cursor:pointer;transition:opacity .15s,transform .1s}.fnon-btn:hover{opacity:.88;transform:translateY(-1px)}.fnon-btn:active{transform:translateY(0)}.fnon-btn:focus-visible{outline:2px solid #c53030;outline-offset:2px}.fnon-btn{background:var(--fnon-btn-ok-background, #029eff);color:var(--fnon-btn-ok-color, #fff);box-shadow:0 2px 6px #00000026}.fnon-btn-light{background:#f8f9fa;color:#2d3748;box-shadow:0 1px 3px #0000001a}.fnon-btn-light:focus-visible{outline:2px solid #029eff;outline-offset:2px}.fnon-btn-danger{background:#ff6b6b;color:#fff}.fnon-btn-success{background:#39da8a;color:#fff}.fnon-btn-warning{background:#fdd347;color:#2d3748}.fnon-btn-info{background:#48dbfb;color:#2d3748}.fnon-btn-dark{background:#222f3e;color:#fff}.fnon-breaking{position:fixed;left:0;right:0;z-index:calc(var(--fnon-z-modal) + 10);font-family:var(--fnon-font);background:var(--fnon-title-background, #ff6b6b);color:var(--fnon-title-color, #fff);box-shadow:0 4px 20px #0003;transition:transform .35s cubic-bezier(.34,1.56,.64,1),opacity .25s;opacity:0}.fnon-breaking.fnon-breaking-top{top:0;transform:translateY(-100%)}.fnon-breaking.fnon-breaking-bottom{bottom:0;transform:translateY(100%);box-shadow:0 -4px 20px #0003}.fnon-breaking.fnon-breaking-active{transform:translateY(0)!important;opacity:1}.fnon-breaking-inner{display:flex;align-items:center;gap:16px;padding:12px 20px;max-width:1100px;margin:0 auto;flex-wrap:wrap}.fnon-breaking-headline{font-weight:700;font-size:.75rem;text-transform:uppercase;letter-spacing:.1em;background:#0003;padding:4px 10px;border-radius:4px;white-space:nowrap}.fnon-breaking-body{flex:1;font-size:.92rem;line-height:1.5}.fnon-breaking-buttons{display:flex;gap:6px}.fnon-breaking-buttons .fnon-btn{font-size:.78rem;padding:5px 14px}.fnon-breaking-close{background:none;border:none;color:inherit;cursor:pointer;padding:4px;opacity:.7;transition:opacity .15s;line-height:0}.fnon-breaking-close:hover{opacity:1}.fnon-breaking-close svg{width:18px;height:18px;fill:currentColor}.fnon-hint-container{position:fixed;z-index:var(--fnon-z-hint);pointer-events:none}.fnon-hint-container.right-top{top:16px;right:16px}.fnon-hint-container.right-center{top:50%;right:16px;transform:translateY(-50%)}.fnon-hint-container.right-bottom{bottom:16px;right:16px}.fnon-hint-container.left-top{top:16px;left:16px}.fnon-hint-container.left-center{top:50%;left:16px;transform:translateY(-50%)}.fnon-hint-container.left-bottom{bottom:16px;left:16px}.fnon-hint-container.center-top{top:16px;left:50%;transform:translate(-50%)}.fnon-hint-container.center-center{top:50%;left:50%;transform:translate(-50%,-50%)}.fnon-hint-container.center-bottom{bottom:16px;left:50%;transform:translate(-50%)}.fnon-hint{font-family:var(--fnon-font);display:flex;align-items:flex-start;gap:10px;padding:12px 16px;margin-bottom:8px;border-radius:8px;box-shadow:0 4px 14px #0000001a;pointer-events:all;max-width:360px;font-size:.88rem;line-height:1.5;transition:transform .3s ease,opacity .3s ease;opacity:0;transform:translate(40px)}.fnon-hint.fnon-hint-active{opacity:1;transform:translate(0)}.fnon-hint.fnon-hint-left-top,.fnon-hint.fnon-hint-left-center,.fnon-hint.fnon-hint-left-bottom{transform:translate(-40px)}.fnon-hint.fnon-hint-left-top.fnon-hint-active,.fnon-hint.fnon-hint-left-center.fnon-hint-active,.fnon-hint.fnon-hint-left-bottom.fnon-hint-active{transform:translate(0)}.fnon-hint.fnon-hint-right-top,.fnon-hint.fnon-hint-right-center,.fnon-hint.fnon-hint-right-bottom{transform:translate(40px)}.fnon-hint.fnon-hint-right-top.fnon-hint-active,.fnon-hint.fnon-hint-right-center.fnon-hint-active,.fnon-hint.fnon-hint-right-bottom.fnon-hint-active{transform:translate(0)}.fnon-hint.fnon-hint-center-top,.fnon-hint.fnon-hint-center-bottom,.fnon-hint.fnon-hint-center-center{transform:translateY(-20px)}.fnon-hint.fnon-hint-center-top.fnon-hint-active,.fnon-hint.fnon-hint-center-bottom.fnon-hint-active,.fnon-hint.fnon-hint-center-center.fnon-hint-active{transform:translateY(0)}.fnon-hint-icon{flex-shrink:0}.fnon-hint-icon svg{width:var(--fnon-icon-w, 20px);height:var(--fnon-icon-h, 20px);display:block}.fnon-hint-progress{position:absolute;bottom:0;left:0;height:3px;border-radius:0 0 0 8px;animation:fnon-hint-progress-shrink var(--display-dur, 4s) linear forwards}@keyframes fnon-hint-progress-shrink{0%{width:100%}to{width:0%}}.fnon-hint-content{flex:1;min-width:0}.fnon-hint-title{font-weight:600;font-size:.9rem;margin-bottom:2px}.fnon-hint-message{font-size:.85rem}.fnon-hint-close{background:none;border:none;cursor:pointer;padding:2px;opacity:.5;font-size:18px;line-height:1;transition:opacity .15s;color:inherit}.fnon-hint-close:hover{opacity:.8}.fnon-hint-close:focus-visible{outline:2px solid currentColor;outline-offset:2px}.fnon-wait-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--fnon-z-wait);background:#fff9;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .25s;pointer-events:none}.fnon-wait-overlay.fnon-wait-active{opacity:1;pointer-events:all}.fnon-wait-box{text-align:center;display:flex;flex-direction:column;align-items:center;gap:16px}.fnon-wait-text{font-family:var(--fnon-font);font-size:1rem;color:#2d3748;font-weight:500}.fnon-box-overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:#ffffffb3;display:flex;align-items:center;justify-content:center;z-index:10;border-radius:inherit}.fnon-box-inner{text-align:center;display:flex;flex-direction:column;align-items:center;gap:8px}.fnon-box-label{font-family:var(--fnon-font);font-size:.85rem;color:#2d3748}.fnon-sp-orbit{--fnon-sp-size: 48px;width:var(--fnon-sp-size);height:var(--fnon-sp-size);position:relative}.fnon-sp-orbit-dot{position:absolute;width:100%;height:100%;border-radius:50%;border:3px solid transparent;border-top-color:var(--fnon-sp-color, #029eff);animation:fnon-spin .8s linear infinite}.fnon-sp-orbit-dot:after{content:"";position:absolute;top:4px;left:4px;right:4px;bottom:4px;border-radius:50%;border:3px solid transparent;border-bottom-color:var(--fnon-sp-color, #029eff);animation:fnon-spin .5s linear infinite reverse}.fnon-sp-pulse{--fnon-sp-size: 48px;display:flex;align-items:center;justify-content:center;gap:5px;height:var(--fnon-sp-size)}.fnon-sp-pulse-bar{width:5px;height:60%;background:var(--fnon-sp-color, #39DA8A);border-radius:3px;animation:fnon-pulse .6s ease-in-out infinite alternate}.fnon-sp-pulse-bar:nth-child(2){animation-delay:.2s;height:90%}.fnon-sp-pulse-bar:nth-child(3){animation-delay:.4s;height:60%}.fnon-sp-spin{--fnon-sp-size: 48px;width:var(--fnon-sp-size);height:var(--fnon-sp-size)}.fnon-sp-spin-ring{width:100%;height:100%;border:4px solid #e2e8f0;border-top-color:var(--fnon-sp-color, #029eff);border-radius:50%;animation:fnon-spin .75s linear infinite}@keyframes fnon-spin{to{transform:rotate(360deg)}}@keyframes fnon-pulse{0%{transform:scaleY(.6)}to{transform:scaleY(1)}}.fnon-modal-sm{max-width:360px}.fnon-modal-nl{max-width:480px}.fnon-modal-lg{max-width:640px}.fnon-modal-xl{max-width:800px}.fnon-modal-fl{position:fixed!important;top:0!important;right:0!important;bottom:0!important;left:0!important;max-width:none!important;width:100%!important;max-height:var(--fnon-fl-max-height, none)!important;height:100%!important;margin:0!important;border-radius:0!important;box-shadow:none!important}.fnon-hidden{display:none!important}.fnon-dp{font-family:var(--fnon-font, "Quicksand", sans-serif);-webkit-user-select:none;user-select:none;background:var(--dp-bg);--dp-accent: #029eff;--dp-bg: #fff;--dp-text: #2d3748;--dp-border: #e2e8f0;--dp-hover: #ebf8ff;--dp-other: #a0aec0;--dp-disabled: #e2e8f0;--dp-selected: #029eff;--dp-selected-text: #fff;--dp-range: #ebf8ff;--dp-popup-bg: #fff;--dp-popup-shadow: 0 8px 25px rgba(0,0,0,.12);--dp-today-ring: #029eff}.fnon-dp.fnon-dp-dark{--dp-bg: #0f172a;--dp-text: #e2e8f0;--dp-border: #334155;--dp-hover: #1e293b;--dp-other: #64748b;--dp-disabled: #334155;--dp-selected: #0284c7;--dp-selected-text: #fff;--dp-range: #1e3a5f;--dp-popup-bg: #1e293b;--dp-popup-shadow: 0 8px 25px rgba(0,0,0,.4);--dp-today-ring: #38bdf8}.fnon-dp-header{display:flex;align-items:center;gap:4px;padding:.75rem .75rem 0;position:relative}.fnon-dp-nav{background:none;border:1px solid var(--dp-border);border-radius:6px;width:32px;height:32px;font-size:1.2rem;cursor:pointer;color:var(--dp-text);display:flex;align-items:center;justify-content:center;transition:all .15s;flex-shrink:0;line-height:1}.fnon-dp-nav:hover{background:var(--dp-hover);border-color:var(--dp-accent);color:var(--dp-accent)}.fnon-dp-nav:focus-visible{outline:2px solid var(--dp-accent);outline-offset:1px}.fnon-dp-nav.fnon-dp-nav-disabled{opacity:.25;cursor:not-allowed;pointer-events:none}.fnon-dp-label{flex:1;text-align:center;background:none;border:1px solid transparent;border-radius:6px;padding:.3rem .5rem;font-size:.9rem;font-weight:600;cursor:pointer;color:var(--dp-text);transition:all .15s;font-family:inherit}.fnon-dp-label:hover{background:var(--dp-hover);border-color:var(--dp-border)}.fnon-dp-label:focus-visible{outline:2px solid var(--dp-accent);outline-offset:1px}.fnon-dp-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;padding:.5rem .75rem .25rem}.fnon-dp-dow{text-align:center;font-size:.65rem;font-weight:600;text-transform:uppercase;color:var(--dp-other);padding:.3rem 0;letter-spacing:.03em}.fnon-dp-day{text-align:center;padding:.4rem 0;font-size:.8rem;border-radius:6px;cursor:pointer;transition:all .12s;color:var(--dp-text);position:relative}.fnon-dp-day:hover:not(.fnon-dp-disabled):not(.fnon-dp-other){background:var(--dp-hover)}.fnon-dp-day:focus-visible{outline:2px solid var(--dp-accent);outline-offset:1px}.fnon-dp-day.fnon-dp-other{color:var(--dp-other);cursor:default}.fnon-dp-day.fnon-dp-disabled{color:var(--dp-disabled);cursor:not-allowed}.fnon-dp-day.fnon-dp-today{font-weight:700;box-shadow:inset 0 0 0 1.5px var(--dp-today-ring)}.fnon-dp-day.fnon-dp-selected{background:var(--dp-selected);color:var(--dp-selected-text);font-weight:600;box-shadow:none}.fnon-dp-day.fnon-dp-range{background:var(--dp-range);border-radius:0}.fnon-dp-day.fnon-dp-range-start{background:var(--dp-selected);color:var(--dp-selected-text);border-radius:6px 0 0 6px;font-weight:600}.fnon-dp-day.fnon-dp-range-end{background:var(--dp-selected);color:var(--dp-selected-text);border-radius:0 6px 6px 0;font-weight:600}.fnon-dp-day.fnon-dp-range-preview{background:var(--dp-range);border-radius:0;opacity:.55}.fnon-dp-time{display:flex;align-items:center;gap:8px;padding:.25rem .75rem .5rem}.fnon-dp-time label{font-size:.75rem;font-weight:600;color:var(--dp-text)}.fnon-dp-time-input{font-family:inherit;font-size:.8rem;padding:.25rem .5rem;border:1px solid var(--dp-border);border-radius:5px;background:transparent;color:var(--dp-text);outline:none}.fnon-dp-time-input:focus{border-color:var(--dp-accent)}.fnon-dp-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:6px;padding:.25rem .75rem .75rem}.fnon-dp-btn{font-family:inherit;font-size:.75rem;padding:.35rem .75rem;border:1px solid var(--dp-border);border-radius:6px;background:transparent;color:var(--dp-text);cursor:pointer;transition:all .15s}.fnon-dp-btn:hover{border-color:var(--dp-accent);color:var(--dp-accent);background:var(--dp-hover)}.fnon-dp-btn:focus-visible{outline:2px solid var(--dp-accent);outline-offset:1px}.fnon-dp-btn.fnon-dp-btn-primary{background:var(--dp-selected);color:var(--dp-selected-text);border-color:var(--dp-selected)}.fnon-dp-btn.fnon-dp-btn-primary:hover{opacity:.88}.fnon-dp-popup{--dp-popup-bg: #fff;--dp-popup-shadow: 0 8px 25px rgba(0,0,0,.12);--dp-border: #e2e8f0;--dp-hover: #ebf8ff;--dp-accent: #029eff;--dp-text: #2d3748;--dp-selected: #029eff;--dp-selected-text: #fff;--dp-today-ring: #029eff;position:fixed;z-index:7000;background:var(--dp-popup-bg);border:1px solid var(--dp-border);border-radius:10px;box-shadow:var(--dp-popup-shadow);padding:.5rem;overflow:hidden;animation:fnon-dp-popup-in .15s ease-out}.fnon-dp-popup.fnon-dp-dark{--dp-popup-bg: #1e293b;--dp-popup-shadow: 0 8px 25px rgba(0,0,0,.4);--dp-border: #334155;--dp-hover: #1e293b;--dp-accent: #0284c7;--dp-text: #e2e8f0;--dp-selected: #0284c7;--dp-selected-text: #fff;--dp-today-ring: #38bdf8}@keyframes fnon-dp-popup-in{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}[dir=rtl] .fnon-hint-container.right-top,[dir=rtl] .fnon-hint-container.right-center,[dir=rtl] .fnon-hint-container.right-bottom{right:auto;left:16px}[dir=rtl] .fnon-hint-container.left-top,[dir=rtl] .fnon-hint-container.left-center,[dir=rtl] .fnon-hint-container.left-bottom{left:auto;right:16px}[dir=rtl] .fnon-hint{transform:translate(-40px)}[dir=rtl] .fnon-hint.fnon-hint-active{transform:translate(0)}[dir=rtl] .fnon-hint-left-top,[dir=rtl] .fnon-hint-left-center,[dir=rtl] .fnon-hint-left-bottom{transform:translate(40px)}[dir=rtl] .fnon-hint-left-top.fnon-hint-active,[dir=rtl] .fnon-hint-left-center.fnon-hint-active,[dir=rtl] .fnon-hint-left-bottom.fnon-hint-active{transform:translate(0)}[dir=rtl] .fnon-hint-right-top,[dir=rtl] .fnon-hint-right-center,[dir=rtl] .fnon-hint-right-bottom{transform:translate(-40px)}[dir=rtl] .fnon-hint-right-top.fnon-hint-active,[dir=rtl] .fnon-hint-right-center.fnon-hint-active,[dir=rtl] .fnon-hint-right-bottom.fnon-hint-active{transform:translate(0)}[dir=rtl] .fnon-hint-progress{left:auto;right:0;border-radius:0 0 8px}[dir=rtl] .fnon-modal-controls{margin-left:0;margin-right:12px}[dir=rtl] .fnon-dp-range-start{border-radius:0 6px 6px 0}[dir=rtl] .fnon-dp-range-end{border-radius:6px 0 0 6px}.fnon-dp-popup-row{display:grid;grid-template-columns:repeat(4,1fr);gap:4px;margin-bottom:4px}.fnon-dp-popup-row:last-child{margin-bottom:0}.fnon-dp-popup-cell{text-align:center;padding:.4rem .2rem;font-size:.78rem;border-radius:6px;cursor:pointer;color:var(--dp-text);transition:all .1s}.fnon-dp-popup-cell:hover{background:var(--dp-hover);color:var(--dp-accent)}.fnon-dp-popup-cell.fnon-dp-popup-active{background:var(--dp-selected);color:var(--dp-selected-text);font-weight:600}.fnon-dp-popup-cell:focus-visible{outline:2px solid var(--dp-accent);outline-offset:1px}.fnon-dp-popup-nav{display:flex;align-items:center;gap:4px;margin-bottom:6px}.fnon-dp-popup-nav-btn{background:none;border:1px solid var(--dp-border);border-radius:5px;width:28px;height:28px;font-size:1rem;line-height:1;padding:0;font-family:inherit;cursor:pointer;color:var(--dp-text);display:flex;align-items:center;justify-content:center;flex-shrink:0}.fnon-dp-popup-nav-btn:hover{background:var(--dp-hover);border-color:var(--dp-accent);color:var(--dp-accent)}.fnon-dp-popup-nav-btn:focus-visible{outline:2px solid var(--dp-accent);outline-offset:1px}.fnon-dp-popup-nav-label{flex:1;text-align:center;font-size:.8rem;font-weight:600;color:var(--dp-text)}.fnon-cm{position:fixed;z-index:999999;min-width:180px;max-width:300px;max-height:min(100vh - 16px,420px);overflow-y:auto;background:#fff;border:1px solid #d1d5db;border-radius:6px;box-shadow:0 4px 16px #0000001f,0 1px 3px #00000014;padding:4px 0;font-family:inherit;font-size:13px;line-height:1.4;color:#1f2937;user-select:none;-webkit-user-select:none}.fnon-cm::-webkit-scrollbar{width:6px}.fnon-cm::-webkit-scrollbar-track{background:transparent}.fnon-cm::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:3px}.fnon-cm-dark{background:#1e293b;border-color:#334155;color:#e2e8f0}.fnon-cm-dark::-webkit-scrollbar-thumb{background:#475569}.fnon-cm-item{display:flex;align-items:center;padding:6px 16px;cursor:pointer;white-space:nowrap;gap:12px;outline:none}.fnon-cm-item:hover,.fnon-cm-item:focus-visible{background:#f3f4f6}.fnon-cm-item:focus-visible{outline:2px solid #029eff;outline-offset:-2px}.fnon-cm-dark .fnon-cm-item:hover,.fnon-cm-dark .fnon-cm-item:focus-visible{background:#334155}.fnon-cm-item-disabled{opacity:.4;cursor:default;pointer-events:none}.fnon-cm-item-text{flex:1;overflow:hidden;text-overflow:ellipsis}.fnon-cm-arrow{font-size:10px;color:#9ca3af;flex-shrink:0}.fnon-cm-dark .fnon-cm-arrow{color:#64748b}.fnon-cm-submenu{position:fixed;z-index:999999;max-width:320px;max-height:min(100vh - 16px,420px);min-width:180px}
package/fnon.min.js CHANGED
@@ -1 +1 @@
1
- var Fnon=(function(){"use strict";function E(e){typeof console<"u"&&console.error("[Fnon]",e)}function se(e){return typeof e=="string"?document.querySelector(e):e instanceof HTMLElement?e:null}function we(e){return typeof e=="string"?e:e instanceof HTMLElement?e.outerHTML:String(e)}function le(e){const t=document.createElement("div");t.style.color=e,document.body.appendChild(t);const n=getComputedStyle(t).color;document.body.removeChild(t);const o=n.match(/rgb(a)?\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)/);return o?{r:+o[2],g:+o[3],b:+o[4]}:null}function Oe(e,t){const n=le(e);if(!n)return e;const o=1-t;return`rgb(${n.r*o|0},${n.g*o|0},${n.b*o|0})`}function vn(e,t){const n=le(e);if(!n)return e;const o=1-t;return`rgb(${255-(255-n.r)*o|0},${255-(255-n.g)*o|0},${255-(255-n.b)*o|0})`}function xe(e,t=4){if(t===4)return le(e)?[e,vn(e,.3),Oe(e,.15),Oe(e,.3)]:[e,e,e,e];const n=le(e);if(!n)return Array(t).fill(e);const o=[e];let r=n.r,a=n.g,l=n.b;for(let i=0;i<t-1;i++)r=Math.max(0,r-33),a=Math.max(0,a-33),l=Math.max(0,l-33),o.push(`rgb(${r},${a},${l})`);return o}function He(){return"&times;"}function yn(e){const t=e.replace("#","");let n,o,r;if(t.length===3)n=parseInt(t[0]+t[0],16),o=parseInt(t[1]+t[1],16),r=parseInt(t[2]+t[2],16);else if(t.length===6)n=parseInt(t.substring(0,2),16),o=parseInt(t.substring(2,4),16),r=parseInt(t.substring(4,6),16);else return"#2d3748";return(.299*n+.587*o+.114*r)/255>.55?"#2d3748":"#fff"}const ce={Primary:{titleBackground:"#029eff",titleColor:"#fff",btnOkBackground:"#029eff",btnOkColor:"#fff",btnOkBorderColor:"#029eff",backgroundColor:"#fff"},Success:{titleBackground:"#39DA8A",titleColor:"#fff",btnOkBackground:"#39DA8A",btnOkColor:"#fff",btnOkBorderColor:"#39DA8A",backgroundColor:"#fff"},Warning:{titleBackground:"#fdd347",titleColor:"#2d3748",btnOkBackground:"#fdd347",btnOkColor:"#2d3748",btnOkBorderColor:"#fdd347",backgroundColor:"#fff"},Danger:{titleBackground:"#ff6b6b",titleColor:"#fff",btnOkBackground:"#ff6b6b",btnOkColor:"#fff",btnOkBorderColor:"#ff6b6b",backgroundColor:"#fff"},Info:{titleBackground:"#48dbfb",titleColor:"#2d3748",btnOkBackground:"#48dbfb",btnOkColor:"#2d3748",btnOkBorderColor:"#48dbfb",backgroundColor:"#fff"},Light:{titleBackground:"#f8f9fa",titleColor:"#2d3748",btnOkBackground:"#f8f9fa",btnOkColor:"#2d3748",btnOkBorderColor:"#ced4da",backgroundColor:"#fff"},Dark:{titleBackground:"#222f3e",titleColor:"#fff",btnOkBackground:"#222f3e",btnOkColor:"#fff",btnOkBorderColor:"#222f3e",backgroundColor:"#fff"}};let de={};function kn(e,t){de[e]={...de[e],...t}}function Ye(e){return de[e]?{...ce[e],...de[e]}:ce[e]?ce[e]:null}function ze(e){const t=Ye(e)||ce.Primary,n=[];for(const[a,l]of Object.entries(t)){const i=a.replace(/([A-Z])/g,"-$1").toLowerCase();n.push(`--fnon-${i}: ${l};`)}const o=t.titleBackground||"#029eff",r=xe(o);return n.push(`--fnon-title-shade-light: ${r[1]};`),n.push(`--fnon-title-shade-dark: ${r[2]};`),n.push(`--fnon-title-shade-border: ${r[3]};`),n.join(" ")}let Le=null;const U=[],Ee=new Map;function Cn(e){Le=e}function qe(e,t,n){if(!Le)return!1;try{return Le(e,t,n)===!0}catch(o){return E(`Renderer failed: ${o}`),!1}}function wn(e,t){U.push({modalId:e,fn:t})}function xn(e,t){Ee.set(e,t)}function Ln(e){const t=Ee.get(e);return Ee.delete(e),t}function je(e){for(let n=U.length-1;n>=0;n--)if(U[n].modalId===e){try{U[n].fn()}catch(o){E(`Cleanup failed: ${o}`)}U.splice(n,1)}const t=Ln(e);if(t&&typeof t.unmount=="function")try{t.unmount()}catch{}}function En(e){if(!e)return"";if(e instanceof HTMLElement)return e.textContent||"";if(typeof e=="string")return e.replace(/<[^>]*>/g,"");const t=e;return typeof t.innerHTML=="string"?t.innerHTML.replace(/<[^>]*>/g,""):String(e)}let Dn=0;const H=[],fe=new Map,ue=new Map,Y=new Map,V=new Map,Mn='a[href], button:not([disabled]), input:not([disabled]), textarea:not([disabled]), select:not([disabled]), [tabindex]:not([tabindex="-1"])';function Sn(e,t,n){const o=document.activeElement,r=a=>{if(a.key!=="Tab")return;const l=t.querySelectorAll(Mn);if(l.length===0)return;const i=l[0],u=l[l.length-1];a.shiftKey?document.activeElement===i&&(a.preventDefault(),u.focus()):document.activeElement===u&&(a.preventDefault(),i.focus())};n.addEventListener("keydown",r),V.set(e,{previousFocus:o,handler:r})}function Tn(e){const t=V.get(e);if(!t)return;const n=document.querySelector(`.fnon-overlay[data-modal-id="${e}"]`);n&&n.removeEventListener("keydown",t.handler),t.previousFocus&&typeof t.previousFocus.focus=="function"&&t.previousFocus.focus(),V.delete(e)}function Nn(e){const t=V.get(e);if(!t)return;const n=document.querySelector(`.fnon-overlay[data-modal-id="${e}"]`);n&&n.removeEventListener("keydown",t.handler)}function We(e){const t=V.get(e);if(!t)return;const n=document.querySelector(`.fnon-overlay[data-modal-id="${e}"]`);n&&n.addEventListener("keydown",t.handler)}const me="fnon-task-bar";function Bn(){let e=document.getElementById(me);return e||(e=document.createElement("div"),e.id=me,e.className="fnon-task-bar",document.body.appendChild(e)),e}function An(e,t,n,o){const r=Bn(),a=document.createElement("button");a.className="fnon-task-bar-btn",a.textContent=t||"Minimized",a.dataset.modalId=e,a.addEventListener("click",()=>{if(n.classList.remove("fnon-minimized"),o.classList.remove("fnon-overlay-hidden"),We(e),o.parentNode.appendChild(o),a.remove(),Y.delete(e),Y.size===0){const l=document.getElementById(me);l&&l.remove()}}),r.appendChild(a)}function In(){const e=document.getElementById(me);e&&Y.size===0&&e.remove()}function Ke(){return`fnon-modal-${++Dn}`}const Fn={closeButton:!0,autoFocus:!1,autoFocusTag:"input:not([disabled])",autoFocusDelay:0,focusTrap:!0,appendTarget:"body",layout:"hbf",fontFamily:"'Quicksand', sans-serif",animation:"slide-top",color:"#2b2b2b",background:"rgba(0, 0, 0, 0.4)",zIndex:4e3,showIcon:!1,delButtons:!1};function Rn(e,t){let n=!1,o=0,r=0,a=0,l=0,i=0;function u(){return e.closest('[dir="rtl"]')!==null||document.documentElement.dir==="rtl"}t.addEventListener("mousedown",s=>{if(e.classList.contains("fnon-modal-fl"))return;n=!0,o=s.clientX,r=s.clientY;const c=e.getBoundingClientRect();a=c.left,i=c.right,l=c.top,e.style.position="fixed",e.style.margin="0",e.style.bottom="auto",u()?(e.style.right=window.innerWidth-i+"px",e.style.left="auto"):(e.style.left=a+"px",e.style.right="auto"),e.style.top=l+"px",e.classList.add("fnon-dragging"),s.preventDefault()}),document.addEventListener("mousemove",s=>{if(!n)return;const c=s.clientX-o,d=s.clientY-r;u()?e.style.right=window.innerWidth-i-c+"px":e.style.left=a+c+"px",e.style.top=l+d+"px"}),document.addEventListener("mouseup",()=>{n&&(n=!1,e.classList.remove("fnon-dragging"))})}function z(e,t){var h;const n={...Fn,...t},o=Ke();n.showClose!==void 0&&(n.closeButton=n.showClose),fe.set(o,n);const r=n.data||{};ue.set(o,r);let a;n.appendTarget?(a=se(n.appendTarget),a||(E(`appendTarget "${n.appendTarget}" not found; falling back to body`),a=document.body)):a=document.body;const l=document.createElement("div");l.className="fnon-overlay",l.dataset.modalId=o,n.zIndex&&(l.style.zIndex=String(n.zIndex)),n.background&&(l.style.background=n.background),n.dir&&(l.dir=n.dir),n.width==="fl"&&(l.style.zIndex="4012");const i=document.createElement("div");i.className=`fnon-modal fnon-theme-${e.toLowerCase()}`,i.dataset.modalId=o,i.setAttribute("role","dialog"),i.setAttribute("aria-modal","true"),n.fontFamily&&(i.style.fontFamily=n.fontFamily),n.width&&i.classList.add(`fnon-modal-${n.width.toLowerCase()}`);let u=ze(e);n.titleColor&&(u+=` --fnon-title-color: ${n.titleColor};`),n.titleBackground&&(u+=` --fnon-title-background: ${n.titleBackground};`),n.color&&(u+=` --fnon-body-color: ${n.color};`),i.setAttribute("style",u);const s=document.createElement("div");s.className="fnon-modal-title",n.titleBackground&&(s.style.background=n.titleBackground),n.titleColor&&(s.style.color=n.titleColor);const c=document.createElement("span");c.className="fnon-modal-title-text",n.title instanceof HTMLElement?c.appendChild(n.title):n.title!==void 0&&n.title!==null&&(c.innerHTML=we(n.title)),s.appendChild(c);const d=document.createElement("div");d.className="fnon-modal-controls";const f=[];if(n.showMin){const p=document.createElement("button");p.className="fnon-btn-min",p.innerHTML="_",p.title="Minimize",p.addEventListener("click",()=>{const v=i.classList.contains("fnon-minimized");if(i.classList.toggle("fnon-minimized"),l.classList.toggle("fnon-overlay-hidden"),!v)Nn(o),Y.set(o,{modalEl:i,title:n.title||""}),An(o,En(n.title)||"",i,l);else if(We(o),l.parentNode.appendChild(l),Y.get(o)){const $=document.querySelector(`.fnon-task-bar-btn[data-modal-id="${o}"]`);$&&$.remove(),Y.delete(o),In()}}),f.push(p)}if(n.showMaxMin){const p=document.createElement("button");p.className="fnon-btn-max",p.innerHTML="⛶",p.title="Maximize",p.addEventListener("click",()=>{const v=i.classList.contains("fnon-modal-fl");n.width==="fl"?(i.classList.toggle("fnon-modal-fl"),i.classList.toggle("fnon-modal-xl")):i.classList.toggle("fnon-modal-fl"),v?l.style.zIndex="":l.style.zIndex="4012",i.classList.remove("fnon-minimized"),l.classList.remove("fnon-overlay-hidden")}),f.push(p)}if(n.closeButton!==!1){const p=document.createElement("button");p.className="fnon-btn-close",p.innerHTML=He(),p.title="Close",p.addEventListener("click",()=>q(o)),f.push(p)}n.dir==="rtl"&&f.reverse(),f.forEach(p=>d.appendChild(p)),s.appendChild(d);const m=document.createElement("div");if(m.className="fnon-modal-body",n.color&&(m.style.color=n.color),n.showIcon&&n.icon){const p=document.createElement("div");p.className="fnon-modal-icon",p.innerHTML=n.icon,n.iconColor&&(p.style.color=n.iconColor),m.appendChild(p)}const g={id:o,theme:e};n.message!==void 0&&n.message!==null&&(qe(n.message,m,g)||(m.innerHTML=we(n.message)));const b=document.createElement("div");if(n.buttons&&n.buttons.length>0&&!n.delButtons){b.className="fnon-modal-footer";for(const p of n.buttons){const v=document.createElement("button");v.className=`fnon-btn fnon-btn-${((h=p.style)==null?void 0:h.toLowerCase())||"primary"}`,p.css&&(v.className+=" "+p.css),v.textContent=p.text,p.color&&(v.style.color=p.color),p.background&&(v.style.background=p.background);const S=p.boxShadow||p.shadow;S&&(v.style.boxShadow=S),p.borderColor&&(v.style.borderColor=p.borderColor),p.callback?v.addEventListener("click",()=>{let $=!1;p.callback(()=>{$=!0,q(o)},m,r)!==!1&&($||q(o))}):v.addEventListener("click",()=>q(o)),b.appendChild(v)}}if(typeof n.isDark=="function"?n.isDark():n.isDark){const p=n.darkBgColor||"#1a202c";i.style.setProperty("--fnon-bg",p),m.style.background=p,b.style.background=p,b.style.borderTopColor="#2d3748",t.color||(m.style.color="#e2e8f0")}const x={h:s,b:m,f:b},C=(n.layout||"hbf").toLowerCase().replace(/[^hbf]/g,"");if(C&&C!=="hbf"){const p=new Set;for(const v of C)!p.has(v)&&x[v]&&(i.appendChild(x[v]),p.add(v));for(const v of"hbf")!p.has(v)&&x[v]&&i.appendChild(x[v])}else i.appendChild(s),i.appendChild(m),i.appendChild(b);if(l.appendChild(i),Rn(i,s),n.onInit&&n.onInit(i,r),n.defaultBefore&&n.defaultBefore(i,r),n.beforeShow&&n.beforeShow(i,r),a.appendChild(l),n.defaultAfter&&n.defaultAfter(i,r),n.afterShow&&n.afterShow(i,r),requestAnimationFrame(()=>{l.classList.add("fnon-active"),i.classList.add("fnon-active")}),n.autoFocus){const p=n.autoFocusTag||"button",v=n.autoFocusDelay||0;requestAnimationFrame(()=>{const S=i.querySelector(p);S&&(v>0?setTimeout(()=>S.focus(),v):S.focus())})}return n.focusTrap!==!1&&Sn(o,i,l),n.onOpen&&n.onOpen(i,r),H.push(l),{close:()=>q(o),modalEl:i,id:o}}function q(e){const t=fe.get(e),n=ue.get(e)||{},o=document.querySelector(`.fnon-overlay[data-modal-id="${e}"]`);if(!o){fe.delete(e),ue.delete(e),E(`Modal ${e} not found in DOM`);return}const r=o.querySelector(".fnon-modal");t!=null&&t.onClosing&&r&&t.onClosing(r,n),Tn(e),je(e),o.classList.remove("fnon-active"),r&&r.classList.remove("fnon-active"),t!=null&&t.onClose&&t.onClose(n),setTimeout(()=>{o.parentNode&&o.parentNode.removeChild(o),t!=null&&t.onClosed&&t.onClosed(n),fe.delete(e),ue.delete(e)},300);const a=H.indexOf(o);a!==-1&&H.splice(a,1)}function Pn(){if(H.length===0)return;const t=H[H.length-1].dataset.modalId;t&&q(t)}document.addEventListener("keydown",e=>{e.key==="Escape"&&Pn()});const De={};function N(e){const t=function(n,o,r,a,l){let i;if(typeof n=="object"?(i={...De,...n},o!==void 0&&(i.title=o)):(i={...De,message:n,title:o||""},r!==void 0&&(i.btnOkText=r),l!==void 0&&(i.onClose=l)),!i.buttons||i.buttons.length===0){const u=a||i.callback,s=i.btnOkText||"OK",c=i.btnOkShadow;i.buttons=[{text:s,style:e,color:i.btnOkColor,background:i.btnOkBackground,boxShadow:c,shadow:c,borderColor:i.btnOkBorderColor,callback:d=>{u&&u(),d()}}]}z(e,i)};return t.Async=function(n,o,r){return new Promise(a=>{const l=()=>a();typeof n=="object"?(n.callback=l,n.onClose=l,t(n,o,r)):t(n,o,r,l,l)})},t}const pe={Primary:N("Primary"),Success:N("Success"),Warning:N("Warning"),Danger:N("Danger"),Info:N("Info"),Light:N("Light"),Dark:N("Dark"),Init(e){Object.assign(De,e)}},Me={};function B(e){const t=function(n,o,r,a,l,i,u){let s,c;if(typeof n=="object"?(s={...Me,...n},o!==void 0&&(s.title=o),c=i||s.cancelCallback):(s={...Me,message:n,title:o||""},r!==void 0&&(s.btnOkText=r),a!==void 0&&(s.btnCancelText=a),c=i,u!==void 0&&(s.onClose=u)),!s.buttons||s.buttons.length===0){const d=l||s.callback;c=c||s.cancelCallback;const f=s.btnOkText||"OK",m=s.btnCancelText||"Cancel",g=s.btnOkShadow,b=s.btnCancelShadow;s.buttons=[{text:m,style:"Light",color:s.btnCancelColor,background:s.btnCancelBackground,boxShadow:b,shadow:b,borderColor:s.btnCancelBorderColor,callback:k=>{c&&c(!1),k()}},{text:f,style:e,color:s.btnOkColor,background:s.btnOkBackground,boxShadow:g,shadow:g,borderColor:s.btnOkBorderColor,callback:k=>{d&&d(!0),k()}}]}z(e,s)};return t.Async=function(n,o,r,a){return new Promise(l=>{const i=()=>l(!0),u=()=>l(!1),s=()=>l(!1);typeof n=="object"?(n.callback=i,n.cancelCallback=u,n.onClose=s,t(n,o,r,a)):t(n,o,r,a,i,u,s)})},t}const Se={Primary:B("Primary"),Success:B("Success"),Warning:B("Warning"),Danger:B("Danger"),Info:B("Info"),Light:B("Light"),Dark:B("Dark"),Init(e){Object.assign(Me,e)}},ge={};function X(e){return z("Primary",{...ge,...e})}X.Init=function(e){Object.assign(ge,e)};function A(e){const t=function(n,o,r,a,l,i,u){let s,c,d;if(typeof n=="object"?(s={...ge,...n},o!==void 0&&(s.title=o),c=l||s.callback,d=i||s.cancelCallback):(s={...ge,message:n,title:o||""},r!==void 0&&(s.btnOkText=r),a!==void 0&&(s.btnCancelText=a),c=l,d=i,u!==void 0&&(s.onClose=u)),!s.buttons||s.buttons.length===0){let f=null;const m=s.btnOkText||"OK",g=s.btnCancelText||"Cancel",b=s.btnOkShadow,k=s.btnCancelShadow;s.buttons=[{text:g,style:"Light",color:s.btnCancelColor,background:s.btnCancelBackground,boxShadow:k,shadow:k,borderColor:s.btnCancelBorderColor,callback:(C,h,p)=>{d&&d(C,f,p)===!1||C()}},{text:m,style:e,color:s.btnOkColor,background:s.btnOkBackground,boxShadow:b,shadow:b,borderColor:s.btnOkBorderColor,callback:(C,h,p)=>{c&&c(C,f,p)===!1||C()}}],f=z(e,s).modalEl.querySelector(".fnon-modal-body")}else z(e,s)};return t.Async=function(n,o,r,a){return new Promise(l=>{const i=(c,d,f)=>{l(!0)},u=(c,d,f)=>{l(!1)},s=()=>l(!1);typeof n=="object"?(n.callback=i,n.cancelCallback=u,n.onClose=s,t(n,o,r,a)):t(n,o,r,a,i,u,s)})},t}Object.assign(X,{Primary:A("Primary"),Success:A("Success"),Warning:A("Warning"),Danger:A("Danger"),Info:A("Info"),Light:A("Light"),Dark:A("Dark")});const Ge={headline:"BREAKING",theme:"Danger",anchor:"top",timeout:5e3,closable:!0,appendTarget:"body",fontFamily:"'Quicksand', sans-serif"};function j(e){var d;const t={...Ge,...e},n=Ke();let o;t.appendTarget?(o=se(t.appendTarget),o||(E(`appendTarget "${t.appendTarget}" not found; falling back to body`),o=document.body)):o=document.body;const r=t.theme||"Danger",a=document.createElement("div");a.className=`fnon-breaking fnon-breaking-${t.anchor}`,a.dataset.modalId=n,a.setAttribute("role","alert");let l=ze(r);t.fontFamily&&(l+=`; font-family: ${t.fontFamily}`),a.setAttribute("style",l);const i=document.createElement("div");if(i.className="fnon-breaking-inner",t.headline){const f=document.createElement("span");f.className="fnon-breaking-headline",f.textContent=t.headline,i.appendChild(f)}const u=document.createElement("div");u.className="fnon-breaking-body";const s={id:n,type:"breaking"};if(t.message!==void 0&&t.message!==null&&(qe(t.message,u,s)||(u.innerHTML=typeof t.message=="string"?t.message:t.message instanceof HTMLElement?t.message.outerHTML:String(t.message))),i.appendChild(u),t.buttons&&t.buttons.length>0){const f=document.createElement("div");f.className="fnon-breaking-buttons";for(const m of t.buttons){const g=document.createElement("button");g.className=`fnon-btn fnon-btn-${((d=m.style)==null?void 0:d.toLowerCase())||r.toLowerCase()}`,m.css&&(g.className+=" "+m.css),g.textContent=m.text,m.color&&(g.style.color=m.color),m.background&&(g.style.background=m.background);const b=m.boxShadow||m.shadow;b&&(g.style.boxShadow=b),m.borderColor&&(g.style.borderColor=m.borderColor),m.callback&&g.addEventListener("click",()=>m.callback(()=>c(n))),f.appendChild(g)}i.appendChild(f)}if(t.closable!==!1){const f=document.createElement("button");f.className="fnon-breaking-close",f.innerHTML=He(),f.title="Dismiss",f.addEventListener("click",()=>c(n)),i.appendChild(f)}a.appendChild(i),o.appendChild(a),requestAnimationFrame(()=>a.classList.add("fnon-breaking-active")),t.timeout&&t.timeout>0&&setTimeout(()=>c(n),t.timeout);function c(f){je(f);const m=document.querySelector(`.fnon-breaking[data-modal-id="${f}"]`);m&&(m.classList.remove("fnon-breaking-active"),t.onClose&&t.onClose(),setTimeout(()=>{m.parentNode&&m.parentNode.removeChild(m)},400))}return{close:()=>c(n),el:a,id:n}}function I(e){const t=function(n,o){return j(typeof o=="object"&&o!==null?{...o,theme:e,message:n}:{headline:o,message:n,theme:e})};return t.Async=function(n,o){return new Promise(r=>{const a=typeof o=="object"&&o!==null?{...o,theme:e,message:n,onClose:r}:{headline:o,message:n,theme:e,onClose:r};j(a)})},t}j.Init=function(e){Object.assign(Ge,e)};const Te=Object.assign(j,{Primary:I("Primary"),Success:I("Success"),Warning:I("Warning"),Danger:I("Danger"),Info:I("Info"),Light:I("Light"),Dark:I("Dark"),Init:j.Init}),Ue="fnon-hint-container-",be='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M20 6L9 17l-5-5"/></svg>',_n='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 9v4M12 17h.01"/><path d="M10.29 3.86L1.82 18a2 2 0 001.71 3h16.94a2 2 0 001.71-3L13.71 3.86a2 2 0 00-3.42 0z"/></svg>',$n='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 6L6 18M6 6l12 12"/></svg>',On='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><path d="M12 16v-4M12 8h.01"/></svg>';function Hn(e,t){return t&&{"right-top":"left-top","right-center":"left-center","right-bottom":"left-bottom","left-top":"right-top","left-center":"right-center","left-bottom":"right-bottom"}[e]||e}const Ve={type:"Primary",position:"right-top",animation:"slide-left",timeOut:4e3,closable:!0,spacing:"8px",svgSize:{w:20,h:20},fontSize:"0.88rem",width:"360px",animationDuration:"0.3s",progressColor:void 0,title:void 0,fontFamily:"'Quicksand', sans-serif"};let he={Primary:{titleColor:"#029eff",backgroundColor:"#ebf8ff",borderColor:"#029eff",svg:be},Success:{titleColor:"#39DA8A",backgroundColor:"#f0fff4",borderColor:"#39DA8A",svg:be},Warning:{titleColor:"#fdd347",backgroundColor:"#fffbe5",borderColor:"#fdd347",svg:_n},Danger:{titleColor:"#ff6b6b",backgroundColor:"#fff5f5",borderColor:"#ff6b6b",svg:$n},Info:{titleColor:"#48dbfb",backgroundColor:"#e5faff",borderColor:"#48dbfb",svg:On},Light:{titleColor:"#2d3748",backgroundColor:"#f8f9fa",borderColor:"#ced4da",svg:be},Dark:{titleColor:"#fff",backgroundColor:"#222f3e",borderColor:"#222f3e",svg:be}};function Yn(e,t){he[e]={titleColor:t.titleColor||"#fff",backgroundColor:t.backgroundColor||"#fff",borderColor:t.titleBackground||"#029eff",svg:void 0}}function zn(e){if(he[e])return he[e];const t=Ye(e);if(t){const n={titleColor:t.titleColor||"#fff",backgroundColor:t.backgroundColor||"#fff",borderColor:t.titleBackground||"#029eff"};return he[e]=n,n}return null}function qn(e){const t=document.querySelector(`#${Ue}${e}`);if(t)return t;const n=document.createElement("div");return n.id=`${Ue}${e}`,n.className=`fnon-hint-container ${e}`,document.body.appendChild(n),n}function jn(e){e.children.length===0&&e.parentNode&&e.parentNode.removeChild(e)}function Q(e,t){const n={...Ve};let o="";typeof t=="string"?o=t:t&&typeof t=="object"&&(Object.assign(n,t),o=n.title||"");const r=n.type||"Primary",a=zn(r);if(!a)return E(`Unknown hint type: ${r}`),{close:()=>{}};const l=n.position||"right-top",i=n.dir==="rtl",u=Hn(l,i),s=n.animation||"slide-left",c=qn(u);i&&(c.dir="rtl");const d=document.createElement("div");if(d.className=`fnon-hint fnon-hint-${u} fnon-hint-anim-${s} fnon-hint-${r.toLowerCase()}`,d.setAttribute("data-hint-id",Date.now().toString()),n.width&&(d.style.maxWidth=n.width),n.fontSize&&(d.style.fontSize=n.fontSize),n.fontFamily&&(d.style.fontFamily=n.fontFamily),n.spacing&&(d.style.marginBottom=n.spacing),n.animationDuration&&(d.style.transitionDuration=n.animationDuration),a.svg){const h=document.createElement("div");h.className="fnon-hint-icon";const p=n.svgSize||{w:20,h:20};h.style.setProperty("--fnon-icon-w",p.w+"px"),h.style.setProperty("--fnon-icon-h",p.h+"px"),h.innerHTML=a.svg,d.appendChild(h)}const f=document.createElement("div");if(f.className="fnon-hint-content",o){const h=document.createElement("div");h.className="fnon-hint-title",h.textContent=o,f.appendChild(h)}const m=document.createElement("div");if(m.className="fnon-hint-message",m.innerHTML=e,f.appendChild(m),d.appendChild(f),n.closable!==!1){const h=document.createElement("button");h.className="fnon-hint-close",h.innerHTML="&times;",h.addEventListener("click",()=>C(d)),d.appendChild(h)}if(n.timeOut&&n.timeOut>0){const h=n.progressColor||a.borderColor,p=document.createElement("div");p.className="fnon-hint-progress",p.style.setProperty("--display-dur",n.timeOut+"ms"),p.style.background=h,d.style.position="relative",d.style.overflow="hidden",d.appendChild(p)}xe(a.borderColor);const g=i?"borderRight":"borderLeft";d.style[g]=`4px solid ${a.borderColor}`,d.style.backgroundColor=a.backgroundColor;const b=typeof n.isDark=="function"?n.isDark():n.isDark;if(b){const h=n.darkBgColor||"#1a202c";d.style.backgroundColor=h}const k=b?n.darkBgColor||"#1a202c":a.backgroundColor;d.style.color=yn(k),c.appendChild(d),requestAnimationFrame(()=>{d.classList.add("fnon-hint-active")});let x=null;n.timeOut&&n.timeOut>0&&(x=setTimeout(()=>C(d),n.timeOut));function C(h){x&&clearTimeout(x),h.classList.remove("fnon-hint-active"),n.onClose&&n.onClose(),n.onclosed&&n.onclosed(),setTimeout(()=>{h.parentNode&&h.parentNode.removeChild(h),jn(c)},300)}return{close:()=>C(d)}}Q.Init=function(e){Object.assign(Ve,e)};function F(e){const t=function(n,o){return Q(n,typeof o=="string"?{type:e,title:o}:{...o,type:e})};return t.Async=function(n,o){return new Promise(r=>{const a=typeof o=="string"?{type:e,title:o,onClose:r}:{...o,type:e,onClose:r};Q(n,a)})},t}const Ne={Primary:F("Primary"),Success:F("Success"),Warning:F("Warning"),Danger:F("Danger"),Info:F("Info"),Light:F("Light"),Dark:F("Dark"),show:Q,Init:Q.Init},Be={...{Orbit:{html:e=>`<div class="fnon-sp-orbit" style="--fnon-sp-color: ${e||"#029eff"}"><div class="fnon-sp-orbit-dot"></div></div>`,css:!0},Spin:{html:e=>`<div class="fnon-sp-spin" style="--fnon-sp-color: ${e||"#029eff"}"><div class="fnon-sp-spin-ring"></div></div>`,css:!0}},...{Infinity:{html:e=>`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" preserveAspectRatio="xMidYMid"><path fill="none" stroke="${e[0]}" stroke-width="4" stroke-dasharray="133.42624267578125 123.162685546875" d="M24.3 30C11.4 30 5 43.3 5 50s6.4 20 19.3 20c19.3 0 32.1-40 51.4-40 C88.6 30 95 43.3 95 50s-6.4 20-19.3 20C56.4 70 43.6 30 24.3 30z" stroke-linecap="round" style="transform:scale(0.8);transform-origin:50px 50px"><animate attributeName="stroke-dashoffset" repeatCount="indefinite" dur="1s" keyTimes="0;1" values="0;256"></animate></path></svg>`},Ripple:{html:e=>`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" preserveAspectRatio="xMidYMid"><circle cx="50" cy="50" r="0" fill="none" stroke="${e[0]}" stroke-width="6"><animate attributeName="r" repeatCount="indefinite" dur="1s" values="0;40" keyTimes="0;1" keySplines="0 0.2 0.8 1" calcMode="spline" begin="-0.5s"></animate><animate attributeName="opacity" repeatCount="indefinite" dur="1s" values="1;0" keyTimes="0;1" keySplines="0.2 0 0.8 1" calcMode="spline" begin="-0.5s"></animate></circle><circle cx="50" cy="50" r="0" fill="none" stroke="${e[1]}" stroke-width="6"><animate attributeName="r" repeatCount="indefinite" dur="1s" values="0;40" keyTimes="0;1" keySplines="0 0.2 0.8 1" calcMode="spline"></animate><animate attributeName="opacity" repeatCount="indefinite" dur="1s" values="1;0" keyTimes="0;1" keySplines="0.2 0 0.8 1" calcMode="spline"></animate></circle></svg>`},Typing:{html:e=>`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" preserveAspectRatio="xMidYMid"><circle cx="27.5" cy="57.5" r="5" fill="${e[0]}"><animate attributeName="cy" calcMode="spline" keySplines="0 0.5 0.5 1;0.5 0 1 0.5;0.5 0.5 0.5 0.5" repeatCount="indefinite" values="57.5;42.5;57.5;57.5" keyTimes="0;0.3;0.6;1" dur=".7s" begin="-0.6s"></animate></circle> <circle cx="42.5" cy="57.5" r="5" fill="${e[1]}"><animate attributeName="cy" calcMode="spline" keySplines="0 0.5 0.5 1;0.5 0 1 0.5;0.5 0.5 0.5 0.5" repeatCount="indefinite" values="57.5;42.5;57.5;57.5" keyTimes="0;0.3;0.6;1" dur=".7s" begin="-0.44999999999999996s"></animate></circle> <circle cx="57.5" cy="57.5" r="5" fill="${e[2]}"><animate attributeName="cy" calcMode="spline" keySplines="0 0.5 0.5 1;0.5 0 1 0.5;0.5 0.5 0.5 0.5" repeatCount="indefinite" values="57.5;42.5;57.5;57.5" keyTimes="0;0.3;0.6;1" dur=".7s" begin="-0.3s"></animate></circle> <circle cx="72.5" cy="57.5" r="5" fill="${e[3]}"><animate attributeName="cy" calcMode="spline" keySplines="0 0.5 0.5 1;0.5 0 1 0.5;0.5 0.5 0.5 0.5" repeatCount="indefinite" values="57.5;42.5;57.5;57.5" keyTimes="0;0.3;0.6;1" dur=".7s" begin="-0.15s"></animate></circle></svg>`}}};function Xe(e,t){const n=Be[e];if("css"in n&&n.css)return n.html(t);const o=xe(t,9);return n.html(o)}const Qe={text:"",clickToClose:!1,svgColor:"#029eff",containerSize:void 0,fontFamily:"'Quicksand', sans-serif"},Je={text:"",svgColor:"#029eff",containerSize:void 0,svgSize:void 0,fontFamily:"'Quicksand', sans-serif"};let Ae=!1,ve=null;function Ze(e,t,n){if(Ae){E("A wait overlay is already active. Remove it first.");return}const o={...Qe,...n};t!==void 0&&(o.text=t);const r=o.svgColor||"#029eff",a=Xe(e,r),l=document.createElement("div");l.className="fnon-wait-overlay",l.id="fnon-wait-overlay",o.fontFamily&&(l.style.fontFamily=o.fontFamily);const i=document.createElement("div");if(i.className="fnon-wait-box",o.containerSize&&(i.style.width=o.containerSize),i.innerHTML=a,o.text){const s=document.createElement("div");s.className="fnon-wait-text",s.textContent=o.text,i.appendChild(s)}if(typeof o.isDark=="function"?o.isDark():o.isDark){const s=o.darkBgColor||"#1a202c";l.style.background="rgba(0, 0, 0, 0.85)",i.style.background=s,i.style.padding="1.5rem",i.style.borderRadius="8px"}l.appendChild(i),document.body.appendChild(l),requestAnimationFrame(()=>l.classList.add("fnon-wait-active")),o.clickToClose&&l.addEventListener("click",()=>en()),Ae=!0}function en(e){const t=document.getElementById("fnon-wait-overlay");if(!t)return;const n=typeof e=="number"?e:0,o=()=>{t.classList.remove("fnon-wait-active"),ve&&(ve(!0),ve=null),setTimeout(()=>{t.parentNode&&t.parentNode.removeChild(t),Ae=!1},300)};n>0?setTimeout(o,n):o()}function Wn(e){const t=document.querySelector("#fnon-wait-overlay .fnon-wait-text");t&&(t.textContent=e)}function Kn(e){const t=function(n,o){Ze(e,n,o)};return t.Async=function(n,o){return new Promise(r=>{ve=r,Ze(e,n,o)})},t}const W={Remove:en,Change:Wn,Init:function(e){Object.assign(Qe,e)}};for(const e of Object.keys(Be))W[e]=Kn(e);let ye=null;function nn(e,t,n,o){var f;const r=se(t);if(!r){E(`Box target not found: ${t}`);return}const a={...Je,...o},l=a.svgColor||"#029eff",i=Xe(e,l),u=r.querySelector(".fnon-box-overlay");u&&((f=u.parentNode)==null||f.removeChild(u));const s=document.createElement("div");s.className="fnon-box-overlay",a.fontFamily&&(s.style.fontFamily=a.fontFamily);const c=document.createElement("div");if(c.className="fnon-box-inner",a.containerSize&&(c.style.width=a.containerSize),a.svgSize&&(c.style.setProperty("--fnon-box-svg-w",a.svgSize.w+"px"),c.style.setProperty("--fnon-box-svg-h",a.svgSize.h+"px")),c.innerHTML=i,a.text){const m=document.createElement("div");m.className="fnon-box-label",m.textContent=a.text,c.appendChild(m)}if(typeof a.isDark=="function"?a.isDark():a.isDark){const m=a.darkBgColor||"#1a202c";s.style.background="rgba(0, 0, 0, 0.7)",c.style.background=m,c.style.padding="1.5rem",c.style.borderRadius="8px"}s.appendChild(c),r.style.position="relative",r.appendChild(s)}function Gn(e){const t=se(e);if(!t)return;const n=t.querySelector(".fnon-box-overlay");n&&n.parentNode&&n.parentNode.removeChild(n),ye&&(ye(!0),ye=null)}function Un(e){const t=function(n,o,r){nn(e,n,o,r)};return t.Async=function(n,o,r){return new Promise(a=>{ye=a,nn(e,n,o,r)})},t}const ke={Remove:Gn,Init:function(e){Object.assign(Je,e)}};for(const e of Object.keys(Be))ke[e]=Un(e);function tn(){return document.documentElement.dir==="rtl"}const Vn=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],on=["January","February","March","April","May","June","July","August","September","October","November","December"];function rn(e){return new Date(e.getFullYear(),e.getMonth(),e.getDate())}function Ie(e,t){return e.getFullYear()===t.getFullYear()&&e.getMonth()===t.getMonth()&&e.getDate()===t.getDate()}function an(e,t){return new Date(e,t+1,0).getDate()}function Xn(e,t){return new Date(e,t,1).getDay()}function L(e){return e.getFullYear()*1e4+e.getMonth()*100+e.getDate()}function R(e,t){let n=e.viewMonth+t,o=e.viewYear;for(;n<0;)n+=12,o--;for(;n>11;)n-=12,o++;if(e.minDate!==null){const r=new Date(o,n+1,0);if(L(r)<e.minDate)return!1}if(e.maxDate!==null){const r=new Date(o,n,1);if(L(r)>e.maxDate)return!1}return!0}function sn(e){if(e.minDate===null)return!0;const t=e.viewMonth-1,n=t<0?e.viewYear-1:e.viewYear,o=t<0?11:t,r=new Date(n,o+1,0);return L(r)>=e.minDate}function ln(e){if(e.maxDate===null)return!0;const t=e.viewMonth+1,n=t>11?e.viewYear+1:e.viewYear,o=t>11?0:t,r=new Date(n,o,1);return L(r)<=e.maxDate}function Ce(e){if(!e.bodyEl)return;const t=e.bodyEl.querySelectorAll(".fnon-dp-day");for(const n of t)n.classList.remove("fnon-dp-range-preview")}function Qn(e,t){if(!e.bodyEl)return;const n=e.bodyEl.querySelectorAll(".fnon-dp-day"),o=L(t);for(const r of n){const a=parseInt(r.dataset.ts||"0",10);r.classList.toggle("fnon-dp-selected",a===o),r.classList.remove("fnon-dp-range","fnon-dp-range-start","fnon-dp-range-end")}}function cn(e={}){const t=new Date,n=e.initDate||t,o=!!e.dateRange,r=o?!1:!!e.withTime,a=e.minDate?L(rn(e.minDate)):null,l=e.maxDate?L(rn(e.maxDate)):null,i=typeof e.isDark=="function"?e.isDark():e.isDark,u={viewYear:n.getFullYear(),viewMonth:n.getMonth(),start:null,end:null,rangeMode:o,withTime:r,minDate:a,maxDate:l,initDate:n,hour:t.getHours(),minute:t.getMinutes(),resolve:null,reject:null,bodyEl:null,closeModal:null,dark:!!i,darkBg:e.darkBgColor||"#1a202c"};return new Promise((s,c)=>{u.resolve=s,u.reject=c;const d={title:e.title||(o?"Select Date Range":"Select Date"),closeButton:!0,delButtons:!0,layout:"hb",isDark:u.dark,darkBgColor:u.darkBg,width:"sm",autoFocus:!1,color:u.dark?"#e2e8f0":void 0},f=z("Primary",d);u.closeModal=f.close,u.bodyEl=f.modalEl.querySelector(".fnon-modal-body"),u.bodyEl&&(u.bodyEl.style.padding="0",D(u))})}const Jn=cn;function D(e){const t=e.bodyEl;if(!t)return;t.innerHTML="";const n=document.createElement("div");n.className="fnon-dp"+(e.dark?" fnon-dp-dark":"");const o=tn();o&&(n.dir="rtl");const r=document.createElement("div");r.className="fnon-dp-header";const a=o?"›":"‹",l=o?"‹":"›",i=document.createElement("button");i.className="fnon-dp-nav",i.innerHTML=a,i.title=o?"Next month":"Previous month",sn(e)||i.classList.add("fnon-dp-nav-disabled"),i.addEventListener("click",()=>{sn(e)&&(e.viewMonth--,e.viewMonth<0&&(e.viewMonth=11,e.viewYear--),D(e))});const u=document.createElement("button");u.className="fnon-dp-label",u.textContent=on[e.viewMonth]+" "+e.viewYear,u.addEventListener("click",w=>{w.stopPropagation(),nt(e,u)});const s=document.createElement("button");s.className="fnon-dp-nav",s.innerHTML=l,s.title=o?"Previous month":"Next month",ln(e)||s.classList.add("fnon-dp-nav-disabled"),s.addEventListener("click",()=>{ln(e)&&(e.viewMonth++,e.viewMonth>11&&(e.viewMonth=0,e.viewYear++),D(e))}),r.appendChild(i),r.appendChild(u),r.appendChild(s),n.appendChild(r);const c=document.createElement("div");c.className="fnon-dp-time",e.withTime||(c.style.display="none"),c.innerHTML="<label>Time</label>";const d=document.createElement("input");d.type="time",d.className="fnon-dp-time-input";const f=String(e.hour).padStart(2,"0"),m=String(e.minute).padStart(2,"0");d.value=f+":"+m,d.addEventListener("change",()=>{const w=d.value.split(":");e.hour=parseInt(w[0],10)||0,e.minute=parseInt(w[1],10)||0}),c.appendChild(d),n.appendChild(c);const g=document.createElement("div");g.className="fnon-dp-grid";for(const w of Vn){const y=document.createElement("div");y.className="fnon-dp-dow",y.textContent=w,g.appendChild(y)}const b=e.viewYear,k=e.viewMonth,x=an(b,k),C=Xn(b,k),h=k===0?11:k-1,p=k===0?b-1:b,v=an(p,h),S=42,$=new Date;for(let w=0;w<S;w++){const y=document.createElement("div");y.className="fnon-dp-day";let K,ie,re,ae;w<C?(K=v-C+w+1,ie=k-1<0?11:k-1,re=k-1<0?b-1:b,ae=!0):w>=C+x?(K=w-C-x+1,ie=k+1>11?0:k+1,re=k+1>11?b+1:b,ae=!0):(K=w-C+1,ie=k,re=b,ae=!1);const G=new Date(re,ie,K),O=L(G);if(y.textContent=String(K),y.dataset.year=String(re),y.dataset.month=String(ie),y.dataset.day=String(K),y.dataset.ts=String(O),ae&&y.classList.add("fnon-dp-other"),Ie(G,$)&&y.classList.add("fnon-dp-today"),e.minDate!==null&&O<e.minDate&&y.classList.add("fnon-dp-disabled"),e.maxDate!==null&&O>e.maxDate&&y.classList.add("fnon-dp-disabled"),e.start&&Ie(G,e.start)&&y.classList.add("fnon-dp-selected"),e.end&&Ie(G,e.end)&&y.classList.add("fnon-dp-selected"),e.rangeMode&&e.start&&e.end){const bn=L(e.start),hn=L(e.end);O>bn&&O<hn&&y.classList.add("fnon-dp-range"),O===bn&&y.classList.add("fnon-dp-range-start"),O===hn&&y.classList.add("fnon-dp-range-end")}!y.classList.contains("fnon-dp-disabled")&&!ae&&(y.addEventListener("click",()=>et(e,G)),y.addEventListener("mouseenter",()=>Zn(e,G)),y.addEventListener("mouseleave",()=>Ce(e))),g.appendChild(y)}n.appendChild(g);const T=document.createElement("div");T.className="fnon-dp-actions";function st(){Z.classList.toggle("fnon-dp-nav-disabled",!R(e,-12)),ee.classList.toggle("fnon-dp-nav-disabled",!R(e,-6)),te.classList.toggle("fnon-dp-nav-disabled",!R(e,6)),oe.classList.toggle("fnon-dp-nav-disabled",!R(e,12));const w=L(new Date);ne.classList.toggle("fnon-dp-nav-disabled",e.minDate!==null&&w<e.minDate||e.maxDate!==null&&w>e.maxDate)}const Z=document.createElement("button");Z.className="fnon-dp-btn",Z.textContent="-1 Year",Z.addEventListener("click",()=>{R(e,-12)&&(e.viewYear-=1,D(e))}),T.appendChild(Z);const ee=document.createElement("button");ee.className="fnon-dp-btn",ee.textContent="-6 Months",ee.addEventListener("click",()=>{R(e,-6)&&(e.viewMonth-=6,e.viewMonth<0&&(e.viewMonth+=12,e.viewYear-=1),D(e))}),T.appendChild(ee);const ne=document.createElement("button");ne.className="fnon-dp-btn",ne.textContent="Today",ne.addEventListener("click",()=>{const w=new Date,y=L(w);e.minDate!==null&&y<e.minDate||e.maxDate!==null&&y>e.maxDate||(e.viewYear=w.getFullYear(),e.viewMonth=w.getMonth(),D(e))}),T.appendChild(ne);const te=document.createElement("button");te.className="fnon-dp-btn",te.textContent="+6 Months",te.addEventListener("click",()=>{R(e,6)&&(e.viewMonth+=6,e.viewMonth>11&&(e.viewMonth-=12,e.viewYear+=1),D(e))}),T.appendChild(te);const oe=document.createElement("button");if(oe.className="fnon-dp-btn",oe.textContent="+1 Year",oe.addEventListener("click",()=>{R(e,12)&&(e.viewYear+=1,D(e))}),T.appendChild(oe),st(),!e.rangeMode&&e.withTime){const w=document.createElement("button");w.className="fnon-dp-btn fnon-dp-btn-primary",w.textContent="OK",w.addEventListener("click",()=>{if(e.start&&e.resolve){const y=new Date(e.start);e.withTime&&y.setHours(e.hour,e.minute,0,0),e.resolve(y),e.closeModal&&e.closeModal()}}),T.appendChild(w)}n.appendChild(T),t.appendChild(n)}function Zn(e,t){if(!e.rangeMode||!e.start||e.end||!e.bodyEl)return;const n=L(e.start),o=L(t),r=Math.min(n,o),a=Math.max(n,o);Ce(e);const l=e.bodyEl.querySelectorAll(".fnon-dp-day");for(const i of l){const u=parseInt(i.dataset.ts||"0",10);u>r&&u<a&&i.classList.add("fnon-dp-range-preview")}}function et(e,t,n){if(e.rangeMode){if(!e.start||e.start&&e.end){e.start=t,e.end=null,Ce(e),D(e);return}if(e.start&&!e.end){Ce(e),L(t)<L(e.start)?(e.end=e.start,e.start=t):e.end=t,D(e),e.resolve&&(e.resolve({start:new Date(e.start),end:new Date(e.end)}),e.closeModal&&e.closeModal());return}}if(e.start=t,e.withTime){Qn(e,t);return}e.resolve&&(e.resolve(t),e.closeModal&&e.closeModal())}function nt(e,t){const n=document.querySelector(".fnon-dp-popup");if(n){n.remove();return}const o=t.closest(".fnon-dp"),r=o?o.getBoundingClientRect():t.getBoundingClientRect(),a=t.getBoundingClientRect(),l=Math.min(Math.max(240,r.width*.85),320),i=document.createElement("div");i.className="fnon-dp-popup"+(e.dark?" fnon-dp-dark":""),i.style.top=a.bottom+4+"px",i.style.left=r.left+(r.width-l)/2+"px",i.style.width=l+"px";const u=tn();let s="year",c=e.viewYear;const d=()=>{if(i.innerHTML="",s==="year"){const f=document.createElement("div");f.className="fnon-dp-popup-nav";const m=document.createElement("button");m.className="fnon-dp-popup-nav-btn",m.textContent=u?"›":"‹",m.addEventListener("click",x=>{x.stopPropagation(),c-=12,d()});const g=document.createElement("span");g.className="fnon-dp-popup-nav-label",g.textContent=c-5+"–"+(c+6);const b=document.createElement("button");b.className="fnon-dp-popup-nav-btn",b.textContent=u?"‹":"›",b.addEventListener("click",x=>{x.stopPropagation(),c+=12,d()}),f.appendChild(m),f.appendChild(g),f.appendChild(b),i.appendChild(f);const k=c-5;for(let x=0;x<3;x++){const C=document.createElement("div");C.className="fnon-dp-popup-row";for(let h=0;h<4;h++){const p=k+x*4+h,v=document.createElement("div");v.className="fnon-dp-popup-cell"+(p===e.viewYear?" fnon-dp-popup-active":""),v.textContent=String(p),v.addEventListener("click",S=>{S.stopPropagation(),c=p,s="month",d()}),C.appendChild(v)}i.appendChild(C)}}else{const f=document.createElement("div");f.className="fnon-dp-popup-nav";const m=document.createElement("button");m.className="fnon-dp-popup-nav-btn",m.textContent=u?"›":"‹",m.addEventListener("click",b=>{b.stopPropagation(),s="year",d()});const g=document.createElement("span");g.className="fnon-dp-popup-nav-label",g.textContent=String(c),f.appendChild(m),f.appendChild(g),i.appendChild(f);for(let b=0;b<3;b++){const k=document.createElement("div");k.className="fnon-dp-popup-row";for(let x=0;x<4;x++){const C=b*4+x,h=document.createElement("div");h.className="fnon-dp-popup-cell"+(C===e.viewMonth&&c===e.viewYear?" fnon-dp-popup-active":""),h.textContent=on[C].substring(0,3),h.addEventListener("click",p=>{p.stopPropagation(),e.viewYear=c,e.viewMonth=C,i.remove(),D(e)}),k.appendChild(h)}i.appendChild(k)}}};d(),setTimeout(()=>{document.addEventListener("click",f=>{i.parentNode&&!i.contains(f.target)&&i.remove()},{once:!0})},0),i.addEventListener("click",f=>f.stopPropagation()),document.body.appendChild(i)}let dn=!1;function J(){return document.documentElement.dir==="rtl"}const M=new Set;let Fe=[];function tt(e){return"clientX"in e?{x:e.clientX,y:e.clientY}:{x:e.x,y:e.y}}function ot(){return dn}function it(e){dn=e}function P(){M.forEach(e=>{e.parentNode&&e.parentNode.removeChild(e)}),M.clear(),Fe.forEach(e=>e()),Fe=[]}function fn(e){M.forEach(t=>{parseInt(t.getAttribute("data-parent-level")||"0",10)>e&&(t.parentNode&&t.parentNode.removeChild(t),M.delete(t))})}function Re(e){M.forEach(t=>{parseInt(t.getAttribute("data-parent-level")||"0",10)===e&&(t.parentNode&&t.parentNode.removeChild(t),M.delete(t))})}function Pe(e){const t=e.querySelectorAll(".fnon-cm-item:not(.fnon-cm-item-disabled)");t.length>0&&t[0].focus()}function _(e){return parseInt(e.getAttribute("data-parent-level")||"0",10)}function un(e){for(;e;){if(e.classList.contains("fnon-cm"))return e;e=e.parentElement}return null}function mn(e){const t=un(e);return t?Array.from(t.querySelectorAll(".fnon-cm-item:not(.fnon-cm-item-disabled)")):[]}function rt(e){for(const t of M)if(_(t)===e)return t;return null}function _e(e){const t=_(e)-1,n=rt(t);if(!n)return null;const o=n.querySelectorAll(".fnon-cm-item"),r=e.getBoundingClientRect();for(const a of o){const l=a.getBoundingClientRect();if((Math.abs(l.right-r.left)<20||Math.abs(l.left-r.right)<20)&&Math.abs(l.top-r.top)<50)return a}return null}function at(e,t,n){document.body.appendChild(e),M.add(e);const o=e.getBoundingClientRect(),r=window.innerWidth,a=window.innerHeight;let l=t,i=n;l+o.width>r-4&&(l=r-o.width-4),i+o.height>a-4&&(i=a-o.height-4),l<4&&(l=4),i<4&&(i=4),e.style.left=l+"px",e.style.top=i+"px"}function pn(e,t){document.body.appendChild(t),M.add(t);const n=e.getBoundingClientRect(),o=t.getBoundingClientRect(),r=window.innerWidth,a=window.innerHeight;let l,i=n.top;J()?(l=n.left-o.width,l<4&&(l=n.right)):(l=n.right,l+o.width>r-4&&(l=n.left-o.width)),i+o.height>a-4&&(i=a-o.height-4),i<4&&(i=4),t.style.left=l+"px",t.style.top=i+"px"}function $e(e,t,n){const o=document.createElement("div");o.className="fnon-cm"+(ot()?" fnon-cm-dark":""),o.setAttribute("data-parent-level",String(t)),J()&&(o.dir="rtl");for(const r of e){const a=document.createElement("div");a.className="fnon-cm-item",r.disabled&&a.classList.add("fnon-cm-item-disabled"),r.className&&a.classList.add(r.className),r.items&&r.items.length>0&&a.classList.add("fnon-cm-item-parent");const l=document.createElement("span");if(l.className="fnon-cm-item-text",l.innerHTML=we(r.text),a.appendChild(l),r.items&&r.items.length>0){let i=function(){f||(d&&(clearTimeout(d),d=null),f=window.setTimeout(()=>{f=null,!c&&(c=$e(r.items,t+1,n),c.classList.add("fnon-cm-submenu"),c.setAttribute("data-parent-level",String(t+1)),pn(a,c),c.addEventListener("mouseenter",()=>{d&&(clearTimeout(d),d=null)}),c.addEventListener("mouseleave",()=>{u()}))},200))},u=function(){if(!d){if(f){clearTimeout(f),f=null;return}d=window.setTimeout(()=>{d=null,c&&(fn(_(c)),c.parentNode&&c.parentNode.removeChild(c),M.delete(c),c=null)},300)}};const s=document.createElement("span");s.className="fnon-cm-arrow",s.innerHTML=J()?"&#9664;":"&#9654;",a.appendChild(s);let c=null,d=null,f=null;a.addEventListener("mouseenter",()=>{d&&(clearTimeout(d),d=null),i()}),a.addEventListener("mouseleave",m=>{if(c){const g=m.relatedTarget;if(c.contains(g))return;u()}else f&&(clearTimeout(f),f=null)}),a.__cmOpenSubmenu=()=>{c||(c=$e(r.items,t+1,n),c.classList.add("fnon-cm-submenu"),c.setAttribute("data-parent-level",String(t+1)),pn(a,c)),Pe(c)},a.__cmCloseSubmenu=()=>{c&&(fn(_(c)),c.parentNode&&c.parentNode.removeChild(c),M.delete(c),c=null)}}r.disabled||a.addEventListener("click",i=>{i.stopPropagation(),!(r.items&&r.items.length>0)&&(r.onClick?r.onClick(r,i):n&&n(r,i),P())}),o.appendChild(a)}return o}function gn(e,t,n){if(!t||t.length===0)return E("ContextMenu requires at least one item."),{close:()=>{}};e instanceof MouseEvent&&(e.preventDefault(),e.stopPropagation()),P();const o=tt(e),r=$e(t,0,n);at(r,o.x,o.y),Pe(r);function a(c){const d=c.target;r.contains(d)||P()}function l(c){r.contains(c.target)||P()}function i(c){const d=document.activeElement,f=un(d);switch(c.key){case"Escape":{if(c.preventDefault(),f&&f.classList.contains("fnon-cm-submenu")){const m=_(f);Re(m);const g=_e(f);g&&g.focus()}else P();break}case"ArrowDown":{if(c.preventDefault(),d&&d.classList.contains("fnon-cm-item")){const m=mn(d),g=m.indexOf(d);g<m.length-1&&m[g+1].focus()}else f&&Pe(f);break}case"ArrowUp":{if(c.preventDefault(),d&&d.classList.contains("fnon-cm-item")){const m=mn(d),g=m.indexOf(d);g>0&&m[g-1].focus()}break}case"ArrowRight":{if(c.preventDefault(),J()){if(f&&f.classList.contains("fnon-cm-submenu")){const m=_(f);Re(m);const g=_e(f);g&&g.focus()}}else d&&d.classList.contains("fnon-cm-item-parent")&&d.__cmOpenSubmenu&&d.__cmOpenSubmenu();break}case"ArrowLeft":{if(c.preventDefault(),J())d&&d.classList.contains("fnon-cm-item-parent")&&d.__cmOpenSubmenu&&d.__cmOpenSubmenu();else if(f&&f.classList.contains("fnon-cm-submenu")){const m=_(f);Re(m);const g=_e(f);g&&g.focus()}break}case"Enter":case" ":{c.preventDefault(),d&&d.classList.contains("fnon-cm-item")&&!d.classList.contains("fnon-cm-item-disabled")&&(d.classList.contains("fnon-cm-item-parent")&&d.__cmOpenSubmenu?d.__cmOpenSubmenu():d.click());break}}}function u(){P()}function s(){P()}return setTimeout(()=>{document.addEventListener("click",a,!0),document.addEventListener("contextmenu",l),document.addEventListener("keydown",i),window.addEventListener("scroll",u,!0),window.addEventListener("resize",s)},0),Fe=[()=>document.removeEventListener("click",a,!0),()=>document.removeEventListener("contextmenu",l),()=>document.removeEventListener("keydown",i),()=>window.removeEventListener("scroll",u,!0),()=>window.removeEventListener("resize",s)],{close:P}}return{setRenderer:Cn,registerCleanup:wn,registerReactRoot:xn,Alert:pe,Ask:Se,Dialogue:X,Breaking:Te,Hint:Ne,Wait:W,Box:ke,DatePicker:cn,DP:Jn,ContextMenu:gn,CM:gn,Init(e){pe.Init(e),Se.Init(e),X.Init(e),Te.Init(e),Ne.Init(e),W.Init(e),ke.Init(e),"isDark"in e&&it(!!e.isDark),"dir"in e&&e.dir&&(document.documentElement.dir=e.dir)},AddLogo(e,t){if(!e||!t){E("Name and HtmlContent are required to add a new logo.");return}if(W[e]){E("A logo with the same name already exists.");return}const o=W;o[e]=function(a,l){const i=document.createElement("div");i.className="fnon-wait-overlay",i.id="fnon-wait-overlay";const u=document.createElement("div");if(u.className="fnon-wait-box",u.innerHTML=t,a){const s=document.createElement("div");s.className="fnon-wait-text",s.textContent=a,u.appendChild(s)}i.appendChild(u),document.body.appendChild(i),requestAnimationFrame(()=>i.classList.add("fnon-wait-active")),l!=null&&l.clickToClose&&i.addEventListener("click",()=>W.Remove())};const r=ke;r[e]=function(a,l,i){var f;const u=typeof a=="string"?document.querySelector(a):a;if(!u){E("Invalid selector");return}const s=u.querySelector(".fnon-box-overlay");s&&((f=s.parentNode)==null||f.removeChild(s));const c=document.createElement("div");c.className="fnon-box-overlay";const d=document.createElement("div");if(d.className="fnon-box-inner",d.innerHTML=t,l){const m=document.createElement("div");m.className="fnon-box-label",m.textContent=l,d.appendChild(m)}c.appendChild(d),u.style.position="relative",u.appendChild(c)}},AddTheme(e,t){if(!e){E("Name is required to generate a new theme.");return}if(pe[e]){E("A theme with the same name already exists.");return}kn(e,t),Yn(e,t),pe[e]=N(e),Se[e]=B(e),X[e]=A(e),Ne[e]=F(e),Te[e]=I(e)}}})();
1
+ var Fnon=(function(){"use strict";function E(e){typeof console<"u"&&console.error("[Fnon]",e)}function le(e){return typeof e=="string"?document.querySelector(e):e instanceof HTMLElement?e:null}function xe(e){return typeof e=="string"?e:e instanceof HTMLElement?e.outerHTML:String(e)}function de(e){const t=document.createElement("div");t.style.color=e,document.body.appendChild(t);const n=getComputedStyle(t).color;document.body.removeChild(t);const o=n.match(/rgb(a)?\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)/);return o?{r:+o[2],g:+o[3],b:+o[4]}:null}function Oe(e,t){const n=de(e);if(!n)return e;const o=1-t;return`rgb(${n.r*o|0},${n.g*o|0},${n.b*o|0})`}function yn(e,t){const n=de(e);if(!n)return e;const o=1-t;return`rgb(${255-(255-n.r)*o|0},${255-(255-n.g)*o|0},${255-(255-n.b)*o|0})`}function Le(e,t=4){if(t===4)return de(e)?[e,yn(e,.3),Oe(e,.15),Oe(e,.3)]:[e,e,e,e];const n=de(e);if(!n)return Array(t).fill(e);const o=[e];let r=n.r,a=n.g,s=n.b;for(let i=0;i<t-1;i++)r=Math.max(0,r-33),a=Math.max(0,a-33),s=Math.max(0,s-33),o.push(`rgb(${r},${a},${s})`);return o}function Ye(){return"&times;"}function kn(e){const t=e.replace("#","");let n,o,r;if(t.length===3)n=parseInt(t[0]+t[0],16),o=parseInt(t[1]+t[1],16),r=parseInt(t[2]+t[2],16);else if(t.length===6)n=parseInt(t.substring(0,2),16),o=parseInt(t.substring(2,4),16),r=parseInt(t.substring(4,6),16);else return"#2d3748";return(.299*n+.587*o+.114*r)/255>.55?"#2d3748":"#fff"}const fe={Primary:{titleBackground:"#029eff",titleColor:"#fff",btnOkBackground:"#029eff",btnOkColor:"#fff",btnOkBorderColor:"#029eff",backgroundColor:"#fff"},Success:{titleBackground:"#39DA8A",titleColor:"#fff",btnOkBackground:"#39DA8A",btnOkColor:"#fff",btnOkBorderColor:"#39DA8A",backgroundColor:"#fff"},Warning:{titleBackground:"#fdd347",titleColor:"#2d3748",btnOkBackground:"#fdd347",btnOkColor:"#2d3748",btnOkBorderColor:"#fdd347",backgroundColor:"#fff"},Danger:{titleBackground:"#ff6b6b",titleColor:"#fff",btnOkBackground:"#ff6b6b",btnOkColor:"#fff",btnOkBorderColor:"#ff6b6b",backgroundColor:"#fff"},Info:{titleBackground:"#48dbfb",titleColor:"#2d3748",btnOkBackground:"#48dbfb",btnOkColor:"#2d3748",btnOkBorderColor:"#48dbfb",backgroundColor:"#fff"},Light:{titleBackground:"#f8f9fa",titleColor:"#2d3748",btnOkBackground:"#f8f9fa",btnOkColor:"#2d3748",btnOkBorderColor:"#ced4da",backgroundColor:"#fff"},Dark:{titleBackground:"#222f3e",titleColor:"#fff",btnOkBackground:"#222f3e",btnOkColor:"#fff",btnOkBorderColor:"#222f3e",backgroundColor:"#fff"}};let ue={};function Cn(e,t){ue[e]={...ue[e],...t}}function ze(e){return ue[e]?{...fe[e],...ue[e]}:fe[e]?fe[e]:null}function qe(e){const t=ze(e)||fe.Primary,n=[];for(const[a,s]of Object.entries(t)){const i=a.replace(/([A-Z])/g,"-$1").toLowerCase();n.push(`--fnon-${i}: ${s};`)}const o=t.titleBackground||"#029eff",r=Le(o);return n.push(`--fnon-title-shade-light: ${r[1]};`),n.push(`--fnon-title-shade-dark: ${r[2]};`),n.push(`--fnon-title-shade-border: ${r[3]};`),n.join(" ")}let Ee=null;const U=[],Me=new Map;function wn(e){Ee=e}function je(e,t,n){if(!Ee)return!1;try{return Ee(e,t,n)===!0}catch(o){return E(`Renderer failed: ${o}`),!1}}function xn(e,t){U.push({modalId:e,fn:t})}function Ln(e,t){Me.set(e,t)}function En(e){const t=Me.get(e);return Me.delete(e),t}function We(e){for(let n=U.length-1;n>=0;n--)if(U[n].modalId===e){try{U[n].fn()}catch(o){E(`Cleanup failed: ${o}`)}U.splice(n,1)}const t=En(e);if(t&&typeof t.unmount=="function")try{t.unmount()}catch{}}function Mn(e){if(!e)return"";if(e instanceof HTMLElement)return e.textContent||"";if(typeof e=="string")return e.replace(/<[^>]*>/g,"");const t=e;return typeof t.innerHTML=="string"?t.innerHTML.replace(/<[^>]*>/g,""):String(e)}let Dn=0;const O=[],V=new Map,me=new Map,Y=new Map,X=new Map,Sn='a[href], button:not([disabled]), input:not([disabled]), textarea:not([disabled]), select:not([disabled]), [tabindex]:not([tabindex="-1"])';function Tn(e,t,n){const o=document.activeElement,r=a=>{if(a.key!=="Tab")return;const s=t.querySelectorAll(Sn);if(s.length===0)return;const i=s[0],u=s[s.length-1];a.shiftKey?document.activeElement===i&&(a.preventDefault(),u.focus()):document.activeElement===u&&(a.preventDefault(),i.focus())};n.addEventListener("keydown",r),X.set(e,{previousFocus:o,handler:r})}function Nn(e){const t=X.get(e);if(!t)return;const n=document.querySelector(`.fnon-overlay[data-modal-id="${e}"]`);n&&n.removeEventListener("keydown",t.handler),t.previousFocus&&typeof t.previousFocus.focus=="function"&&t.previousFocus.focus(),X.delete(e)}function Bn(e){const t=X.get(e);if(!t)return;const n=document.querySelector(`.fnon-overlay[data-modal-id="${e}"]`);n&&n.removeEventListener("keydown",t.handler)}function Ke(e){const t=X.get(e);if(!t)return;const n=document.querySelector(`.fnon-overlay[data-modal-id="${e}"]`);n&&n.addEventListener("keydown",t.handler)}const Q="fnon-task-bar";function An(){let e=document.getElementById(Q);return e||(e=document.createElement("div"),e.id=Q,e.className="fnon-task-bar",document.body.appendChild(e)),e}function In(e,t,n,o){const r=An(),a=document.createElement("button");a.className="fnon-task-bar-btn",a.textContent=t||"Minimized",a.dataset.modalId=e,a.addEventListener("click",()=>{if(n.classList.remove("fnon-minimized"),o.classList.remove("fnon-overlay-hidden"),Ke(e),o.parentNode.appendChild(o),a.remove(),Y.delete(e),Y.size===0){const i=document.getElementById(Q);i&&i.remove()}const s=V.get(e);pe(n,o,s==null?void 0:s.showMaxMin)}),r.appendChild(a)}function Fn(){const e=document.getElementById(Q);e&&Y.size===0&&e.remove()}function Pn(){const e=document.getElementById(Q);return!e||e.children.length===0?0:e.getBoundingClientRect().height}function pe(e,t,n){if(!e.classList.contains("fnon-modal-fl")){t.style.zIndex="",e.style.removeProperty("--fnon-fl-max-height");return}if(n){const r=Pn();r>0?e.style.setProperty("--fnon-fl-max-height",`calc(100vh - ${r}px)`):e.style.removeProperty("--fnon-fl-max-height"),t.style.zIndex=""}else t.style.zIndex="4022",e.style.removeProperty("--fnon-fl-max-height")}function Ge(){return`fnon-modal-${++Dn}`}const Rn={closeButton:!0,autoFocus:!1,autoFocusTag:"input:not([disabled])",autoFocusDelay:0,focusTrap:!0,appendTarget:"body",layout:"hbf",fontFamily:"'Quicksand', sans-serif",animation:"slide-top",color:"#2b2b2b",background:"rgba(0, 0, 0, 0.4)",zIndex:4e3,showIcon:!1,delButtons:!1};function _n(e,t){let n=!1,o=0,r=0,a=0,s=0,i=0;function u(){return e.closest('[dir="rtl"]')!==null||document.documentElement.dir==="rtl"}t.addEventListener("mousedown",c=>{if(e.classList.contains("fnon-modal-fl"))return;n=!0,o=c.clientX,r=c.clientY;const l=e.getBoundingClientRect();a=l.left,i=l.right,s=l.top,e.style.position="fixed",e.style.margin="0",e.style.bottom="auto",u()?(e.style.right=window.innerWidth-i+"px",e.style.left="auto"):(e.style.left=a+"px",e.style.right="auto"),e.style.top=s+"px",e.classList.add("fnon-dragging"),c.preventDefault()}),document.addEventListener("mousemove",c=>{if(!n)return;const l=c.clientX-o,d=c.clientY-r;u()?e.style.right=window.innerWidth-i-l+"px":e.style.left=a+l+"px",e.style.top=s+d+"px"}),document.addEventListener("mouseup",()=>{n&&(n=!1,e.classList.remove("fnon-dragging"))})}function z(e,t){var h;const n={...Rn,...t},o=Ge();n.showClose!==void 0&&(n.closeButton=n.showClose),V.set(o,n);const r=n.data||{};me.set(o,r);let a;n.appendTarget?(a=le(n.appendTarget),a||(E(`appendTarget "${n.appendTarget}" not found; falling back to body`),a=document.body)):a=document.body;const s=document.createElement("div");s.className="fnon-overlay",s.dataset.modalId=o,n.zIndex&&(s.style.zIndex=String(n.zIndex)),n.background&&(s.style.background=n.background),n.dir&&(s.dir=n.dir);const i=document.createElement("div");i.className=`fnon-modal fnon-theme-${e.toLowerCase()}`,i.dataset.modalId=o,i.setAttribute("role","dialog"),i.setAttribute("aria-modal","true"),n.fontFamily&&(i.style.fontFamily=n.fontFamily),n.width&&i.classList.add(`fnon-modal-${n.width.toLowerCase()}`);let u=qe(e);n.titleColor&&(u+=` --fnon-title-color: ${n.titleColor};`),n.titleBackground&&(u+=` --fnon-title-background: ${n.titleBackground};`),n.color&&(u+=` --fnon-body-color: ${n.color};`),i.setAttribute("style",u);const c=document.createElement("div");c.className="fnon-modal-title",n.titleBackground&&(c.style.background=n.titleBackground),n.titleColor&&(c.style.color=n.titleColor);const l=document.createElement("span");l.className="fnon-modal-title-text",n.title instanceof HTMLElement?l.appendChild(n.title):n.title!==void 0&&n.title!==null&&(l.innerHTML=xe(n.title)),c.appendChild(l);const d=document.createElement("div");d.className="fnon-modal-controls";const f=[];if(n.showMin){const p=document.createElement("button");p.className="fnon-btn-min",p.innerHTML="_",p.title="Minimize",p.addEventListener("click",()=>{const v=i.classList.contains("fnon-minimized");if(i.classList.toggle("fnon-minimized"),s.classList.toggle("fnon-overlay-hidden"),!v)Bn(o),Y.set(o,{modalEl:i,title:n.title||""}),In(o,Mn(n.title)||"",i,s);else{if(Ke(o),s.parentNode.appendChild(s),Y.get(o)){const $=document.querySelector(`.fnon-task-bar-btn[data-modal-id="${o}"]`);$&&$.remove(),Y.delete(o),Fn()}pe(i,s,n.showMaxMin)}}),f.push(p)}if(n.showMaxMin){const p=document.createElement("button");p.className="fnon-btn-max",p.innerHTML="⛶",p.title="Maximize",p.addEventListener("click",()=>{n.width==="fl"?(i.classList.toggle("fnon-modal-fl"),i.classList.toggle("fnon-modal-xl")):i.classList.toggle("fnon-modal-fl"),pe(i,s,n.showMaxMin),i.classList.remove("fnon-minimized"),s.classList.remove("fnon-overlay-hidden")}),f.push(p)}if(n.closeButton!==!1){const p=document.createElement("button");p.className="fnon-btn-close",p.innerHTML=Ye(),p.title="Close",p.addEventListener("click",()=>q(o)),f.push(p)}n.dir==="rtl"&&f.reverse(),f.forEach(p=>d.appendChild(p)),c.appendChild(d);const m=document.createElement("div");if(m.className="fnon-modal-body",n.color&&(m.style.color=n.color),n.showIcon&&n.icon){const p=document.createElement("div");p.className="fnon-modal-icon",p.innerHTML=n.icon,n.iconColor&&(p.style.color=n.iconColor),m.appendChild(p)}const g={id:o,theme:e};n.message!==void 0&&n.message!==null&&(je(n.message,m,g)||(m.innerHTML=xe(n.message)));const b=document.createElement("div");if(n.buttons&&n.buttons.length>0&&!n.delButtons){b.className="fnon-modal-footer";for(const p of n.buttons){const v=document.createElement("button");v.className=`fnon-btn fnon-btn-${((h=p.style)==null?void 0:h.toLowerCase())||"primary"}`,p.css&&(v.className+=" "+p.css),v.textContent=p.text,p.color&&(v.style.color=p.color),p.background&&(v.style.background=p.background);const S=p.boxShadow||p.shadow;S&&(v.style.boxShadow=S),p.borderColor&&(v.style.borderColor=p.borderColor),p.callback?v.addEventListener("click",()=>{let $=!1;p.callback(()=>{$=!0,q(o)},m,r)!==!1&&($||q(o))}):v.addEventListener("click",()=>q(o)),b.appendChild(v)}}if(typeof n.isDark=="function"?n.isDark():n.isDark){const p=n.darkBgColor||"#1a202c";i.style.setProperty("--fnon-bg",p),m.style.background=p,b.style.background=p,b.style.borderTopColor="#2d3748",t.color||(m.style.color="#e2e8f0")}const x={h:c,b:m,f:b},C=(n.layout||"hbf").toLowerCase().replace(/[^hbf]/g,"");if(C&&C!=="hbf"){const p=new Set;for(const v of C)!p.has(v)&&x[v]&&(i.appendChild(x[v]),p.add(v));for(const v of"hbf")!p.has(v)&&x[v]&&i.appendChild(x[v])}else i.appendChild(c),i.appendChild(m),i.appendChild(b);if(s.appendChild(i),pe(i,s,n.showMaxMin),_n(i,c),n.onInit&&n.onInit(i,r),n.defaultBefore&&n.defaultBefore(i,r),n.beforeShow&&n.beforeShow(i,r),a.appendChild(s),n.defaultAfter&&n.defaultAfter(i,r),n.afterShow&&n.afterShow(i,r),requestAnimationFrame(()=>{s.classList.add("fnon-active"),i.classList.add("fnon-active")}),n.autoFocus){const p=n.autoFocusTag||"button",v=n.autoFocusDelay||0;requestAnimationFrame(()=>{const S=i.querySelector(p);S&&(v>0?setTimeout(()=>S.focus(),v):S.focus())})}return n.focusTrap!==!1&&Tn(o,i,s),n.onOpen&&n.onOpen(i,r),O.push(s),{close:()=>q(o),modalEl:i,id:o}}function q(e){const t=V.get(e),n=me.get(e)||{},o=document.querySelector(`.fnon-overlay[data-modal-id="${e}"]`);if(!o){V.delete(e),me.delete(e),E(`Modal ${e} not found in DOM`);return}const r=o.querySelector(".fnon-modal");t!=null&&t.onClosing&&r&&t.onClosing(r,n),Nn(e),We(e),o.classList.remove("fnon-active"),r&&r.classList.remove("fnon-active"),t!=null&&t.onClose&&t.onClose(n),setTimeout(()=>{o.parentNode&&o.parentNode.removeChild(o),t!=null&&t.onClosed&&t.onClosed(n),V.delete(e),me.delete(e)},300);const a=O.indexOf(o);a!==-1&&O.splice(a,1)}function $n(){if(O.length===0)return;const t=O[O.length-1].dataset.modalId;t&&q(t)}document.addEventListener("keydown",e=>{e.key==="Escape"&&$n()});const De={};function N(e){const t=function(n,o,r,a,s){let i;if(typeof n=="object"?(i={...De,...n},o!==void 0&&(i.title=o)):(i={...De,message:n,title:o||""},r!==void 0&&(i.btnOkText=r),s!==void 0&&(i.onClose=s)),!i.buttons||i.buttons.length===0){const u=a||i.callback,c=i.btnOkText||"OK",l=i.btnOkShadow;i.buttons=[{text:c,style:e,color:i.btnOkColor,background:i.btnOkBackground,boxShadow:l,shadow:l,borderColor:i.btnOkBorderColor,callback:d=>{u&&u(),d()}}]}z(e,i)};return t.Async=function(n,o,r){return new Promise(a=>{const s=()=>a();typeof n=="object"?(n.callback=s,n.onClose=s,t(n,o,r)):t(n,o,r,s,s)})},t}const ge={Primary:N("Primary"),Success:N("Success"),Warning:N("Warning"),Danger:N("Danger"),Info:N("Info"),Light:N("Light"),Dark:N("Dark"),Init(e){Object.assign(De,e)}},Se={};function B(e){const t=function(n,o,r,a,s,i,u){let c,l;if(typeof n=="object"?(c={...Se,...n},o!==void 0&&(c.title=o),l=i||c.cancelCallback):(c={...Se,message:n,title:o||""},r!==void 0&&(c.btnOkText=r),a!==void 0&&(c.btnCancelText=a),l=i,u!==void 0&&(c.onClose=u)),!c.buttons||c.buttons.length===0){const d=s||c.callback;l=l||c.cancelCallback;const f=c.btnOkText||"OK",m=c.btnCancelText||"Cancel",g=c.btnOkShadow,b=c.btnCancelShadow;c.buttons=[{text:m,style:"Light",color:c.btnCancelColor,background:c.btnCancelBackground,boxShadow:b,shadow:b,borderColor:c.btnCancelBorderColor,callback:k=>{l&&l(!1),k()}},{text:f,style:e,color:c.btnOkColor,background:c.btnOkBackground,boxShadow:g,shadow:g,borderColor:c.btnOkBorderColor,callback:k=>{d&&d(!0),k()}}]}z(e,c)};return t.Async=function(n,o,r,a){return new Promise(s=>{const i=()=>s(!0),u=()=>s(!1),c=()=>s(!1);typeof n=="object"?(n.callback=i,n.cancelCallback=u,n.onClose=c,t(n,o,r,a)):t(n,o,r,a,i,u,c)})},t}const Te={Primary:B("Primary"),Success:B("Success"),Warning:B("Warning"),Danger:B("Danger"),Info:B("Info"),Light:B("Light"),Dark:B("Dark"),Init(e){Object.assign(Se,e)}},be={};function J(e){return z("Primary",{...be,...e})}J.Init=function(e){Object.assign(be,e)};function A(e){const t=function(n,o,r,a,s,i,u){let c,l,d;if(typeof n=="object"?(c={...be,...n},o!==void 0&&(c.title=o),l=s||c.callback,d=i||c.cancelCallback):(c={...be,message:n,title:o||""},r!==void 0&&(c.btnOkText=r),a!==void 0&&(c.btnCancelText=a),l=s,d=i,u!==void 0&&(c.onClose=u)),!c.buttons||c.buttons.length===0){let f=null;const m=c.btnOkText||"OK",g=c.btnCancelText||"Cancel",b=c.btnOkShadow,k=c.btnCancelShadow;c.buttons=[{text:g,style:"Light",color:c.btnCancelColor,background:c.btnCancelBackground,boxShadow:k,shadow:k,borderColor:c.btnCancelBorderColor,callback:(C,h,p)=>{d&&d(C,f,p)===!1||C()}},{text:m,style:e,color:c.btnOkColor,background:c.btnOkBackground,boxShadow:b,shadow:b,borderColor:c.btnOkBorderColor,callback:(C,h,p)=>{l&&l(C,f,p)===!1||C()}}],f=z(e,c).modalEl.querySelector(".fnon-modal-body")}else z(e,c)};return t.Async=function(n,o,r,a){return new Promise(s=>{const i=(l,d,f)=>{s(!0)},u=(l,d,f)=>{s(!1)},c=()=>s(!1);typeof n=="object"?(n.callback=i,n.cancelCallback=u,n.onClose=c,t(n,o,r,a)):t(n,o,r,a,i,u,c)})},t}Object.assign(J,{Primary:A("Primary"),Success:A("Success"),Warning:A("Warning"),Danger:A("Danger"),Info:A("Info"),Light:A("Light"),Dark:A("Dark")});const Ue={headline:"BREAKING",theme:"Danger",anchor:"top",timeout:5e3,closable:!0,appendTarget:"body",fontFamily:"'Quicksand', sans-serif"};function j(e){var d;const t={...Ue,...e},n=Ge();let o;t.appendTarget?(o=le(t.appendTarget),o||(E(`appendTarget "${t.appendTarget}" not found; falling back to body`),o=document.body)):o=document.body;const r=t.theme||"Danger",a=document.createElement("div");a.className=`fnon-breaking fnon-breaking-${t.anchor}`,a.dataset.modalId=n,a.setAttribute("role","alert");let s=qe(r);t.fontFamily&&(s+=`; font-family: ${t.fontFamily}`),a.setAttribute("style",s);const i=document.createElement("div");if(i.className="fnon-breaking-inner",t.headline){const f=document.createElement("span");f.className="fnon-breaking-headline",f.textContent=t.headline,i.appendChild(f)}const u=document.createElement("div");u.className="fnon-breaking-body";const c={id:n,type:"breaking"};if(t.message!==void 0&&t.message!==null&&(je(t.message,u,c)||(u.innerHTML=typeof t.message=="string"?t.message:t.message instanceof HTMLElement?t.message.outerHTML:String(t.message))),i.appendChild(u),t.buttons&&t.buttons.length>0){const f=document.createElement("div");f.className="fnon-breaking-buttons";for(const m of t.buttons){const g=document.createElement("button");g.className=`fnon-btn fnon-btn-${((d=m.style)==null?void 0:d.toLowerCase())||r.toLowerCase()}`,m.css&&(g.className+=" "+m.css),g.textContent=m.text,m.color&&(g.style.color=m.color),m.background&&(g.style.background=m.background);const b=m.boxShadow||m.shadow;b&&(g.style.boxShadow=b),m.borderColor&&(g.style.borderColor=m.borderColor),m.callback&&g.addEventListener("click",()=>m.callback(()=>l(n))),f.appendChild(g)}i.appendChild(f)}if(t.closable!==!1){const f=document.createElement("button");f.className="fnon-breaking-close",f.innerHTML=Ye(),f.title="Dismiss",f.addEventListener("click",()=>l(n)),i.appendChild(f)}a.appendChild(i),o.appendChild(a),requestAnimationFrame(()=>a.classList.add("fnon-breaking-active")),t.timeout&&t.timeout>0&&setTimeout(()=>l(n),t.timeout);function l(f){We(f);const m=document.querySelector(`.fnon-breaking[data-modal-id="${f}"]`);m&&(m.classList.remove("fnon-breaking-active"),t.onClose&&t.onClose(),setTimeout(()=>{m.parentNode&&m.parentNode.removeChild(m)},400))}return{close:()=>l(n),el:a,id:n}}function I(e){const t=function(n,o){return j(typeof o=="object"&&o!==null?{...o,theme:e,message:n}:{headline:o,message:n,theme:e})};return t.Async=function(n,o){return new Promise(r=>{const a=typeof o=="object"&&o!==null?{...o,theme:e,message:n,onClose:r}:{headline:o,message:n,theme:e,onClose:r};j(a)})},t}j.Init=function(e){Object.assign(Ue,e)};const Ne=Object.assign(j,{Primary:I("Primary"),Success:I("Success"),Warning:I("Warning"),Danger:I("Danger"),Info:I("Info"),Light:I("Light"),Dark:I("Dark"),Init:j.Init}),Ve="fnon-hint-container-",he='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M20 6L9 17l-5-5"/></svg>',Hn='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 9v4M12 17h.01"/><path d="M10.29 3.86L1.82 18a2 2 0 001.71 3h16.94a2 2 0 001.71-3L13.71 3.86a2 2 0 00-3.42 0z"/></svg>',On='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 6L6 18M6 6l12 12"/></svg>',Yn='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><path d="M12 16v-4M12 8h.01"/></svg>';function zn(e,t){return t&&{"right-top":"left-top","right-center":"left-center","right-bottom":"left-bottom","left-top":"right-top","left-center":"right-center","left-bottom":"right-bottom"}[e]||e}const Xe={type:"Primary",position:"right-top",animation:"slide-left",timeOut:4e3,closable:!0,spacing:"8px",svgSize:{w:20,h:20},fontSize:"0.88rem",width:"360px",animationDuration:"0.3s",progressColor:void 0,title:void 0,fontFamily:"'Quicksand', sans-serif"};let ve={Primary:{titleColor:"#029eff",backgroundColor:"#ebf8ff",borderColor:"#029eff",svg:he},Success:{titleColor:"#39DA8A",backgroundColor:"#f0fff4",borderColor:"#39DA8A",svg:he},Warning:{titleColor:"#fdd347",backgroundColor:"#fffbe5",borderColor:"#fdd347",svg:Hn},Danger:{titleColor:"#ff6b6b",backgroundColor:"#fff5f5",borderColor:"#ff6b6b",svg:On},Info:{titleColor:"#48dbfb",backgroundColor:"#e5faff",borderColor:"#48dbfb",svg:Yn},Light:{titleColor:"#2d3748",backgroundColor:"#f8f9fa",borderColor:"#ced4da",svg:he},Dark:{titleColor:"#fff",backgroundColor:"#222f3e",borderColor:"#222f3e",svg:he}};function qn(e,t){ve[e]={titleColor:t.titleColor||"#fff",backgroundColor:t.backgroundColor||"#fff",borderColor:t.titleBackground||"#029eff",svg:void 0}}function jn(e){if(ve[e])return ve[e];const t=ze(e);if(t){const n={titleColor:t.titleColor||"#fff",backgroundColor:t.backgroundColor||"#fff",borderColor:t.titleBackground||"#029eff"};return ve[e]=n,n}return null}function Wn(e){const t=document.querySelector(`#${Ve}${e}`);if(t)return t;const n=document.createElement("div");return n.id=`${Ve}${e}`,n.className=`fnon-hint-container ${e}`,document.body.appendChild(n),n}function Kn(e){e.children.length===0&&e.parentNode&&e.parentNode.removeChild(e)}function Z(e,t){const n={...Xe};let o="";typeof t=="string"?o=t:t&&typeof t=="object"&&(Object.assign(n,t),o=n.title||"");const r=n.type||"Primary",a=jn(r);if(!a)return E(`Unknown hint type: ${r}`),{close:()=>{}};const s=n.position||"right-top",i=n.dir==="rtl",u=zn(s,i),c=n.animation||"slide-left",l=Wn(u);i&&(l.dir="rtl");const d=document.createElement("div");if(d.className=`fnon-hint fnon-hint-${u} fnon-hint-anim-${c} fnon-hint-${r.toLowerCase()}`,d.setAttribute("data-hint-id",Date.now().toString()),n.width&&(d.style.maxWidth=n.width),n.fontSize&&(d.style.fontSize=n.fontSize),n.fontFamily&&(d.style.fontFamily=n.fontFamily),n.spacing&&(d.style.marginBottom=n.spacing),n.animationDuration&&(d.style.transitionDuration=n.animationDuration),a.svg){const h=document.createElement("div");h.className="fnon-hint-icon";const p=n.svgSize||{w:20,h:20};h.style.setProperty("--fnon-icon-w",p.w+"px"),h.style.setProperty("--fnon-icon-h",p.h+"px"),h.innerHTML=a.svg,d.appendChild(h)}const f=document.createElement("div");if(f.className="fnon-hint-content",o){const h=document.createElement("div");h.className="fnon-hint-title",h.textContent=o,f.appendChild(h)}const m=document.createElement("div");if(m.className="fnon-hint-message",m.innerHTML=e,f.appendChild(m),d.appendChild(f),n.closable!==!1){const h=document.createElement("button");h.className="fnon-hint-close",h.innerHTML="&times;",h.addEventListener("click",()=>C(d)),d.appendChild(h)}if(n.timeOut&&n.timeOut>0){const h=n.progressColor||a.borderColor,p=document.createElement("div");p.className="fnon-hint-progress",p.style.setProperty("--display-dur",n.timeOut+"ms"),p.style.background=h,d.style.position="relative",d.style.overflow="hidden",d.appendChild(p)}Le(a.borderColor);const g=i?"borderRight":"borderLeft";d.style[g]=`4px solid ${a.borderColor}`,d.style.backgroundColor=a.backgroundColor;const b=typeof n.isDark=="function"?n.isDark():n.isDark;if(b){const h=n.darkBgColor||"#1a202c";d.style.backgroundColor=h}const k=b?n.darkBgColor||"#1a202c":a.backgroundColor;d.style.color=kn(k),l.appendChild(d),requestAnimationFrame(()=>{d.classList.add("fnon-hint-active")});let x=null;n.timeOut&&n.timeOut>0&&(x=setTimeout(()=>C(d),n.timeOut));function C(h){x&&clearTimeout(x),h.classList.remove("fnon-hint-active"),n.onClose&&n.onClose(),n.onclosed&&n.onclosed(),setTimeout(()=>{h.parentNode&&h.parentNode.removeChild(h),Kn(l)},300)}return{close:()=>C(d)}}Z.Init=function(e){Object.assign(Xe,e)};function F(e){const t=function(n,o){return Z(n,typeof o=="string"?{type:e,title:o}:{...o,type:e})};return t.Async=function(n,o){return new Promise(r=>{const a=typeof o=="string"?{type:e,title:o,onClose:r}:{...o,type:e,onClose:r};Z(n,a)})},t}const Be={Primary:F("Primary"),Success:F("Success"),Warning:F("Warning"),Danger:F("Danger"),Info:F("Info"),Light:F("Light"),Dark:F("Dark"),show:Z,Init:Z.Init},Ae={...{Orbit:{html:e=>`<div class="fnon-sp-orbit" style="--fnon-sp-color: ${e||"#029eff"}"><div class="fnon-sp-orbit-dot"></div></div>`,css:!0},Spin:{html:e=>`<div class="fnon-sp-spin" style="--fnon-sp-color: ${e||"#029eff"}"><div class="fnon-sp-spin-ring"></div></div>`,css:!0}},...{Infinity:{html:e=>`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" preserveAspectRatio="xMidYMid"><path fill="none" stroke="${e[0]}" stroke-width="4" stroke-dasharray="133.42624267578125 123.162685546875" d="M24.3 30C11.4 30 5 43.3 5 50s6.4 20 19.3 20c19.3 0 32.1-40 51.4-40 C88.6 30 95 43.3 95 50s-6.4 20-19.3 20C56.4 70 43.6 30 24.3 30z" stroke-linecap="round" style="transform:scale(0.8);transform-origin:50px 50px"><animate attributeName="stroke-dashoffset" repeatCount="indefinite" dur="1s" keyTimes="0;1" values="0;256"></animate></path></svg>`},Ripple:{html:e=>`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" preserveAspectRatio="xMidYMid"><circle cx="50" cy="50" r="0" fill="none" stroke="${e[0]}" stroke-width="6"><animate attributeName="r" repeatCount="indefinite" dur="1s" values="0;40" keyTimes="0;1" keySplines="0 0.2 0.8 1" calcMode="spline" begin="-0.5s"></animate><animate attributeName="opacity" repeatCount="indefinite" dur="1s" values="1;0" keyTimes="0;1" keySplines="0.2 0 0.8 1" calcMode="spline" begin="-0.5s"></animate></circle><circle cx="50" cy="50" r="0" fill="none" stroke="${e[1]}" stroke-width="6"><animate attributeName="r" repeatCount="indefinite" dur="1s" values="0;40" keyTimes="0;1" keySplines="0 0.2 0.8 1" calcMode="spline"></animate><animate attributeName="opacity" repeatCount="indefinite" dur="1s" values="1;0" keyTimes="0;1" keySplines="0.2 0 0.8 1" calcMode="spline"></animate></circle></svg>`},Typing:{html:e=>`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" preserveAspectRatio="xMidYMid"><circle cx="27.5" cy="57.5" r="5" fill="${e[0]}"><animate attributeName="cy" calcMode="spline" keySplines="0 0.5 0.5 1;0.5 0 1 0.5;0.5 0.5 0.5 0.5" repeatCount="indefinite" values="57.5;42.5;57.5;57.5" keyTimes="0;0.3;0.6;1" dur=".7s" begin="-0.6s"></animate></circle> <circle cx="42.5" cy="57.5" r="5" fill="${e[1]}"><animate attributeName="cy" calcMode="spline" keySplines="0 0.5 0.5 1;0.5 0 1 0.5;0.5 0.5 0.5 0.5" repeatCount="indefinite" values="57.5;42.5;57.5;57.5" keyTimes="0;0.3;0.6;1" dur=".7s" begin="-0.44999999999999996s"></animate></circle> <circle cx="57.5" cy="57.5" r="5" fill="${e[2]}"><animate attributeName="cy" calcMode="spline" keySplines="0 0.5 0.5 1;0.5 0 1 0.5;0.5 0.5 0.5 0.5" repeatCount="indefinite" values="57.5;42.5;57.5;57.5" keyTimes="0;0.3;0.6;1" dur=".7s" begin="-0.3s"></animate></circle> <circle cx="72.5" cy="57.5" r="5" fill="${e[3]}"><animate attributeName="cy" calcMode="spline" keySplines="0 0.5 0.5 1;0.5 0 1 0.5;0.5 0.5 0.5 0.5" repeatCount="indefinite" values="57.5;42.5;57.5;57.5" keyTimes="0;0.3;0.6;1" dur=".7s" begin="-0.15s"></animate></circle></svg>`}}};function Qe(e,t){const n=Ae[e];if("css"in n&&n.css)return n.html(t);const o=Le(t,9);return n.html(o)}const Je={text:"",clickToClose:!1,svgColor:"#029eff",containerSize:void 0,fontFamily:"'Quicksand', sans-serif"},Ze={text:"",svgColor:"#029eff",containerSize:void 0,svgSize:void 0,fontFamily:"'Quicksand', sans-serif"};let Ie=!1,ye=null;function en(e,t,n){if(Ie){E("A wait overlay is already active. Remove it first.");return}const o={...Je,...n};t!==void 0&&(o.text=t);const r=o.svgColor||"#029eff",a=Qe(e,r),s=document.createElement("div");s.className="fnon-wait-overlay",s.id="fnon-wait-overlay",o.fontFamily&&(s.style.fontFamily=o.fontFamily);const i=document.createElement("div");if(i.className="fnon-wait-box",o.containerSize&&(i.style.width=o.containerSize),i.innerHTML=a,o.text){const c=document.createElement("div");c.className="fnon-wait-text",c.textContent=o.text,i.appendChild(c)}if(typeof o.isDark=="function"?o.isDark():o.isDark){const c=o.darkBgColor||"#1a202c";s.style.background="rgba(0, 0, 0, 0.85)",i.style.background=c,i.style.padding="1.5rem",i.style.borderRadius="8px"}s.appendChild(i),document.body.appendChild(s),requestAnimationFrame(()=>s.classList.add("fnon-wait-active")),o.clickToClose&&s.addEventListener("click",()=>nn()),Ie=!0}function nn(e){const t=document.getElementById("fnon-wait-overlay");if(!t)return;const n=typeof e=="number"?e:0,o=()=>{t.classList.remove("fnon-wait-active"),ye&&(ye(!0),ye=null),setTimeout(()=>{t.parentNode&&t.parentNode.removeChild(t),Ie=!1},300)};n>0?setTimeout(o,n):o()}function Gn(e){const t=document.querySelector("#fnon-wait-overlay .fnon-wait-text");t&&(t.textContent=e)}function Un(e){const t=function(n,o){en(e,n,o)};return t.Async=function(n,o){return new Promise(r=>{ye=r,en(e,n,o)})},t}const W={Remove:nn,Change:Gn,Init:function(e){Object.assign(Je,e)}};for(const e of Object.keys(Ae))W[e]=Un(e);let ke=null;function tn(e,t,n,o){var f;const r=le(t);if(!r){E(`Box target not found: ${t}`);return}const a={...Ze,...o},s=a.svgColor||"#029eff",i=Qe(e,s),u=r.querySelector(".fnon-box-overlay");u&&((f=u.parentNode)==null||f.removeChild(u));const c=document.createElement("div");c.className="fnon-box-overlay",a.fontFamily&&(c.style.fontFamily=a.fontFamily);const l=document.createElement("div");if(l.className="fnon-box-inner",a.containerSize&&(l.style.width=a.containerSize),a.svgSize&&(l.style.setProperty("--fnon-box-svg-w",a.svgSize.w+"px"),l.style.setProperty("--fnon-box-svg-h",a.svgSize.h+"px")),l.innerHTML=i,a.text){const m=document.createElement("div");m.className="fnon-box-label",m.textContent=a.text,l.appendChild(m)}if(typeof a.isDark=="function"?a.isDark():a.isDark){const m=a.darkBgColor||"#1a202c";c.style.background="rgba(0, 0, 0, 0.7)",l.style.background=m,l.style.padding="1.5rem",l.style.borderRadius="8px"}c.appendChild(l),r.style.position="relative",r.appendChild(c)}function Vn(e){const t=le(e);if(!t)return;const n=t.querySelector(".fnon-box-overlay");n&&n.parentNode&&n.parentNode.removeChild(n),ke&&(ke(!0),ke=null)}function Xn(e){const t=function(n,o,r){tn(e,n,o,r)};return t.Async=function(n,o,r){return new Promise(a=>{ke=a,tn(e,n,o,r)})},t}const Ce={Remove:Vn,Init:function(e){Object.assign(Ze,e)}};for(const e of Object.keys(Ae))Ce[e]=Xn(e);function on(){return document.documentElement.dir==="rtl"}const Qn=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],rn=["January","February","March","April","May","June","July","August","September","October","November","December"];function an(e){return new Date(e.getFullYear(),e.getMonth(),e.getDate())}function Fe(e,t){return e.getFullYear()===t.getFullYear()&&e.getMonth()===t.getMonth()&&e.getDate()===t.getDate()}function sn(e,t){return new Date(e,t+1,0).getDate()}function Jn(e,t){return new Date(e,t,1).getDay()}function L(e){return e.getFullYear()*1e4+e.getMonth()*100+e.getDate()}function P(e,t){let n=e.viewMonth+t,o=e.viewYear;for(;n<0;)n+=12,o--;for(;n>11;)n-=12,o++;if(e.minDate!==null){const r=new Date(o,n+1,0);if(L(r)<e.minDate)return!1}if(e.maxDate!==null){const r=new Date(o,n,1);if(L(r)>e.maxDate)return!1}return!0}function cn(e){if(e.minDate===null)return!0;const t=e.viewMonth-1,n=t<0?e.viewYear-1:e.viewYear,o=t<0?11:t,r=new Date(n,o+1,0);return L(r)>=e.minDate}function ln(e){if(e.maxDate===null)return!0;const t=e.viewMonth+1,n=t>11?e.viewYear+1:e.viewYear,o=t>11?0:t,r=new Date(n,o,1);return L(r)<=e.maxDate}function we(e){if(!e.bodyEl)return;const t=e.bodyEl.querySelectorAll(".fnon-dp-day");for(const n of t)n.classList.remove("fnon-dp-range-preview")}function Zn(e,t){if(!e.bodyEl)return;const n=e.bodyEl.querySelectorAll(".fnon-dp-day"),o=L(t);for(const r of n){const a=parseInt(r.dataset.ts||"0",10);r.classList.toggle("fnon-dp-selected",a===o),r.classList.remove("fnon-dp-range","fnon-dp-range-start","fnon-dp-range-end")}}function dn(e={}){const t=new Date,n=e.initDate||t,o=!!e.dateRange,r=o?!1:!!e.withTime,a=e.minDate?L(an(e.minDate)):null,s=e.maxDate?L(an(e.maxDate)):null,i=typeof e.isDark=="function"?e.isDark():e.isDark,u={viewYear:n.getFullYear(),viewMonth:n.getMonth(),start:null,end:null,rangeMode:o,withTime:r,minDate:a,maxDate:s,initDate:n,hour:t.getHours(),minute:t.getMinutes(),resolve:null,reject:null,bodyEl:null,closeModal:null,dark:!!i,darkBg:e.darkBgColor||"#1a202c"};return new Promise((c,l)=>{u.resolve=c,u.reject=l;const d={title:e.title||(o?"Select Date Range":"Select Date"),closeButton:!0,delButtons:!0,layout:"hb",isDark:u.dark,darkBgColor:u.darkBg,width:"sm",autoFocus:!1,color:u.dark?"#e2e8f0":void 0},f=z("Primary",d);u.closeModal=f.close,u.bodyEl=f.modalEl.querySelector(".fnon-modal-body"),u.bodyEl&&(u.bodyEl.style.padding="0",M(u))})}const et=dn;function M(e){const t=e.bodyEl;if(!t)return;t.innerHTML="";const n=document.createElement("div");n.className="fnon-dp"+(e.dark?" fnon-dp-dark":"");const o=on();o&&(n.dir="rtl");const r=document.createElement("div");r.className="fnon-dp-header";const a=o?"›":"‹",s=o?"‹":"›",i=document.createElement("button");i.className="fnon-dp-nav",i.innerHTML=a,i.title=o?"Next month":"Previous month",cn(e)||i.classList.add("fnon-dp-nav-disabled"),i.addEventListener("click",()=>{cn(e)&&(e.viewMonth--,e.viewMonth<0&&(e.viewMonth=11,e.viewYear--),M(e))});const u=document.createElement("button");u.className="fnon-dp-label",u.textContent=rn[e.viewMonth]+" "+e.viewYear,u.addEventListener("click",w=>{w.stopPropagation(),ot(e,u)});const c=document.createElement("button");c.className="fnon-dp-nav",c.innerHTML=s,c.title=o?"Previous month":"Next month",ln(e)||c.classList.add("fnon-dp-nav-disabled"),c.addEventListener("click",()=>{ln(e)&&(e.viewMonth++,e.viewMonth>11&&(e.viewMonth=0,e.viewYear++),M(e))}),r.appendChild(i),r.appendChild(u),r.appendChild(c),n.appendChild(r);const l=document.createElement("div");l.className="fnon-dp-time",e.withTime||(l.style.display="none"),l.innerHTML="<label>Time</label>";const d=document.createElement("input");d.type="time",d.className="fnon-dp-time-input";const f=String(e.hour).padStart(2,"0"),m=String(e.minute).padStart(2,"0");d.value=f+":"+m,d.addEventListener("change",()=>{const w=d.value.split(":");e.hour=parseInt(w[0],10)||0,e.minute=parseInt(w[1],10)||0}),l.appendChild(d),n.appendChild(l);const g=document.createElement("div");g.className="fnon-dp-grid";for(const w of Qn){const y=document.createElement("div");y.className="fnon-dp-dow",y.textContent=w,g.appendChild(y)}const b=e.viewYear,k=e.viewMonth,x=sn(b,k),C=Jn(b,k),h=k===0?11:k-1,p=k===0?b-1:b,v=sn(p,h),S=42,$=new Date;for(let w=0;w<S;w++){const y=document.createElement("div");y.className="fnon-dp-day";let K,ae,se,ce;w<C?(K=v-C+w+1,ae=k-1<0?11:k-1,se=k-1<0?b-1:b,ce=!0):w>=C+x?(K=w-C-x+1,ae=k+1>11?0:k+1,se=k+1>11?b+1:b,ce=!0):(K=w-C+1,ae=k,se=b,ce=!1);const G=new Date(se,ae,K),H=L(G);if(y.textContent=String(K),y.dataset.year=String(se),y.dataset.month=String(ae),y.dataset.day=String(K),y.dataset.ts=String(H),ce&&y.classList.add("fnon-dp-other"),Fe(G,$)&&y.classList.add("fnon-dp-today"),e.minDate!==null&&H<e.minDate&&y.classList.add("fnon-dp-disabled"),e.maxDate!==null&&H>e.maxDate&&y.classList.add("fnon-dp-disabled"),e.start&&Fe(G,e.start)&&y.classList.add("fnon-dp-selected"),e.end&&Fe(G,e.end)&&y.classList.add("fnon-dp-selected"),e.rangeMode&&e.start&&e.end){const hn=L(e.start),vn=L(e.end);H>hn&&H<vn&&y.classList.add("fnon-dp-range"),H===hn&&y.classList.add("fnon-dp-range-start"),H===vn&&y.classList.add("fnon-dp-range-end")}!y.classList.contains("fnon-dp-disabled")&&!ce&&(y.addEventListener("click",()=>tt(e,G)),y.addEventListener("mouseenter",()=>nt(e,G)),y.addEventListener("mouseleave",()=>we(e))),g.appendChild(y)}n.appendChild(g);const T=document.createElement("div");T.className="fnon-dp-actions";function lt(){ne.classList.toggle("fnon-dp-nav-disabled",!P(e,-12)),te.classList.toggle("fnon-dp-nav-disabled",!P(e,-6)),ie.classList.toggle("fnon-dp-nav-disabled",!P(e,6)),re.classList.toggle("fnon-dp-nav-disabled",!P(e,12));const w=L(new Date);oe.classList.toggle("fnon-dp-nav-disabled",e.minDate!==null&&w<e.minDate||e.maxDate!==null&&w>e.maxDate)}const ne=document.createElement("button");ne.className="fnon-dp-btn",ne.textContent="-1 Year",ne.addEventListener("click",()=>{P(e,-12)&&(e.viewYear-=1,M(e))}),T.appendChild(ne);const te=document.createElement("button");te.className="fnon-dp-btn",te.textContent="-6 Months",te.addEventListener("click",()=>{P(e,-6)&&(e.viewMonth-=6,e.viewMonth<0&&(e.viewMonth+=12,e.viewYear-=1),M(e))}),T.appendChild(te);const oe=document.createElement("button");oe.className="fnon-dp-btn",oe.textContent="Today",oe.addEventListener("click",()=>{const w=new Date,y=L(w);e.minDate!==null&&y<e.minDate||e.maxDate!==null&&y>e.maxDate||(e.viewYear=w.getFullYear(),e.viewMonth=w.getMonth(),M(e))}),T.appendChild(oe);const ie=document.createElement("button");ie.className="fnon-dp-btn",ie.textContent="+6 Months",ie.addEventListener("click",()=>{P(e,6)&&(e.viewMonth+=6,e.viewMonth>11&&(e.viewMonth-=12,e.viewYear+=1),M(e))}),T.appendChild(ie);const re=document.createElement("button");if(re.className="fnon-dp-btn",re.textContent="+1 Year",re.addEventListener("click",()=>{P(e,12)&&(e.viewYear+=1,M(e))}),T.appendChild(re),lt(),!e.rangeMode&&e.withTime){const w=document.createElement("button");w.className="fnon-dp-btn fnon-dp-btn-primary",w.textContent="OK",w.addEventListener("click",()=>{if(e.start&&e.resolve){const y=new Date(e.start);e.withTime&&y.setHours(e.hour,e.minute,0,0),e.resolve(y),e.closeModal&&e.closeModal()}}),T.appendChild(w)}n.appendChild(T),t.appendChild(n)}function nt(e,t){if(!e.rangeMode||!e.start||e.end||!e.bodyEl)return;const n=L(e.start),o=L(t),r=Math.min(n,o),a=Math.max(n,o);we(e);const s=e.bodyEl.querySelectorAll(".fnon-dp-day");for(const i of s){const u=parseInt(i.dataset.ts||"0",10);u>r&&u<a&&i.classList.add("fnon-dp-range-preview")}}function tt(e,t,n){if(e.rangeMode){if(!e.start||e.start&&e.end){e.start=t,e.end=null,we(e),M(e);return}if(e.start&&!e.end){we(e),L(t)<L(e.start)?(e.end=e.start,e.start=t):e.end=t,M(e),e.resolve&&(e.resolve({start:new Date(e.start),end:new Date(e.end)}),e.closeModal&&e.closeModal());return}}if(e.start=t,e.withTime){Zn(e,t);return}e.resolve&&(e.resolve(t),e.closeModal&&e.closeModal())}function ot(e,t){const n=document.querySelector(".fnon-dp-popup");if(n){n.remove();return}const o=t.closest(".fnon-dp"),r=o?o.getBoundingClientRect():t.getBoundingClientRect(),a=t.getBoundingClientRect(),s=Math.min(Math.max(240,r.width*.85),320),i=document.createElement("div");i.className="fnon-dp-popup"+(e.dark?" fnon-dp-dark":""),i.style.top=a.bottom+4+"px",i.style.left=r.left+(r.width-s)/2+"px",i.style.width=s+"px";const u=on();let c="year",l=e.viewYear;const d=()=>{if(i.innerHTML="",c==="year"){const f=document.createElement("div");f.className="fnon-dp-popup-nav";const m=document.createElement("button");m.className="fnon-dp-popup-nav-btn",m.textContent=u?"›":"‹",m.addEventListener("click",x=>{x.stopPropagation(),l-=12,d()});const g=document.createElement("span");g.className="fnon-dp-popup-nav-label",g.textContent=l-5+"–"+(l+6);const b=document.createElement("button");b.className="fnon-dp-popup-nav-btn",b.textContent=u?"‹":"›",b.addEventListener("click",x=>{x.stopPropagation(),l+=12,d()}),f.appendChild(m),f.appendChild(g),f.appendChild(b),i.appendChild(f);const k=l-5;for(let x=0;x<3;x++){const C=document.createElement("div");C.className="fnon-dp-popup-row";for(let h=0;h<4;h++){const p=k+x*4+h,v=document.createElement("div");v.className="fnon-dp-popup-cell"+(p===e.viewYear?" fnon-dp-popup-active":""),v.textContent=String(p),v.addEventListener("click",S=>{S.stopPropagation(),l=p,c="month",d()}),C.appendChild(v)}i.appendChild(C)}}else{const f=document.createElement("div");f.className="fnon-dp-popup-nav";const m=document.createElement("button");m.className="fnon-dp-popup-nav-btn",m.textContent=u?"›":"‹",m.addEventListener("click",b=>{b.stopPropagation(),c="year",d()});const g=document.createElement("span");g.className="fnon-dp-popup-nav-label",g.textContent=String(l),f.appendChild(m),f.appendChild(g),i.appendChild(f);for(let b=0;b<3;b++){const k=document.createElement("div");k.className="fnon-dp-popup-row";for(let x=0;x<4;x++){const C=b*4+x,h=document.createElement("div");h.className="fnon-dp-popup-cell"+(C===e.viewMonth&&l===e.viewYear?" fnon-dp-popup-active":""),h.textContent=rn[C].substring(0,3),h.addEventListener("click",p=>{p.stopPropagation(),e.viewYear=l,e.viewMonth=C,i.remove(),M(e)}),k.appendChild(h)}i.appendChild(k)}}};d(),setTimeout(()=>{document.addEventListener("click",f=>{i.parentNode&&!i.contains(f.target)&&i.remove()},{once:!0})},0),i.addEventListener("click",f=>f.stopPropagation()),document.body.appendChild(i)}let fn=!1;function ee(){return document.documentElement.dir==="rtl"}const D=new Set;let Pe=[];function it(e){return"clientX"in e?{x:e.clientX,y:e.clientY}:{x:e.x,y:e.y}}function rt(){return fn}function at(e){fn=e}function R(){D.forEach(e=>{e.parentNode&&e.parentNode.removeChild(e)}),D.clear(),Pe.forEach(e=>e()),Pe=[]}function un(e){D.forEach(t=>{parseInt(t.getAttribute("data-parent-level")||"0",10)>e&&(t.parentNode&&t.parentNode.removeChild(t),D.delete(t))})}function Re(e){D.forEach(t=>{parseInt(t.getAttribute("data-parent-level")||"0",10)===e&&(t.parentNode&&t.parentNode.removeChild(t),D.delete(t))})}function _e(e){const t=e.querySelectorAll(".fnon-cm-item:not(.fnon-cm-item-disabled)");t.length>0&&t[0].focus()}function _(e){return parseInt(e.getAttribute("data-parent-level")||"0",10)}function mn(e){for(;e;){if(e.classList.contains("fnon-cm"))return e;e=e.parentElement}return null}function pn(e){const t=mn(e);return t?Array.from(t.querySelectorAll(".fnon-cm-item:not(.fnon-cm-item-disabled)")):[]}function st(e){for(const t of D)if(_(t)===e)return t;return null}function $e(e){const t=_(e)-1,n=st(t);if(!n)return null;const o=n.querySelectorAll(".fnon-cm-item"),r=e.getBoundingClientRect();for(const a of o){const s=a.getBoundingClientRect();if((Math.abs(s.right-r.left)<20||Math.abs(s.left-r.right)<20)&&Math.abs(s.top-r.top)<50)return a}return null}function ct(e,t,n){document.body.appendChild(e),D.add(e);const o=e.getBoundingClientRect(),r=window.innerWidth,a=window.innerHeight;let s=t,i=n;s+o.width>r-4&&(s=r-o.width-4),i+o.height>a-4&&(i=a-o.height-4),s<4&&(s=4),i<4&&(i=4),e.style.left=s+"px",e.style.top=i+"px"}function gn(e,t){document.body.appendChild(t),D.add(t);const n=e.getBoundingClientRect(),o=t.getBoundingClientRect(),r=window.innerWidth,a=window.innerHeight;let s,i=n.top;ee()?(s=n.left-o.width,s<4&&(s=n.right)):(s=n.right,s+o.width>r-4&&(s=n.left-o.width)),i+o.height>a-4&&(i=a-o.height-4),i<4&&(i=4),t.style.left=s+"px",t.style.top=i+"px"}function He(e,t,n){const o=document.createElement("div");o.className="fnon-cm"+(rt()?" fnon-cm-dark":""),o.setAttribute("data-parent-level",String(t)),ee()&&(o.dir="rtl");for(const r of e){const a=document.createElement("div");a.className="fnon-cm-item",r.disabled&&a.classList.add("fnon-cm-item-disabled"),r.className&&a.classList.add(r.className),r.items&&r.items.length>0&&a.classList.add("fnon-cm-item-parent");const s=document.createElement("span");if(s.className="fnon-cm-item-text",s.innerHTML=xe(r.text),a.appendChild(s),r.items&&r.items.length>0){let i=function(){f||(d&&(clearTimeout(d),d=null),f=window.setTimeout(()=>{f=null,!l&&(l=He(r.items,t+1,n),l.classList.add("fnon-cm-submenu"),l.setAttribute("data-parent-level",String(t+1)),gn(a,l),l.addEventListener("mouseenter",()=>{d&&(clearTimeout(d),d=null)}),l.addEventListener("mouseleave",()=>{u()}))},200))},u=function(){if(!d){if(f){clearTimeout(f),f=null;return}d=window.setTimeout(()=>{d=null,l&&(un(_(l)),l.parentNode&&l.parentNode.removeChild(l),D.delete(l),l=null)},300)}};const c=document.createElement("span");c.className="fnon-cm-arrow",c.innerHTML=ee()?"&#9664;":"&#9654;",a.appendChild(c);let l=null,d=null,f=null;a.addEventListener("mouseenter",()=>{d&&(clearTimeout(d),d=null),i()}),a.addEventListener("mouseleave",m=>{if(l){const g=m.relatedTarget;if(l.contains(g))return;u()}else f&&(clearTimeout(f),f=null)}),a.__cmOpenSubmenu=()=>{l||(l=He(r.items,t+1,n),l.classList.add("fnon-cm-submenu"),l.setAttribute("data-parent-level",String(t+1)),gn(a,l)),_e(l)},a.__cmCloseSubmenu=()=>{l&&(un(_(l)),l.parentNode&&l.parentNode.removeChild(l),D.delete(l),l=null)}}r.disabled||a.addEventListener("click",i=>{i.stopPropagation(),!(r.items&&r.items.length>0)&&(r.onClick?r.onClick(r,i):n&&n(r,i),R())}),o.appendChild(a)}return o}function bn(e,t,n){if(!t||t.length===0)return E("ContextMenu requires at least one item."),{close:()=>{}};e instanceof MouseEvent&&(e.preventDefault(),e.stopPropagation()),R();const o=it(e),r=He(t,0,n);ct(r,o.x,o.y),_e(r);function a(l){const d=l.target;r.contains(d)||R()}function s(l){r.contains(l.target)||R()}function i(l){const d=document.activeElement,f=mn(d);switch(l.key){case"Escape":{if(l.preventDefault(),f&&f.classList.contains("fnon-cm-submenu")){const m=_(f);Re(m);const g=$e(f);g&&g.focus()}else R();break}case"ArrowDown":{if(l.preventDefault(),d&&d.classList.contains("fnon-cm-item")){const m=pn(d),g=m.indexOf(d);g<m.length-1&&m[g+1].focus()}else f&&_e(f);break}case"ArrowUp":{if(l.preventDefault(),d&&d.classList.contains("fnon-cm-item")){const m=pn(d),g=m.indexOf(d);g>0&&m[g-1].focus()}break}case"ArrowRight":{if(l.preventDefault(),ee()){if(f&&f.classList.contains("fnon-cm-submenu")){const m=_(f);Re(m);const g=$e(f);g&&g.focus()}}else d&&d.classList.contains("fnon-cm-item-parent")&&d.__cmOpenSubmenu&&d.__cmOpenSubmenu();break}case"ArrowLeft":{if(l.preventDefault(),ee())d&&d.classList.contains("fnon-cm-item-parent")&&d.__cmOpenSubmenu&&d.__cmOpenSubmenu();else if(f&&f.classList.contains("fnon-cm-submenu")){const m=_(f);Re(m);const g=$e(f);g&&g.focus()}break}case"Enter":case" ":{l.preventDefault(),d&&d.classList.contains("fnon-cm-item")&&!d.classList.contains("fnon-cm-item-disabled")&&(d.classList.contains("fnon-cm-item-parent")&&d.__cmOpenSubmenu?d.__cmOpenSubmenu():d.click());break}}}function u(){R()}function c(){R()}return setTimeout(()=>{document.addEventListener("click",a,!0),document.addEventListener("contextmenu",s),document.addEventListener("keydown",i),window.addEventListener("scroll",u,!0),window.addEventListener("resize",c)},0),Pe=[()=>document.removeEventListener("click",a,!0),()=>document.removeEventListener("contextmenu",s),()=>document.removeEventListener("keydown",i),()=>window.removeEventListener("scroll",u,!0),()=>window.removeEventListener("resize",c)],{close:R}}return{setRenderer:wn,registerCleanup:xn,registerReactRoot:Ln,Alert:ge,Ask:Te,Dialogue:J,Breaking:Ne,Hint:Be,Wait:W,Box:Ce,DatePicker:dn,DP:et,ContextMenu:bn,CM:bn,Init(e){ge.Init(e),Te.Init(e),J.Init(e),Ne.Init(e),Be.Init(e),W.Init(e),Ce.Init(e),"isDark"in e&&at(!!e.isDark),"dir"in e&&e.dir&&(document.documentElement.dir=e.dir)},AddLogo(e,t){if(!e||!t){E("Name and HtmlContent are required to add a new logo.");return}if(W[e]){E("A logo with the same name already exists.");return}const o=W;o[e]=function(a,s){const i=document.createElement("div");i.className="fnon-wait-overlay",i.id="fnon-wait-overlay";const u=document.createElement("div");if(u.className="fnon-wait-box",u.innerHTML=t,a){const c=document.createElement("div");c.className="fnon-wait-text",c.textContent=a,u.appendChild(c)}i.appendChild(u),document.body.appendChild(i),requestAnimationFrame(()=>i.classList.add("fnon-wait-active")),s!=null&&s.clickToClose&&i.addEventListener("click",()=>W.Remove())};const r=Ce;r[e]=function(a,s,i){var f;const u=typeof a=="string"?document.querySelector(a):a;if(!u){E("Invalid selector");return}const c=u.querySelector(".fnon-box-overlay");c&&((f=c.parentNode)==null||f.removeChild(c));const l=document.createElement("div");l.className="fnon-box-overlay";const d=document.createElement("div");if(d.className="fnon-box-inner",d.innerHTML=t,s){const m=document.createElement("div");m.className="fnon-box-label",m.textContent=s,d.appendChild(m)}l.appendChild(d),u.style.position="relative",u.appendChild(l)}},AddTheme(e,t){if(!e){E("Name is required to generate a new theme.");return}if(ge[e]){E("A theme with the same name already exists.");return}Cn(e,t),qn(e,t),ge[e]=N(e),Te[e]=B(e),J[e]=A(e),Be[e]=F(e),Ne[e]=I(e)}}})();
package/index.html CHANGED
@@ -629,7 +629,7 @@
629
629
  <div class="container">
630
630
  <div class="header">
631
631
  <h1>
632
- Fnon.js v2.0.0
632
+ Fnon.js v2.0.3
633
633
  <small
634
634
  >Interactive Playground &mdash; all APIs, live sandbox, Init
635
635
  reference</small
@@ -3628,35 +3628,7 @@
3628
3628
  </p>
3629
3629
 
3630
3630
  <div class="demo-grid">
3631
- <div class="demo-card">
3632
- <div class="card-body">
3633
- <h3>Custom "Coral" theme</h3>
3634
- <p class="desc">
3635
- Registers a coral-themed palette for Alert, Ask, Dialogue,
3636
- Breaking, and Hint.
3637
- </p>
3638
- <div class="card-actions">
3639
- <button
3640
- class="pri"
3641
- onclick='Fnon.AddTheme("Coral", { titleBackground: "#ff6b6b", titleColor: "#fff", btnOkBackground: "#ff6b6b", btnOkColor: "#fff", btnOkBorderColor: "#ff6b6b", backgroundColor: "#fff5f5" }); Fnon.Hint.Success("Theme *Coral* added!");'
3642
- >
3643
- Add Coral Theme
3644
- </button>
3645
- <button
3646
- class="suc"
3647
- onclick='Fnon.Alert.Coral("This uses the Coral theme!", "Coral Alert")'
3648
- >
3649
- Alert.Coral
3650
- </button>
3651
- <button
3652
- class="suc"
3653
- onclick='Fnon.Hint.Coral("Coral hint!")'
3654
- >
3655
- Hint.Coral
3656
- </button>
3657
- </div>
3658
- </div>
3659
- </div>
3631
+
3660
3632
 
3661
3633
  <div class="demo-card">
3662
3634
  <div class="card-body">
@@ -3683,6 +3655,9 @@
3683
3655
  >
3684
3656
  Dialogue.Purple
3685
3657
  </button>
3658
+ <button class="suc" onclick='Fnon.Hint.Purple("This is a purple hint!")'>
3659
+ Hint.Purple
3660
+ </button>
3686
3661
  </div>
3687
3662
  </div>
3688
3663
  <div class="code">
@@ -3712,38 +3687,7 @@
3712
3687
  </p>
3713
3688
 
3714
3689
  <div class="demo-grid">
3715
- <div class="demo-card">
3716
- <div class="card-body">
3717
- <h3>Custom "Heart" spinner</h3>
3718
- <p class="desc">
3719
- Registers a pulsing heart SVG as a custom spinner. Try
3720
- Wait.Heart() or Box.Heart().
3721
- </p>
3722
- <div class="card-actions">
3723
- <button
3724
- class="pri"
3725
- onclick='Fnon.AddLogo("Heart", '<svg viewBox="0 0 32 32" width="48" height="48" fill="#ff6b6b"><path d="M16 28c0 0-12-7.5-12-15.5S8 4 16 9c8-5 12 4.5 12 12.5S16 28 16 28z"><animate attributeName="transform" type="scale" values="1;1.15;1" dur="0.6s" repeatCount="indefinite"/></path></svg>'); Fnon.Hint.Success("Logo *Heart* added!");'
3726
- >
3727
- Add Heart Logo
3728
- </button>
3729
- <button
3730
- onclick="Fnon.Wait.Heart()"
3731
- >
3732
- Wait.Heart()
3733
- </button>
3734
- <button
3735
- onclick="Fnon.Wait.Remove()"
3736
- >
3737
- Close Wait
3738
- </button>
3739
- <button
3740
- onclick="Fnon.Box.Heart('#box-target')"
3741
- >
3742
- Box.Heart('#box-target')
3743
- </button>
3744
- </div>
3745
- </div>
3746
- </div>
3690
+
3747
3691
 
3748
3692
  <div class="demo-card">
3749
3693
  <div class="card-body">
@@ -3754,25 +3698,16 @@
3754
3698
  <div class="card-actions">
3755
3699
  <button
3756
3700
  class="pri"
3757
- onclick='Fnon.AddLogo("Star", '<svg viewBox="0 0 32 32" width="48" height="48" fill="#fbbf24"><path d="M16 2l4.5 9.1 10 1.5-7.2 7 1.7 10L16 24.5 7 29.6l1.7-10-7.2-7 10-1.5L16 2z"><animateTransform attributeName="transform" type="rotate" from="0 16 16" to="360 16 16" dur="1.5s" repeatCount="indefinite"/></path></svg>'); Fnon.Hint.Success("Logo *Star* added!");'
3701
+ onclick='Fnon.AddLogo("Star", `<svg viewBox="0 0 32 32" width="48" height="48" fill="#fbbf24"><path d="M16 2l4.5 9.1 10 1.5-7.2 7 1.7 10L16 24.5 7 29.6l1.7-10-7.2-7 10-1.5L16 2z"><animateTransform attributeName="transform" type="rotate" from="0 16 16" to="360 16 16" dur="1.5s" repeatCount="indefinite"/></path></svg>`); Fnon.Hint.Success("Logo *Star* added!");'
3758
3702
  >
3759
3703
  Add Star Logo
3760
3704
  </button>
3761
3705
  <button
3762
- onclick="Fnon.Wait.Star()"
3706
+ onclick="Fnon.Wait.Star('Loading...',{clickToClose: true })"
3763
3707
  >
3764
3708
  Wait.Star()
3765
3709
  </button>
3766
- <button
3767
- onclick="Fnon.Wait.Remove()"
3768
- >
3769
- Close Wait
3770
- </button>
3771
- <button
3772
- onclick="Fnon.Box.Star('#box-target')"
3773
- >
3774
- Box.Star('#box-target')
3775
- </button>
3710
+
3776
3711
  </div>
3777
3712
  </div>
3778
3713
  <div class="code">
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adelalawdi/fnon2",
3
- "version": "2.0.2",
3
+ "version": "2.0.3",
4
4
  "description": "Lightweight modal, toast, spinner, date picker, and context menu library. No dependencies. 42 KB minified (12 KB gzip). Works in all modern browsers.",
5
5
  "main": "fnon.min.js",
6
6
  "scripts": {