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 }} +

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 @@ + + + + + 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 @@ + + + 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 @@ + + + + + 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 @@ + + + + + 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 @@ + + + + + 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 @@ + + + + + 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 @@ 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.