From feca890cb5841a6802f0650eedc149994290bd2b Mon Sep 17 00:00:00 2001 From: Chris Machetzki Date: Fri, 13 Mar 2026 11:05:05 -0400 Subject: [PATCH 1/2] Add Tsx as a LanguageType --- crates/codebook/src/queries.rs | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/crates/codebook/src/queries.rs b/crates/codebook/src/queries.rs index e53b3c9..0b123c4 100644 --- a/crates/codebook/src/queries.rs +++ b/crates/codebook/src/queries.rs @@ -28,6 +28,7 @@ pub enum LanguageType { TOML, Text, Typescript, + Tsx, Typst, VHDL, YAML, @@ -130,10 +131,17 @@ pub static LANGUAGE_SETTINGS: &[LanguageSetting] = &[ }, LanguageSetting { type_: LanguageType::Typescript, - ids: &["typescript", "typescriptreact"], - dictionary_ids: &["typescript", "typescriptreact"], + ids: &["typescript"], + dictionary_ids: &["typescript"], query: include_str!("queries/typescript.scm"), - extensions: &["ts", "tsx"], + extensions: &["ts"], + }, + LanguageSetting { + type_: LanguageType::Tsx, + ids: &["typescriptreact"], + dictionary_ids: &["typescriptreact"], + query: include_str!("queries/typescript.scm"), + extensions: &["tsx"], }, LanguageSetting { type_: LanguageType::Haskell, @@ -293,6 +301,7 @@ impl LanguageSetting { LanguageType::TOML => Some(tree_sitter_toml_ng::LANGUAGE.into()), LanguageType::Text => None, LanguageType::Typescript => Some(tree_sitter_typescript::LANGUAGE_TYPESCRIPT.into()), + LanguageType::Tsx => Some(tree_sitter_typescript::LANGUAGE_TSX.into()), LanguageType::Typst => Some(codebook_tree_sitter_typst::LANGUAGE.into()), LanguageType::VHDL => Some(tree_sitter_vhdl::LANGUAGE.into()), LanguageType::YAML => Some(tree_sitter_yaml::LANGUAGE.into()), From 66e551def3711166a8ea4f01cbb1ed8da2060cd7 Mon Sep 17 00:00:00 2001 From: Bo Lopker Date: Fri, 13 Mar 2026 11:32:13 -0700 Subject: [PATCH 2/2] Add non-standard language id's that Zed uses --- crates/codebook/src/queries.rs | 4 +- examples/example.jsx | 2 +- examples/example.tsx | 112 ++++++++++++++++++++------------- 3 files changed, 73 insertions(+), 45 deletions(-) diff --git a/crates/codebook/src/queries.rs b/crates/codebook/src/queries.rs index 0b123c4..2fdf447 100644 --- a/crates/codebook/src/queries.rs +++ b/crates/codebook/src/queries.rs @@ -117,7 +117,7 @@ pub static LANGUAGE_SETTINGS: &[LanguageSetting] = &[ }, LanguageSetting { type_: LanguageType::Javascript, - ids: &["javascript", "javascriptreact"], + ids: &["javascript", "javascriptreact", "jsx"], dictionary_ids: &["javascript", "javascriptreact"], query: include_str!("queries/javascript.scm"), extensions: &["js", "jsx"], @@ -138,7 +138,7 @@ pub static LANGUAGE_SETTINGS: &[LanguageSetting] = &[ }, LanguageSetting { type_: LanguageType::Tsx, - ids: &["typescriptreact"], + ids: &["typescriptreact", "tsx"], dictionary_ids: &["typescriptreact"], query: include_str!("queries/typescript.scm"), extensions: &["tsx"], diff --git a/examples/example.jsx b/examples/example.jsx index 65a9371..23d509f 100644 --- a/examples/example.jsx +++ b/examples/example.jsx @@ -68,7 +68,7 @@ const userAccaunt = { function getComponentddt() { return ( -

Hello, {userAccaunt.usrname}

+

Helloz, {userAccaunt.usrname}

Your ballance is: {userAccaunt.ballance}

); diff --git a/examples/example.tsx b/examples/example.tsx index 7ae2b08..a375dbe 100644 --- a/examples/example.tsx +++ b/examples/example.tsx @@ -1,52 +1,80 @@ -// Funktion to validate user inputt -function validateInputt(userInputt: number | string) { - if (typeof userInputt !== "number") { - console.log("Pleese enter a valid numbr"); - return false; - } - - return true; +import React, { useState, useEffect } from "react"; + +// Interfase for user propertys +interface UserAccaunt { + usrname: string; + emale: string; + ballance: number; + isActve: boolean; } -const multiLineString = `This is a multi-line string -spanning multiple lines -with some spelling mistkes`; +// Props interfase for the componant +interface DashbordProps { + tital: string; + usrs: UserAccaunt[]; + onSubmitt: (usrname: string) => void; +} -console.log(multiLineString); +// Componant to displaye a single user +function UserCardd({ usr }: { usr: UserAccaunt }) { + const [isExpanded, setIsExpanded] = useState(false); -// Example usege -const firstNumbr = 10; -console.log(firstNumbr); -const secandNumbr = 5; -console.log(secandNumbr); + return ( +
+

setIsExpanded(!isExpanded)}>{usr.usrname}

+ {isExpanded && ( +
+

Emale: {usr.emale}

+

Ballance: ${usr.ballance.toFixed(2)}

+ + {usr.isActve ? "Actve" : "Inactve"} + +
+ )} +
+ ); +} -// Array of numbrs with spelling mistakes -const arraOfNumbrs = [1, 2, 3, 4, 5]; -console.log(arraOfNumbrs); +// Main dashbord componant +function Dashbord({ tital, usrs, onSubmitt }: DashbordProps) { + const [serchTerm, setSerchTerm] = useState(""); + const [filterdUsrs, setFilterdUsrs] = useState(usrs); -/* - Funcshun to prosess array - another linet -*/ -function prosessArray(arr: number[]) { - let totel = 0; + useEffect(() => { + const resalts = usrs.filter((usr) => + usr.usrname.toLowerCase().includes(serchTerm.toLowerCase()), + ); + setFilterdUsrs(resalts); + }, [serchTerm, usrs]); - for (let i = 0; i < arr.length; i++) { - totel += arr[i]; - } + const handleSerch = (evnt: React.ChangeEvent) => { + setSerchTerm(evnt.target.value); + }; - return totel; + return ( +
+

{tital}

+
+ + +
+
+ {filterdUsrs.length > 0 ? ( + filterdUsrs.map((usr, indx) => ) + ) : ( +

No usr foundd

+ )} +
+
+ ); } -// Object with propertys -const userAccaunt = { - usrname: "JohnDoe", - passwrd: "12345", - emale: "john@example.com", - ballance: 1000, -}; - -console.log(userAccaunt); - -// Exportt the funcsions -export { validateInputt, prosessArray }; +// Exportt the componants +export { UserCardd, Dashbord }; +export type { UserAccaunt, DashbordProps };