@sudobility/devops-components-rn 1.0.0

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 (78) hide show
  1. package/dist/AlertDialog.d.ts +23 -0
  2. package/dist/AlertDialog.d.ts.map +1 -0
  3. package/dist/ApiPlayground.d.ts +9 -0
  4. package/dist/ApiPlayground.d.ts.map +1 -0
  5. package/dist/ApiReference.d.ts +8 -0
  6. package/dist/ApiReference.d.ts.map +1 -0
  7. package/dist/AuditLog.d.ts +8 -0
  8. package/dist/AuditLog.d.ts.map +1 -0
  9. package/dist/BodyMetrics.d.ts +8 -0
  10. package/dist/BodyMetrics.d.ts.map +1 -0
  11. package/dist/BuildLog.d.ts +9 -0
  12. package/dist/BuildLog.d.ts.map +1 -0
  13. package/dist/ChangelogDisplay.d.ts +8 -0
  14. package/dist/ChangelogDisplay.d.ts.map +1 -0
  15. package/dist/CodePlayground.d.ts +9 -0
  16. package/dist/CodePlayground.d.ts.map +1 -0
  17. package/dist/ConflictResolver.d.ts +9 -0
  18. package/dist/ConflictResolver.d.ts.map +1 -0
  19. package/dist/DealPipeline.d.ts +8 -0
  20. package/dist/DealPipeline.d.ts.map +1 -0
  21. package/dist/DeploymentStatus.d.ts +9 -0
  22. package/dist/DeploymentStatus.d.ts.map +1 -0
  23. package/dist/DriverLog.d.ts +8 -0
  24. package/dist/DriverLog.d.ts.map +1 -0
  25. package/dist/MemoryUsage.d.ts +8 -0
  26. package/dist/MemoryUsage.d.ts.map +1 -0
  27. package/dist/MetricsGrid.d.ts +26 -0
  28. package/dist/MetricsGrid.d.ts.map +1 -0
  29. package/dist/PipelineView.d.ts +9 -0
  30. package/dist/PipelineView.d.ts.map +1 -0
  31. package/dist/RegressionTest.d.ts +8 -0
  32. package/dist/RegressionTest.d.ts.map +1 -0
  33. package/dist/SystemStatusIndicator.d.ts +12 -0
  34. package/dist/SystemStatusIndicator.d.ts.map +1 -0
  35. package/dist/TestResult.d.ts +8 -0
  36. package/dist/TestResult.d.ts.map +1 -0
  37. package/dist/TestRunner.d.ts +9 -0
  38. package/dist/TestRunner.d.ts.map +1 -0
  39. package/dist/WebhookLogger.d.ts +8 -0
  40. package/dist/WebhookLogger.d.ts.map +1 -0
  41. package/dist/WorkflowBuilder.d.ts +9 -0
  42. package/dist/WorkflowBuilder.d.ts.map +1 -0
  43. package/dist/WorkflowTemplate.d.ts +9 -0
  44. package/dist/WorkflowTemplate.d.ts.map +1 -0
  45. package/dist/XmlParser.d.ts +8 -0
  46. package/dist/XmlParser.d.ts.map +1 -0
  47. package/dist/index.cjs.js +1593 -0
  48. package/dist/index.cjs.js.map +1 -0
  49. package/dist/index.d.ts +28 -0
  50. package/dist/index.d.ts.map +1 -0
  51. package/dist/index.esm.js +1593 -0
  52. package/dist/index.esm.js.map +1 -0
  53. package/package.json +56 -0
  54. package/src/AlertDialog.tsx +176 -0
  55. package/src/ApiPlayground.tsx +32 -0
  56. package/src/ApiReference.tsx +27 -0
  57. package/src/AuditLog.tsx +27 -0
  58. package/src/BodyMetrics.tsx +27 -0
  59. package/src/BuildLog.tsx +32 -0
  60. package/src/ChangelogDisplay.tsx +27 -0
  61. package/src/CodePlayground.tsx +32 -0
  62. package/src/ConflictResolver.tsx +32 -0
  63. package/src/DealPipeline.tsx +27 -0
  64. package/src/DeploymentStatus.tsx +32 -0
  65. package/src/DriverLog.tsx +27 -0
  66. package/src/MemoryUsage.tsx +27 -0
  67. package/src/MetricsGrid.tsx +115 -0
  68. package/src/PipelineView.tsx +32 -0
  69. package/src/RegressionTest.tsx +27 -0
  70. package/src/SystemStatusIndicator.tsx +74 -0
  71. package/src/TestResult.tsx +27 -0
  72. package/src/TestRunner.tsx +32 -0
  73. package/src/WebhookLogger.tsx +27 -0
  74. package/src/WorkflowBuilder.tsx +32 -0
  75. package/src/WorkflowTemplate.tsx +32 -0
  76. package/src/XmlParser.tsx +27 -0
  77. package/src/index.ts +32 -0
  78. package/src/nativewind.d.ts +23 -0
@@ -0,0 +1,27 @@
1
+ import React from 'react';
2
+ import { View, Text, type ViewProps } from 'react-native';
3
+ import { cn } from '@sudobility/components-rn';
4
+
5
+ export interface ChangelogDisplayProps extends ViewProps {
6
+ disabled?: boolean;
7
+ children?: React.ReactNode;
8
+ }
9
+
10
+ export const ChangelogDisplay: React.FC<ChangelogDisplayProps> = ({
11
+ className,
12
+ children,
13
+ disabled,
14
+ ...props
15
+ }) => (
16
+ <View
17
+ className={cn(
18
+ 'p-4 rounded-lg border bg-white dark:bg-gray-900 border-gray-200 dark:border-gray-700',
19
+ disabled && 'opacity-50',
20
+ className
21
+ )}
22
+ accessibilityLabel="Changelog Display"
23
+ {...props}
24
+ >
25
+ {children || <Text className="text-gray-900 dark:text-white">ChangelogDisplay Component</Text>}
26
+ </View>
27
+ );
@@ -0,0 +1,32 @@
1
+ import React from 'react';
2
+ import { Text, Pressable, type ViewProps } from 'react-native';
3
+ import { cn } from '@sudobility/components-rn';
4
+
5
+ export interface CodePlaygroundProps extends ViewProps {
6
+ disabled?: boolean;
7
+ onPress?: () => void;
8
+ children?: React.ReactNode;
9
+ }
10
+
11
+ export const CodePlayground: React.FC<CodePlaygroundProps> = ({
12
+ className,
13
+ children,
14
+ disabled = false,
15
+ onPress,
16
+ ...props
17
+ }) => (
18
+ <Pressable
19
+ onPress={disabled ? undefined : onPress}
20
+ disabled={disabled}
21
+ accessibilityRole="button"
22
+ accessibilityLabel="Code Playground"
23
+ className={cn(
24
+ 'p-4 rounded-lg border bg-white dark:bg-gray-900 border-gray-200 dark:border-gray-700',
25
+ disabled && 'opacity-50',
26
+ className
27
+ )}
28
+ {...props}
29
+ >
30
+ {children || <Text className="text-gray-900 dark:text-white">CodePlayground Component</Text>}
31
+ </Pressable>
32
+ );
@@ -0,0 +1,32 @@
1
+ import React from 'react';
2
+ import { Text, Pressable, type ViewProps } from 'react-native';
3
+ import { cn } from '@sudobility/components-rn';
4
+
5
+ export interface ConflictResolverProps extends ViewProps {
6
+ disabled?: boolean;
7
+ onPress?: () => void;
8
+ children?: React.ReactNode;
9
+ }
10
+
11
+ export const ConflictResolver: React.FC<ConflictResolverProps> = ({
12
+ className,
13
+ children,
14
+ disabled = false,
15
+ onPress,
16
+ ...props
17
+ }) => (
18
+ <Pressable
19
+ onPress={disabled ? undefined : onPress}
20
+ disabled={disabled}
21
+ accessibilityRole="button"
22
+ accessibilityLabel="Conflict Resolver"
23
+ className={cn(
24
+ 'p-4 rounded-lg border bg-white dark:bg-gray-900 border-gray-200 dark:border-gray-700',
25
+ disabled && 'opacity-50',
26
+ className
27
+ )}
28
+ {...props}
29
+ >
30
+ {children || <Text className="text-gray-900 dark:text-white">ConflictResolver Component</Text>}
31
+ </Pressable>
32
+ );
@@ -0,0 +1,27 @@
1
+ import React from 'react';
2
+ import { View, Text, type ViewProps } from 'react-native';
3
+ import { cn } from '@sudobility/components-rn';
4
+
5
+ export interface DealPipelineProps extends ViewProps {
6
+ disabled?: boolean;
7
+ children?: React.ReactNode;
8
+ }
9
+
10
+ export const DealPipeline: React.FC<DealPipelineProps> = ({
11
+ className,
12
+ children,
13
+ disabled,
14
+ ...props
15
+ }) => (
16
+ <View
17
+ className={cn(
18
+ 'p-4 rounded-lg border bg-white dark:bg-gray-900 border-gray-200 dark:border-gray-700',
19
+ disabled && 'opacity-50',
20
+ className
21
+ )}
22
+ accessibilityLabel="Deal Pipeline"
23
+ {...props}
24
+ >
25
+ {children || <Text className="text-gray-900 dark:text-white">DealPipeline Component</Text>}
26
+ </View>
27
+ );
@@ -0,0 +1,32 @@
1
+ import React from 'react';
2
+ import { Text, Pressable, type ViewProps } from 'react-native';
3
+ import { cn } from '@sudobility/components-rn';
4
+
5
+ export interface DeploymentStatusProps extends ViewProps {
6
+ disabled?: boolean;
7
+ onPress?: () => void;
8
+ children?: React.ReactNode;
9
+ }
10
+
11
+ export const DeploymentStatus: React.FC<DeploymentStatusProps> = ({
12
+ className,
13
+ children,
14
+ disabled = false,
15
+ onPress,
16
+ ...props
17
+ }) => (
18
+ <Pressable
19
+ onPress={disabled ? undefined : onPress}
20
+ disabled={disabled}
21
+ accessibilityRole="button"
22
+ accessibilityLabel="Deployment Status"
23
+ className={cn(
24
+ 'p-4 rounded-lg border bg-white dark:bg-gray-900 border-gray-200 dark:border-gray-700',
25
+ disabled && 'opacity-50',
26
+ className
27
+ )}
28
+ {...props}
29
+ >
30
+ {children || <Text className="text-gray-900 dark:text-white">DeploymentStatus Component</Text>}
31
+ </Pressable>
32
+ );
@@ -0,0 +1,27 @@
1
+ import React from 'react';
2
+ import { View, Text, type ViewProps } from 'react-native';
3
+ import { cn } from '@sudobility/components-rn';
4
+
5
+ export interface DriverLogProps extends ViewProps {
6
+ disabled?: boolean;
7
+ children?: React.ReactNode;
8
+ }
9
+
10
+ export const DriverLog: React.FC<DriverLogProps> = ({
11
+ className,
12
+ children,
13
+ disabled,
14
+ ...props
15
+ }) => (
16
+ <View
17
+ className={cn(
18
+ 'p-4 rounded-lg border bg-white dark:bg-gray-900 border-gray-200 dark:border-gray-700',
19
+ disabled && 'opacity-50',
20
+ className
21
+ )}
22
+ accessibilityLabel="Driver Log"
23
+ {...props}
24
+ >
25
+ {children || <Text className="text-gray-900 dark:text-white">DriverLog Component</Text>}
26
+ </View>
27
+ );
@@ -0,0 +1,27 @@
1
+ import React from 'react';
2
+ import { View, Text, type ViewProps } from 'react-native';
3
+ import { cn } from '@sudobility/components-rn';
4
+
5
+ export interface MemoryUsageProps extends ViewProps {
6
+ disabled?: boolean;
7
+ children?: React.ReactNode;
8
+ }
9
+
10
+ export const MemoryUsage: React.FC<MemoryUsageProps> = ({
11
+ className,
12
+ children,
13
+ disabled,
14
+ ...props
15
+ }) => (
16
+ <View
17
+ className={cn(
18
+ 'p-4 rounded-lg border bg-white dark:bg-gray-900 border-gray-200 dark:border-gray-700',
19
+ disabled && 'opacity-50',
20
+ className
21
+ )}
22
+ accessibilityLabel="Memory Usage"
23
+ {...props}
24
+ >
25
+ {children || <Text className="text-gray-900 dark:text-white">MemoryUsage Component</Text>}
26
+ </View>
27
+ );
@@ -0,0 +1,115 @@
1
+ import React from 'react';
2
+ import { View, Text, FlatList, type ViewProps } from 'react-native';
3
+ import { cn } from '@sudobility/components-rn';
4
+
5
+ type MetricColor = 'blue' | 'green' | 'purple' | 'orange' | 'pink' | 'gray';
6
+
7
+ export interface MetricItem {
8
+ value: string | number;
9
+ label: string;
10
+ color?: MetricColor;
11
+ icon?: React.ReactNode;
12
+ trend?: {
13
+ direction: 'up' | 'down';
14
+ value: string;
15
+ };
16
+ }
17
+
18
+ export interface MetricsGridProps extends ViewProps {
19
+ title?: string;
20
+ description?: string;
21
+ metrics: MetricItem[];
22
+ columns?: 2 | 3 | 4;
23
+ }
24
+
25
+ const colorClasses: Record<MetricColor, string> = {
26
+ blue: 'text-blue-600 dark:text-blue-400',
27
+ green: 'text-green-600 dark:text-green-400',
28
+ purple: 'text-purple-600 dark:text-purple-400',
29
+ orange: 'text-orange-600 dark:text-orange-400',
30
+ pink: 'text-pink-600 dark:text-pink-400',
31
+ gray: 'text-gray-600 dark:text-gray-400',
32
+ };
33
+
34
+ interface MetricCardProps {
35
+ metric: MetricItem;
36
+ }
37
+
38
+ const MetricCard: React.FC<MetricCardProps> = ({ metric }) => {
39
+ const colorClass = metric.color ? colorClasses[metric.color] : colorClasses.blue;
40
+
41
+ return (
42
+ <View className="bg-white dark:bg-gray-800 rounded-xl p-6 border border-gray-200 dark:border-gray-700 items-center mb-4 mx-2">
43
+ {metric.icon && (
44
+ <View className={cn('mb-4', colorClass)}>{metric.icon}</View>
45
+ )}
46
+
47
+ <View className="gap-2 items-center">
48
+ <Text className={cn('text-3xl font-bold', colorClass)}>
49
+ {metric.value}
50
+ </Text>
51
+
52
+ <Text className="text-gray-600 dark:text-gray-400 font-medium">
53
+ {metric.label}
54
+ </Text>
55
+
56
+ {metric.trend && (
57
+ <Text
58
+ className={cn(
59
+ 'text-sm font-semibold',
60
+ metric.trend.direction === 'up'
61
+ ? 'text-green-600 dark:text-green-400'
62
+ : 'text-red-600 dark:text-red-400'
63
+ )}
64
+ >
65
+ {metric.trend.direction === 'up' ? '↑' : '↓'} {metric.trend.value}
66
+ </Text>
67
+ )}
68
+ </View>
69
+ </View>
70
+ );
71
+ };
72
+
73
+ /**
74
+ * MetricsGrid component for React Native
75
+ * Grid display of metric cards
76
+ */
77
+ export const MetricsGrid: React.FC<MetricsGridProps> = ({
78
+ title,
79
+ description,
80
+ metrics,
81
+ columns = 2,
82
+ className,
83
+ ...props
84
+ }) => {
85
+ return (
86
+ <View className={cn('py-8 px-4', className)} {...props}>
87
+ {(title || description) && (
88
+ <View className="items-center mb-8">
89
+ {title && (
90
+ <Text className="text-2xl font-bold text-gray-900 dark:text-white mb-4 text-center">
91
+ {title}
92
+ </Text>
93
+ )}
94
+ {description && (
95
+ <Text className="text-lg text-gray-600 dark:text-gray-300 text-center max-w-lg">
96
+ {description}
97
+ </Text>
98
+ )}
99
+ </View>
100
+ )}
101
+
102
+ <FlatList
103
+ data={metrics}
104
+ keyExtractor={(_, index) => index.toString()}
105
+ numColumns={columns > 2 ? 2 : columns}
106
+ renderItem={({ item }) => (
107
+ <View className="flex-1">
108
+ <MetricCard metric={item} />
109
+ </View>
110
+ )}
111
+ scrollEnabled={false}
112
+ />
113
+ </View>
114
+ );
115
+ };
@@ -0,0 +1,32 @@
1
+ import React from 'react';
2
+ import { Text, Pressable, type ViewProps } from 'react-native';
3
+ import { cn } from '@sudobility/components-rn';
4
+
5
+ export interface PipelineViewProps extends ViewProps {
6
+ disabled?: boolean;
7
+ onPress?: () => void;
8
+ children?: React.ReactNode;
9
+ }
10
+
11
+ export const PipelineView: React.FC<PipelineViewProps> = ({
12
+ className,
13
+ children,
14
+ disabled = false,
15
+ onPress,
16
+ ...props
17
+ }) => (
18
+ <Pressable
19
+ onPress={disabled ? undefined : onPress}
20
+ disabled={disabled}
21
+ accessibilityRole="button"
22
+ accessibilityLabel="Pipeline View"
23
+ className={cn(
24
+ 'p-4 rounded-lg border bg-white dark:bg-gray-900 border-gray-200 dark:border-gray-700',
25
+ disabled && 'opacity-50',
26
+ className
27
+ )}
28
+ {...props}
29
+ >
30
+ {children || <Text className="text-gray-900 dark:text-white">PipelineView Component</Text>}
31
+ </Pressable>
32
+ );
@@ -0,0 +1,27 @@
1
+ import React from 'react';
2
+ import { View, Text, type ViewProps } from 'react-native';
3
+ import { cn } from '@sudobility/components-rn';
4
+
5
+ export interface RegressionTestProps extends ViewProps {
6
+ disabled?: boolean;
7
+ children?: React.ReactNode;
8
+ }
9
+
10
+ export const RegressionTest: React.FC<RegressionTestProps> = ({
11
+ className,
12
+ children,
13
+ disabled,
14
+ ...props
15
+ }) => (
16
+ <View
17
+ className={cn(
18
+ 'p-4 rounded-lg border bg-white dark:bg-gray-900 border-gray-200 dark:border-gray-700',
19
+ disabled && 'opacity-50',
20
+ className
21
+ )}
22
+ accessibilityLabel="Regression Test"
23
+ {...props}
24
+ >
25
+ {children || <Text className="text-gray-900 dark:text-white">RegressionTest Component</Text>}
26
+ </View>
27
+ );
@@ -0,0 +1,74 @@
1
+ import React from 'react';
2
+ import { View, Text, type ViewProps } from 'react-native';
3
+ import { cn } from '@sudobility/components-rn';
4
+
5
+ export interface SystemStatusIndicatorProps extends ViewProps {
6
+ status: 'operational' | 'degraded' | 'partial' | 'major' | 'maintenance';
7
+ label?: string;
8
+ showPulse?: boolean;
9
+ }
10
+
11
+ const statusConfig = {
12
+ operational: {
13
+ color: 'bg-green-500',
14
+ textColor: 'text-green-700 dark:text-green-400',
15
+ label: 'Operational',
16
+ },
17
+ degraded: {
18
+ color: 'bg-yellow-500',
19
+ textColor: 'text-yellow-700 dark:text-yellow-400',
20
+ label: 'Degraded Performance',
21
+ },
22
+ partial: {
23
+ color: 'bg-orange-500',
24
+ textColor: 'text-orange-700 dark:text-orange-400',
25
+ label: 'Partial Outage',
26
+ },
27
+ major: {
28
+ color: 'bg-red-500',
29
+ textColor: 'text-red-700 dark:text-red-400',
30
+ label: 'Major Outage',
31
+ },
32
+ maintenance: {
33
+ color: 'bg-blue-500',
34
+ textColor: 'text-blue-700 dark:text-blue-400',
35
+ label: 'Under Maintenance',
36
+ },
37
+ };
38
+
39
+ /**
40
+ * System status indicator component for displaying service health
41
+ */
42
+ export const SystemStatusIndicator: React.FC<SystemStatusIndicatorProps> = ({
43
+ status,
44
+ label,
45
+ showPulse = true,
46
+ className,
47
+ ...props
48
+ }) => {
49
+ const config = statusConfig[status];
50
+
51
+ return (
52
+ <View
53
+ className={cn('flex-row items-center gap-2', className)}
54
+ accessibilityRole="text"
55
+ accessibilityLabel={`System status: ${label || config.label}`}
56
+ {...props}
57
+ >
58
+ <View className="relative">
59
+ <View className={cn('w-3 h-3 rounded-full', config.color)} />
60
+ {showPulse && status === 'operational' && (
61
+ <View
62
+ className={cn(
63
+ 'absolute inset-0 rounded-full opacity-75',
64
+ config.color
65
+ )}
66
+ />
67
+ )}
68
+ </View>
69
+ <Text className={cn('text-sm font-medium', config.textColor)}>
70
+ {label || config.label}
71
+ </Text>
72
+ </View>
73
+ );
74
+ };
@@ -0,0 +1,27 @@
1
+ import React from 'react';
2
+ import { View, Text, type ViewProps } from 'react-native';
3
+ import { cn } from '@sudobility/components-rn';
4
+
5
+ export interface TestResultProps extends ViewProps {
6
+ disabled?: boolean;
7
+ children?: React.ReactNode;
8
+ }
9
+
10
+ export const TestResult: React.FC<TestResultProps> = ({
11
+ className,
12
+ children,
13
+ disabled,
14
+ ...props
15
+ }) => (
16
+ <View
17
+ className={cn(
18
+ 'p-4 rounded-lg border bg-white dark:bg-gray-900 border-gray-200 dark:border-gray-700',
19
+ disabled && 'opacity-50',
20
+ className
21
+ )}
22
+ accessibilityLabel="Test Result"
23
+ {...props}
24
+ >
25
+ {children || <Text className="text-gray-900 dark:text-white">TestResult Component</Text>}
26
+ </View>
27
+ );
@@ -0,0 +1,32 @@
1
+ import React from 'react';
2
+ import { Text, Pressable, type ViewProps } from 'react-native';
3
+ import { cn } from '@sudobility/components-rn';
4
+
5
+ export interface TestRunnerProps extends ViewProps {
6
+ disabled?: boolean;
7
+ onPress?: () => void;
8
+ children?: React.ReactNode;
9
+ }
10
+
11
+ export const TestRunner: React.FC<TestRunnerProps> = ({
12
+ className,
13
+ children,
14
+ disabled = false,
15
+ onPress,
16
+ ...props
17
+ }) => (
18
+ <Pressable
19
+ onPress={disabled ? undefined : onPress}
20
+ disabled={disabled}
21
+ accessibilityRole="button"
22
+ accessibilityLabel="Test Runner"
23
+ className={cn(
24
+ 'p-4 rounded-lg border bg-white dark:bg-gray-900 border-gray-200 dark:border-gray-700',
25
+ disabled && 'opacity-50',
26
+ className
27
+ )}
28
+ {...props}
29
+ >
30
+ {children || <Text className="text-gray-900 dark:text-white">TestRunner Component</Text>}
31
+ </Pressable>
32
+ );
@@ -0,0 +1,27 @@
1
+ import React from 'react';
2
+ import { View, Text, type ViewProps } from 'react-native';
3
+ import { cn } from '@sudobility/components-rn';
4
+
5
+ export interface WebhookLoggerProps extends ViewProps {
6
+ disabled?: boolean;
7
+ children?: React.ReactNode;
8
+ }
9
+
10
+ export const WebhookLogger: React.FC<WebhookLoggerProps> = ({
11
+ className,
12
+ children,
13
+ disabled,
14
+ ...props
15
+ }) => (
16
+ <View
17
+ className={cn(
18
+ 'p-4 rounded-lg border bg-white dark:bg-gray-900 border-gray-200 dark:border-gray-700',
19
+ disabled && 'opacity-50',
20
+ className
21
+ )}
22
+ accessibilityLabel="Webhook Logger"
23
+ {...props}
24
+ >
25
+ {children || <Text className="text-gray-900 dark:text-white">WebhookLogger Component</Text>}
26
+ </View>
27
+ );
@@ -0,0 +1,32 @@
1
+ import React from 'react';
2
+ import { Text, Pressable, type ViewProps } from 'react-native';
3
+ import { cn } from '@sudobility/components-rn';
4
+
5
+ export interface WorkflowBuilderProps extends ViewProps {
6
+ disabled?: boolean;
7
+ onPress?: () => void;
8
+ children?: React.ReactNode;
9
+ }
10
+
11
+ export const WorkflowBuilder: React.FC<WorkflowBuilderProps> = ({
12
+ className,
13
+ children,
14
+ disabled = false,
15
+ onPress,
16
+ ...props
17
+ }) => (
18
+ <Pressable
19
+ onPress={disabled ? undefined : onPress}
20
+ disabled={disabled}
21
+ accessibilityRole="button"
22
+ accessibilityLabel="Workflow Builder"
23
+ className={cn(
24
+ 'p-4 rounded-lg border bg-white dark:bg-gray-900 border-gray-200 dark:border-gray-700',
25
+ disabled && 'opacity-50',
26
+ className
27
+ )}
28
+ {...props}
29
+ >
30
+ {children || <Text className="text-gray-900 dark:text-white">WorkflowBuilder Component</Text>}
31
+ </Pressable>
32
+ );
@@ -0,0 +1,32 @@
1
+ import React from 'react';
2
+ import { Text, Pressable, type ViewProps } from 'react-native';
3
+ import { cn } from '@sudobility/components-rn';
4
+
5
+ export interface WorkflowTemplateProps extends ViewProps {
6
+ disabled?: boolean;
7
+ onPress?: () => void;
8
+ children?: React.ReactNode;
9
+ }
10
+
11
+ export const WorkflowTemplate: React.FC<WorkflowTemplateProps> = ({
12
+ className,
13
+ children,
14
+ disabled = false,
15
+ onPress,
16
+ ...props
17
+ }) => (
18
+ <Pressable
19
+ onPress={disabled ? undefined : onPress}
20
+ disabled={disabled}
21
+ accessibilityRole="button"
22
+ accessibilityLabel="Workflow Template"
23
+ className={cn(
24
+ 'p-4 rounded-lg border bg-white dark:bg-gray-900 border-gray-200 dark:border-gray-700',
25
+ disabled && 'opacity-50',
26
+ className
27
+ )}
28
+ {...props}
29
+ >
30
+ {children || <Text className="text-gray-900 dark:text-white">WorkflowTemplate Component</Text>}
31
+ </Pressable>
32
+ );
@@ -0,0 +1,27 @@
1
+ import React from 'react';
2
+ import { View, Text, type ViewProps } from 'react-native';
3
+ import { cn } from '@sudobility/components-rn';
4
+
5
+ export interface XmlParserProps extends ViewProps {
6
+ disabled?: boolean;
7
+ children?: React.ReactNode;
8
+ }
9
+
10
+ export const XmlParser: React.FC<XmlParserProps> = ({
11
+ className,
12
+ children,
13
+ disabled,
14
+ ...props
15
+ }) => (
16
+ <View
17
+ className={cn(
18
+ 'p-4 rounded-lg border bg-white dark:bg-gray-900 border-gray-200 dark:border-gray-700',
19
+ disabled && 'opacity-50',
20
+ className
21
+ )}
22
+ accessibilityLabel="XML Parser"
23
+ {...props}
24
+ >
25
+ {children || <Text className="text-gray-900 dark:text-white">XmlParser Component</Text>}
26
+ </View>
27
+ );
package/src/index.ts ADDED
@@ -0,0 +1,32 @@
1
+ /**
2
+ * @sudobility/devops-components-rn
3
+ * React Native DevOps components for Sudobility
4
+ */
5
+
6
+ export { AlertDialog, type AlertDialogProps } from './AlertDialog';
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';
19
+ export {
20
+ MetricsGrid,
21
+ type MetricsGridProps,
22
+ type MetricItem,
23
+ } from './MetricsGrid';
24
+ export { PipelineView, type PipelineViewProps } from './PipelineView';
25
+ export { RegressionTest, type RegressionTestProps } from './RegressionTest';
26
+ export { SystemStatusIndicator, type SystemStatusIndicatorProps } from './SystemStatusIndicator';
27
+ export { TestResult, type TestResultProps } from './TestResult';
28
+ export { TestRunner, type TestRunnerProps } from './TestRunner';
29
+ export { WebhookLogger, type WebhookLoggerProps } from './WebhookLogger';
30
+ export { WorkflowBuilder, type WorkflowBuilderProps } from './WorkflowBuilder';
31
+ export { WorkflowTemplate, type WorkflowTemplateProps } from './WorkflowTemplate';
32
+ export { XmlParser, type XmlParserProps } from './XmlParser';