@@ -74,6 +74,134 @@ export default defineType({
7474 title : 'Duration Estimate' ,
7575 type : 'number' ,
7676 } ) ,
77+ defineField ( {
78+ name : 'sceneType' ,
79+ title : 'Scene Type' ,
80+ type : 'string' ,
81+ options : {
82+ list : [
83+ { title : 'Narration' , value : 'narration' } ,
84+ { title : 'Code' , value : 'code' } ,
85+ { title : 'List' , value : 'list' } ,
86+ { title : 'Comparison' , value : 'comparison' } ,
87+ { title : 'Mockup' , value : 'mockup' } ,
88+ ] ,
89+ } ,
90+ initialValue : 'narration' ,
91+ } ) ,
92+ defineField ( {
93+ name : 'code' ,
94+ title : 'Code' ,
95+ type : 'object' ,
96+ hidden : ( { parent} ) => parent ?. sceneType !== 'code' ,
97+ fields : [
98+ defineField ( {
99+ name : 'snippet' ,
100+ title : 'Code Snippet' ,
101+ type : 'text' ,
102+ } ) ,
103+ defineField ( {
104+ name : 'language' ,
105+ title : 'Language' ,
106+ type : 'string' ,
107+ options : {
108+ list : [
109+ { title : 'TypeScript' , value : 'typescript' } ,
110+ { title : 'JavaScript' , value : 'javascript' } ,
111+ { title : 'JSX' , value : 'jsx' } ,
112+ { title : 'TSX' , value : 'tsx' } ,
113+ { title : 'CSS' , value : 'css' } ,
114+ { title : 'HTML' , value : 'html' } ,
115+ { title : 'JSON' , value : 'json' } ,
116+ { title : 'Bash' , value : 'bash' } ,
117+ ] ,
118+ } ,
119+ } ) ,
120+ defineField ( {
121+ name : 'highlightLines' ,
122+ title : 'Highlight Lines' ,
123+ type : 'array' ,
124+ of : [ { type : 'number' } ] ,
125+ } ) ,
126+ ] ,
127+ } ) ,
128+ defineField ( {
129+ name : 'list' ,
130+ title : 'List' ,
131+ type : 'object' ,
132+ hidden : ( { parent} ) => parent ?. sceneType !== 'list' ,
133+ fields : [
134+ defineField ( {
135+ name : 'items' ,
136+ title : 'Items' ,
137+ type : 'array' ,
138+ of : [ { type : 'string' } ] ,
139+ validation : ( Rule ) => Rule . min ( 1 ) ,
140+ } ) ,
141+ defineField ( {
142+ name : 'icon' ,
143+ title : 'Icon' ,
144+ type : 'string' ,
145+ description : 'Optional emoji icon, e.g. 🚀' ,
146+ } ) ,
147+ ] ,
148+ } ) ,
149+ defineField ( {
150+ name : 'comparison' ,
151+ title : 'Comparison' ,
152+ type : 'object' ,
153+ hidden : ( { parent} ) => parent ?. sceneType !== 'comparison' ,
154+ fields : [
155+ defineField ( {
156+ name : 'leftLabel' ,
157+ title : 'Left Label' ,
158+ type : 'string' ,
159+ } ) ,
160+ defineField ( {
161+ name : 'rightLabel' ,
162+ title : 'Right Label' ,
163+ type : 'string' ,
164+ } ) ,
165+ defineField ( {
166+ name : 'rows' ,
167+ title : 'Rows' ,
168+ type : 'array' ,
169+ of : [ {
170+ type : 'object' ,
171+ fields : [
172+ defineField ( { name : 'left' , title : 'Left' , type : 'string' } ) ,
173+ defineField ( { name : 'right' , title : 'Right' , type : 'string' } ) ,
174+ ] ,
175+ } ] ,
176+ } ) ,
177+ ] ,
178+ } ) ,
179+ defineField ( {
180+ name : 'mockup' ,
181+ title : 'Mockup' ,
182+ type : 'object' ,
183+ hidden : ( { parent} ) => parent ?. sceneType !== 'mockup' ,
184+ fields : [
185+ defineField ( {
186+ name : 'deviceType' ,
187+ title : 'Device Type' ,
188+ type : 'string' ,
189+ options : {
190+ list : [
191+ { title : 'Browser' , value : 'browser' } ,
192+ { title : 'Phone' , value : 'phone' } ,
193+ { title : 'Terminal' , value : 'terminal' } ,
194+ ] ,
195+ } ,
196+ } ) ,
197+ defineField ( {
198+ name : 'screenContent' ,
199+ title : 'Screen Content' ,
200+ type : 'text' ,
201+ description : 'Description of what appears on screen' ,
202+ } ) ,
203+ ] ,
204+ } ) ,
77205 ] ,
78206 } ,
79207 ] ,
0 commit comments