Files
gui/pkgs/ui/text-test/wrapChildrenInText.test.tsx
zeekay 4620297b84 chore(layout): rename code/ → pkgs/ + apps/ + templates/ for cross-repo consistency
Match the layout convention used elsewhere in the Hanzo / Liquidity stack
(pkgs/* for libraries, apps/* for consumer apps, templates/* for starters).

Layout changes:
  pkgs/    ← code/{compiler,core,packages,ui,ui-admin}/
  apps/    ← code/{admin-base,admin-tasks,demos,gui.hanzo.ai,
              kitchen-sink*,sandbox,tests}/
  templates/  ← code/starters/* (flattened — no more starters/ subdir)

Updated:
- package.json workspaces glob.
- All scripts/* path references (postinstall, format, repair, release,
  sync-gui-versions, ci-serve, check-references, etc).
- ../../tasks/scripts/sync-admin-ui.sh — DEFAULT_SRC now points at
  ../gui/apps/admin-tasks (and scrubbed Tamagui mentions in comments).
- ~/work/hanzo/HANZO_BINARY.md doctrine doc.
- ~/work/hanzo/ui/pkg/ui/BASES.md framework-bases doc.
- gui CLAUDE.md, CONTRIBUTING.md.
- Memory entries.

Side-effect fix: ui-admin/src/primitives/index.ts now re-exports
PageShell from ../shell/PageShell. Several IAM identity pages
(GroupEdit, OrgEdit, GroupTree, UserEdit, RoleEdit) imported PageShell
from ./primitives — pre-existing barrel mismatch the test suite missed
because the smoke tests don't full-render. The rename surfaced it via
production build; back-compat re-export keeps both barrels working.

Verification:
- bun install: clean.
- ui-admin tests: 127/127 green.
- admin-tasks vite build: 721 KB JS / 213 KB gzip + 10 KB CSS, clean.
2026-04-27 14:33:21 -07:00

36 lines
1014 B
TypeScript

import React from 'react'
import { expect, test } from 'vitest'
import { wrapChildrenInText } from '../text/src/wrapChildrenInText'
const Comp = () => {}
const re = <div data-id={Math.random()} />
const reID = re.props['data-id']
test('should wrap all string children', () => {
const out = wrapChildrenInText(Comp, {
children: [re, 'a', 'b', re, 'c', re, 'd'],
}) as any
expect(out[0].props['data-id']).toBe(reID)
expect(out[1].type).toBe(Comp)
expect(out[1].props.children).toStrictEqual('a')
expect(out[2].props.children).toStrictEqual('b')
expect(out[3].props['data-id']).toBe(reID)
expect(out[4].props.children).toStrictEqual('c')
expect(out[5].props['data-id']).toBe(reID)
expect(out[6].props.children).toStrictEqual('d')
})
test('should first child string', () => {
const out = wrapChildrenInText(Comp, {
children: ['a', re],
}) as any
expect(out[0].type).toBe(Comp)
expect(out[0].props.children).toStrictEqual('a')
expect(out[1].props['data-id']).toBe(reID)
})