(defcomp
  (&key params)
  (div
    (~tw :tokens "mt-1 flex flex-wrap gap-1")
    (map
      (fn
        (p)
        (let-match
          {:type typ :name name}
          p
          (if
            (or (= name "&rest") (= name "&key"))
            (span (~tw :tokens "text-xs font-mono text-violet-500") name)
            (span
              (~tw
                :tokens "text-xs font-mono px-1 py-0.5 rounded bg-stone-50 border border-stone-200")
              (if
                typ
                (<>
                  (span (~tw :tokens "text-stone-700") name)
                  (span (~tw :tokens "text-stone-400") " : ")
                  (span (~tw :tokens "text-violet-600") typ))
                (span (~tw :tokens "text-stone-700") name))))))
      params)))
