@moises.ai/design-system 4.19.3 → 4.19.5

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 (138) hide show
  1. package/dist/{HiFi1Icon-DW-qHZUd.js → AutomationPenIcon-508hiLNg.js} +2666 -4229
  2. package/dist/colors/custom-styles.css +24 -24
  3. package/dist/icons.js +695 -687
  4. package/dist/index.js +1685 -1678
  5. package/package.json +1 -1
  6. package/src/colors/custom-styles.css +24 -24
  7. package/src/components/Countdown/Countdown.module.css +5 -5
  8. package/src/components/DataTable/DataTable.module.css +3 -3
  9. package/src/components/EmptyState/EmptyState.jsx +2 -2
  10. package/src/components/EmptyState/EmptyState.module.css +3 -2
  11. package/src/components/Extension/Extension.jsx +1 -1
  12. package/src/components/Extension/Extension.stories.jsx +2 -2
  13. package/src/components/InputLevelMeter/InputLevelMeter.stories.jsx +2 -2
  14. package/src/components/Knob/utils.js +1 -1
  15. package/src/components/PanControl/PanControl.jsx +2 -2
  16. package/src/components/PeakLevel/PeakLevel.stories.jsx +1 -1
  17. package/src/components/RecordingForm/RecordingForm.module.css +1 -1
  18. package/src/components/Select/Select.jsx +21 -25
  19. package/src/components/Select/Select.module.css +13 -0
  20. package/src/components/SetlistList/SetlistList.module.css +1 -1
  21. package/src/components/Shell/Shell.stories.jsx +2 -2
  22. package/src/components/SliderLibrary/SliderLibrary.module.css +6 -6
  23. package/src/components/SliderLibrary/SliderLibrary.stories.jsx +3 -3
  24. package/src/components/SpecialDialog/SpecialDialog.module.css +1 -1
  25. package/src/components/StemGenerationForm/CreateNew/CreateNew.jsx +2 -2
  26. package/src/components/TextField/TextField.jsx +24 -6
  27. package/src/components/TextField/TextField.module.css +37 -0
  28. package/src/components/TextField/TextField.stories.jsx +39 -0
  29. package/src/components/Tooltip/Tooltip.module.css +15 -15
  30. package/src/components/TrackHeader/TrackHeader.module.css +2 -2
  31. package/src/components/TrackHeader/TrackHeader.stories.jsx +1 -1
  32. package/src/components/VoiceConversionForm/Waveform/Waveform.jsx +1 -1
  33. package/src/icons/AlertIcon.jsx +4 -5
  34. package/src/icons/ArrowDownIcon.jsx +3 -17
  35. package/src/icons/ArrowLeftIcon.jsx +3 -17
  36. package/src/icons/ArrowUpIcon.jsx +3 -17
  37. package/src/icons/ArrowsHorizontalIcon.jsx +3 -17
  38. package/src/icons/ArrowsVerticalIcon.jsx +3 -17
  39. package/src/icons/AudioFileIcon.jsx +3 -17
  40. package/src/icons/AutomationPenIcon.jsx +7 -0
  41. package/src/icons/BanjoIcon.jsx +8 -0
  42. package/src/icons/BookmarkIcon.jsx +3 -15
  43. package/src/icons/CavacoIcon.jsx +9 -0
  44. package/src/icons/CheckIcon.jsx +3 -3
  45. package/src/icons/ChevronLeftIcon.jsx +3 -17
  46. package/src/icons/ChevronRightIcon.jsx +3 -17
  47. package/src/icons/ChevronUpIcon.jsx +3 -17
  48. package/src/icons/ChordGrid4Icon.jsx +2 -5
  49. package/src/icons/Chords2Icon.jsx +4 -16
  50. package/src/icons/ChordsDetectionIcon.jsx +5 -22
  51. package/src/icons/CloseIcon.jsx +3 -16
  52. package/src/icons/ComputerIcon.jsx +3 -17
  53. package/src/icons/CountInIcon.jsx +6 -19
  54. package/src/icons/CropIcon.jsx +2 -17
  55. package/src/icons/CrownIcon.jsx +3 -17
  56. package/src/icons/DelayIcon.jsx +3 -16
  57. package/src/icons/DownloadIcon.jsx +7 -0
  58. package/src/icons/DynamicMicrophone2Icon.jsx +4 -9
  59. package/src/icons/EditIcon.jsx +3 -16
  60. package/src/icons/EffectsIcon.jsx +4 -16
  61. package/src/icons/EmailIcon.jsx +3 -24
  62. package/src/icons/ExternalLinkIcon.jsx +3 -3
  63. package/src/icons/EyeIcon.jsx +4 -26
  64. package/src/icons/EyeOffIcon.jsx +3 -24
  65. package/src/icons/Filter2Icon.jsx +3 -17
  66. package/src/icons/FitWidthIcon.jsx +7 -0
  67. package/src/icons/FlatAndSharpIcon.jsx +3 -16
  68. package/src/icons/GuitarAmpIcon.jsx +6 -32
  69. package/src/icons/HelpIcon.jsx +4 -3
  70. package/src/icons/Info2Icon.jsx +4 -4
  71. package/src/icons/Knob3Icon.jsx +8 -17
  72. package/src/icons/LibraryIcon.jsx +2 -16
  73. package/src/icons/LinkIcon.jsx +4 -17
  74. package/src/icons/LoopSection2Icon.jsx +4 -17
  75. package/src/icons/LyricsIcon.jsx +5 -24
  76. package/src/icons/MagicWandIcon.jsx +5 -8
  77. package/src/icons/MandolinIcon.jsx +8 -0
  78. package/src/icons/MaracasIcon.jsx +4 -15
  79. package/src/icons/MasteringIcon.jsx +5 -28
  80. package/src/icons/MetronomeIcon.jsx +4 -14
  81. package/src/icons/Mixer2Icon.jsx +4 -16
  82. package/src/icons/MixerVerticalIcon.jsx +7 -0
  83. package/src/icons/More2Icon.jsx +1 -44
  84. package/src/icons/MoreIcon.jsx +4 -41
  85. package/src/icons/MoreMenuIcon.jsx +9 -0
  86. package/src/icons/MusicAddIcon.jsx +3 -17
  87. package/src/icons/MusicBookIcon.jsx +8 -0
  88. package/src/icons/MusicNoteIcon.jsx +3 -17
  89. package/src/icons/MusicRemoveIcon.jsx +3 -17
  90. package/src/icons/NoChords2Icon.jsx +3 -16
  91. package/src/icons/NoChordsDetectionIcon.jsx +6 -22
  92. package/src/icons/NoEyeIcon.jsx +4 -3
  93. package/src/icons/NoMusicIcon.jsx +2 -17
  94. package/src/icons/NoMusicNoteIcon.jsx +3 -16
  95. package/src/icons/NoSearchIcon.jsx +3 -17
  96. package/src/icons/NoSpliterIcon.jsx +3 -14
  97. package/src/icons/NoVolume2Icon.jsx +3 -17
  98. package/src/icons/NowPlayingIcon.jsx +7 -0
  99. package/src/icons/PenIcon.jsx +3 -3
  100. package/src/icons/PlayOnRepeatIcon.jsx +4 -17
  101. package/src/icons/PowerSwitchIcon.jsx +4 -3
  102. package/src/icons/RadioOffIcon.jsx +3 -17
  103. package/src/icons/RedoIcon.jsx +3 -16
  104. package/src/icons/RefreshIcon.jsx +3 -17
  105. package/src/icons/SearchIcon.jsx +3 -18
  106. package/src/icons/Sections2Icon.jsx +4 -7
  107. package/src/icons/Setlist2Icon.jsx +3 -17
  108. package/src/icons/SettingsIcon.jsx +5 -18
  109. package/src/icons/ShareIosIcon.jsx +3 -9
  110. package/src/icons/SidebarLeftIcon.jsx +3 -16
  111. package/src/icons/SidebarRightIcon.jsx +3 -17
  112. package/src/icons/SongBarIcon.jsx +3 -17
  113. package/src/icons/SoundEffectsIcon.jsx +8 -17
  114. package/src/icons/SparkBarsIcon.jsx +4 -16
  115. package/src/icons/SparklesIcon.jsx +4 -7
  116. package/src/icons/SpeedChangerIcon.jsx +2 -15
  117. package/src/icons/SpliterIcon.jsx +4 -17
  118. package/src/icons/Star1Icon.jsx +5 -4
  119. package/src/icons/Star2Icon.jsx +5 -4
  120. package/src/icons/Star3Icon.jsx +5 -4
  121. package/src/icons/StarIcon.jsx +4 -16
  122. package/src/icons/TrashIcon.jsx +3 -17
  123. package/src/icons/TrimIcon.jsx +2 -17
  124. package/src/icons/UkuleleIcon.jsx +8 -40
  125. package/src/icons/UndoIcon.jsx +3 -16
  126. package/src/icons/UnlockIcon.jsx +3 -13
  127. package/src/icons/UserGroupIcon.jsx +4 -17
  128. package/src/icons/UserIcon.jsx +4 -4
  129. package/src/icons/UserVoiceIcon.jsx +4 -6
  130. package/src/icons/Video2Icon.jsx +4 -22
  131. package/src/icons/VideoIcon.jsx +3 -17
  132. package/src/icons/Volume0Icon.jsx +4 -17
  133. package/src/icons/Volume1Icon.jsx +4 -17
  134. package/src/icons/Volume2Icon.jsx +4 -17
  135. package/src/icons/WidgetIcon.jsx +10 -26
  136. package/src/icons/ZoomInIcon.jsx +2 -17
  137. package/src/icons/ZoomOutIcon.jsx +7 -0
  138. package/src/icons.jsx +12 -2
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@moises.ai/design-system",
3
- "version": "4.19.3",
3
+ "version": "4.19.5",
4
4
  "description": "Design System package based on @radix-ui/themes with custom defaults",
5
5
  "private": false,
6
6
  "type": "module",
@@ -106,31 +106,31 @@
106
106
  --Colors-Neutral-Neutral-Alpha-10: var(--colors-neutral-neutral-alpha-10);
107
107
  --Colors-Neutral-Neutral-1: var(--colors-neutral-neutral-1);
108
108
 
109
- --neutral-1: var(--colors-neutral-neutral-1);
110
- --neutral-2: rgba(24, 25, 27, 1);
111
- --neutral-3: rgba(33, 34, 37, 1);
112
- --neutral-4: rgba(39, 42, 45, 1);
113
- --neutral-5: rgba(46, 49, 53, 1);
114
- --neutral-6: rgba(54, 58, 63, 1);
115
- --neutral-7: rgba(67, 72, 78, 1);
116
- --neutral-8: rgba(90, 97, 105, 1);
117
- --neutral-9: rgba(105, 110, 119, 1);
118
- --neutral-10: rgba(119, 123, 132, 1);
119
- --neutral-11: rgba(176, 180, 186, 1);
120
- --neutral-12: rgba(237, 238, 240, 1);
109
+ --neutral-1: #101013;
110
+ --neutral-2: #16181C;
111
+ --neutral-3: #1F2126;
112
+ --neutral-4: #25292E;
113
+ --neutral-5: #2B2F35;
114
+ --neutral-6: #32383F;
115
+ --neutral-7: #3F464E;
116
+ --neutral-8: #565F69;
117
+ --neutral-9: #656C77;
118
+ --neutral-10: #737884;
119
+ --neutral-11: #ACB4BF;
120
+ --neutral-12: #E6EAF0;
121
121
 
122
- --neutral-alpha-1: rgba(0, 0, 0, 0);
123
- --neutral-alpha-2: var(--colors-neutral-neutral-alpha-2);
124
- --neutral-alpha-3: var(--colors-neutral-neutral-alpha-3);
125
- --neutral-alpha-4: var(--colors-neutral-neutral-alpha-4);
126
- --neutral-alpha-5: var(--colors-neutral-neutral-alpha-5);
127
- --neutral-alpha-6: rgba(214, 235, 253, 0.19);
128
- --neutral-alpha-7: rgba(217, 237, 255, 0.25);
129
- --neutral-alpha-8: rgba(217, 237, 255, 0.36);
130
- --neutral-alpha-9: rgba(223, 235, 253, 0.43);
131
- --neutral-alpha-10: var(--colors-neutral-neutral-alpha-10);
132
- --neutral-alpha-11: rgba(241, 247, 254, 0.71);
133
- --neutral-alpha-12: rgba(252, 253, 255, 0.94);
122
+ --neutral-alpha-1: rgba(207, 234, 236, 0.02);
123
+ --neutral-alpha-2: rgba(197, 239, 246, 0.04);
124
+ --neutral-alpha-3: rgba(206, 222, 248, 0.08);
125
+ --neutral-alpha-4: rgba(196, 228, 248, 0.11);
126
+ --neutral-alpha-5: rgba(201, 226, 254, 0.15);
127
+ --neutral-alpha-6: rgba(200, 228, 253, 0.19);
128
+ --neutral-alpha-7: rgba(204, 231, 255, 0.25);
129
+ --neutral-alpha-8: rgba(204, 231, 255, 0.36);
130
+ --neutral-alpha-9: rgba(207, 226, 253, 0.43);
131
+ --neutral-alpha-10: rgba(218, 229, 253, 0.48);
132
+ --neutral-alpha-11: rgba(229, 240, 254, 0.75);
133
+ --neutral-alpha-12: rgba(242, 247, 255, 0.94);
134
134
 
135
135
  /* Neutral Extras */
136
136
  --neutral-alpha-0-50: rgba(17, 17, 19, 0.50);
@@ -89,7 +89,7 @@
89
89
  }
90
90
 
91
91
  .labelSmall.white {
92
- color: #737373;
92
+ color: var(--neutral-10);
93
93
  }
94
94
 
95
95
  .labelSmall.sm {
@@ -158,7 +158,7 @@
158
158
  }
159
159
 
160
160
  .skeletonBox.white .skeleton {
161
- background: linear-gradient(90deg, #d5d5d5 4.69%, #a1a1a1 100%);
161
+ background: linear-gradient(90deg, var(--neutral-11) 4.69%, var(--neutral-9) 100%);
162
162
  animation: skeleton_animate 1s infinite;
163
163
  }
164
164
 
@@ -167,9 +167,9 @@
167
167
  height: 60px;
168
168
  background: linear-gradient(
169
169
  90deg,
170
- var(--gray-3) 25%,
171
- var(--gray-4) 50%,
172
- var(--gray-3) 75%
170
+ var(--neutral-3) 25%,
171
+ var(--neutral-4) 50%,
172
+ var(--neutral-3) 75%
173
173
  );
174
174
  background-size: 200% 100%;
175
175
  animation: skeleton_animate 1.5s ease-in-out infinite;
@@ -328,18 +328,18 @@
328
328
  }
329
329
 
330
330
  .DataTable :global(.rt-TableRow:hover) .projectCell:not(.dropdownColumn) :not(.artistText) {
331
- color: #edeef0;
331
+ color: var(--neutral-12);
332
332
  }
333
333
 
334
334
  .DataTable
335
335
  :global(.rt-TableRow:focus-within)
336
336
  .projectCell:not(.dropdownColumn)
337
337
  :not(.artistText) {
338
- color: #edeef0;
338
+ color: var(--neutral-12);
339
339
  }
340
340
 
341
341
  .rowSelected .projectCell:not(.dropdownColumn) :not(.artistText) {
342
- color: #edeef0;
342
+ color: var(--neutral-12);
343
343
  }
344
344
 
345
345
  .dropdownTriggerWrapper {
@@ -22,9 +22,9 @@ export const EmptyState = ({
22
22
  }) => {
23
23
  const hasButtonContent = children != null || buttonLabel != null
24
24
  return (
25
- <Theme asChild>
25
+ <Theme asChild hasBackground={false}>
26
26
  <Flex
27
- className={classNames(className)}
27
+ className={classNames(styles.root, className)}
28
28
  direction="column"
29
29
  align="center"
30
30
  justify="center"
@@ -1,10 +1,11 @@
1
+ .root {
2
+ background: transparent;
3
+ }
1
4
 
2
5
  .content {
3
-
4
6
  max-width: 480px;
5
7
  min-width: 320px;
6
8
  width: 100%;
7
-
8
9
  }
9
10
 
10
11
  .iconWrapper {
@@ -77,7 +77,7 @@ function Header({ title, onBack, headerLeft, headerRight, allowClose = true, onC
77
77
  gap="1"
78
78
  mx="4"
79
79
  py="3"
80
- style={{ borderBottom: '1px solid var(--gray-a4)' }}
80
+ style={{ borderBottom: '1px solid var(--neutral-alpha-4)' }}
81
81
  >
82
82
  {headerLeft !== undefined ? (
83
83
  headerLeft
@@ -11,7 +11,7 @@ const sidebarDecorator = (Story) => (
11
11
  style={{
12
12
  width: 300,
13
13
  height: 500,
14
- border: '1px solid var(--gray-a6)',
14
+ border: '1px solid var(--neutral-alpha-6)',
15
15
  borderRadius: 8,
16
16
  overflow: 'hidden',
17
17
  display: 'flex',
@@ -387,7 +387,7 @@ function KeepMountedHomeScreen() {
387
387
  style={{
388
388
  padding: 8,
389
389
  borderRadius: 6,
390
- border: '1px solid var(--gray-a6)',
390
+ border: '1px solid var(--neutral-alpha-6)',
391
391
  }}
392
392
  />
393
393
  <Button variant="soft" size="2" onClick={() => push('next')}>
@@ -11,7 +11,7 @@ export default {
11
11
  },
12
12
  decorators: [
13
13
  (Story) => (
14
- <div style={{ padding: '16px', background: '#1d1d1d', width: '240px' }}>
14
+ <div style={{ padding: '16px', background: 'var(--neutral-2)', width: '240px' }}>
15
15
  <Story />
16
16
  </div>
17
17
  ),
@@ -321,7 +321,7 @@ export const MultipleMeters = {
321
321
  },
322
322
  decorators: [
323
323
  (Story) => (
324
- <div style={{ padding: '16px', background: '#1d1d1d', width: '240px' }}>
324
+ <div style={{ padding: '16px', background: 'var(--neutral-2)', width: '240px' }}>
325
325
  <Story />
326
326
  </div>
327
327
  ),
@@ -107,7 +107,7 @@ export const getPointerProperties = (activeDotIndex, disabled) => {
107
107
 
108
108
  return {
109
109
  pointerRotation: angleInDegrees,
110
- pointerColor: disabled ? '#43484E' : '#B0B4BA',
110
+ pointerColor: disabled ? 'var(--neutral-7)' : 'var(--neutral-11)',
111
111
  }
112
112
  }
113
113
 
@@ -190,8 +190,8 @@ export const PanControl = ({
190
190
  A ${KNOB_RADIUS} ${KNOB_RADIUS} 0 ${largeArc} ${sweep}
191
191
  ${x2.toFixed(3)} ${y2.toFixed(3)}`,
192
192
  pointerRotation: displayNorm * 180,
193
- arcColor: disabled ? '#5A6169' : '#19E4F1',
194
- pointerColor: disabled ? '#43484E' : '#B0B4BA',
193
+ arcColor: disabled ? 'var(--neutral-8)' : '#19E4F1',
194
+ pointerColor: disabled ? 'var(--neutral-7)' : 'var(--neutral-11)',
195
195
  }
196
196
  }, [value, disabled, minValue, maxValue])
197
197
 
@@ -12,7 +12,7 @@ export default {
12
12
  },
13
13
  decorators: [
14
14
  (Story) => (
15
- <div style={{ padding: '16px', background: '#1d1d1d' }}>
15
+ <div style={{ padding: '16px', background: 'var(--neutral-2)' }}>
16
16
  <Story />
17
17
  </div>
18
18
  ),
@@ -23,7 +23,7 @@
23
23
  flex: 1;
24
24
  height: 100%;
25
25
  border-radius: 1px;
26
- background: #333;
26
+ background: var(--neutral-6);
27
27
  transition: background-color 0.1s ease;
28
28
  }
29
29
 
@@ -93,32 +93,28 @@ export const Select = ({
93
93
  })}
94
94
  disabled={disabled || readOnly}
95
95
  >
96
- <Text size={size} style={{ color: 'var(--neutral-12)' }}>
97
- {item.label}
98
- </Text>
99
- {item.aiDetected && (
100
- <Text
101
- size="1"
102
- style={{
103
- color: 'var(--aqua-alpha-9)',
104
- verticalAlign: 'top',
105
- }}
106
- >
107
-
96
+ <span className={styles.itemLabel}>
97
+ <Text size={size} style={{ color: 'var(--neutral-12)' }}>
98
+ {item.label}
108
99
  </Text>
109
- )}
110
- {item.extra && (
111
- <Text
112
- size={size}
113
- className={styles.extra}
114
- style={{
115
- color: 'var(--neutral-alpha-9)',
116
- }}
117
- >
118
- {' '}
119
- {item.extra}
120
- </Text>
121
- )}
100
+ {item.aiDetected && (
101
+ <span className={styles.aiDetected} aria-hidden>
102
+
103
+ </span>
104
+ )}
105
+ {item.extra && (
106
+ <Text
107
+ size={size}
108
+ className={styles.extra}
109
+ style={{
110
+ color: 'var(--neutral-alpha-9)',
111
+ }}
112
+ >
113
+ {' '}
114
+ {item.extra}
115
+ </Text>
116
+ )}
117
+ </span>
122
118
  </SelectRadix.Item>
123
119
  ),
124
120
  )}
@@ -147,3 +147,16 @@
147
147
  padding: 12px 15px;
148
148
  }
149
149
 
150
+ .itemLabel {
151
+ line-height: 1;
152
+ }
153
+
154
+ .aiDetected {
155
+ color: var(--aqua-alpha-9);
156
+ font-size: var(--font-size-1);
157
+ line-height: 1;
158
+ display: inline-block;
159
+ vertical-align: super;
160
+ margin-left: 2px;
161
+ }
162
+
@@ -21,7 +21,7 @@
21
21
 
22
22
  &:hover,
23
23
  &.menuOpen {
24
- background: #212225 !important;
24
+ background: var(--neutral-3) !important;
25
25
 
26
26
  .avatarSetlist {
27
27
  background: var(--neutral-alpha-3);
@@ -91,11 +91,11 @@ export const Default = {
91
91
  <div key="credits-header">
92
92
  <div style={{ display: 'flex', alignItems: 'center', gap: 8 }} className="showActiveTrigger">
93
93
  <Text as="span" style={{ fontSize: 14, fontWeight: 'normal', lineHeight: '20px' }}>Credits: </Text>
94
- <Text as="span" style={{ color: 'var(--gray-12)', fontSize: 14 }}>45/60</Text>
94
+ <Text as="span" style={{ color: 'var(--neutral-12)', fontSize: 14 }}>45/60</Text>
95
95
  <button
96
96
  type="button"
97
97
  aria-label="Upgrade"
98
- style={{ border: 'none', cursor: 'pointer', backgroundColor: 'var(--cyan-9)', color: 'var(--gray-1)', fontSize: 12, fontWeight: 500, padding: '4px 8px', borderRadius: 4 }}
98
+ style={{ border: 'none', cursor: 'pointer', backgroundColor: 'var(--cyan-9)', color: 'var(--neutral-1)', fontSize: 12, fontWeight: 500, padding: '4px 8px', borderRadius: 4 }}
99
99
  onClick={() => {
100
100
  closeMenu?.()
101
101
  console.log('Upgrade clicked - menu should close')
@@ -16,7 +16,7 @@
16
16
  }
17
17
 
18
18
  .root[data-disabled] .track {
19
- background-color: #212225;
19
+ background-color: var(--neutral-3);
20
20
  opacity: 1;
21
21
  filter: none;
22
22
  }
@@ -25,7 +25,7 @@
25
25
  position: relative;
26
26
  flex-grow: 1;
27
27
  height: 4px;
28
- background: var(--neutral-alpha-3, rgba(221, 234, 248, 0.08));
28
+ background: var(--neutral-alpha-3);
29
29
  border-radius: 99px;
30
30
  overflow: hidden;
31
31
  }
@@ -46,19 +46,19 @@
46
46
  background: var(--white, #fff);
47
47
  border: none;
48
48
  border-radius: 99px;
49
- box-shadow: 0 0 0 1px #2e31354d;
49
+ box-shadow: 0 0 0 1px var(--neutral-alpha-5);
50
50
  outline: none;
51
51
  cursor: ew-resize;
52
52
  }
53
53
 
54
54
  .thumb[data-focus-visible] {
55
- outline: 2px solid var(--neutral-alpha-8, rgba(217, 237, 255, 0.36));
55
+ outline: 2px solid var(--neutral-alpha-8);
56
56
  outline-offset: 2px;
57
57
  }
58
58
 
59
59
  .root[data-disabled] .thumb {
60
60
  background-color: #18191b;
61
- border: 1px solid #43484e;
61
+ border: 1px solid var(--neutral-7);
62
62
  box-shadow: none;
63
63
  cursor: default;
64
64
  opacity: 1;
@@ -66,7 +66,7 @@
66
66
  }
67
67
 
68
68
  .root[data-disabled] .range {
69
- background-color: #303236;
69
+ background-color: var(--neutral-5);
70
70
  opacity: 1;
71
71
  filter: none;
72
72
  }
@@ -44,7 +44,7 @@ export default {
44
44
  style={{
45
45
  width: 280,
46
46
  padding: 24,
47
- background: '#1d1d1d',
47
+ background: 'var(--neutral-2)',
48
48
  borderRadius: 8,
49
49
  }}
50
50
  >
@@ -134,7 +134,7 @@ export const TooltipTiming = {
134
134
  formatValue={(v) => `${v}%`}
135
135
  aria-label="Volume"
136
136
  />
137
- <span style={{ color: '#a1a1a1', fontSize: 12 }}>
137
+ <span style={{ color: 'var(--neutral-11)', fontSize: 12 }}>
138
138
  Opens after {args.tooltipDelayDuration}ms · closes {args.tooltipCloseDelay}ms
139
139
  after leave
140
140
  </span>
@@ -178,7 +178,7 @@ export const ThumbDoubleClick = {
178
178
  formatValue={(v) => `${v}%`}
179
179
  aria-label="Volume"
180
180
  />
181
- <span style={{ color: '#a1a1a1', fontSize: 12 }}>
181
+ <span style={{ color: 'var(--neutral-11)', fontSize: 12 }}>
182
182
  Double-click the thumb to reset to {defaultValue}%
183
183
  </span>
184
184
  </div>
@@ -52,7 +52,7 @@
52
52
  border: none;
53
53
  background: transparent;
54
54
  cursor: pointer;
55
- color: var(--gray-1, #fcfcfd);
55
+ color: var(--neutral-12);
56
56
  display: inline-flex;
57
57
  align-items: center;
58
58
  justify-content: center;
@@ -245,13 +245,13 @@ export const CreateNew = ({
245
245
  onClick={onAddConditioningAudio}
246
246
  style={{
247
247
  borderRadius: 'var(--radius-4)',
248
- border: '1px solid #202224',
248
+ border: '1px solid var(--neutral-3)',
249
249
  cursor: 'pointer',
250
250
  paddingTop: 10,
251
251
  paddingBottom: 10,
252
252
  }}
253
253
  >
254
- <AttachmentIcon width={16} height={16} style={{ color: '#B0B4BA' }} />
254
+ <AttachmentIcon width={16} height={16} style={{ color: 'var(--neutral-11)' }} />
255
255
  <Tooltip
256
256
  content={i18n._(
257
257
  'Best results: use isolated target instrument.',
@@ -20,6 +20,9 @@ export const TextField = ({
20
20
  error,
21
21
  secondaryText,
22
22
  autoFocus,
23
+ aiDetected = false,
24
+ textAlign = 'left',
25
+ style,
23
26
  ...props
24
27
  }) => {
25
28
  // legacy Icon prop is kept for backwards compatibility.
@@ -27,6 +30,8 @@ export const TextField = ({
27
30
  startSlot ||
28
31
  (Icon ? <Icon width={16} height={16} className={styles.icon} /> : null)
29
32
 
33
+ const chars = String(value ?? '').length
34
+
30
35
  return (
31
36
  <Flex direction="column" width="100%" height="100%" gap="1">
32
37
  {title && (
@@ -48,7 +53,13 @@ export const TextField = ({
48
53
  [styles.focusRing]: focusRing || error,
49
54
  [styles.errorText]: error,
50
55
  [styles[`size${size}`]]: size,
56
+ [styles.alignCenter]: textAlign === 'center',
57
+ [styles.alignLeft]: textAlign === 'left',
51
58
  })}
59
+ style={{
60
+ ...(aiDetected && { '--ai-chars': chars }),
61
+ ...style,
62
+ }}
52
63
  readOnly={readOnly}
53
64
  disabled={disabled}
54
65
  autoFocus={autoFocus}
@@ -57,18 +68,25 @@ export const TextField = ({
57
68
  {resolvedStartSlot && (
58
69
  <TextFieldRadix.Slot>{resolvedStartSlot}</TextFieldRadix.Slot>
59
70
  )}
71
+ {aiDetected && (
72
+ <span className={styles.aiDetected} aria-hidden>
73
+ <span className={styles.aiDetectedMark}>✦</span>
74
+ </span>
75
+ )}
60
76
  {endSlot && <div className={styles.endSlot}>{endSlot}</div>}
61
77
  </TextFieldRadix.Root>
62
78
  {secondaryText && (
63
- <Text size='1' weight="regular"
79
+ <Text
80
+ size="1"
81
+ weight="regular"
64
82
  className={classNames(styles.secondaryText, {
65
- [styles.errorText]: error
66
- })}>
83
+ [styles.errorText]: error,
84
+ })}
85
+ >
67
86
  {secondaryText}
68
87
  </Text>
69
- )
70
- }
71
- </Flex >
88
+ )}
89
+ </Flex>
72
90
  )
73
91
  }
74
92
 
@@ -1,4 +1,5 @@
1
1
  .TextField {
2
+ position: relative;
2
3
  background-color: var(--neutral-alpha-3);
3
4
  color: var(--neutral-12);
4
5
  box-shadow: none;
@@ -27,6 +28,42 @@
27
28
  }
28
29
  }
29
30
 
31
+ .alignLeft input {
32
+ text-align: left;
33
+ }
34
+
35
+ .alignCenter input {
36
+ text-align: center;
37
+ /* Radix uses text-indent as left inset; reset it so center is true center. */
38
+ text-indent: 0;
39
+ padding-left: var(--text-field-padding);
40
+ padding-right: var(--text-field-padding);
41
+ }
42
+
43
+ .aiDetected {
44
+ position: absolute;
45
+ top: 50%;
46
+ transform: translateY(-50%);
47
+ pointer-events: none;
48
+ line-height: 1;
49
+ }
50
+
51
+ .alignLeft .aiDetected {
52
+ left: calc(var(--text-field-padding) + (var(--ai-chars, 0) * 1ch) + 2px);
53
+ }
54
+
55
+ .alignCenter .aiDetected {
56
+ left: calc(50% + (var(--ai-chars, 0) * 0.5ch) + 2px);
57
+ }
58
+
59
+ .aiDetectedMark {
60
+ display: inline-block;
61
+ color: var(--aqua-alpha-9);
62
+ font-size: var(--font-size-1);
63
+ line-height: 1;
64
+ transform: translateY(-0.35em);
65
+ }
66
+
30
67
  .icon {
31
68
  color: var(--neutral-alpha-10);
32
69
  }
@@ -155,6 +155,23 @@ const MyComponent = () => (
155
155
  defaultValue: { summary: 'undefined' },
156
156
  },
157
157
  },
158
+ aiDetected: {
159
+ control: 'boolean',
160
+ description: 'Shows ✦ icon next to the input value when true',
161
+ table: {
162
+ type: { summary: 'boolean' },
163
+ defaultValue: { summary: 'false' },
164
+ },
165
+ },
166
+ textAlign: {
167
+ control: 'select',
168
+ options: ['left', 'center'],
169
+ description: 'Horizontal alignment of the input text',
170
+ table: {
171
+ type: { summary: "'left' | 'center'" },
172
+ defaultValue: { summary: 'left' },
173
+ },
174
+ },
158
175
  },
159
176
  decorators: [
160
177
  (Story) => (
@@ -273,3 +290,25 @@ export const WithCustomSlots = {
273
290
  },
274
291
  name: 'With custom slots',
275
292
  }
293
+
294
+ export const WithAiDetected = {
295
+ args: {
296
+ ...Default.args,
297
+ title: 'Tempo',
298
+ value: '120',
299
+ textAlign: 'center',
300
+ aiDetected: true,
301
+ },
302
+ name: 'With AI detected',
303
+ }
304
+
305
+ export const WithAiDetectedLeft = {
306
+ args: {
307
+ ...Default.args,
308
+ title: 'Song tuning (Hz)',
309
+ value: '440',
310
+ textAlign: 'left',
311
+ aiDetected: true,
312
+ },
313
+ name: 'With AI detected (left)',
314
+ }