diff --git a/.agents/docs/component-authoring.md b/.agents/docs/component-authoring.md index b040da6..7def710 100644 --- a/.agents/docs/component-authoring.md +++ b/.agents/docs/component-authoring.md @@ -19,7 +19,7 @@ not a reason to abandon the template. Two of the fixes also corrected latent inc | `Newline` | template SFC | `"\n".repeat(count)` interpolation + a context branch | | `Static` | template SFC | reactive cursor + `v-for` scoped slot | | `Box` | template SFC | root `v-if` validation guard + `` | -| `Text` | template SFC | `` + `virtual-text`/`text` branch | +| `Text` | template SFC | `` + `tui-virtual-text`/`tui-text` branch | | `Transform` | **render function (`.ts`)** | inspects children: all-inert children → render nothing | ## Two questions, two idioms diff --git a/packages/runtime-tests/integration/composables/use-box-metrics.test.tsx b/packages/runtime-tests/integration/composables/use-box-metrics.test.tsx index 6ca9acb..6b3a738 100644 --- a/packages/runtime-tests/integration/composables/use-box-metrics.test.tsx +++ b/packages/runtime-tests/integration/composables/use-box-metrics.test.tsx @@ -812,7 +812,7 @@ describe("useBoxMetrics - resize and dynamic layout", () => { // The template-authored `` SFC has a root `v-if`, so it renders as a Vue // Fragment whose `$el` is the fragment's BOUNDARY anchor (an empty `text-leaf` -// with no `.yoga`), NOT the real `box` host node. Resolving a ref to that anchor +// with no `.yoga`), NOT the real `tui-box` host node. Resolving a ref to that anchor // would collapse metrics to 0 — or, worse, drill the wrong node. The subTree // drill in useBoxMetrics (commit 801739d) walks the component's vnode subTree to // the first genuine host node. These tests guard the tricky drill cases the diff --git a/packages/runtime/src/components/box.vue b/packages/runtime/src/components/box.vue index eb9f02d..a662734 100644 --- a/packages/runtime/src/components/box.vue +++ b/packages/runtime/src/components/box.vue @@ -21,7 +21,7 @@ const srHidden = computed(() => srEnabled.value && props.ariaHidden); Box is screen-reader-hidden (mirrors box.ts ordering: a non-emitted node never colorizes). Under a screen reader with an ariaLabel, render the label text instead of the slot. The root `v-if` makes this a fragment, but $el still - resolves to the real `box` host node, so measureElement/useBoxMetrics work. --> + resolves to the real `tui-box` host node, so measureElement/useBoxMetrics work. --> {{ props.ariaLabel }} diff --git a/packages/runtime/src/composables/useBoxMetrics.ts b/packages/runtime/src/composables/useBoxMetrics.ts index 48e1908..5939dd1 100644 --- a/packages/runtime/src/composables/useBoxMetrics.ts +++ b/packages/runtime/src/composables/useBoxMetrics.ts @@ -32,10 +32,10 @@ export interface UseBoxMetricsReturn { /** * A component whose root is a `v-if`/`v-else` (e.g. the template-authored ``) * renders as a Vue Fragment, so its `$el` resolves to the fragment's BOUNDARY anchor - * (an empty `text-leaf`), NOT the real `box` host node. The actual host node lives in + * (an empty `text-leaf`), NOT the real `tui-box` host node. The actual host node lives in * the component's `subTree`. Walk that vnode tree to the first `el` that is a genuine * host node — skipping the comment and empty-`text-leaf` anchors a fragment inserts — - * so a ref to a fragment-rooted Box still resolves to its `box` host node. + * so a ref to a fragment-rooted Box still resolves to its `tui-box` host node. */ function hostElFromSubTree(instance: unknown): Record | null { const subTree = (instance as { subTree?: unknown })?.subTree; diff --git a/packages/runtime/vite.config.ts b/packages/runtime/vite.config.ts index 5f762e8..37cbec5 100644 --- a/packages/runtime/vite.config.ts +++ b/packages/runtime/vite.config.ts @@ -13,7 +13,7 @@ export default defineConfig({ // `VueVite` parses `.vue` SFCs in the TEST/dev graph (unit tests may import the // .vue components directly, e.g. host/text-measure.test.ts). The `pack` build has // its own `Vue` rolldown plugin below; both need `isCustomElement` so the host - // tags (`` / `` / …) inside SFC templates compile to raw element + // tags (`` / `` / …) inside SFC templates compile to raw element // vnodes instead of being resolved as components. plugins: [ vueJsx(),