@sudobility/devops-components-rn 1.0.0 → 1.0.1
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.
- package/dist/AlertDialog.d.ts.map +1 -1
- package/dist/ApiPlayground.d.ts.map +1 -1
- package/dist/ApiReference.d.ts.map +1 -1
- package/dist/AuditLog.d.ts +26 -4
- package/dist/AuditLog.d.ts.map +1 -1
- package/dist/BodyMetrics.d.ts.map +1 -1
- package/dist/BuildLog.d.ts +16 -5
- package/dist/BuildLog.d.ts.map +1 -1
- package/dist/ChangelogDisplay.d.ts.map +1 -1
- package/dist/CodePlayground.d.ts.map +1 -1
- package/dist/ConflictResolver.d.ts.map +1 -1
- package/dist/DealPipeline.d.ts.map +1 -1
- package/dist/DeploymentStatus.d.ts +11 -4
- package/dist/DeploymentStatus.d.ts.map +1 -1
- package/dist/DriverLog.d.ts.map +1 -1
- package/dist/MemoryUsage.d.ts.map +1 -1
- package/dist/MetricsGrid.d.ts +12 -19
- package/dist/MetricsGrid.d.ts.map +1 -1
- package/dist/PipelineView.d.ts +21 -5
- package/dist/PipelineView.d.ts.map +1 -1
- package/dist/RegressionTest.d.ts.map +1 -1
- package/dist/SystemStatusIndicator.d.ts +9 -8
- package/dist/SystemStatusIndicator.d.ts.map +1 -1
- package/dist/TestResult.d.ts.map +1 -1
- package/dist/TestRunner.d.ts.map +1 -1
- package/dist/WebhookLogger.d.ts.map +1 -1
- package/dist/WorkflowBuilder.d.ts.map +1 -1
- package/dist/WorkflowTemplate.d.ts.map +1 -1
- package/dist/XmlParser.d.ts.map +1 -1
- package/dist/{index.cjs.js → index.cjs} +634 -614
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +6 -27
- package/dist/index.d.ts.map +1 -1
- package/dist/{index.esm.js → index.mjs} +637 -617
- package/dist/index.mjs.map +1 -0
- package/package.json +8 -15
- package/src/AlertDialog.tsx +21 -16
- package/src/ApiPlayground.tsx +7 -3
- package/src/ApiReference.tsx +6 -2
- package/src/AuditLog.tsx +244 -21
- package/src/BodyMetrics.tsx +6 -2
- package/src/BuildLog.tsx +132 -26
- package/src/ChangelogDisplay.tsx +6 -2
- package/src/CodePlayground.tsx +7 -3
- package/src/ConflictResolver.tsx +7 -3
- package/src/DealPipeline.tsx +6 -2
- package/src/DeploymentStatus.tsx +159 -25
- package/src/DriverLog.tsx +4 -2
- package/src/MemoryUsage.tsx +6 -2
- package/src/MetricsGrid.tsx +99 -94
- package/src/PipelineView.tsx +225 -26
- package/src/RegressionTest.tsx +6 -2
- package/src/SystemStatusIndicator.tsx +70 -47
- package/src/TestResult.tsx +6 -2
- package/src/TestRunner.tsx +7 -3
- package/src/WebhookLogger.tsx +6 -2
- package/src/WorkflowBuilder.tsx +7 -3
- package/src/WorkflowTemplate.tsx +7 -3
- package/src/XmlParser.tsx +4 -2
- package/src/index.ts +41 -30
- package/src/nativewind.d.ts +3 -0
- package/dist/index.cjs.js.map +0 -1
- package/dist/index.esm.js.map +0 -1
package/src/PipelineView.tsx
CHANGED
|
@@ -1,32 +1,231 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { Text,
|
|
3
|
-
import { cn } from '@sudobility/components-rn';
|
|
2
|
+
import { View, Text, ScrollView, Pressable } from 'react-native';
|
|
3
|
+
import { cn, Card } from '@sudobility/components-rn';
|
|
4
4
|
|
|
5
|
-
export
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
export type PipelineStageStatus =
|
|
6
|
+
| 'pending'
|
|
7
|
+
| 'running'
|
|
8
|
+
| 'success'
|
|
9
|
+
| 'failed'
|
|
10
|
+
| 'skipped'
|
|
11
|
+
| 'cancelled';
|
|
12
|
+
|
|
13
|
+
export interface PipelineStage {
|
|
14
|
+
id: string;
|
|
15
|
+
name: string;
|
|
16
|
+
status: PipelineStageStatus;
|
|
17
|
+
duration?: number;
|
|
18
|
+
startedAt?: Date;
|
|
19
|
+
finishedAt?: Date;
|
|
20
|
+
jobs?: {
|
|
21
|
+
id: string;
|
|
22
|
+
name: string;
|
|
23
|
+
status: PipelineStageStatus;
|
|
24
|
+
}[];
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export interface PipelineViewProps {
|
|
28
|
+
stages: PipelineStage[];
|
|
29
|
+
pipelineName?: string;
|
|
30
|
+
pipelineId?: string;
|
|
31
|
+
onStagePress?: (stage: PipelineStage) => void;
|
|
32
|
+
className?: string;
|
|
9
33
|
}
|
|
10
34
|
|
|
35
|
+
const statusConfig: Record<
|
|
36
|
+
PipelineStageStatus,
|
|
37
|
+
{
|
|
38
|
+
color: string;
|
|
39
|
+
bgColor: string;
|
|
40
|
+
darkBgColor: string;
|
|
41
|
+
borderColor: string;
|
|
42
|
+
icon: string;
|
|
43
|
+
}
|
|
44
|
+
> = {
|
|
45
|
+
pending: {
|
|
46
|
+
color: 'text-gray-600 dark:text-gray-400',
|
|
47
|
+
bgColor: 'bg-gray-100',
|
|
48
|
+
darkBgColor: 'dark:bg-gray-800',
|
|
49
|
+
borderColor: 'border-gray-300 dark:border-gray-600',
|
|
50
|
+
icon: '○',
|
|
51
|
+
},
|
|
52
|
+
running: {
|
|
53
|
+
color: 'text-blue-600 dark:text-blue-400',
|
|
54
|
+
bgColor: 'bg-blue-100',
|
|
55
|
+
darkBgColor: 'dark:bg-blue-900',
|
|
56
|
+
borderColor: 'border-blue-400 dark:border-blue-500',
|
|
57
|
+
icon: '◐',
|
|
58
|
+
},
|
|
59
|
+
success: {
|
|
60
|
+
color: 'text-green-600 dark:text-green-400',
|
|
61
|
+
bgColor: 'bg-green-100',
|
|
62
|
+
darkBgColor: 'dark:bg-green-900',
|
|
63
|
+
borderColor: 'border-green-400 dark:border-green-500',
|
|
64
|
+
icon: '●',
|
|
65
|
+
},
|
|
66
|
+
failed: {
|
|
67
|
+
color: 'text-red-600 dark:text-red-400',
|
|
68
|
+
bgColor: 'bg-red-100',
|
|
69
|
+
darkBgColor: 'dark:bg-red-900',
|
|
70
|
+
borderColor: 'border-red-400 dark:border-red-500',
|
|
71
|
+
icon: '✗',
|
|
72
|
+
},
|
|
73
|
+
skipped: {
|
|
74
|
+
color: 'text-gray-400 dark:text-gray-600',
|
|
75
|
+
bgColor: 'bg-gray-50',
|
|
76
|
+
darkBgColor: 'dark:bg-gray-900',
|
|
77
|
+
borderColor: 'border-gray-200 dark:border-gray-700',
|
|
78
|
+
icon: '◌',
|
|
79
|
+
},
|
|
80
|
+
cancelled: {
|
|
81
|
+
color: 'text-orange-600 dark:text-orange-400',
|
|
82
|
+
bgColor: 'bg-orange-100',
|
|
83
|
+
darkBgColor: 'dark:bg-orange-900',
|
|
84
|
+
borderColor: 'border-orange-400 dark:border-orange-500',
|
|
85
|
+
icon: '⊘',
|
|
86
|
+
},
|
|
87
|
+
};
|
|
88
|
+
|
|
89
|
+
const formatDuration = (seconds: number): string => {
|
|
90
|
+
if (seconds < 60) return `${seconds}s`;
|
|
91
|
+
const minutes = Math.floor(seconds / 60);
|
|
92
|
+
const remainingSeconds = seconds % 60;
|
|
93
|
+
return `${minutes}m ${remainingSeconds}s`;
|
|
94
|
+
};
|
|
95
|
+
|
|
11
96
|
export const PipelineView: React.FC<PipelineViewProps> = ({
|
|
97
|
+
stages,
|
|
98
|
+
pipelineName,
|
|
99
|
+
pipelineId,
|
|
100
|
+
onStagePress,
|
|
12
101
|
className,
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
)}
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
102
|
+
}) => {
|
|
103
|
+
const overallStatus = stages.some(s => s.status === 'failed')
|
|
104
|
+
? 'failed'
|
|
105
|
+
: stages.some(s => s.status === 'running')
|
|
106
|
+
? 'running'
|
|
107
|
+
: stages.every(s => s.status === 'success')
|
|
108
|
+
? 'success'
|
|
109
|
+
: stages.every(s => s.status === 'pending')
|
|
110
|
+
? 'pending'
|
|
111
|
+
: 'running';
|
|
112
|
+
|
|
113
|
+
const overallConfig = statusConfig[overallStatus];
|
|
114
|
+
|
|
115
|
+
return (
|
|
116
|
+
<Card className={cn('overflow-hidden', className)}>
|
|
117
|
+
{(pipelineName || pipelineId) && (
|
|
118
|
+
<View className='px-4 py-3 border-b border-gray-200 dark:border-gray-700'>
|
|
119
|
+
<View className='flex-row items-center justify-between'>
|
|
120
|
+
<View>
|
|
121
|
+
{pipelineName && (
|
|
122
|
+
<Text className='text-base font-semibold text-gray-900 dark:text-gray-100'>
|
|
123
|
+
{pipelineName}
|
|
124
|
+
</Text>
|
|
125
|
+
)}
|
|
126
|
+
{pipelineId && (
|
|
127
|
+
<Text className='text-xs font-mono text-gray-500 dark:text-gray-500'>
|
|
128
|
+
#{pipelineId}
|
|
129
|
+
</Text>
|
|
130
|
+
)}
|
|
131
|
+
</View>
|
|
132
|
+
<View
|
|
133
|
+
className={cn(
|
|
134
|
+
'px-2 py-1 rounded-full',
|
|
135
|
+
overallConfig.bgColor,
|
|
136
|
+
overallConfig.darkBgColor
|
|
137
|
+
)}
|
|
138
|
+
>
|
|
139
|
+
<Text className={cn('text-xs font-medium', overallConfig.color)}>
|
|
140
|
+
{overallConfig.icon}{' '}
|
|
141
|
+
{overallStatus.charAt(0).toUpperCase() + overallStatus.slice(1)}
|
|
142
|
+
</Text>
|
|
143
|
+
</View>
|
|
144
|
+
</View>
|
|
145
|
+
</View>
|
|
146
|
+
)}
|
|
147
|
+
<ScrollView
|
|
148
|
+
horizontal
|
|
149
|
+
showsHorizontalScrollIndicator={true}
|
|
150
|
+
contentContainerStyle={{ padding: 16 }}
|
|
151
|
+
>
|
|
152
|
+
<View className='flex-row items-center'>
|
|
153
|
+
{stages.map((stage, index) => {
|
|
154
|
+
const config = statusConfig[stage.status];
|
|
155
|
+
const isLast = index === stages.length - 1;
|
|
156
|
+
|
|
157
|
+
const stageContent = (
|
|
158
|
+
<View className='items-center'>
|
|
159
|
+
<View
|
|
160
|
+
className={cn(
|
|
161
|
+
'w-24 p-3 rounded-lg border-2',
|
|
162
|
+
config.bgColor,
|
|
163
|
+
config.darkBgColor,
|
|
164
|
+
config.borderColor
|
|
165
|
+
)}
|
|
166
|
+
>
|
|
167
|
+
<View className='items-center'>
|
|
168
|
+
<Text className={cn('text-lg', config.color)}>
|
|
169
|
+
{config.icon}
|
|
170
|
+
</Text>
|
|
171
|
+
<Text
|
|
172
|
+
className='text-xs font-medium text-gray-900 dark:text-gray-100 mt-1 text-center'
|
|
173
|
+
numberOfLines={2}
|
|
174
|
+
>
|
|
175
|
+
{stage.name}
|
|
176
|
+
</Text>
|
|
177
|
+
{stage.duration !== undefined && (
|
|
178
|
+
<Text className='text-xs text-gray-500 dark:text-gray-500 mt-1'>
|
|
179
|
+
{formatDuration(stage.duration)}
|
|
180
|
+
</Text>
|
|
181
|
+
)}
|
|
182
|
+
</View>
|
|
183
|
+
</View>
|
|
184
|
+
{stage.jobs && stage.jobs.length > 0 && (
|
|
185
|
+
<View className='mt-2'>
|
|
186
|
+
<Text className='text-xs text-gray-500 dark:text-gray-500'>
|
|
187
|
+
{stage.jobs.filter(j => j.status === 'success').length}/
|
|
188
|
+
{stage.jobs.length} jobs
|
|
189
|
+
</Text>
|
|
190
|
+
</View>
|
|
191
|
+
)}
|
|
192
|
+
</View>
|
|
193
|
+
);
|
|
194
|
+
|
|
195
|
+
return (
|
|
196
|
+
<View key={stage.id} className='flex-row items-center'>
|
|
197
|
+
{onStagePress ? (
|
|
198
|
+
<Pressable
|
|
199
|
+
onPress={() => onStagePress(stage)}
|
|
200
|
+
accessibilityRole='button'
|
|
201
|
+
accessibilityLabel={`${stage.name} - ${stage.status}`}
|
|
202
|
+
>
|
|
203
|
+
{stageContent}
|
|
204
|
+
</Pressable>
|
|
205
|
+
) : (
|
|
206
|
+
stageContent
|
|
207
|
+
)}
|
|
208
|
+
{!isLast && (
|
|
209
|
+
<View className='mx-2'>
|
|
210
|
+
<View className='w-8 h-0.5 bg-gray-300 dark:bg-gray-600' />
|
|
211
|
+
<Text className='absolute -top-2 left-2 text-gray-400 dark:text-gray-600'>
|
|
212
|
+
→
|
|
213
|
+
</Text>
|
|
214
|
+
</View>
|
|
215
|
+
)}
|
|
216
|
+
</View>
|
|
217
|
+
);
|
|
218
|
+
})}
|
|
219
|
+
</View>
|
|
220
|
+
</ScrollView>
|
|
221
|
+
<View className='px-4 py-2 bg-gray-50 dark:bg-gray-900 border-t border-gray-200 dark:border-gray-700'>
|
|
222
|
+
<Text className='text-xs text-gray-500 dark:text-gray-500'>
|
|
223
|
+
{stages.length} stages |{' '}
|
|
224
|
+
{stages.filter(s => s.status === 'success').length} completed
|
|
225
|
+
</Text>
|
|
226
|
+
</View>
|
|
227
|
+
</Card>
|
|
228
|
+
);
|
|
229
|
+
};
|
|
230
|
+
|
|
231
|
+
export default PipelineView;
|
package/src/RegressionTest.tsx
CHANGED
|
@@ -19,9 +19,13 @@ export const RegressionTest: React.FC<RegressionTestProps> = ({
|
|
|
19
19
|
disabled && 'opacity-50',
|
|
20
20
|
className
|
|
21
21
|
)}
|
|
22
|
-
accessibilityLabel=
|
|
22
|
+
accessibilityLabel='Regression Test'
|
|
23
23
|
{...props}
|
|
24
24
|
>
|
|
25
|
-
{children ||
|
|
25
|
+
{children || (
|
|
26
|
+
<Text className='text-gray-900 dark:text-white'>
|
|
27
|
+
RegressionTest Component
|
|
28
|
+
</Text>
|
|
29
|
+
)}
|
|
26
30
|
</View>
|
|
27
31
|
);
|
|
@@ -1,74 +1,97 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { View, Text,
|
|
3
|
-
import { cn } from '@sudobility/components-rn';
|
|
2
|
+
import { View, Text, Pressable } from 'react-native';
|
|
3
|
+
import { cn, Card } from '@sudobility/components-rn';
|
|
4
4
|
|
|
5
|
-
export
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
export type SystemStatus = 'operational' | 'degraded' | 'major-outage';
|
|
6
|
+
|
|
7
|
+
export interface SystemStatusIndicatorProps {
|
|
8
|
+
status: SystemStatus;
|
|
9
|
+
systemName: string;
|
|
10
|
+
description?: string;
|
|
11
|
+
lastChecked?: Date;
|
|
12
|
+
onPress?: () => void;
|
|
13
|
+
className?: string;
|
|
9
14
|
}
|
|
10
15
|
|
|
11
|
-
const statusConfig
|
|
16
|
+
const statusConfig: Record<
|
|
17
|
+
SystemStatus,
|
|
18
|
+
{ color: string; darkColor: string; label: string }
|
|
19
|
+
> = {
|
|
12
20
|
operational: {
|
|
13
21
|
color: 'bg-green-500',
|
|
14
|
-
|
|
22
|
+
darkColor: 'dark:bg-green-400',
|
|
15
23
|
label: 'Operational',
|
|
16
24
|
},
|
|
17
25
|
degraded: {
|
|
18
26
|
color: 'bg-yellow-500',
|
|
19
|
-
|
|
20
|
-
label: 'Degraded
|
|
21
|
-
},
|
|
22
|
-
partial: {
|
|
23
|
-
color: 'bg-orange-500',
|
|
24
|
-
textColor: 'text-orange-700 dark:text-orange-400',
|
|
25
|
-
label: 'Partial Outage',
|
|
27
|
+
darkColor: 'dark:bg-yellow-400',
|
|
28
|
+
label: 'Degraded',
|
|
26
29
|
},
|
|
27
|
-
major: {
|
|
30
|
+
'major-outage': {
|
|
28
31
|
color: 'bg-red-500',
|
|
29
|
-
|
|
32
|
+
darkColor: 'dark:bg-red-400',
|
|
30
33
|
label: 'Major Outage',
|
|
31
34
|
},
|
|
32
|
-
maintenance: {
|
|
33
|
-
color: 'bg-blue-500',
|
|
34
|
-
textColor: 'text-blue-700 dark:text-blue-400',
|
|
35
|
-
label: 'Under Maintenance',
|
|
36
|
-
},
|
|
37
35
|
};
|
|
38
36
|
|
|
39
|
-
/**
|
|
40
|
-
* System status indicator component for displaying service health
|
|
41
|
-
*/
|
|
42
37
|
export const SystemStatusIndicator: React.FC<SystemStatusIndicatorProps> = ({
|
|
43
38
|
status,
|
|
44
|
-
|
|
45
|
-
|
|
39
|
+
systemName,
|
|
40
|
+
description,
|
|
41
|
+
lastChecked,
|
|
42
|
+
onPress,
|
|
46
43
|
className,
|
|
47
|
-
...props
|
|
48
44
|
}) => {
|
|
49
45
|
const config = statusConfig[status];
|
|
50
46
|
|
|
51
|
-
|
|
52
|
-
<
|
|
53
|
-
className=
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
47
|
+
const content = (
|
|
48
|
+
<Card className={cn('p-4', className)}>
|
|
49
|
+
<View className='flex-row items-center'>
|
|
50
|
+
<View
|
|
51
|
+
className={cn(
|
|
52
|
+
'w-3 h-3 rounded-full mr-3',
|
|
53
|
+
config.color,
|
|
54
|
+
config.darkColor
|
|
55
|
+
)}
|
|
56
|
+
/>
|
|
57
|
+
<View className='flex-1'>
|
|
58
|
+
<Text className='text-base font-semibold text-gray-900 dark:text-gray-100'>
|
|
59
|
+
{systemName}
|
|
60
|
+
</Text>
|
|
61
|
+
<Text
|
|
62
62
|
className={cn(
|
|
63
|
-
'
|
|
64
|
-
|
|
63
|
+
'text-sm',
|
|
64
|
+
status === 'operational' && 'text-green-600 dark:text-green-400',
|
|
65
|
+
status === 'degraded' && 'text-yellow-600 dark:text-yellow-400',
|
|
66
|
+
status === 'major-outage' && 'text-red-600 dark:text-red-400'
|
|
65
67
|
)}
|
|
66
|
-
|
|
67
|
-
|
|
68
|
+
>
|
|
69
|
+
{config.label}
|
|
70
|
+
</Text>
|
|
71
|
+
</View>
|
|
68
72
|
</View>
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
+
{description && (
|
|
74
|
+
<Text className='mt-2 text-sm text-gray-600 dark:text-gray-400'>
|
|
75
|
+
{description}
|
|
76
|
+
</Text>
|
|
77
|
+
)}
|
|
78
|
+
{lastChecked && (
|
|
79
|
+
<Text className='mt-2 text-xs text-gray-500 dark:text-gray-500'>
|
|
80
|
+
Last checked: {lastChecked.toLocaleString()}
|
|
81
|
+
</Text>
|
|
82
|
+
)}
|
|
83
|
+
</Card>
|
|
73
84
|
);
|
|
85
|
+
|
|
86
|
+
if (onPress) {
|
|
87
|
+
return (
|
|
88
|
+
<Pressable onPress={onPress} accessibilityRole='button'>
|
|
89
|
+
{content}
|
|
90
|
+
</Pressable>
|
|
91
|
+
);
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
return content;
|
|
74
95
|
};
|
|
96
|
+
|
|
97
|
+
export default SystemStatusIndicator;
|
package/src/TestResult.tsx
CHANGED
|
@@ -19,9 +19,13 @@ export const TestResult: React.FC<TestResultProps> = ({
|
|
|
19
19
|
disabled && 'opacity-50',
|
|
20
20
|
className
|
|
21
21
|
)}
|
|
22
|
-
accessibilityLabel=
|
|
22
|
+
accessibilityLabel='Test Result'
|
|
23
23
|
{...props}
|
|
24
24
|
>
|
|
25
|
-
{children ||
|
|
25
|
+
{children || (
|
|
26
|
+
<Text className='text-gray-900 dark:text-white'>
|
|
27
|
+
TestResult Component
|
|
28
|
+
</Text>
|
|
29
|
+
)}
|
|
26
30
|
</View>
|
|
27
31
|
);
|
package/src/TestRunner.tsx
CHANGED
|
@@ -18,8 +18,8 @@ export const TestRunner: React.FC<TestRunnerProps> = ({
|
|
|
18
18
|
<Pressable
|
|
19
19
|
onPress={disabled ? undefined : onPress}
|
|
20
20
|
disabled={disabled}
|
|
21
|
-
accessibilityRole=
|
|
22
|
-
accessibilityLabel=
|
|
21
|
+
accessibilityRole='button'
|
|
22
|
+
accessibilityLabel='Test Runner'
|
|
23
23
|
className={cn(
|
|
24
24
|
'p-4 rounded-lg border bg-white dark:bg-gray-900 border-gray-200 dark:border-gray-700',
|
|
25
25
|
disabled && 'opacity-50',
|
|
@@ -27,6 +27,10 @@ export const TestRunner: React.FC<TestRunnerProps> = ({
|
|
|
27
27
|
)}
|
|
28
28
|
{...props}
|
|
29
29
|
>
|
|
30
|
-
{children ||
|
|
30
|
+
{children || (
|
|
31
|
+
<Text className='text-gray-900 dark:text-white'>
|
|
32
|
+
TestRunner Component
|
|
33
|
+
</Text>
|
|
34
|
+
)}
|
|
31
35
|
</Pressable>
|
|
32
36
|
);
|
package/src/WebhookLogger.tsx
CHANGED
|
@@ -19,9 +19,13 @@ export const WebhookLogger: React.FC<WebhookLoggerProps> = ({
|
|
|
19
19
|
disabled && 'opacity-50',
|
|
20
20
|
className
|
|
21
21
|
)}
|
|
22
|
-
accessibilityLabel=
|
|
22
|
+
accessibilityLabel='Webhook Logger'
|
|
23
23
|
{...props}
|
|
24
24
|
>
|
|
25
|
-
{children ||
|
|
25
|
+
{children || (
|
|
26
|
+
<Text className='text-gray-900 dark:text-white'>
|
|
27
|
+
WebhookLogger Component
|
|
28
|
+
</Text>
|
|
29
|
+
)}
|
|
26
30
|
</View>
|
|
27
31
|
);
|
package/src/WorkflowBuilder.tsx
CHANGED
|
@@ -18,8 +18,8 @@ export const WorkflowBuilder: React.FC<WorkflowBuilderProps> = ({
|
|
|
18
18
|
<Pressable
|
|
19
19
|
onPress={disabled ? undefined : onPress}
|
|
20
20
|
disabled={disabled}
|
|
21
|
-
accessibilityRole=
|
|
22
|
-
accessibilityLabel=
|
|
21
|
+
accessibilityRole='button'
|
|
22
|
+
accessibilityLabel='Workflow Builder'
|
|
23
23
|
className={cn(
|
|
24
24
|
'p-4 rounded-lg border bg-white dark:bg-gray-900 border-gray-200 dark:border-gray-700',
|
|
25
25
|
disabled && 'opacity-50',
|
|
@@ -27,6 +27,10 @@ export const WorkflowBuilder: React.FC<WorkflowBuilderProps> = ({
|
|
|
27
27
|
)}
|
|
28
28
|
{...props}
|
|
29
29
|
>
|
|
30
|
-
{children ||
|
|
30
|
+
{children || (
|
|
31
|
+
<Text className='text-gray-900 dark:text-white'>
|
|
32
|
+
WorkflowBuilder Component
|
|
33
|
+
</Text>
|
|
34
|
+
)}
|
|
31
35
|
</Pressable>
|
|
32
36
|
);
|
package/src/WorkflowTemplate.tsx
CHANGED
|
@@ -18,8 +18,8 @@ export const WorkflowTemplate: React.FC<WorkflowTemplateProps> = ({
|
|
|
18
18
|
<Pressable
|
|
19
19
|
onPress={disabled ? undefined : onPress}
|
|
20
20
|
disabled={disabled}
|
|
21
|
-
accessibilityRole=
|
|
22
|
-
accessibilityLabel=
|
|
21
|
+
accessibilityRole='button'
|
|
22
|
+
accessibilityLabel='Workflow Template'
|
|
23
23
|
className={cn(
|
|
24
24
|
'p-4 rounded-lg border bg-white dark:bg-gray-900 border-gray-200 dark:border-gray-700',
|
|
25
25
|
disabled && 'opacity-50',
|
|
@@ -27,6 +27,10 @@ export const WorkflowTemplate: React.FC<WorkflowTemplateProps> = ({
|
|
|
27
27
|
)}
|
|
28
28
|
{...props}
|
|
29
29
|
>
|
|
30
|
-
{children ||
|
|
30
|
+
{children || (
|
|
31
|
+
<Text className='text-gray-900 dark:text-white'>
|
|
32
|
+
WorkflowTemplate Component
|
|
33
|
+
</Text>
|
|
34
|
+
)}
|
|
31
35
|
</Pressable>
|
|
32
36
|
);
|
package/src/XmlParser.tsx
CHANGED
|
@@ -19,9 +19,11 @@ export const XmlParser: React.FC<XmlParserProps> = ({
|
|
|
19
19
|
disabled && 'opacity-50',
|
|
20
20
|
className
|
|
21
21
|
)}
|
|
22
|
-
accessibilityLabel=
|
|
22
|
+
accessibilityLabel='XML Parser'
|
|
23
23
|
{...props}
|
|
24
24
|
>
|
|
25
|
-
{children ||
|
|
25
|
+
{children || (
|
|
26
|
+
<Text className='text-gray-900 dark:text-white'>XmlParser Component</Text>
|
|
27
|
+
)}
|
|
26
28
|
</View>
|
|
27
29
|
);
|
package/src/index.ts
CHANGED
|
@@ -1,32 +1,43 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
* React Native DevOps components for Sudobility
|
|
4
|
-
*/
|
|
1
|
+
// DevOps Components for React Native
|
|
2
|
+
// @sudobility/devops-components-rn
|
|
5
3
|
|
|
6
|
-
|
|
7
|
-
export { ApiPlayground, type ApiPlaygroundProps } from './ApiPlayground';
|
|
8
|
-
export { ApiReference, type ApiReferenceProps } from './ApiReference';
|
|
9
|
-
export { AuditLog, type AuditLogProps } from './AuditLog';
|
|
10
|
-
export { BodyMetrics, type BodyMetricsProps } from './BodyMetrics';
|
|
11
|
-
export { BuildLog, type BuildLogProps } from './BuildLog';
|
|
12
|
-
export { ChangelogDisplay, type ChangelogDisplayProps } from './ChangelogDisplay';
|
|
13
|
-
export { CodePlayground, type CodePlaygroundProps } from './CodePlayground';
|
|
14
|
-
export { ConflictResolver, type ConflictResolverProps } from './ConflictResolver';
|
|
15
|
-
export { DealPipeline, type DealPipelineProps } from './DealPipeline';
|
|
16
|
-
export { DeploymentStatus, type DeploymentStatusProps } from './DeploymentStatus';
|
|
17
|
-
export { DriverLog, type DriverLogProps } from './DriverLog';
|
|
18
|
-
export { MemoryUsage, type MemoryUsageProps } from './MemoryUsage';
|
|
4
|
+
// SystemStatusIndicator
|
|
19
5
|
export {
|
|
20
|
-
|
|
21
|
-
type
|
|
22
|
-
type
|
|
23
|
-
} from './
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
export {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
6
|
+
SystemStatusIndicator,
|
|
7
|
+
type SystemStatusIndicatorProps,
|
|
8
|
+
type SystemStatus,
|
|
9
|
+
} from './SystemStatusIndicator';
|
|
10
|
+
|
|
11
|
+
// DeploymentStatus
|
|
12
|
+
export {
|
|
13
|
+
DeploymentStatus,
|
|
14
|
+
type DeploymentStatusProps,
|
|
15
|
+
type DeploymentState,
|
|
16
|
+
} from './DeploymentStatus';
|
|
17
|
+
|
|
18
|
+
// BuildLog
|
|
19
|
+
export {
|
|
20
|
+
BuildLog,
|
|
21
|
+
type BuildLogProps,
|
|
22
|
+
type LogEntry,
|
|
23
|
+
type LogLevel,
|
|
24
|
+
} from './BuildLog';
|
|
25
|
+
|
|
26
|
+
// MetricsGrid
|
|
27
|
+
export { MetricsGrid, type MetricsGridProps, type Metric } from './MetricsGrid';
|
|
28
|
+
|
|
29
|
+
// AuditLog
|
|
30
|
+
export {
|
|
31
|
+
AuditLog,
|
|
32
|
+
type AuditLogProps,
|
|
33
|
+
type AuditEntry,
|
|
34
|
+
type AuditActionType,
|
|
35
|
+
} from './AuditLog';
|
|
36
|
+
|
|
37
|
+
// PipelineView
|
|
38
|
+
export {
|
|
39
|
+
PipelineView,
|
|
40
|
+
type PipelineViewProps,
|
|
41
|
+
type PipelineStage,
|
|
42
|
+
type PipelineStageStatus,
|
|
43
|
+
} from './PipelineView';
|