From 125360e3dad70a728e6c3ba805482ad203826935 Mon Sep 17 00:00:00 2001 From: Hannes Hertach Date: Tue, 30 Jun 2026 17:31:28 +0200 Subject: [PATCH 01/12] fix: make sheet block compatible with nx2 Switch from nx-v1-only utility paths (utils/styles.js, utils/svg.js, utils/script.js) to nx2-compatible imports via utils/utils.js, with a local inlinesvg fallback for icon loading. Co-Authored-By: Claude Opus 4.7 --- blocks/sheet/da-sheet-preview.js | 4 ++-- blocks/sheet/da-sheet-tabs.js | 8 ++++---- blocks/sheet/da-version-review.js | 4 ++-- blocks/sheet/sheet.js | 4 ++-- blocks/sheet/utils/index.js | 8 ++++++-- 5 files changed, 16 insertions(+), 12 deletions(-) diff --git a/blocks/sheet/da-sheet-preview.js b/blocks/sheet/da-sheet-preview.js index 500dda47..adecdadb 100644 --- a/blocks/sheet/da-sheet-preview.js +++ b/blocks/sheet/da-sheet-preview.js @@ -2,9 +2,9 @@ import { LitElement, html, nothing } from 'da-lit'; import { getNx } from '../../scripts/utils.js'; import getPathDetails from '../shared/pathDetails.js'; -const { default: getStyle } = await import(`${getNx()}/utils/styles.js`); +const { loadStyle } = await import(`${getNx()}/utils/utils.js`); -const style = await getStyle('/blocks/sheet/da-sheet-preview.css'); +const style = await loadStyle('/blocks/sheet/da-sheet-preview.css'); class DaSheetPreview extends LitElement { static properties = { diff --git a/blocks/sheet/da-sheet-tabs.js b/blocks/sheet/da-sheet-tabs.js index 73f56f06..dec6adca 100644 --- a/blocks/sheet/da-sheet-tabs.js +++ b/blocks/sheet/da-sheet-tabs.js @@ -1,11 +1,11 @@ import { LitElement, html, nothing } from 'da-lit'; import { getNx } from '../../scripts/utils.js'; +import inlinesvg from '../shared/inlinesvg.js'; import { handleSave } from './utils/utils.js'; -const { default: getStyle } = await import(`${getNx()}/utils/styles.js`); -const { default: getSvg } = await import(`${getNx()}/utils/svg.js`); +const { loadStyle } = await import(`${getNx()}/utils/utils.js`); -const style = await getStyle(import.meta.url); +const style = await loadStyle(import.meta.url); const SHEET_TEMPLATE = { minDimensions: [20, 20], sheetName: 'data' }; const ICONS = [ @@ -31,7 +31,7 @@ class DaSheetTabs extends LitElement { connectedCallback() { super.connectedCallback(); this.shadowRoot.adoptedStyleSheets = [style]; - getSvg({ parent: this.shadowRoot, paths: ICONS }); + inlinesvg({ parent: this.shadowRoot, paths: ICONS }); this._names = this.getNames(); this.showSheet(0); this.getPermissions(); diff --git a/blocks/sheet/da-version-review.js b/blocks/sheet/da-version-review.js index 1c20e450..196a77d8 100644 --- a/blocks/sheet/da-version-review.js +++ b/blocks/sheet/da-version-review.js @@ -1,9 +1,9 @@ import { LitElement, html } from 'da-lit'; import { getNx } from '../../scripts/utils.js'; -const { default: getStyle } = await import(`${getNx()}/utils/styles.js`); +const { loadStyle } = await import(`${getNx()}/utils/utils.js`); -const style = await getStyle('/blocks/sheet/da-version-review.css'); +const style = await loadStyle('/blocks/sheet/da-version-review.css'); class DaVersionReview extends LitElement { static properties = { data: { type: Object } }; diff --git a/blocks/sheet/sheet.js b/blocks/sheet/sheet.js index 49bae136..022af682 100644 --- a/blocks/sheet/sheet.js +++ b/blocks/sheet/sheet.js @@ -6,9 +6,9 @@ import { getData } from './utils/index.js'; import { staleCheck, showDaDialog, restoreVersion } from './utils/utils.js'; import { convertSheets } from '../edit/utils/helpers.js'; -const { default: getStyle } = await import(`${getNx()}/utils/styles.js`); +const { loadStyle } = await import(`${getNx()}/utils/utils.js`); -const style = await getStyle('/blocks/sheet/da-sheet-panes.css'); +const style = await loadStyle('/blocks/sheet/da-sheet-panes.css'); class DaSheetPanes extends LitElement { static properties = { diff --git a/blocks/sheet/utils/index.js b/blocks/sheet/utils/index.js index 5547505b..285d9cca 100644 --- a/blocks/sheet/utils/index.js +++ b/blocks/sheet/utils/index.js @@ -2,8 +2,12 @@ import { getNx, getNx2Api, nxJS } from '../../../scripts/utils.js'; import { handleSave, staleCheck } from './utils.js'; import '../da-sheet-tabs.js'; -const { loadStyle } = await import(`${getNx()}${nxJS}`); -const loadScript = (await import(`${getNx()}/utils/script.js`)).default; +const nx = getNx(); +const isNx2 = nx.endsWith('/nx2'); +const { loadStyle } = await import(`${nx}${nxJS}`); +const loadScript = isNx2 + ? (await import(`${nx}/utils/utils.js`)).loadScript + : (await import(`${nx}/utils/script.js`)).default; const SHEET_TEMPLATE = { minDimensions: [20, 20], sheetName: 'data' }; From f72b0a76667755bff70756349eaa34a3fd114746 Mon Sep 17 00:00:00 2001 From: Hannes Hertach Date: Tue, 30 Jun 2026 18:29:46 +0200 Subject: [PATCH 02/12] fix: load sheet block CSS and align variables for nx2 nx2's loadBlock no longer auto-mounts the block stylesheet, so sheet.js now adopts sheet.css onto document.adoptedStyleSheets explicitly. Apply the same pattern for the jspreadsheet stylesheet in utils/index.js. Update --spacing-* and --body-font-family references to fall through to nx2's --s2-* equivalents while still resolving in nx v1. Co-Authored-By: Claude Opus 4.7 --- blocks/sheet/da-sheet-preview.css | 2 +- blocks/sheet/da-sheet-tabs.css | 8 ++++---- blocks/sheet/sheet.css | 2 +- blocks/sheet/sheet.js | 3 +++ blocks/sheet/utils/index.js | 12 +++++++++--- 5 files changed, 18 insertions(+), 9 deletions(-) diff --git a/blocks/sheet/da-sheet-preview.css b/blocks/sheet/da-sheet-preview.css index 37859987..6fbc333d 100644 --- a/blocks/sheet/da-sheet-preview.css +++ b/blocks/sheet/da-sheet-preview.css @@ -12,7 +12,7 @@ box-shadow: rgb(181 181 181) 0 0 20px 0; border-radius: 12px; height: 500px; - padding: var(--spacing-200); + padding: var(--s2-spacing-200, var(--spacing-200)); overflow: scroll; box-sizing: border-box; } diff --git a/blocks/sheet/da-sheet-tabs.css b/blocks/sheet/da-sheet-tabs.css index 76cc3d94..02da4b1c 100644 --- a/blocks/sheet/da-sheet-tabs.css +++ b/blocks/sheet/da-sheet-tabs.css @@ -1,7 +1,7 @@ :host { display: flex; - gap: var(--spacing-200); - margin-bottom: var(--spacing-200); + gap: var(--s2-spacing-200, var(--spacing-200)); + margin-bottom: var(--s2-spacing-200, var(--spacing-200)); flex-wrap: wrap; } @@ -14,7 +14,7 @@ ul { padding: 0; list-style: none; display: flex; - gap: var(--spacing-200); + gap: var(--s2-spacing-200, var(--spacing-200)); flex-wrap: wrap; } @@ -38,7 +38,7 @@ input { button, input[type="text"] { - font-family: var(--body-font-family); + font-family: var(--s2-font-family, var(--body-font-family)); } li.active { diff --git a/blocks/sheet/sheet.css b/blocks/sheet/sheet.css index 411f9b97..5c7ee61c 100644 --- a/blocks/sheet/sheet.css +++ b/blocks/sheet/sheet.css @@ -14,7 +14,7 @@ body { display: flex; justify-content: center; max-width: 83.4%; - margin: 0 auto var(--spacing-600) auto; + margin: 0 auto var(--s2-spacing-600, var(--spacing-600)) auto; } da-versions, diff --git a/blocks/sheet/sheet.js b/blocks/sheet/sheet.js index 022af682..7ca441de 100644 --- a/blocks/sheet/sheet.js +++ b/blocks/sheet/sheet.js @@ -8,6 +8,9 @@ import { convertSheets } from '../edit/utils/helpers.js'; const { loadStyle } = await import(`${getNx()}/utils/utils.js`); +const blockStyle = await loadStyle(import.meta.url); +document.adoptedStyleSheets = [...document.adoptedStyleSheets, blockStyle]; + const style = await loadStyle('/blocks/sheet/da-sheet-panes.css'); class DaSheetPanes extends LitElement { diff --git a/blocks/sheet/utils/index.js b/blocks/sheet/utils/index.js index 285d9cca..b5b98e96 100644 --- a/blocks/sheet/utils/index.js +++ b/blocks/sheet/utils/index.js @@ -1,14 +1,20 @@ -import { getNx, getNx2Api, nxJS } from '../../../scripts/utils.js'; +import { getNx, getNx2Api } from '../../../scripts/utils.js'; import { handleSave, staleCheck } from './utils.js'; import '../da-sheet-tabs.js'; const nx = getNx(); const isNx2 = nx.endsWith('/nx2'); -const { loadStyle } = await import(`${nx}${nxJS}`); +const { loadStyle } = await import(`${nx}/utils/utils.js`); const loadScript = isNx2 ? (await import(`${nx}/utils/utils.js`)).loadScript : (await import(`${nx}/utils/script.js`)).default; +async function adoptStyle(href) { + const sheet = await loadStyle(href); + if (!sheet || document.adoptedStyleSheets.includes(sheet)) return; + document.adoptedStyleSheets = [...document.adoptedStyleSheets, sheet]; +} + const SHEET_TEMPLATE = { minDimensions: [20, 20], sheetName: 'data' }; let permissions; @@ -150,7 +156,7 @@ export async function getData(input) { export default async function init(el, data) { const suppliedData = data || await getData(el.details); - await loadStyle('/deps/jspreadsheet-ce/dist/jspreadsheet.css'); + await adoptStyle('/deps/jspreadsheet-ce/dist/jspreadsheet.css'); await loadScript('/deps/jspreadsheet-ce/dist/index.js'); await loadScript('/deps/jsuites/dist/jsuites.js'); From 4e11123e35ac8791d78a50fb00d37d3c2da2e144 Mon Sep 17 00:00:00 2001 From: Hannes Hertach Date: Tue, 30 Jun 2026 18:39:31 +0200 Subject: [PATCH 03/12] fix: make edit block compatible with nx2 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Switch loadStyle imports to ${getNx()}/utils/utils.js and adopt the returned CSSStyleSheet onto document.adoptedStyleSheets — nx2's loadStyle returns a stylesheet instead of appending a tag. In da-assets.js route loadScript through utils/utils.js in nx2 mode, since /utils/script.js only exists under /nx. In da-library.js map the base back to /nx so /styles/buttons.css resolves in both modes. Update --body-font-family references with --s2-font-family fallbacks. Co-Authored-By: Claude Opus 4.7 --- blocks/edit/da-assets/da-assets.js | 17 ++++++++++++----- blocks/edit/da-editor/da-editor.css | 6 +++--- blocks/edit/da-library/da-library.css | 2 +- blocks/edit/da-library/da-library.js | 2 +- blocks/edit/da-not-found/da-not-found.js | 9 ++++++--- blocks/edit/da-palette/da-palette.css | 2 +- blocks/edit/da-title/da-title.css | 2 +- blocks/edit/da-versions/da-versions.css | 4 ++-- blocks/edit/prose/plugins/focalPointDialog.js | 9 ++++++--- 9 files changed, 33 insertions(+), 20 deletions(-) diff --git a/blocks/edit/da-assets/da-assets.js b/blocks/edit/da-assets/da-assets.js index 6e3e73b4..d0d32c11 100644 --- a/blocks/edit/da-assets/da-assets.js +++ b/blocks/edit/da-assets/da-assets.js @@ -1,4 +1,4 @@ -import { getNx, nxJS } from '../../../scripts/utils.js'; +import { getNx } from '../../../scripts/utils.js'; import getPathDetails from '../../shared/pathDetails.js'; import { getRepositoryConfig, getResponsiveImageConfig } from './helpers/config.js'; import { @@ -177,9 +177,13 @@ export function buildHandleSelection( } export async function openAssets() { - const { loadStyle } = await import(`${getNx()}${nxJS}`); - const { loadIms, handleSignIn } = await import(`${getNx()}/utils/ims.js`); - const loadScript = (await import(`${getNx()}/utils/script.js`)).default; + const nx = getNx(); + const isNx2 = nx.endsWith('/nx2'); + const { loadStyle } = await import(`${nx}/utils/utils.js`); + const { loadIms, handleSignIn } = await import(`${nx}/utils/ims.js`); + const loadScript = isNx2 + ? (await import(`${nx}/utils/utils.js`)).loadScript + : (await import(`${nx}/utils/script.js`)).default; const details = await loadIms(); if (details.anonymous) handleSignIn(); @@ -195,7 +199,10 @@ export async function openAssets() { return; } - await loadStyle(import.meta.url.replace('.js', '.css')); + const assetSheet = await loadStyle(import.meta.url); + if (assetSheet && !document.adoptedStyleSheets.includes(assetSheet)) { + document.adoptedStyleSheets = [...document.adoptedStyleSheets, assetSheet]; + } await loadScript(ASSET_SELECTOR_URL); dialog = document.createElement('dialog'); diff --git a/blocks/edit/da-editor/da-editor.css b/blocks/edit/da-editor/da-editor.css index 60954fbd..0c4da5dd 100644 --- a/blocks/edit/da-editor/da-editor.css +++ b/blocks/edit/da-editor/da-editor.css @@ -35,7 +35,7 @@ .da-version-title { margin: 0; - font-family: var(--body-font-family); + font-family: var(--s2-font-family, var(--body-font-family)); font-size: 18px; font-weight: 700; color: #000; @@ -52,7 +52,7 @@ } .da-version-action-area button { - font-family: var(--body-font-family); + font-family: var(--s2-font-family, var(--body-font-family)); display: inline-block; font-style: normal; cursor: pointer; @@ -814,7 +814,7 @@ da-library.hide { left: -1px; font-size: 13px; background-color: rgb(250 129 0); - font-family: var(--body-font-family); + font-family: var(--s2-font-family, var(--body-font-family)); border-radius: 2px; font-style: normal; font-weight: normal; diff --git a/blocks/edit/da-library/da-library.css b/blocks/edit/da-library/da-library.css index ea64901a..c86c36be 100644 --- a/blocks/edit/da-library/da-library.css +++ b/blocks/edit/da-library/da-library.css @@ -22,7 +22,7 @@ } input, button { - font-family: var(--body-font-family); + font-family: var(--s2-font-family, var(--body-font-family)); font-weight: 400; } diff --git a/blocks/edit/da-library/da-library.js b/blocks/edit/da-library/da-library.js index 2eaa63b5..2bba8145 100644 --- a/blocks/edit/da-library/da-library.js +++ b/blocks/edit/da-library/da-library.js @@ -15,7 +15,7 @@ import { } from './helpers/helpers.js'; const sheet = await getSheet('/blocks/edit/da-library/da-library.css'); -const buttons = await getSheet(`${getNx()}/styles/buttons.css`); +const buttons = await getSheet(`${getNx().replace(/\/nx2$/, '/nx')}/styles/buttons.css`); const ICONS = [ '/blocks/edit/img/S2_Icon_ExperienceAdd_20_N.svg', diff --git a/blocks/edit/da-not-found/da-not-found.js b/blocks/edit/da-not-found/da-not-found.js index c4528601..26d57bd0 100644 --- a/blocks/edit/da-not-found/da-not-found.js +++ b/blocks/edit/da-not-found/da-not-found.js @@ -1,8 +1,11 @@ import '../../shared/da-dialog/da-dialog.js'; -import { getNx, getNx2Api, nxJS } from '../../../scripts/utils.js'; +import { getNx, getNx2Api } from '../../../scripts/utils.js'; -const { loadStyle } = await import(`${getNx()}${nxJS}`); -await loadStyle('/blocks/edit/da-not-found/da-not-found.css'); +const { loadStyle } = await import(`${getNx()}/utils/utils.js`); +const sheet = await loadStyle('/blocks/edit/da-not-found/da-not-found.css'); +if (sheet && !document.adoptedStyleSheets.includes(sheet)) { + document.adoptedStyleSheets = [...document.adoptedStyleSheets, sheet]; +} async function folderHasContents(folderPath) { try { diff --git a/blocks/edit/da-palette/da-palette.css b/blocks/edit/da-palette/da-palette.css index b3888264..047a7d9d 100644 --- a/blocks/edit/da-palette/da-palette.css +++ b/blocks/edit/da-palette/da-palette.css @@ -33,7 +33,7 @@ input { } button { - font-family: var(--body-font-family); + font-family: var(--s2-font-family, var(--body-font-family)); display: block; border: 2px solid #1373e6; background: #1373e6; diff --git a/blocks/edit/da-title/da-title.css b/blocks/edit/da-title/da-title.css index 7660b8b0..0a781349 100644 --- a/blocks/edit/da-title/da-title.css +++ b/blocks/edit/da-title/da-title.css @@ -13,7 +13,7 @@ h1 { } button { - font-family: var(--body-font-family); + font-family: var(--s2-font-family, var(--body-font-family)); } da-prepare { diff --git a/blocks/edit/da-versions/da-versions.css b/blocks/edit/da-versions/da-versions.css index e175fdb9..9dbc07cb 100644 --- a/blocks/edit/da-versions/da-versions.css +++ b/blocks/edit/da-versions/da-versions.css @@ -24,7 +24,7 @@ } .da-versions-close-btn { - font-family: var(--body-font-family); + font-family: var(--s2-font-family, var(--body-font-family)); line-height: 32px; font-weight: 700; font-size: 20px; @@ -173,7 +173,7 @@ .da-version-new-input { border: none; border-bottom: 2px solid #C8C8C8; - font-family: var(--body-font-family); + font-family: var(--s2-font-family, var(--body-font-family)); font-size: 18px; font-weight: 700; padding: 6px 0; diff --git a/blocks/edit/prose/plugins/focalPointDialog.js b/blocks/edit/prose/plugins/focalPointDialog.js index 0bd87380..854e2ca2 100644 --- a/blocks/edit/prose/plugins/focalPointDialog.js +++ b/blocks/edit/prose/plugins/focalPointDialog.js @@ -1,8 +1,11 @@ import '../../../shared/da-dialog/da-dialog.js'; -import { getNx, nxJS } from '../../../../scripts/utils.js'; +import { getNx } from '../../../../scripts/utils.js'; -const { loadStyle } = await import(`${getNx()}${nxJS}`); -await loadStyle('/blocks/edit/prose/plugins/focalPointDialog.css'); +const { loadStyle } = await import(`${getNx()}/utils/utils.js`); +const focalSheet = await loadStyle('/blocks/edit/prose/plugins/focalPointDialog.css'); +if (focalSheet && !document.adoptedStyleSheets.includes(focalSheet)) { + document.adoptedStyleSheets = [...document.adoptedStyleSheets, focalSheet]; +} let currentDialog = null; let faceApiLoaded = false; From a325758deaf34de5d4b8af39229a324262f316be Mon Sep 17 00:00:00 2001 From: Hannes Hertach Date: Tue, 30 Jun 2026 18:44:08 +0200 Subject: [PATCH 04/12] fix: fall back to --se-grid-container-width for nx2 nx2 renamed --grid-container-width to --se-grid-container-width with the same 83.4%/1200px breakpoints. Without the fallback, .da-title-inner and da-content lose their max/explicit width in nx2 and the header loses its horizontal margin between breakpoints. Co-Authored-By: Claude Opus 4.7 --- blocks/edit/da-content/da-content.css | 2 +- blocks/edit/da-title/da-title.css | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/blocks/edit/da-content/da-content.css b/blocks/edit/da-content/da-content.css index 3eaeb298..2572099c 100644 --- a/blocks/edit/da-content/da-content.css +++ b/blocks/edit/da-content/da-content.css @@ -12,7 +12,7 @@ position: relative; flex: 0 1 auto; - width: var(--grid-container-width); + width: var(--se-grid-container-width, var(--grid-container-width)); } da-editor { diff --git a/blocks/edit/da-title/da-title.css b/blocks/edit/da-title/da-title.css index 0a781349..28cf46fc 100644 --- a/blocks/edit/da-title/da-title.css +++ b/blocks/edit/da-title/da-title.css @@ -52,7 +52,7 @@ da-dialog { } .da-title-inner { - max-width: var(--grid-container-width); + max-width: var(--se-grid-container-width, var(--grid-container-width)); margin: 0 auto; display: block; justify-content: space-between; From 1df9da7a51d90cc5cc34d83021d6e93e5a1cf314 Mon Sep 17 00:00:00 2001 From: Hannes Hertach Date: Tue, 7 Jul 2026 16:58:50 +0200 Subject: [PATCH 05/12] refactor: drop nx v1 fallbacks in edit and sheet loaders Edit and sheet only target nx2 going forward, so remove the isNx2 ternary in da-assets.js and sheet/utils/index.js and import loadScript directly from utils/utils.js. Delete the nx v1-shaped fixture stubs (styles.js, svg.js, script.js) that nothing imports anymore, and expose loadScript from the utils.js fixture to mirror the nx2 module contract. Co-Authored-By: Claude Opus 4.7 --- blocks/edit/da-assets/da-assets.js | 6 +----- blocks/sheet/utils/index.js | 6 +----- test/fixtures/nx/utils/script.js | 5 ----- test/fixtures/nx/utils/styles.js | 1 - test/fixtures/nx/utils/svg.js | 1 - test/fixtures/nx/utils/utils.js | 2 ++ 6 files changed, 4 insertions(+), 17 deletions(-) delete mode 100644 test/fixtures/nx/utils/script.js delete mode 100644 test/fixtures/nx/utils/styles.js delete mode 100644 test/fixtures/nx/utils/svg.js diff --git a/blocks/edit/da-assets/da-assets.js b/blocks/edit/da-assets/da-assets.js index d0d32c11..336dfa89 100644 --- a/blocks/edit/da-assets/da-assets.js +++ b/blocks/edit/da-assets/da-assets.js @@ -178,12 +178,8 @@ export function buildHandleSelection( export async function openAssets() { const nx = getNx(); - const isNx2 = nx.endsWith('/nx2'); - const { loadStyle } = await import(`${nx}/utils/utils.js`); + const { loadStyle, loadScript } = await import(`${nx}/utils/utils.js`); const { loadIms, handleSignIn } = await import(`${nx}/utils/ims.js`); - const loadScript = isNx2 - ? (await import(`${nx}/utils/utils.js`)).loadScript - : (await import(`${nx}/utils/script.js`)).default; const details = await loadIms(); if (details.anonymous) handleSignIn(); diff --git a/blocks/sheet/utils/index.js b/blocks/sheet/utils/index.js index b5b98e96..17bfc036 100644 --- a/blocks/sheet/utils/index.js +++ b/blocks/sheet/utils/index.js @@ -3,11 +3,7 @@ import { handleSave, staleCheck } from './utils.js'; import '../da-sheet-tabs.js'; const nx = getNx(); -const isNx2 = nx.endsWith('/nx2'); -const { loadStyle } = await import(`${nx}/utils/utils.js`); -const loadScript = isNx2 - ? (await import(`${nx}/utils/utils.js`)).loadScript - : (await import(`${nx}/utils/script.js`)).default; +const { loadStyle, loadScript } = await import(`${nx}/utils/utils.js`); async function adoptStyle(href) { const sheet = await loadStyle(href); diff --git a/test/fixtures/nx/utils/script.js b/test/fixtures/nx/utils/script.js deleted file mode 100644 index 96101762..00000000 --- a/test/fixtures/nx/utils/script.js +++ /dev/null @@ -1,5 +0,0 @@ -// Mock script.js for tests -export default function loadScript() { - // Mock implementation - return Promise.resolve(); -} diff --git a/test/fixtures/nx/utils/styles.js b/test/fixtures/nx/utils/styles.js deleted file mode 100644 index e14ddd64..00000000 --- a/test/fixtures/nx/utils/styles.js +++ /dev/null @@ -1 +0,0 @@ -export default function getStyle() { return new CSSStyleSheet(); } diff --git a/test/fixtures/nx/utils/svg.js b/test/fixtures/nx/utils/svg.js deleted file mode 100644 index f58dc05d..00000000 --- a/test/fixtures/nx/utils/svg.js +++ /dev/null @@ -1 +0,0 @@ -export default function getSvg() { return ''; } diff --git a/test/fixtures/nx/utils/utils.js b/test/fixtures/nx/utils/utils.js index 9dbbc457..7a71f86a 100644 --- a/test/fixtures/nx/utils/utils.js +++ b/test/fixtures/nx/utils/utils.js @@ -4,4 +4,6 @@ export const loadStyle = async () => { return sheet; }; +export const loadScript = async () => {}; + export const DA_ADMIN = 'https://admin.da.live'; From b47837dcf4e1c2e1617b9342cace26db226a9552 Mon Sep 17 00:00:00 2001 From: Hannes Hertach Date: Tue, 7 Jul 2026 17:22:24 +0200 Subject: [PATCH 06/12] fix: fall back to --s2-corner-radius-800 for nx2 nx2 renamed --s2-radius-300 to --s2-corner-radius-800 (same 16px value). Without the fallback the Cancel/Compare/Restore buttons in the version preview lose their rounded corners. Co-Authored-By: Claude Opus 4.7 --- blocks/edit/da-editor/da-editor.css | 2 +- blocks/sheet/da-version-review.css | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/blocks/edit/da-editor/da-editor.css b/blocks/edit/da-editor/da-editor.css index 0c4da5dd..785001cd 100644 --- a/blocks/edit/da-editor/da-editor.css +++ b/blocks/edit/da-editor/da-editor.css @@ -59,7 +59,7 @@ padding: 5px 14px; line-height: 18px; font-size: 15px; - border-radius: var(--s2-radius-300); + border-radius: var(--s2-corner-radius-800, var(--s2-radius-300)); outline-offset: 0; transition: outline-offset .2s; text-decoration: none; diff --git a/blocks/sheet/da-version-review.css b/blocks/sheet/da-version-review.css index 82771968..75b95058 100644 --- a/blocks/sheet/da-version-review.css +++ b/blocks/sheet/da-version-review.css @@ -37,7 +37,7 @@ button { padding: 5px 14px; line-height: 18px; font-size: 15px; - border-radius: var(--s2-radius-300); + border-radius: var(--s2-corner-radius-800, var(--s2-radius-300)); outline-offset: 0; transition: outline-offset .2s; text-decoration: none; From c12ce648e04f125c5466eba643aa33d6770c11c5 Mon Sep 17 00:00:00 2001 From: Hannes Hertach Date: Wed, 8 Jul 2026 09:26:49 +0200 Subject: [PATCH 07/12] fix: pin edit and sheet views to light scheme Force light-scheme on document.body from the edit and sheet init functions until each view's dark-mode styling is complete. Co-Authored-By: Claude Opus 4.7 --- blocks/edit/edit.js | 5 +++++ blocks/sheet/sheet.js | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/blocks/edit/edit.js b/blocks/edit/edit.js index 5d3f3a69..7d65fde4 100644 --- a/blocks/edit/edit.js +++ b/blocks/edit/edit.js @@ -127,6 +127,11 @@ async function setUI(el) { } export default async function init(el) { + // TODO: remove once dark-mode styling for the edit view is complete. + // Strip the dark-scheme class so document.body always renders in light. + document.body.classList.remove('dark-scheme'); + document.body.classList.add('light-scheme'); + setUI(el); window.addEventListener('hashchange', () => { diff --git a/blocks/sheet/sheet.js b/blocks/sheet/sheet.js index 7ca441de..6913d2ba 100644 --- a/blocks/sheet/sheet.js +++ b/blocks/sheet/sheet.js @@ -157,6 +157,11 @@ async function setSheet(details, daTitle, daSheet) { } export default async function init(el) { + // TODO: remove once dark-mode styling for the sheet view is complete. + // Strip the dark-scheme class so document.body always renders in light. + document.body.classList.remove('dark-scheme'); + document.body.classList.add('light-scheme'); + let details = getPathDetails(); if (!details) { el.innerHTML = '

Please edit a sheet.

'; From 68181aad82267016f9c0175a9fb0d418ba4bc9f7 Mon Sep 17 00:00:00 2001 From: Hannes Hertach Date: Wed, 8 Jul 2026 09:46:12 +0200 Subject: [PATCH 08/12] fix: pin light color-scheme globally in head.html Move the light-mode pin from block init to an inline + +