@lark-apaas/coding-template-nestjs-react-fullstack 0.1.0-alpha.1

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 (250) hide show
  1. package/LICENSE +13 -0
  2. package/README.md +41 -0
  3. package/hooks/after-install.mjs +3 -0
  4. package/hooks/after-render.mjs +3 -0
  5. package/hooks/before-render.mjs +3 -0
  6. package/package.json +36 -0
  7. package/template/.codebase/pipelines/ci.yaml +34 -0
  8. package/template/.codebase/pipelines/coco-code-review.yaml +21 -0
  9. package/template/.prettierrc +8 -0
  10. package/template/.spark_project +16 -0
  11. package/template/.stylelintrc.js +12 -0
  12. package/template/_env.local +38 -0
  13. package/template/_gitignore +64 -0
  14. package/template/_npmrc +1 -0
  15. package/template/client/index.html +23 -0
  16. package/template/client/public/favicon.svg +40 -0
  17. package/template/client/src/api/index.ts +19 -0
  18. package/template/client/src/app.tsx +22 -0
  19. package/template/client/src/components/Layout.tsx +11 -0
  20. package/template/client/src/components/business-ui/README.md +519 -0
  21. package/template/client/src/components/business-ui/api/chats/queries.ts +39 -0
  22. package/template/client/src/components/business-ui/api/chats/service.ts +29 -0
  23. package/template/client/src/components/business-ui/api/departments/queries.ts +42 -0
  24. package/template/client/src/components/business-ui/api/departments/service.ts +18 -0
  25. package/template/client/src/components/business-ui/api/files/service.ts +28 -0
  26. package/template/client/src/components/business-ui/api/user-profiles/queries.ts +42 -0
  27. package/template/client/src/components/business-ui/api/user-profiles/service.ts +23 -0
  28. package/template/client/src/components/business-ui/api/users/queries.ts +34 -0
  29. package/template/client/src/components/business-ui/api/users/service.ts +40 -0
  30. package/template/client/src/components/business-ui/chat-select/README.md +128 -0
  31. package/template/client/src/components/business-ui/chat-select/chat-item.tsx +85 -0
  32. package/template/client/src/components/business-ui/chat-select/chat-select-tag.tsx +83 -0
  33. package/template/client/src/components/business-ui/chat-select/chat-select.tsx +197 -0
  34. package/template/client/src/components/business-ui/chat-select/index.tsx +12 -0
  35. package/template/client/src/components/business-ui/chat-select/types.ts +102 -0
  36. package/template/client/src/components/business-ui/chat-select/use-chat-value.ts +180 -0
  37. package/template/client/src/components/business-ui/chat-select/utils.ts +81 -0
  38. package/template/client/src/components/business-ui/department-select/department-item.tsx +55 -0
  39. package/template/client/src/components/business-ui/department-select/department-select-field.tsx +86 -0
  40. package/template/client/src/components/business-ui/department-select/department-select-tag.tsx +56 -0
  41. package/template/client/src/components/business-ui/department-select/department-select.tsx +168 -0
  42. package/template/client/src/components/business-ui/department-select/icon-department.tsx +22 -0
  43. package/template/client/src/components/business-ui/department-select/index.tsx +7 -0
  44. package/template/client/src/components/business-ui/department-select/types.ts +15 -0
  45. package/template/client/src/components/business-ui/department-select/utils.ts +17 -0
  46. package/template/client/src/components/business-ui/entity-combobox/base-combobox-content.tsx +35 -0
  47. package/template/client/src/components/business-ui/entity-combobox/base-combobox-empty.tsx +28 -0
  48. package/template/client/src/components/business-ui/entity-combobox/base-combobox-error.tsx +35 -0
  49. package/template/client/src/components/business-ui/entity-combobox/base-combobox-item.tsx +55 -0
  50. package/template/client/src/components/business-ui/entity-combobox/base-combobox-list.tsx +174 -0
  51. package/template/client/src/components/business-ui/entity-combobox/base-combobox-loading.tsx +19 -0
  52. package/template/client/src/components/business-ui/entity-combobox/base-combobox-search.tsx +31 -0
  53. package/template/client/src/components/business-ui/entity-combobox/base-combobox-trigger.tsx +281 -0
  54. package/template/client/src/components/business-ui/entity-combobox/base-combobox.tsx +132 -0
  55. package/template/client/src/components/business-ui/entity-combobox/context.tsx +19 -0
  56. package/template/client/src/components/business-ui/entity-combobox/entity-combobox.tsx +145 -0
  57. package/template/client/src/components/business-ui/entity-combobox/highlight-text.tsx +52 -0
  58. package/template/client/src/components/business-ui/entity-combobox/hooks.tsx +21 -0
  59. package/template/client/src/components/business-ui/entity-combobox/index.tsx +31 -0
  60. package/template/client/src/components/business-ui/entity-combobox/item-pill.tsx +179 -0
  61. package/template/client/src/components/business-ui/entity-combobox/popover-wrapper.tsx +149 -0
  62. package/template/client/src/components/business-ui/entity-combobox/search-trigger.tsx +262 -0
  63. package/template/client/src/components/business-ui/entity-combobox/shared-types.ts +296 -0
  64. package/template/client/src/components/business-ui/entity-combobox/size-variants.tsx +322 -0
  65. package/template/client/src/components/business-ui/entity-combobox/types.ts +246 -0
  66. package/template/client/src/components/business-ui/entity-combobox/use-fetch-data.tsx +81 -0
  67. package/template/client/src/components/business-ui/entity-combobox/use-infinite-scroll.tsx +99 -0
  68. package/template/client/src/components/business-ui/entity-combobox/use-popover-outside-click.tsx +32 -0
  69. package/template/client/src/components/business-ui/form/checkbox-field.tsx +83 -0
  70. package/template/client/src/components/business-ui/form/context.tsx +38 -0
  71. package/template/client/src/components/business-ui/form/field-layout.tsx +91 -0
  72. package/template/client/src/components/business-ui/form/form.tsx +54 -0
  73. package/template/client/src/components/business-ui/form/hooks/form-context.tsx +4 -0
  74. package/template/client/src/components/business-ui/form/hooks/form-utils.ts +23 -0
  75. package/template/client/src/components/business-ui/form/hooks/form.tsx +40 -0
  76. package/template/client/src/components/business-ui/form/index.tsx +4 -0
  77. package/template/client/src/components/business-ui/form/input-field.tsx +74 -0
  78. package/template/client/src/components/business-ui/form/radio-group-field.tsx +138 -0
  79. package/template/client/src/components/business-ui/form/select-field.tsx +155 -0
  80. package/template/client/src/components/business-ui/form/switch-field.tsx +66 -0
  81. package/template/client/src/components/business-ui/form/textarea-field.tsx +72 -0
  82. package/template/client/src/components/business-ui/form/types.ts +32 -0
  83. package/template/client/src/components/business-ui/tiptap-editor/README.md +324 -0
  84. package/template/client/src/components/business-ui/tiptap-editor/components/attachment-toolbar-button.tsx +74 -0
  85. package/template/client/src/components/business-ui/tiptap-editor/components/blockquote-toolbar-button.tsx +41 -0
  86. package/template/client/src/components/business-ui/tiptap-editor/components/code-block-toolbar-button.tsx +41 -0
  87. package/template/client/src/components/business-ui/tiptap-editor/components/color-highlight-toolbar-button.tsx +141 -0
  88. package/template/client/src/components/business-ui/tiptap-editor/components/heading-toolbar-button.tsx +99 -0
  89. package/template/client/src/components/business-ui/tiptap-editor/components/horizontal-rule-toolbar-button.tsx +39 -0
  90. package/template/client/src/components/business-ui/tiptap-editor/components/image-upload-toolbar-button.tsx +65 -0
  91. package/template/client/src/components/business-ui/tiptap-editor/components/link-edit-form.tsx +127 -0
  92. package/template/client/src/components/business-ui/tiptap-editor/components/link-hover-toolbar.tsx +380 -0
  93. package/template/client/src/components/business-ui/tiptap-editor/components/link-toolbar-button.tsx +96 -0
  94. package/template/client/src/components/business-ui/tiptap-editor/components/list-toolbar-button.tsx +75 -0
  95. package/template/client/src/components/business-ui/tiptap-editor/components/mark-toolbar-button.tsx +118 -0
  96. package/template/client/src/components/business-ui/tiptap-editor/components/text-align-toolbar-button.tsx +84 -0
  97. package/template/client/src/components/business-ui/tiptap-editor/components/undo-redo-toolbar-button.tsx +54 -0
  98. package/template/client/src/components/business-ui/tiptap-editor/extensions/attachment.tsx +539 -0
  99. package/template/client/src/components/business-ui/tiptap-editor/extensions/code-block-shiki.tsx +236 -0
  100. package/template/client/src/components/business-ui/tiptap-editor/extensions/complete-kit.ts +260 -0
  101. package/template/client/src/components/business-ui/tiptap-editor/extensions/image.tsx +456 -0
  102. package/template/client/src/components/business-ui/tiptap-editor/hooks/use-tiptap-editor.ts +47 -0
  103. package/template/client/src/components/business-ui/tiptap-editor/index.ts +38 -0
  104. package/template/client/src/components/business-ui/tiptap-editor/tiptap-editor-complete.tsx +112 -0
  105. package/template/client/src/components/business-ui/tiptap-editor/tiptap-editor.tsx +169 -0
  106. package/template/client/src/components/business-ui/types/user.ts +74 -0
  107. package/template/client/src/components/business-ui/user-display/index.tsx +2 -0
  108. package/template/client/src/components/business-ui/user-display/overflow-tooltip-text.tsx +90 -0
  109. package/template/client/src/components/business-ui/user-display/type.ts +27 -0
  110. package/template/client/src/components/business-ui/user-display/user-display.tsx +99 -0
  111. package/template/client/src/components/business-ui/user-display/user-with-avatar.tsx +158 -0
  112. package/template/client/src/components/business-ui/user-display/utils.ts +37 -0
  113. package/template/client/src/components/business-ui/user-profile/error-image.tsx +302 -0
  114. package/template/client/src/components/business-ui/user-profile/user-external-script.ts +73 -0
  115. package/template/client/src/components/business-ui/user-profile/user-profile.tsx +370 -0
  116. package/template/client/src/components/business-ui/user-select/index.tsx +28 -0
  117. package/template/client/src/components/business-ui/user-select/types.ts +109 -0
  118. package/template/client/src/components/business-ui/user-select/use-user-value.ts +160 -0
  119. package/template/client/src/components/business-ui/user-select/user-item.tsx +98 -0
  120. package/template/client/src/components/business-ui/user-select/user-pill.tsx +140 -0
  121. package/template/client/src/components/business-ui/user-select/user-select-tag.tsx +82 -0
  122. package/template/client/src/components/business-ui/user-select/user-select.tsx +359 -0
  123. package/template/client/src/components/business-ui/user-select/utils.tsx +188 -0
  124. package/template/client/src/components/business-ui/utils/user.ts +72 -0
  125. package/template/client/src/components/ui/README.md +134 -0
  126. package/template/client/src/components/ui/accordion.tsx +66 -0
  127. package/template/client/src/components/ui/alert-dialog.tsx +157 -0
  128. package/template/client/src/components/ui/alert.tsx +71 -0
  129. package/template/client/src/components/ui/aspect-ratio.tsx +11 -0
  130. package/template/client/src/components/ui/avatar.tsx +53 -0
  131. package/template/client/src/components/ui/badge.tsx +42 -0
  132. package/template/client/src/components/ui/breadcrumb.tsx +109 -0
  133. package/template/client/src/components/ui/button-group.tsx +83 -0
  134. package/template/client/src/components/ui/button.tsx +69 -0
  135. package/template/client/src/components/ui/calendar.tsx +213 -0
  136. package/template/client/src/components/ui/card.tsx +82 -0
  137. package/template/client/src/components/ui/carousel.tsx +241 -0
  138. package/template/client/src/components/ui/chart.tsx +357 -0
  139. package/template/client/src/components/ui/checkbox.tsx +32 -0
  140. package/template/client/src/components/ui/collapsible.tsx +33 -0
  141. package/template/client/src/components/ui/command.tsx +208 -0
  142. package/template/client/src/components/ui/context-menu.tsx +324 -0
  143. package/template/client/src/components/ui/dialog.tsx +143 -0
  144. package/template/client/src/components/ui/drawer.tsx +135 -0
  145. package/template/client/src/components/ui/dropdown-menu.tsx +329 -0
  146. package/template/client/src/components/ui/empty.tsx +104 -0
  147. package/template/client/src/components/ui/field.tsx +248 -0
  148. package/template/client/src/components/ui/form.tsx +167 -0
  149. package/template/client/src/components/ui/hover-card.tsx +44 -0
  150. package/template/client/src/components/ui/icons/file-ae-colorful-icon.tsx +21 -0
  151. package/template/client/src/components/ui/icons/file-ai-colorful-icon.tsx +36 -0
  152. package/template/client/src/components/ui/icons/file-android-colorful-icon.tsx +33 -0
  153. package/template/client/src/components/ui/icons/file-audio-colorful-icon.tsx +21 -0
  154. package/template/client/src/components/ui/icons/file-code-colorful-icon.tsx +28 -0
  155. package/template/client/src/components/ui/icons/file-csv-colorful-icon.tsx +21 -0
  156. package/template/client/src/components/ui/icons/file-eml-colorful-icon.tsx +29 -0
  157. package/template/client/src/components/ui/icons/file-ios-colorful-icon.tsx +25 -0
  158. package/template/client/src/components/ui/icons/file-keynote-colorful-icon.tsx +29 -0
  159. package/template/client/src/components/ui/icons/file-pages-colorful-icon.tsx +29 -0
  160. package/template/client/src/components/ui/icons/file-ps-colorful-icon.tsx +21 -0
  161. package/template/client/src/components/ui/icons/file-sketch-colorful-icon.tsx +21 -0
  162. package/template/client/src/components/ui/icons/file-slide-colorful-icon.tsx +21 -0
  163. package/template/client/src/components/ui/icons/file-vcf-colorful-icon.tsx +29 -0
  164. package/template/client/src/components/ui/icons/file-wiki-excel-colorful-icon.tsx +23 -0
  165. package/template/client/src/components/ui/icons/file-wiki-image-colorful-icon.tsx +27 -0
  166. package/template/client/src/components/ui/icons/file-wiki-pdf-colorful-icon.tsx +20 -0
  167. package/template/client/src/components/ui/icons/file-wiki-ppt-colorful-icon.tsx +21 -0
  168. package/template/client/src/components/ui/icons/file-wiki-text-colorful-icon.tsx +12 -0
  169. package/template/client/src/components/ui/icons/file-wiki-unknown-colorful-icon.tsx +14 -0
  170. package/template/client/src/components/ui/icons/file-wiki-video-colorful-icon.tsx +23 -0
  171. package/template/client/src/components/ui/icons/file-wiki-word-colorful-icon.tsx +38 -0
  172. package/template/client/src/components/ui/icons/file-wiki-zip-colorful-icon.tsx +21 -0
  173. package/template/client/src/components/ui/image.tsx +183 -0
  174. package/template/client/src/components/ui/input-group.tsx +166 -0
  175. package/template/client/src/components/ui/input-otp.tsx +77 -0
  176. package/template/client/src/components/ui/input.tsx +21 -0
  177. package/template/client/src/components/ui/item.tsx +193 -0
  178. package/template/client/src/components/ui/kbd.tsx +28 -0
  179. package/template/client/src/components/ui/label.tsx +24 -0
  180. package/template/client/src/components/ui/menubar.tsx +348 -0
  181. package/template/client/src/components/ui/native-select.tsx +48 -0
  182. package/template/client/src/components/ui/navigation-menu.tsx +168 -0
  183. package/template/client/src/components/ui/pagination.tsx +127 -0
  184. package/template/client/src/components/ui/popover.tsx +48 -0
  185. package/template/client/src/components/ui/progress.tsx +31 -0
  186. package/template/client/src/components/ui/radio-group.tsx +45 -0
  187. package/template/client/src/components/ui/resizable.tsx +56 -0
  188. package/template/client/src/components/ui/scroll-area.tsx +58 -0
  189. package/template/client/src/components/ui/select.tsx +243 -0
  190. package/template/client/src/components/ui/separator.tsx +28 -0
  191. package/template/client/src/components/ui/sheet.tsx +139 -0
  192. package/template/client/src/components/ui/sidebar.tsx +727 -0
  193. package/template/client/src/components/ui/skeleton.tsx +13 -0
  194. package/template/client/src/components/ui/slider.tsx +87 -0
  195. package/template/client/src/components/ui/sonner.tsx +67 -0
  196. package/template/client/src/components/ui/spinner.tsx +16 -0
  197. package/template/client/src/components/ui/streamdown.tsx +186 -0
  198. package/template/client/src/components/ui/switch.tsx +31 -0
  199. package/template/client/src/components/ui/table.tsx +116 -0
  200. package/template/client/src/components/ui/tabs.tsx +66 -0
  201. package/template/client/src/components/ui/textarea.tsx +18 -0
  202. package/template/client/src/components/ui/toggle-group.tsx +83 -0
  203. package/template/client/src/components/ui/toggle.tsx +47 -0
  204. package/template/client/src/components/ui/tooltip.tsx +61 -0
  205. package/template/client/src/hooks/use-example.ts +52 -0
  206. package/template/client/src/hooks/use-mobile.ts +19 -0
  207. package/template/client/src/index.css +7 -0
  208. package/template/client/src/index.tsx +36 -0
  209. package/template/client/src/lib/shiki.ts +92 -0
  210. package/template/client/src/lib/utils.ts +6 -0
  211. package/template/client/src/pages/ExamplePage/ExamplePage.tsx +37 -0
  212. package/template/client/src/pages/NotFound/NotFound.tsx +11 -0
  213. package/template/client/src/tailwind-theme.css +257 -0
  214. package/template/client/src/types/common.ts +34 -0
  215. package/template/client/src/types/global.d.ts +53 -0
  216. package/template/client/src/types/index.ts +4 -0
  217. package/template/client/src/typography.css +41 -0
  218. package/template/client/src/utils/img-resources/avatar-placeholders.ts +12 -0
  219. package/template/client/src/utils/img-resources/banner-placeholders.ts +29 -0
  220. package/template/client/src/utils/img-resources/cover-placeholders.ts +47 -0
  221. package/template/components.json +21 -0
  222. package/template/eslint.config.js +50 -0
  223. package/template/nest-cli.json +25 -0
  224. package/template/package-lock.json +29195 -0
  225. package/template/package.json +202 -0
  226. package/template/postcss.config.js +10 -0
  227. package/template/scripts/build.sh +120 -0
  228. package/template/scripts/dev.js +295 -0
  229. package/template/scripts/dev.sh +2 -0
  230. package/template/scripts/lint.js +150 -0
  231. package/template/scripts/prune-smart.js +281 -0
  232. package/template/scripts/run.sh +5 -0
  233. package/template/server/app.module.ts +27 -0
  234. package/template/server/common/constants/api_response_code.ts +54 -0
  235. package/template/server/common/filters/exception.filter.ts +78 -0
  236. package/template/server/common/interfaces/api_response.interface.ts +21 -0
  237. package/template/server/common/interfaces/exception.interface.ts +19 -0
  238. package/template/server/database/schema.ts +90 -0
  239. package/template/server/main.ts +31 -0
  240. package/template/server/modules/hello/hello.controller.ts +16 -0
  241. package/template/server/modules/hello/hello.module.ts +10 -0
  242. package/template/server/modules/hello/hello.service.ts +28 -0
  243. package/template/server/modules/view/view.controller.ts +17 -0
  244. package/template/server/modules/view/view.module.ts +8 -0
  245. package/template/shared/api.interface.ts +1 -0
  246. package/template/tailwind.config.ts +9 -0
  247. package/template/tsconfig.app.json +23 -0
  248. package/template/tsconfig.json +8 -0
  249. package/template/tsconfig.node.json +16 -0
  250. package/template/vite.config.ts +10 -0
@@ -0,0 +1,248 @@
1
+ "use client"
2
+
3
+ import { useMemo } from "react"
4
+ import { cva, type VariantProps } from "class-variance-authority"
5
+
6
+ import { cn } from "@/lib/utils"
7
+ import { Label } from "@/components/ui/label"
8
+ import { Separator } from "@/components/ui/separator"
9
+
10
+ function FieldSet({ className, ...props }: React.ComponentProps<"fieldset">) {
11
+ return (
12
+ <fieldset
13
+ data-slot="field-set"
14
+ className={cn(
15
+ "flex flex-col gap-6",
16
+ "has-[>[data-slot=checkbox-group]]:gap-3 has-[>[data-slot=radio-group]]:gap-3",
17
+ className
18
+ )}
19
+ {...props}
20
+ />
21
+ )
22
+ }
23
+
24
+ function FieldLegend({
25
+ className,
26
+ variant = "legend",
27
+ ...props
28
+ }: React.ComponentProps<"legend"> & { variant?: "legend" | "label" }) {
29
+ return (
30
+ <legend
31
+ data-slot="field-legend"
32
+ data-variant={variant}
33
+ className={cn(
34
+ "mb-3 font-normal",
35
+ "data-[variant=legend]:text-base",
36
+ "data-[variant=label]:text-sm",
37
+ className
38
+ )}
39
+ {...props}
40
+ />
41
+ )
42
+ }
43
+
44
+ function FieldGroup({ className, ...props }: React.ComponentProps<"div">) {
45
+ return (
46
+ <div
47
+ data-slot="field-group"
48
+ className={cn(
49
+ "group/field-group @container/field-group flex w-full flex-col gap-7 data-[slot=checkbox-group]:gap-3 [&>[data-slot=field-group]]:gap-4",
50
+ className
51
+ )}
52
+ {...props}
53
+ />
54
+ )
55
+ }
56
+
57
+ const fieldVariants = cva(
58
+ "group/field flex w-full gap-3 data-[invalid=true]:text-destructive",
59
+ {
60
+ variants: {
61
+ orientation: {
62
+ vertical: ["flex-col [&>*]:w-full [&>.sr-only]:w-auto"],
63
+ horizontal: [
64
+ "flex-row items-center",
65
+ "[&>[data-slot=field-label]]:flex-auto",
66
+ "has-[>[data-slot=field-content]]:items-start has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px",
67
+ ],
68
+ responsive: [
69
+ "flex-col [&>*]:w-full [&>.sr-only]:w-auto @md/field-group:flex-row @md/field-group:items-center @md/field-group:[&>*]:w-auto",
70
+ "@md/field-group:[&>[data-slot=field-label]]:flex-auto",
71
+ "@md/field-group:has-[>[data-slot=field-content]]:items-start @md/field-group:has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px",
72
+ ],
73
+ },
74
+ },
75
+ defaultVariants: {
76
+ orientation: "vertical",
77
+ },
78
+ }
79
+ )
80
+
81
+ function Field({
82
+ className,
83
+ orientation = "vertical",
84
+ ...props
85
+ }: React.ComponentProps<"div"> & VariantProps<typeof fieldVariants>) {
86
+ return (
87
+ <div
88
+ role="group"
89
+ data-slot="field"
90
+ data-orientation={orientation}
91
+ className={cn(fieldVariants({ orientation }), className)}
92
+ {...props}
93
+ />
94
+ )
95
+ }
96
+
97
+ function FieldContent({ className, ...props }: React.ComponentProps<"div">) {
98
+ return (
99
+ <div
100
+ data-slot="field-content"
101
+ className={cn(
102
+ "group/field-content flex flex-1 flex-col gap-1.5 leading-snug",
103
+ className
104
+ )}
105
+ {...props}
106
+ />
107
+ )
108
+ }
109
+
110
+ function FieldLabel({
111
+ className,
112
+ ...props
113
+ }: React.ComponentProps<typeof Label>) {
114
+ return (
115
+ <Label
116
+ data-slot="field-label"
117
+ className={cn(
118
+ "group/field-label peer/field-label flex w-fit gap-2 leading-snug group-data-[disabled=true]/field:opacity-50",
119
+ "has-[>[data-slot=field]]:w-full has-[>[data-slot=field]]:flex-col has-[>[data-slot=field]]:rounded-md has-[>[data-slot=field]]:border [&>*]:data-[slot=field]:p-4",
120
+ "has-data-[state=checked]:bg-primary/5 has-data-[state=checked]:border-primary dark:has-data-[state=checked]:bg-primary/10",
121
+ className
122
+ )}
123
+ {...props}
124
+ />
125
+ )
126
+ }
127
+
128
+ function FieldTitle({ className, ...props }: React.ComponentProps<"div">) {
129
+ return (
130
+ <div
131
+ data-slot="field-label"
132
+ className={cn(
133
+ "flex w-fit items-center gap-2 text-sm leading-snug font-normal group-data-[disabled=true]/field:opacity-50",
134
+ className
135
+ )}
136
+ {...props}
137
+ />
138
+ )
139
+ }
140
+
141
+ function FieldDescription({ className, ...props }: React.ComponentProps<"p">) {
142
+ return (
143
+ <p
144
+ data-slot="field-description"
145
+ className={cn(
146
+ "text-muted-foreground text-sm leading-normal font-normal group-has-[[data-orientation=horizontal]]/field:text-balance",
147
+ "last:mt-0 nth-last-2:-mt-1 [[data-variant=legend]+&]:-mt-1.5",
148
+ "[&>a:hover]:text-primary [&>a]:underline [&>a]:underline-offset-4",
149
+ className
150
+ )}
151
+ {...props}
152
+ />
153
+ )
154
+ }
155
+
156
+ function FieldSeparator({
157
+ children,
158
+ className,
159
+ ...props
160
+ }: React.ComponentProps<"div"> & {
161
+ children?: React.ReactNode
162
+ }) {
163
+ return (
164
+ <div
165
+ data-slot="field-separator"
166
+ data-content={!!children}
167
+ className={cn(
168
+ "relative -my-2 h-5 text-sm group-data-[variant=outline]/field-group:-mb-2",
169
+ className
170
+ )}
171
+ {...props}
172
+ >
173
+ <Separator className="absolute inset-0 top-1/2" />
174
+ {children && (
175
+ <span
176
+ className="bg-background text-muted-foreground relative mx-auto block w-fit px-2"
177
+ data-slot="field-separator-content"
178
+ >
179
+ {children}
180
+ </span>
181
+ )}
182
+ </div>
183
+ )
184
+ }
185
+
186
+ function FieldError({
187
+ className,
188
+ children,
189
+ errors,
190
+ ...props
191
+ }: React.ComponentProps<"div"> & {
192
+ errors?: Array<{ message?: string } | undefined>
193
+ }) {
194
+ const content = useMemo(() => {
195
+ if (children) {
196
+ return children
197
+ }
198
+
199
+ if (!errors?.length) {
200
+ return null
201
+ }
202
+
203
+ const uniqueErrors = [
204
+ ...new Map(errors.map((error) => [error?.message, error])).values(),
205
+ ]
206
+
207
+ if (uniqueErrors?.length == 1) {
208
+ return uniqueErrors[0]?.message
209
+ }
210
+
211
+ return (
212
+ <ul className="ml-4 flex list-disc flex-col gap-1">
213
+ {uniqueErrors.map(
214
+ (error, index) =>
215
+ error?.message && <li key={index}>{error.message}</li>
216
+ )}
217
+ </ul>
218
+ )
219
+ }, [children, errors])
220
+
221
+ if (!content) {
222
+ return null
223
+ }
224
+
225
+ return (
226
+ <div
227
+ role="alert"
228
+ data-slot="field-error"
229
+ className={cn("text-destructive text-sm font-normal", className)}
230
+ {...props}
231
+ >
232
+ {content}
233
+ </div>
234
+ )
235
+ }
236
+
237
+ export {
238
+ Field,
239
+ FieldLabel,
240
+ FieldDescription,
241
+ FieldError,
242
+ FieldGroup,
243
+ FieldLegend,
244
+ FieldSeparator,
245
+ FieldSet,
246
+ FieldContent,
247
+ FieldTitle,
248
+ }
@@ -0,0 +1,167 @@
1
+ "use client"
2
+
3
+ import * as React from "react"
4
+ import * as LabelPrimitive from "@radix-ui/react-label"
5
+ import { Slot } from "@radix-ui/react-slot"
6
+ import {
7
+ Controller,
8
+ FormProvider,
9
+ useFormContext,
10
+ useFormState,
11
+ type ControllerProps,
12
+ type FieldPath,
13
+ type FieldValues,
14
+ } from "react-hook-form"
15
+
16
+ import { cn } from "@/lib/utils"
17
+ import { Label } from "@/components/ui/label"
18
+
19
+ const Form = FormProvider
20
+
21
+ type FormFieldContextValue<
22
+ TFieldValues extends FieldValues = FieldValues,
23
+ TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,
24
+ > = {
25
+ name: TName
26
+ }
27
+
28
+ const FormFieldContext = React.createContext<FormFieldContextValue>(
29
+ {} as FormFieldContextValue
30
+ )
31
+
32
+ const FormField = <
33
+ TFieldValues extends FieldValues = FieldValues,
34
+ TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,
35
+ >({
36
+ ...props
37
+ }: ControllerProps<TFieldValues, TName>) => {
38
+ return (
39
+ <FormFieldContext.Provider value={{ name: props.name }}>
40
+ <Controller {...props} />
41
+ </FormFieldContext.Provider>
42
+ )
43
+ }
44
+
45
+ const useFormField = () => {
46
+ const fieldContext = React.useContext(FormFieldContext)
47
+ const itemContext = React.useContext(FormItemContext)
48
+ const { getFieldState } = useFormContext()
49
+ const formState = useFormState({ name: fieldContext.name })
50
+ const fieldState = getFieldState(fieldContext.name, formState)
51
+
52
+ if (!fieldContext) {
53
+ throw new Error("useFormField should be used within <FormField>")
54
+ }
55
+
56
+ const { id } = itemContext
57
+
58
+ return {
59
+ id,
60
+ name: fieldContext.name,
61
+ formItemId: `${id}-form-item`,
62
+ formDescriptionId: `${id}-form-item-description`,
63
+ formMessageId: `${id}-form-item-message`,
64
+ ...fieldState,
65
+ }
66
+ }
67
+
68
+ type FormItemContextValue = {
69
+ id: string
70
+ }
71
+
72
+ const FormItemContext = React.createContext<FormItemContextValue>(
73
+ {} as FormItemContextValue
74
+ )
75
+
76
+ function FormItem({ className, ...props }: React.ComponentProps<"div">) {
77
+ const id = React.useId()
78
+
79
+ return (
80
+ <FormItemContext.Provider value={{ id }}>
81
+ <div
82
+ data-slot="form-item"
83
+ className={cn("grid gap-2", className)}
84
+ {...props}
85
+ />
86
+ </FormItemContext.Provider>
87
+ )
88
+ }
89
+
90
+ function FormLabel({
91
+ className,
92
+ ...props
93
+ }: React.ComponentProps<typeof LabelPrimitive.Root>) {
94
+ const { error, formItemId } = useFormField()
95
+
96
+ return (
97
+ <Label
98
+ data-slot="form-label"
99
+ data-error={!!error}
100
+ className={cn("data-[error=true]:text-destructive", className)}
101
+ htmlFor={formItemId}
102
+ {...props}
103
+ />
104
+ )
105
+ }
106
+
107
+ function FormControl({ ...props }: React.ComponentProps<typeof Slot>) {
108
+ const { error, formItemId, formDescriptionId, formMessageId } = useFormField()
109
+
110
+ return (
111
+ <Slot
112
+ data-slot="form-control"
113
+ id={formItemId}
114
+ aria-describedby={
115
+ !error
116
+ ? `${formDescriptionId}`
117
+ : `${formDescriptionId} ${formMessageId}`
118
+ }
119
+ aria-invalid={!!error}
120
+ {...props}
121
+ />
122
+ )
123
+ }
124
+
125
+ function FormDescription({ className, ...props }: React.ComponentProps<"p">) {
126
+ const { formDescriptionId } = useFormField()
127
+
128
+ return (
129
+ <p
130
+ data-slot="form-description"
131
+ id={formDescriptionId}
132
+ className={cn("text-muted-foreground text-sm", className)}
133
+ {...props}
134
+ />
135
+ )
136
+ }
137
+
138
+ function FormMessage({ className, ...props }: React.ComponentProps<"p">) {
139
+ const { error, formMessageId } = useFormField()
140
+ const body = error ? String(error?.message ?? "") : props.children
141
+
142
+ if (!body) {
143
+ return null
144
+ }
145
+
146
+ return (
147
+ <p
148
+ data-slot="form-message"
149
+ id={formMessageId}
150
+ className={cn("text-destructive text-sm", className)}
151
+ {...props}
152
+ >
153
+ {body}
154
+ </p>
155
+ )
156
+ }
157
+
158
+ export {
159
+ useFormField,
160
+ Form,
161
+ FormItem,
162
+ FormLabel,
163
+ FormControl,
164
+ FormDescription,
165
+ FormMessage,
166
+ FormField,
167
+ }
@@ -0,0 +1,44 @@
1
+ "use client"
2
+
3
+ import * as React from "react"
4
+ import * as HoverCardPrimitive from "@radix-ui/react-hover-card"
5
+
6
+ import { cn } from "@/lib/utils"
7
+
8
+ function HoverCard({
9
+ ...props
10
+ }: React.ComponentProps<typeof HoverCardPrimitive.Root>) {
11
+ return <HoverCardPrimitive.Root data-slot="hover-card" {...props} />
12
+ }
13
+
14
+ function HoverCardTrigger({
15
+ ...props
16
+ }: React.ComponentProps<typeof HoverCardPrimitive.Trigger>) {
17
+ return (
18
+ <HoverCardPrimitive.Trigger data-slot="hover-card-trigger" {...props} />
19
+ )
20
+ }
21
+
22
+ function HoverCardContent({
23
+ className,
24
+ align = "center",
25
+ sideOffset = 4,
26
+ ...props
27
+ }: React.ComponentProps<typeof HoverCardPrimitive.Content>) {
28
+ return (
29
+ <HoverCardPrimitive.Portal data-slot="hover-card-portal">
30
+ <HoverCardPrimitive.Content
31
+ data-slot="hover-card-content"
32
+ align={align}
33
+ sideOffset={sideOffset}
34
+ className={cn(
35
+ "bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 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 z-50 w-64 origin-(--radix-hover-card-content-transform-origin) rounded-md border p-4 shadow-md outline-hidden",
36
+ className
37
+ )}
38
+ {...props}
39
+ />
40
+ </HoverCardPrimitive.Portal>
41
+ )
42
+ }
43
+
44
+ export { HoverCard, HoverCardTrigger, HoverCardContent }
@@ -0,0 +1,21 @@
1
+ import * as React from 'react';
2
+
3
+ export function FileAeColorfulIcon(props: React.SVGProps<SVGSVGElement>) {
4
+ return (
5
+ <svg {...props} xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
6
+ <path
7
+ d="M3 3C3 1.89543 3.89543 1 5 1H14.5858C14.851 1 15.1054 1.10536 15.2929 1.29289L20.7071 6.70711C20.8946 6.89464 21 7.149 21 7.41421V21C21 22.1046 20.1046 23 19 23H5C3.89543 23 3 22.1046 3 21V3Z"
8
+ fill="#BF3DBF"
9
+ />
10
+ <path
11
+ opacity="0.8"
12
+ d="M15 1.48284C15 1.30466 15.2154 1.21543 15.3414 1.34142L20.6586 6.65858C20.7846 6.78457 20.6953 7 20.5172 7H17C15.8954 7 15 6.10457 15 5V1.48284Z"
13
+ fill="#A630A6"
14
+ />
15
+ <path
16
+ d="M7.5153 17.957L8.27031 15.91H11.3271L12.0808 17.957C12.1108 18.0383 12.1869 18.0922 12.272 18.0922H13.1295C13.1549 18.0922 13.1801 18.0874 13.2037 18.078C13.3088 18.0361 13.3609 17.9152 13.3199 17.8078L10.4623 10.316C10.4318 10.2359 10.3562 10.1831 10.2719 10.1831H9.33439C9.25016 10.1831 9.17457 10.2359 9.144 10.316L6.28639 17.8078C6.27719 17.832 6.27246 17.8576 6.27246 17.8836C6.27246 17.9988 6.36394 18.0922 6.47679 18.0922H7.32405C7.40915 18.0922 7.48534 18.0383 7.5153 17.957ZM10.9512 14.8195H8.64627L9.8072 11.8195L10.9512 14.8195ZM15.1782 16.9365C15.3602 17.1518 15.6104 17.2584 15.9382 17.2584C16.2197 17.2584 16.4497 17.1851 16.6177 17.0448C16.6247 17.0388 16.6411 17.0253 16.659 17.0104C16.6838 16.9899 16.7116 16.9669 16.7214 16.9584C16.7717 16.915 16.8048 16.8791 16.8379 16.8294C16.8646 16.7892 16.8908 16.74 16.9186 16.677C16.9512 16.603 17.0019 16.5696 17.0902 16.5757L17.7618 16.6221C17.8817 16.6304 17.9154 16.7461 17.8852 16.8478C17.7888 17.1721 17.6808 17.3196 17.3545 17.6283C16.9795 17.9712 16.5017 18.1456 15.9382 18.1456C15.3099 18.1456 14.7882 17.9238 14.4076 17.4941C14.0222 17.0607 13.8343 16.4916 13.8343 15.7689C13.8343 15.1092 14.0155 14.5583 14.3775 14.1243C14.7564 13.6432 15.2724 13.4002 15.9148 13.4002C16.6236 13.4002 17.1721 13.6543 17.5337 14.1532C17.8511 14.5853 18.0179 15.1884 18.0343 15.9511C18.0363 16.0466 17.9605 16.1257 17.865 16.1277L17.8613 16.1278H14.8688C14.9136 16.4782 15.0164 16.7452 15.1782 16.9365ZM15.2057 14.5893C15.0474 14.7648 14.9434 14.9928 14.8919 15.2809H16.995C16.8883 14.6054 16.5432 14.2875 15.9304 14.2875C15.6254 14.2875 15.3886 14.3866 15.2057 14.5893Z"
17
+ fill="white"
18
+ />
19
+ </svg>
20
+ );
21
+ }
@@ -0,0 +1,36 @@
1
+ import * as React from 'react';
2
+
3
+ export function FileAiColorfulIcon(props: React.SVGProps<SVGSVGElement>) {
4
+ return (
5
+ <svg
6
+ {...props}
7
+ width="24"
8
+ height="24"
9
+ viewBox="0 0 24 24"
10
+ fill="none"
11
+ xmlns="http://www.w3.org/2000/svg"
12
+ >
13
+ <path
14
+ d="M3 3C3 1.89543 3.89543 1 5 1H14.5858C14.851 1 15.1054 1.10536 15.2929 1.29289L20.7071 6.70711C20.8946 6.89464 21 7.149 21 7.41421V21C21 22.1046 20.1046 23 19 23H5C3.89543 23 3 22.1046 3 21V3Z"
15
+ fill="#FF811A"
16
+ />
17
+ <path
18
+ opacity="0.5"
19
+ d="M15 1.48284C15 1.30466 15.2154 1.21543 15.3414 1.34142L20.6586 6.65858C20.7846 6.78457 20.6953 7 20.5172 7H17C15.8954 7 15 6.10457 15 5V1.48284Z"
20
+ fill="#C25705"
21
+ />
22
+ <path
23
+ d="M8.06095 17.9557L8.81597 15.9088H11.8727L12.6264 17.9557C12.6564 18.0371 12.7326 18.0909 12.8177 18.0909H13.6752C13.7006 18.0909 13.7257 18.0861 13.7494 18.0767C13.8545 18.0349 13.9065 17.9139 13.8656 17.8065L11.008 10.3147C10.9774 10.2346 10.9018 10.1818 10.8176 10.1818H9.88004C9.79582 10.1818 9.72022 10.2346 9.68965 10.3147L6.83205 17.8065C6.82284 17.8307 6.81812 17.8564 6.81812 17.8823C6.81812 17.9975 6.9096 18.0909 7.02244 18.0909H7.8697C7.9548 18.0909 8.03099 18.0371 8.06095 17.9557ZM11.4968 14.8182H9.19192L10.3529 11.8182L11.4968 14.8182Z"
24
+ fill="white"
25
+ />
26
+ <path
27
+ d="M15.414 12.8636C15.414 12.5875 15.6378 12.3636 15.914 12.3636H16.1412C16.4174 12.3636 16.6412 12.5875 16.6412 12.8636V13.0909C16.6412 13.3671 16.4174 13.5909 16.1412 13.5909H15.914C15.6378 13.5909 15.414 13.3671 15.414 13.0909V12.8636Z"
28
+ fill="white"
29
+ />
30
+ <path
31
+ d="M15.914 14.2727C15.6378 14.2727 15.414 14.4966 15.414 14.7727V17.5909C15.414 17.8671 15.6378 18.0909 15.914 18.0909H16.1412C16.4174 18.0909 16.6412 17.8671 16.6412 17.5909V14.7727C16.6412 14.4966 16.4174 14.2727 16.1412 14.2727H15.914Z"
32
+ fill="white"
33
+ />
34
+ </svg>
35
+ );
36
+ }
@@ -0,0 +1,33 @@
1
+ import * as React from 'react';
2
+
3
+ export function FileAndroidColorfulIcon(props: React.SVGProps<SVGSVGElement>) {
4
+ return (
5
+ <svg {...props} xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
6
+ <path
7
+ d="M3 3C3 1.89543 3.89543 1 5 1H14.5858C14.851 1 15.1054 1.10536 15.2929 1.29289L20.7071 6.70711C20.8946 6.89464 21 7.149 21 7.41421V21C21 22.1046 20.1046 23 19 23H5C3.89543 23 3 22.1046 3 21V3Z"
8
+ fill="#35BD4B"
9
+ />
10
+ <path
11
+ opacity="0.9"
12
+ d="M15 1.48284C15 1.30466 15.2154 1.21543 15.3414 1.34142L20.6586 6.65858C20.7846 6.78457 20.6953 7 20.5172 7H17C15.8954 7 15 6.10457 15 5V1.48284Z"
13
+ fill="#32A645"
14
+ />
15
+ <path
16
+ d="M13.8667 9.32705C13.7471 9.25802 13.5942 9.29899 13.5251 9.41856L13.0551 10.2328C12.7345 10.0834 12.377 9.9999 12 9.9999C11.6127 9.9999 11.246 10.088 10.9188 10.2452L10.4582 9.44737C10.3891 9.3278 10.2362 9.28683 10.1167 9.35586C9.99708 9.4249 9.95611 9.5778 10.0251 9.69737L10.4919 10.5058C9.88929 10.9623 9.5 11.6856 9.5 12.4999H14.5C14.5 11.6752 14.1007 10.9438 13.4848 10.4884L13.9582 9.66856C14.0272 9.54899 13.9862 9.39609 13.8667 9.32705ZM11.5 11.5001C11.5 11.6381 11.3881 11.7501 11.25 11.7501C11.1119 11.7501 11 11.6381 11 11.5001C11 11.362 11.1119 11.2501 11.25 11.2501C11.3881 11.2501 11.5 11.362 11.5 11.5001ZM12.75 11.7501C12.6119 11.7501 12.5 11.6381 12.5 11.5001C12.5 11.362 12.6119 11.2501 12.75 11.2501C12.8881 11.2501 13 11.362 13 11.5001C13 11.6381 12.8881 11.7501 12.75 11.7501Z"
17
+ fill="white"
18
+ />
19
+ <path
20
+ d="M14.5 15.9999V12.9999H9.5V15.9999C9.5 16.7402 9.9022 17.3865 10.5 17.7323V18.9999C10.5 19.276 10.7239 19.4999 11 19.4999C11.2761 19.4999 11.5 19.276 11.5 18.9999V17.9999H12.5V18.9999C12.5 19.276 12.7239 19.4999 13 19.4999C13.2761 19.4999 13.5 19.276 13.5 18.9999V17.7323C14.0978 17.3865 14.5 16.7402 14.5 15.9999Z"
21
+ fill="white"
22
+ />
23
+ <path
24
+ d="M15.5 12.9999C15.2239 12.9999 15 13.2238 15 13.4999V14.9999C15 15.276 15.2239 15.4999 15.5 15.4999C15.7761 15.4999 16 15.276 16 14.9999V13.4999C16 13.2238 15.7761 12.9999 15.5 12.9999Z"
25
+ fill="white"
26
+ />
27
+ <path
28
+ d="M8.5 12.9999C8.22386 12.9999 8 13.2238 8 13.4999V14.9999C8 15.276 8.22386 15.4999 8.5 15.4999C8.77614 15.4999 9 15.276 9 14.9999V13.4999C9 13.2238 8.77614 12.9999 8.5 12.9999Z"
29
+ fill="white"
30
+ />
31
+ </svg>
32
+ );
33
+ }
@@ -0,0 +1,21 @@
1
+ import * as React from 'react';
2
+
3
+ export function FileAudioColorfulIcon(props: React.SVGProps<SVGSVGElement>) {
4
+ return (
5
+ <svg {...props} xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
6
+ <path
7
+ d="M3 3C3 1.89543 3.89543 1 5 1H14.5858C14.851 1 15.1054 1.10536 15.2929 1.29289L20.7071 6.70711C20.8946 6.89464 21 7.149 21 7.41421V21C21 22.1046 20.1046 23 19 23H5C3.89543 23 3 22.1046 3 21V3Z"
8
+ fill="#35BD4B"
9
+ />
10
+ <path
11
+ opacity="0.9"
12
+ d="M15 1.48284C15 1.30466 15.2154 1.21543 15.3414 1.34142L20.6586 6.65858C20.7846 6.78457 20.6953 7 20.5172 7H17C15.8954 7 15 6.10457 15 5V1.48284Z"
13
+ fill="#32A645"
14
+ />
15
+ <path
16
+ d="M14.9814 9.65967C15.1899 9.70858 15.344 9.88482 15.3648 10.0979L15.4574 11.0474C15.4903 11.3855 15.1838 11.6573 14.8521 11.5842L12.5502 11.0769C12.4177 11.0477 12.2952 11.1562 12.3081 11.2912L12.8466 16.9414C12.8466 17.0285 12.8357 17.086 12.8162 17.1188C12.7684 18.2815 11.8107 19.2094 10.6363 19.2094C9.4313 19.2094 8.45447 18.2326 8.45447 17.0276C8.45447 15.8226 9.4313 14.8458 10.6363 14.8458C11.1344 14.8458 11.5935 15.0127 11.9608 15.2936L11.4549 9.50628C11.4252 9.16716 11.7358 8.89821 12.0672 8.97596L14.9814 9.65967Z"
17
+ fill="white"
18
+ />
19
+ </svg>
20
+ );
21
+ }
@@ -0,0 +1,28 @@
1
+ import * as React from 'react';
2
+
3
+ export function FileCodeColorfulIcon(props: React.SVGProps<SVGSVGElement>) {
4
+ return (
5
+ <svg
6
+ {...props}
7
+ width="24"
8
+ height="24"
9
+ viewBox="0 0 24 24"
10
+ fill="none"
11
+ xmlns="http://www.w3.org/2000/svg"
12
+ >
13
+ <path
14
+ d="M3 3C3 1.89543 3.89543 1 5 1H14.5858C14.851 1 15.1054 1.10536 15.2929 1.29289L20.7071 6.70711C20.8946 6.89464 21 7.149 21 7.41421V21C21 22.1046 20.1046 23 19 23H5C3.89543 23 3 22.1046 3 21V3Z"
15
+ fill="#336DF4"
16
+ />
17
+ <path
18
+ opacity="0.7"
19
+ d="M15 1.48284C15 1.30466 15.2154 1.21543 15.3414 1.34142L20.6586 6.65858C20.7846 6.78457 20.6953 7 20.5172 7H17C15.8954 7 15 6.10457 15 5V1.48284Z"
20
+ fill="#0442D2"
21
+ />
22
+ <path
23
+ d="M10.2966 11.4764L7.76958 14.1363L10.2966 16.7961C10.3873 16.8916 10.3873 17.0447 10.293 17.1381L10.292 17.1391L9.95252 17.4774C9.8597 17.5698 9.7118 17.5677 9.62149 17.4727L6.61239 14.3054C6.52308 14.2114 6.52308 14.0611 6.61239 13.9671L9.62149 10.7999C9.7118 10.7048 9.8597 10.7027 9.95252 10.7952L10.292 11.1335C10.3852 11.2263 10.3877 11.3794 10.2976 11.4754L10.2966 11.4764ZM16.3178 14.1363L13.9712 11.4764C13.887 11.381 13.8885 11.2278 13.9746 11.1344L13.9755 11.1335L14.2908 10.7952C14.3769 10.7027 14.5143 10.7048 14.5981 10.7999L17.3923 13.9671C17.4752 14.0611 17.4752 14.2114 17.3923 14.3054L14.5981 17.4727C14.5143 17.5677 14.3769 17.5698 14.2908 17.4774L13.9755 17.1391C13.8889 17.0462 13.8866 16.8931 13.9704 16.7971L13.9712 16.7961L16.3178 14.1363ZM12.6285 9.09234L13.1203 9.14509C13.2546 9.15949 13.3509 9.27213 13.3353 9.39669L12.1614 18.7083C12.1457 18.8327 12.0244 18.9219 11.8902 18.9075L11.3984 18.8547C11.2642 18.8403 11.1679 18.7277 11.1834 18.6031L12.3574 9.2915C12.373 9.16708 12.4944 9.07796 12.6285 9.09234Z"
24
+ fill="white"
25
+ />
26
+ </svg>
27
+ );
28
+ }
@@ -0,0 +1,21 @@
1
+ import * as React from 'react';
2
+
3
+ export function FileCsvColorfulIcon(props: React.SVGProps<SVGSVGElement>) {
4
+ return (
5
+ <svg {...props} xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
6
+ <path
7
+ d="M3 3C3 1.89543 3.89543 1 5 1H14.5858C14.851 1 15.1054 1.10536 15.2929 1.29289L20.7071 6.70711C20.8946 6.89464 21 7.149 21 7.41421V21C21 22.1046 20.1046 23 19 23H5C3.89543 23 3 22.1046 3 21V3Z"
8
+ fill="#35BD4B"
9
+ />
10
+ <path
11
+ opacity="0.9"
12
+ d="M15 1.48284C15 1.30466 15.2154 1.21543 15.3414 1.34142L20.6586 6.65858C20.7846 6.78457 20.6953 7 20.5172 7H17C15.8954 7 15 6.10457 15 5V1.48284Z"
13
+ fill="#32A645"
14
+ />
15
+ <path
16
+ d="M12.0767 10.4528C12.979 10.4528 13.7203 10.7465 14.3004 11.2514C14.5824 11.4947 14.8268 11.9192 14.9997 12.2801C15.148 12.5897 14.9123 12.9264 14.5689 12.9264H14.3771C14.1969 12.9264 14.0312 12.8291 13.9315 12.6789C13.7922 12.4691 13.5771 12.1789 13.3658 12.0284C13.022 11.776 12.5816 11.6429 12.0445 11.6429C11.2388 11.6429 10.6372 11.9481 10.229 12.5447C9.85304 13.0725 9.62122 13.7974 9.62122 14.7383C9.62122 15.7021 9.85304 16.4573 10.2183 16.9736C10.6157 17.5243 11.2388 17.8604 12.0767 17.8604C12.6246 17.8604 13.0757 17.662 13.4195 17.3867C13.6332 17.2054 13.8249 16.8625 13.9471 16.6093C14.037 16.4231 14.222 16.2954 14.4288 16.2954H14.6528C14.9804 16.2954 15.2147 16.6043 15.0974 16.9101C14.9283 17.3505 14.6578 17.9181 14.3004 18.226C13.6615 18.7765 13.153 18.9947 12.0767 19.0237C10.8407 19.057 9.85304 18.557 9.22999 17.7079C8.68213 16.9736 8.41357 15.9869 8.41357 14.7477C8.41357 13.5315 8.69287 12.5333 9.26222 11.776C9.90675 10.904 10.8521 10.4528 12.0767 10.4528Z"
17
+ fill="white"
18
+ />
19
+ </svg>
20
+ );
21
+ }
@@ -0,0 +1,29 @@
1
+ import * as React from 'react';
2
+
3
+ export function FileEmlColorfulIcon(props: React.SVGProps<SVGSVGElement>) {
4
+ return (
5
+ <svg {...props} xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
6
+ <path
7
+ d="M3 3C3 1.89543 3.89543 1 5 1H14.5858C14.851 1 15.1054 1.10536 15.2929 1.29289L20.7071 6.70711C20.8946 6.89464 21 7.149 21 7.41421V21C21 22.1046 20.1046 23 19 23H5C3.89543 23 3 22.1046 3 21V3Z"
8
+ fill="#336DF4"
9
+ />
10
+ <path
11
+ opacity="0.7"
12
+ d="M15 1.48284C15 1.30466 15.2154 1.21543 15.3414 1.34142L20.6586 6.65858C20.7846 6.78457 20.6953 7 20.5172 7H17C15.8954 7 15 6.10457 15 5V1.48284Z"
13
+ fill="#0442D2"
14
+ />
15
+ <path
16
+ d="M13.7358 16.9998L13.7358 13.0029L12.778 15.0234C12.5612 15.4807 11.9105 15.4807 11.6937 15.0234L10.7358 13.0029L10.7358 16.9998C10.7358 17.276 10.512 17.4998 10.2358 17.4998C9.9597 17.4998 9.73584 17.276 9.73584 16.9998L9.73584 11.6698C9.73584 10.9231 10.7485 10.6952 11.0684 11.3699L12.2358 13.8326L13.4033 11.3699C13.7232 10.6952 14.7358 10.9231 14.7358 11.6697L14.7358 16.9998C14.7358 17.276 14.512 17.4998 14.2358 17.4998C13.9597 17.4998 13.7358 17.276 13.7358 16.9998Z"
17
+ fill="white"
18
+ />
19
+ <path
20
+ d="M6.6 10.9998C5.99249 10.9998 5.5 11.4922 5.5 12.0998V16.3998C5.5 17.0073 5.99249 17.4998 6.6 17.4998H8.5C8.77614 17.4998 9 17.2759 9 16.9998C9 16.7236 8.77614 16.4998 8.5 16.4998H6.6C6.54477 16.4998 6.5 16.455 6.5 16.3998V14.7961H8.5C8.77614 14.7961 9 14.5723 9 14.2961C9 14.02 8.77614 13.7961 8.5 13.7961H6.5V12.0998C6.5 12.0445 6.54477 11.9998 6.6 11.9998H8.5C8.77614 11.9998 9 11.7759 9 11.4998C9 11.2236 8.77614 10.9998 8.5 10.9998H6.6Z"
21
+ fill="white"
22
+ />
23
+ <path
24
+ d="M16 10.9998C16.2761 10.9998 16.5 11.2236 16.5 11.4998V16.4998H18.5C18.7761 16.4998 19 16.7236 19 16.9998C19 17.2759 18.7761 17.4998 18.5 17.4998H16.5C15.9477 17.4998 15.5 17.052 15.5 16.4998V11.4998C15.5 11.2236 15.7239 10.9998 16 10.9998Z"
25
+ fill="white"
26
+ />
27
+ </svg>
28
+ );
29
+ }