diff --git a/public/js/admin-app-form.js b/public/js/admin-app-form.js index ff9eaeb..80e432f 100644 --- a/public/js/admin-app-form.js +++ b/public/js/admin-app-form.js @@ -1,4 +1,4 @@ -import { clr, el, inp as inpById, q as qSel, qa, qi, tgt } from '/js/utils.js?v=eadafbcd'; +import { clr, el, inp as inpById, q as qSel, qa, qi, tgt } from '/js/utils.js?v=7d0a2f7d'; import { html, raw, setHtml } from '/js/html.js?v=c71f8903'; import { loadLocalIcons, resolveIcon, iconChain, cdnIconRef, splitIconRef } from '/js/icons.js?v=9c8c550c'; import { state } from '/js/admin-state.js?v=831e219e'; @@ -21,13 +21,13 @@ import { reveal, setTogDisabled, swapContent, -} from '/js/admin-shared.js?v=d2e8b6dc'; -import { createListbox } from '/js/listbox.js?v=f057351d'; +} from '/js/admin-shared.js?v=9d789975'; +import { createListbox } from '/js/listbox.js?v=c14ab216'; import { MAX_LABELS } from '/js/badge-logic.js?v=9e6d9d4b'; -import { renderColorControl, BADGE_DEFAULT } from '/js/admin-color-control.js?v=e963853a'; +import { renderColorControl, BADGE_DEFAULT } from '/js/admin-color-control.js?v=15d6a495'; import { badgeErrorAdvice, TONE } from '/js/admin-error.js?v=e4ea7820'; import { fluidHoverClear, fluidHoverKb } from '/js/fluid-hover.js?v=cb886e86'; -import { iconSvg } from '/js/icon-set.js?v=08b74a28'; +import { iconSvg } from '/js/icon-set.js?v=34af798f'; export function buildFolderForm(body, item) { const children = item?.children || []; diff --git a/public/js/admin-auth.js b/public/js/admin-auth.js index bf26807..f728468 100644 --- a/public/js/admin-auth.js +++ b/public/js/admin-auth.js @@ -1,7 +1,7 @@ -import { apiGet, apiPost } from '/js/admin-shared.js?v=d2e8b6dc'; +import { apiGet, apiPost } from '/js/admin-shared.js?v=9d789975'; import { t } from '/js/i18n.js?v=1f1ea9c1'; import { pwStrength } from '/js/password-strength.js?v=42f45ac7'; -import { el, inp as inpById, qa } from '/js/utils.js?v=eadafbcd'; +import { el, inp as inpById, qa } from '/js/utils.js?v=7d0a2f7d'; export async function checkAuth(onLogin) { try { diff --git a/public/js/admin-color-control.js b/public/js/admin-color-control.js index 18a7e73..8906f92 100644 --- a/public/js/admin-color-control.js +++ b/public/js/admin-color-control.js @@ -1,8 +1,8 @@ -import { PE_SVG, initInlineEdit, toast, reveal } from '/js/admin-shared.js?v=d2e8b6dc'; +import { PE_SVG, initInlineEdit, toast, reveal } from '/js/admin-shared.js?v=9d789975'; import { t } from '/js/i18n.js?v=1f1ea9c1'; import { html, raw, setHtml } from '/js/html.js?v=c71f8903'; -import { qa, q } from '/js/utils.js?v=eadafbcd'; -import { iconSvg } from '/js/icon-set.js?v=08b74a28'; +import { qa, q } from '/js/utils.js?v=7d0a2f7d'; +import { iconSvg } from '/js/icon-set.js?v=34af798f'; import { HUE_NAMES, ROLE_NAMES, TILE_KEYWORDS, pageTheme, tileColor } from '/js/palette.js?v=3fb8ae43'; const CC_SWATCHES = ['#1c1c1e', '#8e8e93', '#f2f2f7', '#ff393c', '#ffcd00', '#35c759', '#0289ff', '#cb30df']; diff --git a/public/js/admin-drag.js b/public/js/admin-drag.js index b624a1a..5150905 100644 --- a/public/js/admin-drag.js +++ b/public/js/admin-drag.js @@ -12,7 +12,7 @@ import { applyDrop, canJoinFolder, folderRowZone } from '/js/admin-drag-logic.js?v=6b767e76'; import { state } from '/js/admin-state.js?v=831e219e'; import { snapshotItems } from '/js/admin-save-logic.js?v=60a82419'; -import { qa } from '/js/utils.js?v=eadafbcd'; +import { qa } from '/js/utils.js?v=7d0a2f7d'; /** @type {(before: unknown) => void} */ let _save = () => {}; diff --git a/public/js/admin-list.js b/public/js/admin-list.js index 9b7e806..29357a8 100644 --- a/public/js/admin-list.js +++ b/public/js/admin-list.js @@ -14,14 +14,14 @@ import { collapsedFolders, filter, state } from '/js/admin-state.js?v=831e219e'; import { snapshotItems } from '/js/admin-save-logic.js?v=60a82419'; import { reorderItems } from '/js/admin-logic.js?v=cbb7417d'; -import { initDrag, wireRowDrag } from '/js/admin-drag.js?v=36006b2b'; -import { paintIcon } from '/js/admin-shared.js?v=d2e8b6dc'; -import { clr, el, qa, setUserText } from '/js/utils.js?v=eadafbcd'; +import { initDrag, wireRowDrag } from '/js/admin-drag.js?v=e31d2128'; +import { paintIcon } from '/js/admin-shared.js?v=9d789975'; +import { clr, el, qa, setUserText } from '/js/utils.js?v=7d0a2f7d'; import { html, raw, setHtml } from '/js/html.js?v=c71f8903'; import { t } from '/js/i18n.js?v=1f1ea9c1'; -import { sizeLabel } from '/js/admin-widget-form.js?v=fd3dcc6c'; -import { widgetGlyph } from '/js/widget-glyphs.js?v=e1d968ad'; -import { iconSvg } from '/js/icon-set.js?v=08b74a28'; +import { sizeLabel } from '/js/admin-widget-form.js?v=f9235794'; +import { widgetGlyph } from '/js/widget-glyphs.js?v=648cc374'; +import { iconSvg } from '/js/icon-set.js?v=34af798f'; /** @type {{ openModal: (idx: number|null) => void, openFolderPicker: (appId: string|null, targetFolderId?: string|null) => void, diff --git a/public/js/admin-settings.js b/public/js/admin-settings.js index 548323a..60b95e6 100644 --- a/public/js/admin-settings.js +++ b/public/js/admin-settings.js @@ -1,4 +1,4 @@ -import { toast, apiGet, apiPost, reveal, swapContent } from '/js/admin-shared.js?v=d2e8b6dc'; +import { toast, apiGet, apiPost, reveal, swapContent } from '/js/admin-shared.js?v=9d789975'; import { pwStrength } from '/js/password-strength.js?v=42f45ac7'; import { t } from '/js/i18n.js?v=1f1ea9c1'; import { @@ -9,9 +9,9 @@ import { BLOCK, } from '/js/admin-logic.js?v=cbb7417d'; import { confirmText } from '/js/modal.js?v=11fa1eff'; -import { el, inp, setUserText } from '/js/utils.js?v=eadafbcd'; -import { renderColorControl } from '/js/admin-color-control.js?v=e963853a'; -import { BACKDROP } from '/js/background.js?v=175d9a7f'; +import { el, inp, setUserText } from '/js/utils.js?v=7d0a2f7d'; +import { renderColorControl } from '/js/admin-color-control.js?v=15d6a495'; +import { BACKDROP } from '/js/background.js?v=92d3f3c2'; /* Mirrors the server's rule: auth cannot be switched on with no password. */ let _passwordSet = false; diff --git a/public/js/admin-shared.js b/public/js/admin-shared.js index 32fc5f0..a22c81b 100644 --- a/public/js/admin-shared.js +++ b/public/js/admin-shared.js @@ -1,9 +1,9 @@ /* Stateless helpers shared by the admin modules. Mutable state stays out. */ import { recoversSession, toastHoldMs } from '/js/admin-logic.js?v=cbb7417d'; -import { el, q } from '/js/utils.js?v=eadafbcd'; +import { el, q } from '/js/utils.js?v=7d0a2f7d'; import { t } from '/js/i18n.js?v=1f1ea9c1'; import { iconChain } from '/js/icons.js?v=9c8c550c'; -import { iconSvg } from '/js/icon-set.js?v=08b74a28'; +import { iconSvg } from '/js/icon-set.js?v=34af798f'; export const API = ''; diff --git a/public/js/admin-widget-form.js b/public/js/admin-widget-form.js index efc1580..e48a3a7 100644 --- a/public/js/admin-widget-form.js +++ b/public/js/admin-widget-form.js @@ -1,12 +1,12 @@ import { state } from '/js/admin-state.js?v=831e219e'; -import { PE_SVG, initInlineEdit, swapContent } from '/js/admin-shared.js?v=d2e8b6dc'; -import { createListbox } from '/js/listbox.js?v=f057351d'; -import { renderWidgetConfigForm } from '/js/widget-config-form.js?v=73604add'; +import { PE_SVG, initInlineEdit, swapContent } from '/js/admin-shared.js?v=9d789975'; +import { createListbox } from '/js/listbox.js?v=c14ab216'; +import { renderWidgetConfigForm } from '/js/widget-config-form.js?v=a57a9501'; import { html, raw, setHtml } from '/js/html.js?v=c71f8903'; import { sizesForView, widgetConfigMode, rejectionLines, carriesTypedValues } from '/js/admin-logic.js?v=cbb7417d'; import { t } from '/js/i18n.js?v=1f1ea9c1'; -import { q, qi, qa } from '/js/utils.js?v=eadafbcd'; -import { iconSvg } from '/js/icon-set.js?v=08b74a28'; +import { q, qi, qa } from '/js/utils.js?v=7d0a2f7d'; +import { iconSvg } from '/js/icon-set.js?v=34af798f'; const SIZES_WITH_ICONS = new Set(['small', 'medium', 'large', 'xlarge']); diff --git a/public/js/admin.js b/public/js/admin.js index 564171f..a353a07 100644 --- a/public/js/admin.js +++ b/public/js/admin.js @@ -1,6 +1,6 @@ -import { buildAppForm, buildFolderForm, captureActLabels, serializeKvRows } from '/js/admin-app-form.js?v=58e2b685'; -import { checkAuth, requireLogin, wirePasswordStrength } from '/js/admin-auth.js?v=2bd61e6c'; -import { initList, render, syncFilterUI } from '/js/admin-list.js?v=4e82ea4a'; +import { buildAppForm, buildFolderForm, captureActLabels, serializeKvRows } from '/js/admin-app-form.js?v=7604b201'; +import { checkAuth, requireLogin, wirePasswordStrength } from '/js/admin-auth.js?v=1d822df2'; +import { initList, render, syncFilterUI } from '/js/admin-list.js?v=fe5e00b2'; import { resolveAdminSection } from '/js/admin-logic.js?v=cbb7417d'; import { buildAppItem, @@ -10,7 +10,7 @@ import { snapshotItems, upsertItem, } from '/js/admin-save-logic.js?v=60a82419'; -import { loadSettings, settingsDirty, showBgFields, showWallpaperFile } from '/js/admin-settings.js?v=23cfe19f'; +import { loadSettings, settingsDirty, showBgFields, showWallpaperFile } from '/js/admin-settings.js?v=9ed2fd03'; import { apiGet, apiPost, @@ -19,16 +19,16 @@ import { reveal, setReauthHandler, toast, -} from '/js/admin-shared.js?v=d2e8b6dc'; +} from '/js/admin-shared.js?v=9d789975'; import { collapsedFolders, filter, state } from '/js/admin-state.js?v=831e219e'; -import { buildWidgetForm } from '/js/admin-widget-form.js?v=fd3dcc6c'; +import { buildWidgetForm } from '/js/admin-widget-form.js?v=f9235794'; import { initFluidHover } from '/js/fluid-hover.js?v=cb886e86'; import { initGlideSelect, syncGlideSelect } from '/js/glide-select.js?v=8b39e9d0'; -import { createListbox } from '/js/listbox.js?v=f057351d'; +import { createListbox } from '/js/listbox.js?v=c14ab216'; import { html, raw, setHtml } from '/js/html.js?v=c71f8903'; import { initI18n, LANGUAGES, t } from '/js/i18n.js?v=1f1ea9c1'; import { loadLocalIcons } from '/js/icons.js?v=9c8c550c'; -import { ensureSprite, iconSvg } from '/js/icon-set.js?v=08b74a28'; +import { ensureSprite, iconSvg } from '/js/icon-set.js?v=34af798f'; import { clearSkipTls, convert, @@ -49,8 +49,8 @@ import { watchSystemTheme, writeMode, } from '/js/theme.js?v=eeafa4b5'; -import { el, inp, q, qa, clr, setUserText, tgt } from '/js/utils.js?v=eadafbcd'; -import { applyBackground, resolveBackground } from '/js/background.js?v=175d9a7f'; +import { el, inp, q, qa, clr, setUserText, tgt } from '/js/utils.js?v=7d0a2f7d'; +import { applyBackground, resolveBackground } from '/js/background.js?v=92d3f3c2'; import { parseYamlTolerant, YamlLiteError } from '/js/yaml-lite.js?v=6ebb564c'; ensureSprite(); diff --git a/public/js/background.js b/public/js/background.js index b76503d..0e32251 100644 --- a/public/js/background.js +++ b/public/js/background.js @@ -1,5 +1,5 @@ // @ts-check -import { cssColor, sanitizeCssUrl } from '/js/utils.js?v=eadafbcd'; +import { cssColor, sanitizeCssUrl } from '/js/utils.js?v=7d0a2f7d'; import { loadWallpaper, saveWallpaper } from '/js/wallpaper-cache.js?v=c5f8a3e6'; export const BACKDROP = '#0d1117'; diff --git a/public/js/brand-mark.js b/public/js/brand-mark.js deleted file mode 100644 index a82b167..0000000 --- a/public/js/brand-mark.js +++ /dev/null @@ -1,6 +0,0 @@ -// @ts-check -/* Do not move this to /icons. That path is a user volume. A file of the same - name left there shadows the bundled artwork. */ - -export const BRAND_MARK = - 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDI0IDEwMjQiIHdpZHRoPSIxMDI0IiBoZWlnaHQ9IjEwMjQiPgoKPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNjQuNiw3My40KSBzY2FsZSgwLjg0NikiPjxwYXRoIGZpbGw9IiMwMEQyRTAiIGQ9Ik01MTIgMTA1LjVBNDA2LjUgNDA2LjUgMCAwIDEgODY0LjA0IDcxNS4yNUE3NS41IDc1LjUgMCAwIDEgNzMzLjI3IDYzOS43NUEyNTUuNSAyNTUuNSAwIDAgMCA1MTIgMjU2LjVBNzUuNSA3NS41IDAgMCAxIDUxMiAxMDUuNVoiLz48cGF0aCBmaWxsPSIjRjJGMkY3IiBkPSJNNTUxLjUgNDQzLjU4TDI2NC44NSAyNzguMDhBNzkgNzkgMCAwIDAgMTg1Ljg1IDQxNC45Mkw0NzIuNSA1ODAuNDJBNzkgNzkgMCAwIDAgNTUxLjUgNDQzLjU4Wk00NzIuNSA0NDMuNThMMTg1Ljg1IDYwOS4wOEE3OSA3OSAwIDAgMCAyNjQuODUgNzQ1LjkyTDU1MS41IDU4MC40MkE3OSA3OSAwIDAgMCA0NzIuNSA0NDMuNThaTTQzMyA1MTJMNDMzIDg0M0E3OSA3OSAwIDAgMCA1OTEgODQzTDU5MSA1MTJBNzkgNzkgMCAwIDAgNDMzIDUxMloiLz48L2c+Cjwvc3ZnPgo='; diff --git a/public/js/dashboard.js b/public/js/dashboard.js index aeb9726..bad2a2c 100644 --- a/public/js/dashboard.js +++ b/public/js/dashboard.js @@ -24,9 +24,9 @@ import { setUserText, teardownWidgets, titleWhenTruncated, -} from '/js/utils.js?v=eadafbcd'; +} from '/js/utils.js?v=7d0a2f7d'; import { initFluidHover } from '/js/fluid-hover.js?v=cb886e86'; -import { initSpotlight } from '/js/spotlight.js?v=9056fab5'; +import { initSpotlight } from '/js/spotlight.js?v=a6f5775a'; import { html, setHtml, raw } from '/js/html.js?v=c71f8903'; import { initI18n, t, currentLang } from '/js/i18n.js?v=1f1ea9c1'; import { pwStrength, passwordMismatch } from '/js/password-strength.js?v=42f45ac7'; @@ -40,7 +40,7 @@ import { buildMobile, resetMobileChrome, mkFolderGlyph, -} from '/js/ui.js?v=cdfe7685'; +} from '/js/ui.js?v=67ae7e42'; import { badgeMinimum, badgeSignature, computeBadgeVisual, readBadgeUpdate } from '/js/badge-logic.js?v=9e6d9d4b'; import { formatNumber } from '/js/format-number.js?v=4a5ccef4'; import { closeBadgePopover, wireBadgePopover } from '/js/badge-popover.js?v=aa52b1a3'; @@ -52,12 +52,12 @@ import { landingAfterSetup, restorePage, } from '/js/dashboard-logic.js?v=0d519f8b'; -import { applyBackground, BACKDROP, resolveBackground } from '/js/background.js?v=175d9a7f'; +import { applyBackground, BACKDROP, resolveBackground } from '/js/background.js?v=92d3f3c2'; import { jitter } from '/js/jitter.js?v=4eeef4c9'; import { isMobileLayout, onLayoutChange } from '/js/layout.js?v=e9f4b607'; import { startWakeLock } from '/js/wake-lock.js?v=6b9591cf'; import { applyLabelTones, loadSamplingImage, sampleImage, toneForColor } from '/js/label-contrast.js?v=c1ac6fb8'; -import { ensureSprite, iconSvg } from '/js/icon-set.js?v=08b74a28'; +import { ensureSprite, iconSvg } from '/js/icon-set.js?v=34af798f'; import { pageTheme, paletteColor } from '/js/palette.js?v=3fb8ae43'; import { THEME_KEY, applyTheme, prefersDark, readMode, resolveTheme } from '/js/theme.js?v=eeafa4b5'; diff --git a/public/js/icon-set.js b/public/js/icon-set.js index c1c6d8a..c1c5676 100644 --- a/public/js/icon-set.js +++ b/public/js/icon-set.js @@ -112,7 +112,6 @@ const TOGGLES = { }; const CLOUD = 'M6 20h10a4 4 0 0 0 0-8 5 5 0 0 0-9.6 1.2A3.5 3.5 0 0 0 6 20z'; -/* Keep the fractions. Whole units drift from the logo files. */ function logoIcon() { const f = n => +n.toFixed(3); const k = 24 / 1024; diff --git a/public/js/listbox.js b/public/js/listbox.js index 4f4f102..80638fd 100644 --- a/public/js/listbox.js +++ b/public/js/listbox.js @@ -9,8 +9,8 @@ import { nextActiveIndex } from '/js/admin-logic.js?v=cbb7417d'; import { fluidHoverClear, fluidHoverKb } from '/js/fluid-hover.js?v=cb886e86'; import { html, raw, setHtml } from '/js/html.js?v=c71f8903'; -import { qa } from '/js/utils.js?v=eadafbcd'; -import { iconSvg } from '/js/icon-set.js?v=08b74a28'; +import { qa } from '/js/utils.js?v=7d0a2f7d'; +import { iconSvg } from '/js/icon-set.js?v=34af798f'; const CHEV = iconSvg('chevrons', 22, 'solid', 'dd-chev'); diff --git a/public/js/spotlight.js b/public/js/spotlight.js index edd3ac5..59033dd 100644 --- a/public/js/spotlight.js +++ b/public/js/spotlight.js @@ -1,5 +1,5 @@ import { fluidHoverClear, fluidHoverKb } from '/js/fluid-hover.js?v=cb886e86'; -import { mk, clr, el, inp as inpById, q, qa, setUserText } from '/js/utils.js?v=eadafbcd'; +import { mk, clr, el, inp as inpById, q, qa, setUserText } from '/js/utils.js?v=7d0a2f7d'; import { t } from '/js/i18n.js?v=1f1ea9c1'; /* Attached to the window so a re-open can undo the previous one. */ diff --git a/public/js/ui.js b/public/js/ui.js index 810ff72..de5392c 100644 --- a/public/js/ui.js +++ b/public/js/ui.js @@ -14,7 +14,7 @@ import { q, qa, setUserText, -} from '/js/utils.js?v=eadafbcd'; +} from '/js/utils.js?v=7d0a2f7d'; import { t, currentLang } from '/js/i18n.js?v=1f1ea9c1'; import { toneForColor } from '/js/label-contrast.js?v=c1ac6fb8'; import { mobileMetrics, gridColumnWidth, gridCellCount } from '/js/mobile-metrics.js?v=349f4300'; diff --git a/public/js/utils.js b/public/js/utils.js index 7a94913..b96120b 100644 --- a/public/js/utils.js +++ b/public/js/utils.js @@ -3,7 +3,6 @@ import { toneForColor } from '/js/label-contrast.js?v=c1ac6fb8'; import { SETTINGS_ICON, SETTINGS_ICON_LIGHT } from '/js/settings-icon.js?v=4079b66a'; import { mkGlassRim } from '/js/glass-rim.js?v=3faec233'; import { smoothRectPath } from '/js/smooth-corner.js?v=b7dda7e1'; -import { BRAND_MARK } from '/js/brand-mark.js?v=e363e477'; import { t } from '/js/i18n.js?v=1f1ea9c1'; import { pageTheme, tileColor } from '/js/palette.js?v=3fb8ae43'; @@ -436,8 +435,13 @@ export function renderEmptyState(items) { const box = mk('div'); box.className = 'empty-state'; - const mark = mk('img', { src: BRAND_MARK, alt: '' }); - mark.className = 'empty-state-mark'; + const mark = document.createElementNS('http://www.w3.org/2000/svg', 'svg'); + mark.setAttribute('class', 'sy-icon empty-state-mark'); + mark.setAttribute('aria-hidden', 'true'); + mark.setAttribute('focusable', 'false'); + const use = document.createElementNS('http://www.w3.org/2000/svg', 'use'); + use.setAttribute('href', '#sy-solid-logo'); + mark.append(use); const title = mk('h2'); title.className = 'empty-state-title'; title.textContent = t('home.emptyTitle'); diff --git a/public/js/widget-config-form.js b/public/js/widget-config-form.js index e8c36ec..3616477 100644 --- a/public/js/widget-config-form.js +++ b/public/js/widget-config-form.js @@ -3,9 +3,9 @@ import { t } from '/js/i18n.js?v=1f1ea9c1'; import { html, raw, setHtml } from '/js/html.js?v=c71f8903'; -import { reveal, wireInlineEdit } from '/js/admin-shared.js?v=d2e8b6dc'; -import { createListbox } from '/js/listbox.js?v=f057351d'; -import { renderColorControl } from '/js/admin-color-control.js?v=e963853a'; +import { reveal, wireInlineEdit } from '/js/admin-shared.js?v=9d789975'; +import { createListbox } from '/js/listbox.js?v=c14ab216'; +import { renderColorControl } from '/js/admin-color-control.js?v=15d6a495'; import { seedCarried, applyOptionSet, @@ -15,7 +15,7 @@ import { visibleFieldFlags, } from '/js/admin-logic.js?v=cbb7417d'; import { optionsErrorAdvice, TONE } from '/js/admin-error.js?v=e4ea7820'; -import { qi } from '/js/utils.js?v=eadafbcd'; +import { qi } from '/js/utils.js?v=7d0a2f7d'; const PE = ''; diff --git a/public/js/widget-glyphs.js b/public/js/widget-glyphs.js index 94382e1..9cfd635 100644 --- a/public/js/widget-glyphs.js +++ b/public/js/widget-glyphs.js @@ -1,5 +1,5 @@ // @ts-check -import { iconSvg } from '/js/icon-set.js?v=08b74a28'; +import { iconSvg } from '/js/icon-set.js?v=34af798f'; /* Keys are the glyph names in widget.json files. Renaming one breaks that widget. */ /** @type {Record} */