panelui-native 0.81.0 → 0.83.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 (73) hide show
  1. package/lib/module/components/bottom-sheet/index.js +189 -21
  2. package/lib/module/components/bottom-sheet/index.js.map +1 -1
  3. package/lib/module/components/button/index.js +13 -0
  4. package/lib/module/components/button/index.js.map +1 -1
  5. package/lib/module/components/button-group/index.js +3 -0
  6. package/lib/module/components/button-group/index.js.map +1 -1
  7. package/lib/module/components/image-generation/dot-field.js +267 -0
  8. package/lib/module/components/image-generation/dot-field.js.map +1 -0
  9. package/lib/module/components/image-generation/index.js +459 -0
  10. package/lib/module/components/image-generation/index.js.map +1 -0
  11. package/lib/module/components/kpi/index.js +2 -4
  12. package/lib/module/components/kpi/index.js.map +1 -1
  13. package/lib/module/components/menu/index.js +8 -16
  14. package/lib/module/components/menu/index.js.map +1 -1
  15. package/lib/module/components/panelside/index.js +340 -33
  16. package/lib/module/components/panelside/index.js.map +1 -1
  17. package/lib/module/components/select/index.js +127 -23
  18. package/lib/module/components/select/index.js.map +1 -1
  19. package/lib/module/components/slide-button/index.js +610 -0
  20. package/lib/module/components/slide-button/index.js.map +1 -0
  21. package/lib/module/components/slide-button/slide-button-track.js +98 -0
  22. package/lib/module/components/slide-button/slide-button-track.js.map +1 -0
  23. package/lib/module/icons/index.js +553 -1934
  24. package/lib/module/icons/index.js.map +1 -1
  25. package/lib/module/index.js +3 -1
  26. package/lib/module/index.js.map +1 -1
  27. package/lib/module/native/index.js +24 -0
  28. package/lib/module/native/index.js.map +1 -1
  29. package/lib/module/primitives/portal.js +15 -1
  30. package/lib/module/primitives/portal.js.map +1 -1
  31. package/lib/typescript/src/components/bottom-sheet/index.d.ts +17 -1
  32. package/lib/typescript/src/components/bottom-sheet/index.d.ts.map +1 -1
  33. package/lib/typescript/src/components/button/index.d.ts +12 -0
  34. package/lib/typescript/src/components/button/index.d.ts.map +1 -1
  35. package/lib/typescript/src/components/button-group/index.d.ts +9 -0
  36. package/lib/typescript/src/components/button-group/index.d.ts.map +1 -1
  37. package/lib/typescript/src/components/image-generation/dot-field.d.ts +96 -0
  38. package/lib/typescript/src/components/image-generation/dot-field.d.ts.map +1 -0
  39. package/lib/typescript/src/components/image-generation/index.d.ts +134 -0
  40. package/lib/typescript/src/components/image-generation/index.d.ts.map +1 -0
  41. package/lib/typescript/src/components/kpi/index.d.ts.map +1 -1
  42. package/lib/typescript/src/components/menu/index.d.ts.map +1 -1
  43. package/lib/typescript/src/components/panelside/index.d.ts +194 -10
  44. package/lib/typescript/src/components/panelside/index.d.ts.map +1 -1
  45. package/lib/typescript/src/components/select/index.d.ts +75 -2
  46. package/lib/typescript/src/components/select/index.d.ts.map +1 -1
  47. package/lib/typescript/src/components/slide-button/index.d.ts +317 -0
  48. package/lib/typescript/src/components/slide-button/index.d.ts.map +1 -0
  49. package/lib/typescript/src/components/slide-button/slide-button-track.d.ts +70 -0
  50. package/lib/typescript/src/components/slide-button/slide-button-track.d.ts.map +1 -0
  51. package/lib/typescript/src/icons/index.d.ts +136 -189
  52. package/lib/typescript/src/icons/index.d.ts.map +1 -1
  53. package/lib/typescript/src/index.d.ts +4 -2
  54. package/lib/typescript/src/index.d.ts.map +1 -1
  55. package/lib/typescript/src/native/index.d.ts +26 -0
  56. package/lib/typescript/src/native/index.d.ts.map +1 -1
  57. package/lib/typescript/src/primitives/portal.d.ts.map +1 -1
  58. package/package.json +3 -2
  59. package/src/components/bottom-sheet/index.tsx +223 -20
  60. package/src/components/button/index.tsx +10 -2
  61. package/src/components/button-group/index.tsx +1 -0
  62. package/src/components/image-generation/dot-field.ts +282 -0
  63. package/src/components/image-generation/index.tsx +537 -0
  64. package/src/components/kpi/index.tsx +2 -4
  65. package/src/components/menu/index.tsx +10 -15
  66. package/src/components/panelside/index.tsx +498 -33
  67. package/src/components/select/index.tsx +158 -31
  68. package/src/components/slide-button/index.tsx +681 -0
  69. package/src/components/slide-button/slide-button-track.ts +100 -0
  70. package/src/icons/index.tsx +338 -1327
  71. package/src/index.ts +28 -0
  72. package/src/native/index.ts +45 -0
  73. package/src/primitives/portal.tsx +15 -1
@@ -3,30 +3,131 @@
3
3
  /**
4
4
  * Icon set.
5
5
  *
6
- * Two families live here:
7
- * - Stroked 24×24 icons on Lucide geometry, for chrome such as chevrons and
8
- * the close button.
9
- * - Filled 16×16 status icons for Alert and Toast indicators, which read
10
- * better small than a stroked equivalent would.
6
+ * Every glyph is a 24×24 stroked drawing, sized and coloured by the caller.
7
+ * They exist so the library can draw its own chrome — chevrons, a close
8
+ * button, a check inside a checkbox — without every consumer having to choose
9
+ * an icon package before a Select will render.
11
10
  *
12
- * Every icon resolves its colour in the same order: an explicit `color` prop,
13
- * then the colour inherited from an enclosing `IconColorProvider`, then its
14
- * own fallback. Coloured surfaces such as Button provide the foreground that
15
- * reads against them, so icons follow the theme without callers hardcoding a
16
- * hex — which breaks the moment the theme inverts.
11
+ * ## How a colour is resolved
17
12
  *
18
- * Brand marks (Google, Facebook, Apple) are the exception: they carry their
19
- * own colours and ignore the context.
13
+ * In one order, always: an explicit `color` prop, then the colour inherited
14
+ * from an enclosing `IconColorProvider`, then the icon's own fallback.
15
+ * Coloured surfaces such as Button provide the foreground that reads against
16
+ * them, so an icon dropped into one follows the theme without the caller
17
+ * hardcoding a hex — which is what breaks the moment the theme inverts.
18
+ *
19
+ * ## Weight
20
+ *
21
+ * `strokeWidth` defaults to 2 rather than to the drawing's own 1.5. The set is
22
+ * drawn at 24 and used at 14–20, and a hairline that reads correctly at full
23
+ * size thins to nothing at two thirds of it. A few glyphs carry their own
24
+ * weight because they sit beside something they have to match: the check and
25
+ * the bar inside a checkbox, the grip on a drag handle.
26
+ *
27
+ * ## Mirroring
20
28
  *
21
29
  * A glyph whose *meaning* is a horizontal direction mirrors in a right-to-left
22
- * subtree — the chevrons, the outward arrow, the send plane. Everything else
23
- * is drawn once and left alone, including the vertical arrows, since the
24
- * vertical axis does not mirror, and including asymmetric glyphs that are not
25
- * directions (a magnifier, a pencil, a play triangle).
30
+ * subtree — the two side chevrons, the outward arrow, the send plane. Yoga
31
+ * moves a chevron to the other end of its row but cannot turn the glyph
32
+ * around, so without this an RTL list row ends up with a right-pointing
33
+ * chevron on its left edge, pointing back at the text.
34
+ *
35
+ * Everything else is drawn once and left alone. The vertical axis does not
36
+ * mirror, and an icon that is merely asymmetric — a magnifier, a pencil, a
37
+ * play triangle — means the same thing either way round; flipping it would
38
+ * only be a wrong drawing.
39
+ *
40
+ * A mirroring icon always carries a transform, identity included. Dropping the
41
+ * prop leaves the last matrix the view was given in place, so a glyph mirrored
42
+ * once stays mirrored when the direction flips back — the arrows in an app
43
+ * that can switch direction at runtime end up pointing at the text one toggle
44
+ * in, and never recover.
45
+ *
46
+ * ## The four drawn by hand
47
+ *
48
+ * Google, Facebook and Apple carry their own palettes, and a brand mark
49
+ * repainted to match a surface is no longer the mark. `BadgeCheckIcon` is
50
+ * two-tone by design — a solid badge with a check punched through it in a
51
+ * second colour — and `checkColor` is a public prop that a single-colour
52
+ * outline could only ignore. All four are drawn here rather than mapped.
26
53
  */
27
54
  import { createContext, useContext } from 'react';
28
- import Svg, { Circle, G, Path } from 'react-native-svg';
55
+ import { HugeiconsIcon } from '@hugeicons/react-native';
56
+ import Svg, { G, Path } from 'react-native-svg';
29
57
  import { useDirection } from "../hooks/use-direction.js";
58
+ import HgAlert02Icon from '@hugeicons/core-free-icons/Alert02Icon';
59
+ import HgArrowDown01Icon from '@hugeicons/core-free-icons/ArrowDown01Icon';
60
+ import HgArrowDown02Icon from '@hugeicons/core-free-icons/ArrowDown02Icon';
61
+ import HgArrowLeft01Icon from '@hugeicons/core-free-icons/ArrowLeft01Icon';
62
+ import HgArrowRight01Icon from '@hugeicons/core-free-icons/ArrowRight01Icon';
63
+ import HgArrowUp01Icon from '@hugeicons/core-free-icons/ArrowUp01Icon';
64
+ import HgArrowUp02Icon from '@hugeicons/core-free-icons/ArrowUp02Icon';
65
+ import HgArrowUpRight01Icon from '@hugeicons/core-free-icons/ArrowUpRight01Icon';
66
+ import HgAttachment01Icon from '@hugeicons/core-free-icons/Attachment01Icon';
67
+ import HgAudioWave01Icon from '@hugeicons/core-free-icons/AudioWave01Icon';
68
+ import HgBookmark01Icon from '@hugeicons/core-free-icons/Bookmark01Icon';
69
+ import HgBubbleChatIcon from '@hugeicons/core-free-icons/BubbleChatIcon';
70
+ import HgCalendar03Icon from '@hugeicons/core-free-icons/Calendar03Icon';
71
+ import HgCamera01Icon from '@hugeicons/core-free-icons/Camera01Icon';
72
+ import HgCancel01Icon from '@hugeicons/core-free-icons/Cancel01Icon';
73
+ import HgCheckListIcon from '@hugeicons/core-free-icons/CheckListIcon';
74
+ import HgCheckmarkCircle01Icon from '@hugeicons/core-free-icons/CheckmarkCircle01Icon';
75
+ import HgCircleIcon from '@hugeicons/core-free-icons/CircleIcon';
76
+ import HgClock01Icon from '@hugeicons/core-free-icons/Clock01Icon';
77
+ import HgCodeIcon from '@hugeicons/core-free-icons/CodeIcon';
78
+ import HgCompassIcon from '@hugeicons/core-free-icons/CompassIcon';
79
+ import HgCopy01Icon from '@hugeicons/core-free-icons/Copy01Icon';
80
+ import HgCreditCardIcon from '@hugeicons/core-free-icons/CreditCardIcon';
81
+ import HgCrosshairIcon from '@hugeicons/core-free-icons/CrosshairIcon';
82
+ import HgDelete02Icon from '@hugeicons/core-free-icons/Delete02Icon';
83
+ import HgDownload01Icon from '@hugeicons/core-free-icons/Download01Icon';
84
+ import HgDragDropVerticalIcon from '@hugeicons/core-free-icons/DragDropVerticalIcon';
85
+ import HgEyeIcon from '@hugeicons/core-free-icons/EyeIcon';
86
+ import HgFavouriteIcon from '@hugeicons/core-free-icons/FavouriteIcon';
87
+ import HgFile01Icon from '@hugeicons/core-free-icons/File01Icon';
88
+ import HgFolder01Icon from '@hugeicons/core-free-icons/Folder01Icon';
89
+ import HgFolderOpenIcon from '@hugeicons/core-free-icons/FolderOpenIcon';
90
+ import HgFullScreenIcon from '@hugeicons/core-free-icons/FullScreenIcon';
91
+ import HgGlobeIcon from '@hugeicons/core-free-icons/GlobeIcon';
92
+ import HgHeading01Icon from '@hugeicons/core-free-icons/Heading01Icon';
93
+ import HgImage01Icon from '@hugeicons/core-free-icons/Image01Icon';
94
+ import HgInformationCircleIcon from '@hugeicons/core-free-icons/InformationCircleIcon';
95
+ import HgKeyboardIcon from '@hugeicons/core-free-icons/KeyboardIcon';
96
+ import HgLeftToRightListBulletIcon from '@hugeicons/core-free-icons/LeftToRightListBulletIcon';
97
+ import HgLeftToRightListNumberIcon from '@hugeicons/core-free-icons/LeftToRightListNumberIcon';
98
+ import HgLink01Icon from '@hugeicons/core-free-icons/Link01Icon';
99
+ import HgLockIcon from '@hugeicons/core-free-icons/LockIcon';
100
+ import HgLockOpenIcon from '@hugeicons/core-free-icons/LockOpenIcon';
101
+ import HgMenu01Icon from '@hugeicons/core-free-icons/Menu01Icon';
102
+ import HgMic01Icon from '@hugeicons/core-free-icons/Mic01Icon';
103
+ import HgMinusSignIcon from '@hugeicons/core-free-icons/MinusSignIcon';
104
+ import HgMoonIcon from '@hugeicons/core-free-icons/MoonIcon';
105
+ import HgMoreHorizontalIcon from '@hugeicons/core-free-icons/MoreHorizontalIcon';
106
+ import HgNotification03Icon from '@hugeicons/core-free-icons/Notification03Icon';
107
+ import HgPackageIcon from '@hugeicons/core-free-icons/PackageIcon';
108
+ import HgPauseIcon from '@hugeicons/core-free-icons/PauseIcon';
109
+ import HgPencilEdit01Icon from '@hugeicons/core-free-icons/PencilEdit01Icon';
110
+ import HgPlayIcon from '@hugeicons/core-free-icons/PlayIcon';
111
+ import HgPlusSignIcon from '@hugeicons/core-free-icons/PlusSignIcon';
112
+ import HgPlusSignSquareIcon from '@hugeicons/core-free-icons/PlusSignSquareIcon';
113
+ import HgQuoteDownIcon from '@hugeicons/core-free-icons/QuoteDownIcon';
114
+ import HgReceiptIcon from '@hugeicons/core-free-icons/ReceiptIcon';
115
+ import HgRefreshCcwIcon from '@hugeicons/core-free-icons/RefreshCcwIcon';
116
+ import HgRefreshCwIcon from '@hugeicons/core-free-icons/RefreshCwIcon';
117
+ import HgRepeatIcon from '@hugeicons/core-free-icons/RepeatIcon';
118
+ import HgSearch01Icon from '@hugeicons/core-free-icons/Search01Icon';
119
+ import HgSent02Icon from '@hugeicons/core-free-icons/Sent02Icon';
120
+ import HgSentIcon from '@hugeicons/core-free-icons/SentIcon';
121
+ import HgShare08Icon from '@hugeicons/core-free-icons/Share08Icon';
122
+ import HgShieldAlertIcon from '@hugeicons/core-free-icons/ShieldAlertIcon';
123
+ import HgShieldCheckIcon from '@hugeicons/core-free-icons/ShieldCheckIcon';
124
+ import HgSparklesIcon from '@hugeicons/core-free-icons/SparklesIcon';
125
+ import HgStarIcon from '@hugeicons/core-free-icons/StarIcon';
126
+ import HgSun03Icon from '@hugeicons/core-free-icons/Sun03Icon';
127
+ import HgTextBoldIcon from '@hugeicons/core-free-icons/TextBoldIcon';
128
+ import HgTextItalicIcon from '@hugeicons/core-free-icons/TextItalicIcon';
129
+ import HgTick02Icon from '@hugeicons/core-free-icons/Tick02Icon';
130
+ import HgUnfoldMoreIcon from '@hugeicons/core-free-icons/UnfoldMoreIcon';
30
131
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
31
132
  /**
32
133
  * The colour icons inherit when they are not given one explicitly.
@@ -64,595 +165,482 @@ const decorative = {
64
165
  importantForAccessibility: 'no-hide-descendants'
65
166
  };
66
167
 
168
+ /** The default line weight. See the note on weight above. */
169
+ const STROKE = 2;
170
+ /**
171
+ * Builds one icon from a glyph and the defaults it is normally drawn with.
172
+ *
173
+ * A factory rather than seventy near-identical components: what varies between
174
+ * them is data, and what does not — the colour order, the weight default, the
175
+ * mirror, the fill toggle, the prop passthrough — is worth having in exactly
176
+ * one place, where a fix reaches the whole set at once.
177
+ */
178
+ function icon(glyph, defaults) {
179
+ function Icon({
180
+ size = defaults.size,
181
+ color,
182
+ strokeWidth,
183
+ filled,
184
+ style,
185
+ ...props
186
+ }) {
187
+ const resolved = useResolvedColor(color, defaults.color);
188
+ const rtl = useDirection() === 'rtl';
189
+ return /*#__PURE__*/_jsx(HugeiconsIcon, {
190
+ icon: glyph,
191
+ size: size,
192
+ color: resolved,
193
+ strokeWidth: strokeWidth ?? defaults.strokeWidth ?? STROKE,
194
+ fill: defaults.fillable && filled ? resolved : 'none',
195
+ style: defaults.flip ? [{
196
+ transform: [{
197
+ scaleX: rtl ? -1 : 1
198
+ }]
199
+ }, style] : style,
200
+ ...props
201
+ });
202
+ }
203
+ return Icon;
204
+ }
205
+
67
206
  /* -------------------------------------------------------------------------- */
68
- /* Stroked chrome icons */
207
+ /* Chrome */
69
208
  /* -------------------------------------------------------------------------- */
70
209
 
71
- export function CheckIcon({
72
- size = 14,
73
- color,
74
- ...props
75
- }) {
76
- const resolved = useResolvedColor(color, '#fff');
77
- return /*#__PURE__*/_jsx(Svg, {
78
- width: size,
79
- height: size,
80
- viewBox: "0 0 24 24",
81
- fill: "none",
82
- ...props,
83
- children: /*#__PURE__*/_jsx(Path, {
84
- d: "M20 6 9 17l-5-5",
85
- stroke: resolved,
86
- strokeWidth: 3,
87
- strokeLinecap: "round",
88
- strokeLinejoin: "round"
89
- })
90
- });
91
- }
210
+ export const ChevronUpIcon = icon(HgArrowUp01Icon, {
211
+ size: 16,
212
+ color: '#737373'
213
+ });
214
+ export const ChevronDownIcon = icon(HgArrowDown01Icon, {
215
+ size: 16,
216
+ color: '#737373'
217
+ });
218
+ export const ChevronLeftIcon = icon(HgArrowLeft01Icon, {
219
+ size: 16,
220
+ color: '#737373',
221
+ flip: true
222
+ });
223
+ export const ChevronRightIcon = icon(HgArrowRight01Icon, {
224
+ size: 16,
225
+ color: '#737373',
226
+ flip: true
227
+ });
228
+ export const ChevronsUpDownIcon = icon(HgUnfoldMoreIcon, {
229
+ size: 16,
230
+ color: '#737373'
231
+ });
232
+ export const EllipsisIcon = icon(HgMoreHorizontalIcon, {
233
+ size: 16,
234
+ color: '#737373'
235
+ });
236
+ export const MenuIcon = icon(HgMenu01Icon, {
237
+ size: 20,
238
+ color: '#737373'
239
+ });
240
+ export const XIcon = icon(HgCancel01Icon, {
241
+ size: 16,
242
+ color: '#737373'
243
+ });
244
+ export const SearchIcon = icon(HgSearch01Icon, {
245
+ size: 16,
246
+ color: '#737373'
247
+ });
248
+ export const ArrowUpRightIcon = icon(HgArrowUpRight01Icon, {
249
+ size: 20,
250
+ color: '#fff',
251
+ flip: true
252
+ });
253
+ export const PlusIcon = icon(HgPlusSignIcon, {
254
+ size: 16,
255
+ color: '#737373'
256
+ });
257
+ export const MinusIcon = icon(HgMinusSignIcon, {
258
+ size: 14,
259
+ color: '#fff',
260
+ strokeWidth: 3
261
+ });
262
+ export const CheckIcon = icon(HgTick02Icon, {
263
+ size: 14,
264
+ color: '#fff',
265
+ strokeWidth: 3
266
+ });
267
+ export const CircleIcon = icon(HgCircleIcon, {
268
+ size: 16,
269
+ color: '#737373',
270
+ fillable: true
271
+ });
272
+ export const GripVerticalIcon = icon(HgDragDropVerticalIcon, {
273
+ size: 16,
274
+ color: '#737373',
275
+ strokeWidth: 2.5
276
+ });
277
+ export const MaximizeIcon = icon(HgFullScreenIcon, {
278
+ size: 16,
279
+ color: '#737373'
280
+ });
281
+
282
+ /* -------------------------------------------------------------------------- */
283
+ /* Status */
284
+ /* -------------------------------------------------------------------------- */
285
+
286
+ export const InfoIcon = icon(HgInformationCircleIcon, {
287
+ size: 20,
288
+ color: 'currentColor'
289
+ });
290
+ export const CheckCircleIcon = icon(HgCheckmarkCircle01Icon, {
291
+ size: 20,
292
+ color: 'currentColor'
293
+ });
294
+ export const AlertTriangleIcon = icon(HgAlert02Icon, {
295
+ size: 20,
296
+ color: 'currentColor'
297
+ });
298
+ export const ShieldAlertIcon = icon(HgShieldAlertIcon, {
299
+ size: 16,
300
+ color: '#737373'
301
+ });
302
+ export const ShieldCheckIcon = icon(HgShieldCheckIcon, {
303
+ size: 16,
304
+ color: '#737373'
305
+ });
306
+ export const BellIcon = icon(HgNotification03Icon, {
307
+ size: 16,
308
+ color: '#737373'
309
+ });
310
+
311
+ /* -------------------------------------------------------------------------- */
312
+ /* Time and place */
313
+ /* -------------------------------------------------------------------------- */
314
+
315
+ export const CalendarIcon = icon(HgCalendar03Icon, {
316
+ size: 16,
317
+ color: '#737373'
318
+ });
319
+ export const ClockIcon = icon(HgClock01Icon, {
320
+ size: 16,
321
+ color: '#737373'
322
+ });
323
+ export const GlobeIcon = icon(HgGlobeIcon, {
324
+ size: 16,
325
+ color: '#737373'
326
+ });
327
+ export const CompassIcon = icon(HgCompassIcon, {
328
+ size: 16,
329
+ color: '#737373'
330
+ });
331
+ export const CrosshairIcon = icon(HgCrosshairIcon, {
332
+ size: 16,
333
+ color: '#737373'
334
+ });
335
+
336
+ /* -------------------------------------------------------------------------- */
337
+ /* Text and editing */
338
+ /* -------------------------------------------------------------------------- */
339
+
340
+ export const BoldIcon = icon(HgTextBoldIcon, {
341
+ size: 16,
342
+ color: '#737373'
343
+ });
344
+ export const ItalicIcon = icon(HgTextItalicIcon, {
345
+ size: 16,
346
+ color: '#737373'
347
+ });
348
+ export const HeadingIcon = icon(HgHeading01Icon, {
349
+ size: 16,
350
+ color: '#737373'
351
+ });
352
+ export const ListIcon = icon(HgLeftToRightListBulletIcon, {
353
+ size: 16,
354
+ color: '#737373'
355
+ });
356
+ export const ListOrderedIcon = icon(HgLeftToRightListNumberIcon, {
357
+ size: 16,
358
+ color: '#737373'
359
+ });
360
+ export const ListChecksIcon = icon(HgCheckListIcon, {
361
+ size: 16,
362
+ color: '#737373'
363
+ });
364
+ export const QuoteIcon = icon(HgQuoteDownIcon, {
365
+ size: 16,
366
+ color: '#737373'
367
+ });
368
+ export const CodeIcon = icon(HgCodeIcon, {
369
+ size: 16,
370
+ color: '#737373'
371
+ });
372
+ export const PencilIcon = icon(HgPencilEdit01Icon, {
373
+ size: 16,
374
+ color: '#737373'
375
+ });
376
+ export const KeyboardIcon = icon(HgKeyboardIcon, {
377
+ size: 16,
378
+ color: '#737373'
379
+ });
380
+
381
+ /* -------------------------------------------------------------------------- */
382
+ /* Files and media */
383
+ /* -------------------------------------------------------------------------- */
384
+
385
+ export const FileIcon = icon(HgFile01Icon, {
386
+ size: 16,
387
+ color: '#737373'
388
+ });
389
+ export const FolderIcon = icon(HgFolder01Icon, {
390
+ size: 16,
391
+ color: '#737373'
392
+ });
393
+ export const FolderOpenIcon = icon(HgFolderOpenIcon, {
394
+ size: 16,
395
+ color: '#737373'
396
+ });
397
+ export const ImageIcon = icon(HgImage01Icon, {
398
+ size: 16,
399
+ color: '#737373'
400
+ });
401
+ export const PaperclipIcon = icon(HgAttachment01Icon, {
402
+ size: 16,
403
+ color: '#737373'
404
+ });
405
+ export const CameraIcon = icon(HgCamera01Icon, {
406
+ size: 16,
407
+ color: '#737373'
408
+ });
409
+ export const MicIcon = icon(HgMic01Icon, {
410
+ size: 16,
411
+ color: '#737373'
412
+ });
413
+ export const AudioLinesIcon = icon(HgAudioWave01Icon, {
414
+ size: 16,
415
+ color: '#737373'
416
+ });
417
+ export const PlayIcon = icon(HgPlayIcon, {
418
+ size: 16,
419
+ color: '#737373'
420
+ });
421
+ export const PauseIcon = icon(HgPauseIcon, {
422
+ size: 16,
423
+ color: '#737373',
424
+ strokeWidth: 1.5
425
+ });
426
+ export const DownloadIcon = icon(HgDownload01Icon, {
427
+ size: 16,
428
+ color: '#737373'
429
+ });
430
+ export const PackageIcon = icon(HgPackageIcon, {
431
+ size: 16,
432
+ color: '#737373'
433
+ });
434
+
435
+ /* -------------------------------------------------------------------------- */
436
+ /* Actions */
437
+ /* -------------------------------------------------------------------------- */
438
+
439
+ export const CopyIcon = icon(HgCopy01Icon, {
440
+ size: 16,
441
+ color: '#737373'
442
+ });
443
+ export const LinkIcon = icon(HgLink01Icon, {
444
+ size: 16,
445
+ color: '#737373'
446
+ });
447
+ export const ShareNodesIcon = icon(HgShare08Icon, {
448
+ size: 16,
449
+ color: '#737373'
450
+ });
451
+ export const SendIcon = icon(HgSentIcon, {
452
+ size: 16,
453
+ color: '#737373',
454
+ flip: true
455
+ });
456
+ export const SendArrowIcon = icon(HgSent02Icon, {
457
+ size: 16,
458
+ color: '#737373',
459
+ strokeWidth: 2.5
460
+ });
461
+ export const TrashIcon = icon(HgDelete02Icon, {
462
+ size: 16,
463
+ color: '#737373'
464
+ });
465
+ export const RotateCcwIcon = icon(HgRefreshCcwIcon, {
466
+ size: 16,
467
+ color: '#737373'
468
+ });
469
+ export const RotateCwIcon = icon(HgRefreshCwIcon, {
470
+ size: 16,
471
+ color: '#737373'
472
+ });
473
+ export const RepeatIcon = icon(HgRepeatIcon, {
474
+ size: 16,
475
+ color: '#737373'
476
+ });
477
+ export const PlusSquareIcon = icon(HgPlusSignSquareIcon, {
478
+ size: 16,
479
+ color: '#737373'
480
+ });
481
+ export const EyeIcon = icon(HgEyeIcon, {
482
+ size: 16,
483
+ color: '#737373'
484
+ });
485
+ export const LockIcon = icon(HgLockIcon, {
486
+ size: 16,
487
+ color: '#737373'
488
+ });
489
+ export const UnlockIcon = icon(HgLockOpenIcon, {
490
+ size: 16,
491
+ color: '#737373'
492
+ });
493
+
494
+ /* -------------------------------------------------------------------------- */
495
+ /* Marks and moods */
496
+ /* -------------------------------------------------------------------------- */
497
+
498
+ export const StarIcon = icon(HgStarIcon, {
499
+ size: 20,
500
+ color: '#737373',
501
+ strokeWidth: 1.6,
502
+ fillable: true
503
+ });
504
+ export const HeartIcon = icon(HgFavouriteIcon, {
505
+ size: 16,
506
+ color: '#737373',
507
+ fillable: true
508
+ });
509
+ export const BookmarkIcon = icon(HgBookmark01Icon, {
510
+ size: 16,
511
+ color: '#737373',
512
+ fillable: true
513
+ });
514
+ export const SparklesIcon = icon(HgSparklesIcon, {
515
+ size: 16,
516
+ color: '#737373'
517
+ });
518
+ export const MessageCircleIcon = icon(HgBubbleChatIcon, {
519
+ size: 16,
520
+ color: '#737373',
521
+ fillable: true
522
+ });
523
+ export const CardIcon = icon(HgCreditCardIcon, {
524
+ size: 16,
525
+ color: '#737373'
526
+ });
527
+ export const ReceiptIcon = icon(HgReceiptIcon, {
528
+ size: 16,
529
+ color: '#737373'
530
+ });
531
+ export const SunIcon = icon(HgSun03Icon, {
532
+ size: 18,
533
+ color: '#f5f5f5'
534
+ });
535
+ export const MoonIcon = icon(HgMoonIcon, {
536
+ size: 18,
537
+ color: '#262626'
538
+ });
539
+
540
+ /* -------------------------------------------------------------------------- */
541
+ /* A post's toggles */
542
+ /* -------------------------------------------------------------------------- */
543
+
544
+ export const ArrowUpIcon = icon(HgArrowUp02Icon, {
545
+ size: 16,
546
+ color: '#737373',
547
+ fillable: true
548
+ });
549
+ export const ArrowDownIcon = icon(HgArrowDown02Icon, {
550
+ size: 16,
551
+ color: '#737373',
552
+ fillable: true
553
+ });
554
+
555
+ /* -------------------------------------------------------------------------- */
556
+ /* Drawn by hand */
557
+ /* -------------------------------------------------------------------------- */
92
558
 
93
559
  /**
94
- * A single bar. Its weight is a prop because it has two jobs: it is the
95
- * indeterminate mark inside a checkbox, where it has to carry the same weight
96
- * as the check it stands in for, and it is the decrement half of a stepper,
97
- * where it has to match the plus beside it. Those are different weights, and a
98
- * bar that is heavier than the + it pairs with reads as a different glyph.
560
+ * The icons a post's action row is made of.
561
+ *
562
+ * These are the only ones in the set that take `filled`, and it is not a
563
+ * stylistic choice: a like, a save and a vote are toggles, and the outline and
564
+ * the solid are the two states of one control. Drawn as two different icons
565
+ * they would swap shape under the finger; drawn as one that fills, the shape
566
+ * stays put and only the inside changes.
99
567
  */
100
- export function MinusIcon({
101
- size = 14,
102
- color,
103
- strokeWidth = 3,
104
- ...props
105
- }) {
106
- const resolved = useResolvedColor(color, '#fff');
107
- return /*#__PURE__*/_jsx(Svg, {
108
- width: size,
109
- height: size,
110
- viewBox: "0 0 24 24",
111
- fill: "none",
112
- ...props,
113
- children: /*#__PURE__*/_jsx(Path, {
114
- d: "M5 12h14",
115
- stroke: resolved,
116
- strokeWidth: strokeWidth,
117
- strokeLinecap: "round",
118
- strokeLinejoin: "round"
119
- })
120
- });
121
- }
122
- export function ChevronUpIcon({
123
- size = 16,
124
- color,
125
- ...props
126
- }) {
127
- const resolved = useResolvedColor(color, '#737373');
128
- return /*#__PURE__*/_jsx(Svg, {
129
- width: size,
130
- height: size,
131
- viewBox: "0 0 24 24",
132
- fill: "none",
133
- ...props,
134
- children: /*#__PURE__*/_jsx(Path, {
135
- d: "m18 15-6-6-6 6",
136
- stroke: resolved,
137
- strokeWidth: 2,
138
- strokeLinecap: "round",
139
- strokeLinejoin: "round"
140
- })
141
- });
142
- }
143
- export function CalendarIcon({
144
- size = 16,
145
- color,
568
+
569
+ /** Google "G", in the four official brand colours. */
570
+ export function GoogleIcon({
571
+ size = 18,
146
572
  ...props
147
573
  }) {
148
- const resolved = useResolvedColor(color, '#737373');
149
574
  return /*#__PURE__*/_jsx(Svg, {
150
575
  width: size,
151
576
  height: size,
152
577
  viewBox: "0 0 24 24",
153
- fill: "none",
578
+ ...decorative,
154
579
  ...props,
155
- children: /*#__PURE__*/_jsx(Path, {
156
- d: "M8 2v4M16 2v4M3 10h18M5 4h14a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2Z",
157
- stroke: resolved,
158
- strokeWidth: 2,
159
- strokeLinecap: "round",
160
- strokeLinejoin: "round"
580
+ children: /*#__PURE__*/_jsxs(G, {
581
+ children: [/*#__PURE__*/_jsx(Path, {
582
+ fill: "#4285F4",
583
+ d: "M23.52 12.27c0-.79-.07-1.54-.2-2.27H12v4.51h6.47a5.53 5.53 0 0 1-2.4 3.63v3h3.88c2.27-2.09 3.57-5.17 3.57-8.87"
584
+ }), /*#__PURE__*/_jsx(Path, {
585
+ fill: "#34A853",
586
+ d: "M12 24c3.24 0 5.96-1.08 7.95-2.91l-3.88-3.01c-1.08.72-2.45 1.15-4.07 1.15-3.13 0-5.78-2.11-6.73-4.96H1.29v3.11A12 12 0 0 0 12 24"
587
+ }), /*#__PURE__*/_jsx(Path, {
588
+ fill: "#FBBC05",
589
+ d: "M5.27 14.27a7.2 7.2 0 0 1 0-4.54V6.62H1.29a12 12 0 0 0 0 10.76z"
590
+ }), /*#__PURE__*/_jsx(Path, {
591
+ fill: "#EA4335",
592
+ d: "M12 4.75c1.77 0 3.35.61 4.6 1.8l3.44-3.44C17.95 1.18 15.24 0 12 0A12 12 0 0 0 1.29 6.62l3.98 3.11C6.22 6.86 8.87 4.75 12 4.75"
593
+ })]
161
594
  })
162
595
  });
163
596
  }
164
597
 
165
- /** A clock face reading ten past ten — the hour, a time field, a schedule. */
166
- export function ClockIcon({
167
- size = 16,
168
- color,
169
- ...props
170
- }) {
171
- const resolved = useResolvedColor(color, '#737373');
172
- return /*#__PURE__*/_jsxs(Svg, {
173
- width: size,
174
- height: size,
175
- viewBox: "0 0 24 24",
176
- fill: "none",
177
- ...props,
178
- children: [/*#__PURE__*/_jsx(Circle, {
179
- cx: 12,
180
- cy: 12,
181
- r: 9,
182
- stroke: resolved,
183
- strokeWidth: 2,
184
- strokeLinecap: "round",
185
- strokeLinejoin: "round"
186
- }), /*#__PURE__*/_jsx(Path, {
187
- d: "M12 7v5l3.5 2",
188
- stroke: resolved,
189
- strokeWidth: 2,
190
- strokeLinecap: "round",
191
- strokeLinejoin: "round"
192
- })]
193
- });
194
- }
598
+ /** Facebook "f" mark. */
195
599
 
196
- /** A keyboard — swapping a gesture-driven control for typed entry. */
197
- export function KeyboardIcon({
198
- size = 16,
199
- color,
200
- ...props
201
- }) {
202
- const resolved = useResolvedColor(color, '#737373');
203
- return /*#__PURE__*/_jsxs(Svg, {
204
- width: size,
205
- height: size,
206
- viewBox: "0 0 24 24",
207
- fill: "none",
208
- ...props,
209
- children: [/*#__PURE__*/_jsx(Path, {
210
- d: "M4 5h16a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V6a1 1 0 0 1 1-1Z",
211
- stroke: resolved,
212
- strokeWidth: 2,
213
- strokeLinejoin: "round"
214
- }), /*#__PURE__*/_jsx(Path, {
215
- d: "M7 9h.01M11 9h.01M15 9h.01M7 12h.01M11 12h.01M15 12h.01M8 15h8",
216
- stroke: resolved,
217
- strokeWidth: 2,
218
- strokeLinecap: "round",
219
- strokeLinejoin: "round"
220
- })]
221
- });
222
- }
223
- export function BookmarkIcon({
224
- size = 16,
225
- color,
226
- filled,
227
- ...props
228
- }) {
229
- const resolved = useResolvedColor(color, '#737373');
230
- return /*#__PURE__*/_jsx(Svg, {
231
- width: size,
232
- height: size,
233
- viewBox: "0 0 24 24",
234
- fill: "none",
235
- ...props,
236
- children: /*#__PURE__*/_jsx(Path, {
237
- d: "m19 21-7-5-7 5V5a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2Z",
238
- fill: filled ? resolved : 'none',
239
- stroke: resolved,
240
- strokeWidth: 2,
241
- strokeLinecap: "round",
242
- strokeLinejoin: "round"
243
- })
244
- });
245
- }
246
- export function ChevronDownIcon({
247
- size = 16,
248
- color,
600
+ /** Facebook "f" mark. */
601
+ export function FacebookIcon({
602
+ size = 18,
249
603
  ...props
250
604
  }) {
251
- const resolved = useResolvedColor(color, '#737373');
252
605
  return /*#__PURE__*/_jsx(Svg, {
253
606
  width: size,
254
607
  height: size,
255
608
  viewBox: "0 0 24 24",
256
- fill: "none",
609
+ ...decorative,
257
610
  ...props,
258
611
  children: /*#__PURE__*/_jsx(Path, {
259
- d: "m6 9 6 6 6-6",
260
- stroke: resolved,
261
- strokeWidth: 2,
262
- strokeLinecap: "round",
263
- strokeLinejoin: "round"
612
+ fill: "#1877F2",
613
+ d: "M24 12.07C24 5.4 18.63 0 12 0S0 5.4 0 12.07C0 18.1 4.39 23.09 10.13 24v-8.44H7.08v-3.49h3.05V9.41c0-3.02 1.79-4.69 4.53-4.69 1.31 0 2.68.24 2.68.24v2.97h-1.51c-1.49 0-1.96.93-1.96 1.89v2.25h3.33l-.53 3.49h-2.8V24C19.61 23.09 24 18.1 24 12.07"
264
614
  })
265
615
  });
266
616
  }
267
617
 
268
618
  /**
269
- * Mirrors a directional glyph in a right-to-left subtree.
270
- *
271
- * Yoga moves a chevron to the other end of its row, but it cannot turn the
272
- * glyph around — so an RTL list row ends up with a right-pointing chevron on
273
- * its left edge, pointing back at the text. These arrows mean "onward" and
274
- * "back", and which way that is depends on which way you read.
275
- *
276
- * Only for glyphs whose meaning *is* a direction. An icon that happens to be
277
- * asymmetric — a pencil, a magnifier — means the same thing either way round,
278
- * and flipping it is just a wrong drawing. The vertical axis never mirrors, so
279
- * the up and down glyphs stay as they are drawn.
280
- *
281
- * Left-to-right gets an identity transform rather than no transform at all.
282
- * Dropping the prop leaves the last matrix the view was given in place, so a
283
- * glyph mirrored once stays mirrored when the direction flips back — the
284
- * arrows in an app that can switch direction at runtime end up pointing at the
285
- * text one toggle in, and never recover.
619
+ * Apple mark. Monochrome by design, so unlike the other brand marks it does
620
+ * follow the icon colour context — Apple's guidelines require it to match the
621
+ * button's text colour.
286
622
  */
287
- const IDENTITY = 'translate(0 0)';
288
- const MIRROR = 'scale(-1 1) translate(-24 0)';
289
- function useFlip() {
290
- return {
291
- transform: useDirection() === 'rtl' ? MIRROR : IDENTITY
292
- };
293
- }
294
- export function ChevronLeftIcon({
295
- size = 16,
296
- color,
297
- ...props
298
- }) {
299
- const resolved = useResolvedColor(color, '#737373');
300
- const flip = useFlip();
301
- return /*#__PURE__*/_jsx(Svg, {
302
- width: size,
303
- height: size,
304
- viewBox: "0 0 24 24",
305
- fill: "none",
306
- ...props,
307
- children: /*#__PURE__*/_jsx(Path, {
308
- d: "m15 18-6-6 6-6",
309
- stroke: resolved,
310
- strokeWidth: 2,
311
- strokeLinecap: "round",
312
- strokeLinejoin: "round",
313
- ...flip
314
- })
315
- });
316
- }
317
- export function ChevronRightIcon({
318
- size = 16,
623
+
624
+ /**
625
+ * Apple mark. Monochrome by design, so unlike the other brand marks it does
626
+ * follow the icon colour context — Apple's guidelines require it to match the
627
+ * button's text colour.
628
+ */
629
+ export function AppleIcon({
630
+ size = 18,
319
631
  color,
320
632
  ...props
321
633
  }) {
322
- const resolved = useResolvedColor(color, '#737373');
323
- const flip = useFlip();
634
+ const resolved = useResolvedColor(color, '#000000');
324
635
  return /*#__PURE__*/_jsx(Svg, {
325
636
  width: size,
326
637
  height: size,
327
638
  viewBox: "0 0 24 24",
328
- fill: "none",
639
+ ...decorative,
329
640
  ...props,
330
641
  children: /*#__PURE__*/_jsx(Path, {
331
- d: "m9 18 6-6-6-6",
332
- stroke: resolved,
333
- strokeWidth: 2,
334
- strokeLinecap: "round",
335
- strokeLinejoin: "round",
336
- ...flip
337
- })
338
- });
339
- }
340
- export function EllipsisIcon({
341
- size = 16,
342
- color,
343
- ...props
344
- }) {
345
- const resolved = useResolvedColor(color, '#737373');
346
- return /*#__PURE__*/_jsxs(Svg, {
347
- width: size,
348
- height: size,
349
- viewBox: "0 0 24 24",
350
- fill: "none",
351
- ...props,
352
- children: [/*#__PURE__*/_jsx(Circle, {
353
- cx: 5,
354
- cy: 12,
355
- r: 1.6,
356
- fill: resolved
357
- }), /*#__PURE__*/_jsx(Circle, {
358
- cx: 12,
359
- cy: 12,
360
- r: 1.6,
361
- fill: resolved
362
- }), /*#__PURE__*/_jsx(Circle, {
363
- cx: 19,
364
- cy: 12,
365
- r: 1.6,
366
- fill: resolved
367
- })]
368
- });
369
- }
370
- export function MenuIcon({
371
- size = 20,
372
- color,
373
- ...props
374
- }) {
375
- const resolved = useResolvedColor(color, '#737373');
376
- return /*#__PURE__*/_jsx(Svg, {
377
- width: size,
378
- height: size,
379
- viewBox: "0 0 24 24",
380
- fill: "none",
381
- ...props,
382
- children: /*#__PURE__*/_jsx(Path, {
383
- d: "M4 6h16M4 12h16M4 18h16",
384
- stroke: resolved,
385
- strokeWidth: 2,
386
- strokeLinecap: "round"
387
- })
388
- });
389
- }
390
- export function XIcon({
391
- size = 16,
392
- color,
393
- ...props
394
- }) {
395
- const resolved = useResolvedColor(color, '#737373');
396
- return /*#__PURE__*/_jsx(Svg, {
397
- width: size,
398
- height: size,
399
- viewBox: "0 0 24 24",
400
- fill: "none",
401
- ...props,
402
- children: /*#__PURE__*/_jsx(Path, {
403
- d: "M18 6 6 18M6 6l12 12",
404
- stroke: resolved,
405
- strokeWidth: 2,
406
- strokeLinecap: "round",
407
- strokeLinejoin: "round"
408
- })
409
- });
410
- }
411
- export function SearchIcon({
412
- size = 16,
413
- color,
414
- ...props
415
- }) {
416
- const resolved = useResolvedColor(color, '#737373');
417
- return /*#__PURE__*/_jsxs(Svg, {
418
- width: size,
419
- height: size,
420
- viewBox: "0 0 24 24",
421
- fill: "none",
422
- ...props,
423
- children: [/*#__PURE__*/_jsx(Circle, {
424
- cx: 11,
425
- cy: 11,
426
- r: 8,
427
- stroke: resolved,
428
- strokeWidth: 2
429
- }), /*#__PURE__*/_jsx(Path, {
430
- d: "m21 21-4.3-4.3",
431
- stroke: resolved,
432
- strokeWidth: 2,
433
- strokeLinecap: "round",
434
- strokeLinejoin: "round"
435
- })]
436
- });
437
- }
438
- export function ArrowUpRightIcon({
439
- size = 20,
440
- color,
441
- ...props
442
- }) {
443
- const resolved = useResolvedColor(color, '#fff');
444
- const flip = useFlip();
445
- return /*#__PURE__*/_jsx(Svg, {
446
- width: size,
447
- height: size,
448
- viewBox: "0 0 24 24",
449
- fill: "none",
450
- ...props,
451
- children: /*#__PURE__*/_jsx(Path, {
452
- d: "M7 17 17 7M8 7h9v9",
453
- stroke: resolved,
454
- strokeWidth: 2,
455
- strokeLinecap: "round",
456
- strokeLinejoin: "round",
457
- ...flip
458
- })
459
- });
460
- }
461
- export function SunIcon({
462
- size = 18,
463
- color,
464
- ...props
465
- }) {
466
- const resolved = useResolvedColor(color, '#f5f5f5');
467
- return /*#__PURE__*/_jsxs(Svg, {
468
- width: size,
469
- height: size,
470
- viewBox: "0 0 24 24",
471
- fill: "none",
472
- ...props,
473
- children: [/*#__PURE__*/_jsx(Circle, {
474
- cx: 12,
475
- cy: 12,
476
- r: 4,
477
- stroke: resolved,
478
- strokeWidth: 2
479
- }), /*#__PURE__*/_jsx(Path, {
480
- d: "M12 2v2m0 16v2M4.93 4.93l1.41 1.41m11.32 11.32 1.41 1.41M2 12h2m16 0h2M4.93 19.07l1.41-1.41M17.66 6.34l1.41-1.41",
481
- stroke: resolved,
482
- strokeWidth: 2,
483
- strokeLinecap: "round"
484
- })]
485
- });
486
- }
487
- export function MoonIcon({
488
- size = 18,
489
- color,
490
- ...props
491
- }) {
492
- const resolved = useResolvedColor(color, '#262626');
493
- return /*#__PURE__*/_jsx(Svg, {
494
- width: size,
495
- height: size,
496
- viewBox: "0 0 24 24",
497
- fill: "none",
498
- ...props,
499
- children: /*#__PURE__*/_jsx(Path, {
500
- d: "M21 12.79A9 9 0 1 1 11.21 3a7 7 0 0 0 9.79 9.79",
501
- stroke: resolved,
502
- strokeWidth: 2,
503
- strokeLinecap: "round",
504
- strokeLinejoin: "round"
505
- })
506
- });
507
- }
508
-
509
- /* -------------------------------------------------------------------------- */
510
- /* Filled status icons (Alert / Toast indicators) */
511
- /* -------------------------------------------------------------------------- */
512
-
513
- /** Info circle. Used for `default`, `info` and `destructive` status. */
514
- export function InfoIcon({
515
- size = 20,
516
- color,
517
- ...props
518
- }) {
519
- const resolved = useResolvedColor(color, 'currentColor');
520
- return /*#__PURE__*/_jsx(Svg, {
521
- width: size,
522
- height: size,
523
- viewBox: "0 0 16 16",
524
- fill: resolved,
525
- ...decorative,
526
- ...props,
527
- children: /*#__PURE__*/_jsx(Path, {
528
- d: "M8 13.5a5.5 5.5 0 1 0 0-11a5.5 5.5 0 0 0 0 11M8 15A7 7 0 1 0 8 1a7 7 0 0 0 0 14m1-9.5a1 1 0 1 1-2 0a1 1 0 0 1 2 0m-.25 3a.75.75 0 0 0-1.5 0V11a.75.75 0 0 0 1.5 0z",
529
- fillRule: "evenodd",
530
- clipRule: "evenodd"
531
- })
532
- });
533
- }
534
-
535
- /** Check circle. Used for `success` status. */
536
- export function CheckCircleIcon({
537
- size = 20,
538
- color,
539
- ...props
540
- }) {
541
- const resolved = useResolvedColor(color, 'currentColor');
542
- return /*#__PURE__*/_jsx(Svg, {
543
- width: size,
544
- height: size,
545
- viewBox: "0 0 16 16",
546
- fill: resolved,
547
- ...decorative,
548
- ...props,
549
- children: /*#__PURE__*/_jsx(Path, {
550
- d: "M13.5 8a5.5 5.5 0 1 1-11 0a5.5 5.5 0 0 1 11 0M15 8A7 7 0 1 1 1 8a7 7 0 0 1 14 0m-3.9-1.55a.75.75 0 1 0-1.2-.9L7.419 8.858L6.03 7.47a.75.75 0 0 0-1.06 1.06l2 2a.75.75 0 0 0 1.13-.08z",
551
- fillRule: "evenodd",
552
- clipRule: "evenodd"
553
- })
554
- });
555
- }
556
-
557
- /** Warning triangle. Used for `warning` status. */
558
- export function AlertTriangleIcon({
559
- size = 20,
560
- color,
561
- ...props
562
- }) {
563
- const resolved = useResolvedColor(color, 'currentColor');
564
- return /*#__PURE__*/_jsx(Svg, {
565
- width: size,
566
- height: size,
567
- viewBox: "0 0 16 16",
568
- fill: resolved,
569
- ...decorative,
570
- ...props,
571
- children: /*#__PURE__*/_jsx(Path, {
572
- d: "M7.134 2.994L2.217 11.5a1 1 0 0 0 .866 1.5h9.834a1 1 0 0 0 .866-1.5L8.866 2.993a1 1 0 0 0-1.732 0m3.03-.75c-.962-1.665-3.366-1.665-4.329 0L.918 10.749c-.963 1.666.24 3.751 2.165 3.751h9.834c1.925 0 3.128-2.085 2.164-3.751zM8 5a.75.75 0 0 1 .75.75v2a.75.75 0 0 1-1.5 0v-2A.75.75 0 0 1 8 5m1 5.75a1 1 0 1 1-2 0a1 1 0 0 1 2 0",
573
- fillRule: "evenodd",
574
- clipRule: "evenodd"
575
- })
576
- });
577
- }
578
-
579
- /* -------------------------------------------------------------------------- */
580
- /* Brand marks */
581
- /* -------------------------------------------------------------------------- */
582
-
583
- /*
584
- * These keep their official colours and so opt out of the icon colour
585
- * context — recolouring a brand mark to match a button is a trademark
586
- * problem, not a theming one.
587
- */
588
-
589
- /** Google "G", in the four official brand colours. */
590
- export function GoogleIcon({
591
- size = 18,
592
- ...props
593
- }) {
594
- return /*#__PURE__*/_jsx(Svg, {
595
- width: size,
596
- height: size,
597
- viewBox: "0 0 24 24",
598
- ...decorative,
599
- ...props,
600
- children: /*#__PURE__*/_jsxs(G, {
601
- children: [/*#__PURE__*/_jsx(Path, {
602
- fill: "#4285F4",
603
- d: "M23.52 12.27c0-.79-.07-1.54-.2-2.27H12v4.51h6.47a5.53 5.53 0 0 1-2.4 3.63v3h3.88c2.27-2.09 3.57-5.17 3.57-8.87"
604
- }), /*#__PURE__*/_jsx(Path, {
605
- fill: "#34A853",
606
- d: "M12 24c3.24 0 5.96-1.08 7.95-2.91l-3.88-3.01c-1.08.72-2.45 1.15-4.07 1.15-3.13 0-5.78-2.11-6.73-4.96H1.29v3.11A12 12 0 0 0 12 24"
607
- }), /*#__PURE__*/_jsx(Path, {
608
- fill: "#FBBC05",
609
- d: "M5.27 14.27a7.2 7.2 0 0 1 0-4.54V6.62H1.29a12 12 0 0 0 0 10.76z"
610
- }), /*#__PURE__*/_jsx(Path, {
611
- fill: "#EA4335",
612
- d: "M12 4.75c1.77 0 3.35.61 4.6 1.8l3.44-3.44C17.95 1.18 15.24 0 12 0A12 12 0 0 0 1.29 6.62l3.98 3.11C6.22 6.86 8.87 4.75 12 4.75"
613
- })]
614
- })
615
- });
616
- }
617
-
618
- /** Facebook "f" mark. */
619
- export function FacebookIcon({
620
- size = 18,
621
- ...props
622
- }) {
623
- return /*#__PURE__*/_jsx(Svg, {
624
- width: size,
625
- height: size,
626
- viewBox: "0 0 24 24",
627
- ...decorative,
628
- ...props,
629
- children: /*#__PURE__*/_jsx(Path, {
630
- fill: "#1877F2",
631
- d: "M24 12.07C24 5.4 18.63 0 12 0S0 5.4 0 12.07C0 18.1 4.39 23.09 10.13 24v-8.44H7.08v-3.49h3.05V9.41c0-3.02 1.79-4.69 4.53-4.69 1.31 0 2.68.24 2.68.24v2.97h-1.51c-1.49 0-1.96.93-1.96 1.89v2.25h3.33l-.53 3.49h-2.8V24C19.61 23.09 24 18.1 24 12.07"
632
- })
633
- });
634
- }
635
-
636
- /**
637
- * Apple mark. Monochrome by design, so unlike the other brand marks it does
638
- * follow the icon colour context — Apple's guidelines require it to match the
639
- * button's text colour.
640
- */
641
- export function AppleIcon({
642
- size = 18,
643
- color,
644
- ...props
645
- }) {
646
- const resolved = useResolvedColor(color, '#000000');
647
- return /*#__PURE__*/_jsx(Svg, {
648
- width: size,
649
- height: size,
650
- viewBox: "0 0 24 24",
651
- ...decorative,
652
- ...props,
653
- children: /*#__PURE__*/_jsx(Path, {
654
- fill: resolved,
655
- d: "M17.05 12.54c-.03-2.85 2.33-4.22 2.43-4.29-1.32-1.94-3.38-2.2-4.11-2.23-1.75-.18-3.42 1.03-4.31 1.03-.89 0-2.26-1.01-3.72-.98-1.91.03-3.68 1.11-4.66 2.82-1.99 3.45-.51 8.55 1.42 11.35.95 1.37 2.07 2.91 3.55 2.85 1.43-.06 1.97-.92 3.69-.92 1.72 0 2.21.92 3.72.89 1.54-.03 2.51-1.39 3.44-2.77 1.09-1.59 1.53-3.13 1.56-3.21-.03-.01-2.99-1.15-3.01-4.54M14.27 4.2c.79-.96 1.32-2.28 1.17-3.6-1.14.05-2.51.76-3.32 1.71-.73.85-1.37 2.2-1.2 3.5 1.27.1 2.57-.65 3.35-1.61"
642
+ fill: resolved,
643
+ d: "M17.05 12.54c-.03-2.85 2.33-4.22 2.43-4.29-1.32-1.94-3.38-2.2-4.11-2.23-1.75-.18-3.42 1.03-4.31 1.03-.89 0-2.26-1.01-3.72-.98-1.91.03-3.68 1.11-4.66 2.82-1.99 3.45-.51 8.55 1.42 11.35.95 1.37 2.07 2.91 3.55 2.85 1.43-.06 1.97-.92 3.69-.92 1.72 0 2.21.92 3.72.89 1.54-.03 2.51-1.39 3.44-2.77 1.09-1.59 1.53-3.13 1.56-3.21-.03-.01-2.99-1.15-3.01-4.54M14.27 4.2c.79-.96 1.32-2.28 1.17-3.6-1.14.05-2.51.76-3.32 1.71-.73.85-1.37 2.2-1.2 3.5 1.27.1 2.57-.65 3.35-1.61"
656
644
  })
657
645
  });
658
646
  }
@@ -661,1375 +649,6 @@ export function AppleIcon({
661
649
  /* Event icons (Timeline and other status surfaces) */
662
650
  /* -------------------------------------------------------------------------- */
663
651
 
664
- export function PlusSquareIcon({
665
- size = 16,
666
- color,
667
- ...props
668
- }) {
669
- const resolved = useResolvedColor(color, '#737373');
670
- return /*#__PURE__*/_jsx(Svg, {
671
- width: size,
672
- height: size,
673
- viewBox: "0 0 24 24",
674
- fill: "none",
675
- ...props,
676
- children: /*#__PURE__*/_jsx(Path, {
677
- d: "M4 6a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2zM12 8v8M8 12h8",
678
- stroke: resolved,
679
- strokeWidth: 2,
680
- strokeLinecap: "round",
681
- strokeLinejoin: "round"
682
- })
683
- });
684
- }
685
-
686
- /** Three connected nodes — a branch, a share, a fan-out. */
687
- export function ShareNodesIcon({
688
- size = 16,
689
- color,
690
- ...props
691
- }) {
692
- const resolved = useResolvedColor(color, '#737373');
693
- return /*#__PURE__*/_jsxs(Svg, {
694
- width: size,
695
- height: size,
696
- viewBox: "0 0 24 24",
697
- fill: "none",
698
- ...props,
699
- children: [/*#__PURE__*/_jsx(Circle, {
700
- cx: 18,
701
- cy: 5,
702
- r: 2.5,
703
- stroke: resolved,
704
- strokeWidth: 2
705
- }), /*#__PURE__*/_jsx(Circle, {
706
- cx: 6,
707
- cy: 12,
708
- r: 2.5,
709
- stroke: resolved,
710
- strokeWidth: 2
711
- }), /*#__PURE__*/_jsx(Circle, {
712
- cx: 18,
713
- cy: 19,
714
- r: 2.5,
715
- stroke: resolved,
716
- strokeWidth: 2
717
- }), /*#__PURE__*/_jsx(Path, {
718
- d: "m8.6 10.7 6.8-4M8.6 13.3l6.8 4",
719
- stroke: resolved,
720
- strokeWidth: 2,
721
- strokeLinecap: "round"
722
- })]
723
- });
724
- }
725
-
726
- /** Shield with an exclamation — a tripped guardrail. */
727
- export function ShieldAlertIcon({
728
- size = 16,
729
- color,
730
- ...props
731
- }) {
732
- const resolved = useResolvedColor(color, '#737373');
733
- return /*#__PURE__*/_jsxs(Svg, {
734
- width: size,
735
- height: size,
736
- viewBox: "0 0 24 24",
737
- fill: "none",
738
- ...props,
739
- children: [/*#__PURE__*/_jsx(Path, {
740
- d: "M12 2.5 4.5 5.5v6c0 4.6 3.2 8.6 7.5 10 4.3-1.4 7.5-5.4 7.5-10v-6z",
741
- stroke: resolved,
742
- strokeWidth: 2,
743
- strokeLinejoin: "round"
744
- }), /*#__PURE__*/_jsx(Path, {
745
- d: "M12 8v4",
746
- stroke: resolved,
747
- strokeWidth: 2,
748
- strokeLinecap: "round"
749
- }), /*#__PURE__*/_jsx(Circle, {
750
- cx: 12,
751
- cy: 15.5,
752
- r: 1,
753
- fill: resolved
754
- })]
755
- });
756
- }
757
-
758
- /** Shield with a check — a passed verification. */
759
- export function ShieldCheckIcon({
760
- size = 16,
761
- color,
762
- ...props
763
- }) {
764
- const resolved = useResolvedColor(color, '#737373');
765
- return /*#__PURE__*/_jsxs(Svg, {
766
- width: size,
767
- height: size,
768
- viewBox: "0 0 24 24",
769
- fill: "none",
770
- ...props,
771
- children: [/*#__PURE__*/_jsx(Path, {
772
- d: "M12 2.5 4.5 5.5v6c0 4.6 3.2 8.6 7.5 10 4.3-1.4 7.5-5.4 7.5-10v-6z",
773
- stroke: resolved,
774
- strokeWidth: 2,
775
- strokeLinejoin: "round"
776
- }), /*#__PURE__*/_jsx(Path, {
777
- d: "m9 12 2 2 4-4",
778
- stroke: resolved,
779
- strokeWidth: 2,
780
- strokeLinecap: "round",
781
- strokeLinejoin: "round"
782
- })]
783
- });
784
- }
785
- export function BellIcon({
786
- size = 16,
787
- color,
788
- ...props
789
- }) {
790
- const resolved = useResolvedColor(color, '#737373');
791
- return /*#__PURE__*/_jsx(Svg, {
792
- width: size,
793
- height: size,
794
- viewBox: "0 0 24 24",
795
- fill: "none",
796
- ...props,
797
- children: /*#__PURE__*/_jsx(Path, {
798
- d: "M18 8a6 6 0 1 0-12 0c0 7-3 9-3 9h18s-3-2-3-9M13.7 21a2 2 0 0 1-3.4 0",
799
- stroke: resolved,
800
- strokeWidth: 2,
801
- strokeLinecap: "round",
802
- strokeLinejoin: "round"
803
- })
804
- });
805
- }
806
- export function PackageIcon({
807
- size = 16,
808
- color,
809
- ...props
810
- }) {
811
- const resolved = useResolvedColor(color, '#737373');
812
- return /*#__PURE__*/_jsx(Svg, {
813
- width: size,
814
- height: size,
815
- viewBox: "0 0 24 24",
816
- fill: "none",
817
- ...props,
818
- children: /*#__PURE__*/_jsx(Path, {
819
- d: "m12 2.5 8 4.5v10l-8 4.5-8-4.5V7zM4 7l8 4.5L20 7M12 11.5V21",
820
- stroke: resolved,
821
- strokeWidth: 2,
822
- strokeLinecap: "round",
823
- strokeLinejoin: "round"
824
- })
825
- });
826
- }
827
- export function CardIcon({
828
- size = 16,
829
- color,
830
- ...props
831
- }) {
832
- const resolved = useResolvedColor(color, '#737373');
833
- return /*#__PURE__*/_jsx(Svg, {
834
- width: size,
835
- height: size,
836
- viewBox: "0 0 24 24",
837
- fill: "none",
838
- ...props,
839
- children: /*#__PURE__*/_jsx(Path, {
840
- d: "M3 7a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2zM3 10h18",
841
- stroke: resolved,
842
- strokeWidth: 2,
843
- strokeLinecap: "round",
844
- strokeLinejoin: "round"
845
- })
846
- });
847
- }
848
- export function ReceiptIcon({
849
- size = 16,
850
- color,
851
- ...props
852
- }) {
853
- const resolved = useResolvedColor(color, '#737373');
854
- return /*#__PURE__*/_jsx(Svg, {
855
- width: size,
856
- height: size,
857
- viewBox: "0 0 24 24",
858
- fill: "none",
859
- ...props,
860
- children: /*#__PURE__*/_jsx(Path, {
861
- d: "M5 3h14v18l-2.3-1.6L14.4 21l-2.4-1.6L9.6 21l-2.3-1.6L5 21zM9 8h6M9 12h6",
862
- stroke: resolved,
863
- strokeWidth: 2,
864
- strokeLinecap: "round",
865
- strokeLinejoin: "round"
866
- })
867
- });
868
- }
869
-
870
- /** Paper plane — sent, submitted, approved-and-forwarded. */
871
- export function SendIcon({
872
- size = 16,
873
- color,
874
- ...props
875
- }) {
876
- const resolved = useResolvedColor(color, '#737373');
877
- const flip = useFlip();
878
- return /*#__PURE__*/_jsx(Svg, {
879
- width: size,
880
- height: size,
881
- viewBox: "0 0 24 24",
882
- fill: "none",
883
- ...props,
884
- children: /*#__PURE__*/_jsx(Path, {
885
- d: "M21.5 2.5 2.5 10l7.5 3 3 7.5z",
886
- stroke: resolved,
887
- strokeWidth: 2,
888
- strokeLinejoin: "round",
889
- ...flip
890
- })
891
- });
892
- }
893
-
894
- /** Document with a folded corner — a file attachment. */
895
- export function FileIcon({
896
- size = 16,
897
- color,
898
- ...props
899
- }) {
900
- const resolved = useResolvedColor(color, '#737373');
901
- return /*#__PURE__*/_jsx(Svg, {
902
- width: size,
903
- height: size,
904
- viewBox: "0 0 24 24",
905
- fill: "none",
906
- ...props,
907
- children: /*#__PURE__*/_jsx(Path, {
908
- d: "M14 3H7a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V8zM14 3v5h5",
909
- stroke: resolved,
910
- strokeWidth: 2,
911
- strokeLinecap: "round",
912
- strokeLinejoin: "round"
913
- })
914
- });
915
- }
916
-
917
- /* ------------------------------------------------------------------ *
918
- * Text formatting. Drawn as the letterforms and marks an editor's
919
- * toolbar uses, rather than as pictures of them — a B that is a bold B
920
- * is read before it is recognised.
921
- * ------------------------------------------------------------------ */
922
-
923
- /** Bold — the two-bowled B. */
924
- export function BoldIcon({
925
- size = 16,
926
- color,
927
- ...props
928
- }) {
929
- const resolved = useResolvedColor(color, '#737373');
930
- return /*#__PURE__*/_jsx(Svg, {
931
- width: size,
932
- height: size,
933
- viewBox: "0 0 24 24",
934
- fill: "none",
935
- ...props,
936
- children: /*#__PURE__*/_jsx(Path, {
937
- d: "M6 4h8a4 4 0 0 1 0 8H6zM6 12h9a4 4 0 0 1 0 8H6z",
938
- stroke: resolved,
939
- strokeWidth: 2,
940
- strokeLinecap: "round",
941
- strokeLinejoin: "round"
942
- })
943
- });
944
- }
945
-
946
- /** Italic — a slanted stroke between its serifs. */
947
- export function ItalicIcon({
948
- size = 16,
949
- color,
950
- ...props
951
- }) {
952
- const resolved = useResolvedColor(color, '#737373');
953
- return /*#__PURE__*/_jsx(Svg, {
954
- width: size,
955
- height: size,
956
- viewBox: "0 0 24 24",
957
- fill: "none",
958
- ...props,
959
- children: /*#__PURE__*/_jsx(Path, {
960
- d: "M19 4h-9M14 20H5M15 4 9 20",
961
- stroke: resolved,
962
- strokeWidth: 2,
963
- strokeLinecap: "round",
964
- strokeLinejoin: "round"
965
- })
966
- });
967
- }
968
-
969
- /** Heading — the crossbar H. */
970
- export function HeadingIcon({
971
- size = 16,
972
- color,
973
- ...props
974
- }) {
975
- const resolved = useResolvedColor(color, '#737373');
976
- return /*#__PURE__*/_jsx(Svg, {
977
- width: size,
978
- height: size,
979
- viewBox: "0 0 24 24",
980
- fill: "none",
981
- ...props,
982
- children: /*#__PURE__*/_jsx(Path, {
983
- d: "M6 12h12M6 20V4M18 20V4",
984
- stroke: resolved,
985
- strokeWidth: 2,
986
- strokeLinecap: "round",
987
- strokeLinejoin: "round"
988
- })
989
- });
990
- }
991
-
992
- /** Bulleted list — three rules, each behind a dot. */
993
- export function ListIcon({
994
- size = 16,
995
- color,
996
- ...props
997
- }) {
998
- const resolved = useResolvedColor(color, '#737373');
999
- return /*#__PURE__*/_jsx(Svg, {
1000
- width: size,
1001
- height: size,
1002
- viewBox: "0 0 24 24",
1003
- fill: "none",
1004
- ...props,
1005
- children: /*#__PURE__*/_jsx(Path, {
1006
- d: "M8 6h13M8 12h13M8 18h13M3 6h.01M3 12h.01M3 18h.01",
1007
- stroke: resolved,
1008
- strokeWidth: 2,
1009
- strokeLinecap: "round",
1010
- strokeLinejoin: "round"
1011
- })
1012
- });
1013
- }
1014
-
1015
- /** Numbered list — the same rules, counted. */
1016
- export function ListOrderedIcon({
1017
- size = 16,
1018
- color,
1019
- ...props
1020
- }) {
1021
- const resolved = useResolvedColor(color, '#737373');
1022
- return /*#__PURE__*/_jsx(Svg, {
1023
- width: size,
1024
- height: size,
1025
- viewBox: "0 0 24 24",
1026
- fill: "none",
1027
- ...props,
1028
- children: /*#__PURE__*/_jsx(Path, {
1029
- d: "M10 6h11M10 12h11M10 18h11M4 4h1v4M4 8h2M6 15a1.5 1.5 0 1 0-2-1.4M4 17l2-2M4 17h2",
1030
- stroke: resolved,
1031
- strokeWidth: 2,
1032
- strokeLinecap: "round",
1033
- strokeLinejoin: "round"
1034
- })
1035
- });
1036
- }
1037
-
1038
- /** Block quote — the rule a quoted passage is set behind. */
1039
- export function QuoteIcon({
1040
- size = 16,
1041
- color,
1042
- ...props
1043
- }) {
1044
- const resolved = useResolvedColor(color, '#737373');
1045
- return /*#__PURE__*/_jsx(Svg, {
1046
- width: size,
1047
- height: size,
1048
- viewBox: "0 0 24 24",
1049
- fill: "none",
1050
- ...props,
1051
- children: /*#__PURE__*/_jsx(Path, {
1052
- d: "M4 5v14M9 7h11M9 12h11M9 17h7",
1053
- stroke: resolved,
1054
- strokeWidth: 2,
1055
- strokeLinecap: "round",
1056
- strokeLinejoin: "round"
1057
- })
1058
- });
1059
- }
1060
-
1061
- /** Code — the pair of angle brackets. */
1062
- export function CodeIcon({
1063
- size = 16,
1064
- color,
1065
- ...props
1066
- }) {
1067
- const resolved = useResolvedColor(color, '#737373');
1068
- return /*#__PURE__*/_jsx(Svg, {
1069
- width: size,
1070
- height: size,
1071
- viewBox: "0 0 24 24",
1072
- fill: "none",
1073
- ...props,
1074
- children: /*#__PURE__*/_jsx(Path, {
1075
- d: "m8 18-6-6 6-6M16 6l6 6-6 6",
1076
- stroke: resolved,
1077
- strokeWidth: 2,
1078
- strokeLinecap: "round",
1079
- strokeLinejoin: "round"
1080
- })
1081
- });
1082
- }
1083
-
1084
- /** Closed folder with a tab — a branch nobody has opened yet. */
1085
- export function FolderIcon({
1086
- size = 16,
1087
- color,
1088
- ...props
1089
- }) {
1090
- const resolved = useResolvedColor(color, '#737373');
1091
- return /*#__PURE__*/_jsx(Svg, {
1092
- width: size,
1093
- height: size,
1094
- viewBox: "0 0 24 24",
1095
- fill: "none",
1096
- ...props,
1097
- children: /*#__PURE__*/_jsx(Path, {
1098
- 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",
1099
- stroke: resolved,
1100
- strokeWidth: 2,
1101
- strokeLinecap: "round",
1102
- strokeLinejoin: "round"
1103
- })
1104
- });
1105
- }
1106
-
1107
- /**
1108
- * Folder tipped open, its front face sheared to the side — the same branch
1109
- * once it is expanded. Drawn as a separate glyph rather than a rotation of
1110
- * `FolderIcon`, because a folder that opens by spinning reads as a mistake.
1111
- */
1112
- export function FolderOpenIcon({
1113
- size = 16,
1114
- color,
1115
- ...props
1116
- }) {
1117
- const resolved = useResolvedColor(color, '#737373');
1118
- return /*#__PURE__*/_jsx(Svg, {
1119
- width: size,
1120
- height: size,
1121
- viewBox: "0 0 24 24",
1122
- fill: "none",
1123
- ...props,
1124
- children: /*#__PURE__*/_jsx(Path, {
1125
- d: "M6 14l1.45-2.9A2 2 0 0 1 9.24 10H22a2 2 0 0 1 1.94 2.5l-1.55 6a2 2 0 0 1-1.94 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.93a2 2 0 0 1 1.66.9l.82 1.2a2 2 0 0 0 1.66.9H18a2 2 0 0 1 2 2v2",
1126
- stroke: resolved,
1127
- strokeWidth: 2,
1128
- strokeLinecap: "round",
1129
- strokeLinejoin: "round"
1130
- })
1131
- });
1132
- }
1133
-
1134
- /** Framed picture with a sun and a corner peak — an image attachment. */
1135
- export function ImageIcon({
1136
- size = 16,
1137
- color,
1138
- ...props
1139
- }) {
1140
- const resolved = useResolvedColor(color, '#737373');
1141
- return /*#__PURE__*/_jsx(Svg, {
1142
- width: size,
1143
- height: size,
1144
- viewBox: "0 0 24 24",
1145
- fill: "none",
1146
- ...props,
1147
- children: /*#__PURE__*/_jsx(Path, {
1148
- d: "M4 4h16v16H4z M8.5 10a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3zM20 15l-4.5-4.5L6 20",
1149
- stroke: resolved,
1150
- strokeWidth: 2,
1151
- strokeLinecap: "round",
1152
- strokeLinejoin: "round"
1153
- })
1154
- });
1155
- }
1156
-
1157
- /** A paperclip — attaching a file to a composer. */
1158
- export function PaperclipIcon({
1159
- size = 16,
1160
- color,
1161
- ...props
1162
- }) {
1163
- const resolved = useResolvedColor(color, '#737373');
1164
- return /*#__PURE__*/_jsx(Svg, {
1165
- width: size,
1166
- height: size,
1167
- viewBox: "0 0 24 24",
1168
- fill: "none",
1169
- ...props,
1170
- children: /*#__PURE__*/_jsx(Path, {
1171
- d: "M21 8.5 11.3 18.2a4 4 0 0 1-5.6-5.6l9-9a2.5 2.5 0 0 1 3.6 3.6l-9 9a1 1 0 0 1-1.5-1.5l8.3-8.3",
1172
- stroke: resolved,
1173
- strokeWidth: 2,
1174
- strokeLinecap: "round",
1175
- strokeLinejoin: "round"
1176
- })
1177
- });
1178
- }
1179
-
1180
- /** A capsule on a stand — a microphone, for anything voice. */
1181
- /** A voice waveform — dictation, voice mode, a recording that has a shape. */
1182
- export function AudioLinesIcon({
1183
- size = 16,
1184
- color,
1185
- ...props
1186
- }) {
1187
- const resolved = useResolvedColor(color, '#737373');
1188
- return /*#__PURE__*/_jsx(Svg, {
1189
- width: size,
1190
- height: size,
1191
- viewBox: "0 0 24 24",
1192
- fill: "none",
1193
- ...props,
1194
- children: /*#__PURE__*/_jsx(Path, {
1195
- d: "M2 10v3M6 6v11M10 3v18M14 8v7M18 5v13M22 10v3",
1196
- stroke: resolved,
1197
- strokeWidth: 2,
1198
- strokeLinecap: "round",
1199
- strokeLinejoin: "round"
1200
- })
1201
- });
1202
- }
1203
- export function MicIcon({
1204
- size = 16,
1205
- color,
1206
- ...props
1207
- }) {
1208
- const resolved = useResolvedColor(color, '#737373');
1209
- return /*#__PURE__*/_jsx(Svg, {
1210
- width: size,
1211
- height: size,
1212
- viewBox: "0 0 24 24",
1213
- fill: "none",
1214
- ...props,
1215
- children: /*#__PURE__*/_jsx(Path, {
1216
- d: "M12 3a3 3 0 0 0-3 3v6a3 3 0 0 0 6 0V6a3 3 0 0 0-3-3zM5 11v1a7 7 0 0 0 14 0v-1M12 19v3",
1217
- stroke: resolved,
1218
- strokeWidth: 2,
1219
- strokeLinecap: "round",
1220
- strokeLinejoin: "round"
1221
- })
1222
- });
1223
- }
1224
-
1225
- /** A filled triangle — start playback. */
1226
- export function PlayIcon({
1227
- size = 16,
1228
- color,
1229
- ...props
1230
- }) {
1231
- const resolved = useResolvedColor(color, '#737373');
1232
- return /*#__PURE__*/_jsx(Svg, {
1233
- width: size,
1234
- height: size,
1235
- viewBox: "0 0 24 24",
1236
- fill: "none",
1237
- ...props,
1238
- children: /*#__PURE__*/_jsx(Path, {
1239
- d: "M7 4.5v15l13-7.5z",
1240
- fill: resolved,
1241
- stroke: resolved,
1242
- strokeWidth: 2,
1243
- strokeLinejoin: "round"
1244
- })
1245
- });
1246
- }
1247
-
1248
- /** Two filled bars — hold playback where it is. */
1249
- export function PauseIcon({
1250
- size = 16,
1251
- color,
1252
- ...props
1253
- }) {
1254
- const resolved = useResolvedColor(color, '#737373');
1255
- return /*#__PURE__*/_jsx(Svg, {
1256
- width: size,
1257
- height: size,
1258
- viewBox: "0 0 24 24",
1259
- fill: "none",
1260
- ...props,
1261
- children: /*#__PURE__*/_jsx(Path, {
1262
- d: "M8 5h2v14H8zM14 5h2v14h-2z",
1263
- fill: resolved,
1264
- stroke: resolved,
1265
- strokeWidth: 1.5,
1266
- strokeLinejoin: "round"
1267
- })
1268
- });
1269
- }
1270
-
1271
- /**
1272
- * A five-pointed star — the mark of a Rating. `filled` paints the interior;
1273
- * left hollow it is the outline of an unearned star. Both share the same
1274
- * geometry, so a filled star clipped over an empty one lines up to the pixel.
1275
- */
1276
- export function StarIcon({
1277
- size = 20,
1278
- color,
1279
- filled = false,
1280
- ...props
1281
- }) {
1282
- const resolved = useResolvedColor(color, '#737373');
1283
- return /*#__PURE__*/_jsx(Svg, {
1284
- width: size,
1285
- height: size,
1286
- viewBox: "0 0 24 24",
1287
- fill: "none",
1288
- ...props,
1289
- children: /*#__PURE__*/_jsx(Path, {
1290
- d: "M12 2.5l2.9 5.88 6.49.94-4.7 4.58 1.11 6.46L12 17.82 6.2 20.86l1.11-6.46-4.7-4.58 6.49-.94z",
1291
- fill: filled ? resolved : 'none',
1292
- stroke: resolved,
1293
- strokeWidth: 1.6,
1294
- strokeLinejoin: "round",
1295
- strokeLinecap: "round"
1296
- })
1297
- });
1298
- }
1299
-
1300
- /** A pencil at an angle — draw, sign, edit by hand. */
1301
- export function PencilIcon({
1302
- size = 16,
1303
- color,
1304
- ...props
1305
- }) {
1306
- const resolved = useResolvedColor(color, '#737373');
1307
- return /*#__PURE__*/_jsx(Svg, {
1308
- width: size,
1309
- height: size,
1310
- viewBox: "0 0 24 24",
1311
- fill: "none",
1312
- ...props,
1313
- children: /*#__PURE__*/_jsx(Path, {
1314
- d: "M16.5 3.5a2.12 2.12 0 0 1 3 3L7 19l-4 1 1-4z",
1315
- stroke: resolved,
1316
- strokeWidth: 2,
1317
- strokeLinecap: "round",
1318
- strokeLinejoin: "round"
1319
- })
1320
- });
1321
- }
1322
-
1323
- /** An arrow curling anticlockwise — undo, reset, start over. */
1324
- export function RotateCcwIcon({
1325
- size = 16,
1326
- color,
1327
- ...props
1328
- }) {
1329
- const resolved = useResolvedColor(color, '#737373');
1330
- return /*#__PURE__*/_jsxs(Svg, {
1331
- width: size,
1332
- height: size,
1333
- viewBox: "0 0 24 24",
1334
- fill: "none",
1335
- ...props,
1336
- children: [/*#__PURE__*/_jsx(Path, {
1337
- d: "M3 12a9 9 0 1 0 2.64-6.36L3 8",
1338
- stroke: resolved,
1339
- strokeWidth: 2,
1340
- strokeLinecap: "round",
1341
- strokeLinejoin: "round"
1342
- }), /*#__PURE__*/_jsx(Path, {
1343
- d: "M3 3v5h5",
1344
- stroke: resolved,
1345
- strokeWidth: 2,
1346
- strokeLinecap: "round",
1347
- strokeLinejoin: "round"
1348
- })]
1349
- });
1350
- }
1351
-
1352
- /** An arrow curling clockwise — redo, put back what was undone. */
1353
- export function RotateCwIcon({
1354
- size = 16,
1355
- color,
1356
- ...props
1357
- }) {
1358
- const resolved = useResolvedColor(color, '#737373');
1359
- return /*#__PURE__*/_jsxs(Svg, {
1360
- width: size,
1361
- height: size,
1362
- viewBox: "0 0 24 24",
1363
- fill: "none",
1364
- ...props,
1365
- children: [/*#__PURE__*/_jsx(Path, {
1366
- d: "M21 12a9 9 0 1 1-2.64-6.36L21 8",
1367
- stroke: resolved,
1368
- strokeWidth: 2,
1369
- strokeLinecap: "round",
1370
- strokeLinejoin: "round"
1371
- }), /*#__PURE__*/_jsx(Path, {
1372
- d: "M21 3v5h-5",
1373
- stroke: resolved,
1374
- strokeWidth: 2,
1375
- strokeLinecap: "round",
1376
- strokeLinejoin: "round"
1377
- })]
1378
- });
1379
- }
1380
-
1381
- /** A bin — discard what is there. */
1382
- export function TrashIcon({
1383
- size = 16,
1384
- color,
1385
- ...props
1386
- }) {
1387
- const resolved = useResolvedColor(color, '#737373');
1388
- return /*#__PURE__*/_jsx(Svg, {
1389
- width: size,
1390
- height: size,
1391
- viewBox: "0 0 24 24",
1392
- fill: "none",
1393
- ...props,
1394
- children: /*#__PURE__*/_jsx(Path, {
1395
- d: "M4 7h16M10 4h4M6 7l1 13h10l1-13",
1396
- stroke: resolved,
1397
- strokeWidth: 2,
1398
- strokeLinecap: "round",
1399
- strokeLinejoin: "round"
1400
- })
1401
- });
1402
- }
1403
-
1404
- /**
1405
- * Two columns of dots — the grip on a row that can be dragged somewhere else.
1406
- *
1407
- * Dots rather than the stacked rules of a menu glyph, and two columns rather
1408
- * than one: the pattern has to read as a surface to take hold of from either
1409
- * side, and a single column reads as a divider instead.
1410
- */
1411
- export function GripVerticalIcon({
1412
- size = 16,
1413
- color,
1414
- ...props
1415
- }) {
1416
- const resolved = useResolvedColor(color, '#737373');
1417
- return /*#__PURE__*/_jsx(Svg, {
1418
- width: size,
1419
- height: size,
1420
- viewBox: "0 0 24 24",
1421
- fill: "none",
1422
- ...props,
1423
- children: /*#__PURE__*/_jsx(Path, {
1424
- d: "M9 5h.01M9 12h.01M9 19h.01M15 5h.01M15 12h.01M15 19h.01",
1425
- stroke: resolved,
1426
- strokeWidth: 2.5,
1427
- strokeLinecap: "round",
1428
- strokeLinejoin: "round"
1429
- })
1430
- });
1431
- }
1432
-
1433
- /** An arrow into a tray — save the thing to a file. */
1434
- export function DownloadIcon({
1435
- size = 16,
1436
- color,
1437
- ...props
1438
- }) {
1439
- const resolved = useResolvedColor(color, '#737373');
1440
- return /*#__PURE__*/_jsx(Svg, {
1441
- width: size,
1442
- height: size,
1443
- viewBox: "0 0 24 24",
1444
- fill: "none",
1445
- ...props,
1446
- children: /*#__PURE__*/_jsx(Path, {
1447
- d: "M12 3v12m0 0 4-4m-4 4-4-4M4 19h16",
1448
- stroke: resolved,
1449
- strokeWidth: 2,
1450
- strokeLinecap: "round",
1451
- strokeLinejoin: "round"
1452
- })
1453
- });
1454
- }
1455
-
1456
- /** A cross of two strokes — zoom in, add. Pairs with MinusIcon. */
1457
- export function PlusIcon({
1458
- size = 16,
1459
- color,
1460
- ...props
1461
- }) {
1462
- const resolved = useResolvedColor(color, '#737373');
1463
- return /*#__PURE__*/_jsx(Svg, {
1464
- width: size,
1465
- height: size,
1466
- viewBox: "0 0 24 24",
1467
- fill: "none",
1468
- ...props,
1469
- children: /*#__PURE__*/_jsx(Path, {
1470
- d: "M12 5v14M5 12h14",
1471
- stroke: resolved,
1472
- strokeWidth: 2,
1473
- strokeLinecap: "round"
1474
- })
1475
- });
1476
- }
1477
-
1478
- /** Four corners pushing outward — fit everything into view. */
1479
- export function MaximizeIcon({
1480
- size = 16,
1481
- color,
1482
- ...props
1483
- }) {
1484
- const resolved = useResolvedColor(color, '#737373');
1485
- return /*#__PURE__*/_jsx(Svg, {
1486
- width: size,
1487
- height: size,
1488
- viewBox: "0 0 24 24",
1489
- fill: "none",
1490
- ...props,
1491
- children: /*#__PURE__*/_jsx(Path, {
1492
- d: "M8 3H3v5M16 3h5v5M8 21H3v-5M16 21h5v-5",
1493
- stroke: resolved,
1494
- strokeWidth: 2,
1495
- strokeLinecap: "round",
1496
- strokeLinejoin: "round"
1497
- })
1498
- });
1499
- }
1500
-
1501
- /** Crosshairs on a centre dot — put me where I actually am. */
1502
- export function CrosshairIcon({
1503
- size = 16,
1504
- color,
1505
- ...props
1506
- }) {
1507
- const resolved = useResolvedColor(color, '#737373');
1508
- return /*#__PURE__*/_jsxs(Svg, {
1509
- width: size,
1510
- height: size,
1511
- viewBox: "0 0 24 24",
1512
- fill: "none",
1513
- ...props,
1514
- children: [/*#__PURE__*/_jsx(Circle, {
1515
- cx: 12,
1516
- cy: 12,
1517
- r: 7,
1518
- stroke: resolved,
1519
- strokeWidth: 2
1520
- }), /*#__PURE__*/_jsx(Path, {
1521
- d: "M12 2v3M12 19v3M2 12h3M19 12h3",
1522
- stroke: resolved,
1523
- strokeWidth: 2,
1524
- strokeLinecap: "round"
1525
- }), /*#__PURE__*/_jsx(Circle, {
1526
- cx: 12,
1527
- cy: 12,
1528
- r: 1.5,
1529
- fill: resolved
1530
- })]
1531
- });
1532
- }
1533
-
1534
- /** A compass needle — which way is north. */
1535
- export function GlobeIcon({
1536
- size = 16,
1537
- color,
1538
- ...props
1539
- }) {
1540
- const resolved = useResolvedColor(color, '#737373');
1541
- return /*#__PURE__*/_jsxs(Svg, {
1542
- width: size,
1543
- height: size,
1544
- viewBox: "0 0 24 24",
1545
- fill: "none",
1546
- ...props,
1547
- children: [/*#__PURE__*/_jsx(Circle, {
1548
- cx: 12,
1549
- cy: 12,
1550
- r: 10,
1551
- stroke: resolved,
1552
- strokeWidth: 2,
1553
- strokeLinecap: "round",
1554
- strokeLinejoin: "round"
1555
- }), /*#__PURE__*/_jsx(Path, {
1556
- d: "M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20M2 12h20",
1557
- stroke: resolved,
1558
- strokeWidth: 2,
1559
- strokeLinecap: "round",
1560
- strokeLinejoin: "round"
1561
- })]
1562
- });
1563
- }
1564
- export function CameraIcon({
1565
- size = 16,
1566
- color,
1567
- ...props
1568
- }) {
1569
- const resolved = useResolvedColor(color, '#737373');
1570
- return /*#__PURE__*/_jsxs(Svg, {
1571
- width: size,
1572
- height: size,
1573
- viewBox: "0 0 24 24",
1574
- fill: "none",
1575
- ...props,
1576
- children: [/*#__PURE__*/_jsx(Path, {
1577
- d: "M13.997 4a2 2 0 0 1 1.76 1.05l.486.9A2 2 0 0 0 18.003 7H20a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V9a2 2 0 0 1 2-2h1.997a2 2 0 0 0 1.759-1.048l.489-.904A2 2 0 0 1 10.004 4z",
1578
- stroke: resolved,
1579
- strokeWidth: 2,
1580
- strokeLinecap: "round",
1581
- strokeLinejoin: "round"
1582
- }), /*#__PURE__*/_jsx(Circle, {
1583
- cx: 12,
1584
- cy: 13,
1585
- r: 3,
1586
- stroke: resolved,
1587
- strokeWidth: 2,
1588
- strokeLinecap: "round",
1589
- strokeLinejoin: "round"
1590
- })]
1591
- });
1592
- }
1593
-
1594
- /**
1595
- * The glyph on a control that opens a list of values — a stacked pair, because
1596
- * one chevron promises a direction the control does not travel in.
1597
- */
1598
- export function ChevronsUpDownIcon({
1599
- size = 16,
1600
- color,
1601
- ...props
1602
- }) {
1603
- const resolved = useResolvedColor(color, '#737373');
1604
- return /*#__PURE__*/_jsx(Svg, {
1605
- width: size,
1606
- height: size,
1607
- viewBox: "0 0 24 24",
1608
- fill: "none",
1609
- ...props,
1610
- children: /*#__PURE__*/_jsx(Path, {
1611
- d: "m7 15 5 5 5-5M7 9l5-5 5 5",
1612
- stroke: resolved,
1613
- strokeWidth: 2,
1614
- strokeLinecap: "round",
1615
- strokeLinejoin: "round"
1616
- })
1617
- });
1618
- }
1619
- export function CompassIcon({
1620
- size = 16,
1621
- color,
1622
- ...props
1623
- }) {
1624
- const resolved = useResolvedColor(color, '#737373');
1625
- return /*#__PURE__*/_jsxs(Svg, {
1626
- width: size,
1627
- height: size,
1628
- viewBox: "0 0 24 24",
1629
- fill: "none",
1630
- ...props,
1631
- children: [/*#__PURE__*/_jsx(Circle, {
1632
- cx: 12,
1633
- cy: 12,
1634
- r: 9,
1635
- stroke: resolved,
1636
- strokeWidth: 2
1637
- }), /*#__PURE__*/_jsx(Path, {
1638
- d: "M15.5 8.5l-2 5-5 2 2-5 5-2z",
1639
- stroke: resolved,
1640
- strokeWidth: 2,
1641
- strokeLinejoin: "round"
1642
- })]
1643
- });
1644
- }
1645
-
1646
- /** A closed padlock — the thing behind it cannot be moved. */
1647
- export function LockIcon({
1648
- size = 16,
1649
- color,
1650
- ...props
1651
- }) {
1652
- const resolved = useResolvedColor(color, '#737373');
1653
- return /*#__PURE__*/_jsxs(Svg, {
1654
- width: size,
1655
- height: size,
1656
- viewBox: "0 0 24 24",
1657
- fill: "none",
1658
- ...props,
1659
- children: [/*#__PURE__*/_jsx(Path, {
1660
- d: "M5 11h14v10H5z",
1661
- stroke: resolved,
1662
- strokeWidth: 2,
1663
- strokeLinejoin: "round"
1664
- }), /*#__PURE__*/_jsx(Path, {
1665
- d: "M8 11V7a4 4 0 0 1 8 0v4",
1666
- stroke: resolved,
1667
- strokeWidth: 2,
1668
- strokeLinecap: "round"
1669
- })]
1670
- });
1671
- }
1672
-
1673
- /** The same padlock with its shackle swung open — freely movable. */
1674
- export function UnlockIcon({
1675
- size = 16,
1676
- color,
1677
- ...props
1678
- }) {
1679
- const resolved = useResolvedColor(color, '#737373');
1680
- return /*#__PURE__*/_jsxs(Svg, {
1681
- width: size,
1682
- height: size,
1683
- viewBox: "0 0 24 24",
1684
- fill: "none",
1685
- ...props,
1686
- children: [/*#__PURE__*/_jsx(Path, {
1687
- d: "M5 11h14v10H5z",
1688
- stroke: resolved,
1689
- strokeWidth: 2,
1690
- strokeLinejoin: "round"
1691
- }), /*#__PURE__*/_jsx(Path, {
1692
- d: "M8 11V7a4 4 0 0 1 7.5-2",
1693
- stroke: resolved,
1694
- strokeWidth: 2,
1695
- strokeLinecap: "round"
1696
- })]
1697
- });
1698
- }
1699
-
1700
- /**
1701
- * Four-pointed sparkles. The mark for a model doing something on your behalf —
1702
- * a reasoning step, a generated plan — where a gear or a brain reads as
1703
- * machinery rather than as assistance.
1704
- */
1705
- export function SparklesIcon({
1706
- size = 16,
1707
- color,
1708
- ...props
1709
- }) {
1710
- const resolved = useResolvedColor(color, '#737373');
1711
- return /*#__PURE__*/_jsxs(Svg, {
1712
- width: size,
1713
- height: size,
1714
- viewBox: "0 0 24 24",
1715
- fill: "none",
1716
- ...props,
1717
- children: [/*#__PURE__*/_jsx(Path, {
1718
- d: "M11 3 12.6 8.4 18 10l-5.4 1.6L11 17l-1.6-5.4L4 10l5.4-1.6z",
1719
- stroke: resolved,
1720
- strokeWidth: 2,
1721
- strokeLinejoin: "round"
1722
- }), /*#__PURE__*/_jsx(Path, {
1723
- d: "M18 15.5 18.7 18l2.3.7-2.3.7-.7 2.3-.7-2.3-2.3-.7 2.3-.7z",
1724
- stroke: resolved,
1725
- strokeWidth: 1.6,
1726
- strokeLinejoin: "round"
1727
- })]
1728
- });
1729
- }
1730
-
1731
- /** Two stacked sheets — the copy action, paired with CheckIcon once it has run. */
1732
- export function CopyIcon({
1733
- size = 16,
1734
- color,
1735
- ...props
1736
- }) {
1737
- const resolved = useResolvedColor(color, '#737373');
1738
- return /*#__PURE__*/_jsxs(Svg, {
1739
- width: size,
1740
- height: size,
1741
- viewBox: "0 0 24 24",
1742
- fill: "none",
1743
- ...props,
1744
- children: [/*#__PURE__*/_jsx(Path, {
1745
- d: "M9 9h10v12H9z",
1746
- stroke: resolved,
1747
- strokeWidth: 2,
1748
- strokeLinejoin: "round"
1749
- }), /*#__PURE__*/_jsx(Path, {
1750
- d: "M15 5H5v12h2",
1751
- stroke: resolved,
1752
- strokeWidth: 2,
1753
- strokeLinecap: "round",
1754
- strokeLinejoin: "round"
1755
- })]
1756
- });
1757
- }
1758
-
1759
- /** Two links of a chain, for a row that opens somewhere outside the app. */
1760
- export function LinkIcon({
1761
- size = 16,
1762
- color,
1763
- ...props
1764
- }) {
1765
- const resolved = useResolvedColor(color, '#737373');
1766
- return /*#__PURE__*/_jsxs(Svg, {
1767
- width: size,
1768
- height: size,
1769
- viewBox: "0 0 24 24",
1770
- fill: "none",
1771
- ...props,
1772
- children: [/*#__PURE__*/_jsx(Path, {
1773
- d: "M10 13a5 5 0 0 0 7.5.5l3-3a5 5 0 0 0-7-7l-1.7 1.7",
1774
- stroke: resolved,
1775
- strokeWidth: 2,
1776
- strokeLinecap: "round",
1777
- strokeLinejoin: "round"
1778
- }), /*#__PURE__*/_jsx(Path, {
1779
- d: "M14 11a5 5 0 0 0-7.5-.5l-3 3a5 5 0 0 0 7 7l1.7-1.7",
1780
- stroke: resolved,
1781
- strokeWidth: 2,
1782
- strokeLinecap: "round",
1783
- strokeLinejoin: "round"
1784
- })]
1785
- });
1786
- }
1787
-
1788
- /** A list with its items ticked off — a plan, or a run of steps. */
1789
- export function ListChecksIcon({
1790
- size = 16,
1791
- color,
1792
- ...props
1793
- }) {
1794
- const resolved = useResolvedColor(color, '#737373');
1795
- return /*#__PURE__*/_jsxs(Svg, {
1796
- width: size,
1797
- height: size,
1798
- viewBox: "0 0 24 24",
1799
- fill: "none",
1800
- ...props,
1801
- children: [/*#__PURE__*/_jsx(Path, {
1802
- d: "m3 6 1.8 1.8L8 4.5M3 16l1.8 1.8L8 14.5",
1803
- stroke: resolved,
1804
- strokeWidth: 2,
1805
- strokeLinecap: "round",
1806
- strokeLinejoin: "round"
1807
- }), /*#__PURE__*/_jsx(Path, {
1808
- d: "M12 6.5h9M12 17.5h9",
1809
- stroke: resolved,
1810
- strokeWidth: 2,
1811
- strokeLinecap: "round"
1812
- })]
1813
- });
1814
- }
1815
-
1816
- /** A hollow ring, for a step that has not started. */
1817
- export function CircleIcon({
1818
- size = 16,
1819
- color,
1820
- ...props
1821
- }) {
1822
- const resolved = useResolvedColor(color, '#737373');
1823
- return /*#__PURE__*/_jsx(Svg, {
1824
- width: size,
1825
- height: size,
1826
- viewBox: "0 0 24 24",
1827
- fill: "none",
1828
- ...props,
1829
- children: /*#__PURE__*/_jsx(Circle, {
1830
- cx: 12,
1831
- cy: 12,
1832
- r: 8,
1833
- stroke: resolved,
1834
- strokeWidth: 2
1835
- })
1836
- });
1837
- }
1838
-
1839
- /* -------------------------------------------------------------------------- */
1840
- /* Social */
1841
- /* -------------------------------------------------------------------------- */
1842
-
1843
- /**
1844
- * The icons a post's action row is made of.
1845
- *
1846
- * These are the only ones in the set that take `filled`, and it is not a
1847
- * stylistic choice: a like, a save and a vote are toggles, and the outline and
1848
- * the solid are the two states of one control. Drawn as two different icons
1849
- * they would swap shape under the finger; drawn as one that fills, the shape
1850
- * stays put and only the inside changes.
1851
- */
1852
-
1853
- /** Upvote. Filled once the vote is cast. */
1854
- /**
1855
- * A plain up arrow, drawn symmetrically about the centre of its box so it sits
1856
- * dead centre in a circular button.
1857
- *
1858
- * Distinct from `ArrowUpIcon`, which is the heavy solid arrow a vote control
1859
- * wants, and from `SendIcon`, which is a paper plane. This is the one a
1860
- * composer's send button uses.
1861
- */
1862
- export function SendArrowIcon({
1863
- size = 16,
1864
- color,
1865
- ...props
1866
- }) {
1867
- const resolved = useResolvedColor(color, '#737373');
1868
- return /*#__PURE__*/_jsx(Svg, {
1869
- width: size,
1870
- height: size,
1871
- viewBox: "0 0 24 24",
1872
- fill: "none",
1873
- ...props,
1874
- children: /*#__PURE__*/_jsx(Path, {
1875
- d: "m5 12 7-7 7 7M12 19V5",
1876
- stroke: resolved,
1877
- strokeWidth: 2.5,
1878
- strokeLinecap: "round",
1879
- strokeLinejoin: "round"
1880
- })
1881
- });
1882
- }
1883
- export function ArrowUpIcon({
1884
- size = 16,
1885
- color,
1886
- filled,
1887
- ...props
1888
- }) {
1889
- const resolved = useResolvedColor(color, '#737373');
1890
- return /*#__PURE__*/_jsx(Svg, {
1891
- width: size,
1892
- height: size,
1893
- viewBox: "0 0 24 24",
1894
- fill: "none",
1895
- ...props,
1896
- children: /*#__PURE__*/_jsx(Path, {
1897
- d: "M9 18v-6H5l7-7 7 7h-4v6z",
1898
- fill: filled ? resolved : 'none',
1899
- stroke: resolved,
1900
- strokeWidth: 2,
1901
- strokeLinecap: "round",
1902
- strokeLinejoin: "round"
1903
- })
1904
- });
1905
- }
1906
-
1907
- /** Downvote. The same arrow, turned over. */
1908
- export function ArrowDownIcon({
1909
- size = 16,
1910
- color,
1911
- filled,
1912
- ...props
1913
- }) {
1914
- const resolved = useResolvedColor(color, '#737373');
1915
- return /*#__PURE__*/_jsx(Svg, {
1916
- width: size,
1917
- height: size,
1918
- viewBox: "0 0 24 24",
1919
- fill: "none",
1920
- ...props,
1921
- children: /*#__PURE__*/_jsx(Path, {
1922
- d: "M9 6v6H5l7 7 7-7h-4V6z",
1923
- fill: filled ? resolved : 'none',
1924
- stroke: resolved,
1925
- strokeWidth: 2,
1926
- strokeLinecap: "round",
1927
- strokeLinejoin: "round"
1928
- })
1929
- });
1930
- }
1931
-
1932
- /** A like. */
1933
- export function HeartIcon({
1934
- size = 16,
1935
- color,
1936
- filled,
1937
- ...props
1938
- }) {
1939
- const resolved = useResolvedColor(color, '#737373');
1940
- return /*#__PURE__*/_jsx(Svg, {
1941
- width: size,
1942
- height: size,
1943
- viewBox: "0 0 24 24",
1944
- fill: "none",
1945
- ...props,
1946
- children: /*#__PURE__*/_jsx(Path, {
1947
- 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",
1948
- fill: filled ? resolved : 'none',
1949
- stroke: resolved,
1950
- strokeWidth: 2,
1951
- strokeLinecap: "round",
1952
- strokeLinejoin: "round"
1953
- })
1954
- });
1955
- }
1956
-
1957
- /** A reply, or the count of them. */
1958
- export function MessageCircleIcon({
1959
- size = 16,
1960
- color,
1961
- filled,
1962
- ...props
1963
- }) {
1964
- const resolved = useResolvedColor(color, '#737373');
1965
- return /*#__PURE__*/_jsx(Svg, {
1966
- width: size,
1967
- height: size,
1968
- viewBox: "0 0 24 24",
1969
- fill: "none",
1970
- ...props,
1971
- children: /*#__PURE__*/_jsx(Path, {
1972
- d: "M7.9 20A9 9 0 1 0 4 16.1L2 22Z",
1973
- fill: filled ? resolved : 'none',
1974
- stroke: resolved,
1975
- strokeWidth: 2,
1976
- strokeLinecap: "round",
1977
- strokeLinejoin: "round"
1978
- })
1979
- });
1980
- }
1981
-
1982
- /** Views — how many times a thing has been seen rather than acted on. */
1983
- export function EyeIcon({
1984
- size = 16,
1985
- color,
1986
- ...props
1987
- }) {
1988
- const resolved = useResolvedColor(color, '#737373');
1989
- return /*#__PURE__*/_jsxs(Svg, {
1990
- width: size,
1991
- height: size,
1992
- viewBox: "0 0 24 24",
1993
- fill: "none",
1994
- ...props,
1995
- children: [/*#__PURE__*/_jsx(Path, {
1996
- d: "M2.06 12.35a1 1 0 0 1 0-.7 10.75 10.75 0 0 1 19.88 0 1 1 0 0 1 0 .7 10.75 10.75 0 0 1-19.88 0",
1997
- stroke: resolved,
1998
- strokeWidth: 2,
1999
- strokeLinecap: "round",
2000
- strokeLinejoin: "round"
2001
- }), /*#__PURE__*/_jsx(Circle, {
2002
- cx: 12,
2003
- cy: 12,
2004
- r: 3,
2005
- stroke: resolved,
2006
- strokeWidth: 2
2007
- })]
2008
- });
2009
- }
2010
-
2011
- /** A repost — the same thing sent round again. */
2012
- export function RepeatIcon({
2013
- size = 16,
2014
- color,
2015
- ...props
2016
- }) {
2017
- const resolved = useResolvedColor(color, '#737373');
2018
- return /*#__PURE__*/_jsx(Svg, {
2019
- width: size,
2020
- height: size,
2021
- viewBox: "0 0 24 24",
2022
- fill: "none",
2023
- ...props,
2024
- children: /*#__PURE__*/_jsx(Path, {
2025
- d: "m2 9 3-3 3 3M5 6v10a2 2 0 0 0 2 2h6M22 15l-3 3-3-3M19 18V8a2 2 0 0 0-2-2h-6",
2026
- stroke: resolved,
2027
- strokeWidth: 2,
2028
- strokeLinecap: "round",
2029
- strokeLinejoin: "round"
2030
- })
2031
- });
2032
- }
2033
652
  /**
2034
653
  * The verified rosette.
2035
654
  *