From 1f22adb8d66e4ba3d61e725c8bbb2c14e96da31f Mon Sep 17 00:00:00 2001 From: Baptiste Leproux Date: Thu, 2 Oct 2025 20:10:41 +0200 Subject: [PATCH 1/3] feat(context): create folder action --- package.json | 2 + pnpm-lock.yaml | 15 ++- .../components/content/ContentEditorCode.vue | 6 +- .../src/components/shared/item/ItemCard.vue | 8 +- .../components/shared/item/ItemCardForm.vue | 62 ++++++---- src/app/src/composables/useContext.ts | 18 ++- .../src/types/{components.ts => component.ts} | 0 src/app/src/types/context.ts | 2 +- src/app/src/types/index.ts | 6 +- src/app/src/utils/content.ts | 2 - src/module/src/runtime/host.dev.ts | 2 +- src/module/src/runtime/host.ts | 10 +- .../utils/{collections.ts => collection.ts} | 2 +- src/module/src/runtime/utils/content.ts | 111 ++++++++++++++---- src/module/src/runtime/utils/serialization.ts | 34 ++++++ .../mocks/{collections.ts => collection.ts} | 0 ...collections.test.ts => collection.test.ts} | 10 +- 17 files changed, 215 insertions(+), 75 deletions(-) rename src/app/src/types/{components.ts => component.ts} (100%) rename src/module/src/runtime/utils/{collections.ts => collection.ts} (98%) create mode 100644 src/module/src/runtime/utils/serialization.ts rename src/module/test/mocks/{collections.ts => collection.ts} (100%) rename src/module/test/utils/{collections.test.ts => collection.test.ts} (92%) diff --git a/package.json b/package.json index d1d7a5fc..b423f5a5 100644 --- a/package.json +++ b/package.json @@ -44,6 +44,7 @@ "@nuxt/ui": "https://pkg.pr.new/@nuxt/ui@5111", "@octokit/types": "^15.0.0", "@tailwindcss/typography": "latest", + "@types/js-yaml": "^4.0.9", "@vitejs/plugin-vue": "^6.0.1", "eslint": "^9.36.0", "modern-monaco": "^0.2.2", @@ -73,6 +74,7 @@ "defu": "^6.1.4", "destr": "^2.0.5", "idb-keyval": "^6.2.2", + "js-yaml": "^4.1.0", "minimark": "^0.2.0", "ofetch": "^1.4.1", "unstorage": "^1.17.1" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4d65a70c..38290a18 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -40,6 +40,9 @@ importers: idb-keyval: specifier: ^6.2.2 version: 6.2.2 + js-yaml: + specifier: ^4.1.0 + version: 4.1.0 minimark: specifier: ^0.2.0 version: 0.2.0 @@ -71,6 +74,9 @@ importers: '@tailwindcss/typography': specifier: latest version: 0.5.19(tailwindcss@4.1.13) + '@types/js-yaml': + specifier: ^4.0.9 + version: 4.0.9 '@vitejs/plugin-vue': specifier: ^6.0.1 version: 6.0.1(vite@7.1.7(@types/node@24.3.1)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1))(vue@3.5.22(typescript@5.9.2)) @@ -2070,6 +2076,9 @@ packages: '@types/hast@3.0.4': resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} + '@types/js-yaml@4.0.9': + resolution: {integrity: sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg==} + '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} @@ -8816,6 +8825,8 @@ snapshots: dependencies: '@types/unist': 3.0.3 + '@types/js-yaml@4.0.9': {} + '@types/json-schema@7.0.15': {} '@types/lodash@4.17.20': {} @@ -12144,7 +12155,7 @@ snapshots: unctx: 2.4.1 unimport: 5.2.0 unplugin: 2.3.10 - unplugin-vue-router: 0.15.0(@vue/compiler-sfc@3.5.22)(typescript@5.9.2)(vue-router@4.5.1(vue@3.5.22(typescript@5.9.2)))(vue@3.5.21(typescript@5.9.2)) + unplugin-vue-router: 0.15.0(@vue/compiler-sfc@3.5.22)(typescript@5.9.2)(vue-router@4.5.1(vue@3.5.21(typescript@5.9.2)))(vue@3.5.21(typescript@5.9.2)) unstorage: 1.17.1(db0@0.3.2(better-sqlite3@12.2.0))(idb-keyval@6.2.2)(ioredis@5.7.0) untyped: 2.0.0 vue: 3.5.21(typescript@5.9.2) @@ -13736,7 +13747,7 @@ snapshots: transitivePeerDependencies: - vue - unplugin-vue-router@0.15.0(@vue/compiler-sfc@3.5.22)(typescript@5.9.2)(vue-router@4.5.1(vue@3.5.22(typescript@5.9.2)))(vue@3.5.21(typescript@5.9.2)): + unplugin-vue-router@0.15.0(@vue/compiler-sfc@3.5.22)(typescript@5.9.2)(vue-router@4.5.1(vue@3.5.21(typescript@5.9.2)))(vue@3.5.21(typescript@5.9.2)): dependencies: '@vue-macros/common': 3.0.0-beta.16(vue@3.5.21(typescript@5.9.2)) '@vue/compiler-sfc': 3.5.22 diff --git a/src/app/src/components/content/ContentEditorCode.vue b/src/app/src/components/content/ContentEditorCode.vue index 36152669..bf5773f0 100644 --- a/src/app/src/components/content/ContentEditorCode.vue +++ b/src/app/src/components/content/ContentEditorCode.vue @@ -38,12 +38,12 @@ watch(() => props.draftItem.status, (newStatus) => { const language = computed(() => { switch (document.value?.extension) { case ContentFileExtension.Markdown: - return 'mdc'; + return 'mdc' case ContentFileExtension.YAML: case ContentFileExtension.YML: - return 'yaml'; + return 'yaml' case ContentFileExtension.JSON: - return 'javascript'; + return 'javascript' default: return 'text' } diff --git a/src/app/src/components/shared/item/ItemCard.vue b/src/app/src/components/shared/item/ItemCard.vue index dfa83995..5383ee99 100644 --- a/src/app/src/components/shared/item/ItemCard.vue +++ b/src/app/src/components/shared/item/ItemCard.vue @@ -5,7 +5,6 @@ import { computed } from 'vue' import { Image } from '@unpic/vue' import { titleCase } from 'scule' import { COLOR_UI_STATUS_MAP } from '../../../utils/tree' -import { DraftStatus } from '../../../types/draft' const props = defineProps({ item: { @@ -60,7 +59,10 @@ const statusRingColor = computed(() => props.item.status ? `ring-(--ui-${COLOR_U alt="Card placeholder" class="z-[-1] rounded-t-lg aspect-video object-cover" /> -
+
props.item.status ? `ring-(--ui-${COLOR_U
diff --git a/src/app/src/components/shared/item/ItemCardForm.vue b/src/app/src/components/shared/item/ItemCardForm.vue index a40505cf..7eb17e16 100644 --- a/src/app/src/components/shared/item/ItemCardForm.vue +++ b/src/app/src/components/shared/item/ItemCardForm.vue @@ -1,17 +1,23 @@