Rename all 1,169 components to path-based names with namespace support

Component names now reflect filesystem location using / as path separator
and : as namespace separator for shared components:
  ~sx-header → ~layouts/header
  ~layout-app-body → ~shared:layout/app-body
  ~blog-admin-dashboard → ~admin/dashboard

209 files, 4,941 replacements across all services.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-12 22:00:12 +00:00
parent de80d921e9
commit b0920a1121
209 changed files with 4620 additions and 4620 deletions

View File

@@ -33,10 +33,10 @@ def make_env(*sx_sources: str) -> dict:
class TestScanAst:
def test_simple_component_ref(self):
env = make_env('(defcomp ~card (&key title) (div (~badge :label title)))')
env = make_env('(defcomp ~card (&key title) (div (~shared:misc/badge :label title)))')
comp = env["~card"]
refs = _scan_ast(comp.body)
assert refs == {"~badge"}
assert refs == {"~shared:misc/badge"}
def test_no_refs(self):
env = make_env('(defcomp ~plain (&key text) (div :class "p-4" text))')
@@ -77,11 +77,11 @@ class TestScanAst:
class TestTransitiveDeps:
def test_direct_dep(self):
env = make_env(
'(defcomp ~card (&key) (div (~badge)))',
'(defcomp ~badge (&key) (span ""))',
'(defcomp ~card (&key) (div (~shared:misc/badge)))',
'(defcomp ~shared:misc/badge (&key) (span ""))',
)
deps = transitive_deps("~card", env)
assert deps == {"~badge"}
assert deps == {"~shared:misc/badge"}
def test_transitive(self):
env = make_env(
@@ -115,11 +115,11 @@ class TestTransitiveDeps:
def test_without_tilde_prefix(self):
env = make_env(
'(defcomp ~card (&key) (div (~badge)))',
'(defcomp ~badge (&key) (span ""))',
'(defcomp ~card (&key) (div (~shared:misc/badge)))',
'(defcomp ~shared:misc/badge (&key) (span ""))',
)
deps = transitive_deps("card", env)
assert deps == {"~badge"}
assert deps == {"~shared:misc/badge"}
# ---------------------------------------------------------------------------
@@ -130,13 +130,13 @@ class TestComputeAllDeps:
def test_sets_deps_on_components(self):
env = make_env(
'(defcomp ~page (&key) (div (~card)))',
'(defcomp ~card (&key) (div (~badge)))',
'(defcomp ~badge (&key) (span ""))',
'(defcomp ~card (&key) (div (~shared:misc/badge)))',
'(defcomp ~shared:misc/badge (&key) (span ""))',
)
compute_all_deps(env)
assert env["~page"].deps == {"~card", "~badge"}
assert env["~card"].deps == {"~badge"}
assert env["~badge"].deps == set()
assert env["~page"].deps == {"~card", "~shared:misc/badge"}
assert env["~card"].deps == {"~shared:misc/badge"}
assert env["~shared:misc/badge"].deps == set()
# ---------------------------------------------------------------------------
@@ -145,9 +145,9 @@ class TestComputeAllDeps:
class TestScanComponentsFromSx:
def test_basic(self):
source = '(~card :title "hi" (~badge :label "new"))'
source = '(~card :title "hi" (~shared:misc/badge :label "new"))'
refs = scan_components_from_sx(source)
assert refs == {"~card", "~badge"}
assert refs == {"~card", "~shared:misc/badge"}
def test_no_components(self):
source = '(div :class "p-4" (p "hello"))'
@@ -162,8 +162,8 @@ class TestScanComponentsFromSx:
class TestComponentsNeeded:
def test_page_with_deps(self):
env = make_env(
'(defcomp ~page-layout (&key) (div (~nav) (~footer)))',
'(defcomp ~nav (&key) (nav "nav"))',
'(defcomp ~page-layout (&key) (div (~plans/environment-images/nav) (~footer)))',
'(defcomp ~plans/environment-images/nav (&key) (nav "nav"))',
'(defcomp ~footer (&key) (footer "footer"))',
'(defcomp ~unused (&key) (div "not needed"))',
)
@@ -171,6 +171,6 @@ class TestComponentsNeeded:
page_sx = '(~page-layout)'
needed = components_needed(page_sx, env)
assert "~page-layout" in needed
assert "~nav" in needed
assert "~plans/environment-images/nav" in needed
assert "~footer" in needed
assert "~unused" not in needed