@lukaskj/xmonkey 2.0.1 → 2.0.2

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 (80) hide show
  1. package/dist/build.js +8 -0
  2. package/dist/{cjs/decorators → decorators}/console-script.decorator.d.ts +1 -1
  3. package/dist/{esm/decorators → decorators}/console-script.decorator.js +1 -1
  4. package/dist/{cjs/decorators → decorators}/ui-script.decorator.d.ts +2 -2
  5. package/dist/decorators/ui-script.decorator.js +20 -0
  6. package/dist/esbuild/build.js +26 -0
  7. package/dist/esbuild/plugins/xmonkey-strip-metadata-plugin.js +77 -0
  8. package/dist/esbuild/plugins/xmonkey-styles-plugin.js +34 -0
  9. package/dist/{cjs/example-scripts → example-scripts}/example-console-script.d.ts +1 -1
  10. package/dist/example-scripts/example-console-script.js +28 -0
  11. package/dist/{cjs/example-scripts → example-scripts}/example-ui-script.d.ts +1 -1
  12. package/dist/{esm/example-scripts → example-scripts}/example-ui-script.js +20 -23
  13. package/dist/index.d.ts +4 -0
  14. package/dist/index.js +4 -0
  15. package/dist/interfaces/console-script.interface.js +3 -0
  16. package/dist/styles/_colors.scss +13 -0
  17. package/dist/styles/_variables.scss +9 -0
  18. package/dist/styles/base.scss +4 -0
  19. package/dist/styles/lit/_base.scss +173 -0
  20. package/dist/styles/lit/_util.scss +340 -0
  21. package/dist/styles/lit/index.scss +2 -0
  22. package/dist/styles/utils.css +70 -0
  23. package/dist/styles/xmonkey-wrapper.scss +59 -0
  24. package/dist/types.js +1 -0
  25. package/dist/{esm/utils → utils}/is-null-or-undefined.js +1 -1
  26. package/dist/utils/sleep.js +3 -0
  27. package/dist/{esm/ui/x-monkey-window-component.js → x-monkey-window-component.js} +5 -6
  28. package/package.json +12 -9
  29. package/dist/cjs/decorators/console-script.decorator.js +0 -13
  30. package/dist/cjs/decorators/ui-script.decorator.js +0 -25
  31. package/dist/cjs/esbuild/build.js +0 -100
  32. package/dist/cjs/esbuild/plugins/xmonkey-strip-metadata-plugin.js +0 -142
  33. package/dist/cjs/esbuild/plugins/xmonkey-styles-plugin.js +0 -85
  34. package/dist/cjs/example-scripts/example-console-script.js +0 -87
  35. package/dist/cjs/example-scripts/example-ui-script.js +0 -40
  36. package/dist/cjs/index.d.ts +0 -3
  37. package/dist/cjs/index.js +0 -27
  38. package/dist/cjs/interfaces/console-script.interface.js +0 -7
  39. package/dist/cjs/interfaces/index.d.ts +0 -2
  40. package/dist/cjs/interfaces/index.js +0 -18
  41. package/dist/cjs/interfaces/ui-script.interface.js +0 -2
  42. package/dist/cjs/types.js +0 -2
  43. package/dist/cjs/ui/x-monkey-window-component.js +0 -18
  44. package/dist/cjs/utils/is-null-or-undefined.js +0 -9
  45. package/dist/cjs/utils/sleep.js +0 -7
  46. package/dist/esm/decorators/console-script.decorator.d.ts +0 -3
  47. package/dist/esm/decorators/ui-script.decorator.d.ts +0 -4
  48. package/dist/esm/decorators/ui-script.decorator.js +0 -21
  49. package/dist/esm/esbuild/build.d.ts +0 -1
  50. package/dist/esm/esbuild/build.js +0 -73
  51. package/dist/esm/esbuild/plugins/xmonkey-strip-metadata-plugin.d.ts +0 -2
  52. package/dist/esm/esbuild/plugins/xmonkey-strip-metadata-plugin.js +0 -138
  53. package/dist/esm/esbuild/plugins/xmonkey-styles-plugin.d.ts +0 -2
  54. package/dist/esm/esbuild/plugins/xmonkey-styles-plugin.js +0 -81
  55. package/dist/esm/example-scripts/example-console-script.d.ts +0 -4
  56. package/dist/esm/example-scripts/example-console-script.js +0 -84
  57. package/dist/esm/example-scripts/example-ui-script.d.ts +0 -6
  58. package/dist/esm/index.d.ts +0 -3
  59. package/dist/esm/index.js +0 -11
  60. package/dist/esm/interfaces/console-script.interface.d.ts +0 -6
  61. package/dist/esm/interfaces/console-script.interface.js +0 -6
  62. package/dist/esm/interfaces/index.d.ts +0 -2
  63. package/dist/esm/interfaces/index.js +0 -2
  64. package/dist/esm/interfaces/ui-script.interface.d.ts +0 -5
  65. package/dist/esm/types.d.ts +0 -28
  66. package/dist/esm/ui/x-monkey-window-component.d.ts +0 -7
  67. package/dist/esm/utils/is-null-or-undefined.d.ts +0 -2
  68. package/dist/esm/utils/sleep.d.ts +0 -1
  69. package/dist/esm/utils/sleep.js +0 -3
  70. /package/dist/{esm/interfaces/ui-script.interface.js → build.d.ts} +0 -0
  71. /package/dist/{cjs/esbuild → esbuild}/build.d.ts +0 -0
  72. /package/dist/{cjs/esbuild → esbuild}/plugins/xmonkey-strip-metadata-plugin.d.ts +0 -0
  73. /package/dist/{cjs/esbuild → esbuild}/plugins/xmonkey-styles-plugin.d.ts +0 -0
  74. /package/dist/{cjs/interfaces → interfaces}/console-script.interface.d.ts +0 -0
  75. /package/dist/{cjs/interfaces → interfaces}/ui-script.interface.d.ts +0 -0
  76. /package/dist/{esm/types.js → interfaces/ui-script.interface.js} +0 -0
  77. /package/dist/{cjs/types.d.ts → types.d.ts} +0 -0
  78. /package/dist/{cjs/utils → utils}/is-null-or-undefined.d.ts +0 -0
  79. /package/dist/{cjs/utils → utils}/sleep.d.ts +0 -0
  80. /package/dist/{cjs/ui/x-monkey-window-component.d.ts → x-monkey-window-component.d.ts} +0 -0
package/dist/build.js ADDED
@@ -0,0 +1,8 @@
1
+ import { buildXmonkeyScript } from "./esbuild/build.js";
2
+ const entryFile = process.argv[2];
3
+ if (!entryFile) {
4
+ console.error(`No entryfile specified. Try adding the script to build in the argument.`);
5
+ console.error(`Example: npm run build src/example-script.ts`);
6
+ process.exit(1);
7
+ }
8
+ buildXmonkeyScript(entryFile);
@@ -1,3 +1,3 @@
1
- import { IConsoleScript } from "../interfaces";
1
+ import { IConsoleScript } from "../interfaces/console-script.interface.js";
2
2
  import { ClassConstructor, ScriptInfo } from "../types";
3
3
  export declare function ConsoleScript<T extends IConsoleScript>(_metadata: ScriptInfo): (target: ClassConstructor<T>) => void;
@@ -3,7 +3,7 @@ export function ConsoleScript(_metadata) {
3
3
  if (!target) {
4
4
  throw new Error("Script not defined.");
5
5
  }
6
- var scriptObject = new target();
6
+ const scriptObject = new target();
7
7
  scriptObject.execute();
8
8
  };
9
9
  }
@@ -1,4 +1,4 @@
1
- import { IUiScript } from "../interfaces";
1
+ import { IUiScript } from "../interfaces/ui-script.interface.js";
2
2
  import { ClassConstructor, ScriptInfo } from "../types";
3
- import "../ui/styles/base.scss";
3
+ import "../styles/base.scss";
4
4
  export declare function UiScript<T extends IUiScript>(_metadata: ScriptInfo): (_target: ClassConstructor<T>) => void;
@@ -0,0 +1,20 @@
1
+ import { h, render } from "preact";
2
+ import { XMonkeyWindowComponent } from "../x-monkey-window-component.js";
3
+ import "../styles/base.scss";
4
+ export function UiScript(_metadata) {
5
+ return function (_target) {
6
+ const scriptObject = new _target();
7
+ const rootComponent = xMonkeyWrapperElement();
8
+ render(h(XMonkeyWindowComponent, { title: scriptObject.title ?? "" }, scriptObject.render()), rootComponent);
9
+ };
10
+ }
11
+ function xMonkeyWrapperElement() {
12
+ const ID = "__xmwr";
13
+ let div = document.getElementById(ID);
14
+ if (div)
15
+ return div;
16
+ div = document.createElement("div");
17
+ div.id = ID;
18
+ document.body.appendChild(div);
19
+ return div;
20
+ }
@@ -0,0 +1,26 @@
1
+ import * as esbuild from "esbuild";
2
+ import { sassPlugin } from "esbuild-sass-plugin";
3
+ import { xMonkeyStripMetadataPlugin } from "./plugins/xmonkey-strip-metadata-plugin.js";
4
+ import { xMonkeyStylesPlugin } from "./plugins/xmonkey-styles-plugin.js";
5
+ export async function buildXmonkeyScript(scriptBasePath) {
6
+ const entryFile = scriptBasePath;
7
+ console.info(`Building file: '${entryFile}'`);
8
+ await esbuild.build({
9
+ entryPoints: [entryFile],
10
+ outfile: "dist/index.js",
11
+ bundle: true,
12
+ treeShaking: true,
13
+ minify: process.env.DEBUG ? false : true,
14
+ platform: "browser",
15
+ format: "iife",
16
+ sourcemap: false,
17
+ keepNames: true,
18
+ logLevel: "info",
19
+ metafile: true,
20
+ plugins: [
21
+ xMonkeyStripMetadataPlugin(),
22
+ sassPlugin({ style: "compressed" }),
23
+ xMonkeyStylesPlugin(),
24
+ ],
25
+ });
26
+ }
@@ -0,0 +1,77 @@
1
+ import { readFile, writeFile } from "fs/promises";
2
+ export function xMonkeyStripMetadataPlugin() {
3
+ return {
4
+ name: "xmonkey-strip-metadata-plugin",
5
+ setup(build) {
6
+ let foundMetadata = false;
7
+ let metadataContent = "";
8
+ build.onLoad({ filter: /.(ts|tsx)/, namespace: "file" }, async (args) => {
9
+ if (foundMetadata)
10
+ return;
11
+ const source = await readFile(args.path, "utf8");
12
+ const scriptMetadataIndex = source.match(/@(ConsoleScript|UiScript)\(/)?.index;
13
+ if (!scriptMetadataIndex || scriptMetadataIndex < 0)
14
+ return;
15
+ foundMetadata = true;
16
+ const regex = /\@(ConsoleScript|UiScript)\([^\)]*\)(\.[^\)]*\))?/gi;
17
+ const metadataDecoratorMatcher = source.match(regex);
18
+ if (metadataDecoratorMatcher) {
19
+ metadataContent = metadataDecoratorMatcher.at(0);
20
+ const startJsonMetadataIndex = metadataContent.indexOf("{");
21
+ const endJsonMetadataIndex = metadataContent.lastIndexOf("}");
22
+ const metadataJsonString = metadataContent.substring(startJsonMetadataIndex, endJsonMetadataIndex + 1);
23
+ const contents = source.replace(metadataJsonString, "");
24
+ const extension = args.path.split(".").pop();
25
+ const loader = extension === "tsx" ? "tsx" : "ts";
26
+ return { contents, loader };
27
+ }
28
+ return;
29
+ });
30
+ build.onEnd(async (result) => {
31
+ if (!build.initialOptions?.outfile || !build.initialOptions?.bundle) {
32
+ console.error("Wrong build configuration. Options 'bundle' must be enabled and 'outfile' must be set.");
33
+ return;
34
+ }
35
+ if (!foundMetadata) {
36
+ console.error("ScriptMetadata decorator not found.");
37
+ return;
38
+ }
39
+ if (result.errors.length) {
40
+ console.error("Error building. Script Metadata cannot be added to final script.");
41
+ return;
42
+ }
43
+ const fileContents = await readFile(build.initialOptions.outfile);
44
+ const scriptMetadataString = getScriptMetadataString(metadataContent);
45
+ await writeFile(build.initialOptions.outfile, `${scriptMetadataString}\n\n${fileContents.toString()}`);
46
+ });
47
+ },
48
+ };
49
+ }
50
+ function getScriptMetadataString(scriptMetadataFunctionCallString) {
51
+ scriptMetadataFunctionCallString = scriptMetadataFunctionCallString.trim();
52
+ const startJsonMetadataIndex = scriptMetadataFunctionCallString.indexOf("{");
53
+ const endJsonMetadataIndex = scriptMetadataFunctionCallString.lastIndexOf("}");
54
+ if (startJsonMetadataIndex < 0 || endJsonMetadataIndex < 0) {
55
+ return "";
56
+ }
57
+ const metadataObject = JSON.parse(scriptMetadataFunctionCallString
58
+ .substring(startJsonMetadataIndex, endJsonMetadataIndex + 1)
59
+ .replaceAll("\n", "")
60
+ .replaceAll(",}", "}"));
61
+ const tag = "// ==UserScript==";
62
+ const tagEnd = "// ==/UserScript==";
63
+ const headersArr = [];
64
+ const spaces = 13;
65
+ for (const key in metadataObject) {
66
+ if (Array.isArray(metadataObject[key])) {
67
+ metadataObject[key].forEach((item) => {
68
+ headersArr.push(`${key.padEnd(spaces, " ")}${item}`);
69
+ });
70
+ }
71
+ else {
72
+ headersArr.push(`${key.padEnd(spaces, " ")}${metadataObject[key]}`);
73
+ }
74
+ }
75
+ const headers = headersArr.map((h) => `// ${h}`).join("\n");
76
+ return `${tag}\n${headers}\n${tagEnd}`;
77
+ }
@@ -0,0 +1,34 @@
1
+ import { appendFile, readFile } from "fs/promises";
2
+ export function xMonkeyStylesPlugin() {
3
+ return {
4
+ name: "xmonkey-styles-plugin",
5
+ setup(build) {
6
+ build.onEnd(async (result) => {
7
+ if (!build.initialOptions?.outfile || !build.initialOptions?.bundle) {
8
+ console.error("Wrong build configuration. Options 'bundle' must be enabled and 'outfile' must be set.");
9
+ return;
10
+ }
11
+ if (!result.metafile) {
12
+ console.warn("ESBuild metafile not enabled. Style bundle skipped.");
13
+ return;
14
+ }
15
+ const outputs = result.metafile.outputs;
16
+ let cssFilePath = "";
17
+ for (const file in outputs) {
18
+ const ext = file.split(".").pop();
19
+ if (ext === "css") {
20
+ cssFilePath = file;
21
+ break;
22
+ }
23
+ }
24
+ if (!cssFilePath.length) {
25
+ console.warn("CSS output not generated. Style bundle skipped.");
26
+ return;
27
+ }
28
+ const jsOutFile = build.initialOptions.outfile;
29
+ const cssContents = (await readFile(cssFilePath)).toString();
30
+ appendFile(jsOutFile, `\nGM.addStyle("\\\n${cssContents.trim()}\\\n");`);
31
+ });
32
+ },
33
+ };
34
+ }
@@ -1,4 +1,4 @@
1
- import { IConsoleScript } from "../interfaces";
1
+ import { IConsoleScript } from "../interfaces/console-script.interface.js";
2
2
  export declare class ExampleConsoleScript implements IConsoleScript {
3
3
  execute(): Promise<void>;
4
4
  }
@@ -0,0 +1,28 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { ConsoleScript } from "../decorators/console-script.decorator.js";
8
+ import { sleep } from "../utils/sleep.js";
9
+ let ExampleConsoleScript = class ExampleConsoleScript {
10
+ async execute() {
11
+ for (let i = 0; i < 50; i++) {
12
+ console.log("Executing script...", i + 1, location.href);
13
+ await sleep(20);
14
+ }
15
+ }
16
+ };
17
+ ExampleConsoleScript = __decorate([
18
+ ConsoleScript({
19
+ "@name": "Example Console Script",
20
+ "@namespace": "console-scripts",
21
+ "@match": "https://en.wikipedia.org/*",
22
+ "@version": "1.0",
23
+ "@author": "-",
24
+ "@description": "Example Console Script Description",
25
+ "@grant": ["GM.addStyle"],
26
+ })
27
+ ], ExampleConsoleScript);
28
+ export { ExampleConsoleScript };
@@ -1,4 +1,4 @@
1
- import { IUiScript } from "../interfaces";
1
+ import { IUiScript } from "../interfaces/ui-script.interface.js";
2
2
  import "./example-scss.scss";
3
3
  export declare class ExampleUiScript implements IUiScript {
4
4
  title: string;
@@ -5,33 +5,30 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
5
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
6
  };
7
7
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "preact/jsx-runtime";
8
- import { UiScript } from "../decorators/ui-script.decorator";
8
+ import { UiScript } from "../decorators/ui-script.decorator.js";
9
9
  import { useState } from "preact/hooks";
10
10
  import "./example-scss.scss";
11
- var ExampleUiScript = (function () {
12
- function ExampleUiScript() {
13
- this.title = "Example UI Script";
14
- }
15
- ExampleUiScript.prototype.render = function () {
11
+ let ExampleUiScript = class ExampleUiScript {
12
+ title = "Example UI Script";
13
+ render() {
16
14
  return _jsx(JsxUiExample, {});
17
- };
18
- ExampleUiScript = __decorate([
19
- UiScript({
20
- "@name": "Example Console Script",
21
- "@namespace": "console-scripts",
22
- "@match": "https://en.wikipedia.org/*",
23
- "@version": "1.0",
24
- "@author": "-",
25
- "@description": "Example Console Script Description",
26
- "@grant": ["GM.addStyle"],
27
- })
28
- ], ExampleUiScript);
29
- return ExampleUiScript;
30
- }());
15
+ }
16
+ };
17
+ ExampleUiScript = __decorate([
18
+ UiScript({
19
+ "@name": "Example Console Script",
20
+ "@namespace": "console-scripts",
21
+ "@match": "https://en.wikipedia.org/*",
22
+ "@version": "1.0",
23
+ "@author": "-",
24
+ "@description": "Example Console Script Description",
25
+ "@grant": ["GM.addStyle"],
26
+ })
27
+ ], ExampleUiScript);
31
28
  export { ExampleUiScript };
32
29
  function JsxUiExample() {
33
- var _a = useState(0), count = _a[0], setCount = _a[1];
34
- var increment = function () { return setCount(count + 1); };
35
- var decrement = function () { return setCount(function (currentCount) { return currentCount - 1; }); };
30
+ const [count, setCount] = useState(0);
31
+ const increment = () => setCount(count + 1);
32
+ const decrement = () => setCount((currentCount) => currentCount - 1);
36
33
  return (_jsxs(_Fragment, { children: [_jsxs("p", { children: ["Count: ", count] }), _jsxs("div", { class: "w-100 d--f jc--c", children: [_jsx("button", { class: "btn small primary", onClick: increment, children: "Increment" }), _jsx("button", { class: "btn small primary", onClick: decrement, children: "Decrement" })] })] }));
37
34
  }
@@ -0,0 +1,4 @@
1
+ export * from "./decorators/console-script.decorator.js";
2
+ export * from "./decorators/ui-script.decorator.js";
3
+ export * from "./interfaces/console-script.interface.js";
4
+ export * from "./interfaces/ui-script.interface.js";
package/dist/index.js ADDED
@@ -0,0 +1,4 @@
1
+ export * from "./decorators/console-script.decorator.js";
2
+ export * from "./decorators/ui-script.decorator.js";
3
+ export * from "./interfaces/console-script.interface.js";
4
+ export * from "./interfaces/ui-script.interface.js";
@@ -0,0 +1,3 @@
1
+ class CScript {
2
+ }
3
+ export {};
@@ -0,0 +1,13 @@
1
+ $gray: #6c757d;
2
+ $black: #2f2f2f;
3
+ $white: #f0f0f0;
4
+
5
+ $primary: #007bff;
6
+ $secondary: darken($primary, 10%);
7
+ $warning: #ffc107;
8
+ $error: #dc3545;
9
+ $success: #28a745;
10
+ $info: #17a2b8;
11
+
12
+
13
+ $bg: #404040;
@@ -0,0 +1,9 @@
1
+ $xmonkey-wrapper: "__xmwr";
2
+ $xmonkey-container: "xmwr_c";
3
+ $xmonkey-header: "xmwr-h";
4
+
5
+
6
+ $font-family: Verdana;
7
+ $font: $font-family;
8
+
9
+ $border-radius: 7px;
@@ -0,0 +1,4 @@
1
+ @use "variables";
2
+ @use "./xmonkey-wrapper.scss";
3
+ @use "./utils.css";
4
+ @use "lit"
@@ -0,0 +1,173 @@
1
+ @use "../variables" as vars;
2
+ @use "../colors";
3
+ /*
4
+ * Lit v0.1
5
+ * Primary Color set to: #FA0
6
+ * Font set to: Nunito
7
+ */
8
+
9
+ $input-padding: 3px;
10
+
11
+ ##{vars.$xmonkey-wrapper} {
12
+ font-family: vars.$font-family;
13
+ * {
14
+ box-sizing: border-box;
15
+ font-size: 12px;
16
+ font-family: vars.$font-family;
17
+ margin: 2.5px 0;
18
+ }
19
+ pre {
20
+ overflow: auto;
21
+ }
22
+
23
+ .col,
24
+ .row {
25
+ padding: 0 3px;
26
+ }
27
+ .col {
28
+ flex-direction: column;
29
+ }
30
+
31
+ .row {
32
+ flex-direction: row;
33
+ flex-wrap: wrap;
34
+ }
35
+
36
+ .w-100,
37
+ .row {
38
+ width: 100%;
39
+ }
40
+
41
+ .card:focus,
42
+ .xcard:focus,
43
+ hr {
44
+ outline: 0;
45
+ border: solid colors.$primary;
46
+ }
47
+
48
+ .card,
49
+ .xcard,
50
+ pre {
51
+ padding: $input-padding;
52
+ border: solid colors.$white;
53
+ }
54
+
55
+ a:hover,
56
+ .btn:hover {
57
+ opacity: 0.8;
58
+ }
59
+
60
+ .c {
61
+ max-width: 60em;
62
+ padding: $input-padding;
63
+ margin: auto;
64
+ font: 1em/1.6 vars.$font;
65
+ }
66
+
67
+ h6 {
68
+ font: 100 1em vars.$font;
69
+ }
70
+
71
+ h5 {
72
+ font: 100 1.2em vars.$font;
73
+ }
74
+
75
+ h3 {
76
+ font: 100 2em vars.$font;
77
+ }
78
+
79
+ h4 {
80
+ font: 100 1.5em vars.$font;
81
+ }
82
+
83
+ h2 {
84
+ font: 100 2.2em vars.$font;
85
+ }
86
+
87
+ h1 {
88
+ font: 100 2.5em vars.$font;
89
+ }
90
+
91
+ a {
92
+ color: colors.$primary;
93
+ text-decoration: none;
94
+ }
95
+
96
+ td,
97
+ th {
98
+ padding: $input-padding;
99
+ text-align: left;
100
+ border-bottom: solid colors.$white;
101
+ }
102
+
103
+ .btn {
104
+ padding: $input-padding;
105
+ text-transform: uppercase;
106
+ background: colors.$white;
107
+ color: colors.$black;
108
+ border: solid colors.$white;
109
+ font: 1em vars.$font;
110
+
111
+ &.primary {
112
+ color: colors.$white;
113
+ background: colors.$primary;
114
+ border: solid colors.$primary;
115
+ }
116
+
117
+ &.secondary {
118
+ color: colors.$white;
119
+ background: colors.$secondary;
120
+ border: solid colors.$secondary;
121
+ }
122
+
123
+ &.success {
124
+ color: colors.$white;
125
+ background: colors.$success;
126
+ border: solid colors.$success;
127
+ }
128
+
129
+ &.warning {
130
+ color: colors.$white;
131
+ background: colors.$warning;
132
+ border: solid colors.$warning;
133
+ }
134
+
135
+ &.error {
136
+ color: colors.$white;
137
+ background: colors.$error;
138
+ border: solid colors.$error;
139
+ }
140
+
141
+ &.info {
142
+ color: colors.$white;
143
+ background: colors.$info;
144
+ border: solid colors.$info;
145
+ }
146
+ }
147
+
148
+ @media (min-width: 35em) {
149
+ .\31 {
150
+ width: 5%;
151
+ }
152
+
153
+ .\33 {
154
+ width: 22%;
155
+ }
156
+
157
+ .\34 {
158
+ width: 30%;
159
+ }
160
+
161
+ .\35 {
162
+ width: 40%;
163
+ }
164
+
165
+ .\32 {
166
+ width: 15%;
167
+ }
168
+
169
+ .\36 {
170
+ width: 50%;
171
+ }
172
+ }
173
+ }