@moises.ai/design-system 3.11.7 → 3.11.9

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 (65) hide show
  1. package/dist/{ChevronDownFilledIcon-qgjYUwMz.js → Share2Icon-Bxgx9Zfv.js} +2214 -2370
  2. package/dist/icons.js +1 -1
  3. package/dist/index.js +740 -720
  4. package/package.json +1 -1
  5. package/src/components/InputLevelMeter/InputLevelMeter.jsx +29 -7
  6. package/src/components/InputLevelMeter/InputLevelMeter.module.css +4 -0
  7. package/src/components/InputLevelMeter/InputLevelMeter.stories.jsx +290 -3
  8. package/src/components/TrackHeader/TrackHeader.module.css +8 -2
  9. package/src/components/TrackHeader/TrackHeader.stories.jsx +40 -21
  10. package/src/icons/AlertIcon.jsx +2 -7
  11. package/src/icons/BarsIcon.jsx +1 -6
  12. package/src/icons/CameraRollIcon.jsx +1 -6
  13. package/src/icons/CartIcon.jsx +2 -7
  14. package/src/icons/ClipIcon.jsx +2 -7
  15. package/src/icons/CloudDownloadGradientIcon.jsx +2 -5
  16. package/src/icons/CodeIcon.jsx +2 -7
  17. package/src/icons/CountdownIcon.jsx +2 -7
  18. package/src/icons/CropIcon.jsx +2 -7
  19. package/src/icons/DialogueIcon.jsx +2 -7
  20. package/src/icons/DotsVerticalIcon.jsx +2 -7
  21. package/src/icons/FolderIcon.jsx +2 -7
  22. package/src/icons/GoalsIcon.jsx +2 -7
  23. package/src/icons/IsolateDrumsGradientIcon.jsx +2 -5
  24. package/src/icons/IsolateDrumsIcon.jsx +2 -7
  25. package/src/icons/Knob2Icon.jsx +2 -7
  26. package/src/icons/Knob3Icon.jsx +2 -7
  27. package/src/icons/KnobIcon.jsx +2 -7
  28. package/src/icons/LibraryIcon.jsx +2 -7
  29. package/src/icons/LockIcon.jsx +2 -7
  30. package/src/icons/LoopIcon.jsx +2 -7
  31. package/src/icons/MoreIcon.jsx +2 -7
  32. package/src/icons/MusicIcon.jsx +1 -6
  33. package/src/icons/NoInternetSignalIcon.jsx +2 -7
  34. package/src/icons/NoKeysIcon.jsx +2 -7
  35. package/src/icons/NoMusicIcon.jsx +2 -7
  36. package/src/icons/NoPianoIcon.jsx +2 -7
  37. package/src/icons/NoSoundtrackIcon.jsx +2 -7
  38. package/src/icons/PianoIcon.jsx +1 -6
  39. package/src/icons/PlayBackSpeedIcon.jsx +2 -7
  40. package/src/icons/PlayCircleIcon.jsx +2 -7
  41. package/src/icons/RadioIcon.jsx +2 -7
  42. package/src/icons/RedoIcon.jsx +2 -7
  43. package/src/icons/RefreshBackIcon.jsx +2 -7
  44. package/src/icons/RocketIcon.jsx +2 -7
  45. package/src/icons/SearchIcon.jsx +2 -7
  46. package/src/icons/Share2Icon.jsx +30 -0
  47. package/src/icons/SoundtrackGradientIcon.jsx +2 -5
  48. package/src/icons/SparkleIcon.jsx +2 -7
  49. package/src/icons/SparklesGradientIcon.jsx +2 -5
  50. package/src/icons/SpatialAudioIcon.jsx +2 -7
  51. package/src/icons/SpeakerLoudIcon.jsx +2 -7
  52. package/src/icons/SpeedChangerIcon.jsx +2 -7
  53. package/src/icons/SpliterGradientIcon.jsx +2 -5
  54. package/src/icons/StringsIcon.jsx +1 -11
  55. package/src/icons/TargetIcon.jsx +2 -7
  56. package/src/icons/TrimIcon.jsx +2 -7
  57. package/src/icons/UndoIcon.jsx +2 -7
  58. package/src/icons/UnlockIcon.jsx +2 -7
  59. package/src/icons/UploadIcon.jsx +2 -7
  60. package/src/icons/UserIcon.jsx +2 -7
  61. package/src/icons/VocalsBackgroundIcon.jsx +2 -7
  62. package/src/icons/VocalsIcon.jsx +1 -6
  63. package/src/icons/ZoomCloseIcon.jsx +2 -7
  64. package/src/icons/ZoomInIcon.jsx +2 -7
  65. package/src/icons.jsx +1 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@moises.ai/design-system",
3
- "version": "3.11.7",
3
+ "version": "3.11.9",
4
4
  "description": "Design System package based on @radix-ui/themes with custom defaults",
5
5
  "private": false,
6
6
  "type": "module",
@@ -1,4 +1,5 @@
1
1
  import { memo, useCallback, useRef, useState } from 'react'
2
+ import { Tooltip } from '../Tooltip/Tooltip'
2
3
  import styles from './InputLevelMeter.module.css'
3
4
 
4
5
  const SEGMENT_MIN = 5
@@ -56,6 +57,13 @@ function faderPositionToGain(pos) {
56
57
  return 10 ** (db / 20)
57
58
  }
58
59
 
60
+ function formatGainDb(gain) {
61
+ if (gain <= 0) return '-∞ dB'
62
+ const db = 20 * Math.log10(gain)
63
+ if (db <= -96) return '-∞ dB'
64
+ return `${db >= 0 ? '+' : ''}${db.toFixed(1)} dB`
65
+ }
66
+
59
67
  function MeterRow({ level }) {
60
68
  const pct = getNormalizedLevel(level)
61
69
  return (
@@ -114,6 +122,7 @@ export const InputLevelMeter = memo(function InputLevelMeter({
114
122
  e.currentTarget.setPointerCapture(e.pointerId)
115
123
  isPressedRef.current = true
116
124
  setIsPressed(true)
125
+ document.body.style.cursor = 'ew-resize'
117
126
  const rect = meterRef.current?.getBoundingClientRect()
118
127
  if (rect) {
119
128
  const pos = Math.max(
@@ -144,14 +153,19 @@ export const InputLevelMeter = memo(function InputLevelMeter({
144
153
  const handlePointerUp = useCallback(() => {
145
154
  isPressedRef.current = false
146
155
  setIsPressed(false)
156
+ document.body.style.cursor = ''
147
157
  }, [])
148
158
 
149
- const meterClassName = [styles.bars, isPressed ? styles.pressed : '']
159
+ const hasHandler = onVolumeChange && showHandler
160
+
161
+ const meterClassName = [
162
+ styles.bars,
163
+ hasHandler ? styles.interactive : '',
164
+ isPressed ? styles.pressed : '',
165
+ ]
150
166
  .filter(Boolean)
151
167
  .join(' ')
152
168
 
153
- const hasHandler = onVolumeChange && showHandler
154
-
155
169
  return (
156
170
  <div
157
171
  className={styles.container}
@@ -167,10 +181,18 @@ export const InputLevelMeter = memo(function InputLevelMeter({
167
181
  <MeterRow level={rightLevel} />
168
182
 
169
183
  {hasHandler && (
170
- <div
171
- className={`${styles.thumb} ${isPressed ? styles.pressed : ''}`}
172
- style={{ left: `${faderPercent}%` }}
173
- />
184
+ <Tooltip
185
+ content={formatGainDb(volume)}
186
+ open={isPressed}
187
+ side="top"
188
+ sideOffset={8}
189
+ delayDuration={0}
190
+ >
191
+ <div
192
+ className={`${styles.thumb} ${isPressed ? styles.pressed : ''}`}
193
+ style={{ left: `${faderPercent}%` }}
194
+ />
195
+ </Tooltip>
174
196
  )}
175
197
 
176
198
  {showPeakHold && (
@@ -19,6 +19,10 @@
19
19
  transition: background-color 0.1s ease;
20
20
  }
21
21
 
22
+ .bars.interactive {
23
+ cursor: ew-resize;
24
+ }
25
+
22
26
  .bars.pressed {
23
27
  background: rgba(221, 234, 248, 0.08);
24
28
  }
@@ -1,3 +1,4 @@
1
+ import { useState, useEffect, useRef, useCallback } from 'react'
1
2
  import { InputLevelMeter } from './InputLevelMeter'
2
3
  import { useSimulatedInputLevel } from './useSimulatedInputLevel'
3
4
 
@@ -10,18 +11,304 @@ export default {
10
11
  },
11
12
  decorators: [
12
13
  (Story) => (
13
- <div style={{ padding: '16px', background: '#1d1d1d', width: '200px' }}>
14
+ <div style={{ padding: '16px', background: '#1d1d1d', width: '240px' }}>
14
15
  <Story />
15
16
  </div>
16
17
  ),
17
18
  ],
19
+ argTypes: {
20
+ linear: { control: false },
21
+ volume: {
22
+ control: { type: 'range', min: 0, max: 2, step: 0.01 },
23
+ },
24
+ showHandler: { control: 'boolean' },
25
+ showMeter: { control: 'boolean' },
26
+ onVolumeChange: { action: 'volumeChanged' },
27
+ },
18
28
  }
19
29
 
20
- function AnimatedMeter() {
30
+ function AnimatedMeter(props) {
21
31
  const linear = useSimulatedInputLevel()
22
- return <InputLevelMeter linear={linear} />
32
+ return <InputLevelMeter linear={linear} {...props} />
33
+ }
34
+
35
+ function InteractiveMeter({ initialVolume = 1, ...props }) {
36
+ const [volume, setVolume] = useState(initialVolume)
37
+ const linear = useSimulatedInputLevel()
38
+
39
+ const handleVolumeChange = useCallback(([v]) => {
40
+ setVolume(v)
41
+ }, [])
42
+
43
+ return (
44
+ <div style={{ display: 'flex', flexDirection: 'column', gap: '8px' }}>
45
+ <InputLevelMeter
46
+ linear={linear}
47
+ volume={volume}
48
+ onVolumeChange={handleVolumeChange}
49
+ {...props}
50
+ />
51
+ <span
52
+ style={{ color: 'rgba(255,255,255,0.5)', fontSize: '11px', fontFamily: 'monospace' }}
53
+ >
54
+ gain: {volume.toFixed(3)} | dB: {volume > 0 ? (20 * Math.log10(volume)).toFixed(1) : '-∞'}
55
+ </span>
56
+ </div>
57
+ )
58
+ }
59
+
60
+ function useFixedLevel(left, right) {
61
+ const [linear, setLinear] = useState([left, right])
62
+ useEffect(() => {
63
+ setLinear([left, right])
64
+ }, [left, right])
65
+ return linear
23
66
  }
24
67
 
25
68
  export const Default = {
26
69
  render: () => <AnimatedMeter />,
27
70
  }
71
+
72
+ export const WithVolumeControl = {
73
+ render: () => <InteractiveMeter />,
74
+ }
75
+
76
+ export const Silent = {
77
+ render: () => <InputLevelMeter linear={[0, 0]} />,
78
+ }
79
+
80
+ export const LowLevel = {
81
+ render: () => {
82
+ function LowLevelMeter() {
83
+ const linear = useFixedLevel(0.01, 0.008)
84
+ return <InputLevelMeter linear={linear} />
85
+ }
86
+ return <LowLevelMeter />
87
+ },
88
+ }
89
+
90
+ export const MediumLevel = {
91
+ render: () => {
92
+ function MediumLevelMeter() {
93
+ const linear = useFixedLevel(0.15, 0.12)
94
+ return <InputLevelMeter linear={linear} />
95
+ }
96
+ return <MediumLevelMeter />
97
+ },
98
+ }
99
+
100
+ export const HotLevel = {
101
+ render: () => {
102
+ function HotLevelMeter() {
103
+ const linear = useFixedLevel(0.7, 0.65)
104
+ return <InputLevelMeter linear={linear} />
105
+ }
106
+ return <HotLevelMeter />
107
+ },
108
+ }
109
+
110
+ export const Clipping = {
111
+ render: () => {
112
+ function ClippingMeter() {
113
+ const linear = useFixedLevel(1.0, 0.95)
114
+ return <InputLevelMeter linear={linear} />
115
+ }
116
+ return <ClippingMeter />
117
+ },
118
+ }
119
+
120
+ export const MonoLeft = {
121
+ render: () => {
122
+ function MonoLeftMeter() {
123
+ const linear = useFixedLevel(0.5, 0)
124
+ return <InputLevelMeter linear={linear} />
125
+ }
126
+ return <MonoLeftMeter />
127
+ },
128
+ }
129
+
130
+ export const MonoRight = {
131
+ render: () => {
132
+ function MonoRightMeter() {
133
+ const linear = useFixedLevel(0, 0.5)
134
+ return <InputLevelMeter linear={linear} />
135
+ }
136
+ return <MonoRightMeter />
137
+ },
138
+ }
139
+
140
+ export const AsymmetricLevels = {
141
+ render: () => {
142
+ function AsymmetricMeter() {
143
+ const linear = useFixedLevel(0.8, 0.2)
144
+ return <InputLevelMeter linear={linear} />
145
+ }
146
+ return <AsymmetricMeter />
147
+ },
148
+ }
149
+
150
+ export const WithoutHandler = {
151
+ render: () => <AnimatedMeter showHandler={false} />,
152
+ }
153
+
154
+ export const WithoutMeterDot = {
155
+ render: () => <AnimatedMeter showMeter={false} />,
156
+ }
157
+
158
+ export const MeterOnly = {
159
+ render: () => <AnimatedMeter showHandler={false} showMeter={false} />,
160
+ }
161
+
162
+ export const VolumeAtZero = {
163
+ render: () => <InteractiveMeter initialVolume={0} />,
164
+ }
165
+
166
+ export const VolumeAtUnity = {
167
+ render: () => <InteractiveMeter initialVolume={1} />,
168
+ }
169
+
170
+ export const VolumeBoosted = {
171
+ render: () => <InteractiveMeter initialVolume={1.5} />,
172
+ }
173
+
174
+ export const MaxBoost = {
175
+ render: () => <InteractiveMeter initialVolume={2} />,
176
+ }
177
+
178
+ export const PulsingSignal = {
179
+ render: () => {
180
+ function PulsingMeter() {
181
+ const [linear, setLinear] = useState([0, 0])
182
+ const frameRef = useRef(null)
183
+
184
+ useEffect(() => {
185
+ let t = 0
186
+ function animate() {
187
+ t += 0.04
188
+ const val = Math.abs(Math.sin(t)) * 0.9
189
+ setLinear([val, val * 0.85])
190
+ frameRef.current = requestAnimationFrame(animate)
191
+ }
192
+ frameRef.current = requestAnimationFrame(animate)
193
+ return () => cancelAnimationFrame(frameRef.current)
194
+ }, [])
195
+
196
+ return <InputLevelMeter linear={linear} />
197
+ }
198
+ return <PulsingMeter />
199
+ },
200
+ }
201
+
202
+ export const SpikeAndDecay = {
203
+ render: () => {
204
+ function SpikeDecayMeter() {
205
+ const [linear, setLinear] = useState([0, 0])
206
+ const frameRef = useRef(null)
207
+ const currentRef = useRef([0, 0])
208
+ const tickRef = useRef(0)
209
+
210
+ useEffect(() => {
211
+ function animate() {
212
+ tickRef.current++
213
+
214
+ if (tickRef.current % 90 === 0) {
215
+ currentRef.current = [0.95, 0.9]
216
+ } else {
217
+ currentRef.current = currentRef.current.map((v) =>
218
+ Math.max(0, v * 0.97),
219
+ )
220
+ }
221
+
222
+ setLinear([...currentRef.current])
223
+ frameRef.current = requestAnimationFrame(animate)
224
+ }
225
+ frameRef.current = requestAnimationFrame(animate)
226
+ return () => cancelAnimationFrame(frameRef.current)
227
+ }, [])
228
+
229
+ return <InputLevelMeter linear={linear} />
230
+ }
231
+ return <SpikeDecayMeter />
232
+ },
233
+ }
234
+
235
+ export const MultipleMeters = {
236
+ render: () => {
237
+ function MultiMeter() {
238
+ const linear = useSimulatedInputLevel()
239
+ const [volumes, setVolumes] = useState([1, 0.7, 0.4, 0.1])
240
+
241
+ const makeHandler = (idx) => ([v]) => {
242
+ setVolumes((prev) => {
243
+ const next = [...prev]
244
+ next[idx] = v
245
+ return next
246
+ })
247
+ }
248
+
249
+ const labels = ['Master', 'Vocals', 'Guitar', 'Drums']
250
+
251
+ return (
252
+ <div style={{ display: 'flex', flexDirection: 'column', gap: '12px' }}>
253
+ {volumes.map((vol, i) => (
254
+ <div key={i}>
255
+ <span
256
+ style={{
257
+ color: 'rgba(255,255,255,0.5)',
258
+ fontSize: '10px',
259
+ fontFamily: 'monospace',
260
+ marginBottom: '4px',
261
+ display: 'block',
262
+ }}
263
+ >
264
+ {labels[i]}
265
+ </span>
266
+ <InputLevelMeter
267
+ linear={linear.map((l) => l * vol)}
268
+ volume={vol}
269
+ onVolumeChange={makeHandler(i)}
270
+ />
271
+ </div>
272
+ ))}
273
+ </div>
274
+ )
275
+ }
276
+ return <MultiMeter />
277
+ },
278
+ decorators: [
279
+ (Story) => (
280
+ <div style={{ padding: '16px', background: '#1d1d1d', width: '240px' }}>
281
+ <Story />
282
+ </div>
283
+ ),
284
+ ],
285
+ }
286
+
287
+ export const Playground = {
288
+ args: {
289
+ volume: 1,
290
+ showHandler: true,
291
+ showMeter: true,
292
+ },
293
+ render: (args) => {
294
+ function PlaygroundMeter() {
295
+ const linear = useSimulatedInputLevel()
296
+ const [volume, setVolume] = useState(args.volume)
297
+
298
+ useEffect(() => {
299
+ setVolume(args.volume)
300
+ }, [args.volume])
301
+
302
+ return (
303
+ <InputLevelMeter
304
+ linear={linear}
305
+ volume={volume}
306
+ onVolumeChange={([v]) => setVolume(v)}
307
+ showHandler={args.showHandler}
308
+ showMeter={args.showMeter}
309
+ />
310
+ )
311
+ }
312
+ return <PlaygroundMeter />
313
+ },
314
+ }
@@ -173,13 +173,19 @@ background-color: rgba(17, 17, 19);
173
173
 
174
174
  .trackContent {
175
175
  padding-left: 0;
176
- background-color: var(--neutral-alpha-2);
176
+ background-color: var(--neutral-alpha-2);
177
+ border-left-style: solid;
178
+ border-left-color: var(--neutral-alpha-3);
179
+ border-left-width: 1px;
177
180
  .toggleOpenButton {
178
181
  display: none;
179
182
  }
183
+ .line {
184
+ padding-left: var(--space-4);
185
+ }
180
186
 
181
187
  .name {
182
- padding-left: var(--space-4);
188
+ /* padding-left: var(--space-4); */
183
189
  background: linear-gradient(
184
190
  90deg,
185
191
  var(--neutral-alpha-11) 95%,
@@ -123,10 +123,10 @@ export const Default = {
123
123
  isAutoMuted: false,
124
124
  compact: false,
125
125
  menuOptions,
126
- onVolumeChange: () => {},
127
- onPanChange: () => {},
128
- onMutedChange: () => {},
129
- onSoloChange: () => {},
126
+ onVolumeChange: () => { },
127
+ onPanChange: () => { },
128
+ onMutedChange: () => { },
129
+ onSoloChange: () => { },
130
130
  instrumentOptions,
131
131
  instrumentSelected: instrumentOptions[0],
132
132
  },
@@ -177,17 +177,20 @@ export const Group = {
177
177
  isAutoMuted: false,
178
178
  compact: false,
179
179
  menuOptions,
180
- onVolumeChange: () => {},
181
- onPanChange: () => {},
182
- onMutedChange: () => {},
183
- onSoloChange: () => {},
180
+ onVolumeChange: () => { },
181
+ onPanChange: () => { },
182
+ onMutedChange: () => { },
183
+ onSoloChange: () => { },
184
+ instrumentOptions,
185
+ instrumentSelected: instrumentOptions[0],
186
+ onInstrumentChange: () => { },
184
187
  },
185
188
  render: (args) => {
186
189
  const [isOpen, setIsOpen] = useState(true)
187
190
  const [pan, setPan] = useState(-0.3)
188
191
  const [pan2, setPan2] = useState(-0.3)
189
192
  return (
190
- <TrackHeader {...args} isOpen={isOpen} onOpenChange={setIsOpen}>
193
+ <TrackHeader {...args} isOpen={isOpen} onOpenChange={setIsOpen} instrumentSelected={args.instrumentSelected} onInstrumentChange={args.onInstrumentChange}>
191
194
  <TrackHeader
192
195
  title="Grouped Track"
193
196
  isGrouped
@@ -197,11 +200,14 @@ export const Group = {
197
200
  pan={pan}
198
201
  isMuted={false}
199
202
  isSolo={false}
200
- onVolumeChange={() => {}}
203
+ onVolumeChange={() => { }}
201
204
  onPanChange={setPan}
202
- onMutedChange={() => {}}
203
- onSoloChange={() => {}}
205
+ onMutedChange={() => { }}
206
+ onSoloChange={() => { }}
204
207
  menuOptions={menuOptions}
208
+ instrumentOptions={args.instrumentOptions}
209
+ instrumentSelected={args.instrumentSelected}
210
+ onInstrumentChange={args.onInstrumentChange}
205
211
  />
206
212
  <TrackHeader
207
213
  title="Grouped Track"
@@ -212,11 +218,14 @@ export const Group = {
212
218
  pan={pan2}
213
219
  isMuted={false}
214
220
  isSolo={false}
215
- onVolumeChange={() => {}}
221
+ onVolumeChange={() => { }}
216
222
  onPanChange={setPan2}
217
- onMutedChange={() => {}}
218
- onSoloChange={() => {}}
223
+ onMutedChange={() => { }}
224
+ onSoloChange={() => { }}
219
225
  menuOptions={menuOptions}
226
+ instrumentOptions={args.instrumentOptions}
227
+ instrumentSelected={args.instrumentSelected}
228
+ onInstrumentChange={args.onInstrumentChange}
220
229
  />
221
230
  </TrackHeader>
222
231
  )
@@ -236,20 +245,27 @@ export const Takelanes = {
236
245
  isSolo: false,
237
246
  compact: false,
238
247
  menuOptions,
239
- onVolumeChange: () => {},
240
- onPanChange: () => {},
241
- onMutedChange: () => {},
242
- onSoloChange: () => {},
243
- onOpenChange: () => {},
248
+ onVolumeChange: () => { },
249
+ onPanChange: () => { },
250
+ onMutedChange: () => { },
251
+ onSoloChange: () => { },
252
+ onOpenChange: () => { },
253
+ instrumentOptions,
254
+ instrumentSelected: instrumentOptions[0],
255
+ onInstrumentChange: () => { },
256
+
244
257
  },
245
258
  render: (args) => (
246
- <TrackHeader {...args}>
259
+ <TrackHeader {...args} instrumentSelected={args.instrumentSelected} onInstrumentChange={args.onInstrumentChange}>
247
260
  <TrackHeader
248
261
  title="Take Lane 1"
249
262
  showPan={false}
250
263
  showVolumeControls={false}
251
264
  isGrouped
252
265
  menuOptions={menuOptions}
266
+ instrumentOptions={args.instrumentOptions}
267
+ instrumentSelected={args.instrumentSelected}
268
+ onInstrumentChange={args.onInstrumentChange}
253
269
  />
254
270
  <TrackHeader
255
271
  title="Take Lane 1"
@@ -257,6 +273,9 @@ export const Takelanes = {
257
273
  showVolumeControls={false}
258
274
  isGrouped
259
275
  menuOptions={menuOptions}
276
+ instrumentOptions={args.instrumentOptions}
277
+ instrumentSelected={args.instrumentSelected}
278
+ onInstrumentChange={args.onInstrumentChange}
260
279
  />
261
280
  </TrackHeader>
262
281
  ),
@@ -8,7 +8,7 @@ export const AlertIcon = ({ width = 16, height = 16, className, ...props }) => (
8
8
  className={className}
9
9
  {...props}
10
10
  >
11
- <g clipPath="url(#clip0_556_1304)">
11
+ <g>
12
12
  <path
13
13
  d="M13.9999 9.33356V15.7501M13.9999 19.8336H14.0116M12.0049 4.50357L2.12324 21.0002C1.9195 21.3531 1.8117 21.7531 1.81056 22.1605C1.80942 22.5679 1.91497 22.9686 2.11673 23.3225C2.31849 23.6765 2.60942 23.9714 2.96056 24.1781C3.31171 24.3847 3.71083 24.4958 4.11824 24.5002H23.8816C24.289 24.4958 24.6881 24.3847 25.0392 24.1781C25.3904 23.9714 25.6813 23.6765 25.8831 23.3225C26.0848 22.9686 26.1904 22.5679 26.1893 22.1605C26.1881 21.7531 26.0803 21.3531 25.8766 21.0002L15.9949 4.50357C15.7869 4.1607 15.4941 3.87721 15.1446 3.68047C14.7952 3.48373 14.4009 3.38037 13.9999 3.38037C13.5989 3.38037 13.2046 3.48373 12.8552 3.68047C12.5057 3.87721 12.2129 4.1607 12.0049 4.50357Z"
14
14
  stroke="currentColor"
@@ -17,12 +17,7 @@ export const AlertIcon = ({ width = 16, height = 16, className, ...props }) => (
17
17
  strokeLinejoin="round"
18
18
  />
19
19
  </g>
20
- <defs>
21
- <clipPath id="clip0_556_1304">
22
- <rect width="28" height="28" fill="currentColor" />
23
- </clipPath>
24
- </defs>
25
- </svg>
20
+ </svg>
26
21
  )
27
22
 
28
23
  AlertIcon.displayName = 'AlertIcon'
@@ -8,7 +8,7 @@ export const BarsIcon = ({ width = 16, height = 16, className, ...props }) => (
8
8
  className={className}
9
9
  {...props}
10
10
  >
11
- <g clipPath="url(#clip0_6797_209)">
11
+ <g>
12
12
  <path
13
13
  d="M12 8L12 15M17 5V19M7 5V19M22 10V14M2 10L2 14"
14
14
  stroke="currentColor"
@@ -16,11 +16,6 @@ export const BarsIcon = ({ width = 16, height = 16, className, ...props }) => (
16
16
  strokeLinecap="round"
17
17
  />
18
18
  </g>
19
- <defs>
20
- <clipPath id="clip0_6797_209">
21
- <rect width="24" height="24" fill="currentColor" />
22
- </clipPath>
23
- </defs>
24
19
  </svg>
25
20
  )
26
21
 
@@ -13,18 +13,13 @@ export const CameraRollIcon = ({
13
13
  className={className}
14
14
  {...props}
15
15
  >
16
- <g clipPath="url(#clip0_2280_66)">
16
+ <g>
17
17
  <path
18
18
  d="M16 10.5V5C16 3.89543 15.1046 3 14 3H5C3.89543 3 3 3.89543 3 5V21C3 22.1046 3.89543 23 5 23H14C15.1046 23 16 22.1046 16 21V15.5M7.5 0.5H11.5M12 10.5V8.5M20 10.5V8.5M12 17.5V15.5M20 17.5V15.5M9 8.5H23V17.5H9V8.5Z"
19
19
  stroke="currentColor"
20
20
  strokeWidth="1.5"
21
21
  />
22
22
  </g>
23
- <defs>
24
- <clipPath id="clip0_2280_66">
25
- <rect width="24" height="24" fill="currentColor" />
26
- </clipPath>
27
- </defs>
28
23
  </svg>
29
24
  )
30
25
 
@@ -8,7 +8,7 @@ export const CartIcon = ({ width = 16, height = 16, className, ...props }) => (
8
8
  className={className}
9
9
  {...props}
10
10
  >
11
- <g clipPath="url(#clip0_2034_986)">
11
+ <g>
12
12
  <path
13
13
  d="M1 1.71472H5L7.68 15.1047C7.77144 15.5651 8.02191 15.9787 8.38755 16.273C8.75318 16.5674 9.2107 16.7237 9.68 16.7147H19.4C19.8693 16.7237 20.3268 16.5674 20.6925 16.273C21.0581 15.9787 21.3086 15.5651 21.4 15.1047L23 6.71472H6M20.949 21.5353C20.949 21.9495 20.6132 22.2853 20.199 22.2853C19.7848 22.2853 19.449 21.9495 19.449 21.5353C19.449 21.1211 19.7848 20.7853 20.199 20.7853C20.6132 20.7853 20.949 21.1211 20.949 21.5353ZM8.91854 21.5353C8.91854 21.9495 8.58275 22.2853 8.16854 22.2853C7.75433 22.2853 7.41854 21.9495 7.41854 21.5353C7.41854 21.1211 7.75433 20.7853 8.16854 20.7853C8.58275 20.7853 8.91854 21.1211 8.91854 21.5353Z"
14
14
  stroke="currentColor"
@@ -17,12 +17,7 @@ export const CartIcon = ({ width = 16, height = 16, className, ...props }) => (
17
17
  strokeLinejoin="round"
18
18
  />
19
19
  </g>
20
- <defs>
21
- <clipPath id="clip0_2034_986">
22
- <rect width="24" height="24" fill="currentColor" />
23
- </clipPath>
24
- </defs>
25
- </svg>
20
+ </svg>
26
21
  )
27
22
 
28
23
  CartIcon.displayName = 'CartIcon'
@@ -8,7 +8,7 @@ export const ClipIcon = ({ width = 16, height = 16, className, ...props }) => (
8
8
  className={className}
9
9
  {...props}
10
10
  >
11
- <g clipPath="url(#clip0_24070_6111)">
11
+ <g>
12
12
  <path
13
13
  d="M14.2011 7.28133L8.07441 13.408C7.32385 14.1586 6.30587 14.5802 5.24441 14.5802C4.18296 14.5802 3.16497 14.1586 2.41441 13.408C1.66385 12.6574 1.24219 11.6394 1.24219 10.578C1.24219 9.51654 1.66385 8.49856 2.41441 7.74799L8.54108 1.62133C9.04145 1.12095 9.72011 0.839844 10.4277 0.839844C11.1354 0.839844 11.814 1.12095 12.3144 1.62133C12.8148 2.1217 13.0959 2.80036 13.0959 3.50799C13.0959 4.21563 12.8148 4.89428 12.3144 5.39466L6.18108 11.5213C5.93089 11.7715 5.59156 11.9121 5.23775 11.9121C4.88393 11.9121 4.5446 11.7715 4.29441 11.5213C4.04422 11.2711 3.90367 10.9318 3.90367 10.578C3.90367 10.2242 4.04422 9.88485 4.29441 9.63466L9.95441 3.98133"
14
14
  stroke="currentColor"
@@ -16,12 +16,7 @@ export const ClipIcon = ({ width = 16, height = 16, className, ...props }) => (
16
16
  strokeLinejoin="round"
17
17
  />
18
18
  </g>
19
- <defs>
20
- <clipPath id="clip0_24070_6111">
21
- <rect width={width} height={height} fill="currentColor" />
22
- </clipPath>
23
- </defs>
24
- </svg>
19
+ </svg>
25
20
  )
26
21
 
27
22
  ClipIcon.displayName = 'ClipIcon'
@@ -13,7 +13,7 @@ export const CloudDownloadGradientIcon = ({
13
13
  {...props}
14
14
  className={className}
15
15
  >
16
- <g clipPath="url(#clip0_29446_178301)">
16
+ <g>
17
17
  <path
18
18
  d="M67.9668 61.3001C71.2179 59.5277 73.7862 56.7231 75.2664 53.3289C76.7465 49.9347 77.0542 46.1442 76.1408 42.5557C75.2274 38.9673 73.1451 35.7851 70.2223 33.5116C67.2996 31.238 63.703 30.0026 60.0001 30.0001H55.8001C54.7912 26.0976 52.9106 22.4746 50.2999 19.4034C47.6892 16.3323 44.4163 13.8929 40.7271 12.2688C37.038 10.6447 33.0286 9.87797 29.0005 10.0264C24.9724 10.1748 21.0303 11.2344 17.4707 13.1257C13.9111 15.0169 10.8265 17.6905 8.44885 20.9454C6.07122 24.2003 4.46241 27.9519 3.74338 31.9181C3.02434 35.8843 3.2138 39.9619 4.29749 43.8443C5.38118 47.7267 7.33092 51.313 10.0001 54.3334M26.6669 56.6668L40.0002 70.0002M40.0002 70.0002L53.3336 56.6668M40.0002 70.0002L40.0002 40.0002"
19
19
  stroke="url(#paint0_linear_29446_178301)"
@@ -34,10 +34,7 @@ export const CloudDownloadGradientIcon = ({
34
34
  <stop stopColor="#0AFFA7" />
35
35
  <stop offset="1" stopColor="#00DAE8" />
36
36
  </linearGradient>
37
- <clipPath id="clip0_29446_178301">
38
- <rect width="80" height="80" fill="white" />
39
- </clipPath>
40
- </defs>
37
+ </defs>
41
38
  </svg>
42
39
  )
43
40