@workflow/web-shared 4.1.0-beta.51 → 4.1.0-beta.53

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 (145) hide show
  1. package/dist/components/error-boundary.d.ts +15 -20
  2. package/dist/components/error-boundary.d.ts.map +1 -1
  3. package/dist/components/error-boundary.js +17 -31
  4. package/dist/components/error-boundary.js.map +1 -1
  5. package/dist/components/event-list-view.d.ts +7 -6
  6. package/dist/components/event-list-view.d.ts.map +1 -1
  7. package/dist/components/event-list-view.js +492 -109
  8. package/dist/components/event-list-view.js.map +1 -1
  9. package/dist/components/index.d.ts +1 -0
  10. package/dist/components/index.d.ts.map +1 -1
  11. package/dist/components/index.js +1 -0
  12. package/dist/components/index.js.map +1 -1
  13. package/dist/components/run-trace-view.d.ts +2 -1
  14. package/dist/components/run-trace-view.d.ts.map +1 -1
  15. package/dist/components/run-trace-view.js +2 -2
  16. package/dist/components/run-trace-view.js.map +1 -1
  17. package/dist/components/sidebar/attribute-panel.d.ts +2 -1
  18. package/dist/components/sidebar/attribute-panel.d.ts.map +1 -1
  19. package/dist/components/sidebar/attribute-panel.js +53 -142
  20. package/dist/components/sidebar/attribute-panel.js.map +1 -1
  21. package/dist/components/sidebar/conversation-view.d.ts.map +1 -1
  22. package/dist/components/sidebar/conversation-view.js +3 -17
  23. package/dist/components/sidebar/conversation-view.js.map +1 -1
  24. package/dist/components/sidebar/entity-detail-panel.d.ts +3 -1
  25. package/dist/components/sidebar/entity-detail-panel.d.ts.map +1 -1
  26. package/dist/components/sidebar/entity-detail-panel.js +63 -10
  27. package/dist/components/sidebar/entity-detail-panel.js.map +1 -1
  28. package/dist/components/sidebar/events-list.d.ts.map +1 -1
  29. package/dist/components/sidebar/events-list.js +4 -8
  30. package/dist/components/sidebar/events-list.js.map +1 -1
  31. package/dist/components/sidebar/resolve-hook-modal.d.ts +3 -0
  32. package/dist/components/sidebar/resolve-hook-modal.d.ts.map +1 -1
  33. package/dist/components/sidebar/resolve-hook-modal.js +152 -3
  34. package/dist/components/sidebar/resolve-hook-modal.js.map +1 -1
  35. package/dist/components/stream-viewer.d.ts +7 -5
  36. package/dist/components/stream-viewer.d.ts.map +1 -1
  37. package/dist/components/stream-viewer.js +54 -22
  38. package/dist/components/stream-viewer.js.map +1 -1
  39. package/dist/components/trace-viewer/components/markers.d.ts +2 -1
  40. package/dist/components/trace-viewer/components/markers.d.ts.map +1 -1
  41. package/dist/components/trace-viewer/components/markers.js +59 -20
  42. package/dist/components/trace-viewer/components/markers.js.map +1 -1
  43. package/dist/components/trace-viewer/components/node.d.ts +5 -1
  44. package/dist/components/trace-viewer/components/node.d.ts.map +1 -1
  45. package/dist/components/trace-viewer/components/node.js +250 -68
  46. package/dist/components/trace-viewer/components/node.js.map +1 -1
  47. package/dist/components/trace-viewer/components/span-content.d.ts +19 -0
  48. package/dist/components/trace-viewer/components/span-content.d.ts.map +1 -0
  49. package/dist/components/trace-viewer/components/span-content.js +137 -0
  50. package/dist/components/trace-viewer/components/span-content.js.map +1 -0
  51. package/dist/components/trace-viewer/components/span-detail-panel.d.ts.map +1 -1
  52. package/dist/components/trace-viewer/components/span-detail-panel.js +3 -2
  53. package/dist/components/trace-viewer/components/span-detail-panel.js.map +1 -1
  54. package/dist/components/trace-viewer/components/span-segments.d.ts +50 -0
  55. package/dist/components/trace-viewer/components/span-segments.d.ts.map +1 -0
  56. package/dist/components/trace-viewer/components/span-segments.js +392 -0
  57. package/dist/components/trace-viewer/components/span-segments.js.map +1 -0
  58. package/dist/components/trace-viewer/components/span-strategies.d.ts +46 -0
  59. package/dist/components/trace-viewer/components/span-strategies.d.ts.map +1 -0
  60. package/dist/components/trace-viewer/components/span-strategies.js +108 -0
  61. package/dist/components/trace-viewer/components/span-strategies.js.map +1 -0
  62. package/dist/components/trace-viewer/context.d.ts +7 -6
  63. package/dist/components/trace-viewer/context.d.ts.map +1 -1
  64. package/dist/components/trace-viewer/context.js +47 -18
  65. package/dist/components/trace-viewer/context.js.map +1 -1
  66. package/dist/components/trace-viewer/trace-viewer.d.ts +5 -1
  67. package/dist/components/trace-viewer/trace-viewer.d.ts.map +1 -1
  68. package/dist/components/trace-viewer/trace-viewer.js +87 -11
  69. package/dist/components/trace-viewer/trace-viewer.js.map +1 -1
  70. package/dist/components/trace-viewer/trace-viewer.module.css +179 -6
  71. package/dist/components/trace-viewer/util/timing.d.ts +5 -0
  72. package/dist/components/trace-viewer/util/timing.d.ts.map +1 -1
  73. package/dist/components/trace-viewer/util/timing.js +12 -0
  74. package/dist/components/trace-viewer/util/timing.js.map +1 -1
  75. package/dist/components/trace-viewer/util/use-streaming-spans.d.ts +1 -1
  76. package/dist/components/trace-viewer/util/use-streaming-spans.d.ts.map +1 -1
  77. package/dist/components/trace-viewer/util/use-streaming-spans.js +29 -17
  78. package/dist/components/trace-viewer/util/use-streaming-spans.js.map +1 -1
  79. package/dist/components/trace-viewer/worker.js +3 -1
  80. package/dist/components/trace-viewer/worker.js.map +1 -1
  81. package/dist/components/ui/alert.js +3 -3
  82. package/dist/components/ui/alert.js.map +1 -1
  83. package/dist/components/ui/card.d.ts.map +1 -1
  84. package/dist/components/ui/card.js +2 -2
  85. package/dist/components/ui/card.js.map +1 -1
  86. package/dist/components/ui/data-inspector.d.ts +17 -0
  87. package/dist/components/ui/data-inspector.d.ts.map +1 -0
  88. package/dist/components/ui/data-inspector.js +184 -0
  89. package/dist/components/ui/data-inspector.js.map +1 -0
  90. package/dist/components/ui/error-card.d.ts.map +1 -1
  91. package/dist/components/ui/error-card.js +4 -1
  92. package/dist/components/ui/error-card.js.map +1 -1
  93. package/dist/components/ui/inspector-theme.d.ts +39 -24
  94. package/dist/components/ui/inspector-theme.d.ts.map +1 -1
  95. package/dist/components/ui/inspector-theme.js +90 -38
  96. package/dist/components/ui/inspector-theme.js.map +1 -1
  97. package/dist/components/ui/skeleton.d.ts +1 -1
  98. package/dist/components/ui/skeleton.d.ts.map +1 -1
  99. package/dist/components/ui/skeleton.js +2 -2
  100. package/dist/components/ui/skeleton.js.map +1 -1
  101. package/dist/components/workflow-trace-view.d.ts +3 -1
  102. package/dist/components/workflow-trace-view.d.ts.map +1 -1
  103. package/dist/components/workflow-trace-view.js +435 -21
  104. package/dist/components/workflow-trace-view.js.map +1 -1
  105. package/dist/components/workflow-traces/trace-span-construction.d.ts +1 -1
  106. package/dist/components/workflow-traces/trace-span-construction.d.ts.map +1 -1
  107. package/dist/components/workflow-traces/trace-span-construction.js +2 -2
  108. package/dist/components/workflow-traces/trace-span-construction.js.map +1 -1
  109. package/dist/lib/hydration.d.ts.map +1 -1
  110. package/dist/lib/hydration.js +17 -3
  111. package/dist/lib/hydration.js.map +1 -1
  112. package/dist/styles.css +186 -0
  113. package/package.json +8 -7
  114. package/src/components/error-boundary.tsx +29 -40
  115. package/src/components/event-list-view.tsx +1000 -287
  116. package/src/components/index.ts +1 -0
  117. package/src/components/run-trace-view.tsx +3 -0
  118. package/src/components/sidebar/attribute-panel.tsx +58 -258
  119. package/src/components/sidebar/conversation-view.tsx +30 -27
  120. package/src/components/sidebar/entity-detail-panel.tsx +86 -20
  121. package/src/components/sidebar/events-list.tsx +4 -11
  122. package/src/components/sidebar/resolve-hook-modal.tsx +206 -47
  123. package/src/components/stream-viewer.tsx +138 -61
  124. package/src/components/trace-viewer/components/markers.tsx +69 -21
  125. package/src/components/trace-viewer/components/node.tsx +346 -100
  126. package/src/components/trace-viewer/components/span-content.tsx +247 -0
  127. package/src/components/trace-viewer/components/span-detail-panel.tsx +7 -2
  128. package/src/components/trace-viewer/components/span-segments.ts +516 -0
  129. package/src/components/trace-viewer/components/span-strategies.ts +205 -0
  130. package/src/components/trace-viewer/context.tsx +92 -40
  131. package/src/components/trace-viewer/trace-viewer.module.css +179 -6
  132. package/src/components/trace-viewer/trace-viewer.tsx +115 -11
  133. package/src/components/trace-viewer/util/timing.ts +13 -0
  134. package/src/components/trace-viewer/util/use-streaming-spans.ts +28 -17
  135. package/src/components/trace-viewer/worker.ts +4 -1
  136. package/src/components/ui/alert.tsx +3 -3
  137. package/src/components/ui/card.tsx +3 -5
  138. package/src/components/ui/data-inspector.tsx +318 -0
  139. package/src/components/ui/error-card.tsx +17 -6
  140. package/src/components/ui/inspector-theme.ts +127 -39
  141. package/src/components/ui/skeleton.tsx +3 -1
  142. package/src/components/workflow-trace-view.tsx +625 -26
  143. package/src/components/workflow-traces/trace-span-construction.ts +3 -2
  144. package/src/lib/hydration.ts +17 -8
  145. package/src/styles.css +186 -0
@@ -28,20 +28,22 @@ export function ErrorCard({
28
28
  <div className="flex justify-center w-full">
29
29
  <div
30
30
  className={cn(
31
- 'rounded-lg border border-destructive/50 bg-destructive/5 w-full max-w-[800px]',
31
+ 'rounded-lg border border-red-400 w-full max-w-[800px]',
32
32
  className
33
33
  )}
34
+ style={{ background: 'var(--ds-red-100)' }}
34
35
  >
35
36
  <button
36
37
  type="button"
37
38
  onClick={() => setIsExpanded(!isExpanded)}
38
- className="w-full px-4 py-3 flex items-center justify-between gap-2 text-left hover:bg-destructive/10 transition-colors"
39
+ className="w-full px-4 py-3 flex items-center justify-between gap-2 text-left transition-colors"
40
+ style={{ color: 'var(--ds-red-900)' }}
39
41
  >
40
- <div className="flex items-center gap-2 text-destructive">
42
+ <div className="flex items-center gap-2">
41
43
  <AlertCircle className="h-4 w-4 shrink-0" />
42
44
  <span className="font-medium text-sm">{title}</span>
43
45
  </div>
44
- <div className="flex items-center gap-1.5 text-destructive/70">
46
+ <div className="flex items-center gap-1.5 opacity-70">
45
47
  <span className="text-xs">Click to show details</span>
46
48
  <ChevronDown
47
49
  className={cn(
@@ -53,8 +55,17 @@ export function ErrorCard({
53
55
  </button>
54
56
 
55
57
  {isExpanded && details && (
56
- <div className="px-4 pb-3 border-t border-destructive/20">
57
- <pre className="mt-3 p-3 rounded-md bg-destructive/10 text-destructive text-xs font-mono whitespace-pre-wrap break-words overflow-auto">
58
+ <div
59
+ className="px-4 pb-3"
60
+ style={{ borderTop: '1px solid var(--ds-red-400)' }}
61
+ >
62
+ <pre
63
+ className="mt-3 p-3 rounded-md text-xs font-mono whitespace-pre-wrap break-words overflow-auto"
64
+ style={{
65
+ background: 'var(--ds-red-200)',
66
+ color: 'var(--ds-red-900)',
67
+ }}
68
+ >
58
69
  {details}
59
70
  </pre>
60
71
  </div>
@@ -1,64 +1,152 @@
1
1
  /**
2
2
  * Shared theme configuration for react-inspector's ObjectInspector.
3
3
  *
4
- * Used by AttributePanel, EventListView, StreamViewer, and any other
5
- * component that renders data with ObjectInspector.
4
+ * Color choices are inspired by Node.js `util.inspect()` ANSI stylizing:
5
+ * - property names: unstyled (default foreground — dark text on light, light text on dark)
6
+ * - strings / symbols: green
7
+ * - numbers / booleans / bigint: yellow
8
+ * - null: bold (foreground)
9
+ * - undefined: grey
10
+ * - regexp: red
11
+ * - functions (special): cyan
12
+ * - date: magenta
13
+ *
14
+ * See: https://github.com/nodejs/node/blob/main/lib/internal/util/inspect.js
6
15
  */
7
16
 
8
- export const inspectorThemeLight = {
17
+ // ---------------------------------------------------------------------------
18
+ // Extended color tokens not supported by react-inspector's built-in theme
19
+ // system, applied via our custom nodeRenderer in data-inspector.tsx.
20
+ // ---------------------------------------------------------------------------
21
+
22
+ export interface InspectorThemeExtended {
23
+ /** Color for Date values (Node: 'magenta') */
24
+ OBJECT_VALUE_DATE_COLOR: string;
25
+ }
26
+
27
+ export const inspectorThemeExtendedLight: InspectorThemeExtended = {
28
+ OBJECT_VALUE_DATE_COLOR: '#a21caf', // fuchsia-700
29
+ };
30
+
31
+ export const inspectorThemeExtendedDark: InspectorThemeExtended = {
32
+ OBJECT_VALUE_DATE_COLOR: '#e879f9', // fuchsia-400
33
+ };
34
+
35
+ // ---------------------------------------------------------------------------
36
+ // Shared structural values (same in both themes)
37
+ // ---------------------------------------------------------------------------
38
+
39
+ const shared = {
9
40
  BASE_FONT_SIZE: '11px',
10
41
  BASE_LINE_HEIGHT: 1.4,
11
42
  BASE_BACKGROUND_COLOR: 'transparent',
12
- BASE_COLOR: 'var(--ds-gray-1000)',
13
43
  OBJECT_PREVIEW_ARRAY_MAX_PROPERTIES: 10,
14
44
  OBJECT_PREVIEW_OBJECT_MAX_PROPERTIES: 5,
15
- OBJECT_NAME_COLOR: 'rgb(136, 19, 145)',
16
- OBJECT_VALUE_NULL_COLOR: 'rgb(128, 128, 128)',
17
- OBJECT_VALUE_UNDEFINED_COLOR: 'rgb(128, 128, 128)',
18
- OBJECT_VALUE_REGEXP_COLOR: 'rgb(196, 26, 22)',
19
- OBJECT_VALUE_STRING_COLOR: 'rgb(196, 26, 22)',
20
- OBJECT_VALUE_SYMBOL_COLOR: 'rgb(196, 26, 22)',
21
- OBJECT_VALUE_NUMBER_COLOR: 'rgb(28, 0, 207)',
22
- OBJECT_VALUE_BOOLEAN_COLOR: 'rgb(28, 0, 207)',
23
- OBJECT_VALUE_FUNCTION_PREFIX_COLOR: 'rgb(13, 34, 170)',
24
- HTML_TAG_COLOR: 'rgb(168, 148, 166)',
25
- HTML_TAGNAME_COLOR: 'rgb(136, 18, 128)',
26
- HTML_TAGNAME_TEXT_TRANSFORM: 'lowercase',
27
- HTML_ATTRIBUTE_NAME_COLOR: 'rgb(153, 69, 0)',
28
- HTML_ATTRIBUTE_VALUE_COLOR: 'rgb(26, 26, 166)',
29
- HTML_COMMENT_COLOR: 'rgb(35, 110, 37)',
30
- HTML_DOCTYPE_COLOR: 'rgb(192, 192, 192)',
31
- ARROW_COLOR: 'var(--ds-gray-600)',
45
+ HTML_TAGNAME_TEXT_TRANSFORM: 'lowercase' as const,
32
46
  ARROW_MARGIN_RIGHT: 3,
33
47
  ARROW_FONT_SIZE: 12,
34
48
  TREENODE_FONT_FAMILY: 'var(--font-mono)',
35
49
  TREENODE_FONT_SIZE: '11px',
36
50
  TREENODE_LINE_HEIGHT: 1.4,
37
51
  TREENODE_PADDING_LEFT: 12,
52
+ TABLE_DATA_BACKGROUND_IMAGE: 'none',
53
+ TABLE_DATA_BACKGROUND_SIZE: '0',
54
+ };
55
+
56
+ // ---------------------------------------------------------------------------
57
+ // Light theme
58
+ // ---------------------------------------------------------------------------
59
+
60
+ export const inspectorThemeLight = {
61
+ ...shared,
62
+
63
+ // Base text
64
+ BASE_COLOR: 'var(--ds-gray-1000)',
65
+
66
+ // Property names — unstyled, same as base foreground (Node: no style)
67
+ OBJECT_NAME_COLOR: 'var(--ds-gray-900)',
68
+
69
+ // Strings & symbols — green (Node: 'green')
70
+ OBJECT_VALUE_STRING_COLOR: '#16a34a', // green-600
71
+ OBJECT_VALUE_SYMBOL_COLOR: '#16a34a',
72
+
73
+ // Numbers & booleans — yellow/amber (Node: 'yellow')
74
+ OBJECT_VALUE_NUMBER_COLOR: '#b45309', // amber-700 (readable on white)
75
+ OBJECT_VALUE_BOOLEAN_COLOR: '#b45309',
76
+
77
+ // null — bold foreground (Node: 'bold')
78
+ OBJECT_VALUE_NULL_COLOR: 'var(--ds-gray-900)',
79
+
80
+ // undefined — grey (Node: 'grey')
81
+ OBJECT_VALUE_UNDEFINED_COLOR: 'var(--ds-gray-500)',
82
+
83
+ // RegExp — red (Node regexp base uses green/red/yellow palette)
84
+ OBJECT_VALUE_REGEXP_COLOR: '#dc2626', // red-600
85
+
86
+ // Functions — cyan (Node: 'special' → 'cyan')
87
+ OBJECT_VALUE_FUNCTION_PREFIX_COLOR: '#0891b2', // cyan-600
88
+
89
+ // HTML (less relevant for data inspection, but reasonable defaults)
90
+ HTML_TAG_COLOR: 'var(--ds-gray-500)',
91
+ HTML_TAGNAME_COLOR: '#0891b2',
92
+ HTML_ATTRIBUTE_NAME_COLOR: '#b45309',
93
+ HTML_ATTRIBUTE_VALUE_COLOR: '#16a34a',
94
+ HTML_COMMENT_COLOR: 'var(--ds-gray-400)',
95
+ HTML_DOCTYPE_COLOR: 'var(--ds-gray-400)',
96
+
97
+ // Structural
98
+ ARROW_COLOR: 'var(--ds-gray-500)',
38
99
  TABLE_BORDER_COLOR: 'var(--ds-gray-300)',
39
100
  TABLE_TH_BACKGROUND_COLOR: 'var(--ds-gray-100)',
40
101
  TABLE_TH_HOVER_COLOR: 'var(--ds-gray-200)',
41
102
  TABLE_SORT_ICON_COLOR: 'var(--ds-gray-500)',
42
- TABLE_DATA_BACKGROUND_IMAGE: 'none',
43
- TABLE_DATA_BACKGROUND_SIZE: '0',
44
103
  };
45
104
 
105
+ // ---------------------------------------------------------------------------
106
+ // Dark theme
107
+ // ---------------------------------------------------------------------------
108
+
46
109
  export const inspectorThemeDark = {
47
- ...inspectorThemeLight,
110
+ ...shared,
111
+
112
+ // Base text
48
113
  BASE_COLOR: 'var(--ds-gray-1000)',
49
- OBJECT_NAME_COLOR: 'rgb(227, 110, 236)',
50
- OBJECT_VALUE_NULL_COLOR: 'rgb(127, 127, 127)',
51
- OBJECT_VALUE_UNDEFINED_COLOR: 'rgb(127, 127, 127)',
52
- OBJECT_VALUE_REGEXP_COLOR: 'rgb(233, 63, 59)',
53
- OBJECT_VALUE_STRING_COLOR: 'rgb(233, 63, 59)',
54
- OBJECT_VALUE_SYMBOL_COLOR: 'rgb(233, 63, 59)',
55
- OBJECT_VALUE_NUMBER_COLOR: 'hsl(252, 100%, 75%)',
56
- OBJECT_VALUE_BOOLEAN_COLOR: 'hsl(252, 100%, 75%)',
57
- OBJECT_VALUE_FUNCTION_PREFIX_COLOR: 'rgb(85, 106, 242)',
58
- HTML_TAG_COLOR: 'rgb(93, 176, 215)',
59
- HTML_TAGNAME_COLOR: 'rgb(93, 176, 215)',
60
- HTML_ATTRIBUTE_NAME_COLOR: 'rgb(155, 187, 220)',
61
- HTML_ATTRIBUTE_VALUE_COLOR: 'rgb(242, 151, 102)',
62
- HTML_COMMENT_COLOR: 'rgb(137, 137, 137)',
63
- HTML_DOCTYPE_COLOR: 'rgb(192, 192, 192)',
114
+
115
+ // Property names — white/light foreground (Node: unstyled = white in dark terminal)
116
+ OBJECT_NAME_COLOR: 'var(--ds-gray-900)',
117
+
118
+ // Strings & symbols — green (Node: 'green')
119
+ OBJECT_VALUE_STRING_COLOR: '#4ade80', // green-400
120
+ OBJECT_VALUE_SYMBOL_COLOR: '#4ade80',
121
+
122
+ // Numbers & booleans — yellow (Node: 'yellow')
123
+ OBJECT_VALUE_NUMBER_COLOR: '#facc15', // yellow-400
124
+ OBJECT_VALUE_BOOLEAN_COLOR: '#facc15',
125
+
126
+ // null — bold foreground / white (Node: 'bold')
127
+ OBJECT_VALUE_NULL_COLOR: 'var(--ds-gray-1000)',
128
+
129
+ // undefined — grey (Node: 'grey')
130
+ OBJECT_VALUE_UNDEFINED_COLOR: 'var(--ds-gray-500)',
131
+
132
+ // RegExp — red (Node regexp palette)
133
+ OBJECT_VALUE_REGEXP_COLOR: '#f87171', // red-400
134
+
135
+ // Functions — cyan (Node: 'special' → 'cyan')
136
+ OBJECT_VALUE_FUNCTION_PREFIX_COLOR: '#22d3ee', // cyan-400
137
+
138
+ // HTML
139
+ HTML_TAG_COLOR: 'var(--ds-gray-500)',
140
+ HTML_TAGNAME_COLOR: '#22d3ee',
141
+ HTML_ATTRIBUTE_NAME_COLOR: '#facc15',
142
+ HTML_ATTRIBUTE_VALUE_COLOR: '#4ade80',
143
+ HTML_COMMENT_COLOR: 'var(--ds-gray-500)',
144
+ HTML_DOCTYPE_COLOR: 'var(--ds-gray-500)',
145
+
146
+ // Structural
147
+ ARROW_COLOR: 'var(--ds-gray-500)',
148
+ TABLE_BORDER_COLOR: 'var(--ds-gray-300)',
149
+ TABLE_TH_BACKGROUND_COLOR: 'var(--ds-gray-100)',
150
+ TABLE_TH_HOVER_COLOR: 'var(--ds-gray-200)',
151
+ TABLE_SORT_ICON_COLOR: 'var(--ds-gray-500)',
64
152
  };
@@ -2,12 +2,14 @@ import { cn } from '../../lib/utils';
2
2
 
3
3
  function Skeleton({
4
4
  className,
5
+ style,
5
6
  ...props
6
7
  }: React.HTMLAttributes<HTMLDivElement>) {
7
8
  return (
8
9
  <div
9
- className={cn('animate-pulse rounded-md bg-muted', className)}
10
10
  {...props}
11
+ className={cn('rounded-md', className)}
12
+ style={{ backgroundColor: 'var(--ds-gray-200)', ...style }}
11
13
  />
12
14
  );
13
15
  }