11<script setup lang="ts">
22import { ref } from ' vue' ;
33import Badge from ' ./components/Badge.vue' ;
4- import CodePreview , { type CodeMarker } from ' ./components/CodePreview.vue' ;
54import ComparisonTable , {
65 type ComparisonRow ,
76} from ' ./components/ComparisonTable.vue' ;
@@ -21,49 +20,6 @@ import SiteFooter from './components/SiteFooter.vue';
2120import TitleBadge from ' ./components/TitleBadge.vue' ;
2221import { SELECT_PROGRAM_FORM_URL } from ' ./constants' ;
2322
24- // Import code sample for Dart Executors
25- import validateDataExecutorCode from ' ./code-samples/validate-data-executor.dart?raw' ;
26-
27- // Code markers for the executor sample
28- const executorCodeMarkers: CodeMarker [] = [
29- {
30- line: 7 ,
31- title: ' Typed Input' ,
32- description:
33- ' Define your input structure with full type safety. Implement fromJson for deserialization.' ,
34- },
35- {
36- line: 16 ,
37- title: ' Typed Output' ,
38- description:
39- ' Output is also strongly typed. Implement toJson for serialization to workflow variables.' ,
40- },
41- {
42- line: 29 ,
43- title: ' TypedTaskExecutor' ,
44- description:
45- ' Extend TypedTaskExecutor<TInput, TOutput> for compile-time type safety. The base class handles error wrapping automatically.' ,
46- },
47- {
48- line: 34 ,
49- title: ' TypeDescriptor' ,
50- description:
51- ' Register with a TypeDescriptor for JSON-driven workflows. Defines how to deserialize this executor from workflow definitions.' ,
52- },
53- {
54- line: 55 ,
55- title: ' executeTyped' ,
56- description:
57- ' Implement your business logic here with full access to typed input and ExecutionContext.' ,
58- },
59- {
60- line: 74 ,
61- title: ' Registration' ,
62- description:
63- ' Register your executor with the WorkflowDescriptor to make it available to the workflow engine.' ,
64- },
65- ];
66-
6723// Form dialog state
6824const ctaDialogOpen = ref (false );
6925
@@ -113,11 +69,7 @@ const editorSdkFeatures = [
11369 ' Simulate different input scenarios' ,
11470 ' Validate workflow logic before deployment' ,
11571 ],
116- code: {
117- source: validateDataExecutorCode ,
118- filename: ' validate_data_executor.dart' ,
119- markers: executorCodeMarkers ,
120- },
72+ video: ' /videos/simulation.webm' ,
12173 },
12274 {
12375 tag: ' Monitoring' ,
@@ -336,38 +288,18 @@ const comparisonRows: ComparisonRow[] = [
336288 </SectionHeader >
337289
338290 <div class =" mt-16" >
339- <template v-for =" (feature , index ) in editorSdkFeatures " :key =" index " >
340- <FeatureSection
341- v-if =" feature .code "
342- :tag =" feature .tag "
343- :tag-icon =" feature .tagIcon "
344- :tag-color =" feature .tagColor "
345- :title =" feature .title "
346- :subtitle =" feature .subtitle "
347- :bullets =" feature .bullets "
348- :reverse =" index % 2 === 1 "
349- >
350- <CodePreview
351- :code =" feature .code .source "
352- :filename =" feature .code .filename "
353- lang="dart"
354- :markers =" feature .code .markers "
355- class="executor-code-preview"
356- />
357- </FeatureSection >
358- <FeatureSection
359- v-else
360- :tag =" feature .tag "
361- :tag-icon =" feature .tagIcon "
362- :tag-color =" feature .tagColor "
363- :title =" feature .title "
364- :subtitle =" feature .subtitle "
365- :bullets =" feature .bullets "
366- :video =" feature .video "
367- :placeholder =" feature .placeholder "
368- :reverse =" index % 2 === 1 "
369- />
370- </template >
291+ <FeatureSection
292+ v-for =" (feature , index ) in editorSdkFeatures "
293+ :key =" index "
294+ :tag =" feature .tag "
295+ :tag-icon =" feature .tagIcon "
296+ :tag-color =" feature .tagColor "
297+ :title =" feature .title "
298+ :subtitle =" feature .subtitle "
299+ :bullets =" feature .bullets "
300+ :video =" feature .video "
301+ :reverse =" index % 2 === 1 "
302+ />
371303 </div >
372304 </Section >
373305
@@ -484,33 +416,4 @@ const comparisonRows: ComparisonRow[] = [
484416 background-clip : text ;
485417}
486418
487- /* Code preview styling for executor sample */
488- .executor-code-preview {
489- @apply w-full h-full flex flex-col ;
490- height : 500px ;
491- box-shadow :
492- 0 0 60px -15px rgba (99 , 102 , 241 , 0.4 ),
493- 0 25px 50px -12px rgba (0 , 0 , 0 , 0.25 );
494- }
495-
496- :root .dark .executor-code-preview {
497- box-shadow :
498- 0 0 80px -15px rgba (129 , 140 , 248 , 0.3 ),
499- 0 25px 50px -12px rgba (0 , 0 , 0 , 0.5 );
500- }
501-
502- /* Same approach as TabbedCodePreview */
503- .executor-code-preview .code-body-wrapper {
504- @apply flex- 1 overflow-hidden ;
505- }
506-
507- .executor-code-preview .code-scroll-container {
508- @apply h-full overflow-y-auto overflow-x-auto ;
509- }
510-
511- @media (max-width : 768px ) {
512- .executor-code-preview {
513- height : 400px ;
514- }
515- }
516419 </style >
0 commit comments