@shadow-js/ui 0.0.0-stage → 1.0.0

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 (190) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/LICENSE +21 -0
  3. package/README.md +598 -2
  4. package/dist/cli.mjs +2293 -0
  5. package/dist/dev/cli/schema.d.ts +73 -0
  6. package/dist/dev/index.d.ts +6 -0
  7. package/dist/dev/index.js +5 -0
  8. package/dist/dev/locales/ar.d.ts +141 -0
  9. package/dist/dev/locales/ar.js +128 -0
  10. package/dist/dev/locales/ar.js.map +1 -0
  11. package/dist/dev/locales/en.d.ts +141 -0
  12. package/dist/dev/locales/en.js +128 -0
  13. package/dist/dev/locales/en.js.map +1 -0
  14. package/dist/dev/registry/utils/utils.d.ts +29 -0
  15. package/dist/dev/registry/utils/utils.js +27 -0
  16. package/dist/dev/registry/utils/utils.js.map +1 -0
  17. package/dist/dev/theme/theme-logic.d.ts +187 -0
  18. package/dist/dev/theme/theme-logic.js +184 -0
  19. package/dist/dev/theme/theme-logic.js.map +1 -0
  20. package/dist/dev/theme/theme-provider.d.ts +90 -0
  21. package/dist/dev/theme/theme-provider.js +150 -0
  22. package/dist/dev/theme/theme-provider.js.map +1 -0
  23. package/dist/prod/index.js +1 -0
  24. package/dist/prod/locales/ar.js +2 -0
  25. package/dist/prod/locales/ar.js.map +1 -0
  26. package/dist/prod/locales/en.js +2 -0
  27. package/dist/prod/locales/en.js.map +1 -0
  28. package/dist/prod/registry/utils/utils.js +2 -0
  29. package/dist/prod/registry/utils/utils.js.map +1 -0
  30. package/dist/prod/theme/theme-logic.js +2 -0
  31. package/dist/prod/theme/theme-logic.js.map +1 -0
  32. package/dist/prod/theme/theme-provider.js +2 -0
  33. package/dist/prod/theme/theme-provider.js.map +1 -0
  34. package/package.json +102 -4
  35. package/registry/accordion/accordion.tsx +210 -0
  36. package/registry/accordion/item.json +4 -0
  37. package/registry/alert/alert.tsx +200 -0
  38. package/registry/alert/item.json +4 -0
  39. package/registry/alert-dialog/alert-dialog.tsx +530 -0
  40. package/registry/alert-dialog/item.json +4 -0
  41. package/registry/aspect-ratio/aspect-ratio.tsx +71 -0
  42. package/registry/aspect-ratio/item.json +4 -0
  43. package/registry/attachment/attachment.tsx +459 -0
  44. package/registry/attachment/item.json +4 -0
  45. package/registry/avatar/avatar.tsx +385 -0
  46. package/registry/avatar/item.json +4 -0
  47. package/registry/badge/badge.tsx +108 -0
  48. package/registry/badge/item.json +4 -0
  49. package/registry/breadcrumb/breadcrumb.tsx +354 -0
  50. package/registry/breadcrumb/item.json +4 -0
  51. package/registry/bubble/bubble.tsx +260 -0
  52. package/registry/bubble/item.json +4 -0
  53. package/registry/button/button.tsx +125 -0
  54. package/registry/button/item.json +4 -0
  55. package/registry/button-group/button-group.tsx +189 -0
  56. package/registry/button-group/item.json +4 -0
  57. package/registry/calendar/calendar.tsx +348 -0
  58. package/registry/calendar/item.json +4 -0
  59. package/registry/card/card.tsx +311 -0
  60. package/registry/card/item.json +4 -0
  61. package/registry/carousel/carousel.tsx +851 -0
  62. package/registry/carousel/item.json +4 -0
  63. package/registry/chart/chart.tsx +1956 -0
  64. package/registry/chart/item.json +4 -0
  65. package/registry/chart-scale/chart-scale.ts +670 -0
  66. package/registry/chart-scale/item.json +5 -0
  67. package/registry/checkbox/checkbox.tsx +79 -0
  68. package/registry/checkbox/item.json +4 -0
  69. package/registry/code-block/code-block.tsx +470 -0
  70. package/registry/code-block/item.json +4 -0
  71. package/registry/collapsible/collapsible.tsx +117 -0
  72. package/registry/collapsible/item.json +4 -0
  73. package/registry/combobox/combobox.tsx +977 -0
  74. package/registry/combobox/item.json +4 -0
  75. package/registry/command/command.tsx +757 -0
  76. package/registry/command/item.json +4 -0
  77. package/registry/context-menu/context-menu.tsx +697 -0
  78. package/registry/context-menu/item.json +4 -0
  79. package/registry/data-table/data-table.tsx +437 -0
  80. package/registry/data-table/item.json +4 -0
  81. package/registry/date-picker/date-picker.tsx +349 -0
  82. package/registry/date-picker/item.json +4 -0
  83. package/registry/dialog/dialog.tsx +412 -0
  84. package/registry/dialog/item.json +4 -0
  85. package/registry/direction/direction.tsx +88 -0
  86. package/registry/direction/item.json +4 -0
  87. package/registry/drawer/drawer.tsx +787 -0
  88. package/registry/drawer/item.json +4 -0
  89. package/registry/dropdown-menu/dropdown-menu.tsx +692 -0
  90. package/registry/dropdown-menu/item.json +4 -0
  91. package/registry/empty/empty.tsx +240 -0
  92. package/registry/empty/item.json +4 -0
  93. package/registry/field/field.tsx +624 -0
  94. package/registry/field/item.json +4 -0
  95. package/registry/form/form.tsx +1112 -0
  96. package/registry/form/item.json +4 -0
  97. package/registry/hover-card/hover-card.tsx +144 -0
  98. package/registry/hover-card/item.json +4 -0
  99. package/registry/icons/icons.tsx +1691 -0
  100. package/registry/icons/item.json +4 -0
  101. package/registry/input/input.tsx +43 -0
  102. package/registry/input/item.json +4 -0
  103. package/registry/input-group/input-group.tsx +315 -0
  104. package/registry/input-group/item.json +4 -0
  105. package/registry/input-otp/input-otp.tsx +329 -0
  106. package/registry/input-otp/item.json +4 -0
  107. package/registry/item/item.json +4 -0
  108. package/registry/item/item.tsx +439 -0
  109. package/registry/kbd/item.json +4 -0
  110. package/registry/kbd/kbd.tsx +65 -0
  111. package/registry/label/item.json +4 -0
  112. package/registry/label/label.tsx +60 -0
  113. package/registry/marker/item.json +4 -0
  114. package/registry/marker/marker.tsx +175 -0
  115. package/registry/menubar/item.json +4 -0
  116. package/registry/menubar/menubar.tsx +694 -0
  117. package/registry/message/item.json +4 -0
  118. package/registry/message/message.tsx +280 -0
  119. package/registry/message-scroller/item.json +4 -0
  120. package/registry/message-scroller/message-scroller.tsx +262 -0
  121. package/registry/native-select/item.json +4 -0
  122. package/registry/native-select/native-select.tsx +113 -0
  123. package/registry/navigation-menu/item.json +4 -0
  124. package/registry/navigation-menu/navigation-menu.tsx +362 -0
  125. package/registry/pagination/item.json +4 -0
  126. package/registry/pagination/pagination.tsx +460 -0
  127. package/registry/password-input/item.json +5 -0
  128. package/registry/password-input/password-input.tsx +494 -0
  129. package/registry/popover/item.json +4 -0
  130. package/registry/popover/popover.tsx +284 -0
  131. package/registry/progress/item.json +4 -0
  132. package/registry/progress/progress.tsx +190 -0
  133. package/registry/questionnaire/item.json +4 -0
  134. package/registry/questionnaire/questionnaire.tsx +569 -0
  135. package/registry/radio-group/item.json +4 -0
  136. package/registry/radio-group/radio-group.tsx +101 -0
  137. package/registry/resizable/item.json +4 -0
  138. package/registry/resizable/resizable.tsx +455 -0
  139. package/registry/scroll-area/item.json +4 -0
  140. package/registry/scroll-area/scroll-area.tsx +149 -0
  141. package/registry/select/item.json +4 -0
  142. package/registry/select/select.tsx +571 -0
  143. package/registry/separator/item.json +4 -0
  144. package/registry/separator/separator.tsx +52 -0
  145. package/registry/sheet/item.json +4 -0
  146. package/registry/sheet/sheet.tsx +476 -0
  147. package/registry/sidebar/item.json +4 -0
  148. package/registry/sidebar/sidebar.tsx +1870 -0
  149. package/registry/skeleton/item.json +4 -0
  150. package/registry/skeleton/skeleton.tsx +47 -0
  151. package/registry/slider/item.json +4 -0
  152. package/registry/slider/slider.tsx +149 -0
  153. package/registry/spinner/item.json +4 -0
  154. package/registry/spinner/spinner.tsx +51 -0
  155. package/registry/switch/item.json +4 -0
  156. package/registry/switch/switch.tsx +93 -0
  157. package/registry/table/item.json +4 -0
  158. package/registry/table/table.tsx +373 -0
  159. package/registry/tabs/item.json +4 -0
  160. package/registry/tabs/tabs.tsx +209 -0
  161. package/registry/textarea/item.json +4 -0
  162. package/registry/textarea/textarea.tsx +51 -0
  163. package/registry/toast/item.json +4 -0
  164. package/registry/toast/toast.tsx +949 -0
  165. package/registry/toggle/item.json +4 -0
  166. package/registry/toggle/toggle.tsx +110 -0
  167. package/registry/toggle-group/item.json +4 -0
  168. package/registry/toggle-group/toggle-group.tsx +189 -0
  169. package/registry/tooltip/item.json +4 -0
  170. package/registry/tooltip/tooltip.tsx +169 -0
  171. package/registry/trace/item.json +4 -0
  172. package/registry/trace/trace.tsx +356 -0
  173. package/registry/ui-strings/item.json +5 -0
  174. package/registry/ui-strings/ui-strings.tsx +454 -0
  175. package/registry/use-highlighted-code/item.json +5 -0
  176. package/registry/use-highlighted-code/use-highlighted-code.tsx +145 -0
  177. package/registry/use-mobile/item.json +5 -0
  178. package/registry/use-mobile/use-mobile.ts +46 -0
  179. package/registry/utils/item.json +5 -0
  180. package/registry/utils/utils.ts +38 -0
  181. package/registry.json +3274 -0
  182. package/styles/animations.css +321 -0
  183. package/styles/theme-core.css +55 -0
  184. package/styles/theme.css +12 -0
  185. package/styles/themes/gray.css +69 -0
  186. package/styles/themes/neutral.css +69 -0
  187. package/styles/themes/slate.css +69 -0
  188. package/styles/themes/stone.css +69 -0
  189. package/styles/themes/zinc.css +69 -0
  190. package/styles/typeset.css +251 -0
@@ -0,0 +1,1691 @@
1
+ /*
2
+ * The icons the components use, as inline SVG (24x24, stroke 2). The shapes follow the Lucide set
3
+ * (ISC license, https://lucide.dev). Swap in any icon library by editing the imports of the
4
+ * components that use these.
5
+ */
6
+ import { splitProps } from "@shadow-js/core";
7
+ import type { ComponentProps, JSX } from "@shadow-js/web";
8
+ import { cn } from "@/lib/utils";
9
+
10
+ /**
11
+ * Props of every icon: the attributes of an `<svg>`.
12
+ *
13
+ * Every icon renders at `size-4` by default. Pass `class` to change the size or color; the classes
14
+ * are merged with `cn`, so your utilities win over the defaults. Icons are decorative and carry
15
+ * `aria-hidden="true"`. When an icon carries meaning on its own, pass `aria-hidden="false"` and an
16
+ * `aria-label`.
17
+ * @since 1.0.0
18
+ * @see {@link CheckIcon}
19
+ * @see {@link XIcon}
20
+ */
21
+ export type IconProps = ComponentProps<"svg">;
22
+
23
+ /** The shared `<svg>` frame. */
24
+ function Icon(props: IconProps): JSX.Element {
25
+ const [local, rest] = splitProps(props, ["class", "children"]);
26
+ return (
27
+ <svg
28
+ xmlns="http://www.w3.org/2000/svg"
29
+ width="24"
30
+ height="24"
31
+ viewBox="0 0 24 24"
32
+ fill="none"
33
+ stroke="currentColor"
34
+ stroke-width="2"
35
+ stroke-linecap="round"
36
+ stroke-linejoin="round"
37
+ aria-hidden="true"
38
+ class={cn("size-4", local.class)}
39
+ {...rest}
40
+ >
41
+ {local.children}
42
+ </svg>
43
+ );
44
+ }
45
+
46
+ /**
47
+ * A check mark. Use it for a selected item or a completed step.
48
+ * @param props - The `<svg>` attributes; see {@link IconProps}.
49
+ * @returns The icon element.
50
+ * @example
51
+ * ```tsx
52
+ * import { CheckIcon } from "@/components/ui/icons";
53
+ *
54
+ * export const Selected = <CheckIcon class="size-4 text-primary" />;
55
+ * ```
56
+ * @since 1.0.0
57
+ * @see {@link IconProps}
58
+ */
59
+ function CheckIcon(props: IconProps): JSX.Element {
60
+ return (
61
+ <Icon {...props}>
62
+ <path d="M20 6 9 17l-5-5" />
63
+ </Icon>
64
+ );
65
+ }
66
+
67
+ /**
68
+ * A minus sign. Use it for the indeterminate state of a checkbox.
69
+ * @param props - The `<svg>` attributes; see {@link IconProps}.
70
+ * @returns The icon element.
71
+ * @example
72
+ * ```tsx
73
+ * import { MinusIcon } from "@/components/ui/icons";
74
+ *
75
+ * export const Partial = <MinusIcon class="size-4" />;
76
+ * ```
77
+ * @since 1.0.0
78
+ * @see {@link IconProps}
79
+ */
80
+ function MinusIcon(props: IconProps): JSX.Element {
81
+ return (
82
+ <Icon {...props}>
83
+ <path d="M5 12h14" />
84
+ </Icon>
85
+ );
86
+ }
87
+
88
+ /**
89
+ * A ring that is filled with `fill-current` (or `fill-primary`). Radio buttons and menu radio items
90
+ * use it as the selected mark.
91
+ * @param props - The `<svg>` attributes; see {@link IconProps}.
92
+ * @returns The icon element.
93
+ * @example
94
+ * ```tsx
95
+ * import { CircleIcon } from "@/components/ui/icons";
96
+ *
97
+ * export const Option = <CircleIcon class="size-2 fill-current" />;
98
+ * ```
99
+ * @since 1.0.0
100
+ * @see {@link IconProps}
101
+ */
102
+ function CircleIcon(props: IconProps): JSX.Element {
103
+ return (
104
+ <Icon {...props}>
105
+ <circle cx="12" cy="12" r="10" />
106
+ </Icon>
107
+ );
108
+ }
109
+
110
+ /**
111
+ * A cross. Use it for closing a panel or clearing a value.
112
+ * @param props - The `<svg>` attributes; see {@link IconProps}.
113
+ * @returns The icon element.
114
+ * @example
115
+ * ```tsx
116
+ * import { XIcon } from "@/components/ui/icons";
117
+ *
118
+ * export const Close = <XIcon class="size-4" aria-hidden="false" aria-label="Close" />;
119
+ * ```
120
+ * @since 1.0.0
121
+ * @see {@link IconProps}
122
+ */
123
+ function XIcon(props: IconProps): JSX.Element {
124
+ return (
125
+ <Icon {...props}>
126
+ <path d="M18 6 6 18" />
127
+ <path d="m6 6 12 12" />
128
+ </Icon>
129
+ );
130
+ }
131
+
132
+ /**
133
+ * A chevron pointing down. Use it in select and disclosure triggers.
134
+ * @param props - The `<svg>` attributes; see {@link IconProps}.
135
+ * @returns The icon element.
136
+ * @example
137
+ * ```tsx
138
+ * import { ChevronDownIcon } from "@/components/ui/icons";
139
+ *
140
+ * export const Caret = <ChevronDownIcon class="size-4 opacity-50" />;
141
+ * ```
142
+ * @since 1.0.0
143
+ * @see {@link IconProps}
144
+ */
145
+ function ChevronDownIcon(props: IconProps): JSX.Element {
146
+ return (
147
+ <Icon {...props}>
148
+ <path d="m6 9 6 6 6-6" />
149
+ </Icon>
150
+ );
151
+ }
152
+
153
+ /**
154
+ * A chevron pointing up. Use it in disclosure triggers that open upward.
155
+ * @param props - The `<svg>` attributes; see {@link IconProps}.
156
+ * @returns The icon element.
157
+ * @example
158
+ * ```tsx
159
+ * import { ChevronUpIcon } from "@/components/ui/icons";
160
+ *
161
+ * export const Collapse = <ChevronUpIcon class="size-4" />;
162
+ * ```
163
+ * @since 1.0.0
164
+ * @see {@link IconProps}
165
+ */
166
+ function ChevronUpIcon(props: IconProps): JSX.Element {
167
+ return (
168
+ <Icon {...props}>
169
+ <path d="m18 15-6-6-6 6" />
170
+ </Icon>
171
+ );
172
+ }
173
+
174
+ /**
175
+ * A chevron pointing right. Use it for a submenu or a next step. Pass `class="rtl:rotate-180"` to
176
+ * flip it in right-to-left layouts.
177
+ * @param props - The `<svg>` attributes; see {@link IconProps}.
178
+ * @returns The icon element.
179
+ * @example
180
+ * ```tsx
181
+ * import { ChevronRightIcon } from "@/components/ui/icons";
182
+ *
183
+ * export const Submenu = <ChevronRightIcon class="ms-auto size-4 rtl:rotate-180" />;
184
+ * ```
185
+ * @since 1.0.0
186
+ * @see {@link IconProps}
187
+ */
188
+ function ChevronRightIcon(props: IconProps): JSX.Element {
189
+ return (
190
+ <Icon {...props}>
191
+ <path d="m9 18 6-6-6-6" />
192
+ </Icon>
193
+ );
194
+ }
195
+
196
+ /**
197
+ * A chevron pointing left. Use it for a previous step. Pass `class="rtl:rotate-180"` to flip it in
198
+ * right-to-left layouts.
199
+ * @param props - The `<svg>` attributes; see {@link IconProps}.
200
+ * @returns The icon element.
201
+ * @example
202
+ * ```tsx
203
+ * import { ChevronLeftIcon } from "@/components/ui/icons";
204
+ *
205
+ * export const Previous = <ChevronLeftIcon class="size-4 rtl:rotate-180" />;
206
+ * ```
207
+ * @since 1.0.0
208
+ * @see {@link IconProps}
209
+ */
210
+ function ChevronLeftIcon(props: IconProps): JSX.Element {
211
+ return (
212
+ <Icon {...props}>
213
+ <path d="m15 18-6-6 6-6" />
214
+ </Icon>
215
+ );
216
+ }
217
+
218
+ /**
219
+ * Up and down chevrons. Use it for the trigger of a select or combobox.
220
+ * @param props - The `<svg>` attributes; see {@link IconProps}.
221
+ * @returns The icon element.
222
+ * @example
223
+ * ```tsx
224
+ * import { ChevronsUpDownIcon } from "@/components/ui/icons";
225
+ *
226
+ * export const SelectCaret = <ChevronsUpDownIcon class="size-4 opacity-50" />;
227
+ * ```
228
+ * @since 1.0.0
229
+ * @see {@link IconProps}
230
+ */
231
+ function ChevronsUpDownIcon(props: IconProps): JSX.Element {
232
+ return (
233
+ <Icon {...props}>
234
+ <path d="m7 15 5 5 5-5" />
235
+ <path d="m7 9 5-5 5 5" />
236
+ </Icon>
237
+ );
238
+ }
239
+
240
+ /**
241
+ * Three horizontal dots. Use it for a "more actions" button or an overflow marker.
242
+ * @param props - The `<svg>` attributes; see {@link IconProps}.
243
+ * @returns The icon element.
244
+ * @example
245
+ * ```tsx
246
+ * import { EllipsisIcon } from "@/components/ui/icons";
247
+ *
248
+ * export const More = <EllipsisIcon class="size-4" />;
249
+ * ```
250
+ * @since 1.0.0
251
+ * @see {@link IconProps}
252
+ */
253
+ function EllipsisIcon(props: IconProps): JSX.Element {
254
+ return (
255
+ <Icon {...props}>
256
+ <circle cx="12" cy="12" r="1" />
257
+ <circle cx="19" cy="12" r="1" />
258
+ <circle cx="5" cy="12" r="1" />
259
+ </Icon>
260
+ );
261
+ }
262
+
263
+ /**
264
+ * A magnifying glass. Use it on search fields and search buttons.
265
+ * @param props - The `<svg>` attributes; see {@link IconProps}.
266
+ * @returns The icon element.
267
+ * @example
268
+ * ```tsx
269
+ * import { SearchIcon } from "@/components/ui/icons";
270
+ *
271
+ * export const SearchMark = <SearchIcon class="size-4 text-muted-foreground" />;
272
+ * ```
273
+ * @since 1.0.0
274
+ * @see {@link IconProps}
275
+ */
276
+ function SearchIcon(props: IconProps): JSX.Element {
277
+ return (
278
+ <Icon {...props}>
279
+ <circle cx="11" cy="11" r="8" />
280
+ <path d="m21 21-4.3-4.3" />
281
+ </Icon>
282
+ );
283
+ }
284
+
285
+ /**
286
+ * A window with a sidebar column. Use it on a button that shows or hides a sidebar.
287
+ * @param props - The `<svg>` attributes; see {@link IconProps}.
288
+ * @returns The icon element.
289
+ * @example
290
+ * ```tsx
291
+ * import { PanelLeftIcon } from "@/components/ui/icons";
292
+ *
293
+ * export const SidebarToggle = <PanelLeftIcon class="size-4 rtl:rotate-180" />;
294
+ * ```
295
+ * @since 1.0.0
296
+ * @see {@link IconProps}
297
+ */
298
+ function PanelLeftIcon(props: IconProps): JSX.Element {
299
+ return (
300
+ <Icon {...props}>
301
+ <rect width="18" height="18" x="3" y="3" rx="2" />
302
+ <path d="M9 3v18" />
303
+ </Icon>
304
+ );
305
+ }
306
+
307
+ /**
308
+ * Six dots in two columns. Use it as the drag handle of a resizable panel or a sortable item.
309
+ * @param props - The `<svg>` attributes; see {@link IconProps}.
310
+ * @returns The icon element.
311
+ * @example
312
+ * ```tsx
313
+ * import { GripVerticalIcon } from "@/components/ui/icons";
314
+ *
315
+ * export const DragHandle = <GripVerticalIcon class="size-4 text-muted-foreground" />;
316
+ * ```
317
+ * @since 1.0.0
318
+ * @see {@link IconProps}
319
+ */
320
+ function GripVerticalIcon(props: IconProps): JSX.Element {
321
+ return (
322
+ <Icon {...props}>
323
+ <circle cx="9" cy="12" r="1" />
324
+ <circle cx="9" cy="5" r="1" />
325
+ <circle cx="9" cy="19" r="1" />
326
+ <circle cx="15" cy="12" r="1" />
327
+ <circle cx="15" cy="5" r="1" />
328
+ <circle cx="15" cy="19" r="1" />
329
+ </Icon>
330
+ );
331
+ }
332
+
333
+ /**
334
+ * A spinner arc. Add `animate-spin` to the class to turn it while work is in progress.
335
+ * @param props - The `<svg>` attributes; see {@link IconProps}.
336
+ * @returns The icon element.
337
+ * @example
338
+ * ```tsx
339
+ * import { LoaderIcon } from "@/components/ui/icons";
340
+ *
341
+ * export const Loading = <LoaderIcon class="size-4 animate-spin" />;
342
+ * ```
343
+ * @since 1.0.0
344
+ * @see {@link IconProps}
345
+ */
346
+ function LoaderIcon(props: IconProps): JSX.Element {
347
+ return (
348
+ <Icon {...props}>
349
+ <path d="M21 12a9 9 0 1 1-6.219-8.56" />
350
+ </Icon>
351
+ );
352
+ }
353
+
354
+ /**
355
+ * A circled "i". Use it for an informational notice.
356
+ * @param props - The `<svg>` attributes; see {@link IconProps}.
357
+ * @returns The icon element.
358
+ * @example
359
+ * ```tsx
360
+ * import { InfoIcon } from "@/components/ui/icons";
361
+ *
362
+ * export const Info = <InfoIcon class="size-4" />;
363
+ * ```
364
+ * @since 1.0.0
365
+ * @see {@link IconProps}
366
+ */
367
+ function InfoIcon(props: IconProps): JSX.Element {
368
+ return (
369
+ <Icon {...props}>
370
+ <circle cx="12" cy="12" r="10" />
371
+ <path d="M12 16v-4" />
372
+ <path d="M12 8h.01" />
373
+ </Icon>
374
+ );
375
+ }
376
+
377
+ /**
378
+ * A circled check mark. Use it for a success notice.
379
+ * @param props - The `<svg>` attributes; see {@link IconProps}.
380
+ * @returns The icon element.
381
+ * @example
382
+ * ```tsx
383
+ * import { CircleCheckIcon } from "@/components/ui/icons";
384
+ *
385
+ * export const Success = <CircleCheckIcon class="size-4 text-green-600" />;
386
+ * ```
387
+ * @since 1.0.0
388
+ * @see {@link IconProps}
389
+ */
390
+ function CircleCheckIcon(props: IconProps): JSX.Element {
391
+ return (
392
+ <Icon {...props}>
393
+ <circle cx="12" cy="12" r="10" />
394
+ <path d="m9 12 2 2 4-4" />
395
+ </Icon>
396
+ );
397
+ }
398
+
399
+ /**
400
+ * A circled cross. Use it for an error notice.
401
+ * @param props - The `<svg>` attributes; see {@link IconProps}.
402
+ * @returns The icon element.
403
+ * @example
404
+ * ```tsx
405
+ * import { CircleXIcon } from "@/components/ui/icons";
406
+ *
407
+ * export const Failure = <CircleXIcon class="size-4 text-destructive" />;
408
+ * ```
409
+ * @since 1.0.0
410
+ * @see {@link IconProps}
411
+ */
412
+ function CircleXIcon(props: IconProps): JSX.Element {
413
+ return (
414
+ <Icon {...props}>
415
+ <circle cx="12" cy="12" r="10" />
416
+ <path d="m15 9-6 6" />
417
+ <path d="m9 9 6 6" />
418
+ </Icon>
419
+ );
420
+ }
421
+
422
+ /**
423
+ * A warning triangle. Use it for a warning notice.
424
+ * @param props - The `<svg>` attributes; see {@link IconProps}.
425
+ * @returns The icon element.
426
+ * @example
427
+ * ```tsx
428
+ * import { TriangleAlertIcon } from "@/components/ui/icons";
429
+ *
430
+ * export const Warning = <TriangleAlertIcon class="size-4" />;
431
+ * ```
432
+ * @since 1.0.0
433
+ * @see {@link IconProps}
434
+ */
435
+ function TriangleAlertIcon(props: IconProps): JSX.Element {
436
+ return (
437
+ <Icon {...props}>
438
+ <path d="m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3" />
439
+ <path d="M12 9v4" />
440
+ <path d="M12 17h.01" />
441
+ </Icon>
442
+ );
443
+ }
444
+
445
+ /**
446
+ * An arrow pointing left. Use it for a back action. Pass `class="rtl:rotate-180"` to flip it in
447
+ * right-to-left layouts.
448
+ * @param props - The `<svg>` attributes; see {@link IconProps}.
449
+ * @returns The icon element.
450
+ * @example
451
+ * ```tsx
452
+ * import { ArrowLeftIcon } from "@/components/ui/icons";
453
+ *
454
+ * export const Back = <ArrowLeftIcon class="size-4 rtl:rotate-180" />;
455
+ * ```
456
+ * @since 1.0.0
457
+ * @see {@link IconProps}
458
+ */
459
+ function ArrowLeftIcon(props: IconProps): JSX.Element {
460
+ return (
461
+ <Icon {...props}>
462
+ <path d="m12 19-7-7 7-7" />
463
+ <path d="M19 12H5" />
464
+ </Icon>
465
+ );
466
+ }
467
+
468
+ /**
469
+ * An arrow pointing right. Use it for a forward action. Pass `class="rtl:rotate-180"` to flip it in
470
+ * right-to-left layouts.
471
+ * @param props - The `<svg>` attributes; see {@link IconProps}.
472
+ * @returns The icon element.
473
+ * @example
474
+ * ```tsx
475
+ * import { ArrowRightIcon } from "@/components/ui/icons";
476
+ *
477
+ * export const Forward = <ArrowRightIcon class="size-4 rtl:rotate-180" />;
478
+ * ```
479
+ * @since 1.0.0
480
+ * @see {@link IconProps}
481
+ */
482
+ function ArrowRightIcon(props: IconProps): JSX.Element {
483
+ return (
484
+ <Icon {...props}>
485
+ <path d="M5 12h14" />
486
+ <path d="m12 5 7 7-7 7" />
487
+ </Icon>
488
+ );
489
+ }
490
+
491
+ /**
492
+ * Centered text lines. Use it for a text alignment control.
493
+ * @param props - The `<svg>` attributes; see {@link IconProps}.
494
+ * @returns The icon element.
495
+ * @example
496
+ * ```tsx
497
+ * import { AlignCenterIcon } from "@/components/ui/icons";
498
+ *
499
+ * export const Mark = <AlignCenterIcon class="size-4" />;
500
+ * ```
501
+ * @since 1.0.0
502
+ * @see {@link IconProps}
503
+ */
504
+ function AlignCenterIcon(props: IconProps): JSX.Element {
505
+ return (
506
+ <Icon {...props}>
507
+ <path d="M17 12H7" />
508
+ <path d="M19 18H5" />
509
+ <path d="M21 6H3" />
510
+ </Icon>
511
+ );
512
+ }
513
+
514
+ /**
515
+ * Left-aligned text lines. Use it for a text alignment control.
516
+ * @param props - The `<svg>` attributes; see {@link IconProps}.
517
+ * @returns The icon element.
518
+ * @example
519
+ * ```tsx
520
+ * import { AlignLeftIcon } from "@/components/ui/icons";
521
+ *
522
+ * export const Mark = <AlignLeftIcon class="size-4" />;
523
+ * ```
524
+ * @since 1.0.0
525
+ * @see {@link IconProps}
526
+ */
527
+ function AlignLeftIcon(props: IconProps): JSX.Element {
528
+ return (
529
+ <Icon {...props}>
530
+ <path d="M15 12H3" />
531
+ <path d="M17 18H3" />
532
+ <path d="M21 6H3" />
533
+ </Icon>
534
+ );
535
+ }
536
+
537
+ /**
538
+ * Right-aligned text lines. Use it for a text alignment control.
539
+ * @param props - The `<svg>` attributes; see {@link IconProps}.
540
+ * @returns The icon element.
541
+ * @example
542
+ * ```tsx
543
+ * import { AlignRightIcon } from "@/components/ui/icons";
544
+ *
545
+ * export const Mark = <AlignRightIcon class="size-4" />;
546
+ * ```
547
+ * @since 1.0.0
548
+ * @see {@link IconProps}
549
+ */
550
+ function AlignRightIcon(props: IconProps): JSX.Element {
551
+ return (
552
+ <Icon {...props}>
553
+ <path d="M21 12H9" />
554
+ <path d="M21 18H7" />
555
+ <path d="M21 6H3" />
556
+ </Icon>
557
+ );
558
+ }
559
+
560
+ /**
561
+ * An arrow that points up. Use it for a send or an upload action.
562
+ * @param props - The `<svg>` attributes; see {@link IconProps}.
563
+ * @returns The icon element.
564
+ * @example
565
+ * ```tsx
566
+ * import { ArrowUpIcon } from "@/components/ui/icons";
567
+ *
568
+ * export const Mark = <ArrowUpIcon class="size-4" />;
569
+ * ```
570
+ * @since 1.0.0
571
+ * @see {@link IconProps}
572
+ */
573
+ function ArrowUpIcon(props: IconProps): JSX.Element {
574
+ return (
575
+ <Icon {...props}>
576
+ <path d="m5 12 7-7 7 7" />
577
+ <path d="M12 19V5" />
578
+ </Icon>
579
+ );
580
+ }
581
+
582
+ /**
583
+ * A bell. Use it for notifications.
584
+ * @param props - The `<svg>` attributes; see {@link IconProps}.
585
+ * @returns The icon element.
586
+ * @example
587
+ * ```tsx
588
+ * import { BellIcon } from "@/components/ui/icons";
589
+ *
590
+ * export const Mark = <BellIcon class="size-4" />;
591
+ * ```
592
+ * @since 1.0.0
593
+ * @see {@link IconProps}
594
+ */
595
+ function BellIcon(props: IconProps): JSX.Element {
596
+ return (
597
+ <Icon {...props}>
598
+ <path d="M6 8a6 6 0 0 1 12 0c0 7 3 9 3 9H3s3-2 3-9" />
599
+ <path d="M10.3 21a1.94 1.94 0 0 0 3.4 0" />
600
+ </Icon>
601
+ );
602
+ }
603
+
604
+ /**
605
+ * The letter B in a bold stroke. Use it for a bold text control.
606
+ * @param props - The `<svg>` attributes; see {@link IconProps}.
607
+ * @returns The icon element.
608
+ * @example
609
+ * ```tsx
610
+ * import { BoldIcon } from "@/components/ui/icons";
611
+ *
612
+ * export const Mark = <BoldIcon class="size-4" />;
613
+ * ```
614
+ * @since 1.0.0
615
+ * @see {@link IconProps}
616
+ */
617
+ function BoldIcon(props: IconProps): JSX.Element {
618
+ return (
619
+ <Icon {...props}>
620
+ <path d="M14 12a4 4 0 0 0 0-8H6v8" />
621
+ <path d="M15 20a4 4 0 0 0 0-8H6v8Z" />
622
+ </Icon>
623
+ );
624
+ }
625
+
626
+ /**
627
+ * A bookmark. Use it for a saved item.
628
+ * @param props - The `<svg>` attributes; see {@link IconProps}.
629
+ * @returns The icon element.
630
+ * @example
631
+ * ```tsx
632
+ * import { BookmarkIcon } from "@/components/ui/icons";
633
+ *
634
+ * export const Mark = <BookmarkIcon class="size-4" />;
635
+ * ```
636
+ * @since 1.0.0
637
+ * @see {@link IconProps}
638
+ */
639
+ function BookmarkIcon(props: IconProps): JSX.Element {
640
+ return (
641
+ <Icon {...props}>
642
+ <path d="m19 21-7-4-7 4V5a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2v16z" />
643
+ </Icon>
644
+ );
645
+ }
646
+
647
+ /**
648
+ * A robot head. Use it for an assistant or an agent.
649
+ * @param props - The `<svg>` attributes; see {@link IconProps}.
650
+ * @returns The icon element.
651
+ * @example
652
+ * ```tsx
653
+ * import { BotIcon } from "@/components/ui/icons";
654
+ *
655
+ * export const Mark = <BotIcon class="size-4" />;
656
+ * ```
657
+ * @since 1.0.0
658
+ * @see {@link IconProps}
659
+ */
660
+ function BotIcon(props: IconProps): JSX.Element {
661
+ return (
662
+ <Icon {...props}>
663
+ <path d="M12 8V4H8" />
664
+ <rect x="4" y="8" width="16" height="12" rx="2" />
665
+ <path d="M2 14h2" />
666
+ <path d="M20 14h2" />
667
+ <path d="M15 13v2" />
668
+ <path d="M9 13v2" />
669
+ </Icon>
670
+ );
671
+ }
672
+
673
+ /**
674
+ * A calendar page. Use it for a date field or a schedule.
675
+ * @param props - The `<svg>` attributes; see {@link IconProps}.
676
+ * @returns The icon element.
677
+ * @example
678
+ * ```tsx
679
+ * import { CalendarIcon } from "@/components/ui/icons";
680
+ *
681
+ * export const Mark = <CalendarIcon class="size-4" />;
682
+ * ```
683
+ * @since 1.0.0
684
+ * @see {@link IconProps}
685
+ */
686
+ function CalendarIcon(props: IconProps): JSX.Element {
687
+ return (
688
+ <Icon {...props}>
689
+ <path d="M8 2v4" />
690
+ <path d="M16 2v4" />
691
+ <rect x="3" y="4" width="18" height="18" rx="2" />
692
+ <path d="M3 10h18" />
693
+ </Icon>
694
+ );
695
+ }
696
+
697
+ /**
698
+ * A clock face. Use it for a time or a duration.
699
+ * @param props - The `<svg>` attributes; see {@link IconProps}.
700
+ * @returns The icon element.
701
+ * @example
702
+ * ```tsx
703
+ * import { ClockIcon } from "@/components/ui/icons";
704
+ *
705
+ * export const Mark = <ClockIcon class="size-4" />;
706
+ * ```
707
+ * @since 1.0.0
708
+ * @see {@link IconProps}
709
+ */
710
+ function ClockIcon(props: IconProps): JSX.Element {
711
+ return (
712
+ <Icon {...props}>
713
+ <circle cx="12" cy="12" r="10" />
714
+ <path d="M12 6v6l4 2" />
715
+ </Icon>
716
+ );
717
+ }
718
+
719
+ /**
720
+ * Angle brackets. Use it for code.
721
+ * @param props - The `<svg>` attributes; see {@link IconProps}.
722
+ * @returns The icon element.
723
+ * @example
724
+ * ```tsx
725
+ * import { CodeIcon } from "@/components/ui/icons";
726
+ *
727
+ * export const Mark = <CodeIcon class="size-4" />;
728
+ * ```
729
+ * @since 1.0.0
730
+ * @see {@link IconProps}
731
+ */
732
+ function CodeIcon(props: IconProps): JSX.Element {
733
+ return (
734
+ <Icon {...props}>
735
+ <path d="m16 18 6-6-6-6" />
736
+ <path d="m8 6-6 6 6 6" />
737
+ </Icon>
738
+ );
739
+ }
740
+
741
+ /**
742
+ * The command key. Use it for a shortcut or a command palette.
743
+ * @param props - The `<svg>` attributes; see {@link IconProps}.
744
+ * @returns The icon element.
745
+ * @example
746
+ * ```tsx
747
+ * import { CommandIcon } from "@/components/ui/icons";
748
+ *
749
+ * export const Mark = <CommandIcon class="size-4" />;
750
+ * ```
751
+ * @since 1.0.0
752
+ * @see {@link IconProps}
753
+ */
754
+ function CommandIcon(props: IconProps): JSX.Element {
755
+ return (
756
+ <Icon {...props}>
757
+ <path d="M15 6v12a3 3 0 1 0 3-3H6a3 3 0 1 0 3 3V6a3 3 0 1 0-3 3h12a3 3 0 1 0-3-3" />
758
+ </Icon>
759
+ );
760
+ }
761
+
762
+ /**
763
+ * Two overlapping sheets. Use it for a copy action.
764
+ * @param props - The `<svg>` attributes; see {@link IconProps}.
765
+ * @returns The icon element.
766
+ * @example
767
+ * ```tsx
768
+ * import { CopyIcon } from "@/components/ui/icons";
769
+ *
770
+ * export const Mark = <CopyIcon class="size-4" />;
771
+ * ```
772
+ * @since 1.0.0
773
+ * @see {@link IconProps}
774
+ */
775
+ function CopyIcon(props: IconProps): JSX.Element {
776
+ return (
777
+ <Icon {...props}>
778
+ <rect x="8" y="8" width="14" height="14" rx="2" ry="2" />
779
+ <path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2" />
780
+ </Icon>
781
+ );
782
+ }
783
+
784
+ /**
785
+ * A payment card. Use it for billing.
786
+ * @param props - The `<svg>` attributes; see {@link IconProps}.
787
+ * @returns The icon element.
788
+ * @example
789
+ * ```tsx
790
+ * import { CreditCardIcon } from "@/components/ui/icons";
791
+ *
792
+ * export const Mark = <CreditCardIcon class="size-4" />;
793
+ * ```
794
+ * @since 1.0.0
795
+ * @see {@link IconProps}
796
+ */
797
+ function CreditCardIcon(props: IconProps): JSX.Element {
798
+ return (
799
+ <Icon {...props}>
800
+ <rect x="2" y="5" width="20" height="14" rx="2" />
801
+ <path d="M2 10h20" />
802
+ </Icon>
803
+ );
804
+ }
805
+
806
+ /**
807
+ * An arrow into a tray. Use it for a download.
808
+ * @param props - The `<svg>` attributes; see {@link IconProps}.
809
+ * @returns The icon element.
810
+ * @example
811
+ * ```tsx
812
+ * import { DownloadIcon } from "@/components/ui/icons";
813
+ *
814
+ * export const Mark = <DownloadIcon class="size-4" />;
815
+ * ```
816
+ * @since 1.0.0
817
+ * @see {@link IconProps}
818
+ */
819
+ function DownloadIcon(props: IconProps): JSX.Element {
820
+ return (
821
+ <Icon {...props}>
822
+ <path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4" />
823
+ <path d="m7 10 5 5 5-5" />
824
+ <path d="M12 15V3" />
825
+ </Icon>
826
+ );
827
+ }
828
+
829
+ /**
830
+ * An arrow leaving a box. Use it for a link that opens somewhere else.
831
+ * @param props - The `<svg>` attributes; see {@link IconProps}.
832
+ * @returns The icon element.
833
+ * @example
834
+ * ```tsx
835
+ * import { ExternalLinkIcon } from "@/components/ui/icons";
836
+ *
837
+ * export const Mark = <ExternalLinkIcon class="size-4" />;
838
+ * ```
839
+ * @since 1.0.0
840
+ * @see {@link IconProps}
841
+ */
842
+ function ExternalLinkIcon(props: IconProps): JSX.Element {
843
+ return (
844
+ <Icon {...props}>
845
+ <path d="M15 3h6v6" />
846
+ <path d="M10 14 21 3" />
847
+ <path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6" />
848
+ </Icon>
849
+ );
850
+ }
851
+
852
+ /**
853
+ * An open eye. Use it for show or preview.
854
+ * @param props - The `<svg>` attributes; see {@link IconProps}.
855
+ * @returns The icon element.
856
+ * @example
857
+ * ```tsx
858
+ * import { EyeIcon } from "@/components/ui/icons";
859
+ *
860
+ * export const Mark = <EyeIcon class="size-4" />;
861
+ * ```
862
+ * @since 1.0.0
863
+ * @see {@link IconProps}
864
+ */
865
+ function EyeIcon(props: IconProps): JSX.Element {
866
+ return (
867
+ <Icon {...props}>
868
+ <path d="M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0" />
869
+ <circle cx="12" cy="12" r="3" />
870
+ </Icon>
871
+ );
872
+ }
873
+
874
+ /**
875
+ * A sheet with a folded corner. Use it for a file.
876
+ * @param props - The `<svg>` attributes; see {@link IconProps}.
877
+ * @returns The icon element.
878
+ * @example
879
+ * ```tsx
880
+ * import { FileIcon } from "@/components/ui/icons";
881
+ *
882
+ * export const Mark = <FileIcon class="size-4" />;
883
+ * ```
884
+ * @since 1.0.0
885
+ * @see {@link IconProps}
886
+ */
887
+ function FileIcon(props: IconProps): JSX.Element {
888
+ return (
889
+ <Icon {...props}>
890
+ <path d="M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z" />
891
+ <path d="M14 2v4a2 2 0 0 0 2 2h4" />
892
+ </Icon>
893
+ );
894
+ }
895
+
896
+ /**
897
+ * A sheet with lines of text. Use it for a document.
898
+ * @param props - The `<svg>` attributes; see {@link IconProps}.
899
+ * @returns The icon element.
900
+ * @example
901
+ * ```tsx
902
+ * import { FileTextIcon } from "@/components/ui/icons";
903
+ *
904
+ * export const Mark = <FileTextIcon class="size-4" />;
905
+ * ```
906
+ * @since 1.0.0
907
+ * @see {@link IconProps}
908
+ */
909
+ function FileTextIcon(props: IconProps): JSX.Element {
910
+ return (
911
+ <Icon {...props}>
912
+ <path d="M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z" />
913
+ <path d="M14 2v4a2 2 0 0 0 2 2h4" />
914
+ <path d="M10 9H8" />
915
+ <path d="M16 13H8" />
916
+ <path d="M16 17H8" />
917
+ </Icon>
918
+ );
919
+ }
920
+
921
+ /**
922
+ * A closed folder. Use it for a directory.
923
+ * @param props - The `<svg>` attributes; see {@link IconProps}.
924
+ * @returns The icon element.
925
+ * @example
926
+ * ```tsx
927
+ * import { FolderIcon } from "@/components/ui/icons";
928
+ *
929
+ * export const Mark = <FolderIcon class="size-4" />;
930
+ * ```
931
+ * @since 1.0.0
932
+ * @see {@link IconProps}
933
+ */
934
+ function FolderIcon(props: IconProps): JSX.Element {
935
+ return (
936
+ <Icon {...props}>
937
+ <path d="M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z" />
938
+ </Icon>
939
+ );
940
+ }
941
+
942
+ /**
943
+ * A globe. Use it for a language or a region.
944
+ * @param props - The `<svg>` attributes; see {@link IconProps}.
945
+ * @returns The icon element.
946
+ * @example
947
+ * ```tsx
948
+ * import { GlobeIcon } from "@/components/ui/icons";
949
+ *
950
+ * export const Mark = <GlobeIcon class="size-4" />;
951
+ * ```
952
+ * @since 1.0.0
953
+ * @see {@link IconProps}
954
+ */
955
+ function GlobeIcon(props: IconProps): JSX.Element {
956
+ return (
957
+ <Icon {...props}>
958
+ <circle cx="12" cy="12" r="10" />
959
+ <path d="M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20" />
960
+ <path d="M2 12h20" />
961
+ </Icon>
962
+ );
963
+ }
964
+
965
+ /**
966
+ * A heart. Use it for a favorite or a like.
967
+ * @param props - The `<svg>` attributes; see {@link IconProps}.
968
+ * @returns The icon element.
969
+ * @example
970
+ * ```tsx
971
+ * import { HeartIcon } from "@/components/ui/icons";
972
+ *
973
+ * export const Mark = <HeartIcon class="size-4" />;
974
+ * ```
975
+ * @since 1.0.0
976
+ * @see {@link IconProps}
977
+ */
978
+ function HeartIcon(props: IconProps): JSX.Element {
979
+ return (
980
+ <Icon {...props}>
981
+ <path d="M19 14c1.49-1.46 3-3.21 3-5.5A5.5 5.5 0 0 0 16.5 3c-1.76 0-3 .5-4.5 2-1.5-1.5-2.74-2-4.5-2A5.5 5.5 0 0 0 2 8.5c0 2.3 1.5 4.05 3 5.5l7 7Z" />
982
+ </Icon>
983
+ );
984
+ }
985
+
986
+ /**
987
+ * A house. Use it for the start page.
988
+ * @param props - The `<svg>` attributes; see {@link IconProps}.
989
+ * @returns The icon element.
990
+ * @example
991
+ * ```tsx
992
+ * import { HomeIcon } from "@/components/ui/icons";
993
+ *
994
+ * export const Mark = <HomeIcon class="size-4" />;
995
+ * ```
996
+ * @since 1.0.0
997
+ * @see {@link IconProps}
998
+ */
999
+ function HomeIcon(props: IconProps): JSX.Element {
1000
+ return (
1001
+ <Icon {...props}>
1002
+ <path d="m3 9 9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z" />
1003
+ <path d="M9 22V12h6v10" />
1004
+ </Icon>
1005
+ );
1006
+ }
1007
+
1008
+ /**
1009
+ * A picture frame. Use it for an image.
1010
+ * @param props - The `<svg>` attributes; see {@link IconProps}.
1011
+ * @returns The icon element.
1012
+ * @example
1013
+ * ```tsx
1014
+ * import { ImageIcon } from "@/components/ui/icons";
1015
+ *
1016
+ * export const Mark = <ImageIcon class="size-4" />;
1017
+ * ```
1018
+ * @since 1.0.0
1019
+ * @see {@link IconProps}
1020
+ */
1021
+ function ImageIcon(props: IconProps): JSX.Element {
1022
+ return (
1023
+ <Icon {...props}>
1024
+ <rect x="3" y="3" width="18" height="18" rx="2" ry="2" />
1025
+ <circle cx="9" cy="9" r="2" />
1026
+ <path d="m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21" />
1027
+ </Icon>
1028
+ );
1029
+ }
1030
+
1031
+ /**
1032
+ * The letter I slanted. Use it for an italic text control.
1033
+ * @param props - The `<svg>` attributes; see {@link IconProps}.
1034
+ * @returns The icon element.
1035
+ * @example
1036
+ * ```tsx
1037
+ * import { ItalicIcon } from "@/components/ui/icons";
1038
+ *
1039
+ * export const Mark = <ItalicIcon class="size-4" />;
1040
+ * ```
1041
+ * @since 1.0.0
1042
+ * @see {@link IconProps}
1043
+ */
1044
+ function ItalicIcon(props: IconProps): JSX.Element {
1045
+ return (
1046
+ <Icon {...props}>
1047
+ <path d="M19 4H10" />
1048
+ <path d="M14 20H5" />
1049
+ <path d="M15 4 9 20" />
1050
+ </Icon>
1051
+ );
1052
+ }
1053
+
1054
+ /**
1055
+ * Two chain links. Use it for a link.
1056
+ * @param props - The `<svg>` attributes; see {@link IconProps}.
1057
+ * @returns The icon element.
1058
+ * @example
1059
+ * ```tsx
1060
+ * import { LinkIcon } from "@/components/ui/icons";
1061
+ *
1062
+ * export const Mark = <LinkIcon class="size-4" />;
1063
+ * ```
1064
+ * @since 1.0.0
1065
+ * @see {@link IconProps}
1066
+ */
1067
+ function LinkIcon(props: IconProps): JSX.Element {
1068
+ return (
1069
+ <Icon {...props}>
1070
+ <path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71" />
1071
+ <path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71" />
1072
+ </Icon>
1073
+ );
1074
+ }
1075
+
1076
+ /**
1077
+ * A closed padlock. Use it for a protected or private item.
1078
+ * @param props - The `<svg>` attributes; see {@link IconProps}.
1079
+ * @returns The icon element.
1080
+ * @example
1081
+ * ```tsx
1082
+ * import { LockIcon } from "@/components/ui/icons";
1083
+ *
1084
+ * export const Mark = <LockIcon class="size-4" />;
1085
+ * ```
1086
+ * @since 1.0.0
1087
+ * @see {@link IconProps}
1088
+ */
1089
+ function LockIcon(props: IconProps): JSX.Element {
1090
+ return (
1091
+ <Icon {...props}>
1092
+ <rect x="3" y="11" width="18" height="11" rx="2" ry="2" />
1093
+ <path d="M7 11V7a5 5 0 0 1 10 0v4" />
1094
+ </Icon>
1095
+ );
1096
+ }
1097
+
1098
+ /**
1099
+ * An arrow leaving a door. Use it for sign out.
1100
+ * @param props - The `<svg>` attributes; see {@link IconProps}.
1101
+ * @returns The icon element.
1102
+ * @example
1103
+ * ```tsx
1104
+ * import { LogOutIcon } from "@/components/ui/icons";
1105
+ *
1106
+ * export const Mark = <LogOutIcon class="size-4" />;
1107
+ * ```
1108
+ * @since 1.0.0
1109
+ * @see {@link IconProps}
1110
+ */
1111
+ function LogOutIcon(props: IconProps): JSX.Element {
1112
+ return (
1113
+ <Icon {...props}>
1114
+ <path d="M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4" />
1115
+ <path d="m16 17 5-5-5-5" />
1116
+ <path d="M21 12H9" />
1117
+ </Icon>
1118
+ );
1119
+ }
1120
+
1121
+ /**
1122
+ * An envelope. Use it for email.
1123
+ * @param props - The `<svg>` attributes; see {@link IconProps}.
1124
+ * @returns The icon element.
1125
+ * @example
1126
+ * ```tsx
1127
+ * import { MailIcon } from "@/components/ui/icons";
1128
+ *
1129
+ * export const Mark = <MailIcon class="size-4" />;
1130
+ * ```
1131
+ * @since 1.0.0
1132
+ * @see {@link IconProps}
1133
+ */
1134
+ function MailIcon(props: IconProps): JSX.Element {
1135
+ return (
1136
+ <Icon {...props}>
1137
+ <rect x="2" y="4" width="20" height="16" rx="2" />
1138
+ <path d="m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7" />
1139
+ </Icon>
1140
+ );
1141
+ }
1142
+
1143
+ /**
1144
+ * Three horizontal lines. Use it for a menu button.
1145
+ * @param props - The `<svg>` attributes; see {@link IconProps}.
1146
+ * @returns The icon element.
1147
+ * @example
1148
+ * ```tsx
1149
+ * import { MenuIcon } from "@/components/ui/icons";
1150
+ *
1151
+ * export const Mark = <MenuIcon class="size-4" />;
1152
+ * ```
1153
+ * @since 1.0.0
1154
+ * @see {@link IconProps}
1155
+ */
1156
+ function MenuIcon(props: IconProps): JSX.Element {
1157
+ return (
1158
+ <Icon {...props}>
1159
+ <path d="M4 12h16" />
1160
+ <path d="M4 18h16" />
1161
+ <path d="M4 6h16" />
1162
+ </Icon>
1163
+ );
1164
+ }
1165
+
1166
+ /**
1167
+ * A crescent moon. Use it for the dark theme.
1168
+ * @param props - The `<svg>` attributes; see {@link IconProps}.
1169
+ * @returns The icon element.
1170
+ * @example
1171
+ * ```tsx
1172
+ * import { MoonIcon } from "@/components/ui/icons";
1173
+ *
1174
+ * export const Mark = <MoonIcon class="size-4" />;
1175
+ * ```
1176
+ * @since 1.0.0
1177
+ * @see {@link IconProps}
1178
+ */
1179
+ function MoonIcon(props: IconProps): JSX.Element {
1180
+ return (
1181
+ <Icon {...props}>
1182
+ <path d="M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z" />
1183
+ </Icon>
1184
+ );
1185
+ }
1186
+
1187
+ /**
1188
+ * A paperclip. Use it for an attachment.
1189
+ * @param props - The `<svg>` attributes; see {@link IconProps}.
1190
+ * @returns The icon element.
1191
+ * @example
1192
+ * ```tsx
1193
+ * import { PaperclipIcon } from "@/components/ui/icons";
1194
+ *
1195
+ * export const Mark = <PaperclipIcon class="size-4" />;
1196
+ * ```
1197
+ * @since 1.0.0
1198
+ * @see {@link IconProps}
1199
+ */
1200
+ function PaperclipIcon(props: IconProps): JSX.Element {
1201
+ return (
1202
+ <Icon {...props}>
1203
+ <path d="m21.44 11.05-9.19 9.19a6 6 0 0 1-8.49-8.49l8.57-8.57A4 4 0 1 1 18 8.84l-8.59 8.57a2 2 0 0 1-2.83-2.83l8.49-8.48" />
1204
+ </Icon>
1205
+ );
1206
+ }
1207
+
1208
+ /**
1209
+ * A pencil. Use it for edit.
1210
+ * @param props - The `<svg>` attributes; see {@link IconProps}.
1211
+ * @returns The icon element.
1212
+ * @example
1213
+ * ```tsx
1214
+ * import { PencilIcon } from "@/components/ui/icons";
1215
+ *
1216
+ * export const Mark = <PencilIcon class="size-4" />;
1217
+ * ```
1218
+ * @since 1.0.0
1219
+ * @see {@link IconProps}
1220
+ */
1221
+ function PencilIcon(props: IconProps): JSX.Element {
1222
+ return (
1223
+ <Icon {...props}>
1224
+ <path d="M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z" />
1225
+ <path d="m15 5 4 4" />
1226
+ </Icon>
1227
+ );
1228
+ }
1229
+
1230
+ /**
1231
+ * A plus sign. Use it for add or new.
1232
+ * @param props - The `<svg>` attributes; see {@link IconProps}.
1233
+ * @returns The icon element.
1234
+ * @example
1235
+ * ```tsx
1236
+ * import { PlusIcon } from "@/components/ui/icons";
1237
+ *
1238
+ * export const Mark = <PlusIcon class="size-4" />;
1239
+ * ```
1240
+ * @since 1.0.0
1241
+ * @see {@link IconProps}
1242
+ */
1243
+ function PlusIcon(props: IconProps): JSX.Element {
1244
+ return (
1245
+ <Icon {...props}>
1246
+ <path d="M5 12h14" />
1247
+ <path d="M12 5v14" />
1248
+ </Icon>
1249
+ );
1250
+ }
1251
+
1252
+ /**
1253
+ * Two arrows chasing each other. Use it for retry or refresh.
1254
+ * @param props - The `<svg>` attributes; see {@link IconProps}.
1255
+ * @returns The icon element.
1256
+ * @example
1257
+ * ```tsx
1258
+ * import { RefreshIcon } from "@/components/ui/icons";
1259
+ *
1260
+ * export const Mark = <RefreshIcon class="size-4" />;
1261
+ * ```
1262
+ * @since 1.0.0
1263
+ * @see {@link IconProps}
1264
+ */
1265
+ function RefreshIcon(props: IconProps): JSX.Element {
1266
+ return (
1267
+ <Icon {...props}>
1268
+ <path d="M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8" />
1269
+ <path d="M21 3v5h-5" />
1270
+ <path d="M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16" />
1271
+ <path d="M8 16H3v5" />
1272
+ </Icon>
1273
+ );
1274
+ }
1275
+
1276
+ /**
1277
+ * A path between two points. Use it for a plan or a route.
1278
+ * @param props - The `<svg>` attributes; see {@link IconProps}.
1279
+ * @returns The icon element.
1280
+ * @example
1281
+ * ```tsx
1282
+ * import { RouteIcon } from "@/components/ui/icons";
1283
+ *
1284
+ * export const Mark = <RouteIcon class="size-4" />;
1285
+ * ```
1286
+ * @since 1.0.0
1287
+ * @see {@link IconProps}
1288
+ */
1289
+ function RouteIcon(props: IconProps): JSX.Element {
1290
+ return (
1291
+ <Icon {...props}>
1292
+ <circle cx="6" cy="19" r="3" />
1293
+ <path d="M9 19h8.5a3.5 3.5 0 0 0 0-7h-11a3.5 3.5 0 0 1 0-7H15" />
1294
+ <circle cx="18" cy="5" r="3" />
1295
+ </Icon>
1296
+ );
1297
+ }
1298
+
1299
+ /**
1300
+ * A cog. Use it for settings.
1301
+ * @param props - The `<svg>` attributes; see {@link IconProps}.
1302
+ * @returns The icon element.
1303
+ * @example
1304
+ * ```tsx
1305
+ * import { SettingsIcon } from "@/components/ui/icons";
1306
+ *
1307
+ * export const Mark = <SettingsIcon class="size-4" />;
1308
+ * ```
1309
+ * @since 1.0.0
1310
+ * @see {@link IconProps}
1311
+ */
1312
+ function SettingsIcon(props: IconProps): JSX.Element {
1313
+ return (
1314
+ <Icon {...props}>
1315
+ <path d="M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z" />
1316
+ <circle cx="12" cy="12" r="3" />
1317
+ </Icon>
1318
+ );
1319
+ }
1320
+
1321
+ /**
1322
+ * A smiling face. Use it for a reaction.
1323
+ * @param props - The `<svg>` attributes; see {@link IconProps}.
1324
+ * @returns The icon element.
1325
+ * @example
1326
+ * ```tsx
1327
+ * import { SmileIcon } from "@/components/ui/icons";
1328
+ *
1329
+ * export const Mark = <SmileIcon class="size-4" />;
1330
+ * ```
1331
+ * @since 1.0.0
1332
+ * @see {@link IconProps}
1333
+ */
1334
+ function SmileIcon(props: IconProps): JSX.Element {
1335
+ return (
1336
+ <Icon {...props}>
1337
+ <circle cx="12" cy="12" r="10" />
1338
+ <path d="M8 14s1.5 2 4 2 4-2 4-2" />
1339
+ <path d="M9 9h.01" />
1340
+ <path d="M15 9h.01" />
1341
+ </Icon>
1342
+ );
1343
+ }
1344
+
1345
+ /**
1346
+ * Four-point stars. Use it for something an assistant generated.
1347
+ * @param props - The `<svg>` attributes; see {@link IconProps}.
1348
+ * @returns The icon element.
1349
+ * @example
1350
+ * ```tsx
1351
+ * import { SparklesIcon } from "@/components/ui/icons";
1352
+ *
1353
+ * export const Mark = <SparklesIcon class="size-4" />;
1354
+ * ```
1355
+ * @since 1.0.0
1356
+ * @see {@link IconProps}
1357
+ */
1358
+ function SparklesIcon(props: IconProps): JSX.Element {
1359
+ return (
1360
+ <Icon {...props}>
1361
+ <path d="M9.937 15.5A2 2 0 0 0 8.5 14.063l-6.135-1.582a.5.5 0 0 1 0-.962L8.5 9.936A2 2 0 0 0 9.937 8.5l1.582-6.135a.5.5 0 0 1 .963 0L14.063 8.5A2 2 0 0 0 15.5 9.937l6.135 1.581a.5.5 0 0 1 0 .964L15.5 14.063a2 2 0 0 0-1.437 1.437l-1.582 6.135a.5.5 0 0 1-.963 0z" />
1362
+ <path d="M20 3v4" />
1363
+ <path d="M22 5h-4" />
1364
+ <path d="M4 17v2" />
1365
+ <path d="M5 18H3" />
1366
+ </Icon>
1367
+ );
1368
+ }
1369
+
1370
+ /**
1371
+ * A rounded square. Use it for stop.
1372
+ * @param props - The `<svg>` attributes; see {@link IconProps}.
1373
+ * @returns The icon element.
1374
+ * @example
1375
+ * ```tsx
1376
+ * import { SquareIcon } from "@/components/ui/icons";
1377
+ *
1378
+ * export const Mark = <SquareIcon class="size-4" />;
1379
+ * ```
1380
+ * @since 1.0.0
1381
+ * @see {@link IconProps}
1382
+ */
1383
+ function SquareIcon(props: IconProps): JSX.Element {
1384
+ return (
1385
+ <Icon {...props}>
1386
+ <rect x="3" y="3" width="18" height="18" rx="2" />
1387
+ </Icon>
1388
+ );
1389
+ }
1390
+
1391
+ /**
1392
+ * A star. Use it for a rating or a favorite.
1393
+ * @param props - The `<svg>` attributes; see {@link IconProps}.
1394
+ * @returns The icon element.
1395
+ * @example
1396
+ * ```tsx
1397
+ * import { StarIcon } from "@/components/ui/icons";
1398
+ *
1399
+ * export const Mark = <StarIcon class="size-4" />;
1400
+ * ```
1401
+ * @since 1.0.0
1402
+ * @see {@link IconProps}
1403
+ */
1404
+ function StarIcon(props: IconProps): JSX.Element {
1405
+ return (
1406
+ <Icon {...props}>
1407
+ <path d="M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z" />
1408
+ </Icon>
1409
+ );
1410
+ }
1411
+
1412
+ /**
1413
+ * A sun. Use it for the light theme.
1414
+ * @param props - The `<svg>` attributes; see {@link IconProps}.
1415
+ * @returns The icon element.
1416
+ * @example
1417
+ * ```tsx
1418
+ * import { SunIcon } from "@/components/ui/icons";
1419
+ *
1420
+ * export const Mark = <SunIcon class="size-4" />;
1421
+ * ```
1422
+ * @since 1.0.0
1423
+ * @see {@link IconProps}
1424
+ */
1425
+ function SunIcon(props: IconProps): JSX.Element {
1426
+ return (
1427
+ <Icon {...props}>
1428
+ <circle cx="12" cy="12" r="4" />
1429
+ <path d="M12 2v2" />
1430
+ <path d="M12 20v2" />
1431
+ <path d="m4.93 4.93 1.41 1.41" />
1432
+ <path d="m17.66 17.66 1.41 1.41" />
1433
+ <path d="M2 12h2" />
1434
+ <path d="M20 12h2" />
1435
+ <path d="m6.34 17.66-1.41 1.41" />
1436
+ <path d="m19.07 4.93-1.41 1.41" />
1437
+ </Icon>
1438
+ );
1439
+ }
1440
+
1441
+ /**
1442
+ * A prompt and a cursor. Use it for a command line.
1443
+ * @param props - The `<svg>` attributes; see {@link IconProps}.
1444
+ * @returns The icon element.
1445
+ * @example
1446
+ * ```tsx
1447
+ * import { TerminalIcon } from "@/components/ui/icons";
1448
+ *
1449
+ * export const Mark = <TerminalIcon class="size-4" />;
1450
+ * ```
1451
+ * @since 1.0.0
1452
+ * @see {@link IconProps}
1453
+ */
1454
+ function TerminalIcon(props: IconProps): JSX.Element {
1455
+ return (
1456
+ <Icon {...props}>
1457
+ <path d="m4 17 6-6-6-6" />
1458
+ <path d="M12 19h8" />
1459
+ </Icon>
1460
+ );
1461
+ }
1462
+
1463
+ /**
1464
+ * A thumb pointing down. Use it for a bad response.
1465
+ * @param props - The `<svg>` attributes; see {@link IconProps}.
1466
+ * @returns The icon element.
1467
+ * @example
1468
+ * ```tsx
1469
+ * import { ThumbsDownIcon } from "@/components/ui/icons";
1470
+ *
1471
+ * export const Mark = <ThumbsDownIcon class="size-4" />;
1472
+ * ```
1473
+ * @since 1.0.0
1474
+ * @see {@link IconProps}
1475
+ */
1476
+ function ThumbsDownIcon(props: IconProps): JSX.Element {
1477
+ return (
1478
+ <Icon {...props}>
1479
+ <path d="M17 14V2" />
1480
+ <path d="M9 18.12 10 14H4.17a2 2 0 0 1-1.92-2.56l2.33-8A2 2 0 0 1 6.5 2H20a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2h-2.76a2 2 0 0 0-1.79 1.11L12 22a3.13 3.13 0 0 1-3-3.88Z" />
1481
+ </Icon>
1482
+ );
1483
+ }
1484
+
1485
+ /**
1486
+ * A thumb pointing up. Use it for a good response.
1487
+ * @param props - The `<svg>` attributes; see {@link IconProps}.
1488
+ * @returns The icon element.
1489
+ * @example
1490
+ * ```tsx
1491
+ * import { ThumbsUpIcon } from "@/components/ui/icons";
1492
+ *
1493
+ * export const Mark = <ThumbsUpIcon class="size-4" />;
1494
+ * ```
1495
+ * @since 1.0.0
1496
+ * @see {@link IconProps}
1497
+ */
1498
+ function ThumbsUpIcon(props: IconProps): JSX.Element {
1499
+ return (
1500
+ <Icon {...props}>
1501
+ <path d="M7 10v12" />
1502
+ <path d="M15 5.88 14 10h5.83a2 2 0 0 1 1.92 2.56l-2.33 8A2 2 0 0 1 17.5 22H4a2 2 0 0 1-2-2v-8a2 2 0 0 1 2-2h2.76a2 2 0 0 0 1.79-1.11L12 2a3.13 3.13 0 0 1 3 3.88Z" />
1503
+ </Icon>
1504
+ );
1505
+ }
1506
+
1507
+ /**
1508
+ * A bin. Use it for delete.
1509
+ * @param props - The `<svg>` attributes; see {@link IconProps}.
1510
+ * @returns The icon element.
1511
+ * @example
1512
+ * ```tsx
1513
+ * import { TrashIcon } from "@/components/ui/icons";
1514
+ *
1515
+ * export const Mark = <TrashIcon class="size-4" />;
1516
+ * ```
1517
+ * @since 1.0.0
1518
+ * @see {@link IconProps}
1519
+ */
1520
+ function TrashIcon(props: IconProps): JSX.Element {
1521
+ return (
1522
+ <Icon {...props}>
1523
+ <path d="M3 6h18" />
1524
+ <path d="M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6" />
1525
+ <path d="M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2" />
1526
+ <path d="M10 11v6" />
1527
+ <path d="M14 11v6" />
1528
+ </Icon>
1529
+ );
1530
+ }
1531
+
1532
+ /**
1533
+ * The letter U with a rule under it. Use it for an underline text control.
1534
+ * @param props - The `<svg>` attributes; see {@link IconProps}.
1535
+ * @returns The icon element.
1536
+ * @example
1537
+ * ```tsx
1538
+ * import { UnderlineIcon } from "@/components/ui/icons";
1539
+ *
1540
+ * export const Mark = <UnderlineIcon class="size-4" />;
1541
+ * ```
1542
+ * @since 1.0.0
1543
+ * @see {@link IconProps}
1544
+ */
1545
+ function UnderlineIcon(props: IconProps): JSX.Element {
1546
+ return (
1547
+ <Icon {...props}>
1548
+ <path d="M6 4v6a6 6 0 0 0 12 0V4" />
1549
+ <path d="M4 20h16" />
1550
+ </Icon>
1551
+ );
1552
+ }
1553
+
1554
+ /**
1555
+ * An arrow out of a tray. Use it for an upload.
1556
+ * @param props - The `<svg>` attributes; see {@link IconProps}.
1557
+ * @returns The icon element.
1558
+ * @example
1559
+ * ```tsx
1560
+ * import { UploadIcon } from "@/components/ui/icons";
1561
+ *
1562
+ * export const Mark = <UploadIcon class="size-4" />;
1563
+ * ```
1564
+ * @since 1.0.0
1565
+ * @see {@link IconProps}
1566
+ */
1567
+ function UploadIcon(props: IconProps): JSX.Element {
1568
+ return (
1569
+ <Icon {...props}>
1570
+ <path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4" />
1571
+ <path d="m17 8-5-5-5 5" />
1572
+ <path d="M12 3v12" />
1573
+ </Icon>
1574
+ );
1575
+ }
1576
+
1577
+ /**
1578
+ * A head and shoulders. Use it for a person or an account.
1579
+ * @param props - The `<svg>` attributes; see {@link IconProps}.
1580
+ * @returns The icon element.
1581
+ * @example
1582
+ * ```tsx
1583
+ * import { UserIcon } from "@/components/ui/icons";
1584
+ *
1585
+ * export const Mark = <UserIcon class="size-4" />;
1586
+ * ```
1587
+ * @since 1.0.0
1588
+ * @see {@link IconProps}
1589
+ */
1590
+ function UserIcon(props: IconProps): JSX.Element {
1591
+ return (
1592
+ <Icon {...props}>
1593
+ <path d="M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2" />
1594
+ <circle cx="12" cy="7" r="4" />
1595
+ </Icon>
1596
+ );
1597
+ }
1598
+
1599
+ /**
1600
+ * A wrench. Use it for a tool.
1601
+ * @param props - The `<svg>` attributes; see {@link IconProps}.
1602
+ * @returns The icon element.
1603
+ * @example
1604
+ * ```tsx
1605
+ * import { WrenchIcon } from "@/components/ui/icons";
1606
+ *
1607
+ * export const Mark = <WrenchIcon class="size-4" />;
1608
+ * ```
1609
+ * @since 1.0.0
1610
+ * @see {@link IconProps}
1611
+ */
1612
+ function WrenchIcon(props: IconProps): JSX.Element {
1613
+ return (
1614
+ <Icon {...props}>
1615
+ <path d="M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z" />
1616
+ </Icon>
1617
+ );
1618
+ }
1619
+
1620
+ export {
1621
+ AlignCenterIcon,
1622
+ AlignLeftIcon,
1623
+ AlignRightIcon,
1624
+ ArrowLeftIcon,
1625
+ ArrowRightIcon,
1626
+ ArrowUpIcon,
1627
+ BellIcon,
1628
+ BoldIcon,
1629
+ BookmarkIcon,
1630
+ BotIcon,
1631
+ CalendarIcon,
1632
+ CheckIcon,
1633
+ ChevronDownIcon,
1634
+ ChevronLeftIcon,
1635
+ ChevronRightIcon,
1636
+ ChevronsUpDownIcon,
1637
+ ChevronUpIcon,
1638
+ CircleCheckIcon,
1639
+ CircleIcon,
1640
+ CircleXIcon,
1641
+ ClockIcon,
1642
+ CodeIcon,
1643
+ CommandIcon,
1644
+ CopyIcon,
1645
+ CreditCardIcon,
1646
+ DownloadIcon,
1647
+ EllipsisIcon,
1648
+ ExternalLinkIcon,
1649
+ EyeIcon,
1650
+ FileIcon,
1651
+ FileTextIcon,
1652
+ FolderIcon,
1653
+ GlobeIcon,
1654
+ GripVerticalIcon,
1655
+ HeartIcon,
1656
+ HomeIcon,
1657
+ ImageIcon,
1658
+ InfoIcon,
1659
+ ItalicIcon,
1660
+ LinkIcon,
1661
+ LoaderIcon,
1662
+ LockIcon,
1663
+ LogOutIcon,
1664
+ MailIcon,
1665
+ MenuIcon,
1666
+ MinusIcon,
1667
+ MoonIcon,
1668
+ PanelLeftIcon,
1669
+ PaperclipIcon,
1670
+ PencilIcon,
1671
+ PlusIcon,
1672
+ RefreshIcon,
1673
+ RouteIcon,
1674
+ SearchIcon,
1675
+ SettingsIcon,
1676
+ SmileIcon,
1677
+ SparklesIcon,
1678
+ SquareIcon,
1679
+ StarIcon,
1680
+ SunIcon,
1681
+ TerminalIcon,
1682
+ ThumbsDownIcon,
1683
+ ThumbsUpIcon,
1684
+ TrashIcon,
1685
+ TriangleAlertIcon,
1686
+ UnderlineIcon,
1687
+ UploadIcon,
1688
+ UserIcon,
1689
+ WrenchIcon,
1690
+ XIcon,
1691
+ };