diff --git a/dist/assets/index-9ByAKvcq.css b/dist/assets/index-9ByAKvcq.css new file mode 100644 index 0000000..b800778 --- /dev/null +++ b/dist/assets/index-9ByAKvcq.css @@ -0,0 +1 @@ +:root{font-family:Arial,sans-serif;color:#4a4a4a;background:#fff;font-synthesis:none;text-rendering:optimizeLegibility;--glm-blue: #4f758b;--glm-blue-mid: #5b7f95;--glm-steel: #6b8fa3;--glm-green: #6cc24a;--glm-lime: #c4d600;--glm-teal: #2c6e6f;--glm-orange: #ff6a13;--text: #4a4a4a;--muted: #6b6b6b;--line: #d0d0d0;--paper: #ffffff;--soft: #f5f5f5;--green-soft: #eef6e8;--danger: #b13b2d;--sidebar-width: 244px}*{box-sizing:border-box}html{min-width:320px;min-height:100%;scroll-behavior:smooth}body{min-width:320px;min-height:100vh;margin:0;background:var(--paper);color:var(--text)}button,input,textarea,select{font:inherit}button,a,input,textarea,select{-webkit-tap-highlight-color:transparent}input[type=search]::-webkit-search-decoration,input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-results-button,input[type=search]::-webkit-search-results-decoration{-webkit-appearance:none;-moz-appearance:none;appearance:none;display:none}button{color:inherit}button:not(:disabled){cursor:pointer}button:disabled{cursor:wait;opacity:.66}img{display:block;max-width:100%}::selection{background:#eef6e8;color:#2c4a59}:focus-visible{outline:3px solid var(--glm-green);outline-offset:3px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.brand-logo{width:202px;height:auto}.brand-logo--compact{width:154px}.section-kicker,.eyebrow{margin:0 0 10px;color:var(--glm-blue);font-size:.72rem;font-weight:700;letter-spacing:.17em;line-height:1.2}.primary-button,.secondary-button,.danger-button{min-height:48px;display:inline-flex;align-items:center;justify-content:center;gap:10px;border:1px solid transparent;border-radius:3px;padding:0 20px;font-weight:700;transition:background-color .16s ease,color .16s ease,border-color .16s ease,transform .16s ease}.primary-button{position:relative;overflow:hidden;background:var(--glm-blue);color:#fff}.primary-button:after{content:"";position:absolute;left:0;bottom:0;width:100%;height:3px;background:var(--glm-green)}.primary-button:hover{background:#3f6378;transform:translateY(-1px)}.primary-button--full{width:100%}.primary-button--full svg:last-child{margin-left:auto}.secondary-button{background:#fff;border-color:var(--glm-blue);color:var(--glm-blue)}.secondary-button:hover{background:var(--soft)}.secondary-button--quiet{border-color:var(--line);color:var(--text)}.danger-button{background:transparent;border-color:#e4c6c1;color:var(--danger)}.danger-button:hover{background:#fdecea;border-color:var(--danger)}.danger-button--solid{background:var(--danger);border-color:var(--danger);color:#fff}.text-button{min-height:40px;border:0;border-bottom:1px solid currentColor;padding:0;background:transparent;color:var(--glm-blue);font-weight:700}.text-button--muted{color:var(--muted);font-size:.78rem}.text-button--danger{color:var(--danger);font-size:.78rem}.icon-button,.favorite-button{width:44px;height:44px;display:inline-grid;flex:0 0 auto;place-items:center;border:1px solid var(--line);border-radius:50%;background:#fff;color:var(--glm-blue)}.icon-button:hover,.favorite-button:hover{border-color:var(--glm-blue);background:var(--soft)}.icon-button--quiet{width:36px;height:36px;border-color:transparent;background:transparent}.icon-button--accent{border-radius:3px;background:var(--glm-blue);border-color:var(--glm-blue);color:#fff}.favorite-button.is-favorite{border-color:#d7e58f;background:#f8f9df;color:#718000}.app-mark{position:relative;display:inline-grid;flex:0 0 auto;place-items:center;overflow:visible;background:transparent}.app-mark--small{width:44px;height:44px}.app-mark--regular{width:58px;height:58px}.app-mark--large{width:72px;height:72px}.app-mark img{display:block;width:100%;height:100%;object-fit:contain}.app-mark__placeholder{color:#a7a7a7}.login-shell{min-height:100vh;display:grid;grid-template-columns:minmax(0,1.28fr) minmax(420px,.72fr);background:#fff}.login-story{position:relative;min-height:100vh;display:flex;flex-direction:column;overflow:hidden;border-right:1px solid var(--line);padding:42px clamp(40px,5vw,82px) 36px;background:#fff}.login-story:before{content:"";position:absolute;top:0;left:clamp(40px,5vw,82px);width:3px;height:126px;background:var(--glm-green)}.login-story__topline{position:relative;z-index:2;display:flex;align-items:flex-start;justify-content:space-between;gap:24px;padding-left:18px}.login-story__edition{padding-top:10px;color:var(--glm-blue);font-size:.7rem;font-weight:700;letter-spacing:.18em}.login-story__content{position:relative;z-index:2;width:min(760px,92%);margin:auto 0;padding:80px 0 76px}.login-story h1{margin:0;color:var(--glm-blue);font-family:Arial Black,Arial,sans-serif;font-size:clamp(3.5rem,6.35vw,7.7rem);font-weight:900;letter-spacing:-.075em;line-height:.85}.login-story h1 span{display:block;margin-top:.14em;color:var(--text);font-family:Arial,sans-serif;font-size:.49em;font-weight:400;letter-spacing:-.052em;line-height:1}.login-story__lede{max-width:540px;margin:36px 0 0;padding-left:20px;border-left:3px solid var(--glm-green);color:var(--text);font-size:clamp(1rem,1.35vw,1.2rem);line-height:1.55}.login-story__signal{position:relative;z-index:2;display:grid;grid-template-columns:auto minmax(40px,1fr) auto;align-items:center;gap:14px;max-width:530px;color:var(--glm-blue);font-size:.7rem;font-weight:700;letter-spacing:.14em}.login-story__signal-line{height:1px;background:var(--line)}.login-story__signal-line:before{content:"";display:block;width:18%;height:2px;background:var(--glm-green)}.login-story__place{position:relative;z-index:2;margin:10px 0 0;color:var(--muted);font-size:.65rem;letter-spacing:.16em}.login-story__type{position:absolute;right:-.06em;bottom:-.28em;color:var(--soft);font-family:Arial Black,Arial,sans-serif;font-size:clamp(13rem,27vw,31rem);font-weight:900;letter-spacing:-.13em;line-height:1;pointer-events:none;-webkit-user-select:none;user-select:none}.login-panel{min-height:100vh;display:grid;place-items:center;padding:48px clamp(34px,4vw,72px);background:var(--soft)}.login-panel__inner{width:min(100%,460px)}.login-panel__heading h2{margin:0 0 10px;color:var(--glm-blue);font-family:Arial Black,Arial,sans-serif;font-size:clamp(2rem,3vw,3rem);letter-spacing:-.045em;line-height:1}.login-panel__heading>p:last-child{margin:0;color:var(--muted);line-height:1.55}.login-form{margin-top:34px}.form-field{display:grid;gap:8px;margin-bottom:20px}.form-field label{color:var(--text);font-size:.81rem;font-weight:700}.form-field label>span{margin-left:6px;color:var(--muted);font-size:.72rem;font-weight:400}.form-field label>.required-mark,.editor-form__section-title>.required-mark{margin-left:4px;color:var(--danger);font-size:1em;font-weight:700}.form-field__label-row{display:flex;align-items:center;justify-content:space-between;gap:16px}.form-field__label-row>span{color:var(--muted);font-size:.7rem}.form-field input,.form-field textarea,.form-field select{width:100%;border:1px solid var(--line);border-radius:3px;background:#fff;color:var(--text);transition:border-color .14s ease,box-shadow .14s ease}.form-field input,.form-field select{height:50px;padding:0 14px}.form-field textarea{min-height:94px;resize:vertical;padding:13px 14px;line-height:1.5}.form-field input::placeholder,.form-field textarea::placeholder{color:#8a8a8a}.form-field input:hover,.form-field textarea:hover,.form-field select:hover{border-color:#97a9b3}.form-field input:focus,.form-field textarea:focus,.form-field select:focus{border-color:var(--glm-blue);box-shadow:inset 3px 0 0 var(--glm-green);outline:none}.form-field input[aria-invalid=true],.form-field textarea[aria-invalid=true]{border-color:var(--danger)}.password-field,.url-field{position:relative}.password-field input{padding-right:50px}.password-field__toggle{position:absolute;top:3px;right:3px;width:44px;height:44px;display:grid;place-items:center;border:0;background:transparent;color:var(--glm-blue)}.form-error,.field-error{color:var(--danger);font-size:.77rem;line-height:1.4}.form-error{margin:-4px 0 18px;padding:11px 12px;border-left:3px solid var(--danger);background:#fdecea}.check-control{min-height:44px;display:flex;align-items:center;gap:10px;margin:2px 0 18px;color:var(--text);font-size:.8rem;cursor:pointer}.check-control input{position:absolute;width:1px;height:1px;overflow:hidden;opacity:0}.check-control>span{width:20px;height:20px;display:grid;place-items:center;border:1px solid var(--line);border-radius:2px;background:#fff;color:transparent}.check-control input:checked+span{border-color:var(--glm-blue);background:var(--glm-blue);color:#fff}.check-control input:focus-visible+span{outline:3px solid var(--glm-green);outline-offset:3px}.demo-access{margin-top:30px}.demo-access__label,.app-preview__label{display:flex;align-items:center;gap:12px;color:var(--muted);font-size:.62rem;font-weight:700;letter-spacing:.14em}.demo-access__rule,.app-preview__rule{height:1px;flex:1;background:var(--line)}.demo-access__options{margin-top:10px;border-top:1px solid var(--line)}.demo-access__options button{width:100%;min-height:62px;display:grid;grid-template-columns:24px 1fr 20px;align-items:center;gap:12px;border:0;border-bottom:1px solid var(--line);padding:8px 4px;background:transparent;color:var(--glm-blue);text-align:left}.demo-access__options button:hover{padding-left:10px;background:#fff}.demo-access__options button span{display:grid;gap:3px}.demo-access__options button strong{color:var(--text);font-size:.8rem}.demo-access__options button small{color:var(--muted);font-size:.69rem}.demo-note{margin:18px 0 0;color:var(--muted);font-size:.68rem;line-height:1.45}.app-shell{min-height:100vh;background:#fff}.sidebar{position:fixed;top:0;bottom:0;left:0;z-index:20;width:var(--sidebar-width);display:flex;flex-direction:column;border-right:1px solid var(--line);background:#fff}.sidebar__brand{height:116px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:7px;border-bottom:1px solid var(--line);padding:0 26px}.sidebar__brand span{color:var(--glm-blue);font-size:.58rem;font-weight:700;letter-spacing:.28em}.sidebar__nav{display:grid;gap:4px;padding:28px 16px}.sidebar__nav button{position:relative;min-height:52px;display:flex;align-items:center;gap:14px;border:0;border-radius:2px;padding:0 14px;background:transparent;color:var(--muted);font-size:.82rem;font-weight:700;text-align:left}.sidebar__nav button:hover{background:var(--soft);color:var(--glm-blue)}.sidebar__nav button.is-active{background:var(--green-soft);color:var(--glm-blue)}.sidebar__meta{padding:22px 28px;border-top:1px solid var(--line)}.sidebar__meta p{margin:12px 0 0;color:var(--muted);font-size:.6rem;font-weight:700;letter-spacing:.14em}.sidebar__meta p+p{margin-top:4px}.sidebar__account{margin-top:auto;min-height:88px;display:flex;align-items:center;gap:10px;border-top:1px solid var(--line);padding:16px}.avatar{width:38px;height:38px;display:grid;flex:0 0 auto;place-items:center;overflow:hidden;border-radius:50%;background:var(--glm-blue);color:#fff;font-size:.67rem;font-weight:700;letter-spacing:.03em}.avatar img{display:block;width:100%;height:100%;object-fit:cover}.sidebar__account-copy{min-width:0;flex:1;display:grid;gap:3px}.sidebar__account-copy strong,.sidebar__account-copy small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar__account-copy strong{color:var(--text);font-size:.77rem}.sidebar__account-copy small{color:var(--muted);font-size:.62rem}.sidebar__account .icon-button{width:38px;height:38px;border:0}.mobile-header,.mobile-nav{display:none}.page-content{min-height:100vh;margin-left:var(--sidebar-width);padding:42px clamp(36px,5vw,82px) 72px}.page-header{display:flex;align-items:flex-end;justify-content:space-between;gap:30px;padding-bottom:30px;border-bottom:1px solid var(--line)}.page-header__meta{margin:0 0 9px;color:var(--glm-blue);font-size:.72rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase}.page-header h1{margin:0;color:var(--glm-blue);font-family:Arial Black,Arial,sans-serif;font-size:clamp(2.4rem,4.2vw,4.85rem);letter-spacing:-.065em;line-height:.9}.page-header__aside{display:grid;justify-items:end;padding-bottom:4px}.page-header__aside>span:last-child{color:var(--muted);font-size:.82rem;font-weight:700;line-height:1.35;white-space:nowrap}.inline-alert{margin-top:18px;border-left:3px solid var(--glm-orange);padding:12px 14px;background:#fff8e1;color:var(--text);font-size:.82rem}.search-stage{position:relative;overflow:hidden;display:flex;flex-direction:column;align-items:stretch;gap:22px;margin-top:38px;border-left:3px solid var(--glm-green);padding:34px 38px 32px;background:var(--soft)}.search-stage__copy,.hub-search{position:relative;z-index:2}.search-stage h2,.section-heading h2,.admin-bridge h2,.access-request-bridge h2,.admin-list h2,.app-editor h2{margin:0;color:var(--glm-blue);font-family:Arial Black,Arial,sans-serif;letter-spacing:-.04em}.search-stage h2{max-width:100%;font-size:clamp(2rem,3.3vw,3.5rem);line-height:1.05}.hub-search{min-height:62px;display:grid;grid-template-columns:24px 1fr auto;align-items:center;gap:13px;border-bottom:2px solid var(--glm-blue);background:#fff;padding:0 16px;color:var(--glm-blue)}.hub-search:focus-within{border-bottom-color:var(--glm-green);box-shadow:0 0 0 1px var(--line)}.hub-search input{width:100%;height:60px;border:0;outline:0;background:transparent;color:var(--text);font-size:.96rem}.hub-search input::placeholder{color:#747474}.hub-search button{width:40px;height:40px;display:grid;place-items:center;border:0;background:transparent;color:var(--glm-blue)}.hub-search kbd{border:1px solid var(--line);border-radius:3px;padding:4px 7px;background:var(--soft);color:var(--muted);font-family:Arial,sans-serif;font-size:.65rem}.search-stage__coordinate{position:absolute;top:-.31em;right:.02em;color:#e9e9e9;font-family:Arial Black,Arial,sans-serif;font-size:clamp(5.5rem,10vw,10rem);letter-spacing:-.08em;line-height:1;-webkit-user-select:none;user-select:none}.quick-section,.directory-section{margin-top:64px}.section-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:28px;margin-bottom:22px}.section-heading h2{font-size:clamp(1.75rem,2.5vw,2.8rem)}.section-heading>p{max-width:340px;margin:0 0 2px;color:var(--muted);font-size:.82rem;line-height:1.5;text-align:right}.quick-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));align-items:stretch;gap:14px}.quick-launch{--card-accent: var(--glm-green);min-width:0;min-height:360px;display:flex;flex-direction:column;border:1px solid var(--line);border-top:3px solid var(--glm-green);border-radius:2px;padding:28px;background:#fff;transition:border-color .16s ease,transform .16s ease}.quick-launch:hover{border-right-color:var(--glm-blue);border-bottom-color:var(--glm-blue);border-left-color:var(--glm-blue);transform:translateY(-3px)}.quick-launch__top{display:flex;align-items:flex-start;justify-content:space-between;gap:20px}.quick-launch__copy{flex:1;margin-top:48px}.quick-launch__category{color:var(--glm-blue);font-size:.64rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase}.quick-launch h3,.preview-card h3{margin:9px 0 8px;color:var(--text);font-family:Arial Black,Arial,sans-serif;font-size:1.35rem;letter-spacing:-.035em;line-height:1.05}.quick-launch h3{color:var(--glm-blue);font-size:1.55rem}.quick-launch p,.preview-card p{margin:0;color:var(--muted);font-size:.82rem;line-height:1.5}.quick-launch__action{width:100%;min-height:46px;display:flex;align-items:center;justify-content:space-between;gap:14px;margin-top:auto;border:0;border-top:1px solid var(--line);padding:13px 0 0;background:transparent;color:var(--glm-blue);font-size:.76rem;font-weight:700;text-align:left}.quick-launch__action:hover{color:var(--glm-teal)}.section-heading--directory{padding-bottom:18px;border-bottom:1px solid var(--line)}.directory-count{display:flex;align-items:baseline;gap:7px}.directory-count strong{color:var(--glm-blue);font-family:Arial Black,Arial,sans-serif;font-size:2rem;letter-spacing:-.06em}.directory-count span{color:var(--muted);font-size:.7rem}.filter-bar{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:18px;flex-wrap:wrap}.category-filters{display:flex;align-items:center;gap:4px}.filter-bar__search{flex:1;max-width:360px;min-width:220px;min-height:42px;display:grid;grid-template-columns:18px 1fr auto;align-items:center;gap:10px;border:1px solid var(--line);border-radius:2px;background:#fff;padding:0 12px;color:var(--glm-blue);transition:border-color .16s ease,box-shadow .16s ease}.filter-bar__search:focus-within{border-color:var(--glm-blue);box-shadow:0 0 0 1px var(--glm-blue)}.filter-bar__search input{width:100%;height:40px;border:0;outline:0;background:transparent;color:var(--text);font-size:.82rem}.filter-bar__search input::placeholder{color:#8a8a8a}.filter-bar__search button{width:24px;height:24px;display:grid;place-items:center;border:0;background:transparent;color:var(--glm-blue);padding:0}.category-filters button,.favorites-filter{min-height:44px;border:0;border-bottom:2px solid transparent;padding:0 12px;background:transparent;color:var(--muted);font-size:.74rem;font-weight:700;white-space:nowrap}.category-filters button:hover,.favorites-filter:hover{color:var(--glm-blue)}.category-filters button.is-active{border-bottom-color:var(--glm-green);color:var(--glm-blue)}.favorites-filter{display:inline-flex;align-items:center;gap:8px}.favorites-filter.is-active{border-bottom-color:var(--glm-lime);color:#617000}.directory-list{border-top:1px solid var(--text)}.pagination{display:flex;align-items:center;justify-content:center;gap:8px;margin-top:24px}.pagination__pages{display:flex;align-items:center;justify-content:center;gap:6px}.pagination__arrow,.pagination__page{width:36px;height:36px;display:grid;flex:0 0 auto;place-items:center;border:1px solid var(--line);border-radius:3px;background:#fff;color:var(--glm-blue);font-size:.74rem;font-weight:700;transition:background-color .14s ease,border-color .14s ease,color .14s ease}.pagination__arrow:hover:not(:disabled),.pagination__page:hover:not(.is-active){border-color:var(--glm-blue);background:var(--soft)}.pagination__page.is-active{border-color:var(--glm-blue);background:var(--glm-blue);color:#fff}.pagination__arrow:disabled{cursor:not-allowed;opacity:.35}.pagination__ellipsis{width:24px;color:var(--muted);font-size:.8rem;line-height:1;text-align:center}.pagination--compact{gap:5px}.pagination--compact .pagination__pages{gap:4px}.pagination--compact .pagination__arrow,.pagination--compact .pagination__page{width:30px;height:30px;font-size:.66rem}.pagination--compact .pagination__ellipsis{width:16px;font-size:.7rem}.directory-row{min-height:92px;display:grid;grid-template-columns:42px 44px minmax(220px,1fr) 110px 128px 44px 86px;align-items:center;gap:14px;border-bottom:1px solid var(--line);padding:14px 0;transition:background-color .14s ease,padding .14s ease}.directory-row:hover{padding-right:10px;padding-left:10px;background:var(--soft)}.directory-row__number{color:#919191;font-family:Arial Black,Arial,sans-serif;font-size:.65rem;letter-spacing:.06em}.directory-row__copy{min-width:0}.directory-row__copy h3{margin:0 0 5px;color:var(--text);font-size:.92rem;line-height:1.2}.directory-row__copy p{overflow:hidden;margin:0;color:var(--muted);font-size:.72rem;line-height:1.4;text-overflow:ellipsis;white-space:nowrap}.directory-row__category{color:var(--glm-blue);font-size:.65rem;font-weight:700}.availability{display:inline-flex;align-items:center;gap:7px;color:var(--muted);font-size:.67rem;font-weight:700;white-space:nowrap}.availability>span{width:7px;height:7px;flex:0 0 auto;border-radius:50%;background:var(--line)}.availability--ready>span{background:var(--glm-green);box-shadow:0 0 0 3px var(--green-soft)}.availability--pending>span{background:var(--glm-orange);box-shadow:0 0 0 3px #fff1e8}.directory-row .favorite-button{width:40px;height:40px;border:0;background:transparent}.directory-row__open{min-height:42px;display:flex;align-items:center;justify-content:flex-end;gap:7px;border:0;background:transparent;color:var(--glm-blue);font-size:.74rem;font-weight:700}.empty-state{min-height:280px;display:grid;grid-template-columns:minmax(110px,.35fr) minmax(260px,.65fr);align-items:center;gap:40px;border-top:1px solid var(--text);border-bottom:1px solid var(--line);padding:38px}.empty-state__mark{color:var(--soft);font-family:Arial Black,Arial,sans-serif;font-size:10rem;letter-spacing:-.1em;line-height:.7}.empty-state h3{margin:0 0 8px;color:var(--glm-blue);font-family:Arial Black,Arial,sans-serif;font-size:1.6rem;letter-spacing:-.04em}.empty-state p:not(.section-kicker){margin:0 0 18px;color:var(--muted);font-size:.84rem;line-height:1.5}.admin-bridge{position:relative;overflow:hidden;min-height:190px;display:grid;grid-template-columns:minmax(70px,.25fr) minmax(300px,1fr) auto;align-items:center;gap:30px;margin-top:70px;border-top:1px solid var(--text);border-bottom:3px solid var(--glm-green);padding:30px 8px}.admin-bridge__number{color:var(--glm-green);font-family:Arial Black,Arial,sans-serif;font-size:7rem;line-height:.7}.admin-bridge h2{font-size:2rem}.admin-bridge p:not(.section-kicker){margin:8px 0 0;color:var(--muted);font-size:.84rem;line-height:1.5}.access-request-bridge{position:relative;min-height:190px;display:grid;grid-template-columns:minmax(70px,.25fr) minmax(300px,1fr) auto;align-items:center;gap:30px;margin-top:70px;border-top:1px solid var(--text);border-bottom:3px solid var(--glm-green);padding:30px 8px}.access-request-bridge__number{color:var(--glm-green);font-family:Arial Black,Arial,sans-serif;font-size:6.5rem;line-height:.72}.access-request-bridge h2{font-size:2rem}.access-request-bridge p:not(.section-kicker){margin:8px 0 0;color:var(--muted);font-size:.84rem;line-height:1.5}.access-request-dialog{width:min(560px,calc(100vw - 32px));border:0;border-top:4px solid var(--glm-green);border-radius:3px;padding:34px;color:var(--text);box-shadow:0 24px 80px #2d363b38}.access-request-dialog::backdrop{background:#2330378f}.access-request-dialog__close{position:absolute;top:12px;right:12px;width:40px;height:40px;display:grid;place-items:center;border:0;background:transparent;color:var(--muted)}.access-request-dialog h2{margin:0;color:var(--glm-blue);font-family:Arial Black,Arial,sans-serif;font-size:2rem;letter-spacing:-.04em}.access-request-dialog__intro{margin:10px 0 34px;color:var(--muted);font-size:.82rem;line-height:1.55}.access-request-dialog form{display:grid;gap:20px;margin-top:4px}.access-request-dialog__actions{display:flex;justify-content:flex-end;gap:10px;margin-top:8px;padding-top:22px;border-top:1px solid var(--line)}.back-button{min-height:40px;display:inline-flex;align-items:center;gap:8px;margin-bottom:18px;border:0;border-bottom:1px solid var(--line);padding:0;background:transparent;color:var(--glm-blue);font-size:.75rem;font-weight:700}.admin-header{align-items:center}.admin-header__note{display:flex;align-items:center;gap:12px;border-left:3px solid var(--glm-green);padding:10px 0 10px 14px;color:var(--glm-blue)}.admin-header__note span{display:grid;gap:3px}.admin-header__note strong{color:var(--text);font-size:.74rem}.admin-header__note small{color:var(--muted);font-size:.66rem}.admin-workspace{min-height:680px;display:grid;grid-template-columns:300px minmax(0,1fr);margin-top:34px;border:1px solid var(--line)}.admin-list{min-width:0;display:flex;flex-direction:column;border-right:1px solid var(--line);background:var(--soft)}.admin-list__top{min-height:94px;display:flex;align-items:center;justify-content:space-between;gap:20px;border-bottom:1px solid var(--line);padding:20px}.admin-list h2{font-size:1.25rem}.admin-list__search{display:grid;grid-template-columns:20px 1fr auto;align-items:center;gap:9px;margin:14px;border:1px solid var(--line);background:#fff;padding:0 11px;color:var(--glm-blue)}.admin-list__search input{width:100%;height:42px;border:0;outline:0;background:transparent;font-size:.77rem}.admin-list__search button{width:24px;height:24px;display:grid;place-items:center;border:0;background:transparent;color:var(--glm-blue)}.admin-list__items{min-height:0;flex:1;overflow-y:auto;border-top:1px solid var(--line)}.admin-list__items>button,.admin-list__item-row{position:relative;width:100%;min-height:70px;display:grid;grid-template-columns:44px minmax(0,1fr) auto;align-items:center;gap:11px;border:0;border-bottom:1px solid var(--line);padding:10px 14px;background:transparent;text-align:left;cursor:pointer}.admin-list__items>button:hover,.admin-list__item-row:hover{background:#fff}.admin-list__items>button.is-active,.admin-list__item-row.is-active{background:#fff}.admin-list__items>button.is-active:before,.admin-list__item-row.is-active:before{content:"";position:absolute;top:0;bottom:0;left:0;width:3px;background:var(--glm-green)}.admin-list__item-info{min-width:0;display:flex;flex-direction:column;gap:3px;text-align:left}.admin-list__item-info strong{display:block;color:var(--text);font-size:.76rem;font-weight:700;line-height:1.25}.admin-list__item-info small{display:block;color:var(--muted);font-size:.64rem;font-weight:400;line-height:1.2}.admin-list__item-actions{display:flex;align-items:center;gap:8px}.admin-list__delete-icon{width:28px;height:28px;display:grid;place-items:center;border:0;border-radius:3px;background:transparent;color:#a0a0a0;transition:color .14s ease,background-color .14s ease}.admin-list__delete-icon:hover{color:var(--danger);background:#fdecea}.admin-list__items strong,.admin-list__items small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.admin-list__new-icon{width:38px;height:38px;display:grid;place-items:center;border:1px dashed var(--glm-blue);border-radius:3px;color:var(--glm-blue)}.mini-status{color:var(--glm-blue);font-size:.57rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase}.mini-status.is-hidden{color:var(--muted)}.admin-list>.pagination{flex:0 0 auto;justify-content:space-between;margin-top:0;border-top:1px solid var(--line);padding:10px 12px;background:#fff}.app-editor{min-width:0;padding:28px clamp(24px,3.4vw,52px) 44px}.app-editor__heading{display:flex;align-items:flex-start;justify-content:space-between;gap:24px;border-bottom:1px solid var(--line);padding-bottom:20px}.app-editor h2{font-size:clamp(1.5rem,2.4vw,2.35rem)}.dirty-state{display:inline-flex;align-items:center;gap:7px;color:var(--muted);font-size:.65rem;font-weight:700;white-space:nowrap}.dirty-state>span{width:7px;height:7px;border-radius:50%;background:var(--glm-green)}.dirty-state.is-dirty>span{background:var(--glm-orange)}.editor-layout{display:grid;grid-template-columns:minmax(0,1fr) 260px;align-items:start;gap:clamp(28px,4vw,54px);margin-top:28px}.editor-form__section{display:grid;gap:18px;margin:0;border-bottom:1px solid var(--line);padding:0 0 28px}.editor-form__section+.editor-form__section{padding-top:28px}.editor-form__section-title{margin:0 0 2px;color:var(--glm-blue);font-size:.72rem;font-weight:700;letter-spacing:.12em;line-height:1.2;text-transform:uppercase}.editor-form .form-field{margin:0}.form-split{display:grid;grid-template-columns:1fr 1fr;gap:16px}.field-meta{display:flex;justify-content:space-between;gap:14px;color:var(--muted);font-size:.66rem;line-height:1.4}.field-meta>span:last-child{flex:0 0 auto}.field-meta--counter-only{justify-content:flex-end}.field-help{color:var(--muted);font-size:.67rem;line-height:1.4}.field-error--standalone{margin:0}.icon-config{display:flex;align-items:center;gap:18px}.ai-icon-actions{display:flex;align-items:center}.ai-icon-button{min-height:44px}.icon-dropzone{min-height:80px;display:grid;flex:1;grid-template-columns:42px 1fr;align-items:center;gap:13px;border:1px dashed var(--glm-blue);border-radius:3px;padding:14px;background:var(--soft);cursor:pointer;transition:border-color .14s ease,background-color .14s ease}.icon-dropzone:hover,.icon-dropzone.is-dragging{border-color:var(--glm-green);background:var(--green-soft)}.icon-dropzone input{position:absolute;width:1px;height:1px;overflow:hidden;opacity:0}.icon-dropzone:focus-within{outline:3px solid var(--glm-green);outline-offset:3px}.icon-dropzone__symbol{width:42px;height:42px;display:grid;place-items:center;border-radius:3px;background:#fff;color:var(--glm-blue)}.icon-dropzone>span:last-child{display:grid;gap:4px}.icon-dropzone strong{color:var(--text);font-size:.77rem}.icon-dropzone small{color:var(--muted);font-size:.65rem}.url-field{display:grid;grid-template-columns:24px 1fr;align-items:center;border:1px solid var(--line);border-radius:3px;padding:0 12px;background:#fff;color:var(--glm-blue)}.url-field:focus-within{border-color:var(--glm-blue);box-shadow:inset 3px 0 0 var(--glm-green)}.url-field input{border:0;box-shadow:none;padding:0 3px}.url-field input:focus{box-shadow:none}.editor-actions{display:flex;align-items:center;gap:10px;padding-top:26px}.editor-actions .danger-button{margin-left:auto}.app-preview{position:sticky;top:28px}.preview-card{min-height:302px;display:flex;flex-direction:column;align-items:flex-start;margin-top:14px;border:1px solid var(--line);border-top:3px solid var(--glm-green);padding:22px;background:#fff}.preview-card .app-mark{margin-bottom:36px}.preview-card .availability{margin-top:auto;padding-top:24px}.app-preview__note{margin:12px 0 0;color:var(--muted);font-size:.65rem;line-height:1.45}.confirm-dialog{width:min(440px,calc(100vw - 32px));border:0;border-top:4px solid var(--danger);border-radius:3px;padding:30px;color:var(--text);box-shadow:0 24px 80px #2d363b38}.confirm-dialog::backdrop{background:#2330378f}.confirm-dialog__close{position:absolute;top:12px;right:12px;width:40px;height:40px;display:grid;place-items:center;border:0;background:transparent;color:var(--muted)}.confirm-dialog__icon{width:48px;height:48px;display:grid;place-items:center;margin-bottom:28px;border-radius:50%;background:#fdecea;color:var(--danger)}.confirm-dialog h2{margin:0;color:var(--text);font-family:Arial Black,Arial,sans-serif;font-size:1.6rem;letter-spacing:-.04em}.confirm-dialog>p:not(.section-kicker){margin:12px 0 0;color:var(--muted);font-size:.82rem;line-height:1.55}.confirm-dialog__actions{display:flex;justify-content:flex-end;gap:10px;margin-top:28px}.generation-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:200;display:grid;place-items:center;padding:24px;background:#162128b8;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.generation-overlay__card{width:min(460px,100%);display:grid;justify-items:center;border-top:4px solid var(--glm-green);padding:38px 34px;background:#fff;box-shadow:0 24px 70px #00000047;text-align:center}.generation-overlay__card h2{margin:10px 0 0;color:var(--glm-blue);font-family:Arial Black,Arial,sans-serif;font-size:1.75rem;letter-spacing:-.04em}.generation-overlay__card>p:last-child{max-width:350px;margin:12px 0 0;color:var(--muted);font-size:.82rem;line-height:1.5}.generation-spinner{width:40px;height:40px;margin-bottom:20px;border:4px solid var(--line);border-top-color:var(--glm-green);border-radius:50%;animation:glm-spin .8s linear infinite}.catalog-loading{min-height:100vh;display:grid;place-items:center;align-content:center;gap:18px;background:#fff;color:var(--glm-blue);font-size:.85rem;font-weight:700}.catalog-loading .brand-logo{width:150px;margin-bottom:8px}.catalog-loading .generation-spinner,.catalog-loading p{margin:0}@keyframes glm-spin{to{transform:rotate(360deg)}}.toast-stack{position:fixed;right:24px;bottom:24px;z-index:100;width:min(390px,calc(100vw - 32px));display:grid;gap:10px}.toast{position:relative;display:grid;grid-template-columns:3px 1fr 36px;align-items:center;gap:14px;overflow:hidden;border:1px solid var(--line);border-radius:3px;padding:13px 10px 13px 0;background:#fff;box-shadow:0 16px 44px #32444e29}.toast__signal{align-self:stretch;background:var(--glm-green)}.toast>div,.toast .icon-button{align-self:center}.toast--info .toast__signal{background:var(--glm-blue)}.toast--error .toast__signal{background:var(--danger)}.toast strong{display:block;margin-top:0;color:var(--text);font-size:.8rem}.toast p{margin:4px 0 0;color:var(--muted);font-size:.7rem;line-height:1.45}@media(max-width:1240px){:root{--sidebar-width: 214px}.sidebar__brand{padding:0 20px}.sidebar__brand .brand-logo{width:140px}.sidebar__account-copy{display:none}.directory-row{grid-template-columns:34px 44px minmax(190px,1fr) 112px 44px 80px}.directory-row__category{display:none}.editor-layout{grid-template-columns:minmax(0,1fr) 230px;gap:28px}}@media(max-width:1360px){.editor-layout{grid-template-columns:1fr}.app-preview{position:static}.preview-card{width:100%;min-height:260px}}@media(max-width:1040px){.page-content{padding-right:32px;padding-left:32px}.search-stage{gap:20px}.quick-grid{grid-template-columns:1fr 1fr}.directory-row{grid-template-columns:34px 44px minmax(160px,1fr) 108px 44px 44px}.directory-row__open span{display:none}.admin-workspace{grid-template-columns:250px minmax(0,1fr)}}@media(max-width:860px){:root{--mobile-header-height: 72px;--mobile-nav-height: 72px}.login-shell{grid-template-columns:1fr}.login-story{min-height:540px;border-right:0;border-bottom:1px solid var(--line)}.login-story__content{margin:auto 0 0;padding:72px 0 54px}.login-story__type{right:-.03em;bottom:-.3em;font-size:20rem}.login-panel{min-height:auto;padding-top:64px;padding-bottom:64px}.sidebar{display:none}.mobile-header{position:fixed;top:0;right:0;left:0;z-index:30;height:var(--mobile-header-height);display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);padding:10px 22px;background:#fffffff5}.mobile-header:before{content:"";position:absolute;top:0;left:0;width:94px;height:3px;background:var(--glm-green)}.mobile-header .brand-logo{width:135px}.mobile-nav{position:fixed;right:0;bottom:0;left:0;z-index:30;min-height:var(--mobile-nav-height);display:flex;align-items:stretch;justify-content:center;border-top:1px solid var(--line);background:#fffffffa}.mobile-nav button{min-width:92px;min-height:66px;display:grid;place-items:center;align-content:center;gap:5px;border:0;border-top:3px solid transparent;background:transparent;color:var(--muted);font-size:.62rem;font-weight:700}.mobile-nav button.is-active{border-top-color:var(--glm-green);color:var(--glm-blue)}.page-content{margin-left:0;padding-top:calc(var(--mobile-header-height) + 34px);padding-bottom:calc(var(--mobile-nav-height) + 42px)}.filter-bar{align-items:flex-start;flex-direction:column}.category-filters{width:100%;overflow-x:auto;padding-bottom:3px}.directory-row{grid-template-columns:44px minmax(150px,1fr) 108px 44px 44px}.directory-row__number{display:none}.admin-bridge,.access-request-bridge{grid-template-columns:80px 1fr}.admin-bridge .secondary-button,.access-request-bridge .secondary-button{grid-column:2;justify-self:start}.admin-workspace{grid-template-columns:1fr}.admin-list{max-height:360px;border-right:0;border-bottom:1px solid var(--line)}.admin-list__items{max-height:210px}}@media(max-width:620px){.login-story{min-height:480px;padding:26px 22px 24px}.login-story:before{left:22px;height:90px}.login-story__topline{padding-left:12px}.login-story .brand-logo{width:160px}.login-story__edition{font-size:.58rem}.login-story__content{width:100%;padding:62px 0 42px}.login-story h1{font-size:clamp(3.25rem,15.5vw,5rem)}.login-story__lede{margin-top:26px;font-size:.95rem}.login-story__signal,.login-story__place{font-size:.54rem}.login-story__type{font-size:12rem}.login-panel{padding:48px 22px}.page-content{padding-right:18px;padding-left:18px}.page-header{padding-bottom:23px}.page-header h1{font-size:2.7rem}.page-header__aside,.admin-header__note{display:none}.search-stage{margin-top:26px;padding:26px 18px 22px}.search-stage__coordinate{opacity:.58}.hub-search{grid-template-columns:22px 1fr auto;min-height:58px;padding:0 12px}.hub-search input{min-width:0;font-size:.84rem}.hub-search kbd{display:none}.pagination{gap:4px}.pagination__pages{gap:3px}.pagination__arrow,.pagination__page{width:32px;height:32px}.quick-section,.directory-section{margin-top:48px}.section-heading{align-items:flex-start;flex-direction:column;gap:12px}.section-heading>p{text-align:left}.section-heading--directory{flex-direction:row;align-items:flex-end}.quick-grid{grid-template-columns:1fr}.quick-launch{min-height:330px;padding:20px}.quick-launch__copy{margin-top:28px}.directory-row{min-height:86px;grid-template-columns:44px minmax(0,1fr) 40px 38px;gap:9px}.directory-row__category,.directory-row .availability{display:none}.directory-row__copy p{max-width:100%}.directory-row .favorite-button,.directory-row__open{width:38px;height:38px;min-height:38px}.empty-state{grid-template-columns:1fr;gap:16px;padding:30px 18px}.empty-state__mark{font-size:6rem}.admin-bridge,.access-request-bridge{grid-template-columns:54px 1fr;gap:16px}.admin-bridge__number,.access-request-bridge__number{font-size:5rem}.admin-bridge h2,.access-request-bridge h2{font-size:1.65rem}.admin-bridge .secondary-button,.access-request-bridge .secondary-button{grid-column:1 / -1;width:100%}.access-request-dialog{padding:28px 20px 22px}.access-request-dialog__actions{flex-direction:column-reverse}.access-request-dialog__actions button{width:100%}.admin-page{padding-right:12px;padding-left:12px}.admin-workspace{margin-top:26px}.app-editor{padding:24px 16px 36px}.app-editor__heading{align-items:flex-start;flex-direction:column;gap:12px}.form-split{grid-template-columns:1fr}.icon-config{align-items:flex-start;flex-direction:column}.icon-dropzone{width:100%}.editor-actions{align-items:stretch;flex-direction:column}.editor-actions .danger-button{margin-left:0}.app-preview{grid-template-columns:1fr}.preview-card{width:100%}.confirm-dialog{padding:26px 20px}.confirm-dialog__actions{align-items:stretch;flex-direction:column}.toast-stack{right:16px;bottom:calc(var(--mobile-nav-height, 0px) + 16px);left:16px;width:auto}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}} diff --git a/dist/assets/index-B0NLzVcn.js b/dist/assets/index-B0NLzVcn.js new file mode 100644 index 0000000..4d3d1db --- /dev/null +++ b/dist/assets/index-B0NLzVcn.js @@ -0,0 +1,179 @@ +(function(){const d=document.createElement("link").relList;if(d&&d.supports&&d.supports("modulepreload"))return;for(const x of document.querySelectorAll('link[rel="modulepreload"]'))r(x);new MutationObserver(x=>{for(const z of x)if(z.type==="childList")for(const q of z.addedNodes)q.tagName==="LINK"&&q.rel==="modulepreload"&&r(q)}).observe(document,{childList:!0,subtree:!0});function v(x){const z={};return x.integrity&&(z.integrity=x.integrity),x.referrerPolicy&&(z.referrerPolicy=x.referrerPolicy),x.crossOrigin==="use-credentials"?z.credentials="include":x.crossOrigin==="anonymous"?z.credentials="omit":z.credentials="same-origin",z}function r(x){if(x.ep)return;x.ep=!0;const z=v(x);fetch(x.href,z)}})();var Ss={exports:{}},Tn={};/** + * @license React + * react-jsx-runtime.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var Qd;function Ky(){if(Qd)return Tn;Qd=1;var f=Symbol.for("react.transitional.element"),d=Symbol.for("react.fragment");function v(r,x,z){var q=null;if(z!==void 0&&(q=""+z),x.key!==void 0&&(q=""+x.key),"key"in x){z={};for(var K in x)K!=="key"&&(z[K]=x[K])}else z=x;return x=z.ref,{$$typeof:f,type:r,key:q,ref:x!==void 0?x:null,props:z}}return Tn.Fragment=d,Tn.jsx=v,Tn.jsxs=v,Tn}var Xd;function Jy(){return Xd||(Xd=1,Ss.exports=Ky()),Ss.exports}var c=Jy(),_s={exports:{}},P={};/** + * @license React + * react.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var wd;function ky(){if(wd)return P;wd=1;var f=Symbol.for("react.transitional.element"),d=Symbol.for("react.portal"),v=Symbol.for("react.fragment"),r=Symbol.for("react.strict_mode"),x=Symbol.for("react.profiler"),z=Symbol.for("react.consumer"),q=Symbol.for("react.context"),K=Symbol.for("react.forward_ref"),R=Symbol.for("react.suspense"),E=Symbol.for("react.memo"),G=Symbol.for("react.lazy"),B=Symbol.for("react.activity"),J=Symbol.iterator;function ye(o){return o===null||typeof o!="object"?null:(o=J&&o[J]||o["@@iterator"],typeof o=="function"?o:null)}var w={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},ee=Object.assign,Z={};function te(o,A,C){this.props=o,this.context=A,this.refs=Z,this.updater=C||w}te.prototype.isReactComponent={},te.prototype.setState=function(o,A){if(typeof o!="object"&&typeof o!="function"&&o!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,o,A,"setState")},te.prototype.forceUpdate=function(o){this.updater.enqueueForceUpdate(this,o,"forceUpdate")};function Ne(){}Ne.prototype=te.prototype;function Te(o,A,C){this.props=o,this.context=A,this.refs=Z,this.updater=C||w}var se=Te.prototype=new Ne;se.constructor=Te,ee(se,te.prototype),se.isPureReactComponent=!0;var pe=Array.isArray;function Ae(){}var I={H:null,A:null,T:null,S:null},ne=Object.prototype.hasOwnProperty;function Me(o,A,C){var L=C.ref;return{$$typeof:f,type:o,key:A,ref:L!==void 0?L:null,props:C}}function Ue(o,A){return Me(o.type,A,o.props)}function ve(o){return typeof o=="object"&&o!==null&&o.$$typeof===f}function He(o){var A={"=":"=0",":":"=2"};return"$"+o.replace(/[=:]/g,function(C){return A[C]})}var lt=/\/+/g;function Y(o,A){return typeof o=="object"&&o!==null&&o.key!=null?He(""+o.key):A.toString(36)}function k(o){switch(o.status){case"fulfilled":return o.value;case"rejected":throw o.reason;default:switch(typeof o.status=="string"?o.then(Ae,Ae):(o.status="pending",o.then(function(A){o.status==="pending"&&(o.status="fulfilled",o.value=A)},function(A){o.status==="pending"&&(o.status="rejected",o.reason=A)})),o.status){case"fulfilled":return o.value;case"rejected":throw o.reason}}throw o}function S(o,A,C,L,F){var $=typeof o;($==="undefined"||$==="boolean")&&(o=null);var ue=!1;if(o===null)ue=!0;else switch($){case"bigint":case"string":case"number":ue=!0;break;case"object":switch(o.$$typeof){case f:case d:ue=!0;break;case G:return ue=o._init,S(ue(o._payload),A,C,L,F)}}if(ue)return F=F(o),ue=L===""?"."+Y(o,0):L,pe(F)?(C="",ue!=null&&(C=ue.replace(lt,"$&/")+"/"),S(F,A,C,"",function(Pe){return Pe})):F!=null&&(ve(F)&&(F=Ue(F,C+(F.key==null||o&&o.key===F.key?"":(""+F.key).replace(lt,"$&/")+"/")+ue)),A.push(F)),1;ue=0;var Je=L===""?".":L+":";if(pe(o))for(var je=0;je>>1,b=S[D];if(0>>1;Dx(C,U))Lx(F,C)?(S[D]=F,S[L]=U,D=L):(S[D]=C,S[A]=U,D=A);else if(Lx(F,U))S[D]=F,S[L]=U,D=L;else break e}}return T}function x(S,T){var U=S.sortIndex-T.sortIndex;return U!==0?U:S.id-T.id}if(f.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var z=performance;f.unstable_now=function(){return z.now()}}else{var q=Date,K=q.now();f.unstable_now=function(){return q.now()-K}}var R=[],E=[],G=1,B=null,J=3,ye=!1,w=!1,ee=!1,Z=!1,te=typeof setTimeout=="function"?setTimeout:null,Ne=typeof clearTimeout=="function"?clearTimeout:null,Te=typeof setImmediate<"u"?setImmediate:null;function se(S){for(var T=v(E);T!==null;){if(T.callback===null)r(E);else if(T.startTime<=S)r(E),T.sortIndex=T.expirationTime,d(R,T);else break;T=v(E)}}function pe(S){if(ee=!1,se(S),!w)if(v(R)!==null)w=!0,Ae||(Ae=!0,He());else{var T=v(E);T!==null&&k(pe,T.startTime-S)}}var Ae=!1,I=-1,ne=5,Me=-1;function Ue(){return Z?!0:!(f.unstable_now()-MeS&&Ue());){var D=B.callback;if(typeof D=="function"){B.callback=null,J=B.priorityLevel;var b=D(B.expirationTime<=S);if(S=f.unstable_now(),typeof b=="function"){B.callback=b,se(S),T=!0;break t}B===v(R)&&r(R),se(S)}else r(R);B=v(R)}if(B!==null)T=!0;else{var o=v(E);o!==null&&k(pe,o.startTime-S),T=!1}}break e}finally{B=null,J=U,ye=!1}T=void 0}}finally{T?He():Ae=!1}}}var He;if(typeof Te=="function")He=function(){Te(ve)};else if(typeof MessageChannel<"u"){var lt=new MessageChannel,Y=lt.port2;lt.port1.onmessage=ve,He=function(){Y.postMessage(null)}}else He=function(){te(ve,0)};function k(S,T){I=te(function(){S(f.unstable_now())},T)}f.unstable_IdlePriority=5,f.unstable_ImmediatePriority=1,f.unstable_LowPriority=4,f.unstable_NormalPriority=3,f.unstable_Profiling=null,f.unstable_UserBlockingPriority=2,f.unstable_cancelCallback=function(S){S.callback=null},f.unstable_forceFrameRate=function(S){0>S||125D?(S.sortIndex=U,d(E,S),v(R)===null&&S===v(E)&&(ee?(Ne(I),I=-1):ee=!0,k(pe,U-D))):(S.sortIndex=b,d(R,S),w||ye||(w=!0,Ae||(Ae=!0,He()))),S},f.unstable_shouldYield=Ue,f.unstable_wrapCallback=function(S){var T=J;return function(){var U=J;J=T;try{return S.apply(this,arguments)}finally{J=U}}}})(js)),js}var Kd;function Wy(){return Kd||(Kd=1,As.exports=$y()),As.exports}var zs={exports:{}},et={};/** + * @license React + * react-dom.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var Jd;function Fy(){if(Jd)return et;Jd=1;var f=qs();function d(R){var E="https://react.dev/errors/"+R;if(1"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(f)}catch(d){console.error(d)}}return f(),zs.exports=Fy(),zs.exports}/** + * @license React + * react-dom-client.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var $d;function Py(){if($d)return xn;$d=1;var f=Wy(),d=qs(),v=Iy();function r(e){var t="https://react.dev/errors/"+e;if(1b||(e.current=D[b],D[b]=null,b--)}function C(e,t){b++,D[b]=e.current,e.current=t}var L=o(null),F=o(null),$=o(null),ue=o(null);function Je(e,t){switch(C($,t),C(F,e),C(L,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?rd(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)t=rd(t),e=od(t,e);else switch(e){case"svg":e=1;break;case"math":e=2;break;default:e=0}}A(L),C(L,e)}function je(){A(L),A(F),A($)}function Pe(e){e.memoizedState!==null&&C(ue,e);var t=L.current,l=od(t,e.type);t!==l&&(C(F,e),C(L,l))}function tl(e){F.current===e&&(A(L),A(F)),ue.current===e&&(A(ue),An._currentValue=U)}var li,Ls;function Tl(e){if(li===void 0)try{throw Error()}catch(l){var t=l.stack.trim().match(/\n( *(at )?)/);li=t&&t[1]||"",Ls=-1)":-1n||m[a]!==p[n]){var N=` +`+m[a].replace(" at new "," at ");return e.displayName&&N.includes("")&&(N=N.replace("",e.displayName)),N}while(1<=a&&0<=n);break}}}finally{ai=!1,Error.prepareStackTrace=l}return(l=e?e.displayName||e.name:"")?Tl(l):""}function Am(e,t){switch(e.tag){case 26:case 27:case 5:return Tl(e.type);case 16:return Tl("Lazy");case 13:return e.child!==t&&t!==null?Tl("Suspense Fallback"):Tl("Suspense");case 19:return Tl("SuspenseList");case 0:case 15:return ni(e.type,!1);case 11:return ni(e.type.render,!1);case 1:return ni(e.type,!0);case 31:return Tl("Activity");default:return""}}function Gs(e){try{var t="",l=null;do t+=Am(e,l),l=e,e=e.return;while(e);return t}catch(a){return` +Error generating stack: `+a.message+` +`+a.stack}}var ui=Object.prototype.hasOwnProperty,ii=f.unstable_scheduleCallback,ci=f.unstable_cancelCallback,jm=f.unstable_shouldYield,zm=f.unstable_requestPaint,rt=f.unstable_now,Nm=f.unstable_getCurrentPriorityLevel,Ys=f.unstable_ImmediatePriority,Qs=f.unstable_UserBlockingPriority,Cn=f.unstable_NormalPriority,Tm=f.unstable_LowPriority,Xs=f.unstable_IdlePriority,xm=f.log,Om=f.unstable_setDisableYieldValue,Ra=null,ot=null;function ll(e){if(typeof xm=="function"&&Om(e),ot&&typeof ot.setStrictMode=="function")try{ot.setStrictMode(Ra,e)}catch{}}var dt=Math.clz32?Math.clz32:Um,Dm=Math.log,Mm=Math.LN2;function Um(e){return e>>>=0,e===0?32:31-(Dm(e)/Mm|0)|0}var Rn=256,qn=262144,Hn=4194304;function xl(e){var t=e&42;if(t!==0)return t;switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return e&261888;case 262144:case 524288:case 1048576:case 2097152:return e&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return e&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return e}}function Bn(e,t,l){var a=e.pendingLanes;if(a===0)return 0;var n=0,u=e.suspendedLanes,i=e.pingedLanes;e=e.warmLanes;var s=a&134217727;return s!==0?(a=s&~u,a!==0?n=xl(a):(i&=s,i!==0?n=xl(i):l||(l=s&~e,l!==0&&(n=xl(l))))):(s=a&~u,s!==0?n=xl(s):i!==0?n=xl(i):l||(l=a&~e,l!==0&&(n=xl(l)))),n===0?0:t!==0&&t!==n&&(t&u)===0&&(u=n&-n,l=t&-t,u>=l||u===32&&(l&4194048)!==0)?t:n}function qa(e,t){return(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)===0}function Cm(e,t){switch(e){case 1:case 2:case 4:case 8:case 64:return t+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function ws(){var e=Hn;return Hn<<=1,(Hn&62914560)===0&&(Hn=4194304),e}function si(e){for(var t=[],l=0;31>l;l++)t.push(e);return t}function Ha(e,t){e.pendingLanes|=t,t!==268435456&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function Rm(e,t,l,a,n,u){var i=e.pendingLanes;e.pendingLanes=l,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=l,e.entangledLanes&=l,e.errorRecoveryDisabledLanes&=l,e.shellSuspendCounter=0;var s=e.entanglements,m=e.expirationTimes,p=e.hiddenUpdates;for(l=i&~l;0"u")return null;try{return e.activeElement||e.body}catch{return e.body}}var Ym=/[\n"\\]/g;function _t(e){return e.replace(Ym,function(t){return"\\"+t.charCodeAt(0).toString(16)+" "})}function hi(e,t,l,a,n,u,i,s){e.name="",i!=null&&typeof i!="function"&&typeof i!="symbol"&&typeof i!="boolean"?e.type=i:e.removeAttribute("type"),t!=null?i==="number"?(t===0&&e.value===""||e.value!=t)&&(e.value=""+St(t)):e.value!==""+St(t)&&(e.value=""+St(t)):i!=="submit"&&i!=="reset"||e.removeAttribute("value"),t!=null?yi(e,i,St(t)):l!=null?yi(e,i,St(l)):a!=null&&e.removeAttribute("value"),n==null&&u!=null&&(e.defaultChecked=!!u),n!=null&&(e.checked=n&&typeof n!="function"&&typeof n!="symbol"),s!=null&&typeof s!="function"&&typeof s!="symbol"&&typeof s!="boolean"?e.name=""+St(s):e.removeAttribute("name")}function lf(e,t,l,a,n,u,i,s){if(u!=null&&typeof u!="function"&&typeof u!="symbol"&&typeof u!="boolean"&&(e.type=u),t!=null||l!=null){if(!(u!=="submit"&&u!=="reset"||t!=null)){mi(e);return}l=l!=null?""+St(l):"",t=t!=null?""+St(t):l,s||t===e.value||(e.value=t),e.defaultValue=t}a=a??n,a=typeof a!="function"&&typeof a!="symbol"&&!!a,e.checked=s?e.checked:!!a,e.defaultChecked=!!a,i!=null&&typeof i!="function"&&typeof i!="symbol"&&typeof i!="boolean"&&(e.name=i),mi(e)}function yi(e,t,l){t==="number"&&Yn(e.ownerDocument)===e||e.defaultValue===""+l||(e.defaultValue=""+l)}function ea(e,t,l,a){if(e=e.options,t){t={};for(var n=0;n"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),Si=!1;if(Gt)try{var Ya={};Object.defineProperty(Ya,"passive",{get:function(){Si=!0}}),window.addEventListener("test",Ya,Ya),window.removeEventListener("test",Ya,Ya)}catch{Si=!1}var nl=null,_i=null,Xn=null;function rf(){if(Xn)return Xn;var e,t=_i,l=t.length,a,n="value"in nl?nl.value:nl.textContent,u=n.length;for(e=0;e=wa),vf=" ",gf=!1;function bf(e,t){switch(e){case"keyup":return hh.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function pf(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var na=!1;function vh(e,t){switch(e){case"compositionend":return pf(t);case"keypress":return t.which!==32?null:(gf=!0,vf);case"textInput":return e=t.data,e===vf&&gf?null:e;default:return null}}function gh(e,t){if(na)return e==="compositionend"||!Ni&&bf(e,t)?(e=rf(),Xn=_i=nl=null,na=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:l,offset:t-e};e=a}e:{for(;l;){if(l.nextSibling){l=l.nextSibling;break e}l=l.parentNode}l=void 0}l=Tf(l)}}function Of(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?Of(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function Df(e){e=e!=null&&e.ownerDocument!=null&&e.ownerDocument.defaultView!=null?e.ownerDocument.defaultView:window;for(var t=Yn(e.document);t instanceof e.HTMLIFrameElement;){try{var l=typeof t.contentWindow.location.href=="string"}catch{l=!1}if(l)e=t.contentWindow;else break;t=Yn(e.document)}return t}function Oi(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}var zh=Gt&&"documentMode"in document&&11>=document.documentMode,ua=null,Di=null,Ja=null,Mi=!1;function Mf(e,t,l){var a=l.window===l?l.document:l.nodeType===9?l:l.ownerDocument;Mi||ua==null||ua!==Yn(a)||(a=ua,"selectionStart"in a&&Oi(a)?a={start:a.selectionStart,end:a.selectionEnd}:(a=(a.ownerDocument&&a.ownerDocument.defaultView||window).getSelection(),a={anchorNode:a.anchorNode,anchorOffset:a.anchorOffset,focusNode:a.focusNode,focusOffset:a.focusOffset}),Ja&&Ka(Ja,a)||(Ja=a,a=qu(Di,"onSelect"),0>=i,n-=i,Ct=1<<32-dt(t)+n|l<ae?(re=X,X=null):re=X.sibling;var me=_(y,X,g[ae],O);if(me===null){X===null&&(X=re);break}e&&X&&me.alternate===null&&t(y,X),h=u(me,h,ae),de===null?V=me:de.sibling=me,de=me,X=re}if(ae===g.length)return l(y,X),oe&&Qt(y,ae),V;if(X===null){for(;aeae?(re=X,X=null):re=X.sibling;var Nl=_(y,X,me.value,O);if(Nl===null){X===null&&(X=re);break}e&&X&&Nl.alternate===null&&t(y,X),h=u(Nl,h,ae),de===null?V=Nl:de.sibling=Nl,de=Nl,X=re}if(me.done)return l(y,X),oe&&Qt(y,ae),V;if(X===null){for(;!me.done;ae++,me=g.next())me=M(y,me.value,O),me!==null&&(h=u(me,h,ae),de===null?V=me:de.sibling=me,de=me);return oe&&Qt(y,ae),V}for(X=a(X);!me.done;ae++,me=g.next())me=j(X,y,ae,me.value,O),me!==null&&(e&&me.alternate!==null&&X.delete(me.key===null?ae:me.key),h=u(me,h,ae),de===null?V=me:de.sibling=me,de=me);return e&&X.forEach(function(Vy){return t(y,Vy)}),oe&&Qt(y,ae),V}function Ee(y,h,g,O){if(typeof g=="object"&&g!==null&&g.type===ee&&g.key===null&&(g=g.props.children),typeof g=="object"&&g!==null){switch(g.$$typeof){case ye:e:{for(var V=g.key;h!==null;){if(h.key===V){if(V=g.type,V===ee){if(h.tag===7){l(y,h.sibling),O=n(h,g.props.children),O.return=y,y=O;break e}}else if(h.elementType===V||typeof V=="object"&&V!==null&&V.$$typeof===ne&&Gl(V)===h.type){l(y,h.sibling),O=n(h,g.props),Pa(O,g),O.return=y,y=O;break e}l(y,h);break}else t(y,h);h=h.sibling}g.type===ee?(O=Rl(g.props.children,y.mode,O,g.key),O.return=y,y=O):(O=In(g.type,g.key,g.props,null,y.mode,O),Pa(O,g),O.return=y,y=O)}return i(y);case w:e:{for(V=g.key;h!==null;){if(h.key===V)if(h.tag===4&&h.stateNode.containerInfo===g.containerInfo&&h.stateNode.implementation===g.implementation){l(y,h.sibling),O=n(h,g.children||[]),O.return=y,y=O;break e}else{l(y,h);break}else t(y,h);h=h.sibling}O=Li(g,y.mode,O),O.return=y,y=O}return i(y);case ne:return g=Gl(g),Ee(y,h,g,O)}if(k(g))return Q(y,h,g,O);if(He(g)){if(V=He(g),typeof V!="function")throw Error(r(150));return g=V.call(g),W(y,h,g,O)}if(typeof g.then=="function")return Ee(y,h,uu(g),O);if(g.$$typeof===Te)return Ee(y,h,tu(y,g),O);iu(y,g)}return typeof g=="string"&&g!==""||typeof g=="number"||typeof g=="bigint"?(g=""+g,h!==null&&h.tag===6?(l(y,h.sibling),O=n(h,g),O.return=y,y=O):(l(y,h),O=Bi(g,y.mode,O),O.return=y,y=O),i(y)):l(y,h)}return function(y,h,g,O){try{Ia=0;var V=Ee(y,h,g,O);return va=null,V}catch(X){if(X===ya||X===au)throw X;var de=ht(29,X,null,y.mode);return de.lanes=O,de.return=y,de}finally{}}}var Ql=er(!0),tr=er(!1),fl=!1;function Wi(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function Fi(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,callbacks:null})}function rl(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function ol(e,t,l){var a=e.updateQueue;if(a===null)return null;if(a=a.shared,(he&2)!==0){var n=a.pending;return n===null?t.next=t:(t.next=n.next,n.next=t),a.pending=t,t=Fn(e),Lf(e,null,l),t}return Wn(e,a,t,l),Fn(e)}function en(e,t,l){if(t=t.updateQueue,t!==null&&(t=t.shared,(l&4194048)!==0)){var a=t.lanes;a&=e.pendingLanes,l|=a,t.lanes=l,Vs(e,l)}}function Ii(e,t){var l=e.updateQueue,a=e.alternate;if(a!==null&&(a=a.updateQueue,l===a)){var n=null,u=null;if(l=l.firstBaseUpdate,l!==null){do{var i={lane:l.lane,tag:l.tag,payload:l.payload,callback:null,next:null};u===null?n=u=i:u=u.next=i,l=l.next}while(l!==null);u===null?n=u=t:u=u.next=t}else n=u=t;l={baseState:a.baseState,firstBaseUpdate:n,lastBaseUpdate:u,shared:a.shared,callbacks:a.callbacks},e.updateQueue=l;return}e=l.lastBaseUpdate,e===null?l.firstBaseUpdate=t:e.next=t,l.lastBaseUpdate=t}var Pi=!1;function tn(){if(Pi){var e=ha;if(e!==null)throw e}}function ln(e,t,l,a){Pi=!1;var n=e.updateQueue;fl=!1;var u=n.firstBaseUpdate,i=n.lastBaseUpdate,s=n.shared.pending;if(s!==null){n.shared.pending=null;var m=s,p=m.next;m.next=null,i===null?u=p:i.next=p,i=m;var N=e.alternate;N!==null&&(N=N.updateQueue,s=N.lastBaseUpdate,s!==i&&(s===null?N.firstBaseUpdate=p:s.next=p,N.lastBaseUpdate=m))}if(u!==null){var M=n.baseState;i=0,N=p=m=null,s=u;do{var _=s.lane&-536870913,j=_!==s.lane;if(j?(fe&_)===_:(a&_)===_){_!==0&&_===ma&&(Pi=!0),N!==null&&(N=N.next={lane:0,tag:s.tag,payload:s.payload,callback:null,next:null});e:{var Q=e,W=s;_=t;var Ee=l;switch(W.tag){case 1:if(Q=W.payload,typeof Q=="function"){M=Q.call(Ee,M,_);break e}M=Q;break e;case 3:Q.flags=Q.flags&-65537|128;case 0:if(Q=W.payload,_=typeof Q=="function"?Q.call(Ee,M,_):Q,_==null)break e;M=B({},M,_);break e;case 2:fl=!0}}_=s.callback,_!==null&&(e.flags|=64,j&&(e.flags|=8192),j=n.callbacks,j===null?n.callbacks=[_]:j.push(_))}else j={lane:_,tag:s.tag,payload:s.payload,callback:s.callback,next:null},N===null?(p=N=j,m=M):N=N.next=j,i|=_;if(s=s.next,s===null){if(s=n.shared.pending,s===null)break;j=s,s=j.next,j.next=null,n.lastBaseUpdate=j,n.shared.pending=null}}while(!0);N===null&&(m=M),n.baseState=m,n.firstBaseUpdate=p,n.lastBaseUpdate=N,u===null&&(n.shared.lanes=0),vl|=i,e.lanes=i,e.memoizedState=M}}function lr(e,t){if(typeof e!="function")throw Error(r(191,e));e.call(t)}function ar(e,t){var l=e.callbacks;if(l!==null)for(e.callbacks=null,e=0;eu?u:8;var i=S.T,s={};S.T=s,bc(e,!1,t,l);try{var m=n(),p=S.S;if(p!==null&&p(s,m),m!==null&&typeof m=="object"&&typeof m.then=="function"){var N=Rh(m,a);un(e,t,N,pt(e))}else un(e,t,a,pt(e))}catch(M){un(e,t,{then:function(){},status:"rejected",reason:M},pt())}finally{T.p=u,i!==null&&s.types!==null&&(i.types=s.types),S.T=i}}function Yh(){}function vc(e,t,l,a){if(e.tag!==5)throw Error(r(476));var n=qr(e).queue;Rr(e,n,t,U,l===null?Yh:function(){return Hr(e),l(a)})}function qr(e){var t=e.memoizedState;if(t!==null)return t;t={memoizedState:U,baseState:U,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Vt,lastRenderedState:U},next:null};var l={};return t.next={memoizedState:l,baseState:l,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Vt,lastRenderedState:l},next:null},e.memoizedState=t,e=e.alternate,e!==null&&(e.memoizedState=t),t}function Hr(e){var t=qr(e);t.next===null&&(t=e.alternate.memoizedState),un(e,t.next.queue,{},pt())}function gc(){return We(An)}function Br(){return Le().memoizedState}function Lr(){return Le().memoizedState}function Qh(e){for(var t=e.return;t!==null;){switch(t.tag){case 24:case 3:var l=pt();e=rl(l);var a=ol(t,e,l);a!==null&&(ft(a,t,l),en(a,t,l)),t={cache:Ki()},e.payload=t;return}t=t.return}}function Xh(e,t,l){var a=pt();l={lane:a,revertLane:0,gesture:null,action:l,hasEagerState:!1,eagerState:null,next:null},vu(e)?Yr(t,l):(l=qi(e,t,l,a),l!==null&&(ft(l,e,a),Qr(l,t,a)))}function Gr(e,t,l){var a=pt();un(e,t,l,a)}function un(e,t,l,a){var n={lane:a,revertLane:0,gesture:null,action:l,hasEagerState:!1,eagerState:null,next:null};if(vu(e))Yr(t,n);else{var u=e.alternate;if(e.lanes===0&&(u===null||u.lanes===0)&&(u=t.lastRenderedReducer,u!==null))try{var i=t.lastRenderedState,s=u(i,l);if(n.hasEagerState=!0,n.eagerState=s,mt(s,i))return Wn(e,t,n,0),ze===null&&$n(),!1}catch{}finally{}if(l=qi(e,t,n,a),l!==null)return ft(l,e,a),Qr(l,t,a),!0}return!1}function bc(e,t,l,a){if(a={lane:2,revertLane:Wc(),gesture:null,action:a,hasEagerState:!1,eagerState:null,next:null},vu(e)){if(t)throw Error(r(479))}else t=qi(e,l,a,2),t!==null&&ft(t,e,2)}function vu(e){var t=e.alternate;return e===le||t!==null&&t===le}function Yr(e,t){ba=fu=!0;var l=e.pending;l===null?t.next=t:(t.next=l.next,l.next=t),e.pending=t}function Qr(e,t,l){if((l&4194048)!==0){var a=t.lanes;a&=e.pendingLanes,l|=a,t.lanes=l,Vs(e,l)}}var cn={readContext:We,use:du,useCallback:Ce,useContext:Ce,useEffect:Ce,useImperativeHandle:Ce,useLayoutEffect:Ce,useInsertionEffect:Ce,useMemo:Ce,useReducer:Ce,useRef:Ce,useState:Ce,useDebugValue:Ce,useDeferredValue:Ce,useTransition:Ce,useSyncExternalStore:Ce,useId:Ce,useHostTransitionStatus:Ce,useFormState:Ce,useActionState:Ce,useOptimistic:Ce,useMemoCache:Ce,useCacheRefresh:Ce};cn.useEffectEvent=Ce;var Xr={readContext:We,use:du,useCallback:function(e,t){return tt().memoizedState=[e,t===void 0?null:t],e},useContext:We,useEffect:zr,useImperativeHandle:function(e,t,l){l=l!=null?l.concat([e]):null,hu(4194308,4,Or.bind(null,t,e),l)},useLayoutEffect:function(e,t){return hu(4194308,4,e,t)},useInsertionEffect:function(e,t){hu(4,2,e,t)},useMemo:function(e,t){var l=tt();t=t===void 0?null:t;var a=e();if(Xl){ll(!0);try{e()}finally{ll(!1)}}return l.memoizedState=[a,t],a},useReducer:function(e,t,l){var a=tt();if(l!==void 0){var n=l(t);if(Xl){ll(!0);try{l(t)}finally{ll(!1)}}}else n=t;return a.memoizedState=a.baseState=n,e={pending:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:n},a.queue=e,e=e.dispatch=Xh.bind(null,le,e),[a.memoizedState,e]},useRef:function(e){var t=tt();return e={current:e},t.memoizedState=e},useState:function(e){e=oc(e);var t=e.queue,l=Gr.bind(null,le,t);return t.dispatch=l,[e.memoizedState,l]},useDebugValue:hc,useDeferredValue:function(e,t){var l=tt();return yc(l,e,t)},useTransition:function(){var e=oc(!1);return e=Rr.bind(null,le,e.queue,!0,!1),tt().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,t,l){var a=le,n=tt();if(oe){if(l===void 0)throw Error(r(407));l=l()}else{if(l=t(),ze===null)throw Error(r(349));(fe&127)!==0||fr(a,t,l)}n.memoizedState=l;var u={value:l,getSnapshot:t};return n.queue=u,zr(or.bind(null,a,u,e),[e]),a.flags|=2048,Sa(9,{destroy:void 0},rr.bind(null,a,u,l,t),null),l},useId:function(){var e=tt(),t=ze.identifierPrefix;if(oe){var l=Rt,a=Ct;l=(a&~(1<<32-dt(a)-1)).toString(32)+l,t="_"+t+"R_"+l,l=ru++,0<\/script>",u=u.removeChild(u.firstChild);break;case"select":u=typeof a.is=="string"?i.createElement("select",{is:a.is}):i.createElement("select"),a.multiple?u.multiple=!0:a.size&&(u.size=a.size);break;default:u=typeof a.is=="string"?i.createElement(n,{is:a.is}):i.createElement(n)}}u[ke]=t,u[at]=a;e:for(i=t.child;i!==null;){if(i.tag===5||i.tag===6)u.appendChild(i.stateNode);else if(i.tag!==4&&i.tag!==27&&i.child!==null){i.child.return=i,i=i.child;continue}if(i===t)break e;for(;i.sibling===null;){if(i.return===null||i.return===t)break e;i=i.return}i.sibling.return=i.return,i=i.sibling}t.stateNode=u;e:switch(Ie(u,n,a),n){case"button":case"input":case"select":case"textarea":a=!!a.autoFocus;break e;case"img":a=!0;break e;default:a=!1}a&&Jt(t)}}return Oe(t),Uc(t,t.type,e===null?null:e.memoizedProps,t.pendingProps,l),null;case 6:if(e&&t.stateNode!=null)e.memoizedProps!==a&&Jt(t);else{if(typeof a!="string"&&t.stateNode===null)throw Error(r(166));if(e=$.current,oa(t)){if(e=t.stateNode,l=t.memoizedProps,a=null,n=$e,n!==null)switch(n.tag){case 27:case 5:a=n.memoizedProps}e[ke]=t,e=!!(e.nodeValue===l||a!==null&&a.suppressHydrationWarning===!0||sd(e.nodeValue,l)),e||cl(t,!0)}else e=Hu(e).createTextNode(a),e[ke]=t,t.stateNode=e}return Oe(t),null;case 31:if(l=t.memoizedState,e===null||e.memoizedState!==null){if(a=oa(t),l!==null){if(e===null){if(!a)throw Error(r(318));if(e=t.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error(r(557));e[ke]=t}else ql(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;Oe(t),e=!1}else l=Xi(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=l),e=!0;if(!e)return t.flags&256?(vt(t),t):(vt(t),null);if((t.flags&128)!==0)throw Error(r(558))}return Oe(t),null;case 13:if(a=t.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(n=oa(t),a!==null&&a.dehydrated!==null){if(e===null){if(!n)throw Error(r(318));if(n=t.memoizedState,n=n!==null?n.dehydrated:null,!n)throw Error(r(317));n[ke]=t}else ql(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;Oe(t),n=!1}else n=Xi(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=n),n=!0;if(!n)return t.flags&256?(vt(t),t):(vt(t),null)}return vt(t),(t.flags&128)!==0?(t.lanes=l,t):(l=a!==null,e=e!==null&&e.memoizedState!==null,l&&(a=t.child,n=null,a.alternate!==null&&a.alternate.memoizedState!==null&&a.alternate.memoizedState.cachePool!==null&&(n=a.alternate.memoizedState.cachePool.pool),u=null,a.memoizedState!==null&&a.memoizedState.cachePool!==null&&(u=a.memoizedState.cachePool.pool),u!==n&&(a.flags|=2048)),l!==e&&l&&(t.child.flags|=8192),_u(t,t.updateQueue),Oe(t),null);case 4:return je(),e===null&&es(t.stateNode.containerInfo),Oe(t),null;case 10:return wt(t.type),Oe(t),null;case 19:if(A(Be),a=t.memoizedState,a===null)return Oe(t),null;if(n=(t.flags&128)!==0,u=a.rendering,u===null)if(n)fn(a,!1);else{if(Re!==0||e!==null&&(e.flags&128)!==0)for(e=t.child;e!==null;){if(u=su(e),u!==null){for(t.flags|=128,fn(a,!1),e=u.updateQueue,t.updateQueue=e,_u(t,e),t.subtreeFlags=0,e=l,l=t.child;l!==null;)Gf(l,e),l=l.sibling;return C(Be,Be.current&1|2),oe&&Qt(t,a.treeForkCount),t.child}e=e.sibling}a.tail!==null&&rt()>Nu&&(t.flags|=128,n=!0,fn(a,!1),t.lanes=4194304)}else{if(!n)if(e=su(u),e!==null){if(t.flags|=128,n=!0,e=e.updateQueue,t.updateQueue=e,_u(t,e),fn(a,!0),a.tail===null&&a.tailMode==="hidden"&&!u.alternate&&!oe)return Oe(t),null}else 2*rt()-a.renderingStartTime>Nu&&l!==536870912&&(t.flags|=128,n=!0,fn(a,!1),t.lanes=4194304);a.isBackwards?(u.sibling=t.child,t.child=u):(e=a.last,e!==null?e.sibling=u:t.child=u,a.last=u)}return a.tail!==null?(e=a.tail,a.rendering=e,a.tail=e.sibling,a.renderingStartTime=rt(),e.sibling=null,l=Be.current,C(Be,n?l&1|2:l&1),oe&&Qt(t,a.treeForkCount),e):(Oe(t),null);case 22:case 23:return vt(t),tc(),a=t.memoizedState!==null,e!==null?e.memoizedState!==null!==a&&(t.flags|=8192):a&&(t.flags|=8192),a?(l&536870912)!==0&&(t.flags&128)===0&&(Oe(t),t.subtreeFlags&6&&(t.flags|=8192)):Oe(t),l=t.updateQueue,l!==null&&_u(t,l.retryQueue),l=null,e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(l=e.memoizedState.cachePool.pool),a=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(a=t.memoizedState.cachePool.pool),a!==l&&(t.flags|=2048),e!==null&&A(Ll),null;case 24:return l=null,e!==null&&(l=e.memoizedState.cache),t.memoizedState.cache!==l&&(t.flags|=2048),wt(Ge),Oe(t),null;case 25:return null;case 30:return null}throw Error(r(156,t.tag))}function Jh(e,t){switch(Yi(t),t.tag){case 1:return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return wt(Ge),je(),e=t.flags,(e&65536)!==0&&(e&128)===0?(t.flags=e&-65537|128,t):null;case 26:case 27:case 5:return tl(t),null;case 31:if(t.memoizedState!==null){if(vt(t),t.alternate===null)throw Error(r(340));ql()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 13:if(vt(t),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(r(340));ql()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return A(Be),null;case 4:return je(),null;case 10:return wt(t.type),null;case 22:case 23:return vt(t),tc(),e!==null&&A(Ll),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 24:return wt(Ge),null;case 25:return null;default:return null}}function mo(e,t){switch(Yi(t),t.tag){case 3:wt(Ge),je();break;case 26:case 27:case 5:tl(t);break;case 4:je();break;case 31:t.memoizedState!==null&&vt(t);break;case 13:vt(t);break;case 19:A(Be);break;case 10:wt(t.type);break;case 22:case 23:vt(t),tc(),e!==null&&A(Ll);break;case 24:wt(Ge)}}function rn(e,t){try{var l=t.updateQueue,a=l!==null?l.lastEffect:null;if(a!==null){var n=a.next;l=n;do{if((l.tag&e)===e){a=void 0;var u=l.create,i=l.inst;a=u(),i.destroy=a}l=l.next}while(l!==n)}}catch(s){be(t,t.return,s)}}function hl(e,t,l){try{var a=t.updateQueue,n=a!==null?a.lastEffect:null;if(n!==null){var u=n.next;a=u;do{if((a.tag&e)===e){var i=a.inst,s=i.destroy;if(s!==void 0){i.destroy=void 0,n=t;var m=l,p=s;try{p()}catch(N){be(n,m,N)}}}a=a.next}while(a!==u)}}catch(N){be(t,t.return,N)}}function ho(e){var t=e.updateQueue;if(t!==null){var l=e.stateNode;try{ar(t,l)}catch(a){be(e,e.return,a)}}}function yo(e,t,l){l.props=wl(e.type,e.memoizedProps),l.state=e.memoizedState;try{l.componentWillUnmount()}catch(a){be(e,t,a)}}function on(e,t){try{var l=e.ref;if(l!==null){switch(e.tag){case 26:case 27:case 5:var a=e.stateNode;break;case 30:a=e.stateNode;break;default:a=e.stateNode}typeof l=="function"?e.refCleanup=l(a):l.current=a}}catch(n){be(e,t,n)}}function qt(e,t){var l=e.ref,a=e.refCleanup;if(l!==null)if(typeof a=="function")try{a()}catch(n){be(e,t,n)}finally{e.refCleanup=null,e=e.alternate,e!=null&&(e.refCleanup=null)}else if(typeof l=="function")try{l(null)}catch(n){be(e,t,n)}else l.current=null}function vo(e){var t=e.type,l=e.memoizedProps,a=e.stateNode;try{e:switch(t){case"button":case"input":case"select":case"textarea":l.autoFocus&&a.focus();break e;case"img":l.src?a.src=l.src:l.srcSet&&(a.srcset=l.srcSet)}}catch(n){be(e,e.return,n)}}function Cc(e,t,l){try{var a=e.stateNode;yy(a,e.type,l,t),a[at]=t}catch(n){be(e,e.return,n)}}function go(e){return e.tag===5||e.tag===3||e.tag===26||e.tag===27&&_l(e.type)||e.tag===4}function Rc(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||go(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.tag===27&&_l(e.type)||e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function qc(e,t,l){var a=e.tag;if(a===5||a===6)e=e.stateNode,t?(l.nodeType===9?l.body:l.nodeName==="HTML"?l.ownerDocument.body:l).insertBefore(e,t):(t=l.nodeType===9?l.body:l.nodeName==="HTML"?l.ownerDocument.body:l,t.appendChild(e),l=l._reactRootContainer,l!=null||t.onclick!==null||(t.onclick=Lt));else if(a!==4&&(a===27&&_l(e.type)&&(l=e.stateNode,t=null),e=e.child,e!==null))for(qc(e,t,l),e=e.sibling;e!==null;)qc(e,t,l),e=e.sibling}function Eu(e,t,l){var a=e.tag;if(a===5||a===6)e=e.stateNode,t?l.insertBefore(e,t):l.appendChild(e);else if(a!==4&&(a===27&&_l(e.type)&&(l=e.stateNode),e=e.child,e!==null))for(Eu(e,t,l),e=e.sibling;e!==null;)Eu(e,t,l),e=e.sibling}function bo(e){var t=e.stateNode,l=e.memoizedProps;try{for(var a=e.type,n=t.attributes;n.length;)t.removeAttributeNode(n[0]);Ie(t,a,l),t[ke]=e,t[at]=l}catch(u){be(e,e.return,u)}}var kt=!1,Xe=!1,Hc=!1,po=typeof WeakSet=="function"?WeakSet:Set,Ve=null;function kh(e,t){if(e=e.containerInfo,as=wu,e=Df(e),Oi(e)){if("selectionStart"in e)var l={start:e.selectionStart,end:e.selectionEnd};else e:{l=(l=e.ownerDocument)&&l.defaultView||window;var a=l.getSelection&&l.getSelection();if(a&&a.rangeCount!==0){l=a.anchorNode;var n=a.anchorOffset,u=a.focusNode;a=a.focusOffset;try{l.nodeType,u.nodeType}catch{l=null;break e}var i=0,s=-1,m=-1,p=0,N=0,M=e,_=null;t:for(;;){for(var j;M!==l||n!==0&&M.nodeType!==3||(s=i+n),M!==u||a!==0&&M.nodeType!==3||(m=i+a),M.nodeType===3&&(i+=M.nodeValue.length),(j=M.firstChild)!==null;)_=M,M=j;for(;;){if(M===e)break t;if(_===l&&++p===n&&(s=i),_===u&&++N===a&&(m=i),(j=M.nextSibling)!==null)break;M=_,_=M.parentNode}M=j}l=s===-1||m===-1?null:{start:s,end:m}}else l=null}l=l||{start:0,end:0}}else l=null;for(ns={focusedElem:e,selectionRange:l},wu=!1,Ve=t;Ve!==null;)if(t=Ve,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,Ve=e;else for(;Ve!==null;){switch(t=Ve,u=t.alternate,e=t.flags,t.tag){case 0:if((e&4)!==0&&(e=t.updateQueue,e=e!==null?e.events:null,e!==null))for(l=0;l title"))),Ie(u,a,l),u[ke]=e,Ze(u),a=u;break e;case"link":var i=zd("link","href",n).get(a+(l.href||""));if(i){for(var s=0;sEe&&(i=Ee,Ee=W,W=i);var y=xf(s,W),h=xf(s,Ee);if(y&&h&&(j.rangeCount!==1||j.anchorNode!==y.node||j.anchorOffset!==y.offset||j.focusNode!==h.node||j.focusOffset!==h.offset)){var g=M.createRange();g.setStart(y.node,y.offset),j.removeAllRanges(),W>Ee?(j.addRange(g),j.extend(h.node,h.offset)):(g.setEnd(h.node,h.offset),j.addRange(g))}}}}for(M=[],j=s;j=j.parentNode;)j.nodeType===1&&M.push({element:j,left:j.scrollLeft,top:j.scrollTop});for(typeof s.focus=="function"&&s.focus(),s=0;sl?32:l,S.T=null,l=wc,wc=null;var u=bl,i=Pt;if(we=0,za=bl=null,Pt=0,(he&6)!==0)throw Error(r(331));var s=he;if(he|=4,Do(u.current),To(u,u.current,i,l),he=s,gn(0,!1),ot&&typeof ot.onPostCommitFiberRoot=="function")try{ot.onPostCommitFiberRoot(Ra,u)}catch{}return!0}finally{T.p=n,S.T=a,ko(e,t)}}function Wo(e,t,l){t=At(l,t),t=Ec(e.stateNode,t,2),e=ol(e,t,2),e!==null&&(Ha(e,2),Ht(e))}function be(e,t,l){if(e.tag===3)Wo(e,e,l);else for(;t!==null;){if(t.tag===3){Wo(t,e,l);break}else if(t.tag===1){var a=t.stateNode;if(typeof t.type.getDerivedStateFromError=="function"||typeof a.componentDidCatch=="function"&&(gl===null||!gl.has(a))){e=At(l,e),l=Wr(2),a=ol(t,l,2),a!==null&&(Fr(l,a,t,e),Ha(a,2),Ht(a));break}}t=t.return}}function Jc(e,t,l){var a=e.pingCache;if(a===null){a=e.pingCache=new Fh;var n=new Set;a.set(t,n)}else n=a.get(t),n===void 0&&(n=new Set,a.set(t,n));n.has(l)||(Gc=!0,n.add(l),e=ly.bind(null,e,t,l),t.then(e,e))}function ly(e,t,l){var a=e.pingCache;a!==null&&a.delete(t),e.pingedLanes|=e.suspendedLanes&l,e.warmLanes&=~l,ze===e&&(fe&l)===l&&(Re===4||Re===3&&(fe&62914560)===fe&&300>rt()-zu?(he&2)===0&&Na(e,0):Yc|=l,ja===fe&&(ja=0)),Ht(e)}function Fo(e,t){t===0&&(t=ws()),e=Cl(e,t),e!==null&&(Ha(e,t),Ht(e))}function ay(e){var t=e.memoizedState,l=0;t!==null&&(l=t.retryLane),Fo(e,l)}function ny(e,t){var l=0;switch(e.tag){case 31:case 13:var a=e.stateNode,n=e.memoizedState;n!==null&&(l=n.retryLane);break;case 19:a=e.stateNode;break;case 22:a=e.stateNode._retryCache;break;default:throw Error(r(314))}a!==null&&a.delete(t),Fo(e,l)}function uy(e,t){return ii(e,t)}var Uu=null,xa=null,kc=!1,Cu=!1,$c=!1,Sl=0;function Ht(e){e!==xa&&e.next===null&&(xa===null?Uu=xa=e:xa=xa.next=e),Cu=!0,kc||(kc=!0,cy())}function gn(e,t){if(!$c&&Cu){$c=!0;do for(var l=!1,a=Uu;a!==null;){if(e!==0){var n=a.pendingLanes;if(n===0)var u=0;else{var i=a.suspendedLanes,s=a.pingedLanes;u=(1<<31-dt(42|e)+1)-1,u&=n&~(i&~s),u=u&201326741?u&201326741|1:u?u|2:0}u!==0&&(l=!0,td(a,u))}else u=fe,u=Bn(a,a===ze?u:0,a.cancelPendingCommit!==null||a.timeoutHandle!==-1),(u&3)===0||qa(a,u)||(l=!0,td(a,u));a=a.next}while(l);$c=!1}}function iy(){Io()}function Io(){Cu=kc=!1;var e=0;Sl!==0&&gy()&&(e=Sl);for(var t=rt(),l=null,a=Uu;a!==null;){var n=a.next,u=Po(a,t);u===0?(a.next=null,l===null?Uu=n:l.next=n,n===null&&(xa=l)):(l=a,(e!==0||(u&3)!==0)&&(Cu=!0)),a=n}we!==0&&we!==5||gn(e),Sl!==0&&(Sl=0)}function Po(e,t){for(var l=e.suspendedLanes,a=e.pingedLanes,n=e.expirationTimes,u=e.pendingLanes&-62914561;0s)break;var N=m.transferSize,M=m.initiatorType;N&&fd(M)&&(m=m.responseEnd,i+=N*(m"u"?null:document;function _d(e,t,l){var a=Oa;if(a&&typeof t=="string"&&t){var n=_t(t);n='link[rel="'+e+'"][href="'+n+'"]',typeof l=="string"&&(n+='[crossorigin="'+l+'"]'),Sd.has(n)||(Sd.add(n),e={rel:e,crossOrigin:l,href:t},a.querySelector(n)===null&&(t=a.createElement("link"),Ie(t,"link",e),Ze(t),a.head.appendChild(t)))}}function Ny(e){el.D(e),_d("dns-prefetch",e,null)}function Ty(e,t){el.C(e,t),_d("preconnect",e,t)}function xy(e,t,l){el.L(e,t,l);var a=Oa;if(a&&e&&t){var n='link[rel="preload"][as="'+_t(t)+'"]';t==="image"&&l&&l.imageSrcSet?(n+='[imagesrcset="'+_t(l.imageSrcSet)+'"]',typeof l.imageSizes=="string"&&(n+='[imagesizes="'+_t(l.imageSizes)+'"]')):n+='[href="'+_t(e)+'"]';var u=n;switch(t){case"style":u=Da(e);break;case"script":u=Ma(e)}Ot.has(u)||(e=B({rel:"preload",href:t==="image"&&l&&l.imageSrcSet?void 0:e,as:t},l),Ot.set(u,e),a.querySelector(n)!==null||t==="style"&&a.querySelector(_n(u))||t==="script"&&a.querySelector(En(u))||(t=a.createElement("link"),Ie(t,"link",e),Ze(t),a.head.appendChild(t)))}}function Oy(e,t){el.m(e,t);var l=Oa;if(l&&e){var a=t&&typeof t.as=="string"?t.as:"script",n='link[rel="modulepreload"][as="'+_t(a)+'"][href="'+_t(e)+'"]',u=n;switch(a){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":u=Ma(e)}if(!Ot.has(u)&&(e=B({rel:"modulepreload",href:e},t),Ot.set(u,e),l.querySelector(n)===null)){switch(a){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(l.querySelector(En(u)))return}a=l.createElement("link"),Ie(a,"link",e),Ze(a),l.head.appendChild(a)}}}function Dy(e,t,l){el.S(e,t,l);var a=Oa;if(a&&e){var n=Il(a).hoistableStyles,u=Da(e);t=t||"default";var i=n.get(u);if(!i){var s={loading:0,preload:null};if(i=a.querySelector(_n(u)))s.loading=5;else{e=B({rel:"stylesheet",href:e,"data-precedence":t},l),(l=Ot.get(u))&&os(e,l);var m=i=a.createElement("link");Ze(m),Ie(m,"link",e),m._p=new Promise(function(p,N){m.onload=p,m.onerror=N}),m.addEventListener("load",function(){s.loading|=1}),m.addEventListener("error",function(){s.loading|=2}),s.loading|=4,Lu(i,t,a)}i={type:"stylesheet",instance:i,count:1,state:s},n.set(u,i)}}}function My(e,t){el.X(e,t);var l=Oa;if(l&&e){var a=Il(l).hoistableScripts,n=Ma(e),u=a.get(n);u||(u=l.querySelector(En(n)),u||(e=B({src:e,async:!0},t),(t=Ot.get(n))&&ds(e,t),u=l.createElement("script"),Ze(u),Ie(u,"link",e),l.head.appendChild(u)),u={type:"script",instance:u,count:1,state:null},a.set(n,u))}}function Uy(e,t){el.M(e,t);var l=Oa;if(l&&e){var a=Il(l).hoistableScripts,n=Ma(e),u=a.get(n);u||(u=l.querySelector(En(n)),u||(e=B({src:e,async:!0,type:"module"},t),(t=Ot.get(n))&&ds(e,t),u=l.createElement("script"),Ze(u),Ie(u,"link",e),l.head.appendChild(u)),u={type:"script",instance:u,count:1,state:null},a.set(n,u))}}function Ed(e,t,l,a){var n=(n=$.current)?Bu(n):null;if(!n)throw Error(r(446));switch(e){case"meta":case"title":return null;case"style":return typeof l.precedence=="string"&&typeof l.href=="string"?(t=Da(l.href),l=Il(n).hoistableStyles,a=l.get(t),a||(a={type:"style",instance:null,count:0,state:null},l.set(t,a)),a):{type:"void",instance:null,count:0,state:null};case"link":if(l.rel==="stylesheet"&&typeof l.href=="string"&&typeof l.precedence=="string"){e=Da(l.href);var u=Il(n).hoistableStyles,i=u.get(e);if(i||(n=n.ownerDocument||n,i={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},u.set(e,i),(u=n.querySelector(_n(e)))&&!u._p&&(i.instance=u,i.state.loading=5),Ot.has(e)||(l={rel:"preload",as:"style",href:l.href,crossOrigin:l.crossOrigin,integrity:l.integrity,media:l.media,hrefLang:l.hrefLang,referrerPolicy:l.referrerPolicy},Ot.set(e,l),u||Cy(n,e,l,i.state))),t&&a===null)throw Error(r(528,""));return i}if(t&&a!==null)throw Error(r(529,""));return null;case"script":return t=l.async,l=l.src,typeof l=="string"&&t&&typeof t!="function"&&typeof t!="symbol"?(t=Ma(l),l=Il(n).hoistableScripts,a=l.get(t),a||(a={type:"script",instance:null,count:0,state:null},l.set(t,a)),a):{type:"void",instance:null,count:0,state:null};default:throw Error(r(444,e))}}function Da(e){return'href="'+_t(e)+'"'}function _n(e){return'link[rel="stylesheet"]['+e+"]"}function Ad(e){return B({},e,{"data-precedence":e.precedence,precedence:null})}function Cy(e,t,l,a){e.querySelector('link[rel="preload"][as="style"]['+t+"]")?a.loading=1:(t=e.createElement("link"),a.preload=t,t.addEventListener("load",function(){return a.loading|=1}),t.addEventListener("error",function(){return a.loading|=2}),Ie(t,"link",l),Ze(t),e.head.appendChild(t))}function Ma(e){return'[src="'+_t(e)+'"]'}function En(e){return"script[async]"+e}function jd(e,t,l){if(t.count++,t.instance===null)switch(t.type){case"style":var a=e.querySelector('style[data-href~="'+_t(l.href)+'"]');if(a)return t.instance=a,Ze(a),a;var n=B({},l,{"data-href":l.href,"data-precedence":l.precedence,href:null,precedence:null});return a=(e.ownerDocument||e).createElement("style"),Ze(a),Ie(a,"style",n),Lu(a,l.precedence,e),t.instance=a;case"stylesheet":n=Da(l.href);var u=e.querySelector(_n(n));if(u)return t.state.loading|=4,t.instance=u,Ze(u),u;a=Ad(l),(n=Ot.get(n))&&os(a,n),u=(e.ownerDocument||e).createElement("link"),Ze(u);var i=u;return i._p=new Promise(function(s,m){i.onload=s,i.onerror=m}),Ie(u,"link",a),t.state.loading|=4,Lu(u,l.precedence,e),t.instance=u;case"script":return u=Ma(l.src),(n=e.querySelector(En(u)))?(t.instance=n,Ze(n),n):(a=l,(n=Ot.get(u))&&(a=B({},l),ds(a,n)),e=e.ownerDocument||e,n=e.createElement("script"),Ze(n),Ie(n,"link",a),e.head.appendChild(n),t.instance=n);case"void":return null;default:throw Error(r(443,t.type))}else t.type==="stylesheet"&&(t.state.loading&4)===0&&(a=t.instance,t.state.loading|=4,Lu(a,l.precedence,e));return t.instance}function Lu(e,t,l){for(var a=l.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),n=a.length?a[a.length-1]:null,u=n,i=0;i title"):null)}function Ry(e,t,l){if(l===1||t.itemProp!=null)return!1;switch(e){case"meta":case"title":return!0;case"style":if(typeof t.precedence!="string"||typeof t.href!="string"||t.href==="")break;return!0;case"link":if(typeof t.rel!="string"||typeof t.href!="string"||t.href===""||t.onLoad||t.onError)break;switch(t.rel){case"stylesheet":return e=t.disabled,typeof t.precedence=="string"&&e==null;default:return!0}case"script":if(t.async&&typeof t.async!="function"&&typeof t.async!="symbol"&&!t.onLoad&&!t.onError&&t.src&&typeof t.src=="string")return!0}return!1}function Td(e){return!(e.type==="stylesheet"&&(e.state.loading&3)===0)}function qy(e,t,l,a){if(l.type==="stylesheet"&&(typeof a.media!="string"||matchMedia(a.media).matches!==!1)&&(l.state.loading&4)===0){if(l.instance===null){var n=Da(a.href),u=t.querySelector(_n(n));if(u){t=u._p,t!==null&&typeof t=="object"&&typeof t.then=="function"&&(e.count++,e=Yu.bind(e),t.then(e,e)),l.state.loading|=4,l.instance=u,Ze(u);return}u=t.ownerDocument||t,a=Ad(a),(n=Ot.get(n))&&os(a,n),u=u.createElement("link"),Ze(u);var i=u;i._p=new Promise(function(s,m){i.onload=s,i.onerror=m}),Ie(u,"link",a),l.instance=u}e.stylesheets===null&&(e.stylesheets=new Map),e.stylesheets.set(l,t),(t=l.state.preload)&&(l.state.loading&3)===0&&(e.count++,l=Yu.bind(e),t.addEventListener("load",l),t.addEventListener("error",l))}}var ms=0;function Hy(e,t){return e.stylesheets&&e.count===0&&Xu(e,e.stylesheets),0ms?50:800)+t);return e.unsuspend=l,function(){e.unsuspend=null,clearTimeout(a),clearTimeout(n)}}:null}function Yu(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)Xu(this,this.stylesheets);else if(this.unsuspend){var e=this.unsuspend;this.unsuspend=null,e()}}}var Qu=null;function Xu(e,t){e.stylesheets=null,e.unsuspend!==null&&(e.count++,Qu=new Map,t.forEach(By,e),Qu=null,Yu.call(e))}function By(e,t){if(!(t.state.loading&4)){var l=Qu.get(e);if(l)var a=l.get(null);else{l=new Map,Qu.set(e,l);for(var n=e.querySelectorAll("link[data-precedence],style[data-precedence]"),u=0;u"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(f)}catch(d){console.error(d)}}return f(),Es.exports=Py(),Es.exports}var tv=ev();/** + * @license lucide-react v0.575.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const im=(...f)=>f.filter((d,v,r)=>!!d&&d.trim()!==""&&r.indexOf(d)===v).join(" ").trim();/** + * @license lucide-react v0.575.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const lv=f=>f.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase();/** + * @license lucide-react v0.575.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const av=f=>f.replace(/^([A-Z])|[\s-_]+(\w)/g,(d,v,r)=>r?r.toUpperCase():v.toLowerCase());/** + * @license lucide-react v0.575.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Fd=f=>{const d=av(f);return d.charAt(0).toUpperCase()+d.slice(1)};/** + * @license lucide-react v0.575.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */var nv={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};/** + * @license lucide-react v0.575.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const uv=f=>{for(const d in f)if(d.startsWith("aria-")||d==="role"||d==="title")return!0;return!1};/** + * @license lucide-react v0.575.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const iv=H.forwardRef(({color:f="currentColor",size:d=24,strokeWidth:v=2,absoluteStrokeWidth:r,className:x="",children:z,iconNode:q,...K},R)=>H.createElement("svg",{ref:R,...nv,width:d,height:d,stroke:f,strokeWidth:r?Number(v)*24/Number(d):v,className:im("lucide",x),...!z&&!uv(K)&&{"aria-hidden":"true"},...K},[...q.map(([E,G])=>H.createElement(E,G)),...Array.isArray(z)?z:[z]]));/** + * @license lucide-react v0.575.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Ke=(f,d)=>{const v=H.forwardRef(({className:r,...x},z)=>H.createElement(iv,{ref:z,iconNode:d,className:im(`lucide-${lv(Fd(f))}`,`lucide-${f}`,r),...x}));return v.displayName=Fd(f),v};/** + * @license lucide-react v0.575.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const cv=[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]],sv=Ke("arrow-left",cv);/** + * @license lucide-react v0.575.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const fv=[["path",{d:"M7 7h10v10",key:"1tivn9"}],["path",{d:"M7 17 17 7",key:"1vkiza"}]],Un=Ke("arrow-up-right",fv);/** + * @license lucide-react v0.575.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const rv=[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]],ov=Ke("chevron-left",rv);/** + * @license lucide-react v0.575.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const dv=[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]],cm=Ke("chevron-right",dv);/** + * @license lucide-react v0.575.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const mv=[["path",{d:"M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8",key:"5wwlr5"}],["path",{d:"M3 10a2 2 0 0 1 .709-1.528l7-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z",key:"r6nss1"}]],sm=Ke("house",mv);/** + * @license lucide-react v0.575.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const hv=[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",ry:"2",key:"1m3agn"}],["circle",{cx:"9",cy:"9",r:"2",key:"af1f0g"}],["path",{d:"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21",key:"1xmnt7"}]],yv=Ke("image",hv);/** + * @license lucide-react v0.575.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const vv=[["path",{d:"M9 17H7A5 5 0 0 1 7 7h2",key:"8i5ue5"}],["path",{d:"M15 7h2a5 5 0 1 1 0 10h-2",key:"1b9ql8"}],["line",{x1:"8",x2:"16",y1:"12",y2:"12",key:"1jonct"}]],fm=Ke("link-2",vv);/** + * @license lucide-react v0.575.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const gv=[["circle",{cx:"12",cy:"16",r:"1",key:"1au0dj"}],["rect",{x:"3",y:"10",width:"18",height:"12",rx:"2",key:"6s8ecr"}],["path",{d:"M7 10V7a5 5 0 0 1 10 0v3",key:"1pqi11"}]],bv=Ke("lock-keyhole",gv);/** + * @license lucide-react v0.575.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const pv=[["path",{d:"m16 17 5-5-5-5",key:"1bji2h"}],["path",{d:"M21 12H9",key:"dn1m92"}],["path",{d:"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4",key:"1uf3rs"}]],rm=Ke("log-out",pv);/** + * @license lucide-react v0.575.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Sv=[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]],Id=Ke("plus",Sv);/** + * @license lucide-react v0.575.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const _v=[["path",{d:"M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z",key:"1c8476"}],["path",{d:"M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7",key:"1ydtos"}],["path",{d:"M7 3v4a1 1 0 0 0 1 1h7",key:"t51u73"}]],Ev=Ke("save",_v);/** + * @license lucide-react v0.575.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Av=[["path",{d:"m21 21-4.34-4.34",key:"14j7rj"}],["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}]],Ds=Ke("search",Av);/** + * @license lucide-react v0.575.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const jv=[["path",{d:"M10 5H3",key:"1qgfaw"}],["path",{d:"M12 19H3",key:"yhmn1j"}],["path",{d:"M14 3v4",key:"1sua03"}],["path",{d:"M16 17v4",key:"1q0r14"}],["path",{d:"M21 12h-9",key:"1o4lsq"}],["path",{d:"M21 19h-5",key:"1rlt1p"}],["path",{d:"M21 5h-7",key:"1oszz2"}],["path",{d:"M8 10v4",key:"tgpxqk"}],["path",{d:"M8 12H3",key:"a7s4jb"}]],om=Ke("sliders-horizontal",jv);/** + * @license lucide-react v0.575.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const zv=[["path",{d:"M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z",key:"1s2grr"}],["path",{d:"M20 2v4",key:"1rf3ol"}],["path",{d:"M22 4h-4",key:"gwowj6"}],["circle",{cx:"4",cy:"20",r:"2",key:"6kqj1y"}]],Nv=Ke("sparkles",zv);/** + * @license lucide-react v0.575.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Tv=[["path",{d:"M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z",key:"r04s7s"}]],Hs=Ke("star",Tv);/** + * @license lucide-react v0.575.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const xv=[["path",{d:"M10 11v6",key:"nco0om"}],["path",{d:"M14 11v6",key:"outv1u"}],["path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6",key:"miytrc"}],["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2",key:"e791ji"}]],Iu=Ke("trash-2",xv);/** + * @license lucide-react v0.575.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Ov=[["path",{d:"M12 3v12",key:"1x0j5s"}],["path",{d:"m17 8-5-5-5 5",key:"7q97r8"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}]],Dv=Ke("upload",Ov);/** + * @license lucide-react v0.575.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Mv=[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]],kl=Ke("x",Mv),Uv="2026-07-16T12:00:00.000Z",dm=["Administración","Recursos Humanos","CDC"],Cv=[];function Rv(){return{schemaVersion:1,apps:Cv.map(f=>({...f,keywords:[...f.keywords]})),favoritesByUser:{},recentByUser:{},updatedAt:Uv}}const On="glm-hub:state:v1";function qv(f){if(!f||typeof f!="object")return!1;const d=f;return typeof d.id=="string"&&typeof d.name=="string"&&typeof d.description=="string"&&typeof d.category=="string"&&Array.isArray(d.keywords)&&typeof d.url=="string"&&typeof d.mark=="string"&&typeof d.accent=="string"&&typeof d.iconDataUrl=="string"&&(d.visibility==="published"||d.visibility==="hidden")}function Hv(f){if(!f||typeof f!="object")return!1;const d=f;return d.schemaVersion===1&&Array.isArray(d.apps)&&d.apps.every(qv)&&!!d.favoritesByUser&&typeof d.favoritesByUser=="object"&&!!d.recentByUser&&typeof d.recentByUser=="object"}function Pd(f,d){return Object.fromEntries(Object.entries(f).map(([v,r])=>[v,r.filter(x=>d.has(x))]))}function Bv(f){switch(f){case"Administración":case"Recursos Humanos":case"CDC":return f;case"Recursos":return"Recursos Humanos";case"Clientes":case"Creatividad":return"CDC";case"Operaciones":case"Analítica":default:return"Administración"}}function Lv(f){let d=!1;const v=f.apps.map(r=>{const x=Bv(r.category);return x===r.category?r:(d=!0,{...r,category:x})});return d?{...f,apps:v,updatedAt:new Date().toISOString()}:f}function Gv(f){const d=f.apps.filter(r=>!!r.iconDataUrl.trim());if(d.length===f.apps.length)return f;const v=new Set(d.map(r=>r.id));return{...f,apps:d,favoritesByUser:Pd(f.favoritesByUser,v),recentByUser:Pd(f.recentByUser,v),updatedAt:new Date().toISOString()}}function Yv(){const f=Rv();try{const d=localStorage.getItem(On);if(!d)return localStorage.setItem(On,JSON.stringify(f)),{data:f,warning:""};const v=JSON.parse(d);if(!Hv(v))return localStorage.setItem(`${On}:backup`,d),localStorage.setItem(On,JSON.stringify(f)),{data:f,warning:"Los datos locales no eran válidos. Restauramos el catálogo inicial."};const r=Lv(v),x=Gv(r);return x!==v&&localStorage.setItem(On,JSON.stringify(x)),{data:x,warning:""}}catch{return{data:f,warning:"No pudimos leer los datos guardados. Estás viendo el catálogo inicial."}}}function Ca(f){return f.normalize("NFD").replace(/[\u0300-\u036f]/g,"").toLocaleLowerCase("es-DO").trim()}function Jl(f){if(!f.trim())return null;try{const d=new URL(f.trim()),v=d.protocol==="http:"&&(d.hostname==="localhost"||d.hostname==="127.0.0.1");return d.protocol!=="https:"&&!v||d.username||d.password?null:d.toString()}catch{return null}}const mm="https://dbit.digitalcompass.agency".trim(),hm="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyAgCiAgICAicm9sZSI6ICJhbm9uIiwKICAgICJpc3MiOiAic3VwYWJhc2UtZGVtbyIsCiAgICAiaWF0IjogMTY0MTc2OTIwMCwKICAgICJleHAiOiAxNzk5NTM1NjAwCn0.dc_X5iR_VP_qT0zsiyj_I_OZ2T9FtRU2BBNWN8Bu4GE".trim(),ym=globalThis.supabase;if(!mm||!hm)throw new Error("Faltan VITE_SUPABASE_URL o VITE_SUPABASE_ANON_KEY en el archivo .env.");if(!ym)throw new Error("No se pudo cargar la librería de Supabase.");const qe=ym.createClient(mm,hm,{auth:{autoRefreshToken:!0,persistSession:!0,detectSessionInUrl:!0,flowType:"pkce"}}),Mn="glm_hub_apps",Ms="glm_hub_favorites",vm="glm_hub_recent_apps",Pu="glm-hub-icons",em="glm-hub:supabase-catalog-migrated:v1";function gm(f){return{id:f.id,name:f.name,description:f.description,category:f.category,keywords:[],url:f.url??"",mark:"",accent:"#4F758B",iconDataUrl:f.icon_url,visibility:f.visibility,createdAt:f.created_at,updatedAt:f.updated_at}}function Qv(f){const d=/^data:(image\/(?:png|jpeg|webp));base64,([a-zA-Z0-9+/=]+)$/.exec(f);if(!d)throw new Error("El ícono no tiene un formato válido.");const v=d[1],r=atob(d[2]),x=new Uint8Array(r.length);for(let z=0;zr.app_id)}async function Vv(f){const{data:d,error:v}=await qe.from(vm).select("app_id,last_opened_at").eq("user_id",f).order("last_opened_at",{ascending:!1}).limit(30);if(v)throw new Error(`No se pudieron cargar los accesos recientes: ${v.message}`);return(d??[]).map(r=>r.app_id)}async function Kv(f){const[d,v,r]=await Promise.all([Bs(),Zv(f),Vv(f)]);return{schemaVersion:1,apps:d,favoritesByUser:{[f]:v},recentByUser:{[f]:r},updatedAt:new Date().toISOString()}}async function bm(f,d,v){const r=(d==null?void 0:d.id)??crypto.randomUUID(),x=await wv(r,f.iconDataUrl),z={name:f.name,description:f.description,category:f.category,url:f.url||null,icon_url:x,visibility:f.visibility,updated_by:v};let q;if(d?q=await qe.from(Mn).update(z).eq("id",r).select("id,name,description,category,url,icon_url,visibility,created_at,updated_at").single():q=await qe.from(Mn).insert({id:r,...z,created_by:v}).select("id,name,description,category,url,icon_url,visibility,created_at,updated_at").single(),q.error)throw x!==f.iconDataUrl&&await Us(x),new Error(`No se pudo guardar la aplicación: ${q.error.message}`);return d&&d.iconDataUrl!==x&&await Us(d.iconDataUrl),gm(q.data)}async function Jv(f){const{error:d}=await qe.from(Mn).delete().eq("id",f.id);if(d)throw new Error(`No se pudo eliminar la aplicación: ${d.message}`);await Us(f.iconDataUrl)}async function kv(f,d,v){if(v){const{error:x}=await qe.from(Ms).upsert({user_id:f,app_id:d},{onConflict:"user_id,app_id"});if(x)throw new Error(`No se pudo guardar el favorito: ${x.message}`);return}const{error:r}=await qe.from(Ms).delete().eq("user_id",f).eq("app_id",d);if(r)throw new Error(`No se pudo quitar el favorito: ${r.message}`)}async function $v(f,d){const{error:v}=await qe.from(vm).upsert({user_id:f,app_id:d,last_opened_at:new Date().toISOString()},{onConflict:"user_id,app_id"});if(v)throw new Error(`No se pudo registrar el acceso reciente: ${v.message}`)}async function Wv(f,d){if(f.role!=="admin"||d.length===0||localStorage.getItem(em)==="completed")return 0;const v=await Bs(),r=new Set(v.map(q=>q.name.trim().toLocaleLowerCase("es-DO"))),x=d.filter(q=>{const K=q.name.trim().toLocaleLowerCase("es-DO");return!!q.iconDataUrl.trim()&&!r.has(K)});let z=0;for(const q of x)await bm({name:q.name,description:q.description,category:q.category,url:q.url,iconDataUrl:q.iconDataUrl,visibility:q.visibility},null,f.id),r.add(q.name.trim().toLocaleLowerCase("es-DO")),z+=1;return localStorage.setItem(em,"completed"),z}function Fv(f){const d=qe.channel("glm-hub-apps-shared").on("postgres_changes",{event:"*",schema:"public",table:Mn},()=>f()).subscribe();return()=>{qe.removeChannel(d)}}const Cs=new Intl.Collator("es-DO",{sensitivity:"base"}),Iv="@gomezleemarketing.com",tm="https://agenteit.digitalcompass.agency/webhook/glm-hub-generar-icono".trim()??"",lm="https://agenteit.digitalcompass.agency/webhook/glm-hub-solicitar-acceso".trim()??"";function Ns(f=""){return`/${f}`}function Pv(){return new URL("/",window.location.origin).toString()}function e0(f,d){var z;const v=f.user.user_metadata??{},r=v.full_name??v.name,x=d.email.split("@")[0]||"Usuario GLM";return((z=d.full_name)==null?void 0:z.trim())||(typeof r=="string"?r.trim():"")||x}function t0(f){const d=f.user.user_metadata??{},v=d.avatar_url??d.picture;if(typeof v!="string"||!v.trim())return"";try{const r=new URL(v.trim());return r.protocol==="https:"?r.toString():""}catch{return""}}async function l0(f){var z;const d=((z=f.user.email)==null?void 0:z.trim().toLocaleLowerCase("en-US"))??"";if(!d.endsWith(Iv))return{session:null,error:"Debes continuar con una cuenta corporativa @gomezleemarketing.com."};const{data:v,error:r}=await qe.from("glm_hub_authorized_users").select("email, full_name, role").eq("email",d).eq("is_active",!0).maybeSingle(),x=v;return r?(console.error("No se pudo validar el acceso en Supabase:",r),{session:null,error:"No pudimos validar tu acceso en Supabase. Intenta nuevamente."}):x?{session:{user:{id:f.user.id,name:e0(f,x),email:x.email,role:x.role,avatarUrl:t0(f)},expiresAt:(f.expires_at??Math.floor(Date.now()/1e3)+3600)*1e3},error:""}:{session:null,error:"Tu correo no está autorizado para entrar al GLM Hub."}}function pm(f){const d=f.trim().split(/\s+/).filter(Boolean);if(d.length===0)return"GL";if(d.length===1)return d[0].slice(0,2).toLocaleUpperCase("es-DO");const v=d.length>=4?d.length-2:d.length-1;return`${d[0][0]}${d[v][0]}`.toLocaleUpperCase("es-DO")}function a0(){const f=new Date().getHours();return f<12?"Buenos días":f<19?"Buenas tardes":"Buenas noches"}function am(f){return f&&f[0].toLocaleUpperCase("es-DO")+f.slice(1)}function nm(f){const d=new Intl.DateTimeFormat("es-DO",{weekday:"long",day:"numeric",month:"long",year:"numeric"}).formatToParts(f),v=r=>{var x;return((x=d.find(z=>z.type===r))==null?void 0:x.value)??""};return`${am(v("weekday"))} ${v("day")} de ${am(v("month"))} de ${v("year")}`}function n0(){const[f,d]=H.useState(()=>nm(new Date));return H.useEffect(()=>{const v=()=>d(nm(new Date));v();const r=window.setInterval(v,6e4);return()=>window.clearInterval(r)},[]),f}function Wu(){return{name:"",description:"",category:"Administración",url:"",iconDataUrl:"",visibility:"published"}}function Dn(f){return{name:f.name,description:f.description,category:f.category,url:f.url,iconDataUrl:f.iconDataUrl,visibility:f.visibility}}async function Sm(f,d=!0){if(!new Set(["image/png","image/jpeg","image/webp"]).has(f.type))throw new Error("Usa un ícono en formato PNG, JPG o WebP.");if(d&&f.size>1024*1024)throw new Error("El ícono debe pesar menos de 1 MB.");const r=await createImageBitmap(f);if(r.width>4096||r.height>4096)throw r.close(),new Error("El ícono no puede superar 4096 × 4096 px.");const x=document.createElement("canvas");x.width=192,x.height=192;const z=x.getContext("2d");if(!z)throw r.close(),new Error("Este navegador no pudo procesar el ícono.");const q=Math.min(192/r.width,192/r.height),K=r.width*q,R=r.height*q,E=(192-K)/2,G=(192-R)/2;return z.clearRect(0,0,192,192),z.drawImage(r,E,G,K,R),r.close(),x.toDataURL("image/webp",.9)}async function u0(f){if(!f.startsWith("data:image/"))throw new Error("La IA no devolvió una imagen válida.");const v=await(await fetch(f)).blob();return _m(v)}async function _m(f){const d=f.type||"image/png";if(!d.startsWith("image/"))throw new Error("El flujo de IA no devolvió un archivo de imagen.");const v=d==="image/jpeg"?"jpg":d.split("/")[1]||"png",r=new File([f],`icono-generado.${v}`,{type:d});return Sm(r,!1)}function ei({compact:f=!1}){return c.jsx("img",{className:f?"brand-logo brand-logo--compact":"brand-logo",src:"/glm-logo.png",alt:"GomezLee Marketing",width:"350",height:"109"})}function ti({app:f,size:d="regular",showPlaceholder:v=!1}){const[r,x]=H.useState(!1),z=!!f.iconDataUrl&&!r;return c.jsx("span",{className:`app-mark app-mark--${d}`,"aria-hidden":"true",children:z?c.jsx("img",{src:f.iconDataUrl,alt:"",onError:()=>x(!0)}):v?c.jsx(yv,{className:"app-mark__placeholder",size:36,strokeWidth:1.5}):null})}function Em({user:f,label:d}){const[v,r]=H.useState(!1),x=!!f.avatarUrl&&!v;return c.jsx("span",{className:"avatar","aria-label":d,"aria-hidden":d?void 0:!0,children:x?c.jsx("img",{src:f.avatarUrl,alt:"",referrerPolicy:"no-referrer",onError:()=>r(!0)}):pm(f.name)})}function Ts({messages:f,onDismiss:d}){return c.jsx("div",{className:"toast-stack","aria-live":"polite","aria-relevant":"additions",children:f.map(v=>c.jsxs("div",{className:`toast toast--${v.kind}`,children:[c.jsx("span",{className:"toast__signal","aria-hidden":"true"}),c.jsxs("div",{children:[c.jsx("strong",{children:v.title}),v.detail?c.jsx("p",{children:v.detail}):null]}),c.jsx("button",{type:"button",className:"icon-button icon-button--quiet","aria-label":"Cerrar mensaje",onClick:()=>d(v.id),children:c.jsx(kl,{size:18,"aria-hidden":"true"})})]},v.id))})}function i0({onLogin:f,error:d,disabled:v=!1}){const[r,x]=H.useState(!1),z=async()=>{x(!0),await f(),x(!1)};return c.jsxs("main",{className:"login-shell",children:[c.jsxs("section",{className:"login-story","aria-labelledby":"login-headline",children:[c.jsx("div",{className:"login-story__topline",children:c.jsx(ei,{})}),c.jsxs("div",{className:"login-story__content",children:[c.jsx("p",{className:"eyebrow",children:"ACCESO INTERNO"}),c.jsxs("h1",{id:"login-headline",children:["Todo el trabajo",c.jsx("span",{children:"de GLM, a un clic."})]}),c.jsx("p",{className:"login-story__lede",children:"Tu punto de partida para abrir herramientas, encontrar recursos y mantener el día en movimiento."})]}),c.jsx("div",{className:"login-story__type","aria-hidden":"true",children:"GLM"})]}),c.jsx("section",{className:"login-panel","aria-label":"Inicio de sesión",children:c.jsxs("div",{className:"login-panel__inner",children:[c.jsxs("div",{className:"login-panel__heading",children:[c.jsx("p",{className:"section-kicker",children:"GLM HUB"}),c.jsx("h2",{children:"Entra a tu espacio."})]}),c.jsxs("div",{className:"login-form",children:[d?c.jsx("p",{className:"form-error",id:"login-error",role:"alert",children:d}):null,c.jsxs("button",{className:"primary-button primary-button--full",type:"button",disabled:v||r,onClick:()=>void z(),children:[c.jsx(bv,{size:18,"aria-hidden":"true"}),r?"Conectando…":"Continuar con Google",r?null:c.jsx(Un,{size:18,"aria-hidden":"true"})]})]})]})})]})}function c0({user:f,view:d,onNavigate:v,onLogout:r}){return c.jsxs("aside",{className:"sidebar",children:[c.jsx("div",{className:"sidebar__brand",children:c.jsx(ei,{compact:!0})}),c.jsxs("nav",{className:"sidebar__nav","aria-label":"Navegación principal",children:[c.jsxs("button",{type:"button",className:d==="hub"?"is-active":"",onClick:()=>v("hub"),"aria-current":d==="hub"?"page":void 0,children:[c.jsx(sm,{size:20,"aria-hidden":"true"}),c.jsx("span",{children:"Aplicaciones"})]}),f.role==="admin"?c.jsxs("button",{type:"button",className:d==="admin"?"is-active":"",onClick:()=>v("admin"),"aria-current":d==="admin"?"page":void 0,children:[c.jsx(om,{size:20,"aria-hidden":"true"}),c.jsx("span",{children:"Administrar"})]}):null]}),c.jsxs("div",{className:"sidebar__account",children:[c.jsx(Em,{user:f}),c.jsxs("span",{className:"sidebar__account-copy",children:[c.jsx("strong",{children:f.name}),c.jsx("small",{children:f.role==="admin"?"Administrador":"Usuario"})]}),c.jsx("button",{type:"button",className:"icon-button","aria-label":"Cerrar sesión",onClick:r,children:c.jsx(rm,{size:18,"aria-hidden":"true"})})]})]})}function s0({user:f}){return c.jsxs("header",{className:"mobile-header",children:[c.jsx(ei,{compact:!0}),c.jsx(Em,{user:f,label:`Sesión de ${f.name}`})]})}function f0({user:f,view:d,onNavigate:v,onLogout:r}){return c.jsxs("nav",{className:"mobile-nav","aria-label":"Navegación móvil",children:[c.jsxs("button",{type:"button",className:d==="hub"?"is-active":"",onClick:()=>v("hub"),children:[c.jsx(sm,{size:20,"aria-hidden":"true"}),c.jsx("span",{children:"Inicio"})]}),f.role==="admin"?c.jsxs("button",{type:"button",className:d==="admin"?"is-active":"",onClick:()=>v("admin"),children:[c.jsx(om,{size:20,"aria-hidden":"true"}),c.jsx("span",{children:"Administrar"})]}):null,c.jsxs("button",{type:"button",onClick:r,children:[c.jsx(rm,{size:20,"aria-hidden":"true"}),c.jsx("span",{children:"Salir"})]})]})}function r0({app:f,isFavorite:d,onActivate:v,onFavorite:r}){const x=!!Jl(f.url);return c.jsxs("article",{className:"quick-launch",children:[c.jsxs("div",{className:"quick-launch__top",children:[c.jsx(ti,{app:f,size:"regular"}),c.jsx("button",{type:"button",className:`favorite-button ${d?"is-favorite":""}`,onClick:()=>r(f.id),"aria-label":d?`Quitar ${f.name} de favoritos`:`Agregar ${f.name} a favoritos`,"aria-pressed":d,children:c.jsx(Hs,{size:18,fill:d?"currentColor":"none","aria-hidden":"true"})})]}),c.jsxs("div",{className:"quick-launch__copy",children:[c.jsx("span",{className:"quick-launch__category",children:f.category}),c.jsx("h3",{children:f.name}),c.jsx("p",{children:f.description})]}),c.jsxs("button",{type:"button",className:"quick-launch__action",onClick:()=>v(f),children:[c.jsx("span",{children:x?"Abrir aplicación":"Enlace pendiente"}),x?c.jsx(Un,{size:18,"aria-hidden":"true"}):c.jsx(fm,{size:17,"aria-hidden":"true"})]})]})}function o0({app:f,index:d,isFavorite:v,onActivate:r,onFavorite:x}){const z=!!Jl(f.url);return c.jsxs("article",{className:"directory-row",children:[c.jsx("span",{className:"directory-row__number","aria-hidden":"true",children:String(d+1).padStart(2,"0")}),c.jsx(ti,{app:f,size:"small"}),c.jsxs("div",{className:"directory-row__copy",children:[c.jsx("h3",{children:f.name}),c.jsx("p",{children:f.description})]}),c.jsx("span",{className:"directory-row__category",children:f.category}),c.jsxs("span",{className:`availability ${z?"availability--ready":"availability--pending"}`,children:[c.jsx("span",{"aria-hidden":"true"}),z?"Disponible":"Enlace pendiente"]}),c.jsx("button",{type:"button",className:`favorite-button ${v?"is-favorite":""}`,onClick:()=>x(f.id),"aria-label":v?`Quitar ${f.name} de favoritos`:`Agregar ${f.name} a favoritos`,"aria-pressed":v,children:c.jsx(Hs,{size:18,fill:v?"currentColor":"none","aria-hidden":"true"})}),c.jsxs("button",{type:"button",className:"directory-row__open",onClick:()=>r(f),children:[c.jsx("span",{children:z?"Abrir":"Ver estado"}),z?c.jsx(Un,{size:17,"aria-hidden":"true"}):c.jsx(cm,{size:17,"aria-hidden":"true"})]})]})}function d0({search:f,favoritesOnly:d,onClear:v}){return c.jsxs("div",{className:"empty-state",children:[c.jsx("span",{className:"empty-state__mark","aria-hidden":"true",children:"0"}),c.jsxs("div",{children:[c.jsx("p",{className:"section-kicker",children:"SIN RESULTADOS"}),c.jsx("h3",{children:d?"Aún no tienes favoritos aquí.":`No encontramos “${f||"esa aplicación"}”.`}),c.jsx("p",{children:"Prueba otro término, cambia la categoría o vuelve a ver todo el directorio."}),c.jsx("button",{type:"button",className:"text-button",onClick:v,children:"Limpiar filtros"})]})]})}function m0({apps:f,onSubmit:d}){const v=H.useRef(null),[r,x]=H.useState("Todas"),[z,q]=H.useState(""),[K,R]=H.useState(!1),E=H.useMemo(()=>[...f].filter(w=>w.visibility==="published").sort((w,ee)=>Cs.compare(w.name,ee.name)),[f]),G=H.useMemo(()=>r==="Todas"?E:E.filter(w=>w.category===r),[r,E]);H.useEffect(()=>{z&&!G.some(w=>w.id===z)&&q("")},[z,G]),H.useEffect(()=>{if(!K)return;const w=ee=>{ee.preventDefault(),ee.returnValue=""};return window.addEventListener("beforeunload",w),()=>window.removeEventListener("beforeunload",w)},[K]);const B=()=>{var w;x("Todas"),q(""),(w=v.current)==null||w.showModal()},J=()=>{var w;K||(w=v.current)==null||w.close()},ye=async w=>{var Z;w.preventDefault();const ee=E.find(te=>te.id===z);if(!(!ee||K)){R(!0);try{await d(ee)&&((Z=v.current)==null||Z.close(),x("Todas"),q(""))}finally{R(!1)}}};return c.jsxs("section",{className:"access-request-bridge","aria-label":"Solicitud de acceso a aplicaciones",children:[c.jsx("div",{className:"access-request-bridge__number","aria-hidden":"true",children:"?"}),c.jsxs("div",{children:[c.jsx("p",{className:"section-kicker",children:"SOLICITUD DE ACCESO"}),c.jsx("h2",{children:"¿No tienes acceso a una aplicación?"}),c.jsx("p",{children:"Selecciona el portal que necesitas y envía la solicitud al equipo responsable."})]}),c.jsxs("button",{type:"button",className:"secondary-button",onClick:B,children:["Solicitar acceso aquí",c.jsx(Un,{size:18,"aria-hidden":"true"})]}),c.jsxs("dialog",{className:"access-request-dialog",ref:v,onCancel:w=>{K&&w.preventDefault()},children:[c.jsx("button",{type:"button",className:"access-request-dialog__close",onClick:J,"aria-label":"Cerrar",children:c.jsx(kl,{size:19,"aria-hidden":"true"})}),c.jsx("p",{className:"section-kicker",children:"GLM HUB"}),c.jsx("h2",{children:"Solicitar acceso"}),c.jsx("p",{className:"access-request-dialog__intro",children:"Elige el área y la aplicación. El catálogo se actualiza automáticamente con los portales publicados."}),c.jsxs("form",{onSubmit:w=>void ye(w),children:[c.jsxs("div",{className:"form-field",children:[c.jsxs("label",{htmlFor:"access-request-area",children:["Área",c.jsx(Kl,{})]}),c.jsxs("select",{id:"access-request-area",value:r,onChange:w=>x(w.target.value),disabled:K,required:!0,children:[c.jsx("option",{value:"Todas",children:"Todas"}),c.jsx("option",{value:"Administración",children:"Administración"}),c.jsx("option",{value:"Recursos Humanos",children:"Recursos Humanos"}),c.jsx("option",{value:"CDC",children:"CDC"})]})]}),c.jsxs("div",{className:"form-field",children:[c.jsxs("label",{htmlFor:"access-request-app",children:["Aplicación",c.jsx(Kl,{})]}),c.jsxs("select",{id:"access-request-app",value:z,onChange:w=>q(w.target.value),disabled:K||G.length===0,required:!0,children:[c.jsx("option",{value:"",children:G.length===0?"No hay aplicaciones publicadas en esta área":"Selecciona una aplicación"}),G.map(w=>c.jsx("option",{value:w.id,children:w.name},w.id))]})]}),c.jsxs("div",{className:"access-request-dialog__actions",children:[c.jsx("button",{type:"button",className:"secondary-button secondary-button--quiet",onClick:J,disabled:K,children:"Cancelar"}),c.jsx("button",{type:"submit",className:"primary-button",disabled:!z||K,children:K?"Enviando…":"Enviar solicitud"})]})]})]}),K?c.jsx("div",{className:"generation-overlay",role:"dialog","aria-modal":"true","aria-labelledby":"access-request-loading-title",children:c.jsxs("div",{className:"generation-overlay__card",children:[c.jsx("span",{className:"generation-spinner","aria-hidden":"true"}),c.jsx("p",{className:"section-kicker",children:"GLM HUB"}),c.jsx("h2",{id:"access-request-loading-title",children:"Enviando la solicitud…"}),c.jsx("p",{children:"Estamos registrando la solicitud y enviando el correo a las personas responsables."})]})}):null]})}function h0(f,d,v=!1){return d<=(v?5:7)?Array.from({length:d},(x,z)=>z+1):v?f<=3?[1,2,3,"ellipsis-end",d]:f>=d-2?[1,"ellipsis-start",d-2,d-1,d]:[1,"ellipsis-start",f,"ellipsis-end",d]:f<=4?[1,2,3,4,5,"ellipsis-end",d]:f>=d-3?[1,"ellipsis-start",d-4,d-3,d-2,d-1,d]:[1,"ellipsis-start",f-1,f,f+1,"ellipsis-end",d]}function Rs({currentPage:f,totalPages:d,onPageChange:v,compact:r=!1,label:x}){if(d<=1)return null;const z=h0(f,d,r);return c.jsxs("nav",{className:`pagination ${r?"pagination--compact":""}`,"aria-label":x,children:[c.jsx("button",{type:"button",className:"pagination__arrow",disabled:f<=1,onClick:()=>v(f-1),"aria-label":"Página anterior",children:c.jsx(ov,{size:16,"aria-hidden":"true"})}),c.jsx("div",{className:"pagination__pages",children:z.map(q=>typeof q=="number"?c.jsx("button",{type:"button",className:`pagination__page ${q===f?"is-active":""}`,onClick:()=>v(q),"aria-label":`Ir a la página ${q}`,"aria-current":q===f?"page":void 0,children:q},q):c.jsx("span",{className:"pagination__ellipsis","aria-hidden":"true",children:"…"},q))}),c.jsx("button",{type:"button",className:"pagination__arrow",disabled:f>=d,onClick:()=>v(f+1),"aria-label":"Página siguiente",children:c.jsx(cm,{size:16,"aria-hidden":"true"})})]})}const Fu=10,xs=6,Os=10;function y0({user:f,data:d,storageWarning:v,onActivate:r,onFavorite:x,onAdmin:z,onRequestAccess:q}){const[K,R]=H.useState({Todas:"",Administración:"","Recursos Humanos":"",CDC:""}),[E,G]=H.useState("Todas"),[B,J]=H.useState(!1),[ye,w]=H.useState(1),[ee,Z]=H.useState(1),te=K[E]??"",Ne=D=>{R(b=>({...b,[E]:D}))},Te=H.useDeferredValue(te),se=n0(),pe=f.role==="admin",Ae=d.favoritesByUser[f.id]??[],I=d.recentByUser[f.id]??[],ne=H.useMemo(()=>new Set(Ae),[Ae]),Me=H.useMemo(()=>[...d.apps.filter(D=>D.visibility==="published"&&!!D.iconDataUrl.trim())].sort((D,b)=>Cs.compare(D.name,b.name)),[d.apps]),Ue=H.useMemo(()=>{const D=Ca(Te);return Me.filter(b=>E!=="Todas"&&b.category!==E||B&&!ne.has(b.id)?!1:D?Ca(b.name).includes(D):!0).sort((b,o)=>Number(ne.has(o.id))-Number(ne.has(b.id))||Cs.compare(b.name,o.name))},[E,Te,ne,B,Me]),ve=Math.max(1,Math.ceil(Ue.length/Fu));H.useEffect(()=>{w(1)},[te,E,B]),H.useEffect(()=>{ye>ve&&w(ve)},[ye,ve]);const He=H.useMemo(()=>{const D=(ye-1)*Fu;return Ue.slice(D,D+Fu)},[ye,Ue]),lt=D=>{w(Math.min(Math.max(D,1),ve)),window.requestAnimationFrame(()=>{var b;(b=document.getElementById("directory-title"))==null||b.scrollIntoView({behavior:"smooth",block:"start"})})},Y=H.useMemo(()=>{const D=new Map(Me.map(C=>[C.id,C])),b=[],o=new Set,A=C=>{const L=D.get(C);!L||o.has(C)||(b.push(L),o.add(C))};if(Ae.forEach(A),b.length<3){for(const C of I)if(A(C),b.length>=3)break}if(b.length<3){for(const C of Me)if(A(C.id),b.length>=3)break}return b},[Ae,Me,I]),k=Math.max(1,Math.ceil(Y.length/xs)),S=H.useMemo(()=>{const D=(ee-1)*xs;return Y.slice(D,D+xs)},[Y,ee]);H.useEffect(()=>{ee>k&&Z(k)},[ee,k]),H.useEffect(()=>{Z(1)},[d.favoritesByUser,d.recentByUser,f.id]);const T=D=>{Z(Math.min(Math.max(D,1),k)),window.requestAnimationFrame(()=>{var b;(b=document.getElementById("quick-title"))==null||b.scrollIntoView({behavior:"smooth",block:"start"})})},U=()=>{R({Todas:"",Administración:"","Recursos Humanos":"",CDC:""}),G("Todas"),J(!1)};return c.jsxs("main",{className:"page-content hub-page",children:[c.jsxs("header",{className:"page-header",children:[c.jsxs("div",{children:[c.jsxs("p",{className:"page-header__meta",children:[a0(),", ",f.name]}),c.jsx("h1",{children:"Tu mesa de trabajo."})]}),c.jsx("div",{className:"page-header__aside",children:c.jsx("span",{children:se})})]}),v?c.jsx("div",{className:"inline-alert",role:"status",children:v}):null,c.jsxs("section",{className:"search-stage","aria-labelledby":"search-title",children:[c.jsx("div",{className:"search-stage__copy",children:c.jsx("h2",{id:"search-title",children:"¿Qué necesitas abrir?"})}),c.jsxs("div",{className:"hub-search",children:[c.jsx(Ds,{size:21,"aria-hidden":"true"}),c.jsx("label",{className:"sr-only",htmlFor:"hub-search-input",children:"Buscar por nombre de proyecto"}),c.jsx("input",{id:"hub-search-input",type:"search",value:te,onChange:D=>Ne(D.target.value),placeholder:"Buscar por nombre de proyecto…"}),te?c.jsx("button",{type:"button",onClick:()=>Ne(""),"aria-label":"Limpiar búsqueda",children:c.jsx(kl,{size:18,"aria-hidden":"true"})}):null]})]}),c.jsxs("section",{className:"quick-section","aria-labelledby":"quick-title",children:[c.jsxs("div",{className:"section-heading",children:[c.jsxs("div",{children:[c.jsx("p",{className:"section-kicker",children:"FIJADAS PARA TI"}),c.jsx("h2",{id:"quick-title",children:"Acceso rápido"})]}),c.jsx("p",{children:"Abre lo que más usas sin detener el ritmo."})]}),c.jsx("div",{className:"quick-grid",children:S.map(D=>c.jsx(r0,{app:D,isFavorite:ne.has(D.id),onActivate:r,onFavorite:x},D.id))}),c.jsx(Rs,{currentPage:ee,totalPages:k,onPageChange:T,compact:k>5,label:"Paginación de acceso rápido"})]}),c.jsxs("section",{className:"directory-section","aria-labelledby":"directory-title",children:[c.jsxs("div",{className:"section-heading section-heading--directory",children:[c.jsxs("div",{children:[c.jsx("p",{className:"section-kicker",children:"DIRECTORIO GLM"}),c.jsx("h2",{id:"directory-title",children:"Todas las aplicaciones"})]}),c.jsxs("div",{className:"directory-count","aria-live":"polite",children:[c.jsx("strong",{children:Ue.length}),c.jsx("span",{children:Ue.length===1?"resultado":"resultados"})]})]}),c.jsxs("div",{className:"filter-bar","aria-label":"Filtros del directorio",children:[c.jsx("div",{className:"category-filters",children:["Todas",...dm].map(D=>c.jsx("button",{type:"button",className:E===D?"is-active":"",onClick:()=>G(D),"aria-pressed":E===D,children:D},D))}),c.jsxs("div",{className:"filter-bar__search",children:[c.jsx(Ds,{size:16,"aria-hidden":"true"}),c.jsx("label",{className:"sr-only",htmlFor:"directory-search-input",children:`Buscar por nombre de proyecto en ${E}`}),c.jsx("input",{id:"directory-search-input",type:"search",value:te,onChange:D=>Ne(D.target.value),placeholder:E==="Todas"?"Buscar por nombre de proyecto…":`Buscar en ${E}…`}),te?c.jsx("button",{type:"button",onClick:()=>Ne(""),"aria-label":"Limpiar búsqueda",children:c.jsx(kl,{size:15,"aria-hidden":"true"})}):null]}),c.jsxs("button",{type:"button",className:`favorites-filter ${B?"is-active":""}`,onClick:()=>J(D=>!D),"aria-pressed":B,children:[c.jsx(Hs,{size:17,fill:B?"currentColor":"none","aria-hidden":"true"}),"Solo favoritos"]})]}),Ue.length>0?c.jsxs(c.Fragment,{children:[c.jsx("div",{className:"directory-list",children:He.map((D,b)=>c.jsx(o0,{app:D,index:(ye-1)*Fu+b,isFavorite:ne.has(D.id),onActivate:r,onFavorite:x},D.id))}),c.jsx(Rs,{currentPage:ye,totalPages:ve,onPageChange:lt,compact:ve>5,label:"Paginación de aplicaciones"})]}):c.jsx(d0,{search:te,favoritesOnly:B,onClear:U})]}),pe?c.jsxs("section",{className:"admin-bridge","aria-label":"Acceso al panel de administración",children:[c.jsx("div",{className:"admin-bridge__number","aria-hidden":"true",children:"+"}),c.jsxs("div",{children:[c.jsx("p",{className:"section-kicker",children:"CONTROL DEL CATÁLOGO"}),c.jsx("h2",{children:"¿Falta una herramienta?"}),c.jsx("p",{children:"Adjunta su ícono, pega el enlace y publícala para todo el equipo."})]}),c.jsxs("button",{type:"button",className:"secondary-button",onClick:z,children:["Administrar aplicaciones",c.jsx(Un,{size:18,"aria-hidden":"true"})]})]}):c.jsx(m0,{apps:Me,onSubmit:q})]})}function v0({apps:f,selectedId:d,onSelect:v,onDelete:r}){const[x,z]=H.useState(""),[q,K]=H.useState(1),[R,E]=H.useState(null),G=H.useRef(null),B=H.useMemo(()=>{const Z=Ca(x);return Z?f.filter(te=>Ca(`${te.name} ${te.category}`).includes(Z)):f},[f,x]),J=Math.max(1,Math.ceil(B.length/Os));H.useEffect(()=>{K(1)},[x]),H.useEffect(()=>{q>J&&K(J)},[q,J]);const ye=H.useMemo(()=>{const Z=(q-1)*Os;return B.slice(Z,Z+Os)},[B,q]),w=(Z,te)=>{var Ne;Z.stopPropagation(),E(te),(Ne=G.current)==null||Ne.showModal()},ee=async()=>{var Z;R&&await r(R.id)&&((Z=G.current)==null||Z.close(),E(null))};return c.jsxs("aside",{className:"admin-list","aria-label":"Aplicaciones configuradas",children:[c.jsxs("div",{className:"admin-list__top",children:[c.jsxs("div",{children:[c.jsx("p",{className:"section-kicker",children:"CATÁLOGO"}),c.jsxs("h2",{children:[f.length," ",f.length===1?"aplicación":"aplicaciones"]})]}),c.jsx("button",{type:"button",className:"icon-button icon-button--accent",onClick:()=>v(null),"aria-label":"Crear aplicación",children:c.jsx(Id,{size:20,"aria-hidden":"true"})})]}),c.jsxs("div",{className:"admin-list__search",children:[c.jsx(Ds,{size:17,"aria-hidden":"true"}),c.jsx("label",{htmlFor:"admin-search",className:"sr-only",children:"Buscar en el catálogo"}),c.jsx("input",{id:"admin-search",type:"search",value:x,onChange:Z=>z(Z.target.value),placeholder:"Buscar…"}),x?c.jsx("button",{type:"button",onClick:()=>z(""),"aria-label":"Limpiar búsqueda",children:c.jsx(kl,{size:15,"aria-hidden":"true"})}):null]}),c.jsxs("div",{className:"admin-list__items",children:[q===1?c.jsxs("button",{type:"button",className:`admin-list__new ${d===null?"is-active":""}`,onClick:()=>v(null),children:[c.jsx("span",{className:"admin-list__new-icon",children:c.jsx(Id,{size:18,"aria-hidden":"true"})}),c.jsxs("span",{className:"admin-list__item-info",children:[c.jsx("strong",{children:"Nueva aplicación"}),c.jsx("small",{children:"Crear y publicar"})]})]}):null,ye.map(Z=>c.jsxs("div",{className:`admin-list__item-row ${d===Z.id?"is-active":""}`,onClick:()=>v(Z.id),role:"button",tabIndex:0,onKeyDown:te=>{(te.key==="Enter"||te.key===" ")&&v(Z.id)},children:[c.jsx(ti,{app:Z,size:"small"}),c.jsxs("span",{className:"admin-list__item-info",children:[c.jsx("strong",{children:Z.name}),c.jsx("small",{children:Z.category})]}),c.jsxs("div",{className:"admin-list__item-actions",children:[c.jsx("span",{className:`mini-status ${Z.visibility==="hidden"?"is-hidden":""}`,children:Z.visibility==="hidden"?"Oculta":Jl(Z.url)?"Lista":"Pendiente"}),c.jsx("button",{type:"button",className:"admin-list__delete-icon",onClick:te=>w(te,Z),title:`Eliminar ${Z.name}`,"aria-label":`Eliminar ${Z.name}`,children:c.jsx(Iu,{size:15,"aria-hidden":"true"})})]})]},Z.id))]}),c.jsx(Rs,{currentPage:q,totalPages:J,onPageChange:K,compact:!0,label:"Paginación del catálogo de administración"}),c.jsxs("dialog",{className:"confirm-dialog",ref:G,children:[c.jsx("button",{type:"button",className:"confirm-dialog__close",onClick:()=>{var Z;return(Z=G.current)==null?void 0:Z.close()},"aria-label":"Cerrar",children:c.jsx(kl,{size:19,"aria-hidden":"true"})}),c.jsx("span",{className:"confirm-dialog__icon",children:c.jsx(Iu,{size:22,"aria-hidden":"true"})}),c.jsx("p",{className:"section-kicker",children:"ACCIÓN PERMANENTE"}),c.jsxs("h2",{children:["Eliminar ",R==null?void 0:R.name]}),c.jsx("p",{children:"El portal y sus accesos se eliminarán permanentemente. Esta acción no se puede deshacer."}),c.jsxs("div",{className:"confirm-dialog__actions",children:[c.jsx("button",{type:"button",className:"secondary-button",onClick:()=>{var Z;return(Z=G.current)==null?void 0:Z.close()},children:"Conservar"}),c.jsx("button",{type:"button",className:"danger-button danger-button--solid",onClick:ee,children:"Sí, eliminar"})]})]})]})}function Kl(){return c.jsxs(c.Fragment,{children:[c.jsx("span",{className:"required-mark","aria-hidden":"true",children:"*"}),c.jsx("span",{className:"sr-only",children:" obligatorio"})]})}function g0({app:f,allApps:d,onSave:v,onDelete:r,onCancel:x}){const[z,q]=H.useState(()=>f?Dn(f):Wu()),[K,R]=H.useState(()=>JSON.stringify(f?Dn(f):Wu())),[E,G]=H.useState({}),[B,J]=H.useState(""),[ye,w]=H.useState(!1),[ee,Z]=H.useState(!1),[te,Ne]=H.useState(!1),[Te,se]=H.useState(!1),pe=H.useRef(null),Ae=H.useRef(null),I=JSON.stringify(z)!==K,ne=ye||ee||te,Me=z.name.trim().length>=2&&!!z.description.trim();H.useEffect(()=>{const b=f?Dn(f):Wu();q(b),R(JSON.stringify(b)),G({}),J(""),window.requestAnimationFrame(()=>{var o;return(o=Ae.current)==null?void 0:o.focus()})},[f]),H.useEffect(()=>{if(!I&&!ee)return;const b=o=>o.preventDefault();return window.addEventListener("beforeunload",b),()=>window.removeEventListener("beforeunload",b)},[ee,I]),H.useEffect(()=>{if(!ee)return;const b=document.body.style.overflow;return document.body.style.overflow="hidden",()=>{document.body.style.overflow=b}},[ee]);const Ue={id:(f==null?void 0:f.id)??"preview",name:z.name||"Nombre de la aplicación",description:z.description||"Una descripción breve ayuda al equipo a reconocerla.",category:z.category,keywords:[],url:z.url,mark:pm(z.name||"GLM"),accent:(f==null?void 0:f.accent)??"#4F758B",iconDataUrl:z.iconDataUrl,visibility:z.visibility,createdAt:(f==null?void 0:f.createdAt)??new Date().toISOString(),updatedAt:new Date().toISOString()},ve=(b,o)=>{q(A=>({...A,[b]:o})),G(A=>({...A,[b]:""}))},He=async b=>{if(!(!b||ee)){J(""),w(!0);try{const o=await Sm(b);ve("iconDataUrl",o)}catch(o){J(o instanceof Error?o.message:"No pudimos procesar el ícono.")}finally{w(!1)}}},lt=b=>{var o;He((o=b.target.files)==null?void 0:o[0]),b.target.value=""},Y=b=>{var o;b.preventDefault(),se(!1),He((o=b.dataTransfer.files)==null?void 0:o[0])},k=async()=>{var F;const b=z.name.trim(),o=z.description.trim(),A={};if(b.length<2&&(A.name="Completa el nombre antes de generar el ícono."),o||(A.description="Completa la descripción antes de generar el ícono."),Object.keys(A).length>0){G($=>({...$,...A}));return}if(!tm){J("Falta configurar VITE_ICON_GENERATOR_WEBHOOK_URL en el archivo .env.");return}J(""),Z(!0);const C=new AbortController,L=window.setTimeout(()=>C.abort(),18e4);try{const{data:{session:$}}=await qe.auth.getSession();if(!($!=null&&$.access_token))throw new Error("La sesión venció. Inicia sesión nuevamente.");const ue=await fetch(tm,{method:"POST",mode:"cors",cache:"no-store",credentials:"omit",signal:C.signal,headers:{Accept:"image/*, application/json;q=0.9, text/plain;q=0.8","Content-Type":"text/plain;charset=UTF-8"},body:JSON.stringify({accessToken:$.access_token,name:b,description:o})}),Je=((F=ue.headers.get("content-type"))==null?void 0:F.toLocaleLowerCase("en-US"))??"";if(ue.ok&&Je.startsWith("image/")){const tl=await _m(await ue.blob());ve("iconDataUrl",tl);return}const je=await ue.text();let Pe=null;if(je)try{Pe=JSON.parse(je)}catch{Pe=null}if(ue.ok&&(Pe!=null&&Pe.ok)&&Pe.imageDataUrl){const tl=await u0(Pe.imageDataUrl);ve("iconDataUrl",tl);return}throw new Error((Pe==null?void 0:Pe.error)||(je&&je.length<500?je:"")||`El flujo no pudo generar el ícono (HTTP ${ue.status}).`)}catch($){$ instanceof DOMException&&$.name==="AbortError"?J("La generación tardó más de 3 minutos y fue cancelada. Intenta nuevamente."):$ instanceof TypeError&&/failed to fetch/i.test($.message)?J("No se pudo conectar con el webhook de n8n. Verifica que el workflow esté activo y publicado."):J($ instanceof Error?$.message:"No pudimos generar el ícono con IA.")}finally{window.clearTimeout(L),Z(!1)}},S=()=>{const b={},o=z.name.trim(),A=z.description.trim();(o.length<2||o.length>60)&&(b.name="Escribe un nombre de 2 a 60 caracteres."),A||(b.description="Añade una descripción breve."),A.length>180&&(b.description="La descripción no puede superar 180 caracteres."),z.iconDataUrl||(b.iconDataUrl="Adjunta o genera un ícono antes de publicar la aplicación."),z.url.trim()&&!Jl(z.url)&&(b.url="Usa una URL https:// válida, sin credenciales embebidas.");const C=Ca(o);return d.some(F=>F.id!==(f==null?void 0:f.id)&&Ca(F.name)===C)&&(b.name="Ya existe una aplicación con ese nombre."),G(b),Object.keys(b).length===0},T=async b=>{if(b.preventDefault(),ne||!S()){window.requestAnimationFrame(()=>{var o,A;return(A=(o=document.querySelector(".field-error"))==null?void 0:o.focus)==null?void 0:A.call(o)});return}Ne(!0);try{const o=await v({...z,name:z.name.trim(),description:z.description.trim(),url:z.url.trim()},(f==null?void 0:f.id)??null);if(o){const A=Dn(o);q(A),R(JSON.stringify(A))}}finally{Ne(!1)}},U=()=>{if(!ee&&(!I||window.confirm("Hay cambios sin guardar. ¿Quieres descartarlos?"))){const b=f?Dn(f):Wu();q(b),R(JSON.stringify(b)),G({}),J(""),x()}},D=async()=>{var b;!f||ne||await r(f.id)&&((b=pe.current)==null||b.close(),x())};return c.jsxs("section",{className:"app-editor","aria-labelledby":"editor-title","aria-busy":ne,children:[c.jsxs("div",{className:"app-editor__heading",children:[c.jsxs("div",{children:[c.jsx("p",{className:"section-kicker",children:f?"EDITAR APLICACIÓN":"NUEVA APLICACIÓN"}),c.jsx("h2",{id:"editor-title",children:f?f.name:"Configura el nuevo acceso"})]}),I?c.jsxs("span",{className:"dirty-state is-dirty",children:[c.jsx("span",{"aria-hidden":"true"}),"Cambios sin guardar"]}):null]}),c.jsxs("div",{className:"editor-layout",children:[c.jsxs("form",{className:"editor-form",onSubmit:T,noValidate:!0,children:[c.jsxs("section",{className:"editor-form__section","aria-labelledby":"identity-section-title",children:[c.jsx("h3",{className:"editor-form__section-title",id:"identity-section-title",children:"Identidad"}),c.jsxs("div",{className:"form-field",children:[c.jsxs("label",{htmlFor:"app-name",children:["Nombre de la aplicación",f?null:c.jsx(Kl,{})]}),c.jsx("input",{ref:Ae,id:"app-name",value:z.name,onChange:b=>ve("name",b.target.value),placeholder:"Ej. Media Planner",maxLength:60,"aria-invalid":!!E.name,"aria-describedby":E.name?"app-name-error":void 0,disabled:ne,required:!0}),c.jsxs("div",{className:"field-meta",children:[E.name?c.jsx("span",{id:"app-name-error",className:"field-error",role:"alert",tabIndex:-1,children:E.name}):c.jsx("span",{children:"Como el equipo la reconoce."}),c.jsxs("span",{children:[z.name.length,"/60"]})]})]}),c.jsxs("div",{className:"form-field",children:[c.jsxs("label",{htmlFor:"app-description",children:["Descripción breve",f?null:c.jsx(Kl,{})]}),c.jsx("textarea",{id:"app-description",value:z.description,onChange:b=>ve("description",b.target.value),placeholder:"Explica qué resuelve en una sola frase.",maxLength:180,rows:3,"aria-invalid":!!E.description,"aria-describedby":E.description?"app-description-error":void 0,disabled:ne,required:!0}),c.jsxs("div",{className:`field-meta ${E.description?"":"field-meta--counter-only"}`,children:[E.description?c.jsx("span",{id:"app-description-error",className:"field-error",role:"alert",tabIndex:-1,children:E.description}):null,c.jsxs("span",{children:[z.description.length,"/180"]})]})]}),c.jsxs("div",{className:"form-split",children:[c.jsxs("div",{className:"form-field",children:[c.jsxs("label",{htmlFor:"app-category",children:["Categoría",f?null:c.jsx(Kl,{})]}),c.jsx("select",{id:"app-category",value:z.category,onChange:b=>ve("category",b.target.value),disabled:ne,required:!0,children:dm.map(b=>c.jsx("option",{children:b},b))})]}),c.jsxs("div",{className:"form-field",children:[c.jsxs("label",{htmlFor:"app-visibility",children:["Visibilidad",f?null:c.jsx(Kl,{})]}),c.jsxs("select",{id:"app-visibility",value:z.visibility,onChange:b=>ve("visibility",b.target.value),disabled:ne,required:!0,children:[c.jsx("option",{value:"published",children:"Publicada"}),c.jsx("option",{value:"hidden",children:"Oculta"})]})]})]})]}),c.jsxs("section",{className:"editor-form__section","aria-labelledby":"icon-section-title",children:[c.jsxs("h3",{className:"editor-form__section-title",id:"icon-section-title",children:["Ícono",f?null:c.jsx(Kl,{})]}),c.jsxs("div",{className:"icon-config",children:[c.jsxs("label",{className:`icon-dropzone ${Te?"is-dragging":""}`,onDragEnter:b=>{b.preventDefault(),ne||se(!0)},onDragOver:b=>b.preventDefault(),onDragLeave:()=>se(!1),onDrop:Y,children:[c.jsx("input",{type:"file",accept:"image/png,image/jpeg,image/webp",onChange:lt,disabled:ne}),c.jsx("span",{className:"icon-dropzone__symbol",children:c.jsx(Dv,{size:20,"aria-hidden":"true"})}),c.jsxs("span",{children:[c.jsx("strong",{children:ye?"Procesando…":"Adjuntar ícono"}),c.jsx("small",{children:"PNG, JPG o WebP · máximo 1 MB"})]})]}),z.iconDataUrl?c.jsx("button",{type:"button",className:"text-button text-button--danger",disabled:ne,onClick:()=>ve("iconDataUrl",""),children:"Quitar ícono"}):null]}),c.jsx("div",{className:"ai-icon-actions",children:c.jsxs("button",{type:"button",className:"secondary-button ai-icon-button",onClick:()=>void k(),disabled:!Me||ne,title:Me?void 0:"Completa el nombre y la descripción breve.",children:[c.jsx(Nv,{size:18,"aria-hidden":"true"}),"Generar ícono con IA"]})}),B?c.jsx("p",{className:"field-error field-error--standalone",role:"alert",children:B}):null,E.iconDataUrl?c.jsx("p",{className:"field-error field-error--standalone",role:"alert",tabIndex:-1,children:E.iconDataUrl}):null]}),c.jsxs("section",{className:"editor-form__section","aria-labelledby":"destination-section-title",children:[c.jsx("h3",{className:"editor-form__section-title",id:"destination-section-title",children:"Destino"}),c.jsxs("div",{className:"form-field",children:[c.jsxs("label",{htmlFor:"app-url",children:["Enlace de la aplicación ",c.jsx("span",{children:"Opcional"})]}),c.jsxs("div",{className:"url-field",children:[c.jsx(fm,{size:18,"aria-hidden":"true"}),c.jsx("input",{id:"app-url",type:"url",value:z.url,onChange:b=>ve("url",b.target.value),placeholder:"https://aplicacion.com","aria-invalid":!!E.url,"aria-describedby":E.url?"app-url-error":"app-url-help",disabled:ne})]}),E.url?c.jsx("span",{id:"app-url-error",className:"field-error",role:"alert",tabIndex:-1,children:E.url}):c.jsx("span",{id:"app-url-help",className:"field-help",children:"Si lo dejas vacío, aparecerá como “Enlace pendiente”."})]})]}),c.jsxs("div",{className:"editor-actions",children:[c.jsxs("button",{type:"submit",className:"primary-button",disabled:ne,children:[c.jsx(Ev,{size:18,"aria-hidden":"true"}),te?"Guardando…":f?"Guardar cambios":"Publicar aplicación"]}),c.jsx("button",{type:"button",className:"secondary-button secondary-button--quiet",disabled:ne,onClick:U,children:"Cancelar"}),f?c.jsxs("button",{type:"button",className:"danger-button",disabled:ne,onClick:()=>{var b;return(b=pe.current)==null?void 0:b.showModal()},children:[c.jsx(Iu,{size:17,"aria-hidden":"true"}),"Eliminar"]}):null]})]}),c.jsxs("aside",{className:"app-preview","aria-label":"Vista previa de la aplicación",children:[c.jsxs("div",{className:"app-preview__label",children:[c.jsx("span",{children:"VISTA PREVIA"}),c.jsx("span",{className:"app-preview__rule"})]}),c.jsxs("div",{className:"preview-card",children:[c.jsx(ti,{app:Ue,size:"large",showPlaceholder:!f&&!z.iconDataUrl}),c.jsx("span",{className:"quick-launch__category",children:Ue.category}),c.jsx("h3",{children:Ue.name}),c.jsx("p",{children:Ue.description}),c.jsxs("span",{className:`availability ${Jl(Ue.url)?"availability--ready":"availability--pending"}`,children:[c.jsx("span",{"aria-hidden":"true"}),Jl(Ue.url)?"Lista para abrir":"Enlace pendiente"]})]}),c.jsx("p",{className:"app-preview__note",children:"Así aparecerá en el Hub para el equipo."})]})]}),c.jsxs("dialog",{className:"confirm-dialog",ref:pe,children:[c.jsx("button",{type:"button",className:"confirm-dialog__close",onClick:()=>{var b;return(b=pe.current)==null?void 0:b.close()},"aria-label":"Cerrar",children:c.jsx(kl,{size:19,"aria-hidden":"true"})}),c.jsx("span",{className:"confirm-dialog__icon",children:c.jsx(Iu,{size:22,"aria-hidden":"true"})}),c.jsx("p",{className:"section-kicker",children:"ACCIÓN PERMANENTE"}),c.jsxs("h2",{children:["Eliminar ",f==null?void 0:f.name]}),c.jsx("p",{children:"La aplicación se quitará del catálogo compartido para todo el equipo. Esta acción no se puede deshacer."}),c.jsxs("div",{className:"confirm-dialog__actions",children:[c.jsx("button",{type:"button",className:"secondary-button",onClick:()=>{var b;return(b=pe.current)==null?void 0:b.close()},children:"Conservar"}),c.jsx("button",{type:"button",className:"danger-button danger-button--solid",onClick:()=>void D(),children:"Sí, eliminar"})]})]}),ee?c.jsx("div",{className:"generation-overlay",role:"dialog","aria-modal":"true","aria-labelledby":"generation-title",children:c.jsxs("div",{className:"generation-overlay__card",children:[c.jsx("span",{className:"generation-spinner","aria-hidden":"true"}),c.jsx("p",{className:"section-kicker",children:"GEMINI"}),c.jsx("h2",{id:"generation-title",children:"Generando el ícono…"}),c.jsx("p",{children:"Estamos creando una propuesta a partir del nombre y la descripción de la aplicación."})]})}):null]})}function b0({data:f,onSave:d,onDelete:v,onBack:r}){const[x,z]=H.useState(null),q=x?f.apps.find(E=>E.id===x)??null:null,K=async(E,G)=>{const B=await d(E,G);return B&&z(B.id),B},R=async E=>{const G=await v(E);return G&&z(null),G};return c.jsxs("main",{className:"page-content admin-page",children:[c.jsx("header",{className:"page-header admin-header",children:c.jsxs("div",{children:[c.jsxs("button",{type:"button",className:"back-button",onClick:r,children:[c.jsx(sv,{size:17,"aria-hidden":"true"}),"Volver al Hub"]}),c.jsx("p",{className:"page-header__meta",children:"PANEL DE ADMINISTRACIÓN"}),c.jsx("h1",{children:"Controla el catálogo."})]})}),c.jsxs("div",{className:"admin-workspace",children:[c.jsx(v0,{apps:f.apps,selectedId:x,onSelect:z,onDelete:R}),c.jsx(g0,{app:q,allApps:f.apps,onSave:K,onDelete:R,onCancel:()=>z(null)})]})]})}function p0(){return c.jsxs("div",{className:"catalog-loading",role:"status","aria-live":"polite",children:[c.jsx(ei,{compact:!0}),c.jsx("span",{className:"generation-spinner","aria-hidden":"true"}),c.jsx("p",{children:"Cargando aplicaciones…"})]})}function S0(){const[f]=H.useState(()=>Yv()),[d,v]=H.useState({schemaVersion:1,apps:[],favoritesByUser:{},recentByUser:{},updatedAt:new Date().toISOString()}),[r,x]=H.useState(null),[z,q]=H.useState(()=>"hub"),[K,R]=H.useState([]),[E,G]=H.useState(!1),[B,J]=H.useState(!1),[ye,w]=H.useState(""),[ee,Z]=H.useState(""),te=H.useRef(0),Ne=H.useRef(null),Te=H.useCallback(Y=>{R(k=>k.filter(S=>S.id!==Y))},[]),se=H.useCallback((Y,k,S)=>{const T=crypto.randomUUID();R(U=>[...U.slice(-2),{id:T,kind:Y,title:k,detail:S}]),window.setTimeout(()=>{R(U=>U.filter(D=>D.id!==T))},5200)},[]);H.useEffect(()=>{let Y=!0;const k=U=>{const D=(U.expires_at??Math.floor(Date.now()/1e3)+3600)*1e3;x(b=>!b||b.user.id!==U.user.id||b.expiresAt===D?b:{...b,expiresAt:D})},S=async U=>{const D=++te.current;if(!U){if(!Y||D!==te.current)return;Ne.current=null,x(null),J(!1),G(!0);return}if(Ne.current===U.user.id){if(!Y||D!==te.current)return;k(U),G(!0);return}const b=await l0(U);if(!Y||D!==te.current)return;if(!b.session){Ne.current=null,x(null),Z(b.error),J(!1),G(!0),await qe.auth.signOut({scope:"local"});return}const o=b.session;Ne.current=o.user.id,Z(""),x(o),G(!0),window.location.hash!=="#hub"&&window.location.hash!=="#admin"&&window.history.replaceState(null,"",Ns("#hub"))};qe.auth.getSession().then(({data:{session:U}})=>{S(U)});const{data:{subscription:T}}=qe.auth.onAuthStateChange((U,D)=>{if(U!=="INITIAL_SESSION"){if(U==="TOKEN_REFRESHED"&&D&&Ne.current===D.user.id){k(D);return}window.setTimeout(()=>{S(D)},0)}});return()=>{Y=!1,T.unsubscribe()}},[]);const pe=(r==null?void 0:r.user)??null;H.useEffect(()=>{if(!pe)return;let Y=!0,k=!1;const S=async()=>{if(!k){k=!0;try{const D=await Bs();if(!Y)return;v(b=>({...b,apps:D,updatedAt:new Date().toISOString()}))}catch(D){console.error("No se pudo refrescar el catálogo compartido:",D)}finally{k=!1}}};(async()=>{J(!1),w("");try{const D=await Wv(pe,f.data.apps),b=await Kv(pe.id);if(!Y)return;v(b),J(!0),D>0&&se("success","Catálogo compartido activado",`${D} ${D===1?"aplicación fue migrada":"aplicaciones fueron migradas"} a Supabase.`)}catch(D){if(!Y)return;const b=D instanceof Error?D.message:"No se pudo cargar el catálogo compartido.";w(b),J(!0),se("error","No se pudo cargar el catálogo",b)}})();const U=Fv(()=>void S());return()=>{Y=!1,U()}},[pe==null?void 0:pe.id,pe==null?void 0:pe.role,f.data.apps,se]),H.useEffect(()=>{const Y=()=>{const k=window.location.hash==="#admin"?"admin":"hub";if(k==="admin"&&(r==null?void 0:r.user.role)!=="admin"){q("hub"),window.history.replaceState(null,"","#hub");return}q(k)};return Y(),window.addEventListener("hashchange",Y),()=>window.removeEventListener("hashchange",Y)},[r==null?void 0:r.user.role]);const Ae=Y=>{if(Y==="admin"&&(r==null?void 0:r.user.role)!=="admin"){se("error","Acceso restringido","Necesitas permisos de administrador para abrir este panel.");return}q(Y),window.history.replaceState(null,"",Ns(Y==="admin"?"#admin":"#hub")),window.scrollTo({top:0,behavior:"smooth"})},I=async Y=>{if(!r)return;const k=r.user.id,S=d.favoritesByUser[k]??[],T=S.includes(Y),U=T?S.filter(D=>D!==Y):[Y,...S];v(D=>({...D,favoritesByUser:{...D.favoritesByUser,[k]:U},updatedAt:new Date().toISOString()}));try{await kv(k,Y,!T),se("success",T?"Quitada de favoritos":"Agregada a favoritos")}catch(D){v(b=>({...b,favoritesByUser:{...b.favoritesByUser,[k]:S}})),se("error","No se actualizó el favorito",D instanceof Error?D.message:void 0)}},ne=Y=>{if(!r)return;const k=Jl(Y.url);if(!k){se("info","Enlace pendiente",`${Y.name} todavía no tiene un enlace configurado.`);return}const S=window.open(k,"_blank","noopener,noreferrer");S&&(S.opener=null);const T=r.user.id,U=d.recentByUser[T]??[],D=[Y.id,...U.filter(b=>b!==Y.id)].slice(0,30);v(b=>({...b,recentByUser:{...b.recentByUser,[T]:D},updatedAt:new Date().toISOString()})),$v(T,Y.id).catch(b=>console.warn("No se guardó el acceso reciente:",b))},Me=async(Y,k)=>{if(!r||r.user.role!=="admin")return null;const S=k?d.apps.find(T=>T.id===k)??null:null;try{const T=await bm(Y,S,r.user.id);return v(U=>({...U,apps:S?U.apps.map(D=>D.id===T.id?T:D):[T,...U.apps],updatedAt:new Date().toISOString()})),se("success",S?"Cambios guardados":"Aplicación publicada",`${T.name} ya está disponible en el catálogo compartido.`),T}catch(T){return se("error","No se guardó la aplicación",T instanceof Error?T.message:void 0),null}},Ue=async Y=>{if(!r||r.user.role!=="admin")return!1;const k=d.apps.find(S=>S.id===Y);if(!k)return!1;try{await Jv(k);const S=T=>Object.fromEntries(Object.entries(T).map(([U,D])=>[U,D.filter(b=>b!==Y)]));return v(T=>({...T,apps:T.apps.filter(U=>U.id!==Y),favoritesByUser:S(T.favoritesByUser),recentByUser:S(T.recentByUser),updatedAt:new Date().toISOString()})),se("success","Aplicación eliminada",`${k.name} salió del catálogo compartido.`),!0}catch(S){return se("error","No se eliminó la aplicación",S instanceof Error?S.message:void 0),!1}},ve=async Y=>{if(!r||r.user.role==="admin")return!1;if(!lm)return se("error","No se pudo enviar la solicitud","La función de solicitudes no está disponible en este momento."),!1;const k=new AbortController,S=window.setTimeout(()=>k.abort(),12e4);try{const{data:{session:T}}=await qe.auth.getSession();if(!(T!=null&&T.access_token))throw new Error("La sesión venció. Cierra sesión e inicia nuevamente.");const U=await fetch(lm,{method:"POST",mode:"cors",cache:"no-store",credentials:"omit",signal:k.signal,headers:{Accept:"application/json, text/plain;q=0.9","Content-Type":"text/plain;charset=UTF-8"},body:JSON.stringify({accessToken:T.access_token,appId:Y.id})}),D=await U.text();let b=null;if(D)try{b=JSON.parse(D)}catch{b=null}if(!U.ok||!(b!=null&&b.ok)){const o=String((b==null?void 0:b.error)||"").toLowerCase();let A="No pudimos enviar la solicitud en este momento. Intenta nuevamente.";throw o.includes("pendiente")?A="Ya tienes una solicitud pendiente para esta aplicación.":o.includes("sesión")||U.status===401?A="Tu sesión venció. Cierra sesión e inicia nuevamente.":o.includes("ya no está publicada")||o.includes("no está disponible")?A="La aplicación seleccionada ya no está disponible.":(o.includes("no está autorizado")||U.status===403)&&(A="Tu cuenta no está habilitada para enviar esta solicitud."),console.error("Error interno al enviar la solicitud de acceso",{status:U.status,responseText:D}),new Error(A)}return se("success","Solicitud enviada",b.message||`La solicitud para ${Y.name} fue enviada correctamente.`),!0}catch(T){return T instanceof DOMException&&T.name==="AbortError"?se("error","La solicitud tardó demasiado","Intenta nuevamente en unos minutos."):T instanceof TypeError&&/failed to fetch/i.test(T.message)?(console.error("No se pudo contactar el servicio de solicitudes",T),se("error","No se pudo enviar la solicitud","Intenta nuevamente en unos minutos.")):se("error","No se pudo enviar la solicitud",T instanceof Error?T.message:"Intenta nuevamente en unos minutos."),!1}finally{window.clearTimeout(S)}},He=async()=>{Z("");const{error:Y}=await qe.auth.signInWithOAuth({provider:"google",options:{redirectTo:Pv(),queryParams:{hd:"gomezleemarketing.com",prompt:"select_account"}}});Y&&(console.error("No se pudo iniciar el acceso con Google:",Y),Z("No pudimos abrir el acceso con Google. Intenta nuevamente."))},lt=async()=>{const{error:Y}=await qe.auth.signOut();if(Y){se("error","No se pudo cerrar la sesión",Y.message);return}x(null),J(!1),q("hub"),window.history.replaceState(null,"",Ns())};return!E||!r?c.jsxs(c.Fragment,{children:[c.jsx(i0,{onLogin:He,error:ee,disabled:!E}),c.jsx(Ts,{messages:K,onDismiss:Te})]}):B?c.jsxs("div",{className:"app-shell",children:[c.jsx(c0,{user:r.user,view:z,onNavigate:Ae,onLogout:lt}),c.jsx(s0,{user:r.user}),z==="admin"&&r.user.role==="admin"?c.jsx(b0,{data:d,onSave:Me,onDelete:Ue,onBack:()=>Ae("hub")}):c.jsx(y0,{user:r.user,data:d,storageWarning:ye,onActivate:ne,onFavorite:Y=>void I(Y),onAdmin:()=>Ae("admin"),onRequestAccess:ve}),c.jsx(f0,{user:r.user,view:z,onNavigate:Ae,onLogout:lt}),c.jsx(Ts,{messages:K,onDismiss:Te})]}):c.jsxs(c.Fragment,{children:[c.jsx(p0,{}),c.jsx(Ts,{messages:K,onDismiss:Te})]})}const um="https://dbit.digitalcompass.agency/storage/v1/object/public/public-assets/GLM.png?v=glm-hub-20260722-v3";function _0(){document.querySelectorAll('link[rel="icon"], link[rel="shortcut icon"]').forEach(v=>{v.remove()});const f=document.createElement("link");f.rel="icon",f.type="image/png",f.sizes="512x512",f.href=um,document.head.appendChild(f);const d=document.createElement("link");d.rel="shortcut icon",d.type="image/png",d.href=um,document.head.appendChild(d)}_0();tv.createRoot(document.getElementById("root")).render(c.jsx(H.StrictMode,{children:c.jsx(S0,{})})); diff --git a/dist/assets/index-Bjd4VYUU.css b/dist/assets/index-Bjd4VYUU.css deleted file mode 100644 index 0315e1f..0000000 --- a/dist/assets/index-Bjd4VYUU.css +++ /dev/null @@ -1 +0,0 @@ -:root{font-family:Arial,sans-serif;color:#4a4a4a;background:#fff;font-synthesis:none;text-rendering:optimizeLegibility;--glm-blue: #4f758b;--glm-blue-mid: #5b7f95;--glm-steel: #6b8fa3;--glm-green: #6cc24a;--glm-lime: #c4d600;--glm-teal: #2c6e6f;--glm-orange: #ff6a13;--text: #4a4a4a;--muted: #6b6b6b;--line: #d0d0d0;--paper: #ffffff;--soft: #f5f5f5;--green-soft: #eef6e8;--danger: #b13b2d;--sidebar-width: 244px}*{box-sizing:border-box}html{min-width:320px;min-height:100%;scroll-behavior:smooth}body{min-width:320px;min-height:100vh;margin:0;background:var(--paper);color:var(--text)}button,input,textarea,select{font:inherit}button,a,input,textarea,select{-webkit-tap-highlight-color:transparent}button{color:inherit}button:not(:disabled){cursor:pointer}button:disabled{cursor:wait;opacity:.66}img{display:block;max-width:100%}::selection{background:#eef6e8;color:#2c4a59}:focus-visible{outline:3px solid var(--glm-green);outline-offset:3px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.brand-logo{width:202px;height:auto}.brand-logo--compact{width:154px}.section-kicker,.eyebrow{margin:0 0 10px;color:var(--glm-blue);font-size:.72rem;font-weight:700;letter-spacing:.17em;line-height:1.2}.primary-button,.secondary-button,.danger-button{min-height:48px;display:inline-flex;align-items:center;justify-content:center;gap:10px;border:1px solid transparent;border-radius:3px;padding:0 20px;font-weight:700;transition:background-color .16s ease,color .16s ease,border-color .16s ease,transform .16s ease}.primary-button{position:relative;overflow:hidden;background:var(--glm-blue);color:#fff}.primary-button:after{content:"";position:absolute;left:0;bottom:0;width:100%;height:3px;background:var(--glm-green)}.primary-button:hover{background:#3f6378;transform:translateY(-1px)}.primary-button--full{width:100%}.primary-button--full svg:last-child{margin-left:auto}.secondary-button{background:#fff;border-color:var(--glm-blue);color:var(--glm-blue)}.secondary-button:hover{background:var(--soft)}.secondary-button--quiet{border-color:var(--line);color:var(--text)}.danger-button{background:transparent;border-color:#e4c6c1;color:var(--danger)}.danger-button:hover{background:#fdecea;border-color:var(--danger)}.danger-button--solid{background:var(--danger);border-color:var(--danger);color:#fff}.text-button{min-height:40px;border:0;border-bottom:1px solid currentColor;padding:0;background:transparent;color:var(--glm-blue);font-weight:700}.text-button--muted{color:var(--muted);font-size:.78rem}.text-button--danger{color:var(--danger);font-size:.78rem}.icon-button,.favorite-button{width:44px;height:44px;display:inline-grid;flex:0 0 auto;place-items:center;border:1px solid var(--line);border-radius:50%;background:#fff;color:var(--glm-blue)}.icon-button:hover,.favorite-button:hover{border-color:var(--glm-blue);background:var(--soft)}.icon-button--quiet{width:36px;height:36px;border-color:transparent;background:transparent}.icon-button--accent{border-radius:3px;background:var(--glm-blue);border-color:var(--glm-blue);color:#fff}.favorite-button.is-favorite{border-color:#d7e58f;background:#f8f9df;color:#718000}.app-mark{position:relative;display:inline-grid;flex:0 0 auto;place-items:center;overflow:visible;background:transparent}.app-mark--small{width:44px;height:44px}.app-mark--regular{width:58px;height:58px}.app-mark--large{width:72px;height:72px}.app-mark img{display:block;width:100%;height:100%;object-fit:contain}.app-mark__placeholder{color:#a7a7a7}.login-shell{min-height:100vh;display:grid;grid-template-columns:minmax(0,1.28fr) minmax(420px,.72fr);background:#fff}.login-story{position:relative;min-height:100vh;display:flex;flex-direction:column;overflow:hidden;border-right:1px solid var(--line);padding:42px clamp(40px,5vw,82px) 36px;background:#fff}.login-story:before{content:"";position:absolute;top:0;left:clamp(40px,5vw,82px);width:3px;height:126px;background:var(--glm-green)}.login-story__topline{position:relative;z-index:2;display:flex;align-items:flex-start;justify-content:space-between;gap:24px;padding-left:18px}.login-story__edition{padding-top:10px;color:var(--glm-blue);font-size:.7rem;font-weight:700;letter-spacing:.18em}.login-story__content{position:relative;z-index:2;width:min(760px,92%);margin:auto 0;padding:80px 0 76px}.login-story h1{margin:0;color:var(--glm-blue);font-family:Arial Black,Arial,sans-serif;font-size:clamp(3.5rem,6.35vw,7.7rem);font-weight:900;letter-spacing:-.075em;line-height:.85}.login-story h1 span{display:block;margin-top:.14em;color:var(--text);font-family:Arial,sans-serif;font-size:.49em;font-weight:400;letter-spacing:-.052em;line-height:1}.login-story__lede{max-width:540px;margin:36px 0 0;padding-left:20px;border-left:3px solid var(--glm-green);color:var(--text);font-size:clamp(1rem,1.35vw,1.2rem);line-height:1.55}.login-story__signal{position:relative;z-index:2;display:grid;grid-template-columns:auto minmax(40px,1fr) auto;align-items:center;gap:14px;max-width:530px;color:var(--glm-blue);font-size:.7rem;font-weight:700;letter-spacing:.14em}.login-story__signal-line{height:1px;background:var(--line)}.login-story__signal-line:before{content:"";display:block;width:18%;height:2px;background:var(--glm-green)}.login-story__place{position:relative;z-index:2;margin:10px 0 0;color:var(--muted);font-size:.65rem;letter-spacing:.16em}.login-story__type{position:absolute;right:-.06em;bottom:-.28em;color:var(--soft);font-family:Arial Black,Arial,sans-serif;font-size:clamp(13rem,27vw,31rem);font-weight:900;letter-spacing:-.13em;line-height:1;pointer-events:none;-webkit-user-select:none;user-select:none}.login-panel{min-height:100vh;display:grid;place-items:center;padding:48px clamp(34px,4vw,72px);background:var(--soft)}.login-panel__inner{width:min(100%,460px)}.login-panel__heading h2{margin:0 0 10px;color:var(--glm-blue);font-family:Arial Black,Arial,sans-serif;font-size:clamp(2rem,3vw,3rem);letter-spacing:-.045em;line-height:1}.login-panel__heading>p:last-child{margin:0;color:var(--muted);line-height:1.55}.login-form{margin-top:34px}.form-field{display:grid;gap:8px;margin-bottom:20px}.form-field label{color:var(--text);font-size:.81rem;font-weight:700}.form-field label>span{margin-left:6px;color:var(--muted);font-size:.72rem;font-weight:400}.form-field label>.required-mark,.editor-form__section-title>.required-mark{margin-left:4px;color:var(--danger);font-size:1em;font-weight:700}.form-field__label-row{display:flex;align-items:center;justify-content:space-between;gap:16px}.form-field__label-row>span{color:var(--muted);font-size:.7rem}.form-field input,.form-field textarea,.form-field select{width:100%;border:1px solid var(--line);border-radius:3px;background:#fff;color:var(--text);transition:border-color .14s ease,box-shadow .14s ease}.form-field input,.form-field select{height:50px;padding:0 14px}.form-field textarea{min-height:94px;resize:vertical;padding:13px 14px;line-height:1.5}.form-field input::placeholder,.form-field textarea::placeholder{color:#8a8a8a}.form-field input:hover,.form-field textarea:hover,.form-field select:hover{border-color:#97a9b3}.form-field input:focus,.form-field textarea:focus,.form-field select:focus{border-color:var(--glm-blue);box-shadow:inset 3px 0 0 var(--glm-green);outline:none}.form-field input[aria-invalid=true],.form-field textarea[aria-invalid=true]{border-color:var(--danger)}.password-field,.url-field{position:relative}.password-field input{padding-right:50px}.password-field__toggle{position:absolute;top:3px;right:3px;width:44px;height:44px;display:grid;place-items:center;border:0;background:transparent;color:var(--glm-blue)}.form-error,.field-error{color:var(--danger);font-size:.77rem;line-height:1.4}.form-error{margin:-4px 0 18px;padding:11px 12px;border-left:3px solid var(--danger);background:#fdecea}.check-control{min-height:44px;display:flex;align-items:center;gap:10px;margin:2px 0 18px;color:var(--text);font-size:.8rem;cursor:pointer}.check-control input{position:absolute;width:1px;height:1px;overflow:hidden;opacity:0}.check-control>span{width:20px;height:20px;display:grid;place-items:center;border:1px solid var(--line);border-radius:2px;background:#fff;color:transparent}.check-control input:checked+span{border-color:var(--glm-blue);background:var(--glm-blue);color:#fff}.check-control input:focus-visible+span{outline:3px solid var(--glm-green);outline-offset:3px}.demo-access{margin-top:30px}.demo-access__label,.app-preview__label{display:flex;align-items:center;gap:12px;color:var(--muted);font-size:.62rem;font-weight:700;letter-spacing:.14em}.demo-access__rule,.app-preview__rule{height:1px;flex:1;background:var(--line)}.demo-access__options{margin-top:10px;border-top:1px solid var(--line)}.demo-access__options button{width:100%;min-height:62px;display:grid;grid-template-columns:24px 1fr 20px;align-items:center;gap:12px;border:0;border-bottom:1px solid var(--line);padding:8px 4px;background:transparent;color:var(--glm-blue);text-align:left}.demo-access__options button:hover{padding-left:10px;background:#fff}.demo-access__options button span{display:grid;gap:3px}.demo-access__options button strong{color:var(--text);font-size:.8rem}.demo-access__options button small{color:var(--muted);font-size:.69rem}.demo-note{margin:18px 0 0;color:var(--muted);font-size:.68rem;line-height:1.45}.app-shell{min-height:100vh;background:#fff}.sidebar{position:fixed;top:0;bottom:0;left:0;z-index:20;width:var(--sidebar-width);display:flex;flex-direction:column;border-right:1px solid var(--line);background:#fff}.sidebar__brand{height:116px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:7px;border-bottom:1px solid var(--line);padding:0 26px}.sidebar__brand span{color:var(--glm-blue);font-size:.58rem;font-weight:700;letter-spacing:.28em}.sidebar__nav{display:grid;gap:4px;padding:28px 16px}.sidebar__nav button{position:relative;min-height:52px;display:flex;align-items:center;gap:14px;border:0;border-radius:2px;padding:0 14px;background:transparent;color:var(--muted);font-size:.82rem;font-weight:700;text-align:left}.sidebar__nav button:hover{background:var(--soft);color:var(--glm-blue)}.sidebar__nav button.is-active{background:var(--green-soft);color:var(--glm-blue)}.sidebar__meta{padding:22px 28px;border-top:1px solid var(--line)}.sidebar__meta p{margin:12px 0 0;color:var(--muted);font-size:.6rem;font-weight:700;letter-spacing:.14em}.sidebar__meta p+p{margin-top:4px}.sidebar__account{margin-top:auto;min-height:88px;display:flex;align-items:center;gap:10px;border-top:1px solid var(--line);padding:16px}.avatar{width:38px;height:38px;display:grid;flex:0 0 auto;place-items:center;overflow:hidden;border-radius:50%;background:var(--glm-blue);color:#fff;font-size:.67rem;font-weight:700;letter-spacing:.03em}.avatar img{display:block;width:100%;height:100%;object-fit:cover}.sidebar__account-copy{min-width:0;flex:1;display:grid;gap:3px}.sidebar__account-copy strong,.sidebar__account-copy small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar__account-copy strong{color:var(--text);font-size:.77rem}.sidebar__account-copy small{color:var(--muted);font-size:.62rem}.sidebar__account .icon-button{width:38px;height:38px;border:0}.mobile-header,.mobile-nav{display:none}.page-content{min-height:100vh;margin-left:var(--sidebar-width);padding:42px clamp(36px,5vw,82px) 72px}.page-header{display:flex;align-items:flex-end;justify-content:space-between;gap:30px;padding-bottom:30px;border-bottom:1px solid var(--line)}.page-header__meta{margin:0 0 9px;color:var(--glm-blue);font-size:.72rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase}.page-header h1{margin:0;color:var(--glm-blue);font-family:Arial Black,Arial,sans-serif;font-size:clamp(2.4rem,4.2vw,4.85rem);letter-spacing:-.065em;line-height:.9}.page-header__aside{display:grid;justify-items:end;padding-bottom:4px}.page-header__aside>span:last-child{color:var(--muted);font-size:.82rem;font-weight:700;line-height:1.35;white-space:nowrap}.inline-alert{margin-top:18px;border-left:3px solid var(--glm-orange);padding:12px 14px;background:#fff8e1;color:var(--text);font-size:.82rem}.search-stage{position:relative;overflow:hidden;display:flex;flex-direction:column;align-items:stretch;gap:22px;margin-top:38px;border-left:3px solid var(--glm-green);padding:34px 38px 32px;background:var(--soft)}.search-stage__copy,.hub-search{position:relative;z-index:2}.search-stage h2,.section-heading h2,.admin-bridge h2,.access-request-bridge h2,.admin-list h2,.app-editor h2{margin:0;color:var(--glm-blue);font-family:Arial Black,Arial,sans-serif;letter-spacing:-.04em}.search-stage h2{max-width:100%;font-size:clamp(2rem,3.3vw,3.5rem);line-height:1.05}.hub-search{min-height:62px;display:grid;grid-template-columns:24px 1fr auto;align-items:center;gap:13px;border-bottom:2px solid var(--glm-blue);background:#fff;padding:0 16px;color:var(--glm-blue)}.hub-search:focus-within{border-bottom-color:var(--glm-green);box-shadow:0 0 0 1px var(--line)}.hub-search input{width:100%;height:60px;border:0;outline:0;background:transparent;color:var(--text);font-size:.96rem}.hub-search input::placeholder{color:#747474}.hub-search button{width:40px;height:40px;display:grid;place-items:center;border:0;background:transparent;color:var(--glm-blue)}.hub-search kbd{border:1px solid var(--line);border-radius:3px;padding:4px 7px;background:var(--soft);color:var(--muted);font-family:Arial,sans-serif;font-size:.65rem}.search-stage__coordinate{position:absolute;top:-.31em;right:.02em;color:#e9e9e9;font-family:Arial Black,Arial,sans-serif;font-size:clamp(5.5rem,10vw,10rem);letter-spacing:-.08em;line-height:1;-webkit-user-select:none;user-select:none}.quick-section,.directory-section{margin-top:64px}.section-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:28px;margin-bottom:22px}.section-heading h2{font-size:clamp(1.75rem,2.5vw,2.8rem)}.section-heading>p{max-width:340px;margin:0 0 2px;color:var(--muted);font-size:.82rem;line-height:1.5;text-align:right}.quick-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));align-items:stretch;gap:14px}.quick-launch{--card-accent: var(--glm-green);min-width:0;min-height:360px;display:flex;flex-direction:column;border:1px solid var(--line);border-top:3px solid var(--glm-green);border-radius:2px;padding:28px;background:#fff;transition:border-color .16s ease,transform .16s ease}.quick-launch:hover{border-right-color:var(--glm-blue);border-bottom-color:var(--glm-blue);border-left-color:var(--glm-blue);transform:translateY(-3px)}.quick-launch__top{display:flex;align-items:flex-start;justify-content:space-between;gap:20px}.quick-launch__copy{flex:1;margin-top:48px}.quick-launch__category{color:var(--glm-blue);font-size:.64rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase}.quick-launch h3,.preview-card h3{margin:9px 0 8px;color:var(--text);font-family:Arial Black,Arial,sans-serif;font-size:1.35rem;letter-spacing:-.035em;line-height:1.05}.quick-launch h3{color:var(--glm-blue);font-size:1.55rem}.quick-launch p,.preview-card p{margin:0;color:var(--muted);font-size:.82rem;line-height:1.5}.quick-launch__action{width:100%;min-height:46px;display:flex;align-items:center;justify-content:space-between;gap:14px;margin-top:auto;border:0;border-top:1px solid var(--line);padding:13px 0 0;background:transparent;color:var(--glm-blue);font-size:.76rem;font-weight:700;text-align:left}.quick-launch__action:hover{color:var(--glm-teal)}.section-heading--directory{padding-bottom:18px;border-bottom:1px solid var(--line)}.directory-count{display:flex;align-items:baseline;gap:7px}.directory-count strong{color:var(--glm-blue);font-family:Arial Black,Arial,sans-serif;font-size:2rem;letter-spacing:-.06em}.directory-count span{color:var(--muted);font-size:.7rem}.filter-bar{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:18px}.category-filters{display:flex;align-items:center;gap:4px}.category-filters button,.favorites-filter{min-height:44px;border:0;border-bottom:2px solid transparent;padding:0 12px;background:transparent;color:var(--muted);font-size:.74rem;font-weight:700;white-space:nowrap}.category-filters button:hover,.favorites-filter:hover{color:var(--glm-blue)}.category-filters button.is-active{border-bottom-color:var(--glm-green);color:var(--glm-blue)}.favorites-filter{display:inline-flex;align-items:center;gap:8px}.favorites-filter.is-active{border-bottom-color:var(--glm-lime);color:#617000}.directory-list{border-top:1px solid var(--text)}.pagination{display:flex;align-items:center;justify-content:center;gap:8px;margin-top:24px}.pagination__pages{display:flex;align-items:center;justify-content:center;gap:6px}.pagination__arrow,.pagination__page{width:36px;height:36px;display:grid;flex:0 0 auto;place-items:center;border:1px solid var(--line);border-radius:3px;background:#fff;color:var(--glm-blue);font-size:.74rem;font-weight:700;transition:background-color .14s ease,border-color .14s ease,color .14s ease}.pagination__arrow:hover:not(:disabled),.pagination__page:hover:not(.is-active){border-color:var(--glm-blue);background:var(--soft)}.pagination__page.is-active{border-color:var(--glm-blue);background:var(--glm-blue);color:#fff}.pagination__arrow:disabled{cursor:not-allowed;opacity:.35}.pagination__ellipsis{width:24px;color:var(--muted);font-size:.8rem;line-height:1;text-align:center}.pagination--compact{gap:5px}.pagination--compact .pagination__pages{gap:4px}.pagination--compact .pagination__arrow,.pagination--compact .pagination__page{width:30px;height:30px;font-size:.66rem}.pagination--compact .pagination__ellipsis{width:16px;font-size:.7rem}.directory-row{min-height:92px;display:grid;grid-template-columns:42px 44px minmax(220px,1fr) 110px 128px 44px 86px;align-items:center;gap:14px;border-bottom:1px solid var(--line);padding:14px 0;transition:background-color .14s ease,padding .14s ease}.directory-row:hover{padding-right:10px;padding-left:10px;background:var(--soft)}.directory-row__number{color:#919191;font-family:Arial Black,Arial,sans-serif;font-size:.65rem;letter-spacing:.06em}.directory-row__copy{min-width:0}.directory-row__copy h3{margin:0 0 5px;color:var(--text);font-size:.92rem;line-height:1.2}.directory-row__copy p{overflow:hidden;margin:0;color:var(--muted);font-size:.72rem;line-height:1.4;text-overflow:ellipsis;white-space:nowrap}.directory-row__category{color:var(--glm-blue);font-size:.65rem;font-weight:700}.availability{display:inline-flex;align-items:center;gap:7px;color:var(--muted);font-size:.67rem;font-weight:700;white-space:nowrap}.availability>span{width:7px;height:7px;flex:0 0 auto;border-radius:50%;background:var(--line)}.availability--ready>span{background:var(--glm-green);box-shadow:0 0 0 3px var(--green-soft)}.availability--pending>span{background:var(--glm-orange);box-shadow:0 0 0 3px #fff1e8}.directory-row .favorite-button{width:40px;height:40px;border:0;background:transparent}.directory-row__open{min-height:42px;display:flex;align-items:center;justify-content:flex-end;gap:7px;border:0;background:transparent;color:var(--glm-blue);font-size:.74rem;font-weight:700}.empty-state{min-height:280px;display:grid;grid-template-columns:minmax(110px,.35fr) minmax(260px,.65fr);align-items:center;gap:40px;border-top:1px solid var(--text);border-bottom:1px solid var(--line);padding:38px}.empty-state__mark{color:var(--soft);font-family:Arial Black,Arial,sans-serif;font-size:10rem;letter-spacing:-.1em;line-height:.7}.empty-state h3{margin:0 0 8px;color:var(--glm-blue);font-family:Arial Black,Arial,sans-serif;font-size:1.6rem;letter-spacing:-.04em}.empty-state p:not(.section-kicker){margin:0 0 18px;color:var(--muted);font-size:.84rem;line-height:1.5}.admin-bridge{position:relative;overflow:hidden;min-height:190px;display:grid;grid-template-columns:minmax(70px,.25fr) minmax(300px,1fr) auto;align-items:center;gap:30px;margin-top:70px;border-top:1px solid var(--text);border-bottom:3px solid var(--glm-green);padding:30px 8px}.admin-bridge__number{color:var(--glm-green);font-family:Arial Black,Arial,sans-serif;font-size:7rem;line-height:.7}.admin-bridge h2{font-size:2rem}.admin-bridge p:not(.section-kicker){margin:8px 0 0;color:var(--muted);font-size:.84rem;line-height:1.5}.access-request-bridge{position:relative;min-height:190px;display:grid;grid-template-columns:minmax(70px,.25fr) minmax(300px,1fr) auto;align-items:center;gap:30px;margin-top:70px;border-top:1px solid var(--text);border-bottom:3px solid var(--glm-green);padding:30px 8px}.access-request-bridge__number{color:var(--glm-green);font-family:Arial Black,Arial,sans-serif;font-size:6.5rem;line-height:.72}.access-request-bridge h2{font-size:2rem}.access-request-bridge p:not(.section-kicker){margin:8px 0 0;color:var(--muted);font-size:.84rem;line-height:1.5}.access-request-dialog{width:min(560px,calc(100vw - 32px));border:0;border-top:4px solid var(--glm-green);border-radius:3px;padding:34px;color:var(--text);box-shadow:0 24px 80px #2d363b38}.access-request-dialog::backdrop{background:#2330378f}.access-request-dialog__close{position:absolute;top:12px;right:12px;width:40px;height:40px;display:grid;place-items:center;border:0;background:transparent;color:var(--muted)}.access-request-dialog h2{margin:0;color:var(--glm-blue);font-family:Arial Black,Arial,sans-serif;font-size:2rem;letter-spacing:-.04em}.access-request-dialog__intro{margin:10px 0 34px;color:var(--muted);font-size:.82rem;line-height:1.55}.access-request-dialog form{display:grid;gap:20px;margin-top:4px}.access-request-dialog__actions{display:flex;justify-content:flex-end;gap:10px;margin-top:8px;padding-top:22px;border-top:1px solid var(--line)}.back-button{min-height:40px;display:inline-flex;align-items:center;gap:8px;margin-bottom:18px;border:0;border-bottom:1px solid var(--line);padding:0;background:transparent;color:var(--glm-blue);font-size:.75rem;font-weight:700}.admin-header{align-items:center}.admin-header__note{display:flex;align-items:center;gap:12px;border-left:3px solid var(--glm-green);padding:10px 0 10px 14px;color:var(--glm-blue)}.admin-header__note span{display:grid;gap:3px}.admin-header__note strong{color:var(--text);font-size:.74rem}.admin-header__note small{color:var(--muted);font-size:.66rem}.admin-workspace{min-height:680px;display:grid;grid-template-columns:300px minmax(0,1fr);margin-top:34px;border:1px solid var(--line)}.admin-list{min-width:0;display:flex;flex-direction:column;border-right:1px solid var(--line);background:var(--soft)}.admin-list__top{min-height:94px;display:flex;align-items:center;justify-content:space-between;gap:20px;border-bottom:1px solid var(--line);padding:20px}.admin-list h2{font-size:1.25rem}.admin-list__search{display:grid;grid-template-columns:20px 1fr;align-items:center;gap:9px;margin:14px;border:1px solid var(--line);background:#fff;padding:0 11px;color:var(--glm-blue)}.admin-list__search input{width:100%;height:42px;border:0;outline:0;background:transparent;font-size:.77rem}.admin-list__items{min-height:0;flex:1;overflow-y:auto;border-top:1px solid var(--line)}.admin-list__items>button,.admin-list__item-row{position:relative;width:100%;min-height:70px;display:grid;grid-template-columns:44px minmax(0,1fr) auto;align-items:center;gap:11px;border:0;border-bottom:1px solid var(--line);padding:10px 14px;background:transparent;text-align:left;cursor:pointer}.admin-list__items>button:hover,.admin-list__item-row:hover{background:#fff}.admin-list__items>button.is-active,.admin-list__item-row.is-active{background:#fff}.admin-list__items>button.is-active:before,.admin-list__item-row.is-active:before{content:"";position:absolute;top:0;bottom:0;left:0;width:3px;background:var(--glm-green)}.admin-list__item-info{min-width:0;display:flex;flex-direction:column;gap:3px;text-align:left}.admin-list__item-info strong{display:block;color:var(--text);font-size:.76rem;font-weight:700;line-height:1.25}.admin-list__item-info small{display:block;color:var(--muted);font-size:.64rem;font-weight:400;line-height:1.2}.admin-list__item-actions{display:flex;align-items:center;gap:8px}.admin-list__delete-icon{width:28px;height:28px;display:grid;place-items:center;border:0;border-radius:3px;background:transparent;color:#a0a0a0;transition:color .14s ease,background-color .14s ease}.admin-list__delete-icon:hover{color:var(--danger);background:#fdecea}.admin-list__items strong,.admin-list__items small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.admin-list__new-icon{width:38px;height:38px;display:grid;place-items:center;border:1px dashed var(--glm-blue);border-radius:3px;color:var(--glm-blue)}.mini-status{color:var(--glm-blue);font-size:.57rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase}.mini-status.is-hidden{color:var(--muted)}.admin-list>.pagination{flex:0 0 auto;justify-content:space-between;margin-top:0;border-top:1px solid var(--line);padding:10px 12px;background:#fff}.app-editor{min-width:0;padding:28px clamp(24px,3.4vw,52px) 44px}.app-editor__heading{display:flex;align-items:flex-start;justify-content:space-between;gap:24px;border-bottom:1px solid var(--line);padding-bottom:20px}.app-editor h2{font-size:clamp(1.5rem,2.4vw,2.35rem)}.dirty-state{display:inline-flex;align-items:center;gap:7px;color:var(--muted);font-size:.65rem;font-weight:700;white-space:nowrap}.dirty-state>span{width:7px;height:7px;border-radius:50%;background:var(--glm-green)}.dirty-state.is-dirty>span{background:var(--glm-orange)}.editor-layout{display:grid;grid-template-columns:minmax(0,1fr) 260px;align-items:start;gap:clamp(28px,4vw,54px);margin-top:28px}.editor-form__section{display:grid;gap:18px;margin:0;border-bottom:1px solid var(--line);padding:0 0 28px}.editor-form__section+.editor-form__section{padding-top:28px}.editor-form__section-title{margin:0 0 2px;color:var(--glm-blue);font-size:.72rem;font-weight:700;letter-spacing:.12em;line-height:1.2;text-transform:uppercase}.editor-form .form-field{margin:0}.form-split{display:grid;grid-template-columns:1fr 1fr;gap:16px}.field-meta{display:flex;justify-content:space-between;gap:14px;color:var(--muted);font-size:.66rem;line-height:1.4}.field-meta>span:last-child{flex:0 0 auto}.field-meta--counter-only{justify-content:flex-end}.field-help{color:var(--muted);font-size:.67rem;line-height:1.4}.field-error--standalone{margin:0}.icon-config{display:flex;align-items:center;gap:18px}.ai-icon-actions{display:flex;align-items:center}.ai-icon-button{min-height:44px}.icon-dropzone{min-height:80px;display:grid;flex:1;grid-template-columns:42px 1fr;align-items:center;gap:13px;border:1px dashed var(--glm-blue);border-radius:3px;padding:14px;background:var(--soft);cursor:pointer;transition:border-color .14s ease,background-color .14s ease}.icon-dropzone:hover,.icon-dropzone.is-dragging{border-color:var(--glm-green);background:var(--green-soft)}.icon-dropzone input{position:absolute;width:1px;height:1px;overflow:hidden;opacity:0}.icon-dropzone:focus-within{outline:3px solid var(--glm-green);outline-offset:3px}.icon-dropzone__symbol{width:42px;height:42px;display:grid;place-items:center;border-radius:3px;background:#fff;color:var(--glm-blue)}.icon-dropzone>span:last-child{display:grid;gap:4px}.icon-dropzone strong{color:var(--text);font-size:.77rem}.icon-dropzone small{color:var(--muted);font-size:.65rem}.url-field{display:grid;grid-template-columns:24px 1fr;align-items:center;border:1px solid var(--line);border-radius:3px;padding:0 12px;background:#fff;color:var(--glm-blue)}.url-field:focus-within{border-color:var(--glm-blue);box-shadow:inset 3px 0 0 var(--glm-green)}.url-field input{border:0;box-shadow:none;padding:0 3px}.url-field input:focus{box-shadow:none}.editor-actions{display:flex;align-items:center;gap:10px;padding-top:26px}.editor-actions .danger-button{margin-left:auto}.app-preview{position:sticky;top:28px}.preview-card{min-height:302px;display:flex;flex-direction:column;align-items:flex-start;margin-top:14px;border:1px solid var(--line);border-top:3px solid var(--glm-green);padding:22px;background:#fff}.preview-card .app-mark{margin-bottom:36px}.preview-card .availability{margin-top:auto;padding-top:24px}.app-preview__note{margin:12px 0 0;color:var(--muted);font-size:.65rem;line-height:1.45}.confirm-dialog{width:min(440px,calc(100vw - 32px));border:0;border-top:4px solid var(--danger);border-radius:3px;padding:30px;color:var(--text);box-shadow:0 24px 80px #2d363b38}.confirm-dialog::backdrop{background:#2330378f}.confirm-dialog__close{position:absolute;top:12px;right:12px;width:40px;height:40px;display:grid;place-items:center;border:0;background:transparent;color:var(--muted)}.confirm-dialog__icon{width:48px;height:48px;display:grid;place-items:center;margin-bottom:28px;border-radius:50%;background:#fdecea;color:var(--danger)}.confirm-dialog h2{margin:0;color:var(--text);font-family:Arial Black,Arial,sans-serif;font-size:1.6rem;letter-spacing:-.04em}.confirm-dialog>p:not(.section-kicker){margin:12px 0 0;color:var(--muted);font-size:.82rem;line-height:1.55}.confirm-dialog__actions{display:flex;justify-content:flex-end;gap:10px;margin-top:28px}.generation-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:200;display:grid;place-items:center;padding:24px;background:#162128b8;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.generation-overlay__card{width:min(460px,100%);display:grid;justify-items:center;border-top:4px solid var(--glm-green);padding:38px 34px;background:#fff;box-shadow:0 24px 70px #00000047;text-align:center}.generation-overlay__card h2{margin:10px 0 0;color:var(--glm-blue);font-family:Arial Black,Arial,sans-serif;font-size:1.75rem;letter-spacing:-.04em}.generation-overlay__card>p:last-child{max-width:350px;margin:12px 0 0;color:var(--muted);font-size:.82rem;line-height:1.5}.generation-spinner{width:40px;height:40px;margin-bottom:20px;border:4px solid var(--line);border-top-color:var(--glm-green);border-radius:50%;animation:glm-spin .8s linear infinite}.catalog-loading{min-height:100vh;display:grid;place-items:center;align-content:center;gap:18px;background:#fff;color:var(--glm-blue);font-size:.85rem;font-weight:700}.catalog-loading .brand-logo{width:150px;margin-bottom:8px}.catalog-loading .generation-spinner,.catalog-loading p{margin:0}@keyframes glm-spin{to{transform:rotate(360deg)}}.toast-stack{position:fixed;right:24px;bottom:24px;z-index:100;width:min(390px,calc(100vw - 32px));display:grid;gap:10px}.toast{position:relative;display:grid;grid-template-columns:3px 1fr 36px;align-items:center;gap:14px;overflow:hidden;border:1px solid var(--line);border-radius:3px;padding:13px 10px 13px 0;background:#fff;box-shadow:0 16px 44px #32444e29}.toast__signal{align-self:stretch;background:var(--glm-green)}.toast>div,.toast .icon-button{align-self:center}.toast--info .toast__signal{background:var(--glm-blue)}.toast--error .toast__signal{background:var(--danger)}.toast strong{display:block;margin-top:0;color:var(--text);font-size:.8rem}.toast p{margin:4px 0 0;color:var(--muted);font-size:.7rem;line-height:1.45}@media(max-width:1240px){:root{--sidebar-width: 214px}.sidebar__brand{padding:0 20px}.sidebar__brand .brand-logo{width:140px}.sidebar__account-copy{display:none}.directory-row{grid-template-columns:34px 44px minmax(190px,1fr) 112px 44px 80px}.directory-row__category{display:none}.editor-layout{grid-template-columns:minmax(0,1fr) 230px;gap:28px}}@media(max-width:1360px){.editor-layout{grid-template-columns:1fr}.app-preview{position:static}.preview-card{width:100%;min-height:260px}}@media(max-width:1040px){.page-content{padding-right:32px;padding-left:32px}.search-stage{gap:20px}.quick-grid{grid-template-columns:1fr 1fr}.directory-row{grid-template-columns:34px 44px minmax(160px,1fr) 108px 44px 44px}.directory-row__open span{display:none}.admin-workspace{grid-template-columns:250px minmax(0,1fr)}}@media(max-width:860px){:root{--mobile-header-height: 72px;--mobile-nav-height: 72px}.login-shell{grid-template-columns:1fr}.login-story{min-height:540px;border-right:0;border-bottom:1px solid var(--line)}.login-story__content{margin:auto 0 0;padding:72px 0 54px}.login-story__type{right:-.03em;bottom:-.3em;font-size:20rem}.login-panel{min-height:auto;padding-top:64px;padding-bottom:64px}.sidebar{display:none}.mobile-header{position:fixed;top:0;right:0;left:0;z-index:30;height:var(--mobile-header-height);display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);padding:10px 22px;background:#fffffff5}.mobile-header:before{content:"";position:absolute;top:0;left:0;width:94px;height:3px;background:var(--glm-green)}.mobile-header .brand-logo{width:135px}.mobile-nav{position:fixed;right:0;bottom:0;left:0;z-index:30;min-height:var(--mobile-nav-height);display:flex;align-items:stretch;justify-content:center;border-top:1px solid var(--line);background:#fffffffa}.mobile-nav button{min-width:92px;min-height:66px;display:grid;place-items:center;align-content:center;gap:5px;border:0;border-top:3px solid transparent;background:transparent;color:var(--muted);font-size:.62rem;font-weight:700}.mobile-nav button.is-active{border-top-color:var(--glm-green);color:var(--glm-blue)}.page-content{margin-left:0;padding-top:calc(var(--mobile-header-height) + 34px);padding-bottom:calc(var(--mobile-nav-height) + 42px)}.filter-bar{align-items:flex-start;flex-direction:column}.category-filters{width:100%;overflow-x:auto;padding-bottom:3px}.directory-row{grid-template-columns:44px minmax(150px,1fr) 108px 44px 44px}.directory-row__number{display:none}.admin-bridge,.access-request-bridge{grid-template-columns:80px 1fr}.admin-bridge .secondary-button,.access-request-bridge .secondary-button{grid-column:2;justify-self:start}.admin-workspace{grid-template-columns:1fr}.admin-list{max-height:360px;border-right:0;border-bottom:1px solid var(--line)}.admin-list__items{max-height:210px}}@media(max-width:620px){.login-story{min-height:480px;padding:26px 22px 24px}.login-story:before{left:22px;height:90px}.login-story__topline{padding-left:12px}.login-story .brand-logo{width:160px}.login-story__edition{font-size:.58rem}.login-story__content{width:100%;padding:62px 0 42px}.login-story h1{font-size:clamp(3.25rem,15.5vw,5rem)}.login-story__lede{margin-top:26px;font-size:.95rem}.login-story__signal,.login-story__place{font-size:.54rem}.login-story__type{font-size:12rem}.login-panel{padding:48px 22px}.page-content{padding-right:18px;padding-left:18px}.page-header{padding-bottom:23px}.page-header h1{font-size:2.7rem}.page-header__aside,.admin-header__note{display:none}.search-stage{margin-top:26px;padding:26px 18px 22px}.search-stage__coordinate{opacity:.58}.hub-search{grid-template-columns:22px 1fr auto;min-height:58px;padding:0 12px}.hub-search input{min-width:0;font-size:.84rem}.hub-search kbd{display:none}.pagination{gap:4px}.pagination__pages{gap:3px}.pagination__arrow,.pagination__page{width:32px;height:32px}.quick-section,.directory-section{margin-top:48px}.section-heading{align-items:flex-start;flex-direction:column;gap:12px}.section-heading>p{text-align:left}.section-heading--directory{flex-direction:row;align-items:flex-end}.quick-grid{grid-template-columns:1fr}.quick-launch{min-height:330px;padding:20px}.quick-launch__copy{margin-top:28px}.directory-row{min-height:86px;grid-template-columns:44px minmax(0,1fr) 40px 38px;gap:9px}.directory-row__category,.directory-row .availability{display:none}.directory-row__copy p{max-width:100%}.directory-row .favorite-button,.directory-row__open{width:38px;height:38px;min-height:38px}.empty-state{grid-template-columns:1fr;gap:16px;padding:30px 18px}.empty-state__mark{font-size:6rem}.admin-bridge,.access-request-bridge{grid-template-columns:54px 1fr;gap:16px}.admin-bridge__number,.access-request-bridge__number{font-size:5rem}.admin-bridge h2,.access-request-bridge h2{font-size:1.65rem}.admin-bridge .secondary-button,.access-request-bridge .secondary-button{grid-column:1 / -1;width:100%}.access-request-dialog{padding:28px 20px 22px}.access-request-dialog__actions{flex-direction:column-reverse}.access-request-dialog__actions button{width:100%}.admin-page{padding-right:12px;padding-left:12px}.admin-workspace{margin-top:26px}.app-editor{padding:24px 16px 36px}.app-editor__heading{align-items:flex-start;flex-direction:column;gap:12px}.form-split{grid-template-columns:1fr}.icon-config{align-items:flex-start;flex-direction:column}.icon-dropzone{width:100%}.editor-actions{align-items:stretch;flex-direction:column}.editor-actions .danger-button{margin-left:0}.app-preview{grid-template-columns:1fr}.preview-card{width:100%}.confirm-dialog{padding:26px 20px}.confirm-dialog__actions{align-items:stretch;flex-direction:column}.toast-stack{right:16px;bottom:calc(var(--mobile-nav-height, 0px) + 16px);left:16px;width:auto}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}} diff --git a/dist/assets/index-CRkChX-P.js b/dist/assets/index-CRkChX-P.js deleted file mode 100644 index 1380b9d..0000000 --- a/dist/assets/index-CRkChX-P.js +++ /dev/null @@ -1,179 +0,0 @@ -(function(){const d=document.createElement("link").relList;if(d&&d.supports&&d.supports("modulepreload"))return;for(const x of document.querySelectorAll('link[rel="modulepreload"]'))r(x);new MutationObserver(x=>{for(const N of x)if(N.type==="childList")for(const C of N.addedNodes)C.tagName==="LINK"&&C.rel==="modulepreload"&&r(C)}).observe(document,{childList:!0,subtree:!0});function v(x){const N={};return x.integrity&&(N.integrity=x.integrity),x.referrerPolicy&&(N.referrerPolicy=x.referrerPolicy),x.crossOrigin==="use-credentials"?N.credentials="include":x.crossOrigin==="anonymous"?N.credentials="omit":N.credentials="same-origin",N}function r(x){if(x.ep)return;x.ep=!0;const N=v(x);fetch(x.href,N)}})();var Ss={exports:{}},Nn={};/** - * @license React - * react-jsx-runtime.production.js - * - * Copyright (c) Meta Platforms, Inc. and affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var Yd;function Ky(){if(Yd)return Nn;Yd=1;var f=Symbol.for("react.transitional.element"),d=Symbol.for("react.fragment");function v(r,x,N){var C=null;if(N!==void 0&&(C=""+N),x.key!==void 0&&(C=""+x.key),"key"in x){N={};for(var w in x)w!=="key"&&(N[w]=x[w])}else N=x;return x=N.ref,{$$typeof:f,type:r,key:C,ref:x!==void 0?x:null,props:N}}return Nn.Fragment=d,Nn.jsx=v,Nn.jsxs=v,Nn}var Qd;function Jy(){return Qd||(Qd=1,Ss.exports=Ky()),Ss.exports}var c=Jy(),_s={exports:{}},P={};/** - * @license React - * react.production.js - * - * Copyright (c) Meta Platforms, Inc. and affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var Xd;function ky(){if(Xd)return P;Xd=1;var f=Symbol.for("react.transitional.element"),d=Symbol.for("react.portal"),v=Symbol.for("react.fragment"),r=Symbol.for("react.strict_mode"),x=Symbol.for("react.profiler"),N=Symbol.for("react.consumer"),C=Symbol.for("react.context"),w=Symbol.for("react.forward_ref"),U=Symbol.for("react.suspense"),E=Symbol.for("react.memo"),G=Symbol.for("react.lazy"),B=Symbol.for("react.activity"),J=Symbol.iterator;function ye(o){return o===null||typeof o!="object"?null:(o=J&&o[J]||o["@@iterator"],typeof o=="function"?o:null)}var Z={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},ee=Object.assign,V={};function ue(o,j,q){this.props=o,this.context=j,this.refs=V,this.updater=q||Z}ue.prototype.isReactComponent={},ue.prototype.setState=function(o,j){if(typeof o!="object"&&typeof o!="function"&&o!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,o,j,"setState")},ue.prototype.forceUpdate=function(o){this.updater.enqueueForceUpdate(this,o,"forceUpdate")};function Me(){}Me.prototype=ue.prototype;function Te(o,j,q){this.props=o,this.context=j,this.refs=V,this.updater=q||Z}var ae=Te.prototype=new Me;ae.constructor=Te,ee(ae,ue.prototype),ae.isPureReactComponent=!0;var ve=Array.isArray;function ge(){}var W={H:null,A:null,T:null,S:null},ne=Object.prototype.hasOwnProperty;function Ue(o,j,q){var L=q.ref;return{$$typeof:f,type:o,key:j,ref:L!==void 0?L:null,props:q}}function Je(o,j){return Ue(o.type,j,o.props)}function xe(o){return typeof o=="object"&&o!==null&&o.$$typeof===f}function De(o){var j={"=":"=0",":":"=2"};return"$"+o.replace(/[=:]/g,function(q){return j[q]})}var Xe=/\/+/g;function Q(o,j){return typeof o=="object"&&o!==null&&o.key!=null?De(""+o.key):j.toString(36)}function I(o){switch(o.status){case"fulfilled":return o.value;case"rejected":throw o.reason;default:switch(typeof o.status=="string"?o.then(ge,ge):(o.status="pending",o.then(function(j){o.status==="pending"&&(o.status="fulfilled",o.value=j)},function(j){o.status==="pending"&&(o.status="rejected",o.reason=j)})),o.status){case"fulfilled":return o.value;case"rejected":throw o.reason}}throw o}function S(o,j,q,L,F){var k=typeof o;(k==="undefined"||k==="boolean")&&(o=null);var ie=!1;if(o===null)ie=!0;else switch(k){case"bigint":case"string":case"number":ie=!0;break;case"object":switch(o.$$typeof){case f:case d:ie=!0;break;case G:return ie=o._init,S(ie(o._payload),j,q,L,F)}}if(ie)return F=F(o),ie=L===""?"."+Q(o,0):L,ve(F)?(q="",ie!=null&&(q=ie.replace(Xe,"$&/")+"/"),S(F,j,q,"",function(et){return et})):F!=null&&(xe(F)&&(F=Je(F,q+(F.key==null||o&&o.key===F.key?"":(""+F.key).replace(Xe,"$&/")+"/")+ie)),j.push(F)),1;ie=0;var ke=L===""?".":L+":";if(ve(o))for(var Ae=0;Ae>>1,z=S[R];if(0>>1;Rx(q,M))Lx(F,q)?(S[R]=F,S[L]=M,R=L):(S[R]=q,S[j]=M,R=j);else if(Lx(F,M))S[R]=F,S[L]=M,R=L;else break e}}return g}function x(S,g){var M=S.sortIndex-g.sortIndex;return M!==0?M:S.id-g.id}if(f.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var N=performance;f.unstable_now=function(){return N.now()}}else{var C=Date,w=C.now();f.unstable_now=function(){return C.now()-w}}var U=[],E=[],G=1,B=null,J=3,ye=!1,Z=!1,ee=!1,V=!1,ue=typeof setTimeout=="function"?setTimeout:null,Me=typeof clearTimeout=="function"?clearTimeout:null,Te=typeof setImmediate<"u"?setImmediate:null;function ae(S){for(var g=v(E);g!==null;){if(g.callback===null)r(E);else if(g.startTime<=S)r(E),g.sortIndex=g.expirationTime,d(U,g);else break;g=v(E)}}function ve(S){if(ee=!1,ae(S),!Z)if(v(U)!==null)Z=!0,ge||(ge=!0,De());else{var g=v(E);g!==null&&I(ve,g.startTime-S)}}var ge=!1,W=-1,ne=5,Ue=-1;function Je(){return V?!0:!(f.unstable_now()-UeS&&Je());){var R=B.callback;if(typeof R=="function"){B.callback=null,J=B.priorityLevel;var z=R(B.expirationTime<=S);if(S=f.unstable_now(),typeof z=="function"){B.callback=z,ae(S),g=!0;break t}B===v(U)&&r(U),ae(S)}else r(U);B=v(U)}if(B!==null)g=!0;else{var o=v(E);o!==null&&I(ve,o.startTime-S),g=!1}}break e}finally{B=null,J=M,ye=!1}g=void 0}}finally{g?De():ge=!1}}}var De;if(typeof Te=="function")De=function(){Te(xe)};else if(typeof MessageChannel<"u"){var Xe=new MessageChannel,Q=Xe.port2;Xe.port1.onmessage=xe,De=function(){Q.postMessage(null)}}else De=function(){ue(xe,0)};function I(S,g){W=ue(function(){S(f.unstable_now())},g)}f.unstable_IdlePriority=5,f.unstable_ImmediatePriority=1,f.unstable_LowPriority=4,f.unstable_NormalPriority=3,f.unstable_Profiling=null,f.unstable_UserBlockingPriority=2,f.unstable_cancelCallback=function(S){S.callback=null},f.unstable_forceFrameRate=function(S){0>S||125R?(S.sortIndex=M,d(E,S),v(U)===null&&S===v(E)&&(ee?(Me(W),W=-1):ee=!0,I(ve,M-R))):(S.sortIndex=z,d(U,S),Z||ye||(Z=!0,ge||(ge=!0,De()))),S},f.unstable_shouldYield=Je,f.unstable_wrapCallback=function(S){var g=J;return function(){var M=J;J=g;try{return S.apply(this,arguments)}finally{J=M}}}})(js)),js}var Vd;function Wy(){return Vd||(Vd=1,As.exports=$y()),As.exports}var zs={exports:{}},tt={};/** - * @license React - * react-dom.production.js - * - * Copyright (c) Meta Platforms, Inc. and affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var Kd;function Fy(){if(Kd)return tt;Kd=1;var f=Rs();function d(U){var E="https://react.dev/errors/"+U;if(1"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(f)}catch(d){console.error(d)}}return f(),zs.exports=Fy(),zs.exports}/** - * @license React - * react-dom-client.production.js - * - * Copyright (c) Meta Platforms, Inc. and affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var kd;function Py(){if(kd)return Tn;kd=1;var f=Wy(),d=Rs(),v=Iy();function r(e){var t="https://react.dev/errors/"+e;if(1z||(e.current=R[z],R[z]=null,z--)}function q(e,t){z++,R[z]=e.current,e.current=t}var L=o(null),F=o(null),k=o(null),ie=o(null);function ke(e,t){switch(q(k,t),q(F,e),q(L,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?fd(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)t=fd(t),e=rd(t,e);else switch(e){case"svg":e=1;break;case"math":e=2;break;default:e=0}}j(L),q(L,e)}function Ae(){j(L),j(F),j(k)}function et(e){e.memoizedState!==null&&q(ie,e);var t=L.current,l=rd(t,e.type);t!==l&&(q(F,e),q(L,l))}function tl(e){F.current===e&&(j(L),j(F)),ie.current===e&&(j(ie),En._currentValue=M)}var li,Bs;function Tl(e){if(li===void 0)try{throw Error()}catch(l){var t=l.stack.trim().match(/\n( *(at )?)/);li=t&&t[1]||"",Bs=-1)":-1n||m[a]!==p[n]){var T=` -`+m[a].replace(" at new "," at ");return e.displayName&&T.includes("")&&(T=T.replace("",e.displayName)),T}while(1<=a&&0<=n);break}}}finally{ai=!1,Error.prepareStackTrace=l}return(l=e?e.displayName||e.name:"")?Tl(l):""}function Am(e,t){switch(e.tag){case 26:case 27:case 5:return Tl(e.type);case 16:return Tl("Lazy");case 13:return e.child!==t&&t!==null?Tl("Suspense Fallback"):Tl("Suspense");case 19:return Tl("SuspenseList");case 0:case 15:return ni(e.type,!1);case 11:return ni(e.type.render,!1);case 1:return ni(e.type,!0);case 31:return Tl("Activity");default:return""}}function Gs(e){try{var t="",l=null;do t+=Am(e,l),l=e,e=e.return;while(e);return t}catch(a){return` -Error generating stack: `+a.message+` -`+a.stack}}var ui=Object.prototype.hasOwnProperty,ii=f.unstable_scheduleCallback,ci=f.unstable_cancelCallback,jm=f.unstable_shouldYield,zm=f.unstable_requestPaint,rt=f.unstable_now,Nm=f.unstable_getCurrentPriorityLevel,Ls=f.unstable_ImmediatePriority,Ys=f.unstable_UserBlockingPriority,Cn=f.unstable_NormalPriority,Tm=f.unstable_LowPriority,Qs=f.unstable_IdlePriority,xm=f.log,Om=f.unstable_setDisableYieldValue,Ca=null,ot=null;function ll(e){if(typeof xm=="function"&&Om(e),ot&&typeof ot.setStrictMode=="function")try{ot.setStrictMode(Ca,e)}catch{}}var dt=Math.clz32?Math.clz32:Um,Dm=Math.log,Mm=Math.LN2;function Um(e){return e>>>=0,e===0?32:31-(Dm(e)/Mm|0)|0}var Rn=256,qn=262144,Hn=4194304;function xl(e){var t=e&42;if(t!==0)return t;switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return e&261888;case 262144:case 524288:case 1048576:case 2097152:return e&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return e&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return e}}function Bn(e,t,l){var a=e.pendingLanes;if(a===0)return 0;var n=0,u=e.suspendedLanes,i=e.pingedLanes;e=e.warmLanes;var s=a&134217727;return s!==0?(a=s&~u,a!==0?n=xl(a):(i&=s,i!==0?n=xl(i):l||(l=s&~e,l!==0&&(n=xl(l))))):(s=a&~u,s!==0?n=xl(s):i!==0?n=xl(i):l||(l=a&~e,l!==0&&(n=xl(l)))),n===0?0:t!==0&&t!==n&&(t&u)===0&&(u=n&-n,l=t&-t,u>=l||u===32&&(l&4194048)!==0)?t:n}function Ra(e,t){return(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)===0}function Cm(e,t){switch(e){case 1:case 2:case 4:case 8:case 64:return t+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function Xs(){var e=Hn;return Hn<<=1,(Hn&62914560)===0&&(Hn=4194304),e}function si(e){for(var t=[],l=0;31>l;l++)t.push(e);return t}function qa(e,t){e.pendingLanes|=t,t!==268435456&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function Rm(e,t,l,a,n,u){var i=e.pendingLanes;e.pendingLanes=l,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=l,e.entangledLanes&=l,e.errorRecoveryDisabledLanes&=l,e.shellSuspendCounter=0;var s=e.entanglements,m=e.expirationTimes,p=e.hiddenUpdates;for(l=i&~l;0"u")return null;try{return e.activeElement||e.body}catch{return e.body}}var Ym=/[\n"\\]/g;function _t(e){return e.replace(Ym,function(t){return"\\"+t.charCodeAt(0).toString(16)+" "})}function hi(e,t,l,a,n,u,i,s){e.name="",i!=null&&typeof i!="function"&&typeof i!="symbol"&&typeof i!="boolean"?e.type=i:e.removeAttribute("type"),t!=null?i==="number"?(t===0&&e.value===""||e.value!=t)&&(e.value=""+St(t)):e.value!==""+St(t)&&(e.value=""+St(t)):i!=="submit"&&i!=="reset"||e.removeAttribute("value"),t!=null?yi(e,i,St(t)):l!=null?yi(e,i,St(l)):a!=null&&e.removeAttribute("value"),n==null&&u!=null&&(e.defaultChecked=!!u),n!=null&&(e.checked=n&&typeof n!="function"&&typeof n!="symbol"),s!=null&&typeof s!="function"&&typeof s!="symbol"&&typeof s!="boolean"?e.name=""+St(s):e.removeAttribute("name")}function tf(e,t,l,a,n,u,i,s){if(u!=null&&typeof u!="function"&&typeof u!="symbol"&&typeof u!="boolean"&&(e.type=u),t!=null||l!=null){if(!(u!=="submit"&&u!=="reset"||t!=null)){mi(e);return}l=l!=null?""+St(l):"",t=t!=null?""+St(t):l,s||t===e.value||(e.value=t),e.defaultValue=t}a=a??n,a=typeof a!="function"&&typeof a!="symbol"&&!!a,e.checked=s?e.checked:!!a,e.defaultChecked=!!a,i!=null&&typeof i!="function"&&typeof i!="symbol"&&typeof i!="boolean"&&(e.name=i),mi(e)}function yi(e,t,l){t==="number"&&Yn(e.ownerDocument)===e||e.defaultValue===""+l||(e.defaultValue=""+l)}function Pl(e,t,l,a){if(e=e.options,t){t={};for(var n=0;n"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),Si=!1;if(Lt)try{var La={};Object.defineProperty(La,"passive",{get:function(){Si=!0}}),window.addEventListener("test",La,La),window.removeEventListener("test",La,La)}catch{Si=!1}var nl=null,_i=null,Xn=null;function ff(){if(Xn)return Xn;var e,t=_i,l=t.length,a,n="value"in nl?nl.value:nl.textContent,u=n.length;for(e=0;e=Xa),yf=" ",vf=!1;function gf(e,t){switch(e){case"keyup":return hh.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function bf(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var aa=!1;function vh(e,t){switch(e){case"compositionend":return bf(t);case"keypress":return t.which!==32?null:(vf=!0,yf);case"textInput":return e=t.data,e===yf&&vf?null:e;default:return null}}function gh(e,t){if(aa)return e==="compositionend"||!Ni&&gf(e,t)?(e=ff(),Xn=_i=nl=null,aa=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:l,offset:t-e};e=a}e:{for(;l;){if(l.nextSibling){l=l.nextSibling;break e}l=l.parentNode}l=void 0}l=Nf(l)}}function xf(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?xf(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function Of(e){e=e!=null&&e.ownerDocument!=null&&e.ownerDocument.defaultView!=null?e.ownerDocument.defaultView:window;for(var t=Yn(e.document);t instanceof e.HTMLIFrameElement;){try{var l=typeof t.contentWindow.location.href=="string"}catch{l=!1}if(l)e=t.contentWindow;else break;t=Yn(e.document)}return t}function Oi(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}var zh=Lt&&"documentMode"in document&&11>=document.documentMode,na=null,Di=null,Ka=null,Mi=!1;function Df(e,t,l){var a=l.window===l?l.document:l.nodeType===9?l:l.ownerDocument;Mi||na==null||na!==Yn(a)||(a=na,"selectionStart"in a&&Oi(a)?a={start:a.selectionStart,end:a.selectionEnd}:(a=(a.ownerDocument&&a.ownerDocument.defaultView||window).getSelection(),a={anchorNode:a.anchorNode,anchorOffset:a.anchorOffset,focusNode:a.focusNode,focusOffset:a.focusOffset}),Ka&&Va(Ka,a)||(Ka=a,a=qu(Di,"onSelect"),0>=i,n-=i,Ct=1<<32-dt(t)+n|l<le?(re=X,X=null):re=X.sibling;var me=_(y,X,b[le],O);if(me===null){X===null&&(X=re);break}e&&X&&me.alternate===null&&t(y,X),h=u(me,h,le),de===null?K=me:de.sibling=me,de=me,X=re}if(le===b.length)return l(y,X),oe&&Qt(y,le),K;if(X===null){for(;lele?(re=X,X=null):re=X.sibling;var Nl=_(y,X,me.value,O);if(Nl===null){X===null&&(X=re);break}e&&X&&Nl.alternate===null&&t(y,X),h=u(Nl,h,le),de===null?K=Nl:de.sibling=Nl,de=Nl,X=re}if(me.done)return l(y,X),oe&&Qt(y,le),K;if(X===null){for(;!me.done;le++,me=b.next())me=D(y,me.value,O),me!==null&&(h=u(me,h,le),de===null?K=me:de.sibling=me,de=me);return oe&&Qt(y,le),K}for(X=a(X);!me.done;le++,me=b.next())me=A(X,y,le,me.value,O),me!==null&&(e&&me.alternate!==null&&X.delete(me.key===null?le:me.key),h=u(me,h,le),de===null?K=me:de.sibling=me,de=me);return e&&X.forEach(function(Vy){return t(y,Vy)}),oe&&Qt(y,le),K}function Ee(y,h,b,O){if(typeof b=="object"&&b!==null&&b.type===ee&&b.key===null&&(b=b.props.children),typeof b=="object"&&b!==null){switch(b.$$typeof){case ye:e:{for(var K=b.key;h!==null;){if(h.key===K){if(K=b.type,K===ee){if(h.tag===7){l(y,h.sibling),O=n(h,b.props.children),O.return=y,y=O;break e}}else if(h.elementType===K||typeof K=="object"&&K!==null&&K.$$typeof===ne&&Ll(K)===h.type){l(y,h.sibling),O=n(h,b.props),Ia(O,b),O.return=y,y=O;break e}l(y,h);break}else t(y,h);h=h.sibling}b.type===ee?(O=Rl(b.props.children,y.mode,O,b.key),O.return=y,y=O):(O=In(b.type,b.key,b.props,null,y.mode,O),Ia(O,b),O.return=y,y=O)}return i(y);case Z:e:{for(K=b.key;h!==null;){if(h.key===K)if(h.tag===4&&h.stateNode.containerInfo===b.containerInfo&&h.stateNode.implementation===b.implementation){l(y,h.sibling),O=n(h,b.children||[]),O.return=y,y=O;break e}else{l(y,h);break}else t(y,h);h=h.sibling}O=Gi(b,y.mode,O),O.return=y,y=O}return i(y);case ne:return b=Ll(b),Ee(y,h,b,O)}if(I(b))return Y(y,h,b,O);if(De(b)){if(K=De(b),typeof K!="function")throw Error(r(150));return b=K.call(b),$(y,h,b,O)}if(typeof b.then=="function")return Ee(y,h,uu(b),O);if(b.$$typeof===Te)return Ee(y,h,tu(y,b),O);iu(y,b)}return typeof b=="string"&&b!==""||typeof b=="number"||typeof b=="bigint"?(b=""+b,h!==null&&h.tag===6?(l(y,h.sibling),O=n(h,b),O.return=y,y=O):(l(y,h),O=Bi(b,y.mode,O),O.return=y,y=O),i(y)):l(y,h)}return function(y,h,b,O){try{Fa=0;var K=Ee(y,h,b,O);return ya=null,K}catch(X){if(X===ha||X===au)throw X;var de=ht(29,X,null,y.mode);return de.lanes=O,de.return=y,de}finally{}}}var Ql=Pf(!0),er=Pf(!1),fl=!1;function Wi(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function Fi(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,callbacks:null})}function rl(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function ol(e,t,l){var a=e.updateQueue;if(a===null)return null;if(a=a.shared,(he&2)!==0){var n=a.pending;return n===null?t.next=t:(t.next=n.next,n.next=t),a.pending=t,t=Fn(e),Bf(e,null,l),t}return Wn(e,a,t,l),Fn(e)}function Pa(e,t,l){if(t=t.updateQueue,t!==null&&(t=t.shared,(l&4194048)!==0)){var a=t.lanes;a&=e.pendingLanes,l|=a,t.lanes=l,Zs(e,l)}}function Ii(e,t){var l=e.updateQueue,a=e.alternate;if(a!==null&&(a=a.updateQueue,l===a)){var n=null,u=null;if(l=l.firstBaseUpdate,l!==null){do{var i={lane:l.lane,tag:l.tag,payload:l.payload,callback:null,next:null};u===null?n=u=i:u=u.next=i,l=l.next}while(l!==null);u===null?n=u=t:u=u.next=t}else n=u=t;l={baseState:a.baseState,firstBaseUpdate:n,lastBaseUpdate:u,shared:a.shared,callbacks:a.callbacks},e.updateQueue=l;return}e=l.lastBaseUpdate,e===null?l.firstBaseUpdate=t:e.next=t,l.lastBaseUpdate=t}var Pi=!1;function en(){if(Pi){var e=ma;if(e!==null)throw e}}function tn(e,t,l,a){Pi=!1;var n=e.updateQueue;fl=!1;var u=n.firstBaseUpdate,i=n.lastBaseUpdate,s=n.shared.pending;if(s!==null){n.shared.pending=null;var m=s,p=m.next;m.next=null,i===null?u=p:i.next=p,i=m;var T=e.alternate;T!==null&&(T=T.updateQueue,s=T.lastBaseUpdate,s!==i&&(s===null?T.firstBaseUpdate=p:s.next=p,T.lastBaseUpdate=m))}if(u!==null){var D=n.baseState;i=0,T=p=m=null,s=u;do{var _=s.lane&-536870913,A=_!==s.lane;if(A?(fe&_)===_:(a&_)===_){_!==0&&_===da&&(Pi=!0),T!==null&&(T=T.next={lane:0,tag:s.tag,payload:s.payload,callback:null,next:null});e:{var Y=e,$=s;_=t;var Ee=l;switch($.tag){case 1:if(Y=$.payload,typeof Y=="function"){D=Y.call(Ee,D,_);break e}D=Y;break e;case 3:Y.flags=Y.flags&-65537|128;case 0:if(Y=$.payload,_=typeof Y=="function"?Y.call(Ee,D,_):Y,_==null)break e;D=B({},D,_);break e;case 2:fl=!0}}_=s.callback,_!==null&&(e.flags|=64,A&&(e.flags|=8192),A=n.callbacks,A===null?n.callbacks=[_]:A.push(_))}else A={lane:_,tag:s.tag,payload:s.payload,callback:s.callback,next:null},T===null?(p=T=A,m=D):T=T.next=A,i|=_;if(s=s.next,s===null){if(s=n.shared.pending,s===null)break;A=s,s=A.next,A.next=null,n.lastBaseUpdate=A,n.shared.pending=null}}while(!0);T===null&&(m=D),n.baseState=m,n.firstBaseUpdate=p,n.lastBaseUpdate=T,u===null&&(n.shared.lanes=0),vl|=i,e.lanes=i,e.memoizedState=D}}function tr(e,t){if(typeof e!="function")throw Error(r(191,e));e.call(t)}function lr(e,t){var l=e.callbacks;if(l!==null)for(e.callbacks=null,e=0;eu?u:8;var i=S.T,s={};S.T=s,bc(e,!1,t,l);try{var m=n(),p=S.S;if(p!==null&&p(s,m),m!==null&&typeof m=="object"&&typeof m.then=="function"){var T=Rh(m,a);nn(e,t,T,pt(e))}else nn(e,t,a,pt(e))}catch(D){nn(e,t,{then:function(){},status:"rejected",reason:D},pt())}finally{g.p=u,i!==null&&s.types!==null&&(i.types=s.types),S.T=i}}function Yh(){}function vc(e,t,l,a){if(e.tag!==5)throw Error(r(476));var n=Rr(e).queue;Cr(e,n,t,M,l===null?Yh:function(){return qr(e),l(a)})}function Rr(e){var t=e.memoizedState;if(t!==null)return t;t={memoizedState:M,baseState:M,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Vt,lastRenderedState:M},next:null};var l={};return t.next={memoizedState:l,baseState:l,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Vt,lastRenderedState:l},next:null},e.memoizedState=t,e=e.alternate,e!==null&&(e.memoizedState=t),t}function qr(e){var t=Rr(e);t.next===null&&(t=e.alternate.memoizedState),nn(e,t.next.queue,{},pt())}function gc(){return Fe(En)}function Hr(){return Be().memoizedState}function Br(){return Be().memoizedState}function Qh(e){for(var t=e.return;t!==null;){switch(t.tag){case 24:case 3:var l=pt();e=rl(l);var a=ol(t,e,l);a!==null&&(ft(a,t,l),Pa(a,t,l)),t={cache:Ki()},e.payload=t;return}t=t.return}}function Xh(e,t,l){var a=pt();l={lane:a,revertLane:0,gesture:null,action:l,hasEagerState:!1,eagerState:null,next:null},vu(e)?Lr(t,l):(l=qi(e,t,l,a),l!==null&&(ft(l,e,a),Yr(l,t,a)))}function Gr(e,t,l){var a=pt();nn(e,t,l,a)}function nn(e,t,l,a){var n={lane:a,revertLane:0,gesture:null,action:l,hasEagerState:!1,eagerState:null,next:null};if(vu(e))Lr(t,n);else{var u=e.alternate;if(e.lanes===0&&(u===null||u.lanes===0)&&(u=t.lastRenderedReducer,u!==null))try{var i=t.lastRenderedState,s=u(i,l);if(n.hasEagerState=!0,n.eagerState=s,mt(s,i))return Wn(e,t,n,0),je===null&&$n(),!1}catch{}finally{}if(l=qi(e,t,n,a),l!==null)return ft(l,e,a),Yr(l,t,a),!0}return!1}function bc(e,t,l,a){if(a={lane:2,revertLane:Wc(),gesture:null,action:a,hasEagerState:!1,eagerState:null,next:null},vu(e)){if(t)throw Error(r(479))}else t=qi(e,l,a,2),t!==null&&ft(t,e,2)}function vu(e){var t=e.alternate;return e===te||t!==null&&t===te}function Lr(e,t){ga=fu=!0;var l=e.pending;l===null?t.next=t:(t.next=l.next,l.next=t),e.pending=t}function Yr(e,t,l){if((l&4194048)!==0){var a=t.lanes;a&=e.pendingLanes,l|=a,t.lanes=l,Zs(e,l)}}var un={readContext:Fe,use:du,useCallback:Ce,useContext:Ce,useEffect:Ce,useImperativeHandle:Ce,useLayoutEffect:Ce,useInsertionEffect:Ce,useMemo:Ce,useReducer:Ce,useRef:Ce,useState:Ce,useDebugValue:Ce,useDeferredValue:Ce,useTransition:Ce,useSyncExternalStore:Ce,useId:Ce,useHostTransitionStatus:Ce,useFormState:Ce,useActionState:Ce,useOptimistic:Ce,useMemoCache:Ce,useCacheRefresh:Ce};un.useEffectEvent=Ce;var Qr={readContext:Fe,use:du,useCallback:function(e,t){return lt().memoizedState=[e,t===void 0?null:t],e},useContext:Fe,useEffect:jr,useImperativeHandle:function(e,t,l){l=l!=null?l.concat([e]):null,hu(4194308,4,xr.bind(null,t,e),l)},useLayoutEffect:function(e,t){return hu(4194308,4,e,t)},useInsertionEffect:function(e,t){hu(4,2,e,t)},useMemo:function(e,t){var l=lt();t=t===void 0?null:t;var a=e();if(Xl){ll(!0);try{e()}finally{ll(!1)}}return l.memoizedState=[a,t],a},useReducer:function(e,t,l){var a=lt();if(l!==void 0){var n=l(t);if(Xl){ll(!0);try{l(t)}finally{ll(!1)}}}else n=t;return a.memoizedState=a.baseState=n,e={pending:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:n},a.queue=e,e=e.dispatch=Xh.bind(null,te,e),[a.memoizedState,e]},useRef:function(e){var t=lt();return e={current:e},t.memoizedState=e},useState:function(e){e=oc(e);var t=e.queue,l=Gr.bind(null,te,t);return t.dispatch=l,[e.memoizedState,l]},useDebugValue:hc,useDeferredValue:function(e,t){var l=lt();return yc(l,e,t)},useTransition:function(){var e=oc(!1);return e=Cr.bind(null,te,e.queue,!0,!1),lt().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,t,l){var a=te,n=lt();if(oe){if(l===void 0)throw Error(r(407));l=l()}else{if(l=t(),je===null)throw Error(r(349));(fe&127)!==0||sr(a,t,l)}n.memoizedState=l;var u={value:l,getSnapshot:t};return n.queue=u,jr(rr.bind(null,a,u,e),[e]),a.flags|=2048,pa(9,{destroy:void 0},fr.bind(null,a,u,l,t),null),l},useId:function(){var e=lt(),t=je.identifierPrefix;if(oe){var l=Rt,a=Ct;l=(a&~(1<<32-dt(a)-1)).toString(32)+l,t="_"+t+"R_"+l,l=ru++,0<\/script>",u=u.removeChild(u.firstChild);break;case"select":u=typeof a.is=="string"?i.createElement("select",{is:a.is}):i.createElement("select"),a.multiple?u.multiple=!0:a.size&&(u.size=a.size);break;default:u=typeof a.is=="string"?i.createElement(n,{is:a.is}):i.createElement(n)}}u[$e]=t,u[at]=a;e:for(i=t.child;i!==null;){if(i.tag===5||i.tag===6)u.appendChild(i.stateNode);else if(i.tag!==4&&i.tag!==27&&i.child!==null){i.child.return=i,i=i.child;continue}if(i===t)break e;for(;i.sibling===null;){if(i.return===null||i.return===t)break e;i=i.return}i.sibling.return=i.return,i=i.sibling}t.stateNode=u;e:switch(Pe(u,n,a),n){case"button":case"input":case"select":case"textarea":a=!!a.autoFocus;break e;case"img":a=!0;break e;default:a=!1}a&&Jt(t)}}return Ne(t),Uc(t,t.type,e===null?null:e.memoizedProps,t.pendingProps,l),null;case 6:if(e&&t.stateNode!=null)e.memoizedProps!==a&&Jt(t);else{if(typeof a!="string"&&t.stateNode===null)throw Error(r(166));if(e=k.current,ra(t)){if(e=t.stateNode,l=t.memoizedProps,a=null,n=We,n!==null)switch(n.tag){case 27:case 5:a=n.memoizedProps}e[$e]=t,e=!!(e.nodeValue===l||a!==null&&a.suppressHydrationWarning===!0||cd(e.nodeValue,l)),e||cl(t,!0)}else e=Hu(e).createTextNode(a),e[$e]=t,t.stateNode=e}return Ne(t),null;case 31:if(l=t.memoizedState,e===null||e.memoizedState!==null){if(a=ra(t),l!==null){if(e===null){if(!a)throw Error(r(318));if(e=t.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error(r(557));e[$e]=t}else ql(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;Ne(t),e=!1}else l=Xi(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=l),e=!0;if(!e)return t.flags&256?(vt(t),t):(vt(t),null);if((t.flags&128)!==0)throw Error(r(558))}return Ne(t),null;case 13:if(a=t.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(n=ra(t),a!==null&&a.dehydrated!==null){if(e===null){if(!n)throw Error(r(318));if(n=t.memoizedState,n=n!==null?n.dehydrated:null,!n)throw Error(r(317));n[$e]=t}else ql(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;Ne(t),n=!1}else n=Xi(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=n),n=!0;if(!n)return t.flags&256?(vt(t),t):(vt(t),null)}return vt(t),(t.flags&128)!==0?(t.lanes=l,t):(l=a!==null,e=e!==null&&e.memoizedState!==null,l&&(a=t.child,n=null,a.alternate!==null&&a.alternate.memoizedState!==null&&a.alternate.memoizedState.cachePool!==null&&(n=a.alternate.memoizedState.cachePool.pool),u=null,a.memoizedState!==null&&a.memoizedState.cachePool!==null&&(u=a.memoizedState.cachePool.pool),u!==n&&(a.flags|=2048)),l!==e&&l&&(t.child.flags|=8192),_u(t,t.updateQueue),Ne(t),null);case 4:return Ae(),e===null&&es(t.stateNode.containerInfo),Ne(t),null;case 10:return wt(t.type),Ne(t),null;case 19:if(j(He),a=t.memoizedState,a===null)return Ne(t),null;if(n=(t.flags&128)!==0,u=a.rendering,u===null)if(n)sn(a,!1);else{if(Re!==0||e!==null&&(e.flags&128)!==0)for(e=t.child;e!==null;){if(u=su(e),u!==null){for(t.flags|=128,sn(a,!1),e=u.updateQueue,t.updateQueue=e,_u(t,e),t.subtreeFlags=0,e=l,l=t.child;l!==null;)Gf(l,e),l=l.sibling;return q(He,He.current&1|2),oe&&Qt(t,a.treeForkCount),t.child}e=e.sibling}a.tail!==null&&rt()>Nu&&(t.flags|=128,n=!0,sn(a,!1),t.lanes=4194304)}else{if(!n)if(e=su(u),e!==null){if(t.flags|=128,n=!0,e=e.updateQueue,t.updateQueue=e,_u(t,e),sn(a,!0),a.tail===null&&a.tailMode==="hidden"&&!u.alternate&&!oe)return Ne(t),null}else 2*rt()-a.renderingStartTime>Nu&&l!==536870912&&(t.flags|=128,n=!0,sn(a,!1),t.lanes=4194304);a.isBackwards?(u.sibling=t.child,t.child=u):(e=a.last,e!==null?e.sibling=u:t.child=u,a.last=u)}return a.tail!==null?(e=a.tail,a.rendering=e,a.tail=e.sibling,a.renderingStartTime=rt(),e.sibling=null,l=He.current,q(He,n?l&1|2:l&1),oe&&Qt(t,a.treeForkCount),e):(Ne(t),null);case 22:case 23:return vt(t),tc(),a=t.memoizedState!==null,e!==null?e.memoizedState!==null!==a&&(t.flags|=8192):a&&(t.flags|=8192),a?(l&536870912)!==0&&(t.flags&128)===0&&(Ne(t),t.subtreeFlags&6&&(t.flags|=8192)):Ne(t),l=t.updateQueue,l!==null&&_u(t,l.retryQueue),l=null,e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(l=e.memoizedState.cachePool.pool),a=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(a=t.memoizedState.cachePool.pool),a!==l&&(t.flags|=2048),e!==null&&j(Gl),null;case 24:return l=null,e!==null&&(l=e.memoizedState.cache),t.memoizedState.cache!==l&&(t.flags|=2048),wt(Ge),Ne(t),null;case 25:return null;case 30:return null}throw Error(r(156,t.tag))}function Jh(e,t){switch(Yi(t),t.tag){case 1:return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return wt(Ge),Ae(),e=t.flags,(e&65536)!==0&&(e&128)===0?(t.flags=e&-65537|128,t):null;case 26:case 27:case 5:return tl(t),null;case 31:if(t.memoizedState!==null){if(vt(t),t.alternate===null)throw Error(r(340));ql()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 13:if(vt(t),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(r(340));ql()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return j(He),null;case 4:return Ae(),null;case 10:return wt(t.type),null;case 22:case 23:return vt(t),tc(),e!==null&&j(Gl),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 24:return wt(Ge),null;case 25:return null;default:return null}}function oo(e,t){switch(Yi(t),t.tag){case 3:wt(Ge),Ae();break;case 26:case 27:case 5:tl(t);break;case 4:Ae();break;case 31:t.memoizedState!==null&&vt(t);break;case 13:vt(t);break;case 19:j(He);break;case 10:wt(t.type);break;case 22:case 23:vt(t),tc(),e!==null&&j(Gl);break;case 24:wt(Ge)}}function fn(e,t){try{var l=t.updateQueue,a=l!==null?l.lastEffect:null;if(a!==null){var n=a.next;l=n;do{if((l.tag&e)===e){a=void 0;var u=l.create,i=l.inst;a=u(),i.destroy=a}l=l.next}while(l!==n)}}catch(s){pe(t,t.return,s)}}function hl(e,t,l){try{var a=t.updateQueue,n=a!==null?a.lastEffect:null;if(n!==null){var u=n.next;a=u;do{if((a.tag&e)===e){var i=a.inst,s=i.destroy;if(s!==void 0){i.destroy=void 0,n=t;var m=l,p=s;try{p()}catch(T){pe(n,m,T)}}}a=a.next}while(a!==u)}}catch(T){pe(t,t.return,T)}}function mo(e){var t=e.updateQueue;if(t!==null){var l=e.stateNode;try{lr(t,l)}catch(a){pe(e,e.return,a)}}}function ho(e,t,l){l.props=wl(e.type,e.memoizedProps),l.state=e.memoizedState;try{l.componentWillUnmount()}catch(a){pe(e,t,a)}}function rn(e,t){try{var l=e.ref;if(l!==null){switch(e.tag){case 26:case 27:case 5:var a=e.stateNode;break;case 30:a=e.stateNode;break;default:a=e.stateNode}typeof l=="function"?e.refCleanup=l(a):l.current=a}}catch(n){pe(e,t,n)}}function qt(e,t){var l=e.ref,a=e.refCleanup;if(l!==null)if(typeof a=="function")try{a()}catch(n){pe(e,t,n)}finally{e.refCleanup=null,e=e.alternate,e!=null&&(e.refCleanup=null)}else if(typeof l=="function")try{l(null)}catch(n){pe(e,t,n)}else l.current=null}function yo(e){var t=e.type,l=e.memoizedProps,a=e.stateNode;try{e:switch(t){case"button":case"input":case"select":case"textarea":l.autoFocus&&a.focus();break e;case"img":l.src?a.src=l.src:l.srcSet&&(a.srcset=l.srcSet)}}catch(n){pe(e,e.return,n)}}function Cc(e,t,l){try{var a=e.stateNode;yy(a,e.type,l,t),a[at]=t}catch(n){pe(e,e.return,n)}}function vo(e){return e.tag===5||e.tag===3||e.tag===26||e.tag===27&&_l(e.type)||e.tag===4}function Rc(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||vo(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.tag===27&&_l(e.type)||e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function qc(e,t,l){var a=e.tag;if(a===5||a===6)e=e.stateNode,t?(l.nodeType===9?l.body:l.nodeName==="HTML"?l.ownerDocument.body:l).insertBefore(e,t):(t=l.nodeType===9?l.body:l.nodeName==="HTML"?l.ownerDocument.body:l,t.appendChild(e),l=l._reactRootContainer,l!=null||t.onclick!==null||(t.onclick=Gt));else if(a!==4&&(a===27&&_l(e.type)&&(l=e.stateNode,t=null),e=e.child,e!==null))for(qc(e,t,l),e=e.sibling;e!==null;)qc(e,t,l),e=e.sibling}function Eu(e,t,l){var a=e.tag;if(a===5||a===6)e=e.stateNode,t?l.insertBefore(e,t):l.appendChild(e);else if(a!==4&&(a===27&&_l(e.type)&&(l=e.stateNode),e=e.child,e!==null))for(Eu(e,t,l),e=e.sibling;e!==null;)Eu(e,t,l),e=e.sibling}function go(e){var t=e.stateNode,l=e.memoizedProps;try{for(var a=e.type,n=t.attributes;n.length;)t.removeAttributeNode(n[0]);Pe(t,a,l),t[$e]=e,t[at]=l}catch(u){pe(e,e.return,u)}}var kt=!1,Qe=!1,Hc=!1,bo=typeof WeakSet=="function"?WeakSet:Set,Ve=null;function kh(e,t){if(e=e.containerInfo,as=wu,e=Of(e),Oi(e)){if("selectionStart"in e)var l={start:e.selectionStart,end:e.selectionEnd};else e:{l=(l=e.ownerDocument)&&l.defaultView||window;var a=l.getSelection&&l.getSelection();if(a&&a.rangeCount!==0){l=a.anchorNode;var n=a.anchorOffset,u=a.focusNode;a=a.focusOffset;try{l.nodeType,u.nodeType}catch{l=null;break e}var i=0,s=-1,m=-1,p=0,T=0,D=e,_=null;t:for(;;){for(var A;D!==l||n!==0&&D.nodeType!==3||(s=i+n),D!==u||a!==0&&D.nodeType!==3||(m=i+a),D.nodeType===3&&(i+=D.nodeValue.length),(A=D.firstChild)!==null;)_=D,D=A;for(;;){if(D===e)break t;if(_===l&&++p===n&&(s=i),_===u&&++T===a&&(m=i),(A=D.nextSibling)!==null)break;D=_,_=D.parentNode}D=A}l=s===-1||m===-1?null:{start:s,end:m}}else l=null}l=l||{start:0,end:0}}else l=null;for(ns={focusedElem:e,selectionRange:l},wu=!1,Ve=t;Ve!==null;)if(t=Ve,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,Ve=e;else for(;Ve!==null;){switch(t=Ve,u=t.alternate,e=t.flags,t.tag){case 0:if((e&4)!==0&&(e=t.updateQueue,e=e!==null?e.events:null,e!==null))for(l=0;l title"))),Pe(u,a,l),u[$e]=e,Ze(u),a=u;break e;case"link":var i=jd("link","href",n).get(a+(l.href||""));if(i){for(var s=0;sEe&&(i=Ee,Ee=$,$=i);var y=Tf(s,$),h=Tf(s,Ee);if(y&&h&&(A.rangeCount!==1||A.anchorNode!==y.node||A.anchorOffset!==y.offset||A.focusNode!==h.node||A.focusOffset!==h.offset)){var b=D.createRange();b.setStart(y.node,y.offset),A.removeAllRanges(),$>Ee?(A.addRange(b),A.extend(h.node,h.offset)):(b.setEnd(h.node,h.offset),A.addRange(b))}}}}for(D=[],A=s;A=A.parentNode;)A.nodeType===1&&D.push({element:A,left:A.scrollLeft,top:A.scrollTop});for(typeof s.focus=="function"&&s.focus(),s=0;sl?32:l,S.T=null,l=wc,wc=null;var u=bl,i=Pt;if(we=0,ja=bl=null,Pt=0,(he&6)!==0)throw Error(r(331));var s=he;if(he|=4,Oo(u.current),No(u,u.current,i,l),he=s,vn(0,!1),ot&&typeof ot.onPostCommitFiberRoot=="function")try{ot.onPostCommitFiberRoot(Ca,u)}catch{}return!0}finally{g.p=n,S.T=a,Jo(e,t)}}function $o(e,t,l){t=At(l,t),t=Ec(e.stateNode,t,2),e=ol(e,t,2),e!==null&&(qa(e,2),Ht(e))}function pe(e,t,l){if(e.tag===3)$o(e,e,l);else for(;t!==null;){if(t.tag===3){$o(t,e,l);break}else if(t.tag===1){var a=t.stateNode;if(typeof t.type.getDerivedStateFromError=="function"||typeof a.componentDidCatch=="function"&&(gl===null||!gl.has(a))){e=At(l,e),l=$r(2),a=ol(t,l,2),a!==null&&(Wr(l,a,t,e),qa(a,2),Ht(a));break}}t=t.return}}function Jc(e,t,l){var a=e.pingCache;if(a===null){a=e.pingCache=new Fh;var n=new Set;a.set(t,n)}else n=a.get(t),n===void 0&&(n=new Set,a.set(t,n));n.has(l)||(Lc=!0,n.add(l),e=ly.bind(null,e,t,l),t.then(e,e))}function ly(e,t,l){var a=e.pingCache;a!==null&&a.delete(t),e.pingedLanes|=e.suspendedLanes&l,e.warmLanes&=~l,je===e&&(fe&l)===l&&(Re===4||Re===3&&(fe&62914560)===fe&&300>rt()-zu?(he&2)===0&&za(e,0):Yc|=l,Aa===fe&&(Aa=0)),Ht(e)}function Wo(e,t){t===0&&(t=Xs()),e=Cl(e,t),e!==null&&(qa(e,t),Ht(e))}function ay(e){var t=e.memoizedState,l=0;t!==null&&(l=t.retryLane),Wo(e,l)}function ny(e,t){var l=0;switch(e.tag){case 31:case 13:var a=e.stateNode,n=e.memoizedState;n!==null&&(l=n.retryLane);break;case 19:a=e.stateNode;break;case 22:a=e.stateNode._retryCache;break;default:throw Error(r(314))}a!==null&&a.delete(t),Wo(e,l)}function uy(e,t){return ii(e,t)}var Uu=null,Ta=null,kc=!1,Cu=!1,$c=!1,Sl=0;function Ht(e){e!==Ta&&e.next===null&&(Ta===null?Uu=Ta=e:Ta=Ta.next=e),Cu=!0,kc||(kc=!0,cy())}function vn(e,t){if(!$c&&Cu){$c=!0;do for(var l=!1,a=Uu;a!==null;){if(e!==0){var n=a.pendingLanes;if(n===0)var u=0;else{var i=a.suspendedLanes,s=a.pingedLanes;u=(1<<31-dt(42|e)+1)-1,u&=n&~(i&~s),u=u&201326741?u&201326741|1:u?u|2:0}u!==0&&(l=!0,ed(a,u))}else u=fe,u=Bn(a,a===je?u:0,a.cancelPendingCommit!==null||a.timeoutHandle!==-1),(u&3)===0||Ra(a,u)||(l=!0,ed(a,u));a=a.next}while(l);$c=!1}}function iy(){Fo()}function Fo(){Cu=kc=!1;var e=0;Sl!==0&&gy()&&(e=Sl);for(var t=rt(),l=null,a=Uu;a!==null;){var n=a.next,u=Io(a,t);u===0?(a.next=null,l===null?Uu=n:l.next=n,n===null&&(Ta=l)):(l=a,(e!==0||(u&3)!==0)&&(Cu=!0)),a=n}we!==0&&we!==5||vn(e),Sl!==0&&(Sl=0)}function Io(e,t){for(var l=e.suspendedLanes,a=e.pingedLanes,n=e.expirationTimes,u=e.pendingLanes&-62914561;0s)break;var T=m.transferSize,D=m.initiatorType;T&&sd(D)&&(m=m.responseEnd,i+=T*(m"u"?null:document;function Sd(e,t,l){var a=xa;if(a&&typeof t=="string"&&t){var n=_t(t);n='link[rel="'+e+'"][href="'+n+'"]',typeof l=="string"&&(n+='[crossorigin="'+l+'"]'),pd.has(n)||(pd.add(n),e={rel:e,crossOrigin:l,href:t},a.querySelector(n)===null&&(t=a.createElement("link"),Pe(t,"link",e),Ze(t),a.head.appendChild(t)))}}function Ny(e){el.D(e),Sd("dns-prefetch",e,null)}function Ty(e,t){el.C(e,t),Sd("preconnect",e,t)}function xy(e,t,l){el.L(e,t,l);var a=xa;if(a&&e&&t){var n='link[rel="preload"][as="'+_t(t)+'"]';t==="image"&&l&&l.imageSrcSet?(n+='[imagesrcset="'+_t(l.imageSrcSet)+'"]',typeof l.imageSizes=="string"&&(n+='[imagesizes="'+_t(l.imageSizes)+'"]')):n+='[href="'+_t(e)+'"]';var u=n;switch(t){case"style":u=Oa(e);break;case"script":u=Da(e)}Ot.has(u)||(e=B({rel:"preload",href:t==="image"&&l&&l.imageSrcSet?void 0:e,as:t},l),Ot.set(u,e),a.querySelector(n)!==null||t==="style"&&a.querySelector(Sn(u))||t==="script"&&a.querySelector(_n(u))||(t=a.createElement("link"),Pe(t,"link",e),Ze(t),a.head.appendChild(t)))}}function Oy(e,t){el.m(e,t);var l=xa;if(l&&e){var a=t&&typeof t.as=="string"?t.as:"script",n='link[rel="modulepreload"][as="'+_t(a)+'"][href="'+_t(e)+'"]',u=n;switch(a){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":u=Da(e)}if(!Ot.has(u)&&(e=B({rel:"modulepreload",href:e},t),Ot.set(u,e),l.querySelector(n)===null)){switch(a){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(l.querySelector(_n(u)))return}a=l.createElement("link"),Pe(a,"link",e),Ze(a),l.head.appendChild(a)}}}function Dy(e,t,l){el.S(e,t,l);var a=xa;if(a&&e){var n=Fl(a).hoistableStyles,u=Oa(e);t=t||"default";var i=n.get(u);if(!i){var s={loading:0,preload:null};if(i=a.querySelector(Sn(u)))s.loading=5;else{e=B({rel:"stylesheet",href:e,"data-precedence":t},l),(l=Ot.get(u))&&os(e,l);var m=i=a.createElement("link");Ze(m),Pe(m,"link",e),m._p=new Promise(function(p,T){m.onload=p,m.onerror=T}),m.addEventListener("load",function(){s.loading|=1}),m.addEventListener("error",function(){s.loading|=2}),s.loading|=4,Gu(i,t,a)}i={type:"stylesheet",instance:i,count:1,state:s},n.set(u,i)}}}function My(e,t){el.X(e,t);var l=xa;if(l&&e){var a=Fl(l).hoistableScripts,n=Da(e),u=a.get(n);u||(u=l.querySelector(_n(n)),u||(e=B({src:e,async:!0},t),(t=Ot.get(n))&&ds(e,t),u=l.createElement("script"),Ze(u),Pe(u,"link",e),l.head.appendChild(u)),u={type:"script",instance:u,count:1,state:null},a.set(n,u))}}function Uy(e,t){el.M(e,t);var l=xa;if(l&&e){var a=Fl(l).hoistableScripts,n=Da(e),u=a.get(n);u||(u=l.querySelector(_n(n)),u||(e=B({src:e,async:!0,type:"module"},t),(t=Ot.get(n))&&ds(e,t),u=l.createElement("script"),Ze(u),Pe(u,"link",e),l.head.appendChild(u)),u={type:"script",instance:u,count:1,state:null},a.set(n,u))}}function _d(e,t,l,a){var n=(n=k.current)?Bu(n):null;if(!n)throw Error(r(446));switch(e){case"meta":case"title":return null;case"style":return typeof l.precedence=="string"&&typeof l.href=="string"?(t=Oa(l.href),l=Fl(n).hoistableStyles,a=l.get(t),a||(a={type:"style",instance:null,count:0,state:null},l.set(t,a)),a):{type:"void",instance:null,count:0,state:null};case"link":if(l.rel==="stylesheet"&&typeof l.href=="string"&&typeof l.precedence=="string"){e=Oa(l.href);var u=Fl(n).hoistableStyles,i=u.get(e);if(i||(n=n.ownerDocument||n,i={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},u.set(e,i),(u=n.querySelector(Sn(e)))&&!u._p&&(i.instance=u,i.state.loading=5),Ot.has(e)||(l={rel:"preload",as:"style",href:l.href,crossOrigin:l.crossOrigin,integrity:l.integrity,media:l.media,hrefLang:l.hrefLang,referrerPolicy:l.referrerPolicy},Ot.set(e,l),u||Cy(n,e,l,i.state))),t&&a===null)throw Error(r(528,""));return i}if(t&&a!==null)throw Error(r(529,""));return null;case"script":return t=l.async,l=l.src,typeof l=="string"&&t&&typeof t!="function"&&typeof t!="symbol"?(t=Da(l),l=Fl(n).hoistableScripts,a=l.get(t),a||(a={type:"script",instance:null,count:0,state:null},l.set(t,a)),a):{type:"void",instance:null,count:0,state:null};default:throw Error(r(444,e))}}function Oa(e){return'href="'+_t(e)+'"'}function Sn(e){return'link[rel="stylesheet"]['+e+"]"}function Ed(e){return B({},e,{"data-precedence":e.precedence,precedence:null})}function Cy(e,t,l,a){e.querySelector('link[rel="preload"][as="style"]['+t+"]")?a.loading=1:(t=e.createElement("link"),a.preload=t,t.addEventListener("load",function(){return a.loading|=1}),t.addEventListener("error",function(){return a.loading|=2}),Pe(t,"link",l),Ze(t),e.head.appendChild(t))}function Da(e){return'[src="'+_t(e)+'"]'}function _n(e){return"script[async]"+e}function Ad(e,t,l){if(t.count++,t.instance===null)switch(t.type){case"style":var a=e.querySelector('style[data-href~="'+_t(l.href)+'"]');if(a)return t.instance=a,Ze(a),a;var n=B({},l,{"data-href":l.href,"data-precedence":l.precedence,href:null,precedence:null});return a=(e.ownerDocument||e).createElement("style"),Ze(a),Pe(a,"style",n),Gu(a,l.precedence,e),t.instance=a;case"stylesheet":n=Oa(l.href);var u=e.querySelector(Sn(n));if(u)return t.state.loading|=4,t.instance=u,Ze(u),u;a=Ed(l),(n=Ot.get(n))&&os(a,n),u=(e.ownerDocument||e).createElement("link"),Ze(u);var i=u;return i._p=new Promise(function(s,m){i.onload=s,i.onerror=m}),Pe(u,"link",a),t.state.loading|=4,Gu(u,l.precedence,e),t.instance=u;case"script":return u=Da(l.src),(n=e.querySelector(_n(u)))?(t.instance=n,Ze(n),n):(a=l,(n=Ot.get(u))&&(a=B({},l),ds(a,n)),e=e.ownerDocument||e,n=e.createElement("script"),Ze(n),Pe(n,"link",a),e.head.appendChild(n),t.instance=n);case"void":return null;default:throw Error(r(443,t.type))}else t.type==="stylesheet"&&(t.state.loading&4)===0&&(a=t.instance,t.state.loading|=4,Gu(a,l.precedence,e));return t.instance}function Gu(e,t,l){for(var a=l.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),n=a.length?a[a.length-1]:null,u=n,i=0;i title"):null)}function Ry(e,t,l){if(l===1||t.itemProp!=null)return!1;switch(e){case"meta":case"title":return!0;case"style":if(typeof t.precedence!="string"||typeof t.href!="string"||t.href==="")break;return!0;case"link":if(typeof t.rel!="string"||typeof t.href!="string"||t.href===""||t.onLoad||t.onError)break;switch(t.rel){case"stylesheet":return e=t.disabled,typeof t.precedence=="string"&&e==null;default:return!0}case"script":if(t.async&&typeof t.async!="function"&&typeof t.async!="symbol"&&!t.onLoad&&!t.onError&&t.src&&typeof t.src=="string")return!0}return!1}function Nd(e){return!(e.type==="stylesheet"&&(e.state.loading&3)===0)}function qy(e,t,l,a){if(l.type==="stylesheet"&&(typeof a.media!="string"||matchMedia(a.media).matches!==!1)&&(l.state.loading&4)===0){if(l.instance===null){var n=Oa(a.href),u=t.querySelector(Sn(n));if(u){t=u._p,t!==null&&typeof t=="object"&&typeof t.then=="function"&&(e.count++,e=Yu.bind(e),t.then(e,e)),l.state.loading|=4,l.instance=u,Ze(u);return}u=t.ownerDocument||t,a=Ed(a),(n=Ot.get(n))&&os(a,n),u=u.createElement("link"),Ze(u);var i=u;i._p=new Promise(function(s,m){i.onload=s,i.onerror=m}),Pe(u,"link",a),l.instance=u}e.stylesheets===null&&(e.stylesheets=new Map),e.stylesheets.set(l,t),(t=l.state.preload)&&(l.state.loading&3)===0&&(e.count++,l=Yu.bind(e),t.addEventListener("load",l),t.addEventListener("error",l))}}var ms=0;function Hy(e,t){return e.stylesheets&&e.count===0&&Xu(e,e.stylesheets),0ms?50:800)+t);return e.unsuspend=l,function(){e.unsuspend=null,clearTimeout(a),clearTimeout(n)}}:null}function Yu(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)Xu(this,this.stylesheets);else if(this.unsuspend){var e=this.unsuspend;this.unsuspend=null,e()}}}var Qu=null;function Xu(e,t){e.stylesheets=null,e.unsuspend!==null&&(e.count++,Qu=new Map,t.forEach(By,e),Qu=null,Yu.call(e))}function By(e,t){if(!(t.state.loading&4)){var l=Qu.get(e);if(l)var a=l.get(null);else{l=new Map,Qu.set(e,l);for(var n=e.querySelectorAll("link[data-precedence],style[data-precedence]"),u=0;u"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(f)}catch(d){console.error(d)}}return f(),Es.exports=Py(),Es.exports}var tv=ev();/** - * @license lucide-react v0.575.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const um=(...f)=>f.filter((d,v,r)=>!!d&&d.trim()!==""&&r.indexOf(d)===v).join(" ").trim();/** - * @license lucide-react v0.575.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const lv=f=>f.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase();/** - * @license lucide-react v0.575.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const av=f=>f.replace(/^([A-Z])|[\s-_]+(\w)/g,(d,v,r)=>r?r.toUpperCase():v.toLowerCase());/** - * @license lucide-react v0.575.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Wd=f=>{const d=av(f);return d.charAt(0).toUpperCase()+d.slice(1)};/** - * @license lucide-react v0.575.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */var nv={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};/** - * @license lucide-react v0.575.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const uv=f=>{for(const d in f)if(d.startsWith("aria-")||d==="role"||d==="title")return!0;return!1};/** - * @license lucide-react v0.575.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const iv=H.forwardRef(({color:f="currentColor",size:d=24,strokeWidth:v=2,absoluteStrokeWidth:r,className:x="",children:N,iconNode:C,...w},U)=>H.createElement("svg",{ref:U,...nv,width:d,height:d,stroke:f,strokeWidth:r?Number(v)*24/Number(d):v,className:um("lucide",x),...!N&&!uv(w)&&{"aria-hidden":"true"},...w},[...C.map(([E,G])=>H.createElement(E,G)),...Array.isArray(N)?N:[N]]));/** - * @license lucide-react v0.575.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Ke=(f,d)=>{const v=H.forwardRef(({className:r,...x},N)=>H.createElement(iv,{ref:N,iconNode:d,className:um(`lucide-${lv(Wd(f))}`,`lucide-${f}`,r),...x}));return v.displayName=Wd(f),v};/** - * @license lucide-react v0.575.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const cv=[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]],sv=Ke("arrow-left",cv);/** - * @license lucide-react v0.575.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const fv=[["path",{d:"M7 7h10v10",key:"1tivn9"}],["path",{d:"M7 17 17 7",key:"1vkiza"}]],Mn=Ke("arrow-up-right",fv);/** - * @license lucide-react v0.575.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const rv=[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]],ov=Ke("chevron-left",rv);/** - * @license lucide-react v0.575.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const dv=[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]],im=Ke("chevron-right",dv);/** - * @license lucide-react v0.575.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const mv=[["path",{d:"M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8",key:"5wwlr5"}],["path",{d:"M3 10a2 2 0 0 1 .709-1.528l7-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z",key:"r6nss1"}]],cm=Ke("house",mv);/** - * @license lucide-react v0.575.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const hv=[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",ry:"2",key:"1m3agn"}],["circle",{cx:"9",cy:"9",r:"2",key:"af1f0g"}],["path",{d:"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21",key:"1xmnt7"}]],yv=Ke("image",hv);/** - * @license lucide-react v0.575.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const vv=[["path",{d:"M9 17H7A5 5 0 0 1 7 7h2",key:"8i5ue5"}],["path",{d:"M15 7h2a5 5 0 1 1 0 10h-2",key:"1b9ql8"}],["line",{x1:"8",x2:"16",y1:"12",y2:"12",key:"1jonct"}]],sm=Ke("link-2",vv);/** - * @license lucide-react v0.575.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const gv=[["circle",{cx:"12",cy:"16",r:"1",key:"1au0dj"}],["rect",{x:"3",y:"10",width:"18",height:"12",rx:"2",key:"6s8ecr"}],["path",{d:"M7 10V7a5 5 0 0 1 10 0v3",key:"1pqi11"}]],bv=Ke("lock-keyhole",gv);/** - * @license lucide-react v0.575.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const pv=[["path",{d:"m16 17 5-5-5-5",key:"1bji2h"}],["path",{d:"M21 12H9",key:"dn1m92"}],["path",{d:"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4",key:"1uf3rs"}]],fm=Ke("log-out",pv);/** - * @license lucide-react v0.575.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Sv=[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]],Fd=Ke("plus",Sv);/** - * @license lucide-react v0.575.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const _v=[["path",{d:"M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z",key:"1c8476"}],["path",{d:"M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7",key:"1ydtos"}],["path",{d:"M7 3v4a1 1 0 0 0 1 1h7",key:"t51u73"}]],Ev=Ke("save",_v);/** - * @license lucide-react v0.575.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Av=[["path",{d:"m21 21-4.34-4.34",key:"14j7rj"}],["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}]],rm=Ke("search",Av);/** - * @license lucide-react v0.575.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const jv=[["path",{d:"M10 5H3",key:"1qgfaw"}],["path",{d:"M12 19H3",key:"yhmn1j"}],["path",{d:"M14 3v4",key:"1sua03"}],["path",{d:"M16 17v4",key:"1q0r14"}],["path",{d:"M21 12h-9",key:"1o4lsq"}],["path",{d:"M21 19h-5",key:"1rlt1p"}],["path",{d:"M21 5h-7",key:"1oszz2"}],["path",{d:"M8 10v4",key:"tgpxqk"}],["path",{d:"M8 12H3",key:"a7s4jb"}]],om=Ke("sliders-horizontal",jv);/** - * @license lucide-react v0.575.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const zv=[["path",{d:"M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z",key:"1s2grr"}],["path",{d:"M20 2v4",key:"1rf3ol"}],["path",{d:"M22 4h-4",key:"gwowj6"}],["circle",{cx:"4",cy:"20",r:"2",key:"6kqj1y"}]],Nv=Ke("sparkles",zv);/** - * @license lucide-react v0.575.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Tv=[["path",{d:"M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z",key:"r04s7s"}]],qs=Ke("star",Tv);/** - * @license lucide-react v0.575.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const xv=[["path",{d:"M10 11v6",key:"nco0om"}],["path",{d:"M14 11v6",key:"outv1u"}],["path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6",key:"miytrc"}],["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2",key:"e791ji"}]],Iu=Ke("trash-2",xv);/** - * @license lucide-react v0.575.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Ov=[["path",{d:"M12 3v12",key:"1x0j5s"}],["path",{d:"m17 8-5-5-5 5",key:"7q97r8"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}]],Dv=Ke("upload",Ov);/** - * @license lucide-react v0.575.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Mv=[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]],Un=Ke("x",Mv),Uv="2026-07-16T12:00:00.000Z",dm=["Administración","Recursos Humanos","CDC"],Cv=[];function Rv(){return{schemaVersion:1,apps:Cv.map(f=>({...f,keywords:[...f.keywords]})),favoritesByUser:{},recentByUser:{},updatedAt:Uv}}const xn="glm-hub:state:v1";function qv(f){if(!f||typeof f!="object")return!1;const d=f;return typeof d.id=="string"&&typeof d.name=="string"&&typeof d.description=="string"&&typeof d.category=="string"&&Array.isArray(d.keywords)&&typeof d.url=="string"&&typeof d.mark=="string"&&typeof d.accent=="string"&&typeof d.iconDataUrl=="string"&&(d.visibility==="published"||d.visibility==="hidden")}function Hv(f){if(!f||typeof f!="object")return!1;const d=f;return d.schemaVersion===1&&Array.isArray(d.apps)&&d.apps.every(qv)&&!!d.favoritesByUser&&typeof d.favoritesByUser=="object"&&!!d.recentByUser&&typeof d.recentByUser=="object"}function Id(f,d){return Object.fromEntries(Object.entries(f).map(([v,r])=>[v,r.filter(x=>d.has(x))]))}function Bv(f){switch(f){case"Administración":case"Recursos Humanos":case"CDC":return f;case"Recursos":return"Recursos Humanos";case"Clientes":case"Creatividad":return"CDC";case"Operaciones":case"Analítica":default:return"Administración"}}function Gv(f){let d=!1;const v=f.apps.map(r=>{const x=Bv(r.category);return x===r.category?r:(d=!0,{...r,category:x})});return d?{...f,apps:v,updatedAt:new Date().toISOString()}:f}function Lv(f){const d=f.apps.filter(r=>!!r.iconDataUrl.trim());if(d.length===f.apps.length)return f;const v=new Set(d.map(r=>r.id));return{...f,apps:d,favoritesByUser:Id(f.favoritesByUser,v),recentByUser:Id(f.recentByUser,v),updatedAt:new Date().toISOString()}}function Yv(){const f=Rv();try{const d=localStorage.getItem(xn);if(!d)return localStorage.setItem(xn,JSON.stringify(f)),{data:f,warning:""};const v=JSON.parse(d);if(!Hv(v))return localStorage.setItem(`${xn}:backup`,d),localStorage.setItem(xn,JSON.stringify(f)),{data:f,warning:"Los datos locales no eran válidos. Restauramos el catálogo inicial."};const r=Gv(v),x=Lv(r);return x!==v&&localStorage.setItem(xn,JSON.stringify(x)),{data:x,warning:""}}catch{return{data:f,warning:"No pudimos leer los datos guardados. Estás viendo el catálogo inicial."}}}function Ua(f){return f.normalize("NFD").replace(/[\u0300-\u036f]/g,"").toLocaleLowerCase("es-DO").trim()}function Jl(f){if(!f.trim())return null;try{const d=new URL(f.trim()),v=d.protocol==="http:"&&(d.hostname==="localhost"||d.hostname==="127.0.0.1");return d.protocol!=="https:"&&!v||d.username||d.password?null:d.toString()}catch{return null}}const mm="https://dbit.digitalcompass.agency".trim(),hm="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyAgCiAgICAicm9sZSI6ICJhbm9uIiwKICAgICJpc3MiOiAic3VwYWJhc2UtZGVtbyIsCiAgICAiaWF0IjogMTY0MTc2OTIwMCwKICAgICJleHAiOiAxNzk5NTM1NjAwCn0.dc_X5iR_VP_qT0zsiyj_I_OZ2T9FtRU2BBNWN8Bu4GE".trim(),ym=globalThis.supabase;if(!mm||!hm)throw new Error("Faltan VITE_SUPABASE_URL o VITE_SUPABASE_ANON_KEY en el archivo .env.");if(!ym)throw new Error("No se pudo cargar la librería de Supabase.");const qe=ym.createClient(mm,hm,{auth:{autoRefreshToken:!0,persistSession:!0,detectSessionInUrl:!0,flowType:"pkce"}}),Dn="glm_hub_apps",Ds="glm_hub_favorites",vm="glm_hub_recent_apps",Pu="glm-hub-icons",Pd="glm-hub:supabase-catalog-migrated:v1";function gm(f){return{id:f.id,name:f.name,description:f.description,category:f.category,keywords:[],url:f.url??"",mark:"",accent:"#4F758B",iconDataUrl:f.icon_url,visibility:f.visibility,createdAt:f.created_at,updatedAt:f.updated_at}}function Qv(f){const d=/^data:(image\/(?:png|jpeg|webp));base64,([a-zA-Z0-9+/=]+)$/.exec(f);if(!d)throw new Error("El ícono no tiene un formato válido.");const v=d[1],r=atob(d[2]),x=new Uint8Array(r.length);for(let N=0;Nr.app_id)}async function Vv(f){const{data:d,error:v}=await qe.from(vm).select("app_id,last_opened_at").eq("user_id",f).order("last_opened_at",{ascending:!1}).limit(30);if(v)throw new Error(`No se pudieron cargar los accesos recientes: ${v.message}`);return(d??[]).map(r=>r.app_id)}async function Kv(f){const[d,v,r]=await Promise.all([Hs(),Zv(f),Vv(f)]);return{schemaVersion:1,apps:d,favoritesByUser:{[f]:v},recentByUser:{[f]:r},updatedAt:new Date().toISOString()}}async function bm(f,d,v){const r=(d==null?void 0:d.id)??crypto.randomUUID(),x=await wv(r,f.iconDataUrl),N={name:f.name,description:f.description,category:f.category,url:f.url||null,icon_url:x,visibility:f.visibility,updated_by:v};let C;if(d?C=await qe.from(Dn).update(N).eq("id",r).select("id,name,description,category,url,icon_url,visibility,created_at,updated_at").single():C=await qe.from(Dn).insert({id:r,...N,created_by:v}).select("id,name,description,category,url,icon_url,visibility,created_at,updated_at").single(),C.error)throw x!==f.iconDataUrl&&await Ms(x),new Error(`No se pudo guardar la aplicación: ${C.error.message}`);return d&&d.iconDataUrl!==x&&await Ms(d.iconDataUrl),gm(C.data)}async function Jv(f){const{error:d}=await qe.from(Dn).delete().eq("id",f.id);if(d)throw new Error(`No se pudo eliminar la aplicación: ${d.message}`);await Ms(f.iconDataUrl)}async function kv(f,d,v){if(v){const{error:x}=await qe.from(Ds).upsert({user_id:f,app_id:d},{onConflict:"user_id,app_id"});if(x)throw new Error(`No se pudo guardar el favorito: ${x.message}`);return}const{error:r}=await qe.from(Ds).delete().eq("user_id",f).eq("app_id",d);if(r)throw new Error(`No se pudo quitar el favorito: ${r.message}`)}async function $v(f,d){const{error:v}=await qe.from(vm).upsert({user_id:f,app_id:d,last_opened_at:new Date().toISOString()},{onConflict:"user_id,app_id"});if(v)throw new Error(`No se pudo registrar el acceso reciente: ${v.message}`)}async function Wv(f,d){if(f.role!=="admin"||d.length===0||localStorage.getItem(Pd)==="completed")return 0;const v=await Hs(),r=new Set(v.map(C=>C.name.trim().toLocaleLowerCase("es-DO"))),x=d.filter(C=>{const w=C.name.trim().toLocaleLowerCase("es-DO");return!!C.iconDataUrl.trim()&&!r.has(w)});let N=0;for(const C of x)await bm({name:C.name,description:C.description,category:C.category,url:C.url,iconDataUrl:C.iconDataUrl,visibility:C.visibility},null,f.id),r.add(C.name.trim().toLocaleLowerCase("es-DO")),N+=1;return localStorage.setItem(Pd,"completed"),N}function Fv(f){const d=qe.channel("glm-hub-apps-shared").on("postgres_changes",{event:"*",schema:"public",table:Dn},()=>f()).subscribe();return()=>{qe.removeChannel(d)}}const Us=new Intl.Collator("es-DO",{sensitivity:"base"}),Iv="@gomezleemarketing.com",em="https://agenteit.digitalcompass.agency/webhook/glm-hub-generar-icono".trim()??"",tm="https://agenteit.digitalcompass.agency/webhook/glm-hub-solicitar-acceso".trim()??"";function Ns(f=""){return`/${f}`}function Pv(){return new URL("/",window.location.origin).toString()}function e0(f,d){var N;const v=f.user.user_metadata??{},r=v.full_name??v.name,x=d.email.split("@")[0]||"Usuario GLM";return((N=d.full_name)==null?void 0:N.trim())||(typeof r=="string"?r.trim():"")||x}function t0(f){const d=f.user.user_metadata??{},v=d.avatar_url??d.picture;if(typeof v!="string"||!v.trim())return"";try{const r=new URL(v.trim());return r.protocol==="https:"?r.toString():""}catch{return""}}async function l0(f){var N;const d=((N=f.user.email)==null?void 0:N.trim().toLocaleLowerCase("en-US"))??"";if(!d.endsWith(Iv))return{session:null,error:"Debes continuar con una cuenta corporativa @gomezleemarketing.com."};const{data:v,error:r}=await qe.from("glm_hub_authorized_users").select("email, full_name, role").eq("email",d).eq("is_active",!0).maybeSingle(),x=v;return r?(console.error("No se pudo validar el acceso en Supabase:",r),{session:null,error:"No pudimos validar tu acceso en Supabase. Intenta nuevamente."}):x?{session:{user:{id:f.user.id,name:e0(f,x),email:x.email,role:x.role,avatarUrl:t0(f)},expiresAt:(f.expires_at??Math.floor(Date.now()/1e3)+3600)*1e3},error:""}:{session:null,error:"Tu correo no está autorizado para entrar al GLM Hub."}}function pm(f){const d=f.trim().split(/\s+/).filter(Boolean);if(d.length===0)return"GL";if(d.length===1)return d[0].slice(0,2).toLocaleUpperCase("es-DO");const v=d.length>=4?d.length-2:d.length-1;return`${d[0][0]}${d[v][0]}`.toLocaleUpperCase("es-DO")}function a0(){const f=new Date().getHours();return f<12?"Buenos días":f<19?"Buenas tardes":"Buenas noches"}function lm(f){return f&&f[0].toLocaleUpperCase("es-DO")+f.slice(1)}function am(f){const d=new Intl.DateTimeFormat("es-DO",{weekday:"long",day:"numeric",month:"long",year:"numeric"}).formatToParts(f),v=r=>{var x;return((x=d.find(N=>N.type===r))==null?void 0:x.value)??""};return`${lm(v("weekday"))} ${v("day")} de ${lm(v("month"))} de ${v("year")}`}function n0(){const[f,d]=H.useState(()=>am(new Date));return H.useEffect(()=>{const v=()=>d(am(new Date));v();const r=window.setInterval(v,6e4);return()=>window.clearInterval(r)},[]),f}function Wu(){return{name:"",description:"",category:"Administración",url:"",iconDataUrl:"",visibility:"published"}}function On(f){return{name:f.name,description:f.description,category:f.category,url:f.url,iconDataUrl:f.iconDataUrl,visibility:f.visibility}}async function Sm(f,d=!0){if(!new Set(["image/png","image/jpeg","image/webp"]).has(f.type))throw new Error("Usa un ícono en formato PNG, JPG o WebP.");if(d&&f.size>1024*1024)throw new Error("El ícono debe pesar menos de 1 MB.");const r=await createImageBitmap(f);if(r.width>4096||r.height>4096)throw r.close(),new Error("El ícono no puede superar 4096 × 4096 px.");const x=document.createElement("canvas");x.width=192,x.height=192;const N=x.getContext("2d");if(!N)throw r.close(),new Error("Este navegador no pudo procesar el ícono.");const C=Math.min(192/r.width,192/r.height),w=r.width*C,U=r.height*C,E=(192-w)/2,G=(192-U)/2;return N.clearRect(0,0,192,192),N.drawImage(r,E,G,w,U),r.close(),x.toDataURL("image/webp",.9)}async function u0(f){if(!f.startsWith("data:image/"))throw new Error("La IA no devolvió una imagen válida.");const v=await(await fetch(f)).blob();return _m(v)}async function _m(f){const d=f.type||"image/png";if(!d.startsWith("image/"))throw new Error("El flujo de IA no devolvió un archivo de imagen.");const v=d==="image/jpeg"?"jpg":d.split("/")[1]||"png",r=new File([f],`icono-generado.${v}`,{type:d});return Sm(r,!1)}function ei({compact:f=!1}){return c.jsx("img",{className:f?"brand-logo brand-logo--compact":"brand-logo",src:"/glm-logo.png",alt:"GomezLee Marketing",width:"350",height:"109"})}function ti({app:f,size:d="regular",showPlaceholder:v=!1}){const[r,x]=H.useState(!1),N=!!f.iconDataUrl&&!r;return c.jsx("span",{className:`app-mark app-mark--${d}`,"aria-hidden":"true",children:N?c.jsx("img",{src:f.iconDataUrl,alt:"",onError:()=>x(!0)}):v?c.jsx(yv,{className:"app-mark__placeholder",size:36,strokeWidth:1.5}):null})}function Em({user:f,label:d}){const[v,r]=H.useState(!1),x=!!f.avatarUrl&&!v;return c.jsx("span",{className:"avatar","aria-label":d,"aria-hidden":d?void 0:!0,children:x?c.jsx("img",{src:f.avatarUrl,alt:"",referrerPolicy:"no-referrer",onError:()=>r(!0)}):pm(f.name)})}function Ts({messages:f,onDismiss:d}){return c.jsx("div",{className:"toast-stack","aria-live":"polite","aria-relevant":"additions",children:f.map(v=>c.jsxs("div",{className:`toast toast--${v.kind}`,children:[c.jsx("span",{className:"toast__signal","aria-hidden":"true"}),c.jsxs("div",{children:[c.jsx("strong",{children:v.title}),v.detail?c.jsx("p",{children:v.detail}):null]}),c.jsx("button",{type:"button",className:"icon-button icon-button--quiet","aria-label":"Cerrar mensaje",onClick:()=>d(v.id),children:c.jsx(Un,{size:18,"aria-hidden":"true"})})]},v.id))})}function i0({onLogin:f,error:d,disabled:v=!1}){const[r,x]=H.useState(!1),N=async()=>{x(!0),await f(),x(!1)};return c.jsxs("main",{className:"login-shell",children:[c.jsxs("section",{className:"login-story","aria-labelledby":"login-headline",children:[c.jsx("div",{className:"login-story__topline",children:c.jsx(ei,{})}),c.jsxs("div",{className:"login-story__content",children:[c.jsx("p",{className:"eyebrow",children:"ACCESO INTERNO"}),c.jsxs("h1",{id:"login-headline",children:["Todo el trabajo",c.jsx("span",{children:"de GLM, a un clic."})]}),c.jsx("p",{className:"login-story__lede",children:"Tu punto de partida para abrir herramientas, encontrar recursos y mantener el día en movimiento."})]}),c.jsx("div",{className:"login-story__type","aria-hidden":"true",children:"GLM"})]}),c.jsx("section",{className:"login-panel","aria-label":"Inicio de sesión",children:c.jsxs("div",{className:"login-panel__inner",children:[c.jsxs("div",{className:"login-panel__heading",children:[c.jsx("p",{className:"section-kicker",children:"GLM HUB"}),c.jsx("h2",{children:"Entra a tu espacio."})]}),c.jsxs("div",{className:"login-form",children:[d?c.jsx("p",{className:"form-error",id:"login-error",role:"alert",children:d}):null,c.jsxs("button",{className:"primary-button primary-button--full",type:"button",disabled:v||r,onClick:()=>void N(),children:[c.jsx(bv,{size:18,"aria-hidden":"true"}),r?"Conectando…":"Continuar con Google",r?null:c.jsx(Mn,{size:18,"aria-hidden":"true"})]})]})]})})]})}function c0({user:f,view:d,onNavigate:v,onLogout:r}){return c.jsxs("aside",{className:"sidebar",children:[c.jsx("div",{className:"sidebar__brand",children:c.jsx(ei,{compact:!0})}),c.jsxs("nav",{className:"sidebar__nav","aria-label":"Navegación principal",children:[c.jsxs("button",{type:"button",className:d==="hub"?"is-active":"",onClick:()=>v("hub"),"aria-current":d==="hub"?"page":void 0,children:[c.jsx(cm,{size:20,"aria-hidden":"true"}),c.jsx("span",{children:"Aplicaciones"})]}),f.role==="admin"?c.jsxs("button",{type:"button",className:d==="admin"?"is-active":"",onClick:()=>v("admin"),"aria-current":d==="admin"?"page":void 0,children:[c.jsx(om,{size:20,"aria-hidden":"true"}),c.jsx("span",{children:"Administrar"})]}):null]}),c.jsxs("div",{className:"sidebar__account",children:[c.jsx(Em,{user:f}),c.jsxs("span",{className:"sidebar__account-copy",children:[c.jsx("strong",{children:f.name}),c.jsx("small",{children:f.role==="admin"?"Administrador":"Usuario"})]}),c.jsx("button",{type:"button",className:"icon-button","aria-label":"Cerrar sesión",onClick:r,children:c.jsx(fm,{size:18,"aria-hidden":"true"})})]})]})}function s0({user:f}){return c.jsxs("header",{className:"mobile-header",children:[c.jsx(ei,{compact:!0}),c.jsx(Em,{user:f,label:`Sesión de ${f.name}`})]})}function f0({user:f,view:d,onNavigate:v,onLogout:r}){return c.jsxs("nav",{className:"mobile-nav","aria-label":"Navegación móvil",children:[c.jsxs("button",{type:"button",className:d==="hub"?"is-active":"",onClick:()=>v("hub"),children:[c.jsx(cm,{size:20,"aria-hidden":"true"}),c.jsx("span",{children:"Inicio"})]}),f.role==="admin"?c.jsxs("button",{type:"button",className:d==="admin"?"is-active":"",onClick:()=>v("admin"),children:[c.jsx(om,{size:20,"aria-hidden":"true"}),c.jsx("span",{children:"Administrar"})]}):null,c.jsxs("button",{type:"button",onClick:r,children:[c.jsx(fm,{size:20,"aria-hidden":"true"}),c.jsx("span",{children:"Salir"})]})]})}function r0({app:f,isFavorite:d,onActivate:v,onFavorite:r}){const x=!!Jl(f.url);return c.jsxs("article",{className:"quick-launch",children:[c.jsxs("div",{className:"quick-launch__top",children:[c.jsx(ti,{app:f,size:"regular"}),c.jsx("button",{type:"button",className:`favorite-button ${d?"is-favorite":""}`,onClick:()=>r(f.id),"aria-label":d?`Quitar ${f.name} de favoritos`:`Agregar ${f.name} a favoritos`,"aria-pressed":d,children:c.jsx(qs,{size:18,fill:d?"currentColor":"none","aria-hidden":"true"})})]}),c.jsxs("div",{className:"quick-launch__copy",children:[c.jsx("span",{className:"quick-launch__category",children:f.category}),c.jsx("h3",{children:f.name}),c.jsx("p",{children:f.description})]}),c.jsxs("button",{type:"button",className:"quick-launch__action",onClick:()=>v(f),children:[c.jsx("span",{children:x?"Abrir aplicación":"Enlace pendiente"}),x?c.jsx(Mn,{size:18,"aria-hidden":"true"}):c.jsx(sm,{size:17,"aria-hidden":"true"})]})]})}function o0({app:f,index:d,isFavorite:v,onActivate:r,onFavorite:x}){const N=!!Jl(f.url);return c.jsxs("article",{className:"directory-row",children:[c.jsx("span",{className:"directory-row__number","aria-hidden":"true",children:String(d+1).padStart(2,"0")}),c.jsx(ti,{app:f,size:"small"}),c.jsxs("div",{className:"directory-row__copy",children:[c.jsx("h3",{children:f.name}),c.jsx("p",{children:f.description})]}),c.jsx("span",{className:"directory-row__category",children:f.category}),c.jsxs("span",{className:`availability ${N?"availability--ready":"availability--pending"}`,children:[c.jsx("span",{"aria-hidden":"true"}),N?"Disponible":"Enlace pendiente"]}),c.jsx("button",{type:"button",className:`favorite-button ${v?"is-favorite":""}`,onClick:()=>x(f.id),"aria-label":v?`Quitar ${f.name} de favoritos`:`Agregar ${f.name} a favoritos`,"aria-pressed":v,children:c.jsx(qs,{size:18,fill:v?"currentColor":"none","aria-hidden":"true"})}),c.jsxs("button",{type:"button",className:"directory-row__open",onClick:()=>r(f),children:[c.jsx("span",{children:N?"Abrir":"Ver estado"}),N?c.jsx(Mn,{size:17,"aria-hidden":"true"}):c.jsx(im,{size:17,"aria-hidden":"true"})]})]})}function d0({search:f,favoritesOnly:d,onClear:v}){return c.jsxs("div",{className:"empty-state",children:[c.jsx("span",{className:"empty-state__mark","aria-hidden":"true",children:"0"}),c.jsxs("div",{children:[c.jsx("p",{className:"section-kicker",children:"SIN RESULTADOS"}),c.jsx("h3",{children:d?"Aún no tienes favoritos aquí.":`No encontramos “${f||"esa aplicación"}”.`}),c.jsx("p",{children:"Prueba otro término, cambia la categoría o vuelve a ver todo el directorio."}),c.jsx("button",{type:"button",className:"text-button",onClick:v,children:"Limpiar filtros"})]})]})}function m0({apps:f,onSubmit:d}){const v=H.useRef(null),[r,x]=H.useState("Todas"),[N,C]=H.useState(""),[w,U]=H.useState(!1),E=H.useMemo(()=>[...f].filter(Z=>Z.visibility==="published").sort((Z,ee)=>Us.compare(Z.name,ee.name)),[f]),G=H.useMemo(()=>r==="Todas"?E:E.filter(Z=>Z.category===r),[r,E]);H.useEffect(()=>{N&&!G.some(Z=>Z.id===N)&&C("")},[N,G]),H.useEffect(()=>{if(!w)return;const Z=ee=>{ee.preventDefault(),ee.returnValue=""};return window.addEventListener("beforeunload",Z),()=>window.removeEventListener("beforeunload",Z)},[w]);const B=()=>{var Z;x("Todas"),C(""),(Z=v.current)==null||Z.showModal()},J=()=>{var Z;w||(Z=v.current)==null||Z.close()},ye=async Z=>{var V;Z.preventDefault();const ee=E.find(ue=>ue.id===N);if(!(!ee||w)){U(!0);try{await d(ee)&&((V=v.current)==null||V.close(),x("Todas"),C(""))}finally{U(!1)}}};return c.jsxs("section",{className:"access-request-bridge","aria-label":"Solicitud de acceso a aplicaciones",children:[c.jsx("div",{className:"access-request-bridge__number","aria-hidden":"true",children:"?"}),c.jsxs("div",{children:[c.jsx("p",{className:"section-kicker",children:"SOLICITUD DE ACCESO"}),c.jsx("h2",{children:"¿No tienes acceso a una aplicación?"}),c.jsx("p",{children:"Selecciona el portal que necesitas y envía la solicitud al equipo responsable."})]}),c.jsxs("button",{type:"button",className:"secondary-button",onClick:B,children:["Solicitar acceso aquí",c.jsx(Mn,{size:18,"aria-hidden":"true"})]}),c.jsxs("dialog",{className:"access-request-dialog",ref:v,onCancel:Z=>{w&&Z.preventDefault()},children:[c.jsx("button",{type:"button",className:"access-request-dialog__close",onClick:J,"aria-label":"Cerrar",children:c.jsx(Un,{size:19,"aria-hidden":"true"})}),c.jsx("p",{className:"section-kicker",children:"GLM HUB"}),c.jsx("h2",{children:"Solicitar acceso"}),c.jsx("p",{className:"access-request-dialog__intro",children:"Elige el área y la aplicación. El catálogo se actualiza automáticamente con los portales publicados."}),c.jsxs("form",{onSubmit:Z=>void ye(Z),children:[c.jsxs("div",{className:"form-field",children:[c.jsxs("label",{htmlFor:"access-request-area",children:["Área",c.jsx(Kl,{})]}),c.jsxs("select",{id:"access-request-area",value:r,onChange:Z=>x(Z.target.value),disabled:w,required:!0,children:[c.jsx("option",{value:"Todas",children:"Todas"}),c.jsx("option",{value:"Administración",children:"Administración"}),c.jsx("option",{value:"Recursos Humanos",children:"Recursos Humanos"}),c.jsx("option",{value:"CDC",children:"CDC"})]})]}),c.jsxs("div",{className:"form-field",children:[c.jsxs("label",{htmlFor:"access-request-app",children:["Aplicación",c.jsx(Kl,{})]}),c.jsxs("select",{id:"access-request-app",value:N,onChange:Z=>C(Z.target.value),disabled:w||G.length===0,required:!0,children:[c.jsx("option",{value:"",children:G.length===0?"No hay aplicaciones publicadas en esta área":"Selecciona una aplicación"}),G.map(Z=>c.jsx("option",{value:Z.id,children:Z.name},Z.id))]})]}),c.jsxs("div",{className:"access-request-dialog__actions",children:[c.jsx("button",{type:"button",className:"secondary-button secondary-button--quiet",onClick:J,disabled:w,children:"Cancelar"}),c.jsx("button",{type:"submit",className:"primary-button",disabled:!N||w,children:w?"Enviando…":"Enviar solicitud"})]})]})]}),w?c.jsx("div",{className:"generation-overlay",role:"dialog","aria-modal":"true","aria-labelledby":"access-request-loading-title",children:c.jsxs("div",{className:"generation-overlay__card",children:[c.jsx("span",{className:"generation-spinner","aria-hidden":"true"}),c.jsx("p",{className:"section-kicker",children:"GLM HUB"}),c.jsx("h2",{id:"access-request-loading-title",children:"Enviando la solicitud…"}),c.jsx("p",{children:"Estamos registrando la solicitud y enviando el correo a las personas responsables."})]})}):null]})}function h0(f,d,v=!1){return d<=(v?5:7)?Array.from({length:d},(x,N)=>N+1):v?f<=3?[1,2,3,"ellipsis-end",d]:f>=d-2?[1,"ellipsis-start",d-2,d-1,d]:[1,"ellipsis-start",f,"ellipsis-end",d]:f<=4?[1,2,3,4,5,"ellipsis-end",d]:f>=d-3?[1,"ellipsis-start",d-4,d-3,d-2,d-1,d]:[1,"ellipsis-start",f-1,f,f+1,"ellipsis-end",d]}function Cs({currentPage:f,totalPages:d,onPageChange:v,compact:r=!1,label:x}){if(d<=1)return null;const N=h0(f,d,r);return c.jsxs("nav",{className:`pagination ${r?"pagination--compact":""}`,"aria-label":x,children:[c.jsx("button",{type:"button",className:"pagination__arrow",disabled:f<=1,onClick:()=>v(f-1),"aria-label":"Página anterior",children:c.jsx(ov,{size:16,"aria-hidden":"true"})}),c.jsx("div",{className:"pagination__pages",children:N.map(C=>typeof C=="number"?c.jsx("button",{type:"button",className:`pagination__page ${C===f?"is-active":""}`,onClick:()=>v(C),"aria-label":`Ir a la página ${C}`,"aria-current":C===f?"page":void 0,children:C},C):c.jsx("span",{className:"pagination__ellipsis","aria-hidden":"true",children:"…"},C))}),c.jsx("button",{type:"button",className:"pagination__arrow",disabled:f>=d,onClick:()=>v(f+1),"aria-label":"Página siguiente",children:c.jsx(im,{size:16,"aria-hidden":"true"})})]})}const Fu=10,xs=6,Os=10;function y0({user:f,data:d,storageWarning:v,onActivate:r,onFavorite:x,onAdmin:N,onRequestAccess:C}){const[w,U]=H.useState(""),[E,G]=H.useState("Todas"),[B,J]=H.useState(!1),[ye,Z]=H.useState(1),[ee,V]=H.useState(1),ue=H.useDeferredValue(w),Me=n0(),Te=f.role==="admin",ae=d.favoritesByUser[f.id]??[],ve=d.recentByUser[f.id]??[],ge=H.useMemo(()=>new Set(ae),[ae]),W=H.useMemo(()=>[...d.apps.filter(g=>g.visibility==="published"&&!!g.iconDataUrl.trim())].sort((g,M)=>Us.compare(g.name,M.name)),[d.apps]),ne=H.useMemo(()=>{const g=Ua(ue);return W.filter(M=>E!=="Todas"&&M.category!==E||B&&!ge.has(M.id)?!1:g?Ua(M.name).includes(g):!0).sort((M,R)=>Number(ge.has(R.id))-Number(ge.has(M.id))||Us.compare(M.name,R.name))},[E,ue,ge,B,W]),Ue=Math.max(1,Math.ceil(ne.length/Fu));H.useEffect(()=>{Z(1)},[w,E,B]),H.useEffect(()=>{ye>Ue&&Z(Ue)},[ye,Ue]);const Je=H.useMemo(()=>{const g=(ye-1)*Fu;return ne.slice(g,g+Fu)},[ye,ne]),xe=g=>{Z(Math.min(Math.max(g,1),Ue)),window.requestAnimationFrame(()=>{var M;(M=document.getElementById("directory-title"))==null||M.scrollIntoView({behavior:"smooth",block:"start"})})},De=H.useMemo(()=>{const g=new Map(W.map(o=>[o.id,o])),M=[],R=new Set,z=o=>{const j=g.get(o);!j||R.has(o)||(M.push(j),R.add(o))};if(ae.forEach(z),M.length<3){for(const o of ve)if(z(o),M.length>=3)break}if(M.length<3){for(const o of W)if(z(o.id),M.length>=3)break}return M},[ae,W,ve]),Xe=Math.max(1,Math.ceil(De.length/xs)),Q=H.useMemo(()=>{const g=(ee-1)*xs;return De.slice(g,g+xs)},[De,ee]);H.useEffect(()=>{ee>Xe&&V(Xe)},[ee,Xe]),H.useEffect(()=>{V(1)},[d.favoritesByUser,d.recentByUser,f.id]);const I=g=>{V(Math.min(Math.max(g,1),Xe)),window.requestAnimationFrame(()=>{var M;(M=document.getElementById("quick-title"))==null||M.scrollIntoView({behavior:"smooth",block:"start"})})},S=()=>{U(""),G("Todas"),J(!1)};return c.jsxs("main",{className:"page-content hub-page",children:[c.jsxs("header",{className:"page-header",children:[c.jsxs("div",{children:[c.jsxs("p",{className:"page-header__meta",children:[a0(),", ",f.name]}),c.jsx("h1",{children:"Tu mesa de trabajo."})]}),c.jsx("div",{className:"page-header__aside",children:c.jsx("span",{children:Me})})]}),v?c.jsx("div",{className:"inline-alert",role:"status",children:v}):null,c.jsxs("section",{className:"search-stage","aria-labelledby":"search-title",children:[c.jsx("div",{className:"search-stage__copy",children:c.jsx("h2",{id:"search-title",children:"¿Qué necesitas abrir?"})}),c.jsxs("div",{className:"hub-search",children:[c.jsx(rm,{size:21,"aria-hidden":"true"}),c.jsx("label",{className:"sr-only",htmlFor:"hub-search-input",children:"Buscar por nombre de proyecto"}),c.jsx("input",{id:"hub-search-input",type:"search",value:w,onChange:g=>U(g.target.value),placeholder:"Buscar por nombre de proyecto…"}),w?c.jsx("button",{type:"button",onClick:()=>U(""),"aria-label":"Limpiar búsqueda",children:c.jsx(Un,{size:18,"aria-hidden":"true"})}):null]})]}),c.jsxs("section",{className:"quick-section","aria-labelledby":"quick-title",children:[c.jsxs("div",{className:"section-heading",children:[c.jsxs("div",{children:[c.jsx("p",{className:"section-kicker",children:"FIJADAS PARA TI"}),c.jsx("h2",{id:"quick-title",children:"Acceso rápido"})]}),c.jsx("p",{children:"Abre lo que más usas sin detener el ritmo."})]}),c.jsx("div",{className:"quick-grid",children:Q.map(g=>c.jsx(r0,{app:g,isFavorite:ge.has(g.id),onActivate:r,onFavorite:x},g.id))}),c.jsx(Cs,{currentPage:ee,totalPages:Xe,onPageChange:I,compact:Xe>5,label:"Paginación de acceso rápido"})]}),c.jsxs("section",{className:"directory-section","aria-labelledby":"directory-title",children:[c.jsxs("div",{className:"section-heading section-heading--directory",children:[c.jsxs("div",{children:[c.jsx("p",{className:"section-kicker",children:"DIRECTORIO GLM"}),c.jsx("h2",{id:"directory-title",children:"Todas las aplicaciones"})]}),c.jsxs("div",{className:"directory-count","aria-live":"polite",children:[c.jsx("strong",{children:ne.length}),c.jsx("span",{children:ne.length===1?"resultado":"resultados"})]})]}),c.jsxs("div",{className:"filter-bar","aria-label":"Filtros del directorio",children:[c.jsx("div",{className:"category-filters",children:["Todas",...dm].map(g=>c.jsx("button",{type:"button",className:E===g?"is-active":"",onClick:()=>G(g),"aria-pressed":E===g,children:g},g))}),c.jsxs("button",{type:"button",className:`favorites-filter ${B?"is-active":""}`,onClick:()=>J(g=>!g),"aria-pressed":B,children:[c.jsx(qs,{size:17,fill:B?"currentColor":"none","aria-hidden":"true"}),"Solo favoritos"]})]}),ne.length>0?c.jsxs(c.Fragment,{children:[c.jsx("div",{className:"directory-list",children:Je.map((g,M)=>c.jsx(o0,{app:g,index:(ye-1)*Fu+M,isFavorite:ge.has(g.id),onActivate:r,onFavorite:x},g.id))}),c.jsx(Cs,{currentPage:ye,totalPages:Ue,onPageChange:xe,compact:Ue>5,label:"Paginación de aplicaciones"})]}):c.jsx(d0,{search:w,favoritesOnly:B,onClear:S})]}),Te?c.jsxs("section",{className:"admin-bridge","aria-label":"Acceso al panel de administración",children:[c.jsx("div",{className:"admin-bridge__number","aria-hidden":"true",children:"+"}),c.jsxs("div",{children:[c.jsx("p",{className:"section-kicker",children:"CONTROL DEL CATÁLOGO"}),c.jsx("h2",{children:"¿Falta una herramienta?"}),c.jsx("p",{children:"Adjunta su ícono, pega el enlace y publícala para todo el equipo."})]}),c.jsxs("button",{type:"button",className:"secondary-button",onClick:N,children:["Administrar aplicaciones",c.jsx(Mn,{size:18,"aria-hidden":"true"})]})]}):c.jsx(m0,{apps:W,onSubmit:C})]})}function v0({apps:f,selectedId:d,onSelect:v,onDelete:r}){const[x,N]=H.useState(""),[C,w]=H.useState(1),[U,E]=H.useState(null),G=H.useRef(null),B=H.useMemo(()=>{const V=Ua(x);return V?f.filter(ue=>Ua(`${ue.name} ${ue.category}`).includes(V)):f},[f,x]),J=Math.max(1,Math.ceil(B.length/Os));H.useEffect(()=>{w(1)},[x]),H.useEffect(()=>{C>J&&w(J)},[C,J]);const ye=H.useMemo(()=>{const V=(C-1)*Os;return B.slice(V,V+Os)},[B,C]),Z=(V,ue)=>{var Me;V.stopPropagation(),E(ue),(Me=G.current)==null||Me.showModal()},ee=async()=>{var V;U&&await r(U.id)&&((V=G.current)==null||V.close(),E(null))};return c.jsxs("aside",{className:"admin-list","aria-label":"Aplicaciones configuradas",children:[c.jsxs("div",{className:"admin-list__top",children:[c.jsxs("div",{children:[c.jsx("p",{className:"section-kicker",children:"CATÁLOGO"}),c.jsxs("h2",{children:[f.length," ",f.length===1?"aplicación":"aplicaciones"]})]}),c.jsx("button",{type:"button",className:"icon-button icon-button--accent",onClick:()=>v(null),"aria-label":"Crear aplicación",children:c.jsx(Fd,{size:20,"aria-hidden":"true"})})]}),c.jsxs("div",{className:"admin-list__search",children:[c.jsx(rm,{size:17,"aria-hidden":"true"}),c.jsx("label",{htmlFor:"admin-search",className:"sr-only",children:"Buscar en el catálogo"}),c.jsx("input",{id:"admin-search",type:"search",value:x,onChange:V=>N(V.target.value),placeholder:"Buscar…"})]}),c.jsxs("div",{className:"admin-list__items",children:[C===1?c.jsxs("button",{type:"button",className:`admin-list__new ${d===null?"is-active":""}`,onClick:()=>v(null),children:[c.jsx("span",{className:"admin-list__new-icon",children:c.jsx(Fd,{size:18,"aria-hidden":"true"})}),c.jsxs("span",{className:"admin-list__item-info",children:[c.jsx("strong",{children:"Nueva aplicación"}),c.jsx("small",{children:"Crear y publicar"})]})]}):null,ye.map(V=>c.jsxs("div",{className:`admin-list__item-row ${d===V.id?"is-active":""}`,onClick:()=>v(V.id),role:"button",tabIndex:0,onKeyDown:ue=>{(ue.key==="Enter"||ue.key===" ")&&v(V.id)},children:[c.jsx(ti,{app:V,size:"small"}),c.jsxs("span",{className:"admin-list__item-info",children:[c.jsx("strong",{children:V.name}),c.jsx("small",{children:V.category})]}),c.jsxs("div",{className:"admin-list__item-actions",children:[c.jsx("span",{className:`mini-status ${V.visibility==="hidden"?"is-hidden":""}`,children:V.visibility==="hidden"?"Oculta":Jl(V.url)?"Lista":"Pendiente"}),c.jsx("button",{type:"button",className:"admin-list__delete-icon",onClick:ue=>Z(ue,V),title:`Eliminar ${V.name}`,"aria-label":`Eliminar ${V.name}`,children:c.jsx(Iu,{size:15,"aria-hidden":"true"})})]})]},V.id))]}),c.jsx(Cs,{currentPage:C,totalPages:J,onPageChange:w,compact:!0,label:"Paginación del catálogo de administración"}),c.jsxs("dialog",{className:"confirm-dialog",ref:G,children:[c.jsx("button",{type:"button",className:"confirm-dialog__close",onClick:()=>{var V;return(V=G.current)==null?void 0:V.close()},"aria-label":"Cerrar",children:c.jsx(Un,{size:19,"aria-hidden":"true"})}),c.jsx("span",{className:"confirm-dialog__icon",children:c.jsx(Iu,{size:22,"aria-hidden":"true"})}),c.jsx("p",{className:"section-kicker",children:"ACCIÓN PERMANENTE"}),c.jsxs("h2",{children:["Eliminar ",U==null?void 0:U.name]}),c.jsx("p",{children:"El portal y sus accesos se eliminarán permanentemente. Esta acción no se puede deshacer."}),c.jsxs("div",{className:"confirm-dialog__actions",children:[c.jsx("button",{type:"button",className:"secondary-button",onClick:()=>{var V;return(V=G.current)==null?void 0:V.close()},children:"Conservar"}),c.jsx("button",{type:"button",className:"danger-button danger-button--solid",onClick:ee,children:"Sí, eliminar"})]})]})]})}function Kl(){return c.jsxs(c.Fragment,{children:[c.jsx("span",{className:"required-mark","aria-hidden":"true",children:"*"}),c.jsx("span",{className:"sr-only",children:" obligatorio"})]})}function g0({app:f,allApps:d,onSave:v,onDelete:r,onCancel:x}){const[N,C]=H.useState(()=>f?On(f):Wu()),[w,U]=H.useState(()=>JSON.stringify(f?On(f):Wu())),[E,G]=H.useState({}),[B,J]=H.useState(""),[ye,Z]=H.useState(!1),[ee,V]=H.useState(!1),[ue,Me]=H.useState(!1),[Te,ae]=H.useState(!1),ve=H.useRef(null),ge=H.useRef(null),W=JSON.stringify(N)!==w,ne=ye||ee||ue,Ue=N.name.trim().length>=2&&!!N.description.trim();H.useEffect(()=>{const z=f?On(f):Wu();C(z),U(JSON.stringify(z)),G({}),J(""),window.requestAnimationFrame(()=>{var o;return(o=ge.current)==null?void 0:o.focus()})},[f]),H.useEffect(()=>{if(!W&&!ee)return;const z=o=>o.preventDefault();return window.addEventListener("beforeunload",z),()=>window.removeEventListener("beforeunload",z)},[ee,W]),H.useEffect(()=>{if(!ee)return;const z=document.body.style.overflow;return document.body.style.overflow="hidden",()=>{document.body.style.overflow=z}},[ee]);const Je={id:(f==null?void 0:f.id)??"preview",name:N.name||"Nombre de la aplicación",description:N.description||"Una descripción breve ayuda al equipo a reconocerla.",category:N.category,keywords:[],url:N.url,mark:pm(N.name||"GLM"),accent:(f==null?void 0:f.accent)??"#4F758B",iconDataUrl:N.iconDataUrl,visibility:N.visibility,createdAt:(f==null?void 0:f.createdAt)??new Date().toISOString(),updatedAt:new Date().toISOString()},xe=(z,o)=>{C(j=>({...j,[z]:o})),G(j=>({...j,[z]:""}))},De=async z=>{if(!(!z||ee)){J(""),Z(!0);try{const o=await Sm(z);xe("iconDataUrl",o)}catch(o){J(o instanceof Error?o.message:"No pudimos procesar el ícono.")}finally{Z(!1)}}},Xe=z=>{var o;De((o=z.target.files)==null?void 0:o[0]),z.target.value=""},Q=z=>{var o;z.preventDefault(),ae(!1),De((o=z.dataTransfer.files)==null?void 0:o[0])},I=async()=>{var F;const z=N.name.trim(),o=N.description.trim(),j={};if(z.length<2&&(j.name="Completa el nombre antes de generar el ícono."),o||(j.description="Completa la descripción antes de generar el ícono."),Object.keys(j).length>0){G(k=>({...k,...j}));return}if(!em){J("Falta configurar VITE_ICON_GENERATOR_WEBHOOK_URL en el archivo .env.");return}J(""),V(!0);const q=new AbortController,L=window.setTimeout(()=>q.abort(),18e4);try{const{data:{session:k}}=await qe.auth.getSession();if(!(k!=null&&k.access_token))throw new Error("La sesión venció. Inicia sesión nuevamente.");const ie=await fetch(em,{method:"POST",mode:"cors",cache:"no-store",credentials:"omit",signal:q.signal,headers:{Accept:"image/*, application/json;q=0.9, text/plain;q=0.8","Content-Type":"text/plain;charset=UTF-8"},body:JSON.stringify({accessToken:k.access_token,name:z,description:o})}),ke=((F=ie.headers.get("content-type"))==null?void 0:F.toLocaleLowerCase("en-US"))??"";if(ie.ok&&ke.startsWith("image/")){const tl=await _m(await ie.blob());xe("iconDataUrl",tl);return}const Ae=await ie.text();let et=null;if(Ae)try{et=JSON.parse(Ae)}catch{et=null}if(ie.ok&&(et!=null&&et.ok)&&et.imageDataUrl){const tl=await u0(et.imageDataUrl);xe("iconDataUrl",tl);return}throw new Error((et==null?void 0:et.error)||(Ae&&Ae.length<500?Ae:"")||`El flujo no pudo generar el ícono (HTTP ${ie.status}).`)}catch(k){k instanceof DOMException&&k.name==="AbortError"?J("La generación tardó más de 3 minutos y fue cancelada. Intenta nuevamente."):k instanceof TypeError&&/failed to fetch/i.test(k.message)?J("No se pudo conectar con el webhook de n8n. Verifica que el workflow esté activo y publicado."):J(k instanceof Error?k.message:"No pudimos generar el ícono con IA.")}finally{window.clearTimeout(L),V(!1)}},S=()=>{const z={},o=N.name.trim(),j=N.description.trim();(o.length<2||o.length>60)&&(z.name="Escribe un nombre de 2 a 60 caracteres."),j||(z.description="Añade una descripción breve."),j.length>180&&(z.description="La descripción no puede superar 180 caracteres."),N.iconDataUrl||(z.iconDataUrl="Adjunta o genera un ícono antes de publicar la aplicación."),N.url.trim()&&!Jl(N.url)&&(z.url="Usa una URL https:// válida, sin credenciales embebidas.");const q=Ua(o);return d.some(F=>F.id!==(f==null?void 0:f.id)&&Ua(F.name)===q)&&(z.name="Ya existe una aplicación con ese nombre."),G(z),Object.keys(z).length===0},g=async z=>{if(z.preventDefault(),ne||!S()){window.requestAnimationFrame(()=>{var o,j;return(j=(o=document.querySelector(".field-error"))==null?void 0:o.focus)==null?void 0:j.call(o)});return}Me(!0);try{const o=await v({...N,name:N.name.trim(),description:N.description.trim(),url:N.url.trim()},(f==null?void 0:f.id)??null);if(o){const j=On(o);C(j),U(JSON.stringify(j))}}finally{Me(!1)}},M=()=>{if(!ee&&(!W||window.confirm("Hay cambios sin guardar. ¿Quieres descartarlos?"))){const z=f?On(f):Wu();C(z),U(JSON.stringify(z)),G({}),J(""),x()}},R=async()=>{var z;!f||ne||await r(f.id)&&((z=ve.current)==null||z.close(),x())};return c.jsxs("section",{className:"app-editor","aria-labelledby":"editor-title","aria-busy":ne,children:[c.jsxs("div",{className:"app-editor__heading",children:[c.jsxs("div",{children:[c.jsx("p",{className:"section-kicker",children:f?"EDITAR APLICACIÓN":"NUEVA APLICACIÓN"}),c.jsx("h2",{id:"editor-title",children:f?f.name:"Configura el nuevo acceso"})]}),W?c.jsxs("span",{className:"dirty-state is-dirty",children:[c.jsx("span",{"aria-hidden":"true"}),"Cambios sin guardar"]}):null]}),c.jsxs("div",{className:"editor-layout",children:[c.jsxs("form",{className:"editor-form",onSubmit:g,noValidate:!0,children:[c.jsxs("section",{className:"editor-form__section","aria-labelledby":"identity-section-title",children:[c.jsx("h3",{className:"editor-form__section-title",id:"identity-section-title",children:"Identidad"}),c.jsxs("div",{className:"form-field",children:[c.jsxs("label",{htmlFor:"app-name",children:["Nombre de la aplicación",f?null:c.jsx(Kl,{})]}),c.jsx("input",{ref:ge,id:"app-name",value:N.name,onChange:z=>xe("name",z.target.value),placeholder:"Ej. Media Planner",maxLength:60,"aria-invalid":!!E.name,"aria-describedby":E.name?"app-name-error":void 0,disabled:ne,required:!0}),c.jsxs("div",{className:"field-meta",children:[E.name?c.jsx("span",{id:"app-name-error",className:"field-error",role:"alert",tabIndex:-1,children:E.name}):c.jsx("span",{children:"Como el equipo la reconoce."}),c.jsxs("span",{children:[N.name.length,"/60"]})]})]}),c.jsxs("div",{className:"form-field",children:[c.jsxs("label",{htmlFor:"app-description",children:["Descripción breve",f?null:c.jsx(Kl,{})]}),c.jsx("textarea",{id:"app-description",value:N.description,onChange:z=>xe("description",z.target.value),placeholder:"Explica qué resuelve en una sola frase.",maxLength:180,rows:3,"aria-invalid":!!E.description,"aria-describedby":E.description?"app-description-error":void 0,disabled:ne,required:!0}),c.jsxs("div",{className:`field-meta ${E.description?"":"field-meta--counter-only"}`,children:[E.description?c.jsx("span",{id:"app-description-error",className:"field-error",role:"alert",tabIndex:-1,children:E.description}):null,c.jsxs("span",{children:[N.description.length,"/180"]})]})]}),c.jsxs("div",{className:"form-split",children:[c.jsxs("div",{className:"form-field",children:[c.jsxs("label",{htmlFor:"app-category",children:["Categoría",f?null:c.jsx(Kl,{})]}),c.jsx("select",{id:"app-category",value:N.category,onChange:z=>xe("category",z.target.value),disabled:ne,required:!0,children:dm.map(z=>c.jsx("option",{children:z},z))})]}),c.jsxs("div",{className:"form-field",children:[c.jsxs("label",{htmlFor:"app-visibility",children:["Visibilidad",f?null:c.jsx(Kl,{})]}),c.jsxs("select",{id:"app-visibility",value:N.visibility,onChange:z=>xe("visibility",z.target.value),disabled:ne,required:!0,children:[c.jsx("option",{value:"published",children:"Publicada"}),c.jsx("option",{value:"hidden",children:"Oculta"})]})]})]})]}),c.jsxs("section",{className:"editor-form__section","aria-labelledby":"icon-section-title",children:[c.jsxs("h3",{className:"editor-form__section-title",id:"icon-section-title",children:["Ícono",f?null:c.jsx(Kl,{})]}),c.jsxs("div",{className:"icon-config",children:[c.jsxs("label",{className:`icon-dropzone ${Te?"is-dragging":""}`,onDragEnter:z=>{z.preventDefault(),ne||ae(!0)},onDragOver:z=>z.preventDefault(),onDragLeave:()=>ae(!1),onDrop:Q,children:[c.jsx("input",{type:"file",accept:"image/png,image/jpeg,image/webp",onChange:Xe,disabled:ne}),c.jsx("span",{className:"icon-dropzone__symbol",children:c.jsx(Dv,{size:20,"aria-hidden":"true"})}),c.jsxs("span",{children:[c.jsx("strong",{children:ye?"Procesando…":"Adjuntar ícono"}),c.jsx("small",{children:"PNG, JPG o WebP · máximo 1 MB"})]})]}),N.iconDataUrl?c.jsx("button",{type:"button",className:"text-button text-button--danger",disabled:ne,onClick:()=>xe("iconDataUrl",""),children:"Quitar ícono"}):null]}),c.jsx("div",{className:"ai-icon-actions",children:c.jsxs("button",{type:"button",className:"secondary-button ai-icon-button",onClick:()=>void I(),disabled:!Ue||ne,title:Ue?void 0:"Completa el nombre y la descripción breve.",children:[c.jsx(Nv,{size:18,"aria-hidden":"true"}),"Generar ícono con IA"]})}),B?c.jsx("p",{className:"field-error field-error--standalone",role:"alert",children:B}):null,E.iconDataUrl?c.jsx("p",{className:"field-error field-error--standalone",role:"alert",tabIndex:-1,children:E.iconDataUrl}):null]}),c.jsxs("section",{className:"editor-form__section","aria-labelledby":"destination-section-title",children:[c.jsx("h3",{className:"editor-form__section-title",id:"destination-section-title",children:"Destino"}),c.jsxs("div",{className:"form-field",children:[c.jsxs("label",{htmlFor:"app-url",children:["Enlace de la aplicación ",c.jsx("span",{children:"Opcional"})]}),c.jsxs("div",{className:"url-field",children:[c.jsx(sm,{size:18,"aria-hidden":"true"}),c.jsx("input",{id:"app-url",type:"url",value:N.url,onChange:z=>xe("url",z.target.value),placeholder:"https://aplicacion.com","aria-invalid":!!E.url,"aria-describedby":E.url?"app-url-error":"app-url-help",disabled:ne})]}),E.url?c.jsx("span",{id:"app-url-error",className:"field-error",role:"alert",tabIndex:-1,children:E.url}):c.jsx("span",{id:"app-url-help",className:"field-help",children:"Si lo dejas vacío, aparecerá como “Enlace pendiente”."})]})]}),c.jsxs("div",{className:"editor-actions",children:[c.jsxs("button",{type:"submit",className:"primary-button",disabled:ne,children:[c.jsx(Ev,{size:18,"aria-hidden":"true"}),ue?"Guardando…":f?"Guardar cambios":"Publicar aplicación"]}),c.jsx("button",{type:"button",className:"secondary-button secondary-button--quiet",disabled:ne,onClick:M,children:"Cancelar"}),f?c.jsxs("button",{type:"button",className:"danger-button",disabled:ne,onClick:()=>{var z;return(z=ve.current)==null?void 0:z.showModal()},children:[c.jsx(Iu,{size:17,"aria-hidden":"true"}),"Eliminar"]}):null]})]}),c.jsxs("aside",{className:"app-preview","aria-label":"Vista previa de la aplicación",children:[c.jsxs("div",{className:"app-preview__label",children:[c.jsx("span",{children:"VISTA PREVIA"}),c.jsx("span",{className:"app-preview__rule"})]}),c.jsxs("div",{className:"preview-card",children:[c.jsx(ti,{app:Je,size:"large",showPlaceholder:!f&&!N.iconDataUrl}),c.jsx("span",{className:"quick-launch__category",children:Je.category}),c.jsx("h3",{children:Je.name}),c.jsx("p",{children:Je.description}),c.jsxs("span",{className:`availability ${Jl(Je.url)?"availability--ready":"availability--pending"}`,children:[c.jsx("span",{"aria-hidden":"true"}),Jl(Je.url)?"Lista para abrir":"Enlace pendiente"]})]}),c.jsx("p",{className:"app-preview__note",children:"Así aparecerá en el Hub para el equipo."})]})]}),c.jsxs("dialog",{className:"confirm-dialog",ref:ve,children:[c.jsx("button",{type:"button",className:"confirm-dialog__close",onClick:()=>{var z;return(z=ve.current)==null?void 0:z.close()},"aria-label":"Cerrar",children:c.jsx(Un,{size:19,"aria-hidden":"true"})}),c.jsx("span",{className:"confirm-dialog__icon",children:c.jsx(Iu,{size:22,"aria-hidden":"true"})}),c.jsx("p",{className:"section-kicker",children:"ACCIÓN PERMANENTE"}),c.jsxs("h2",{children:["Eliminar ",f==null?void 0:f.name]}),c.jsx("p",{children:"La aplicación se quitará del catálogo compartido para todo el equipo. Esta acción no se puede deshacer."}),c.jsxs("div",{className:"confirm-dialog__actions",children:[c.jsx("button",{type:"button",className:"secondary-button",onClick:()=>{var z;return(z=ve.current)==null?void 0:z.close()},children:"Conservar"}),c.jsx("button",{type:"button",className:"danger-button danger-button--solid",onClick:()=>void R(),children:"Sí, eliminar"})]})]}),ee?c.jsx("div",{className:"generation-overlay",role:"dialog","aria-modal":"true","aria-labelledby":"generation-title",children:c.jsxs("div",{className:"generation-overlay__card",children:[c.jsx("span",{className:"generation-spinner","aria-hidden":"true"}),c.jsx("p",{className:"section-kicker",children:"GEMINI"}),c.jsx("h2",{id:"generation-title",children:"Generando el ícono…"}),c.jsx("p",{children:"Estamos creando una propuesta a partir del nombre y la descripción de la aplicación."})]})}):null]})}function b0({data:f,onSave:d,onDelete:v,onBack:r}){const[x,N]=H.useState(null),C=x?f.apps.find(E=>E.id===x)??null:null,w=async(E,G)=>{const B=await d(E,G);return B&&N(B.id),B},U=async E=>{const G=await v(E);return G&&N(null),G};return c.jsxs("main",{className:"page-content admin-page",children:[c.jsx("header",{className:"page-header admin-header",children:c.jsxs("div",{children:[c.jsxs("button",{type:"button",className:"back-button",onClick:r,children:[c.jsx(sv,{size:17,"aria-hidden":"true"}),"Volver al Hub"]}),c.jsx("p",{className:"page-header__meta",children:"PANEL DE ADMINISTRACIÓN"}),c.jsx("h1",{children:"Controla el catálogo."})]})}),c.jsxs("div",{className:"admin-workspace",children:[c.jsx(v0,{apps:f.apps,selectedId:x,onSelect:N,onDelete:U}),c.jsx(g0,{app:C,allApps:f.apps,onSave:w,onDelete:U,onCancel:()=>N(null)})]})]})}function p0(){return c.jsxs("div",{className:"catalog-loading",role:"status","aria-live":"polite",children:[c.jsx(ei,{compact:!0}),c.jsx("span",{className:"generation-spinner","aria-hidden":"true"}),c.jsx("p",{children:"Cargando aplicaciones…"})]})}function S0(){const[f]=H.useState(()=>Yv()),[d,v]=H.useState({schemaVersion:1,apps:[],favoritesByUser:{},recentByUser:{},updatedAt:new Date().toISOString()}),[r,x]=H.useState(null),[N,C]=H.useState(()=>"hub"),[w,U]=H.useState([]),[E,G]=H.useState(!1),[B,J]=H.useState(!1),[ye,Z]=H.useState(""),[ee,V]=H.useState(""),ue=H.useRef(0),Me=H.useRef(null),Te=H.useCallback(Q=>{U(I=>I.filter(S=>S.id!==Q))},[]),ae=H.useCallback((Q,I,S)=>{const g=crypto.randomUUID();U(M=>[...M.slice(-2),{id:g,kind:Q,title:I,detail:S}]),window.setTimeout(()=>{U(M=>M.filter(R=>R.id!==g))},5200)},[]);H.useEffect(()=>{let Q=!0;const I=M=>{const R=(M.expires_at??Math.floor(Date.now()/1e3)+3600)*1e3;x(z=>!z||z.user.id!==M.user.id||z.expiresAt===R?z:{...z,expiresAt:R})},S=async M=>{const R=++ue.current;if(!M){if(!Q||R!==ue.current)return;Me.current=null,x(null),J(!1),G(!0);return}if(Me.current===M.user.id){if(!Q||R!==ue.current)return;I(M),G(!0);return}const z=await l0(M);if(!Q||R!==ue.current)return;if(!z.session){Me.current=null,x(null),V(z.error),J(!1),G(!0),await qe.auth.signOut({scope:"local"});return}const o=z.session;Me.current=o.user.id,V(""),x(o),G(!0),window.location.hash!=="#hub"&&window.location.hash!=="#admin"&&window.history.replaceState(null,"",Ns("#hub"))};qe.auth.getSession().then(({data:{session:M}})=>{S(M)});const{data:{subscription:g}}=qe.auth.onAuthStateChange((M,R)=>{if(M!=="INITIAL_SESSION"){if(M==="TOKEN_REFRESHED"&&R&&Me.current===R.user.id){I(R);return}window.setTimeout(()=>{S(R)},0)}});return()=>{Q=!1,g.unsubscribe()}},[]);const ve=(r==null?void 0:r.user)??null;H.useEffect(()=>{if(!ve)return;let Q=!0,I=!1;const S=async()=>{if(!I){I=!0;try{const R=await Hs();if(!Q)return;v(z=>({...z,apps:R,updatedAt:new Date().toISOString()}))}catch(R){console.error("No se pudo refrescar el catálogo compartido:",R)}finally{I=!1}}};(async()=>{J(!1),Z("");try{const R=await Wv(ve,f.data.apps),z=await Kv(ve.id);if(!Q)return;v(z),J(!0),R>0&&ae("success","Catálogo compartido activado",`${R} ${R===1?"aplicación fue migrada":"aplicaciones fueron migradas"} a Supabase.`)}catch(R){if(!Q)return;const z=R instanceof Error?R.message:"No se pudo cargar el catálogo compartido.";Z(z),J(!0),ae("error","No se pudo cargar el catálogo",z)}})();const M=Fv(()=>void S());return()=>{Q=!1,M()}},[ve==null?void 0:ve.id,ve==null?void 0:ve.role,f.data.apps,ae]),H.useEffect(()=>{const Q=()=>{const I=window.location.hash==="#admin"?"admin":"hub";if(I==="admin"&&(r==null?void 0:r.user.role)!=="admin"){C("hub"),window.history.replaceState(null,"","#hub");return}C(I)};return Q(),window.addEventListener("hashchange",Q),()=>window.removeEventListener("hashchange",Q)},[r==null?void 0:r.user.role]);const ge=Q=>{if(Q==="admin"&&(r==null?void 0:r.user.role)!=="admin"){ae("error","Acceso restringido","Necesitas permisos de administrador para abrir este panel.");return}C(Q),window.history.replaceState(null,"",Ns(Q==="admin"?"#admin":"#hub")),window.scrollTo({top:0,behavior:"smooth"})},W=async Q=>{if(!r)return;const I=r.user.id,S=d.favoritesByUser[I]??[],g=S.includes(Q),M=g?S.filter(R=>R!==Q):[Q,...S];v(R=>({...R,favoritesByUser:{...R.favoritesByUser,[I]:M},updatedAt:new Date().toISOString()}));try{await kv(I,Q,!g),ae("success",g?"Quitada de favoritos":"Agregada a favoritos")}catch(R){v(z=>({...z,favoritesByUser:{...z.favoritesByUser,[I]:S}})),ae("error","No se actualizó el favorito",R instanceof Error?R.message:void 0)}},ne=Q=>{if(!r)return;const I=Jl(Q.url);if(!I){ae("info","Enlace pendiente",`${Q.name} todavía no tiene un enlace configurado.`);return}const S=window.open(I,"_blank","noopener,noreferrer");S&&(S.opener=null);const g=r.user.id,M=d.recentByUser[g]??[],R=[Q.id,...M.filter(z=>z!==Q.id)].slice(0,30);v(z=>({...z,recentByUser:{...z.recentByUser,[g]:R},updatedAt:new Date().toISOString()})),$v(g,Q.id).catch(z=>console.warn("No se guardó el acceso reciente:",z))},Ue=async(Q,I)=>{if(!r||r.user.role!=="admin")return null;const S=I?d.apps.find(g=>g.id===I)??null:null;try{const g=await bm(Q,S,r.user.id);return v(M=>({...M,apps:S?M.apps.map(R=>R.id===g.id?g:R):[g,...M.apps],updatedAt:new Date().toISOString()})),ae("success",S?"Cambios guardados":"Aplicación publicada",`${g.name} ya está disponible en el catálogo compartido.`),g}catch(g){return ae("error","No se guardó la aplicación",g instanceof Error?g.message:void 0),null}},Je=async Q=>{if(!r||r.user.role!=="admin")return!1;const I=d.apps.find(S=>S.id===Q);if(!I)return!1;try{await Jv(I);const S=g=>Object.fromEntries(Object.entries(g).map(([M,R])=>[M,R.filter(z=>z!==Q)]));return v(g=>({...g,apps:g.apps.filter(M=>M.id!==Q),favoritesByUser:S(g.favoritesByUser),recentByUser:S(g.recentByUser),updatedAt:new Date().toISOString()})),ae("success","Aplicación eliminada",`${I.name} salió del catálogo compartido.`),!0}catch(S){return ae("error","No se eliminó la aplicación",S instanceof Error?S.message:void 0),!1}},xe=async Q=>{if(!r||r.user.role==="admin")return!1;if(!tm)return ae("error","No se pudo enviar la solicitud","La función de solicitudes no está disponible en este momento."),!1;const I=new AbortController,S=window.setTimeout(()=>I.abort(),12e4);try{const{data:{session:g}}=await qe.auth.getSession();if(!(g!=null&&g.access_token))throw new Error("La sesión venció. Cierra sesión e inicia nuevamente.");const M=await fetch(tm,{method:"POST",mode:"cors",cache:"no-store",credentials:"omit",signal:I.signal,headers:{Accept:"application/json, text/plain;q=0.9","Content-Type":"text/plain;charset=UTF-8"},body:JSON.stringify({accessToken:g.access_token,appId:Q.id})}),R=await M.text();let z=null;if(R)try{z=JSON.parse(R)}catch{z=null}if(!M.ok||!(z!=null&&z.ok)){const o=String((z==null?void 0:z.error)||"").toLowerCase();let j="No pudimos enviar la solicitud en este momento. Intenta nuevamente.";throw o.includes("pendiente")?j="Ya tienes una solicitud pendiente para esta aplicación.":o.includes("sesión")||M.status===401?j="Tu sesión venció. Cierra sesión e inicia nuevamente.":o.includes("ya no está publicada")||o.includes("no está disponible")?j="La aplicación seleccionada ya no está disponible.":(o.includes("no está autorizado")||M.status===403)&&(j="Tu cuenta no está habilitada para enviar esta solicitud."),console.error("Error interno al enviar la solicitud de acceso",{status:M.status,responseText:R}),new Error(j)}return ae("success","Solicitud enviada",z.message||`La solicitud para ${Q.name} fue enviada correctamente.`),!0}catch(g){return g instanceof DOMException&&g.name==="AbortError"?ae("error","La solicitud tardó demasiado","Intenta nuevamente en unos minutos."):g instanceof TypeError&&/failed to fetch/i.test(g.message)?(console.error("No se pudo contactar el servicio de solicitudes",g),ae("error","No se pudo enviar la solicitud","Intenta nuevamente en unos minutos.")):ae("error","No se pudo enviar la solicitud",g instanceof Error?g.message:"Intenta nuevamente en unos minutos."),!1}finally{window.clearTimeout(S)}},De=async()=>{V("");const{error:Q}=await qe.auth.signInWithOAuth({provider:"google",options:{redirectTo:Pv(),queryParams:{hd:"gomezleemarketing.com",prompt:"select_account"}}});Q&&(console.error("No se pudo iniciar el acceso con Google:",Q),V("No pudimos abrir el acceso con Google. Intenta nuevamente."))},Xe=async()=>{const{error:Q}=await qe.auth.signOut();if(Q){ae("error","No se pudo cerrar la sesión",Q.message);return}x(null),J(!1),C("hub"),window.history.replaceState(null,"",Ns())};return!E||!r?c.jsxs(c.Fragment,{children:[c.jsx(i0,{onLogin:De,error:ee,disabled:!E}),c.jsx(Ts,{messages:w,onDismiss:Te})]}):B?c.jsxs("div",{className:"app-shell",children:[c.jsx(c0,{user:r.user,view:N,onNavigate:ge,onLogout:Xe}),c.jsx(s0,{user:r.user}),N==="admin"&&r.user.role==="admin"?c.jsx(b0,{data:d,onSave:Ue,onDelete:Je,onBack:()=>ge("hub")}):c.jsx(y0,{user:r.user,data:d,storageWarning:ye,onActivate:ne,onFavorite:Q=>void W(Q),onAdmin:()=>ge("admin"),onRequestAccess:xe}),c.jsx(f0,{user:r.user,view:N,onNavigate:ge,onLogout:Xe}),c.jsx(Ts,{messages:w,onDismiss:Te})]}):c.jsxs(c.Fragment,{children:[c.jsx(p0,{}),c.jsx(Ts,{messages:w,onDismiss:Te})]})}const nm="https://dbit.digitalcompass.agency/storage/v1/object/public/public-assets/GLM.png?v=glm-hub-20260722-v3";function _0(){document.querySelectorAll('link[rel="icon"], link[rel="shortcut icon"]').forEach(v=>{v.remove()});const f=document.createElement("link");f.rel="icon",f.type="image/png",f.sizes="512x512",f.href=nm,document.head.appendChild(f);const d=document.createElement("link");d.rel="shortcut icon",d.type="image/png",d.href=nm,document.head.appendChild(d)}_0();tv.createRoot(document.getElementById("root")).render(c.jsx(H.StrictMode,{children:c.jsx(S0,{})})); diff --git a/dist/index.html b/dist/index.html index d594fdf..ab3ebbf 100644 --- a/dist/index.html +++ b/dist/index.html @@ -9,8 +9,8 @@ GLM Hub — GomezLee Marketing - - + +
diff --git a/src/App.tsx b/src/App.tsx index 8bc3f88..917474c 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -876,11 +876,22 @@ interface HubViewProps { } function HubView({ user, data, storageWarning, onActivate, onFavorite, onAdmin, onRequestAccess }: HubViewProps) { - const [search, setSearch] = useState(""); + const [categorySearches, setCategorySearches] = useState>({ + Todas: "", + Administración: "", + "Recursos Humanos": "", + CDC: "", + }); const [category, setCategory] = useState<"Todas" | AppCategory>("Todas"); const [favoritesOnly, setFavoritesOnly] = useState(false); const [currentPage, setCurrentPage] = useState(1); const [quickPage, setQuickPage] = useState(1); + + const search = categorySearches[category] ?? ""; + const setSearch = (value: string) => { + setCategorySearches((prev) => ({ ...prev, [category]: value })); + }; + const deferredSearch = useDeferredValue(search); const dateLabel = useCurrentDateLabel(); const canManageCatalog = user.role === "admin"; @@ -980,7 +991,12 @@ function HubView({ user, data, storageWarning, onActivate, onFavorite, onAdmin, }; const clearFilters = () => { - setSearch(""); + setCategorySearches({ + Todas: "", + Administración: "", + "Recursos Humanos": "", + CDC: "", + }); setCategory("Todas"); setFavoritesOnly(false); }; @@ -1075,6 +1091,30 @@ function HubView({ user, data, storageWarning, onActivate, onFavorite, onAdmin, ))} + +
+
+ + ) : null}
{currentPage === 1 ? ( diff --git a/src/styles.css b/src/styles.css index 8188550..88f2f48 100644 --- a/src/styles.css +++ b/src/styles.css @@ -54,6 +54,15 @@ select { -webkit-tap-highlight-color: transparent; } +input[type="search"]::-webkit-search-decoration, +input[type="search"]::-webkit-search-cancel-button, +input[type="search"]::-webkit-search-results-button, +input[type="search"]::-webkit-search-results-decoration { + -webkit-appearance: none; + appearance: none; + display: none; +} + button { color: inherit; } @@ -1140,8 +1149,9 @@ img { display: flex; align-items: center; justify-content: space-between; - gap: 20px; + gap: 16px; margin-bottom: 18px; + flex-wrap: wrap; } .category-filters { @@ -1150,6 +1160,53 @@ img { gap: 4px; } +.filter-bar__search { + flex: 1; + max-width: 360px; + min-width: 220px; + min-height: 42px; + display: grid; + grid-template-columns: 18px 1fr auto; + align-items: center; + gap: 10px; + border: 1px solid var(--line); + border-radius: 2px; + background: #ffffff; + padding: 0 12px; + color: var(--glm-blue); + transition: border-color 160ms ease, box-shadow 160ms ease; +} + +.filter-bar__search:focus-within { + border-color: var(--glm-blue); + box-shadow: 0 0 0 1px var(--glm-blue); +} + +.filter-bar__search input { + width: 100%; + height: 40px; + border: 0; + outline: 0; + background: transparent; + color: var(--text); + font-size: 0.82rem; +} + +.filter-bar__search input::placeholder { + color: #8a8a8a; +} + +.filter-bar__search button { + width: 24px; + height: 24px; + display: grid; + place-items: center; + border: 0; + background: transparent; + color: var(--glm-blue); + padding: 0; +} + .category-filters button, .favorites-filter { min-height: 44px; @@ -1593,7 +1650,7 @@ img { .admin-list__search { display: grid; - grid-template-columns: 20px 1fr; + grid-template-columns: 20px 1fr auto; align-items: center; gap: 9px; margin: 14px; @@ -1612,6 +1669,16 @@ img { font-size: 0.77rem; } +.admin-list__search button { + width: 24px; + height: 24px; + display: grid; + place-items: center; + border: 0; + background: transparent; + color: var(--glm-blue); +} + .admin-list__items { min-height: 0; flex: 1;