@meddleware/ui 0.1.15 → 0.1.16

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}.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}.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}.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}.symbol-link[data-v-41d138d5]{color:inherit;text-decoration:none}.symbol-link[data-v-41d138d5]:hover{text-decoration:underline}.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,19 @@
1
+ type RightsStatementVariant = 'all' | 'none' | 'jam' | 'custom';
2
+ type SymbolVariant = 'copyright' | 'copyleft' | 'kopimi';
3
+ type __VLS_Props = {
4
+ organisationName: string;
5
+ year?: number;
6
+ rightsStatement?: RightsStatementVariant | string;
7
+ symbolVariant?: SymbolVariant;
8
+ /** Optional override for the symbol link href. Defaults based on symbolVariant. */
9
+ symbolHref?: string;
10
+ /** Optional override for the symbol link aria-label. Defaults based on symbolVariant. */
11
+ symbolLabel?: string;
12
+ };
13
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
14
+ year: number;
15
+ rightsStatement: RightsStatementVariant | string;
16
+ symbolVariant: SymbolVariant;
17
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
18
+ declare const _default: typeof __VLS_export;
19
+ export default _default;
package/dist/index.d.ts CHANGED
@@ -12,6 +12,7 @@ export { default as AppTabNav } from './components/AppTabNav.vue';
12
12
  export type { AppTab } from './components/AppTabNav.vue';
13
13
  export { default as CopyableAddress } from './components/CopyableAddress.vue';
14
14
  export { default as ExplorerLink } from './components/ExplorerLink.vue';
15
+ export { default as CopyrightLine } from './components/CopyrightLine.vue';
15
16
  export { default as StatusWidget } from './components/StatusWidget.vue';
16
17
  export { suiExplorerUrl } from './explorer.js';
17
18
  export type { SuiNetwork, SuiExplorerKind } from './explorer.js';
@@ -0,0 +1,48 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
6
+ <title>Copyleft Notice</title>
7
+ <style>
8
+ :root {
9
+ color-scheme: light dark;
10
+ font-family:
11
+ system-ui,
12
+ -apple-system,
13
+ BlinkMacSystemFont,
14
+ "Segoe UI",
15
+ sans-serif;
16
+ }
17
+ body {
18
+ margin: 0;
19
+ padding: 2rem;
20
+ line-height: 1.6;
21
+ max-width: 48rem;
22
+ }
23
+ h1 {
24
+ margin-top: 0;
25
+ font-size: 1.5rem;
26
+ }
27
+ code {
28
+ font-family: ui-monospace, SFMono-Regular, Consolas, monospace;
29
+ }
30
+ </style>
31
+ </head>
32
+ <body>
33
+ <h1>Copyleft Notice</h1>
34
+ <p>
35
+ This page is reserved for works distributed under a copyleft-style
36
+ permission structure.
37
+ </p>
38
+ <p>
39
+ Copyleft generally means that derivatives and redistributions must
40
+ preserve the same or compatible licensing terms, depending on the specific
41
+ licence in force.
42
+ </p>
43
+ <p>
44
+ The exact legal meaning depends on the licence or notice that accompanies
45
+ the relevant work.
46
+ </p>
47
+ </body>
48
+ </html>
@@ -0,0 +1,48 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
6
+ <title>Copyright Notice</title>
7
+ <style>
8
+ :root {
9
+ color-scheme: light dark;
10
+ font-family:
11
+ system-ui,
12
+ -apple-system,
13
+ BlinkMacSystemFont,
14
+ "Segoe UI",
15
+ sans-serif;
16
+ }
17
+ body {
18
+ margin: 0;
19
+ padding: 2rem;
20
+ line-height: 1.6;
21
+ max-width: 48rem;
22
+ }
23
+ h1 {
24
+ margin-top: 0;
25
+ font-size: 1.5rem;
26
+ }
27
+ code {
28
+ font-family: ui-monospace, SFMono-Regular, Consolas, monospace;
29
+ }
30
+ </style>
31
+ </head>
32
+ <body>
33
+ <h1>Copyright Notice</h1>
34
+ <p>
35
+ Unless otherwise stated, the content and code in this application are
36
+ protected by copyright.
37
+ </p>
38
+ <p>
39
+ Copyright in the relevant work is retained by the applicable rights holder
40
+ and used under the permissions, licences, or agreements associated with
41
+ that work.
42
+ </p>
43
+ <p>
44
+ For the full application footer, see the main interface. This page exists
45
+ as a static legal reference.
46
+ </p>
47
+ </body>
48
+ </html>
package/dist/ui.js CHANGED
@@ -1,6 +1,6 @@
1
- import { Fragment as e, computed as t, createCommentVNode as n, createElementBlock as r, createElementVNode as i, createTextVNode as a, defineComponent as o, mergeProps as s, normalizeClass as c, normalizeStyle as l, onMounted as ee, onUnmounted as te, openBlock as u, ref as d, renderList as f, renderSlot as p, toDisplayString as m, unref as h, useModel as g, vModelSelect as ne, watch as re, withDirectives as ie } from "vue";
1
+ import { Fragment as e, computed as t, createCommentVNode as n, createElementBlock as r, createElementVNode as i, createTextVNode as a, defineComponent as o, mergeProps as s, normalizeClass as c, normalizeStyle as l, onMounted as u, onUnmounted as ee, openBlock as d, ref as f, renderList as p, renderSlot as m, toDisplayString as h, unref as g, useModel as te, vModelSelect as _, watch as ne, withDirectives as re } from "vue";
2
2
  //#region src/internal/panel.ts
3
- function _(e, t) {
3
+ function v(e, t) {
4
4
  let n;
5
5
  return n = e === "transparent" ? {
6
6
  "--_bg": "transparent",
@@ -24,7 +24,7 @@ function _(e, t) {
24
24
  }
25
25
  //#endregion
26
26
  //#region src/components/AppHeader.vue?vue&type=script&setup=true&lang.ts
27
- var ae = { class: "mw-header__brand" }, oe = { class: "mw-header__center" }, se = { class: "mw-header__actions" }, ce = /*@__PURE__*/ o({
27
+ var ie = { class: "mw-header__brand" }, ae = { class: "mw-header__center" }, oe = { class: "mw-header__actions" }, se = /*@__PURE__*/ o({
28
28
  __name: "AppHeader",
29
29
  props: {
30
30
  variant: { default: "dark" },
@@ -35,33 +35,33 @@ var ae = { class: "mw-header__brand" }, oe = { class: "mw-header__center" }, se
35
35
  }
36
36
  },
37
37
  setup(e) {
38
- let n = e, a = t(() => _(n.variant, n.colors));
39
- return (t, n) => (u(), r("header", {
38
+ let n = e, a = t(() => v(n.variant, n.colors));
39
+ return (t, n) => (d(), r("header", {
40
40
  class: c(["mw-header", [`mw-header--${e.variant}`, { "mw-header--sticky": e.sticky }]]),
41
41
  style: l(a.value)
42
42
  }, [
43
- i("div", ae, [p(t.$slots, "brand", {}, void 0, !0)]),
44
- i("div", oe, [p(t.$slots, "default", {}, void 0, !0)]),
45
- i("div", se, [p(t.$slots, "actions", {}, void 0, !0)])
43
+ i("div", ie, [m(t.$slots, "brand", {}, void 0, !0)]),
44
+ i("div", ae, [m(t.$slots, "default", {}, void 0, !0)]),
45
+ i("div", oe, [m(t.$slots, "actions", {}, void 0, !0)])
46
46
  ], 6));
47
47
  }
48
- }), v = (e, t) => {
48
+ }), y = (e, t) => {
49
49
  let n = e.__vccOpts || e;
50
50
  for (let [e, r] of t) n[e] = r;
51
51
  return n;
52
- }, le = /*#__PURE__*/ v(ce, [["__scopeId", "data-v-9b9826d5"]]), ue = {
52
+ }, ce = /*#__PURE__*/ y(se, [["__scopeId", "data-v-9b9826d5"]]), le = {
53
53
  key: 0,
54
54
  class: "mw-sidebar__head"
55
- }, de = {
55
+ }, ue = {
56
56
  class: "mw-sidebar__nav",
57
57
  "aria-label": "Primary"
58
- }, y = {
58
+ }, de = {
59
59
  key: 1,
60
60
  class: "mw-sidebar__body"
61
61
  }, b = {
62
62
  key: 2,
63
63
  class: "mw-sidebar__foot"
64
- }, x = /*#__PURE__*/ v(/* @__PURE__ */ o({
64
+ }, x = /*#__PURE__*/ y(/* @__PURE__ */ o({
65
65
  __name: "AppSidebar",
66
66
  props: {
67
67
  variant: { default: "dark" },
@@ -70,17 +70,17 @@ var ae = { class: "mw-header__brand" }, oe = { class: "mw-header__center" }, se
70
70
  },
71
71
  setup(e) {
72
72
  let a = e, o = t(() => {
73
- let e = _(a.variant, a.colors);
73
+ let e = v(a.variant, a.colors);
74
74
  return a.width && (e["--mw-sidebar-width"] = a.width), e;
75
75
  });
76
- return (t, a) => (u(), r("aside", {
76
+ return (t, a) => (d(), r("aside", {
77
77
  class: c(["mw-sidebar", `mw-sidebar--${e.variant}`]),
78
78
  style: l(o.value)
79
79
  }, [
80
- t.$slots.head ? (u(), r("div", ue, [p(t.$slots, "head", {}, void 0, !0)])) : n("", !0),
81
- i("nav", de, [p(t.$slots, "default", {}, void 0, !0)]),
82
- t.$slots.body ? (u(), r("div", y, [p(t.$slots, "body", {}, void 0, !0)])) : n("", !0),
83
- t.$slots.foot ? (u(), r("div", b, [p(t.$slots, "foot", {}, void 0, !0)])) : n("", !0)
80
+ t.$slots.head ? (d(), r("div", le, [m(t.$slots, "head", {}, void 0, !0)])) : n("", !0),
81
+ i("nav", ue, [m(t.$slots, "default", {}, void 0, !0)]),
82
+ t.$slots.body ? (d(), r("div", de, [m(t.$slots, "body", {}, void 0, !0)])) : n("", !0),
83
+ t.$slots.foot ? (d(), r("div", b, [m(t.$slots, "foot", {}, void 0, !0)])) : n("", !0)
84
84
  ], 6));
85
85
  }
86
86
  }), [["__scopeId", "data-v-a2b8405c"]]);
@@ -94,7 +94,7 @@ function S(e) {
94
94
  }
95
95
  //#endregion
96
96
  //#region src/components/AppFooter.vue?vue&type=script&setup=true&lang.ts
97
- var C = { class: "mw-footer__start" }, w = { class: "mw-footer__center" }, T = { class: "mw-footer__end" }, E = ["href"], D = ["href"], O = /*#__PURE__*/ v(/* @__PURE__ */ o({
97
+ var C = { class: "mw-footer__start" }, w = { class: "mw-footer__center" }, T = { class: "mw-footer__end" }, E = ["href"], D = ["href"], O = /*#__PURE__*/ y(/* @__PURE__ */ o({
98
98
  __name: "AppFooter",
99
99
  props: {
100
100
  variant: { default: "transparent" },
@@ -103,25 +103,25 @@ var C = { class: "mw-footer__start" }, w = { class: "mw-footer__center" }, T = {
103
103
  devUrl: {}
104
104
  },
105
105
  setup(e) {
106
- let a = e, o = t(() => _(a.variant, a.colors));
107
- return (t, a) => (u(), r("footer", {
106
+ let a = e, o = t(() => v(a.variant, a.colors));
107
+ return (t, a) => (d(), r("footer", {
108
108
  class: c(["mw-footer", `mw-footer--${e.variant}`]),
109
109
  style: l(o.value)
110
110
  }, [
111
- i("div", C, [p(t.$slots, "start", {}, void 0, !0)]),
112
- i("div", w, [p(t.$slots, "default", {}, void 0, !0)]),
111
+ i("div", C, [m(t.$slots, "start", {}, void 0, !0)]),
112
+ i("div", w, [m(t.$slots, "default", {}, void 0, !0)]),
113
113
  i("div", T, [
114
- p(t.$slots, "end", {}, void 0, !0),
115
- e.docsUrl ? (u(), r("a", {
114
+ m(t.$slots, "end", {}, void 0, !0),
115
+ e.docsUrl ? (d(), r("a", {
116
116
  key: 0,
117
- href: h(S)(e.docsUrl),
117
+ href: g(S)(e.docsUrl),
118
118
  target: "_blank",
119
119
  rel: "noopener noreferrer",
120
120
  class: "mw-footer__docs-link"
121
121
  }, "Documentation", 8, E)) : n("", !0),
122
- e.devUrl ? (u(), r("a", {
122
+ e.devUrl ? (d(), r("a", {
123
123
  key: 1,
124
- href: h(S)(e.devUrl),
124
+ href: g(S)(e.devUrl),
125
125
  target: "_blank",
126
126
  rel: "noopener noreferrer",
127
127
  "aria-label": "Developer documentation",
@@ -138,7 +138,7 @@ var C = { class: "mw-footer__start" }, w = { class: "mw-footer__center" }, T = {
138
138
  "aria-pressed",
139
139
  "title",
140
140
  "onClick"
141
- ], j = { "aria-hidden": "true" }, M = { class: "mw-mode__label" }, N = /*#__PURE__*/ v(/* @__PURE__ */ o({
141
+ ], j = { "aria-hidden": "true" }, M = { class: "mw-mode__label" }, N = /*#__PURE__*/ y(/* @__PURE__ */ o({
142
142
  __name: "ColorModeControl",
143
143
  props: {
144
144
  modelValue: {},
@@ -159,16 +159,16 @@ var C = { class: "mw-footer__start" }, w = { class: "mw-footer__center" }, T = {
159
159
  dark: "☾",
160
160
  system: "🖵"
161
161
  };
162
- return (o, s) => (u(), r("div", k, [(u(!0), r(e, null, f(t.modes, (e) => (u(), r("button", {
162
+ return (o, s) => (d(), r("div", k, [(d(!0), r(e, null, p(t.modes, (e) => (d(), r("button", {
163
163
  key: e,
164
164
  type: "button",
165
165
  class: c(["mw-mode__btn", { "is-active": t.modelValue === e }]),
166
166
  "aria-pressed": t.modelValue === e,
167
167
  title: n[e],
168
168
  onClick: (t) => o.$emit("update:modelValue", e)
169
- }, [i("span", j, m(a[e]), 1), i("span", M, m(n[e]), 1)], 10, A))), 128))]));
169
+ }, [i("span", j, h(a[e]), 1), i("span", M, h(n[e]), 1)], 10, A))), 128))]));
170
170
  }
171
- }), [["__scopeId", "data-v-e2ea0d79"]]), P = ["type", "disabled"], F = /*#__PURE__*/ v(/* @__PURE__ */ o({
171
+ }), [["__scopeId", "data-v-e2ea0d79"]]), P = ["type", "disabled"], F = /*#__PURE__*/ y(/* @__PURE__ */ o({
172
172
  __name: "UiButton",
173
173
  props: {
174
174
  variant: { default: "primary" },
@@ -179,11 +179,11 @@ var C = { class: "mw-footer__start" }, w = { class: "mw-footer__center" }, T = {
179
179
  }
180
180
  },
181
181
  setup(e) {
182
- return (t, n) => (u(), r("button", {
182
+ return (t, n) => (d(), r("button", {
183
183
  type: e.type,
184
184
  disabled: e.disabled,
185
185
  class: c(["mw-btn", `mw-btn--${e.variant}`])
186
- }, [p(t.$slots, "default", {}, void 0, !0)], 10, P));
186
+ }, [m(t.$slots, "default", {}, void 0, !0)], 10, P));
187
187
  }
188
188
  }), [["__scopeId", "data-v-bc33cc23"]]), I = { class: "mw-card" }, L = {
189
189
  key: 0,
@@ -191,17 +191,17 @@ var C = { class: "mw-footer__start" }, w = { class: "mw-footer__center" }, T = {
191
191
  }, R = { class: "mw-card__title" }, z = { class: "mw-card__body" }, B = {
192
192
  key: 1,
193
193
  class: "mw-card__footer"
194
- }, V = /*#__PURE__*/ v(/* @__PURE__ */ o({
194
+ }, V = /*#__PURE__*/ y(/* @__PURE__ */ o({
195
195
  __name: "UiCard",
196
196
  props: { title: {} },
197
197
  setup(e) {
198
- return (t, a) => (u(), r("section", I, [
199
- e.title || t.$slots.header ? (u(), r("header", L, [p(t.$slots, "header", {}, () => [i("h3", R, m(e.title), 1)], !0)])) : n("", !0),
200
- i("div", z, [p(t.$slots, "default", {}, void 0, !0)]),
201
- t.$slots.footer ? (u(), r("footer", B, [p(t.$slots, "footer", {}, void 0, !0)])) : n("", !0)
198
+ return (t, a) => (d(), r("section", I, [
199
+ e.title || t.$slots.header ? (d(), r("header", L, [m(t.$slots, "header", {}, () => [i("h3", R, h(e.title), 1)], !0)])) : n("", !0),
200
+ i("div", z, [m(t.$slots, "default", {}, void 0, !0)]),
201
+ t.$slots.footer ? (d(), r("footer", B, [m(t.$slots, "footer", {}, void 0, !0)])) : n("", !0)
202
202
  ]));
203
203
  }
204
- }), [["__scopeId", "data-v-883f87f5"]]), H = { class: "mw-select" }, fe = /*#__PURE__*/ v(/* @__PURE__ */ o({
204
+ }), [["__scopeId", "data-v-883f87f5"]]), H = { class: "mw-select" }, fe = /*#__PURE__*/ y(/* @__PURE__ */ o({
205
205
  inheritAttrs: !1,
206
206
  __name: "UiSelect",
207
207
  props: {
@@ -210,8 +210,8 @@ var C = { class: "mw-footer__start" }, w = { class: "mw-footer__center" }, T = {
210
210
  },
211
211
  emits: ["update:modelValue"],
212
212
  setup(e) {
213
- let t = g(e, "modelValue");
214
- return (e, n) => (u(), r("div", H, [ie(i("select", s(e.$attrs, { "onUpdate:modelValue": n[0] ||= (e) => t.value = e }), [p(e.$slots, "default", {}, void 0, !0)], 16), [[ne, t.value]]), n[1] ||= i("svg", {
213
+ let t = te(e, "modelValue");
214
+ return (e, n) => (d(), r("div", H, [re(i("select", s(e.$attrs, { "onUpdate:modelValue": n[0] ||= (e) => t.value = e }), [m(e.$slots, "default", {}, void 0, !0)], 16), [[_, t.value]]), n[1] ||= i("svg", {
215
215
  class: "mw-select__chevron",
216
216
  xmlns: "http://www.w3.org/2000/svg",
217
217
  width: "12",
@@ -220,7 +220,7 @@ var C = { class: "mw-footer__start" }, w = { class: "mw-footer__center" }, T = {
220
220
  "aria-hidden": "true"
221
221
  }, [i("path", { d: "M1 1l5 5 5-5" })], -1)]));
222
222
  }
223
- }), [["__scopeId", "data-v-7e206184"]]), pe = ["role"], me = /*#__PURE__*/ v(/* @__PURE__ */ o({
223
+ }), [["__scopeId", "data-v-7e206184"]]), pe = ["role"], me = /*#__PURE__*/ y(/* @__PURE__ */ o({
224
224
  __name: "UiNotice",
225
225
  props: { type: {} },
226
226
  setup(e) {
@@ -228,16 +228,16 @@ var C = { class: "mw-footer__start" }, w = { class: "mw-footer__center" }, T = {
228
228
  if (n.type === "error") return "alert";
229
229
  if (n.type === "ok") return "status";
230
230
  });
231
- return (t, n) => (u(), r("p", {
231
+ return (t, n) => (d(), r("p", {
232
232
  class: c(["mw-notice", e.type && e.type !== "info" ? `mw-notice--${e.type}` : ""]),
233
233
  role: i.value
234
- }, [p(t.$slots, "default", {}, void 0, !0)], 10, pe));
234
+ }, [m(t.$slots, "default", {}, void 0, !0)], 10, pe));
235
235
  }
236
236
  }), [["__scopeId", "data-v-ee7fffb1"]]), he = ["disabled", "aria-current"], ge = {
237
237
  key: 0,
238
238
  class: "sidebar-item__icon",
239
239
  "aria-hidden": "true"
240
- }, _e = { class: "sidebar-item__label" }, ve = /*#__PURE__*/ v(/* @__PURE__ */ o({
240
+ }, _e = { class: "sidebar-item__label" }, ve = /*#__PURE__*/ y(/* @__PURE__ */ o({
241
241
  __name: "SidebarItem",
242
242
  props: {
243
243
  label: {},
@@ -252,14 +252,14 @@ var C = { class: "mw-footer__start" }, w = { class: "mw-footer__center" }, T = {
252
252
  }
253
253
  },
254
254
  setup(e) {
255
- return (t, a) => (u(), r("button", {
255
+ return (t, a) => (d(), r("button", {
256
256
  type: "button",
257
257
  class: c(["sidebar-item", { "is-active": e.active }]),
258
258
  disabled: e.disabled,
259
259
  "aria-current": e.active ? "page" : void 0
260
- }, [e.icon ? (u(), r("span", ge, m(e.icon), 1)) : n("", !0), i("span", _e, m(e.label), 1)], 10, he));
260
+ }, [e.icon ? (d(), r("span", ge, h(e.icon), 1)) : n("", !0), i("span", _e, h(e.label), 1)], 10, he));
261
261
  }
262
- }), [["__scopeId", "data-v-8da2d583"]]), ye = ["aria-label"], be = ["aria-current", "onClick"], xe = /*#__PURE__*/ v(/* @__PURE__ */ o({
262
+ }), [["__scopeId", "data-v-8da2d583"]]), ye = ["aria-label"], be = ["aria-current", "onClick"], xe = /*#__PURE__*/ y(/* @__PURE__ */ o({
263
263
  __name: "AppTabNav",
264
264
  props: {
265
265
  tabs: {},
@@ -269,16 +269,16 @@ var C = { class: "mw-footer__start" }, w = { class: "mw-footer__center" }, T = {
269
269
  emits: ["update:modelValue"],
270
270
  setup(t, { emit: n }) {
271
271
  let i = n;
272
- return (n, a) => (u(), r("nav", {
272
+ return (n, a) => (d(), r("nav", {
273
273
  class: "mw-tab-nav",
274
274
  "aria-label": t.ariaLabel
275
- }, [(u(!0), r(e, null, f(t.tabs, (e) => (u(), r("button", {
275
+ }, [(d(!0), r(e, null, p(t.tabs, (e) => (d(), r("button", {
276
276
  key: e.id,
277
277
  type: "button",
278
278
  class: c(["mw-tab-nav__tab", { "mw-tab-nav__tab--active": t.modelValue === e.id }]),
279
279
  "aria-current": t.modelValue === e.id ? "page" : void 0,
280
280
  onClick: (t) => i("update:modelValue", e.id)
281
- }, m(e.label), 11, be))), 128))], 8, ye));
281
+ }, h(e.label), 11, be))), 128))], 8, ye));
282
282
  }
283
283
  }), [["__scopeId", "data-v-97d31503"]]), Se = { class: "ca-root" }, Ce = ["title"], we = ["title", "aria-label"], Te = {
284
284
  key: 0,
@@ -304,7 +304,7 @@ var C = { class: "mw-footer__start" }, w = { class: "mw-footer__center" }, T = {
304
304
  "stroke-linecap": "round",
305
305
  "stroke-linejoin": "round",
306
306
  "aria-hidden": "true"
307
- }, De = /*#__PURE__*/ v(/* @__PURE__ */ o({
307
+ }, De = /*#__PURE__*/ y(/* @__PURE__ */ o({
308
308
  __name: "CopyableAddress",
309
309
  props: {
310
310
  address: {},
@@ -316,7 +316,7 @@ var C = { class: "mw-footer__start" }, w = { class: "mw-footer__center" }, T = {
316
316
  label: { default: "Copy" }
317
317
  },
318
318
  setup(e) {
319
- let n = e, o = d(!1), s = t(() => {
319
+ let n = e, o = f(!1), s = t(() => {
320
320
  if (!n.truncate) return n.address;
321
321
  let [e, t] = n.chars;
322
322
  return `${n.address.slice(0, e)}…${n.address.slice(-t)}`;
@@ -326,16 +326,16 @@ var C = { class: "mw-footer__start" }, w = { class: "mw-footer__center" }, T = {
326
326
  o.value = !1;
327
327
  }, 1500);
328
328
  }
329
- return (t, n) => (u(), r("span", Se, [i("span", {
329
+ return (t, n) => (d(), r("span", Se, [i("span", {
330
330
  class: "ca-value",
331
331
  title: e.address
332
- }, [p(t.$slots, "default", {}, () => [a(m(s.value), 1)], !0)], 8, Ce), i("button", {
332
+ }, [m(t.$slots, "default", {}, () => [a(h(s.value), 1)], !0)], 8, Ce), i("button", {
333
333
  type: "button",
334
334
  class: c(["ca-copy", { "ca-copy--copied": o.value }]),
335
335
  title: o.value ? "Copied!" : e.label,
336
336
  "aria-label": o.value ? "Copied" : e.label,
337
337
  onClick: l
338
- }, [o.value ? (u(), r("svg", Te, [...n[0] ||= [i("polyline", { points: "20 6 9 17 4 12" }, null, -1)]])) : (u(), r("svg", Ee, [...n[1] ||= [i("rect", {
338
+ }, [o.value ? (d(), r("svg", Te, [...n[0] ||= [i("polyline", { points: "20 6 9 17 4 12" }, null, -1)]])) : (d(), r("svg", Ee, [...n[1] ||= [i("rect", {
339
339
  x: "9",
340
340
  y: "9",
341
341
  width: "13",
@@ -344,7 +344,7 @@ var C = { class: "mw-footer__start" }, w = { class: "mw-footer__center" }, T = {
344
344
  ry: "2"
345
345
  }, null, -1), i("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, we)]));
346
346
  }
347
- }), [["__scopeId", "data-v-b43dabdd"]]), Oe = ["href", "title"], ke = /*#__PURE__*/ v(/* @__PURE__ */ o({
347
+ }), [["__scopeId", "data-v-b43dabdd"]]), Oe = ["href", "title"], ke = /*#__PURE__*/ y(/* @__PURE__ */ o({
348
348
  __name: "ExplorerLink",
349
349
  props: {
350
350
  href: {},
@@ -362,22 +362,66 @@ var C = { class: "mw-footer__start" }, w = { class: "mw-footer__center" }, T = {
362
362
  let [e, t] = n.chars;
363
363
  return `${n.value.slice(0, e)}…${n.value.slice(-t)}`;
364
364
  });
365
- return (t, n) => (u(), r("a", {
365
+ return (t, n) => (d(), r("a", {
366
366
  class: "el-root",
367
- href: h(S)(e.href),
367
+ href: g(S)(e.href),
368
368
  target: "_blank",
369
369
  rel: "noopener noreferrer",
370
370
  title: e.value
371
- }, [p(t.$slots, "default", {}, () => [a(m(i.value), 1)], !0)], 8, Oe));
371
+ }, [m(t.$slots, "default", {}, () => [a(h(i.value), 1)], !0)], 8, Oe));
372
+ }
373
+ }), [["__scopeId", "data-v-073d1bbe"]]), Ae = ["href", "aria-label"], je = { key: 0 }, Me = { key: 1 }, Ne = { key: 2 }, Pe = { key: 0 }, Fe = /*#__PURE__*/ y(/* @__PURE__ */ o({
374
+ __name: "CopyrightLine",
375
+ props: {
376
+ organisationName: {},
377
+ year: { default: () => (/* @__PURE__ */ new Date()).getFullYear() },
378
+ rightsStatement: { default: "all" },
379
+ symbolVariant: { default: "copyright" },
380
+ symbolHref: {},
381
+ symbolLabel: {}
382
+ },
383
+ setup(e) {
384
+ let o = e, s = t(() => o.symbolVariant), c = t(() => o.symbolHref || (s.value === "kopimi" ? "/legal/powr.broccoli-kopimi.pdf" : s.value === "copyleft" ? "/legal/copyleft.html" : "/legal/copyright.html")), l = t(() => o.symbolLabel || (s.value === "kopimi" ? "Kopimi legal notice" : s.value === "copyleft" ? "Copyleft legal notice" : "Copyright legal notice")), u = t(() => o.rightsStatement === "" ? "" : o.rightsStatement === "none" ? "No rights reserved." : o.rightsStatement === "all" || !o.rightsStatement ? "All rights reserved." : o.rightsStatement === "jam" ? "All jams preserved." : o.rightsStatement);
385
+ return (t, o) => (d(), r("small", null, [
386
+ i("a", {
387
+ href: c.value,
388
+ class: "symbol-link",
389
+ target: "_blank",
390
+ rel: "noopener noreferrer",
391
+ "aria-label": l.value
392
+ }, [s.value === "copyright" ? (d(), r("span", je, "©")) : s.value === "copyleft" ? (d(), r("span", Me, "🄯")) : s.value === "kopimi" ? (d(), r("span", Ne, [...o[0] ||= [i("svg", {
393
+ viewBox: "0 0 24 24",
394
+ width: "1em",
395
+ height: "1em",
396
+ "aria-hidden": "true",
397
+ focusable: "false",
398
+ class: "kopimi-mark"
399
+ }, [i("path", {
400
+ d: "M12 4L22 23H2Z",
401
+ fill: "none",
402
+ stroke: "currentColor",
403
+ "stroke-width": "1.5"
404
+ }), i("text", {
405
+ x: "12",
406
+ y: "18",
407
+ "text-anchor": "middle",
408
+ "dominant-baseline": "middle",
409
+ "font-family": "system-ui, sans-serif",
410
+ "font-size": "11",
411
+ fill: "currentColor"
412
+ }, " C ")], -1)]])) : n("", !0)], 8, Ae),
413
+ a(" " + h(e.year) + " " + h(e.organisationName) + ".", 1),
414
+ u.value ? (d(), r("span", Pe, h(` ${u.value}`), 1)) : n("", !0)
415
+ ]));
372
416
  }
373
- }), [["__scopeId", "data-v-073d1bbe"]]), Ae = /* @__PURE__ */ new Set([
417
+ }), [["__scopeId", "data-v-41d138d5"]]), Ie = /* @__PURE__ */ new Set([
374
418
  "operational",
375
419
  "degraded",
376
420
  "down",
377
421
  "unknown"
378
422
  ]);
379
423
  function U(e) {
380
- return typeof e == "string" && Ae.has(e);
424
+ return typeof e == "string" && Ie.has(e);
381
425
  }
382
426
  function W(e) {
383
427
  return U(e) ? e : "unknown";
@@ -385,7 +429,7 @@ function W(e) {
385
429
  function G(e) {
386
430
  return typeof e != "string" || e.trim() === "" ? "" : e.replace(/[<>&"]/g, "");
387
431
  }
388
- function je(e) {
432
+ function Le(e) {
389
433
  if (typeof e != "object" || !e) return null;
390
434
  let t = e, n = G(t.name);
391
435
  return n ? {
@@ -393,11 +437,11 @@ function je(e) {
393
437
  status: W(t.status)
394
438
  } : null;
395
439
  }
396
- function Me(e) {
440
+ function Re(e) {
397
441
  if (typeof e != "object" || !e) return null;
398
442
  let t = e, n = G(t.name);
399
443
  if (!n) return null;
400
- let r = Array.isArray(t.components) ? t.components.map(je).filter((e) => e !== null) : [];
444
+ let r = Array.isArray(t.components) ? t.components.map(Le).filter((e) => e !== null) : [];
401
445
  return {
402
446
  name: n,
403
447
  status: W(t.status),
@@ -408,7 +452,7 @@ function K(e) {
408
452
  if (typeof e != "object" || !e) return null;
409
453
  let t = e;
410
454
  if (!U(t.overall) || typeof t.generated_at != "string" || !Array.isArray(t.groups)) return null;
411
- let n = t.groups.map(Me).filter((e) => e !== null);
455
+ let n = t.groups.map(Re).filter((e) => e !== null);
412
456
  return {
413
457
  generated_at: t.generated_at,
414
458
  overall: t.overall,
@@ -417,7 +461,7 @@ function K(e) {
417
461
  }
418
462
  //#endregion
419
463
  //#region src/components/StatusWidget.vue?vue&type=script&setup=true&lang.ts
420
- var Ne = ["href", "title"], q = { class: "status-widget__label" }, Pe = /*#__PURE__*/ v(/* @__PURE__ */ o({
464
+ var ze = ["href", "title"], Be = { class: "status-widget__label" }, q = /*#__PURE__*/ y(/* @__PURE__ */ o({
421
465
  __name: "StatusWidget",
422
466
  props: {
423
467
  apiUrl: { default: "https://status.meddleware.co.uk/api/status" },
@@ -435,8 +479,8 @@ var Ne = ["href", "title"], q = { class: "status-widget__label" }, Pe = /*#__PUR
435
479
  degraded: "Degraded",
436
480
  down: "Major outage",
437
481
  unknown: "Status unknown"
438
- }, o = d("ok"), s = d("All systems operational"), l = null;
439
- async function f() {
482
+ }, o = f("ok"), s = f("All systems operational"), l = null;
483
+ async function p() {
440
484
  try {
441
485
  let e = await fetch(t.apiUrl);
442
486
  if (!e.ok) throw Error(`HTTP ${e.status}`);
@@ -447,12 +491,12 @@ var Ne = ["href", "title"], q = { class: "status-widget__label" }, Pe = /*#__PUR
447
491
  o.value = "error", s.value = "Status unavailable";
448
492
  }
449
493
  }
450
- return ee(() => {
451
- f(), l = setInterval(f, t.pollInterval);
452
- }), te(() => {
494
+ return u(() => {
495
+ p(), l = setInterval(p, t.pollInterval);
496
+ }), ee(() => {
453
497
  l !== null && clearInterval(l);
454
- }), (t, n) => (u(), r("a", {
455
- href: h(S)(e.href),
498
+ }), (t, n) => (d(), r("a", {
499
+ href: g(S)(e.href),
456
500
  target: "_blank",
457
501
  rel: "noopener noreferrer",
458
502
  class: c(["status-widget", `status-widget--${o.value}`]),
@@ -460,29 +504,29 @@ var Ne = ["href", "title"], q = { class: "status-widget__label" }, Pe = /*#__PUR
460
504
  }, [n[0] ||= i("span", {
461
505
  class: "status-widget__dot",
462
506
  "aria-hidden": "true"
463
- }, null, -1), i("span", q, m(s.value), 1)], 10, Ne));
507
+ }, null, -1), i("span", Be, h(s.value), 1)], 10, ze));
464
508
  }
465
509
  }), [["__scopeId", "data-v-6436368e"]]), J = {
466
510
  mainnet: "https://suivision.xyz",
467
511
  testnet: "https://testnet.suivision.xyz",
468
512
  devnet: "https://devnet.suivision.xyz"
469
513
  };
470
- function Fe(e, t, n = "testnet") {
514
+ function Ve(e, t, n = "testnet") {
471
515
  return `${J[n] ?? J.testnet}/${e}/${t}`;
472
516
  }
473
517
  //#endregion
474
518
  //#region src/composables/useColorMode.ts
475
- var Y = "mw-color-mode", X = d("system"), Z = !1;
476
- function Ie() {
519
+ var Y = "mw-color-mode", X = f("system"), Z = !1;
520
+ function He() {
477
521
  return typeof window < "u" && typeof window.matchMedia == "function" && window.matchMedia("(prefers-color-scheme: dark)").matches;
478
522
  }
479
523
  function Q(e) {
480
- return e === "dark" || e === "system" && Ie();
524
+ return e === "dark" || e === "system" && He();
481
525
  }
482
526
  function $(e) {
483
527
  typeof document < "u" && document.documentElement.setAttribute("data-theme", Q(e) ? "dark" : "light");
484
528
  }
485
- function Le(e = "system") {
529
+ function Ue(e = "system") {
486
530
  if (!Z) {
487
531
  Z = !0;
488
532
  let t = null;
@@ -491,7 +535,7 @@ function Le(e = "system") {
491
535
  } catch {}
492
536
  X.value = t ?? e, $(X.value), typeof window < "u" && typeof window.matchMedia == "function" && window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change", () => {
493
537
  X.value === "system" && $("system");
494
- }), re(X, (e) => {
538
+ }), ne(X, (e) => {
495
539
  $(e);
496
540
  try {
497
541
  typeof localStorage < "u" && localStorage.setItem(Y, e);
@@ -513,10 +557,10 @@ function Le(e = "system") {
513
557
  }
514
558
  //#endregion
515
559
  //#region src/composables/useSeason.ts
516
- function Re() {
560
+ function We() {
517
561
  if (typeof document > "u") return;
518
562
  let e = (/* @__PURE__ */ new Date()).getMonth(), t = e >= 2 && e <= 4 ? "spring" : e >= 5 && e <= 7 ? "summer" : e >= 8 && e <= 10 ? "autumn" : "winter";
519
563
  document.documentElement.dataset.season = t;
520
564
  }
521
565
  //#endregion
522
- export { O as AppFooter, le as AppHeader, x as AppSidebar, xe as AppTabNav, N as ColorModeControl, De as CopyableAddress, ke as ExplorerLink, ve as SidebarItem, Pe as StatusWidget, F as UiButton, V as UiCard, me as UiNotice, fe as UiSelect, U as isStatusLevel, K as parseSnapshot, S as safeHref, Fe as suiExplorerUrl, Le as useColorMode, Re as useSeason };
566
+ export { O as AppFooter, ce as AppHeader, x as AppSidebar, xe as AppTabNav, N as ColorModeControl, De as CopyableAddress, Fe as CopyrightLine, ke as ExplorerLink, ve as SidebarItem, q as StatusWidget, F as UiButton, V as UiCard, me as UiNotice, fe as UiSelect, U as isStatusLevel, K as parseSnapshot, S as safeHref, Ve as suiExplorerUrl, Ue as useColorMode, We as useSeason };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@meddleware/ui",
3
- "version": "0.1.15",
3
+ "version": "0.1.16",
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",