@allbluecn/web-app 0.9.1 → 0.9.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +32 -35
- package/src/__tests__/components/reference-inline.test.tsx +1 -1
- package/src/components/agents/agents-page.tsx +1 -1
- package/src/components/animated-icons/layout-panel-top.tsx +1 -1
- package/src/components/auth/auth-layout.tsx +1 -1
- package/src/components/devtools/ai-chat-panel.tsx +54 -0
- package/src/components/devtools/devtools-panel.tsx +100 -0
- package/src/components/{ui-shared/skeleton.tsx → devtools/index.ts} +3 -13
- package/src/components/devtools/session-panel.tsx +102 -0
- package/src/components/knowledge/dialog/knowledge-form-dialog.tsx +1 -1
- package/src/components/knowledge/editor/doc-header.tsx +1 -1
- package/src/components/knowledge-public/sharers-avatar-group.tsx +1 -1
- package/src/components/layout/sidebar-03/__tests__/nav-workspace.test.tsx +1 -1
- package/src/components/layout/sidebar-03/app-sidebar.tsx +1 -1
- package/src/components/layout/sidebar-03/nav-workspace.tsx +1 -1
- package/src/components/layout/sidebar-03/user-menu.tsx +1 -1
- package/src/components/magicui/animated-theme-toggler.tsx +1 -1
- package/src/components/magicui/grid-pattern.tsx +1 -1
- package/src/components/project/create-project-dialog.tsx +1 -1
- package/src/components/project/invite-member-dialog.tsx +1 -1
- package/src/components/project/project-activity-list.tsx +1 -1
- package/src/components/project/project-member-manager.tsx +1 -1
- package/src/components/settings/personal-team/account/avatar/notion-avatar.tsx +2 -2
- package/src/components/settings/personal-team/team/team-member-list.tsx +1 -1
- package/src/components/shadcn-space/blocks/hero-01/header.tsx +1 -1
- package/src/components/{ui-shared → shared-kit/auth}/auth-layout.tsx +1 -1
- package/src/components/{ui-shared → shared-kit/decorative}/grid-pattern.tsx +1 -1
- package/src/components/{ui-shared → shared-kit/dialogs}/name-confirm-dialog.tsx +6 -5
- package/src/components/{shared → shared-kit/icons}/__tests__/lucide-curated-icons.test.ts +2 -2
- package/src/components/{shared → shared-kit/icons}/__tests__/lucide-icon-data.test.ts +1 -1
- package/src/components/{shared → shared-kit/icons}/__tests__/lucide-icon-picker.test.tsx +5 -5
- package/src/components/{ui-shared → shared-kit}/index.ts +9 -6
- package/src/components/{ui-shared → shared-kit/layout}/layout-panel-top.tsx +1 -1
- package/src/components/{ui-shared → shared-kit/navigation}/nav-float-button.tsx +2 -2
- package/src/components/{ui-shared → shared-kit/theme}/animated-theme-toggler.tsx +1 -1
- package/src/components/story/columns.tsx +1 -1
- package/src/components/story/create-story-dialog.tsx +2 -2
- package/src/components/story/detail/__tests__/activity-timeline.test.tsx +1 -1
- package/src/components/story/detail/activity-timeline.tsx +2 -2
- package/src/components/story/detail/comment-item.tsx +1 -1
- package/src/components/story/detail/story-detail-body.tsx +2 -2
- package/src/components/story/detail/story-detail-toolbar/associated-attachments-panel.tsx +1 -1
- package/src/components/story/display/group-resolver.tsx +2 -2
- package/src/components/story/filters/applied-filters.tsx +1 -1
- package/src/components/story/inline-editors/assignee-editor.tsx +1 -1
- package/src/components/story/inline-editors/story-select-dialog.tsx +1 -1
- package/src/components/story/relations/story-ref-row.tsx +2 -2
- package/src/components/story/story-panel-header.tsx +1 -1
- package/src/components/story/story-toolbar.tsx +1 -1
- package/src/components/story/transfer-story-popover.tsx +1 -1
- package/src/components/story/views/create-view-dialog.tsx +1 -1
- package/src/components/story/views/kanban-card.tsx +1 -1
- package/src/components/story/views/story-list/index.tsx +1 -1
- package/src/components/story/views/story-list/inline-story-creator.tsx +1 -1
- package/src/components/tiptap/mindmap/mind-map.tsx +2 -2
- package/src/components/tiptap/mindmap/mindmap-fullscreen-dialog.tsx +1 -1
- package/src/components/tiptap/node/annotation-node/annotation-node-view.tsx +1 -1
- package/src/components/tiptap/node/doc-card-extension.tsx +2 -2
- package/src/components/tiptap/notion-like/notion-like-editor-header.tsx +2 -2
- package/src/components/tiptap/ui/doc-reference-interaction/doc-reference-interaction.tsx +2 -2
- package/src/components/tiptap/ui/mention-dropdown-menu/mention-dropdown-menu.tsx +2 -2
- package/src/components/tiptap/ui/reference-dropdown-menu/reference-dropdown-menu.tsx +1 -1
- package/src/components/tiptap/ui/slash-dropdown-menu/slash-dropdown-menu.tsx +1 -1
- package/src/components/ui/alert-dialog.tsx +216 -1
- package/src/components/ui/badge.tsx +66 -1
- package/src/components/ui/button.tsx +84 -1
- package/src/components/ui/card.tsx +120 -1
- package/src/components/ui/checkbox.tsx +50 -1
- package/src/components/ui/context-menu.tsx +280 -1
- package/src/components/ui/dialog.tsx +183 -1
- package/src/components/ui/dropdown-menu.tsx +286 -1
- package/src/components/ui/empty.tsx +121 -1
- package/src/components/ui/input.tsx +36 -1
- package/src/components/ui/label.tsx +39 -1
- package/src/components/ui/popover.tsx +106 -1
- package/src/components/ui/resizable.tsx +67 -1
- package/src/components/ui/select.tsx +207 -1
- package/src/components/ui/sidebar.tsx +708 -1
- package/src/components/ui/skeleton.tsx +30 -1
- package/src/components/ui/sonner.tsx +37 -1
- package/src/components/ui/switch.tsx +48 -1
- package/src/components/ui/textarea.tsx +35 -1
- package/src/components/ui/tooltip.tsx +72 -1
- package/src/components/workspace/create-workspace-dialog.tsx +1 -1
- package/src/lib/auth/auth-client.ts +1 -1
- package/src/lib/changelog/sdk-versions.ts +10 -3
- package/src/lib/perf.ts +1 -1
- package/src/lib/utils.ts +6 -1
- package/src/plugins/core/inspiration/pages/inspiration-page.tsx +1 -1
- package/src/plugins/core/inspiration/ui.tsx +1 -1
- package/src/plugins/core/prd/components/agent-input.tsx +3 -3
- package/src/plugins/core/prd/components/component-editor/collapsible-section.tsx +1 -1
- package/src/plugins/core/prd/components/component-editor/content-section.tsx +3 -3
- package/src/plugins/core/prd/components/component-editor/style-fields.tsx +3 -3
- package/src/plugins/core/prd/components/component-thumbnail.tsx +1 -1
- package/src/plugins/core/prd/components/dialog/create-prd-dialog.tsx +3 -3
- package/src/plugins/core/prd/components/dialog/prd-detail-client.tsx +4 -4
- package/src/plugins/core/prd/components/page-version-panel/components/create-version-dialog.tsx +2 -2
- package/src/plugins/core/prd/components/page-version-panel/components/delete-version-dialog.tsx +2 -2
- package/src/plugins/core/prd/components/page-version-panel/components/edit-version-dialog.tsx +2 -2
- package/src/plugins/core/prd/components/page-version-panel.tsx +9 -9
- package/src/plugins/core/prd/components/page-version-tree.tsx +5 -5
- package/src/plugins/core/prd/components/prd-agent-panel.tsx +3 -3
- package/src/plugins/core/prd/components/prd-comment-review-panel.tsx +7 -7
- package/src/plugins/core/prd/components/prd-component-editor-content.tsx +2 -2
- package/src/plugins/core/prd/components/prd-dashboard.tsx +8 -8
- package/src/plugins/core/prd/components/prd-doc-panel.tsx +2 -2
- package/src/plugins/core/prd/components/prd-editor-layout.tsx +4 -4
- package/src/plugins/core/prd/components/prd-filter-bar.tsx +1 -1
- package/src/plugins/core/prd/components/prd-left-sidebar.tsx +4 -4
- package/src/plugins/core/prd/components/prd-navigation.tsx +6 -6
- package/src/plugins/core/prd/components/prd-prototype-panel.tsx +2 -2
- package/src/plugins/core/prd/components/prd-right-sidebar.tsx +3 -3
- package/src/plugins/core/prd/components/prd-share-panel/components/single-version-share-card.tsx +7 -7
- package/src/plugins/core/prd/components/prd-share-panel.tsx +10 -10
- package/src/plugins/core/prd/components/prd-tree-page-tab.tsx +5 -5
- package/src/plugins/core/prd/components/prototype/PrototypeCanvas.tsx +2 -2
- package/src/plugins/core/prd/components/restore-version-dialog.tsx +2 -2
- package/src/plugins/core/prd/components/share/prd-share-client.tsx +1 -1
- package/src/plugins/core/prd/components/share/share-comment-panel.tsx +6 -6
- package/src/plugins/core/prd/components/share/share-comment-review-panel.tsx +2 -2
- package/src/plugins/core/prd/components/share/share-layout.tsx +1 -1
- package/src/plugins/core/prd/components/share/share-nav-bar.tsx +4 -4
- package/src/plugins/core/prd/components/share/share-password-gate.tsx +4 -4
- package/src/plugins/core/prd/components/share/share-prototype-view.tsx +1 -1
- package/src/plugins/core/prd/components/share/share-review-panel.tsx +5 -5
- package/src/plugins/core/prd/components/share/share-theme-toggle.tsx +1 -1
- package/src/plugins/core/prd/components/share/version-share-client.tsx +1 -1
- package/src/plugins/core/prd/pages/prd-detail-page.tsx +2 -2
- package/src/plugins/core/prd/pages/share-prd-page.tsx +1 -1
- package/src/plugins/core/prd/prd-nav.tsx +1 -1
- package/src/plugins/core/tags/nav-tag.tsx +7 -7
- package/src/plugins/core/tags/pages/tag-detail-page.tsx +1 -1
- package/src/plugins/core/tags/tag-badge.tsx +2 -2
- package/src/plugins/core/tags/tag-color-picker.tsx +1 -1
- package/src/plugins/core/tags/tag-manager.tsx +6 -6
- package/src/plugins/core/tags/tag-selector.tsx +3 -3
- package/src/providers/index.tsx +1 -1
- package/src/providers/timezone-provider.tsx +1 -1
- package/src/routes/__root.tsx +1 -1
- package/src/routes/_nav/acceptance-criteria/route.tsx +1 -1
- package/src/routes/_nav/apps/anyhub/$id/route.tsx +1 -1
- package/src/routes/_nav/apps/anyhub/route.tsx +1 -1
- package/src/routes/_nav/bugs/route.tsx +1 -1
- package/src/routes/_nav/dashboard/-components/avatar-group.tsx +1 -1
- package/src/routes/_nav/dashboard/route.lazy.tsx +1 -1
- package/src/routes/_nav/knowledge/$kbId/doc/$docId/route.lazy.tsx +1 -1
- package/src/routes/_nav/knowledge/index.lazy.tsx +1 -1
- package/src/routes/_nav/notion-like/route.tsx +1 -1
- package/src/routes/_nav/pricing-02/route.tsx +1 -1
- package/src/routes/_nav/projects/$projectId/$storyId/route.lazy.tsx +1 -1
- package/src/routes/_nav/projects/$projectId/index.lazy.tsx +3 -3
- package/src/routes/_nav/projects/$projectId/iterations/index.lazy.tsx +1 -1
- package/src/routes/_nav/projects/$projectId/settings/route.lazy.tsx +3 -3
- package/src/routes/_nav/route.lazy.tsx +1 -1
- package/src/routes/_nav/settings/general/route.lazy.tsx +1 -1
- package/src/routes/_nav/test-cases/route.tsx +1 -1
- package/src/routes/_nav/workspaces/$workspaceId/route.lazy.tsx +1 -1
- package/src/routes/_nav/workspaces/$workspaceId/settings/route.lazy.tsx +2 -2
- package/src/routes/_nav/workspaces/index.lazy.tsx +1 -1
- package/src/routes/invite/$token/route.lazy.tsx +1 -1
- package/src/server/__tests__/agent-client-graph.test.ts +1 -1
- package/src/components/shared/name-confirm-dialog.tsx +0 -1
- package/src/components/shared/nav-float-button.tsx +0 -1
- package/src/components/shared/placeholder-page.tsx +0 -1
- package/src/components/ui-shared/alert-dialog.tsx +0 -216
- package/src/components/ui-shared/avatar.tsx +0 -129
- package/src/components/ui-shared/badge.tsx +0 -66
- package/src/components/ui-shared/button.tsx +0 -84
- package/src/components/ui-shared/card.tsx +0 -120
- package/src/components/ui-shared/checkbox.tsx +0 -50
- package/src/components/ui-shared/context-menu.tsx +0 -280
- package/src/components/ui-shared/dialog.tsx +0 -183
- package/src/components/ui-shared/dropdown-menu.tsx +0 -286
- package/src/components/ui-shared/empty.tsx +0 -121
- package/src/components/ui-shared/input.tsx +0 -36
- package/src/components/ui-shared/item.tsx +0 -213
- package/src/components/ui-shared/kbd.tsx +0 -33
- package/src/components/ui-shared/label.tsx +0 -39
- package/src/components/ui-shared/popover.tsx +0 -106
- package/src/components/ui-shared/resizable.tsx +0 -67
- package/src/components/ui-shared/select.tsx +0 -207
- package/src/components/ui-shared/separator.tsx +0 -45
- package/src/components/ui-shared/sheet.tsx +0 -164
- package/src/components/ui-shared/sidebar.tsx +0 -708
- package/src/components/ui-shared/sonner.tsx +0 -37
- package/src/components/ui-shared/switch.tsx +0 -48
- package/src/components/ui-shared/textarea.tsx +0 -35
- package/src/components/ui-shared/tooltip.tsx +0 -72
- package/src/components/ui-shared/utils.ts +0 -6
- package/src/lib/utils.d.ts +0 -1
- package/src/plugins/.gen-manifest.json +0 -13
- package/src/plugins/modules.gen.ts +0 -20
- package/src/plugins/plugins.gen.ts +0 -20
- package/src/plugins/ui.gen.ts +0 -8
- package/src/routes/_nav/inspiration/route.tsx +0 -8
- package/src/routes/_nav/prd/$id/route.tsx +0 -9
- package/src/routes/_nav/prd/index.tsx +0 -9
- package/src/routes/_nav/prd/route.tsx +0 -8
- package/src/routes/_nav/tags/$id/route.tsx +0 -8
- package/src/routes/_nav/tags/index.tsx +0 -8
- package/src/routes/_nav/tags/route.tsx +0 -8
- package/src/routes/_nav/tags/settings/route.tsx +0 -9
- package/src/routes/share/prd/$prdId/route.tsx +0 -10
- package/src/types/open-file-viewer.d.ts +0 -14
- /package/src/components/{ui-shared → shared-kit/ai}/ai-command-button.tsx +0 -0
- /package/src/components/{ui-shared → shared-kit/ai}/ai-stream-text.tsx +0 -0
- /package/src/components/{ui-shared → shared-kit/auth}/auth-client.ts +0 -0
- /package/src/components/{ui-shared → shared-kit/avatars}/notion-avatar.tsx +0 -0
- /package/src/components/{ui-shared → shared-kit/avatars}/user-avatar.tsx +0 -0
- /package/src/components/{shared → shared-kit/data-viz}/contribution-graph-tooltip.tsx +0 -0
- /package/src/components/{shared → shared-kit/dev}/component-preview.tsx +0 -0
- /package/src/components/{ui-shared → shared-kit/hooks}/use-mobile.ts +0 -0
- /package/src/components/{shared → shared-kit/i18n}/language-switcher.tsx +0 -0
- /package/src/components/{shared → shared-kit/i18n}/translator-text.tsx +0 -0
- /package/src/components/{shared → shared-kit/icons}/lucide-icon-picker/curated-icons.ts +0 -0
- /package/src/components/{shared → shared-kit/icons}/lucide-icon-picker/icon-data.ts +0 -0
- /package/src/components/{shared → shared-kit/icons}/lucide-icon-picker/index.tsx +0 -0
- /package/src/components/{shared → shared-kit/icons}/lucide-icon-picker/lucide-icon-by-name.tsx +0 -0
- /package/src/components/{shared → shared-kit/icons}/lucide-icon-picker/panel.tsx +0 -0
- /package/src/components/{shared → shared-kit/loading}/wave-physics-loader.tsx +0 -0
- /package/src/components/{ui-shared → shared-kit/pages}/placeholder-page.tsx +0 -0
- /package/src/components/{ui-shared → shared-kit/reference}/reference-inline.tsx +0 -0
- /package/src/components/{ui-shared → shared-kit/reference}/reference-search.tsx +0 -0
- /package/src/components/{shared → shared-kit/theme}/theme-toggle.tsx +0 -0
- /package/src/components/{shared → shared-kit/timezone}/timezone-bootstrap.tsx +0 -0
- /package/src/components/{ui-shared → shared-kit/timezone}/timezone-provider.tsx +0 -0
- /package/src/components/{shared → shared-kit/timezone}/timezone-select.tsx +0 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@allbluecn/web-app",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.3",
|
|
4
4
|
"license": "AGPL-3.0-or-later",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"files": [
|
|
@@ -14,32 +14,32 @@
|
|
|
14
14
|
"default": "./vite.shared.ts"
|
|
15
15
|
},
|
|
16
16
|
"./lucide-icon-picker": {
|
|
17
|
-
"types": "./src/components/shared/lucide-icon-picker/index.tsx",
|
|
18
|
-
"default": "./src/components/shared/lucide-icon-picker/index.tsx"
|
|
17
|
+
"types": "./src/components/shared-kit/icons/lucide-icon-picker/index.tsx",
|
|
18
|
+
"default": "./src/components/shared-kit/icons/lucide-icon-picker/index.tsx"
|
|
19
19
|
},
|
|
20
20
|
"./lucide-icon-picker/panel": {
|
|
21
|
-
"types": "./src/components/shared/lucide-icon-picker/panel.tsx",
|
|
22
|
-
"default": "./src/components/shared/lucide-icon-picker/panel.tsx"
|
|
21
|
+
"types": "./src/components/shared-kit/icons/lucide-icon-picker/panel.tsx",
|
|
22
|
+
"default": "./src/components/shared-kit/icons/lucide-icon-picker/panel.tsx"
|
|
23
23
|
},
|
|
24
24
|
"./lucide-icon-picker/icon-data": {
|
|
25
|
-
"types": "./src/components/shared/lucide-icon-picker/icon-data.ts",
|
|
26
|
-
"default": "./src/components/shared/lucide-icon-picker/icon-data.ts"
|
|
25
|
+
"types": "./src/components/shared-kit/icons/lucide-icon-picker/icon-data.ts",
|
|
26
|
+
"default": "./src/components/shared-kit/icons/lucide-icon-picker/icon-data.ts"
|
|
27
27
|
},
|
|
28
28
|
"./lucide-icon-picker/curated-icons": {
|
|
29
|
-
"types": "./src/components/shared/lucide-icon-picker/curated-icons.ts",
|
|
30
|
-
"default": "./src/components/shared/lucide-icon-picker/curated-icons.ts"
|
|
29
|
+
"types": "./src/components/shared-kit/icons/lucide-icon-picker/curated-icons.ts",
|
|
30
|
+
"default": "./src/components/shared-kit/icons/lucide-icon-picker/curated-icons.ts"
|
|
31
31
|
},
|
|
32
32
|
"./lucide-icon-picker/lucide-icon-by-name": {
|
|
33
|
-
"types": "./src/components/shared/lucide-icon-picker/lucide-icon-by-name.tsx",
|
|
34
|
-
"default": "./src/components/shared/lucide-icon-picker/lucide-icon-by-name.tsx"
|
|
33
|
+
"types": "./src/components/shared-kit/icons/lucide-icon-picker/lucide-icon-by-name.tsx",
|
|
34
|
+
"default": "./src/components/shared-kit/icons/lucide-icon-picker/lucide-icon-by-name.tsx"
|
|
35
35
|
},
|
|
36
36
|
"./prototype": {
|
|
37
37
|
"types": "./src/components/prototype/index.ts",
|
|
38
38
|
"default": "./src/components/prototype/index.ts"
|
|
39
39
|
},
|
|
40
40
|
"./user-avatar": {
|
|
41
|
-
"types": "./src/components/
|
|
42
|
-
"default": "./src/components/
|
|
41
|
+
"types": "./src/components/shared-kit/avatars/user-avatar.tsx",
|
|
42
|
+
"default": "./src/components/shared-kit/avatars/user-avatar.tsx"
|
|
43
43
|
},
|
|
44
44
|
"./lib/datetime": {
|
|
45
45
|
"types": "./src/lib/datetime.ts",
|
|
@@ -57,26 +57,7 @@
|
|
|
57
57
|
"publishConfig": {
|
|
58
58
|
"access": "public"
|
|
59
59
|
},
|
|
60
|
-
"packageManager": "pnpm@11.20.0",
|
|
61
|
-
"scripts": {
|
|
62
|
-
"dev": "vite --port 3000",
|
|
63
|
-
"build": "vite build",
|
|
64
|
-
"start": "vite preview",
|
|
65
|
-
"lint": "eslint",
|
|
66
|
-
"test": "vitest",
|
|
67
|
-
"test:ui": "vitest --ui",
|
|
68
|
-
"test:run": "vitest run",
|
|
69
|
-
"setup": "pnpm --filter @allbluecn/database generate && pnpm --filter @allbluecn/database migrate:dev",
|
|
70
|
-
"check:features": "tsx scripts/check-feature-keys.ts",
|
|
71
|
-
"assemble": "TSX_TSCONFIG_PATH=apps/web/tsconfig.json pnpm -w exec tsx packages/kernel/src/bin.ts --profile oss --assemble --app-dir apps/web",
|
|
72
|
-
"predev": "pnpm assemble && node scripts/check-sdk-versions.mjs",
|
|
73
|
-
"prebuild": "pnpm assemble && node scripts/check-sdk-versions.mjs",
|
|
74
|
-
"pretest": "pnpm assemble",
|
|
75
|
-
"pretest:run": "pnpm assemble",
|
|
76
|
-
"prepublishOnly": "node scripts/check-sdk-versions.mjs"
|
|
77
|
-
},
|
|
78
60
|
"dependencies": {
|
|
79
|
-
"@allbluecn/database": "workspace:*",
|
|
80
61
|
"@ariakit/react": "^0.4.28",
|
|
81
62
|
"@auth/core": "^0.41.2",
|
|
82
63
|
"@auth/prisma-adapter": "^2.11.2",
|
|
@@ -199,10 +180,10 @@
|
|
|
199
180
|
"zod": "^4.4.3",
|
|
200
181
|
"@open-file-viewer/core": "^0.1.43",
|
|
201
182
|
"@open-file-viewer/react": "^0.1.43",
|
|
202
|
-
"@allbluecn/kernel": "0.5.
|
|
183
|
+
"@allbluecn/kernel": "0.5.2",
|
|
184
|
+
"@allbluecn/database": "0.4.17"
|
|
203
185
|
},
|
|
204
186
|
"devDependencies": {
|
|
205
|
-
"@allblue/devtools": "workspace:*",
|
|
206
187
|
"@babel/parser": "^8.0.4",
|
|
207
188
|
"@babel/traverse": "^8.0.4",
|
|
208
189
|
"@cloudflare/vite-plugin": "^1.40.1",
|
|
@@ -242,5 +223,21 @@
|
|
|
242
223
|
},
|
|
243
224
|
"optionalDependencies": {
|
|
244
225
|
"@tauri-apps/api": "^2.11.1"
|
|
226
|
+
},
|
|
227
|
+
"scripts": {
|
|
228
|
+
"dev": "vite --port 3000",
|
|
229
|
+
"build": "vite build",
|
|
230
|
+
"start": "vite preview",
|
|
231
|
+
"lint": "eslint",
|
|
232
|
+
"test": "vitest",
|
|
233
|
+
"test:ui": "vitest --ui",
|
|
234
|
+
"test:run": "vitest run",
|
|
235
|
+
"setup": "pnpm --filter @allbluecn/database generate && pnpm --filter @allbluecn/database migrate:dev",
|
|
236
|
+
"check:features": "tsx scripts/check-feature-keys.ts",
|
|
237
|
+
"assemble": "TSX_TSCONFIG_PATH=apps/web/tsconfig.json pnpm -w exec tsx packages/kernel/src/bin.ts --profile oss --assemble --app-dir apps/web",
|
|
238
|
+
"predev": "pnpm assemble && node scripts/check-sdk-versions.mjs",
|
|
239
|
+
"prebuild": "pnpm assemble && node scripts/check-sdk-versions.mjs",
|
|
240
|
+
"pretest": "pnpm assemble",
|
|
241
|
+
"pretest:run": "pnpm assemble"
|
|
245
242
|
}
|
|
246
|
-
}
|
|
243
|
+
}
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
|
|
18
18
|
import { describe, it, expect } from 'vitest'
|
|
19
19
|
import { render, screen } from '@testing-library/react'
|
|
20
|
-
import { ReferenceInline } from '@/components/
|
|
20
|
+
import { ReferenceInline } from '@/components/shared-kit'
|
|
21
21
|
|
|
22
22
|
describe('ReferenceInline', () => {
|
|
23
23
|
it('renders title', () => {
|
|
@@ -14,7 +14,7 @@ import {
|
|
|
14
14
|
} from '@/components/ui/tabs'
|
|
15
15
|
import { Button } from '@/components/ui/button'
|
|
16
16
|
import { FeatureGate } from '@/components/billing/feature-gate'
|
|
17
|
-
import { NameConfirmDialog } from '@/components/shared/name-confirm-dialog'
|
|
17
|
+
import { NameConfirmDialog } from '@/components/shared-kit/dialogs/name-confirm-dialog'
|
|
18
18
|
import { listAgentsFn } from '@/server/serverFns/agents/agent-crud'
|
|
19
19
|
import { listSkillsFn, deleteSkillFn } from '@/server/serverFns/agents/skill-crud'
|
|
20
20
|
import { deleteAgentFn } from '@/server/serverFns/agents/agent-crud'
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export * from '@/components/
|
|
1
|
+
export * from '@/components/shared-kit/layout/layout-panel-top'
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export * from '@/components/
|
|
1
|
+
export * from '@/components/shared-kit/auth/auth-layout'
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
// SPDX-License-Identifier: AGPL-3.0-or-later
|
|
2
|
+
// AllBlue - 理想之海
|
|
3
|
+
// Copyright (C) 2026 AllBlue Contributors
|
|
4
|
+
//
|
|
5
|
+
// This program is free software: you can redistribute it and/or modify
|
|
6
|
+
// it under the terms of the GNU Affero General Public License as published by
|
|
7
|
+
// the Free Software Foundation, either version 3 of the License, or
|
|
8
|
+
// (at your option) any later version.
|
|
9
|
+
//
|
|
10
|
+
// This program is distributed in the hope that it will be useful,
|
|
11
|
+
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
12
|
+
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
13
|
+
// GNU Affero General Public License for more details.
|
|
14
|
+
//
|
|
15
|
+
// You should have received a copy of the GNU Affero General Public License
|
|
16
|
+
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
17
|
+
|
|
18
|
+
export function AIChatPanel() {
|
|
19
|
+
return (
|
|
20
|
+
<div className="flex h-full flex-col gap-4 overflow-auto p-3">
|
|
21
|
+
<div className="space-y-2">
|
|
22
|
+
<h4 className="text-sm font-semibold">AI Chat 监控</h4>
|
|
23
|
+
<p className="text-xs text-muted-foreground">
|
|
24
|
+
预留面板:监控 AI 对话状态、模型选择和 Token 消耗。
|
|
25
|
+
</p>
|
|
26
|
+
</div>
|
|
27
|
+
<div className="space-y-2">
|
|
28
|
+
<h4 className="text-sm font-semibold">配置</h4>
|
|
29
|
+
<div className="rounded border p-3 space-y-2">
|
|
30
|
+
<div className="text-xs">
|
|
31
|
+
<span className="text-muted-foreground">SSE 端点: </span>
|
|
32
|
+
<code>/api/chat</code>
|
|
33
|
+
</div>
|
|
34
|
+
<div className="text-xs">
|
|
35
|
+
<span className="text-muted-foreground">Adapter: </span>
|
|
36
|
+
<span>TanStack AI + OpenRouter/Anthropic/Gemini/…</span>
|
|
37
|
+
</div>
|
|
38
|
+
<div className="text-xs">
|
|
39
|
+
<span className="text-muted-foreground">持久化: </span>
|
|
40
|
+
<span>Prisma (AiProviderConfig)</span>
|
|
41
|
+
</div>
|
|
42
|
+
</div>
|
|
43
|
+
</div>
|
|
44
|
+
<div className="space-y-2">
|
|
45
|
+
<h4 className="text-sm font-semibold">调试提示</h4>
|
|
46
|
+
<div className="rounded border border-amber-200 bg-amber-50 p-2">
|
|
47
|
+
<p className="text-xs text-amber-800">
|
|
48
|
+
使用浏览器 DevTools Network 面板查看 <code>/api/chat</code> SSE 连接。
|
|
49
|
+
</p>
|
|
50
|
+
</div>
|
|
51
|
+
</div>
|
|
52
|
+
</div>
|
|
53
|
+
)
|
|
54
|
+
}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
// SPDX-License-Identifier: AGPL-3.0-or-later
|
|
2
|
+
// AllBlue - 理想之海
|
|
3
|
+
// Copyright (C) 2026 AllBlue Contributors
|
|
4
|
+
//
|
|
5
|
+
// This program is free software: you can redistribute it and/or modify
|
|
6
|
+
// it under the terms of the GNU Affero General Public License as published by
|
|
7
|
+
// the Free Software Foundation, either version 3 of the License, or
|
|
8
|
+
// (at your option) any later version.
|
|
9
|
+
//
|
|
10
|
+
// This program is distributed in the hope that it will be useful,
|
|
11
|
+
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
12
|
+
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
13
|
+
// GNU Affero General Public License for more details.
|
|
14
|
+
//
|
|
15
|
+
// You should have received a copy of the GNU Affero General Public License
|
|
16
|
+
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
17
|
+
|
|
18
|
+
import { useEffect, useState, useCallback } from 'react'
|
|
19
|
+
import { AIChatPanel } from './ai-chat-panel'
|
|
20
|
+
import { SessionPanel } from './session-panel'
|
|
21
|
+
|
|
22
|
+
type TabName = 'ai-chat' | 'session'
|
|
23
|
+
|
|
24
|
+
interface TabConfig {
|
|
25
|
+
id: TabName
|
|
26
|
+
label: string
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
const TABS: TabConfig[] = [
|
|
30
|
+
{ id: 'ai-chat', label: 'AI Chat' },
|
|
31
|
+
{ id: 'session', label: 'Session' },
|
|
32
|
+
]
|
|
33
|
+
|
|
34
|
+
export function DevtoolsPanel() {
|
|
35
|
+
const [isOpen, setIsOpen] = useState(false)
|
|
36
|
+
const [activeTab, setActiveTab] = useState<TabName>('ai-chat')
|
|
37
|
+
|
|
38
|
+
const toggle = useCallback(() => setIsOpen((v) => !v), [])
|
|
39
|
+
|
|
40
|
+
useEffect(() => {
|
|
41
|
+
const handleEsc = (e: KeyboardEvent) => {
|
|
42
|
+
if (e.key === 'Escape') setIsOpen(false)
|
|
43
|
+
}
|
|
44
|
+
const handleModD = (e: KeyboardEvent) => {
|
|
45
|
+
if ((e.metaKey || e.ctrlKey) && e.shiftKey && e.key === 'D') {
|
|
46
|
+
e.preventDefault()
|
|
47
|
+
toggle()
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
document.addEventListener('keydown', handleEsc)
|
|
51
|
+
document.addEventListener('keydown', handleModD)
|
|
52
|
+
return () => {
|
|
53
|
+
document.removeEventListener('keydown', handleEsc)
|
|
54
|
+
document.removeEventListener('keydown', handleModD)
|
|
55
|
+
}
|
|
56
|
+
}, [toggle])
|
|
57
|
+
|
|
58
|
+
const panel = activeTab === 'ai-chat' ? <AIChatPanel /> : <SessionPanel />
|
|
59
|
+
|
|
60
|
+
return (
|
|
61
|
+
<>
|
|
62
|
+
<button
|
|
63
|
+
onClick={toggle}
|
|
64
|
+
className="fixed left-4 bottom-4 z-[10000] rounded-full bg-blue-600 px-3 py-1.5 text-xs text-white shadow-lg hover:bg-blue-700"
|
|
65
|
+
>
|
|
66
|
+
AllBlue Dev
|
|
67
|
+
</button>
|
|
68
|
+
{isOpen && (
|
|
69
|
+
<div className="fixed right-4 top-4 z-[10000] h-96 w-11/12 max-w-md overflow-hidden rounded-lg border bg-background shadow-2xl">
|
|
70
|
+
<div className="flex items-center justify-between border-b px-3 py-2">
|
|
71
|
+
<div className="flex gap-1">
|
|
72
|
+
{TABS.map((tab) => (
|
|
73
|
+
<button
|
|
74
|
+
key={tab.id}
|
|
75
|
+
onClick={() => setActiveTab(tab.id)}
|
|
76
|
+
className={`rounded px-2 py-1 text-xs font-medium ${
|
|
77
|
+
activeTab === tab.id
|
|
78
|
+
? 'bg-primary text-primary-foreground'
|
|
79
|
+
: 'text-muted-foreground hover:text-foreground'
|
|
80
|
+
}`}
|
|
81
|
+
>
|
|
82
|
+
{tab.label}
|
|
83
|
+
</button>
|
|
84
|
+
))}
|
|
85
|
+
</div>
|
|
86
|
+
<button
|
|
87
|
+
onClick={() => setIsOpen(false)}
|
|
88
|
+
className="text-muted-foreground hover:text-foreground"
|
|
89
|
+
>
|
|
90
|
+
<span className="text-sm">×</span>
|
|
91
|
+
</button>
|
|
92
|
+
</div>
|
|
93
|
+
<div className="h-[calc(100%-44px)] overflow-auto">
|
|
94
|
+
{panel}
|
|
95
|
+
</div>
|
|
96
|
+
</div>
|
|
97
|
+
)}
|
|
98
|
+
</>
|
|
99
|
+
)
|
|
100
|
+
}
|
|
@@ -15,16 +15,6 @@
|
|
|
15
15
|
// You should have received a copy of the GNU Affero General Public License
|
|
16
16
|
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
17
17
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
return (
|
|
22
|
-
<div
|
|
23
|
-
data-slot="skeleton"
|
|
24
|
-
className={cn("animate-pulse rounded-md bg-muted", className)}
|
|
25
|
-
{...props}
|
|
26
|
-
/>
|
|
27
|
-
)
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
export { Skeleton }
|
|
18
|
+
export { AIChatPanel } from './ai-chat-panel'
|
|
19
|
+
export { DevtoolsPanel } from './devtools-panel'
|
|
20
|
+
export { SessionPanel } from './session-panel'
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
// SPDX-License-Identifier: AGPL-3.0-or-later
|
|
2
|
+
// AllBlue - 理想之海
|
|
3
|
+
// Copyright (C) 2026 AllBlue Contributors
|
|
4
|
+
//
|
|
5
|
+
// This program is free software: you can redistribute it and/or modify
|
|
6
|
+
// it under the terms of the GNU Affero General Public License as published by
|
|
7
|
+
// the Free Software Foundation, either version 3 of the License, or
|
|
8
|
+
// (at your option) any later version.
|
|
9
|
+
//
|
|
10
|
+
// This program is distributed in the hope that it will be useful,
|
|
11
|
+
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
12
|
+
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
13
|
+
// GNU Affero General Public License for more details.
|
|
14
|
+
//
|
|
15
|
+
// You should have received a copy of the GNU Affero General Public License
|
|
16
|
+
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
17
|
+
|
|
18
|
+
import { useEffect, useState } from 'react'
|
|
19
|
+
|
|
20
|
+
type UserInfo = {
|
|
21
|
+
id: string
|
|
22
|
+
email: string
|
|
23
|
+
name: string | null
|
|
24
|
+
role: string
|
|
25
|
+
aiProvider?: string | null
|
|
26
|
+
aiModel?: string | null
|
|
27
|
+
hasAiKey?: boolean | null
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export function SessionPanel() {
|
|
31
|
+
const [user, setUser] = useState<UserInfo | null>(null)
|
|
32
|
+
const [loading, setLoading] = useState(true)
|
|
33
|
+
|
|
34
|
+
useEffect(() => {
|
|
35
|
+
fetch('/api/auth/session', { credentials: 'include' })
|
|
36
|
+
.then((res) => res.ok ? res.json() : null)
|
|
37
|
+
.then((data) => {
|
|
38
|
+
setUser(data?.user ?? null)
|
|
39
|
+
setLoading(false)
|
|
40
|
+
})
|
|
41
|
+
.catch(() => setLoading(false))
|
|
42
|
+
}, [])
|
|
43
|
+
|
|
44
|
+
if (loading) {
|
|
45
|
+
return (
|
|
46
|
+
<div className="flex h-full items-center justify-center">
|
|
47
|
+
<span className="text-sm text-muted-foreground">加载中…</span>
|
|
48
|
+
</div>
|
|
49
|
+
)
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
if (!user) {
|
|
53
|
+
return (
|
|
54
|
+
<div className="flex h-full items-center justify-center">
|
|
55
|
+
<span className="text-sm text-muted-foreground">未登录</span>
|
|
56
|
+
</div>
|
|
57
|
+
)
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
return (
|
|
61
|
+
<div className="flex h-full flex-col gap-4 overflow-auto p-3">
|
|
62
|
+
<div className="space-y-2">
|
|
63
|
+
<h4 className="text-sm font-semibold">当前用户</h4>
|
|
64
|
+
<div className="grid grid-cols-2 gap-2 text-xs">
|
|
65
|
+
<div>
|
|
66
|
+
<span className="text-muted-foreground">ID: </span>
|
|
67
|
+
<code>{user.id}</code>
|
|
68
|
+
</div>
|
|
69
|
+
<div>
|
|
70
|
+
<span className="text-muted-foreground">Email: </span>
|
|
71
|
+
<span>{user.email}</span>
|
|
72
|
+
</div>
|
|
73
|
+
<div>
|
|
74
|
+
<span className="text-muted-foreground">Name: </span>
|
|
75
|
+
<span>{user.name || '-'}</span>
|
|
76
|
+
</div>
|
|
77
|
+
<div>
|
|
78
|
+
<span className="text-muted-foreground">Role: </span>
|
|
79
|
+
<span className="font-medium">{user.role}</span>
|
|
80
|
+
</div>
|
|
81
|
+
</div>
|
|
82
|
+
</div>
|
|
83
|
+
<div className="space-y-2">
|
|
84
|
+
<h4 className="text-sm font-semibold">AI 配置</h4>
|
|
85
|
+
<div className="grid grid-cols-2 gap-2 text-xs">
|
|
86
|
+
<div>
|
|
87
|
+
<span className="text-muted-foreground">Provider: </span>
|
|
88
|
+
<span>{user.aiProvider || '未配置'}</span>
|
|
89
|
+
</div>
|
|
90
|
+
<div>
|
|
91
|
+
<span className="text-muted-foreground">Model: </span>
|
|
92
|
+
<span>{user.aiModel || '未配置'}</span>
|
|
93
|
+
</div>
|
|
94
|
+
<div>
|
|
95
|
+
<span className="text-muted-foreground">Has Key: </span>
|
|
96
|
+
<span>{user.hasAiKey ? '是' : '否'}</span>
|
|
97
|
+
</div>
|
|
98
|
+
</div>
|
|
99
|
+
</div>
|
|
100
|
+
</div>
|
|
101
|
+
)
|
|
102
|
+
}
|
|
@@ -28,7 +28,7 @@ import {
|
|
|
28
28
|
DialogHeader,
|
|
29
29
|
DialogTitle,
|
|
30
30
|
} from "@/components/ui/dialog";
|
|
31
|
-
import { LucideIconPicker } from "@/components/shared/lucide-icon-picker";
|
|
31
|
+
import { LucideIconPicker } from "@/components/shared-kit/icons/lucide-icon-picker";
|
|
32
32
|
import { createKnowledgeFn, updateKnowledgeFn } from "@/server/serverFns/knowledge";
|
|
33
33
|
import { knowledgeFormSchema, type KnowledgeFormValues } from "../schemas/knowledge-form";
|
|
34
34
|
|
|
@@ -20,7 +20,7 @@ import { BookOpen, Clock, Dot, Plus } from 'lucide-react'
|
|
|
20
20
|
import { cn } from '@/lib/utils'
|
|
21
21
|
import { formatSaveTime } from '@/lib/time-format'
|
|
22
22
|
import { useTimezone } from '@/providers/timezone-provider'
|
|
23
|
-
import { UserAvatar } from '@/components/
|
|
23
|
+
import { UserAvatar } from '@/components/shared-kit'
|
|
24
24
|
import { TagSelector } from '@/plugins/core/tags/tag-selector'
|
|
25
25
|
import { TagBadge } from '@/plugins/core/tags/tag-badge'
|
|
26
26
|
import { listTagsFn } from '@/plugins/core/tags/serverFns'
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
// You should have received a copy of the GNU Affero General Public License
|
|
16
16
|
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
17
17
|
|
|
18
|
-
import { UserAvatar } from '@/components/
|
|
18
|
+
import { UserAvatar } from '@/components/shared-kit'
|
|
19
19
|
import { AvatarGroup, AvatarGroupTooltip } from '@/components/magicui/components/animate/avatar-group'
|
|
20
20
|
import { Tooltip, TooltipContent, TooltipTrigger } from '@/components/ui/tooltip'
|
|
21
21
|
import { cn } from '@/lib/utils'
|
|
@@ -63,7 +63,7 @@ vi.mock("@/lib/sidebar-utils", () => ({
|
|
|
63
63
|
isParentActive: (pathname: string, target: string) => pathname.startsWith(target),
|
|
64
64
|
}));
|
|
65
65
|
|
|
66
|
-
vi.mock("@/components/shared/lucide-icon-picker/lucide-icon-by-name", () => ({
|
|
66
|
+
vi.mock("@/components/shared-kit/icons/lucide-icon-picker/lucide-icon-by-name", () => ({
|
|
67
67
|
LucideIconByName: ({ name }: any) => <span data-testid="project-icon">{name}</span>,
|
|
68
68
|
}));
|
|
69
69
|
|
|
@@ -33,7 +33,7 @@ import { NavKnowledge } from "@/components/layout/sidebar-03/nav-knowledge";
|
|
|
33
33
|
import { NavWorkspace } from "@/components/layout/sidebar-03/nav-workspace";
|
|
34
34
|
import { Logo } from "@/components/layout/sidebar-03/logo";
|
|
35
35
|
import { UserMenu } from "@/components/layout/sidebar-03/user-menu";
|
|
36
|
-
import { ThemeToggle } from "@/components/shared/theme-toggle";
|
|
36
|
+
import { ThemeToggle } from "@/components/shared-kit/theme/theme-toggle";
|
|
37
37
|
import { AnimatedThemeToggler } from '@/components/magicui/animated-theme-toggler'
|
|
38
38
|
import { Badge } from "@/components/ui/badge"
|
|
39
39
|
import { workspaceRoutes } from "@/config/sidebar-routes";
|
|
@@ -28,7 +28,7 @@ import {
|
|
|
28
28
|
} from "@/components/ui/sidebar";
|
|
29
29
|
import { cn } from "@/lib/utils";
|
|
30
30
|
import { isParentActive } from "@/lib/sidebar-utils";
|
|
31
|
-
import { LucideIconByName } from "@/components/shared/lucide-icon-picker/lucide-icon-by-name";
|
|
31
|
+
import { LucideIconByName } from "@/components/shared-kit/icons/lucide-icon-picker/lucide-icon-by-name";
|
|
32
32
|
import { CreateWorkspaceDialog } from "@/components/workspace/create-workspace-dialog";
|
|
33
33
|
import { useLiveQuery } from "@tanstack/react-db";
|
|
34
34
|
import { workspacesCollection } from "@/lib/collections/reference/workspaces-collection";
|
|
@@ -47,7 +47,7 @@ import { signOut, useSession } from "@/lib/auth/auth-client";
|
|
|
47
47
|
import { useRouter, useMatches } from "@tanstack/react-router";
|
|
48
48
|
import { useTranslation } from "react-i18next";
|
|
49
49
|
import { getQueryClient } from "@/lib/query-client-seam";
|
|
50
|
-
import { UserAvatar } from "@/components/
|
|
50
|
+
import { UserAvatar } from "@/components/shared-kit";
|
|
51
51
|
import type { AvatarConfig, ShapeType } from "@allbluecn/kernel";
|
|
52
52
|
import { SparklesText } from "@/components/magicui/sparkles-text";
|
|
53
53
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export * from '@/components/
|
|
1
|
+
export * from '@/components/shared-kit/theme/animated-theme-toggler'
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export * from '@/components/
|
|
1
|
+
export * from '@/components/shared-kit/decorative/grid-pattern'
|
|
@@ -36,7 +36,7 @@ import {
|
|
|
36
36
|
DialogHeader,
|
|
37
37
|
DialogTitle,
|
|
38
38
|
} from "@/components/ui/dialog";
|
|
39
|
-
import { LucideIconPicker } from "@/components/shared/lucide-icon-picker";
|
|
39
|
+
import { LucideIconPicker } from "@/components/shared-kit/icons/lucide-icon-picker";
|
|
40
40
|
import { extractDisplayId, validateDisplayId } from "@/lib/project-display-id";
|
|
41
41
|
import { checkDisplayIdAvailableFn, createProjectFn } from "@/server/serverFns/project";
|
|
42
42
|
import { listWorkspacesBriefFn } from "@/server/serverFns/workspace";
|
|
@@ -41,7 +41,7 @@ import {
|
|
|
41
41
|
import { addProjectMemberFromTeamFn } from "@/server/serverFns/project";
|
|
42
42
|
import { listTeamUsersFn } from "@/server/serverFns/team";
|
|
43
43
|
import type { ProjectRole } from "@/types/project";
|
|
44
|
-
import { UserAvatar } from "@/components/
|
|
44
|
+
import { UserAvatar } from "@/components/shared-kit";
|
|
45
45
|
|
|
46
46
|
interface AssignMemberDialogProps {
|
|
47
47
|
open: boolean;
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
|
|
18
18
|
import { useTranslation } from "react-i18next"
|
|
19
19
|
import { getClientI18n } from "@/i18n/client"
|
|
20
|
-
import { UserAvatar } from "@/components/
|
|
20
|
+
import { UserAvatar } from "@/components/shared-kit";
|
|
21
21
|
import type { AvatarConfig, ShapeType } from "@allbluecn/kernel";
|
|
22
22
|
import { cn } from "@/lib/utils";
|
|
23
23
|
import { formatDate } from "@/lib/datetime";
|
|
@@ -39,7 +39,7 @@ import {
|
|
|
39
39
|
AlertDialogHeader,
|
|
40
40
|
AlertDialogTitle,
|
|
41
41
|
} from "@/components/ui/alert-dialog";
|
|
42
|
-
import { UserAvatar } from "@/components/
|
|
42
|
+
import { UserAvatar } from "@/components/shared-kit";
|
|
43
43
|
import type { AvatarConfig, ShapeType } from "@allbluecn/kernel";
|
|
44
44
|
import { InviteMemberDialog } from "./invite-member-dialog";
|
|
45
45
|
import {
|
|
@@ -15,6 +15,6 @@
|
|
|
15
15
|
// You should have received a copy of the GNU Affero General Public License
|
|
16
16
|
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
17
17
|
|
|
18
|
-
export { NotionAvatar as default } from "@/components/
|
|
19
|
-
export { NotionAvatar } from "@/components/
|
|
18
|
+
export { NotionAvatar as default } from "@/components/shared-kit"
|
|
19
|
+
export { NotionAvatar } from "@/components/shared-kit"
|
|
20
20
|
export type { ShapeType } from "@allbluecn/kernel"
|
|
@@ -15,7 +15,7 @@ import { useTranslation } from "react-i18next"
|
|
|
15
15
|
import { cn } from "@/lib/utils"
|
|
16
16
|
import { formatDate } from "@/lib/datetime"
|
|
17
17
|
import { useTimezone } from "@/providers/timezone-provider"
|
|
18
|
-
import { UserAvatar } from "@/components/
|
|
18
|
+
import { UserAvatar } from "@/components/shared-kit"
|
|
19
19
|
import type { AvatarConfig, ShapeType } from "@allbluecn/kernel"
|
|
20
20
|
import { Badge } from "@/components/ui/badge"
|
|
21
21
|
import { Button } from "@/components/ui/button"
|
|
@@ -28,7 +28,7 @@ import { m } from "motion/react";
|
|
|
28
28
|
import { InteractiveHoverButton } from "@/components/magicui/interactive-hover-button";
|
|
29
29
|
import { useSession } from "@/lib/auth/auth-client";
|
|
30
30
|
import { useRouter } from "@tanstack/react-router";
|
|
31
|
-
import { ThemeToggle } from "@/components/shared/theme-toggle";
|
|
31
|
+
import { ThemeToggle } from "@/components/shared-kit/theme/theme-toggle";
|
|
32
32
|
import { AnimatedThemeToggler } from '@/components/magicui/animated-theme-toggler'
|
|
33
33
|
|
|
34
34
|
export type NavigationSection = {
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
17
17
|
|
|
18
18
|
import type { ReactNode } from 'react'
|
|
19
|
-
import { AnimatedThemeToggler } from '
|
|
19
|
+
import { AnimatedThemeToggler } from '@/components/shared-kit/theme/animated-theme-toggler'
|
|
20
20
|
|
|
21
21
|
interface AuthLayoutProps {
|
|
22
22
|
children: ReactNode
|
|
@@ -17,12 +17,13 @@
|
|
|
17
17
|
|
|
18
18
|
|
|
19
19
|
import { useState } from "react";
|
|
20
|
+
import * as React from "react";
|
|
20
21
|
import type { ReactNode } from "react";
|
|
21
22
|
import { toast } from "sonner";
|
|
22
23
|
import { useTranslation } from "react-i18next";
|
|
23
|
-
import { Button } from "
|
|
24
|
-
import { Input } from "
|
|
25
|
-
import { Tooltip, TooltipContent, TooltipTrigger } from "
|
|
24
|
+
import { Button } from "@/components/ui/button";
|
|
25
|
+
import { Input } from "@/components/ui/input";
|
|
26
|
+
import { Tooltip, TooltipContent, TooltipTrigger } from "@/components/ui/tooltip";
|
|
26
27
|
import {
|
|
27
28
|
Dialog,
|
|
28
29
|
DialogContent,
|
|
@@ -30,7 +31,7 @@ import {
|
|
|
30
31
|
DialogFooter,
|
|
31
32
|
DialogHeader,
|
|
32
33
|
DialogTitle,
|
|
33
|
-
} from "
|
|
34
|
+
} from "@/components/ui/dialog";
|
|
34
35
|
|
|
35
36
|
interface NameConfirmDialogProps {
|
|
36
37
|
open: boolean;
|
|
@@ -120,7 +121,7 @@ export function NameConfirmDialog({
|
|
|
120
121
|
</p>
|
|
121
122
|
<Input
|
|
122
123
|
value={inputValue}
|
|
123
|
-
onChange={(e) => {
|
|
124
|
+
onChange={(e: React.ChangeEvent<HTMLInputElement>) => {
|
|
124
125
|
setInputValue(e.target.value);
|
|
125
126
|
setError("");
|
|
126
127
|
}}
|