From 18b2216457c98074926bffad773004d60fde58fd Mon Sep 17 00:00:00 2001
From: Sirapop Theeranantachai
Date: Wed, 13 May 2026 04:54:52 -0700
Subject: [PATCH 01/10] Add Getting Started help page with tutorials
- Add clickable table of contents with scroll tracking
- Add side-by-side layout for steps with figures
- Add "Creating a Workspace" tutorial with dashboard and modal demos
- Add "Joining a Workspace" tutorial with dashboard and modal demos
- Add "Inviting Others" tutorial with sidebar and modal demos
- Add reusable DemoDashboard, DemoCreateWorkspaceModal, DemoJoinWorkspaceModal components
- Refactor StepItem component for side-by-side layout
- Rename Help tab to "Getting Started"
- Fix copy button styling in invite modals
---
package.json | 1 +
pnpm-lock.yaml | 460 +++++++++++++-----
src/components/InvitePeopleModal.vue | 53 +-
src/components/NavBar.vue | 9 +-
.../landing/DemoCreateWorkspaceModal.vue | 41 ++
src/components/landing/DemoDashboard.vue | 70 +++
.../landing/DemoJoinWorkspaceModal.vue | 44 ++
src/components/landing/DemoModal.vue | 87 ++++
src/components/landing/DemoSidebar.vue | 184 +++++++
src/components/landing/HelpComponent.vue | 217 +++++++++
src/components/landing/StepItem.vue | 91 ++++
src/router/index.ts | 6 +
src/views/AboutView.vue | 3 +-
src/views/HelpView.vue | 38 ++
14 files changed, 1176 insertions(+), 128 deletions(-)
create mode 100644 src/components/landing/DemoCreateWorkspaceModal.vue
create mode 100644 src/components/landing/DemoDashboard.vue
create mode 100644 src/components/landing/DemoJoinWorkspaceModal.vue
create mode 100644 src/components/landing/DemoModal.vue
create mode 100644 src/components/landing/DemoSidebar.vue
create mode 100644 src/components/landing/HelpComponent.vue
create mode 100644 src/components/landing/StepItem.vue
create mode 100644 src/views/HelpView.vue
diff --git a/package.json b/package.json
index c4fe1850..cae0dce3 100644
--- a/package.json
+++ b/package.json
@@ -25,6 +25,7 @@
"@fortawesome/free-regular-svg-icons": "^6.7.2",
"@fortawesome/free-solid-svg-icons": "^6.7.2",
"@fortawesome/vue-fontawesome": "^3.0.8",
+ "@milkdown/core": "^7.21.1",
"@milkdown/crepe": "^7.6.3",
"@milkdown/plugin-collab": "^7.6.3",
"@zip.js/zip.js": "^2.7.57",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 250a50d7..a147eb21 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -31,13 +31,16 @@ importers:
version: 6.7.2
'@fortawesome/vue-fontawesome':
specifier: ^3.0.8
- version: 3.0.8(@fortawesome/fontawesome-svg-core@6.7.2)(vue@3.5.13(typescript@5.8.3))
+ version: 3.0.8(@fortawesome/fontawesome-svg-core@6.7.2)(vue@3.5.34(typescript@5.8.3))
+ '@milkdown/core':
+ specifier: ^7.21.1
+ version: 7.21.1
'@milkdown/crepe':
specifier: ^7.6.3
- version: 7.10.2(prosemirror-model@1.25.1)(prosemirror-state@1.4.3)(prosemirror-view@1.39.2)(typescript@5.8.3)
+ version: 7.10.2(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(typescript@5.8.3)
'@milkdown/plugin-collab':
specifier: ^7.6.3
- version: 7.10.2(y-prosemirror@1.3.5(prosemirror-model@1.25.1)(prosemirror-state@1.4.3)(prosemirror-view@1.39.2)(y-protocols@1.0.6(yjs@13.6.26))(yjs@13.6.26))(y-protocols@1.0.6(yjs@13.6.26))(yjs@13.6.26)
+ version: 7.10.2(y-prosemirror@1.3.5(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(y-protocols@1.0.6(yjs@13.6.26))(yjs@13.6.26))(y-protocols@1.0.6(yjs@13.6.26))(yjs@13.6.26)
'@zip.js/zip.js':
specifier: ^2.7.57
version: 2.7.60
@@ -90,20 +93,23 @@ importers:
specifier: ^2.0.6
version: 2.0.6
vue:
- specifier: ^3.5.13
- version: 3.5.13(typescript@5.8.3)
+ specifier: ^3.5.18
+ version: 3.5.34(typescript@5.8.3)
vue-pdf-embed:
specifier: ^2.1.2
- version: 2.1.2(vue@3.5.13(typescript@5.8.3))
+ version: 2.1.2(vue@3.5.34(typescript@5.8.3))
vue-router:
specifier: ^4.5.0
- version: 4.5.1(vue@3.5.13(typescript@5.8.3))
+ version: 4.5.1(vue@3.5.34(typescript@5.8.3))
vue-virtual-scroller:
specifier: ^2.0.0-beta.8
- version: 2.0.0-beta.8(vue@3.5.13(typescript@5.8.3))
+ version: 2.0.0-beta.8(vue@3.5.34(typescript@5.8.3))
vue3-toastify:
specifier: ^0.2.8
- version: 0.2.8(vue@3.5.13(typescript@5.8.3))
+ version: 0.2.8(vue@3.5.34(typescript@5.8.3))
+ vuew:
+ specifier: ^1.0.0-security
+ version: 1.0.0-security
webworker-typed:
specifier: ^1.0.5
version: 1.0.5(typescript@5.8.3)
@@ -112,7 +118,7 @@ importers:
version: 0.1.6(monaco-editor@0.52.2)(yjs@13.6.26)
y-prosemirror:
specifier: ^1.2.17
- version: 1.3.5(prosemirror-model@1.25.1)(prosemirror-state@1.4.3)(prosemirror-view@1.39.2)(y-protocols@1.0.6(yjs@13.6.26))(yjs@13.6.26)
+ version: 1.3.5(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(y-protocols@1.0.6(yjs@13.6.26))(yjs@13.6.26)
y-protocols:
specifier: ^1.0.6
version: 1.0.6(yjs@13.6.26)
@@ -155,7 +161,7 @@ importers:
version: 2.0.5
'@vitejs/plugin-vue':
specifier: ^5.2.1
- version: 5.2.4(vite@6.3.5(@types/node@22.15.17)(jiti@2.4.2)(sass-embedded@1.88.0)(sass@1.51.0)(terser@5.39.0))(vue@3.5.13(typescript@5.8.3))
+ version: 5.2.4(vite@6.3.5(@types/node@22.15.17)(jiti@2.4.2)(sass-embedded@1.88.0)(sass@1.51.0)(terser@5.39.0))(vue@3.5.34(typescript@5.8.3))
'@vue/eslint-config-prettier':
specifier: ^10.2.0
version: 10.2.0(eslint@9.26.0(jiti@2.4.2))(prettier@3.5.3)
@@ -164,7 +170,7 @@ importers:
version: 14.5.0(eslint-plugin-vue@10.1.0(eslint@9.26.0(jiti@2.4.2))(vue-eslint-parser@10.1.3(eslint@9.26.0(jiti@2.4.2))))(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3)
'@vue/tsconfig':
specifier: ^0.7.0
- version: 0.7.0(typescript@5.8.3)(vue@3.5.13(typescript@5.8.3))
+ version: 0.7.0(typescript@5.8.3)(vue@3.5.34(typescript@5.8.3))
cross-env:
specifier: ^7.0.3
version: 7.0.3
@@ -304,6 +310,10 @@ packages:
resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==}
engines: {node: '>=6.9.0'}
+ '@babel/helper-validator-identifier@7.28.5':
+ resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==}
+ engines: {node: '>=6.9.0'}
+
'@babel/helper-validator-option@7.27.1':
resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==}
engines: {node: '>=6.9.0'}
@@ -321,6 +331,11 @@ packages:
engines: {node: '>=6.0.0'}
hasBin: true
+ '@babel/parser@7.29.3':
+ resolution: {integrity: sha512-b3ctpQwp+PROvU/cttc4OYl4MzfJUWy6FZg+PMXfzmt/+39iHVF0sDfqay8TQM3JA2EUOyKcFZt75jWriQijsA==}
+ engines: {node: '>=6.0.0'}
+ hasBin: true
+
'@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.27.1':
resolution: {integrity: sha512-QPG3C9cCVRQLxAVwmefEmwdTanECuUBMQZ/ym5kiw3XKCGA7qkuQLcjWWHcrD/GKbn/WmJwaezfuuAOcyKlRPA==}
engines: {node: '>=6.9.0'}
@@ -702,6 +717,10 @@ packages:
resolution: {integrity: sha512-+EzkxvLNfiUeKMgy/3luqfsCWFRXLb7U6wNQTk60tovuckwB15B191tJWvpp4HjiQWdJkCxO3Wbvc6jlk3Xb2Q==}
engines: {node: '>=6.9.0'}
+ '@babel/types@7.29.0':
+ resolution: {integrity: sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==}
+ engines: {node: '>=6.9.0'}
+
'@braintree/sanitize-url@6.0.2':
resolution: {integrity: sha512-Tbsj02wXCbqGmzdnXNk0SOF19ChhRU70BsroIi4Pm6Ehp56in6vch94mfbdQ17DozxkL3BAVjbZ4Qc1a0HFRAg==}
@@ -1271,8 +1290,8 @@ packages:
'@jridgewell/source-map@0.3.6':
resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==}
- '@jridgewell/sourcemap-codec@1.5.0':
- resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==}
+ '@jridgewell/sourcemap-codec@1.5.5':
+ resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==}
'@jridgewell/trace-mapping@0.3.25':
resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==}
@@ -1341,15 +1360,24 @@ packages:
'@milkdown/core@7.10.2':
resolution: {integrity: sha512-l56opMZ3SNYHOSpyH0PAF0IBekp3Jb+sNqpSjG+eLsb/rAZI/YIAKswClMkfeEMkpwAtXBzF/Gjxv/Be4gRsFQ==}
+ '@milkdown/core@7.21.1':
+ resolution: {integrity: sha512-hMWEarN+bgDpXdk/NDOFZERKWbenzVx2KzyGsVSeYtTQwlGTsL1eBzFvr9+RbCta74M48d41zG1aatuZNUWZ1A==}
+
'@milkdown/crepe@7.10.2':
resolution: {integrity: sha512-efo9e9YFSosU7FhiPu9+a1v1fJ4NPNO/vdjn6Fgw6UlnmfmHdwMBuhG0/DGceovCDiOjfXTOO2F1CLFNoPTezw==}
'@milkdown/ctx@7.10.2':
resolution: {integrity: sha512-E/XC9rvfAhT2Vk06eRY72EceqjBL2HLwUMx+eFKkXFnHaa5A64Dx+xQr8hVhgcuTCQKQjYyv+41De1oVC++bsg==}
+ '@milkdown/ctx@7.21.1':
+ resolution: {integrity: sha512-Ickz/qJNgtX2Wvx1/U/paoa4ZzhlFDMx87r8Rv/ocz3neIBk5hKD4Bxuz78UEXtTDr68IPmVYGHog1fETXGU4Q==}
+
'@milkdown/exception@7.10.2':
resolution: {integrity: sha512-USATsWjPAhQCIQzp9PJAqPn+YNmpjqJUSCM7G0T/znvliHhhdo8vs4LFJTzucJmfzx0RswydI1PBoR9rGs0dZA==}
+ '@milkdown/exception@7.21.1':
+ resolution: {integrity: sha512-j56qCj11VKrTjfrlm8sehvgpdNNwCNg3ZjeEk8+nDHsDomse0f+TO2HXeeP3Y/xKnLgMcpKyh7K9ATx4itnJpA==}
+
'@milkdown/kit@7.10.2':
resolution: {integrity: sha512-A6Toko+ag9AMDISTueL3XB9JwybYq4a9kJEvMajcW3BsOcY+OL2qToISfhzIrApI8rpQeRaZPGkbxbTtbqt1tw==}
@@ -1399,9 +1427,15 @@ packages:
'@milkdown/prose@7.10.2':
resolution: {integrity: sha512-QIT8v2frmBk2+mCVYS3kX1dWf/97aQgp/mAb2SvJPrA//BJILEiAVyEEP4XUOlq0Zco9ozkQ4TkmuqgXnSKzqw==}
+ '@milkdown/prose@7.21.1':
+ resolution: {integrity: sha512-qkRXnCsjsOSMt7CZvLdB1EqH6wdHymo9deI3JE5kP3lbai1iTR86lZqKkc3bRJBRq7ecI00PIXSG8vlN3R1doQ==}
+
'@milkdown/transformer@7.10.2':
resolution: {integrity: sha512-OH7FwpYEE7gExLrv88wRiqkbyd/PCTG1dbUfj1hc9gh0cu7cGQqNzffVTF1MunjUyS1pSqARTzh552U8Jm5OLQ==}
+ '@milkdown/transformer@7.21.1':
+ resolution: {integrity: sha512-pI8uUVyy557s+F/NvyIoUKr3w4Imy2GXEZpFC6LX0/o0hWrQGlq18Lp02NCnhcMvlPtL25LiLVNB6+C/ksgfTg==}
+
'@milkdown/utils@7.10.2':
resolution: {integrity: sha512-r2OkhcZfYsWAvo1GmNg1q5Xr7tNcBZaifktqclQqiIobLxbNooO5xXYLE8nMlR/tAAblrcl0S8Ldq4oiEgG+ig==}
@@ -2087,14 +2121,20 @@ packages:
'@vue/compiler-core@3.5.13':
resolution: {integrity: sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q==}
+ '@vue/compiler-core@3.5.34':
+ resolution: {integrity: sha512-s9cLyK5mLcvZ4Agva5QgRsQyLKvts9WbU9DB6NqiZkkGEdwmcEiylj5Jbwkp680drF/NNCV8OlAJSe+yMLxaJw==}
+
'@vue/compiler-dom@3.5.13':
resolution: {integrity: sha512-ZOJ46sMOKUjO3e94wPdCzQ6P1Lx/vhp2RSvfaab88Ajexs0AHeV0uasYhi99WPaogmBlRHNRuly8xV75cNTMDA==}
- '@vue/compiler-sfc@3.5.13':
- resolution: {integrity: sha512-6VdaljMpD82w6c2749Zhf5T9u5uLBWKnVue6XWxprDobftnletJ8+oel7sexFfM3qIxNmVE7LSFGTpv6obNyaQ==}
+ '@vue/compiler-dom@3.5.34':
+ resolution: {integrity: sha512-EbF/T++k0e2MMZlJsBhzK8Sgwt0HcIPOhzn1CTB/lv6sQcyk+OWf8YeiLxZp3ro7MbbLcAfAJ6sEvjFWuNgUCw==}
- '@vue/compiler-ssr@3.5.13':
- resolution: {integrity: sha512-wMH6vrYHxQl/IybKJagqbquvxpWCuVYpoUJfCqFZwa/JY1GdATAQ+TgVtgrwwMZ0D07QhA99rs/EAAWfvG6KpA==}
+ '@vue/compiler-sfc@3.5.34':
+ resolution: {integrity: sha512-D/ihr6uZeIt6r+pVZf46RWT1fAsLFMbUP7k8G1VkiiWexriED9GrX3echHd4Abbt17zjlfiFJ8z7a3BxZOPNjg==}
+
+ '@vue/compiler-ssr@3.5.34':
+ resolution: {integrity: sha512-cDtTHKibkThKGHH1SP+WdccquNRYQDFH6rRjQCqT9G2ltFAfoR5pUftpab/z+aM5mW9HLLVQW7hfKKQe/1GBeQ==}
'@vue/compiler-vue2@2.7.16':
resolution: {integrity: sha512-qYC3Psj9S/mfu9uVi5WvNZIzq+xnXMhOwbTFKKDD7b1lhpnn71jXSFdTQ+WsIEk0ONCd7VV2IMm7ONl6tbQ86A==}
@@ -2127,23 +2167,26 @@ packages:
typescript:
optional: true
- '@vue/reactivity@3.5.13':
- resolution: {integrity: sha512-NaCwtw8o48B9I6L1zl2p41OHo/2Z4wqYGGIK1Khu5T7yxrn+ATOixn/Udn2m+6kZKB/J7cuT9DbWWhRxqixACg==}
+ '@vue/reactivity@3.5.34':
+ resolution: {integrity: sha512-y9XDjCEuBp+98k+UL5dbYkh57AHU4o6cxZedOPXw3bmrZZYLQsVHguGurq7hVrPCSrQtrnz1f9dssyFr+dMXfQ==}
- '@vue/runtime-core@3.5.13':
- resolution: {integrity: sha512-Fj4YRQ3Az0WTZw1sFe+QDb0aXCerigEpw418pw1HBUKFtnQHWzwojaukAs2X/c9DQz4MQ4bsXTGlcpGxU/RCIw==}
+ '@vue/runtime-core@3.5.34':
+ resolution: {integrity: sha512-mKeBYvu8tcMSLhypAHBmriUFfWXKTCF/23Z4jiCoYK3UtWepkliViNLuR90V9XOyD62mUxs9p1jsrpK3CCGIzw==}
- '@vue/runtime-dom@3.5.13':
- resolution: {integrity: sha512-dLaj94s93NYLqjLiyFzVs9X6dWhTdAlEAciC3Moq7gzAc13VJUdCnjjRurNM6uTLFATRHexHCTu/Xp3eW6yoog==}
+ '@vue/runtime-dom@3.5.34':
+ resolution: {integrity: sha512-e8kZzERmCwUnBRVsgSQlAfrfU2rGoy0FFKPBXSlfEjc/O3KfA7QP0t1/2ZylrbchjmIKB4dPTd07A6WPr0eOrg==}
- '@vue/server-renderer@3.5.13':
- resolution: {integrity: sha512-wAi4IRJV/2SAW3htkTlB+dHeRmpTiVIK1OGLWV1yeStVSebSQQOwGwIq0D3ZIoBj2C2qpgz5+vX9iEBkTdk5YA==}
+ '@vue/server-renderer@3.5.34':
+ resolution: {integrity: sha512-nHxmJoTrKsmrkbILRhkC9gY1G3moZbJTqCzDd7DOOzG5KH9oeJ0Unqrff5f9v0pW//jES05ZkJcNtfE8JjOIew==}
peerDependencies:
- vue: 3.5.13
+ vue: 3.5.34
'@vue/shared@3.5.13':
resolution: {integrity: sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==}
+ '@vue/shared@3.5.34':
+ resolution: {integrity: sha512-24uqU4OIiX29ryC3MeWid/Xf2fa2EFRUVLb77nRhk+UrTVrh/XiGtFAFmJBAtBRbjwNdsPRP+jj/OL27Eg1NDA==}
+
'@vue/tsconfig@0.7.0':
resolution: {integrity: sha512-ku2uNz5MaZ9IerPPUyOHzyjhXoX2kVJaVf7hL315DC17vS6IiZRmmCPfggNbU16QTvM80+uYYy3eYJB59WCtvg==}
peerDependencies:
@@ -2430,6 +2473,9 @@ packages:
csstype@3.1.3:
resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==}
+ csstype@3.2.3:
+ resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==}
+
cytoscape-cose-bilkent@4.1.0:
resolution: {integrity: sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ==}
peerDependencies:
@@ -2692,6 +2738,10 @@ packages:
resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==}
engines: {node: '>=0.12'}
+ entities@7.0.1:
+ resolution: {integrity: sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==}
+ engines: {node: '>=0.12'}
+
es-abstract@1.23.9:
resolution: {integrity: sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==}
engines: {node: '>= 0.4'}
@@ -2991,7 +3041,7 @@ packages:
glob@7.2.3:
resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
- deprecated: Glob versions prior to v9 are no longer supported
+ deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me
globals@11.12.0:
resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==}
@@ -3393,8 +3443,8 @@ packages:
magic-string@0.25.9:
resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==}
- magic-string@0.30.17:
- resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==}
+ magic-string@0.30.21:
+ resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==}
markdown-table@3.0.4:
resolution: {integrity: sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==}
@@ -3879,6 +3929,10 @@ packages:
resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==}
engines: {node: '>=4'}
+ postcss@8.5.14:
+ resolution: {integrity: sha512-SoSL4+OSEtR99LHFZQiJLkT59C5B1amGO1NzTwj7TT1qCUgUO6hxOvzkOYxD+vMrXBM3XJIKzokoERdqQq/Zmg==}
+ engines: {node: ^10 || ^12 || >=14}
+
postcss@8.5.3:
resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==}
engines: {node: ^10 || ^12 || >=14}
@@ -3907,6 +3961,9 @@ packages:
prosemirror-changeset@2.3.0:
resolution: {integrity: sha512-8wRKhlEwEJ4I13Ju54q2NZR1pVKGTgJ/8XsQ8L5A5uUsQ/YQScQJuEAuh8Bn8i6IwAMjjLRABd9lVli+DlIiVw==}
+ prosemirror-changeset@2.4.1:
+ resolution: {integrity: sha512-96WBLhOaYhJ+kPhLg3uW359Tz6I/MfcrQfL4EGv4SrcqKEMC1gmoGrXHecPE8eOwTVCJ4IwgfzM8fFad25wNfw==}
+
prosemirror-commands@1.7.1:
resolution: {integrity: sha512-rT7qZnQtx5c0/y/KlYaGvtG411S97UaL6gdp6RIZ23DLHanMYLyfGBV5DtSnZdthQql7W+lEVbpSfwtO8T+L2w==}
@@ -3916,18 +3973,30 @@ packages:
prosemirror-gapcursor@1.3.2:
resolution: {integrity: sha512-wtjswVBd2vaQRrnYZaBCbyDqr232Ed4p2QPtRIUK5FuqHYKGWkEwl08oQM4Tw7DOR0FsasARV5uJFvMZWxdNxQ==}
+ prosemirror-gapcursor@1.4.1:
+ resolution: {integrity: sha512-pMdYaEnjNMSwl11yjEGtgTmLkR08m/Vl+Jj443167p9eB3HVQKhYCc4gmHVDsLPODfZfjr/MmirsdyZziXbQKw==}
+
prosemirror-history@1.4.1:
resolution: {integrity: sha512-2JZD8z2JviJrboD9cPuX/Sv/1ChFng+xh2tChQ2X4bB2HeK+rra/bmJ3xGntCcjhOqIzSDG6Id7e8RJ9QPXLEQ==}
+ prosemirror-history@1.5.0:
+ resolution: {integrity: sha512-zlzTiH01eKA55UAf1MEjtssJeHnGxO0j4K4Dpx+gnmX9n+SHNlDqI2oO1Kv1iPN5B1dm5fsljCfqKF9nFL6HRg==}
+
prosemirror-inputrules@1.5.0:
resolution: {integrity: sha512-K0xJRCmt+uSw7xesnHmcn72yBGTbY45vm8gXI4LZXbx2Z0jwh5aF9xrGQgrVPu0WbyFVFF3E/o9VhJYz6SQWnA==}
+ prosemirror-inputrules@1.5.1:
+ resolution: {integrity: sha512-7wj4uMjKaXWAQ1CDgxNzNtR9AlsuwzHfdFH1ygEHA2KHF2DOEaXl1CJfNPAKCg9qNEh4rum975QLaCiQPyY6Fw==}
+
prosemirror-keymap@1.2.3:
resolution: {integrity: sha512-4HucRlpiLd1IPQQXNqeo81BGtkY8Ai5smHhKW9jjPKRc2wQIxksg7Hl1tTI2IfT2B/LgX6bfYvXxEpJl7aKYKw==}
prosemirror-model@1.25.1:
resolution: {integrity: sha512-AUvbm7qqmpZa5d9fPKMvH1Q5bqYQvAZWOGRvxsB6iFLyycvC9MwNemNVjHVrWgjaoxAfY8XVg7DbvQ/qxvI9Eg==}
+ prosemirror-model@1.25.4:
+ resolution: {integrity: sha512-PIM7E43PBxKce8OQeezAs9j4TP+5yDpZVbuurd1h5phUxEKIu+G2a+EUZzIC5nS1mJktDJWzbqS23n1tsAf5QA==}
+
prosemirror-safari-ime-span@1.0.2:
resolution: {integrity: sha512-QJqD8s1zE/CuK56kDsUhndh5hiHh/gFnAuPOA9ytva2s85/ZEt2tNWeALTJN48DtWghSKOmiBsvVn2OlnJ5H2w==}
@@ -3937,15 +4006,27 @@ packages:
prosemirror-state@1.4.3:
resolution: {integrity: sha512-goFKORVbvPuAQaXhpbemJFRKJ2aixr+AZMGiquiqKxaucC6hlpHNZHWgz5R7dS4roHiwq9vDctE//CZ++o0W1Q==}
+ prosemirror-state@1.4.4:
+ resolution: {integrity: sha512-6jiYHH2CIGbCfnxdHbXZ12gySFY/fz/ulZE333G6bPqIZ4F+TXo9ifiR86nAHpWnfoNjOb3o5ESi7J8Uz1jXHw==}
+
prosemirror-tables@1.7.1:
resolution: {integrity: sha512-eRQ97Bf+i9Eby99QbyAiyov43iOKgWa7QCGly+lrDt7efZ1v8NWolhXiB43hSDGIXT1UXgbs4KJN3a06FGpr1Q==}
+ prosemirror-tables@1.8.5:
+ resolution: {integrity: sha512-V/0cDCsHKHe/tfWkeCmthNUcEp1IVO3p6vwN8XtwE9PZQLAZJigbw3QoraAdfJPir4NKJtNvOB8oYGKRl+t0Dw==}
+
prosemirror-transform@1.10.4:
resolution: {integrity: sha512-pwDy22nAnGqNR1feOQKHxoFkkUtepoFAd3r2hbEDsnf4wp57kKA36hXsB3njA9FtONBEwSDnDeCiJe+ItD+ykw==}
+ prosemirror-transform@1.12.0:
+ resolution: {integrity: sha512-GxboyN4AMIsoHNtz5uf2r2Ru551i5hWeCMD6E2Ib4Eogqoub0NflniaBPVQ4MrGE5yZ8JV9tUHg9qcZTTrcN4w==}
+
prosemirror-view@1.39.2:
resolution: {integrity: sha512-BmOkml0QWNob165gyUxXi5K5CVUgVPpqMEAAml/qzgKn9boLUWVPzQ6LtzXw8Cn1GtRQX4ELumPxqtLTDaAKtg==}
+ prosemirror-view@1.41.8:
+ resolution: {integrity: sha512-TnKDdohEatgyZNGCDWIdccOHXhYloJwbwU+phw/a23KBvJIR9lWQWW7WHHK3vBdOLDNuF7TaX98GObUZOWkOnA==}
+
prosemirror-virtual-cursor@0.4.2:
resolution: {integrity: sha512-pUMKnIuOhhnMcgIJUjhIQTVJruBEGxfMBVQSrK0g2qhGPDm1i12KdsVaFw15dYk+29tZcxjMeR7P5VDKwmbwJg==}
peerDependencies:
@@ -4407,6 +4488,7 @@ packages:
source-map@0.8.0-beta.0:
resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==}
engines: {node: '>= 8'}
+ deprecated: The work that was done in this beta branch won't be included in future versions
sourcemap-codec@1.4.8:
resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==}
@@ -4795,14 +4877,17 @@ packages:
vue:
optional: true
- vue@3.5.13:
- resolution: {integrity: sha512-wmeiSMxkZCSc+PM2w2VRsOYAZC8GdipNFRTsLSfodVqI9mbejKeXEGr8SckuLnrQPGe3oJN5c3K0vpoU9q/wCQ==}
+ vue@3.5.34:
+ resolution: {integrity: sha512-WdLBG9gm02OgJIG9axd5Hpx0TFLdzVgfG2evFFu8Rur5O/IoGc5cMjnjh3tPL6GnRGsYvUhBSKVPYVcxRKpMCA==}
peerDependencies:
typescript: '*'
peerDependenciesMeta:
typescript:
optional: true
+ vuew@1.0.0-security:
+ resolution: {integrity: sha512-4jK3JubW7J+Kc4Hng5OK4tQCh+ESJpTGOBfsPWQ2svdEal6llacgjF0NuiqeZF9NYK7v2PJEXHRsR8i1i7ZpzA==}
+
w3c-keyname@2.2.8:
resolution: {integrity: sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==}
@@ -5007,7 +5092,7 @@ snapshots:
'@babel/code-frame@7.27.1':
dependencies:
- '@babel/helper-validator-identifier': 7.27.1
+ '@babel/helper-validator-identifier': 7.28.5
js-tokens: 4.0.0
picocolors: 1.1.1
@@ -5021,10 +5106,10 @@ snapshots:
'@babel/helper-compilation-targets': 7.27.2
'@babel/helper-module-transforms': 7.27.1(@babel/core@7.27.1)
'@babel/helpers': 7.27.1
- '@babel/parser': 7.27.2
+ '@babel/parser': 7.29.3
'@babel/template': 7.27.2
'@babel/traverse': 7.27.1
- '@babel/types': 7.27.1
+ '@babel/types': 7.29.0
convert-source-map: 2.0.0
debug: 4.4.0
gensync: 1.0.0-beta.2
@@ -5035,15 +5120,15 @@ snapshots:
'@babel/generator@7.27.1':
dependencies:
- '@babel/parser': 7.27.2
- '@babel/types': 7.27.1
+ '@babel/parser': 7.29.3
+ '@babel/types': 7.29.0
'@jridgewell/gen-mapping': 0.3.8
'@jridgewell/trace-mapping': 0.3.25
jsesc: 3.1.0
'@babel/helper-annotate-as-pure@7.27.1':
dependencies:
- '@babel/types': 7.27.1
+ '@babel/types': 7.29.0
'@babel/helper-compilation-targets@7.27.2':
dependencies:
@@ -5087,14 +5172,14 @@ snapshots:
'@babel/helper-member-expression-to-functions@7.27.1':
dependencies:
'@babel/traverse': 7.27.1
- '@babel/types': 7.27.1
+ '@babel/types': 7.29.0
transitivePeerDependencies:
- supports-color
'@babel/helper-module-imports@7.27.1':
dependencies:
'@babel/traverse': 7.27.1
- '@babel/types': 7.27.1
+ '@babel/types': 7.29.0
transitivePeerDependencies:
- supports-color
@@ -5102,14 +5187,14 @@ snapshots:
dependencies:
'@babel/core': 7.27.1
'@babel/helper-module-imports': 7.27.1
- '@babel/helper-validator-identifier': 7.27.1
+ '@babel/helper-validator-identifier': 7.28.5
'@babel/traverse': 7.27.1
transitivePeerDependencies:
- supports-color
'@babel/helper-optimise-call-expression@7.27.1':
dependencies:
- '@babel/types': 7.27.1
+ '@babel/types': 7.29.0
'@babel/helper-plugin-utils@7.27.1': {}
@@ -5134,7 +5219,7 @@ snapshots:
'@babel/helper-skip-transparent-expression-wrappers@7.27.1':
dependencies:
'@babel/traverse': 7.27.1
- '@babel/types': 7.27.1
+ '@babel/types': 7.29.0
transitivePeerDependencies:
- supports-color
@@ -5142,25 +5227,31 @@ snapshots:
'@babel/helper-validator-identifier@7.27.1': {}
+ '@babel/helper-validator-identifier@7.28.5': {}
+
'@babel/helper-validator-option@7.27.1': {}
'@babel/helper-wrap-function@7.27.1':
dependencies:
'@babel/template': 7.27.2
'@babel/traverse': 7.27.1
- '@babel/types': 7.27.1
+ '@babel/types': 7.29.0
transitivePeerDependencies:
- supports-color
'@babel/helpers@7.27.1':
dependencies:
'@babel/template': 7.27.2
- '@babel/types': 7.27.1
+ '@babel/types': 7.29.0
'@babel/parser@7.27.2':
dependencies:
'@babel/types': 7.27.1
+ '@babel/parser@7.29.3':
+ dependencies:
+ '@babel/types': 7.29.0
+
'@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.27.1(@babel/core@7.27.1)':
dependencies:
'@babel/core': 7.27.1
@@ -5378,7 +5469,7 @@ snapshots:
'@babel/core': 7.27.1
'@babel/helper-module-transforms': 7.27.1(@babel/core@7.27.1)
'@babel/helper-plugin-utils': 7.27.1
- '@babel/helper-validator-identifier': 7.27.1
+ '@babel/helper-validator-identifier': 7.28.5
'@babel/traverse': 7.27.1
transitivePeerDependencies:
- supports-color
@@ -5614,7 +5705,7 @@ snapshots:
dependencies:
'@babel/core': 7.27.1
'@babel/helper-plugin-utils': 7.27.1
- '@babel/types': 7.27.1
+ '@babel/types': 7.29.0
esutils: 2.0.3
'@babel/runtime@7.27.1': {}
@@ -5622,16 +5713,16 @@ snapshots:
'@babel/template@7.27.2':
dependencies:
'@babel/code-frame': 7.27.1
- '@babel/parser': 7.27.2
- '@babel/types': 7.27.1
+ '@babel/parser': 7.29.3
+ '@babel/types': 7.29.0
'@babel/traverse@7.27.1':
dependencies:
'@babel/code-frame': 7.27.1
'@babel/generator': 7.27.1
- '@babel/parser': 7.27.2
+ '@babel/parser': 7.29.3
'@babel/template': 7.27.2
- '@babel/types': 7.27.1
+ '@babel/types': 7.29.0
debug: 4.4.0
globals: 11.12.0
transitivePeerDependencies:
@@ -5642,6 +5733,11 @@ snapshots:
'@babel/helper-string-parser': 7.27.1
'@babel/helper-validator-identifier': 7.27.1
+ '@babel/types@7.29.0':
+ dependencies:
+ '@babel/helper-string-parser': 7.27.1
+ '@babel/helper-validator-identifier': 7.28.5
+
'@braintree/sanitize-url@6.0.2': {}
'@bufbuild/protobuf@2.3.0': {}
@@ -6258,10 +6354,10 @@ snapshots:
dependencies:
'@fortawesome/fontawesome-common-types': 6.7.2
- '@fortawesome/vue-fontawesome@3.0.8(@fortawesome/fontawesome-svg-core@6.7.2)(vue@3.5.13(typescript@5.8.3))':
+ '@fortawesome/vue-fontawesome@3.0.8(@fortawesome/fontawesome-svg-core@6.7.2)(vue@3.5.34(typescript@5.8.3))':
dependencies:
'@fortawesome/fontawesome-svg-core': 6.7.2
- vue: 3.5.13(typescript@5.8.3)
+ vue: 3.5.34(typescript@5.8.3)
'@humanfs/core@0.19.1': {}
@@ -6279,7 +6375,7 @@ snapshots:
'@jridgewell/gen-mapping@0.3.8':
dependencies:
'@jridgewell/set-array': 1.2.1
- '@jridgewell/sourcemap-codec': 1.5.0
+ '@jridgewell/sourcemap-codec': 1.5.5
'@jridgewell/trace-mapping': 0.3.25
'@jridgewell/resolve-uri@3.1.2': {}
@@ -6291,12 +6387,12 @@ snapshots:
'@jridgewell/gen-mapping': 0.3.8
'@jridgewell/trace-mapping': 0.3.25
- '@jridgewell/sourcemap-codec@1.5.0': {}
+ '@jridgewell/sourcemap-codec@1.5.5': {}
'@jridgewell/trace-mapping@0.3.25':
dependencies:
'@jridgewell/resolve-uri': 3.1.2
- '@jridgewell/sourcemap-codec': 1.5.0
+ '@jridgewell/sourcemap-codec': 1.5.5
'@lezer/common@1.2.3': {}
@@ -6417,7 +6513,7 @@ snapshots:
nanoid: 5.1.5
tslib: 2.8.1
unist-util-visit: 5.0.0
- vue: 3.5.13(typescript@5.8.3)
+ vue: 3.5.34(typescript@5.8.3)
transitivePeerDependencies:
- supports-color
- typescript
@@ -6435,7 +6531,19 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@milkdown/crepe@7.10.2(prosemirror-model@1.25.1)(prosemirror-state@1.4.3)(prosemirror-view@1.39.2)(typescript@5.8.3)':
+ '@milkdown/core@7.21.1':
+ dependencies:
+ '@milkdown/ctx': 7.21.1
+ '@milkdown/exception': 7.21.1
+ '@milkdown/prose': 7.21.1
+ '@milkdown/transformer': 7.21.1
+ remark-parse: 11.0.0
+ remark-stringify: 11.0.0
+ unified: 11.0.5
+ transitivePeerDependencies:
+ - supports-color
+
+ '@milkdown/crepe@7.10.2(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(typescript@5.8.3)':
dependencies:
'@codemirror/commands': 6.8.1
'@codemirror/language': 6.11.0
@@ -6448,11 +6556,11 @@ snapshots:
codemirror: 6.0.1
katex: 0.16.22
nanoid: 5.1.5
- prosemirror-virtual-cursor: 0.4.2(prosemirror-model@1.25.1)(prosemirror-state@1.4.3)(prosemirror-view@1.39.2)
+ prosemirror-virtual-cursor: 0.4.2(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)
remark-math: 6.0.0
tslib: 2.8.1
unist-util-visit: 5.0.0
- vue: 3.5.13(typescript@5.8.3)
+ vue: 3.5.34(typescript@5.8.3)
transitivePeerDependencies:
- prosemirror-model
- prosemirror-state
@@ -6465,10 +6573,16 @@ snapshots:
'@milkdown/exception': 7.10.2
tslib: 2.8.1
+ '@milkdown/ctx@7.21.1':
+ dependencies:
+ '@milkdown/exception': 7.21.1
+
'@milkdown/exception@7.10.2':
dependencies:
tslib: 2.8.1
+ '@milkdown/exception@7.21.1': {}
+
'@milkdown/kit@7.10.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.36.7)(typescript@5.8.3)':
dependencies:
'@milkdown/components': 7.10.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.36.7)(typescript@5.8.3)
@@ -6521,7 +6635,7 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@milkdown/plugin-collab@7.10.2(y-prosemirror@1.3.5(prosemirror-model@1.25.1)(prosemirror-state@1.4.3)(prosemirror-view@1.39.2)(y-protocols@1.0.6(yjs@13.6.26))(yjs@13.6.26))(y-protocols@1.0.6(yjs@13.6.26))(yjs@13.6.26)':
+ '@milkdown/plugin-collab@7.10.2(y-prosemirror@1.3.5(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(y-protocols@1.0.6(yjs@13.6.26))(yjs@13.6.26))(y-protocols@1.0.6(yjs@13.6.26))(yjs@13.6.26)':
dependencies:
'@milkdown/core': 7.10.2
'@milkdown/ctx': 7.10.2
@@ -6529,7 +6643,7 @@ snapshots:
'@milkdown/prose': 7.10.2
'@milkdown/utils': 7.10.2
tslib: 2.8.1
- y-prosemirror: 1.3.5(prosemirror-model@1.25.1)(prosemirror-state@1.4.3)(prosemirror-view@1.39.2)(y-protocols@1.0.6(yjs@13.6.26))(yjs@13.6.26)
+ y-prosemirror: 1.3.5(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(y-protocols@1.0.6(yjs@13.6.26))(yjs@13.6.26)
y-protocols: 1.0.6(yjs@13.6.26)
yjs: 13.6.26
transitivePeerDependencies:
@@ -6674,6 +6788,23 @@ snapshots:
prosemirror-view: 1.39.2
tslib: 2.8.1
+ '@milkdown/prose@7.21.1':
+ dependencies:
+ '@milkdown/exception': 7.21.1
+ prosemirror-changeset: 2.4.1
+ prosemirror-commands: 1.7.1
+ prosemirror-dropcursor: 1.8.2
+ prosemirror-gapcursor: 1.4.1
+ prosemirror-history: 1.5.0
+ prosemirror-inputrules: 1.5.1
+ prosemirror-keymap: 1.2.3
+ prosemirror-model: 1.25.4
+ prosemirror-schema-list: 1.5.1
+ prosemirror-state: 1.4.4
+ prosemirror-tables: 1.8.5
+ prosemirror-transform: 1.12.0
+ prosemirror-view: 1.41.8
+
'@milkdown/transformer@7.10.2':
dependencies:
'@milkdown/exception': 7.10.2
@@ -6686,6 +6817,15 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ '@milkdown/transformer@7.21.1':
+ dependencies:
+ '@milkdown/exception': 7.21.1
+ '@milkdown/prose': 7.21.1
+ remark: 15.0.1
+ unified: 11.0.5
+ transitivePeerDependencies:
+ - supports-color
+
'@milkdown/utils@7.10.2':
dependencies:
'@milkdown/core': 7.10.2
@@ -7332,10 +7472,10 @@ snapshots:
'@typescript-eslint/types': 8.32.0
eslint-visitor-keys: 4.2.0
- '@vitejs/plugin-vue@5.2.4(vite@6.3.5(@types/node@22.15.17)(jiti@2.4.2)(sass-embedded@1.88.0)(sass@1.51.0)(terser@5.39.0))(vue@3.5.13(typescript@5.8.3))':
+ '@vitejs/plugin-vue@5.2.4(vite@6.3.5(@types/node@22.15.17)(jiti@2.4.2)(sass-embedded@1.88.0)(sass@1.51.0)(terser@5.39.0))(vue@3.5.34(typescript@5.8.3))':
dependencies:
vite: 6.3.5(@types/node@22.15.17)(jiti@2.4.2)(sass-embedded@1.88.0)(sass@1.51.0)(terser@5.39.0)
- vue: 3.5.13(typescript@5.8.3)
+ vue: 3.5.34(typescript@5.8.3)
'@volar/language-core@2.4.13':
dependencies:
@@ -7357,27 +7497,40 @@ snapshots:
estree-walker: 2.0.2
source-map-js: 1.2.1
+ '@vue/compiler-core@3.5.34':
+ dependencies:
+ '@babel/parser': 7.29.3
+ '@vue/shared': 3.5.34
+ entities: 7.0.1
+ estree-walker: 2.0.2
+ source-map-js: 1.2.1
+
'@vue/compiler-dom@3.5.13':
dependencies:
'@vue/compiler-core': 3.5.13
'@vue/shared': 3.5.13
- '@vue/compiler-sfc@3.5.13':
+ '@vue/compiler-dom@3.5.34':
dependencies:
- '@babel/parser': 7.27.2
- '@vue/compiler-core': 3.5.13
- '@vue/compiler-dom': 3.5.13
- '@vue/compiler-ssr': 3.5.13
- '@vue/shared': 3.5.13
+ '@vue/compiler-core': 3.5.34
+ '@vue/shared': 3.5.34
+
+ '@vue/compiler-sfc@3.5.34':
+ dependencies:
+ '@babel/parser': 7.29.3
+ '@vue/compiler-core': 3.5.34
+ '@vue/compiler-dom': 3.5.34
+ '@vue/compiler-ssr': 3.5.34
+ '@vue/shared': 3.5.34
estree-walker: 2.0.2
- magic-string: 0.30.17
- postcss: 8.5.3
+ magic-string: 0.30.21
+ postcss: 8.5.14
source-map-js: 1.2.1
- '@vue/compiler-ssr@3.5.13':
+ '@vue/compiler-ssr@3.5.34':
dependencies:
- '@vue/compiler-dom': 3.5.13
- '@vue/shared': 3.5.13
+ '@vue/compiler-dom': 3.5.34
+ '@vue/shared': 3.5.34
'@vue/compiler-vue2@2.7.16':
dependencies:
@@ -7421,34 +7574,36 @@ snapshots:
optionalDependencies:
typescript: 5.8.3
- '@vue/reactivity@3.5.13':
+ '@vue/reactivity@3.5.34':
dependencies:
- '@vue/shared': 3.5.13
+ '@vue/shared': 3.5.34
- '@vue/runtime-core@3.5.13':
+ '@vue/runtime-core@3.5.34':
dependencies:
- '@vue/reactivity': 3.5.13
- '@vue/shared': 3.5.13
+ '@vue/reactivity': 3.5.34
+ '@vue/shared': 3.5.34
- '@vue/runtime-dom@3.5.13':
+ '@vue/runtime-dom@3.5.34':
dependencies:
- '@vue/reactivity': 3.5.13
- '@vue/runtime-core': 3.5.13
- '@vue/shared': 3.5.13
- csstype: 3.1.3
+ '@vue/reactivity': 3.5.34
+ '@vue/runtime-core': 3.5.34
+ '@vue/shared': 3.5.34
+ csstype: 3.2.3
- '@vue/server-renderer@3.5.13(vue@3.5.13(typescript@5.8.3))':
+ '@vue/server-renderer@3.5.34(vue@3.5.34(typescript@5.8.3))':
dependencies:
- '@vue/compiler-ssr': 3.5.13
- '@vue/shared': 3.5.13
- vue: 3.5.13(typescript@5.8.3)
+ '@vue/compiler-ssr': 3.5.34
+ '@vue/shared': 3.5.34
+ vue: 3.5.34(typescript@5.8.3)
'@vue/shared@3.5.13': {}
- '@vue/tsconfig@0.7.0(typescript@5.8.3)(vue@3.5.13(typescript@5.8.3))':
+ '@vue/shared@3.5.34': {}
+
+ '@vue/tsconfig@0.7.0(typescript@5.8.3)(vue@3.5.34(typescript@5.8.3))':
optionalDependencies:
typescript: 5.8.3
- vue: 3.5.13(typescript@5.8.3)
+ vue: 3.5.34(typescript@5.8.3)
'@zip.js/zip.js@2.7.60': {}
@@ -7728,6 +7883,8 @@ snapshots:
csstype@3.1.3: {}
+ csstype@3.2.3: {}
+
cytoscape-cose-bilkent@4.1.0(cytoscape@3.32.0):
dependencies:
cose-base: 1.0.3
@@ -8003,6 +8160,8 @@ snapshots:
entities@4.5.0: {}
+ entities@7.0.1: {}
+
es-abstract@1.23.9:
dependencies:
array-buffer-byte-length: 1.0.2
@@ -8764,9 +8923,9 @@ snapshots:
dependencies:
sourcemap-codec: 1.4.8
- magic-string@0.30.17:
+ magic-string@0.30.21:
dependencies:
- '@jridgewell/sourcemap-codec': 1.5.0
+ '@jridgewell/sourcemap-codec': 1.5.5
markdown-table@3.0.4: {}
@@ -9498,6 +9657,12 @@ snapshots:
cssesc: 3.0.0
util-deprecate: 1.0.2
+ postcss@8.5.14:
+ dependencies:
+ nanoid: 3.3.11
+ picocolors: 1.1.1
+ source-map-js: 1.2.1
+
postcss@8.5.3:
dependencies:
nanoid: 3.3.11
@@ -9520,6 +9685,10 @@ snapshots:
dependencies:
prosemirror-transform: 1.10.4
+ prosemirror-changeset@2.4.1:
+ dependencies:
+ prosemirror-transform: 1.12.0
+
prosemirror-commands@1.7.1:
dependencies:
prosemirror-model: 1.25.1
@@ -9539,6 +9708,13 @@ snapshots:
prosemirror-state: 1.4.3
prosemirror-view: 1.39.2
+ prosemirror-gapcursor@1.4.1:
+ dependencies:
+ prosemirror-keymap: 1.2.3
+ prosemirror-model: 1.25.4
+ prosemirror-state: 1.4.4
+ prosemirror-view: 1.41.8
+
prosemirror-history@1.4.1:
dependencies:
prosemirror-state: 1.4.3
@@ -9546,11 +9722,23 @@ snapshots:
prosemirror-view: 1.39.2
rope-sequence: 1.3.4
+ prosemirror-history@1.5.0:
+ dependencies:
+ prosemirror-state: 1.4.4
+ prosemirror-transform: 1.12.0
+ prosemirror-view: 1.41.8
+ rope-sequence: 1.3.4
+
prosemirror-inputrules@1.5.0:
dependencies:
prosemirror-state: 1.4.3
prosemirror-transform: 1.10.4
+ prosemirror-inputrules@1.5.1:
+ dependencies:
+ prosemirror-state: 1.4.4
+ prosemirror-transform: 1.12.0
+
prosemirror-keymap@1.2.3:
dependencies:
prosemirror-state: 1.4.3
@@ -9560,6 +9748,10 @@ snapshots:
dependencies:
orderedmap: 2.1.1
+ prosemirror-model@1.25.4:
+ dependencies:
+ orderedmap: 2.1.1
+
prosemirror-safari-ime-span@1.0.2:
dependencies:
prosemirror-state: 1.4.3
@@ -9577,6 +9769,12 @@ snapshots:
prosemirror-transform: 1.10.4
prosemirror-view: 1.39.2
+ prosemirror-state@1.4.4:
+ dependencies:
+ prosemirror-model: 1.25.4
+ prosemirror-transform: 1.12.0
+ prosemirror-view: 1.41.8
+
prosemirror-tables@1.7.1:
dependencies:
prosemirror-keymap: 1.2.3
@@ -9585,21 +9783,39 @@ snapshots:
prosemirror-transform: 1.10.4
prosemirror-view: 1.39.2
+ prosemirror-tables@1.8.5:
+ dependencies:
+ prosemirror-keymap: 1.2.3
+ prosemirror-model: 1.25.4
+ prosemirror-state: 1.4.4
+ prosemirror-transform: 1.12.0
+ prosemirror-view: 1.41.8
+
prosemirror-transform@1.10.4:
dependencies:
prosemirror-model: 1.25.1
+ prosemirror-transform@1.12.0:
+ dependencies:
+ prosemirror-model: 1.25.4
+
prosemirror-view@1.39.2:
dependencies:
prosemirror-model: 1.25.1
prosemirror-state: 1.4.3
prosemirror-transform: 1.10.4
- prosemirror-virtual-cursor@0.4.2(prosemirror-model@1.25.1)(prosemirror-state@1.4.3)(prosemirror-view@1.39.2):
+ prosemirror-view@1.41.8:
+ dependencies:
+ prosemirror-model: 1.25.4
+ prosemirror-state: 1.4.4
+ prosemirror-transform: 1.12.0
+
+ prosemirror-virtual-cursor@0.4.2(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8):
optionalDependencies:
- prosemirror-model: 1.25.1
- prosemirror-state: 1.4.3
- prosemirror-view: 1.39.2
+ prosemirror-model: 1.25.4
+ prosemirror-state: 1.4.4
+ prosemirror-view: 1.41.8
proxy-addr@2.0.7:
dependencies:
@@ -10463,23 +10679,23 @@ snapshots:
transitivePeerDependencies:
- supports-color
- vue-observe-visibility@2.0.0-alpha.1(vue@3.5.13(typescript@5.8.3)):
+ vue-observe-visibility@2.0.0-alpha.1(vue@3.5.34(typescript@5.8.3)):
dependencies:
- vue: 3.5.13(typescript@5.8.3)
+ vue: 3.5.34(typescript@5.8.3)
- vue-pdf-embed@2.1.2(vue@3.5.13(typescript@5.8.3)):
+ vue-pdf-embed@2.1.2(vue@3.5.34(typescript@5.8.3)):
dependencies:
pdfjs-dist: 4.10.38
- vue: 3.5.13(typescript@5.8.3)
+ vue: 3.5.34(typescript@5.8.3)
- vue-resize@2.0.0-alpha.1(vue@3.5.13(typescript@5.8.3)):
+ vue-resize@2.0.0-alpha.1(vue@3.5.34(typescript@5.8.3)):
dependencies:
- vue: 3.5.13(typescript@5.8.3)
+ vue: 3.5.34(typescript@5.8.3)
- vue-router@4.5.1(vue@3.5.13(typescript@5.8.3)):
+ vue-router@4.5.1(vue@3.5.34(typescript@5.8.3)):
dependencies:
'@vue/devtools-api': 6.6.4
- vue: 3.5.13(typescript@5.8.3)
+ vue: 3.5.34(typescript@5.8.3)
vue-tsc@2.2.10(typescript@5.8.3):
dependencies:
@@ -10487,27 +10703,29 @@ snapshots:
'@vue/language-core': 2.2.10(typescript@5.8.3)
typescript: 5.8.3
- vue-virtual-scroller@2.0.0-beta.8(vue@3.5.13(typescript@5.8.3)):
+ vue-virtual-scroller@2.0.0-beta.8(vue@3.5.34(typescript@5.8.3)):
dependencies:
mitt: 2.1.0
- vue: 3.5.13(typescript@5.8.3)
- vue-observe-visibility: 2.0.0-alpha.1(vue@3.5.13(typescript@5.8.3))
- vue-resize: 2.0.0-alpha.1(vue@3.5.13(typescript@5.8.3))
+ vue: 3.5.34(typescript@5.8.3)
+ vue-observe-visibility: 2.0.0-alpha.1(vue@3.5.34(typescript@5.8.3))
+ vue-resize: 2.0.0-alpha.1(vue@3.5.34(typescript@5.8.3))
- vue3-toastify@0.2.8(vue@3.5.13(typescript@5.8.3)):
+ vue3-toastify@0.2.8(vue@3.5.34(typescript@5.8.3)):
optionalDependencies:
- vue: 3.5.13(typescript@5.8.3)
+ vue: 3.5.34(typescript@5.8.3)
- vue@3.5.13(typescript@5.8.3):
+ vue@3.5.34(typescript@5.8.3):
dependencies:
- '@vue/compiler-dom': 3.5.13
- '@vue/compiler-sfc': 3.5.13
- '@vue/runtime-dom': 3.5.13
- '@vue/server-renderer': 3.5.13(vue@3.5.13(typescript@5.8.3))
- '@vue/shared': 3.5.13
+ '@vue/compiler-dom': 3.5.34
+ '@vue/compiler-sfc': 3.5.34
+ '@vue/runtime-dom': 3.5.34
+ '@vue/server-renderer': 3.5.34(vue@3.5.34(typescript@5.8.3))
+ '@vue/shared': 3.5.34
optionalDependencies:
typescript: 5.8.3
+ vuew@1.0.0-security: {}
+
w3c-keyname@2.2.8: {}
web-streams-polyfill@3.3.3: {}
@@ -10710,12 +10928,12 @@ snapshots:
monaco-editor: 0.52.2
yjs: 13.6.26
- y-prosemirror@1.3.5(prosemirror-model@1.25.1)(prosemirror-state@1.4.3)(prosemirror-view@1.39.2)(y-protocols@1.0.6(yjs@13.6.26))(yjs@13.6.26):
+ y-prosemirror@1.3.5(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(y-protocols@1.0.6(yjs@13.6.26))(yjs@13.6.26):
dependencies:
lib0: 0.2.107
- prosemirror-model: 1.25.1
- prosemirror-state: 1.4.3
- prosemirror-view: 1.39.2
+ prosemirror-model: 1.25.4
+ prosemirror-state: 1.4.4
+ prosemirror-view: 1.41.8
y-protocols: 1.0.6(yjs@13.6.26)
yjs: 13.6.26
diff --git a/src/components/InvitePeopleModal.vue b/src/components/InvitePeopleModal.vue
index 948342a8..0a6a28a2 100644
--- a/src/components/InvitePeopleModal.vue
+++ b/src/components/InvitePeopleModal.vue
@@ -9,14 +9,26 @@
- {{ inviteLink }}
+
+ {{ inviteLink }}
+
+
+
+
Enter an email address or NDN name below
-
-
+
@@ -429,9 +441,42 @@ function displayProfileName(name: string): string {
return utils.stripNdnPrefixForDisplay(name);
}
+async function copyLink() {
+ await navigator.clipboard.writeText(inviteLink.value);
+ Toast.success('Invite link copied to clipboard!');
+}
+
diff --git a/src/components/landing/DemoDashboard.vue b/src/components/landing/DemoDashboard.vue
new file mode 100644
index 00000000..872a18fc
--- /dev/null
+++ b/src/components/landing/DemoDashboard.vue
@@ -0,0 +1,70 @@
+
+
+
+
+
+
Dashboard
+
+ You can create or join one or more workspaces below
+
+
+
+
+
+
+
+
+
+
Don't see what you are looking for?
+
+
+
+
+
+ Create a new workspace
+
+
+ Join a workspace
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/landing/DemoJoinWorkspaceModal.vue b/src/components/landing/DemoJoinWorkspaceModal.vue
new file mode 100644
index 00000000..ab2bb2f2
--- /dev/null
+++ b/src/components/landing/DemoJoinWorkspaceModal.vue
@@ -0,0 +1,44 @@
+
+
+
Join Workspace
+
+
+
Dashboard Label
+
+
+
+
A readable label for the workspace on your dashboard
+
+
+
+
NDN Name
+
+
+
+
Unique network identifier of the workspace
+
+
+
+
Pre-Shared Key
+
+
+
+
Ask the owner of the workspace for the key
+
+
+
+
+
+
+
diff --git a/src/components/landing/DemoModal.vue b/src/components/landing/DemoModal.vue
new file mode 100644
index 00000000..4ce80ff0
--- /dev/null
+++ b/src/components/landing/DemoModal.vue
@@ -0,0 +1,87 @@
+
+
+
{{ title }}
+
{{ description }}
+
+
+ {{ link }}
+
+
+
+
+
+
{{ inputLabel }}
+
+
+
+
+
+
+
diff --git a/src/components/landing/DemoSidebar.vue b/src/components/landing/DemoSidebar.vue
new file mode 100644
index 00000000..e8d541e0
--- /dev/null
+++ b/src/components/landing/DemoSidebar.vue
@@ -0,0 +1,184 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/landing/HelpComponent.vue b/src/components/landing/HelpComponent.vue
new file mode 100644
index 00000000..bd99a669
--- /dev/null
+++ b/src/components/landing/HelpComponent.vue
@@ -0,0 +1,217 @@
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+ Creating a Workspace
+
+
+ Click on Dashboard in the sidebar to access your workspaces.
+
+
+
+
+
+
+ Click the Create a new workspace button and fill in the workspace details.
+
+
+
+
+
+
+ Your workspace is ready. Invite team members or create projects and channels.
+
+
+
+
+ Joining a Workspace
+
+
+ Click on Dashboard in the sidebar to access your workspaces.
+
+
+
+
+
+
+ Click the Join a workspace button and enter the workspace details.
+
+
+
+
+
+
+ You're now part of the workspace. Create projects and channels to collaborate.
+
+
+
+
+ Inviting Others
+ Here's how to invite someone to your workspace:
+
+
+ Click Invite people in the sidebar under the Workspace section.
+
+
+
+
+
+
+ Click the Copy Invite Link button in the modal.
+
+
+
+
+
+
+ Share the link with your teammate via chat, email, or any method you prefer.
+
+
+
+ Your teammate opens the link and clicks Join on the dashboard.
+
+
+
+
+
+
+
+
+
diff --git a/src/components/landing/StepItem.vue b/src/components/landing/StepItem.vue
new file mode 100644
index 00000000..caefcf2f
--- /dev/null
+++ b/src/components/landing/StepItem.vue
@@ -0,0 +1,91 @@
+
+
+
+
+
+
{{ title }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/router/index.ts b/src/router/index.ts
index da7b734e..08afe89a 100644
--- a/src/router/index.ts
+++ b/src/router/index.ts
@@ -5,6 +5,7 @@ import SpaceDiscussView from '@/views/SpaceDiscussView.vue';
import SpaceProjectView from '@/views/SpaceProjectView.vue';
import ProjectFileView from '@/views/ProjectFileView.vue';
import AboutView from '@/views/AboutView.vue';
+import HelpView from '@/views/HelpView.vue';
const router = createRouter({
history: createWebHistory(import.meta.env.BASE_URL),
@@ -44,6 +45,11 @@ const router = createRouter({
name: 'about',
component: AboutView,
},
+ {
+ path: '/help',
+ name: 'help',
+ component: HelpView,
+ },
{
path: '/:pathMatch(.*)*',
redirect: '/',
diff --git a/src/views/AboutView.vue b/src/views/AboutView.vue
index b04b053c..87342e18 100644
--- a/src/views/AboutView.vue
+++ b/src/views/AboutView.vue
@@ -1,10 +1,9 @@
diff --git a/src/views/HelpView.vue b/src/views/HelpView.vue
new file mode 100644
index 00000000..1400bfae
--- /dev/null
+++ b/src/views/HelpView.vue
@@ -0,0 +1,38 @@
+
+
+
+
+
+
Help
+
+
+
+
+
+
From 4743ba34f13a1dad23b77222cc6b7801adaaab5f Mon Sep 17 00:00:00 2001
From: Sirapop Theeranantachai
Date: Wed, 13 May 2026 05:28:40 -0700
Subject: [PATCH 02/10] Move help page TOC to sidebar under Getting Started
- Remove inline TOC from HelpComponent
- Add help-toc submenu in NavBar sidebar under Getting Started
- Add GlobalBus event for help-toc-active tracking
- TOC follows scroll position via GlobalBus events
- Add tree-line styling matching project tree
- Remove Help title from page header
---
src/components/NavBar.vue | 75 +++++++
src/components/landing/HelpComponent.vue | 238 ++++++++++-------------
src/services/event-bus.ts | 6 +
src/views/HelpView.vue | 1 -
4 files changed, 181 insertions(+), 139 deletions(-)
diff --git a/src/components/NavBar.vue b/src/components/NavBar.vue
index beabc8de..fd086bcf 100644
--- a/src/components/NavBar.vue
+++ b/src/components/NavBar.vue
@@ -48,6 +48,16 @@
Getting Started
+
@@ -260,6 +270,22 @@ const projectFiles = ref([] as IProjectFile[]);
const connState = ref(globalThis._ndnd_conn_state);
+const helpTocItems = [
+ { id: 'creating-workspace', label: 'Creating a Workspace' },
+ { id: 'joining-workspace', label: 'Joining a Workspace' },
+ { id: 'inviting-others', label: 'Inviting Others' },
+];
+const activeHelpSection = ref('creating-workspace');
+
+function scrollToHelp(id: string) {
+ activeHelpSection.value = id;
+ window.location.hash = id;
+ const el = document.getElementById(id);
+ if (el) {
+ el.scrollIntoView({ behavior: 'auto' });
+ }
+}
+
const busListeners = {
'project-list': (projs: IProject[]) => (projects.value = projs),
'project-files': (name: string, files: IProjectFile[]) => {
@@ -273,6 +299,9 @@ const busListeners = {
Toast.info('Disconnected - you are offline');
}
},
+ 'help-toc-active': (id: string) => {
+ activeHelpSection.value = id;
+ },
};
const showNotifBubble = ref(false);
@@ -314,6 +343,7 @@ onMounted(async () => {
GlobalBus.addListener('project-files', busListeners['project-files']);
GlobalBus.addListener('chat-channels', busListeners['chat-channels']);
GlobalBus.addListener('conn-change', busListeners['conn-change']);
+ GlobalBus.addListener('help-toc-active', busListeners['help-toc-active']);
interval = setInterval(() => {
setNotification();
},
@@ -329,6 +359,7 @@ onUnmounted(() => {
GlobalBus.removeListener('project-files', busListeners['project-files']);
GlobalBus.removeListener('chat-channels', busListeners['chat-channels']);
GlobalBus.removeListener('conn-change', busListeners['conn-change']);
+ GlobalBus.removeListener('help-toc-active', busListeners['help-toc-active']);
clearInterval(interval);
preferredDark?.removeEventListener('change', onThemeMediaChange);
});
@@ -774,5 +805,49 @@ async function sosRequest() {
&.resizing .sidebar-resizer::before {
background: rgba(255, 255, 255, 0.22);
}
+
+ .help-toc {
+ list-style: none;
+ margin: 4px 0px 4px 10px;
+ padding: 0 0 0 16px;
+ border-left: 1px solid rgba(255, 255, 255, 0.12);
+ position: relative;
+
+ li {
+ margin: 0;
+ padding: 0;
+ position: relative;
+
+ a {
+ display: block;
+ padding: 6px 10px;
+ font-size: 0.85rem;
+ color: rgba(255, 255, 255, 0.8);
+ text-decoration: none;
+ border-radius: 6px;
+ position: relative;
+
+ &:hover {
+ background: rgba(255, 255, 255, 0.06);
+ }
+
+ &.is-active {
+ background: rgba(255, 255, 255, 0.08);
+ color: white;
+
+ &::before {
+ content: '';
+ position: absolute;
+ left: -17px;
+ top: 0;
+ bottom: 0;
+ width: 3px;
+ border-radius: 6px;
+ background: var(--sidebar-highlight-bg);
+ }
+ }
+ }
+ }
+ }
}
diff --git a/src/components/landing/HelpComponent.vue b/src/components/landing/HelpComponent.vue
index bd99a669..166fc3c4 100644
--- a/src/components/landing/HelpComponent.vue
+++ b/src/components/landing/HelpComponent.vue
@@ -1,196 +1,158 @@
-
-
-
- {{ item.label }}
-
-
-
-
-
- Creating a Workspace
-
-
- Click on Dashboard in the sidebar to access your workspaces.
-
-
-
-
-
-
- Click the Create a new workspace button and fill in the workspace details.
-
-
-
-
-
-
- Your workspace is ready. Invite team members or create projects and channels.
-
-
-
-
- Joining a Workspace
-
-
- Click on Dashboard in the sidebar to access your workspaces.
-
-
-
-
-
-
- Click the Join a workspace button and enter the workspace details.
-
-
-
-
-
-
- You're now part of the workspace. Create projects and channels to collaborate.
-
-
-
-
- Inviting Others
- Here's how to invite someone to your workspace:
-
-
- Click Invite people in the sidebar under the Workspace section.
-
-
-
-
-
-
- Click the Copy Invite Link button in the modal.
-
-
-
-
-
-
- Share the link with your teammate via chat, email, or any method you prefer.
-
-
-
- Your teammate opens the link and clicks Join on the dashboard.
-
-
-
+
+
+ Creating a Workspace
+
+
+ Click on Dashboard in the sidebar to access your workspaces.
+
+
+
+
+
+
+ Click the Create a new workspace button and fill in the workspace details.
+
+
+
+
+
+
+ Your workspace is ready. Invite team members or create projects and channels.
+
+
+
+
+ Joining a Workspace
+
+
+ Click on Dashboard in the sidebar to access your workspaces.
+
+
+
+
+
+
+ Click the Join a workspace button and enter the workspace details.
+
+
+
+
+
+
+ You're now part of the workspace. Create projects and channels to collaborate.
+
+
+
+
+ Inviting Others
+ Here's how to invite someone to your workspace:
+
+
+ Click Invite people in the sidebar under the Workspace section.
+
+
+
+
+
+
+ Click the Copy Invite Link button in the modal.
+
+
+
+
+
+
+ Share the link with your teammate via chat, email, or any method you prefer.
+
+
+
+ Your teammate opens the link and clicks Join on the dashboard.
+
+
diff --git a/src/components/landing/DemoSidebarHome.vue b/src/components/landing/DemoSidebarHome.vue
new file mode 100644
index 00000000..dd0547fa
--- /dev/null
+++ b/src/components/landing/DemoSidebarHome.vue
@@ -0,0 +1,179 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/landing/DemoSidebar.vue b/src/components/landing/DemoSidebarWorkspace.vue
similarity index 100%
rename from src/components/landing/DemoSidebar.vue
rename to src/components/landing/DemoSidebarWorkspace.vue
diff --git a/src/components/landing/HelpComponent.vue b/src/components/landing/HelpComponent.vue
index 166fc3c4..b4d39895 100644
--- a/src/components/landing/HelpComponent.vue
+++ b/src/components/landing/HelpComponent.vue
@@ -6,14 +6,14 @@
Click on Dashboard in the sidebar to access your workspaces.
-
+
- Click the Create a new workspace button and fill in the workspace details.
+ Click the Create a new workspace button.
-
+
@@ -28,14 +28,14 @@
Click on Dashboard in the sidebar to access your workspaces.
-
+
Click the Join a workspace button and enter the workspace details.
-
+
@@ -48,14 +48,18 @@
Inviting Others
Here's how to invite someone to your workspace:
-
+
+ The Invite people menu only appears when you're inside a workspace.
+
+
+
Click Invite people in the sidebar under the Workspace section.
-
+
-
+
Click the Copy Invite Link button in the modal.
-
+
Share the link with your teammate via chat, email, or any method you prefer.
-
+
Your teammate opens the link and clicks Join on the dashboard.
@@ -78,11 +82,10 @@