@aristobyte-ui/spinner 1.0.50 → 1.0.52

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
@@ -1,9 +1,10 @@
1
1
  "use client";
2
- import "./index.css";
3
2
  "use strict";
3
+ var __create = Object.create;
4
4
  var __defProp = Object.defineProperty;
5
5
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6
6
  var __getOwnPropNames = Object.getOwnPropertyNames;
7
+ var __getProtoOf = Object.getPrototypeOf;
7
8
  var __hasOwnProp = Object.prototype.hasOwnProperty;
8
9
  var __export = (target, all) => {
9
10
  for (var name in all)
@@ -17,6 +18,14 @@ var __copyProps = (to, from, except, desc) => {
17
18
  }
18
19
  return to;
19
20
  };
21
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
22
+ // If the importer is in node compatibility mode or this is not an ESM
23
+ // file that has been converted to a CommonJS file using a Babel-
24
+ // compatible transform (i.e. "__esModule" has not been set), then set
25
+ // "default" to the CommonJS "module.exports" for node compatibility.
26
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
27
+ mod
28
+ ));
20
29
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
21
30
 
22
31
  // index.ts
@@ -26,31 +35,21 @@ __export(index_exports, {
26
35
  });
27
36
  module.exports = __toCommonJS(index_exports);
28
37
 
29
- // components/Spinner/Spinner.module.scss
30
- var Spinner_module_default = {
31
- rotation: "Spinner_module_rotation",
32
- pulse: "Spinner_module_pulse",
33
- "pulse-duo": "Spinner_module_pulse-duo",
34
- "spinner-size--xsm": "Spinner_module_spinner-size--xsm",
35
- "spinner-size--sm": "Spinner_module_spinner-size--sm",
36
- "spinner-size--md": "Spinner_module_spinner-size--md",
37
- "spinner-size--lg": "Spinner_module_spinner-size--lg",
38
- "spinner-size--xlg": "Spinner_module_spinner-size--xlg",
39
- "spinner-type--default": "Spinner_module_spinner-type--default",
40
- "spinner-variant--default": "Spinner_module_spinner-variant--default",
41
- "spinner-variant--primary": "Spinner_module_spinner-variant--primary",
42
- "spinner-variant--secondary": "Spinner_module_spinner-variant--secondary",
43
- "spinner-variant--success": "Spinner_module_spinner-variant--success",
44
- "spinner-variant--error": "Spinner_module_spinner-variant--error",
45
- "spinner-variant--warning": "Spinner_module_spinner-variant--warning",
46
- "spinner-type--duo": "Spinner_module_spinner-type--duo",
47
- "spinner-type--gradient": "Spinner_module_spinner-type--gradient",
48
- "spinner-type--pulse": "Spinner_module_spinner-type--pulse",
49
- "spinner-type--pulse-duo": "Spinner_module_spinner-type--pulse-duo"
50
- };
51
-
52
- // components/Spinner/index.tsx
38
+ // components/Spinner.tsx
39
+ var import_clsx = __toESM(require("clsx"));
53
40
  var import_jsx_runtime = require("react/jsx-runtime");
41
+ var sizeMap = {
42
+ xsm: "w-4 h-4",
43
+ // 16px
44
+ sm: "w-6 h-6",
45
+ // 24px
46
+ md: "w-8 h-8",
47
+ // 32px
48
+ lg: "w-10 h-10",
49
+ // 40px
50
+ xlg: "w-12 h-12"
51
+ // 48px
52
+ };
54
53
  var Spinner = ({
55
54
  type = "default",
56
55
  variant = "default",
@@ -58,13 +57,31 @@ var Spinner = ({
58
57
  className = "",
59
58
  style = {}
60
59
  }) => {
61
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
62
- "div",
63
- {
64
- className: `spinner ${Spinner_module_default[`spinner-type--${type}`]} ${Spinner_module_default[`spinner-variant--${variant}`]} ${Spinner_module_default[`spinner-size--${size}`]} ${className}`,
65
- style
66
- }
67
- );
60
+ const base = (0, import_clsx.default)("inline-block relative", sizeMap[size], {
61
+ /** Default spinner */
62
+ "animate-rotation rounded-full border-2 border-solid border-t-current border-opacity-25": type === "default",
63
+ /** Duo spinner */
64
+ "animate-rotation rounded-full border-2 border-solid border-transparent": type === "duo",
65
+ /** Gradient spinner */
66
+ "animate-rotation-linear rounded-full border-2 border-solid border-r-transparent": type === "gradient",
67
+ /** Pulse */
68
+ "animate-pulse rounded-full": type === "pulse",
69
+ /** Pulse-duo */
70
+ "rounded-full": type === "pulse-duo"
71
+ });
72
+ const variantColor = (0, import_clsx.default)({
73
+ /** Default style spinner colors */
74
+ "text-default": variant === "default",
75
+ "text-primary": variant === "primary",
76
+ "text-secondary": variant === "secondary",
77
+ "text-success": variant === "success",
78
+ "text-error": variant === "error",
79
+ "text-warning": variant === "warning"
80
+ });
81
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: (0, import_clsx.default)(base, variantColor, className), style, children: type === "pulse-duo" && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
82
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "absolute top-1/2 left-1/2 w-full h-full rounded-full bg-current animate-pulse-duo-before" }),
83
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "absolute top-1/2 left-1/2 w-full h-full rounded-full bg-current animate-pulse-duo-after" })
84
+ ] }) });
68
85
  };
69
86
  // Annotate the CommonJS export names for ESM import in node:
70
87
  0 && (module.exports = {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../index.ts","../components/Spinner/Spinner.module.scss","../components/Spinner/index.tsx"],"sourcesContent":["export * from \"./components\";\n","@keyframes rotation {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n}\n@keyframes pulse {\n 0% {\n opacity: 1;\n transform: scale(0);\n }\n 100% {\n opacity: 0;\n transform: scale(1);\n }\n}\n@keyframes pulse-duo {\n 0%, 100% {\n opacity: 1;\n transform: translate(-50%, -50%) scale(0);\n }\n 50% {\n opacity: 0;\n transform: translate(-50%, -50%) scale(1);\n }\n}\n.spinner-size--xsm {\n width: 1rem;\n height: 1rem;\n}\n.spinner-size--sm {\n width: 1.5rem;\n height: 1.5rem;\n}\n.spinner-size--md {\n width: 2rem;\n height: 2rem;\n}\n.spinner-size--lg {\n width: 2.5rem;\n height: 2.5rem;\n}\n.spinner-size--xlg {\n width: 3rem;\n height: 3rem;\n}\n.spinner-type--default {\n animation: rotation 800ms ease infinite;\n border-radius: 50%;\n}\n.spinner-type--default.spinner-variant--default {\n border: 3px solid rgba(31, 41, 55, 0.25);\n border-top-color: #1f2937;\n}\n.spinner-type--default.spinner-variant--primary {\n border: 3px solid rgba(37, 99, 235, 0.25);\n border-top-color: #2563eb;\n}\n.spinner-type--default.spinner-variant--secondary {\n border: 3px solid rgba(79, 70, 229, 0.25);\n border-top-color: #4f46e5;\n}\n.spinner-type--default.spinner-variant--success {\n border: 3px solid rgba(22, 163, 74, 0.25);\n border-top-color: #16a34a;\n}\n.spinner-type--default.spinner-variant--error {\n border: 3px solid rgba(220, 38, 38, 0.25);\n border-top-color: #dc2626;\n}\n.spinner-type--default.spinner-variant--warning {\n border: 3px solid rgba(217, 119, 6, 0.25);\n border-top-color: #d97706;\n}\n.spinner-type--duo {\n animation: rotation 800ms ease infinite;\n border: 3px solid transparent;\n border-radius: 50%;\n}\n.spinner-type--duo.spinner-variant--default {\n border-bottom-color: #1f2937;\n border-top-color: #1f2937;\n}\n.spinner-type--duo.spinner-variant--primary {\n border-bottom-color: #2563eb;\n border-top-color: #2563eb;\n}\n.spinner-type--duo.spinner-variant--secondary {\n border-bottom-color: #4f46e5;\n border-top-color: #4f46e5;\n}\n.spinner-type--duo.spinner-variant--success {\n border-bottom-color: #16a34a;\n border-top-color: #16a34a;\n}\n.spinner-type--duo.spinner-variant--error {\n border-bottom-color: #dc2626;\n border-top-color: #dc2626;\n}\n.spinner-type--duo.spinner-variant--warning {\n border-bottom-color: #d97706;\n border-top-color: #d97706;\n}\n.spinner-type--gradient {\n animation: rotation 800ms linear infinite;\n border-right: 3px solid transparent;\n border-radius: 50%;\n}\n.spinner-type--gradient.spinner-variant--default {\n border-top: 3px solid #1f2937;\n}\n.spinner-type--gradient.spinner-variant--primary {\n border-top: 3px solid #2563eb;\n}\n.spinner-type--gradient.spinner-variant--secondary {\n border-top: 3px solid #4f46e5;\n}\n.spinner-type--gradient.spinner-variant--success {\n border-top: 3px solid #16a34a;\n}\n.spinner-type--gradient.spinner-variant--error {\n border-top: 3px solid #dc2626;\n}\n.spinner-type--gradient.spinner-variant--warning {\n border-top: 3px solid #d97706;\n}\n.spinner-type--pulse {\n animation: pulse 1s ease-in-out infinite;\n border-radius: 50%;\n position: relative;\n}\n.spinner-type--pulse.spinner-variant--default {\n background-color: #1f2937;\n}\n.spinner-type--pulse.spinner-variant--primary {\n background-color: #2563eb;\n}\n.spinner-type--pulse.spinner-variant--secondary {\n background-color: #4f46e5;\n}\n.spinner-type--pulse.spinner-variant--success {\n background-color: #16a34a;\n}\n.spinner-type--pulse.spinner-variant--error {\n background-color: #dc2626;\n}\n.spinner-type--pulse.spinner-variant--warning {\n background-color: #d97706;\n}\n.spinner-type--pulse-duo {\n position: relative;\n}\n.spinner-type--pulse-duo.spinner-variant--default::after, .spinner-type--pulse-duo.spinner-variant--default::before {\n background-color: #1f2937;\n}\n.spinner-type--pulse-duo.spinner-variant--primary::after, .spinner-type--pulse-duo.spinner-variant--primary::before {\n background-color: #2563eb;\n}\n.spinner-type--pulse-duo.spinner-variant--secondary::after, .spinner-type--pulse-duo.spinner-variant--secondary::before {\n background-color: #4f46e5;\n}\n.spinner-type--pulse-duo.spinner-variant--success::after, .spinner-type--pulse-duo.spinner-variant--success::before {\n background-color: #16a34a;\n}\n.spinner-type--pulse-duo.spinner-variant--error::after, .spinner-type--pulse-duo.spinner-variant--error::before {\n background-color: #dc2626;\n}\n.spinner-type--pulse-duo.spinner-variant--warning::after, .spinner-type--pulse-duo.spinner-variant--warning::before {\n background-color: #d97706;\n}\n.spinner-type--pulse-duo::before, .spinner-type--pulse-duo::after {\n content: \"\";\n position: absolute;\n top: 50%;\n left: 50%;\n width: 100%;\n height: 100%;\n border-radius: 50%;\n transform: translate(-50%, -50%) scale(0);\n}\n.spinner-type--pulse-duo::before {\n animation: pulse-duo 2s ease-in-out infinite;\n}\n.spinner-type--pulse-duo::after {\n animation: pulse-duo 2s 1s ease-in-out infinite;\n}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VSb290IjoiL1VzZXJzL2RodW5hbnlhbi9hcmlzdG9ieXRlL2dpdGh1Yi9hcmlzdG9ieXRlLXVpL3BhY2thZ2VzL3NwaW5uZXIvY29tcG9uZW50cy9TcGlubmVyIiwic291cmNlcyI6WyJTcGlubmVyLm1vZHVsZS5zY3NzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BhcmlzdG9ieXRlLXVpL3V0aWxzL3N0eWxlcy9fc2V0dGluZ3Muc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTtFQUNFO0lBQ0U7O0VBRUY7SUFDRTs7O0FBSUo7RUFDRTtJQUNFO0lBQ0E7O0VBRUY7SUFDRTtJQUNBOzs7QUFJSjtFQUNFO0lBRUU7SUFDQTs7RUFFRjtJQUNFO0lBQ0E7OztBQU1BO0VBQ0U7RUFDQTs7QUFHRjtFQUNFO0VBQ0E7O0FBR0Y7RUFDRTtFQUNBOztBQUdGO0VBQ0U7RUFDQTs7QUFHRjtFQUNFO0VBQ0E7O0FBS0Y7RUFDRTtFQUNBOztBQUdFO0VBQ0U7RUFDQTs7QUFFRjtFQUNFO0VBQ0E7O0FBRUY7RUFDRTtFQUNBOztBQUVGO0VBQ0U7RUFDQTs7QUFFRjtFQUNFO0VBQ0E7O0FBRUY7RUFDRTtFQUNBOztBQUtOO0VBQ0U7RUFDQTtFQUNBOztBQUdFO0VBQ0U7RUFDQTs7QUFFRjtFQUNFO0VBQ0E7O0FBRUY7RUFDRTtFQUNBOztBQUVGO0VBQ0U7RUFDQTs7QUFFRjtFQUNFO0VBQ0E7O0FBRUY7RUFDRTtFQUNBOztBQUtOO0VBQ0U7RUFDQTtFQUNBOztBQUdFO0VBQ0U7O0FBRUY7RUFDRTs7QUFFRjtFQUNFOztBQUVGO0VBQ0U7O0FBRUY7RUFDRTs7QUFFRjtFQUNFOztBQUtOO0VBQ0U7RUFDQTtFQUNBOztBQUdFO0VBQ0Usa0JDeEdDOztBRDBHSDtFQUNFLGtCQ2pHQzs7QURtR0g7RUFDRSxrQkN4Rkc7O0FEMEZMO0VBQ0Usa0JDdkVFOztBRHlFSjtFQUNFLGtCQ3BGQTs7QURzRkY7RUFDRSxrQkNuRUU7O0FEd0VSO0VBQ0U7O0FBR0U7RUFFRSxrQkNsSUM7O0FEb0lIO0VBRUUsa0JDNUhDOztBRDhISDtFQUVFLGtCQ3BIRzs7QURzSEw7RUFFRSxrQkNwR0U7O0FEc0dKO0VBRUUsa0JDbEhBOztBRG9IRjtFQUVFLGtCQ2xHRTs7QURzR047RUFFRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUVGO0VBQ0U7O0FBRUY7RUFDRSIsInNvdXJjZXNDb250ZW50IjpbIkB1c2UgXCJAYXJpc3RvYnl0ZS11aS91dGlscy9zdHlsZXMvc2V0dGluZ3NcIiBhcyAqO1xuXG5Aa2V5ZnJhbWVzIHJvdGF0aW9uIHtcbiAgZnJvbSB7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XG4gIH1cbiAgdG8ge1xuICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7XG4gIH1cbn1cblxuQGtleWZyYW1lcyBwdWxzZSB7XG4gIDAlIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMCk7XG4gIH1cbiAgMTAwJSB7XG4gICAgb3BhY2l0eTogMDtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDEpO1xuICB9XG59XG5cbkBrZXlmcmFtZXMgcHVsc2UtZHVvIHtcbiAgMCUsXG4gIDEwMCUge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSkgc2NhbGUoMCk7XG4gIH1cbiAgNTAlIHtcbiAgICBvcGFjaXR5OiAwO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpIHNjYWxlKDEpO1xuICB9XG59XG5cbi5zcGlubmVyIHtcbiAgJi1zaXplIHtcbiAgICAmLS14c20ge1xuICAgICAgd2lkdGg6IDFyZW07IC8vIDE2cHhcbiAgICAgIGhlaWdodDogMXJlbTtcbiAgICB9XG5cbiAgICAmLS1zbSB7XG4gICAgICB3aWR0aDogMS41cmVtOyAvLyAyNHB4XG4gICAgICBoZWlnaHQ6IDEuNXJlbTtcbiAgICB9XG5cbiAgICAmLS1tZCB7XG4gICAgICB3aWR0aDogMnJlbTsgLy8gMzJweFxuICAgICAgaGVpZ2h0OiAycmVtO1xuICAgIH1cblxuICAgICYtLWxnIHtcbiAgICAgIHdpZHRoOiAyLjVyZW07IC8vIDQwcHhcbiAgICAgIGhlaWdodDogMi41cmVtO1xuICAgIH1cblxuICAgICYtLXhsZyB7XG4gICAgICB3aWR0aDogM3JlbTsgLy8gNDhweFxuICAgICAgaGVpZ2h0OiAzcmVtO1xuICAgIH1cbiAgfVxuXG4gICYtdHlwZSB7XG4gICAgJi0tZGVmYXVsdCB7XG4gICAgICBhbmltYXRpb246IHJvdGF0aW9uIDgwMG1zIGVhc2UgaW5maW5pdGU7XG4gICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG5cbiAgICAgICYuc3Bpbm5lci12YXJpYW50IHtcbiAgICAgICAgJi0tZGVmYXVsdCB7XG4gICAgICAgICAgYm9yZGVyOiAzcHggc29saWQgcmdiYSgkY29sb3ItZGVmYXVsdCwgMC4yNSk7XG4gICAgICAgICAgYm9yZGVyLXRvcC1jb2xvcjogcmdiYSgkY29sb3ItZGVmYXVsdCwgMSk7XG4gICAgICAgIH1cbiAgICAgICAgJi0tcHJpbWFyeSB7XG4gICAgICAgICAgYm9yZGVyOiAzcHggc29saWQgcmdiYSgkY29sb3ItcHJpbWFyeSwgMC4yNSk7XG4gICAgICAgICAgYm9yZGVyLXRvcC1jb2xvcjogcmdiYSgkY29sb3ItcHJpbWFyeSwgMSk7XG4gICAgICAgIH1cbiAgICAgICAgJi0tc2Vjb25kYXJ5IHtcbiAgICAgICAgICBib3JkZXI6IDNweCBzb2xpZCByZ2JhKCRjb2xvci1zZWNvbmRhcnksIDAuMjUpO1xuICAgICAgICAgIGJvcmRlci10b3AtY29sb3I6IHJnYmEoJGNvbG9yLXNlY29uZGFyeSwgMSk7XG4gICAgICAgIH1cbiAgICAgICAgJi0tc3VjY2VzcyB7XG4gICAgICAgICAgYm9yZGVyOiAzcHggc29saWQgcmdiYSgkY29sb3Itc3VjY2VzcywgMC4yNSk7XG4gICAgICAgICAgYm9yZGVyLXRvcC1jb2xvcjogcmdiYSgkY29sb3Itc3VjY2VzcywgMSk7XG4gICAgICAgIH1cbiAgICAgICAgJi0tZXJyb3Ige1xuICAgICAgICAgIGJvcmRlcjogM3B4IHNvbGlkIHJnYmEoJGNvbG9yLWVycm9yLCAwLjI1KTtcbiAgICAgICAgICBib3JkZXItdG9wLWNvbG9yOiByZ2JhKCRjb2xvci1lcnJvciwgMSk7XG4gICAgICAgIH1cbiAgICAgICAgJi0td2FybmluZyB7XG4gICAgICAgICAgYm9yZGVyOiAzcHggc29saWQgcmdiYSgkY29sb3Itd2FybmluZywgMC4yNSk7XG4gICAgICAgICAgYm9yZGVyLXRvcC1jb2xvcjogcmdiYSgkY29sb3Itd2FybmluZywgMSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLS1kdW8ge1xuICAgICAgYW5pbWF0aW9uOiByb3RhdGlvbiA4MDBtcyBlYXNlIGluZmluaXRlO1xuICAgICAgYm9yZGVyOiAzcHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG5cbiAgICAgICYuc3Bpbm5lci12YXJpYW50IHtcbiAgICAgICAgJi0tZGVmYXVsdCB7XG4gICAgICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogcmdiYSgkY29sb3ItZGVmYXVsdCwgMSk7XG4gICAgICAgICAgYm9yZGVyLXRvcC1jb2xvcjogcmdiYSgkY29sb3ItZGVmYXVsdCwgMSk7XG4gICAgICAgIH1cbiAgICAgICAgJi0tcHJpbWFyeSB7XG4gICAgICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogcmdiYSgkY29sb3ItcHJpbWFyeSwgMSk7XG4gICAgICAgICAgYm9yZGVyLXRvcC1jb2xvcjogcmdiYSgkY29sb3ItcHJpbWFyeSwgMSk7XG4gICAgICAgIH1cbiAgICAgICAgJi0tc2Vjb25kYXJ5IHtcbiAgICAgICAgICBib3JkZXItYm90dG9tLWNvbG9yOiByZ2JhKCRjb2xvci1zZWNvbmRhcnksIDEpO1xuICAgICAgICAgIGJvcmRlci10b3AtY29sb3I6IHJnYmEoJGNvbG9yLXNlY29uZGFyeSwgMSk7XG4gICAgICAgIH1cbiAgICAgICAgJi0tc3VjY2VzcyB7XG4gICAgICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogcmdiYSgkY29sb3Itc3VjY2VzcywgMSk7XG4gICAgICAgICAgYm9yZGVyLXRvcC1jb2xvcjogcmdiYSgkY29sb3Itc3VjY2VzcywgMSk7XG4gICAgICAgIH1cbiAgICAgICAgJi0tZXJyb3Ige1xuICAgICAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6IHJnYmEoJGNvbG9yLWVycm9yLCAxKTtcbiAgICAgICAgICBib3JkZXItdG9wLWNvbG9yOiByZ2JhKCRjb2xvci1lcnJvciwgMSk7XG4gICAgICAgIH1cbiAgICAgICAgJi0td2FybmluZyB7XG4gICAgICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogcmdiYSgkY29sb3Itd2FybmluZywgMSk7XG4gICAgICAgICAgYm9yZGVyLXRvcC1jb2xvcjogcmdiYSgkY29sb3Itd2FybmluZywgMSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLS1ncmFkaWVudCB7XG4gICAgICBhbmltYXRpb246IHJvdGF0aW9uIDgwMG1zIGxpbmVhciBpbmZpbml0ZTtcbiAgICAgIGJvcmRlci1yaWdodDogM3B4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuXG4gICAgICAmLnNwaW5uZXItdmFyaWFudCB7XG4gICAgICAgICYtLWRlZmF1bHQge1xuICAgICAgICAgIGJvcmRlci10b3A6IDNweCBzb2xpZCByZ2JhKCRjb2xvci1kZWZhdWx0LCAxKTtcbiAgICAgICAgfVxuICAgICAgICAmLS1wcmltYXJ5IHtcbiAgICAgICAgICBib3JkZXItdG9wOiAzcHggc29saWQgcmdiYSgkY29sb3ItcHJpbWFyeSwgMSk7XG4gICAgICAgIH1cbiAgICAgICAgJi0tc2Vjb25kYXJ5IHtcbiAgICAgICAgICBib3JkZXItdG9wOiAzcHggc29saWQgcmdiYSgkY29sb3Itc2Vjb25kYXJ5LCAxKTtcbiAgICAgICAgfVxuICAgICAgICAmLS1zdWNjZXNzIHtcbiAgICAgICAgICBib3JkZXItdG9wOiAzcHggc29saWQgcmdiYSgkY29sb3Itc3VjY2VzcywgMSk7XG4gICAgICAgIH1cbiAgICAgICAgJi0tZXJyb3Ige1xuICAgICAgICAgIGJvcmRlci10b3A6IDNweCBzb2xpZCByZ2JhKCRjb2xvci1lcnJvciwgMSk7XG4gICAgICAgIH1cbiAgICAgICAgJi0td2FybmluZyB7XG4gICAgICAgICAgYm9yZGVyLXRvcDogM3B4IHNvbGlkIHJnYmEoJGNvbG9yLXdhcm5pbmcsIDEpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgJi0tcHVsc2Uge1xuICAgICAgYW5pbWF0aW9uOiBwdWxzZSAxcyBlYXNlLWluLW91dCBpbmZpbml0ZTtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgICAgJi5zcGlubmVyLXZhcmlhbnQge1xuICAgICAgICAmLS1kZWZhdWx0IHtcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3ItZGVmYXVsdDtcbiAgICAgICAgfVxuICAgICAgICAmLS1wcmltYXJ5IHtcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3ItcHJpbWFyeTtcbiAgICAgICAgfVxuICAgICAgICAmLS1zZWNvbmRhcnkge1xuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvci1zZWNvbmRhcnk7XG4gICAgICAgIH1cbiAgICAgICAgJi0tc3VjY2VzcyB7XG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLXN1Y2Nlc3M7XG4gICAgICAgIH1cbiAgICAgICAgJi0tZXJyb3Ige1xuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvci1lcnJvcjtcbiAgICAgICAgfVxuICAgICAgICAmLS13YXJuaW5nIHtcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3Itd2FybmluZztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgICYtLXB1bHNlLWR1byB7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAgICYuc3Bpbm5lci12YXJpYW50IHtcbiAgICAgICAgJi0tZGVmYXVsdDo6YWZ0ZXIsXG4gICAgICAgICYtLWRlZmF1bHQ6OmJlZm9yZSB7XG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLWRlZmF1bHQ7XG4gICAgICAgIH1cbiAgICAgICAgJi0tcHJpbWFyeTo6YWZ0ZXIsXG4gICAgICAgICYtLXByaW1hcnk6OmJlZm9yZSB7XG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLXByaW1hcnk7XG4gICAgICAgIH1cbiAgICAgICAgJi0tc2Vjb25kYXJ5OjphZnRlcixcbiAgICAgICAgJi0tc2Vjb25kYXJ5OjpiZWZvcmUge1xuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvci1zZWNvbmRhcnk7XG4gICAgICAgIH1cbiAgICAgICAgJi0tc3VjY2Vzczo6YWZ0ZXIsXG4gICAgICAgICYtLXN1Y2Nlc3M6OmJlZm9yZSB7XG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLXN1Y2Nlc3M7XG4gICAgICAgIH1cbiAgICAgICAgJi0tZXJyb3I6OmFmdGVyLFxuICAgICAgICAmLS1lcnJvcjo6YmVmb3JlIHtcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3ItZXJyb3I7XG4gICAgICAgIH1cbiAgICAgICAgJi0td2FybmluZzo6YWZ0ZXIsXG4gICAgICAgICYtLXdhcm5pbmc6OmJlZm9yZSB7XG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLXdhcm5pbmc7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgJjo6YmVmb3JlLFxuICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogNTAlO1xuICAgICAgICBsZWZ0OiA1MCU7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSkgc2NhbGUoMCk7XG4gICAgICB9XG4gICAgICAmOjpiZWZvcmUge1xuICAgICAgICBhbmltYXRpb246IHB1bHNlLWR1byAycyBlYXNlLWluLW91dCBpbmZpbml0ZTtcbiAgICAgIH1cbiAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgYW5pbWF0aW9uOiBwdWxzZS1kdW8gMnMgMXMgZWFzZS1pbi1vdXQgaW5maW5pdGU7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC8vXG4vLyAgICAgICAgQXJpc3RvQnl0ZSBVSSAtIFN0eWxlIFNldHRpbmdzICAgICAgIC8vXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC8vXG5cbi8vID09PSBEZXNpZ24gVG9rZW5zIOKAlCBDb2xvciBQYWxldHRlID09PSAvL1xuLy8gTG9nb1xuJGxvZ28tY29sb3ItMTogI2ZmZWUyNztcbiRsb2dvLWNvbG9yLTI6ICNmZWM4MDA7XG4kbG9nby1jb2xvci0zOiAjZjE4ZTM1O1xuJGxvZ28tY29sb3ItNDogI2U5NWYzMjtcbiRsb2dvLWNvbG9yLTU6ICNlMjMxMmQ7XG4kbG9nby1ncmFkaWVudDogbGluZWFyLWdyYWRpZW50KFxuICA5MGRlZyxcbiAgJGxvZ28tY29sb3ItMSxcbiAgJGxvZ28tY29sb3ItMixcbiAgJGxvZ28tY29sb3ItMyxcbiAgJGxvZ28tY29sb3ItNCxcbiAgJGxvZ28tY29sb3ItNVxuKTtcblxuLy8gQmFzZVxuJHdoaXRlOiAjZmZmZmZmO1xuJHdoaXRlLWhvdmVyOiAjZGRkZGRkO1xuJGJsYWNrOiAjMDAwMDAwO1xuJGJsYWNrLWhvdmVyOiAjMjIyMjIyO1xuJHRyYW5zcGFyZW50OiB0cmFuc3BhcmVudDtcblxuLy8gPT09IEJsYWNrIFRyYW5zcGFyZW50IFNjYWxlID09PSAvL1xuJGJsYWNrLXRyYW5zcGFyZW50LTEwMDogcmdiYSgwLCAwLCAwLCAwLjEpO1xuJGJsYWNrLXRyYW5zcGFyZW50LTIwMDogcmdiYSgwLCAwLCAwLCAwLjIpO1xuJGJsYWNrLXRyYW5zcGFyZW50LTMwMDogcmdiYSgwLCAwLCAwLCAwLjMpO1xuJGJsYWNrLXRyYW5zcGFyZW50LTQwMDogcmdiYSgwLCAwLCAwLCAwLjQpO1xuJGJsYWNrLXRyYW5zcGFyZW50LTUwMDogcmdiYSgwLCAwLCAwLCAwLjUpO1xuJGJsYWNrLXRyYW5zcGFyZW50LTYwMDogcmdiYSgwLCAwLCAwLCAwLjYpO1xuJGJsYWNrLXRyYW5zcGFyZW50LTcwMDogcmdiYSgwLCAwLCAwLCAwLjcpO1xuJGJsYWNrLXRyYW5zcGFyZW50LTgwMDogcmdiYSgwLCAwLCAwLCAwLjgpO1xuJGJsYWNrLXRyYW5zcGFyZW50LTkwMDogcmdiYSgwLCAwLCAwLCAwLjkpO1xuXG4vLyA9PT0gQmxhY2sgVHJhbnNwYXJlbnQgU2NhbGUgPT09IC8vXG4kd2hpdGUtdHJhbnNwYXJlbnQtMTAwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7XG4kd2hpdGUtdHJhbnNwYXJlbnQtMjAwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMik7XG4kd2hpdGUtdHJhbnNwYXJlbnQtMzAwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMyk7XG4kd2hpdGUtdHJhbnNwYXJlbnQtNDAwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNCk7XG4kd2hpdGUtdHJhbnNwYXJlbnQtNTAwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSk7XG4kd2hpdGUtdHJhbnNwYXJlbnQtNjAwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNik7XG4kd2hpdGUtdHJhbnNwYXJlbnQtNzAwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNyk7XG4kd2hpdGUtdHJhbnNwYXJlbnQtODAwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOCk7XG4kd2hpdGUtdHJhbnNwYXJlbnQtOTAwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOSk7XG5cbi8vID09PSBOZXV0cmFsIFNjYWxlIChHcmV5KSA9PT0gLy9cbiRncmV5LTUwOiAjZjlmYWZiO1xuJGdyZXktMTAwOiAjZjNmNGY2O1xuJGdyZXktMjAwOiAjZTVlN2ViO1xuJGdyZXktMzAwOiAjZDFkNWRiO1xuJGdyZXktNDAwOiAjOWNhM2FmO1xuJGdyZXktNTAwOiAjNmI3MjgwO1xuJGdyZXktNjAwOiAjNGI1NTYzO1xuJGdyZXktNzAwOiAjMzc0MTUxO1xuJGdyZXktODAwOiAjMWYyOTM3O1xuJGdyZXktOTAwOiAjMTExODI3O1xuXG4vLyA9PT0gUHJpbWFyeSBTY2FsZSAoQmx1ZSkgPT09IC8vXG4kYmx1ZS01MDogI2VmZjZmZjtcbiRibHVlLTEwMDogI2RiZWFmZTtcbiRibHVlLTIwMDogI2JmZGJmZTtcbiRibHVlLTMwMDogIzkzYzVmZDtcbiRibHVlLTQwMDogIzYwYTVmYTtcbiRibHVlLTUwMDogIzNiODJmNjtcbiRibHVlLTYwMDogIzI1NjNlYjsgLy8gTWFpblxuJGJsdWUtNzAwOiAjMWQ0ZWQ4OyAvLyBIb3ZlclxuJGJsdWUtODAwOiAjMWU0MGFmO1xuJGJsdWUtOTAwOiAjMWUzYThhO1xuXG4vLyA9PT0gU2Vjb25kYXJ5IFNjYWxlIChJbmRpZ28pID09PSAvL1xuJGluZGlnby01MDogI2VlZjJmZjtcbiRpbmRpZ28tMTAwOiAjZTBlN2ZmO1xuJGluZGlnby0yMDA6ICNjN2QyZmU7XG4kaW5kaWdvLTMwMDogI2E1YjRmYztcbiRpbmRpZ28tNDAwOiAjODE4Y2Y4O1xuJGluZGlnby01MDA6ICM2MzY2ZjE7XG4kaW5kaWdvLTYwMDogIzRmNDZlNTsgLy8gTWFpblxuJGluZGlnby03MDA6ICM0MzM4Y2E7IC8vIEhvdmVyXG5cbi8vID09PSBFcnJvciBTY2FsZSAoUmVkKSA9PT0gLy9cbiRyZWQtNTA6ICNmZWYyZjI7XG4kcmVkLTEwMDogI2ZlZTJlMjtcbiRyZWQtMjAwOiAjZmVjYWNhO1xuJHJlZC0zMDA6ICNmY2E1YTU7XG4kcmVkLTQwMDogI2Y4NzE3MTtcbiRyZWQtNTAwOiAjZWY0NDQ0O1xuJHJlZC02MDA6ICNkYzI2MjY7IC8vIE1haW5cbiRyZWQtNzAwOiAjYjkxYzFjOyAvLyBIb3ZlclxuXG4vLyA9PT0gU3VjY2VzcyBTY2FsZSAoR3JlZW4pID09PSAvL1xuJGdyZWVuLTUwOiAjZjBmZGY0O1xuJGdyZWVuLTEwMDogI2RjZmNlNztcbiRncmVlbi0yMDA6ICNiYmY3ZDA7XG4kZ3JlZW4tMzAwOiAjODZlZmFjO1xuJGdyZWVuLTQwMDogIzRhZGU4MDtcbiRncmVlbi01MDA6ICMyMmM1NWU7XG4kZ3JlZW4tNjAwOiAjMTZhMzRhOyAvLyBNYWluXG4kZ3JlZW4tNzAwOiAjMTU4MDNkOyAvLyBIb3ZlclxuXG4vLyA9PT0gV2FybmluZyBTY2FsZSAoQW1iZXIpID09PSAvL1xuJGFtYmVyLTUwOiAjZmZmYmViO1xuJGFtYmVyLTEwMDogI2ZlZjNjNztcbiRhbWJlci0yMDA6ICNmZGU2OGE7XG4kYW1iZXItMzAwOiAjZmNkMzRkO1xuJGFtYmVyLTQwMDogI2ZiYmYyNDtcbiRhbWJlci01MDA6ICNmNTllMGI7XG4kYW1iZXItNjAwOiAjZDk3NzA2OyAvLyBNYWluXG4kYW1iZXItNzAwOiAjYjQ1MzA5OyAvLyBIb3ZlclxuXG4vLyA9PT0gU2VtYW50aWMgVG9rZW5zID09PSAvL1xuJGNvbG9yLWRlZmF1bHQ6ICRncmV5LTgwMDtcbiRjb2xvci1kZWZhdWx0LWhvdmVyOiAkZ3JleS05MDA7XG4kY29sb3ItZGVmYXVsdC1kaXNhYmxlZDogcmdiYSgkY29sb3ItZGVmYXVsdCwgMC41KTtcblxuJGNvbG9yLXByaW1hcnk6ICRibHVlLTYwMDtcbiRjb2xvci1wcmltYXJ5LWhvdmVyOiAkYmx1ZS03MDA7XG4kY29sb3ItcHJpbWFyeS1kaXNhYmxlZDogcmdiYSgkY29sb3ItcHJpbWFyeSwgMC41KTtcblxuJGNvbG9yLXNlY29uZGFyeTogJGluZGlnby02MDA7XG4kY29sb3Itc2Vjb25kYXJ5LWhvdmVyOiAkaW5kaWdvLTcwMDtcbiRjb2xvci1zZWNvbmRhcnktZGlzYWJsZWQ6IHJnYmEoJGNvbG9yLXNlY29uZGFyeSwgMC41KTtcblxuJGNvbG9yLWVycm9yOiAkcmVkLTYwMDtcbiRjb2xvci1lcnJvci1ob3ZlcjogJHJlZC03MDA7XG4kY29sb3ItZXJyb3ItZGlzYWJsZWQ6IHJnYmEoJGNvbG9yLWVycm9yLCAwLjUpO1xuXG4kY29sb3Itc3VjY2VzczogJGdyZWVuLTYwMDtcbiRjb2xvci1zdWNjZXNzLWhvdmVyOiAkZ3JlZW4tNzAwO1xuJGNvbG9yLXN1Y2Nlc3MtZGlzYWJsZWQ6IHJnYmEoJGNvbG9yLXN1Y2Nlc3MsIDAuNSk7XG5cbiRjb2xvci13YXJuaW5nOiAkYW1iZXItNjAwO1xuJGNvbG9yLXdhcm5pbmctaG92ZXI6ICRhbWJlci03MDA7XG4kY29sb3Itd2FybmluZy1kaXNhYmxlZDogcmdiYSgkY29sb3Itd2FybmluZywgMC41KTtcblxuJHRleHQtY29sb3Itd2hpdGU6ICR3aGl0ZTtcbiR0ZXh0LWNvbG9yLWJsYWNrOiAkYmxhY2s7XG4kdGV4dC1jb2xvci13aGl0ZS1kaXNhYmxlZDogcmdiYSgkd2hpdGUsIDAuNSk7XG4kdGV4dC1jb2xvci1ibGFjay1kaXNhYmxlZDogcmdiYSgkYmxhY2ssIDAuNSk7XG5cbiR0aXRsZS1jb2xvci1kYXJrOiAkd2hpdGU7XG4kc3VidGl0bGUtY29sb3ItZGFyazogIzk5YTFhZjtcbiRkZXNjcmlwdGlvbi1jb2xvci1kYXJrOiAjZDFkNWRjO1xuJGljb24tY29sb3ItZGFyazogIzk5YTFhZjtcblxuLy8gPT09IFNoYWRvd3MgPT09IC8vXG4vL0BUT0RPOiBAU0hBRE9XXG4kc2hhZG93LXNtOiAwIDFweCAycHggMCByZ2JhKCRibGFjaywgMC4wNSk7XG4kc2hhZG93LW1kOlxuICAwIDRweCA2cHggLTFweCByZ2JhKCRibGFjaywgMC4xKSxcbiAgMCAycHggNHB4IC0xcHggcmdiYSgkYmxhY2ssIDAuMDYpO1xuJHNoYWRvdy1sZzpcbiAgMCAxMHB4IDE1cHggLTNweCByZ2JhKCRibGFjaywgMC4xKSxcbiAgMCA0cHggNnB4IC0ycHggcmdiYSgkYmxhY2ssIDAuMDUpO1xuXG4vLyA9PT0gRm9udCBmYW1pbGllcyA9PT0gLy9cbiRmb250LWZhbWlseS1zYW5zOiBcIkludGVyXCIsIHNhbnMtc2VyaWY7XG4kZm9udC1mYW1pbHktc2VyaWY6IFwiR2VvcmdpYVwiLCBzZXJpZjtcbiRmb250LWZhbWlseS1tb25vOiBcIkZpcmEgQ29kZVwiLCBtb25vc3BhY2U7XG5cbi8vID09PSBGb250IHdlaWdodHMgPT09IC8vXG4kZm9udC13ZWlnaHQtcmVndWxhcjogNDAwO1xuJGZvbnQtd2VpZ2h0LW1lZGl1bTogNTAwO1xuJGZvbnQtd2VpZ2h0LXNlbWlib2xkOiA2MDA7XG4kZm9udC13ZWlnaHQtYm9sZDogNzAwO1xuXG4vLyA9PT0gTGluZSBoZWlnaHRzID09PSAvL1xuJGxpbmUtaGVpZ2h0LXRpZ2h0OiAxLjI7XG4kbGluZS1oZWlnaHQtc251ZzogMS4zNzU7XG4kbGluZS1oZWlnaHQtbm9ybWFsOiAxLjU7XG4kbGluZS1oZWlnaHQtbG9vc2U6IDEuNjI1O1xuXG4vLyA9PT0gRm9udCBTaXplcyDigJQgU2VtYW50aWMgVG9rZW5zID09PSAvL1xuXG4vLyA9PT0gVGl0bGVzID09PSAvL1xuJGZvbnQtc2l6ZS1oZXJvOiAzcmVtOyAvLyA0OHB4XG4kZm9udC1zaXplLXRpdGxlLTE6IDIuMjVyZW07IC8vIDM2cHhcbiRmb250LXNpemUtdGl0bGUtMjogMS44NzVyZW07IC8vIDMwcHhcbiRmb250LXNpemUtdGl0bGUtMzogMS41cmVtOyAvLyAyNHB4XG5cbi8vID09PSBTdWJ0aXRsZXMgPT09IC8vXG4kZm9udC1zaXplLXN1YnRpdGxlLTE6IDEuMjVyZW07IC8vIDIwcHhcbiRmb250LXNpemUtc3VidGl0bGUtMjogMS4xMjVyZW07IC8vIDE4cHhcblxuLy8gPT09IEJvZHkgdGV4dCA9PT0gLy9cbiRmb250LXNpemUtYm9keS1sZzogMXJlbTsgLy8gMTZweFxuJGZvbnQtc2l6ZS1ib2R5LW1kOiAwLjkzNzVyZW07IC8vIDE1cHhcbiRmb250LXNpemUtYm9keS1zbTogMC44NzVyZW07IC8vIDE0cHhcblxuLy8gPT09IENhcHRpb25zIC8gRGVzY3JpcHRpb25zID09PSAvL1xuJGZvbnQtc2l6ZS1jYXB0aW9uOiAwLjc1cmVtOyAvLyAxMnB4XG4kZm9udC1zaXplLWZvb3Rub3RlOiAwLjY4NzVyZW07IC8vIDExcHhcblxuLy8gPT09IEJ1dHRvbnMgPT09IC8vXG4kZm9udC1zaXplLWJ1dHRvbi1sZzogMXJlbTsgLy8gMTZweFxuJGZvbnQtc2l6ZS1idXR0b24tbWQ6IDAuODc1cmVtOyAvLyAxNHB4XG4kZm9udC1zaXplLWJ1dHRvbi1zbTogMC43NXJlbTsgLy8gMTJweFxuXG4vLyA9PT0gQW5pbWF0aW9ucyA9PT0gLy9cblxuJGN1YmljLWJlemllci1wcmltYXJ5OiBjdWJpYy1iZXppZXIoMC41NSwgLTAuMTksIDAuNTksIDAuOTUpO1xuJGN1YmljLWJlemllci1zZWNvbmRhcnk6IGN1YmljLWJlemllcigwLjE3NSwgMC44ODUsIDAuMzIsIDEuMjc1KTtcbiJdfQ== */","\"use client\";\n\nimport * as React from \"react\";\n\nimport styles from \"./Spinner.module.scss\";\n\nexport interface ISpinner {\n type?: \"default\" | \"duo\" | \"gradient\" | \"pulse\" | \"pulse-duo\";\n variant?:\n | \"default\"\n | \"primary\"\n | \"secondary\"\n | \"success\"\n | \"error\"\n | \"warning\";\n size?: \"xsm\" | \"sm\" | \"md\" | \"lg\" | \"xlg\";\n className?: string;\n style?: React.CSSProperties;\n}\n\nexport const Spinner: React.FC<ISpinner> = ({\n type = \"default\",\n variant = \"default\",\n size = \"md\",\n className = \"\",\n style = {},\n}) => {\n return (\n <div\n className={`spinner ${styles[`spinner-type--${type}`]} ${\n styles[`spinner-variant--${variant}`]\n } ${styles[`spinner-size--${size}`]} ${className}`}\n style={style}\n />\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA;AAAA,EAAW,UAAAA;AAAA,EAQA,OAAAC;AAAA,EAUA,aAAAC;AAAA,EAUV,qBAAAC;AAAA,EAIA,oBAAAC;AAAA,EAIA,oBAAAC;AAAA,EAIA,oBAAAC;AAAA,EAIA,qBAAAC;AAAA,EAIA,yBAAAC;AAAA,EAIsB,4BAAAC;AAAA,EAIA,4BAAAC;AAAA,EAIA,8BAAAC;AAAA,EAIA,4BAAAC;AAAA,EAIA,0BAAAC;AAAA,EAIA,4BAAAC;AAAA,EAItB,qBAAAC;AAAA,EA6BA,0BAAAC;AAAA,EAuBA,uBAAAC;AAAA,EAuBA,2BAAAC;AAAA;;;AC3HG;AARG,IAAM,UAA8B,CAAC;AAAA,EAC1C,OAAO;AAAA,EACP,UAAU;AAAA,EACV,OAAO;AAAA,EACP,YAAY;AAAA,EACZ,QAAQ,CAAC;AACX,MAAM;AACJ,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAW,WAAW,uBAAO,iBAAiB,IAAI,EAAE,CAAC,IACnD,uBAAO,oBAAoB,OAAO,EAAE,CACtC,IAAI,uBAAO,iBAAiB,IAAI,EAAE,CAAC,IAAI,SAAS;AAAA,MAChD;AAAA;AAAA,EACF;AAEJ;","names":["rotation","pulse","pulse-duo","spinner-size--xsm","spinner-size--sm","spinner-size--md","spinner-size--lg","spinner-size--xlg","spinner-type--default","spinner-variant--default","spinner-variant--primary","spinner-variant--secondary","spinner-variant--success","spinner-variant--error","spinner-variant--warning","spinner-type--duo","spinner-type--gradient","spinner-type--pulse","spinner-type--pulse-duo"]}
1
+ {"version":3,"sources":["../index.ts","../components/Spinner.tsx"],"sourcesContent":["export * from \"./components\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport clsx from \"clsx\";\n\nexport interface ISpinner {\n type?: \"default\" | \"duo\" | \"gradient\" | \"pulse\" | \"pulse-duo\";\n variant?:\n | \"default\"\n | \"primary\"\n | \"secondary\"\n | \"success\"\n | \"error\"\n | \"warning\";\n size?: \"xsm\" | \"sm\" | \"md\" | \"lg\" | \"xlg\";\n className?: string;\n style?: React.CSSProperties;\n}\n\nconst sizeMap = {\n xsm: \"w-4 h-4\", // 16px\n sm: \"w-6 h-6\", // 24px\n md: \"w-8 h-8\", // 32px\n lg: \"w-10 h-10\", // 40px\n xlg: \"w-12 h-12\", // 48px\n};\n\nexport const Spinner: React.FC<ISpinner> = ({\n type = \"default\",\n variant = \"default\",\n size = \"md\",\n className = \"\",\n style = {},\n}) => {\n const base = clsx(\"inline-block relative\", sizeMap[size], {\n /** Default spinner */\n \"animate-rotation rounded-full border-2 border-solid border-t-current border-opacity-25\":\n type === \"default\",\n /** Duo spinner */\n \"animate-rotation rounded-full border-2 border-solid border-transparent\":\n type === \"duo\",\n /** Gradient spinner */\n \"animate-rotation-linear rounded-full border-2 border-solid border-r-transparent\":\n type === \"gradient\",\n /** Pulse */\n \"animate-pulse rounded-full\": type === \"pulse\",\n /** Pulse-duo */\n \"rounded-full\": type === \"pulse-duo\",\n });\n\n const variantColor = clsx({\n /** Default style spinner colors */\n \"text-default\": variant === \"default\",\n \"text-primary\": variant === \"primary\",\n \"text-secondary\": variant === \"secondary\",\n \"text-success\": variant === \"success\",\n \"text-error\": variant === \"error\",\n \"text-warning\": variant === \"warning\",\n });\n\n return (\n <div className={clsx(base, variantColor, className)} style={style}>\n {type === \"pulse-duo\" && (\n <>\n <span className=\"absolute top-1/2 left-1/2 w-full h-full rounded-full bg-current animate-pulse-duo-before\" />\n <span className=\"absolute top-1/2 left-1/2 w-full h-full rounded-full bg-current animate-pulse-duo-after\" />\n </>\n )}\n </div>\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACGA,kBAAiB;AA4DT;AA5CR,IAAM,UAAU;AAAA,EACd,KAAK;AAAA;AAAA,EACL,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,KAAK;AAAA;AACP;AAEO,IAAM,UAA8B,CAAC;AAAA,EAC1C,OAAO;AAAA,EACP,UAAU;AAAA,EACV,OAAO;AAAA,EACP,YAAY;AAAA,EACZ,QAAQ,CAAC;AACX,MAAM;AACJ,QAAM,WAAO,YAAAA,SAAK,yBAAyB,QAAQ,IAAI,GAAG;AAAA;AAAA,IAExD,0FACE,SAAS;AAAA;AAAA,IAEX,0EACE,SAAS;AAAA;AAAA,IAEX,mFACE,SAAS;AAAA;AAAA,IAEX,8BAA8B,SAAS;AAAA;AAAA,IAEvC,gBAAgB,SAAS;AAAA,EAC3B,CAAC;AAED,QAAM,mBAAe,YAAAA,SAAK;AAAA;AAAA,IAExB,gBAAgB,YAAY;AAAA,IAC5B,gBAAgB,YAAY;AAAA,IAC5B,kBAAkB,YAAY;AAAA,IAC9B,gBAAgB,YAAY;AAAA,IAC5B,cAAc,YAAY;AAAA,IAC1B,gBAAgB,YAAY;AAAA,EAC9B,CAAC;AAED,SACE,4CAAC,SAAI,eAAW,YAAAA,SAAK,MAAM,cAAc,SAAS,GAAG,OAClD,mBAAS,eACR,4EACE;AAAA,gDAAC,UAAK,WAAU,4FAA2F;AAAA,IAC3G,4CAAC,UAAK,WAAU,2FAA0F;AAAA,KAC5G,GAEJ;AAEJ;","names":["clsx"]}
package/dist/index.mjs CHANGED
@@ -1,31 +1,20 @@
1
1
  "use client";
2
- import "./index.css";
3
2
 
4
- // components/Spinner/Spinner.module.scss
5
- var Spinner_module_default = {
6
- rotation: "Spinner_module_rotation",
7
- pulse: "Spinner_module_pulse",
8
- "pulse-duo": "Spinner_module_pulse-duo",
9
- "spinner-size--xsm": "Spinner_module_spinner-size--xsm",
10
- "spinner-size--sm": "Spinner_module_spinner-size--sm",
11
- "spinner-size--md": "Spinner_module_spinner-size--md",
12
- "spinner-size--lg": "Spinner_module_spinner-size--lg",
13
- "spinner-size--xlg": "Spinner_module_spinner-size--xlg",
14
- "spinner-type--default": "Spinner_module_spinner-type--default",
15
- "spinner-variant--default": "Spinner_module_spinner-variant--default",
16
- "spinner-variant--primary": "Spinner_module_spinner-variant--primary",
17
- "spinner-variant--secondary": "Spinner_module_spinner-variant--secondary",
18
- "spinner-variant--success": "Spinner_module_spinner-variant--success",
19
- "spinner-variant--error": "Spinner_module_spinner-variant--error",
20
- "spinner-variant--warning": "Spinner_module_spinner-variant--warning",
21
- "spinner-type--duo": "Spinner_module_spinner-type--duo",
22
- "spinner-type--gradient": "Spinner_module_spinner-type--gradient",
23
- "spinner-type--pulse": "Spinner_module_spinner-type--pulse",
24
- "spinner-type--pulse-duo": "Spinner_module_spinner-type--pulse-duo"
3
+ // components/Spinner.tsx
4
+ import clsx from "clsx";
5
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
6
+ var sizeMap = {
7
+ xsm: "w-4 h-4",
8
+ // 16px
9
+ sm: "w-6 h-6",
10
+ // 24px
11
+ md: "w-8 h-8",
12
+ // 32px
13
+ lg: "w-10 h-10",
14
+ // 40px
15
+ xlg: "w-12 h-12"
16
+ // 48px
25
17
  };
26
-
27
- // components/Spinner/index.tsx
28
- import { jsx } from "react/jsx-runtime";
29
18
  var Spinner = ({
30
19
  type = "default",
31
20
  variant = "default",
@@ -33,13 +22,31 @@ var Spinner = ({
33
22
  className = "",
34
23
  style = {}
35
24
  }) => {
36
- return /* @__PURE__ */ jsx(
37
- "div",
38
- {
39
- className: `spinner ${Spinner_module_default[`spinner-type--${type}`]} ${Spinner_module_default[`spinner-variant--${variant}`]} ${Spinner_module_default[`spinner-size--${size}`]} ${className}`,
40
- style
41
- }
42
- );
25
+ const base = clsx("inline-block relative", sizeMap[size], {
26
+ /** Default spinner */
27
+ "animate-rotation rounded-full border-2 border-solid border-t-current border-opacity-25": type === "default",
28
+ /** Duo spinner */
29
+ "animate-rotation rounded-full border-2 border-solid border-transparent": type === "duo",
30
+ /** Gradient spinner */
31
+ "animate-rotation-linear rounded-full border-2 border-solid border-r-transparent": type === "gradient",
32
+ /** Pulse */
33
+ "animate-pulse rounded-full": type === "pulse",
34
+ /** Pulse-duo */
35
+ "rounded-full": type === "pulse-duo"
36
+ });
37
+ const variantColor = clsx({
38
+ /** Default style spinner colors */
39
+ "text-default": variant === "default",
40
+ "text-primary": variant === "primary",
41
+ "text-secondary": variant === "secondary",
42
+ "text-success": variant === "success",
43
+ "text-error": variant === "error",
44
+ "text-warning": variant === "warning"
45
+ });
46
+ return /* @__PURE__ */ jsx("div", { className: clsx(base, variantColor, className), style, children: type === "pulse-duo" && /* @__PURE__ */ jsxs(Fragment, { children: [
47
+ /* @__PURE__ */ jsx("span", { className: "absolute top-1/2 left-1/2 w-full h-full rounded-full bg-current animate-pulse-duo-before" }),
48
+ /* @__PURE__ */ jsx("span", { className: "absolute top-1/2 left-1/2 w-full h-full rounded-full bg-current animate-pulse-duo-after" })
49
+ ] }) });
43
50
  };
44
51
  export {
45
52
  Spinner
@@ -1 +1 @@
1
- {"version":3,"sources":["../components/Spinner/Spinner.module.scss","../components/Spinner/index.tsx"],"sourcesContent":["@keyframes rotation {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n}\n@keyframes pulse {\n 0% {\n opacity: 1;\n transform: scale(0);\n }\n 100% {\n opacity: 0;\n transform: scale(1);\n }\n}\n@keyframes pulse-duo {\n 0%, 100% {\n opacity: 1;\n transform: translate(-50%, -50%) scale(0);\n }\n 50% {\n opacity: 0;\n transform: translate(-50%, -50%) scale(1);\n }\n}\n.spinner-size--xsm {\n width: 1rem;\n height: 1rem;\n}\n.spinner-size--sm {\n width: 1.5rem;\n height: 1.5rem;\n}\n.spinner-size--md {\n width: 2rem;\n height: 2rem;\n}\n.spinner-size--lg {\n width: 2.5rem;\n height: 2.5rem;\n}\n.spinner-size--xlg {\n width: 3rem;\n height: 3rem;\n}\n.spinner-type--default {\n animation: rotation 800ms ease infinite;\n border-radius: 50%;\n}\n.spinner-type--default.spinner-variant--default {\n border: 3px solid rgba(31, 41, 55, 0.25);\n border-top-color: #1f2937;\n}\n.spinner-type--default.spinner-variant--primary {\n border: 3px solid rgba(37, 99, 235, 0.25);\n border-top-color: #2563eb;\n}\n.spinner-type--default.spinner-variant--secondary {\n border: 3px solid rgba(79, 70, 229, 0.25);\n border-top-color: #4f46e5;\n}\n.spinner-type--default.spinner-variant--success {\n border: 3px solid rgba(22, 163, 74, 0.25);\n border-top-color: #16a34a;\n}\n.spinner-type--default.spinner-variant--error {\n border: 3px solid rgba(220, 38, 38, 0.25);\n border-top-color: #dc2626;\n}\n.spinner-type--default.spinner-variant--warning {\n border: 3px solid rgba(217, 119, 6, 0.25);\n border-top-color: #d97706;\n}\n.spinner-type--duo {\n animation: rotation 800ms ease infinite;\n border: 3px solid transparent;\n border-radius: 50%;\n}\n.spinner-type--duo.spinner-variant--default {\n border-bottom-color: #1f2937;\n border-top-color: #1f2937;\n}\n.spinner-type--duo.spinner-variant--primary {\n border-bottom-color: #2563eb;\n border-top-color: #2563eb;\n}\n.spinner-type--duo.spinner-variant--secondary {\n border-bottom-color: #4f46e5;\n border-top-color: #4f46e5;\n}\n.spinner-type--duo.spinner-variant--success {\n border-bottom-color: #16a34a;\n border-top-color: #16a34a;\n}\n.spinner-type--duo.spinner-variant--error {\n border-bottom-color: #dc2626;\n border-top-color: #dc2626;\n}\n.spinner-type--duo.spinner-variant--warning {\n border-bottom-color: #d97706;\n border-top-color: #d97706;\n}\n.spinner-type--gradient {\n animation: rotation 800ms linear infinite;\n border-right: 3px solid transparent;\n border-radius: 50%;\n}\n.spinner-type--gradient.spinner-variant--default {\n border-top: 3px solid #1f2937;\n}\n.spinner-type--gradient.spinner-variant--primary {\n border-top: 3px solid #2563eb;\n}\n.spinner-type--gradient.spinner-variant--secondary {\n border-top: 3px solid #4f46e5;\n}\n.spinner-type--gradient.spinner-variant--success {\n border-top: 3px solid #16a34a;\n}\n.spinner-type--gradient.spinner-variant--error {\n border-top: 3px solid #dc2626;\n}\n.spinner-type--gradient.spinner-variant--warning {\n border-top: 3px solid #d97706;\n}\n.spinner-type--pulse {\n animation: pulse 1s ease-in-out infinite;\n border-radius: 50%;\n position: relative;\n}\n.spinner-type--pulse.spinner-variant--default {\n background-color: #1f2937;\n}\n.spinner-type--pulse.spinner-variant--primary {\n background-color: #2563eb;\n}\n.spinner-type--pulse.spinner-variant--secondary {\n background-color: #4f46e5;\n}\n.spinner-type--pulse.spinner-variant--success {\n background-color: #16a34a;\n}\n.spinner-type--pulse.spinner-variant--error {\n background-color: #dc2626;\n}\n.spinner-type--pulse.spinner-variant--warning {\n background-color: #d97706;\n}\n.spinner-type--pulse-duo {\n position: relative;\n}\n.spinner-type--pulse-duo.spinner-variant--default::after, .spinner-type--pulse-duo.spinner-variant--default::before {\n background-color: #1f2937;\n}\n.spinner-type--pulse-duo.spinner-variant--primary::after, .spinner-type--pulse-duo.spinner-variant--primary::before {\n background-color: #2563eb;\n}\n.spinner-type--pulse-duo.spinner-variant--secondary::after, .spinner-type--pulse-duo.spinner-variant--secondary::before {\n background-color: #4f46e5;\n}\n.spinner-type--pulse-duo.spinner-variant--success::after, .spinner-type--pulse-duo.spinner-variant--success::before {\n background-color: #16a34a;\n}\n.spinner-type--pulse-duo.spinner-variant--error::after, .spinner-type--pulse-duo.spinner-variant--error::before {\n background-color: #dc2626;\n}\n.spinner-type--pulse-duo.spinner-variant--warning::after, .spinner-type--pulse-duo.spinner-variant--warning::before {\n background-color: #d97706;\n}\n.spinner-type--pulse-duo::before, .spinner-type--pulse-duo::after {\n content: \"\";\n position: absolute;\n top: 50%;\n left: 50%;\n width: 100%;\n height: 100%;\n border-radius: 50%;\n transform: translate(-50%, -50%) scale(0);\n}\n.spinner-type--pulse-duo::before {\n animation: pulse-duo 2s ease-in-out infinite;\n}\n.spinner-type--pulse-duo::after {\n animation: pulse-duo 2s 1s ease-in-out infinite;\n}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VSb290IjoiL1VzZXJzL2RodW5hbnlhbi9hcmlzdG9ieXRlL2dpdGh1Yi9hcmlzdG9ieXRlLXVpL3BhY2thZ2VzL3NwaW5uZXIvY29tcG9uZW50cy9TcGlubmVyIiwic291cmNlcyI6WyJTcGlubmVyLm1vZHVsZS5zY3NzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BhcmlzdG9ieXRlLXVpL3V0aWxzL3N0eWxlcy9fc2V0dGluZ3Muc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTtFQUNFO0lBQ0U7O0VBRUY7SUFDRTs7O0FBSUo7RUFDRTtJQUNFO0lBQ0E7O0VBRUY7SUFDRTtJQUNBOzs7QUFJSjtFQUNFO0lBRUU7SUFDQTs7RUFFRjtJQUNFO0lBQ0E7OztBQU1BO0VBQ0U7RUFDQTs7QUFHRjtFQUNFO0VBQ0E7O0FBR0Y7RUFDRTtFQUNBOztBQUdGO0VBQ0U7RUFDQTs7QUFHRjtFQUNFO0VBQ0E7O0FBS0Y7RUFDRTtFQUNBOztBQUdFO0VBQ0U7RUFDQTs7QUFFRjtFQUNFO0VBQ0E7O0FBRUY7RUFDRTtFQUNBOztBQUVGO0VBQ0U7RUFDQTs7QUFFRjtFQUNFO0VBQ0E7O0FBRUY7RUFDRTtFQUNBOztBQUtOO0VBQ0U7RUFDQTtFQUNBOztBQUdFO0VBQ0U7RUFDQTs7QUFFRjtFQUNFO0VBQ0E7O0FBRUY7RUFDRTtFQUNBOztBQUVGO0VBQ0U7RUFDQTs7QUFFRjtFQUNFO0VBQ0E7O0FBRUY7RUFDRTtFQUNBOztBQUtOO0VBQ0U7RUFDQTtFQUNBOztBQUdFO0VBQ0U7O0FBRUY7RUFDRTs7QUFFRjtFQUNFOztBQUVGO0VBQ0U7O0FBRUY7RUFDRTs7QUFFRjtFQUNFOztBQUtOO0VBQ0U7RUFDQTtFQUNBOztBQUdFO0VBQ0Usa0JDeEdDOztBRDBHSDtFQUNFLGtCQ2pHQzs7QURtR0g7RUFDRSxrQkN4Rkc7O0FEMEZMO0VBQ0Usa0JDdkVFOztBRHlFSjtFQUNFLGtCQ3BGQTs7QURzRkY7RUFDRSxrQkNuRUU7O0FEd0VSO0VBQ0U7O0FBR0U7RUFFRSxrQkNsSUM7O0FEb0lIO0VBRUUsa0JDNUhDOztBRDhISDtFQUVFLGtCQ3BIRzs7QURzSEw7RUFFRSxrQkNwR0U7O0FEc0dKO0VBRUUsa0JDbEhBOztBRG9IRjtFQUVFLGtCQ2xHRTs7QURzR047RUFFRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUVGO0VBQ0U7O0FBRUY7RUFDRSIsInNvdXJjZXNDb250ZW50IjpbIkB1c2UgXCJAYXJpc3RvYnl0ZS11aS91dGlscy9zdHlsZXMvc2V0dGluZ3NcIiBhcyAqO1xuXG5Aa2V5ZnJhbWVzIHJvdGF0aW9uIHtcbiAgZnJvbSB7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XG4gIH1cbiAgdG8ge1xuICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7XG4gIH1cbn1cblxuQGtleWZyYW1lcyBwdWxzZSB7XG4gIDAlIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMCk7XG4gIH1cbiAgMTAwJSB7XG4gICAgb3BhY2l0eTogMDtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDEpO1xuICB9XG59XG5cbkBrZXlmcmFtZXMgcHVsc2UtZHVvIHtcbiAgMCUsXG4gIDEwMCUge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSkgc2NhbGUoMCk7XG4gIH1cbiAgNTAlIHtcbiAgICBvcGFjaXR5OiAwO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpIHNjYWxlKDEpO1xuICB9XG59XG5cbi5zcGlubmVyIHtcbiAgJi1zaXplIHtcbiAgICAmLS14c20ge1xuICAgICAgd2lkdGg6IDFyZW07IC8vIDE2cHhcbiAgICAgIGhlaWdodDogMXJlbTtcbiAgICB9XG5cbiAgICAmLS1zbSB7XG4gICAgICB3aWR0aDogMS41cmVtOyAvLyAyNHB4XG4gICAgICBoZWlnaHQ6IDEuNXJlbTtcbiAgICB9XG5cbiAgICAmLS1tZCB7XG4gICAgICB3aWR0aDogMnJlbTsgLy8gMzJweFxuICAgICAgaGVpZ2h0OiAycmVtO1xuICAgIH1cblxuICAgICYtLWxnIHtcbiAgICAgIHdpZHRoOiAyLjVyZW07IC8vIDQwcHhcbiAgICAgIGhlaWdodDogMi41cmVtO1xuICAgIH1cblxuICAgICYtLXhsZyB7XG4gICAgICB3aWR0aDogM3JlbTsgLy8gNDhweFxuICAgICAgaGVpZ2h0OiAzcmVtO1xuICAgIH1cbiAgfVxuXG4gICYtdHlwZSB7XG4gICAgJi0tZGVmYXVsdCB7XG4gICAgICBhbmltYXRpb246IHJvdGF0aW9uIDgwMG1zIGVhc2UgaW5maW5pdGU7XG4gICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG5cbiAgICAgICYuc3Bpbm5lci12YXJpYW50IHtcbiAgICAgICAgJi0tZGVmYXVsdCB7XG4gICAgICAgICAgYm9yZGVyOiAzcHggc29saWQgcmdiYSgkY29sb3ItZGVmYXVsdCwgMC4yNSk7XG4gICAgICAgICAgYm9yZGVyLXRvcC1jb2xvcjogcmdiYSgkY29sb3ItZGVmYXVsdCwgMSk7XG4gICAgICAgIH1cbiAgICAgICAgJi0tcHJpbWFyeSB7XG4gICAgICAgICAgYm9yZGVyOiAzcHggc29saWQgcmdiYSgkY29sb3ItcHJpbWFyeSwgMC4yNSk7XG4gICAgICAgICAgYm9yZGVyLXRvcC1jb2xvcjogcmdiYSgkY29sb3ItcHJpbWFyeSwgMSk7XG4gICAgICAgIH1cbiAgICAgICAgJi0tc2Vjb25kYXJ5IHtcbiAgICAgICAgICBib3JkZXI6IDNweCBzb2xpZCByZ2JhKCRjb2xvci1zZWNvbmRhcnksIDAuMjUpO1xuICAgICAgICAgIGJvcmRlci10b3AtY29sb3I6IHJnYmEoJGNvbG9yLXNlY29uZGFyeSwgMSk7XG4gICAgICAgIH1cbiAgICAgICAgJi0tc3VjY2VzcyB7XG4gICAgICAgICAgYm9yZGVyOiAzcHggc29saWQgcmdiYSgkY29sb3Itc3VjY2VzcywgMC4yNSk7XG4gICAgICAgICAgYm9yZGVyLXRvcC1jb2xvcjogcmdiYSgkY29sb3Itc3VjY2VzcywgMSk7XG4gICAgICAgIH1cbiAgICAgICAgJi0tZXJyb3Ige1xuICAgICAgICAgIGJvcmRlcjogM3B4IHNvbGlkIHJnYmEoJGNvbG9yLWVycm9yLCAwLjI1KTtcbiAgICAgICAgICBib3JkZXItdG9wLWNvbG9yOiByZ2JhKCRjb2xvci1lcnJvciwgMSk7XG4gICAgICAgIH1cbiAgICAgICAgJi0td2FybmluZyB7XG4gICAgICAgICAgYm9yZGVyOiAzcHggc29saWQgcmdiYSgkY29sb3Itd2FybmluZywgMC4yNSk7XG4gICAgICAgICAgYm9yZGVyLXRvcC1jb2xvcjogcmdiYSgkY29sb3Itd2FybmluZywgMSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLS1kdW8ge1xuICAgICAgYW5pbWF0aW9uOiByb3RhdGlvbiA4MDBtcyBlYXNlIGluZmluaXRlO1xuICAgICAgYm9yZGVyOiAzcHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG5cbiAgICAgICYuc3Bpbm5lci12YXJpYW50IHtcbiAgICAgICAgJi0tZGVmYXVsdCB7XG4gICAgICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogcmdiYSgkY29sb3ItZGVmYXVsdCwgMSk7XG4gICAgICAgICAgYm9yZGVyLXRvcC1jb2xvcjogcmdiYSgkY29sb3ItZGVmYXVsdCwgMSk7XG4gICAgICAgIH1cbiAgICAgICAgJi0tcHJpbWFyeSB7XG4gICAgICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogcmdiYSgkY29sb3ItcHJpbWFyeSwgMSk7XG4gICAgICAgICAgYm9yZGVyLXRvcC1jb2xvcjogcmdiYSgkY29sb3ItcHJpbWFyeSwgMSk7XG4gICAgICAgIH1cbiAgICAgICAgJi0tc2Vjb25kYXJ5IHtcbiAgICAgICAgICBib3JkZXItYm90dG9tLWNvbG9yOiByZ2JhKCRjb2xvci1zZWNvbmRhcnksIDEpO1xuICAgICAgICAgIGJvcmRlci10b3AtY29sb3I6IHJnYmEoJGNvbG9yLXNlY29uZGFyeSwgMSk7XG4gICAgICAgIH1cbiAgICAgICAgJi0tc3VjY2VzcyB7XG4gICAgICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogcmdiYSgkY29sb3Itc3VjY2VzcywgMSk7XG4gICAgICAgICAgYm9yZGVyLXRvcC1jb2xvcjogcmdiYSgkY29sb3Itc3VjY2VzcywgMSk7XG4gICAgICAgIH1cbiAgICAgICAgJi0tZXJyb3Ige1xuICAgICAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6IHJnYmEoJGNvbG9yLWVycm9yLCAxKTtcbiAgICAgICAgICBib3JkZXItdG9wLWNvbG9yOiByZ2JhKCRjb2xvci1lcnJvciwgMSk7XG4gICAgICAgIH1cbiAgICAgICAgJi0td2FybmluZyB7XG4gICAgICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogcmdiYSgkY29sb3Itd2FybmluZywgMSk7XG4gICAgICAgICAgYm9yZGVyLXRvcC1jb2xvcjogcmdiYSgkY29sb3Itd2FybmluZywgMSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLS1ncmFkaWVudCB7XG4gICAgICBhbmltYXRpb246IHJvdGF0aW9uIDgwMG1zIGxpbmVhciBpbmZpbml0ZTtcbiAgICAgIGJvcmRlci1yaWdodDogM3B4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuXG4gICAgICAmLnNwaW5uZXItdmFyaWFudCB7XG4gICAgICAgICYtLWRlZmF1bHQge1xuICAgICAgICAgIGJvcmRlci10b3A6IDNweCBzb2xpZCByZ2JhKCRjb2xvci1kZWZhdWx0LCAxKTtcbiAgICAgICAgfVxuICAgICAgICAmLS1wcmltYXJ5IHtcbiAgICAgICAgICBib3JkZXItdG9wOiAzcHggc29saWQgcmdiYSgkY29sb3ItcHJpbWFyeSwgMSk7XG4gICAgICAgIH1cbiAgICAgICAgJi0tc2Vjb25kYXJ5IHtcbiAgICAgICAgICBib3JkZXItdG9wOiAzcHggc29saWQgcmdiYSgkY29sb3Itc2Vjb25kYXJ5LCAxKTtcbiAgICAgICAgfVxuICAgICAgICAmLS1zdWNjZXNzIHtcbiAgICAgICAgICBib3JkZXItdG9wOiAzcHggc29saWQgcmdiYSgkY29sb3Itc3VjY2VzcywgMSk7XG4gICAgICAgIH1cbiAgICAgICAgJi0tZXJyb3Ige1xuICAgICAgICAgIGJvcmRlci10b3A6IDNweCBzb2xpZCByZ2JhKCRjb2xvci1lcnJvciwgMSk7XG4gICAgICAgIH1cbiAgICAgICAgJi0td2FybmluZyB7XG4gICAgICAgICAgYm9yZGVyLXRvcDogM3B4IHNvbGlkIHJnYmEoJGNvbG9yLXdhcm5pbmcsIDEpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgJi0tcHVsc2Uge1xuICAgICAgYW5pbWF0aW9uOiBwdWxzZSAxcyBlYXNlLWluLW91dCBpbmZpbml0ZTtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgICAgJi5zcGlubmVyLXZhcmlhbnQge1xuICAgICAgICAmLS1kZWZhdWx0IHtcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3ItZGVmYXVsdDtcbiAgICAgICAgfVxuICAgICAgICAmLS1wcmltYXJ5IHtcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3ItcHJpbWFyeTtcbiAgICAgICAgfVxuICAgICAgICAmLS1zZWNvbmRhcnkge1xuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvci1zZWNvbmRhcnk7XG4gICAgICAgIH1cbiAgICAgICAgJi0tc3VjY2VzcyB7XG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLXN1Y2Nlc3M7XG4gICAgICAgIH1cbiAgICAgICAgJi0tZXJyb3Ige1xuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvci1lcnJvcjtcbiAgICAgICAgfVxuICAgICAgICAmLS13YXJuaW5nIHtcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3Itd2FybmluZztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgICYtLXB1bHNlLWR1byB7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAgICYuc3Bpbm5lci12YXJpYW50IHtcbiAgICAgICAgJi0tZGVmYXVsdDo6YWZ0ZXIsXG4gICAgICAgICYtLWRlZmF1bHQ6OmJlZm9yZSB7XG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLWRlZmF1bHQ7XG4gICAgICAgIH1cbiAgICAgICAgJi0tcHJpbWFyeTo6YWZ0ZXIsXG4gICAgICAgICYtLXByaW1hcnk6OmJlZm9yZSB7XG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLXByaW1hcnk7XG4gICAgICAgIH1cbiAgICAgICAgJi0tc2Vjb25kYXJ5OjphZnRlcixcbiAgICAgICAgJi0tc2Vjb25kYXJ5OjpiZWZvcmUge1xuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvci1zZWNvbmRhcnk7XG4gICAgICAgIH1cbiAgICAgICAgJi0tc3VjY2Vzczo6YWZ0ZXIsXG4gICAgICAgICYtLXN1Y2Nlc3M6OmJlZm9yZSB7XG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLXN1Y2Nlc3M7XG4gICAgICAgIH1cbiAgICAgICAgJi0tZXJyb3I6OmFmdGVyLFxuICAgICAgICAmLS1lcnJvcjo6YmVmb3JlIHtcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3ItZXJyb3I7XG4gICAgICAgIH1cbiAgICAgICAgJi0td2FybmluZzo6YWZ0ZXIsXG4gICAgICAgICYtLXdhcm5pbmc6OmJlZm9yZSB7XG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLXdhcm5pbmc7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgJjo6YmVmb3JlLFxuICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogNTAlO1xuICAgICAgICBsZWZ0OiA1MCU7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSkgc2NhbGUoMCk7XG4gICAgICB9XG4gICAgICAmOjpiZWZvcmUge1xuICAgICAgICBhbmltYXRpb246IHB1bHNlLWR1byAycyBlYXNlLWluLW91dCBpbmZpbml0ZTtcbiAgICAgIH1cbiAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgYW5pbWF0aW9uOiBwdWxzZS1kdW8gMnMgMXMgZWFzZS1pbi1vdXQgaW5maW5pdGU7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC8vXG4vLyAgICAgICAgQXJpc3RvQnl0ZSBVSSAtIFN0eWxlIFNldHRpbmdzICAgICAgIC8vXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC8vXG5cbi8vID09PSBEZXNpZ24gVG9rZW5zIOKAlCBDb2xvciBQYWxldHRlID09PSAvL1xuLy8gTG9nb1xuJGxvZ28tY29sb3ItMTogI2ZmZWUyNztcbiRsb2dvLWNvbG9yLTI6ICNmZWM4MDA7XG4kbG9nby1jb2xvci0zOiAjZjE4ZTM1O1xuJGxvZ28tY29sb3ItNDogI2U5NWYzMjtcbiRsb2dvLWNvbG9yLTU6ICNlMjMxMmQ7XG4kbG9nby1ncmFkaWVudDogbGluZWFyLWdyYWRpZW50KFxuICA5MGRlZyxcbiAgJGxvZ28tY29sb3ItMSxcbiAgJGxvZ28tY29sb3ItMixcbiAgJGxvZ28tY29sb3ItMyxcbiAgJGxvZ28tY29sb3ItNCxcbiAgJGxvZ28tY29sb3ItNVxuKTtcblxuLy8gQmFzZVxuJHdoaXRlOiAjZmZmZmZmO1xuJHdoaXRlLWhvdmVyOiAjZGRkZGRkO1xuJGJsYWNrOiAjMDAwMDAwO1xuJGJsYWNrLWhvdmVyOiAjMjIyMjIyO1xuJHRyYW5zcGFyZW50OiB0cmFuc3BhcmVudDtcblxuLy8gPT09IEJsYWNrIFRyYW5zcGFyZW50IFNjYWxlID09PSAvL1xuJGJsYWNrLXRyYW5zcGFyZW50LTEwMDogcmdiYSgwLCAwLCAwLCAwLjEpO1xuJGJsYWNrLXRyYW5zcGFyZW50LTIwMDogcmdiYSgwLCAwLCAwLCAwLjIpO1xuJGJsYWNrLXRyYW5zcGFyZW50LTMwMDogcmdiYSgwLCAwLCAwLCAwLjMpO1xuJGJsYWNrLXRyYW5zcGFyZW50LTQwMDogcmdiYSgwLCAwLCAwLCAwLjQpO1xuJGJsYWNrLXRyYW5zcGFyZW50LTUwMDogcmdiYSgwLCAwLCAwLCAwLjUpO1xuJGJsYWNrLXRyYW5zcGFyZW50LTYwMDogcmdiYSgwLCAwLCAwLCAwLjYpO1xuJGJsYWNrLXRyYW5zcGFyZW50LTcwMDogcmdiYSgwLCAwLCAwLCAwLjcpO1xuJGJsYWNrLXRyYW5zcGFyZW50LTgwMDogcmdiYSgwLCAwLCAwLCAwLjgpO1xuJGJsYWNrLXRyYW5zcGFyZW50LTkwMDogcmdiYSgwLCAwLCAwLCAwLjkpO1xuXG4vLyA9PT0gQmxhY2sgVHJhbnNwYXJlbnQgU2NhbGUgPT09IC8vXG4kd2hpdGUtdHJhbnNwYXJlbnQtMTAwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7XG4kd2hpdGUtdHJhbnNwYXJlbnQtMjAwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMik7XG4kd2hpdGUtdHJhbnNwYXJlbnQtMzAwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMyk7XG4kd2hpdGUtdHJhbnNwYXJlbnQtNDAwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNCk7XG4kd2hpdGUtdHJhbnNwYXJlbnQtNTAwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSk7XG4kd2hpdGUtdHJhbnNwYXJlbnQtNjAwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNik7XG4kd2hpdGUtdHJhbnNwYXJlbnQtNzAwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNyk7XG4kd2hpdGUtdHJhbnNwYXJlbnQtODAwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOCk7XG4kd2hpdGUtdHJhbnNwYXJlbnQtOTAwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOSk7XG5cbi8vID09PSBOZXV0cmFsIFNjYWxlIChHcmV5KSA9PT0gLy9cbiRncmV5LTUwOiAjZjlmYWZiO1xuJGdyZXktMTAwOiAjZjNmNGY2O1xuJGdyZXktMjAwOiAjZTVlN2ViO1xuJGdyZXktMzAwOiAjZDFkNWRiO1xuJGdyZXktNDAwOiAjOWNhM2FmO1xuJGdyZXktNTAwOiAjNmI3MjgwO1xuJGdyZXktNjAwOiAjNGI1NTYzO1xuJGdyZXktNzAwOiAjMzc0MTUxO1xuJGdyZXktODAwOiAjMWYyOTM3O1xuJGdyZXktOTAwOiAjMTExODI3O1xuXG4vLyA9PT0gUHJpbWFyeSBTY2FsZSAoQmx1ZSkgPT09IC8vXG4kYmx1ZS01MDogI2VmZjZmZjtcbiRibHVlLTEwMDogI2RiZWFmZTtcbiRibHVlLTIwMDogI2JmZGJmZTtcbiRibHVlLTMwMDogIzkzYzVmZDtcbiRibHVlLTQwMDogIzYwYTVmYTtcbiRibHVlLTUwMDogIzNiODJmNjtcbiRibHVlLTYwMDogIzI1NjNlYjsgLy8gTWFpblxuJGJsdWUtNzAwOiAjMWQ0ZWQ4OyAvLyBIb3ZlclxuJGJsdWUtODAwOiAjMWU0MGFmO1xuJGJsdWUtOTAwOiAjMWUzYThhO1xuXG4vLyA9PT0gU2Vjb25kYXJ5IFNjYWxlIChJbmRpZ28pID09PSAvL1xuJGluZGlnby01MDogI2VlZjJmZjtcbiRpbmRpZ28tMTAwOiAjZTBlN2ZmO1xuJGluZGlnby0yMDA6ICNjN2QyZmU7XG4kaW5kaWdvLTMwMDogI2E1YjRmYztcbiRpbmRpZ28tNDAwOiAjODE4Y2Y4O1xuJGluZGlnby01MDA6ICM2MzY2ZjE7XG4kaW5kaWdvLTYwMDogIzRmNDZlNTsgLy8gTWFpblxuJGluZGlnby03MDA6ICM0MzM4Y2E7IC8vIEhvdmVyXG5cbi8vID09PSBFcnJvciBTY2FsZSAoUmVkKSA9PT0gLy9cbiRyZWQtNTA6ICNmZWYyZjI7XG4kcmVkLTEwMDogI2ZlZTJlMjtcbiRyZWQtMjAwOiAjZmVjYWNhO1xuJHJlZC0zMDA6ICNmY2E1YTU7XG4kcmVkLTQwMDogI2Y4NzE3MTtcbiRyZWQtNTAwOiAjZWY0NDQ0O1xuJHJlZC02MDA6ICNkYzI2MjY7IC8vIE1haW5cbiRyZWQtNzAwOiAjYjkxYzFjOyAvLyBIb3ZlclxuXG4vLyA9PT0gU3VjY2VzcyBTY2FsZSAoR3JlZW4pID09PSAvL1xuJGdyZWVuLTUwOiAjZjBmZGY0O1xuJGdyZWVuLTEwMDogI2RjZmNlNztcbiRncmVlbi0yMDA6ICNiYmY3ZDA7XG4kZ3JlZW4tMzAwOiAjODZlZmFjO1xuJGdyZWVuLTQwMDogIzRhZGU4MDtcbiRncmVlbi01MDA6ICMyMmM1NWU7XG4kZ3JlZW4tNjAwOiAjMTZhMzRhOyAvLyBNYWluXG4kZ3JlZW4tNzAwOiAjMTU4MDNkOyAvLyBIb3ZlclxuXG4vLyA9PT0gV2FybmluZyBTY2FsZSAoQW1iZXIpID09PSAvL1xuJGFtYmVyLTUwOiAjZmZmYmViO1xuJGFtYmVyLTEwMDogI2ZlZjNjNztcbiRhbWJlci0yMDA6ICNmZGU2OGE7XG4kYW1iZXItMzAwOiAjZmNkMzRkO1xuJGFtYmVyLTQwMDogI2ZiYmYyNDtcbiRhbWJlci01MDA6ICNmNTllMGI7XG4kYW1iZXItNjAwOiAjZDk3NzA2OyAvLyBNYWluXG4kYW1iZXItNzAwOiAjYjQ1MzA5OyAvLyBIb3ZlclxuXG4vLyA9PT0gU2VtYW50aWMgVG9rZW5zID09PSAvL1xuJGNvbG9yLWRlZmF1bHQ6ICRncmV5LTgwMDtcbiRjb2xvci1kZWZhdWx0LWhvdmVyOiAkZ3JleS05MDA7XG4kY29sb3ItZGVmYXVsdC1kaXNhYmxlZDogcmdiYSgkY29sb3ItZGVmYXVsdCwgMC41KTtcblxuJGNvbG9yLXByaW1hcnk6ICRibHVlLTYwMDtcbiRjb2xvci1wcmltYXJ5LWhvdmVyOiAkYmx1ZS03MDA7XG4kY29sb3ItcHJpbWFyeS1kaXNhYmxlZDogcmdiYSgkY29sb3ItcHJpbWFyeSwgMC41KTtcblxuJGNvbG9yLXNlY29uZGFyeTogJGluZGlnby02MDA7XG4kY29sb3Itc2Vjb25kYXJ5LWhvdmVyOiAkaW5kaWdvLTcwMDtcbiRjb2xvci1zZWNvbmRhcnktZGlzYWJsZWQ6IHJnYmEoJGNvbG9yLXNlY29uZGFyeSwgMC41KTtcblxuJGNvbG9yLWVycm9yOiAkcmVkLTYwMDtcbiRjb2xvci1lcnJvci1ob3ZlcjogJHJlZC03MDA7XG4kY29sb3ItZXJyb3ItZGlzYWJsZWQ6IHJnYmEoJGNvbG9yLWVycm9yLCAwLjUpO1xuXG4kY29sb3Itc3VjY2VzczogJGdyZWVuLTYwMDtcbiRjb2xvci1zdWNjZXNzLWhvdmVyOiAkZ3JlZW4tNzAwO1xuJGNvbG9yLXN1Y2Nlc3MtZGlzYWJsZWQ6IHJnYmEoJGNvbG9yLXN1Y2Nlc3MsIDAuNSk7XG5cbiRjb2xvci13YXJuaW5nOiAkYW1iZXItNjAwO1xuJGNvbG9yLXdhcm5pbmctaG92ZXI6ICRhbWJlci03MDA7XG4kY29sb3Itd2FybmluZy1kaXNhYmxlZDogcmdiYSgkY29sb3Itd2FybmluZywgMC41KTtcblxuJHRleHQtY29sb3Itd2hpdGU6ICR3aGl0ZTtcbiR0ZXh0LWNvbG9yLWJsYWNrOiAkYmxhY2s7XG4kdGV4dC1jb2xvci13aGl0ZS1kaXNhYmxlZDogcmdiYSgkd2hpdGUsIDAuNSk7XG4kdGV4dC1jb2xvci1ibGFjay1kaXNhYmxlZDogcmdiYSgkYmxhY2ssIDAuNSk7XG5cbiR0aXRsZS1jb2xvci1kYXJrOiAkd2hpdGU7XG4kc3VidGl0bGUtY29sb3ItZGFyazogIzk5YTFhZjtcbiRkZXNjcmlwdGlvbi1jb2xvci1kYXJrOiAjZDFkNWRjO1xuJGljb24tY29sb3ItZGFyazogIzk5YTFhZjtcblxuLy8gPT09IFNoYWRvd3MgPT09IC8vXG4vL0BUT0RPOiBAU0hBRE9XXG4kc2hhZG93LXNtOiAwIDFweCAycHggMCByZ2JhKCRibGFjaywgMC4wNSk7XG4kc2hhZG93LW1kOlxuICAwIDRweCA2cHggLTFweCByZ2JhKCRibGFjaywgMC4xKSxcbiAgMCAycHggNHB4IC0xcHggcmdiYSgkYmxhY2ssIDAuMDYpO1xuJHNoYWRvdy1sZzpcbiAgMCAxMHB4IDE1cHggLTNweCByZ2JhKCRibGFjaywgMC4xKSxcbiAgMCA0cHggNnB4IC0ycHggcmdiYSgkYmxhY2ssIDAuMDUpO1xuXG4vLyA9PT0gRm9udCBmYW1pbGllcyA9PT0gLy9cbiRmb250LWZhbWlseS1zYW5zOiBcIkludGVyXCIsIHNhbnMtc2VyaWY7XG4kZm9udC1mYW1pbHktc2VyaWY6IFwiR2VvcmdpYVwiLCBzZXJpZjtcbiRmb250LWZhbWlseS1tb25vOiBcIkZpcmEgQ29kZVwiLCBtb25vc3BhY2U7XG5cbi8vID09PSBGb250IHdlaWdodHMgPT09IC8vXG4kZm9udC13ZWlnaHQtcmVndWxhcjogNDAwO1xuJGZvbnQtd2VpZ2h0LW1lZGl1bTogNTAwO1xuJGZvbnQtd2VpZ2h0LXNlbWlib2xkOiA2MDA7XG4kZm9udC13ZWlnaHQtYm9sZDogNzAwO1xuXG4vLyA9PT0gTGluZSBoZWlnaHRzID09PSAvL1xuJGxpbmUtaGVpZ2h0LXRpZ2h0OiAxLjI7XG4kbGluZS1oZWlnaHQtc251ZzogMS4zNzU7XG4kbGluZS1oZWlnaHQtbm9ybWFsOiAxLjU7XG4kbGluZS1oZWlnaHQtbG9vc2U6IDEuNjI1O1xuXG4vLyA9PT0gRm9udCBTaXplcyDigJQgU2VtYW50aWMgVG9rZW5zID09PSAvL1xuXG4vLyA9PT0gVGl0bGVzID09PSAvL1xuJGZvbnQtc2l6ZS1oZXJvOiAzcmVtOyAvLyA0OHB4XG4kZm9udC1zaXplLXRpdGxlLTE6IDIuMjVyZW07IC8vIDM2cHhcbiRmb250LXNpemUtdGl0bGUtMjogMS44NzVyZW07IC8vIDMwcHhcbiRmb250LXNpemUtdGl0bGUtMzogMS41cmVtOyAvLyAyNHB4XG5cbi8vID09PSBTdWJ0aXRsZXMgPT09IC8vXG4kZm9udC1zaXplLXN1YnRpdGxlLTE6IDEuMjVyZW07IC8vIDIwcHhcbiRmb250LXNpemUtc3VidGl0bGUtMjogMS4xMjVyZW07IC8vIDE4cHhcblxuLy8gPT09IEJvZHkgdGV4dCA9PT0gLy9cbiRmb250LXNpemUtYm9keS1sZzogMXJlbTsgLy8gMTZweFxuJGZvbnQtc2l6ZS1ib2R5LW1kOiAwLjkzNzVyZW07IC8vIDE1cHhcbiRmb250LXNpemUtYm9keS1zbTogMC44NzVyZW07IC8vIDE0cHhcblxuLy8gPT09IENhcHRpb25zIC8gRGVzY3JpcHRpb25zID09PSAvL1xuJGZvbnQtc2l6ZS1jYXB0aW9uOiAwLjc1cmVtOyAvLyAxMnB4XG4kZm9udC1zaXplLWZvb3Rub3RlOiAwLjY4NzVyZW07IC8vIDExcHhcblxuLy8gPT09IEJ1dHRvbnMgPT09IC8vXG4kZm9udC1zaXplLWJ1dHRvbi1sZzogMXJlbTsgLy8gMTZweFxuJGZvbnQtc2l6ZS1idXR0b24tbWQ6IDAuODc1cmVtOyAvLyAxNHB4XG4kZm9udC1zaXplLWJ1dHRvbi1zbTogMC43NXJlbTsgLy8gMTJweFxuXG4vLyA9PT0gQW5pbWF0aW9ucyA9PT0gLy9cblxuJGN1YmljLWJlemllci1wcmltYXJ5OiBjdWJpYy1iZXppZXIoMC41NSwgLTAuMTksIDAuNTksIDAuOTUpO1xuJGN1YmljLWJlemllci1zZWNvbmRhcnk6IGN1YmljLWJlemllcigwLjE3NSwgMC44ODUsIDAuMzIsIDEuMjc1KTtcbiJdfQ== */","\"use client\";\n\nimport * as React from \"react\";\n\nimport styles from \"./Spinner.module.scss\";\n\nexport interface ISpinner {\n type?: \"default\" | \"duo\" | \"gradient\" | \"pulse\" | \"pulse-duo\";\n variant?:\n | \"default\"\n | \"primary\"\n | \"secondary\"\n | \"success\"\n | \"error\"\n | \"warning\";\n size?: \"xsm\" | \"sm\" | \"md\" | \"lg\" | \"xlg\";\n className?: string;\n style?: React.CSSProperties;\n}\n\nexport const Spinner: React.FC<ISpinner> = ({\n type = \"default\",\n variant = \"default\",\n size = \"md\",\n className = \"\",\n style = {},\n}) => {\n return (\n <div\n className={`spinner ${styles[`spinner-type--${type}`]} ${\n styles[`spinner-variant--${variant}`]\n } ${styles[`spinner-size--${size}`]} ${className}`}\n style={style}\n />\n );\n};\n"],"mappings":";;;;AAAA;AAAA,EAAW,UAAAA;AAAA,EAQA,OAAAC;AAAA,EAUA,aAAAC;AAAA,EAUV,qBAAAC;AAAA,EAIA,oBAAAC;AAAA,EAIA,oBAAAC;AAAA,EAIA,oBAAAC;AAAA,EAIA,qBAAAC;AAAA,EAIA,yBAAAC;AAAA,EAIsB,4BAAAC;AAAA,EAIA,4BAAAC;AAAA,EAIA,8BAAAC;AAAA,EAIA,4BAAAC;AAAA,EAIA,0BAAAC;AAAA,EAIA,4BAAAC;AAAA,EAItB,qBAAAC;AAAA,EA6BA,0BAAAC;AAAA,EAuBA,uBAAAC;AAAA,EAuBA,2BAAAC;AAAA;;;AC3HG;AARG,IAAM,UAA8B,CAAC;AAAA,EAC1C,OAAO;AAAA,EACP,UAAU;AAAA,EACV,OAAO;AAAA,EACP,YAAY;AAAA,EACZ,QAAQ,CAAC;AACX,MAAM;AACJ,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAW,WAAW,uBAAO,iBAAiB,IAAI,EAAE,CAAC,IACnD,uBAAO,oBAAoB,OAAO,EAAE,CACtC,IAAI,uBAAO,iBAAiB,IAAI,EAAE,CAAC,IAAI,SAAS;AAAA,MAChD;AAAA;AAAA,EACF;AAEJ;","names":["rotation","pulse","pulse-duo","spinner-size--xsm","spinner-size--sm","spinner-size--md","spinner-size--lg","spinner-size--xlg","spinner-type--default","spinner-variant--default","spinner-variant--primary","spinner-variant--secondary","spinner-variant--success","spinner-variant--error","spinner-variant--warning","spinner-type--duo","spinner-type--gradient","spinner-type--pulse","spinner-type--pulse-duo"]}
1
+ {"version":3,"sources":["../components/Spinner.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport clsx from \"clsx\";\n\nexport interface ISpinner {\n type?: \"default\" | \"duo\" | \"gradient\" | \"pulse\" | \"pulse-duo\";\n variant?:\n | \"default\"\n | \"primary\"\n | \"secondary\"\n | \"success\"\n | \"error\"\n | \"warning\";\n size?: \"xsm\" | \"sm\" | \"md\" | \"lg\" | \"xlg\";\n className?: string;\n style?: React.CSSProperties;\n}\n\nconst sizeMap = {\n xsm: \"w-4 h-4\", // 16px\n sm: \"w-6 h-6\", // 24px\n md: \"w-8 h-8\", // 32px\n lg: \"w-10 h-10\", // 40px\n xlg: \"w-12 h-12\", // 48px\n};\n\nexport const Spinner: React.FC<ISpinner> = ({\n type = \"default\",\n variant = \"default\",\n size = \"md\",\n className = \"\",\n style = {},\n}) => {\n const base = clsx(\"inline-block relative\", sizeMap[size], {\n /** Default spinner */\n \"animate-rotation rounded-full border-2 border-solid border-t-current border-opacity-25\":\n type === \"default\",\n /** Duo spinner */\n \"animate-rotation rounded-full border-2 border-solid border-transparent\":\n type === \"duo\",\n /** Gradient spinner */\n \"animate-rotation-linear rounded-full border-2 border-solid border-r-transparent\":\n type === \"gradient\",\n /** Pulse */\n \"animate-pulse rounded-full\": type === \"pulse\",\n /** Pulse-duo */\n \"rounded-full\": type === \"pulse-duo\",\n });\n\n const variantColor = clsx({\n /** Default style spinner colors */\n \"text-default\": variant === \"default\",\n \"text-primary\": variant === \"primary\",\n \"text-secondary\": variant === \"secondary\",\n \"text-success\": variant === \"success\",\n \"text-error\": variant === \"error\",\n \"text-warning\": variant === \"warning\",\n });\n\n return (\n <div className={clsx(base, variantColor, className)} style={style}>\n {type === \"pulse-duo\" && (\n <>\n <span className=\"absolute top-1/2 left-1/2 w-full h-full rounded-full bg-current animate-pulse-duo-before\" />\n <span className=\"absolute top-1/2 left-1/2 w-full h-full rounded-full bg-current animate-pulse-duo-after\" />\n </>\n )}\n </div>\n );\n};\n"],"mappings":";;;AAGA,OAAO,UAAU;AA4DT,mBACE,KADF;AA5CR,IAAM,UAAU;AAAA,EACd,KAAK;AAAA;AAAA,EACL,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,KAAK;AAAA;AACP;AAEO,IAAM,UAA8B,CAAC;AAAA,EAC1C,OAAO;AAAA,EACP,UAAU;AAAA,EACV,OAAO;AAAA,EACP,YAAY;AAAA,EACZ,QAAQ,CAAC;AACX,MAAM;AACJ,QAAM,OAAO,KAAK,yBAAyB,QAAQ,IAAI,GAAG;AAAA;AAAA,IAExD,0FACE,SAAS;AAAA;AAAA,IAEX,0EACE,SAAS;AAAA;AAAA,IAEX,mFACE,SAAS;AAAA;AAAA,IAEX,8BAA8B,SAAS;AAAA;AAAA,IAEvC,gBAAgB,SAAS;AAAA,EAC3B,CAAC;AAED,QAAM,eAAe,KAAK;AAAA;AAAA,IAExB,gBAAgB,YAAY;AAAA,IAC5B,gBAAgB,YAAY;AAAA,IAC5B,kBAAkB,YAAY;AAAA,IAC9B,gBAAgB,YAAY;AAAA,IAC5B,cAAc,YAAY;AAAA,IAC1B,gBAAgB,YAAY;AAAA,EAC9B,CAAC;AAED,SACE,oBAAC,SAAI,WAAW,KAAK,MAAM,cAAc,SAAS,GAAG,OAClD,mBAAS,eACR,iCACE;AAAA,wBAAC,UAAK,WAAU,4FAA2F;AAAA,IAC3G,oBAAC,UAAK,WAAU,2FAA0F;AAAA,KAC5G,GAEJ;AAEJ;","names":[]}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@aristobyte-ui/spinner",
3
3
  "description": "Flexible, highly customizable React Spinner component for AristoByteUI. Supports multiple variants, sizes, and animation types, designed for seamless integration with modern React projects and monorepos.",
4
- "version": "1.0.50",
4
+ "version": "1.0.52",
5
5
  "license": "MIT",
6
6
  "private": false,
7
7
  "author": "AristoByte <info@aristobyte.com>",
@@ -53,32 +53,29 @@
53
53
  "require": "./dist/index.js"
54
54
  }
55
55
  },
56
+ "sideEffects": false,
56
57
  "scripts": {
57
58
  "build": "tsup",
58
59
  "lint": "eslint . --max-warnings 0",
59
- "generate:component": "turbo gen react-component",
60
60
  "check-types": "tsc --noEmit"
61
61
  },
62
62
  "dependencies": {
63
- "esbuild-sass-plugin": "^3.3.1",
64
- "framer-motion": "^12.23.9",
65
63
  "react": "^19.1.0",
66
64
  "react-dom": "^19.1.0",
67
- "sass": "^1.89.0",
68
- "shiki": "^3.7.0",
69
- "tsup": "^8.5.0"
65
+ "clsx": "^2.1.1"
66
+ },
67
+ "peerDependencies": {
68
+ "react": "^19.1.0",
69
+ "react-dom": "^19.1.0",
70
+ "tailwindcss": "^4.1.7"
70
71
  },
71
72
  "devDependencies": {
72
- "@aristobyte-ui/eslint-config": "^1.0.50",
73
- "@aristobyte-ui/typescript-config": "^1.0.50",
74
- "@turbo/gen": "^2.5.0",
73
+ "@aristobyte-ui/eslint-config": "^1.0.52",
74
+ "@aristobyte-ui/typescript-config": "^1.0.52",
75
75
  "@types/node": "^24.3.0",
76
76
  "@types/react": "19.1.0",
77
77
  "@types/react-dom": "19.1.1",
78
- "autoprefixer": "^10.4.21",
79
78
  "eslint": "^9.27.0",
80
- "postcss": "^8.5.3",
81
- "sass-embedded": "^1.91.0",
82
79
  "tailwindcss": "^4.1.7",
83
80
  "tsup": "^8.5.0",
84
81
  "typescript": "^5.8.3"
package/dist/index.css DELETED
@@ -1,197 +0,0 @@
1
- /* components/Spinner/Spinner.module.scss */
2
- @keyframes Spinner_module_rotation {
3
- from {
4
- transform: rotate(0deg);
5
- }
6
- to {
7
- transform: rotate(360deg);
8
- }
9
- }
10
- @keyframes Spinner_module_pulse {
11
- 0% {
12
- opacity: 1;
13
- transform: scale(0);
14
- }
15
- 100% {
16
- opacity: 0;
17
- transform: scale(1);
18
- }
19
- }
20
- @keyframes Spinner_module_pulse-duo {
21
- 0%, 100% {
22
- opacity: 1;
23
- transform: translate(-50%, -50%) scale(0);
24
- }
25
- 50% {
26
- opacity: 0;
27
- transform: translate(-50%, -50%) scale(1);
28
- }
29
- }
30
- .Spinner_module_spinner-size--xsm {
31
- width: 1rem;
32
- height: 1rem;
33
- }
34
- .Spinner_module_spinner-size--sm {
35
- width: 1.5rem;
36
- height: 1.5rem;
37
- }
38
- .Spinner_module_spinner-size--md {
39
- width: 2rem;
40
- height: 2rem;
41
- }
42
- .Spinner_module_spinner-size--lg {
43
- width: 2.5rem;
44
- height: 2.5rem;
45
- }
46
- .Spinner_module_spinner-size--xlg {
47
- width: 3rem;
48
- height: 3rem;
49
- }
50
- .Spinner_module_spinner-type--default {
51
- animation: Spinner_module_rotation 800ms ease infinite;
52
- border-radius: 50%;
53
- }
54
- .Spinner_module_spinner-type--default.Spinner_module_spinner-variant--default {
55
- border: 3px solid rgba(31, 41, 55, 0.25);
56
- border-top-color: #1f2937;
57
- }
58
- .Spinner_module_spinner-type--default.Spinner_module_spinner-variant--primary {
59
- border: 3px solid rgba(37, 99, 235, 0.25);
60
- border-top-color: #2563eb;
61
- }
62
- .Spinner_module_spinner-type--default.Spinner_module_spinner-variant--secondary {
63
- border: 3px solid rgba(79, 70, 229, 0.25);
64
- border-top-color: #4f46e5;
65
- }
66
- .Spinner_module_spinner-type--default.Spinner_module_spinner-variant--success {
67
- border: 3px solid rgba(22, 163, 74, 0.25);
68
- border-top-color: #16a34a;
69
- }
70
- .Spinner_module_spinner-type--default.Spinner_module_spinner-variant--error {
71
- border: 3px solid rgba(220, 38, 38, 0.25);
72
- border-top-color: #dc2626;
73
- }
74
- .Spinner_module_spinner-type--default.Spinner_module_spinner-variant--warning {
75
- border: 3px solid rgba(217, 119, 6, 0.25);
76
- border-top-color: #d97706;
77
- }
78
- .Spinner_module_spinner-type--duo {
79
- animation: Spinner_module_rotation 800ms ease infinite;
80
- border: 3px solid transparent;
81
- border-radius: 50%;
82
- }
83
- .Spinner_module_spinner-type--duo.Spinner_module_spinner-variant--default {
84
- border-bottom-color: #1f2937;
85
- border-top-color: #1f2937;
86
- }
87
- .Spinner_module_spinner-type--duo.Spinner_module_spinner-variant--primary {
88
- border-bottom-color: #2563eb;
89
- border-top-color: #2563eb;
90
- }
91
- .Spinner_module_spinner-type--duo.Spinner_module_spinner-variant--secondary {
92
- border-bottom-color: #4f46e5;
93
- border-top-color: #4f46e5;
94
- }
95
- .Spinner_module_spinner-type--duo.Spinner_module_spinner-variant--success {
96
- border-bottom-color: #16a34a;
97
- border-top-color: #16a34a;
98
- }
99
- .Spinner_module_spinner-type--duo.Spinner_module_spinner-variant--error {
100
- border-bottom-color: #dc2626;
101
- border-top-color: #dc2626;
102
- }
103
- .Spinner_module_spinner-type--duo.Spinner_module_spinner-variant--warning {
104
- border-bottom-color: #d97706;
105
- border-top-color: #d97706;
106
- }
107
- .Spinner_module_spinner-type--gradient {
108
- animation: Spinner_module_rotation 800ms linear infinite;
109
- border-right: 3px solid transparent;
110
- border-radius: 50%;
111
- }
112
- .Spinner_module_spinner-type--gradient.Spinner_module_spinner-variant--default {
113
- border-top: 3px solid #1f2937;
114
- }
115
- .Spinner_module_spinner-type--gradient.Spinner_module_spinner-variant--primary {
116
- border-top: 3px solid #2563eb;
117
- }
118
- .Spinner_module_spinner-type--gradient.Spinner_module_spinner-variant--secondary {
119
- border-top: 3px solid #4f46e5;
120
- }
121
- .Spinner_module_spinner-type--gradient.Spinner_module_spinner-variant--success {
122
- border-top: 3px solid #16a34a;
123
- }
124
- .Spinner_module_spinner-type--gradient.Spinner_module_spinner-variant--error {
125
- border-top: 3px solid #dc2626;
126
- }
127
- .Spinner_module_spinner-type--gradient.Spinner_module_spinner-variant--warning {
128
- border-top: 3px solid #d97706;
129
- }
130
- .Spinner_module_spinner-type--pulse {
131
- animation: Spinner_module_pulse 1s ease-in-out infinite;
132
- border-radius: 50%;
133
- position: relative;
134
- }
135
- .Spinner_module_spinner-type--pulse.Spinner_module_spinner-variant--default {
136
- background-color: #1f2937;
137
- }
138
- .Spinner_module_spinner-type--pulse.Spinner_module_spinner-variant--primary {
139
- background-color: #2563eb;
140
- }
141
- .Spinner_module_spinner-type--pulse.Spinner_module_spinner-variant--secondary {
142
- background-color: #4f46e5;
143
- }
144
- .Spinner_module_spinner-type--pulse.Spinner_module_spinner-variant--success {
145
- background-color: #16a34a;
146
- }
147
- .Spinner_module_spinner-type--pulse.Spinner_module_spinner-variant--error {
148
- background-color: #dc2626;
149
- }
150
- .Spinner_module_spinner-type--pulse.Spinner_module_spinner-variant--warning {
151
- background-color: #d97706;
152
- }
153
- .Spinner_module_spinner-type--pulse-duo {
154
- position: relative;
155
- }
156
- .Spinner_module_spinner-type--pulse-duo.Spinner_module_spinner-variant--default::after,
157
- .Spinner_module_spinner-type--pulse-duo.Spinner_module_spinner-variant--default::before {
158
- background-color: #1f2937;
159
- }
160
- .Spinner_module_spinner-type--pulse-duo.Spinner_module_spinner-variant--primary::after,
161
- .Spinner_module_spinner-type--pulse-duo.Spinner_module_spinner-variant--primary::before {
162
- background-color: #2563eb;
163
- }
164
- .Spinner_module_spinner-type--pulse-duo.Spinner_module_spinner-variant--secondary::after,
165
- .Spinner_module_spinner-type--pulse-duo.Spinner_module_spinner-variant--secondary::before {
166
- background-color: #4f46e5;
167
- }
168
- .Spinner_module_spinner-type--pulse-duo.Spinner_module_spinner-variant--success::after,
169
- .Spinner_module_spinner-type--pulse-duo.Spinner_module_spinner-variant--success::before {
170
- background-color: #16a34a;
171
- }
172
- .Spinner_module_spinner-type--pulse-duo.Spinner_module_spinner-variant--error::after,
173
- .Spinner_module_spinner-type--pulse-duo.Spinner_module_spinner-variant--error::before {
174
- background-color: #dc2626;
175
- }
176
- .Spinner_module_spinner-type--pulse-duo.Spinner_module_spinner-variant--warning::after,
177
- .Spinner_module_spinner-type--pulse-duo.Spinner_module_spinner-variant--warning::before {
178
- background-color: #d97706;
179
- }
180
- .Spinner_module_spinner-type--pulse-duo::before,
181
- .Spinner_module_spinner-type--pulse-duo::after {
182
- content: "";
183
- position: absolute;
184
- top: 50%;
185
- left: 50%;
186
- width: 100%;
187
- height: 100%;
188
- border-radius: 50%;
189
- transform: translate(-50%, -50%) scale(0);
190
- }
191
- .Spinner_module_spinner-type--pulse-duo::before {
192
- animation: Spinner_module_pulse-duo 2s ease-in-out infinite;
193
- }
194
- .Spinner_module_spinner-type--pulse-duo::after {
195
- animation: Spinner_module_pulse-duo 2s 1s ease-in-out infinite;
196
- }
197
- /*# sourceMappingURL=index.css.map */
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../components/Spinner.module.scss","../../../../node_modules/@aristobyte-ui/utils/styles/_settings.scss"],"sourcesContent":["@use \"@aristobyte-ui/utils/styles/settings\" as *;\n\n@keyframes rotation {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n}\n\n@keyframes pulse {\n 0% {\n opacity: 1;\n transform: scale(0);\n }\n 100% {\n opacity: 0;\n transform: scale(1);\n }\n}\n\n@keyframes pulse-duo {\n 0%,\n 100% {\n opacity: 1;\n transform: translate(-50%, -50%) scale(0);\n }\n 50% {\n opacity: 0;\n transform: translate(-50%, -50%) scale(1);\n }\n}\n\n.spinner {\n &-size {\n &--xsm {\n width: 1rem; // 16px\n height: 1rem;\n }\n\n &--sm {\n width: 1.5rem; // 24px\n height: 1.5rem;\n }\n\n &--md {\n width: 2rem; // 32px\n height: 2rem;\n }\n\n &--lg {\n width: 2.5rem; // 40px\n height: 2.5rem;\n }\n\n &--xlg {\n width: 3rem; // 48px\n height: 3rem;\n }\n }\n\n &-type {\n &--default {\n animation: rotation 800ms ease infinite;\n border-radius: 50%;\n\n &.spinner-variant {\n &--default {\n border: 3px solid rgba($color-default, 0.25);\n border-top-color: rgba($color-default, 1);\n }\n &--primary {\n border: 3px solid rgba($color-primary, 0.25);\n border-top-color: rgba($color-primary, 1);\n }\n &--secondary {\n border: 3px solid rgba($color-secondary, 0.25);\n border-top-color: rgba($color-secondary, 1);\n }\n &--success {\n border: 3px solid rgba($color-success, 0.25);\n border-top-color: rgba($color-success, 1);\n }\n &--error {\n border: 3px solid rgba($color-error, 0.25);\n border-top-color: rgba($color-error, 1);\n }\n &--warning {\n border: 3px solid rgba($color-warning, 0.25);\n border-top-color: rgba($color-warning, 1);\n }\n }\n }\n\n &--duo {\n animation: rotation 800ms ease infinite;\n border: 3px solid transparent;\n border-radius: 50%;\n\n &.spinner-variant {\n &--default {\n border-bottom-color: rgba($color-default, 1);\n border-top-color: rgba($color-default, 1);\n }\n &--primary {\n border-bottom-color: rgba($color-primary, 1);\n border-top-color: rgba($color-primary, 1);\n }\n &--secondary {\n border-bottom-color: rgba($color-secondary, 1);\n border-top-color: rgba($color-secondary, 1);\n }\n &--success {\n border-bottom-color: rgba($color-success, 1);\n border-top-color: rgba($color-success, 1);\n }\n &--error {\n border-bottom-color: rgba($color-error, 1);\n border-top-color: rgba($color-error, 1);\n }\n &--warning {\n border-bottom-color: rgba($color-warning, 1);\n border-top-color: rgba($color-warning, 1);\n }\n }\n }\n\n &--gradient {\n animation: rotation 800ms linear infinite;\n border-right: 3px solid transparent;\n border-radius: 50%;\n\n &.spinner-variant {\n &--default {\n border-top: 3px solid rgba($color-default, 1);\n }\n &--primary {\n border-top: 3px solid rgba($color-primary, 1);\n }\n &--secondary {\n border-top: 3px solid rgba($color-secondary, 1);\n }\n &--success {\n border-top: 3px solid rgba($color-success, 1);\n }\n &--error {\n border-top: 3px solid rgba($color-error, 1);\n }\n &--warning {\n border-top: 3px solid rgba($color-warning, 1);\n }\n }\n }\n\n &--pulse {\n animation: pulse 1s ease-in-out infinite;\n border-radius: 50%;\n position: relative;\n\n &.spinner-variant {\n &--default {\n background-color: $color-default;\n }\n &--primary {\n background-color: $color-primary;\n }\n &--secondary {\n background-color: $color-secondary;\n }\n &--success {\n background-color: $color-success;\n }\n &--error {\n background-color: $color-error;\n }\n &--warning {\n background-color: $color-warning;\n }\n }\n }\n\n &--pulse-duo {\n position: relative;\n\n &.spinner-variant {\n &--default::after,\n &--default::before {\n background-color: $color-default;\n }\n &--primary::after,\n &--primary::before {\n background-color: $color-primary;\n }\n &--secondary::after,\n &--secondary::before {\n background-color: $color-secondary;\n }\n &--success::after,\n &--success::before {\n background-color: $color-success;\n }\n &--error::after,\n &--error::before {\n background-color: $color-error;\n }\n &--warning::after,\n &--warning::before {\n background-color: $color-warning;\n }\n }\n\n &::before,\n &::after {\n content: \"\";\n position: absolute;\n top: 50%;\n left: 50%;\n width: 100%;\n height: 100%;\n border-radius: 50%;\n transform: translate(-50%, -50%) scale(0);\n }\n &::before {\n animation: pulse-duo 2s ease-in-out infinite;\n }\n &::after {\n animation: pulse-duo 2s 1s ease-in-out infinite;\n }\n }\n }\n}\n","// =========================================== //\n// AristoByte UI - Style Settings //\n// =========================================== //\n\n// === Design Tokens — Color Palette === //\n// Logo\n$logo-color-1: #ffee27;\n$logo-color-2: #fec800;\n$logo-color-3: #f18e35;\n$logo-color-4: #e95f32;\n$logo-color-5: #e2312d;\n$logo-gradient: linear-gradient(\n 90deg,\n $logo-color-1,\n $logo-color-2,\n $logo-color-3,\n $logo-color-4,\n $logo-color-5\n);\n\n// Base\n$white: #ffffff;\n$white-hover: #dddddd;\n$black: #000000;\n$black-hover: #222222;\n$transparent: transparent;\n\n// === Black Transparent Scale === //\n$black-transparent-100: rgba(0, 0, 0, 0.1);\n$black-transparent-200: rgba(0, 0, 0, 0.2);\n$black-transparent-300: rgba(0, 0, 0, 0.3);\n$black-transparent-400: rgba(0, 0, 0, 0.4);\n$black-transparent-500: rgba(0, 0, 0, 0.5);\n$black-transparent-600: rgba(0, 0, 0, 0.6);\n$black-transparent-700: rgba(0, 0, 0, 0.7);\n$black-transparent-800: rgba(0, 0, 0, 0.8);\n$black-transparent-900: rgba(0, 0, 0, 0.9);\n\n// === Black Transparent Scale === //\n$white-transparent-100: rgba(255, 255, 255, 0.1);\n$white-transparent-200: rgba(255, 255, 255, 0.2);\n$white-transparent-300: rgba(255, 255, 255, 0.3);\n$white-transparent-400: rgba(255, 255, 255, 0.4);\n$white-transparent-500: rgba(255, 255, 255, 0.5);\n$white-transparent-600: rgba(255, 255, 255, 0.6);\n$white-transparent-700: rgba(255, 255, 255, 0.7);\n$white-transparent-800: rgba(255, 255, 255, 0.8);\n$white-transparent-900: rgba(255, 255, 255, 0.9);\n\n// === Neutral Scale (Grey) === //\n$grey-50: #f9fafb;\n$grey-100: #f3f4f6;\n$grey-200: #e5e7eb;\n$grey-300: #d1d5db;\n$grey-400: #9ca3af;\n$grey-500: #6b7280;\n$grey-600: #4b5563;\n$grey-700: #374151;\n$grey-800: #1f2937;\n$grey-900: #111827;\n\n// === Primary Scale (Blue) === //\n$blue-50: #eff6ff;\n$blue-100: #dbeafe;\n$blue-200: #bfdbfe;\n$blue-300: #93c5fd;\n$blue-400: #60a5fa;\n$blue-500: #3b82f6;\n$blue-600: #2563eb; // Main\n$blue-700: #1d4ed8; // Hover\n$blue-800: #1e40af;\n$blue-900: #1e3a8a;\n\n// === Secondary Scale (Indigo) === //\n$indigo-50: #eef2ff;\n$indigo-100: #e0e7ff;\n$indigo-200: #c7d2fe;\n$indigo-300: #a5b4fc;\n$indigo-400: #818cf8;\n$indigo-500: #6366f1;\n$indigo-600: #4f46e5; // Main\n$indigo-700: #4338ca; // Hover\n\n// === Error Scale (Red) === //\n$red-50: #fef2f2;\n$red-100: #fee2e2;\n$red-200: #fecaca;\n$red-300: #fca5a5;\n$red-400: #f87171;\n$red-500: #ef4444;\n$red-600: #dc2626; // Main\n$red-700: #b91c1c; // Hover\n\n// === Success Scale (Green) === //\n$green-50: #f0fdf4;\n$green-100: #dcfce7;\n$green-200: #bbf7d0;\n$green-300: #86efac;\n$green-400: #4ade80;\n$green-500: #22c55e;\n$green-600: #16a34a; // Main\n$green-700: #15803d; // Hover\n\n// === Warning Scale (Amber) === //\n$amber-50: #fffbeb;\n$amber-100: #fef3c7;\n$amber-200: #fde68a;\n$amber-300: #fcd34d;\n$amber-400: #fbbf24;\n$amber-500: #f59e0b;\n$amber-600: #d97706; // Main\n$amber-700: #b45309; // Hover\n\n// === Semantic Tokens === //\n$color-default: $grey-800;\n$color-default-hover: $grey-900;\n$color-default-disabled: rgba($color-default, 0.5);\n\n$color-primary: $blue-600;\n$color-primary-hover: $blue-700;\n$color-primary-disabled: rgba($color-primary, 0.5);\n\n$color-secondary: $indigo-600;\n$color-secondary-hover: $indigo-700;\n$color-secondary-disabled: rgba($color-secondary, 0.5);\n\n$color-error: $red-600;\n$color-error-hover: $red-700;\n$color-error-disabled: rgba($color-error, 0.5);\n\n$color-success: $green-600;\n$color-success-hover: $green-700;\n$color-success-disabled: rgba($color-success, 0.5);\n\n$color-warning: $amber-600;\n$color-warning-hover: $amber-700;\n$color-warning-disabled: rgba($color-warning, 0.5);\n\n$text-color-white: $white;\n$text-color-black: $black;\n$text-color-white-disabled: rgba($white, 0.5);\n$text-color-black-disabled: rgba($black, 0.5);\n\n$title-color-dark: $white;\n$subtitle-color-dark: #99a1af;\n$description-color-dark: #d1d5dc;\n$icon-color-dark: #99a1af;\n\n// === Shadows === //\n//@TODO: @SHADOW\n$shadow-sm: 0 1px 2px 0 rgba($black, 0.05);\n$shadow-md:\n 0 4px 6px -1px rgba($black, 0.1),\n 0 2px 4px -1px rgba($black, 0.06);\n$shadow-lg:\n 0 10px 15px -3px rgba($black, 0.1),\n 0 4px 6px -2px rgba($black, 0.05);\n\n// === Font families === //\n$font-family-sans: \"Inter\", sans-serif;\n$font-family-serif: \"Georgia\", serif;\n$font-family-mono: \"Fira Code\", monospace;\n\n// === Font weights === //\n$font-weight-regular: 400;\n$font-weight-medium: 500;\n$font-weight-semibold: 600;\n$font-weight-bold: 700;\n\n// === Line heights === //\n$line-height-tight: 1.2;\n$line-height-snug: 1.375;\n$line-height-normal: 1.5;\n$line-height-loose: 1.625;\n\n// === Font Sizes — Semantic Tokens === //\n\n// === Titles === //\n$font-size-hero: 3rem; // 48px\n$font-size-title-1: 2.25rem; // 36px\n$font-size-title-2: 1.875rem; // 30px\n$font-size-title-3: 1.5rem; // 24px\n\n// === Subtitles === //\n$font-size-subtitle-1: 1.25rem; // 20px\n$font-size-subtitle-2: 1.125rem; // 18px\n\n// === Body text === //\n$font-size-body-lg: 1rem; // 16px\n$font-size-body-md: 0.9375rem; // 15px\n$font-size-body-sm: 0.875rem; // 14px\n\n// === Captions / Descriptions === //\n$font-size-caption: 0.75rem; // 12px\n$font-size-footnote: 0.6875rem; // 11px\n\n// === Buttons === //\n$font-size-button-lg: 1rem; // 16px\n$font-size-button-md: 0.875rem; // 14px\n$font-size-button-sm: 0.75rem; // 12px\n\n// === Animations === //\n\n$cubic-bezier-primary: cubic-bezier(0.55, -0.19, 0.59, 0.95);\n$cubic-bezier-secondary: cubic-bezier(0.175, 0.885, 0.32, 1.275);\n"],"mappings":";AAEA,WAAAA;AACE;AACE,eAAA,OAAA;;AAEF;AACE,eAAA,OAAA;;;AAIJ,WAAAC;AACE;AACE,aAAA;AACA,eAAA,MAAA;;AAEF;AACE,aAAA;AACA,eAAA,MAAA;;;AAIJ,WAAAC;AACE;AAEE,aAAA;AACA,eAAA,UAAA,IAAA,EAAA,MAAA,MAAA;;AAEF;AACE,aAAA;AACA,eAAA,UAAA,IAAA,EAAA,MAAA,MAAA;;;AAMA,CAAAC;AACE,SAAA;AACA,UAAA;;AAGF,CAAAC;AACE,SAAA;AACA,UAAA;;AAGF,CAAAC;AACE,SAAA;AACA,UAAA;;AAGF,CAAAC;AACE,SAAA;AACA,UAAA;;AAGF,CAAAC;AACE,SAAA;AACA,UAAA;;AAKF,CAAAC;AACE,aAAA,wBAAA,MAAA,KAAA;AACA,iBAAA;;AAGE,CALJA,oCAKI,CAAAC;AACE,UAAA,IAAA,MAAA,KAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA;AACA,oBAAA;;AAEF,CATJD,oCASI,CAAAE;AACE,UAAA,IAAA,MAAA,KAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA;AACA,oBAAA;;AAEF,CAbJF,oCAaI,CAAAG;AACE,UAAA,IAAA,MAAA,KAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA;AACA,oBAAA;;AAEF,CAjBJH,oCAiBI,CAAAI;AACE,UAAA,IAAA,MAAA,KAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA;AACA,oBAAA;;AAEF,CArBJJ,oCAqBI,CAAAK;AACE,UAAA,IAAA,MAAA,KAAA,GAAA,EAAA,EAAA,EAAA,EAAA,EAAA;AACA,oBAAA;;AAEF,CAzBJL,oCAyBI,CAAAM;AACE,UAAA,IAAA,MAAA,KAAA,GAAA,EAAA,GAAA,EAAA,CAAA,EAAA;AACA,oBAAA;;AAKN,CAAAC;AACE,aAAA,wBAAA,MAAA,KAAA;AACA,UAAA,IAAA,MAAA;AACA,iBAAA;;AAGE,CANJA,gCAMI,CAjCAN;AAkCE,uBAAA;AACA,oBAAA;;AAEF,CAVJM,gCAUI,CAjCAL;AAkCE,uBAAA;AACA,oBAAA;;AAEF,CAdJK,gCAcI,CAjCAJ;AAkCE,uBAAA;AACA,oBAAA;;AAEF,CAlBJI,gCAkBI,CAjCAH;AAkCE,uBAAA;AACA,oBAAA;;AAEF,CAtBJG,gCAsBI,CAjCAF;AAkCE,uBAAA;AACA,oBAAA;;AAEF,CA1BJE,gCA0BI,CAjCAD;AAkCE,uBAAA;AACA,oBAAA;;AAKN,CAAAE;AACE,aAAA,wBAAA,MAAA,OAAA;AACA,gBAAA,IAAA,MAAA;AACA,iBAAA;;AAGE,CANJA,qCAMI,CAlEAP;AAmEE,cAAA,IAAA,MAAA;;AAEF,CATJO,qCASI,CAjEAN;AAkEE,cAAA,IAAA,MAAA;;AAEF,CAZJM,qCAYI,CAhEAL;AAiEE,cAAA,IAAA,MAAA;;AAEF,CAfJK,qCAeI,CA/DAJ;AAgEE,cAAA,IAAA,MAAA;;AAEF,CAlBJI,qCAkBI,CA9DAH;AA+DE,cAAA,IAAA,MAAA;;AAEF,CArBJG,qCAqBI,CA7DAF;AA8DE,cAAA,IAAA,MAAA;;AAKN,CAAAG;AACE,aAAA,qBAAA,GAAA,YAAA;AACA,iBAAA;AACA,YAAA;;AAGE,CANJA,kCAMI,CA7FAR;AA8FE,oBCxGC;;AD0GH,CATJQ,kCASI,CA5FAP;AA6FE,oBCjGC;;ADmGH,CAZJO,kCAYI,CA3FAN;AA4FE,oBCxFG;;AD0FL,CAfJM,kCAeI,CA1FAL;AA2FE,oBCvEE;;ADyEJ,CAlBJK,kCAkBI,CAzFAJ;AA0FE,oBCpFA;;ADsFF,CArBJI,kCAqBI,CAxFAH;AAyFE,oBCnEE;;ADwER,CAAAI;AACE,YAAA;;AAGE,CAJJA,sCAII,CAtHAT,uCAsHA;AAAA,CAJJS,sCAII,CAtHAT,uCAsHA;AAEE,oBClIC;;ADoIH,CARJS,sCAQI,CAtHAR,uCAsHA;AAAA,CARJQ,sCAQI,CAtHAR,uCAsHA;AAEE,oBC5HC;;AD8HH,CAZJQ,sCAYI,CAtHAP,yCAsHA;AAAA,CAZJO,sCAYI,CAtHAP,yCAsHA;AAEE,oBCpHG;;ADsHL,CAhBJO,sCAgBI,CAtHAN,uCAsHA;AAAA,CAhBJM,sCAgBI,CAtHAN,uCAsHA;AAEE,oBCpGE;;ADsGJ,CApBJM,sCAoBI,CAtHAL,qCAsHA;AAAA,CApBJK,sCAoBI,CAtHAL,qCAsHA;AAEE,oBClHA;;ADoHF,CAxBJK,sCAwBI,CAtHAJ,uCAsHA;AAAA,CAxBJI,sCAwBI,CAtHAJ,uCAsHA;AAEE,oBClGE;;ADsGN,CA9BFI,sCA8BE;AAAA,CA9BFA,sCA8BE;AAEE,WAAA;AACA,YAAA;AACA,OAAA;AACA,QAAA;AACA,SAAA;AACA,UAAA;AACA,iBAAA;AACA,aAAA,UAAA,IAAA,EAAA,MAAA,MAAA;;AAEF,CAzCFA,sCAyCE;AACE,aAAA,yBAAA,GAAA,YAAA;;AAEF,CA5CFA,sCA4CE;AACE,aAAA,yBAAA,GAAA,GAAA,YAAA;;","names":["rotation","pulse","pulse-duo","spinner-size--xsm","spinner-size--sm","spinner-size--md","spinner-size--lg","spinner-size--xlg","spinner-type--default","spinner-variant--default","spinner-variant--primary","spinner-variant--secondary","spinner-variant--success","spinner-variant--error","spinner-variant--warning","spinner-type--duo","spinner-type--gradient","spinner-type--pulse","spinner-type--pulse-duo"]}