@allbluecn/web-app 0.9.2 → 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 (223) hide show
  1. package/package.json +32 -34
  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/knowledge/dialog/knowledge-form-dialog.tsx +1 -1
  7. package/src/components/knowledge/editor/doc-header.tsx +1 -1
  8. package/src/components/knowledge-public/sharers-avatar-group.tsx +1 -1
  9. package/src/components/layout/sidebar-03/__tests__/nav-workspace.test.tsx +1 -1
  10. package/src/components/layout/sidebar-03/app-sidebar.tsx +1 -1
  11. package/src/components/layout/sidebar-03/nav-workspace.tsx +1 -1
  12. package/src/components/layout/sidebar-03/user-menu.tsx +1 -1
  13. package/src/components/magicui/animated-theme-toggler.tsx +1 -1
  14. package/src/components/magicui/grid-pattern.tsx +1 -1
  15. package/src/components/project/create-project-dialog.tsx +1 -1
  16. package/src/components/project/invite-member-dialog.tsx +1 -1
  17. package/src/components/project/project-activity-list.tsx +1 -1
  18. package/src/components/project/project-member-manager.tsx +1 -1
  19. package/src/components/settings/personal-team/account/avatar/notion-avatar.tsx +2 -2
  20. package/src/components/settings/personal-team/team/team-member-list.tsx +1 -1
  21. package/src/components/shadcn-space/blocks/hero-01/header.tsx +1 -1
  22. package/src/components/{ui-shared → shared-kit/auth}/auth-layout.tsx +1 -1
  23. package/src/components/{ui-shared → shared-kit/decorative}/grid-pattern.tsx +1 -1
  24. package/src/components/{ui-shared → shared-kit/dialogs}/name-confirm-dialog.tsx +6 -5
  25. package/src/components/{shared → shared-kit/icons}/__tests__/lucide-curated-icons.test.ts +2 -2
  26. package/src/components/{shared → shared-kit/icons}/__tests__/lucide-icon-data.test.ts +1 -1
  27. package/src/components/{shared → shared-kit/icons}/__tests__/lucide-icon-picker.test.tsx +5 -5
  28. package/src/components/{ui-shared → shared-kit}/index.ts +9 -6
  29. package/src/components/{ui-shared → shared-kit/layout}/layout-panel-top.tsx +1 -1
  30. package/src/components/{ui-shared → shared-kit/navigation}/nav-float-button.tsx +2 -2
  31. package/src/components/{ui-shared → shared-kit/theme}/animated-theme-toggler.tsx +1 -1
  32. package/src/components/story/columns.tsx +1 -1
  33. package/src/components/story/create-story-dialog.tsx +2 -2
  34. package/src/components/story/detail/__tests__/activity-timeline.test.tsx +1 -1
  35. package/src/components/story/detail/activity-timeline.tsx +2 -2
  36. package/src/components/story/detail/comment-item.tsx +1 -1
  37. package/src/components/story/detail/story-detail-body.tsx +2 -2
  38. package/src/components/story/detail/story-detail-toolbar/associated-attachments-panel.tsx +1 -1
  39. package/src/components/story/display/group-resolver.tsx +2 -2
  40. package/src/components/story/filters/applied-filters.tsx +1 -1
  41. package/src/components/story/inline-editors/assignee-editor.tsx +1 -1
  42. package/src/components/story/inline-editors/story-select-dialog.tsx +1 -1
  43. package/src/components/story/relations/story-ref-row.tsx +2 -2
  44. package/src/components/story/story-panel-header.tsx +1 -1
  45. package/src/components/story/story-toolbar.tsx +1 -1
  46. package/src/components/story/transfer-story-popover.tsx +1 -1
  47. package/src/components/story/views/create-view-dialog.tsx +1 -1
  48. package/src/components/story/views/kanban-card.tsx +1 -1
  49. package/src/components/story/views/story-list/index.tsx +1 -1
  50. package/src/components/story/views/story-list/inline-story-creator.tsx +1 -1
  51. package/src/components/tiptap/mindmap/mind-map.tsx +2 -2
  52. package/src/components/tiptap/mindmap/mindmap-fullscreen-dialog.tsx +1 -1
  53. package/src/components/tiptap/node/annotation-node/annotation-node-view.tsx +1 -1
  54. package/src/components/tiptap/node/doc-card-extension.tsx +2 -2
  55. package/src/components/tiptap/notion-like/notion-like-editor-header.tsx +2 -2
  56. package/src/components/tiptap/ui/doc-reference-interaction/doc-reference-interaction.tsx +2 -2
  57. package/src/components/tiptap/ui/mention-dropdown-menu/mention-dropdown-menu.tsx +2 -2
  58. package/src/components/tiptap/ui/reference-dropdown-menu/reference-dropdown-menu.tsx +1 -1
  59. package/src/components/tiptap/ui/slash-dropdown-menu/slash-dropdown-menu.tsx +1 -1
  60. package/src/components/ui/alert-dialog.tsx +216 -1
  61. package/src/components/ui/badge.tsx +66 -1
  62. package/src/components/ui/button.tsx +84 -1
  63. package/src/components/ui/card.tsx +120 -1
  64. package/src/components/ui/checkbox.tsx +50 -1
  65. package/src/components/ui/context-menu.tsx +280 -1
  66. package/src/components/ui/dialog.tsx +183 -1
  67. package/src/components/ui/dropdown-menu.tsx +286 -1
  68. package/src/components/ui/empty.tsx +121 -1
  69. package/src/components/ui/input.tsx +36 -1
  70. package/src/components/ui/label.tsx +39 -1
  71. package/src/components/ui/popover.tsx +106 -1
  72. package/src/components/ui/resizable.tsx +67 -1
  73. package/src/components/ui/select.tsx +207 -1
  74. package/src/components/ui/sidebar.tsx +708 -1
  75. package/src/components/ui/skeleton.tsx +30 -1
  76. package/src/components/ui/sonner.tsx +37 -1
  77. package/src/components/ui/switch.tsx +48 -1
  78. package/src/components/ui/textarea.tsx +35 -1
  79. package/src/components/ui/tooltip.tsx +72 -1
  80. package/src/components/workspace/create-workspace-dialog.tsx +1 -1
  81. package/src/lib/auth/auth-client.ts +1 -1
  82. package/src/lib/changelog/sdk-versions.ts +16 -2
  83. package/src/lib/utils.ts +6 -1
  84. package/src/plugins/core/inspiration/pages/inspiration-page.tsx +1 -1
  85. package/src/plugins/core/inspiration/ui.tsx +1 -1
  86. package/src/plugins/core/prd/components/agent-input.tsx +3 -3
  87. package/src/plugins/core/prd/components/component-editor/collapsible-section.tsx +1 -1
  88. package/src/plugins/core/prd/components/component-editor/content-section.tsx +3 -3
  89. package/src/plugins/core/prd/components/component-editor/style-fields.tsx +3 -3
  90. package/src/plugins/core/prd/components/component-thumbnail.tsx +1 -1
  91. package/src/plugins/core/prd/components/dialog/create-prd-dialog.tsx +3 -3
  92. package/src/plugins/core/prd/components/dialog/prd-detail-client.tsx +4 -4
  93. package/src/plugins/core/prd/components/page-version-panel/components/create-version-dialog.tsx +2 -2
  94. package/src/plugins/core/prd/components/page-version-panel/components/delete-version-dialog.tsx +2 -2
  95. package/src/plugins/core/prd/components/page-version-panel/components/edit-version-dialog.tsx +2 -2
  96. package/src/plugins/core/prd/components/page-version-panel.tsx +9 -9
  97. package/src/plugins/core/prd/components/page-version-tree.tsx +5 -5
  98. package/src/plugins/core/prd/components/prd-agent-panel.tsx +3 -3
  99. package/src/plugins/core/prd/components/prd-comment-review-panel.tsx +7 -7
  100. package/src/plugins/core/prd/components/prd-component-editor-content.tsx +2 -2
  101. package/src/plugins/core/prd/components/prd-dashboard.tsx +8 -8
  102. package/src/plugins/core/prd/components/prd-doc-panel.tsx +2 -2
  103. package/src/plugins/core/prd/components/prd-editor-layout.tsx +4 -4
  104. package/src/plugins/core/prd/components/prd-filter-bar.tsx +1 -1
  105. package/src/plugins/core/prd/components/prd-left-sidebar.tsx +4 -4
  106. package/src/plugins/core/prd/components/prd-navigation.tsx +6 -6
  107. package/src/plugins/core/prd/components/prd-prototype-panel.tsx +2 -2
  108. package/src/plugins/core/prd/components/prd-right-sidebar.tsx +3 -3
  109. package/src/plugins/core/prd/components/prd-share-panel/components/single-version-share-card.tsx +7 -7
  110. package/src/plugins/core/prd/components/prd-share-panel.tsx +10 -10
  111. package/src/plugins/core/prd/components/prd-tree-page-tab.tsx +5 -5
  112. package/src/plugins/core/prd/components/prototype/PrototypeCanvas.tsx +2 -2
  113. package/src/plugins/core/prd/components/restore-version-dialog.tsx +2 -2
  114. package/src/plugins/core/prd/components/share/prd-share-client.tsx +1 -1
  115. package/src/plugins/core/prd/components/share/share-comment-panel.tsx +6 -6
  116. package/src/plugins/core/prd/components/share/share-comment-review-panel.tsx +2 -2
  117. package/src/plugins/core/prd/components/share/share-layout.tsx +1 -1
  118. package/src/plugins/core/prd/components/share/share-nav-bar.tsx +4 -4
  119. package/src/plugins/core/prd/components/share/share-password-gate.tsx +4 -4
  120. package/src/plugins/core/prd/components/share/share-prototype-view.tsx +1 -1
  121. package/src/plugins/core/prd/components/share/share-review-panel.tsx +5 -5
  122. package/src/plugins/core/prd/components/share/share-theme-toggle.tsx +1 -1
  123. package/src/plugins/core/prd/components/share/version-share-client.tsx +1 -1
  124. package/src/plugins/core/prd/pages/prd-detail-page.tsx +2 -2
  125. package/src/plugins/core/prd/pages/share-prd-page.tsx +1 -1
  126. package/src/plugins/core/prd/prd-nav.tsx +1 -1
  127. package/src/plugins/core/tags/nav-tag.tsx +7 -7
  128. package/src/plugins/core/tags/pages/tag-detail-page.tsx +1 -1
  129. package/src/plugins/core/tags/tag-badge.tsx +2 -2
  130. package/src/plugins/core/tags/tag-color-picker.tsx +1 -1
  131. package/src/plugins/core/tags/tag-manager.tsx +6 -6
  132. package/src/plugins/core/tags/tag-selector.tsx +3 -3
  133. package/src/providers/index.tsx +1 -1
  134. package/src/providers/timezone-provider.tsx +1 -1
  135. package/src/routes/_nav/acceptance-criteria/route.tsx +1 -1
  136. package/src/routes/_nav/apps/anyhub/$id/route.tsx +1 -1
  137. package/src/routes/_nav/apps/anyhub/route.tsx +1 -1
  138. package/src/routes/_nav/bugs/route.tsx +1 -1
  139. package/src/routes/_nav/dashboard/-components/avatar-group.tsx +1 -1
  140. package/src/routes/_nav/dashboard/route.lazy.tsx +1 -1
  141. package/src/routes/_nav/knowledge/$kbId/doc/$docId/route.lazy.tsx +1 -1
  142. package/src/routes/_nav/knowledge/index.lazy.tsx +1 -1
  143. package/src/routes/_nav/notion-like/route.tsx +1 -1
  144. package/src/routes/_nav/pricing-02/route.tsx +1 -1
  145. package/src/routes/_nav/projects/$projectId/$storyId/route.lazy.tsx +1 -1
  146. package/src/routes/_nav/projects/$projectId/index.lazy.tsx +3 -3
  147. package/src/routes/_nav/projects/$projectId/iterations/index.lazy.tsx +1 -1
  148. package/src/routes/_nav/projects/$projectId/settings/route.lazy.tsx +3 -3
  149. package/src/routes/_nav/route.lazy.tsx +1 -1
  150. package/src/routes/_nav/settings/general/route.lazy.tsx +1 -1
  151. package/src/routes/_nav/test-cases/route.tsx +1 -1
  152. package/src/routes/_nav/workspaces/$workspaceId/route.lazy.tsx +1 -1
  153. package/src/routes/_nav/workspaces/$workspaceId/settings/route.lazy.tsx +2 -2
  154. package/src/routes/_nav/workspaces/index.lazy.tsx +1 -1
  155. package/src/routes/invite/$token/route.lazy.tsx +1 -1
  156. package/src/server/__tests__/agent-client-graph.test.ts +1 -1
  157. package/src/components/shared/name-confirm-dialog.tsx +0 -1
  158. package/src/components/shared/nav-float-button.tsx +0 -1
  159. package/src/components/shared/placeholder-page.tsx +0 -1
  160. package/src/components/ui-shared/alert-dialog.tsx +0 -216
  161. package/src/components/ui-shared/avatar.tsx +0 -129
  162. package/src/components/ui-shared/badge.tsx +0 -66
  163. package/src/components/ui-shared/button.tsx +0 -84
  164. package/src/components/ui-shared/card.tsx +0 -120
  165. package/src/components/ui-shared/checkbox.tsx +0 -50
  166. package/src/components/ui-shared/context-menu.tsx +0 -280
  167. package/src/components/ui-shared/dialog.tsx +0 -183
  168. package/src/components/ui-shared/dropdown-menu.tsx +0 -286
  169. package/src/components/ui-shared/empty.tsx +0 -121
  170. package/src/components/ui-shared/input.tsx +0 -36
  171. package/src/components/ui-shared/item.tsx +0 -213
  172. package/src/components/ui-shared/kbd.tsx +0 -33
  173. package/src/components/ui-shared/label.tsx +0 -39
  174. package/src/components/ui-shared/popover.tsx +0 -106
  175. package/src/components/ui-shared/resizable.tsx +0 -67
  176. package/src/components/ui-shared/select.tsx +0 -207
  177. package/src/components/ui-shared/separator.tsx +0 -45
  178. package/src/components/ui-shared/sheet.tsx +0 -164
  179. package/src/components/ui-shared/sidebar.tsx +0 -708
  180. package/src/components/ui-shared/skeleton.tsx +0 -30
  181. package/src/components/ui-shared/sonner.tsx +0 -37
  182. package/src/components/ui-shared/switch.tsx +0 -48
  183. package/src/components/ui-shared/textarea.tsx +0 -35
  184. package/src/components/ui-shared/tooltip.tsx +0 -72
  185. package/src/components/ui-shared/utils.ts +0 -6
  186. package/src/lib/utils.d.ts +0 -1
  187. package/src/plugins/.gen-manifest.json +0 -13
  188. package/src/plugins/modules.gen.ts +0 -20
  189. package/src/plugins/plugins.gen.ts +0 -20
  190. package/src/plugins/ui.gen.ts +0 -8
  191. package/src/routes/_nav/inspiration/route.tsx +0 -8
  192. package/src/routes/_nav/prd/$id/route.tsx +0 -9
  193. package/src/routes/_nav/prd/index.tsx +0 -9
  194. package/src/routes/_nav/prd/route.tsx +0 -8
  195. package/src/routes/_nav/tags/$id/route.tsx +0 -8
  196. package/src/routes/_nav/tags/index.tsx +0 -8
  197. package/src/routes/_nav/tags/route.tsx +0 -8
  198. package/src/routes/_nav/tags/settings/route.tsx +0 -9
  199. package/src/routes/share/prd/$prdId/route.tsx +0 -10
  200. package/src/types/open-file-viewer.d.ts +0 -14
  201. /package/src/components/{ui-shared → shared-kit/ai}/ai-command-button.tsx +0 -0
  202. /package/src/components/{ui-shared → shared-kit/ai}/ai-stream-text.tsx +0 -0
  203. /package/src/components/{ui-shared → shared-kit/auth}/auth-client.ts +0 -0
  204. /package/src/components/{ui-shared → shared-kit/avatars}/notion-avatar.tsx +0 -0
  205. /package/src/components/{ui-shared → shared-kit/avatars}/user-avatar.tsx +0 -0
  206. /package/src/components/{shared → shared-kit/data-viz}/contribution-graph-tooltip.tsx +0 -0
  207. /package/src/components/{shared → shared-kit/dev}/component-preview.tsx +0 -0
  208. /package/src/components/{ui-shared → shared-kit/hooks}/use-mobile.ts +0 -0
  209. /package/src/components/{shared → shared-kit/i18n}/language-switcher.tsx +0 -0
  210. /package/src/components/{shared → shared-kit/i18n}/translator-text.tsx +0 -0
  211. /package/src/components/{shared → shared-kit/icons}/lucide-icon-picker/curated-icons.ts +0 -0
  212. /package/src/components/{shared → shared-kit/icons}/lucide-icon-picker/icon-data.ts +0 -0
  213. /package/src/components/{shared → shared-kit/icons}/lucide-icon-picker/index.tsx +0 -0
  214. /package/src/components/{shared → shared-kit/icons}/lucide-icon-picker/lucide-icon-by-name.tsx +0 -0
  215. /package/src/components/{shared → shared-kit/icons}/lucide-icon-picker/panel.tsx +0 -0
  216. /package/src/components/{shared → shared-kit/loading}/wave-physics-loader.tsx +0 -0
  217. /package/src/components/{ui-shared → shared-kit/pages}/placeholder-page.tsx +0 -0
  218. /package/src/components/{ui-shared → shared-kit/reference}/reference-inline.tsx +0 -0
  219. /package/src/components/{ui-shared → shared-kit/reference}/reference-search.tsx +0 -0
  220. /package/src/components/{shared → shared-kit/theme}/theme-toggle.tsx +0 -0
  221. /package/src/components/{shared → shared-kit/timezone}/timezone-bootstrap.tsx +0 -0
  222. /package/src/components/{ui-shared → shared-kit/timezone}/timezone-provider.tsx +0 -0
  223. /package/src/components/{shared → shared-kit/timezone}/timezone-select.tsx +0 -0
@@ -1,213 +0,0 @@
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 * as React from "react"
19
- import { cva, type VariantProps } from "class-variance-authority"
20
- import { Slot } from "radix-ui"
21
-
22
- import { cn } from "./utils"
23
- import { Separator } from "./separator"
24
-
25
- function ItemGroup({ className, ...props }: React.ComponentProps<"div">) {
26
- return (
27
- <div
28
- role="list"
29
- data-slot="item-group"
30
- className={cn(
31
- "group/item-group flex w-full flex-col gap-4 has-data-[size=sm]:gap-2.5 has-data-[size=xs]:gap-2",
32
- className
33
- )}
34
- {...props}
35
- />
36
- )
37
- }
38
-
39
- function ItemSeparator({
40
- className,
41
- ...props
42
- }: React.ComponentProps<typeof Separator>) {
43
- return (
44
- <Separator
45
- data-slot="item-separator"
46
- orientation="horizontal"
47
- className={cn("my-2", className)}
48
- {...props}
49
- />
50
- )
51
- }
52
-
53
- const itemVariants = cva(
54
- "group/item flex w-full flex-wrap items-center rounded-lg border text-sm transition-colors duration-100 outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 [a]:transition-colors [a]:hover:bg-muted",
55
- {
56
- variants: {
57
- variant: {
58
- default: "border-transparent",
59
- outline: "border-border",
60
- muted: "border-transparent bg-muted/50",
61
- },
62
- size: {
63
- default: "gap-2.5 px-3 py-2.5",
64
- sm: "gap-2.5 px-3 py-2.5",
65
- xs: "gap-2 px-2.5 py-2 in-data-[slot=dropdown-menu-content]:p-0",
66
- },
67
- },
68
- defaultVariants: {
69
- variant: "default",
70
- size: "default",
71
- },
72
- }
73
- )
74
-
75
- function Item({
76
- className,
77
- variant = "default",
78
- size = "default",
79
- asChild = false,
80
- ...props
81
- }: React.ComponentProps<"div"> &
82
- VariantProps<typeof itemVariants> & { asChild?: boolean }) {
83
- const Comp = asChild ? Slot.Root : "div"
84
- return (
85
- <Comp
86
- data-slot="item"
87
- data-variant={variant}
88
- data-size={size}
89
- className={cn(itemVariants({ variant, size, className }))}
90
- {...props}
91
- />
92
- )
93
- }
94
-
95
- const itemMediaVariants = cva(
96
- "flex shrink-0 items-center justify-center gap-2 group-has-data-[slot=item-description]/item:translate-y-0.5 group-has-data-[slot=item-description]/item:self-start [&_svg]:pointer-events-none",
97
- {
98
- variants: {
99
- variant: {
100
- default: "bg-transparent",
101
- icon: "[&_svg:not([class*='size-'])]:size-4",
102
- image:
103
- "size-10 overflow-hidden rounded-sm group-data-[size=sm]/item:size-8 group-data-[size=xs]/item:size-6 [&_img]:size-full [&_img]:object-cover",
104
- },
105
- },
106
- defaultVariants: {
107
- variant: "default",
108
- },
109
- }
110
- )
111
-
112
- function ItemMedia({
113
- className,
114
- variant = "default",
115
- ...props
116
- }: React.ComponentProps<"div"> & VariantProps<typeof itemMediaVariants>) {
117
- return (
118
- <div
119
- data-slot="item-media"
120
- data-variant={variant}
121
- className={cn(itemMediaVariants({ variant, className }))}
122
- {...props}
123
- />
124
- )
125
- }
126
-
127
- function ItemContent({ className, ...props }: React.ComponentProps<"div">) {
128
- return (
129
- <div
130
- data-slot="item-content"
131
- className={cn(
132
- "flex flex-1 flex-col gap-1 group-data-[size=xs]/item:gap-0 [&+[data-slot=item-content]]:flex-none",
133
- className
134
- )}
135
- {...props}
136
- />
137
- )
138
- }
139
-
140
- function ItemTitle({ className, ...props }: React.ComponentProps<"div">) {
141
- return (
142
- <div
143
- data-slot="item-title"
144
- className={cn(
145
- "line-clamp-1 flex w-fit items-center gap-2 text-sm leading-snug font-medium underline-offset-4",
146
- className
147
- )}
148
- {...props}
149
- />
150
- )
151
- }
152
-
153
- function ItemDescription({ className, ...props }: React.ComponentProps<"p">) {
154
- return (
155
- <p
156
- data-slot="item-description"
157
- className={cn(
158
- "line-clamp-2 text-left text-sm leading-normal font-normal text-muted-foreground group-data-[size=xs]/item:text-xs [&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary",
159
- className
160
- )}
161
- {...props}
162
- />
163
- )
164
- }
165
-
166
- function ItemActions({ className, ...props }: React.ComponentProps<"div">) {
167
- return (
168
- <div
169
- data-slot="item-actions"
170
- className={cn("flex items-center gap-2", className)}
171
- {...props}
172
- />
173
- )
174
- }
175
-
176
- function ItemHeader({ className, ...props }: React.ComponentProps<"div">) {
177
- return (
178
- <div
179
- data-slot="item-header"
180
- className={cn(
181
- "flex basis-full items-center justify-between gap-2",
182
- className
183
- )}
184
- {...props}
185
- />
186
- )
187
- }
188
-
189
- function ItemFooter({ className, ...props }: React.ComponentProps<"div">) {
190
- return (
191
- <div
192
- data-slot="item-footer"
193
- className={cn(
194
- "flex basis-full items-center justify-between gap-2",
195
- className
196
- )}
197
- {...props}
198
- />
199
- )
200
- }
201
-
202
- export {
203
- Item,
204
- ItemMedia,
205
- ItemContent,
206
- ItemActions,
207
- ItemGroup,
208
- ItemSeparator,
209
- ItemTitle,
210
- ItemDescription,
211
- ItemHeader,
212
- ItemFooter,
213
- }
@@ -1,33 +0,0 @@
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 { cn } from "@/lib/utils"
19
-
20
- function Kbd({ className, ...props }: React.ComponentProps<"kbd">) {
21
- return (
22
- <kbd
23
- data-slot="kbd"
24
- className={cn(
25
- "inline-flex items-center justify-center rounded bg-muted px-1.5 py-1 font-mono text-[10px] font-medium text-muted-foreground",
26
- className
27
- )}
28
- {...props}
29
- />
30
- )
31
- }
32
-
33
- export { Kbd }
@@ -1,39 +0,0 @@
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 * as React from "react"
19
- import { Label as LabelPrimitive } from "radix-ui"
20
-
21
- import { cn } from "./utils"
22
-
23
- function Label({
24
- className,
25
- ...props
26
- }: React.ComponentProps<typeof LabelPrimitive.Root>) {
27
- return (
28
- <LabelPrimitive.Root
29
- data-slot="label"
30
- className={cn(
31
- "flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50",
32
- className
33
- )}
34
- {...props}
35
- />
36
- )
37
- }
38
-
39
- export { Label }
@@ -1,106 +0,0 @@
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
- "use client"
19
-
20
- import * as React from "react"
21
- import { Popover as PopoverPrimitive } from "radix-ui"
22
-
23
- import { cn } from "./utils"
24
-
25
- function Popover({
26
- ...props
27
- }: React.ComponentProps<typeof PopoverPrimitive.Root>) {
28
- return <PopoverPrimitive.Root data-slot="popover" {...props} />
29
- }
30
-
31
- function PopoverTrigger({
32
- ...props
33
- }: React.ComponentProps<typeof PopoverPrimitive.Trigger>) {
34
- return <PopoverPrimitive.Trigger data-slot="popover-trigger" {...props} />
35
- }
36
-
37
- function PopoverContent({
38
- className,
39
- align = "center",
40
- sideOffset = 4,
41
- ...props
42
- }: React.ComponentProps<typeof PopoverPrimitive.Content>) {
43
- return (
44
- <PopoverPrimitive.Portal>
45
- <PopoverPrimitive.Content
46
- data-slot="popover-content"
47
- align={align}
48
- sideOffset={sideOffset}
49
- className={cn(
50
- "z-50 flex w-72 origin-(--radix-popover-content-transform-origin) flex-col gap-2.5 rounded-lg dark:border dark:border-primary/15 bg-popover p-2.5 text-sm text-popover-foreground shadow-md outline-hidden duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",
51
- className
52
- )}
53
- {...props}
54
- />
55
- </PopoverPrimitive.Portal>
56
- )
57
- }
58
-
59
- function PopoverAnchor({
60
- ...props
61
- }: React.ComponentProps<typeof PopoverPrimitive.Anchor>) {
62
- return <PopoverPrimitive.Anchor data-slot="popover-anchor" {...props} />
63
- }
64
-
65
- function PopoverHeader({ className, ...props }: React.ComponentProps<"div">) {
66
- return (
67
- <div
68
- data-slot="popover-header"
69
- className={cn("flex flex-col gap-0.5 text-sm", className)}
70
- {...props}
71
- />
72
- )
73
- }
74
-
75
- function PopoverTitle({ className, ...props }: React.ComponentProps<"h2">) {
76
- return (
77
- <div
78
- data-slot="popover-title"
79
- className={cn("font-medium", className)}
80
- {...props}
81
- />
82
- )
83
- }
84
-
85
- function PopoverDescription({
86
- className,
87
- ...props
88
- }: React.ComponentProps<"p">) {
89
- return (
90
- <p
91
- data-slot="popover-description"
92
- className={cn("text-muted-foreground", className)}
93
- {...props}
94
- />
95
- )
96
- }
97
-
98
- export {
99
- Popover,
100
- PopoverAnchor,
101
- PopoverContent,
102
- PopoverDescription,
103
- PopoverHeader,
104
- PopoverTitle,
105
- PopoverTrigger,
106
- }
@@ -1,67 +0,0 @@
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
- "use client"
19
-
20
- import * as ResizablePrimitive from "react-resizable-panels"
21
-
22
- import { cn } from "./utils"
23
-
24
- function ResizablePanelGroup({
25
- className,
26
- ...props
27
- }: ResizablePrimitive.GroupProps) {
28
- return (
29
- <ResizablePrimitive.Group
30
- data-slot="resizable-panel-group"
31
- className={cn(
32
- "flex h-full w-full aria-[orientation=vertical]:flex-col",
33
- className
34
- )}
35
- {...props}
36
- />
37
- )
38
- }
39
-
40
- function ResizablePanel({ ...props }: ResizablePrimitive.PanelProps) {
41
- return <ResizablePrimitive.Panel data-slot="resizable-panel" {...props} />
42
- }
43
-
44
- function ResizableHandle({
45
- withHandle,
46
- className,
47
- ...props
48
- }: ResizablePrimitive.SeparatorProps & {
49
- withHandle?: boolean
50
- }) {
51
- return (
52
- <ResizablePrimitive.Separator
53
- data-slot="resizable-handle"
54
- className={cn(
55
- "relative flex w-px items-center justify-center bg-border ring-offset-background after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:ring-1 focus-visible:ring-ring focus-visible:outline-hidden aria-[orientation=horizontal]:h-px aria-[orientation=horizontal]:w-full aria-[orientation=horizontal]:after:left-0 aria-[orientation=horizontal]:after:h-1 aria-[orientation=horizontal]:after:w-full aria-[orientation=horizontal]:after:translate-x-0 aria-[orientation=horizontal]:after:-translate-y-1/2 [&[aria-orientation=horizontal]>div]:rotate-90",
56
- className
57
- )}
58
- {...props}
59
- >
60
- {withHandle && (
61
- <div className="z-10 flex h-6 w-1 shrink-0 rounded-full bg-muted-foreground/25" />
62
- )}
63
- </ResizablePrimitive.Separator>
64
- )
65
- }
66
-
67
- export { ResizableHandle, ResizablePanel, ResizablePanelGroup }
@@ -1,207 +0,0 @@
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 * as React from "react"
19
- import { Select as SelectPrimitive } from "radix-ui"
20
-
21
- import { cn } from "./utils"
22
- import { ChevronDownIcon, CheckIcon, ChevronUpIcon } from "lucide-react"
23
-
24
- function Select({
25
- ...props
26
- }: React.ComponentProps<typeof SelectPrimitive.Root>) {
27
- return <SelectPrimitive.Root data-slot="select" {...props} />
28
- }
29
-
30
- function SelectGroup({
31
- className,
32
- ...props
33
- }: React.ComponentProps<typeof SelectPrimitive.Group>) {
34
- return (
35
- <SelectPrimitive.Group
36
- data-slot="select-group"
37
- className={cn("scroll-my-1 p-1", className)}
38
- {...props}
39
- />
40
- )
41
- }
42
-
43
- function SelectValue({
44
- ...props
45
- }: React.ComponentProps<typeof SelectPrimitive.Value>) {
46
- return <SelectPrimitive.Value data-slot="select-value" {...props} />
47
- }
48
-
49
- function SelectTrigger({
50
- className,
51
- size = "default",
52
- children,
53
- ...props
54
- }: React.ComponentProps<typeof SelectPrimitive.Trigger> & {
55
- size?: "sm" | "default"
56
- }) {
57
- return (
58
- <SelectPrimitive.Trigger
59
- data-slot="select-trigger"
60
- data-size={size}
61
- className={cn(
62
- "flex w-fit items-center justify-between gap-1.5 rounded-lg border border-input bg-transparent py-2 pr-2 pl-2.5 text-sm whitespace-nowrap transition-colors outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 data-placeholder:text-muted-foreground data-[size=default]:h-8 data-[size=sm]:h-7 data-[size=sm]:rounded-[min(var(--radius-md),10px)] *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-1.5 dark:bg-input/30 dark:hover:bg-input/50 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
63
- className
64
- )}
65
- {...props}
66
- >
67
- {children}
68
- <SelectPrimitive.Icon asChild>
69
- <ChevronDownIcon className="pointer-events-none size-4 text-muted-foreground" />
70
- </SelectPrimitive.Icon>
71
- </SelectPrimitive.Trigger>
72
- )
73
- }
74
-
75
- function SelectContent({
76
- className,
77
- children,
78
- position = "item-aligned",
79
- align = "center",
80
- ...props
81
- }: React.ComponentProps<typeof SelectPrimitive.Content>) {
82
- return (
83
- <SelectPrimitive.Portal>
84
- <SelectPrimitive.Content
85
- data-slot="select-content"
86
- data-align-trigger={position === "item-aligned"}
87
- className={cn("relative z-50 max-h-(--radix-select-content-available-height) min-w-36 origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-lg bg-popover text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[align-trigger=true]:animate-none data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95", position ==="popper"&&"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1", className )}
88
- position={position}
89
- align={align}
90
- {...props}
91
- >
92
- <SelectScrollUpButton />
93
- <SelectPrimitive.Viewport
94
- data-position={position}
95
- className={cn(
96
- "data-[position=popper]:h-(--radix-select-trigger-height) data-[position=popper]:w-full data-[position=popper]:min-w-(--radix-select-trigger-width)",
97
- position === "popper" && ""
98
- )}
99
- >
100
- {children}
101
- </SelectPrimitive.Viewport>
102
- <SelectScrollDownButton />
103
- </SelectPrimitive.Content>
104
- </SelectPrimitive.Portal>
105
- )
106
- }
107
-
108
- function SelectLabel({
109
- className,
110
- ...props
111
- }: React.ComponentProps<typeof SelectPrimitive.Label>) {
112
- return (
113
- <SelectPrimitive.Label
114
- data-slot="select-label"
115
- className={cn("px-1.5 py-1 text-xs text-muted-foreground", className)}
116
- {...props}
117
- />
118
- )
119
- }
120
-
121
- function SelectItem({
122
- className,
123
- children,
124
- ...props
125
- }: React.ComponentProps<typeof SelectPrimitive.Item>) {
126
- return (
127
- <SelectPrimitive.Item
128
- data-slot="select-item"
129
- className={cn(
130
- "relative flex w-full cursor-default items-center gap-1.5 rounded-md py-1.5 pr-8 pl-3.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:*:[svg]:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2",
131
- className
132
- )}
133
- {...props}
134
- >
135
- <span className="pointer-events-none absolute right-2 flex size-4 items-center justify-center">
136
- <SelectPrimitive.ItemIndicator>
137
- <CheckIcon className="pointer-events-none" />
138
- </SelectPrimitive.ItemIndicator>
139
- </span>
140
- <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>
141
- </SelectPrimitive.Item>
142
- )
143
- }
144
-
145
- function SelectSeparator({
146
- className,
147
- ...props
148
- }: React.ComponentProps<typeof SelectPrimitive.Separator>) {
149
- return (
150
- <SelectPrimitive.Separator
151
- data-slot="select-separator"
152
- className={cn("pointer-events-none -mx-1 my-1 h-px bg-border", className)}
153
- {...props}
154
- />
155
- )
156
- }
157
-
158
- function SelectScrollUpButton({
159
- className,
160
- ...props
161
- }: React.ComponentProps<typeof SelectPrimitive.ScrollUpButton>) {
162
- return (
163
- <SelectPrimitive.ScrollUpButton
164
- data-slot="select-scroll-up-button"
165
- className={cn(
166
- "z-10 flex cursor-default items-center justify-center bg-popover py-1 [&_svg:not([class*='size-'])]:size-4",
167
- className
168
- )}
169
- {...props}
170
- >
171
- <ChevronUpIcon
172
- />
173
- </SelectPrimitive.ScrollUpButton>
174
- )
175
- }
176
-
177
- function SelectScrollDownButton({
178
- className,
179
- ...props
180
- }: React.ComponentProps<typeof SelectPrimitive.ScrollDownButton>) {
181
- return (
182
- <SelectPrimitive.ScrollDownButton
183
- data-slot="select-scroll-down-button"
184
- className={cn(
185
- "z-10 flex cursor-default items-center justify-center bg-popover py-1 [&_svg:not([class*='size-'])]:size-4",
186
- className
187
- )}
188
- {...props}
189
- >
190
- <ChevronDownIcon
191
- />
192
- </SelectPrimitive.ScrollDownButton>
193
- )
194
- }
195
-
196
- export {
197
- Select,
198
- SelectContent,
199
- SelectGroup,
200
- SelectItem,
201
- SelectLabel,
202
- SelectScrollDownButton,
203
- SelectScrollUpButton,
204
- SelectSeparator,
205
- SelectTrigger,
206
- SelectValue,
207
- }