@antlur/backstage 1.1.0 → 1.2.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 (69) hide show
  1. package/dist/cjs/studio/define-block.js +6 -0
  2. package/dist/cjs/studio/define-field.js +6 -0
  3. package/dist/cjs/studio/define-schema.js +6 -0
  4. package/dist/cjs/studio/index.js +20 -0
  5. package/dist/cjs/studio/types/block.js +2 -0
  6. package/dist/cjs/studio/types/field-values.js +2 -0
  7. package/dist/cjs/studio/types/field.js +2 -0
  8. package/dist/cjs/studio/types/index.js +19 -0
  9. package/dist/cjs/types/index.js +1 -0
  10. package/dist/esm/config.d.ts +2 -0
  11. package/dist/esm/config.d.ts.map +1 -1
  12. package/dist/esm/studio/define-block.d.ts +11 -0
  13. package/dist/esm/studio/define-block.d.ts.map +1 -0
  14. package/dist/esm/studio/define-block.js +3 -0
  15. package/dist/esm/studio/define-field.d.ts +3 -0
  16. package/dist/esm/studio/define-field.d.ts.map +1 -0
  17. package/dist/esm/studio/define-field.js +3 -0
  18. package/dist/esm/studio/define-schema.d.ts +3 -0
  19. package/dist/esm/studio/define-schema.d.ts.map +1 -0
  20. package/dist/esm/studio/define-schema.js +3 -0
  21. package/dist/esm/studio/index.d.ts +5 -0
  22. package/dist/esm/studio/index.d.ts.map +1 -0
  23. package/dist/esm/studio/index.js +4 -0
  24. package/dist/esm/studio/types/block.d.ts +25 -0
  25. package/dist/esm/studio/types/block.d.ts.map +1 -0
  26. package/dist/esm/studio/types/block.js +1 -0
  27. package/dist/esm/studio/types/field-values.d.ts +8 -0
  28. package/dist/esm/studio/types/field-values.d.ts.map +1 -0
  29. package/dist/esm/studio/types/field-values.js +1 -0
  30. package/dist/esm/studio/types/field.d.ts +14 -0
  31. package/dist/esm/studio/types/field.d.ts.map +1 -0
  32. package/dist/esm/studio/types/field.js +1 -0
  33. package/dist/esm/studio/types/index.d.ts +4 -0
  34. package/dist/esm/studio/types/index.d.ts.map +1 -0
  35. package/dist/esm/studio/types/index.js +3 -0
  36. package/dist/esm/types/index.d.ts +1 -0
  37. package/dist/esm/types/index.d.ts.map +1 -1
  38. package/dist/esm/types/index.js +1 -0
  39. package/dist/types/config.d.ts +2 -0
  40. package/dist/types/config.d.ts.map +1 -1
  41. package/dist/types/studio/define-block.d.ts +11 -0
  42. package/dist/types/studio/define-block.d.ts.map +1 -0
  43. package/dist/types/studio/define-field.d.ts +3 -0
  44. package/dist/types/studio/define-field.d.ts.map +1 -0
  45. package/dist/types/studio/define-schema.d.ts +3 -0
  46. package/dist/types/studio/define-schema.d.ts.map +1 -0
  47. package/dist/types/studio/index.d.ts +5 -0
  48. package/dist/types/studio/index.d.ts.map +1 -0
  49. package/dist/types/studio/types/block.d.ts +25 -0
  50. package/dist/types/studio/types/block.d.ts.map +1 -0
  51. package/dist/types/studio/types/field-values.d.ts +8 -0
  52. package/dist/types/studio/types/field-values.d.ts.map +1 -0
  53. package/dist/types/studio/types/field.d.ts +14 -0
  54. package/dist/types/studio/types/field.d.ts.map +1 -0
  55. package/dist/types/studio/types/index.d.ts +4 -0
  56. package/dist/types/studio/types/index.d.ts.map +1 -0
  57. package/dist/types/types/index.d.ts +1 -0
  58. package/dist/types/types/index.d.ts.map +1 -1
  59. package/package.json +6 -1
  60. package/src/config.ts +2 -0
  61. package/src/studio/define-block.ts +14 -0
  62. package/src/studio/define-field.ts +5 -0
  63. package/src/studio/define-schema.ts +5 -0
  64. package/src/studio/index.ts +5 -0
  65. package/src/studio/types/block.ts +29 -0
  66. package/src/studio/types/field-values.ts +7 -0
  67. package/src/studio/types/field.ts +28 -0
  68. package/src/studio/types/index.ts +4 -0
  69. package/src/types/index.ts +2 -0
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.defineBlock = defineBlock;
4
+ function defineBlock(options) {
5
+ return options;
6
+ }
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.defineField = defineField;
4
+ function defineField(field) {
5
+ return field;
6
+ }
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.defineSchema = defineSchema;
4
+ function defineSchema(schema) {
5
+ return schema;
6
+ }
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./types"), exports);
18
+ __exportStar(require("./define-block"), exports);
19
+ __exportStar(require("./define-field"), exports);
20
+ __exportStar(require("./define-schema"), exports);
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./block"), exports);
18
+ __exportStar(require("./field"), exports);
19
+ __exportStar(require("./field-values"), exports);
@@ -27,3 +27,4 @@ __exportStar(require("./navigation"), exports);
27
27
  __exportStar(require("./page"), exports);
28
28
  __exportStar(require("./press"), exports);
29
29
  __exportStar(require("./website"), exports);
30
+ __exportStar(require("../studio/types/index"), exports);
@@ -1,8 +1,10 @@
1
1
  import { AxiosError } from "axios";
2
+ import type { BlockDefinition } from "./studio/types";
2
3
  export interface BackstageUserConfig {
3
4
  accountId?: string | undefined;
4
5
  token?: string | undefined;
5
6
  baseURL?: string;
7
+ blocks?: BlockDefinition<any>[] | undefined;
6
8
  onError?: (error: AxiosError) => void;
7
9
  }
8
10
  export declare function defineConfig(config: BackstageUserConfig): BackstageUserConfig;
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAMnC,MAAM,WAAW,mBAAmB;IAClC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;CACvC;AAQD,wBAAgB,YAAY,CAAC,MAAM,EAAE,mBAAmB,GAAG,mBAAmB,CAM7E;AAED,wBAAgB,eAAe,IAAI,mBAAmB,CAGrD"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AACnC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAMtD,MAAM,WAAW,mBAAmB;IAClC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,eAAe,CAAC,GAAG,CAAC,EAAE,GAAG,SAAS,CAAC;IAC5C,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;CACvC;AAQD,wBAAgB,YAAY,CAAC,MAAM,EAAE,mBAAmB,GAAG,mBAAmB,CAM7E;AAED,wBAAgB,eAAe,IAAI,mBAAmB,CAGrD"}
@@ -0,0 +1,11 @@
1
+ import { BlockSchema, BlockDefinition, BlockComponentProps, Field } from "./types";
2
+ export type FieldValues<TFields extends Record<string, Field<any>>> = {
3
+ [K in keyof TFields]: TFields[K]["value"];
4
+ };
5
+ export declare function defineBlock<TFields extends Record<string, Field<any>>>(options: {
6
+ name: string;
7
+ slug: string;
8
+ schema: BlockSchema<TFields>;
9
+ component: React.ComponentType<BlockComponentProps<FieldValues<TFields>>>;
10
+ }): BlockDefinition<TFields>;
11
+ //# sourceMappingURL=define-block.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"define-block.d.ts","sourceRoot":"","sources":["../../../src/studio/define-block.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,mBAAmB,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEnF,MAAM,MAAM,WAAW,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI;KACnE,CAAC,IAAI,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;CAC1C,CAAC;AAEF,wBAAgB,WAAW,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE;IAC/E,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;IAC7B,SAAS,EAAE,KAAK,CAAC,aAAa,CAAC,mBAAmB,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;CAC3E,GAAG,eAAe,CAAC,OAAO,CAAC,CAE3B"}
@@ -0,0 +1,3 @@
1
+ export function defineBlock(options) {
2
+ return options;
3
+ }
@@ -0,0 +1,3 @@
1
+ import { Field } from "./types";
2
+ export declare function defineField<TValue>(field: Field<TValue>): Field<TValue>;
3
+ //# sourceMappingURL=define-field.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"define-field.d.ts","sourceRoot":"","sources":["../../../src/studio/define-field.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEhC,wBAAgB,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAEvE"}
@@ -0,0 +1,3 @@
1
+ export function defineField(field) {
2
+ return field;
3
+ }
@@ -0,0 +1,3 @@
1
+ import { BlockSchema, Field } from "./types";
2
+ export declare function defineSchema<TFields extends Record<string, Field<any>>>(schema: BlockSchema<TFields>): BlockSchema<TFields>;
3
+ //# sourceMappingURL=define-schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"define-schema.d.ts","sourceRoot":"","sources":["../../../src/studio/define-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAE7C,wBAAgB,YAAY,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,wBAEpG"}
@@ -0,0 +1,3 @@
1
+ export function defineSchema(schema) {
2
+ return schema;
3
+ }
@@ -0,0 +1,5 @@
1
+ export * from "./types";
2
+ export * from "./define-block";
3
+ export * from "./define-field";
4
+ export * from "./define-schema";
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/studio/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AAExB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1,4 @@
1
+ export * from "./types";
2
+ export * from "./define-block";
3
+ export * from "./define-field";
4
+ export * from "./define-schema";
@@ -0,0 +1,25 @@
1
+ import { FieldValues } from "../define-block";
2
+ import { Field } from "./field";
3
+ export interface BlockSchema<TFields extends Record<string, Field<any>>> {
4
+ fields: TFields;
5
+ properties?: BlockProperties;
6
+ }
7
+ export interface BlockDefinition<TFields extends Record<string, Field<any>>> {
8
+ name: string;
9
+ schema: BlockSchema<TFields>;
10
+ component: React.ComponentType<BlockComponentProps<FieldValues<TFields>>>;
11
+ }
12
+ export interface BuilderBlock<TFields extends Record<string, Field<any>>> {
13
+ id: string;
14
+ type: string;
15
+ fields: TFields;
16
+ properties?: BlockProperties;
17
+ }
18
+ export interface BlockProperties {
19
+ customClassName?: string;
20
+ }
21
+ export interface BlockComponentProps<TFieldValues extends Record<string, any>> {
22
+ block: BuilderBlock<TFieldValues>;
23
+ onFieldChange: (blockId: string, fieldName: keyof TFieldValues, value: any) => void;
24
+ }
25
+ //# sourceMappingURL=block.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"block.d.ts","sourceRoot":"","sources":["../../../../src/studio/types/block.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEhC,MAAM,WAAW,WAAW,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IACrE,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,eAAe,CAAC;CAC9B;AAED,MAAM,WAAW,eAAe,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IACzE,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;IAC7B,SAAS,EAAE,KAAK,CAAC,aAAa,CAAC,mBAAmB,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;CAC3E;AAED,MAAM,WAAW,YAAY,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IACtE,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,eAAe,CAAC;CAC9B;AAED,MAAM,WAAW,eAAe;IAC9B,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,mBAAmB,CAAC,YAAY,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAC3E,KAAK,EAAE,YAAY,CAAC,YAAY,CAAC,CAAC;IAClC,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,YAAY,EAAE,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;CACrF"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,8 @@
1
+ export interface Media {
2
+ id: string;
3
+ url: string;
4
+ width: number;
5
+ height: number;
6
+ alt: string;
7
+ }
8
+ //# sourceMappingURL=field-values.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"field-values.d.ts","sourceRoot":"","sources":["../../../../src/studio/types/field-values.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,KAAK;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;CACb"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,14 @@
1
+ export type FieldType = "boolean" | "event_select" | "form_select" | "image" | "image_list" | "list_array" | "media" | "menu_select" | "number" | "press_select" | "repeater" | "rich_text" | "separator" | "spacer" | "text" | "textarea" | "url";
2
+ export interface Field<TValue = any> {
3
+ name: string;
4
+ slug: string;
5
+ type: FieldType;
6
+ value?: TValue;
7
+ placeholder?: string;
8
+ required?: boolean;
9
+ options?: Array<{
10
+ label: string;
11
+ value: any;
12
+ }>;
13
+ }
14
+ //# sourceMappingURL=field.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"field.d.ts","sourceRoot":"","sources":["../../../../src/studio/types/field.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GACjB,SAAS,GACT,cAAc,GACd,aAAa,GACb,OAAO,GACP,YAAY,GACZ,YAAY,GACZ,OAAO,GACP,aAAa,GACb,QAAQ,GACR,cAAc,GACd,UAAU,GACV,WAAW,GACX,WAAW,GACX,QAAQ,GACR,MAAM,GACN,UAAU,GACV,KAAK,CAAC;AAEV,MAAM,WAAW,KAAK,CAAC,MAAM,GAAG,GAAG;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,GAAG,CAAA;KAAE,CAAC,CAAC;CAChD"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,4 @@
1
+ export * from "./block";
2
+ export * from "./field";
3
+ export * from "./field-values";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/studio/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AAExB,cAAc,gBAAgB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from "./block";
2
+ export * from "./field";
3
+ export * from "./field-values";
@@ -11,4 +11,5 @@ export * from "./navigation";
11
11
  export * from "./page";
12
12
  export * from "./press";
13
13
  export * from "./website";
14
+ export * from "../studio/types/index";
14
15
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,OAAO,CAAC;AACtB,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC;AAC7B,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,OAAO,CAAC;AACtB,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC;AAC7B,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAE1B,cAAc,uBAAuB,CAAC"}
@@ -11,3 +11,4 @@ export * from "./navigation";
11
11
  export * from "./page";
12
12
  export * from "./press";
13
13
  export * from "./website";
14
+ export * from "../studio/types/index";
@@ -1,8 +1,10 @@
1
1
  import { AxiosError } from "axios";
2
+ import type { BlockDefinition } from "./studio/types";
2
3
  export interface BackstageUserConfig {
3
4
  accountId?: string | undefined;
4
5
  token?: string | undefined;
5
6
  baseURL?: string;
7
+ blocks?: BlockDefinition<any>[] | undefined;
6
8
  onError?: (error: AxiosError) => void;
7
9
  }
8
10
  export declare function defineConfig(config: BackstageUserConfig): BackstageUserConfig;
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAMnC,MAAM,WAAW,mBAAmB;IAClC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;CACvC;AAQD,wBAAgB,YAAY,CAAC,MAAM,EAAE,mBAAmB,GAAG,mBAAmB,CAM7E;AAED,wBAAgB,eAAe,IAAI,mBAAmB,CAGrD"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AACnC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAMtD,MAAM,WAAW,mBAAmB;IAClC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,eAAe,CAAC,GAAG,CAAC,EAAE,GAAG,SAAS,CAAC;IAC5C,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;CACvC;AAQD,wBAAgB,YAAY,CAAC,MAAM,EAAE,mBAAmB,GAAG,mBAAmB,CAM7E;AAED,wBAAgB,eAAe,IAAI,mBAAmB,CAGrD"}
@@ -0,0 +1,11 @@
1
+ import { BlockSchema, BlockDefinition, BlockComponentProps, Field } from "./types";
2
+ export type FieldValues<TFields extends Record<string, Field<any>>> = {
3
+ [K in keyof TFields]: TFields[K]["value"];
4
+ };
5
+ export declare function defineBlock<TFields extends Record<string, Field<any>>>(options: {
6
+ name: string;
7
+ slug: string;
8
+ schema: BlockSchema<TFields>;
9
+ component: React.ComponentType<BlockComponentProps<FieldValues<TFields>>>;
10
+ }): BlockDefinition<TFields>;
11
+ //# sourceMappingURL=define-block.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"define-block.d.ts","sourceRoot":"","sources":["../../../src/studio/define-block.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,mBAAmB,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEnF,MAAM,MAAM,WAAW,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI;KACnE,CAAC,IAAI,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;CAC1C,CAAC;AAEF,wBAAgB,WAAW,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE;IAC/E,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;IAC7B,SAAS,EAAE,KAAK,CAAC,aAAa,CAAC,mBAAmB,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;CAC3E,GAAG,eAAe,CAAC,OAAO,CAAC,CAE3B"}
@@ -0,0 +1,3 @@
1
+ import { Field } from "./types";
2
+ export declare function defineField<TValue>(field: Field<TValue>): Field<TValue>;
3
+ //# sourceMappingURL=define-field.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"define-field.d.ts","sourceRoot":"","sources":["../../../src/studio/define-field.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEhC,wBAAgB,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAEvE"}
@@ -0,0 +1,3 @@
1
+ import { BlockSchema, Field } from "./types";
2
+ export declare function defineSchema<TFields extends Record<string, Field<any>>>(schema: BlockSchema<TFields>): BlockSchema<TFields>;
3
+ //# sourceMappingURL=define-schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"define-schema.d.ts","sourceRoot":"","sources":["../../../src/studio/define-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAE7C,wBAAgB,YAAY,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,wBAEpG"}
@@ -0,0 +1,5 @@
1
+ export * from "./types";
2
+ export * from "./define-block";
3
+ export * from "./define-field";
4
+ export * from "./define-schema";
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/studio/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AAExB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1,25 @@
1
+ import { FieldValues } from "../define-block";
2
+ import { Field } from "./field";
3
+ export interface BlockSchema<TFields extends Record<string, Field<any>>> {
4
+ fields: TFields;
5
+ properties?: BlockProperties;
6
+ }
7
+ export interface BlockDefinition<TFields extends Record<string, Field<any>>> {
8
+ name: string;
9
+ schema: BlockSchema<TFields>;
10
+ component: React.ComponentType<BlockComponentProps<FieldValues<TFields>>>;
11
+ }
12
+ export interface BuilderBlock<TFields extends Record<string, Field<any>>> {
13
+ id: string;
14
+ type: string;
15
+ fields: TFields;
16
+ properties?: BlockProperties;
17
+ }
18
+ export interface BlockProperties {
19
+ customClassName?: string;
20
+ }
21
+ export interface BlockComponentProps<TFieldValues extends Record<string, any>> {
22
+ block: BuilderBlock<TFieldValues>;
23
+ onFieldChange: (blockId: string, fieldName: keyof TFieldValues, value: any) => void;
24
+ }
25
+ //# sourceMappingURL=block.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"block.d.ts","sourceRoot":"","sources":["../../../../src/studio/types/block.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEhC,MAAM,WAAW,WAAW,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IACrE,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,eAAe,CAAC;CAC9B;AAED,MAAM,WAAW,eAAe,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IACzE,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;IAC7B,SAAS,EAAE,KAAK,CAAC,aAAa,CAAC,mBAAmB,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;CAC3E;AAED,MAAM,WAAW,YAAY,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IACtE,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,eAAe,CAAC;CAC9B;AAED,MAAM,WAAW,eAAe;IAC9B,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,mBAAmB,CAAC,YAAY,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAC3E,KAAK,EAAE,YAAY,CAAC,YAAY,CAAC,CAAC;IAClC,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,YAAY,EAAE,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;CACrF"}
@@ -0,0 +1,8 @@
1
+ export interface Media {
2
+ id: string;
3
+ url: string;
4
+ width: number;
5
+ height: number;
6
+ alt: string;
7
+ }
8
+ //# sourceMappingURL=field-values.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"field-values.d.ts","sourceRoot":"","sources":["../../../../src/studio/types/field-values.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,KAAK;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;CACb"}
@@ -0,0 +1,14 @@
1
+ export type FieldType = "boolean" | "event_select" | "form_select" | "image" | "image_list" | "list_array" | "media" | "menu_select" | "number" | "press_select" | "repeater" | "rich_text" | "separator" | "spacer" | "text" | "textarea" | "url";
2
+ export interface Field<TValue = any> {
3
+ name: string;
4
+ slug: string;
5
+ type: FieldType;
6
+ value?: TValue;
7
+ placeholder?: string;
8
+ required?: boolean;
9
+ options?: Array<{
10
+ label: string;
11
+ value: any;
12
+ }>;
13
+ }
14
+ //# sourceMappingURL=field.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"field.d.ts","sourceRoot":"","sources":["../../../../src/studio/types/field.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GACjB,SAAS,GACT,cAAc,GACd,aAAa,GACb,OAAO,GACP,YAAY,GACZ,YAAY,GACZ,OAAO,GACP,aAAa,GACb,QAAQ,GACR,cAAc,GACd,UAAU,GACV,WAAW,GACX,WAAW,GACX,QAAQ,GACR,MAAM,GACN,UAAU,GACV,KAAK,CAAC;AAEV,MAAM,WAAW,KAAK,CAAC,MAAM,GAAG,GAAG;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,GAAG,CAAA;KAAE,CAAC,CAAC;CAChD"}
@@ -0,0 +1,4 @@
1
+ export * from "./block";
2
+ export * from "./field";
3
+ export * from "./field-values";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/studio/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AAExB,cAAc,gBAAgB,CAAC"}
@@ -11,4 +11,5 @@ export * from "./navigation";
11
11
  export * from "./page";
12
12
  export * from "./press";
13
13
  export * from "./website";
14
+ export * from "../studio/types/index";
14
15
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,OAAO,CAAC;AACtB,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC;AAC7B,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,OAAO,CAAC;AACtB,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC;AAC7B,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAE1B,cAAc,uBAAuB,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@antlur/backstage",
3
3
  "author": "Anthony Holmes",
4
- "version": "1.1.0",
4
+ "version": "1.2.0",
5
5
  "description": "A simple client for Backstage CMS",
6
6
  "main": "./dist/cjs/index.js",
7
7
  "module": "./dist/esm/index.js",
@@ -17,6 +17,11 @@
17
17
  "import": "./dist/esm/types/index.js",
18
18
  "types": "./dist/types/types/*.d.ts"
19
19
  },
20
+ "./studio": {
21
+ "require": "./dist/cjs/studio/index.js",
22
+ "import": "./dist/esm/studio/index.js",
23
+ "types": "./dist/types/studio/*.d.ts"
24
+ },
20
25
  "./*": {
21
26
  "require": "./dist/cjs/*.js",
22
27
  "import": "./dist/esm/*.js",
package/src/config.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import { AxiosError } from "axios";
2
+ import type { BlockDefinition } from "./studio/types";
2
3
 
3
4
  const ROOT = process.cwd();
4
5
  const CONFIG_PATH = process.env.BACKSTAGE_CONFIG_PATH || "./backstage.config";
@@ -8,6 +9,7 @@ export interface BackstageUserConfig {
8
9
  accountId?: string | undefined;
9
10
  token?: string | undefined;
10
11
  baseURL?: string;
12
+ blocks?: BlockDefinition<any>[] | undefined;
11
13
  onError?: (error: AxiosError) => void;
12
14
  }
13
15
 
@@ -0,0 +1,14 @@
1
+ import { BlockSchema, BlockDefinition, BlockComponentProps, Field } from "./types";
2
+
3
+ export type FieldValues<TFields extends Record<string, Field<any>>> = {
4
+ [K in keyof TFields]: TFields[K]["value"];
5
+ };
6
+
7
+ export function defineBlock<TFields extends Record<string, Field<any>>>(options: {
8
+ name: string;
9
+ slug: string;
10
+ schema: BlockSchema<TFields>;
11
+ component: React.ComponentType<BlockComponentProps<FieldValues<TFields>>>; // Correct typing here
12
+ }): BlockDefinition<TFields> {
13
+ return options;
14
+ }
@@ -0,0 +1,5 @@
1
+ import { Field } from "./types";
2
+
3
+ export function defineField<TValue>(field: Field<TValue>): Field<TValue> {
4
+ return field;
5
+ }
@@ -0,0 +1,5 @@
1
+ import { BlockSchema, Field } from "./types";
2
+
3
+ export function defineSchema<TFields extends Record<string, Field<any>>>(schema: BlockSchema<TFields>) {
4
+ return schema;
5
+ }
@@ -0,0 +1,5 @@
1
+ export * from "./types";
2
+
3
+ export * from "./define-block";
4
+ export * from "./define-field";
5
+ export * from "./define-schema";
@@ -0,0 +1,29 @@
1
+ import { FieldValues } from "../define-block";
2
+ import { Field } from "./field";
3
+
4
+ export interface BlockSchema<TFields extends Record<string, Field<any>>> {
5
+ fields: TFields;
6
+ properties?: BlockProperties;
7
+ }
8
+
9
+ export interface BlockDefinition<TFields extends Record<string, Field<any>>> {
10
+ name: string;
11
+ schema: BlockSchema<TFields>;
12
+ component: React.ComponentType<BlockComponentProps<FieldValues<TFields>>>;
13
+ }
14
+
15
+ export interface BuilderBlock<TFields extends Record<string, Field<any>>> {
16
+ id: string;
17
+ type: string;
18
+ fields: TFields;
19
+ properties?: BlockProperties;
20
+ }
21
+
22
+ export interface BlockProperties {
23
+ customClassName?: string;
24
+ }
25
+
26
+ export interface BlockComponentProps<TFieldValues extends Record<string, any>> {
27
+ block: BuilderBlock<TFieldValues>;
28
+ onFieldChange: (blockId: string, fieldName: keyof TFieldValues, value: any) => void;
29
+ }
@@ -0,0 +1,7 @@
1
+ export interface Media {
2
+ id: string;
3
+ url: string;
4
+ width: number;
5
+ height: number;
6
+ alt: string;
7
+ }
@@ -0,0 +1,28 @@
1
+ export type FieldType =
2
+ | "boolean"
3
+ | "event_select"
4
+ | "form_select"
5
+ | "image"
6
+ | "image_list"
7
+ | "list_array"
8
+ | "media"
9
+ | "menu_select"
10
+ | "number"
11
+ | "press_select"
12
+ | "repeater"
13
+ | "rich_text"
14
+ | "separator"
15
+ | "spacer"
16
+ | "text"
17
+ | "textarea"
18
+ | "url";
19
+
20
+ export interface Field<TValue = any> {
21
+ name: string;
22
+ slug: string;
23
+ type: FieldType;
24
+ value?: TValue;
25
+ placeholder?: string;
26
+ required?: boolean;
27
+ options?: Array<{ label: string; value: any }>;
28
+ }
@@ -0,0 +1,4 @@
1
+ export * from "./block";
2
+ export * from "./field";
3
+
4
+ export * from "./field-values";
@@ -11,3 +11,5 @@ export * from "./navigation";
11
11
  export * from "./page";
12
12
  export * from "./press";
13
13
  export * from "./website";
14
+
15
+ export * from "../studio/types/index";