@topol.io/editor-vue 0.0.0-beta.1 → 0.0.0-beta.10

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/LICENSE ADDED
@@ -0,0 +1,13 @@
1
+ Copyright 2022 Ecomail s.r.o.
2
+
3
+ Licensed under the Apache License, Version 2.0 (the "License");
4
+ you may not use this file except in compliance with the License.
5
+ You may obtain a copy of the License at
6
+
7
+ http://www.apache.org/licenses/LICENSE-2.0
8
+
9
+ Unless required by applicable law or agreed to in writing, software
10
+ distributed under the License is distributed on an "AS IS" BASIS,
11
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ See the License for the specific language governing permissions and
13
+ limitations under the License.
package/README.md CHANGED
@@ -28,7 +28,6 @@ For more options see the docs for [TopolOptions configuration](https://topol.io/
28
28
  ```js
29
29
  import { TopolEditor } from '@topol.io/editor-vue';
30
30
 
31
-
32
31
  const customOptions = {
33
32
  authorize: {
34
33
  apiKey: "YOUR_API_TOKEN",
@@ -56,25 +55,24 @@ TopolPlugin.save();
56
55
 
57
56
  | Action | Description |
58
57
  | --- | ----------- |
59
- | TopolPlugin.save() | Saves the content of the editor [more info](https://topol.io/docs#plugin-configuration) |
60
- | TopolPlugin.load(template) | Loads the provided template [more info](https://topol.io/docs#save-and-load-options) |
61
- | TopolPlugin.togglePreview() | Toggles editor preview [more info](https://topol.io/docs#preview-mode-on-desktop-and-mobile)|
62
- | TopolPlugin.togglePreviewSize() | Toggles editor preview size |
63
- | TopolPlugin.undo() | Undo change in editor [more info](https://topol.io/docs#redo-and-undo)|
64
- | TopolPlugin.redo() | Redo change in editor [more info](https://topol.io/docs#redo-and-undo)|
65
- | TopolPlugin.setSavedBlocks(savedblock: ISavedBlock[]) | Sets the saved blocks [more info](https://topol.io/docs#saved-blocks) |
66
- | TopolPlugin.createNotification(notification: INotification) | Creates editor's notification [more info](https://topol.io/docs#show-custom-notification-in-editor) |
67
- | TopolPlugin.changeEmailToMobile() | Change email to mobile view [more info](https://topol.io/docs#mobile-first-email-template)|
68
- | TopolPlugin.changeEmailToDesktop() | Change email to desktop view [more info](https://topol.io/docs#mobile-first-email-template)|
69
- | TopolPlugin.toggleBlocksAndStructuresVisibility() | Toggle hidden structures visibility for blocks and structures [more info](https://topol.io/docs#mobile-first-email-template)|
70
- | TopolPlugin.destroy() | Destroys the editor initialization [more info](https://topol.io/docs#working-with-js-frameworks) |
71
-
72
-
58
+ | `TopolPlugin.save()` | Saves the content of the editor [more info](https://topol.io/docs#plugin-configuration) |
59
+ | `TopolPlugin.load(template`) | Loads the provided template [more info](https://topol.io/docs#save-and-load-options) |
60
+ | `TopolPlugin.togglePreview()` | Toggles editor preview [more info](https://topol.io/docs#preview-mode-on-desktop-and-mobile)|
61
+ | `TopolPlugin.togglePreviewSize()` | Toggles editor preview size |
62
+ | `TopolPlugin.undo()` | Undo change in editor [more info](https://topol.io/docs#redo-and-undo)|
63
+ | `TopolPlugin.redo()` | Redo change in editor [more info](https://topol.io/docs#redo-and-undo)|
64
+ | `TopolPlugin.setSavedBlocks(savedblock: ISavedBlock[])` | Sets the saved blocks [more info](https://topol.io/docs#saved-blocks) |
65
+ | `TopolPlugin.createNotification(notification: INotification)` | Creates editor's notification [more info](https://topol.io/docs#show-custom-notification-in-editor) |
66
+ | `TopolPlugin.changeEmailToMobile()` | Change email to mobile view [more info](https://topol.io/docs#mobile-first-email-template)|
67
+ | `TopolPlugin.changeEmailToDesktop()` | Change email to desktop view [more info](https://topol.io/docs#mobile-first-email-template)|
68
+ | `TopolPlugin.toggleBlocksAndStructuresVisibility()` | Toggle hidden structures visibility for blocks and structures [more info](https://topol.io/docs#mobile-first-email-template)|
69
+ | `TopolPlugin.destroy()` | Destroys the editor initialization [more info](https://topol.io/docs#working-with-js-frameworks) |
70
+
71
+ <br>
73
72
  ## Editor Events
74
73
 
75
74
  The callbacks from editor are received as component events.
76
75
 
77
-
78
76
  ```html
79
77
  <TopolEditor :options="customOptions" @onSave="handleOnSave"></TopolEditor>
80
78
  ```
@@ -83,20 +81,21 @@ The callbacks from editor are received as component events.
83
81
 
84
82
  | Event | Description |
85
83
  | --- | ----------- |
86
- | @onSave | Returns object which contains html and json of the template} [more info](https://topol.io/docs#onsave-and-onsaveandclose) |
87
- | @onSaveAndClose | Returns object which contains html and json of the template [more info](https://topol.io/docs#onsave-and-onsaveandclose) |
88
- | @onTestSend | Returns object which contains email, html and json of the template [more info](https://topol.io/docs#on-test-send) |
89
- | @onOpenFileManager | When user clicks file manager open [more info](https://topol.io/docs#custom-file-manager)|
90
- | @onLoaded | When editor is fully loaded |
91
- | @onInit | When editor inits [more info](https://topol.io/docs#custom-file-manager) |
92
- | @onBlockSave | When user saves block in editor, returns object of type ISavedBlock [more info](https://topol.io/docs#saved-blocks) |
93
- | @onBlockRemove | When user removes saved block, returns id of saved block to be removed [more info](https://topol.io/docs#saved-blocks) |
94
- | @onBlockEdit | When user edits saved block, returns id of saved block to be updated [more info](https://topol.io/docs#saved-blocks) |
95
- | @onUndoChange | When user clicks undo button, retunrs number of steps user undone [more info](https://topol.io/docs#redo-and-undo) |
96
- | @unRedoChange | When user clicks redo button, retunrs number of steps user redone [more info](https://topol.io/docs#redo-and-undo) |
97
- | @onPreview | When user switches to preview |
98
- | @onAlert | When alert appears in editor [more info](https://topol.io/docs#show-custom-notification-in-editor)|
99
-
84
+ | `@onSave` | Returns object which contains html and json of the template} [more info](https://topol.io/docs#onsave-and-onsaveandclose) |
85
+ | `@onSaveAndClose` | Returns object which contains html and json of the template [more info](https://topol.io/docs#onsave-and-onsaveandclose) |
86
+ | `@onTestSend` | Returns object which contains email, html and json of the template [more info](https://topol.io/docs#on-test-send) |
87
+ | `@onOpenFileManager` | When user clicks file manager open [more info](https://topol.io/docs#custom-file-manager)|
88
+ | `@onLoaded` | When editor is fully loaded |
89
+ | `@onInit` | When editor inits [more info](https://topol.io/docs#custom-file-manager) |
90
+ | `@onBlockSave` | When user saves block in editor, returns object of type ISavedBlock [more info](https://topol.io/docs#saved-blocks) |
91
+ | `@onBlockRemove` | When user removes saved block, returns id of saved block to be removed [more info](https://topol.io/docs#saved-blocks) |
92
+ | `@onBlockEdit` | When user edits saved block, returns id of saved block to be updated [more info](https://topol.io/docs#saved-blocks) |
93
+ | `@onUndoChange` | When user clicks undo button, retunrs number of steps user undone [more info](https://topol.io/docs#redo-and-undo) |
94
+ | `@unRedoChange` | When user clicks redo button, retunrs number of steps user redone [more info](https://topol.io/docs#redo-and-undo) |
95
+ | `@onPreview` | When user switches to preview |
96
+ | `@onAlert` | When alert appears in editor [more info](https://topol.io/docs#show-custom-notification-in-editor)|
97
+
98
+ <br>
100
99
  ## TypeScript
101
100
 
102
101
  Topol Editor provides full TypeScript integration and exports all necessary types.
@@ -17,12 +17,13 @@ var __spreadValues = (a, b) => {
17
17
  return a;
18
18
  };
19
19
  var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
20
- import { defineComponent, onMounted, openBlock, createElementBlock } from "vue";
20
+ import { defineComponent, onMounted, onBeforeUnmount, openBlock, createElementBlock } from "vue";
21
21
  import TopolPlugin from "@topol.io/editor";
22
22
  export { default as TopolPlugin } from "@topol.io/editor";
23
23
  const _sfc_main = /* @__PURE__ */ defineComponent({
24
24
  props: {
25
- options: null
25
+ options: null,
26
+ dev: { type: Boolean, default: false }
26
27
  },
27
28
  emits: ["onSave", "onSaveAndClose", "onTestSend", "onOpenFileManager", "onLoaded", "onBlockSave", "onBlockRemove", "onBlockEdit", "onInit", "onUndoChange", "onRedoChange", "onPreview", "onAlert"],
28
29
  setup(__props, { emit }) {
@@ -74,7 +75,10 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
74
75
  };
75
76
  onMounted(async () => {
76
77
  const mergedTopolOptinos = mergeOptions();
77
- await TopolPlugin.init(mergedTopolOptinos);
78
+ await TopolPlugin.init(mergedTopolOptinos, { dev: props.dev });
79
+ });
80
+ onBeforeUnmount(() => {
81
+ TopolPlugin.destroy();
78
82
  });
79
83
  return (_ctx, _cache) => {
80
84
  return openBlock(), createElementBlock("div", {
@@ -1 +1 @@
1
- var T=Object.defineProperty,B=Object.defineProperties;var _=Object.getOwnPropertyDescriptors;var s=Object.getOwnPropertySymbols;var C=Object.prototype.hasOwnProperty,y=Object.prototype.propertyIsEnumerable;var p=(e,o,d)=>o in e?T(e,o,{enumerable:!0,configurable:!0,writable:!0,value:d}):e[o]=d,r=(e,o)=>{for(var d in o||(o={}))C.call(o,d)&&p(e,d,o[d]);if(s)for(var d of s(o))y.call(o,d)&&p(e,d,o[d]);return e},f=(e,o)=>B(e,_(o));(function(e,o){typeof exports=="object"&&typeof module!="undefined"?o(exports,require("vue"),require("@topol.io/editor")):typeof define=="function"&&define.amd?define(["exports","vue","@topol.io/editor"],o):(e=typeof globalThis!="undefined"?globalThis:e||self,o(e["topol-editor-vue"]={},e.Vue,e.TopolPlugin))})(this,function(e,o,d){"use strict";function v(l){return l&&typeof l=="object"&&"default"in l?l:{default:l}}var c=v(d);const g=o.defineComponent({props:{options:null},emits:["onSave","onSaveAndClose","onTestSend","onOpenFileManager","onLoaded","onBlockSave","onBlockRemove","onBlockEdit","onInit","onUndoChange","onRedoChange","onPreview","onAlert"],setup(l,{emit:t}){const h=l,u="topol-editor-id",S=()=>{const a={onSave(n,i){t("onSave",{json:n,html:i})},onSaveAndClose(n,i){t("onSaveAndClose",{json:n,html:i})},onTestSend(n,i,k){t("onTestSend",{email:n,json:i,html:k})},onOpenFileManager(){t("onOpenFileManager")},onLoaded(){t("onLoaded")},onBlockSave(n){t("onBlockSave",n)},onBlockRemove(n){t("onBlockRemove",n)},onBlockEdit(n){t("onBlockEdit",n)},onInit(){t("onInit")},onUndoChange(n){t("onUndoChange",n)},onRedoChange(n){t("onRedoChange",n)},onPreview(n){t("onPreview",n)},onAlert(n){t("onAlert",n)}};return f(r({id:"#"+u},h.options),{callbacks:r({},a)})};return o.onMounted(async()=>{const a=S();await c.default.init(a)}),(a,n)=>(o.openBlock(),o.createElementBlock("div",{id:u,style:{position:"absolute",width:"100%",height:"100vh"}}))}});Object.defineProperty(e,"TopolPlugin",{enumerable:!0,get:function(){return c.default}}),e.TopolEditor=g,Object.defineProperty(e,"__esModule",{value:!0}),e[Symbol.toStringTag]="Module"});
1
+ var B=Object.defineProperty,T=Object.defineProperties;var y=Object.getOwnPropertyDescriptors;var p=Object.getOwnPropertySymbols;var _=Object.prototype.hasOwnProperty,C=Object.prototype.propertyIsEnumerable;var f=(e,o,d)=>o in e?B(e,o,{enumerable:!0,configurable:!0,writable:!0,value:d}):e[o]=d,u=(e,o)=>{for(var d in o||(o={}))_.call(o,d)&&f(e,d,o[d]);if(p)for(var d of p(o))C.call(o,d)&&f(e,d,o[d]);return e},v=(e,o)=>T(e,y(o));(function(e,o){typeof exports=="object"&&typeof module!="undefined"?o(exports,require("vue"),require("@topol.io/editor")):typeof define=="function"&&define.amd?define(["exports","vue","@topol.io/editor"],o):(e=typeof globalThis!="undefined"?globalThis:e||self,o(e["topol-editor-vue"]={},e.Vue,e.TopolPlugin))})(this,function(e,o,d){"use strict";function g(l){return l&&typeof l=="object"&&"default"in l?l:{default:l}}var r=g(d);const h=o.defineComponent({props:{options:null,dev:{type:Boolean,default:!1}},emits:["onSave","onSaveAndClose","onTestSend","onOpenFileManager","onLoaded","onBlockSave","onBlockRemove","onBlockEdit","onInit","onUndoChange","onRedoChange","onPreview","onAlert"],setup(l,{emit:t}){const c=l,s="topol-editor-id",S=()=>{const a={onSave(n,i){t("onSave",{json:n,html:i})},onSaveAndClose(n,i){t("onSaveAndClose",{json:n,html:i})},onTestSend(n,i,k){t("onTestSend",{email:n,json:i,html:k})},onOpenFileManager(){t("onOpenFileManager")},onLoaded(){t("onLoaded")},onBlockSave(n){t("onBlockSave",n)},onBlockRemove(n){t("onBlockRemove",n)},onBlockEdit(n){t("onBlockEdit",n)},onInit(){t("onInit")},onUndoChange(n){t("onUndoChange",n)},onRedoChange(n){t("onRedoChange",n)},onPreview(n){t("onPreview",n)},onAlert(n){t("onAlert",n)}};return v(u({id:"#"+s},c.options),{callbacks:u({},a)})};return o.onMounted(async()=>{const a=S();await r.default.init(a,{dev:c.dev})}),o.onBeforeUnmount(()=>{r.default.destroy()}),(a,n)=>(o.openBlock(),o.createElementBlock("div",{id:s,style:{position:"absolute",width:"100%",height:"100vh"}}))}});Object.defineProperty(e,"TopolPlugin",{enumerable:!0,get:function(){return r.default}}),e.TopolEditor=h,Object.defineProperty(e,"__esModule",{value:!0}),e[Symbol.toStringTag]="Module"});
@@ -1,6 +1,6 @@
1
1
  import type IVueTopolOptions from '../types/IVueTopolOptions';
2
- import type INotification from '../types/Notification/INotification';
3
- import type ISavedBlock from '../types/SavedBlock/ISavedBlock';
2
+ import type { INotification } from '@topol.io/editor';
3
+ import type { ISavedBlock } from '@topol.io/editor';
4
4
  export { default as TopolEditor } from './TopolEditor.vue';
5
5
  export { default as TopolPlugin } from '@topol.io/editor';
6
6
  export { IVueTopolOptions as ITopolOptions };
@@ -1,10 +1,4 @@
1
- import { IAPI } from "./API/API";
2
- import ISavedBlock from "./SavedBlock/ISavedBlock";
3
- import IMergeTagGroup from "./MergeTag/IMergeTagGroup";
4
- import IContentBlockOptions from "./ContentBlock/IContentBlockOptions";
5
- import ITheme from "./Theme/ITheme";
6
- import IAuthHeaderConfig from "./AuthHeaderConfig/IAuthHeaderConfig";
7
- import IFont from "./Font/IFont";
1
+ import { ISavedBlock, IMergeTagGroup, IContentBlockOptions, ITheme, IAuthHeaderConfig, IFont, IAPI } from "@topol.io/editor";
8
2
  export default interface IVueOptions {
9
3
  authorize: {
10
4
  apiKey: string;
package/package.json CHANGED
@@ -1,17 +1,20 @@
1
1
  {
2
2
  "name": "@topol.io/editor-vue",
3
- "description": "Vue.js integration for Topol Editor.",
3
+ "description": "Official Vue.js package for Topol Editor.",
4
4
  "keywords": [
5
5
  "plugin",
6
6
  "editor",
7
7
  "email",
8
8
  "topol",
9
- "topol.io"
9
+ "topol.io",
10
+ "topol-vue",
11
+ "email-vue",
12
+ "email templates"
10
13
  ],
11
14
  "author": "Topol.io",
12
- "homepage": "https://topol.io/",
15
+ "homepage": "https://topol.io",
13
16
  "license": "Apache-2.0",
14
- "version": "0.0.0-beta.1",
17
+ "version": "0.0.0-beta.10",
15
18
  "files": [
16
19
  "dist"
17
20
  ],
@@ -28,21 +31,21 @@
28
31
  "dev": "vite",
29
32
  "build": "vite build && yarn run build:types",
30
33
  "preview": "vite preview",
31
- "build:types": "vue-tsc"
34
+ "build:types": "vue-tsc -p tsconfig.prod.json"
32
35
  },
33
36
  "dependencies": {
34
- "@topol.io/editor": "^0.0.0-alfa.5"
37
+ "@topol.io/editor": "^0.0.0-alfa.14"
35
38
  },
36
39
  "peerDependencies": {
37
40
  "vue": "^3.2.25"
38
41
  },
39
42
  "devDependencies": {
40
- "@types/node": "^17.0.13",
43
+ "@types/node": "^17.0.15",
41
44
  "@vitejs/plugin-vue": "^2.0.0",
42
45
  "typescript": "^4.4.4",
43
46
  "vite": "^2.7.2",
44
- "vue": "^3.2.25",
45
- "vue-tsc": "^0.31.1"
47
+ "vue": "^3.2.30",
48
+ "vue-tsc": "^0.31.2"
46
49
  },
47
50
  "publishConfig": {
48
51
  "access": "public"
@@ -1,78 +0,0 @@
1
- import IVueOptions from "../types/IVueTopolOptions";
2
- import ISavedBlock from "../types/SavedBlock/ISavedBlock";
3
- import INotification from "../types/Notification/INotification";
4
- declare const _default: import("vue").DefineComponent<__VLS_TypePropsToRuntimeProps<{
5
- options: IVueOptions;
6
- }>, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
7
- onSave: (payload_0: {
8
- json: unknown;
9
- html: unknown;
10
- }) => void;
11
- } & {
12
- onSaveAndClose: (payload_0: {
13
- json: unknown;
14
- html: unknown;
15
- }) => void;
16
- } & {
17
- onTestSend: (payload_0: {
18
- email: string;
19
- json: unknown;
20
- html: unknown;
21
- }) => void;
22
- } & {
23
- onOpenFileManager: () => void;
24
- } & {
25
- onLoaded: () => void;
26
- } & {
27
- onBlockSave: (block: ISavedBlock) => void;
28
- } & {
29
- onBlockRemove: (blockId: number) => void;
30
- } & {
31
- onBlockEdit: (blockId: number) => void;
32
- } & {
33
- onInit: () => void;
34
- } & {
35
- onUndoChange: (count: number) => void;
36
- } & {
37
- onRedoChange: (count: number) => void;
38
- } & {
39
- onPreview: (html: unknown) => void;
40
- } & {
41
- onAlert: (notification: INotification) => void;
42
- }, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<__VLS_TypePropsToRuntimeProps<{
43
- options: IVueOptions;
44
- }>>> & {
45
- onOnSave?: ((args_0: {
46
- json: unknown;
47
- html: unknown;
48
- }) => any) | undefined;
49
- onOnSaveAndClose?: ((args_0: {
50
- json: unknown;
51
- html: unknown;
52
- }) => any) | undefined;
53
- onOnTestSend?: ((args_0: {
54
- email: string;
55
- json: unknown;
56
- html: unknown;
57
- }) => any) | undefined;
58
- onOnOpenFileManager?: (() => any) | undefined;
59
- onOnLoaded?: (() => any) | undefined;
60
- onOnBlockSave?: ((block: ISavedBlock) => any) | undefined;
61
- onOnBlockRemove?: ((blockId: number) => any) | undefined;
62
- onOnBlockEdit?: ((blockId: number) => any) | undefined;
63
- onOnInit?: (() => any) | undefined;
64
- onOnUndoChange?: ((count: number) => any) | undefined;
65
- onOnRedoChange?: ((count: number) => any) | undefined;
66
- onOnPreview?: ((html: unknown) => any) | undefined;
67
- onOnAlert?: ((notification: INotification) => any) | undefined;
68
- }, {}>;
69
- export default _default;
70
- declare type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
71
- declare type __VLS_TypePropsToRuntimeProps<T> = {
72
- [K in keyof T]-?: {} extends Pick<T, K> ? {
73
- type: import('vue').PropType<__VLS_NonUndefinedable<T[K]>>;
74
- } : {
75
- type: import('vue').PropType<T[K]>;
76
- required: true;
77
- };
78
- };
@@ -1,21 +0,0 @@
1
- export interface IAPI {
2
- GET_AUTOSAVE: string;
3
- AUTOSAVES: string;
4
- LOAD: string;
5
- SAVE: string | null;
6
- AUTOSAVE: string;
7
- PREVIEW: string;
8
- FEEDS: string;
9
- PRODUCTS: string;
10
- IMAGE_UPLOAD: string;
11
- FOLDERS: string;
12
- IMAGE_EDITOR_UPLOAD: string | null;
13
- TEST_EMAIL: string;
14
- }
15
- export interface ILockedAPI {
16
- GIPHY_API_KEY: string;
17
- GIPHY_SEARCH: string;
18
- AUTHORIZE: string;
19
- GCS_SIGNED_URL: string;
20
- SAVE_SERVER: string;
21
- }
@@ -1,3 +0,0 @@
1
- export default interface AuthHeaderConfig {
2
- [key: string]: string;
3
- }
@@ -1,5 +0,0 @@
1
- export default interface IContentBlockOptions {
2
- disabled?: boolean;
3
- disabledText?: string;
4
- hidden?: boolean;
5
- }
@@ -1,5 +0,0 @@
1
- export default interface IFont {
2
- label: string;
3
- style: string;
4
- url?: string;
5
- }
@@ -1,5 +0,0 @@
1
- export default interface IMergeTag {
2
- value: string;
3
- text: string;
4
- label: string;
5
- }
@@ -1,5 +0,0 @@
1
- import IMergeTag from "./IMergeTag";
2
- export default interface IMergeTagGroup {
3
- name: string;
4
- items: Array<IMergeTag | IMergeTagGroup>;
5
- }
@@ -1,7 +0,0 @@
1
- export default interface INotification {
2
- title: string;
3
- text: string;
4
- expectSideEffect?: boolean;
5
- persistent?: boolean;
6
- type: "info" | "error" | "success";
7
- }
@@ -1,5 +0,0 @@
1
- export default interface ISavedBlock {
2
- id: number;
3
- name: string;
4
- definition: Array<Object>;
5
- }
@@ -1,33 +0,0 @@
1
- export default interface ITheme {
2
- preset: "light" | "dark";
3
- borderRadius?: {
4
- small?: string;
5
- large?: string;
6
- };
7
- colors: {
8
- "900"?: string;
9
- "800"?: string;
10
- "700"?: string;
11
- "600"?: string;
12
- "500"?: string;
13
- "450"?: string;
14
- "400"?: string;
15
- "350"?: string;
16
- "300"?: string;
17
- "200"?: string;
18
- "150"?: string;
19
- "100"?: string;
20
- white?: string;
21
- primary?: string;
22
- "primary-light"?: string;
23
- "primary-dark"?: string;
24
- secondary?: string;
25
- "secondary-light"?: string;
26
- error?: string;
27
- "error-light"?: string;
28
- success?: string;
29
- "success-light"?: string;
30
- active?: string;
31
- "active-light"?: string;
32
- };
33
- }