@meddleware/ui 0.1.21 → 0.1.22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/base.css CHANGED
@@ -1,2 +1,2 @@
1
- *,:before,:after{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--bg);min-height:100vh;color:var(--text);font-family:var(--mw-font-sans);font-size:var(--font-size-base);line-height:var(--leading-normal);letter-spacing:var(--tracking-normal);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility}:where(ul,ol):where([role=list],[role=listitem]){margin:0;padding:0;list-style:none}:where(img,svg,video,canvas){max-width:100%;display:block}:where(fieldset){border:0;margin:0;padding:0}a{color:var(--accent);transition:color var(--transition-base);text-decoration:none}a:hover{text-decoration:underline}:where(button,input,select,textarea){font-family:inherit}:where(a,button,input,select,textarea):focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}.mw-mono{font-family:var(--mw-font-mono)}.mw-noise{isolation:isolate;position:relative}.mw-noise:before{content:"";z-index:-1;background-image:var(--noise-overlay);opacity:var(--noise-opacity);pointer-events:none;background-repeat:repeat;position:absolute;inset:0}.mw-hand-drawn{display:inline-flex;position:relative}.mw-spinner{width:var(--space-sm);height:var(--space-sm);border:2px solid var(--border);border-top-color:var(--accent);animation:mw-spin var(--transition-slow) linear infinite;border-radius:50%;display:inline-block}@keyframes mw-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.001ms!important;animation-duration:.001ms!important}.mw-spinner{border-top-color:var(--accent);animation:none}}.mw-header[data-v-9b9826d5]{align-items:center;gap:var(--space-sm);height:var(--mw-header-height,56px);padding:0 var(--space-sm);background:var(--_bg);color:var(--_text);border-bottom:1px solid var(--_border);font-family:var(--mw-font-sans);display:flex}.mw-header--sticky[data-v-9b9826d5]{z-index:50;position:sticky;top:0}.mw-header__brand[data-v-9b9826d5]{align-items:center;gap:var(--space-2xs);letter-spacing:var(--tracking-wide);white-space:nowrap;font-weight:650;display:flex}.mw-header__center[data-v-9b9826d5]{flex:auto;min-width:0}.mw-header__actions[data-v-9b9826d5]{align-items:center;gap:var(--space-2xs);margin-left:auto;display:flex}.mw-sidebar[data-v-a2b8405c]{height:100%;width:var(--mw-sidebar-width,240px);background:var(--_bg);color:var(--_text);border-right:1px solid var(--_border);font-family:var(--mw-font-sans);flex-direction:column;display:flex}.mw-sidebar__head[data-v-a2b8405c]{padding:var(--space-sm);border-bottom:1px solid var(--_border)}.mw-sidebar__nav[data-v-a2b8405c]{gap:var(--space-3xs);padding:var(--space-xs);flex-direction:column;flex:auto;display:flex;overflow-y:auto}.mw-sidebar__body[data-v-a2b8405c]{flex-shrink:0}.mw-sidebar__foot[data-v-a2b8405c]{padding:var(--space-xs) var(--space-sm);border-top:1px solid var(--_border);color:var(--_muted);font-size:var(--font-size-sm)}.mw-footer[data-v-979579a9]{align-items:center;gap:var(--space-sm);padding:var(--space-xs) var(--space-sm);background:var(--_bg);color:var(--_muted);border-top:1px solid var(--_border);font-family:var(--mw-font-sans);font-size:var(--font-size-sm);flex-wrap:wrap;display:flex}.mw-footer--transparent[data-v-979579a9]{border-top:1px solid var(--border)}.mw-footer__center[data-v-979579a9]{flex:auto;min-width:0}.mw-footer__end[data-v-979579a9]{align-items:center;gap:var(--space-sm);margin-left:auto;display:flex}.mw-footer__docs-link[data-v-979579a9]{color:inherit;text-underline-offset:2px;opacity:.7;text-decoration:underline}.mw-footer__docs-link[data-v-979579a9]:hover{opacity:1}.mw-mode[data-v-e2ea0d79]{border:1px solid var(--_border,var(--border));border-radius:var(--radius);background:color-mix(in srgb, var(--_text,var(--text)) 6%, transparent);gap:2px;padding:2px;display:inline-flex}.mw-mode__btn[data-v-e2ea0d79]{align-items:center;gap:var(--space-3xs);padding:var(--space-3xs) var(--space-2xs);border-radius:calc(var(--radius) - 3px);color:var(--_text,var(--text));font:inherit;font-size:var(--font-size-sm);cursor:pointer;opacity:.7;transition:opacity var(--transition-base), background var(--transition-base);background:0 0;border:0;display:inline-flex}.mw-mode__btn[data-v-e2ea0d79]:hover{opacity:1}.mw-mode__btn.is-active[data-v-e2ea0d79]{opacity:1;background:color-mix(in srgb, var(--_text,var(--text)) 14%, transparent)}.mw-mode__btn[data-v-e2ea0d79]:focus-visible{outline:2px solid var(--focus-ring);outline-offset:1px}@media (width<=640px){.mw-mode__label[data-v-e2ea0d79]{display:none}}.mw-btn[data-v-bc33cc23]{justify-content:center;align-items:center;gap:var(--space-2xs);padding:var(--space-2xs) var(--space-xs);border-radius:var(--radius);font:inherit;cursor:pointer;transition:filter var(--transition-base), background var(--transition-base);border:1px solid #0000;font-weight:550;display:inline-flex}.mw-btn[data-v-bc33cc23]:disabled{opacity:.55;cursor:not-allowed}.mw-btn[data-v-bc33cc23]:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}.mw-btn--primary[data-v-bc33cc23]{background:var(--accent);color:var(--accent-contrast)}.mw-btn--primary[data-v-bc33cc23]:not(:disabled):hover{filter:brightness(1.08)}.mw-btn--secondary[data-v-bc33cc23]{background:var(--secondary);color:var(--secondary-contrast)}.mw-btn--secondary[data-v-bc33cc23]:not(:disabled):hover{filter:brightness(1.08)}.mw-btn--ghost[data-v-bc33cc23]{color:var(--text);border-color:var(--border);background:0 0}.mw-btn--ghost[data-v-bc33cc23]:not(:disabled):hover{background:var(--lift)}.mw-btn--danger[data-v-bc33cc23]{background:var(--danger);color:var(--accent-contrast)}.mw-btn--danger[data-v-bc33cc23]:not(:disabled):hover{filter:brightness(1.08)}.mw-card[data-v-883f87f5]{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);color:var(--text);overflow:hidden}.mw-card__header[data-v-883f87f5]{padding:var(--space-xs) var(--space-sm);border-bottom:1px solid var(--border)}.mw-card__title[data-v-883f87f5]{font-size:var(--font-size-base);margin:0;font-weight:600}.mw-card__body[data-v-883f87f5]{padding:var(--space-sm)}.mw-card__footer[data-v-883f87f5]{padding:var(--space-xs) var(--space-sm);border-top:1px solid var(--border);background:var(--lift)}.mw-select[data-v-7e206184]{position:relative}.mw-select select[data-v-7e206184]{appearance:none;width:100%;padding:var(--space-2xs) calc(var(--space-md) + var(--space-2xs)) var(--space-2xs) var(--space-xs);background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:var(--radius);font:inherit}.mw-select select[data-v-7e206184]:focus-visible{outline:2px solid var(--focus-ring);outline-offset:1px}.mw-select__chevron[data-v-7e206184]{right:var(--space-xs);pointer-events:none;stroke:var(--muted);stroke-width:1.5px;fill:none;position:absolute;top:50%;transform:translateY(-50%)}.mw-notice[data-v-ee7fffb1]{padding:var(--space-2xs) var(--space-xs);border:1px solid var(--border);border-radius:var(--radius);background:var(--lift);color:var(--text);font-size:var(--font-size-sm);border-left-width:3px;margin:0}.mw-notice--error[data-v-ee7fffb1]{border-left-color:var(--danger);color:var(--danger);background:color-mix(in srgb, var(--danger) 8%, transparent)}.mw-notice--ok[data-v-ee7fffb1]{border-left-color:var(--ok);color:var(--ok);background:color-mix(in srgb, var(--ok) 8%, transparent)}.sidebar-item[data-v-8da2d583]{align-items:center;gap:var(--space-2xs);width:100%;padding:var(--space-2xs) var(--space-xs);border-radius:var(--radius);color:inherit;font:inherit;text-align:left;cursor:pointer;opacity:.85;transition:background var(--transition-base), opacity var(--transition-base);background:0 0;border:0;display:flex}.sidebar-item[data-v-8da2d583]:hover:not(:disabled){background:color-mix(in srgb, currentColor 10%, transparent);opacity:1}.sidebar-item.is-active[data-v-8da2d583]{background:color-mix(in srgb, var(--accent) 26%, transparent);opacity:1}.sidebar-item[data-v-8da2d583]:disabled{cursor:default}.sidebar-item[data-v-8da2d583]:focus-visible{outline:2px solid var(--focus-ring);outline-offset:1px}.sidebar-item__icon[data-v-8da2d583]{text-align:center;width:1.1rem}.sidebar-group--l1+.sidebar-group--l1[data-v-c8f6c8b2]{margin-block-start:var(--space-2xs)}.sidebar-group__label[data-v-c8f6c8b2]{padding:var(--space-3xs) var(--space-xs);font-size:var(--font-size-xs);color:var(--muted);-webkit-user-select:none;user-select:none;font-weight:600}.sidebar-group--l1>.sidebar-group__label[data-v-c8f6c8b2]{text-transform:uppercase;letter-spacing:var(--tracking-wide);opacity:.75}.sidebar-group--l2>.sidebar-group__label[data-v-c8f6c8b2]{opacity:.6;padding-inline-start:calc(var(--space-xs) + var(--space-3xs))}.sidebar-group--l2>.sidebar-group__items[data-v-c8f6c8b2]{padding-inline-start:var(--space-3xs)}.mw-tab-nav[data-v-97d31503]{gap:var(--space-3xs);border-bottom:2px solid var(--border);display:flex}.mw-tab-nav__tab[data-v-97d31503]{appearance:none;padding:var(--space-2xs) var(--space-sm);cursor:pointer;font-size:var(--font-size-base);color:var(--muted);transition:color var(--transition-base), border-color var(--transition-base);background:0 0;border:none;border-bottom:2px solid #0000;margin-bottom:-2px}.mw-tab-nav__tab[data-v-97d31503]:hover{color:var(--text)}.mw-tab-nav__tab--active[data-v-97d31503]{border-bottom-color:var(--accent);color:var(--text);font-weight:600}.ca-root[data-v-b43dabdd]{align-items:center;gap:.35em;display:inline-flex}.ca-value[data-v-b43dabdd]{font-family:var(--mw-font-mono,monospace);font-size:inherit}.ca-copy[data-v-b43dabdd]{color:var(--muted,#888);cursor:pointer;transition:color var(--transition-base);background:0 0;border:none;justify-content:center;align-items:center;padding:0;line-height:1;display:inline-flex}.ca-copy[data-v-b43dabdd]:hover{color:var(--text,#f0f0f0)}.ca-copy--copied[data-v-b43dabdd]{color:var(--accent,#6366f1)}.ca-icon[data-v-b43dabdd]{display:block}.el-root[data-v-073d1bbe]{font-family:monospace;font-size:inherit;color:var(--accent,#6366f1);text-underline-offset:2px;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;transition:color .15s}.el-root[data-v-073d1bbe]:hover{color:var(--text,#f0f0f0);text-decoration-style:solid}.copyright-line[data-v-1f9a5da9]{display:inherit;white-space:nowrap;text-align:center}.symbol-link[data-v-1f9a5da9]{color:inherit;vertical-align:text-top;align-items:center;padding:0 .1rem;text-decoration:none;display:inline-flex}.symbol-link[data-v-1f9a5da9]:hover{text-decoration:underline}.kopimi-symbol[data-v-1f9a5da9]{align-items:center;line-height:1;display:inline-flex}.kopimi-mark[data-v-1f9a5da9]{vertical-align:-.15em;display:inline}.text-content[data-v-1f9a5da9]{display:inline}.ui-stepper[data-v-33717fc3]{margin:0 0 var(--space-md,1.5rem);padding:0;list-style:none;display:flex}.ui-stepper__step[data-v-33717fc3]{flex-direction:column;flex:1 1 0;align-items:center;gap:.4rem;min-width:0;display:flex;position:relative}.ui-stepper__step[data-v-33717fc3]:not(:first-child):before{content:"";background:var(--border);z-index:0;height:2px;position:absolute;top:1rem;left:-50%;right:50%}.ui-stepper__step.is-done[data-v-33717fc3]:before,.ui-stepper__step.is-active[data-v-33717fc3]:before{background:var(--accent)}.ui-stepper__badge[data-v-33717fc3]{z-index:1;border:2px solid var(--border);background:var(--surface);width:2rem;height:2rem;color:var(--muted);cursor:default;transition:background-color var(--transition-base,.2s), border-color var(--transition-base,.2s);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;padding:0;font-family:inherit;font-size:.8rem;font-weight:600;line-height:1;display:flex;position:relative}button.ui-stepper__badge[data-v-33717fc3]{cursor:pointer}button.ui-stepper__badge[data-v-33717fc3]:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}.is-done .ui-stepper__badge[data-v-33717fc3]{background:var(--accent);border-color:var(--accent);color:#fff}.is-active .ui-stepper__badge[data-v-33717fc3]{background:color-mix(in srgb, var(--accent) 12%, var(--surface));border-color:var(--accent);color:var(--accent)}.ui-stepper__label[data-v-33717fc3]{text-align:center;color:var(--muted);white-space:nowrap;text-overflow:ellipsis;max-width:100%;font-size:.78rem;line-height:1.2;overflow:hidden}.is-done .ui-stepper__label[data-v-33717fc3],.is-active .ui-stepper__label[data-v-33717fc3]{color:var(--text)}.is-active .ui-stepper__label[data-v-33717fc3]{font-weight:600}.status-widget[data-v-6436368e]{align-items:center;gap:var(--space-2xs);color:inherit;font-size:var(--font-size-sm);opacity:.85;transition:opacity var(--transition-base);text-decoration:none;display:inline-flex}.status-widget[data-v-6436368e]:hover{opacity:1}.status-widget__dot[data-v-6436368e]{width:var(--space-2xs);height:var(--space-2xs);border-radius:50%;flex-shrink:0}.status-widget--ok .status-widget__dot[data-v-6436368e]{background:var(--ok)}.status-widget--degraded .status-widget__dot[data-v-6436368e]{background:var(--warning)}.status-widget--error .status-widget__dot[data-v-6436368e]{background:var(--danger)}
1
+ *,:before,:after{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--bg);min-height:100vh;color:var(--text);font-family:var(--mw-font-sans);font-size:var(--font-size-base);line-height:var(--leading-normal);letter-spacing:var(--tracking-normal);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility}:where(ul,ol):where([role=list],[role=listitem]){margin:0;padding:0;list-style:none}:where(img,svg,video,canvas){max-width:100%;display:block}:where(fieldset){border:0;margin:0;padding:0}a{color:var(--accent);transition:color var(--transition-base);text-decoration:none}a:hover{text-decoration:underline}:where(button,input,select,textarea){font-family:inherit}:where(a,button,input,select,textarea):focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}.mw-mono{font-family:var(--mw-font-mono)}.mw-noise{isolation:isolate;position:relative}.mw-noise:before{content:"";z-index:-1;background-image:var(--noise-overlay);opacity:var(--noise-opacity);pointer-events:none;background-repeat:repeat;position:absolute;inset:0}.mw-hand-drawn{display:inline-flex;position:relative}.mw-spinner{width:var(--space-sm);height:var(--space-sm);border:2px solid var(--border);border-top-color:var(--accent);animation:mw-spin var(--transition-slow) linear infinite;border-radius:50%;display:inline-block}@keyframes mw-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.001ms!important;animation-duration:.001ms!important}.mw-spinner{border-top-color:var(--accent);animation:none}}.mw-header[data-v-9b9826d5]{align-items:center;gap:var(--space-sm);height:var(--mw-header-height,56px);padding:0 var(--space-sm);background:var(--_bg);color:var(--_text);border-bottom:1px solid var(--_border);font-family:var(--mw-font-sans);display:flex}.mw-header--sticky[data-v-9b9826d5]{z-index:50;position:sticky;top:0}.mw-header__brand[data-v-9b9826d5]{align-items:center;gap:var(--space-2xs);letter-spacing:var(--tracking-wide);white-space:nowrap;font-weight:650;display:flex}.mw-header__center[data-v-9b9826d5]{flex:auto;min-width:0}.mw-header__actions[data-v-9b9826d5]{align-items:center;gap:var(--space-2xs);margin-left:auto;display:flex}.mw-sidebar[data-v-a2b8405c]{height:100%;width:var(--mw-sidebar-width,240px);background:var(--_bg);color:var(--_text);border-right:1px solid var(--_border);font-family:var(--mw-font-sans);flex-direction:column;display:flex}.mw-sidebar__head[data-v-a2b8405c]{padding:var(--space-sm);border-bottom:1px solid var(--_border)}.mw-sidebar__nav[data-v-a2b8405c]{gap:var(--space-3xs);padding:var(--space-xs);flex-direction:column;flex:auto;display:flex;overflow-y:auto}.mw-sidebar__body[data-v-a2b8405c]{flex-shrink:0}.mw-sidebar__foot[data-v-a2b8405c]{padding:var(--space-xs) var(--space-sm);border-top:1px solid var(--_border);color:var(--_muted);font-size:var(--font-size-sm)}.mw-footer[data-v-979579a9]{align-items:center;gap:var(--space-sm);padding:var(--space-xs) var(--space-sm);background:var(--_bg);color:var(--_muted);border-top:1px solid var(--_border);font-family:var(--mw-font-sans);font-size:var(--font-size-sm);flex-wrap:wrap;display:flex}.mw-footer--transparent[data-v-979579a9]{border-top:1px solid var(--border)}.mw-footer__center[data-v-979579a9]{flex:auto;min-width:0}.mw-footer__end[data-v-979579a9]{align-items:center;gap:var(--space-sm);margin-left:auto;display:flex}.mw-footer__docs-link[data-v-979579a9]{color:inherit;text-underline-offset:2px;opacity:.7;text-decoration:underline}.mw-footer__docs-link[data-v-979579a9]:hover{opacity:1}.mw-mode[data-v-e2ea0d79]{border:1px solid var(--_border,var(--border));border-radius:var(--radius);background:color-mix(in srgb, var(--_text,var(--text)) 6%, transparent);gap:2px;padding:2px;display:inline-flex}.mw-mode__btn[data-v-e2ea0d79]{align-items:center;gap:var(--space-3xs);padding:var(--space-3xs) var(--space-2xs);border-radius:calc(var(--radius) - 3px);color:var(--_text,var(--text));font:inherit;font-size:var(--font-size-sm);cursor:pointer;opacity:.7;transition:opacity var(--transition-base), background var(--transition-base);background:0 0;border:0;display:inline-flex}.mw-mode__btn[data-v-e2ea0d79]:hover{opacity:1}.mw-mode__btn.is-active[data-v-e2ea0d79]{opacity:1;background:color-mix(in srgb, var(--_text,var(--text)) 14%, transparent)}.mw-mode__btn[data-v-e2ea0d79]:focus-visible{outline:2px solid var(--focus-ring);outline-offset:1px}@media (width<=640px){.mw-mode__label[data-v-e2ea0d79]{display:none}}.mw-btn[data-v-bc33cc23]{justify-content:center;align-items:center;gap:var(--space-2xs);padding:var(--space-2xs) var(--space-xs);border-radius:var(--radius);font:inherit;cursor:pointer;transition:filter var(--transition-base), background var(--transition-base);border:1px solid #0000;font-weight:550;display:inline-flex}.mw-btn[data-v-bc33cc23]:disabled{opacity:.55;cursor:not-allowed}.mw-btn[data-v-bc33cc23]:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}.mw-btn--primary[data-v-bc33cc23]{background:var(--accent);color:var(--accent-contrast)}.mw-btn--primary[data-v-bc33cc23]:not(:disabled):hover{filter:brightness(1.08)}.mw-btn--secondary[data-v-bc33cc23]{background:var(--secondary);color:var(--secondary-contrast)}.mw-btn--secondary[data-v-bc33cc23]:not(:disabled):hover{filter:brightness(1.08)}.mw-btn--ghost[data-v-bc33cc23]{color:var(--text);border-color:var(--border);background:0 0}.mw-btn--ghost[data-v-bc33cc23]:not(:disabled):hover{background:var(--lift)}.mw-btn--danger[data-v-bc33cc23]{background:var(--danger);color:var(--accent-contrast)}.mw-btn--danger[data-v-bc33cc23]:not(:disabled):hover{filter:brightness(1.08)}.mw-card[data-v-883f87f5]{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);color:var(--text);overflow:hidden}.mw-card__header[data-v-883f87f5]{padding:var(--space-xs) var(--space-sm);border-bottom:1px solid var(--border)}.mw-card__title[data-v-883f87f5]{font-size:var(--font-size-base);margin:0;font-weight:600}.mw-card__body[data-v-883f87f5]{padding:var(--space-sm)}.mw-card__footer[data-v-883f87f5]{padding:var(--space-xs) var(--space-sm);border-top:1px solid var(--border);background:var(--lift)}.mw-select[data-v-7e206184]{position:relative}.mw-select select[data-v-7e206184]{appearance:none;width:100%;padding:var(--space-2xs) calc(var(--space-md) + var(--space-2xs)) var(--space-2xs) var(--space-xs);background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:var(--radius);font:inherit}.mw-select select[data-v-7e206184]:focus-visible{outline:2px solid var(--focus-ring);outline-offset:1px}.mw-select__chevron[data-v-7e206184]{right:var(--space-xs);pointer-events:none;stroke:var(--muted);stroke-width:1.5px;fill:none;position:absolute;top:50%;transform:translateY(-50%)}.mw-notice[data-v-ee7fffb1]{padding:var(--space-2xs) var(--space-xs);border:1px solid var(--border);border-radius:var(--radius);background:var(--lift);color:var(--text);font-size:var(--font-size-sm);border-left-width:3px;margin:0}.mw-notice--error[data-v-ee7fffb1]{border-left-color:var(--danger);color:var(--danger);background:color-mix(in srgb, var(--danger) 8%, transparent)}.mw-notice--ok[data-v-ee7fffb1]{border-left-color:var(--ok);color:var(--ok);background:color-mix(in srgb, var(--ok) 8%, transparent)}.sidebar-item[data-v-8da2d583]{align-items:center;gap:var(--space-2xs);width:100%;padding:var(--space-2xs) var(--space-xs);border-radius:var(--radius);color:inherit;font:inherit;text-align:left;cursor:pointer;opacity:.85;transition:background var(--transition-base), opacity var(--transition-base);background:0 0;border:0;display:flex}.sidebar-item[data-v-8da2d583]:hover:not(:disabled){background:color-mix(in srgb, currentColor 10%, transparent);opacity:1}.sidebar-item.is-active[data-v-8da2d583]{background:color-mix(in srgb, var(--accent) 26%, transparent);opacity:1}.sidebar-item[data-v-8da2d583]:disabled{cursor:default}.sidebar-item[data-v-8da2d583]:focus-visible{outline:2px solid var(--focus-ring);outline-offset:1px}.sidebar-item__icon[data-v-8da2d583]{text-align:center;width:1.1rem}.sidebar-group--l1+.sidebar-group--l1[data-v-c8f6c8b2]{margin-block-start:var(--space-2xs)}.sidebar-group__label[data-v-c8f6c8b2]{padding:var(--space-3xs) var(--space-xs);font-size:var(--font-size-xs);color:var(--muted);-webkit-user-select:none;user-select:none;font-weight:600}.sidebar-group--l1>.sidebar-group__label[data-v-c8f6c8b2]{text-transform:uppercase;letter-spacing:var(--tracking-wide);opacity:.75}.sidebar-group--l2>.sidebar-group__label[data-v-c8f6c8b2]{opacity:.6;padding-inline-start:calc(var(--space-xs) + var(--space-3xs))}.sidebar-group--l2>.sidebar-group__items[data-v-c8f6c8b2]{padding-inline-start:var(--space-3xs)}.mw-tab-nav[data-v-97d31503]{gap:var(--space-3xs);border-bottom:2px solid var(--border);display:flex}.mw-tab-nav__tab[data-v-97d31503]{appearance:none;padding:var(--space-2xs) var(--space-sm);cursor:pointer;font-size:var(--font-size-base);color:var(--muted);transition:color var(--transition-base), border-color var(--transition-base);background:0 0;border:none;border-bottom:2px solid #0000;margin-bottom:-2px}.mw-tab-nav__tab[data-v-97d31503]:hover{color:var(--text)}.mw-tab-nav__tab--active[data-v-97d31503]{border-bottom-color:var(--accent);color:var(--text);font-weight:600}.ca-root[data-v-b43dabdd]{align-items:center;gap:.35em;display:inline-flex}.ca-value[data-v-b43dabdd]{font-family:var(--mw-font-mono,monospace);font-size:inherit}.ca-copy[data-v-b43dabdd]{color:var(--muted,#888);cursor:pointer;transition:color var(--transition-base);background:0 0;border:none;justify-content:center;align-items:center;padding:0;line-height:1;display:inline-flex}.ca-copy[data-v-b43dabdd]:hover{color:var(--text,#f0f0f0)}.ca-copy--copied[data-v-b43dabdd]{color:var(--accent,#6366f1)}.ca-icon[data-v-b43dabdd]{display:block}.el-root[data-v-073d1bbe]{font-family:monospace;font-size:inherit;color:var(--accent,#6366f1);text-underline-offset:2px;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;transition:color .15s}.el-root[data-v-073d1bbe]:hover{color:var(--text,#f0f0f0);text-decoration-style:solid}.copyright-line[data-v-1f9a5da9]{display:inherit;white-space:nowrap;text-align:center}.symbol-link[data-v-1f9a5da9]{color:inherit;vertical-align:text-top;align-items:center;padding:0 .1rem;text-decoration:none;display:inline-flex}.symbol-link[data-v-1f9a5da9]:hover{text-decoration:underline}.kopimi-symbol[data-v-1f9a5da9]{align-items:center;line-height:1;display:inline-flex}.kopimi-mark[data-v-1f9a5da9]{vertical-align:-.15em;display:inline}.text-content[data-v-1f9a5da9]{display:inline}.ui-stepper[data-v-33717fc3]{margin:0 0 var(--space-md,1.5rem);padding:0;list-style:none;display:flex}.ui-stepper__step[data-v-33717fc3]{flex-direction:column;flex:1 1 0;align-items:center;gap:.4rem;min-width:0;display:flex;position:relative}.ui-stepper__step[data-v-33717fc3]:not(:first-child):before{content:"";background:var(--border);z-index:0;height:2px;position:absolute;top:1rem;left:-50%;right:50%}.ui-stepper__step.is-done[data-v-33717fc3]:before,.ui-stepper__step.is-active[data-v-33717fc3]:before{background:var(--accent)}.ui-stepper__badge[data-v-33717fc3]{z-index:1;border:2px solid var(--border);background:var(--surface);width:2rem;height:2rem;color:var(--muted);cursor:default;transition:background-color var(--transition-base,.2s), border-color var(--transition-base,.2s);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;padding:0;font-family:inherit;font-size:.8rem;font-weight:600;line-height:1;display:flex;position:relative}button.ui-stepper__badge[data-v-33717fc3]{cursor:pointer}button.ui-stepper__badge[data-v-33717fc3]:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}.is-done .ui-stepper__badge[data-v-33717fc3]{background:var(--accent);border-color:var(--accent);color:#fff}.is-active .ui-stepper__badge[data-v-33717fc3]{background:color-mix(in srgb, var(--accent) 12%, var(--surface));border-color:var(--accent);color:var(--accent)}.ui-stepper__label[data-v-33717fc3]{text-align:center;color:var(--muted);white-space:nowrap;text-overflow:ellipsis;max-width:100%;font-size:.78rem;line-height:1.2;overflow:hidden}.is-done .ui-stepper__label[data-v-33717fc3],.is-active .ui-stepper__label[data-v-33717fc3]{color:var(--text)}.is-active .ui-stepper__label[data-v-33717fc3]{font-weight:600}.mw-field-hint[data-v-4d63aaa4]{margin-left:var(--space-3xs,.35rem);vertical-align:middle;display:inline-block;position:relative}.mw-field-hint__btn[data-v-4d63aaa4]{border:1px solid var(--muted);width:1.1em;height:1.1em;color:var(--muted);cursor:help;background:0 0;border-radius:50%;justify-content:center;align-items:center;padding:0;font-family:inherit;font-size:.75rem;font-weight:700;line-height:1;display:inline-flex}.mw-field-hint__btn[data-v-4d63aaa4]:focus-visible{outline:2px solid var(--focus-ring);outline-offset:1px}.mw-field-hint__tip[data-v-4d63aaa4]{z-index:10;min-width:200px;max-width:min(300px,90vw);padding:var(--space-2xs,.6rem) var(--space-xs,.75rem);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);font-size:var(--font-size-sm,.85rem);color:var(--text);visibility:hidden;opacity:0;transition:opacity var(--transition-base,.15s ease), visibility var(--transition-base,.15s ease);pointer-events:none;font-weight:400;line-height:1.5;position:absolute;top:calc(100% + 6px);left:0;box-shadow:0 4px 12px #0000001f}.mw-field-hint:hover .mw-field-hint__tip[data-v-4d63aaa4],.mw-field-hint:focus-within .mw-field-hint__tip[data-v-4d63aaa4]{visibility:visible;opacity:1;pointer-events:auto}.mw-form-field label[data-v-c22333c7]{margin:.9rem 0 .3rem;font-weight:600;display:block}.mw-form-field__hint[data-v-c22333c7]{color:var(--muted);font-size:var(--font-size-sm,.9rem);margin:.25rem 0 0;font-weight:400}.mw-form-field__error[data-v-c22333c7]{color:var(--danger);font-size:var(--font-size-sm,.88rem);margin:.25rem 0 0}.status-widget[data-v-6436368e]{align-items:center;gap:var(--space-2xs);color:inherit;font-size:var(--font-size-sm);opacity:.85;transition:opacity var(--transition-base);text-decoration:none;display:inline-flex}.status-widget[data-v-6436368e]:hover{opacity:1}.status-widget__dot[data-v-6436368e]{width:var(--space-2xs);height:var(--space-2xs);border-radius:50%;flex-shrink:0}.status-widget--ok .status-widget__dot[data-v-6436368e]{background:var(--ok)}.status-widget--degraded .status-widget__dot[data-v-6436368e]{background:var(--warning)}.status-widget--error .status-widget__dot[data-v-6436368e]{background:var(--danger)}
2
2
  /*$vite$:1*/
@@ -0,0 +1,16 @@
1
+ type __VLS_Props = {
2
+ fieldId: string;
3
+ };
4
+ declare var __VLS_1: {};
5
+ type __VLS_Slots = {} & {
6
+ default?: (props: typeof __VLS_1) => any;
7
+ };
8
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
9
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
10
+ declare const _default: typeof __VLS_export;
11
+ export default _default;
12
+ type __VLS_WithSlots<T, S> = T & {
13
+ new (): {
14
+ $slots: S;
15
+ };
16
+ };
@@ -0,0 +1,27 @@
1
+ type __VLS_Props = {
2
+ id: string;
3
+ label: string;
4
+ error?: string | null;
5
+ hint?: string;
6
+ };
7
+ declare var __VLS_1: {}, __VLS_3: {
8
+ attrs: {
9
+ id: string;
10
+ 'aria-invalid': true | undefined;
11
+ 'aria-describedby': string | undefined;
12
+ };
13
+ };
14
+ type __VLS_Slots = {} & {
15
+ 'label-suffix'?: (props: typeof __VLS_1) => any;
16
+ } & {
17
+ default?: (props: typeof __VLS_3) => any;
18
+ };
19
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
20
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
21
+ declare const _default: typeof __VLS_export;
22
+ export default _default;
23
+ type __VLS_WithSlots<T, S> = T & {
24
+ new (): {
25
+ $slots: S;
26
+ };
27
+ };
package/dist/index.d.ts CHANGED
@@ -16,6 +16,8 @@ export { default as ExplorerLink } from './components/ExplorerLink.vue';
16
16
  export { default as CopyrightLine } from './components/CopyrightLine.vue';
17
17
  export { default as UiStepper } from './components/UiStepper.vue';
18
18
  export type { StepperStep } from './components/UiStepper.vue';
19
+ export { default as UiFieldHint } from './components/UiFieldHint.vue';
20
+ export { default as UiFormField } from './components/UiFormField.vue';
19
21
  export { default as StatusWidget } from './components/StatusWidget.vue';
20
22
  export { suiExplorerUrl } from './explorer.js';
21
23
  export type { SuiNetwork, SuiExplorerKind } from './explorer.js';
package/dist/ui.js CHANGED
@@ -308,7 +308,7 @@ var E = { class: "mw-footer__start" }, D = { class: "mw-footer__center" }, O = {
308
308
  "stroke-linecap": "round",
309
309
  "stroke-linejoin": "round",
310
310
  "aria-hidden": "true"
311
- }, Ne = {
311
+ }, U = {
312
312
  key: 1,
313
313
  class: "ca-icon",
314
314
  viewBox: "0 0 24 24",
@@ -320,7 +320,7 @@ var E = { class: "mw-footer__start" }, D = { class: "mw-footer__center" }, O = {
320
320
  "stroke-linecap": "round",
321
321
  "stroke-linejoin": "round",
322
322
  "aria-hidden": "true"
323
- }, Pe = /*#__PURE__*/ y(/* @__PURE__ */ s({
323
+ }, Ne = /*#__PURE__*/ y(/* @__PURE__ */ s({
324
324
  __name: "CopyableAddress",
325
325
  props: {
326
326
  address: {},
@@ -351,7 +351,7 @@ var E = { class: "mw-footer__start" }, D = { class: "mw-footer__center" }, O = {
351
351
  title: r.value ? "Copied!" : e.label,
352
352
  "aria-label": r.value ? "Copied" : e.label,
353
353
  onClick: c
354
- }, [r.value ? (f(), i("svg", Me, [...n[0] ||= [a("polyline", { points: "20 6 9 17 4 12" }, null, -1)]])) : (f(), i("svg", Ne, [...n[1] ||= [a("rect", {
354
+ }, [r.value ? (f(), i("svg", Me, [...n[0] ||= [a("polyline", { points: "20 6 9 17 4 12" }, null, -1)]])) : (f(), i("svg", U, [...n[1] ||= [a("rect", {
355
355
  x: "9",
356
356
  y: "9",
357
357
  width: "13",
@@ -360,7 +360,7 @@ var E = { class: "mw-footer__start" }, D = { class: "mw-footer__center" }, O = {
360
360
  ry: "2"
361
361
  }, null, -1), a("path", { d: "M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1" }, null, -1)]]))], 10, je)]));
362
362
  }
363
- }), [["__scopeId", "data-v-b43dabdd"]]), Fe = ["href", "title"], Ie = /*#__PURE__*/ y(/* @__PURE__ */ s({
363
+ }), [["__scopeId", "data-v-b43dabdd"]]), Pe = ["href", "title"], Fe = /*#__PURE__*/ y(/* @__PURE__ */ s({
364
364
  __name: "ExplorerLink",
365
365
  props: {
366
366
  href: {},
@@ -384,12 +384,12 @@ var E = { class: "mw-footer__start" }, D = { class: "mw-footer__center" }, O = {
384
384
  target: "_blank",
385
385
  rel: "noopener noreferrer",
386
386
  title: e.value
387
- }, [h(t.$slots, "default", {}, () => [o(g(r.value), 1)], !0)], 8, Fe));
387
+ }, [h(t.$slots, "default", {}, () => [o(g(r.value), 1)], !0)], 8, Pe));
388
388
  }
389
- }), [["__scopeId", "data-v-073d1bbe"]]), Le = { class: "copyright-line" }, Re = ["href", "aria-label"], ze = { key: 0 }, Be = { key: 1 }, Ve = {
389
+ }), [["__scopeId", "data-v-073d1bbe"]]), Ie = { class: "copyright-line" }, Le = ["href", "aria-label"], Re = { key: 0 }, ze = { key: 1 }, Be = {
390
390
  key: 2,
391
391
  class: "kopimi-symbol"
392
- }, He = { class: "text-content" }, Ue = { key: 0 }, We = /*#__PURE__*/ y(/* @__PURE__ */ s({
392
+ }, Ve = { class: "text-content" }, He = { key: 0 }, Ue = /*#__PURE__*/ y(/* @__PURE__ */ s({
393
393
  __name: "CopyrightLine",
394
394
  props: {
395
395
  organisationName: {},
@@ -401,13 +401,13 @@ var E = { class: "mw-footer__start" }, D = { class: "mw-footer__center" }, O = {
401
401
  },
402
402
  setup(e) {
403
403
  let n = e, s = t(() => n.symbolVariant), c = t(() => n.symbolHref || (s.value === "kopimi" ? "/legal/powr.broccoli-kopimi.pdf" : s.value === "copyleft" ? "/legal/copyleft.html" : "/legal/copyright.html")), l = t(() => n.symbolLabel || (s.value === "kopimi" ? "Kopimi legal notice" : s.value === "copyleft" ? "Copyleft legal notice" : "Copyright legal notice")), u = t(() => n.rightsStatement === "" ? "" : n.rightsStatement === "none" ? "No rights reserved." : n.rightsStatement === "all" || !n.rightsStatement ? "All rights reserved." : n.rightsStatement === "jam" ? "All jams preserved." : n.rightsStatement);
404
- return (t, n) => (f(), i("small", Le, [a("a", {
404
+ return (t, n) => (f(), i("small", Ie, [a("a", {
405
405
  href: c.value,
406
406
  class: "symbol-link",
407
407
  target: "_blank",
408
408
  rel: "noopener noreferrer",
409
409
  "aria-label": l.value
410
- }, [s.value === "copyright" ? (f(), i("span", ze, "©")) : s.value === "copyleft" ? (f(), i("span", Be, "🄯")) : s.value === "kopimi" ? (f(), i("span", Ve, [...n[0] ||= [a("svg", {
410
+ }, [s.value === "copyright" ? (f(), i("span", Re, "©")) : s.value === "copyleft" ? (f(), i("span", ze, "🄯")) : s.value === "kopimi" ? (f(), i("span", Be, [...n[0] ||= [a("svg", {
411
411
  viewBox: "0 0 24 24",
412
412
  width: "1em",
413
413
  height: "1em",
@@ -427,19 +427,19 @@ var E = { class: "mw-footer__start" }, D = { class: "mw-footer__center" }, O = {
427
427
  "font-family": "system-ui, sans-serif",
428
428
  "font-size": "11",
429
429
  fill: "currentColor"
430
- }, " C ")], -1)]])) : r("", !0)], 8, Re), a("span", He, [o(g(e.year) + " " + g(e.organisationName) + ".", 1), u.value ? (f(), i("span", Ue, g(`
430
+ }, " C ")], -1)]])) : r("", !0)], 8, Le), a("span", Ve, [o(g(e.year) + " " + g(e.organisationName) + ".", 1), u.value ? (f(), i("span", He, g(`
431
431
  ${u.value}`), 1)) : r("", !0)])]));
432
432
  }
433
- }), [["__scopeId", "data-v-1f9a5da9"]]), Ge = {
433
+ }), [["__scopeId", "data-v-1f9a5da9"]]), We = {
434
434
  class: "ui-stepper",
435
435
  role: "list"
436
- }, Ke = {
436
+ }, Ge = {
437
437
  key: 0,
438
438
  "aria-hidden": "true"
439
- }, qe = {
439
+ }, Ke = {
440
440
  key: 1,
441
441
  "aria-hidden": "true"
442
- }, Je = { class: "ui-stepper__label" }, Ye = /*#__PURE__*/ y(/* @__PURE__ */ s({
442
+ }, qe = { class: "ui-stepper__label" }, Je = /*#__PURE__*/ y(/* @__PURE__ */ s({
443
443
  __name: "UiStepper",
444
444
  props: {
445
445
  steps: {},
@@ -454,7 +454,7 @@ var E = { class: "mw-footer__start" }, D = { class: "mw-footer__center" }, O = {
454
454
  function u(e) {
455
455
  e < o.modelValue && s("update:modelValue", e);
456
456
  }
457
- return (r, o) => (f(), i("ol", Ge, [(f(!0), i(e, null, m(t.steps, (e, t) => (f(), i("li", {
457
+ return (r, o) => (f(), i("ol", We, [(f(!0), i(e, null, m(t.steps, (e, t) => (f(), i("li", {
458
458
  key: e.id,
459
459
  class: l(["ui-stepper__step", `is-${c(t)}`])
460
460
  }, [(f(), n(te(c(t) === "done" ? "button" : "span"), {
@@ -464,54 +464,101 @@ var E = { class: "mw-footer__start" }, D = { class: "mw-footer__center" }, O = {
464
464
  "aria-current": c(t) === "active" ? "step" : void 0,
465
465
  onClick: (e) => c(t) === "done" && u(t)
466
466
  }, {
467
- default: ae(() => [c(t) === "done" ? (f(), i("span", Ke, "✓")) : (f(), i("span", qe, g(t + 1), 1))]),
467
+ default: ae(() => [c(t) === "done" ? (f(), i("span", Ge, "✓")) : (f(), i("span", Ke, g(t + 1), 1))]),
468
468
  _: 2
469
469
  }, 1032, [
470
470
  "type",
471
471
  "aria-label",
472
472
  "aria-current",
473
473
  "onClick"
474
- ])), a("span", Je, g(e.label), 1)], 2))), 128))]));
474
+ ])), a("span", qe, g(e.label), 1)], 2))), 128))]));
475
475
  }
476
- }), [["__scopeId", "data-v-33717fc3"]]), Xe = /* @__PURE__ */ new Set([
476
+ }), [["__scopeId", "data-v-33717fc3"]]), Ye = { class: "mw-field-hint" }, Xe = ["aria-describedby"], Ze = ["id"], Qe = /*#__PURE__*/ y(/* @__PURE__ */ s({
477
+ __name: "UiFieldHint",
478
+ props: { fieldId: {} },
479
+ setup(e) {
480
+ function t(e) {
481
+ e.key === "Escape" && e.currentTarget.blur();
482
+ }
483
+ return (n, r) => (f(), i("span", Ye, [a("button", {
484
+ type: "button",
485
+ class: "mw-field-hint__btn",
486
+ "aria-describedby": `${e.fieldId}-hint`,
487
+ "aria-label": "Help",
488
+ onKeydown: t
489
+ }, "?", 40, Xe), a("span", {
490
+ id: `${e.fieldId}-hint`,
491
+ role: "tooltip",
492
+ class: "mw-field-hint__tip"
493
+ }, [h(n.$slots, "default", {}, void 0, !0)], 8, Ze)]));
494
+ }
495
+ }), [["__scopeId", "data-v-4d63aaa4"]]), $e = { class: "mw-form-field" }, et = ["for"], tt = {
496
+ key: 0,
497
+ class: "mw-form-field__hint"
498
+ }, nt = ["id"], rt = /*#__PURE__*/ y(/* @__PURE__ */ s({
499
+ __name: "UiFormField",
500
+ props: {
501
+ id: {},
502
+ label: {},
503
+ error: {},
504
+ hint: {}
505
+ },
506
+ setup(e) {
507
+ let n = e, s = t(() => `${n.id}-err`), c = t(() => ({
508
+ id: n.id,
509
+ "aria-invalid": n.error ? !0 : void 0,
510
+ "aria-describedby": n.error ? s.value : void 0
511
+ }));
512
+ return (t, n) => (f(), i("div", $e, [
513
+ a("label", { for: e.id }, [o(g(e.label), 1), h(t.$slots, "label-suffix", {}, void 0, !0)], 8, et),
514
+ h(t.$slots, "default", { attrs: c.value }, void 0, !0),
515
+ e.hint && !e.error ? (f(), i("p", tt, g(e.hint), 1)) : r("", !0),
516
+ e.error ? (f(), i("p", {
517
+ key: 1,
518
+ id: s.value,
519
+ class: "mw-form-field__error"
520
+ }, g(e.error), 9, nt)) : r("", !0)
521
+ ]));
522
+ }
523
+ }), [["__scopeId", "data-v-c22333c7"]]), it = /* @__PURE__ */ new Set([
477
524
  "operational",
478
525
  "degraded",
479
526
  "down",
480
527
  "unknown"
481
528
  ]);
482
- function U(e) {
483
- return typeof e == "string" && Xe.has(e);
484
- }
485
529
  function W(e) {
486
- return U(e) ? e : "unknown";
530
+ return typeof e == "string" && it.has(e);
487
531
  }
488
532
  function G(e) {
533
+ return W(e) ? e : "unknown";
534
+ }
535
+ function K(e) {
489
536
  return typeof e != "string" || e.trim() === "" ? "" : e.replace(/[<>&"]/g, "");
490
537
  }
491
- function Ze(e) {
538
+ function at(e) {
492
539
  if (typeof e != "object" || !e) return null;
493
- let t = e, n = G(t.name);
540
+ let t = e, n = K(t.name);
494
541
  return n ? {
495
542
  name: n,
496
- status: W(t.status)
543
+ status: G(t.status)
497
544
  } : null;
498
545
  }
499
- function Qe(e) {
546
+ function ot(e) {
500
547
  if (typeof e != "object" || !e) return null;
501
- let t = e, n = G(t.name);
548
+ let t = e, n = K(t.name);
502
549
  if (!n) return null;
503
- let r = Array.isArray(t.components) ? t.components.map(Ze).filter((e) => e !== null) : [];
550
+ let r = Array.isArray(t.components) ? t.components.map(at).filter((e) => e !== null) : [];
504
551
  return {
505
552
  name: n,
506
- status: W(t.status),
553
+ status: G(t.status),
507
554
  components: r
508
555
  };
509
556
  }
510
- function K(e) {
557
+ function q(e) {
511
558
  if (typeof e != "object" || !e) return null;
512
559
  let t = e;
513
- if (!U(t.overall) || typeof t.generated_at != "string" || !Array.isArray(t.groups)) return null;
514
- let n = t.groups.map(Qe).filter((e) => e !== null);
560
+ if (!W(t.overall) || typeof t.generated_at != "string" || !Array.isArray(t.groups)) return null;
561
+ let n = t.groups.map(ot).filter((e) => e !== null);
515
562
  return {
516
563
  generated_at: t.generated_at,
517
564
  overall: t.overall,
@@ -520,7 +567,7 @@ function K(e) {
520
567
  }
521
568
  //#endregion
522
569
  //#region src/components/StatusWidget.vue?vue&type=script&setup=true&lang.ts
523
- var $e = ["href", "title"], et = { class: "status-widget__label" }, q = /*#__PURE__*/ y(/* @__PURE__ */ s({
570
+ var st = ["href", "title"], ct = { class: "status-widget__label" }, lt = /*#__PURE__*/ y(/* @__PURE__ */ s({
524
571
  __name: "StatusWidget",
525
572
  props: {
526
573
  apiUrl: { default: "https://status.meddleware.co.uk/api/status" },
@@ -543,7 +590,7 @@ var $e = ["href", "title"], et = { class: "status-widget__label" }, q = /*#__PUR
543
590
  try {
544
591
  let e = await fetch(t.apiUrl);
545
592
  if (!e.ok) throw Error(`HTTP ${e.status}`);
546
- let i = K(await e.json());
593
+ let i = q(await e.json());
547
594
  if (!i) throw Error("unexpected response shape");
548
595
  o.value = n[i.overall], s.value = r[i.overall];
549
596
  } catch {
@@ -563,29 +610,29 @@ var $e = ["href", "title"], et = { class: "status-widget__label" }, q = /*#__PUR
563
610
  }, [n[0] ||= a("span", {
564
611
  class: "status-widget__dot",
565
612
  "aria-hidden": "true"
566
- }, null, -1), a("span", et, g(s.value), 1)], 10, $e));
613
+ }, null, -1), a("span", ct, g(s.value), 1)], 10, st));
567
614
  }
568
615
  }), [["__scopeId", "data-v-6436368e"]]), J = {
569
616
  mainnet: "https://suivision.xyz",
570
617
  testnet: "https://testnet.suivision.xyz",
571
618
  devnet: "https://devnet.suivision.xyz"
572
619
  };
573
- function tt(e, t, n = "testnet") {
620
+ function ut(e, t, n = "testnet") {
574
621
  return `${J[n] ?? J.testnet}/${e}/${t}`;
575
622
  }
576
623
  //#endregion
577
624
  //#region src/composables/useColorMode.ts
578
625
  var Y = "mw-color-mode", X = p("system"), Z = !1;
579
- function nt() {
626
+ function dt() {
580
627
  return typeof window < "u" && typeof window.matchMedia == "function" && window.matchMedia("(prefers-color-scheme: dark)").matches;
581
628
  }
582
629
  function Q(e) {
583
- return e === "dark" || e === "system" && nt();
630
+ return e === "dark" || e === "system" && dt();
584
631
  }
585
632
  function $(e) {
586
633
  typeof document < "u" && document.documentElement.setAttribute("data-theme", Q(e) ? "dark" : "light");
587
634
  }
588
- function rt(e = "system") {
635
+ function ft(e = "system") {
589
636
  if (!Z) {
590
637
  Z = !0;
591
638
  let t = null;
@@ -616,10 +663,10 @@ function rt(e = "system") {
616
663
  }
617
664
  //#endregion
618
665
  //#region src/composables/useSeason.ts
619
- function it() {
666
+ function pt() {
620
667
  if (typeof document > "u") return;
621
668
  let e = (/* @__PURE__ */ new Date()).getMonth(), t = e >= 2 && e <= 4 ? "spring" : e >= 5 && e <= 7 ? "summer" : e >= 8 && e <= 10 ? "autumn" : "winter";
622
669
  document.documentElement.dataset.season = t;
623
670
  }
624
671
  //#endregion
625
- export { j as AppFooter, de as AppHeader, w as AppSidebar, Oe as AppTabNav, I as ColorModeControl, Pe as CopyableAddress, We as CopyrightLine, Ie as ExplorerLink, Te as SidebarGroup, xe as SidebarItem, q as StatusWidget, R as UiButton, pe as UiCard, _e as UiNotice, he as UiSelect, Ye as UiStepper, U as isStatusLevel, K as parseSnapshot, T as safeHref, tt as suiExplorerUrl, rt as useColorMode, it as useSeason };
672
+ export { j as AppFooter, de as AppHeader, w as AppSidebar, Oe as AppTabNav, I as ColorModeControl, Ne as CopyableAddress, Ue as CopyrightLine, Fe as ExplorerLink, Te as SidebarGroup, xe as SidebarItem, lt as StatusWidget, R as UiButton, pe as UiCard, Qe as UiFieldHint, rt as UiFormField, _e as UiNotice, he as UiSelect, Je as UiStepper, W as isStatusLevel, q as parseSnapshot, T as safeHref, ut as suiExplorerUrl, ft as useColorMode, pt as useSeason };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@meddleware/ui",
3
- "version": "0.1.21",
3
+ "version": "0.1.22",
4
4
  "description": "Shared Vue 3 component library for @meddleware UIs \u2014 layout shell (header/sidebar/footer), colour-mode control, and primitives. Built on @meddleware/design-tokens.",
5
5
  "homepage": "https://docs.meddleware.co.uk/",
6
6
  "license": "0BSD",