@pixerate/schemas 1.3.0 → 1.5.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.
package/dist/index.js CHANGED
@@ -177,20 +177,193 @@ var CodeGenerationSchema = z.object({
177
177
  prompt: z.string(),
178
178
  language: z.string()
179
179
  });
180
- var ComponentPropDefinitionSchema = z.object({
180
+ var PlatformLanguageSchema = z.enum(["svelte", "react", "webcomponent"]);
181
+ var ThemeSupportSchema = z.enum(["default", "light-and-dark"]);
182
+ var ComponentPropDocSchema = z.object({
181
183
  name: z.string(),
182
184
  type: z.string(),
183
185
  default: z.string().optional(),
184
- description: z.string().optional()
186
+ description: z.string()
187
+ });
188
+ var ComponentPropDefinitionSchema = ComponentPropDocSchema;
189
+ var ComponentDocsSchema = z.object({
190
+ usage: z.string().describe("Usage instructions and import examples"),
191
+ props: z.array(ComponentPropDocSchema).describe("List of prop definitions and types"),
192
+ notes: z.string().optional().describe("Additional usage or architectural notes")
193
+ });
194
+ var PreviewHarnessSchema = z.object({
195
+ driverCode: z.string().describe(
196
+ "Complete, runnable preview driver code harness demonstrating usage of the component with snippets/children or mock props"
197
+ ),
198
+ mockProps: z.record(z.any()).describe("JSON map of realistic mock prop values passed to the component"),
199
+ wrapperClass: z.string().optional().describe("Tailwind CSS class string for wrapping the preview container")
200
+ });
201
+ var GenerateHarnessOptionsSchema = z.object({
202
+ code: z.string(),
203
+ language: PlatformLanguageSchema,
204
+ componentName: z.string(),
205
+ docsProps: z.array(ComponentPropDocSchema).optional()
185
206
  });
186
207
  var ComponentSynthesisSchema = z.object({
187
- svelte5: z.string().describe("Synthesized Svelte 5 component implementation using runes"),
188
- reactTsx: z.string().describe("Synthesized React 19 TSX component implementation"),
189
- webComponent: z.string().describe("Synthesized WebComponent custom element implementation"),
190
- usageDocs: z.string().describe("Markdown documentation detailing props and usage patterns"),
191
- propsSummary: z.array(ComponentPropDefinitionSchema).describe("List of prop definitions and types"),
192
- supportedThemes: z.enum(["default", "light-and-dark"]).describe("Color theme support classification"),
193
- previewHtml: z.string().optional().describe("Self-contained interactive preview HTML harness")
208
+ title: z.string().describe("Title of the synthesized component"),
209
+ description: z.string().describe("Detailed description of the component"),
210
+ tags: z.array(z.string()).describe("Keywords and categorization tags"),
211
+ platforms: z.object({
212
+ svelte: z.string().describe("Self-contained Svelte 5 component with runes ($props, $state, onclick, snippets, etc.)"),
213
+ react: z.string().describe("Self-contained React 19 TSX component with all subcomponents defined and exported"),
214
+ webcomponent: z.string().describe("Self-contained WebComponent custom element extending HTMLElement")
215
+ }),
216
+ harnesses: z.object({
217
+ svelte: PreviewHarnessSchema,
218
+ react: PreviewHarnessSchema,
219
+ webcomponent: PreviewHarnessSchema
220
+ }).optional(),
221
+ docs: ComponentDocsSchema
222
+ });
223
+ var ComponentTransformationResultSchema = z.object({
224
+ title: z.string(),
225
+ description: z.string(),
226
+ tags: z.array(z.string()),
227
+ platforms: z.record(PlatformLanguageSchema, z.string()),
228
+ harnesses: z.record(PlatformLanguageSchema, PreviewHarnessSchema),
229
+ docs: ComponentDocsSchema,
230
+ detectedLanguage: PlatformLanguageSchema,
231
+ themeSupport: ThemeSupportSchema
232
+ });
233
+ var ComponentPackageSchema = z.object({
234
+ language: PlatformLanguageSchema,
235
+ code: z.string().describe("Formatted code bundle with trimmed leading whitespace"),
236
+ docs: ComponentDocsSchema,
237
+ screenshot: z.string().describe("Data URI or URL of actual rendered component"),
238
+ themeSupport: ThemeSupportSchema,
239
+ tags: z.array(z.string()),
240
+ previewHarness: PreviewHarnessSchema.optional()
241
+ });
242
+ var UIComponentTypeSchema = z.object({
243
+ id: z.string().describe("Slug, e.g., 'button'"),
244
+ name: z.string().describe("e.g. 'Button'"),
245
+ description: z.string().describe("Official description e.g. from Shadcn documentation"),
246
+ tags: z.array(z.string()).describe("Freeform tags e.g. ['form', 'action']"),
247
+ createdAt: z.string().describe("ISO timestamp"),
248
+ updatedAt: z.string().describe("ISO timestamp")
249
+ });
250
+ var ComponentVariantSchema = z.object({
251
+ id: z.string().describe("Slug, e.g., 'glass-card' or 'glassmorphism'"),
252
+ componentTypeId: z.string().describe("References UIComponentType.id"),
253
+ name: z.string().describe("e.g. 'Glass Action Button'"),
254
+ aestheticId: z.string().describe("Style aesthetic, e.g. 'glassmorphism', 'neubrutalism', 'minimalist', 'modern', 'shadcn'"),
255
+ recommendedThemeId: z.string().optional().describe("Optional recommended theme ID (e.g., 'shadcn-zinc', 'tokyo-night')"),
256
+ description: z.string().optional().describe("Style & business logic description"),
257
+ imageUrl: z.string().optional().describe("Optional image URL"),
258
+ image: z.string().optional(),
259
+ screenshot: z.string().optional(),
260
+ createdAt: z.string().describe("ISO timestamp"),
261
+ updatedAt: z.string().describe("ISO timestamp")
262
+ });
263
+ var AestheticSchema = ComponentVariantSchema;
264
+ var ComponentVersionSchema = z.object({
265
+ id: z.string().describe("Unique version ID e.g. 'button-glass-action-button-v1.0.0'"),
266
+ componentTypeId: z.string().describe("References UIComponentType.id"),
267
+ variantId: z.string().describe("References ComponentVariant.id"),
268
+ aestheticId: z.string().describe("References Aesthetic style e.g. 'glassmorphism'"),
269
+ version: z.string().describe("Semver e.g. '1.0.0'"),
270
+ changelogNote: z.string(),
271
+ createdBy: z.string(),
272
+ createdAt: z.string().describe("ISO timestamp"),
273
+ packages: z.record(PlatformLanguageSchema, ComponentPackageSchema)
274
+ });
275
+ var ActivityActionSchema = z.enum([
276
+ "CREATED",
277
+ "UPDATED",
278
+ "REVERTED",
279
+ "PACKAGE_GENERATED",
280
+ "DELETED"
281
+ ]);
282
+ var ActivityLogSchema = z.object({
283
+ id: z.string(),
284
+ componentTypeId: z.string(),
285
+ componentTypeName: z.string(),
286
+ variantId: z.string().optional(),
287
+ aestheticId: z.string(),
288
+ action: ActivityActionSchema,
289
+ version: z.string(),
290
+ details: z.string(),
291
+ timestamp: z.string()
292
+ });
293
+ var IngestionInputSchema = z.object({
294
+ codeBundle: z.string().describe("Raw code bundle provided"),
295
+ css: z.string().optional().describe("Optional raw CSS or CSS bundle to extract and inline"),
296
+ componentTypeId: z.string().describe("Slug or Name of UI Component Type (e.g., 'button')"),
297
+ variantName: z.string().describe("Mandatory Variant Name text input (e.g., 'Glass Action Button')"),
298
+ variantId: z.string().optional().describe("Optional custom slug or ID for variant"),
299
+ aestheticId: z.string().optional().describe("Dropdown value for aesthetic style (e.g., 'glassmorphism', 'neubrutalism', 'minimalist', 'modern', 'shadcn')"),
300
+ recommendedThemeId: z.string().optional().describe("Optional recommended theme ID"),
301
+ componentTypeName: z.string().optional().describe("Optional display name if creating new component type"),
302
+ componentTypeDescription: z.string().optional().describe("Optional description if creating new component type"),
303
+ variantDescription: z.string().optional().describe("Optional description if creating new variant"),
304
+ aestheticName: z.string().optional().describe("Optional display name for aesthetic"),
305
+ aestheticDescription: z.string().optional().describe("Optional description if creating new aesthetic"),
306
+ sourcePlatform: PlatformLanguageSchema.optional().describe("Optional source platform - detected automatically if omitted"),
307
+ changelogNote: z.string().optional(),
308
+ tags: z.array(z.string()).optional()
309
+ });
310
+ var ThemeColorsSchema = z.object({
311
+ primary: z.string(),
312
+ primaryForeground: z.string().optional(),
313
+ secondary: z.string().optional(),
314
+ secondaryForeground: z.string().optional(),
315
+ accent: z.string().optional(),
316
+ accentForeground: z.string().optional(),
317
+ background: z.string(),
318
+ foreground: z.string(),
319
+ surface: z.string().optional(),
320
+ surfaceForeground: z.string().optional(),
321
+ muted: z.string().optional(),
322
+ mutedForeground: z.string().optional(),
323
+ destructive: z.string().optional(),
324
+ destructiveForeground: z.string().optional(),
325
+ border: z.string().optional(),
326
+ ring: z.string().optional(),
327
+ customProperties: z.record(z.string()).optional()
328
+ });
329
+ var ThemeTypographyTokensSchema = z.object({
330
+ fontSans: z.string().optional(),
331
+ fontMono: z.string().optional(),
332
+ fontHeading: z.string().optional(),
333
+ fontImports: z.array(z.string()).optional(),
334
+ fontCss: z.string().optional(),
335
+ fontSize: z.record(z.string()).optional(),
336
+ fontWeight: z.record(z.string()).optional()
337
+ });
338
+ var ThemeTokensSchema = z.object({
339
+ colors: z.object({
340
+ light: ThemeColorsSchema,
341
+ dark: ThemeColorsSchema.partial().optional()
342
+ }),
343
+ typography: ThemeTypographyTokensSchema.optional(),
344
+ radii: z.record(z.string().optional()).optional(),
345
+ spacing: z.record(z.string()).optional(),
346
+ paddings: z.record(z.string()).optional(),
347
+ shadows: z.record(z.string()).optional()
348
+ });
349
+ var ThemeSchema = z.object({
350
+ id: z.string().describe("e.g. 'shadcn-zinc', 'tokyo-night', 'glassmorphism-cyber'"),
351
+ name: z.string().describe("e.g. 'Shadcn Zinc Modern'"),
352
+ description: z.string().optional(),
353
+ tokens: ThemeTokensSchema,
354
+ supportsDarkMode: z.boolean().optional(),
355
+ isSystem: z.boolean().optional(),
356
+ createdAt: z.string().describe("ISO timestamp"),
357
+ updatedAt: z.string().describe("ISO timestamp")
358
+ });
359
+ var ThemeIngestionInputSchema = z.object({
360
+ id: z.string().optional(),
361
+ name: z.string(),
362
+ description: z.string().optional(),
363
+ tokens: ThemeTokensSchema.optional(),
364
+ rawCss: z.string().optional(),
365
+ supportsDarkMode: z.boolean().optional(),
366
+ isSystem: z.boolean().optional()
194
367
  });
195
368
  var JsonGenerationSchema = z.object({
196
369
  prompt: z.string(),
@@ -476,7 +649,268 @@ var FormSubmissionPayloadSchema = z.object({
476
649
  submittedAt: z.string().optional(),
477
650
  score: SubmissionScoreSchema.optional()
478
651
  });
652
+ var formJsonCondition = {
653
+ type: "object",
654
+ properties: {
655
+ field: { type: "string" },
656
+ fieldId: { type: "string" },
657
+ operator: {
658
+ enum: [
659
+ "equals",
660
+ "notEquals",
661
+ "not_equals",
662
+ "includes",
663
+ "contains",
664
+ "greaterThan",
665
+ "greater_than",
666
+ "lessThan",
667
+ "less_than",
668
+ "exists"
669
+ ]
670
+ },
671
+ value: { type: ["string", "number", "boolean"] }
672
+ },
673
+ required: ["operator"]
674
+ };
675
+ var formJsonControl = {
676
+ type: "object",
677
+ properties: {
678
+ id: { type: "string" },
679
+ type: {
680
+ enum: [
681
+ "text",
682
+ "textarea",
683
+ "number",
684
+ "select",
685
+ "multiselect",
686
+ "radio",
687
+ "checkbox",
688
+ "date",
689
+ "file",
690
+ "company",
691
+ "user",
692
+ "slider",
693
+ "computed",
694
+ "repeater"
695
+ ]
696
+ },
697
+ label: { type: "string" },
698
+ description: { type: "string" },
699
+ helperText: { type: "string" },
700
+ placeholder: { type: "string" },
701
+ required: { type: "boolean" },
702
+ defaultValue: {},
703
+ options: {
704
+ type: "array",
705
+ items: {
706
+ type: "object",
707
+ properties: { label: { type: "string" }, value: { type: "string" } },
708
+ required: ["label", "value"]
709
+ }
710
+ },
711
+ dataSource: { enum: ["companies", "users"] },
712
+ validation: {
713
+ type: "object",
714
+ properties: {
715
+ min: { type: "number" },
716
+ max: { type: "number" },
717
+ minLength: { type: "number" },
718
+ maxLength: { type: "number" },
719
+ pattern: { type: "string" },
720
+ message: { type: "string" },
721
+ unit: { type: "string" }
722
+ }
723
+ },
724
+ pattern: { type: "string" },
725
+ min: { type: "number" },
726
+ max: { type: "number" },
727
+ step: { type: "number" },
728
+ minItems: { type: "number" },
729
+ maxItems: { type: "number" },
730
+ formula: { type: "string" },
731
+ computed: { type: "object", properties: { formula: { type: "string" } } },
732
+ visibleWhen: formJsonCondition,
733
+ condition: formJsonCondition,
734
+ itemControls: { type: "array", items: { $ref: "#/$defs/control" } },
735
+ controls: { type: "array", items: { $ref: "#/$defs/control" } }
736
+ },
737
+ required: ["id", "type", "label"]
738
+ };
739
+ var FORM_SCHEMA_JSON_SCHEMA = {
740
+ $schema: "https://json-schema.org/draft/2020-12/schema",
741
+ $id: "https://workspace.local/schemas/generative-forms/form-schema-v1.json",
742
+ type: "object",
743
+ $defs: { control: formJsonControl },
744
+ properties: {
745
+ id: { type: "string" },
746
+ title: { type: "string" },
747
+ description: { type: "string" },
748
+ version: { type: ["string", "number"] },
749
+ stages: {
750
+ type: "array",
751
+ items: {
752
+ type: "object",
753
+ properties: {
754
+ id: { type: "string" },
755
+ title: { type: "string" },
756
+ description: { type: "string" },
757
+ gate: { type: "string" },
758
+ sections: {
759
+ type: "array",
760
+ items: {
761
+ type: "object",
762
+ properties: {
763
+ id: { type: "string" },
764
+ title: { type: "string" },
765
+ description: { type: "string" },
766
+ controls: { type: "array", items: { $ref: "#/$defs/control" } },
767
+ visibleWhen: formJsonCondition,
768
+ condition: formJsonCondition
769
+ },
770
+ required: ["id", "title", "controls"]
771
+ }
772
+ }
773
+ },
774
+ required: ["id", "title", "sections"]
775
+ }
776
+ },
777
+ decisionGates: {
778
+ type: "array",
779
+ items: {
780
+ type: "object",
781
+ properties: {
782
+ id: { type: "string" },
783
+ title: { type: "string" },
784
+ description: { type: "string" },
785
+ stageId: { type: "string" },
786
+ kind: { enum: ["approval", "review", "decision"] },
787
+ trigger: { type: "string" },
788
+ requiredAction: { type: "string" },
789
+ consequence: { type: "string" },
790
+ condition: { anyOf: [formJsonCondition, { type: "string" }] },
791
+ blocking: { type: "boolean" },
792
+ reviewerRole: { type: "string" }
793
+ },
794
+ required: ["id", "title", "stageId", "blocking"]
795
+ }
796
+ },
797
+ validators: {
798
+ type: "array",
799
+ items: {
800
+ type: "object",
801
+ properties: {
802
+ id: { type: "string" },
803
+ description: { type: "string" },
804
+ fields: { type: "array", items: { type: "string" } },
805
+ severity: { type: "string" },
806
+ type: { type: "string" },
807
+ config: {}
808
+ },
809
+ required: ["id"]
810
+ }
811
+ },
812
+ handoffActions: {
813
+ type: "array",
814
+ items: {
815
+ type: "object",
816
+ properties: {
817
+ id: { type: "string" },
818
+ label: { type: "string" },
819
+ destination: { type: "string" },
820
+ condition: { anyOf: [formJsonCondition, { type: "string" }] },
821
+ payloadFields: { type: "array", items: { type: "string" } },
822
+ type: { type: "string" },
823
+ config: {}
824
+ }
825
+ }
826
+ },
827
+ review: {
828
+ type: "object",
829
+ properties: {
830
+ humanReviewRequired: { type: "boolean" },
831
+ reviewAreas: { type: "array", items: { type: "string" } }
832
+ },
833
+ required: ["humanReviewRequired", "reviewAreas"]
834
+ },
835
+ reviewMetadata: {
836
+ type: "object",
837
+ properties: {
838
+ approvers: { type: "array", items: { type: "string" } },
839
+ requirements: { type: "array", items: { type: "string" } }
840
+ },
841
+ required: ["approvers", "requirements"]
842
+ },
843
+ scoring: {
844
+ type: "object",
845
+ properties: {
846
+ description: { type: "string" },
847
+ dimensions: {
848
+ type: "array",
849
+ minItems: 1,
850
+ items: {
851
+ type: "object",
852
+ properties: {
853
+ id: { type: "string" },
854
+ label: { type: "string" },
855
+ description: { type: "string" },
856
+ weight: { type: "number" },
857
+ rules: {
858
+ type: "array",
859
+ minItems: 1,
860
+ items: {
861
+ type: "object",
862
+ properties: {
863
+ field: { type: "string" },
864
+ optionPoints: {
865
+ type: "object",
866
+ additionalProperties: { type: "number" }
867
+ },
868
+ ranges: {
869
+ type: "array",
870
+ items: {
871
+ type: "object",
872
+ properties: {
873
+ min: { type: "number" },
874
+ max: { type: "number" },
875
+ points: { type: "number" }
876
+ },
877
+ required: ["points"]
878
+ }
879
+ },
880
+ multiplier: { type: "number" },
881
+ truePoints: { type: "number" },
882
+ falsePoints: { type: "number" }
883
+ },
884
+ required: ["field"]
885
+ }
886
+ }
887
+ },
888
+ required: ["id", "label", "rules"]
889
+ }
890
+ },
891
+ bands: {
892
+ type: "array",
893
+ items: {
894
+ type: "object",
895
+ properties: {
896
+ id: { type: "string" },
897
+ label: { type: "string" },
898
+ min: { type: "number" },
899
+ max: { type: "number" }
900
+ },
901
+ required: ["id", "label", "min"]
902
+ }
903
+ }
904
+ },
905
+ required: ["dimensions"]
906
+ }
907
+ },
908
+ required: ["version", "stages"]
909
+ };
479
910
  export {
911
+ ActivityActionSchema,
912
+ ActivityLogSchema,
913
+ AestheticSchema,
480
914
  AgentConfigSchema,
481
915
  AgentDocumentAttachmentSchema,
482
916
  AgentEnvironmentSchema,
@@ -489,8 +923,14 @@ export {
489
923
  AgentToolTypeSchema,
490
924
  AspectRatioSchema,
491
925
  CodeGenerationSchema,
926
+ ComponentDocsSchema,
927
+ ComponentPackageSchema,
492
928
  ComponentPropDefinitionSchema,
929
+ ComponentPropDocSchema,
493
930
  ComponentSynthesisSchema,
931
+ ComponentTransformationResultSchema,
932
+ ComponentVariantSchema,
933
+ ComponentVersionSchema,
494
934
  ConditionOperatorSchema,
495
935
  ConditionSchema,
496
936
  ControlValidationSchema,
@@ -498,6 +938,7 @@ export {
498
938
  DecisionGateSchema,
499
939
  DimensionScoreSchema,
500
940
  DropShadowSchema,
941
+ FORM_SCHEMA_JSON_SCHEMA,
501
942
  FidelitySchema,
502
943
  FormControlSchema,
503
944
  FormControlTypeSchema,
@@ -508,12 +949,16 @@ export {
508
949
  FormStageSchema,
509
950
  FormSubmissionPayloadSchema,
510
951
  FormValidatorSchema,
952
+ GenerateHarnessOptionsSchema,
511
953
  ImageCompositingSchema,
512
954
  ImageGenerationSchema,
513
955
  ImageTextOverlaySchema,
514
956
  ImageTransformationSchema,
515
957
  ImageWatermarkSchema,
958
+ IngestionInputSchema,
516
959
  JsonGenerationSchema,
960
+ PlatformLanguageSchema,
961
+ PreviewHarnessSchema,
517
962
  QueueJobSchema,
518
963
  QueueJobStatusSchema,
519
964
  QueueJobTypeSchema,
@@ -531,6 +976,13 @@ export {
531
976
  TechnicalFormSchema,
532
977
  TextAlignmentSchema,
533
978
  TextOverlayPositionSchema,
979
+ ThemeColorsSchema,
980
+ ThemeIngestionInputSchema,
981
+ ThemeSchema,
982
+ ThemeSupportSchema,
983
+ ThemeTokensSchema,
984
+ ThemeTypographyTokensSchema,
985
+ UIComponentTypeSchema,
534
986
  VideoAnalysisCategorySchema,
535
987
  VideoAnalysisSchema,
536
988
  VideoAspectRatioSchema,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pixerate/schemas",
3
- "version": "1.3.0",
3
+ "version": "1.5.0",
4
4
  "type": "module",
5
5
  "main": "./dist/index.cjs",
6
6
  "module": "./dist/index.js",