@utopia-studio-design/design-system-cli 0.8.1 → 0.8.2
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/bin/utopia-ds-mcp.mjs +15 -4
- package/bin/utopia-ds.mjs +16 -3
- package/data/blocks/semantic-pattern-parts/AuthParts.tsx +48 -0
- package/data/blocks/semantic-pattern-parts/ChoiceCards.tsx +7 -0
- package/data/blocks/semantic-pattern-parts/ListFilters.tsx +9 -0
- package/data/blocks/semantic-pattern-parts/OutcomeNotice.tsx +7 -0
- package/data/blocks/semantic-pattern-parts/PatternParts.tsx +7 -0
- package/data/blocks/semantic-pattern-parts/ProductParts.tsx +38 -0
- package/data/blocks/semantic-pattern-parts/ProgressSteps.tsx +6 -0
- package/data/blocks/semantic-pattern-parts/ReviewList.tsx +7 -0
- package/data/blocks/semantic-pattern-parts/ValidatedField.tsx +8 -0
- package/data/blocks/semantic-pattern-parts/WorkflowParts.tsx +339 -0
- package/data/blocks/semantic-pattern-parts/auth-parts.css +27 -0
- package/data/blocks/semantic-pattern-parts/pattern-parts.css +25 -0
- package/data/blocks/semantic-pattern-parts/product-parts.css +25 -0
- package/data/blocks/semantic-pattern-parts/types.ts +3 -0
- package/data/blocks/semantic-pattern-parts/workflow-parts.css +118 -0
- package/data/blocks/ux-pattern-examples/AccessExamples.tsx +46 -0
- package/data/blocks/ux-pattern-examples/AccountExamples.tsx +133 -0
- package/data/blocks/ux-pattern-examples/OnboardingExample.tsx +15 -0
- package/data/blocks/ux-pattern-examples/ProductExamples.tsx +79 -0
- package/data/blocks/ux-pattern-examples/ReviewExample.tsx +14 -0
- package/data/blocks/ux-pattern-examples/SignupExample.tsx +22 -0
- package/data/blocks/ux-pattern-examples/WorkflowExample.tsx +1761 -0
- package/data/blocks/ux-pattern-examples/WorkflowExamples.tsx +190 -0
- package/data/blocks/ux-pattern-examples/copy.ts +6 -0
- package/data/blocks/ux-pattern-examples/ux-examples.css +18 -0
- package/data/blocks/ux-pattern-examples/workflow-copy.ts +76 -0
- package/data/blocks/ux-pattern-examples/workflow-definitions.ts +1291 -0
- package/data/docs/ui-parts-qa.md +172 -0
- package/data/docs/ui-parts.md +105 -0
- package/data/docs/ux-pattern-adaptation-qa.md +38 -0
- package/data/docs/ux-pattern-adaptation.md +41 -0
- package/data/docs/ux-pattern-migration.md +111 -0
- package/data/docs/ux-pattern-publish-2026-09-13.md +22 -0
- package/data/docs/ux-pattern-release-2026-09-13.md +26 -0
- package/data/docs/ux-source-evidence/account-auth.json +41 -0
- package/data/docs/ux-source-evidence/account-forgot-password.json +36 -0
- package/data/docs/ux-source-evidence/account-invite.json +63 -0
- package/data/docs/ux-source-evidence/account-locked.json +63 -0
- package/data/docs/ux-source-evidence/account-login.json +28 -0
- package/data/docs/ux-source-evidence/account-mfa.json +62 -0
- package/data/docs/ux-source-evidence/account-onboarding-credentials.json +52 -0
- package/data/docs/ux-source-evidence/account-onboarding-legal.json +56 -0
- package/data/docs/ux-source-evidence/account-onboarding-orientation.json +66 -0
- package/data/docs/ux-source-evidence/account-onboarding-profile.json +50 -0
- package/data/docs/ux-source-evidence/account-onboarding.json +69 -0
- package/data/docs/ux-source-evidence/account-reset-password.json +27 -0
- package/data/docs/ux-source-evidence/account-session-expired.json +62 -0
- package/data/docs/ux-source-evidence/account-signup.json +33 -0
- package/data/docs/ux-source-evidence/account-verify-email.json +34 -0
- package/data/docs/ux-source-evidence/account-welcome.json +41 -0
- package/data/docs/ux-source-evidence/admin-analytics.json +54 -0
- package/data/docs/ux-source-evidence/admin-audit.json +31 -0
- package/data/docs/ux-source-evidence/admin-broadcasts-new.json +36 -0
- package/data/docs/ux-source-evidence/admin-broadcasts.json +41 -0
- package/data/docs/ux-source-evidence/admin-closures.json +52 -0
- package/data/docs/ux-source-evidence/admin-devices.json +51 -0
- package/data/docs/ux-source-evidence/admin-escalations.json +35 -0
- package/data/docs/ux-source-evidence/admin-incidents.json +54 -0
- package/data/docs/ux-source-evidence/admin-loading.json +17 -0
- package/data/docs/ux-source-evidence/admin-onboarding-detail.json +80 -0
- package/data/docs/ux-source-evidence/admin-onboarding.json +62 -0
- package/data/docs/ux-source-evidence/admin-payments.json +45 -0
- package/data/docs/ux-source-evidence/admin-providers.json +38 -0
- package/data/docs/ux-source-evidence/admin-settings.json +18 -0
- package/data/docs/ux-source-evidence/admin-subscriptions-detail-allocate.json +42 -0
- package/data/docs/ux-source-evidence/admin-subscriptions-detail.json +48 -0
- package/data/docs/ux-source-evidence/admin-subscriptions-new.json +43 -0
- package/data/docs/ux-source-evidence/admin-subscriptions.json +41 -0
- package/data/docs/ux-source-evidence/admin-transactions.json +41 -0
- package/data/docs/ux-source-evidence/error.json +30 -0
- package/data/docs/ux-source-evidence/loading.json +19 -0
- package/data/docs/ux-source-evidence/marketing-blog.json +48 -0
- package/data/docs/ux-source-evidence/marketing-contact.json +36 -0
- package/data/docs/ux-source-evidence/marketing.json +64 -0
- package/data/docs/ux-source-evidence/not-found.json +28 -0
- package/data/docs/ux-source-evidence/portal-loading.json +17 -0
- package/data/docs/ux-source-evidence/portal-mentor-messages.json +31 -0
- package/data/docs/ux-source-evidence/portal-mentor-profile.json +23 -0
- package/data/docs/ux-source-evidence/portal-mentor-requests-detail.json +54 -0
- package/data/docs/ux-source-evidence/portal-mentor-sessions-detail-assess.json +42 -0
- package/data/docs/ux-source-evidence/portal-mentor-settings.json +18 -0
- package/data/docs/ux-source-evidence/portal-mentor.json +38 -0
- package/data/docs/ux-source-evidence/portal-sessions-detail-live.json +48 -0
- package/data/docs/ux-source-evidence/portal-sponsor-billing.json +28 -0
- package/data/docs/ux-source-evidence/portal-sponsor-profile.json +22 -0
- package/data/docs/ux-source-evidence/portal-sponsor-sessions.json +28 -0
- package/data/docs/ux-source-evidence/portal-sponsor-settings.json +18 -0
- package/data/docs/ux-source-evidence/portal-sponsor-trainees.json +36 -0
- package/data/docs/ux-source-evidence/portal-sponsor.json +52 -0
- package/data/docs/ux-source-evidence/portal-trainee-competency.json +42 -0
- package/data/docs/ux-source-evidence/portal-trainee-credits.json +40 -0
- package/data/docs/ux-source-evidence/portal-trainee-mentors.json +48 -0
- package/data/docs/ux-source-evidence/portal-trainee-messages.json +32 -0
- package/data/docs/ux-source-evidence/portal-trainee-notifications.json +35 -0
- package/data/docs/ux-source-evidence/portal-trainee-profile.json +26 -0
- package/data/docs/ux-source-evidence/portal-trainee-request.json +54 -0
- package/data/docs/ux-source-evidence/portal-trainee-sessions-detail-feedback.json +36 -0
- package/data/docs/ux-source-evidence/portal-trainee-sessions-detail-precheck.json +42 -0
- package/data/docs/ux-source-evidence/portal-trainee-sessions-detail.json +55 -0
- package/data/docs/ux-source-evidence/portal-trainee-sessions.json +36 -0
- package/data/docs/ux-source-evidence/portal-trainee-settings-notifications.json +38 -0
- package/data/docs/ux-source-evidence/portal-trainee-settings.json +18 -0
- package/data/docs/ux-source-evidence/portal-trainee.json +44 -0
- package/data/docs/ux-source-evidence/portal-tv-detail.json +39 -0
- package/data/docs/ux-source-evidence/portal-tv.json +44 -0
- package/data/docs/ux-source-evidence/shared-admin-admin-shell.json +35 -0
- package/data/docs/ux-source-evidence/shared-auth-auth-primitives.json +105 -0
- package/data/docs/ux-source-evidence/shared-auth-auth-shell.json +25 -0
- package/data/docs/ux-source-evidence/shared-auth-onboarding-primitives.json +52 -0
- package/data/docs/ux-source-evidence/shared-auth-onboarding-shell.json +28 -0
- package/data/docs/ux-source-evidence/shared-auth-status-indicator.json +41 -0
- package/data/docs/ux-source-evidence/shared-portal-empty-state.json +24 -0
- package/data/docs/ux-source-evidence/shared-portal-loading-skeleton.json +27 -0
- package/data/docs/ux-source-evidence/shared-portal-notifications-dropdown.json +39 -0
- package/data/docs/ux-source-evidence/shared-portal-portal-shell.json +36 -0
- package/data/docs/ux-source-evidence/shared-portal-profile-form.json +32 -0
- package/data/docs/ux-source-evidence/shared-portal-settings-view.json +81 -0
- package/data/docs/ux-source-evidence/shared-portal-usage-sparkline.json +18 -0
- package/data/docs/ux-source-evidence/shared-portal-user-menu.json +34 -0
- package/data/manifests/blocks.json +230 -21
- package/data/manifests/patterns.json +330 -0
- package/data/manifests/ui-patterns.json +1029 -0
- package/data/manifests/ux-examples.json +2177 -0
- package/data/manifests/ux-patterns.json +1135 -0
- package/data/manifests/ux-source-inventory.json +4669 -0
- package/data/ui-parts/blocks/analytics-dashboard/AnalyticsMetricBlocks.tsx +87 -0
- package/data/ui-parts/blocks/analytics-dashboard/analytics-dashboard.css +92 -0
- package/data/ui-parts/blocks/semantic-pattern-parts/AuthParts.tsx +48 -0
- package/data/ui-parts/blocks/semantic-pattern-parts/ChoiceCards.tsx +7 -0
- package/data/ui-parts/blocks/semantic-pattern-parts/ListFilters.tsx +9 -0
- package/data/ui-parts/blocks/semantic-pattern-parts/OutcomeNotice.tsx +7 -0
- package/data/ui-parts/blocks/semantic-pattern-parts/ProductParts.tsx +38 -0
- package/data/ui-parts/blocks/semantic-pattern-parts/ProgressSteps.tsx +6 -0
- package/data/ui-parts/blocks/semantic-pattern-parts/ReviewList.tsx +7 -0
- package/data/ui-parts/blocks/semantic-pattern-parts/ValidatedField.tsx +8 -0
- package/data/ui-parts/blocks/semantic-pattern-parts/WorkflowParts.tsx +339 -0
- package/data/ui-parts/blocks/semantic-pattern-parts/auth-parts.css +27 -0
- package/data/ui-parts/blocks/semantic-pattern-parts/pattern-parts.css +25 -0
- package/data/ui-parts/blocks/semantic-pattern-parts/product-parts.css +25 -0
- package/data/ui-parts/blocks/semantic-pattern-parts/types.ts +3 -0
- package/data/ui-parts/blocks/semantic-pattern-parts/workflow-parts.css +118 -0
- package/data/ui-parts/blocks/ux-pattern-examples/AccessExamples.tsx +46 -0
- package/data/ui-parts/blocks/ux-pattern-examples/AccountExamples.tsx +133 -0
- package/data/ui-parts/blocks/ux-pattern-examples/ProductExamples.tsx +79 -0
- package/data/ui-parts/blocks/ux-pattern-examples/WorkflowExample.tsx +1761 -0
- package/data/ui-parts/blocks/ux-pattern-examples/WorkflowExamples.tsx +190 -0
- package/data/ui-parts/blocks/ux-pattern-examples/copy.ts +6 -0
- package/data/ui-parts/blocks/ux-pattern-examples/ux-examples.css +18 -0
- package/data/ui-parts/blocks/ux-pattern-examples/workflow-copy.ts +76 -0
- package/data/ui-parts/blocks/ux-pattern-examples/workflow-definitions.ts +1291 -0
- package/data/ux-source-evidence/account-auth.json +41 -0
- package/data/ux-source-evidence/account-forgot-password.json +36 -0
- package/data/ux-source-evidence/account-invite.json +63 -0
- package/data/ux-source-evidence/account-locked.json +63 -0
- package/data/ux-source-evidence/account-login.json +28 -0
- package/data/ux-source-evidence/account-mfa.json +62 -0
- package/data/ux-source-evidence/account-onboarding-credentials.json +52 -0
- package/data/ux-source-evidence/account-onboarding-legal.json +56 -0
- package/data/ux-source-evidence/account-onboarding-orientation.json +66 -0
- package/data/ux-source-evidence/account-onboarding-profile.json +50 -0
- package/data/ux-source-evidence/account-onboarding.json +69 -0
- package/data/ux-source-evidence/account-reset-password.json +27 -0
- package/data/ux-source-evidence/account-session-expired.json +62 -0
- package/data/ux-source-evidence/account-signup.json +33 -0
- package/data/ux-source-evidence/account-verify-email.json +34 -0
- package/data/ux-source-evidence/account-welcome.json +41 -0
- package/data/ux-source-evidence/admin-analytics.json +54 -0
- package/data/ux-source-evidence/admin-audit.json +31 -0
- package/data/ux-source-evidence/admin-broadcasts-new.json +36 -0
- package/data/ux-source-evidence/admin-broadcasts.json +41 -0
- package/data/ux-source-evidence/admin-closures.json +52 -0
- package/data/ux-source-evidence/admin-devices.json +51 -0
- package/data/ux-source-evidence/admin-escalations.json +35 -0
- package/data/ux-source-evidence/admin-incidents.json +54 -0
- package/data/ux-source-evidence/admin-loading.json +17 -0
- package/data/ux-source-evidence/admin-onboarding-detail.json +80 -0
- package/data/ux-source-evidence/admin-onboarding.json +62 -0
- package/data/ux-source-evidence/admin-payments.json +45 -0
- package/data/ux-source-evidence/admin-providers.json +38 -0
- package/data/ux-source-evidence/admin-settings.json +18 -0
- package/data/ux-source-evidence/admin-subscriptions-detail-allocate.json +42 -0
- package/data/ux-source-evidence/admin-subscriptions-detail.json +48 -0
- package/data/ux-source-evidence/admin-subscriptions-new.json +43 -0
- package/data/ux-source-evidence/admin-subscriptions.json +41 -0
- package/data/ux-source-evidence/admin-transactions.json +41 -0
- package/data/ux-source-evidence/error.json +30 -0
- package/data/ux-source-evidence/loading.json +19 -0
- package/data/ux-source-evidence/marketing-blog.json +48 -0
- package/data/ux-source-evidence/marketing-contact.json +36 -0
- package/data/ux-source-evidence/marketing.json +64 -0
- package/data/ux-source-evidence/not-found.json +28 -0
- package/data/ux-source-evidence/portal-loading.json +17 -0
- package/data/ux-source-evidence/portal-mentor-messages.json +31 -0
- package/data/ux-source-evidence/portal-mentor-profile.json +23 -0
- package/data/ux-source-evidence/portal-mentor-requests-detail.json +54 -0
- package/data/ux-source-evidence/portal-mentor-sessions-detail-assess.json +42 -0
- package/data/ux-source-evidence/portal-mentor-settings.json +18 -0
- package/data/ux-source-evidence/portal-mentor.json +38 -0
- package/data/ux-source-evidence/portal-sessions-detail-live.json +48 -0
- package/data/ux-source-evidence/portal-sponsor-billing.json +28 -0
- package/data/ux-source-evidence/portal-sponsor-profile.json +22 -0
- package/data/ux-source-evidence/portal-sponsor-sessions.json +28 -0
- package/data/ux-source-evidence/portal-sponsor-settings.json +18 -0
- package/data/ux-source-evidence/portal-sponsor-trainees.json +36 -0
- package/data/ux-source-evidence/portal-sponsor.json +52 -0
- package/data/ux-source-evidence/portal-trainee-competency.json +42 -0
- package/data/ux-source-evidence/portal-trainee-credits.json +40 -0
- package/data/ux-source-evidence/portal-trainee-mentors.json +48 -0
- package/data/ux-source-evidence/portal-trainee-messages.json +32 -0
- package/data/ux-source-evidence/portal-trainee-notifications.json +35 -0
- package/data/ux-source-evidence/portal-trainee-profile.json +26 -0
- package/data/ux-source-evidence/portal-trainee-request.json +54 -0
- package/data/ux-source-evidence/portal-trainee-sessions-detail-feedback.json +36 -0
- package/data/ux-source-evidence/portal-trainee-sessions-detail-precheck.json +42 -0
- package/data/ux-source-evidence/portal-trainee-sessions-detail.json +55 -0
- package/data/ux-source-evidence/portal-trainee-sessions.json +36 -0
- package/data/ux-source-evidence/portal-trainee-settings-notifications.json +38 -0
- package/data/ux-source-evidence/portal-trainee-settings.json +18 -0
- package/data/ux-source-evidence/portal-trainee.json +44 -0
- package/data/ux-source-evidence/portal-tv-detail.json +39 -0
- package/data/ux-source-evidence/portal-tv.json +44 -0
- package/data/ux-source-evidence/shared-admin-admin-shell.json +35 -0
- package/data/ux-source-evidence/shared-auth-auth-primitives.json +105 -0
- package/data/ux-source-evidence/shared-auth-auth-shell.json +25 -0
- package/data/ux-source-evidence/shared-auth-onboarding-primitives.json +52 -0
- package/data/ux-source-evidence/shared-auth-onboarding-shell.json +28 -0
- package/data/ux-source-evidence/shared-auth-status-indicator.json +41 -0
- package/data/ux-source-evidence/shared-portal-empty-state.json +24 -0
- package/data/ux-source-evidence/shared-portal-loading-skeleton.json +27 -0
- package/data/ux-source-evidence/shared-portal-notifications-dropdown.json +39 -0
- package/data/ux-source-evidence/shared-portal-portal-shell.json +36 -0
- package/data/ux-source-evidence/shared-portal-profile-form.json +32 -0
- package/data/ux-source-evidence/shared-portal-settings-view.json +81 -0
- package/data/ux-source-evidence/shared-portal-usage-sparkline.json +18 -0
- package/data/ux-source-evidence/shared-portal-user-menu.json +34 -0
- package/lib/api.mjs +193 -4
- package/package.json +2 -2
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
import { WorkflowExample, type WorkflowProps } from './WorkflowExample'
|
|
2
|
+
import { workflowDefinitions } from './workflow-definitions'
|
|
3
|
+
|
|
4
|
+
export function AccountProtectionExample(props: WorkflowProps) {
|
|
5
|
+
return <WorkflowExample {...props} definition={workflowDefinitions.find(d => d.id === 'account-protection-01')!} />
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
export function WelcomeExample(props: WorkflowProps) {
|
|
9
|
+
return <WorkflowExample {...props} definition={workflowDefinitions.find(d => d.id === 'welcome-01')!} />
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export function SetupProgressExample(props: WorkflowProps) {
|
|
13
|
+
return <WorkflowExample {...props} definition={workflowDefinitions.find(d => d.id === 'setup-progress-01')!} />
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export function ProfileSetupExample(props: WorkflowProps) {
|
|
17
|
+
return <WorkflowExample {...props} definition={workflowDefinitions.find(d => d.id === 'profile-setup-01')!} />
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export function CredentialsExample(props: WorkflowProps) {
|
|
21
|
+
return <WorkflowExample {...props} definition={workflowDefinitions.find(d => d.id === 'credentials-01')!} />
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export function AgreementsExample(props: WorkflowProps) {
|
|
25
|
+
return <WorkflowExample {...props} definition={workflowDefinitions.find(d => d.id === 'agreements-01')!} />
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export function OrientationExample(props: WorkflowProps) {
|
|
29
|
+
return <WorkflowExample {...props} definition={workflowDefinitions.find(d => d.id === 'orientation-01')!} />
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export function PlanSelectionExample(props: WorkflowProps) {
|
|
33
|
+
return <WorkflowExample {...props} definition={workflowDefinitions.find(d => d.id === 'plan-selection-01')!} />
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
export function ProfileEditingExample(props: WorkflowProps) {
|
|
37
|
+
return <WorkflowExample {...props} definition={workflowDefinitions.find(d => d.id === 'profile-editing-01')!} />
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export function AccountSettingsExample(props: WorkflowProps) {
|
|
41
|
+
return <WorkflowExample {...props} definition={workflowDefinitions.find(d => d.id === 'account-settings-01')!} />
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export function BookingRequestExample(props: WorkflowProps) {
|
|
45
|
+
return <WorkflowExample {...props} definition={workflowDefinitions.find(d => d.id === 'booking-request-01')!} />
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
export function SessionListExample(props: WorkflowProps) {
|
|
49
|
+
return <WorkflowExample {...props} definition={workflowDefinitions.find(d => d.id === 'session-list-01')!} />
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
export function SessionDetailExample(props: WorkflowProps) {
|
|
53
|
+
return <WorkflowExample {...props} definition={workflowDefinitions.find(d => d.id === 'session-detail-01')!} />
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
export function RequestDecisionExample(props: WorkflowProps) {
|
|
57
|
+
return <WorkflowExample {...props} definition={workflowDefinitions.find(d => d.id === 'request-decision-01')!} />
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
export function ConnectivityCheckExample(props: WorkflowProps) {
|
|
61
|
+
return <WorkflowExample {...props} definition={workflowDefinitions.find(d => d.id === 'connectivity-check-01')!} />
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
export function SessionFeedbackExample(props: WorkflowProps) {
|
|
65
|
+
return <WorkflowExample {...props} definition={workflowDefinitions.find(d => d.id === 'session-feedback-01')!} />
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
export function StructuredAssessmentExample(props: WorkflowProps) {
|
|
69
|
+
return <WorkflowExample {...props} definition={workflowDefinitions.find(d => d.id === 'structured-assessment-01')!} />
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
export function VerificationQueueExample(props: WorkflowProps) {
|
|
73
|
+
return <WorkflowExample {...props} definition={workflowDefinitions.find(d => d.id === 'verification-queue-01')!} />
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
export function VerificationChecklistExample(props: WorkflowProps) {
|
|
77
|
+
return <WorkflowExample {...props} definition={workflowDefinitions.find(d => d.id === 'verification-checklist-01')!} />
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
export function ClosureQueueExample(props: WorkflowProps) {
|
|
81
|
+
return <WorkflowExample {...props} definition={workflowDefinitions.find(d => d.id === 'closure-queue-01')!} />
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
export function MatchingEscalationsExample(props: WorkflowProps) {
|
|
85
|
+
return <WorkflowExample {...props} definition={workflowDefinitions.find(d => d.id === 'matching-escalations-01')!} />
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
export function DeviceMonitoringExample(props: WorkflowProps) {
|
|
89
|
+
return <WorkflowExample {...props} definition={workflowDefinitions.find(d => d.id === 'device-monitoring-01')!} />
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
export function ProviderConnectionsExample(props: WorkflowProps) {
|
|
93
|
+
return <WorkflowExample {...props} definition={workflowDefinitions.find(d => d.id === 'provider-connections-01')!} />
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
export function IncidentTrackingExample(props: WorkflowProps) {
|
|
97
|
+
return <WorkflowExample {...props} definition={workflowDefinitions.find(d => d.id === 'incident-tracking-01')!} />
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
export function AuditLogExample(props: WorkflowProps) {
|
|
101
|
+
return <WorkflowExample {...props} definition={workflowDefinitions.find(d => d.id === 'audit-log-01')!} />
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
export function SubscriptionsExample(props: WorkflowProps) {
|
|
105
|
+
return <WorkflowExample {...props} definition={workflowDefinitions.find(d => d.id === 'subscriptions-01')!} />
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
export function SubscriptionCreateExample(props: WorkflowProps) {
|
|
109
|
+
return <WorkflowExample {...props} definition={workflowDefinitions.find(d => d.id === 'subscription-create-01')!} />
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
export function CreditAllocationExample(props: WorkflowProps) {
|
|
113
|
+
return <WorkflowExample {...props} definition={workflowDefinitions.find(d => d.id === 'credit-allocation-01')!} />
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
export function PaymentCycleExample(props: WorkflowProps) {
|
|
117
|
+
return <WorkflowExample {...props} definition={workflowDefinitions.find(d => d.id === 'payment-cycle-01')!} />
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
export function CreditTransactionsExample(props: WorkflowProps) {
|
|
121
|
+
return <WorkflowExample {...props} definition={workflowDefinitions.find(d => d.id === 'credit-transactions-01')!} />
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
export function InvoicesExample(props: WorkflowProps) {
|
|
125
|
+
return <WorkflowExample {...props} definition={workflowDefinitions.find(d => d.id === 'invoices-01')!} />
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
export function TeamAllocationsExample(props: WorkflowProps) {
|
|
129
|
+
return <WorkflowExample {...props} definition={workflowDefinitions.find(d => d.id === 'team-allocations-01')!} />
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
export function PersonalOverviewExample(props: WorkflowProps) {
|
|
133
|
+
return <WorkflowExample {...props} definition={workflowDefinitions.find(d => d.id === 'personal-overview-01')!} />
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
export function ExpertOverviewExample(props: WorkflowProps) {
|
|
137
|
+
return <WorkflowExample {...props} definition={workflowDefinitions.find(d => d.id === 'expert-overview-01')!} />
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
export function SubscriptionDetailExample(props: WorkflowProps) {
|
|
141
|
+
return <WorkflowExample {...props} definition={workflowDefinitions.find(d => d.id === 'subscription-detail-01')!} />
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
export function CreditBalanceExample(props: WorkflowProps) {
|
|
145
|
+
return <WorkflowExample {...props} definition={workflowDefinitions.find(d => d.id === 'credit-balance-01')!} />
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
export function SkillProgressionExample(props: WorkflowProps) {
|
|
149
|
+
return <WorkflowExample {...props} definition={workflowDefinitions.find(d => d.id === 'skill-progression-01')!} />
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
export function AnalyticsExample(props: WorkflowProps) {
|
|
153
|
+
return <WorkflowExample {...props} definition={workflowDefinitions.find(d => d.id === 'analytics-01')!} />
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
export function BroadcastManagementExample(props: WorkflowProps) {
|
|
157
|
+
return <WorkflowExample {...props} definition={workflowDefinitions.find(d => d.id === 'broadcast-management-01')!} />
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
export function BroadcastScheduleExample(props: WorkflowProps) {
|
|
161
|
+
return <WorkflowExample {...props} definition={workflowDefinitions.find(d => d.id === 'broadcast-schedule-01')!} />
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
export function MediaLibraryExample(props: WorkflowProps) {
|
|
165
|
+
return <WorkflowExample {...props} definition={workflowDefinitions.find(d => d.id === 'media-library-01')!} />
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
export function BroadcastViewerExample(props: WorkflowProps) {
|
|
169
|
+
return <WorkflowExample {...props} definition={workflowDefinitions.find(d => d.id === 'broadcast-viewer-01')!} />
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
export function LiveSessionExample(props: WorkflowProps) {
|
|
173
|
+
return <WorkflowExample {...props} definition={workflowDefinitions.find(d => d.id === 'live-session-01')!} />
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
export function ArticleLibraryExample(props: WorkflowProps) {
|
|
177
|
+
return <WorkflowExample {...props} definition={workflowDefinitions.find(d => d.id === 'article-library-01')!} />
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
export function ProductIntroductionExample(props: WorkflowProps) {
|
|
181
|
+
return <WorkflowExample {...props} definition={workflowDefinitions.find(d => d.id === 'product-introduction-01')!} />
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
export function ContactFormExample(props: WorkflowProps) {
|
|
185
|
+
return <WorkflowExample {...props} definition={workflowDefinitions.find(d => d.id === 'contact-form-01')!} />
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
export function LoadingRecoveryExample(props: WorkflowProps) {
|
|
189
|
+
return <WorkflowExample {...props} definition={workflowDefinitions.find(d => d.id === 'loading-recovery-01')!} />
|
|
190
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export type ExampleLocale = 'ko' | 'en' | 'ar'
|
|
2
|
+
export const exampleCopy = {
|
|
3
|
+
ko: { workspace: '작업 공간', signup: '계정 만들기', signupHint: '작업을 시작할 계정 정보를 입력하세요.', name: '이름', email: '이메일', password: '비밀번호', passwordHint: '8자 이상 입력하세요. 실제 비밀번호는 사용하지 마세요.', terms: '예시 이용약관에 동의합니다.', submit: '계정 만들기', complete: '준비가 끝났어요', completeHint: '예시 흐름을 완료했어요. 실제 계정이나 작업 공간은 생성되지 않아요.', again: '다시 살펴보기', basics: '기본 정보', preferences: '작업 방식', finish: '완료', current: '진행 중', done: '완료', locked: '이전 단계 필요', stepLabel: '설정 진행', org: '작업 공간 이름', next: '계속', previous: '이전', choose: '어떻게 작업하나요?', solo: '혼자 작업', team: '팀과 함께', start: '작업 공간 시작하기', startHint: '기본 정보를 정하고 작업을 시작해 보세요.', review: '요청 검토', reviewHint: '진행 중인 요청을 살펴보고 검토 대상을 선택하세요.', sample: '대화형 예시 · 입력한 내용은 저장되지 않아요.' },
|
|
4
|
+
en: { workspace: 'Workspace', signup: 'Create an account', signupHint: 'Enter your account details to get started.', name: 'Name', email: 'Email', password: 'Password', passwordHint: 'At least 8 characters. Do not use a real password.', terms: 'I agree to the sample terms.', submit: 'Create account', complete: 'You’re ready', completeHint: 'Example complete. No account or workspace has been created.', again: 'Explore again', basics: 'Basics', preferences: 'Preferences', finish: 'Complete', current: 'Current', done: 'Done', locked: 'Previous step required', stepLabel: 'Setup progress', org: 'Workspace name', next: 'Continue', previous: 'Back', choose: 'How will you work?', solo: 'On my own', team: 'With a team', start: 'Start a workspace', startHint: 'Set up the basics and get ready to work.', review: 'Review requests', reviewHint: 'Inspect ongoing requests and choose an item to review.', sample: 'Interactive example · nothing you enter is saved.' },
|
|
5
|
+
ar: { workspace: 'مساحة العمل', signup: 'إنشاء حساب', signupHint: 'أدخل معلومات حسابك للبدء.', name: 'الاسم', email: 'البريد الإلكتروني', password: 'كلمة المرور', passwordHint: 'ثمانية أحرف على الأقل. لا تستخدم كلمة مرور حقيقية.', terms: 'أوافق على الشروط التجريبية.', submit: 'إنشاء حساب', complete: 'أنت جاهز', completeHint: 'اكتمل المثال. لم يتم إنشاء حساب أو مساحة عمل.', again: 'استكشاف مجدداً', basics: 'الأساسيات', preferences: 'التفضيلات', finish: 'الإكمال', current: 'الحالي', done: 'مكتمل', locked: 'الخطوة السابقة مطلوبة', stepLabel: 'تقدم الإعداد', org: 'اسم مساحة العمل', next: 'متابعة', previous: 'رجوع', choose: 'كيف ستعمل؟', solo: 'بمفردي', team: 'مع فريق', start: 'بدء مساحة عمل', startHint: 'اضبط الأساسيات واستعد للعمل.', review: 'مراجعة الطلبات', reviewHint: 'استعرض الطلبات واختر عنصراً للمراجعة.', sample: 'مثال تفاعلي · لا يتم حفظ المدخلات.' },
|
|
6
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
:root { --ux-example-min-height: 38rem; --ux-example-form-width: 25rem; --ux-example-setup-width: 44rem; }
|
|
2
|
+
/* Scope the bounded field geometry to examples in this release; room styling is unchanged. */
|
|
3
|
+
.ux-example :is(.uds-input, .uds-input-shell, .uds-native-select) { border-radius: var(--radius-input); }
|
|
4
|
+
.ux-example .uds-textarea { border-radius: var(--radius-textarea); }
|
|
5
|
+
.ux-example { display: flex; flex-direction: column; min-block-size: var(--ux-example-min-height); min-inline-size: 0; color: var(--foreground); background: var(--background); font-size: var(--font-size-body); line-height: var(--line-height-body); }
|
|
6
|
+
.ux-example h3 { margin: 0; font-size: var(--font-size-page-title); line-height: var(--line-height-tight); font-weight: var(--font-weight-strong); }
|
|
7
|
+
.ux-example p { margin: 0; color: var(--foreground-muted); }
|
|
8
|
+
.ux-example__bar { padding: var(--space-5) var(--space-6); border-block-end: var(--border-width-hairline) solid var(--border); background: var(--surface); }
|
|
9
|
+
.ux-example__center { display: grid; place-items: center; flex: 1; padding: var(--space-8) var(--space-5); }
|
|
10
|
+
.ux-example__form { display: grid; gap: var(--space-4); inline-size: 100%; max-inline-size: var(--ux-example-form-width); }
|
|
11
|
+
.ux-example form { display: grid; gap: var(--space-4); }
|
|
12
|
+
.ux-example__check { display: flex; align-items: center; gap: var(--space-2); }
|
|
13
|
+
.ux-example__check button { flex-shrink: 0; }
|
|
14
|
+
.ux-example__actions { display: flex; gap: var(--space-3); justify-content: end; }
|
|
15
|
+
.ux-example__setup { display: grid; gap: var(--space-6); inline-size: 100%; max-inline-size: var(--ux-example-setup-width); margin-inline: auto; padding: var(--space-8) var(--space-5); flex: 1; align-content: start; }
|
|
16
|
+
.ux-example__workspace { display: grid; gap: var(--space-5); padding: var(--space-6); min-inline-size: 0; flex: 1; }
|
|
17
|
+
.ux-example footer { padding: var(--space-4) var(--space-5); color: var(--foreground-muted); text-align: center; font-size: var(--font-size-small); border-block-start: var(--border-width-hairline) solid var(--border); }
|
|
18
|
+
@media(max-width: 40rem) { .ux-example__workspace { padding: var(--space-4); } .ux-example h3 { font-size: var(--font-size-body-lg); } }
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
export type Copy = { en: string; ko: string; ar: string };
|
|
2
|
+
export const L = (en: string, ko: string, ar: string): Copy => ({ en, ko, ar });
|
|
3
|
+
export const workflowCopy = {
|
|
4
|
+
demo: L(
|
|
5
|
+
"Interactive example only. Nothing is sent, billed or saved to an account.",
|
|
6
|
+
"체험용 예시입니다. 실제 전송·결제·계정 저장은 하지 않습니다.",
|
|
7
|
+
"مثال تفاعلي فقط. لا إرسال أو دفع أو حفظ في حساب."
|
|
8
|
+
),
|
|
9
|
+
save: L("Save example", "예시 저장", "حفظ المثال"),
|
|
10
|
+
next: L("Continue", "계속", "متابعة"),
|
|
11
|
+
back: L("Back", "뒤로", "رجوع"),
|
|
12
|
+
cancel: L("Cancel", "취소", "إلغاء"),
|
|
13
|
+
saved: L(
|
|
14
|
+
"Saved in this preview.",
|
|
15
|
+
"이 미리보기에 저장했어요.",
|
|
16
|
+
"تم الحفظ في المعاينة."
|
|
17
|
+
),
|
|
18
|
+
done: L("Example completed.", "예시를 완료했어요.", "اكتمل المثال."),
|
|
19
|
+
reset: L("Start again", "다시 시작", "البدء مجدداً"),
|
|
20
|
+
error: L(
|
|
21
|
+
"Check this field.",
|
|
22
|
+
"입력 내용을 확인하세요.",
|
|
23
|
+
"تحقق من هذا الحقل."
|
|
24
|
+
),
|
|
25
|
+
required: L("Required", "필수", "مطلوب"),
|
|
26
|
+
search: L("Search records", "목록 검색", "البحث في السجلات"),
|
|
27
|
+
status: L("Status", "상태", "الحالة"),
|
|
28
|
+
category: L("Category", "분류", "الفئة"),
|
|
29
|
+
all: L("All", "전체", "الكل"),
|
|
30
|
+
empty: L(
|
|
31
|
+
"No matching records.",
|
|
32
|
+
"일치하는 항목이 없어요.",
|
|
33
|
+
"لا توجد سجلات مطابقة."
|
|
34
|
+
),
|
|
35
|
+
open: L("View details", "자세히 보기", "عرض التفاصيل"),
|
|
36
|
+
close: L("Close details", "상세 닫기", "إغلاق التفاصيل"),
|
|
37
|
+
sort: L("Sort", "정렬", "الترتيب"),
|
|
38
|
+
newest: L("Newest first", "최신순", "الأحدث أولاً"),
|
|
39
|
+
oldest: L("Oldest first", "오래된순", "الأقدم أولاً"),
|
|
40
|
+
pass: L("Pass", "통과", "اجتياز"),
|
|
41
|
+
fail: L("Needs attention", "확인 필요", "يحتاج مراجعة"),
|
|
42
|
+
pending: L("Pending", "대기", "معلّق"),
|
|
43
|
+
locked: L(
|
|
44
|
+
"Finish previous checks first.",
|
|
45
|
+
"앞의 항목을 먼저 완료하세요.",
|
|
46
|
+
"أكمل الفحوص السابقة أولاً."
|
|
47
|
+
),
|
|
48
|
+
draft: L("Save draft", "임시 저장", "حفظ مسودة"),
|
|
49
|
+
submit: L("Submit example", "예시 제출", "إرسال المثال"),
|
|
50
|
+
confirm: L("Confirm in preview", "미리보기에서 확인", "تأكيد في المعاينة"),
|
|
51
|
+
confirmHint: L(
|
|
52
|
+
"Review the details before confirming. This affects preview data only.",
|
|
53
|
+
"확인 전 내용을 검토하세요. 미리보기 데이터에만 적용됩니다.",
|
|
54
|
+
"راجع التفاصيل قبل التأكيد. يتأثر بيانات المثال فقط."
|
|
55
|
+
),
|
|
56
|
+
export: L("Export example CSV", "예시 CSV 내보내기", "تصدير CSV تجريبي"),
|
|
57
|
+
fileError: L(
|
|
58
|
+
"Choose an allowed file, at most 5 MB.",
|
|
59
|
+
"허용된 형식의 5MB 이하 파일을 선택하세요.",
|
|
60
|
+
"اختر ملفاً مسموحاً لا يتجاوز ٥ ميغابايت."
|
|
61
|
+
),
|
|
62
|
+
note: L("Notes", "메모", "ملاحظات"),
|
|
63
|
+
message: L("Message", "메시지", "رسالة"),
|
|
64
|
+
send: L("Send in preview", "미리보기에서 보내기", "إرسال في المعاينة"),
|
|
65
|
+
total: L("Total", "합계", "المجموع"),
|
|
66
|
+
available: L("Available", "사용 가능", "المتاح"),
|
|
67
|
+
remaining: L("Remaining", "남은 수량", "المتبقي"),
|
|
68
|
+
play: L("Play preview", "재생 체험", "تشغيل المعاينة"),
|
|
69
|
+
pause: L("Pause", "일시 정지", "إيقاف مؤقت"),
|
|
70
|
+
ended: L("Ended", "종료", "انتهى"),
|
|
71
|
+
previewMedia: L(
|
|
72
|
+
"Media placeholder — connect your own media source.",
|
|
73
|
+
"미디어 예시 영역 — 실제 미디어는 별도로 연결하세요.",
|
|
74
|
+
"منطقة معاينة — اربط مصدر الوسائط الخاص بك."
|
|
75
|
+
),
|
|
76
|
+
};
|