@moises.ai/design-system 4.16.9 → 4.16.11

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 (34) hide show
  1. package/dist/{ChordDiagramGridIcon-CxpGQmg4.js → DynamicMicrophone2Icon-BBVZw0ZO.js} +794 -782
  2. package/dist/icons.js +484 -483
  3. package/dist/index.js +5450 -5769
  4. package/package.json +1 -1
  5. package/src/components/DropdownButton/DropdownButton.jsx +7 -0
  6. package/src/components/DropdownButton/DropdownButton.stories.jsx +4 -1
  7. package/src/components/InstrumentSelector/InstrumentSelector.stories.jsx +9 -1
  8. package/src/components/MessageWithAction/MessageWithAction.jsx +7 -0
  9. package/src/components/MessageWithAction/MessageWithAction.stories.jsx +4 -1
  10. package/src/components/ToolsDropdown/ToolsDropdown.module.css +12 -0
  11. package/src/components/ToolsDropdown/ToolsDropdown.stories.jsx +2 -1
  12. package/src/components/TrackControlsToggle/TrackControlsToggle.stories.jsx +7 -3
  13. package/src/icons/DynamicMicrophone2Icon.jsx +13 -0
  14. package/src/icons.jsx +1 -0
  15. package/src/index.jsx +2 -2
  16. package/src/components/PlayerBar/PlayerBar.jsx +0 -250
  17. package/src/components/PlayerBar/PlayerBar.module.css +0 -135
  18. package/src/components/PlayerBar/PlayerBar.stories.jsx +0 -519
  19. package/src/components/PlayerMasterVolume/PlayerMasterVolume.jsx +0 -54
  20. package/src/components/PlayerMasterVolume/PlayerMasterVolume.module.css +0 -31
  21. package/src/components/PlayerMasterVolume/PlayerMasterVolume.stories.jsx +0 -182
  22. package/src/components/PlayerSlider/PlayerSlider.jsx +0 -80
  23. package/src/components/PlayerSlider/PlayerSlider.module.css +0 -180
  24. package/src/components/PlayerSlider/PlayerSlider.stories.jsx +0 -97
  25. package/src/components/PlayerSlider/PlayerSliderWaveform.jsx +0 -70
  26. package/src/components/PlayerSmartMetronome/PlayerSmartMetronome.jsx +0 -79
  27. package/src/components/PlayerSmartMetronome/PlayerSmartMetronome.module.css +0 -23
  28. package/src/components/PlayerSmartMetronome/PlayerSmartMetronome.stories.jsx +0 -225
  29. package/src/components/PlayerSmartMetronome/SegmentedField.jsx +0 -19
  30. package/src/components/PlayerTempoPitch/PlayerTempoPitch.jsx +0 -123
  31. package/src/components/PlayerTempoPitch/PlayerTempoPitch.module.css +0 -25
  32. package/src/components/PlayerTempoPitch/PlayerTempoPitch.stories.jsx +0 -215
  33. package/src/components/PlayerTempoPitch/StepperField.jsx +0 -57
  34. package/src/components/PlayerTempoPitch/constants.js +0 -40
@@ -1,519 +0,0 @@
1
- import { useState } from 'react'
2
- import { Flex } from '@radix-ui/themes'
3
- import { Text } from '../../index'
4
- import { PlayerBar } from './PlayerBar'
5
- import { PlayerMasterVolume } from '../PlayerMasterVolume/PlayerMasterVolume'
6
- import { PlayerTempoPitch } from '../PlayerTempoPitch/PlayerTempoPitch'
7
- import { PlayerSmartMetronome } from '../PlayerSmartMetronome/PlayerSmartMetronome'
8
-
9
- const SAMPLE_AUDIO =
10
- 'https://storage.googleapis.com/moises-api-assets/voice/demo_zuri.m4a'
11
-
12
- const SAMPLE_COVER =
13
- 'https://storage.googleapis.com/moises-api-assets/voice/ana-avatar.jpg'
14
-
15
- function StatefulPlayerBar(args) {
16
- const [isPlaying, setIsPlaying] = useState(args.isPlaying)
17
- const [currentTime, setCurrentTime] = useState(args.currentTime)
18
- const [chords, setChords] = useState(args.chordsEnabled ?? false)
19
- const [loop, setLoop] = useState(args.loopEnabled ?? false)
20
- const [lyrics, setLyrics] = useState(args.lyricsEnabled ?? false)
21
- const [metronome, setMetronome] = useState(args.metronomeEnabled ?? false)
22
- const [expanded, setExpanded] = useState(args.expanded ?? false)
23
- const [volume, setVolume] = useState(args.volume ?? 1)
24
- const [tempo, setTempo] = useState(args.tempo ?? 120)
25
- const [pitch, setPitch] = useState(args.pitch ?? 'C#')
26
- const [tuning, setTuning] = useState(args.tuning ?? 440)
27
- const [subDivision, setSubDivision] = useState(args.subDivision ?? '1x')
28
- const [metronomeVolume, setMetronomeVolume] = useState(args.metronomeVolume ?? 50)
29
- const [countIn, setCountIn] = useState(args.countIn ?? 'off')
30
- const [panValue, setPanValue] = useState(args.panValue ?? 0)
31
- const [stems, setStems] = useState(
32
- args.stems ?? [
33
- { name: 'Vocals', volume: 80 },
34
- { name: 'Drums', volume: 65 },
35
- { name: 'Bass', volume: 70 },
36
- { name: 'Others', volume: 55 },
37
- ],
38
- )
39
-
40
- const seekBy = (delta) => {
41
- setCurrentTime((time) =>
42
- Math.min(Math.max(time + delta, 0), args.duration ?? 0),
43
- )
44
- }
45
-
46
- return (
47
- <PlayerBar
48
- {...args}
49
- cover={args.cover ?? SAMPLE_COVER}
50
- isPlaying={isPlaying}
51
- currentTime={currentTime}
52
- audio={args.audio ?? SAMPLE_AUDIO}
53
- chordsEnabled={chords}
54
- loopEnabled={loop}
55
- lyricsEnabled={lyrics}
56
- metronomeEnabled={metronome}
57
- expanded={expanded}
58
- tempo={tempo}
59
- pitch={pitch}
60
- volumeContent={
61
- <PlayerMasterVolume
62
- volume={volume}
63
- stems={stems}
64
- onVolumeChange={([value]) => {
65
- setVolume(value)
66
- args.onVolumeChange?.([value])
67
- }}
68
- onStemVolumeChange={(name, value) => {
69
- setStems((prev) =>
70
- prev.map((stem) =>
71
- stem.name === name ? { ...stem, volume: value } : stem,
72
- ),
73
- )
74
- args.onStemVolumeChange?.(name, value)
75
- }}
76
- />
77
- }
78
- tempoPitchContent={
79
- <PlayerTempoPitch
80
- tempo={tempo}
81
- pitch={pitch}
82
- tuning={tuning}
83
- onTempoChange={(value) => {
84
- setTempo(value)
85
- args.onTempoChange?.(value)
86
- }}
87
- onPitchChange={(value) => {
88
- setPitch(value)
89
- args.onPitchChange?.(value)
90
- }}
91
- onTuningChange={(value) => {
92
- setTuning(value)
93
- args.onTuningChange?.(value)
94
- }}
95
- onRefresh={() => {
96
- setTempo(120)
97
- setPitch('C#')
98
- setTuning(440)
99
- args.onTempoPitchRefresh?.()
100
- }}
101
- />
102
- }
103
- metronomeContent={
104
- <PlayerSmartMetronome
105
- subDivision={subDivision}
106
- volume={metronomeVolume}
107
- countIn={countIn}
108
- panValue={panValue}
109
- onSubDivisionChange={(value) => {
110
- setSubDivision(value)
111
- args.onSubDivisionChange?.(value)
112
- }}
113
- onVolumeChange={(value) => {
114
- setMetronomeVolume(value)
115
- args.onMetronomeVolumeChange?.(value)
116
- }}
117
- onCountInChange={(value) => {
118
- setCountIn(value)
119
- args.onCountInChange?.(value)
120
- }}
121
- onPanChange={(value) => {
122
- setPanValue(value)
123
- args.onPanChange?.(value)
124
- }}
125
- onRefresh={() => {
126
- setSubDivision('1x')
127
- setMetronomeVolume(50)
128
- setCountIn('off')
129
- setPanValue(0)
130
- args.onMetronomeRefresh?.()
131
- }}
132
- />
133
- }
134
- onPlayPause={() => setIsPlaying((value) => !value)}
135
- onSeek={setCurrentTime}
136
- onSeekBackward={() => seekBy(-10)}
137
- onSeekForward={() => seekBy(10)}
138
- onChordsToggle={() => setChords((value) => !value)}
139
- onLoopToggle={() => setLoop((value) => !value)}
140
- onLyricsToggle={() => setLyrics((value) => !value)}
141
- onMetronomeToggle={() => setMetronome((value) => !value)}
142
- onExpandToggle={() => setExpanded((value) => !value)}
143
- />
144
- )
145
- }
146
-
147
- export default {
148
- title: 'New Mixer/PlayerBar',
149
- component: PlayerBar,
150
- parameters: {
151
- layout: 'fullscreen',
152
- docs: {
153
- description: {
154
- component: `
155
- Bottom player surface for New Mixer playback. It combines track metadata, transport controls, a seekable timeline, volume popover, and optional action controls.
156
-
157
- Use it as a controlled component: pass playback state through props and update it from \`onPlayPause\`, \`onSeek\`, \`onSeekBackward\`, \`onSeekForward\`, and related callbacks.
158
- `,
159
- },
160
- },
161
- },
162
- decorators: [
163
- (Story) => (
164
- <Flex
165
- width="1200px"
166
- maxWidth="1200px"
167
- direction="column"
168
- style={{ background: 'var(--neutral-12)', boxSizing: 'border-box' }}
169
- >
170
- <Flex
171
- width="100%"
172
- height="240px"
173
- align="center"
174
- justify="center"
175
- style={{ background: 'var(--neutral-10)', color: 'var(--neutral-1)' }}
176
- >
177
- Content above the player
178
- </Flex>
179
- <Story />
180
- </Flex>
181
- ),
182
- ],
183
- tags: ['autodocs'],
184
- argTypes: {
185
- title: {
186
- description: 'Primary track title displayed on the left side.',
187
- table: { type: { summary: 'string' } },
188
- control: 'text',
189
- },
190
- subtitle: {
191
- description: 'Secondary track metadata, such as artist or project name.',
192
- table: { type: { summary: 'string' } },
193
- control: 'text',
194
- },
195
- cover: {
196
- description: 'Track cover image URL. Falls back to a music note placeholder when omitted.',
197
- table: { type: { summary: 'string' } },
198
- control: 'text',
199
- },
200
- color: {
201
- description: 'Background color variant for the player surface.',
202
- table: {
203
- type: { summary: "'gray' | 'dark'" },
204
- defaultValue: { summary: 'gray' },
205
- },
206
- control: 'select',
207
- options: ['gray', 'dark'],
208
- },
209
- showSlider: {
210
- description: 'Shows or hides the timeline slider above the player controls.',
211
- table: {
212
- type: { summary: 'boolean' },
213
- defaultValue: { summary: true },
214
- },
215
- control: 'boolean',
216
- },
217
- isPlaying: {
218
- description: 'Controls whether the play button renders play or pause.',
219
- table: {
220
- type: { summary: 'boolean' },
221
- defaultValue: { summary: false },
222
- },
223
- control: 'boolean',
224
- },
225
- currentTime: {
226
- description: 'Current playback time in seconds.',
227
- table: { type: { summary: 'number' } },
228
- control: 'number',
229
- },
230
- duration: {
231
- description: 'Total playback duration in seconds.',
232
- table: { type: { summary: 'number' } },
233
- control: 'number',
234
- },
235
- audio: {
236
- description: 'Audio URL used by the timeline slider waveform while seeking.',
237
- table: { type: { summary: 'string' } },
238
- control: 'text',
239
- },
240
- tempo: {
241
- description: 'Tempo value shown in the tempo/pitch dropdown trigger.',
242
- table: { type: { summary: 'number | string' } },
243
- control: 'number',
244
- },
245
- pitch: {
246
- description: 'Pitch value shown in the tempo/pitch dropdown trigger.',
247
- table: { type: { summary: 'string' } },
248
- control: 'text',
249
- },
250
- tuning: {
251
- description: 'Reference tuning in Hz for PlayerTempoPitch.',
252
- table: { type: { summary: 'number' }, defaultValue: { summary: 440 } },
253
- control: 'select',
254
- options: [440, 442, 444, 446],
255
- },
256
- volume: {
257
- description: 'Master gain passed to PlayerMasterVolume.',
258
- table: { type: { summary: 'number' }, defaultValue: { summary: 1 } },
259
- control: { type: 'range', min: 0, max: 2, step: 0.01 },
260
- },
261
- subDivision: {
262
- description: 'Metronome sub-division for PlayerSmartMetronome.',
263
- table: { type: { summary: "'0.5x' | '1x' | '2x'" }, defaultValue: { summary: '1x' } },
264
- control: 'select',
265
- options: ['0.5x', '1x', '2x'],
266
- },
267
- metronomeVolume: {
268
- description: 'Metronome volume percentage (0–100).',
269
- table: { type: { summary: 'number' }, defaultValue: { summary: 50 } },
270
- control: { type: 'range', min: 0, max: 100, step: 1 },
271
- },
272
- countIn: {
273
- description: 'Metronome count-in setting.',
274
- table: { type: { summary: "'off' | '1 bar' | '2 bars'" }, defaultValue: { summary: 'off' } },
275
- control: 'select',
276
- options: ['off', '1 bar', '2 bars'],
277
- },
278
- panValue: {
279
- description: 'Metronome pan position.',
280
- table: { type: { summary: 'number' }, defaultValue: { summary: 0 } },
281
- control: { type: 'range', min: -1, max: 1, step: 0.01 },
282
- },
283
- stems: {
284
- description: 'Stem rows for PlayerMasterVolume.',
285
- table: { type: { summary: '{ name: string, volume: number }[]' } },
286
- control: false,
287
- },
288
- loopEnabled: {
289
- description: 'Whether the loop control is active.',
290
- table: { type: { summary: 'boolean' } },
291
- control: 'boolean',
292
- },
293
- lyricsEnabled: {
294
- description: 'Whether the lyrics control is active.',
295
- table: { type: { summary: 'boolean' } },
296
- control: 'boolean',
297
- },
298
- chordsEnabled: {
299
- description: 'Whether the chords detection control is active.',
300
- table: {
301
- type: { summary: 'boolean' },
302
- defaultValue: { summary: false },
303
- },
304
- control: 'boolean',
305
- },
306
- metronomeEnabled: {
307
- description: 'Whether the metronome control is active.',
308
- table: { type: { summary: 'boolean' } },
309
- control: 'boolean',
310
- },
311
- expanded: {
312
- description: 'Whether the expand control is in the expanded state.',
313
- table: { type: { summary: 'boolean' } },
314
- control: 'boolean',
315
- },
316
- menuOptions: {
317
- description: 'Options passed to the track menu dropdown.',
318
- table: { type: { summary: 'DropdownMenuOption[]' } },
319
- control: false,
320
- },
321
- versionTrigger: {
322
- description: 'Trigger node for the version dropdown.',
323
- table: { type: { summary: 'ReactNode' } },
324
- control: false,
325
- },
326
- versionContent: {
327
- description: 'Content rendered inside the version dropdown.',
328
- table: { type: { summary: 'ReactNode' } },
329
- control: false,
330
- },
331
- volumeContent: {
332
- description: 'Content rendered inside the volume popover.',
333
- table: { type: { summary: 'ReactNode' } },
334
- control: false,
335
- },
336
- tempoPitchContent: {
337
- description: 'Content rendered inside the tempo/pitch dropdown.',
338
- table: { type: { summary: 'ReactNode' } },
339
- control: false,
340
- },
341
- metronomeContent: {
342
- description: 'Content rendered inside the metronome dropdown.',
343
- table: { type: { summary: 'ReactNode' } },
344
- control: false,
345
- },
346
- onVolumeChange: {
347
- description: 'Called with `[gain]` when the master fader moves.',
348
- table: { type: { summary: '([gain: number]) => void' } },
349
- action: 'volume changed',
350
- },
351
- onStemVolumeChange: {
352
- description: 'Called when a stem slider changes.',
353
- table: { type: { summary: '(name: string, value: number) => void' } },
354
- action: 'stem volume changed',
355
- },
356
- onTempoChange: {
357
- description: 'Called when tempo changes in PlayerTempoPitch.',
358
- table: { type: { summary: '(tempo: number | "") => void' } },
359
- action: 'tempo changed',
360
- },
361
- onPitchChange: {
362
- description: 'Called when pitch changes in PlayerTempoPitch.',
363
- table: { type: { summary: '(pitch: string) => void' } },
364
- action: 'pitch changed',
365
- },
366
- onTuningChange: {
367
- description: 'Called when tuning changes in PlayerTempoPitch.',
368
- table: { type: { summary: '(tuning: number) => void' } },
369
- action: 'tuning changed',
370
- },
371
- onTempoPitchRefresh: {
372
- description: 'Called when PlayerTempoPitch refresh is clicked.',
373
- table: { type: { summary: '() => void' } },
374
- action: 'tempo/pitch refreshed',
375
- },
376
- onSubDivisionChange: {
377
- description: 'Called when metronome sub-division changes.',
378
- table: { type: { summary: '(value: string) => void' } },
379
- action: 'sub-division changed',
380
- },
381
- onMetronomeVolumeChange: {
382
- description: 'Called when metronome volume changes.',
383
- table: { type: { summary: '(value: number) => void' } },
384
- action: 'metronome volume changed',
385
- },
386
- onCountInChange: {
387
- description: 'Called when metronome count-in changes.',
388
- table: { type: { summary: '(value: string) => void' } },
389
- action: 'count-in changed',
390
- },
391
- onPanChange: {
392
- description: 'Called when metronome pan changes.',
393
- table: { type: { summary: '(value: number) => void' } },
394
- action: 'pan changed',
395
- },
396
- onMetronomeRefresh: {
397
- description: 'Called when PlayerSmartMetronome refresh is clicked.',
398
- table: { type: { summary: '() => void' } },
399
- action: 'metronome refreshed',
400
- },
401
- onPlayPause: {
402
- description: 'Called when the main play/pause button is clicked.',
403
- table: { type: { summary: 'function' } },
404
- action: 'play/pause clicked',
405
- },
406
- onSeekBackward: {
407
- description: 'Called when the rewind button is clicked.',
408
- table: { type: { summary: 'function' } },
409
- action: 'seek backward clicked',
410
- },
411
- onSeekForward: {
412
- description: 'Called when the forward button is clicked.',
413
- table: { type: { summary: 'function' } },
414
- action: 'seek forward clicked',
415
- },
416
- onSeek: {
417
- description: 'Called with the next playback time in seconds.',
418
- table: { type: { summary: '(time: number) => void' } },
419
- action: 'seek changed',
420
- },
421
- onVolumeClick: {
422
- description: 'Called when the volume button is clicked.',
423
- table: { type: { summary: 'function' } },
424
- action: 'volume clicked',
425
- },
426
- onLoopToggle: {
427
- description: 'Called when the loop button is clicked.',
428
- table: { type: { summary: 'function' } },
429
- action: 'loop toggled',
430
- },
431
- onLyricsToggle: {
432
- description: 'Called when the lyrics button is clicked.',
433
- table: { type: { summary: 'function' } },
434
- action: 'lyrics toggled',
435
- },
436
- onChordsToggle: {
437
- description: 'Called when the chords detection button is clicked.',
438
- table: { type: { summary: 'function' } },
439
- action: 'chords toggled',
440
- },
441
- onMetronomeToggle: {
442
- description: 'Called when the metronome trigger is clicked.',
443
- table: { type: { summary: 'function' } },
444
- action: 'metronome toggled',
445
- },
446
- onVideoClick: {
447
- description: 'Called when the video button is clicked.',
448
- table: { type: { summary: 'function' } },
449
- action: 'video clicked',
450
- },
451
- onShareClick: {
452
- description: 'Called when the share button is clicked.',
453
- table: { type: { summary: 'function' } },
454
- action: 'share clicked',
455
- },
456
- onExpandToggle: {
457
- description: 'Called when the expand button is clicked.',
458
- table: { type: { summary: 'function' } },
459
- action: 'expand toggled',
460
- },
461
- className: {
462
- description: 'Optional class name applied to the root element.',
463
- table: { type: { summary: 'string' } },
464
- control: 'text',
465
- },
466
- },
467
- }
468
-
469
- const defaultArgs = {
470
- title: 'Pull Me Closer',
471
- subtitle: 'Nina Tensor',
472
- isPlaying: false,
473
- currentTime: 82,
474
- duration: 215,
475
- tempo: 120,
476
- pitch: 'C#',
477
- menuOptions: [
478
- {
479
- type: 'item',
480
- key: 'play',
481
- label: 'Play',
482
- },
483
- ],
484
- versionTrigger: <Text>v6</Text>,
485
- versionContent: <Text>Version 6</Text>,
486
- onVolumeClick: () => { },
487
- onVideoClick: () => { },
488
- onShareClick: () => { },
489
- }
490
-
491
- export const Default = {
492
- args: defaultArgs,
493
- render: (args) => <StatefulPlayerBar {...args} />,
494
- }
495
-
496
- export const Playing = {
497
- args: {
498
- ...defaultArgs,
499
- isPlaying: true,
500
- currentTime: 146,
501
- },
502
- render: (args) => <StatefulPlayerBar {...args} />,
503
- }
504
-
505
- export const Dark = {
506
- args: {
507
- ...defaultArgs,
508
- color: 'dark',
509
- },
510
- render: (args) => <StatefulPlayerBar {...args} />,
511
- }
512
-
513
- export const WithoutSlider = {
514
- args: {
515
- ...defaultArgs,
516
- showSlider: false,
517
- },
518
- render: (args) => <StatefulPlayerBar {...args} />,
519
- }
@@ -1,54 +0,0 @@
1
- import styles from './PlayerMasterVolume.module.css'
2
- import classNames from 'classnames'
3
- import { Text, Flex, InputLevelMeter, Button, Separator, SliderLibrary } from '../../index'
4
- import { ChevronUpIcon, ChevronDownIcon } from '@radix-ui/react-icons'
5
- import { useState } from 'react'
6
-
7
- export const PlayerMasterVolume = ({
8
- onVolumeChange,
9
- onStemVolumeChange,
10
- volume = 1,
11
- stems,
12
-
13
- }) => {
14
- const [stemsOpen, setStemsOpen] = useState(false)
15
-
16
- return (
17
- <Flex className={styles.PlayerMasterVolume} direction="column">
18
- <Flex direction="column" gap="4">
19
- <Text size="3" weight="medium" className={styles.white}>
20
- Master Volume
21
- </Text>
22
- <Flex gap="4" align="center">
23
- <InputLevelMeter
24
- linear={[0, 0]}
25
- volume={volume}
26
- onVolumeChange={onVolumeChange}
27
- />
28
- <Button variant="soft" size="1">−∞dB</Button>
29
- </Flex>
30
- {stems?.length > 0 && <Separator size='4' />}
31
- </Flex>
32
- {stems?.length > 0 && (
33
- <>
34
- <Flex width='100%' justify='between' mt="2" as="button" align="center" onClick={() => setStemsOpen(!stemsOpen)} className={styles.accordionButton}>
35
- <Text size="2" className={styles.neutralAlpha11}>Stems</Text>
36
- {stemsOpen ? <ChevronUpIcon className={styles.neutralAlpha9} width={16} height={16} /> : <ChevronDownIcon className={styles.neutralAlpha9} width={16} height={16} />}
37
- </Flex>
38
- {stemsOpen && (
39
- <Flex direction="column" gap="3" className={styles.accordionContent}>
40
- {stems.map((stem) => (
41
- <Flex width='100%' gap="3" key={stem.name}>
42
- <Text size="2" className={classNames(styles.neutralAlpha11, styles.flex1)}>{stem.name}</Text>
43
- <SliderLibrary value={stem.volume} onValueChange={(value) => onStemVolumeChange?.(stem.name, value)} className={styles.flex2} />
44
- </Flex>
45
- ))}
46
- </Flex>
47
- )}
48
- </>
49
- )}
50
- </Flex>
51
- )
52
- }
53
-
54
- PlayerMasterVolume.displayName = 'PlayerMasterVolume'
@@ -1,31 +0,0 @@
1
- .PlayerMasterVolume {
2
- min-width: 286px;
3
- }
4
-
5
- .neutralAlpha11 {
6
- color: var(--neutral-alpha-11);
7
- }
8
-
9
- .accordionButton {
10
- padding: 6px 0;
11
-
12
- &:hover {
13
- cursor: pointer;
14
- }
15
- }
16
-
17
- .neutralAlpha9 {
18
- color: var(--neutral-alpha-9);
19
- }
20
-
21
- .accordionContent {
22
- padding: 12px 0 0 0;
23
- }
24
-
25
- .flex1 {
26
- flex: 1;
27
- }
28
-
29
- .flex2 {
30
- flex: 2;
31
- }