From 6ef998994348f0e725c59395870865d76d5d935f Mon Sep 17 00:00:00 2001 From: Charan167 Date: Thu, 10 Oct 2024 08:01:52 +0530 Subject: [PATCH 1/8] feat: add file extension based icons --- packages/react/src/core/FileTree.tsx | 48 +++++++++++++++++++++++++++- 1 file changed, 47 insertions(+), 1 deletion(-) diff --git a/packages/react/src/core/FileTree.tsx b/packages/react/src/core/FileTree.tsx index 90d084dcb..1feb1c0bd 100644 --- a/packages/react/src/core/FileTree.tsx +++ b/packages/react/src/core/FileTree.tsx @@ -183,6 +183,7 @@ interface FileProps { } function File({ file: { depth, name }, onClick, selected }: FileProps) { + const fileIcon = name ? getFileTreeIcon(name) : ''; return ( Date: Fri, 11 Oct 2024 08:46:53 +0530 Subject: [PATCH 2/8] fix: implement code review changes --- packages/react/src/core/FileTree.tsx | 69 ++++++++----------- .../1-introduction/2-foo/_files/src/test-1.js | 0 .../2-foo/_files/src/test-10.ts | 0 .../2-foo/_files/src/test-2.cjs | 0 .../2-foo/_files/src/test-3.mjs | 0 .../2-foo/_files/src/test-4.css | 0 .../1-introduction/2-foo/_files/src/test-5.md | 0 .../2-foo/_files/src/test-6.png | 0 .../2-foo/_files/src/test-7.jpg | 0 .../2-foo/_files/src/test-8.gif | 0 .../2-foo/_files/src/test-9.xyz | 0 11 files changed, 27 insertions(+), 42 deletions(-) create mode 100644 packages/template/src/content/tutorial/1-basics/1-introduction/2-foo/_files/src/test-1.js create mode 100644 packages/template/src/content/tutorial/1-basics/1-introduction/2-foo/_files/src/test-10.ts create mode 100644 packages/template/src/content/tutorial/1-basics/1-introduction/2-foo/_files/src/test-2.cjs create mode 100644 packages/template/src/content/tutorial/1-basics/1-introduction/2-foo/_files/src/test-3.mjs create mode 100644 packages/template/src/content/tutorial/1-basics/1-introduction/2-foo/_files/src/test-4.css create mode 100644 packages/template/src/content/tutorial/1-basics/1-introduction/2-foo/_files/src/test-5.md create mode 100644 packages/template/src/content/tutorial/1-basics/1-introduction/2-foo/_files/src/test-6.png create mode 100644 packages/template/src/content/tutorial/1-basics/1-introduction/2-foo/_files/src/test-7.jpg create mode 100644 packages/template/src/content/tutorial/1-basics/1-introduction/2-foo/_files/src/test-8.gif create mode 100644 packages/template/src/content/tutorial/1-basics/1-introduction/2-foo/_files/src/test-9.xyz diff --git a/packages/react/src/core/FileTree.tsx b/packages/react/src/core/FileTree.tsx index 1feb1c0bd..d1633854b 100644 --- a/packages/react/src/core/FileTree.tsx +++ b/packages/react/src/core/FileTree.tsx @@ -19,6 +19,25 @@ interface Props { className?: string; } +const extensionsToIcons = new Map([ + ['ts', 'i-ph-file-ts-duotone'], + + ['cjs', 'i-ph-file-js-duotone'], + ['mjs', 'i-ph-file-js-duotone'], + ['js', 'i-ph-file-js-duotone'], + + ['html', 'i-ph-file-html-duotone'], + + ['css', 'i-ph-file-css-duotone'], + + ['md', 'i-ph-file-md-duotone'], + + ['gif', 'i-ph-file-image-duotone'], + ['jpg', 'i-ph-file-image-duotone'], + ['jpeg', 'i-ph-file-image-duotone'], + ['png', 'i-ph-file-image-duotone'], +]); + export function FileTree({ files, onFileSelect, @@ -183,7 +202,8 @@ interface FileProps { } function File({ file: { depth, name }, onClick, selected }: FileProps) { - const fileIcon = name ? getFileTreeIcon(name) : ''; + const extension = getFileExtension(name); + const fileIcon = extensionsToIcons.get(extension) || 'i-ph-file-duotone'; return ( Date: Fri, 11 Oct 2024 08:55:46 +0530 Subject: [PATCH 3/8] Update FileTree.tsx --- packages/react/src/core/FileTree.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/react/src/core/FileTree.tsx b/packages/react/src/core/FileTree.tsx index d1633854b..a8454e33b 100644 --- a/packages/react/src/core/FileTree.tsx +++ b/packages/react/src/core/FileTree.tsx @@ -204,6 +204,7 @@ interface FileProps { function File({ file: { depth, name }, onClick, selected }: FileProps) { const extension = getFileExtension(name); const fileIcon = extensionsToIcons.get(extension) || 'i-ph-file-duotone'; + return ( Date: Fri, 11 Oct 2024 10:18:02 +0300 Subject: [PATCH 4/8] chore: format --- packages/react/src/core/FileTree.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/react/src/core/FileTree.tsx b/packages/react/src/core/FileTree.tsx index a8454e33b..d1633854b 100644 --- a/packages/react/src/core/FileTree.tsx +++ b/packages/react/src/core/FileTree.tsx @@ -204,7 +204,6 @@ interface FileProps { function File({ file: { depth, name }, onClick, selected }: FileProps) { const extension = getFileExtension(name); const fileIcon = extensionsToIcons.get(extension) || 'i-ph-file-duotone'; - return ( Date: Fri, 11 Oct 2024 10:22:56 +0300 Subject: [PATCH 5/8] chore: format --- packages/react/src/core/FileTree.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/react/src/core/FileTree.tsx b/packages/react/src/core/FileTree.tsx index d1633854b..dc565b559 100644 --- a/packages/react/src/core/FileTree.tsx +++ b/packages/react/src/core/FileTree.tsx @@ -204,6 +204,7 @@ interface FileProps { function File({ file: { depth, name }, onClick, selected }: FileProps) { const extension = getFileExtension(name); const fileIcon = extensionsToIcons.get(extension) || 'i-ph-file-duotone'; + return ( Date: Mon, 14 Oct 2024 11:49:03 +0300 Subject: [PATCH 6/8] chore: move extension list to end of file instead --- packages/react/src/core/FileTree.tsx | 38 ++++++++++++++-------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/packages/react/src/core/FileTree.tsx b/packages/react/src/core/FileTree.tsx index dc565b559..ff7070166 100644 --- a/packages/react/src/core/FileTree.tsx +++ b/packages/react/src/core/FileTree.tsx @@ -19,25 +19,6 @@ interface Props { className?: string; } -const extensionsToIcons = new Map([ - ['ts', 'i-ph-file-ts-duotone'], - - ['cjs', 'i-ph-file-js-duotone'], - ['mjs', 'i-ph-file-js-duotone'], - ['js', 'i-ph-file-js-duotone'], - - ['html', 'i-ph-file-html-duotone'], - - ['css', 'i-ph-file-css-duotone'], - - ['md', 'i-ph-file-md-duotone'], - - ['gif', 'i-ph-file-image-duotone'], - ['jpg', 'i-ph-file-image-duotone'], - ['jpeg', 'i-ph-file-image-duotone'], - ['png', 'i-ph-file-image-duotone'], -]); - export function FileTree({ files, onFileSelect, @@ -390,3 +371,22 @@ function getFileExtension(filename: string) { return extension; } + +const extensionsToIcons = new Map([ + ['ts', 'i-ph-file-ts-duotone'], + + ['cjs', 'i-ph-file-js-duotone'], + ['mjs', 'i-ph-file-js-duotone'], + ['js', 'i-ph-file-js-duotone'], + + ['html', 'i-ph-file-html-duotone'], + + ['css', 'i-ph-file-css-duotone'], + + ['md', 'i-ph-file-md-duotone'], + + ['gif', 'i-ph-file-image-duotone'], + ['jpg', 'i-ph-file-image-duotone'], + ['jpeg', 'i-ph-file-image-duotone'], + ['png', 'i-ph-file-image-duotone'], +]); From 0c84a530c3f3afbab058c9e1e9d961454c877163 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ari=20Perkki=C3=B6?= Date: Mon, 14 Oct 2024 11:51:28 +0300 Subject: [PATCH 7/8] fix: add more extensions --- packages/react/src/core/FileTree.tsx | 12 +++++++++++- .../1-introduction/2-foo/_files/src/test-11.jsx | 0 .../1-introduction/2-foo/_files/src/test-12.tsx | 0 .../1-introduction/2-foo/_files/src/test-13.cts | 0 .../1-introduction/2-foo/_files/src/test-14.mts | 0 .../1-introduction/2-foo/_files/src/test-15.svg | 0 .../1-introduction/2-foo/_files/src/test-16.vue | 0 7 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 packages/template/src/content/tutorial/1-basics/1-introduction/2-foo/_files/src/test-11.jsx create mode 100644 packages/template/src/content/tutorial/1-basics/1-introduction/2-foo/_files/src/test-12.tsx create mode 100644 packages/template/src/content/tutorial/1-basics/1-introduction/2-foo/_files/src/test-13.cts create mode 100644 packages/template/src/content/tutorial/1-basics/1-introduction/2-foo/_files/src/test-14.mts create mode 100644 packages/template/src/content/tutorial/1-basics/1-introduction/2-foo/_files/src/test-15.svg create mode 100644 packages/template/src/content/tutorial/1-basics/1-introduction/2-foo/_files/src/test-16.vue diff --git a/packages/react/src/core/FileTree.tsx b/packages/react/src/core/FileTree.tsx index ff7070166..89b38c50d 100644 --- a/packages/react/src/core/FileTree.tsx +++ b/packages/react/src/core/FileTree.tsx @@ -374,10 +374,16 @@ function getFileExtension(filename: string) { const extensionsToIcons = new Map([ ['ts', 'i-ph-file-ts-duotone'], + ['cts', 'i-ph-file-ts-duotone'], + ['mts', 'i-ph-file-ts-duotone'], + ['tsx', 'i-ph-file-tsx-duotone'], + + ['js', 'i-ph-file-js-duotone'], ['cjs', 'i-ph-file-js-duotone'], ['mjs', 'i-ph-file-js-duotone'], - ['js', 'i-ph-file-js-duotone'], + + ['jsx', 'i-ph-file-jsx-duotone'], ['html', 'i-ph-file-html-duotone'], @@ -385,8 +391,12 @@ const extensionsToIcons = new Map([ ['md', 'i-ph-file-md-duotone'], + ['vue', 'i-ph-file-vue-duotone'], + ['gif', 'i-ph-file-image-duotone'], ['jpg', 'i-ph-file-image-duotone'], ['jpeg', 'i-ph-file-image-duotone'], ['png', 'i-ph-file-image-duotone'], + + ['svg', 'i-ph-file-svg-duotone'], ]); diff --git a/packages/template/src/content/tutorial/1-basics/1-introduction/2-foo/_files/src/test-11.jsx b/packages/template/src/content/tutorial/1-basics/1-introduction/2-foo/_files/src/test-11.jsx new file mode 100644 index 000000000..e69de29bb diff --git a/packages/template/src/content/tutorial/1-basics/1-introduction/2-foo/_files/src/test-12.tsx b/packages/template/src/content/tutorial/1-basics/1-introduction/2-foo/_files/src/test-12.tsx new file mode 100644 index 000000000..e69de29bb diff --git a/packages/template/src/content/tutorial/1-basics/1-introduction/2-foo/_files/src/test-13.cts b/packages/template/src/content/tutorial/1-basics/1-introduction/2-foo/_files/src/test-13.cts new file mode 100644 index 000000000..e69de29bb diff --git a/packages/template/src/content/tutorial/1-basics/1-introduction/2-foo/_files/src/test-14.mts b/packages/template/src/content/tutorial/1-basics/1-introduction/2-foo/_files/src/test-14.mts new file mode 100644 index 000000000..e69de29bb diff --git a/packages/template/src/content/tutorial/1-basics/1-introduction/2-foo/_files/src/test-15.svg b/packages/template/src/content/tutorial/1-basics/1-introduction/2-foo/_files/src/test-15.svg new file mode 100644 index 000000000..e69de29bb diff --git a/packages/template/src/content/tutorial/1-basics/1-introduction/2-foo/_files/src/test-16.vue b/packages/template/src/content/tutorial/1-basics/1-introduction/2-foo/_files/src/test-16.vue new file mode 100644 index 000000000..e69de29bb From c31b2ecb01ca8c1948215ac313c5e852fb7d5d16 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ari=20Perkki=C3=B6?= Date: Mon, 14 Oct 2024 11:54:06 +0300 Subject: [PATCH 8/8] test: update snapshot --- .../create-tutorial.test.ts.snap | 48 +++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/packages/cli/tests/__snapshots__/create-tutorial.test.ts.snap b/packages/cli/tests/__snapshots__/create-tutorial.test.ts.snap index 49403364c..37e16ce34 100644 --- a/packages/cli/tests/__snapshots__/create-tutorial.test.ts.snap +++ b/packages/cli/tests/__snapshots__/create-tutorial.test.ts.snap @@ -44,6 +44,22 @@ exports[`create a project 1`] = ` "src/content/tutorial/1-basics/1-introduction/2-foo/_files/bar/styles.css", "src/content/tutorial/1-basics/1-introduction/2-foo/_files/src", "src/content/tutorial/1-basics/1-introduction/2-foo/_files/src/index.html", + "src/content/tutorial/1-basics/1-introduction/2-foo/_files/src/test-1.js", + "src/content/tutorial/1-basics/1-introduction/2-foo/_files/src/test-10.ts", + "src/content/tutorial/1-basics/1-introduction/2-foo/_files/src/test-11.jsx", + "src/content/tutorial/1-basics/1-introduction/2-foo/_files/src/test-12.tsx", + "src/content/tutorial/1-basics/1-introduction/2-foo/_files/src/test-13.cts", + "src/content/tutorial/1-basics/1-introduction/2-foo/_files/src/test-14.mts", + "src/content/tutorial/1-basics/1-introduction/2-foo/_files/src/test-15.svg", + "src/content/tutorial/1-basics/1-introduction/2-foo/_files/src/test-16.vue", + "src/content/tutorial/1-basics/1-introduction/2-foo/_files/src/test-2.cjs", + "src/content/tutorial/1-basics/1-introduction/2-foo/_files/src/test-3.mjs", + "src/content/tutorial/1-basics/1-introduction/2-foo/_files/src/test-4.css", + "src/content/tutorial/1-basics/1-introduction/2-foo/_files/src/test-5.md", + "src/content/tutorial/1-basics/1-introduction/2-foo/_files/src/test-6.png", + "src/content/tutorial/1-basics/1-introduction/2-foo/_files/src/test-7.jpg", + "src/content/tutorial/1-basics/1-introduction/2-foo/_files/src/test-8.gif", + "src/content/tutorial/1-basics/1-introduction/2-foo/_files/src/test-9.xyz", "src/content/tutorial/1-basics/1-introduction/2-foo/_files/src/unicorn.js", "src/content/tutorial/1-basics/1-introduction/2-foo/_files/src/windows_xp.png", "src/content/tutorial/1-basics/1-introduction/2-foo/_solution", @@ -106,6 +122,22 @@ exports[`create and build a project > built project file references 1`] = ` "1-basics-1-introduction-2-foo-files.json": [ "/bar/styles.css", "/src/index.html", + "/src/test-1.js", + "/src/test-10.ts", + "/src/test-11.jsx", + "/src/test-12.tsx", + "/src/test-13.cts", + "/src/test-14.mts", + "/src/test-15.svg", + "/src/test-16.vue", + "/src/test-2.cjs", + "/src/test-3.mjs", + "/src/test-4.css", + "/src/test-5.md", + "/src/test-6.png", + "/src/test-7.jpg", + "/src/test-8.gif", + "/src/test-9.xyz", "/src/unicorn.js", "/src/windows_xp.png", ], @@ -241,6 +273,22 @@ exports[`create and eject a project 1`] = ` "src/content/tutorial/1-basics/1-introduction/2-foo/_files/bar/styles.css", "src/content/tutorial/1-basics/1-introduction/2-foo/_files/src", "src/content/tutorial/1-basics/1-introduction/2-foo/_files/src/index.html", + "src/content/tutorial/1-basics/1-introduction/2-foo/_files/src/test-1.js", + "src/content/tutorial/1-basics/1-introduction/2-foo/_files/src/test-10.ts", + "src/content/tutorial/1-basics/1-introduction/2-foo/_files/src/test-11.jsx", + "src/content/tutorial/1-basics/1-introduction/2-foo/_files/src/test-12.tsx", + "src/content/tutorial/1-basics/1-introduction/2-foo/_files/src/test-13.cts", + "src/content/tutorial/1-basics/1-introduction/2-foo/_files/src/test-14.mts", + "src/content/tutorial/1-basics/1-introduction/2-foo/_files/src/test-15.svg", + "src/content/tutorial/1-basics/1-introduction/2-foo/_files/src/test-16.vue", + "src/content/tutorial/1-basics/1-introduction/2-foo/_files/src/test-2.cjs", + "src/content/tutorial/1-basics/1-introduction/2-foo/_files/src/test-3.mjs", + "src/content/tutorial/1-basics/1-introduction/2-foo/_files/src/test-4.css", + "src/content/tutorial/1-basics/1-introduction/2-foo/_files/src/test-5.md", + "src/content/tutorial/1-basics/1-introduction/2-foo/_files/src/test-6.png", + "src/content/tutorial/1-basics/1-introduction/2-foo/_files/src/test-7.jpg", + "src/content/tutorial/1-basics/1-introduction/2-foo/_files/src/test-8.gif", + "src/content/tutorial/1-basics/1-introduction/2-foo/_files/src/test-9.xyz", "src/content/tutorial/1-basics/1-introduction/2-foo/_files/src/unicorn.js", "src/content/tutorial/1-basics/1-introduction/2-foo/_files/src/windows_xp.png", "src/content/tutorial/1-basics/1-introduction/2-foo/_solution",