(defcomp ()
  (~docs/page :title "Modules"
    (p (~tw :tokens "text-stone-500 text-sm italic mb-8")
      "Declaring what a file needs — for documentation, static analysis, and tooling.")

    (~docs/section :title "The use form" :id "use-form"
      (p "A " (code "(use module-name)") " declaration at the top of an " (code ".sx") " file says: this file depends on definitions from that module.")
      (~docs/code :src (str "(use signals)       ;; needs signal, deref, reset!, swap!, computed\n(use web-signals)   ;; needs resource, emit-event, on-event\n\n(defisland ~demo ()\n  (let ((data (resource (fn () (promise-delayed 1000 42)))))\n    (div (deref data))))"))
      (p (code "use") " is purely declarative — it doesn't load anything. The glob loader still loads all " (code ".sx") " files. The declaration documents intent and enables static checking."))

    (~docs/section :title "What use enables" :id "what-it-enables"
      (h4 (~tw :tokens "font-semibold text-stone-700 mt-6 mb-2") "Dependency visibility")
      (p "The " (code "sx_deps") " tool reports both referenced symbols and declared modules. If a file references " (code "resource") " but doesn't " (code "(use web-signals)") ", the tool flags the gap.")
      (h4 (~tw :tokens "font-semibold text-stone-700 mt-6 mb-2") "Build pipeline validation")
      (p "The " (code "sx_build_manifest") " tool shows which modules are in the current build. Cross-referencing with " (code "use") " declarations catches missing build modules — exactly the bug that caused the " (code "resource") " island hydration failure.")
      (h4 (~tw :tokens "font-semibold text-stone-700 mt-6 mb-2") "Documentation")
      (p "For humans and LLMs reading a file: " (code "use") " declarations immediately show what the file depends on, without grep."))

    (~docs/section :title "Semantics" :id "semantics"
      (p (code "(use name)") " is a no-op at evaluation time. It does not:")
      (ul (~tw :tokens "space-y-1 text-stone-600 ml-4")
        (li "Load any files")
        (li "Modify the environment")
        (li "Affect evaluation order")
        (li "Create any runtime cost"))
      (p "It " (em "does") ":")
      (ul (~tw :tokens "space-y-1 text-stone-600 ml-4")
        (li "Appear in the parsed tree for static analysis")
        (li "Get reported by " (code "sx_deps"))
        (li "Enable future tooling (unused-import warnings, auto-import suggestions)")))))
