blue-react 9.0.0-alpha1 → 9.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/ActionMenu.js +98 -109
- package/dist/components/ActionMenuSwitch.js +44 -55
- package/dist/components/Body.js +38 -50
- package/dist/components/Caret.js +19 -32
- package/dist/components/DocumentView.js +76 -88
- package/dist/components/Header.js +22 -34
- package/dist/components/HeaderTitle.js +54 -66
- package/dist/components/Intro.js +35 -48
- package/dist/components/Layout.js +313 -292
- package/dist/components/MenuItem.js +130 -139
- package/dist/components/Modal.js +164 -173
- package/dist/components/ModalProvider.js +184 -195
- package/dist/components/Outside.js +50 -63
- package/dist/components/Page.js +62 -74
- package/dist/components/Search.js +159 -168
- package/dist/components/SidebarMenu.js +56 -69
- package/dist/components/SidebarMenuItem.js +124 -0
- package/dist/components/SidebarToggler.js +33 -0
- package/dist/components/SlimContainer.js +21 -34
- package/dist/components/Status.js +64 -76
- package/dist/components/StatusProvider.js +68 -79
- package/dist/components/Switch.js +57 -70
- package/dist/components/Utilities.js +183 -192
- package/dist/components/shared.js +24 -37
- package/dist/neu.scss +76 -0
- package/dist/style.css +1632 -522
- package/dist/style.min.css +9 -10
- package/dist/style.scss +4 -4
- package/dist/styles/_bootstrap-variables.scss +2 -2
- package/dist/styles/_bootstrap.scss +1 -0
- package/dist/styles/_general.scss +2 -2
- package/dist/styles/_layout.scss +3 -7
- package/dist/styles/_sidebar.scss +36 -0
- package/dist/styles/_variables.scss +5 -20
- package/dist/styles/mixins/_sidebar.scss +16 -2
- package/dist/types/components/Layout.d.ts +17 -1
- package/dist/types/components/MenuItem.d.ts +4 -0
- package/dist/types/components/Search.d.ts +7 -3
- package/dist/types/components/SidebarMenuItem.d.ts +21 -0
- package/dist/types/components/SidebarToggler.d.ts +10 -0
- package/dist/types/components/Utilities.d.ts +4 -0
- package/index.d.ts +5 -6
- package/index.js +1 -2
- package/package.json +4 -5
- package/dist/components/BodyRounded.js +0 -44
- package/dist/components/Grid.js +0 -288
- package/dist/style.css.map +0 -1
- package/dist/styles/_bootstrap-optimizations.scss +0 -5
- package/dist/types/components/BodyRounded.d.ts +0 -10
- package/dist/types/components/Grid.d.ts +0 -110
|
@@ -1,221 +1,212 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.addClass = addClass;
|
|
7
|
+
exports.default = void 0;
|
|
8
|
+
exports.fetchData = fetchData;
|
|
9
|
+
exports.finishLoading = finishLoading;
|
|
10
|
+
exports.guid = void 0;
|
|
11
|
+
exports.hasClass = hasClass;
|
|
12
|
+
exports.hideSuccess = hideSuccess;
|
|
13
|
+
exports.removeClass = removeClass;
|
|
14
|
+
exports.resetAlertMessage = resetAlertMessage;
|
|
15
|
+
exports.scrollToTop = scrollToTop;
|
|
16
|
+
exports.setAlertMessage = setAlertMessage;
|
|
17
|
+
exports.showSuccess = showSuccess;
|
|
18
|
+
exports.startLoading = startLoading;
|
|
19
|
+
exports.toggleActions = toggleActions;
|
|
20
|
+
exports.toggleClass = toggleClass;
|
|
21
|
+
|
|
22
|
+
function hasClass(el, className) {
|
|
23
|
+
if (el.classList) return el.classList.contains(className);else return !!el.className.match(new RegExp("(\\s|^)" + className + "(\\s|$)"));
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
function addClass(el, className) {
|
|
27
|
+
if (el.classList) el.classList.add(className);else if (!hasClass(el, className)) el.className += " " + className;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
function removeClass(el, className) {
|
|
31
|
+
if (el.classList) el.classList.remove(className);else if (hasClass(el, className)) el.className = el.className.replace(new RegExp("(\\s|^)" + className + "(\\s|$)"), " ");
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* @deprecated Use (el as HTMLElement).classList.toggle("my-class") instead.
|
|
35
|
+
*/
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
function toggleClass(element, className) {
|
|
39
|
+
if (!element || !className) {
|
|
40
|
+
return;
|
|
12
41
|
}
|
|
13
|
-
})(typeof globalThis !== "undefined" ? globalThis : typeof self !== "undefined" ? self : this, function (_exports) {
|
|
14
|
-
"use strict";
|
|
15
42
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
});
|
|
19
|
-
_exports.addClass = addClass;
|
|
20
|
-
_exports.default = void 0;
|
|
21
|
-
_exports.fetchData = fetchData;
|
|
22
|
-
_exports.finishLoading = finishLoading;
|
|
23
|
-
_exports.guid = void 0;
|
|
24
|
-
_exports.hasClass = hasClass;
|
|
25
|
-
_exports.hideSuccess = hideSuccess;
|
|
26
|
-
_exports.removeClass = removeClass;
|
|
27
|
-
_exports.resetAlertMessage = resetAlertMessage;
|
|
28
|
-
_exports.scrollToTop = scrollToTop;
|
|
29
|
-
_exports.setAlertMessage = setAlertMessage;
|
|
30
|
-
_exports.showSuccess = showSuccess;
|
|
31
|
-
_exports.startLoading = startLoading;
|
|
32
|
-
_exports.toggleActions = toggleActions;
|
|
33
|
-
_exports.toggleClass = toggleClass;
|
|
34
|
-
|
|
35
|
-
function hasClass(el, className) {
|
|
36
|
-
if (el.classList) return el.classList.contains(className);else return !!el.className.match(new RegExp("(\\s|^)" + className + "(\\s|$)"));
|
|
37
|
-
}
|
|
43
|
+
var classString = element.className,
|
|
44
|
+
nameIndex = classString.indexOf(className);
|
|
38
45
|
|
|
39
|
-
|
|
40
|
-
|
|
46
|
+
if (nameIndex === -1) {
|
|
47
|
+
classString += " " + className;
|
|
48
|
+
} else {
|
|
49
|
+
classString = classString.substr(0, nameIndex) + classString.substr(nameIndex + className.length);
|
|
41
50
|
}
|
|
42
51
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
}
|
|
46
|
-
/**
|
|
47
|
-
* @deprecated Use (el as HTMLElement).classList.toggle("my-class") instead.
|
|
48
|
-
*/
|
|
52
|
+
element.className = classString;
|
|
53
|
+
}
|
|
49
54
|
|
|
55
|
+
function startLoading() {
|
|
56
|
+
;
|
|
57
|
+
document.querySelector(".blue-loading").style.display = "block";
|
|
58
|
+
}
|
|
50
59
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
60
|
+
function finishLoading() {
|
|
61
|
+
;
|
|
62
|
+
document.querySelector(".blue-loading").style.display = "";
|
|
63
|
+
}
|
|
55
64
|
|
|
56
|
-
|
|
57
|
-
|
|
65
|
+
function showSuccess() {
|
|
66
|
+
;
|
|
67
|
+
document.querySelector(".blue-status-success").style.display = "flex";
|
|
68
|
+
}
|
|
58
69
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
}
|
|
70
|
+
function hideSuccess() {
|
|
71
|
+
;
|
|
72
|
+
document.querySelector(".blue-status-success").style.display = "";
|
|
73
|
+
}
|
|
64
74
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
;
|
|
70
|
-
document.querySelector(".blue-loading").style.display = "block";
|
|
71
|
-
}
|
|
75
|
+
function toggleActions() {
|
|
76
|
+
toggleClass(document.querySelector(".blue-wrapper"), "active");
|
|
77
|
+
toggleClass(document.querySelector(".blue-layout"), "wrapper-in");
|
|
78
|
+
var els = document.querySelectorAll(".blue-actions");
|
|
72
79
|
|
|
73
|
-
|
|
74
|
-
;
|
|
75
|
-
document.querySelector(".blue-loading").style.display = "";
|
|
80
|
+
for (var i = 0; i < els.length; i++) {
|
|
81
|
+
toggleClass(els[i], "open");
|
|
76
82
|
}
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Resets alert messages that was set with `setAlertMessage`.
|
|
86
|
+
* When using React, you should use `StatusProvider` instead: https://bruegmann.github.io/blue-react/v8/component/StatusProvider
|
|
87
|
+
* @param alertClassName Leave empty to reset messages of any status type
|
|
88
|
+
*/
|
|
77
89
|
|
|
78
|
-
function showSuccess() {
|
|
79
|
-
;
|
|
80
|
-
document.querySelector(".blue-status-success").style.display = "flex";
|
|
81
|
-
}
|
|
82
90
|
|
|
83
|
-
|
|
91
|
+
function resetAlertMessage(alertClassName) {
|
|
92
|
+
if (!alertClassName) {
|
|
84
93
|
;
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
toggleClass(document.querySelector(".blue-wrapper"), "active");
|
|
90
|
-
toggleClass(document.querySelector(".blue-layout"), "wrapper-in");
|
|
91
|
-
var els = document.querySelectorAll(".blue-actions");
|
|
92
|
-
|
|
93
|
-
for (var i = 0; i < els.length; i++) {
|
|
94
|
-
toggleClass(els[i], "open");
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
/**
|
|
98
|
-
* Resets alert messages that was set with `setAlertMessage`.
|
|
99
|
-
* @param alertClassName Leave empty to reset messages of any status type
|
|
100
|
-
*/
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
function resetAlertMessage(alertClassName) {
|
|
104
|
-
if (!alertClassName) {
|
|
105
|
-
;
|
|
106
|
-
["loading", "success", "info", "warning", "danger"].forEach(function (status) {
|
|
107
|
-
resetAlertMessage(status);
|
|
108
|
-
});
|
|
109
|
-
} else {
|
|
110
|
-
var alertElement = document.querySelector(".blue-status-alert");
|
|
111
|
-
var statusElement = document.querySelector(".blue-status-" + alertClassName);
|
|
112
|
-
if (statusElement) statusElement.style.display = "";
|
|
113
|
-
|
|
114
|
-
if (alertElement) {
|
|
115
|
-
alertElement.style.display = "";
|
|
116
|
-
removeClass(alertElement, "alert-" + (alertClassName === "loading" ? "info" : alertClassName));
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
function setAlertMessage(message) {
|
|
122
|
-
var alertClassName = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "info";
|
|
123
|
-
var close = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
|
124
|
-
var detailText = arguments.length > 3 ? arguments[3] : undefined;
|
|
94
|
+
["loading", "success", "info", "warning", "danger"].forEach(function (status) {
|
|
95
|
+
resetAlertMessage(status);
|
|
96
|
+
});
|
|
97
|
+
} else {
|
|
125
98
|
var alertElement = document.querySelector(".blue-status-alert");
|
|
126
99
|
var statusElement = document.querySelector(".blue-status-" + alertClassName);
|
|
127
|
-
if (statusElement) statusElement.style.display = "
|
|
100
|
+
if (statusElement) statusElement.style.display = "";
|
|
128
101
|
|
|
129
102
|
if (alertElement) {
|
|
130
|
-
alertElement.style.display = "
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
103
|
+
alertElement.style.display = "";
|
|
104
|
+
removeClass(alertElement, "alert-" + (alertClassName === "loading" ? "info" : alertClassName));
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* When using React, you should use `StatusProvider` instead: https://bruegmann.github.io/blue-react/v8/component/StatusProvider
|
|
110
|
+
*/
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
function setAlertMessage(message) {
|
|
114
|
+
var alertClassName = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "info";
|
|
115
|
+
var close = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
|
116
|
+
var detailText = arguments.length > 3 ? arguments[3] : undefined;
|
|
117
|
+
var alertElement = document.querySelector(".blue-status-alert");
|
|
118
|
+
var statusElement = document.querySelector(".blue-status-" + alertClassName);
|
|
119
|
+
if (statusElement) statusElement.style.display = "flex";
|
|
120
|
+
|
|
121
|
+
if (alertElement) {
|
|
122
|
+
alertElement.style.display = "block";
|
|
123
|
+
addClass(alertElement, "alert-" + (alertClassName === "loading" ? "info" : alertClassName));
|
|
124
|
+
alertElement.querySelector(".alert-body").innerHTML = "<h2>" + message + "</h2>";
|
|
125
|
+
|
|
126
|
+
if (detailText) {
|
|
127
|
+
alertElement.querySelector(".alert-body").innerHTML += "<span>" + detailText + "</span>";
|
|
128
|
+
}
|
|
137
129
|
|
|
138
|
-
|
|
130
|
+
var btnCloseElement = alertElement.querySelector(".btn-close");
|
|
139
131
|
|
|
140
|
-
|
|
141
|
-
|
|
132
|
+
if (close) {
|
|
133
|
+
btnCloseElement.style.display = "inline-block";
|
|
142
134
|
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
}
|
|
135
|
+
btnCloseElement.onclick = function () {
|
|
136
|
+
resetAlertMessage(alertClassName);
|
|
137
|
+
};
|
|
138
|
+
} else {
|
|
139
|
+
btnCloseElement.style.display = "none";
|
|
149
140
|
}
|
|
150
141
|
}
|
|
142
|
+
}
|
|
151
143
|
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
var guid = function guid() {
|
|
157
|
-
return s4() + s4() + "-" + s4() + "-" + s4() + "-" + s4() + "-" + s4() + s4() + s4();
|
|
158
|
-
};
|
|
144
|
+
function s4() {
|
|
145
|
+
return Math.floor((1 + Math.random()) * 0x10000).toString(16).substring(1);
|
|
146
|
+
}
|
|
159
147
|
|
|
160
|
-
|
|
148
|
+
var guid = function guid() {
|
|
149
|
+
return s4() + s4() + "-" + s4() + "-" + s4() + "-" + s4() + "-" + s4() + s4() + s4();
|
|
150
|
+
};
|
|
161
151
|
|
|
162
|
-
|
|
163
|
-
var routerPage = document.querySelector(".router-page.active");
|
|
164
|
-
routerPage.scroll({
|
|
165
|
-
behavior: "smooth",
|
|
166
|
-
left: 0,
|
|
167
|
-
top: 0
|
|
168
|
-
});
|
|
169
|
-
}
|
|
152
|
+
exports.guid = guid;
|
|
170
153
|
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
154
|
+
function scrollToTop() {
|
|
155
|
+
var routerPage = document.querySelector(".router-page.active");
|
|
156
|
+
routerPage.scroll({
|
|
157
|
+
behavior: "smooth",
|
|
158
|
+
left: 0,
|
|
159
|
+
top: 0
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
var httpStatusCodes = {
|
|
164
|
+
400: "Bad Request",
|
|
165
|
+
401: "Unauthorized",
|
|
166
|
+
403: "Forbidden",
|
|
167
|
+
404: "Not Found",
|
|
168
|
+
405: "Method Not Allowed",
|
|
169
|
+
408: "Request Timeout",
|
|
170
|
+
409: "Conflict",
|
|
171
|
+
500: "Internal Server Error",
|
|
172
|
+
502: "Bad Gateway"
|
|
173
|
+
};
|
|
174
|
+
|
|
175
|
+
function fetchData(input, init) {
|
|
176
|
+
var showErrorDetail = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
|
|
177
|
+
var onError = arguments.length > 3 ? arguments[3] : undefined;
|
|
178
|
+
return fetch(input, init).then(function (response) {
|
|
179
|
+
if (!response.ok) throw response;
|
|
180
|
+
return response;
|
|
181
|
+
}).catch(function (reason) {
|
|
182
|
+
if (reason.text) {
|
|
183
|
+
reason.text().then(function (errorMessage) {
|
|
184
|
+
setAlertMessage("".concat(reason.status, " - ").concat(reason.statusText || httpStatusCodes[reason.status] || "Error"), "danger", true, showErrorDetail ? errorMessage.toString().replace(/(<style[\w\W]+style>)/g, "").replace(/<[^>]+>/g, "") : undefined);
|
|
185
|
+
|
|
186
|
+
if (onError) {
|
|
187
|
+
onError(errorMessage, reason);
|
|
188
|
+
}
|
|
189
|
+
});
|
|
190
|
+
}
|
|
203
191
|
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
192
|
+
throw reason;
|
|
193
|
+
});
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
var _default = {
|
|
197
|
+
hasClass: hasClass,
|
|
198
|
+
addClass: addClass,
|
|
199
|
+
removeClass: removeClass,
|
|
200
|
+
toggleClass: toggleClass,
|
|
201
|
+
startLoading: startLoading,
|
|
202
|
+
finishLoading: finishLoading,
|
|
203
|
+
showSuccess: showSuccess,
|
|
204
|
+
hideSuccess: hideSuccess,
|
|
205
|
+
toggleActions: toggleActions,
|
|
206
|
+
resetAlertMessage: resetAlertMessage,
|
|
207
|
+
setAlertMessage: setAlertMessage,
|
|
208
|
+
guid: guid,
|
|
209
|
+
scrollToTop: scrollToTop,
|
|
210
|
+
fetchData: fetchData
|
|
211
|
+
};
|
|
212
|
+
exports.default = _default;
|
|
@@ -1,45 +1,32 @@
|
|
|
1
|
-
|
|
2
|
-
if (typeof define === "function" && define.amd) {
|
|
3
|
-
define(["exports"], factory);
|
|
4
|
-
} else if (typeof exports !== "undefined") {
|
|
5
|
-
factory(exports);
|
|
6
|
-
} else {
|
|
7
|
-
var mod = {
|
|
8
|
-
exports: {}
|
|
9
|
-
};
|
|
10
|
-
factory(mod.exports);
|
|
11
|
-
global.shared = mod.exports;
|
|
12
|
-
}
|
|
13
|
-
})(typeof globalThis !== "undefined" ? globalThis : typeof self !== "undefined" ? self : this, function (_exports) {
|
|
14
|
-
"use strict";
|
|
1
|
+
"use strict";
|
|
15
2
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.getPhrase = getPhrase;
|
|
7
|
+
var phrases = {
|
|
8
|
+
Cancel: ["Cancel", "Abbrechen"],
|
|
9
|
+
Yes: ["Yes", "Ja"],
|
|
10
|
+
No: ["No", "Nein"],
|
|
11
|
+
Message: ["Message", "Nachricht"],
|
|
12
|
+
"Toggle menu": ["Toggle menu", "Menü umschalten"]
|
|
13
|
+
};
|
|
26
14
|
|
|
27
|
-
|
|
28
|
-
|
|
15
|
+
function getPhrase(keyword) {
|
|
16
|
+
var countryCode = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;
|
|
29
17
|
|
|
30
|
-
|
|
18
|
+
var _phrases = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined;
|
|
31
19
|
|
|
32
|
-
|
|
33
|
-
|
|
20
|
+
countryCode = countryCode || navigator.language.toLowerCase().indexOf("de") > -1 ? "de-DE" : "en-US";
|
|
21
|
+
_phrases = _phrases || phrases;
|
|
34
22
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
} else {
|
|
39
|
-
return _phrases[keyword][0];
|
|
40
|
-
}
|
|
23
|
+
if (_phrases[keyword]) {
|
|
24
|
+
if (countryCode.indexOf("de-") > -1) {
|
|
25
|
+
return _phrases[keyword][1];
|
|
41
26
|
} else {
|
|
42
|
-
return keyword;
|
|
27
|
+
return _phrases[keyword][0];
|
|
43
28
|
}
|
|
29
|
+
} else {
|
|
30
|
+
return keyword;
|
|
44
31
|
}
|
|
45
|
-
}
|
|
32
|
+
}
|
package/dist/neu.scss
ADDED
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
$theme: #e5dff4 !default;
|
|
2
|
+
|
|
3
|
+
@function neu-shadow($multiplicate: 1, $inset: false, $switch: false) {
|
|
4
|
+
$preset: "";
|
|
5
|
+
$bg-suffix: "";
|
|
6
|
+
|
|
7
|
+
@if $inset {
|
|
8
|
+
$preset: "inset";
|
|
9
|
+
$bg-suffix: "-inset";
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
@if $switch {
|
|
13
|
+
@return $preset calc(var(--neu-distance) * #{$multiplicate}) calc(var(--neu-distance) * #{$multiplicate})
|
|
14
|
+
calc(var(--neu-blur) * #{$multiplicate}) var(--neu-shadow-high#{$bg-suffix}),
|
|
15
|
+
$preset calc(var(--neu-distance) * -#{$multiplicate}) calc(var(--neu-distance) * -#{$multiplicate})
|
|
16
|
+
calc(var(--neu-blur) * #{$multiplicate}) var(--neu-shadow-low#{$bg-suffix});
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
@return $preset calc(var(--neu-distance) * -#{$multiplicate}) calc(var(--neu-distance) * -#{$multiplicate})
|
|
20
|
+
calc(var(--neu-blur) * #{$multiplicate}) var(--neu-shadow-high#{$bg-suffix}),
|
|
21
|
+
$preset calc(var(--neu-distance) * #{$multiplicate}) calc(var(--neu-distance) * #{$multiplicate})
|
|
22
|
+
calc(var(--neu-blur) * #{$multiplicate}) var(--neu-shadow-low#{$bg-suffix});
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
$neu-steps: (
|
|
26
|
+
1: 0.25,
|
|
27
|
+
2: 0.5,
|
|
28
|
+
3: 1,
|
|
29
|
+
4: 1.5,
|
|
30
|
+
5: 3
|
|
31
|
+
);
|
|
32
|
+
|
|
33
|
+
@mixin neu($bg: $theme, $bg-inset: $theme) {
|
|
34
|
+
--neu-bg: #{$bg};
|
|
35
|
+
--neu-bg-inset: #{$bg-inset};
|
|
36
|
+
|
|
37
|
+
--neu-shadow-high: #{lighten($bg, 3%)};
|
|
38
|
+
--neu-shadow-low: #{darken($bg, 4%)};
|
|
39
|
+
--neu-shadow-high-inset: #{lighten($bg-inset, 4%)};
|
|
40
|
+
--neu-shadow-low-inset: #{darken($bg-inset, 4%)};
|
|
41
|
+
|
|
42
|
+
--neu-distance: 0.37rem;
|
|
43
|
+
--neu-blur: 0.7rem;
|
|
44
|
+
|
|
45
|
+
@each $unit, $value in $neu-steps {
|
|
46
|
+
--neu-shadow-#{$unit}: #{neu-shadow($value)};
|
|
47
|
+
--neu-shadow-inset-#{$unit}: #{neu-shadow($value, true)};
|
|
48
|
+
|
|
49
|
+
--neu-shadow-switch-#{$unit}: #{neu-shadow($value, false, true)};
|
|
50
|
+
--neu-shadow-inset-switch-#{$unit}: #{neu-shadow($value, true, true)};
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
@mixin neu-define-utility-classes() {
|
|
55
|
+
@each $unit, $value in $neu-steps {
|
|
56
|
+
.neu-shadow-#{$unit} {
|
|
57
|
+
box-shadow: var(--neu-shadow-#{$unit}) !important;
|
|
58
|
+
}
|
|
59
|
+
.neu-shadow-inset-#{$unit} {
|
|
60
|
+
box-shadow: var(--neu-shadow-inset-#{$unit}) !important;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
.neu-shadow-switch-#{$unit} {
|
|
64
|
+
box-shadow: var(--neu-shadow-switch-#{$unit}) !important;
|
|
65
|
+
}
|
|
66
|
+
.neu-shadow-inset-switch-#{$unit} {
|
|
67
|
+
box-shadow: var(--neu-shadow-inset-switch-#{$unit}) !important;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
:root {
|
|
73
|
+
@include neu();
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
@include neu-define-utility-classes();
|