@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.
Files changed (228) hide show
  1. package/package.json +32 -35
  2. package/src/__tests__/components/reference-inline.test.tsx +1 -1
  3. package/src/components/agents/agents-page.tsx +1 -1
  4. package/src/components/animated-icons/layout-panel-top.tsx +1 -1
  5. package/src/components/auth/auth-layout.tsx +1 -1
  6. package/src/components/devtools/ai-chat-panel.tsx +54 -0
  7. package/src/components/devtools/devtools-panel.tsx +100 -0
  8. package/src/components/{ui-shared/skeleton.tsx → devtools/index.ts} +3 -13
  9. package/src/components/devtools/session-panel.tsx +102 -0
  10. package/src/components/knowledge/dialog/knowledge-form-dialog.tsx +1 -1
  11. package/src/components/knowledge/editor/doc-header.tsx +1 -1
  12. package/src/components/knowledge-public/sharers-avatar-group.tsx +1 -1
  13. package/src/components/layout/sidebar-03/__tests__/nav-workspace.test.tsx +1 -1
  14. package/src/components/layout/sidebar-03/app-sidebar.tsx +1 -1
  15. package/src/components/layout/sidebar-03/nav-workspace.tsx +1 -1
  16. package/src/components/layout/sidebar-03/user-menu.tsx +1 -1
  17. package/src/components/magicui/animated-theme-toggler.tsx +1 -1
  18. package/src/components/magicui/grid-pattern.tsx +1 -1
  19. package/src/components/project/create-project-dialog.tsx +1 -1
  20. package/src/components/project/invite-member-dialog.tsx +1 -1
  21. package/src/components/project/project-activity-list.tsx +1 -1
  22. package/src/components/project/project-member-manager.tsx +1 -1
  23. package/src/components/settings/personal-team/account/avatar/notion-avatar.tsx +2 -2
  24. package/src/components/settings/personal-team/team/team-member-list.tsx +1 -1
  25. package/src/components/shadcn-space/blocks/hero-01/header.tsx +1 -1
  26. package/src/components/{ui-shared → shared-kit/auth}/auth-layout.tsx +1 -1
  27. package/src/components/{ui-shared → shared-kit/decorative}/grid-pattern.tsx +1 -1
  28. package/src/components/{ui-shared → shared-kit/dialogs}/name-confirm-dialog.tsx +6 -5
  29. package/src/components/{shared → shared-kit/icons}/__tests__/lucide-curated-icons.test.ts +2 -2
  30. package/src/components/{shared → shared-kit/icons}/__tests__/lucide-icon-data.test.ts +1 -1
  31. package/src/components/{shared → shared-kit/icons}/__tests__/lucide-icon-picker.test.tsx +5 -5
  32. package/src/components/{ui-shared → shared-kit}/index.ts +9 -6
  33. package/src/components/{ui-shared → shared-kit/layout}/layout-panel-top.tsx +1 -1
  34. package/src/components/{ui-shared → shared-kit/navigation}/nav-float-button.tsx +2 -2
  35. package/src/components/{ui-shared → shared-kit/theme}/animated-theme-toggler.tsx +1 -1
  36. package/src/components/story/columns.tsx +1 -1
  37. package/src/components/story/create-story-dialog.tsx +2 -2
  38. package/src/components/story/detail/__tests__/activity-timeline.test.tsx +1 -1
  39. package/src/components/story/detail/activity-timeline.tsx +2 -2
  40. package/src/components/story/detail/comment-item.tsx +1 -1
  41. package/src/components/story/detail/story-detail-body.tsx +2 -2
  42. package/src/components/story/detail/story-detail-toolbar/associated-attachments-panel.tsx +1 -1
  43. package/src/components/story/display/group-resolver.tsx +2 -2
  44. package/src/components/story/filters/applied-filters.tsx +1 -1
  45. package/src/components/story/inline-editors/assignee-editor.tsx +1 -1
  46. package/src/components/story/inline-editors/story-select-dialog.tsx +1 -1
  47. package/src/components/story/relations/story-ref-row.tsx +2 -2
  48. package/src/components/story/story-panel-header.tsx +1 -1
  49. package/src/components/story/story-toolbar.tsx +1 -1
  50. package/src/components/story/transfer-story-popover.tsx +1 -1
  51. package/src/components/story/views/create-view-dialog.tsx +1 -1
  52. package/src/components/story/views/kanban-card.tsx +1 -1
  53. package/src/components/story/views/story-list/index.tsx +1 -1
  54. package/src/components/story/views/story-list/inline-story-creator.tsx +1 -1
  55. package/src/components/tiptap/mindmap/mind-map.tsx +2 -2
  56. package/src/components/tiptap/mindmap/mindmap-fullscreen-dialog.tsx +1 -1
  57. package/src/components/tiptap/node/annotation-node/annotation-node-view.tsx +1 -1
  58. package/src/components/tiptap/node/doc-card-extension.tsx +2 -2
  59. package/src/components/tiptap/notion-like/notion-like-editor-header.tsx +2 -2
  60. package/src/components/tiptap/ui/doc-reference-interaction/doc-reference-interaction.tsx +2 -2
  61. package/src/components/tiptap/ui/mention-dropdown-menu/mention-dropdown-menu.tsx +2 -2
  62. package/src/components/tiptap/ui/reference-dropdown-menu/reference-dropdown-menu.tsx +1 -1
  63. package/src/components/tiptap/ui/slash-dropdown-menu/slash-dropdown-menu.tsx +1 -1
  64. package/src/components/ui/alert-dialog.tsx +216 -1
  65. package/src/components/ui/badge.tsx +66 -1
  66. package/src/components/ui/button.tsx +84 -1
  67. package/src/components/ui/card.tsx +120 -1
  68. package/src/components/ui/checkbox.tsx +50 -1
  69. package/src/components/ui/context-menu.tsx +280 -1
  70. package/src/components/ui/dialog.tsx +183 -1
  71. package/src/components/ui/dropdown-menu.tsx +286 -1
  72. package/src/components/ui/empty.tsx +121 -1
  73. package/src/components/ui/input.tsx +36 -1
  74. package/src/components/ui/label.tsx +39 -1
  75. package/src/components/ui/popover.tsx +106 -1
  76. package/src/components/ui/resizable.tsx +67 -1
  77. package/src/components/ui/select.tsx +207 -1
  78. package/src/components/ui/sidebar.tsx +708 -1
  79. package/src/components/ui/skeleton.tsx +30 -1
  80. package/src/components/ui/sonner.tsx +37 -1
  81. package/src/components/ui/switch.tsx +48 -1
  82. package/src/components/ui/textarea.tsx +35 -1
  83. package/src/components/ui/tooltip.tsx +72 -1
  84. package/src/components/workspace/create-workspace-dialog.tsx +1 -1
  85. package/src/lib/auth/auth-client.ts +1 -1
  86. package/src/lib/changelog/sdk-versions.ts +10 -3
  87. package/src/lib/perf.ts +1 -1
  88. package/src/lib/utils.ts +6 -1
  89. package/src/plugins/core/inspiration/pages/inspiration-page.tsx +1 -1
  90. package/src/plugins/core/inspiration/ui.tsx +1 -1
  91. package/src/plugins/core/prd/components/agent-input.tsx +3 -3
  92. package/src/plugins/core/prd/components/component-editor/collapsible-section.tsx +1 -1
  93. package/src/plugins/core/prd/components/component-editor/content-section.tsx +3 -3
  94. package/src/plugins/core/prd/components/component-editor/style-fields.tsx +3 -3
  95. package/src/plugins/core/prd/components/component-thumbnail.tsx +1 -1
  96. package/src/plugins/core/prd/components/dialog/create-prd-dialog.tsx +3 -3
  97. package/src/plugins/core/prd/components/dialog/prd-detail-client.tsx +4 -4
  98. package/src/plugins/core/prd/components/page-version-panel/components/create-version-dialog.tsx +2 -2
  99. package/src/plugins/core/prd/components/page-version-panel/components/delete-version-dialog.tsx +2 -2
  100. package/src/plugins/core/prd/components/page-version-panel/components/edit-version-dialog.tsx +2 -2
  101. package/src/plugins/core/prd/components/page-version-panel.tsx +9 -9
  102. package/src/plugins/core/prd/components/page-version-tree.tsx +5 -5
  103. package/src/plugins/core/prd/components/prd-agent-panel.tsx +3 -3
  104. package/src/plugins/core/prd/components/prd-comment-review-panel.tsx +7 -7
  105. package/src/plugins/core/prd/components/prd-component-editor-content.tsx +2 -2
  106. package/src/plugins/core/prd/components/prd-dashboard.tsx +8 -8
  107. package/src/plugins/core/prd/components/prd-doc-panel.tsx +2 -2
  108. package/src/plugins/core/prd/components/prd-editor-layout.tsx +4 -4
  109. package/src/plugins/core/prd/components/prd-filter-bar.tsx +1 -1
  110. package/src/plugins/core/prd/components/prd-left-sidebar.tsx +4 -4
  111. package/src/plugins/core/prd/components/prd-navigation.tsx +6 -6
  112. package/src/plugins/core/prd/components/prd-prototype-panel.tsx +2 -2
  113. package/src/plugins/core/prd/components/prd-right-sidebar.tsx +3 -3
  114. package/src/plugins/core/prd/components/prd-share-panel/components/single-version-share-card.tsx +7 -7
  115. package/src/plugins/core/prd/components/prd-share-panel.tsx +10 -10
  116. package/src/plugins/core/prd/components/prd-tree-page-tab.tsx +5 -5
  117. package/src/plugins/core/prd/components/prototype/PrototypeCanvas.tsx +2 -2
  118. package/src/plugins/core/prd/components/restore-version-dialog.tsx +2 -2
  119. package/src/plugins/core/prd/components/share/prd-share-client.tsx +1 -1
  120. package/src/plugins/core/prd/components/share/share-comment-panel.tsx +6 -6
  121. package/src/plugins/core/prd/components/share/share-comment-review-panel.tsx +2 -2
  122. package/src/plugins/core/prd/components/share/share-layout.tsx +1 -1
  123. package/src/plugins/core/prd/components/share/share-nav-bar.tsx +4 -4
  124. package/src/plugins/core/prd/components/share/share-password-gate.tsx +4 -4
  125. package/src/plugins/core/prd/components/share/share-prototype-view.tsx +1 -1
  126. package/src/plugins/core/prd/components/share/share-review-panel.tsx +5 -5
  127. package/src/plugins/core/prd/components/share/share-theme-toggle.tsx +1 -1
  128. package/src/plugins/core/prd/components/share/version-share-client.tsx +1 -1
  129. package/src/plugins/core/prd/pages/prd-detail-page.tsx +2 -2
  130. package/src/plugins/core/prd/pages/share-prd-page.tsx +1 -1
  131. package/src/plugins/core/prd/prd-nav.tsx +1 -1
  132. package/src/plugins/core/tags/nav-tag.tsx +7 -7
  133. package/src/plugins/core/tags/pages/tag-detail-page.tsx +1 -1
  134. package/src/plugins/core/tags/tag-badge.tsx +2 -2
  135. package/src/plugins/core/tags/tag-color-picker.tsx +1 -1
  136. package/src/plugins/core/tags/tag-manager.tsx +6 -6
  137. package/src/plugins/core/tags/tag-selector.tsx +3 -3
  138. package/src/providers/index.tsx +1 -1
  139. package/src/providers/timezone-provider.tsx +1 -1
  140. package/src/routes/__root.tsx +1 -1
  141. package/src/routes/_nav/acceptance-criteria/route.tsx +1 -1
  142. package/src/routes/_nav/apps/anyhub/$id/route.tsx +1 -1
  143. package/src/routes/_nav/apps/anyhub/route.tsx +1 -1
  144. package/src/routes/_nav/bugs/route.tsx +1 -1
  145. package/src/routes/_nav/dashboard/-components/avatar-group.tsx +1 -1
  146. package/src/routes/_nav/dashboard/route.lazy.tsx +1 -1
  147. package/src/routes/_nav/knowledge/$kbId/doc/$docId/route.lazy.tsx +1 -1
  148. package/src/routes/_nav/knowledge/index.lazy.tsx +1 -1
  149. package/src/routes/_nav/notion-like/route.tsx +1 -1
  150. package/src/routes/_nav/pricing-02/route.tsx +1 -1
  151. package/src/routes/_nav/projects/$projectId/$storyId/route.lazy.tsx +1 -1
  152. package/src/routes/_nav/projects/$projectId/index.lazy.tsx +3 -3
  153. package/src/routes/_nav/projects/$projectId/iterations/index.lazy.tsx +1 -1
  154. package/src/routes/_nav/projects/$projectId/settings/route.lazy.tsx +3 -3
  155. package/src/routes/_nav/route.lazy.tsx +1 -1
  156. package/src/routes/_nav/settings/general/route.lazy.tsx +1 -1
  157. package/src/routes/_nav/test-cases/route.tsx +1 -1
  158. package/src/routes/_nav/workspaces/$workspaceId/route.lazy.tsx +1 -1
  159. package/src/routes/_nav/workspaces/$workspaceId/settings/route.lazy.tsx +2 -2
  160. package/src/routes/_nav/workspaces/index.lazy.tsx +1 -1
  161. package/src/routes/invite/$token/route.lazy.tsx +1 -1
  162. package/src/server/__tests__/agent-client-graph.test.ts +1 -1
  163. package/src/components/shared/name-confirm-dialog.tsx +0 -1
  164. package/src/components/shared/nav-float-button.tsx +0 -1
  165. package/src/components/shared/placeholder-page.tsx +0 -1
  166. package/src/components/ui-shared/alert-dialog.tsx +0 -216
  167. package/src/components/ui-shared/avatar.tsx +0 -129
  168. package/src/components/ui-shared/badge.tsx +0 -66
  169. package/src/components/ui-shared/button.tsx +0 -84
  170. package/src/components/ui-shared/card.tsx +0 -120
  171. package/src/components/ui-shared/checkbox.tsx +0 -50
  172. package/src/components/ui-shared/context-menu.tsx +0 -280
  173. package/src/components/ui-shared/dialog.tsx +0 -183
  174. package/src/components/ui-shared/dropdown-menu.tsx +0 -286
  175. package/src/components/ui-shared/empty.tsx +0 -121
  176. package/src/components/ui-shared/input.tsx +0 -36
  177. package/src/components/ui-shared/item.tsx +0 -213
  178. package/src/components/ui-shared/kbd.tsx +0 -33
  179. package/src/components/ui-shared/label.tsx +0 -39
  180. package/src/components/ui-shared/popover.tsx +0 -106
  181. package/src/components/ui-shared/resizable.tsx +0 -67
  182. package/src/components/ui-shared/select.tsx +0 -207
  183. package/src/components/ui-shared/separator.tsx +0 -45
  184. package/src/components/ui-shared/sheet.tsx +0 -164
  185. package/src/components/ui-shared/sidebar.tsx +0 -708
  186. package/src/components/ui-shared/sonner.tsx +0 -37
  187. package/src/components/ui-shared/switch.tsx +0 -48
  188. package/src/components/ui-shared/textarea.tsx +0 -35
  189. package/src/components/ui-shared/tooltip.tsx +0 -72
  190. package/src/components/ui-shared/utils.ts +0 -6
  191. package/src/lib/utils.d.ts +0 -1
  192. package/src/plugins/.gen-manifest.json +0 -13
  193. package/src/plugins/modules.gen.ts +0 -20
  194. package/src/plugins/plugins.gen.ts +0 -20
  195. package/src/plugins/ui.gen.ts +0 -8
  196. package/src/routes/_nav/inspiration/route.tsx +0 -8
  197. package/src/routes/_nav/prd/$id/route.tsx +0 -9
  198. package/src/routes/_nav/prd/index.tsx +0 -9
  199. package/src/routes/_nav/prd/route.tsx +0 -8
  200. package/src/routes/_nav/tags/$id/route.tsx +0 -8
  201. package/src/routes/_nav/tags/index.tsx +0 -8
  202. package/src/routes/_nav/tags/route.tsx +0 -8
  203. package/src/routes/_nav/tags/settings/route.tsx +0 -9
  204. package/src/routes/share/prd/$prdId/route.tsx +0 -10
  205. package/src/types/open-file-viewer.d.ts +0 -14
  206. /package/src/components/{ui-shared → shared-kit/ai}/ai-command-button.tsx +0 -0
  207. /package/src/components/{ui-shared → shared-kit/ai}/ai-stream-text.tsx +0 -0
  208. /package/src/components/{ui-shared → shared-kit/auth}/auth-client.ts +0 -0
  209. /package/src/components/{ui-shared → shared-kit/avatars}/notion-avatar.tsx +0 -0
  210. /package/src/components/{ui-shared → shared-kit/avatars}/user-avatar.tsx +0 -0
  211. /package/src/components/{shared → shared-kit/data-viz}/contribution-graph-tooltip.tsx +0 -0
  212. /package/src/components/{shared → shared-kit/dev}/component-preview.tsx +0 -0
  213. /package/src/components/{ui-shared → shared-kit/hooks}/use-mobile.ts +0 -0
  214. /package/src/components/{shared → shared-kit/i18n}/language-switcher.tsx +0 -0
  215. /package/src/components/{shared → shared-kit/i18n}/translator-text.tsx +0 -0
  216. /package/src/components/{shared → shared-kit/icons}/lucide-icon-picker/curated-icons.ts +0 -0
  217. /package/src/components/{shared → shared-kit/icons}/lucide-icon-picker/icon-data.ts +0 -0
  218. /package/src/components/{shared → shared-kit/icons}/lucide-icon-picker/index.tsx +0 -0
  219. /package/src/components/{shared → shared-kit/icons}/lucide-icon-picker/lucide-icon-by-name.tsx +0 -0
  220. /package/src/components/{shared → shared-kit/icons}/lucide-icon-picker/panel.tsx +0 -0
  221. /package/src/components/{shared → shared-kit/loading}/wave-physics-loader.tsx +0 -0
  222. /package/src/components/{ui-shared → shared-kit/pages}/placeholder-page.tsx +0 -0
  223. /package/src/components/{ui-shared → shared-kit/reference}/reference-inline.tsx +0 -0
  224. /package/src/components/{ui-shared → shared-kit/reference}/reference-search.tsx +0 -0
  225. /package/src/components/{shared → shared-kit/theme}/theme-toggle.tsx +0 -0
  226. /package/src/components/{shared → shared-kit/timezone}/timezone-bootstrap.tsx +0 -0
  227. /package/src/components/{ui-shared → shared-kit/timezone}/timezone-provider.tsx +0 -0
  228. /package/src/components/{shared → shared-kit/timezone}/timezone-select.tsx +0 -0
@@ -17,8 +17,8 @@
17
17
 
18
18
  import { describe, expect, it } from "vitest";
19
19
  import { icons } from "lucide-react";
20
- import { CURATED_ICONS } from "@/components/shared/lucide-icon-picker/curated-icons";
21
- import { pascalToKebab } from "@/components/shared/lucide-icon-picker/icon-data";
20
+ import { CURATED_ICONS } from "@/components/shared-kit/icons/lucide-icon-picker/curated-icons";
21
+ import { pascalToKebab } from "@/components/shared-kit/icons/lucide-icon-picker/icon-data";
22
22
 
23
23
  const BANNED_SUFFIX = /-(off|slash|ban|x)$/;
24
24
  const BANNED_NUMBER_TAIL = /-[0-9]+$/;
@@ -24,7 +24,7 @@ import {
24
24
  pascalToKebab,
25
25
  pushRecentIcon,
26
26
  type CuratedIcon,
27
- } from "@/components/shared/lucide-icon-picker/icon-data";
27
+ } from "@/components/shared-kit/icons/lucide-icon-picker/icon-data";
28
28
  import { Star, Clock, FolderKanban } from "lucide-react";
29
29
 
30
30
  const fakeIcons: CuratedIcon[] = [
@@ -19,11 +19,11 @@ import { beforeEach, describe, expect, it, vi } from "vitest";
19
19
  import { render, screen, waitFor } from "@testing-library/react";
20
20
  import userEvent from "@testing-library/user-event";
21
21
  import { Star } from "lucide-react";
22
- import { LucideIconByName } from "@/components/shared/lucide-icon-picker/lucide-icon-by-name";
23
- import { IconPickerPanel } from "@/components/shared/lucide-icon-picker/panel";
24
- import { LucideIconPicker } from "@/components/shared/lucide-icon-picker";
25
- import { CURATED_ICONS } from "@/components/shared/lucide-icon-picker/curated-icons";
26
- import { pushRecentIcon, getRecentIcons } from "@/components/shared/lucide-icon-picker/icon-data";
22
+ import { LucideIconByName } from "@/components/shared-kit/icons/lucide-icon-picker/lucide-icon-by-name";
23
+ import { IconPickerPanel } from "@/components/shared-kit/icons/lucide-icon-picker/panel";
24
+ import { LucideIconPicker } from "@/components/shared-kit/icons/lucide-icon-picker";
25
+ import { CURATED_ICONS } from "@/components/shared-kit/icons/lucide-icon-picker/curated-icons";
26
+ import { pushRecentIcon, getRecentIcons } from "@/components/shared-kit/icons/lucide-icon-picker/icon-data";
27
27
 
28
28
  describe("LucideIconByName", () => {
29
29
  it("有效 name 渲染对应图标(jsdom 下 data-icon 属性不可靠,以 width 断言)", () => {
@@ -15,9 +15,12 @@
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 { ReferenceInline } from "./reference-inline";
19
- export { ReferenceSearch } from "./reference-search";
20
- export { AICommandButton } from "./ai-command-button";
21
- export { AIStreamText } from "./ai-stream-text";
22
- export { NotionAvatar } from "./notion-avatar";
23
- export { UserAvatar } from "./user-avatar";
18
+ export { UserAvatar } from "./avatars/user-avatar";
19
+ export { NotionAvatar } from "./avatars/notion-avatar";
20
+ export { ReferenceInline } from "./reference/reference-inline";
21
+ export { ReferenceSearch } from "./reference/reference-search";
22
+ export { AICommandButton } from "./ai/ai-command-button";
23
+ export { AIStreamText } from "./ai/ai-stream-text";
24
+ export { AuthLayout, AuthLayoutLeft, AuthLayoutRight } from "./auth/auth-layout";
25
+ export { AnimatedThemeToggler } from "./theme/animated-theme-toggler";
26
+ export { useTimezone } from "./timezone/timezone-provider";
@@ -21,7 +21,7 @@ import { m, useAnimation } from "motion/react";
21
21
  import type { HTMLAttributes } from "react";
22
22
  import { forwardRef, useCallback, useImperativeHandle, useRef } from "react";
23
23
 
24
- import { cn } from "./utils";
24
+ import { cn } from "@/lib/utils";
25
25
 
26
26
  export interface LayoutPanelTopIconHandle {
27
27
  startAnimation: () => void;
@@ -18,14 +18,14 @@
18
18
 
19
19
  import React, { useRef, useState, useCallback, useEffect } from "react";
20
20
  import { useTranslation } from "react-i18next";
21
- import { Button } from "./button";
21
+ import { Button } from "@/components/ui/button";
22
22
  import { Minimize2, ArrowDownToLine } from "lucide-react";
23
23
  import {
24
24
  Tooltip,
25
25
  TooltipContent,
26
26
  TooltipProvider,
27
27
  TooltipTrigger,
28
- } from "./tooltip";
28
+ } from "@/components/ui/tooltip";
29
29
 
30
30
  type Corner = "top-left" | "top-right" | "bottom-left" | "bottom-right";
31
31
 
@@ -21,7 +21,7 @@ import { Moon, Sun } from "lucide-react"
21
21
  import { flushSync } from "react-dom"
22
22
  import { useTheme } from "next-themes"
23
23
 
24
- import { cn } from "./utils"
24
+ import { cn } from "@/lib/utils"
25
25
 
26
26
  export type TransitionVariant =
27
27
  | "circle"
@@ -27,7 +27,7 @@ import {
27
27
  } from "@tanstack/react-table";
28
28
  import { Link } from "@tanstack/react-router";
29
29
  import { Badge } from "@/components/ui/badge";
30
- import { UserAvatar } from "@/components/ui-shared";
30
+ import { UserAvatar } from "@/components/shared-kit";
31
31
  import { PriorityIcon } from "./priority-icon";
32
32
  import { STATE_LABEL, STATE_COLOR, PRIORITY_LABEL, PRIORITY_RANK } from "./constants";
33
33
  import type { TFunction } from 'i18next'
@@ -17,10 +17,10 @@
17
17
 
18
18
  import { useCallback, useEffect, useRef, useState } from "react"
19
19
  import { CalendarCheck, CalendarPlus2, Sprout } from "lucide-react"
20
- import { UserAvatar } from "@/components/ui-shared"
20
+ import { UserAvatar } from "@/components/shared-kit"
21
21
  import { useForm } from "@tanstack/react-form"
22
22
  import { useTranslation } from "react-i18next"
23
- import { LucideIconByName } from "@/components/shared/lucide-icon-picker/lucide-icon-by-name"
23
+ import { LucideIconByName } from "@/components/shared-kit/icons/lucide-icon-picker/lucide-icon-by-name"
24
24
  import { Button } from "@/components/ui/button"
25
25
  import { Input } from "@/components/ui/input"
26
26
 
@@ -24,7 +24,7 @@ vi.mock("@/server/serverFns/project", () => ({
24
24
  listProjectsBriefFn: vi.fn().mockResolvedValue([]),
25
25
  }));
26
26
 
27
- vi.mock("@/components/ui-shared", () => ({
27
+ vi.mock("@/components/shared-kit", () => ({
28
28
  UserAvatar: ({ name }: { name: string }) => (
29
29
  <span data-testid="avatar">{name}</span>
30
30
  ),
@@ -19,7 +19,7 @@ import { useState, useRef, useLayoutEffect, useEffect } from "react";
19
19
  import { useTranslation } from "react-i18next";
20
20
  import type { TFunction } from "i18next";
21
21
  import type { ReactNode } from "react";
22
- import { UserAvatar } from "@/components/ui-shared";
22
+ import { UserAvatar } from "@/components/shared-kit";
23
23
  import {
24
24
  ACTIVITY_LABEL,
25
25
  ACTIVITY_ICON,
@@ -30,7 +30,7 @@ import {
30
30
  type StoryState,
31
31
  type StoryPriority,
32
32
  } from "@/components/story/constants";
33
- import { LucideIconByName } from "@/components/shared/lucide-icon-picker/lucide-icon-by-name";
33
+ import { LucideIconByName } from "@/components/shared-kit/icons/lucide-icon-picker/lucide-icon-by-name";
34
34
  import { listProjectsBriefFn } from "@/server/serverFns/project";
35
35
  import type { ActivityItem, UserBrief } from "@/components/story/types";
36
36
  import { groupActivities, type ActivityGroup } from "@/lib/story/activity-grouper";
@@ -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/ui-shared";
18
+ import { UserAvatar } from "@/components/shared-kit";
19
19
  import { useTranslation } from "react-i18next";
20
20
  import { formatRelative } from "./comment-thread";
21
21
  import { CommentInput } from "./comment-input";
@@ -27,7 +27,7 @@ import {
27
27
  ClockPlus,
28
28
  ClockArrowUp,
29
29
  } from "lucide-react";
30
- import { UserAvatar } from "@/components/ui-shared";
30
+ import { UserAvatar } from "@/components/shared-kit";
31
31
  import { Input } from "@/components/ui/input";
32
32
 
33
33
  import { Skeleton } from "@/components/ui/skeleton";
@@ -45,7 +45,7 @@ import { EmojiPicker } from "./emoji-picker";
45
45
  import { StoryAiToolbar } from "../ai/story-ai-toolbar";
46
46
  import { useStoryAiModel } from "../ai/use-story-ai-model";
47
47
  import { StateEditor, PriorityEditor, AssigneeEditor, DateEditor, LabelsEditor, ParentStoryEditor } from "../inline-editors";
48
- import { LucideIconByName } from "@/components/shared/lucide-icon-picker/lucide-icon-by-name";
48
+ import { LucideIconByName } from "@/components/shared-kit/icons/lucide-icon-picker/lucide-icon-by-name";
49
49
  import type { Editor } from "@tiptap/react";
50
50
  import { StoryProperties } from "./story-properties";
51
51
  import { StoryDetailToolbar } from "./story-detail-toolbar";
@@ -50,7 +50,7 @@ import { getDocumentFn } from "@/server/serverFns/knowledge";
50
50
  import { sanitize } from "@/lib/sanitize";
51
51
  import { formatFileSize, getFaviconUrl, getFileTypeIcon, extractLinkTitle, getMimeTypeLabel } from "../../relations/format";
52
52
  import { generalGroupLabel } from "../../relations/general-groups";
53
- import { LucideIconByName } from "@/components/shared/lucide-icon-picker/lucide-icon-by-name";
53
+ import { LucideIconByName } from "@/components/shared-kit/icons/lucide-icon-picker/lucide-icon-by-name";
54
54
  import type { AssociatedItem, RelationsData, StoryLinkItem, StoryAttachmentItem } from "../../types";
55
55
 
56
56
  export type AssociatedDialogKind = "link" | "attachment" | "knowledge";
@@ -16,8 +16,8 @@
16
16
  // along with this program. If not, see <https://www.gnu.org/licenses/>.
17
17
 
18
18
  import { Sprout, CircleUser } from "lucide-react";
19
- import { UserAvatar } from "@/components/ui-shared";
20
- import { LucideIconByName } from "@/components/shared/lucide-icon-picker/lucide-icon-by-name";
19
+ import { UserAvatar } from "@/components/shared-kit";
20
+ import { LucideIconByName } from "@/components/shared-kit/icons/lucide-icon-picker/lucide-icon-by-name";
21
21
  import { cn } from "@/lib/utils";
22
22
  import { STORY_STATES, STATE_LABEL, STATE_COLOR, STATE_ICON, STORY_PRIORITIES, PRIORITY_LABEL, PRIORITY_ICON } from "../constants";
23
23
  import { PRIORITY_COLOR } from "../priority-icon";
@@ -18,7 +18,7 @@
18
18
  import { X, Calendar, CircleUser, Archive, BrushCleaning } from "lucide-react";
19
19
  import { format, parseISO, isValid } from "date-fns";
20
20
  import { Button } from "@/components/ui/button";
21
- import { UserAvatar } from "@/components/ui-shared";
21
+ import { UserAvatar } from "@/components/shared-kit";
22
22
  import { PriorityIcon } from "../priority-icon";
23
23
  import { STORY_STATES, STATE_ICON, PRIORITY_LABEL, type StoryState, type StoryPriority } from "../constants";
24
24
  import { getFilterLabel, getFilterIcon, type FilterCondition, type FilterKey } from "./filter-types";
@@ -20,7 +20,7 @@ import { CircleUser, Search, Check, ArrowDownUp } from "lucide-react";
20
20
  import { useTranslation } from "react-i18next";
21
21
  import { Input } from "@/components/ui/input";
22
22
  import { Popover, PopoverContent, PopoverTrigger } from "@/components/ui/popover";
23
- import { UserAvatar } from "@/components/ui-shared";
23
+ import { UserAvatar } from "@/components/shared-kit";
24
24
  import type { UserBrief } from "../types";
25
25
  import { cn } from "@/lib/utils";
26
26
  import { InlineTrigger } from "./inline-trigger";
@@ -22,7 +22,7 @@ import { cn } from "@/lib/utils";
22
22
  import { Search, Sprout, ChevronsUpDown, Check, Trees, ListFilter, Flag } from "lucide-react";
23
23
  import { Badge } from "@/components/ui/badge";
24
24
  import { Checkbox } from "@/components/ui/checkbox";
25
- import { LucideIconByName } from "@/components/shared/lucide-icon-picker/lucide-icon-by-name";
25
+ import { LucideIconByName } from "@/components/shared-kit/icons/lucide-icon-picker/lucide-icon-by-name";
26
26
  import { Button } from "@/components/ui/button";
27
27
  import { Input } from "@/components/ui/input";
28
28
  import {
@@ -37,9 +37,9 @@ import {
37
37
  deleteStoryFn,
38
38
  } from "@/server/serverFns/story";
39
39
  import { PriorityEditor, StateEditor, AssigneeEditor, DateEditor, LabelsEditor, DependencyTypeSelect } from "../inline-editors";
40
- import { NameConfirmDialog } from "@/components/shared/name-confirm-dialog";
40
+ import { NameConfirmDialog } from "@/components/shared-kit/dialogs/name-confirm-dialog";
41
41
  import { cn } from "@/lib/utils";
42
- import { LucideIconByName } from "@/components/shared/lucide-icon-picker/lucide-icon-by-name";
42
+ import { LucideIconByName } from "@/components/shared-kit/icons/lucide-icon-picker/lucide-icon-by-name";
43
43
  import { dependencyTypeOption } from "../constants";
44
44
  import type { DisplayProperty } from "../display/types";
45
45
  import type { StoryPatch } from "../display/group-fields";
@@ -46,7 +46,7 @@ import {
46
46
  DropdownMenuTrigger,
47
47
  } from "@/components/ui/dropdown-menu";
48
48
  import { toast } from "sonner";
49
- import { NameConfirmDialog } from "@/components/shared/name-confirm-dialog";
49
+ import { NameConfirmDialog } from "@/components/shared-kit/dialogs/name-confirm-dialog";
50
50
  import { archiveStoryFn, deleteStoryFn } from "@/server/serverFns/story";
51
51
  import { TransferStoryPopover } from "./transfer-story-popover";
52
52
 
@@ -35,7 +35,7 @@ import type { SavedView } from "./views/view-types";
35
35
  import { DisplayDropdown } from "./display/display-dropdown";
36
36
  import type { DisplayOptions } from "./display/types";
37
37
  import { StoryFilterToggle, StoryFilterRow, AppliedFilters, type FilterCondition, type FilterKey } from "./filters";
38
- import { LucideIconByName } from "@/components/shared/lucide-icon-picker/lucide-icon-by-name";
38
+ import { LucideIconByName } from "@/components/shared-kit/icons/lucide-icon-picker/lucide-icon-by-name";
39
39
  import { CreateProjectDialog } from "@/components/project/create-project-dialog";
40
40
  import type { UserBrief } from "./types";
41
41
 
@@ -18,7 +18,7 @@
18
18
  import { useState } from "react";
19
19
  import { useTranslation } from "react-i18next";
20
20
  import { GitCompareArrows, GitPullRequest, Check } from "lucide-react";
21
- import { LucideIconByName } from "@/components/shared/lucide-icon-picker/lucide-icon-by-name";
21
+ import { LucideIconByName } from "@/components/shared-kit/icons/lucide-icon-picker/lucide-icon-by-name";
22
22
  import { Button } from "@/components/ui/button";
23
23
  import { Separator } from "@/components/ui/separator";
24
24
  import {
@@ -31,7 +31,7 @@ import {
31
31
  PopoverTrigger,
32
32
  } from "@/components/ui/popover";
33
33
  import { Button } from "@/components/ui/button";
34
- import { LucideIconByName } from "@/components/shared/lucide-icon-picker/lucide-icon-by-name";
34
+ import { LucideIconByName } from "@/components/shared-kit/icons/lucide-icon-picker/lucide-icon-by-name";
35
35
  import { cn } from "@/lib/utils";
36
36
  import { StoryFilterRow } from "../filters/filter-row";
37
37
  import { createDefaultCondition, type FilterCondition } from "../filters/filter-types";
@@ -19,7 +19,7 @@ import { memo } from "react";
19
19
  import { useTranslation } from "react-i18next";
20
20
  import { useSortable } from "@dnd-kit/react/sortable";
21
21
  import { GripVertical, CalendarCheck, CalendarPlus2 } from "lucide-react";
22
- import { UserAvatar } from "@/components/ui-shared";
22
+ import { UserAvatar } from "@/components/shared-kit";
23
23
  import { PRIORITY_LABEL } from "../constants";
24
24
  import { PriorityIcon } from "../priority-icon";
25
25
  import type { StoryListItem, UserBrief } from "../types";
@@ -38,7 +38,7 @@ import { computeMove, canMove } from "./move";
38
38
  import { computeGroupCheckState, toggleGroupSelection } from "./group-select";
39
39
  import { GROUP_FIELD, toGroupFieldPatch, type GroupField, type StoryPatch } from "../../display/group-fields";
40
40
  import type { GroupKey } from "../../display/types";
41
- import { WavePhysicsLoader } from "@/components/shared/wave-physics-loader";
41
+ import { WavePhysicsLoader } from "@/components/shared-kit/loading/wave-physics-loader";
42
42
 
43
43
  const HEADER_ROW_HEIGHT = 36;
44
44
  const STORY_ROW_HEIGHT = 44;
@@ -18,7 +18,7 @@
18
18
  import { memo, useEffect, useRef, useMemo } from "react";
19
19
  import { useTranslation } from "react-i18next";
20
20
  import { Loader2, CalendarCheck, CalendarPlus2, Check, X, Trees } from "lucide-react";
21
- import { LucideIconByName } from "@/components/shared/lucide-icon-picker/lucide-icon-by-name";
21
+ import { LucideIconByName } from "@/components/shared-kit/icons/lucide-icon-picker/lucide-icon-by-name";
22
22
  import type { UserBrief } from "../../types";
23
23
  import type { StoryState, StoryPriority } from "../../constants";
24
24
  import { PriorityEditor, StateEditor, AssigneeEditor, DateEditor, LabelsEditor } from "../../inline-editors";
@@ -31,8 +31,8 @@ import {
31
31
  import { Minus, Plus, Download, Loader2, Maximize, ScanSearch, X } from "lucide-react"
32
32
  import { GraphIcon, TreeStructureIcon } from "@phosphor-icons/react";
33
33
  import { snapdom } from "@zumer/snapdom"
34
- import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "@/components/ui-shared/tooltip"
35
- import { Separator } from "@/components/ui-shared/separator"
34
+ import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "@/components/ui/tooltip"
35
+ import { Separator } from "@/components/ui/separator"
36
36
  import { cn } from "../lib/utils.ts"
37
37
  import {
38
38
  type MindElixirInstance,
@@ -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 { Dialog, DialogContent, DialogTitle } from "@/components/ui-shared/dialog"
18
+ import { Dialog, DialogContent, DialogTitle } from "@/components/ui/dialog"
19
19
  import { useTranslation } from "react-i18next"
20
20
  import { MindMap, MindMapControls } from "./mind-map"
21
21
  import type { MindElixirData } from "mind-elixir"
@@ -30,7 +30,7 @@ import {
30
30
  MessageSquareQuote,
31
31
  Square as SquareIcon,
32
32
  } from "lucide-react";
33
- import { toast } from '@/components/ui-shared/sonner';
33
+ import { toast } from '@/components/ui/sonner';
34
34
  import "./annotation-node.scss";
35
35
  import { useTranslation } from 'react-i18next'
36
36
 
@@ -29,10 +29,10 @@ import {
29
29
  BookMarked,
30
30
  Bookmark,
31
31
  } from "lucide-react"
32
- import { NotionAvatar } from "@/components/ui-shared/notion-avatar"
32
+ import { NotionAvatar } from "@/components/shared-kit/avatars/notion-avatar"
33
33
 
34
34
  import { formatDate } from "../lib/datetime.ts"
35
- import { useTimezone } from "@/components/ui-shared/timezone-provider"
35
+ import { useTimezone } from "@/components/shared-kit/timezone/timezone-provider"
36
36
  import { useEditorServices, type DocumentPreviewData } from "../notion-like/index.ts"
37
37
 
38
38
  const TYPE_ICONS: Record<string, typeof FileText> = {
@@ -33,12 +33,12 @@ import { ButtonGroup } from "../ui-primitive/button-group/index.tsx"
33
33
  // --- Desktop integration ---
34
34
  import { isDesktop } from "@/lib/desktop-detect"
35
35
  import { insertLocalFile } from "../extensions/local-file/insert-local-file.ts"
36
- import { Button } from "@/components/ui-shared/button"
36
+ import { Button } from "@/components/ui/button"
37
37
  import {
38
38
  Tooltip,
39
39
  TooltipContent,
40
40
  TooltipTrigger,
41
- } from "@/components/ui-shared/tooltip"
41
+ } from "@/components/ui/tooltip"
42
42
 
43
43
  // --- Styles ---
44
44
  import "./notion-like-editor-header.scss"
@@ -23,10 +23,10 @@ import {
23
23
  Table,
24
24
  Grid3X3,
25
25
  } from "lucide-react"
26
- import { NotionAvatar } from "@/components/ui-shared/notion-avatar"
26
+ import { NotionAvatar } from "@/components/shared-kit/avatars/notion-avatar"
27
27
 
28
28
  import { formatDate } from "../../lib/datetime.ts"
29
- import { useTimezone } from "@/components/ui-shared/timezone-provider"
29
+ import { useTimezone } from "@/components/shared-kit/timezone/timezone-provider"
30
30
  import { useEditorServices, type DocumentPreviewData } from "../../notion-like/index.ts"
31
31
 
32
32
  interface DocRefMeta {
@@ -33,7 +33,7 @@ import { createFullWidthFindSuggestionMatch } from "../../ui-utils/suggestion-me
33
33
  import {
34
34
  Avatar,
35
35
  AvatarFallback,
36
- } from "@/components/ui-shared/avatar"
36
+ } from "@/components/ui/avatar"
37
37
  import {
38
38
  Item,
39
39
  ItemContent,
@@ -41,7 +41,7 @@ import {
41
41
  ItemGroup,
42
42
  ItemMedia,
43
43
  ItemTitle,
44
- } from "@/components/ui-shared/item"
44
+ } from "@/components/ui/item"
45
45
 
46
46
  interface TeamUser {
47
47
  id: string
@@ -34,7 +34,7 @@ import {
34
34
  ItemGroup,
35
35
  ItemMedia,
36
36
  ItemTitle,
37
- } from "@/components/ui-shared/item"
37
+ } from "@/components/ui/item"
38
38
 
39
39
  import { getClientI18n } from '@/i18n/client'
40
40
  import { useEditorServices } from "../../notion-like/index.ts"
@@ -45,7 +45,7 @@ import {
45
45
  CardGroupLabel,
46
46
  CardItemGroup,
47
47
  } from "../../ui-primitive/card/index.tsx"
48
- import { Kbd } from "@/components/ui-shared/kbd"
48
+ import { Kbd } from "@/components/ui/kbd"
49
49
 
50
50
  import "./slash-dropdown-menu.scss"
51
51