utopia-ui 1.0.7 → 2.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.
Files changed (41) hide show
  1. package/LICENSE.md +5 -0
  2. package/README.md +39 -77
  3. package/dist/Components/AppShell/AppShell.d.ts +6 -0
  4. package/dist/Components/AppShell/Content.d.ts +6 -0
  5. package/dist/Components/AppShell/NavBar.d.ts +5 -0
  6. package/dist/Components/AppShell/SideBar.d.ts +11 -0
  7. package/dist/Components/AppShell/SidebarSubmenu.d.ts +8 -0
  8. package/dist/Components/AppShell/index.d.ts +3 -0
  9. package/dist/Components/Auth/auth.d.ts +24 -0
  10. package/dist/Components/Auth/authDirectus.d.ts +30 -0
  11. package/dist/Components/Auth/index.d.ts +1 -0
  12. package/dist/Components/Gaming/Modal.d.ts +9 -0
  13. package/dist/Components/Gaming/Quests.d.ts +2 -0
  14. package/dist/Components/Gaming/index.d.ts +2 -0
  15. package/dist/Components/Input/InputText.d.ts +12 -0
  16. package/dist/Components/Input/TextAreaInput.d.ts +11 -0
  17. package/dist/Components/Map/Layer.d.ts +3 -0
  18. package/dist/Components/Map/Subcomponents/AddButton.d.ts +4 -0
  19. package/dist/Components/Map/Subcomponents/NewItemPopup.d.ts +10 -0
  20. package/dist/Components/Map/Subcomponents/Popup.d.ts +10 -0
  21. package/dist/Components/Map/Tags.d.ts +5 -0
  22. package/dist/Components/Map/UtopiaMap.d.ts +12 -0
  23. package/dist/Components/Map/UtopiaMap.stories.d.ts +5 -0
  24. package/dist/Components/Map/data.d.ts +4 -0
  25. package/dist/Components/Map/hooks/useItems.d.ts +20 -0
  26. package/dist/Components/Map/hooks/useLayers.d.ts +14 -0
  27. package/dist/Components/Map/hooks/useTags.d.ts +16 -0
  28. package/dist/Components/Map/index.d.ts +3 -0
  29. package/dist/Components/Profile/Settings.d.ts +5 -0
  30. package/dist/Components/Profile/index.d.ts +1 -0
  31. package/dist/Components/TitleCard.d.ts +9 -0
  32. package/dist/Components/Typography/Subtitle.d.ts +6 -0
  33. package/dist/Utils/DynamicHeroIcon.d.ts +5 -0
  34. package/dist/Utils/ReplaceURLs.d.ts +1 -0
  35. package/dist/index.d.ts +6 -16
  36. package/dist/index.js +969 -106
  37. package/dist/index.js.map +1 -1
  38. package/dist/types.d.ts +38 -5
  39. package/package.json +24 -13
  40. package/dist/Components/Map/MarkerPopup.d.ts +0 -8
  41. package/dist/Utils/StringFormater.d.ts +0 -1
package/dist/index.js CHANGED
@@ -1,47 +1,440 @@
1
+ import { useMap, Popup as Popup$1, MapContainer, TileLayer, useMapEvents, Marker } from 'react-leaflet';
2
+ import 'leaflet/dist/leaflet.css';
3
+ import * as React from 'react';
4
+ import { createContext, useContext, useReducer, useCallback, useState, useEffect, useRef } from 'react';
5
+ import * as L from 'leaflet';
6
+ import { LatLng } from 'leaflet';
7
+ import MarkerClusterGroup from 'react-leaflet-cluster';
8
+ import * as HIcons from '@heroicons/react/20/solid';
9
+ import { Link, BrowserRouter, useLocation, NavLink, useNavigate } from 'react-router-dom';
10
+ import { toast, ToastContainer } from 'react-toastify';
11
+ import QuestionMarkIcon from '@heroicons/react/24/outline/QuestionMarkCircleIcon';
12
+ import { initTE, Sidenav } from 'tw-elements';
13
+ import ChevronDownIcon from '@heroicons/react/24/outline/ChevronDownIcon';
14
+ import ChevronRightIcon from '@heroicons/react/24/outline/ChevronRightIcon';
15
+ import 'react-toastify/dist/ReactToastify.css';
1
16
 
17
+ var Item = /** @class */ (function () {
18
+ function Item(id, name, text, position, layer) {
19
+ this.id = id;
20
+ this.name = name;
21
+ this.text = text;
22
+ this.position = position;
23
+ this.layer = layer;
24
+ }
25
+ return Item;
26
+ }());
27
+ var Geometry = /** @class */ (function () {
28
+ function Geometry(lng, lat) {
29
+ this.coordinates = [lng, lat];
30
+ this.type = "Point";
31
+ }
32
+ return Geometry;
33
+ }());
2
34
 
3
- function ___$insertStyle(css) {
4
- if (!css || typeof window === 'undefined') {
5
- return;
6
- }
7
- const style = document.createElement('style');
8
- style.setAttribute('type', 'text/css');
9
- style.innerHTML = css;
10
- document.head.appendChild(style);
11
- return css;
12
- }
13
-
14
- Object.defineProperty(exports, '__esModule', { value: true });
15
-
16
- var reactLeaflet = require('react-leaflet');
17
- require('leaflet/dist/leaflet.css');
18
- var React = require('react');
19
- var L = require('leaflet');
20
- var MarkerClusterGroup = require('react-leaflet-cluster');
21
-
22
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
23
-
24
- function _interopNamespace(e) {
25
- if (e && e.__esModule) return e;
26
- var n = Object.create(null);
27
- if (e) {
28
- Object.keys(e).forEach(function (k) {
29
- if (k !== 'default') {
30
- var d = Object.getOwnPropertyDescriptor(e, k);
31
- Object.defineProperty(n, k, d.get ? d : {
32
- enumerable: true,
33
- get: function () { return e[k]; }
34
- });
35
- }
36
- });
35
+ function styleInject(css, ref) {
36
+ if ( ref === void 0 ) ref = {};
37
+ var insertAt = ref.insertAt;
38
+
39
+ if (!css || typeof document === 'undefined') { return; }
40
+
41
+ var head = document.head || document.getElementsByTagName('head')[0];
42
+ var style = document.createElement('style');
43
+ style.type = 'text/css';
44
+
45
+ if (insertAt === 'top') {
46
+ if (head.firstChild) {
47
+ head.insertBefore(style, head.firstChild);
48
+ } else {
49
+ head.appendChild(style);
37
50
  }
38
- n["default"] = e;
39
- return Object.freeze(n);
51
+ } else {
52
+ head.appendChild(style);
53
+ }
54
+
55
+ if (style.styleSheet) {
56
+ style.styleSheet.cssText = css;
57
+ } else {
58
+ style.appendChild(document.createTextNode(css));
59
+ }
60
+ }
61
+
62
+ var css_248z$1 = ".leaflet-container {\n text-align: left;\n }\n \n \n \n input {\n box-sizing: border-box;\n }\n \n textarea {\n box-sizing: border-box;\n }\n \n .leaflet-control-attribution {\n display: none;\n }\n \n .leaflet-data-marker {\n \n background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACMAAAAQCAYAAACcN8ZaAAAB3klEQVR42s3U4UdDURzG8czMXJnJ1Vwzc6VJZjaZJdlMlpQsKdmUFNOUspRSSqUolfQfr+fF98Vx5mwv9qbDx7LdznnO7/7Omej3+/+Ga0QMUYkhbvBgmhzCQxwxibIGrGEF8CQhU+LLtKQkQNqScUgjxRxTBIxbgfgD/BgnhM8kM5KTeclLQYqGkkMRBckzR8ic/mAgd5BAZplsUaqyIg2sDtHg2brUZJk5SmwopErJUWE8SpmTMhNvya60Zd/SNrR4bkeaskG4uiwRZk6yrJEYFibGAxn+scECHTmTnuVCzvmty3PHciB7bGKN6lQkzysPqIrHmpFhYbKUtckC1/Ioz4ZHuZdbuSLYiRxRpSZVWXZVxAzC0R4Ik5SQsu6w8yd5l2/5kg95I9SdXMoZQfYIUjeqEUrgOkXGPeN4TYRhxy8E+ZUf+eS7B7miIoeybVSjKDnm8u3+gH3pDTYwu1igATvs/pXqvBKiR4i2bNJfi1ZfUAnjgrOG8wY2quNzBKuU/ZS+uSFEl5O0xRGuUIlZCcw7xG5QPkeHYUSNV5WXGou2sC3rBC0LjenqCXGO0WEiTJa0Lr4KixdHBrDGuGGiRqCUpFk8pGIpQtCU7p4YPwxYxEMCk1aAMQZh8Ac8PfbIzYPJOwAAAABJRU5ErkJggg==') no-repeat;\n background-position: 6px 32px;\n }\n \n .crosshair-cursor-enabled {\n cursor: crosshair;\n }\n \n .leaflet-container {\n cursor: inherit;\n }\n \n .calendar-icon {\n position: relative;\n top: -35px;\n left: 10px;\n width: 13px;\n }\n \n \n .circle-icon {\n position: relative;\n top: -33px;\n left: 10px;\n width: 13px;\n }\n \n .leaflet-popup-scrolled {\n overflow-x: hidden;\n }";
63
+ styleInject(css_248z$1);
64
+
65
+ /******************************************************************************
66
+ Copyright (c) Microsoft Corporation.
67
+
68
+ Permission to use, copy, modify, and/or distribute this software for any
69
+ purpose with or without fee is hereby granted.
70
+
71
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
72
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
73
+ AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
74
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
75
+ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
76
+ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
77
+ PERFORMANCE OF THIS SOFTWARE.
78
+ ***************************************************************************** */
79
+
80
+ var __assign = function() {
81
+ __assign = Object.assign || function __assign(t) {
82
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
83
+ s = arguments[i];
84
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
85
+ }
86
+ return t;
87
+ };
88
+ return __assign.apply(this, arguments);
89
+ };
90
+
91
+ function __rest(s, e) {
92
+ var t = {};
93
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
94
+ t[p] = s[p];
95
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
96
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
97
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
98
+ t[p[i]] = s[p[i]];
99
+ }
100
+ return t;
101
+ }
102
+
103
+ function __awaiter(thisArg, _arguments, P, generator) {
104
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
105
+ return new (P || (P = Promise))(function (resolve, reject) {
106
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
107
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
108
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
109
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
110
+ });
111
+ }
112
+
113
+ function __generator(thisArg, body) {
114
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
115
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
116
+ function verb(n) { return function (v) { return step([n, v]); }; }
117
+ function step(op) {
118
+ if (f) throw new TypeError("Generator is already executing.");
119
+ while (_) try {
120
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
121
+ if (y = 0, t) op = [op[0] & 2, t.value];
122
+ switch (op[0]) {
123
+ case 0: case 1: t = op; break;
124
+ case 4: _.label++; return { value: op[1], done: false };
125
+ case 5: _.label++; y = op[1]; op = [0]; continue;
126
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
127
+ default:
128
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
129
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
130
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
131
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
132
+ if (t[2]) _.ops.pop();
133
+ _.trys.pop(); continue;
134
+ }
135
+ op = body.call(thisArg, _);
136
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
137
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
138
+ }
139
+ }
140
+
141
+ function __spreadArray(to, from, pack) {
142
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
143
+ if (ar || !(i in from)) {
144
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
145
+ ar[i] = from[i];
146
+ }
147
+ }
148
+ return to.concat(ar || Array.prototype.slice.call(from));
149
+ }
150
+
151
+ // DynamicHeroIcon.tsx
152
+ var DynamicHeroIcon = function (props) {
153
+ var icons = __rest(HIcons, []);
154
+ var TheIcon = icons[props.icon];
155
+ if (!TheIcon) {
156
+ console.log("Icon ".concat(props.icon, " doesn't exist"));
157
+ }
158
+ return (React.createElement(React.Fragment, null,
159
+ React.createElement(TheIcon, { className: "tw-h-6 tw-w-6 tw-text-white", "aria-hidden": "true" })));
160
+ };
161
+
162
+ var LayerContext = createContext({
163
+ layers: [],
164
+ addLayer: function () { },
165
+ });
166
+ function useLayerManager(initialLayers) {
167
+ var _a = useReducer(function (state, action) {
168
+ switch (action.type) {
169
+ case "ADD LAYER":
170
+ var exist = state.find(function (layer) {
171
+ return layer.name === action.layer.name ? true : false;
172
+ });
173
+ if (!exist)
174
+ return __spreadArray(__spreadArray([], state, true), [
175
+ action.layer,
176
+ ], false);
177
+ else
178
+ return state;
179
+ default:
180
+ throw new Error();
181
+ }
182
+ }, initialLayers), layers = _a[0], dispatch = _a[1];
183
+ var addLayer = useCallback(function (layer) {
184
+ dispatch({
185
+ type: "ADD LAYER",
186
+ layer: layer
187
+ });
188
+ }, []);
189
+ return { layers: layers, addLayer: addLayer };
190
+ }
191
+ var LayersProvider = function (_a) {
192
+ var initialLayers = _a.initialLayers, children = _a.children;
193
+ return (React.createElement(LayerContext.Provider, { value: useLayerManager(initialLayers) }, children));
194
+ };
195
+ var useLayers = function () {
196
+ var layers = useContext(LayerContext).layers;
197
+ return layers;
198
+ };
199
+ var useAddLayer = function () {
200
+ var addLayer = useContext(LayerContext).addLayer;
201
+ return addLayer;
202
+ };
203
+
204
+ function AddButton(_a) {
205
+ var setSelectMode = _a.setSelectMode;
206
+ var layers = useLayers();
207
+ return (React.createElement("div", { className: "tw-dropdown tw-dropdown-top tw-dropdown-end tw-dropdown-hover tw-z-500 tw-absolute tw-right-5 tw-bottom-5" },
208
+ React.createElement("button", { tabIndex: 0, className: "tw-z-500 tw-border-0 tw-m-0 tw-mt-2 tw-p-0 tw-w-14 tw-h-14 tw-cursor-pointer tw-bg-white tw-rounded-full hover:tw-bg-gray-100 tw-mouse tw-drop-shadow-md tw-transition tw-ease-in tw-duration-200 focus:tw-outline-none" },
209
+ React.createElement("svg", { viewBox: "0 0 20 20", enableBackground: "new 0 0 20 20", className: "tw-w-6 tw-h-6 tw-inline-block" },
210
+ React.createElement("path", { fill: "#2e8555", d: "M16,10c0,0.553-0.048,1-0.601,1H11v4.399C11,15.951,10.553,16,10,16c-0.553,0-1-0.049-1-0.601V11H4.601\n C4.049,11,4,10.553,4,10c0-0.553,0.049-1,0.601-1H9V4.601C9,4.048,9.447,4,10,4c0.553,0,1,0.048,1,0.601V9h4.399\n C15.952,9,16,9.447,16,10z" }))),
211
+ React.createElement("ul", { tabIndex: 0, className: "tw-dropdown-content tw-pr-2 tw-mb-0 tw-list-none" }, layers.map(function (layer) { return (React.createElement("li", { key: layer.name },
212
+ React.createElement("a", null,
213
+ React.createElement("div", { className: "tw-tooltip tw-tooltip-left", "data-tip": layer.menuText },
214
+ React.createElement("button", { tabIndex: 0, className: "tw-z-500 tw-border-0 tw-pl-2 tw-p-0 tw-mb-2 tw-mt-2 tw-w-10 tw-h-10 tw-cursor-pointer tw-rounded-full tw-mouse tw-drop-shadow-md tw-transition tw-ease-in tw-duration-200 focus:tw-outline-none", style: { backgroundColor: layer.menuColor }, onClick: function () { setSelectMode(layer); } },
215
+ React.createElement(DynamicHeroIcon, { icon: layer.menuIcon })))))); }))));
216
+ }
217
+
218
+ var ItemContext = createContext({
219
+ items: [],
220
+ addItem: function () { },
221
+ updateItem: function () { },
222
+ removeItem: function () { },
223
+ resetItems: function () { }
224
+ });
225
+ function useItemsManager(initialItems) {
226
+ var _a = useReducer(function (state, action) {
227
+ switch (action.type) {
228
+ case "ADD":
229
+ var exist = state.find(function (item) {
230
+ return item.id === action.item.id ? true : false;
231
+ });
232
+ if (!exist)
233
+ return __spreadArray(__spreadArray([], state, true), [
234
+ action.item,
235
+ ], false);
236
+ else
237
+ return state;
238
+ case "UPDATE":
239
+ return state.map(function (item) {
240
+ if (item.id === action.item.id) {
241
+ return action.item;
242
+ }
243
+ return item;
244
+ });
245
+ case "REMOVE":
246
+ return state.filter(function (item) { return item !== action.item; });
247
+ case "RESET":
248
+ return state.filter(function (item) { return item.layer.name !== action.layer.name; });
249
+ default:
250
+ throw new Error();
251
+ }
252
+ }, initialItems), items = _a[0], dispatch = _a[1];
253
+ var addItem = useCallback(function (item) {
254
+ dispatch({
255
+ type: "ADD",
256
+ item: item,
257
+ });
258
+ }, []);
259
+ var updateItem = useCallback(function (item) {
260
+ dispatch({
261
+ type: "UPDATE",
262
+ item: item,
263
+ });
264
+ }, []);
265
+ var removeItem = useCallback(function (item) {
266
+ dispatch({
267
+ type: "REMOVE",
268
+ item: item,
269
+ });
270
+ }, []);
271
+ var resetItems = useCallback(function (layer) {
272
+ dispatch({
273
+ type: "RESET",
274
+ layer: layer
275
+ });
276
+ }, []);
277
+ return { items: items, updateItem: updateItem, addItem: addItem, removeItem: removeItem, resetItems: resetItems };
278
+ }
279
+ var ItemsProvider = function (_a) {
280
+ var initialItems = _a.initialItems, children = _a.children;
281
+ return (React.createElement(ItemContext.Provider, { value: useItemsManager(initialItems) }, children));
282
+ };
283
+ var useItems = function () {
284
+ var items = useContext(ItemContext).items;
285
+ return items;
286
+ };
287
+ var useAddItem = function () {
288
+ var addItem = useContext(ItemContext).addItem;
289
+ return addItem;
290
+ };
291
+ var useUpdateItem = function () {
292
+ var updateItem = useContext(ItemContext).updateItem;
293
+ return updateItem;
294
+ };
295
+ var useRemoveItem = function () {
296
+ var removeItem = useContext(ItemContext).removeItem;
297
+ return removeItem;
298
+ };
299
+ var useResetItems = function () {
300
+ var resetItems = useContext(ItemContext).resetItems;
301
+ return resetItems;
302
+ };
303
+
304
+ function NewItemPopup(props) {
305
+ var _a = useState(''), name = _a[0], setName = _a[1];
306
+ var _b = useState(''), text = _b[0], setText = _b[1];
307
+ var map = useMap();
308
+ var addItem = useAddItem();
309
+ var updateItem = useUpdateItem();
310
+ var handleSubmit = function (evt) {
311
+ evt.preventDefault();
312
+ console.log("New Item Popup is adding Item ...");
313
+ if (props.item) {
314
+ updateItem(new Item(props.item.id, name, text, new Geometry(props.position.lng, props.position.lat), props.layer));
315
+ }
316
+ else {
317
+ addItem(new Item(crypto.randomUUID(), name, text, new Geometry(props.position.lng, props.position.lat), props.layer));
318
+ }
319
+ map.closePopup();
320
+ props.setNewItemPopup(null);
321
+ };
322
+ var resetPopup = function () {
323
+ setName('');
324
+ setText('');
325
+ };
326
+ var setItemValues = function () {
327
+ var _a, _b;
328
+ if (props.item) {
329
+ setName((_a = props.item) === null || _a === void 0 ? void 0 : _a.name);
330
+ setText((_b = props.item) === null || _b === void 0 ? void 0 : _b.text);
331
+ console.log('set name + txt');
332
+ }
333
+ };
334
+ useEffect(function () {
335
+ setItemValues();
336
+ }, [props.item]);
337
+ return (React.createElement(Popup$1, { minWidth: 275, maxWidth: 275, autoPanPadding: [20, 5], eventHandlers: {
338
+ remove: resetPopup
339
+ }, position: props.position },
340
+ React.createElement("form", { onSubmit: handleSubmit },
341
+ React.createElement("div", { className: 'tw-flex tw-justify-center' },
342
+ React.createElement("b", { className: "tw-text-xl tw-font-bold" },
343
+ "New ",
344
+ props.layer.name)),
345
+ React.createElement("input", { type: "text", placeholder: "Name", className: "tw-input tw-input-bordered tw-w-full tw-max-w-xs tw-mt-5", value: name, onChange: function (e) { return setName(e.target.value); } }),
346
+ React.createElement("textarea", { className: "tw-textarea tw-textarea-bordered tw-w-full tw-mt-5 tw-leading-5 tw-h-40", placeholder: "Text", value: text, onChange: function (e) { return setText(e.target.value); } }),
347
+ React.createElement("div", { className: 'tw-flex tw-justify-center' },
348
+ React.createElement("button", { className: "tw-btn tw-mt-5 tw-place-self-center" }, "Save")))));
40
349
  }
41
350
 
42
- var React__namespace = /*#__PURE__*/_interopNamespace(React);
43
- var L__namespace = /*#__PURE__*/_interopNamespace(L);
44
- var MarkerClusterGroup__default = /*#__PURE__*/_interopDefaultLegacy(MarkerClusterGroup);
351
+ var TagContext = createContext({
352
+ tags: [],
353
+ addTag: function () { },
354
+ removeTag: function () { }
355
+ });
356
+ function useTagsManager(initialTags) {
357
+ var _a = useReducer(function (state, action) {
358
+ switch (action.type) {
359
+ case "ADD":
360
+ return __spreadArray(__spreadArray([], state, true), [
361
+ action.tag,
362
+ ], false);
363
+ case "REMOVE":
364
+ return state.filter(function (_a) {
365
+ var id = _a.id;
366
+ return id !== action.id;
367
+ });
368
+ default:
369
+ throw new Error();
370
+ }
371
+ }, initialTags), tags = _a[0], dispatch = _a[1];
372
+ var addTag = useCallback(function (tag) {
373
+ dispatch({
374
+ type: "ADD",
375
+ tag: tag,
376
+ });
377
+ }, []);
378
+ var removeTag = useCallback(function (id) {
379
+ dispatch({
380
+ type: "REMOVE",
381
+ id: id,
382
+ });
383
+ }, []);
384
+ return { tags: tags, addTag: addTag, removeTag: removeTag };
385
+ }
386
+ var TagsProvider = function (_a) {
387
+ var initialTags = _a.initialTags, children = _a.children;
388
+ return (React.createElement(TagContext.Provider, { value: useTagsManager(initialTags) }, children));
389
+ };
390
+ var useTags = function () {
391
+ var tags = useContext(TagContext).tags;
392
+ return tags;
393
+ };
394
+ var useAddTag = function () {
395
+ var addTag = useContext(TagContext).addTag;
396
+ return addTag;
397
+ };
398
+
399
+ function MapEventListener(props) {
400
+ useMapEvents({
401
+ click: function (e) {
402
+ console.log(e.latlng.lat + ',' + e.latlng.lng);
403
+ if (props.selectMode != null) {
404
+ props.setNewItemPopup({ layer: props.selectMode, position: e.latlng });
405
+ props.setSelectMode(null);
406
+ }
407
+ }
408
+ });
409
+ return null;
410
+ }
411
+ /** This is a description of the foo function. */
412
+ function UtopiaMap(_a) {
413
+ var _b = _a.height, height = _b === void 0 ? "500px" : _b, _c = _a.width, width = _c === void 0 ? "100%" : _c, _d = _a.center, center = _d === void 0 ? new LatLng(50.6, 9.5) : _d, _e = _a.zoom, zoom = _e === void 0 ? 10 : _e, children = _a.children;
414
+ var _f = useState(null), selectMode = _f[0], setSelectMode = _f[1];
415
+ var _g = useState(null), newItemPopup = _g[0], setNewItemPopup = _g[1];
416
+ return (React.createElement(LayersProvider, { initialLayers: [] },
417
+ React.createElement(TagsProvider, { initialTags: [] },
418
+ React.createElement(ItemsProvider, { initialItems: [] },
419
+ React.createElement("div", { className: (selectMode != null ? "crosshair-cursor-enabled" : undefined) },
420
+ React.createElement(MapContainer, { style: { height: height, width: width }, center: center, zoom: zoom },
421
+ React.createElement(TileLayer, { attribution: '\u00A9 <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors', url: "https://tile.osmand.net/hd/{z}/{x}/{y}.png" }),
422
+ React.createElement(MarkerClusterGroup, { showCoverageOnHover: true, chunkedLoading: true, maxClusterRadius: 50 }, React.Children.toArray(children).map(function (child) {
423
+ return React.isValidElement(child) ? React.cloneElement(child, { setNewItemPopup: setNewItemPopup }) : child;
424
+ })),
425
+ React.createElement(MapEventListener, { setSelectMode: setSelectMode, selectMode: selectMode, setNewItemPopup: setNewItemPopup }),
426
+ newItemPopup &&
427
+ React.createElement(NewItemPopup, { position: newItemPopup.position, layer: newItemPopup.layer, setNewItemPopup: setNewItemPopup, item: newItemPopup.item }),
428
+ React.createElement(AddButton, { setSelectMode: setSelectMode })),
429
+ selectMode != null &&
430
+ React.createElement("div", { className: "tw-button tw-z-500 tw-absolute tw-right-5 tw-top-20 tw-drop-shadow-md" },
431
+ React.createElement("div", { className: "tw-alert tw-bg-white tw-text-green-900" },
432
+ React.createElement("div", null,
433
+ React.createElement("span", null,
434
+ "Select ",
435
+ selectMode.name,
436
+ " position!")))))))));
437
+ }
45
438
 
46
439
  var createSvg = function (shape, markerColor, borderColor) {
47
440
  var svgMap = {
@@ -55,40 +448,24 @@ var createSvg = function (shape, markerColor, borderColor) {
55
448
  var addIcon = function (icon) {
56
449
  switch (icon) {
57
450
  case "circle-solid":
58
- return '<svg fill="#fff" style="position: relative; top: -38px;left: -1px;" width="13"xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --><path d="M512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256z"/></svg>';
451
+ return '<svg fill="#fff" class="circle-icon" width="13"xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --><path d="M512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256z"/></svg>';
59
452
  case "calendar-days-solid":
60
- return '<svg fill="#fff" style="position: relative; top: -40px;left: 0px;" width="13" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc. --><path d="M160 32V64H288V32C288 14.33 302.3 0 320 0C337.7 0 352 14.33 352 32V64H400C426.5 64 448 85.49 448 112V160H0V112C0 85.49 21.49 64 48 64H96V32C96 14.33 110.3 0 128 0C145.7 0 160 14.33 160 32zM0 192H448V464C448 490.5 426.5 512 400 512H48C21.49 512 0 490.5 0 464V192zM64 304C64 312.8 71.16 320 80 320H112C120.8 320 128 312.8 128 304V272C128 263.2 120.8 256 112 256H80C71.16 256 64 263.2 64 272V304zM192 304C192 312.8 199.2 320 208 320H240C248.8 320 256 312.8 256 304V272C256 263.2 248.8 256 240 256H208C199.2 256 192 263.2 192 272V304zM336 256C327.2 256 320 263.2 320 272V304C320 312.8 327.2 320 336 320H368C376.8 320 384 312.8 384 304V272C384 263.2 376.8 256 368 256H336zM64 432C64 440.8 71.16 448 80 448H112C120.8 448 128 440.8 128 432V400C128 391.2 120.8 384 112 384H80C71.16 384 64 391.2 64 400V432zM208 384C199.2 384 192 391.2 192 400V432C192 440.8 199.2 448 208 448H240C248.8 448 256 440.8 256 432V400C256 391.2 248.8 384 240 384H208zM320 432C320 440.8 327.2 448 336 448H368C376.8 448 384 440.8 384 432V400C384 391.2 376.8 384 368 384H336C327.2 384 320 391.2 320 400V432z"/></svg>';
453
+ return '<svg fill="#fff" class="calendar-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc. --><path d="M160 32V64H288V32C288 14.33 302.3 0 320 0C337.7 0 352 14.33 352 32V64H400C426.5 64 448 85.49 448 112V160H0V112C0 85.49 21.49 64 48 64H96V32C96 14.33 110.3 0 128 0C145.7 0 160 14.33 160 32zM0 192H448V464C448 490.5 426.5 512 400 512H48C21.49 512 0 490.5 0 464V192zM64 304C64 312.8 71.16 320 80 320H112C120.8 320 128 312.8 128 304V272C128 263.2 120.8 256 112 256H80C71.16 256 64 263.2 64 272V304zM192 304C192 312.8 199.2 320 208 320H240C248.8 320 256 312.8 256 304V272C256 263.2 248.8 256 240 256H208C199.2 256 192 263.2 192 272V304zM336 256C327.2 256 320 263.2 320 272V304C320 312.8 327.2 320 336 320H368C376.8 320 384 312.8 384 304V272C384 263.2 376.8 256 368 256H336zM64 432C64 440.8 71.16 448 80 448H112C120.8 448 128 440.8 128 432V400C128 391.2 120.8 384 112 384H80C71.16 384 64 391.2 64 400V432zM208 384C199.2 384 192 391.2 192 400V432C192 440.8 199.2 448 208 448H240C248.8 448 256 440.8 256 432V400C256 391.2 248.8 384 240 384H208zM320 432C320 440.8 327.2 448 336 448H368C376.8 448 384 440.8 384 432V400C384 391.2 376.8 384 368 384H336C327.2 384 320 391.2 320 400V432z"/></svg>';
61
454
  default:
62
455
  return "";
63
456
  }
64
457
  };
65
458
  var MarkerIconFactory = function (shape, color1, color2, icon) {
66
- return L__namespace.divIcon({
459
+ return L.divIcon({
67
460
  html: "".concat(createSvg(shape, color1, color2)).concat(addIcon(icon)),
68
461
  iconAnchor: [17, 40],
69
462
  popupAnchor: [0, -40],
70
- iconSize: new L__namespace.Point(40, 46),
463
+ iconSize: new L.Point(40, 46),
71
464
  className: "leaflet-data-marker",
72
465
  shadowAnchor: [0, 0]
73
466
  });
74
467
  };
75
468
 
76
- var MarkerPopup = function (props) {
77
- var item = props.item;
78
- var tags = props.tags;
79
- return (React__namespace.createElement(reactLeaflet.Popup, { maxHeight: 377, minWidth: 275, maxWidth: 275, autoPanPadding: [30, 30] },
80
- React__namespace.createElement("b", { style: { fontSize: '1.0rem' } }, item.name),
81
- item.start && item.end &&
82
- React__namespace.createElement("p", null,
83
- new Date(item.start).toISOString().substring(0, 10) || "",
84
- " - ",
85
- new Date(item.end).toISOString().substring(0, 10) || ""),
86
- React__namespace.createElement("p", { style: { whiteSpace: "pre-wrap" }, dangerouslySetInnerHTML: { __html: replaceURLs(item.text) } }),
87
- React__namespace.createElement("p", null, item.tags &&
88
- tags.map(function (tag) { return (React__namespace.createElement("span", { className: "", style: { fontWeight: "bold", display: "inline-block", color: "#fff", padding: ".2rem", borderRadius: ".2rem", backgroundColor: tag.color, margin: '.2rem', fontSize: "100%" }, key: tag.id },
89
- "#",
90
- tag.name)); }))));
91
- };
92
469
  function replaceURLs(message) {
93
470
  if (!message)
94
471
  return "";
@@ -107,23 +484,67 @@ function replaceURLs(message) {
107
484
  return message;
108
485
  }
109
486
 
110
- ___$insertStyle(".leaflet-data-marker {\n background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACMAAAAQCAYAAACcN8ZaAAAB3klEQVR42s3U4UdDURzG8czMXJnJ1Vwzc6VJZjaZJdlMlpQsKdmUFNOUspRSSqUolfQfr+fF98Vx5mwv9qbDx7LdznnO7/7Omej3+/+Ga0QMUYkhbvBgmhzCQxwxibIGrGEF8CQhU+LLtKQkQNqScUgjxRxTBIxbgfgD/BgnhM8kM5KTeclLQYqGkkMRBckzR8ic/mAgd5BAZplsUaqyIg2sDtHg2brUZJk5SmwopErJUWE8SpmTMhNvya60Zd/SNrR4bkeaskG4uiwRZk6yrJEYFibGAxn+scECHTmTnuVCzvmty3PHciB7bGKN6lQkzysPqIrHmpFhYbKUtckC1/Ioz4ZHuZdbuSLYiRxRpSZVWXZVxAzC0R4Ik5SQsu6w8yd5l2/5kg95I9SdXMoZQfYIUjeqEUrgOkXGPeN4TYRhxy8E+ZUf+eS7B7miIoeybVSjKDnm8u3+gH3pDTYwu1igATvs/pXqvBKiR4i2bNJfi1ZfUAnjgrOG8wY2quNzBKuU/ZS+uSFEl5O0xRGuUIlZCcw7xG5QPkeHYUSNV5WXGou2sC3rBC0LjenqCXGO0WEiTJa0Lr4KixdHBrDGuGGiRqCUpFk8pGIpQtCU7p4YPwxYxEMCk1aAMQZh8Ac8PfbIzYPJOwAAAABJRU5ErkJggg==\") no-repeat;\n background-position: 6px 32px;\n}");
487
+ var Popup = function (props) {
488
+ var item = props.item;
489
+ var tags = props.tags;
490
+ var removeItem = useRemoveItem();
491
+ var map = useMap();
492
+ var removeItemFromMap = function (event) {
493
+ removeItem(item);
494
+ event.stopPropagation();
495
+ map.closePopup();
496
+ };
497
+ var openEditPopup = function (event) {
498
+ event.stopPropagation();
499
+ map.closePopup();
500
+ if (props.setNewItemPopup)
501
+ props.setNewItemPopup({ position: new LatLng(item.position.coordinates[1], item.position.coordinates[0]), layer: item.layer, item: item, setNewItemPopup: props.setNewItemPopup });
502
+ };
503
+ return (React.createElement(Popup$1, { maxHeight: 377, minWidth: 275, maxWidth: 275, autoPanPadding: [20, 5] },
504
+ React.createElement("div", null,
505
+ React.createElement("div", { className: 'tw-grid tw-grid-cols-6' },
506
+ React.createElement("div", { className: 'tw-col-span-5' },
507
+ React.createElement("b", { className: "tw-text-xl tw-font-bold" }, item.name)),
508
+ React.createElement("div", { className: 'tw-col-span-1' },
509
+ React.createElement("div", { className: "tw-dropdown tw-dropdown-bottom" },
510
+ React.createElement("label", { tabIndex: 0, className: "tw-btn tw-m-1 tw-bg-white hover:tw-bg-white tw-text-gray-500 hover:tw-text-gray-700 tw-leading-3 tw-border-none" },
511
+ React.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", className: "tw-h-5 tw-w-5", viewBox: "0 0 20 20", fill: "currentColor" },
512
+ React.createElement("path", { d: "M10 6a2 2 0 110-4 2 2 0 010 4zM10 12a2 2 0 110-4 2 2 0 010 4zM10 18a2 2 0 110-4 2 2 0 010 4z" }))),
513
+ React.createElement("ul", { tabIndex: 0, className: "tw-dropdown-content tw-menu tw-p-2 tw-shadow tw-bg-base-100 tw-rounded-box" },
514
+ React.createElement("li", null,
515
+ React.createElement("a", { className: 'tw-bg-white hover:tw-bg-white tw-text-gray-500 hover:tw-text-gray-700', onClick: openEditPopup },
516
+ React.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", className: "tw-h-5 tw-w-5", viewBox: "0 0 20 20", fill: "currentColor" },
517
+ React.createElement("path", { d: "M13.586 3.586a2 2 0 112.828 2.828l-.793.793-2.828-2.828.793-.793zM11.379 5.793L3 14.172V17h2.828l8.38-8.379-2.83-2.828z" })))),
518
+ React.createElement("li", null,
519
+ React.createElement("a", { className: 'tw-bg-white hover:tw-bg-white tw-text-gray-500 hover:tw-text-gray-700', onClick: removeItemFromMap },
520
+ React.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", className: "tw-h-5 tw-w-5", viewBox: "0 0 20 20", fill: "currentColor" },
521
+ React.createElement("path", { fillRule: "evenodd", d: "M9 2a1 1 0 00-.894.553L7.382 4H4a1 1 0 000 2v10a2 2 0 002 2h8a2 2 0 002-2V6a1 1 0 100-2h-3.382l-.724-1.447A1 1 0 0011 2H9zM7 8a1 1 0 012 0v6a1 1 0 11-2 0V8zm5-1a1 1 0 00-1 1v6a1 1 0 102 0V8a1 1 0 00-1-1z", clipRule: "evenodd" })))))))),
522
+ React.createElement("div", { className: 'tw-overflow-y-auto tw-max-h-72' },
523
+ item.start && item.end &&
524
+ React.createElement("div", { className: "tw-flex tw-flex-row" },
525
+ React.createElement("div", { className: "basis-2/5" },
526
+ React.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", className: "tw-h-6 tw-w-6 tw-mr-2", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", strokeWidth: 2 },
527
+ React.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z" })),
528
+ React.createElement("span", { className: 'tw-align-middle' }, new Date(item.start).toISOString().substring(0, 10) || "")),
529
+ React.createElement("div", { className: "tw-basis-1/5 tw-place-content-center" },
530
+ React.createElement("span", null, "-")),
531
+ React.createElement("div", { className: "tw-basis-2/5" },
532
+ React.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", className: "tw-h-6 tw-w-6 tw-mr-2", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", strokeWidth: 2 },
533
+ React.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z" })),
534
+ React.createElement("span", { className: 'tw-align-middle tw-leading-6' }, new Date(item.end).toISOString().substring(0, 10) || ""))),
535
+ React.createElement("p", { style: { whiteSpace: "pre-wrap" }, dangerouslySetInnerHTML: { __html: replaceURLs(item.text) } }),
536
+ React.createElement("p", null, item.tags &&
537
+ tags.map(function (tag) { return (React.createElement("span", { className: "", style: { fontWeight: "bold", display: "inline-block", color: "#fff", padding: ".3rem", borderRadius: ".5rem", backgroundColor: tag.color, margin: '.2rem', fontSize: "100%" }, key: tag.id },
538
+ "#",
539
+ tag.name)); }))))));
540
+ };
111
541
 
112
- var UtopiaMap = function (props) {
542
+ var Layer = function (props) {
113
543
  var _a;
114
- var center = new L.LatLng(50.6, 9.5);
115
- if (props.center)
116
- center = props.center;
117
- var zoom = 10;
118
- if (props.zoom)
119
- zoom = props.zoom;
120
- var height = "400px";
121
- if (props.height)
122
- height = props.height;
123
- var width = "100vw";
124
- if (props.width)
125
- width = props.width;
126
- var tagMap = new Map((_a = props.tags) === null || _a === void 0 ? void 0 : _a.map(function (key) { return [key.id, key]; }));
544
+ var tags = useTags();
545
+ // create a JS-Map with all Tags
546
+ var tagMap = new Map(tags === null || tags === void 0 ? void 0 : tags.map(function (key) { return [key.id, key]; }));
547
+ // returns all tags for passed item
127
548
  var getTags = function (item) {
128
549
  var tags = [];
129
550
  item.tags && item.tags.forEach(function (element) {
@@ -133,38 +554,480 @@ var UtopiaMap = function (props) {
133
554
  });
134
555
  return tags;
135
556
  };
136
- return (React__namespace.createElement(reactLeaflet.MapContainer, { style: { height: height, width: width }, center: center, zoom: zoom },
137
- React__namespace.createElement(reactLeaflet.TileLayer, { attribution: '\u00A9 <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors', url: "https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png" }),
138
- React__namespace.createElement(MarkerClusterGroup__default["default"], { showCoverageOnHover: true, chunkedLoading: true, maxClusterRadius: 50 },
139
- props.places &&
140
- props.places.map(function (place) {
141
- var tags = getTags(place);
142
- var color1 = "#666";
143
- var color2 = "RGBA(35, 31, 32, 0.2)";
144
- if (tags[0]) {
145
- color1 = tags[0].color;
146
- }
147
- if (tags[1]) {
148
- color2 = tags[1].color;
149
- }
150
- return (React__namespace.createElement(reactLeaflet.Marker, { icon: MarkerIconFactory('circle', color1, color2, 'circle-solid'), key: place.id, position: [place.position.coordinates[1], place.position.coordinates[0]] },
151
- React__namespace.createElement(MarkerPopup, { item: place, tags: tags })));
152
- }),
153
- props.events &&
154
- props.events.map(function (event) {
155
- var tags = getTags(event);
156
- var color1 = "#666";
157
- var color2 = "RGBA(35, 31, 32, 0.2)";
158
- if (tags[0]) {
159
- color1 = tags[0].color;
160
- }
161
- if (tags[1]) {
162
- color2 = tags[1].color;
163
- }
164
- return (React__namespace.createElement(reactLeaflet.Marker, { icon: MarkerIconFactory('square', color1, color2, 'calendar-days-solid'), key: event.id, position: [event.position.coordinates[1], event.position.coordinates[0]] },
165
- React__namespace.createElement(MarkerPopup, { item: event, tags: tags })));
166
- }))));
557
+ var items = useItems();
558
+ var addItem = useAddItem();
559
+ var addLayer = useAddLayer();
560
+ var resetItems = useResetItems();
561
+ useEffect(function () {
562
+ var _a;
563
+ resetItems(props);
564
+ (_a = props.data) === null || _a === void 0 ? void 0 : _a.map(function (item) {
565
+ if (item.position) {
566
+ item.layer = props;
567
+ addItem(item);
568
+ }
569
+ });
570
+ addLayer(props);
571
+ }, [props.data]);
572
+ return (React.createElement(React.Fragment, null, (_a = items.filter(function (item) { var _a; return ((_a = item.layer) === null || _a === void 0 ? void 0 : _a.name) === props.name; })) === null || _a === void 0 ? void 0 :
573
+ _a.map(function (place) {
574
+ var tags = getTags(place);
575
+ var color1 = "#666";
576
+ var color2 = "RGBA(35, 31, 32, 0.2)";
577
+ if (tags[0]) {
578
+ color1 = tags[0].color;
579
+ }
580
+ if (tags[1]) {
581
+ color2 = tags[1].color;
582
+ }
583
+ return (React.createElement(Marker, { icon: MarkerIconFactory(props.markerShape, color1, color2, props.markerIcon), key: place.id, position: [place.position.coordinates[1], place.position.coordinates[0]] },
584
+ React.createElement(Popup, { item: place, tags: tags, setNewItemPopup: props.setNewItemPopup })));
585
+ }),
586
+ props.children));
167
587
  };
168
588
 
169
- exports.UtopiaMap = UtopiaMap;
589
+ function Tags(_a) {
590
+ var data = _a.data;
591
+ var addTag = useAddTag();
592
+ useEffect(function () {
593
+ data.map(function (tag) {
594
+ addTag(tag);
595
+ });
596
+ }, [addTag, data]);
597
+ return (React.createElement(React.Fragment, null));
598
+ }
599
+
600
+ function NavBar(_a) {
601
+ var name = _a.name, useAuth = _a.useAuth;
602
+ var _b = useState(""), email = _b[0], setEmail = _b[1];
603
+ var _c = useState(""), password = _c[0], setPassword = _c[1];
604
+ var _d = useAuth(), isAuthenticated = _d.isAuthenticated, user = _d.user, login = _d.login, loading = _d.loading, logout = _d.logout, token = _d.token;
605
+ var onLogin = function () {
606
+ toast.promise(login({ email: email, password: password }), {
607
+ success: {
608
+ render: function (_a) {
609
+ var data = _a.data;
610
+ return "Hi ".concat(data === null || data === void 0 ? void 0 : data.first_name);
611
+ },
612
+ // other options
613
+ icon: "✌️",
614
+ },
615
+ error: 'Error'
616
+ });
617
+ };
618
+ return (React.createElement(React.Fragment, null,
619
+ React.createElement("div", { className: "tw-navbar tw-bg-base-100 tw-z-1000" },
620
+ React.createElement("button", { className: "tw-btn tw-btn-square tw-btn-ghost", "data-te-sidenav-toggle-ref": true, "data-te-target": "#sidenav", "aria-controls": "#sidenav", "aria-haspopup": "true" },
621
+ React.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", fill: "none", viewBox: "0 0 24 24", className: "tw-inline-block tw-w-5 tw-h-5 tw-stroke-current" },
622
+ React.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "2", d: "M4 6h16M4 12h16M4 18h16" }))),
623
+ React.createElement("div", { className: "tw-flex-1 tw-mr-2" },
624
+ React.createElement("div", { className: "tw-flex-1 tw-truncate tw-grid tw-grid-flow-col tw-max-w-72" },
625
+ React.createElement(Link, { className: "tw-btn tw-btn-ghost tw-px-2 tw-normal-case tw-text-xl tw-flex-1 tw-truncate", to: "/" },
626
+ React.createElement("p", { className: "tw-truncate" }, name)),
627
+ React.createElement("label", { htmlFor: "my-modal", className: "tw-cursor-pointer" },
628
+ React.createElement("div", { className: "tw-btn tw-px-2 tw-btn-ghost " },
629
+ React.createElement(QuestionMarkIcon, { className: "tw-h-5 tw-w-5" }))))),
630
+ isAuthenticated && token ?
631
+ React.createElement("div", { className: "tw-flex-none" },
632
+ React.createElement("div", { className: "tw-avatar" },
633
+ React.createElement("div", { className: "tw-w-10 tw-rounded-full" },
634
+ React.createElement("img", { src: "https://map.api.free-planet-earth.org/assets/" + (user === null || user === void 0 ? void 0 : user.avatar) + "?access_token=" + token }))),
635
+ React.createElement("div", { className: 'tw-ml-2 tw-mr-2' }, user === null || user === void 0 ? void 0 : user.first_name),
636
+ React.createElement("div", { className: "tw-dropdown tw-dropdown-end" },
637
+ React.createElement("label", { tabIndex: 0, className: "tw-btn tw-btn-ghost tw-btn-square" },
638
+ React.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", className: "tw-h-5 tw-w-5", viewBox: "0 0 20 20", fill: "currentColor" },
639
+ React.createElement("path", { d: "M10 6a2 2 0 110-4 2 2 0 010 4zM10 12a2 2 0 110-4 2 2 0 010 4zM10 18a2 2 0 110-4 2 2 0 010 4z" }))),
640
+ React.createElement("ul", { tabIndex: 0, className: "tw-menu tw-menu-compact tw-dropdown-content tw-mt-3 tw-p-2 tw-shadow tw-bg-base-100 tw-rounded-box tw-w-52 !tw-z-[1000]" },
641
+ React.createElement("li", null,
642
+ React.createElement(Link, { to: "/settings" }, "Settings")),
643
+ React.createElement("li", null,
644
+ React.createElement("a", { onClick: function () { logout(); } }, "Logout")))))
645
+ :
646
+ React.createElement("div", { className: "tw-dropdown tw-dropdown-end tw-mr-2" },
647
+ React.createElement("label", { tabIndex: 0, className: "tw-btn tw-btn-ghost" }, "Login"),
648
+ React.createElement("div", { tabIndex: 0, className: "tw-mt-3 tw-card tw-card-compact tw-dropdown-content tw-w-72 tw-bg-base-100 tw-shadow !tw-z-[1000]" },
649
+ React.createElement("div", { className: "tw-card-body" },
650
+ React.createElement("input", { type: "email", placeholder: "E-Mail", value: email, onChange: function (e) { return setEmail(e.target.value); }, className: "tw-input tw-input-bordered tw-w-full tw-max-w-xs" }),
651
+ React.createElement("input", { type: "password", placeholder: "Password", onChange: function (e) { return setPassword(e.target.value); }, className: "tw-input tw-input-bordered tw-w-full tw-max-w-xs" }),
652
+ React.createElement("div", { className: "tw-card-actions" },
653
+ React.createElement("button", { className: loading ? 'tw-btn tw-loading tw-btn-disabled tw-btn-block tw-btn-primary' : 'tw-btn tw-btn-primary tw-btn-block', onClick: function () { return onLogin(); } }, "Login"))))))));
654
+ }
655
+
656
+ function AppShell(_a) {
657
+ var name = _a.name, useAuth = _a.useAuth, children = _a.children;
658
+ return (React.createElement(BrowserRouter, null,
659
+ React.createElement(ToastContainer, { position: "top-right", autoClose: 2000, hideProgressBar: true, newestOnTop: false, closeOnClick: true, rtl: false, pauseOnFocusLoss: true, draggable: true, pauseOnHover: true, theme: "light" }),
660
+ React.createElement(NavBar, { name: name, useAuth: useAuth }),
661
+ React.createElement("div", { id: "app-content", className: "tw-flex tw-!pl-[77px]" }, children)));
662
+ }
663
+
664
+ function SidebarSubmenu(_a) {
665
+ var submenu = _a.submenu, name = _a.name, icon = _a.icon;
666
+ var location = useLocation();
667
+ var _b = useState(false), isExpanded = _b[0], setIsExpanded = _b[1];
668
+ /** Open Submenu list if path found in routes, this is for directly loading submenu routes first time */
669
+ useEffect(function () {
670
+ if (submenu.filter(function (m) { return m.path === location.pathname; })[0])
671
+ setIsExpanded(true);
672
+ }, []);
673
+ return (React.createElement("div", { className: 'flex-col' },
674
+ React.createElement("div", { className: 'w-full', onClick: function () { return setIsExpanded(!isExpanded); } },
675
+ icon,
676
+ " ",
677
+ React.createElement("span", { className: "group-[&[data-te-sidenav-slim-collapsed='true']]:data-[te-sidenav-slim='false']:hidden", "data-te-sidenav-slim": "false" },
678
+ name,
679
+ " "),
680
+ React.createElement(ChevronDownIcon, { className: 'w-5 h-5 mt-1 float-right delay-400 duration-500 transition-all ' + (isExpanded ? 'rotate-180' : '') })),
681
+ React.createElement("div", { className: " w-full data-[te-collapse-show]:!hidden " + (isExpanded ? "" : "hidden") },
682
+ React.createElement("ul", { className: "menu menu-compact" }, submenu.map(function (m, k) {
683
+ return (React.createElement("li", { key: k },
684
+ React.createElement(Link, { to: m.path, className: '' },
685
+ m.icon,
686
+ React.createElement("span", { className: "", "data-te-sidenav-slim": "false" }, m.name),
687
+ location.pathname == m.path ? (React.createElement("span", { className: "absolute mt-1 mb-1 inset-y-0 left-0 w-1 rounded-tr-md rounded-br-md bg-primary ", "aria-hidden": "true" })) : null)));
688
+ })))));
689
+ }
690
+
691
+ function SideBar(_a) {
692
+ var routes = _a.routes;
693
+ // prevent react18 from calling useEffect twice
694
+ var init = useRef(false);
695
+ var location = useLocation();
696
+ var _b = useState(null), instance = _b[0], setInstance = _b[1];
697
+ var _c = useState(false), slim = _c[0], setSlim = _c[1];
698
+ var toggleSlim = function () {
699
+ setSlim(!slim);
700
+ instance.toggleSlim();
701
+ };
702
+ useEffect(function () {
703
+ if (!init.current) {
704
+ initTE({ Sidenav: Sidenav });
705
+ var instance_1 = Sidenav.getInstance(document.getElementById("sidenav"));
706
+ setInstance(instance_1);
707
+ instance_1.toggleSlim();
708
+ init.current = true;
709
+ }
710
+ }, []);
711
+ return (React.createElement("nav", { id: "sidenav", className: "tw-group tw-fixed tw-left-0 tw-mt-16 tw-top-0 tw-z-[1035] tw-h-full -translate-x-full tw-overflow-hidden tw-bg-white tw-shadow-[0_4px_12px_0_rgba(0,0,0,0.07),_0_2px_4px_rgba(0,0,0,0.05)] data-[te-sidenav-slim='true']:tw-hidden data-[te-sidenav-slim-collapsed='true']:tw-w-[56px] data-[te-sidenav-slim='true']:tw-w-[56px] data-[te-sidenav-hidden='false']:tw-translate-x-0 dark:tw-bg-zinc-800 [&[data-te-sidenav-slim-collapsed='true'][data-te-sidenav-slim='false']]:tw-hidden [&[data-te-sidenav-slim-collapsed='true'][data-te-sidenav-slim='true']]:[display:unset]", "data-te-sidenav-init": true, "data-te-sidenav-hidden": "true", "data-te-sidenav-mode": "side", "data-te-sidenav-slim": "true", "data-te-sidenav-content": "#app-content", "data-te-sidenav-slim-collapsed": "true", "data-te-sidenav-slim-width": "56", "data-te-sidenav-width": "160" },
712
+ React.createElement("div", { className: 'tw-flex tw-flex-col tw-h-full', style: { height: "calc(100vh - 64px)" } },
713
+ React.createElement("ul", { className: "tw-menu tw-w-full tw-bg-base-100 tw-text-base-content", "data-te-sidenav-menu-ref": true }, routes.map(function (route, k) {
714
+ return (React.createElement("li", { className: "", key: k }, route.submenu ?
715
+ React.createElement(SidebarSubmenu, __assign({}, route)) :
716
+ (React.createElement(NavLink, { end: true, to: route.path, className: function (_a) {
717
+ var isActive = _a.isActive;
718
+ return "".concat(isActive ? 'tw-font-semibold tw-bg-base-200 ' : 'tw-font-normal');
719
+ }, onClick: function () {
720
+ if (screen.width < 640 && !slim)
721
+ instance.toggle();
722
+ } },
723
+ route.icon,
724
+ React.createElement("span", { className: "group-[&[data-te-sidenav-slim-collapsed='true']]:data-[te-sidenav-slim='false']:tw-hidden", "data-te-sidenav-slim": "false" }, route.name),
725
+ location.pathname.includes(route.path) && route.path.length > 1 || location.pathname === route.path ? (React.createElement("span", { className: "tw-absolute tw-inset-y-0 tw-left-0 tw-w-1 tw-rounded-tr-md tw-rounded-br-md tw-bg-primary ", "aria-hidden": "true" })) : null))));
726
+ })),
727
+ React.createElement("div", { id: "slim-toggler", className: 'tw-w-full tw-pr-4 tw-flex-1 tw-grid tw-place-items-end', "aria-haspopup": "true" },
728
+ React.createElement(ChevronRightIcon, { className: "tw-w-5 tw-h-5 tw-mb-4 tw-cursor-pointer tw-float-right tw-delay-400 tw-duration-500 tw-transition-all " + (!slim ? "tw-rotate-180" : ''), onClick: function () { return toggleSlim(); } })))));
729
+ }
730
+
731
+ function Content(_a) {
732
+ var children = _a.children;
733
+ return (React.createElement("div", { className: 'tw-flex tw-flex-col tw-w-full' }, children));
734
+ }
735
+
736
+ var AuthContext = createContext({
737
+ isAuthenticated: false,
738
+ user: null,
739
+ login: function () { return Promise.reject(); },
740
+ loading: false,
741
+ logout: function () { },
742
+ updateUser: function () { return Promise.reject(); },
743
+ token: ""
744
+ });
745
+ var AuthProviderDirectus = function (_a) {
746
+ var directus = _a.directus, children = _a.children;
747
+ var _b = useState(null), user = _b[0], setUser = _b[1];
748
+ var _c = useState(null), token = _c[0], setToken = _c[1];
749
+ var _d = useState(false), loading = _d[0], setLoading = _d[1];
750
+ var isAuthenticated = !!user;
751
+ useEffect(function () {
752
+ setLoading(true);
753
+ loadUserFromDirectus();
754
+ setLoading(false);
755
+ }, []);
756
+ function loadUserFromDirectus() {
757
+ return __awaiter(this, void 0, void 0, function () {
758
+ var token_1, me;
759
+ return __generator(this, function (_a) {
760
+ switch (_a.label) {
761
+ case 0:
762
+ _a.trys.push([0, 5, , 6]);
763
+ return [4 /*yield*/, directus.auth.token];
764
+ case 1:
765
+ token_1 = _a.sent();
766
+ if (!token_1) return [3 /*break*/, 3];
767
+ return [4 /*yield*/, directus.users.me.read()];
768
+ case 2:
769
+ me = _a.sent();
770
+ setUser(me);
771
+ setToken(token_1);
772
+ setLoading(false);
773
+ return [2 /*return*/, me];
774
+ case 3: return [2 /*return*/, undefined];
775
+ case 4: return [3 /*break*/, 6];
776
+ case 5:
777
+ _a.sent();
778
+ setLoading(false);
779
+ return [2 /*return*/, undefined];
780
+ case 6: return [2 /*return*/];
781
+ }
782
+ });
783
+ });
784
+ }
785
+ var login = function (credentials) { return __awaiter(void 0, void 0, void 0, function () {
786
+ var error_2;
787
+ return __generator(this, function (_a) {
788
+ switch (_a.label) {
789
+ case 0:
790
+ setLoading(true);
791
+ _a.label = 1;
792
+ case 1:
793
+ _a.trys.push([1, 4, , 5]);
794
+ return [4 /*yield*/, directus.auth.login(credentials)];
795
+ case 2:
796
+ _a.sent();
797
+ return [4 /*yield*/, loadUserFromDirectus()];
798
+ case 3: return [2 /*return*/, (_a.sent())];
799
+ case 4:
800
+ error_2 = _a.sent();
801
+ setLoading(false);
802
+ console.log(error_2.response.data.error[0]);
803
+ return [2 /*return*/, error_2.response.data.error[0]];
804
+ case 5:
805
+ return [2 /*return*/];
806
+ }
807
+ });
808
+ }); };
809
+ var logout = function () { return __awaiter(void 0, void 0, void 0, function () {
810
+ return __generator(this, function (_a) {
811
+ switch (_a.label) {
812
+ case 0: return [4 /*yield*/, directus.auth.logout()];
813
+ case 1:
814
+ _a.sent();
815
+ setUser(null);
816
+ return [2 /*return*/];
817
+ }
818
+ });
819
+ }); };
820
+ var updateUser = function (user) { return __awaiter(void 0, void 0, void 0, function () {
821
+ var res, error_3;
822
+ return __generator(this, function (_a) {
823
+ switch (_a.label) {
824
+ case 0:
825
+ setLoading(true);
826
+ _a.label = 1;
827
+ case 1:
828
+ _a.trys.push([1, 3, , 4]);
829
+ return [4 /*yield*/, directus.users.updateOne(user.id, user)];
830
+ case 2:
831
+ res = _a.sent();
832
+ setUser(res);
833
+ setLoading(false);
834
+ return [2 /*return*/, res];
835
+ case 3:
836
+ error_3 = _a.sent();
837
+ setLoading(false);
838
+ console.log(error_3.response.data.error[0]);
839
+ return [2 /*return*/, error_3.response.data.error[0]];
840
+ case 4: return [2 /*return*/];
841
+ }
842
+ });
843
+ }); };
844
+ return (React.createElement(AuthContext.Provider, { value: { isAuthenticated: isAuthenticated, user: user, login: login, loading: loading, logout: logout, updateUser: updateUser, token: token } }, children));
845
+ };
846
+ var useAuthDirectus = function () { return useContext(AuthContext); };
847
+
848
+ function Subtitle(_a) {
849
+ var styleClass = _a.styleClass, children = _a.children;
850
+ return (React.createElement("div", { className: "tw-text-xl tw-font-semibold ".concat(styleClass) }, children));
851
+ }
852
+
853
+ function TitleCard(_a) {
854
+ var title = _a.title, children = _a.children, topMargin = _a.topMargin, TopSideButtons = _a.TopSideButtons;
855
+ return (React.createElement("div", { className: "tw-card tw-w-full tw-p-6 tw-mb-8 tw-bg-base-100 tw-shadow-xl tw-h-fit " + (topMargin || "tw-mt-6") },
856
+ React.createElement(Subtitle, { styleClass: TopSideButtons ? "tw-inline-block" : "" },
857
+ title,
858
+ TopSideButtons && React.createElement("div", { className: "tw-inline-block tw-float-right" }, TopSideButtons)),
859
+ React.createElement("div", { className: "tw-divider tw-mt-2" }),
860
+ React.createElement("div", { className: 'tw-h-full tw-w-full tw-pb-6 tw-bg-base-100' }, children)));
861
+ }
862
+
863
+ function InputText(_a) {
864
+ var labelTitle = _a.labelTitle, labelStyle = _a.labelStyle, type = _a.type, containerStyle = _a.containerStyle, defaultValue = _a.defaultValue, placeholder = _a.placeholder, updateFormValue = _a.updateFormValue;
865
+ var _b = useState(defaultValue), value = _b[0], setValue = _b[1];
866
+ useEffect(function () {
867
+ setValue(defaultValue);
868
+ }, [defaultValue]);
869
+ var updateInputValue = function (val) {
870
+ setValue(val);
871
+ updateFormValue(val);
872
+ };
873
+ return (React.createElement("div", { className: "tw-form-control tw-w-full ".concat(containerStyle) },
874
+ labelTitle ? React.createElement("label", { className: "tw-label" },
875
+ React.createElement("span", { className: "tw-label-text tw-text-base-content " + labelStyle }, labelTitle))
876
+ : " ",
877
+ React.createElement("input", { type: type || "text", value: value, placeholder: placeholder || "", onChange: function (e) { return updateInputValue(e.target.value); }, className: "tw-input tw-input-bordered tw-w-full " })));
878
+ }
879
+
880
+ function TextAreaInput(_a) {
881
+ var labelTitle = _a.labelTitle, labelStyle = _a.labelStyle, containerStyle = _a.containerStyle, defaultValue = _a.defaultValue, placeholder = _a.placeholder, updateFormValue = _a.updateFormValue;
882
+ var _b = useState(defaultValue), value = _b[0], setValue = _b[1];
883
+ useEffect(function () {
884
+ setValue(defaultValue);
885
+ }, [defaultValue]);
886
+ var updateInputValue = function (val) {
887
+ setValue(val);
888
+ updateFormValue(val);
889
+ };
890
+ return (React.createElement("div", { className: "tw-form-control tw-w-full ".concat(containerStyle) },
891
+ React.createElement("label", { className: "tw-label" },
892
+ React.createElement("span", { className: "tw-label-text tw-text-base-content " + labelStyle }, labelTitle)),
893
+ React.createElement("textarea", { value: value, className: "tw-textarea tw-textarea-bordered tw-w-full tw-min-h-64", placeholder: placeholder || "", onChange: function (e) { return updateInputValue(e.target.value); } })));
894
+ }
895
+
896
+ function Settings(_a) {
897
+ var useAuth = _a.useAuth;
898
+ var _b = useAuth(), user = _b.user, updateUser = _b.updateUser, loading = _b.loading;
899
+ var _c = useState(""), id = _c[0], setId = _c[1];
900
+ var _d = useState(""), name = _d[0], setName = _d[1];
901
+ var _e = useState(""), text = _e[0], setText = _e[1];
902
+ var _f = useState(""), email = _f[0], setEmail = _f[1];
903
+ var _g = useState(""), password = _g[0], setPassword = _g[1];
904
+ useEffect(function () {
905
+ setId((user === null || user === void 0 ? void 0 : user.id) ? user.id : "");
906
+ setName((user === null || user === void 0 ? void 0 : user.first_name) ? user.first_name : "");
907
+ setText((user === null || user === void 0 ? void 0 : user.description) ? user.description : "");
908
+ setEmail((user === null || user === void 0 ? void 0 : user.email) ? user.email : "");
909
+ setPassword((user === null || user === void 0 ? void 0 : user.password) ? user.password : "");
910
+ }, [user]);
911
+ var navigate = useNavigate();
912
+ var onUpdateUser = function () {
913
+ toast.promise(updateUser({ id: id, first_name: name, description: text, email: email, password: password }), {
914
+ pending: 'updating Profile ...',
915
+ success: 'Profile updated',
916
+ error: 'Error'
917
+ })
918
+ .then(function () { return navigate("/"); });
919
+ };
920
+ return (React.createElement("main", { className: "tw-flex-1 tw-overflow-y-auto tw-overflow-x-hidden tw-pt-8 tw-px-6 tw-bg-base-200 tw-min-w-80 tw-flex tw-justify-center" },
921
+ React.createElement("div", { className: 'tw-w-full xl:tw-max-w-6xl' },
922
+ React.createElement(TitleCard, { title: "Profile Settings", topMargin: "tw-mt-2" },
923
+ React.createElement("div", { className: "tw-grid tw-grid-cols-1 tw-md:grid-cols-2 tw-gap-6" },
924
+ React.createElement(InputText, { labelTitle: "Name", defaultValue: (user === null || user === void 0 ? void 0 : user.first_name) ? user.first_name : "", updateFormValue: function (v) { return setName(v); } })),
925
+ React.createElement("div", { className: "tw-grid tw-grid-cols-1 tw-md:grid-cols-1 tw-gap-6 tw-pt-6 tw-pb-6" },
926
+ React.createElement(TextAreaInput, { labelTitle: "About", defaultValue: (user === null || user === void 0 ? void 0 : user.description) ? user.description : "", updateFormValue: function (v) { return setText(v); } })),
927
+ React.createElement("div", { className: "tw-divider" }),
928
+ React.createElement("div", { className: "tw-grid tw-grid-cols-1 md:tw-grid-cols-2 tw-gap-6" },
929
+ React.createElement(InputText, { type: 'email', labelTitle: "E-Mail", defaultValue: (user === null || user === void 0 ? void 0 : user.email) ? user.email : "", updateFormValue: function (v) { return setEmail(v); } }),
930
+ React.createElement(InputText, { type: 'password', labelTitle: "Password", defaultValue: (user === null || user === void 0 ? void 0 : user.password) ? user.password : "", updateFormValue: function (v) { return setPassword(v); } })),
931
+ React.createElement("div", { className: "tw-mt-8" },
932
+ React.createElement("button", { className: loading ? " tw-loading tw-btn-disabled tw-btn tw-btn-primary tw-float-right" : "tw-btn tw-btn-primary tw-float-right", onClick: function () { return onUpdateUser(); } }, "Update"))))));
933
+ }
934
+
935
+ function Welcome1(_a) {
936
+ var clickAction = _a.clickAction;
937
+ return (React.createElement(React.Fragment, null,
938
+ React.createElement("h3", { className: "tw-font-bold tw-text-lg" }, "Herzlich Willkommen, sch\u00F6n dass du da bist! "),
939
+ React.createElement("p", { className: "tw-py-4" },
940
+ "Wir erschaffen zusammen eine Welt, in der wir frei und menschlich zusammen leben d\u00FCrfen. Daf\u00FCr bauen wir ein Netzwerk in dem wir uns im echten Leben begegnen und helfen ... ganz ohne Geld \uD83D\uDE09",
941
+ React.createElement("br", null),
942
+ React.createElement("br", null),
943
+ React.createElement("b", null, "Hast du Lust mitzumachen?")),
944
+ React.createElement("div", { className: "tw-modal-action" },
945
+ React.createElement("label", { className: "tw-btn", onClick: function () { return clickAction(); } }, "Bin dabei"))));
946
+ }
947
+ function Welcome2(_a) {
948
+ var clickAction = _a.clickAction;
949
+ return (React.createElement(React.Fragment, null,
950
+ React.createElement("h3", { className: "tw-font-bold tw-text-lg" }, "Ver\u00E4nderung passiert im echten Leben"),
951
+ React.createElement("p", { className: "tw-py-4" },
952
+ "Mal ganz ehrlich: 99% unser Zeit am Bildschirm ist sinnlose Zeit- und Energie-Verschwendung.",
953
+ React.createElement("br", null),
954
+ React.createElement("br", null),
955
+ "Darum tauchen wir wieder in das echte Leben ein und nutzen digitale Medien nur dort, wo sie uns wirklich helfen in echt zusammen zu kommen"),
956
+ React.createElement("div", { className: "tw-modal-action" },
957
+ React.createElement("label", { className: "tw-btn", onClick: function () { return clickAction(); } }, "Alles klar"))));
958
+ }
959
+ function Welcome3(_a) {
960
+ var clickAction = _a.clickAction;
961
+ return (React.createElement(React.Fragment, null,
962
+ React.createElement("h3", { className: "tw-font-bold tw-text-lg" }, " Gemeinsam erschaffen wir Strukturen "),
963
+ React.createElement("ul", { className: 'tw-flex-row tw-pl-4 tw-mt-4' },
964
+ React.createElement("li", null, "\uD83E\uDD55 Essen & Trinken"),
965
+ React.createElement("li", null, "\uD83C\uDFE1 Wohn- & Lebensraum"),
966
+ React.createElement("li", null, "\uD83D\uDCAC Kommunikation"),
967
+ React.createElement("li", null, "\uD83D\uDCA1 Energie"),
968
+ React.createElement("li", null, "\uD83D\uDE90 Mobilit\u00E4t")),
969
+ React.createElement("div", { className: "tw-modal-action" },
970
+ React.createElement("label", { htmlFor: "tw-my-modal", onClick: function () { return clickAction(); }, className: "tw-btn" }, "Ich mach mit"))));
971
+ }
972
+ function Modal() {
973
+ var _a = useState(1), chapter = _a[0], setChapter = _a[1];
974
+ var close = function () {
975
+ if (document.getElementById('my-modal')) {
976
+ var el = document.getElementById('my-modal');
977
+ el.checked = false;
978
+ }
979
+ };
980
+ var ActiveChapter = function () {
981
+ switch (chapter) {
982
+ case 1:
983
+ return React.createElement(Welcome1, { clickAction: function () { setChapter(2); } });
984
+ case 2:
985
+ return React.createElement(Welcome2, { clickAction: function () { return setChapter(3); } });
986
+ case 3:
987
+ return React.createElement(Welcome3, { clickAction: function () {
988
+ close();
989
+ setChapter(1);
990
+ } });
991
+ default: return React.createElement(React.Fragment, null);
992
+ }
993
+ };
994
+ return (React.createElement(React.Fragment, null,
995
+ React.createElement("input", { type: "checkbox", id: "my-modal", className: "tw-modal-toggle" }),
996
+ React.createElement("div", { className: "tw-modal" },
997
+ React.createElement("label", { className: "tw-modal-box tw-relative", htmlFor: "" },
998
+ React.createElement("label", { htmlFor: "my-modal", className: "tw-btn tw-btn-sm tw-btn-circle tw-btn-ghost tw-absolute tw-right-2 tw-top-2" }, "\u2715"),
999
+ React.createElement(ActiveChapter, null)))));
1000
+ }
1001
+
1002
+ function Quests() {
1003
+ return (React.createElement(React.Fragment, null,
1004
+ React.createElement("input", { type: "checkbox", id: "quests", className: "tw-modal-toggle" }),
1005
+ React.createElement("div", { className: "tw-card tw-w-48 tw-bg-base-100 tw-shadow-xl tw-absolute tw-bottom-4 tw-right-4 tw-z-1000" },
1006
+ React.createElement("div", { className: "tw-card-body tw-p-4 tw-pt-0" },
1007
+ React.createElement("div", { className: "tw-card-actions tw-justify-end" },
1008
+ React.createElement("label", { className: "tw-btn tw-btn-sm tw-btn-circle tw-btn-ghost tw-absolute tw-right-2 tw-top-2" }, "\u2715")),
1009
+ React.createElement("h2", { className: "tw-card-title tw-m-auto " }, "Level 1"),
1010
+ React.createElement("ul", { className: 'tw-flex-row' },
1011
+ React.createElement("li", null,
1012
+ React.createElement("label", { className: "tw-label tw-justify-normal tw-pt-1 tw-pb-0" },
1013
+ React.createElement("input", { type: "checkbox", readOnly: true, className: "tw-checkbox tw-checkbox-xs tw-checkbox-success", checked: true }),
1014
+ React.createElement("span", { className: 'tw-text-sm tw-label-text tw-mx-2' }, "Registrieren"))),
1015
+ React.createElement("li", null,
1016
+ React.createElement("label", { className: "tw-label tw-justify-normal tw-pt-1 tw-pb-0" },
1017
+ React.createElement("input", { type: "checkbox", readOnly: true, className: "tw-checkbox tw-checkbox-xs tw-checkbox-success", checked: true }),
1018
+ React.createElement("span", { className: 'tw-text-sm tw-label-text tw-mx-2' }, "Avatar hochladen"))),
1019
+ React.createElement("li", null,
1020
+ React.createElement("label", { className: "tw-label tw-justify-normal tw-pt-1 tw-pb-0" },
1021
+ React.createElement("input", { type: "checkbox", readOnly: true, className: "tw-checkbox tw-checkbox-xs tw-checkbox-success", disabled: true }),
1022
+ React.createElement("span", { className: 'tw-text-sm tw-label-text tw-mx-2' }, "Profil ausf\u00FCllen"))),
1023
+ React.createElement("li", null,
1024
+ React.createElement("label", { className: "tw-label tw-justify-normal tw-pt-1 tw-pb-0" },
1025
+ React.createElement("input", { type: "checkbox", readOnly: true, className: "tw-checkbox tw-checkbox-xs tw-checkbox-success", disabled: true }),
1026
+ React.createElement("span", { className: 'tw-text-sm tw-label-text tw-mx-2' }, "Gruppe beitreten"))))))));
1027
+ }
1028
+
1029
+ var css_248z = "/*\n! tailwindcss v3.3.1 | MIT License | https://tailwindcss.com\n*//*\n1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4)\n2. Allow adding a border to an element by just adding a border-width. (https://github.com/tailwindcss/tailwindcss/pull/116)\n*/\n\n*,\n::before,\n::after {\n box-sizing: border-box; /* 1 */\n border-width: 0; /* 2 */\n border-style: solid; /* 2 */\n border-color: #e5e7eb; /* 2 */\n}\n\n::before,\n::after {\n --tw-content: '';\n}\n\n/*\n1. Use a consistent sensible line-height in all browsers.\n2. Prevent adjustments of font size after orientation changes in iOS.\n3. Use a more readable tab size.\n4. Use the user's configured `sans` font-family by default.\n5. Use the user's configured `sans` font-feature-settings by default.\n6. Use the user's configured `sans` font-variation-settings by default.\n*/\n\nhtml {\n line-height: 1.5; /* 1 */\n -webkit-text-size-adjust: 100%; /* 2 */\n -moz-tab-size: 4; /* 3 */\n -o-tab-size: 4;\n tab-size: 4; /* 3 */\n font-family: Roboto, sans-serif; /* 4 */\n font-feature-settings: normal; /* 5 */\n font-variation-settings: normal; /* 6 */\n}\n\n/*\n1. Remove the margin in all browsers.\n2. Inherit line-height from `html` so users can set them as a class directly on the `html` element.\n*/\n\nbody {\n margin: 0; /* 1 */\n line-height: inherit; /* 2 */\n}\n\n/*\n1. Add the correct height in Firefox.\n2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655)\n3. Ensure horizontal rules are visible by default.\n*/\n\nhr {\n height: 0; /* 1 */\n color: inherit; /* 2 */\n border-top-width: 1px; /* 3 */\n}\n\n/*\nAdd the correct text decoration in Chrome, Edge, and Safari.\n*/\n\nabbr:where([title]) {\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n}\n\n/*\nRemove the default font size and weight for headings.\n*/\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n font-size: inherit;\n font-weight: inherit;\n}\n\n/*\nReset links to optimize for opt-in styling instead of opt-out.\n*/\n\na {\n color: inherit;\n text-decoration: inherit;\n}\n\n/*\nAdd the correct font weight in Edge and Safari.\n*/\n\nb,\nstrong {\n font-weight: bolder;\n}\n\n/*\n1. Use the user's configured `mono` font family by default.\n2. Correct the odd `em` font sizing in all browsers.\n*/\n\ncode,\nkbd,\nsamp,\npre {\n font-family: ui-monospace, monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/*\nAdd the correct font size in all browsers.\n*/\n\nsmall {\n font-size: 80%;\n}\n\n/*\nPrevent `sub` and `sup` elements from affecting the line height in all browsers.\n*/\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\n/*\n1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297)\n2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016)\n3. Remove gaps between table borders by default.\n*/\n\ntable {\n text-indent: 0; /* 1 */\n border-color: inherit; /* 2 */\n border-collapse: collapse; /* 3 */\n}\n\n/*\n1. Change the font styles in all browsers.\n2. Remove the margin in Firefox and Safari.\n3. Remove default padding in all browsers.\n*/\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n font-family: inherit; /* 1 */\n font-size: 100%; /* 1 */\n font-weight: inherit; /* 1 */\n line-height: inherit; /* 1 */\n color: inherit; /* 1 */\n margin: 0; /* 2 */\n padding: 0; /* 3 */\n}\n\n/*\nRemove the inheritance of text transform in Edge and Firefox.\n*/\n\nbutton,\nselect {\n text-transform: none;\n}\n\n/*\n1. Correct the inability to style clickable types in iOS and Safari.\n2. Remove default button styles.\n*/\n\nbutton,\n[type='button'],\n[type='reset'],\n[type='submit'] {\n -webkit-appearance: button; /* 1 */\n background-color: transparent; /* 2 */\n background-image: none; /* 2 */\n}\n\n/*\nUse the modern Firefox focus style for all focusable elements.\n*/\n\n:-moz-focusring {\n outline: auto;\n}\n\n/*\nRemove the additional `:invalid` styles in Firefox. (https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737)\n*/\n\n:-moz-ui-invalid {\n box-shadow: none;\n}\n\n/*\nAdd the correct vertical alignment in Chrome and Firefox.\n*/\n\nprogress {\n vertical-align: baseline;\n}\n\n/*\nCorrect the cursor style of increment and decrement buttons in Safari.\n*/\n\n::-webkit-inner-spin-button,\n::-webkit-outer-spin-button {\n height: auto;\n}\n\n/*\n1. Correct the odd appearance in Chrome and Safari.\n2. Correct the outline style in Safari.\n*/\n\n[type='search'] {\n -webkit-appearance: textfield; /* 1 */\n outline-offset: -2px; /* 2 */\n}\n\n/*\nRemove the inner padding in Chrome and Safari on macOS.\n*/\n\n::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n/*\n1. Correct the inability to style clickable types in iOS and Safari.\n2. Change font properties to `inherit` in Safari.\n*/\n\n::-webkit-file-upload-button {\n -webkit-appearance: button; /* 1 */\n font: inherit; /* 2 */\n}\n\n/*\nAdd the correct display in Chrome and Safari.\n*/\n\nsummary {\n display: list-item;\n}\n\n/*\nRemoves the default spacing and border for appropriate elements.\n*/\n\nblockquote,\ndl,\ndd,\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\nhr,\nfigure,\np,\npre {\n margin: 0;\n}\n\nfieldset {\n margin: 0;\n padding: 0;\n}\n\nlegend {\n padding: 0;\n}\n\nol,\nul,\nmenu {\n list-style: none;\n margin: 0;\n padding: 0;\n}\n\n/*\nPrevent resizing textareas horizontally by default.\n*/\n\ntextarea {\n resize: vertical;\n}\n\n/*\n1. Reset the default placeholder opacity in Firefox. (https://github.com/tailwindlabs/tailwindcss/issues/3300)\n2. Set the default placeholder color to the user's configured gray 400 color.\n*/\n\ninput::-moz-placeholder, textarea::-moz-placeholder {\n opacity: 1; /* 1 */\n color: #9ca3af; /* 2 */\n}\n\ninput::placeholder,\ntextarea::placeholder {\n opacity: 1; /* 1 */\n color: #9ca3af; /* 2 */\n}\n\n/*\nSet the default cursor for buttons.\n*/\n\nbutton,\n[role=\"button\"] {\n cursor: pointer;\n}\n\n/*\nMake sure disabled buttons don't get the pointer cursor.\n*/\n:disabled {\n cursor: default;\n}\n\n/*\n1. Make replaced elements `display: block` by default. (https://github.com/mozdevs/cssremedy/issues/14)\n2. Add `vertical-align: middle` to align replaced elements more sensibly by default. (https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210)\n This can trigger a poorly considered lint error in some tools but is included by design.\n*/\n\nimg,\nsvg,\nvideo,\ncanvas,\naudio,\niframe,\nembed,\nobject {\n display: block; /* 1 */\n vertical-align: middle; /* 2 */\n}\n\n/*\nConstrain images and videos to the parent width and preserve their intrinsic aspect ratio. (https://github.com/mozdevs/cssremedy/issues/14)\n*/\n\nimg,\nvideo {\n max-width: 100%;\n height: auto;\n}\n\n/* Make elements with the HTML hidden attribute stay hidden by default */\n[hidden] {\n display: none;\n}\n\n:root,\n[data-theme] {\n background-color: hsla(var(--b1) / var(--tw-bg-opacity, 1));\n color: hsla(var(--bc) / var(--tw-text-opacity, 1));\n}\n\nhtml {\n -webkit-tap-highlight-color: transparent;\n}\n\n:root {\n color-scheme: light;\n --pf: 258.89 94.378% 40.941%;\n --sf: 314 100% 37.647%;\n --af: 174 60% 40.784%;\n --nf: 219 14.085% 22.275%;\n --in: 198 93% 60%;\n --su: 158 64% 52%;\n --wa: 43 96% 56%;\n --er: 0 91% 71%;\n --inc: 198 100% 12%;\n --suc: 158 100% 10%;\n --wac: 43 100% 11%;\n --erc: 0 100% 14%;\n --rounded-box: 1rem;\n --rounded-btn: 0.5rem;\n --rounded-badge: 1.9rem;\n --animation-btn: 0.25s;\n --animation-input: .2s;\n --btn-text-case: uppercase;\n --btn-focus-scale: 0.95;\n --border-btn: 1px;\n --tab-border: 1px;\n --tab-radius: 0.5rem;\n --p: 258.89 94.378% 51.176%;\n --pc: 0 0% 100%;\n --s: 314 100% 47.059%;\n --sc: 0 0% 100%;\n --a: 174 60% 50.98%;\n --ac: 174.71 43.59% 15.294%;\n --n: 219 14.085% 27.843%;\n --nc: 0 0% 100%;\n --b1: 0 0% 100%;\n --b2: 0 0% 94.902%;\n --b3: 180 1.9608% 90%;\n --bc: 215 27.907% 16.863%;\n}\n\n@media (prefers-color-scheme: dark) {\n\n :root {\n color-scheme: dark;\n --pf: 262.35 80.315% 40.157%;\n --sf: 315.75 70.196% 40%;\n --af: 174.69 70.335% 32.784%;\n --in: 198 93% 60%;\n --su: 158 64% 52%;\n --wa: 43 96% 56%;\n --er: 0 91% 71%;\n --inc: 198 100% 12%;\n --suc: 158 100% 10%;\n --wac: 43 100% 11%;\n --erc: 0 100% 14%;\n --rounded-box: 1rem;\n --rounded-btn: 0.5rem;\n --rounded-badge: 1.9rem;\n --animation-btn: 0.25s;\n --animation-input: .2s;\n --btn-text-case: uppercase;\n --btn-focus-scale: 0.95;\n --border-btn: 1px;\n --tab-border: 1px;\n --tab-radius: 0.5rem;\n --p: 262.35 80.315% 50.196%;\n --pc: 0 0% 100%;\n --s: 315.75 70.196% 50%;\n --sc: 0 0% 100%;\n --a: 174.69 70.335% 40.98%;\n --ac: 0 0% 100%;\n --n: 218.18 18.033% 11.961%;\n --nf: 222.86 17.073% 8.0392%;\n --nc: 220 13.376% 69.216%;\n --b1: 220 17.647% 20%;\n --b2: 220 17.241% 17.059%;\n --b3: 218.57 17.949% 15.294%;\n --bc: 220 13.376% 69.216%;\n }\n}\n\n[data-theme=light] {\n color-scheme: light;\n --pf: 258.89 94.378% 40.941%;\n --sf: 314 100% 37.647%;\n --af: 174 60% 40.784%;\n --nf: 219 14.085% 22.275%;\n --in: 198 93% 60%;\n --su: 158 64% 52%;\n --wa: 43 96% 56%;\n --er: 0 91% 71%;\n --inc: 198 100% 12%;\n --suc: 158 100% 10%;\n --wac: 43 100% 11%;\n --erc: 0 100% 14%;\n --rounded-box: 1rem;\n --rounded-btn: 0.5rem;\n --rounded-badge: 1.9rem;\n --animation-btn: 0.25s;\n --animation-input: .2s;\n --btn-text-case: uppercase;\n --btn-focus-scale: 0.95;\n --border-btn: 1px;\n --tab-border: 1px;\n --tab-radius: 0.5rem;\n --p: 258.89 94.378% 51.176%;\n --pc: 0 0% 100%;\n --s: 314 100% 47.059%;\n --sc: 0 0% 100%;\n --a: 174 60% 50.98%;\n --ac: 174.71 43.59% 15.294%;\n --n: 219 14.085% 27.843%;\n --nc: 0 0% 100%;\n --b1: 0 0% 100%;\n --b2: 0 0% 94.902%;\n --b3: 180 1.9608% 90%;\n --bc: 215 27.907% 16.863%;\n}\n\n[data-theme=dark] {\n color-scheme: dark;\n --pf: 262.35 80.315% 40.157%;\n --sf: 315.75 70.196% 40%;\n --af: 174.69 70.335% 32.784%;\n --in: 198 93% 60%;\n --su: 158 64% 52%;\n --wa: 43 96% 56%;\n --er: 0 91% 71%;\n --inc: 198 100% 12%;\n --suc: 158 100% 10%;\n --wac: 43 100% 11%;\n --erc: 0 100% 14%;\n --rounded-box: 1rem;\n --rounded-btn: 0.5rem;\n --rounded-badge: 1.9rem;\n --animation-btn: 0.25s;\n --animation-input: .2s;\n --btn-text-case: uppercase;\n --btn-focus-scale: 0.95;\n --border-btn: 1px;\n --tab-border: 1px;\n --tab-radius: 0.5rem;\n --p: 262.35 80.315% 50.196%;\n --pc: 0 0% 100%;\n --s: 315.75 70.196% 50%;\n --sc: 0 0% 100%;\n --a: 174.69 70.335% 40.98%;\n --ac: 0 0% 100%;\n --n: 218.18 18.033% 11.961%;\n --nf: 222.86 17.073% 8.0392%;\n --nc: 220 13.376% 69.216%;\n --b1: 220 17.647% 20%;\n --b2: 220 17.241% 17.059%;\n --b3: 218.57 17.949% 15.294%;\n --bc: 220 13.376% 69.216%;\n}\n\n[data-theme=cupcake] {\n color-scheme: light;\n --pf: 183.03 47.368% 47.216%;\n --sf: 338.25 71.429% 62.431%;\n --af: 39 84.112% 46.431%;\n --nf: 280 46.479% 11.137%;\n --in: 198 93% 60%;\n --su: 158 64% 52%;\n --wa: 43 96% 56%;\n --er: 0 91% 71%;\n --pc: 183.03 100% 11.804%;\n --sc: 338.25 100% 15.608%;\n --ac: 39 100% 11.608%;\n --nc: 280 82.688% 82.784%;\n --inc: 198 100% 12%;\n --suc: 158 100% 10%;\n --wac: 43 100% 11%;\n --erc: 0 100% 14%;\n --rounded-box: 1rem;\n --rounded-badge: 1.9rem;\n --animation-btn: 0.25s;\n --animation-input: .2s;\n --btn-text-case: uppercase;\n --btn-focus-scale: 0.95;\n --border-btn: 1px;\n --p: 183.03 47.368% 59.02%;\n --s: 338.25 71.429% 78.039%;\n --a: 39 84.112% 58.039%;\n --n: 280 46.479% 13.922%;\n --b1: 24 33.333% 97.059%;\n --b2: 26.667 21.951% 91.961%;\n --b3: 22.5 14.286% 89.02%;\n --bc: 280 46.479% 13.922%;\n --rounded-btn: 1.9rem;\n --tab-border: 2px;\n --tab-radius: .5rem;\n}\n\n[data-theme=bumblebee] {\n color-scheme: light;\n --pf: 41.124 74.167% 42.353%;\n --sf: 49.901 94.393% 46.431%;\n --af: 240 33.333% 11.294%;\n --nf: 240 33.333% 11.294%;\n --b2: 0 0% 90%;\n --b3: 0 0% 81%;\n --in: 198 93% 60%;\n --su: 158 64% 52%;\n --wa: 43 96% 56%;\n --er: 0 91% 71%;\n --bc: 0 0% 20%;\n --ac: 240 60.274% 82.824%;\n --nc: 240 60.274% 82.824%;\n --inc: 198 100% 12%;\n --suc: 158 100% 10%;\n --wac: 43 100% 11%;\n --erc: 0 100% 14%;\n --rounded-box: 1rem;\n --rounded-btn: 0.5rem;\n --rounded-badge: 1.9rem;\n --animation-btn: 0.25s;\n --animation-input: .2s;\n --btn-text-case: uppercase;\n --btn-focus-scale: 0.95;\n --border-btn: 1px;\n --tab-border: 1px;\n --tab-radius: 0.5rem;\n --p: 41.124 74.167% 52.941%;\n --pc: 240 33.333% 14.118%;\n --s: 49.901 94.393% 58.039%;\n --sc: 240 33.333% 14.118%;\n --a: 240 33.333% 14.118%;\n --n: 240 33.333% 14.118%;\n --b1: 0 0% 100%;\n}\n\n[data-theme=emerald] {\n color-scheme: light;\n --pf: 141.18 50% 48%;\n --sf: 218.88 96.078% 48%;\n --af: 9.8901 81.25% 44.863%;\n --nf: 219.23 20.312% 20.078%;\n --b2: 0 0% 90%;\n --b3: 0 0% 81%;\n --in: 198 93% 60%;\n --su: 158 64% 52%;\n --wa: 43 96% 56%;\n --er: 0 91% 71%;\n --inc: 198 100% 12%;\n --suc: 158 100% 10%;\n --wac: 43 100% 11%;\n --erc: 0 100% 14%;\n --rounded-box: 1rem;\n --rounded-btn: 0.5rem;\n --rounded-badge: 1.9rem;\n --btn-text-case: uppercase;\n --border-btn: 1px;\n --tab-border: 1px;\n --tab-radius: 0.5rem;\n --p: 141.18 50% 60%;\n --pc: 151.11 28.421% 18.627%;\n --s: 218.88 96.078% 60%;\n --sc: 210 20% 98.039%;\n --a: 9.8901 81.25% 56.078%;\n --ac: 210 20% 98.039%;\n --n: 219.23 20.312% 25.098%;\n --nc: 210 20% 98.039%;\n --b1: 0 0% 100%;\n --bc: 219.23 20.312% 25.098%;\n --animation-btn: 0;\n --animation-input: 0;\n --btn-focus-scale: 1;\n}\n\n[data-theme=corporate] {\n color-scheme: light;\n --pf: 229.09 95.652% 51.137%;\n --sf: 214.91 26.316% 47.216%;\n --af: 154.2 49.02% 48%;\n --nf: 233.33 27.273% 10.353%;\n --b2: 0 0% 90%;\n --b3: 0 0% 81%;\n --in: 198 93% 60%;\n --su: 158 64% 52%;\n --wa: 43 96% 56%;\n --er: 0 91% 71%;\n --pc: 229.09 100% 92.784%;\n --sc: 214.91 100% 11.804%;\n --ac: 154.2 100% 12%;\n --inc: 198 100% 12%;\n --suc: 158 100% 10%;\n --wac: 43 100% 11%;\n --erc: 0 100% 14%;\n --btn-text-case: uppercase;\n --border-btn: 1px;\n --tab-border: 1px;\n --tab-radius: 0.5rem;\n --p: 229.09 95.652% 63.922%;\n --s: 214.91 26.316% 59.02%;\n --a: 154.2 49.02% 60%;\n --n: 233.33 27.273% 12.941%;\n --nc: 210 38.462% 94.902%;\n --b1: 0 0% 100%;\n --bc: 233.33 27.273% 12.941%;\n --rounded-box: 0.25rem;\n --rounded-btn: .125rem;\n --rounded-badge: .125rem;\n --animation-btn: 0;\n --animation-input: 0;\n --btn-focus-scale: 1;\n}\n\n[data-theme=synthwave] {\n color-scheme: dark;\n --pf: 320.73 69.62% 55.216%;\n --sf: 197.03 86.592% 51.922%;\n --af: 48 89.041% 45.647%;\n --nf: 253.22 60.825% 15.216%;\n --b2: 253.85 59.091% 23.294%;\n --b3: 253.85 59.091% 20.965%;\n --pc: 320.73 100% 13.804%;\n --sc: 197.03 100% 12.98%;\n --ac: 48 100% 11.412%;\n --rounded-box: 1rem;\n --rounded-btn: 0.5rem;\n --rounded-badge: 1.9rem;\n --animation-btn: 0.25s;\n --animation-input: .2s;\n --btn-text-case: uppercase;\n --btn-focus-scale: 0.95;\n --border-btn: 1px;\n --tab-border: 1px;\n --tab-radius: 0.5rem;\n --p: 320.73 69.62% 69.02%;\n --s: 197.03 86.592% 64.902%;\n --a: 48 89.041% 57.059%;\n --n: 253.22 60.825% 19.02%;\n --nc: 260 60% 98.039%;\n --b1: 253.85 59.091% 25.882%;\n --bc: 260 60% 98.039%;\n --in: 199.13 86.957% 63.922%;\n --inc: 257.45 63.218% 17.059%;\n --su: 168.1 74.233% 68.039%;\n --suc: 257.45 63.218% 17.059%;\n --wa: 48 89.041% 57.059%;\n --wac: 257.45 63.218% 17.059%;\n --er: 351.85 73.636% 56.863%;\n --erc: 260 60% 98.039%;\n}\n\n[data-theme=retro] {\n color-scheme: light;\n --pf: 2.6667 73.77% 60.863%;\n --sf: 144.62 27.273% 57.569%;\n --af: 49.024 67.213% 60.863%;\n --nf: 41.667 16.822% 33.569%;\n --inc: 221.21 100% 90.667%;\n --suc: 142.13 100% 87.255%;\n --wac: 32.133 100% 8.7451%;\n --erc: 0 100% 90.118%;\n --animation-btn: 0.25s;\n --animation-input: .2s;\n --btn-text-case: uppercase;\n --btn-focus-scale: 0.95;\n --border-btn: 1px;\n --tab-border: 1px;\n --tab-radius: 0.5rem;\n --p: 2.6667 73.77% 76.078%;\n --pc: 345 5.2632% 14.902%;\n --s: 144.62 27.273% 71.961%;\n --sc: 345 5.2632% 14.902%;\n --a: 49.024 67.213% 76.078%;\n --ac: 345 5.2632% 14.902%;\n --n: 41.667 16.822% 41.961%;\n --nc: 45 47.059% 80%;\n --b1: 45 47.059% 80%;\n --b2: 45.283 37.063% 71.961%;\n --b3: 42.188 35.955% 65.098%;\n --bc: 345 5.2632% 14.902%;\n --in: 221.21 83.193% 53.333%;\n --su: 142.13 76.216% 36.275%;\n --wa: 32.133 94.619% 43.725%;\n --er: 0 72.222% 50.588%;\n --rounded-box: 0.4rem;\n --rounded-btn: 0.4rem;\n --rounded-badge: 0.4rem;\n}\n\n[data-theme=cyberpunk] {\n color-scheme: light;\n --pf: 344.78 100% 58.353%;\n --sf: 195.12 80.392% 56%;\n --af: 276 74.324% 56.784%;\n --nf: 57.273 100% 10.353%;\n --b2: 56 100% 45%;\n --b3: 56 100% 40.5%;\n --in: 198 93% 60%;\n --su: 158 64% 52%;\n --wa: 43 96% 56%;\n --er: 0 91% 71%;\n --bc: 56 100% 10%;\n --pc: 344.78 100% 14.588%;\n --sc: 195.12 100% 14%;\n --ac: 276 100% 14.196%;\n --inc: 198 100% 12%;\n --suc: 158 100% 10%;\n --wac: 43 100% 11%;\n --erc: 0 100% 14%;\n --animation-btn: 0.25s;\n --animation-input: .2s;\n --btn-text-case: uppercase;\n --btn-focus-scale: 0.95;\n --border-btn: 1px;\n --tab-border: 1px;\n font-family: ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;\n --p: 344.78 100% 72.941%;\n --s: 195.12 80.392% 70%;\n --a: 276 74.324% 70.98%;\n --n: 57.273 100% 12.941%;\n --nc: 56 100% 50%;\n --b1: 56 100% 50%;\n --rounded-box: 0;\n --rounded-btn: 0;\n --rounded-badge: 0;\n --tab-radius: 0;\n}\n\n[data-theme=valentine] {\n color-scheme: light;\n --pf: 353.23 73.81% 53.647%;\n --sf: 254.12 86.441% 61.49%;\n --af: 181.41 55.556% 56%;\n --nf: 336 42.857% 38.431%;\n --b2: 318.46 46.429% 80.118%;\n --b3: 318.46 46.429% 72.106%;\n --pc: 353.23 100% 13.412%;\n --sc: 254.12 100% 15.373%;\n --ac: 181.41 100% 14%;\n --inc: 221.21 100% 90.667%;\n --suc: 142.13 100% 87.255%;\n --wac: 32.133 100% 8.7451%;\n --erc: 0 100% 90.118%;\n --rounded-box: 1rem;\n --rounded-badge: 1.9rem;\n --animation-btn: 0.25s;\n --animation-input: .2s;\n --btn-text-case: uppercase;\n --btn-focus-scale: 0.95;\n --border-btn: 1px;\n --tab-border: 1px;\n --tab-radius: 0.5rem;\n --p: 353.23 73.81% 67.059%;\n --s: 254.12 86.441% 76.863%;\n --a: 181.41 55.556% 70%;\n --n: 336 42.857% 48.039%;\n --nc: 318.46 46.429% 89.02%;\n --b1: 318.46 46.429% 89.02%;\n --bc: 343.64 38.462% 28.039%;\n --in: 221.21 83.193% 53.333%;\n --su: 142.13 76.216% 36.275%;\n --wa: 32.133 94.619% 43.725%;\n --er: 0 72.222% 50.588%;\n --rounded-btn: 1.9rem;\n}\n\n[data-theme=halloween] {\n color-scheme: dark;\n --pf: 31.927 89.344% 41.725%;\n --sf: 271.22 45.794% 33.569%;\n --af: 91.071 100% 26.353%;\n --nf: 180 3.5714% 8.7843%;\n --b2: 0 0% 11.647%;\n --b3: 0 0% 10.482%;\n --bc: 0 0% 82.588%;\n --sc: 271.22 100% 88.392%;\n --ac: 91.071 100% 6.5882%;\n --nc: 180 4.8458% 82.196%;\n --inc: 221.21 100% 90.667%;\n --suc: 142.13 100% 87.255%;\n --wac: 32.133 100% 8.7451%;\n --erc: 0 100% 90.118%;\n --rounded-box: 1rem;\n --rounded-btn: 0.5rem;\n --rounded-badge: 1.9rem;\n --animation-btn: 0.25s;\n --animation-input: .2s;\n --btn-text-case: uppercase;\n --btn-focus-scale: 0.95;\n --border-btn: 1px;\n --tab-border: 1px;\n --tab-radius: 0.5rem;\n --p: 31.927 89.344% 52.157%;\n --pc: 180 7.3171% 8.0392%;\n --s: 271.22 45.794% 41.961%;\n --a: 91.071 100% 32.941%;\n --n: 180 3.5714% 10.98%;\n --b1: 0 0% 12.941%;\n --in: 221.21 83.193% 53.333%;\n --su: 142.13 76.216% 36.275%;\n --wa: 32.133 94.619% 43.725%;\n --er: 0 72.222% 50.588%;\n}\n\n[data-theme=garden] {\n color-scheme: light;\n --pf: 138.86 15.982% 34.353%;\n --sf: 96.923 37.143% 74.51%;\n --af: 0 67.742% 75.137%;\n --nf: 0 3.9106% 28.078%;\n --b2: 0 4.3478% 81.882%;\n --b3: 0 4.3478% 73.694%;\n --in: 198 93% 60%;\n --su: 158 64% 52%;\n --wa: 43 96% 56%;\n --er: 0 91% 71%;\n --pc: 138.86 100% 88.588%;\n --inc: 198 100% 12%;\n --suc: 158 100% 10%;\n --wac: 43 100% 11%;\n --erc: 0 100% 14%;\n --rounded-box: 1rem;\n --rounded-btn: 0.5rem;\n --rounded-badge: 1.9rem;\n --animation-btn: 0.25s;\n --animation-input: .2s;\n --btn-text-case: uppercase;\n --btn-focus-scale: 0.95;\n --border-btn: 1px;\n --tab-border: 1px;\n --tab-radius: 0.5rem;\n --p: 138.86 15.982% 42.941%;\n --s: 96.923 37.143% 93.137%;\n --sc: 96 32.468% 15.098%;\n --a: 0 67.742% 93.922%;\n --ac: 0 21.951% 16.078%;\n --n: 0 3.9106% 35.098%;\n --nc: 0 4.3478% 90.98%;\n --b1: 0 4.3478% 90.98%;\n --bc: 0 3.2258% 6.0784%;\n}\n\n[data-theme=forest] {\n color-scheme: dark;\n --pf: 141.04 71.963% 33.569%;\n --sf: 140.98 74.694% 38.431%;\n --af: 35.148 68.98% 41.569%;\n --nf: 0 9.6774% 4.8627%;\n --b2: 0 12.195% 7.2353%;\n --b3: 0 12.195% 6.5118%;\n --in: 198 93% 60%;\n --su: 158 64% 52%;\n --wa: 43 96% 56%;\n --er: 0 91% 71%;\n --bc: 0 11.727% 81.608%;\n --sc: 140.98 100% 9.6078%;\n --ac: 35.148 100% 10.392%;\n --nc: 0 6.8894% 81.216%;\n --inc: 198 100% 12%;\n --suc: 158 100% 10%;\n --wac: 43 100% 11%;\n --erc: 0 100% 14%;\n --rounded-box: 1rem;\n --rounded-badge: 1.9rem;\n --animation-btn: 0.25s;\n --animation-input: .2s;\n --btn-text-case: uppercase;\n --btn-focus-scale: 0.95;\n --border-btn: 1px;\n --tab-border: 1px;\n --tab-radius: 0.5rem;\n --p: 141.04 71.963% 41.961%;\n --pc: 140.66 100% 88.039%;\n --s: 140.98 74.694% 48.039%;\n --a: 35.148 68.98% 51.961%;\n --n: 0 9.6774% 6.0784%;\n --b1: 0 12.195% 8.0392%;\n --rounded-btn: 1.9rem;\n}\n\n[data-theme=aqua] {\n color-scheme: dark;\n --pf: 181.79 92.857% 39.529%;\n --sf: 274.41 30.909% 45.49%;\n --af: 47.059 100% 64%;\n --nf: 205.4 53.725% 40%;\n --b2: 218.61 52.511% 38.647%;\n --b3: 218.61 52.511% 34.782%;\n --bc: 218.61 100% 88.588%;\n --sc: 274.41 100% 91.373%;\n --ac: 47.059 100% 16%;\n --nc: 205.4 100% 90%;\n --inc: 221.21 100% 90.667%;\n --suc: 142.13 100% 87.255%;\n --wac: 32.133 100% 8.7451%;\n --erc: 0 100% 90.118%;\n --rounded-box: 1rem;\n --rounded-btn: 0.5rem;\n --rounded-badge: 1.9rem;\n --animation-btn: 0.25s;\n --animation-input: .2s;\n --btn-text-case: uppercase;\n --btn-focus-scale: 0.95;\n --border-btn: 1px;\n --tab-border: 1px;\n --tab-radius: 0.5rem;\n --p: 181.79 92.857% 49.412%;\n --pc: 181.41 100% 16.667%;\n --s: 274.41 30.909% 56.863%;\n --a: 47.059 100% 80%;\n --n: 205.4 53.725% 50%;\n --b1: 218.61 52.511% 42.941%;\n --in: 221.21 83.193% 53.333%;\n --su: 142.13 76.216% 36.275%;\n --wa: 32.133 94.619% 43.725%;\n --er: 0 72.222% 50.588%;\n}\n\n[data-theme=lofi] {\n color-scheme: light;\n --pf: 0 0% 4.0784%;\n --sf: 0 1.9608% 8%;\n --af: 0 0% 11.922%;\n --nf: 0 0% 0%;\n --btn-text-case: uppercase;\n --border-btn: 1px;\n --tab-border: 1px;\n --p: 0 0% 5.098%;\n --pc: 0 0% 100%;\n --s: 0 1.9608% 10%;\n --sc: 0 0% 100%;\n --a: 0 0% 14.902%;\n --ac: 0 0% 100%;\n --n: 0 0% 0%;\n --nc: 0 0% 100%;\n --b1: 0 0% 100%;\n --b2: 0 0% 94.902%;\n --b3: 0 1.9608% 90%;\n --bc: 0 0% 0%;\n --in: 212.35 100% 47.647%;\n --inc: 0 0% 100%;\n --su: 136.84 72.152% 46.471%;\n --suc: 0 0% 100%;\n --wa: 4.5614 100% 66.471%;\n --wac: 0 0% 100%;\n --er: 325.05 77.6% 49.02%;\n --erc: 0 0% 100%;\n --rounded-box: 0.25rem;\n --rounded-btn: 0.125rem;\n --rounded-badge: 0.125rem;\n --animation-btn: 0;\n --animation-input: 0;\n --btn-focus-scale: 1;\n --tab-radius: 0;\n}\n\n[data-theme=pastel] {\n color-scheme: light;\n --pf: 283.64 21.569% 64%;\n --sf: 351.63 70.492% 70.431%;\n --af: 158.49 54.639% 64.784%;\n --nf: 198.62 43.719% 48.784%;\n --in: 198 93% 60%;\n --su: 158 64% 52%;\n --wa: 43 96% 56%;\n --er: 0 91% 71%;\n --bc: 0 0% 20%;\n --pc: 283.64 59.314% 16%;\n --sc: 351.63 100% 17.608%;\n --ac: 158.49 100% 16.196%;\n --nc: 198.62 100% 12.196%;\n --inc: 198 100% 12%;\n --suc: 158 100% 10%;\n --wac: 43 100% 11%;\n --erc: 0 100% 14%;\n --rounded-box: 1rem;\n --rounded-badge: 1.9rem;\n --animation-btn: 0.25s;\n --animation-input: .2s;\n --btn-text-case: uppercase;\n --btn-focus-scale: 0.95;\n --border-btn: 1px;\n --tab-border: 1px;\n --tab-radius: 0.5rem;\n --p: 283.64 21.569% 80%;\n --s: 351.63 70.492% 88.039%;\n --a: 158.49 54.639% 80.98%;\n --n: 198.62 43.719% 60.98%;\n --b1: 0 0% 100%;\n --b2: 210 20% 98.039%;\n --b3: 216 12.195% 83.922%;\n --rounded-btn: 1.9rem;\n}\n\n[data-theme=fantasy] {\n color-scheme: light;\n --pf: 296.04 82.813% 20.078%;\n --sf: 200 100% 29.647%;\n --af: 30.894 94.378% 40.941%;\n --nf: 215 27.907% 13.49%;\n --b2: 0 0% 90%;\n --b3: 0 0% 81%;\n --in: 198 93% 60%;\n --su: 158 64% 52%;\n --wa: 43 96% 56%;\n --er: 0 91% 71%;\n --pc: 296.04 100% 85.02%;\n --sc: 200 100% 87.412%;\n --ac: 30.894 100% 10.235%;\n --nc: 215 62.264% 83.373%;\n --inc: 198 100% 12%;\n --suc: 158 100% 10%;\n --wac: 43 100% 11%;\n --erc: 0 100% 14%;\n --rounded-box: 1rem;\n --rounded-btn: 0.5rem;\n --rounded-badge: 1.9rem;\n --animation-btn: 0.25s;\n --animation-input: .2s;\n --btn-text-case: uppercase;\n --btn-focus-scale: 0.95;\n --border-btn: 1px;\n --tab-border: 1px;\n --tab-radius: 0.5rem;\n --p: 296.04 82.813% 25.098%;\n --s: 200 100% 37.059%;\n --a: 30.894 94.378% 51.176%;\n --n: 215 27.907% 16.863%;\n --b1: 0 0% 100%;\n --bc: 215 27.907% 16.863%;\n}\n\n[data-theme=wireframe] {\n color-scheme: light;\n --pf: 0 0% 57.725%;\n --sf: 0 0% 57.725%;\n --af: 0 0% 57.725%;\n --nf: 0 0% 73.725%;\n --bc: 0 0% 20%;\n --pc: 0 0% 14.431%;\n --sc: 0 0% 14.431%;\n --ac: 0 0% 14.431%;\n --nc: 0 0% 18.431%;\n --inc: 240 100% 90%;\n --suc: 120 100% 85.02%;\n --wac: 60 100% 10%;\n --erc: 0 100% 90%;\n --animation-btn: 0.25s;\n --animation-input: .2s;\n --btn-text-case: uppercase;\n --btn-focus-scale: 0.95;\n --border-btn: 1px;\n --tab-border: 1px;\n font-family: Chalkboard,comic sans ms,\"sanssecondaryerif\";\n --p: 0 0% 72.157%;\n --s: 0 0% 72.157%;\n --a: 0 0% 72.157%;\n --n: 0 0% 92.157%;\n --b1: 0 0% 100%;\n --b2: 0 0% 93.333%;\n --b3: 0 0% 86.667%;\n --in: 240 100% 50%;\n --su: 120 100% 25.098%;\n --wa: 60 30.196% 50%;\n --er: 0 100% 50%;\n --rounded-box: 0.2rem;\n --rounded-btn: 0.2rem;\n --rounded-badge: 0.2rem;\n --tab-radius: 0.2rem;\n}\n\n[data-theme=black] {\n color-scheme: dark;\n --pf: 0 1.9608% 16%;\n --sf: 0 1.9608% 16%;\n --af: 0 1.9608% 16%;\n --bc: 0 0% 80%;\n --pc: 0 5.3922% 84%;\n --sc: 0 5.3922% 84%;\n --ac: 0 5.3922% 84%;\n --nc: 0 2.5404% 83.02%;\n --inc: 240 100% 90%;\n --suc: 120 100% 85.02%;\n --wac: 60 100% 10%;\n --erc: 0 100% 90%;\n --border-btn: 1px;\n --tab-border: 1px;\n --p: 0 1.9608% 20%;\n --s: 0 1.9608% 20%;\n --a: 0 1.9608% 20%;\n --b1: 0 0% 0%;\n --b2: 0 0% 5.098%;\n --b3: 0 1.9608% 10%;\n --n: 0 1.2987% 15.098%;\n --nf: 0 1.9608% 20%;\n --in: 240 100% 50%;\n --su: 120 100% 25.098%;\n --wa: 60 100% 50%;\n --er: 0 100% 50%;\n --rounded-box: 0;\n --rounded-btn: 0;\n --rounded-badge: 0;\n --animation-btn: 0;\n --animation-input: 0;\n --btn-text-case: lowercase;\n --btn-focus-scale: 1;\n --tab-radius: 0;\n}\n\n[data-theme=luxury] {\n color-scheme: dark;\n --pf: 0 0% 80%;\n --sf: 218.4 54.348% 14.431%;\n --af: 318.62 21.805% 20.863%;\n --nf: 270 4.3478% 7.2157%;\n --pc: 0 0% 20%;\n --sc: 218.4 100% 83.608%;\n --ac: 318.62 84.615% 85.216%;\n --inc: 202.35 100% 14%;\n --suc: 89.007 100% 10.392%;\n --wac: 53.906 100% 12.706%;\n --erc: 0 100% 14.353%;\n --rounded-box: 1rem;\n --rounded-btn: 0.5rem;\n --rounded-badge: 1.9rem;\n --animation-btn: 0.25s;\n --animation-input: .2s;\n --btn-text-case: uppercase;\n --btn-focus-scale: 0.95;\n --border-btn: 1px;\n --tab-border: 1px;\n --tab-radius: 0.5rem;\n --p: 0 0% 100%;\n --s: 218.4 54.348% 18.039%;\n --a: 318.62 21.805% 26.078%;\n --n: 270 4.3478% 9.0196%;\n --nc: 37.083 67.29% 58.039%;\n --b1: 240 10% 3.9216%;\n --b2: 270 4.3478% 9.0196%;\n --b3: 270 2.1739% 18.039%;\n --bc: 37.083 67.29% 58.039%;\n --in: 202.35 100% 70%;\n --su: 89.007 61.633% 51.961%;\n --wa: 53.906 68.817% 63.529%;\n --er: 0 100% 71.765%;\n}\n\n[data-theme=dracula] {\n color-scheme: dark;\n --pf: 325.52 100% 58.98%;\n --sf: 264.71 89.474% 62.118%;\n --af: 31.02 100% 56.941%;\n --nf: 229.57 15.033% 24%;\n --b2: 231.43 14.894% 16.588%;\n --b3: 231.43 14.894% 14.929%;\n --pc: 325.52 100% 14.745%;\n --sc: 264.71 100% 15.529%;\n --ac: 31.02 100% 14.235%;\n --nc: 229.57 70.868% 86%;\n --inc: 190.53 100% 15.373%;\n --suc: 135.18 100% 12.941%;\n --wac: 64.909 100% 15.294%;\n --erc: 0 100% 93.333%;\n --rounded-box: 1rem;\n --rounded-btn: 0.5rem;\n --rounded-badge: 1.9rem;\n --animation-btn: 0.25s;\n --animation-input: .2s;\n --btn-text-case: uppercase;\n --btn-focus-scale: 0.95;\n --border-btn: 1px;\n --tab-border: 1px;\n --tab-radius: 0.5rem;\n --p: 325.52 100% 73.725%;\n --s: 264.71 89.474% 77.647%;\n --a: 31.02 100% 71.176%;\n --n: 229.57 15.033% 30%;\n --b1: 231.43 14.894% 18.431%;\n --bc: 60 30% 96.078%;\n --in: 190.53 96.61% 76.863%;\n --su: 135.18 94.444% 64.706%;\n --wa: 64.909 91.667% 76.471%;\n --er: 0 100% 66.667%;\n}\n\n[data-theme=cmyk] {\n color-scheme: light;\n --pf: 202.72 83.251% 48.157%;\n --sf: 335.25 77.67% 47.686%;\n --af: 56.195 100% 47.843%;\n --nf: 0 0% 8.1569%;\n --b2: 0 0% 90%;\n --b3: 0 0% 81%;\n --bc: 0 0% 20%;\n --pc: 202.72 100% 12.039%;\n --sc: 335.25 100% 91.922%;\n --ac: 56.195 100% 11.961%;\n --nc: 0 0% 82.039%;\n --inc: 192.2 100% 10.431%;\n --suc: 291.06 100% 87.608%;\n --wac: 25.027 100% 11.333%;\n --erc: 3.956 100% 91.137%;\n --rounded-box: 1rem;\n --rounded-btn: 0.5rem;\n --rounded-badge: 1.9rem;\n --animation-btn: 0.25s;\n --animation-input: .2s;\n --btn-text-case: uppercase;\n --btn-focus-scale: 0.95;\n --border-btn: 1px;\n --tab-border: 1px;\n --tab-radius: 0.5rem;\n --p: 202.72 83.251% 60.196%;\n --s: 335.25 77.67% 59.608%;\n --a: 56.195 100% 59.804%;\n --n: 0 0% 10.196%;\n --b1: 0 0% 100%;\n --in: 192.2 48.361% 52.157%;\n --su: 291.06 48.454% 38.039%;\n --wa: 25.027 84.615% 56.667%;\n --er: 3.956 80.531% 55.686%;\n}\n\n[data-theme=autumn] {\n color-scheme: light;\n --pf: 344.23 95.804% 22.431%;\n --sf: 0.44444 63.38% 46.588%;\n --af: 27.477 56.021% 50.039%;\n --nf: 22.105 17.117% 34.824%;\n --b2: 0 0% 85.059%;\n --b3: 0 0% 76.553%;\n --bc: 0 0% 18.902%;\n --pc: 344.23 100% 85.608%;\n --sc: 0.44444 100% 91.647%;\n --ac: 27.477 100% 12.51%;\n --nc: 22.105 100% 88.706%;\n --inc: 186.94 100% 9.9216%;\n --suc: 164.59 100% 8.6275%;\n --wac: 30.141 100% 9.9216%;\n --erc: 353.6 100% 89.765%;\n --rounded-box: 1rem;\n --rounded-btn: 0.5rem;\n --rounded-badge: 1.9rem;\n --animation-btn: 0.25s;\n --animation-input: .2s;\n --btn-text-case: uppercase;\n --btn-focus-scale: 0.95;\n --border-btn: 1px;\n --tab-border: 1px;\n --tab-radius: 0.5rem;\n --p: 344.23 95.804% 28.039%;\n --s: 0.44444 63.38% 58.235%;\n --a: 27.477 56.021% 62.549%;\n --n: 22.105 17.117% 43.529%;\n --b1: 0 0% 94.51%;\n --in: 186.94 47.826% 49.608%;\n --su: 164.59 33.636% 43.137%;\n --wa: 30.141 84.19% 49.608%;\n --er: 353.6 79.116% 48.824%;\n}\n\n[data-theme=business] {\n color-scheme: dark;\n --pf: 210 64.103% 24.471%;\n --sf: 200 12.931% 43.608%;\n --af: 12.515 79.512% 47.843%;\n --nf: 212.73 13.58% 12.706%;\n --b2: 0 0% 11.294%;\n --b3: 0 0% 10.165%;\n --bc: 0 0% 82.51%;\n --pc: 210 100% 86.118%;\n --sc: 200 100% 10.902%;\n --ac: 12.515 100% 11.961%;\n --nc: 212.73 28.205% 83.176%;\n --inc: 199.15 100% 88.353%;\n --suc: 144 100% 11.137%;\n --wac: 39.231 100% 12.078%;\n --erc: 6.3415 100% 88.667%;\n --animation-btn: 0.25s;\n --animation-input: .2s;\n --btn-text-case: uppercase;\n --btn-focus-scale: 0.95;\n --border-btn: 1px;\n --tab-border: 1px;\n --tab-radius: 0.5rem;\n --p: 210 64.103% 30.588%;\n --s: 200 12.931% 54.51%;\n --a: 12.515 79.512% 59.804%;\n --n: 212.73 13.58% 15.882%;\n --b1: 0 0% 12.549%;\n --in: 199.15 100% 41.765%;\n --su: 144 30.973% 55.686%;\n --wa: 39.231 64.356% 60.392%;\n --er: 6.3415 55.656% 43.333%;\n --rounded-box: 0.25rem;\n --rounded-btn: .125rem;\n --rounded-badge: .125rem;\n}\n\n[data-theme=acid] {\n color-scheme: light;\n --pf: 302.59 100% 40%;\n --sf: 27.294 100% 40%;\n --af: 72 98.425% 40.157%;\n --nf: 238.42 43.182% 13.804%;\n --b2: 0 0% 88.235%;\n --b3: 0 0% 79.412%;\n --bc: 0 0% 19.608%;\n --pc: 302.59 100% 90%;\n --sc: 27.294 100% 10%;\n --ac: 72 100% 10.039%;\n --nc: 238.42 99.052% 83.451%;\n --inc: 209.85 100% 11.569%;\n --suc: 148.87 100% 11.608%;\n --wac: 52.574 100% 11.451%;\n --erc: 0.78261 100% 89.02%;\n --animation-btn: 0.25s;\n --animation-input: .2s;\n --btn-text-case: uppercase;\n --btn-focus-scale: 0.95;\n --border-btn: 1px;\n --tab-border: 1px;\n --tab-radius: 0.5rem;\n --p: 302.59 100% 50%;\n --s: 27.294 100% 50%;\n --a: 72 98.425% 50.196%;\n --n: 238.42 43.182% 17.255%;\n --b1: 0 0% 98.039%;\n --in: 209.85 91.628% 57.843%;\n --su: 148.87 49.533% 58.039%;\n --wa: 52.574 92.661% 57.255%;\n --er: 0.78261 100% 45.098%;\n --rounded-box: 1.25rem;\n --rounded-btn: 1rem;\n --rounded-badge: 1rem;\n}\n\n[data-theme=lemonade] {\n color-scheme: light;\n --pf: 88.8 96.154% 24.471%;\n --sf: 60 80.952% 43.765%;\n --af: 62.553 79.661% 70.745%;\n --nf: 238.42 43.182% 13.804%;\n --b2: 0 0% 90%;\n --b3: 0 0% 81%;\n --bc: 0 0% 20%;\n --pc: 88.8 100% 86.118%;\n --sc: 60 100% 10.941%;\n --ac: 62.553 100% 17.686%;\n --nc: 238.42 99.052% 83.451%;\n --inc: 191.61 79.118% 16.902%;\n --suc: 74.458 100% 15.725%;\n --wac: 50.182 100% 15.059%;\n --erc: 0.98361 100% 16.588%;\n --rounded-box: 1rem;\n --rounded-btn: 0.5rem;\n --rounded-badge: 1.9rem;\n --animation-btn: 0.25s;\n --animation-input: .2s;\n --btn-text-case: uppercase;\n --btn-focus-scale: 0.95;\n --border-btn: 1px;\n --tab-border: 1px;\n --tab-radius: 0.5rem;\n --p: 88.8 96.154% 30.588%;\n --s: 60 80.952% 54.706%;\n --a: 62.553 79.661% 88.431%;\n --n: 238.42 43.182% 17.255%;\n --b1: 0 0% 100%;\n --in: 191.61 39.241% 84.51%;\n --su: 74.458 76.147% 78.627%;\n --wa: 50.182 87.302% 75.294%;\n --er: 0.98361 70.115% 82.941%;\n}\n\n[data-theme=night] {\n color-scheme: dark;\n --pf: 198.44 93.204% 47.686%;\n --sf: 234.45 89.474% 59.137%;\n --af: 328.85 85.621% 56%;\n --b2: 222.22 47.368% 10.059%;\n --b3: 222.22 47.368% 9.0529%;\n --bc: 222.22 65.563% 82.235%;\n --pc: 198.44 100% 11.922%;\n --sc: 234.45 100% 14.784%;\n --ac: 328.85 100% 14%;\n --nc: 217.24 75.772% 83.49%;\n --inc: 198.46 100% 9.6078%;\n --suc: 172.46 100% 10.078%;\n --wac: 40.61 100% 12.706%;\n --erc: 350.94 100% 14.235%;\n --rounded-box: 1rem;\n --rounded-btn: 0.5rem;\n --rounded-badge: 1.9rem;\n --animation-btn: 0.25s;\n --animation-input: .2s;\n --btn-text-case: uppercase;\n --btn-focus-scale: 0.95;\n --border-btn: 1px;\n --tab-border: 1px;\n --tab-radius: 0.5rem;\n --p: 198.44 93.204% 59.608%;\n --s: 234.45 89.474% 73.922%;\n --a: 328.85 85.621% 70%;\n --n: 217.24 32.584% 17.451%;\n --nf: 217.06 30.357% 21.961%;\n --b1: 222.22 47.368% 11.176%;\n --in: 198.46 90.204% 48.039%;\n --su: 172.46 66.008% 50.392%;\n --wa: 40.61 88.172% 63.529%;\n --er: 350.94 94.558% 71.176%;\n}\n\n[data-theme=coffee] {\n color-scheme: dark;\n --pf: 29.583 66.667% 46.118%;\n --sf: 182.4 24.752% 15.843%;\n --af: 194.19 74.4% 19.608%;\n --nf: 300 20% 4.7059%;\n --b2: 306 18.519% 9.5294%;\n --b3: 306 18.519% 8.5765%;\n --pc: 29.583 100% 11.529%;\n --sc: 182.4 67.237% 83.961%;\n --ac: 194.19 100% 84.902%;\n --nc: 300 13.75% 81.176%;\n --inc: 171.15 100% 13.451%;\n --suc: 92.5 100% 12.471%;\n --wac: 43.125 100% 13.725%;\n --erc: 9.7561 100% 14.941%;\n --rounded-box: 1rem;\n --rounded-btn: 0.5rem;\n --rounded-badge: 1.9rem;\n --animation-btn: 0.25s;\n --animation-input: .2s;\n --btn-text-case: uppercase;\n --btn-focus-scale: 0.95;\n --border-btn: 1px;\n --tab-border: 1px;\n --tab-radius: 0.5rem;\n --p: 29.583 66.667% 57.647%;\n --s: 182.4 24.752% 19.804%;\n --a: 194.19 74.4% 24.51%;\n --n: 300 20% 5.8824%;\n --b1: 306 18.519% 10.588%;\n --bc: 36.667 8.3333% 42.353%;\n --in: 171.15 36.527% 67.255%;\n --su: 92.5 25% 62.353%;\n --wa: 43.125 100% 68.627%;\n --er: 9.7561 95.349% 74.706%;\n}\n\n[data-theme=winter] {\n color-scheme: light;\n --pf: 211.79 100% 40.627%;\n --sf: 246.92 47.273% 34.51%;\n --af: 310.41 49.388% 41.569%;\n --nf: 217.02 92.157% 8%;\n --pc: 211.79 100% 90.157%;\n --sc: 246.92 100% 88.627%;\n --ac: 310.41 100% 90.392%;\n --nc: 217.02 100% 82%;\n --inc: 191.54 100% 15.608%;\n --suc: 181.5 100% 13.255%;\n --wac: 32.308 100% 16.706%;\n --erc: 0 100% 14.431%;\n --rounded-box: 1rem;\n --rounded-btn: 0.5rem;\n --rounded-badge: 1.9rem;\n --animation-btn: 0.25s;\n --animation-input: .2s;\n --btn-text-case: uppercase;\n --btn-focus-scale: 0.95;\n --border-btn: 1px;\n --tab-border: 1px;\n --tab-radius: 0.5rem;\n --p: 211.79 100% 50.784%;\n --s: 246.92 47.273% 43.137%;\n --a: 310.41 49.388% 51.961%;\n --n: 217.02 92.157% 10%;\n --b1: 0 0% 100%;\n --b2: 216.92 100% 97.451%;\n --b3: 218.82 43.59% 92.353%;\n --bc: 214.29 30.061% 31.961%;\n --in: 191.54 92.857% 78.039%;\n --su: 181.5 46.512% 66.275%;\n --wa: 32.308 61.905% 83.529%;\n --er: 0 63.38% 72.157%;\n}\n\n*, ::before, ::after {\n --tw-border-spacing-x: 0;\n --tw-border-spacing-y: 0;\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-rotate: 0;\n --tw-skew-x: 0;\n --tw-skew-y: 0;\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n --tw-pan-x: ;\n --tw-pan-y: ;\n --tw-pinch-zoom: ;\n --tw-scroll-snap-strictness: proximity;\n --tw-ordinal: ;\n --tw-slashed-zero: ;\n --tw-numeric-figure: ;\n --tw-numeric-spacing: ;\n --tw-numeric-fraction: ;\n --tw-ring-inset: ;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-color: rgb(59 130 246 / 0.5);\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-ring-shadow: 0 0 #0000;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-colored: 0 0 #0000;\n --tw-blur: ;\n --tw-brightness: ;\n --tw-contrast: ;\n --tw-grayscale: ;\n --tw-hue-rotate: ;\n --tw-invert: ;\n --tw-saturate: ;\n --tw-sepia: ;\n --tw-drop-shadow: ;\n --tw-backdrop-blur: ;\n --tw-backdrop-brightness: ;\n --tw-backdrop-contrast: ;\n --tw-backdrop-grayscale: ;\n --tw-backdrop-hue-rotate: ;\n --tw-backdrop-invert: ;\n --tw-backdrop-opacity: ;\n --tw-backdrop-saturate: ;\n --tw-backdrop-sepia: ;\n}\n\n::backdrop {\n --tw-border-spacing-x: 0;\n --tw-border-spacing-y: 0;\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-rotate: 0;\n --tw-skew-x: 0;\n --tw-skew-y: 0;\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n --tw-pan-x: ;\n --tw-pan-y: ;\n --tw-pinch-zoom: ;\n --tw-scroll-snap-strictness: proximity;\n --tw-ordinal: ;\n --tw-slashed-zero: ;\n --tw-numeric-figure: ;\n --tw-numeric-spacing: ;\n --tw-numeric-fraction: ;\n --tw-ring-inset: ;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-color: rgb(59 130 246 / 0.5);\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-ring-shadow: 0 0 #0000;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-colored: 0 0 #0000;\n --tw-blur: ;\n --tw-brightness: ;\n --tw-contrast: ;\n --tw-grayscale: ;\n --tw-hue-rotate: ;\n --tw-invert: ;\n --tw-saturate: ;\n --tw-sepia: ;\n --tw-drop-shadow: ;\n --tw-backdrop-blur: ;\n --tw-backdrop-brightness: ;\n --tw-backdrop-contrast: ;\n --tw-backdrop-grayscale: ;\n --tw-backdrop-hue-rotate: ;\n --tw-backdrop-invert: ;\n --tw-backdrop-opacity: ;\n --tw-backdrop-saturate: ;\n --tw-backdrop-sepia: ;\n}\n.tw-alert {\n display: flex;\n width: 100%;\n flex-direction: column;\n align-items: center;\n justify-content: space-between;\n gap: 1rem;\n --tw-bg-opacity: 1;\n background-color: hsl(var(--b2, var(--b1)) / var(--tw-bg-opacity));\n padding: 1rem;\n border-radius: var(--rounded-box, 1rem);\n}\n.tw-alert > :not([hidden]) ~ :not([hidden]) {\n --tw-space-y-reverse: 0;\n margin-top: calc(0.5rem * calc(1 - var(--tw-space-y-reverse)));\n margin-bottom: calc(0.5rem * var(--tw-space-y-reverse));\n}\n@media (min-width: 768px) {\n\n .tw-alert {\n flex-direction: row;\n }\n\n .tw-alert > :not([hidden]) ~ :not([hidden]) {\n --tw-space-y-reverse: 0;\n margin-top: calc(0px * calc(1 - var(--tw-space-y-reverse)));\n margin-bottom: calc(0px * var(--tw-space-y-reverse));\n }\n\n .tw-alert {\n flex-direction: row;\n }\n\n .tw-alert > :not([hidden]) ~ :not([hidden]) {\n --tw-space-y-reverse: 0;\n margin-top: calc(0px * calc(1 - var(--tw-space-y-reverse)));\n margin-bottom: calc(0px * var(--tw-space-y-reverse));\n }\n}\n.tw-alert > :where(*) {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n}\n.tw-avatar {\n position: relative;\n display: inline-flex;\n}\n.tw-avatar > div {\n display: block;\n aspect-ratio: 1 / 1;\n overflow: hidden;\n}\n.tw-avatar img {\n height: 100%;\n width: 100%;\n -o-object-fit: cover;\n object-fit: cover;\n}\n.tw-avatar.tw-placeholder > div {\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.tw-btn {\n display: inline-flex;\n flex-shrink: 0;\n cursor: pointer;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n flex-wrap: wrap;\n align-items: center;\n justify-content: center;\n border-color: transparent;\n border-color: hsl(var(--n) / var(--tw-border-opacity));\n text-align: center;\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-backdrop-filter;\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-backdrop-filter;\n transition-duration: 200ms;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n border-radius: var(--rounded-btn, 0.5rem);\n height: 3rem;\n padding-left: 1rem;\n padding-right: 1rem;\n font-size: 0.875rem;\n line-height: 1.25rem;\n line-height: 1em;\n min-height: 3rem;\n font-weight: 600;\n text-transform: uppercase;\n text-transform: var(--btn-text-case, uppercase);\n text-decoration-line: none;\n border-width: var(--border-btn, 1px);\n animation: button-pop var(--animation-btn, 0.25s) ease-out;\n --tw-border-opacity: 1;\n --tw-bg-opacity: 1;\n background-color: hsl(var(--n) / var(--tw-bg-opacity));\n --tw-text-opacity: 1;\n color: hsl(var(--nc) / var(--tw-text-opacity));\n}\n.tw-btn-disabled,\n .tw-btn[disabled] {\n pointer-events: none;\n}\n.tw-btn-square {\n height: 3rem;\n width: 3rem;\n padding: 0px;\n}\n.tw-btn-circle {\n height: 3rem;\n width: 3rem;\n border-radius: 9999px;\n padding: 0px;\n}\n.tw-btn.tw-loading,\n .tw-btn.tw-loading:hover {\n pointer-events: none;\n}\n.tw-btn.tw-loading:before {\n margin-right: 0.5rem;\n height: 1rem;\n width: 1rem;\n border-radius: 9999px;\n border-width: 2px;\n animation: spin 2s linear infinite;\n content: \"\";\n border-top-color: transparent;\n border-left-color: transparent;\n border-bottom-color: currentColor;\n border-right-color: currentColor;\n}\n@media (prefers-reduced-motion: reduce) {\n\n .tw-btn.tw-loading:before {\n animation: spin 10s linear infinite;\n }\n}\n@keyframes spin {\n\n from {\n transform: rotate(0deg);\n }\n\n to {\n transform: rotate(360deg);\n }\n}\n.tw-btn-group > input[type=\"radio\"].tw-btn {\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n}\n.tw-btn-group > input[type=\"radio\"].tw-btn:before {\n content: attr(data-title);\n}\n.tw-card {\n position: relative;\n display: flex;\n flex-direction: column;\n border-radius: var(--rounded-box, 1rem);\n}\n.tw-card:focus {\n outline: 2px solid transparent;\n outline-offset: 2px;\n}\n.tw-card-body {\n display: flex;\n flex: 1 1 auto;\n flex-direction: column;\n padding: var(--padding-card, 2rem);\n gap: 0.5rem;\n}\n.tw-card-body :where(p) {\n flex-grow: 1;\n}\n.tw-card-actions {\n display: flex;\n flex-wrap: wrap;\n align-items: flex-start;\n gap: 0.5rem;\n}\n.tw-card figure {\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.tw-card.tw-image-full {\n display: grid;\n}\n.tw-card.tw-image-full:before {\n position: relative;\n content: \"\";\n z-index: 10;\n --tw-bg-opacity: 1;\n background-color: hsl(var(--n) / var(--tw-bg-opacity));\n opacity: 0.75;\n border-radius: var(--rounded-box, 1rem);\n}\n.tw-card.tw-image-full:before,\n .tw-card.tw-image-full > * {\n grid-column-start: 1;\n grid-row-start: 1;\n}\n.tw-card.tw-image-full > figure img {\n height: 100%;\n -o-object-fit: cover;\n object-fit: cover;\n}\n.tw-card.tw-image-full > .tw-card-body {\n position: relative;\n z-index: 20;\n --tw-text-opacity: 1;\n color: hsl(var(--nc) / var(--tw-text-opacity));\n}\n.tw-checkbox {\n flex-shrink: 0;\n --chkbg: var(--bc);\n --chkfg: var(--b1);\n height: 1.5rem;\n width: 1.5rem;\n cursor: pointer;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n border-width: 1px;\n border-color: hsl(var(--bc) / var(--tw-border-opacity));\n --tw-border-opacity: 0.2;\n border-radius: var(--rounded-btn, 0.5rem);\n}\n.tw-divider {\n display: flex;\n flex-direction: row;\n align-items: center;\n align-self: stretch;\n margin-top: 1rem;\n margin-bottom: 1rem;\n height: 1rem;\n white-space: nowrap;\n}\n.tw-divider:before,\n .tw-divider:after {\n content: \"\";\n flex-grow: 1;\n height: 0.125rem;\n width: 100%;\n}\n.tw-dropdown {\n position: relative;\n display: inline-block;\n}\n.tw-dropdown > *:focus {\n outline: 2px solid transparent;\n outline-offset: 2px;\n}\n.tw-dropdown .tw-dropdown-content {\n visibility: hidden;\n position: absolute;\n z-index: 50;\n opacity: 0;\n transform-origin: top;\n --tw-scale-x: .95;\n --tw-scale-y: .95;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-backdrop-filter;\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-backdrop-filter;\n transition-duration: 200ms;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n}\n.tw-dropdown-end .tw-dropdown-content {\n right: 0px;\n}\n.tw-dropdown-left .tw-dropdown-content {\n top: 0px;\n right: 100%;\n bottom: auto;\n transform-origin: right;\n}\n.tw-dropdown-right .tw-dropdown-content {\n left: 100%;\n top: 0px;\n bottom: auto;\n transform-origin: left;\n}\n.tw-dropdown-bottom .tw-dropdown-content {\n bottom: auto;\n top: 100%;\n transform-origin: top;\n}\n.tw-dropdown-top .tw-dropdown-content {\n bottom: 100%;\n top: auto;\n transform-origin: bottom;\n}\n.tw-dropdown-end.tw-dropdown-right .tw-dropdown-content {\n bottom: 0px;\n top: auto;\n}\n.tw-dropdown-end.tw-dropdown-left .tw-dropdown-content {\n bottom: 0px;\n top: auto;\n}\n.tw-dropdown.tw-dropdown-open .tw-dropdown-content,\n.tw-dropdown.tw-dropdown-hover:hover .tw-dropdown-content,\n.tw-dropdown:not(.tw-dropdown-hover):focus .tw-dropdown-content,\n.tw-dropdown:not(.tw-dropdown-hover):focus-within .tw-dropdown-content {\n visibility: visible;\n opacity: 1;\n}\n.tw-form-control {\n display: flex;\n flex-direction: column;\n}\n.tw-label {\n display: flex;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n align-items: center;\n justify-content: space-between;\n padding-left: 0.25rem;\n padding-right: 0.25rem;\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n}\n.tw-input {\n flex-shrink: 1;\n height: 3rem;\n padding-left: 1rem;\n padding-right: 1rem;\n font-size: 1rem;\n line-height: 2;\n line-height: 1.5rem;\n border-width: 1px;\n border-color: hsl(var(--bc) / var(--tw-border-opacity));\n --tw-border-opacity: 0;\n --tw-bg-opacity: 1;\n background-color: hsl(var(--b1) / var(--tw-bg-opacity));\n border-radius: var(--rounded-btn, 0.5rem);\n}\n.tw-input-group > .tw-input {\n isolation: isolate;\n}\n.tw-input-group > *,\n .tw-input-group > .tw-input,\n .tw-input-group > .tw-textarea,\n .tw-input-group > .tw-select {\n border-radius: 0px;\n}\n.tw-menu {\n display: flex;\n flex-direction: column;\n flex-wrap: wrap;\n}\n.tw-menu.tw-horizontal {\n display: inline-flex;\n flex-direction: row;\n}\n.tw-menu.tw-horizontal :where(li) {\n flex-direction: row;\n}\n:where(.tw-menu li) {\n position: relative;\n display: flex;\n flex-shrink: 0;\n flex-direction: column;\n flex-wrap: wrap;\n align-items: stretch;\n}\n.tw-menu :where(li:not(.tw-menu-title)) > :where(*:not(ul)) {\n display: flex;\n}\n.tw-menu :where(li:not(.tw-disabled):not(.tw-menu-title)) > :where(*:not(ul)) {\n cursor: pointer;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n align-items: center;\n outline: 2px solid transparent;\n outline-offset: 2px;\n}\n.tw-menu > :where(li > *:not(ul):focus) {\n outline: 2px solid transparent;\n outline-offset: 2px;\n}\n.tw-menu > :where(li.tw-disabled > *:not(ul):focus) {\n cursor: auto;\n}\n.tw-menu > :where(li) :where(ul) {\n display: flex;\n flex-direction: column;\n align-items: stretch;\n}\n.tw-menu > :where(li) > :where(ul) {\n position: absolute;\n display: none;\n top: initial;\n left: 100%;\n border-top-left-radius: inherit;\n border-top-right-radius: inherit;\n border-bottom-right-radius: inherit;\n border-bottom-left-radius: inherit;\n}\n.tw-menu > :where(li:hover) > :where(ul) {\n display: flex;\n}\n.tw-menu > :where(li:focus) > :where(ul) {\n display: flex;\n}\n.tw-modal {\n pointer-events: none;\n visibility: hidden;\n position: fixed;\n top: 0px;\n right: 0px;\n bottom: 0px;\n left: 0px;\n display: flex;\n justify-content: center;\n opacity: 0;\n z-index: 999;\n background-color: hsl(var(--nf, var(--n)) / var(--tw-bg-opacity));\n --tw-bg-opacity: 0.4;\n transition-duration: 200ms;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-property: transform, opacity, visibility;\n overflow-y: hidden;\n overscroll-behavior: contain;\n}\n:where(.tw-modal) {\n align-items: center;\n}\n.tw-modal-box {\n max-height: calc(100vh - 5em);\n --tw-bg-opacity: 1;\n background-color: hsl(var(--b1) / var(--tw-bg-opacity));\n padding: 1.5rem;\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-backdrop-filter;\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-backdrop-filter;\n transition-duration: 200ms;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n width: 91.666667%;\n max-width: 32rem;\n --tw-scale-x: .9;\n --tw-scale-y: .9;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n border-top-left-radius: var(--rounded-box, 1rem);\n border-top-right-radius: var(--rounded-box, 1rem);\n border-bottom-left-radius: var(--rounded-box, 1rem);\n border-bottom-right-radius: var(--rounded-box, 1rem);\n box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25);\n overflow-y: auto;\n overscroll-behavior: contain;\n}\n.tw-modal-open,\n.tw-modal:target,\n.tw-modal-toggle:checked + .tw-modal {\n pointer-events: auto;\n visibility: visible;\n opacity: 1;\n}\n.tw-modal-action {\n display: flex;\n margin-top: 1.5rem;\n justify-content: flex-end;\n}\n.tw-modal-toggle {\n position: fixed;\n height: 0px;\n width: 0px;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n opacity: 0;\n}\n.tw-navbar {\n display: flex;\n align-items: center;\n padding: var(--navbar-padding, 0.5rem);\n min-height: 4rem;\n width: 100%;\n}\n:where(.tw-navbar > *) {\n display: inline-flex;\n align-items: center;\n}\n.tw-textarea {\n flex-shrink: 1;\n min-height: 3rem;\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n padding-left: 1rem;\n padding-right: 1rem;\n font-size: 0.875rem;\n line-height: 1.25rem;\n line-height: 2;\n border-width: 1px;\n border-color: hsl(var(--bc) / var(--tw-border-opacity));\n --tw-border-opacity: 0;\n --tw-bg-opacity: 1;\n background-color: hsl(var(--b1) / var(--tw-bg-opacity));\n border-radius: var(--rounded-btn, 0.5rem);\n}\n.tw-tooltip {\n position: relative;\n display: inline-block;\n --tooltip-offset: calc(100% + 1px + var(--tooltip-tail, 0px));\n text-align: center;\n --tooltip-tail: 3px;\n --tooltip-color: hsl(var(--n));\n --tooltip-text-color: hsl(var(--nc));\n --tooltip-tail-offset: calc(100% + 1px - var(--tooltip-tail));\n}\n.tw-tooltip:before {\n position: absolute;\n pointer-events: none;\n z-index: 1;\n content: var(--tw-content);\n --tw-content: attr(data-tip);\n max-width: 20rem;\n border-radius: 0.25rem;\n padding-left: 0.5rem;\n padding-right: 0.5rem;\n padding-top: 0.25rem;\n padding-bottom: 0.25rem;\n font-size: 0.875rem;\n line-height: 1.25rem;\n background-color: var(--tooltip-color);\n color: var(--tooltip-text-color);\n width: -moz-max-content;\n width: max-content;\n}\n.tw-tooltip:before, .tw-tooltip-top:before {\n transform: translateX(-50%);\n top: auto;\n left: 50%;\n right: auto;\n bottom: var(--tooltip-offset);\n}\n.tw-tooltip-left:before {\n transform: translateY(-50%);\n top: 50%;\n left: auto;\n right: var(--tooltip-offset);\n bottom: auto;\n}\n.tw-avatar-group :where(.tw-avatar) {\n overflow: hidden;\n border-radius: 9999px;\n border-width: 4px;\n --tw-border-opacity: 1;\n border-color: hsl(var(--b1) / var(--tw-border-opacity));\n}\n.tw-btn-outline.tw-btn-primary .tw-badge {\n --tw-border-opacity: 1;\n border-color: hsl(var(--p) / var(--tw-border-opacity));\n --tw-bg-opacity: 1;\n background-color: hsl(var(--p) / var(--tw-bg-opacity));\n --tw-text-opacity: 1;\n color: hsl(var(--pc) / var(--tw-text-opacity));\n}\n.tw-btn-outline.tw-btn-primary .tw-badge-outline {\n --tw-border-opacity: 1;\n border-color: hsl(var(--p) / var(--tw-border-opacity));\n background-color: transparent;\n --tw-text-opacity: 1;\n color: hsl(var(--p) / var(--tw-text-opacity));\n}\n.tw-btn-outline.tw-btn-primary:hover .tw-badge {\n --tw-border-opacity: 1;\n border-color: hsl(var(--pc) / var(--tw-border-opacity));\n --tw-bg-opacity: 1;\n background-color: hsl(var(--pc) / var(--tw-bg-opacity));\n --tw-text-opacity: 1;\n color: hsl(var(--p) / var(--tw-text-opacity));\n}\n.tw-btn-outline.tw-btn-primary:hover .tw-badge.tw-outline {\n --tw-border-opacity: 1;\n border-color: hsl(var(--pc) / var(--tw-border-opacity));\n --tw-bg-opacity: 1;\n background-color: hsl(var(--pf, var(--p)) / var(--tw-bg-opacity));\n --tw-text-opacity: 1;\n color: hsl(var(--pc) / var(--tw-text-opacity));\n}\n.tw-btm-nav>* .tw-label {\n font-size: 1rem;\n line-height: 1.5rem;\n}\n.tw-btn:active:hover,\n .tw-btn:active:focus {\n animation: none;\n transform: scale(var(--btn-focus-scale, 0.95));\n}\n.tw-btn:hover,\n .tw-btn-active {\n --tw-border-opacity: 1;\n border-color: hsl(var(--nf, var(--n)) / var(--tw-border-opacity));\n --tw-bg-opacity: 1;\n background-color: hsl(var(--nf, var(--n)) / var(--tw-bg-opacity));\n}\n.tw-btn:focus-visible {\n outline: 2px solid hsl(var(--nf));\n outline-offset: 2px;\n}\n.tw-btn-primary {\n --tw-border-opacity: 1;\n border-color: hsl(var(--p) / var(--tw-border-opacity));\n --tw-bg-opacity: 1;\n background-color: hsl(var(--p) / var(--tw-bg-opacity));\n --tw-text-opacity: 1;\n color: hsl(var(--pc) / var(--tw-text-opacity));\n}\n.tw-btn-primary:hover,\n .tw-btn-primary.tw-btn-active {\n --tw-border-opacity: 1;\n border-color: hsl(var(--pf, var(--p)) / var(--tw-border-opacity));\n --tw-bg-opacity: 1;\n background-color: hsl(var(--pf, var(--p)) / var(--tw-bg-opacity));\n}\n.tw-btn-primary:focus-visible {\n outline: 2px solid hsl(var(--p));\n}\n.tw-btn.tw-glass:hover,\n .tw-btn.tw-glass.tw-btn-active {\n --glass-opacity: 25%;\n --glass-border-opacity: 15%;\n}\n.tw-btn.tw-glass:focus-visible {\n outline: 2px solid currentColor;\n}\n.tw-btn-ghost {\n border-width: 1px;\n border-color: transparent;\n background-color: transparent;\n color: currentColor;\n}\n.tw-btn-ghost:hover,\n .tw-btn-ghost.tw-btn-active {\n --tw-border-opacity: 0;\n background-color: hsl(var(--bc) / var(--tw-bg-opacity));\n --tw-bg-opacity: 0.2;\n}\n.tw-btn-ghost:focus-visible {\n outline: 2px solid currentColor;\n}\n.tw-btn-outline.tw-btn-primary {\n --tw-text-opacity: 1;\n color: hsl(var(--p) / var(--tw-text-opacity));\n}\n.tw-btn-outline.tw-btn-primary:hover,\n .tw-btn-outline.tw-btn-primary.tw-btn-active {\n --tw-border-opacity: 1;\n border-color: hsl(var(--pf, var(--p)) / var(--tw-border-opacity));\n --tw-bg-opacity: 1;\n background-color: hsl(var(--pf, var(--p)) / var(--tw-bg-opacity));\n --tw-text-opacity: 1;\n color: hsl(var(--pc) / var(--tw-text-opacity));\n}\n.tw-btn-disabled,\n .tw-btn-disabled:hover,\n .tw-btn[disabled],\n .tw-btn[disabled]:hover {\n --tw-border-opacity: 0;\n background-color: hsl(var(--n) / var(--tw-bg-opacity));\n --tw-bg-opacity: 0.2;\n color: hsl(var(--bc) / var(--tw-text-opacity));\n --tw-text-opacity: 0.2;\n}\n.tw-btn.tw-loading.tw-btn-square:before,\n .tw-btn.tw-loading.tw-btn-circle:before {\n margin-right: 0px;\n}\n.tw-btn.tw-loading.tw-btn-xl:before,\n .tw-btn.tw-loading.tw-btn-lg:before {\n height: 1.25rem;\n width: 1.25rem;\n}\n.tw-btn.tw-loading.tw-btn-sm:before,\n .tw-btn.tw-loading.tw-btn-xs:before {\n height: 0.75rem;\n width: 0.75rem;\n}\n.tw-btn-group > input[type=\"radio\"]:checked.tw-btn,\n .tw-btn-group > .tw-btn-active {\n --tw-border-opacity: 1;\n border-color: hsl(var(--p) / var(--tw-border-opacity));\n --tw-bg-opacity: 1;\n background-color: hsl(var(--p) / var(--tw-bg-opacity));\n --tw-text-opacity: 1;\n color: hsl(var(--pc) / var(--tw-text-opacity));\n}\n.tw-btn-group > input[type=\"radio\"]:checked.tw-btn:focus-visible, .tw-btn-group > .tw-btn-active:focus-visible {\n outline: 2px solid hsl(var(--p));\n}\n@keyframes button-pop {\n\n 0% {\n transform: scale(var(--btn-focus-scale, 0.95));\n }\n\n 40% {\n transform: scale(1.02);\n }\n\n 100% {\n transform: scale(1);\n }\n}\n.tw-card :where(figure:first-child) {\n overflow: hidden;\n border-start-start-radius: inherit;\n border-start-end-radius: inherit;\n border-end-start-radius: unset;\n border-end-end-radius: unset;\n}\n.tw-card :where(figure:last-child) {\n overflow: hidden;\n border-start-start-radius: unset;\n border-start-end-radius: unset;\n border-end-start-radius: inherit;\n border-end-end-radius: inherit;\n}\n.tw-card:focus-visible {\n outline: 2px solid currentColor;\n outline-offset: 2px;\n}\n.tw-card.tw-bordered {\n border-width: 1px;\n --tw-border-opacity: 1;\n border-color: hsl(var(--b2, var(--b1)) / var(--tw-border-opacity));\n}\n.tw-card.tw-compact .tw-card-body {\n padding: 1rem;\n font-size: 0.875rem;\n line-height: 1.25rem;\n}\n.tw-card-title {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n font-size: 1.25rem;\n line-height: 1.75rem;\n font-weight: 600;\n}\n.tw-card.tw-image-full :where(figure) {\n overflow: hidden;\n border-radius: inherit;\n}\n.tw-checkbox:focus-visible {\n outline: 2px solid hsl(var(--bc));\n outline-offset: 2px;\n}\n.tw-checkbox:checked,\n .tw-checkbox[checked=\"true\"],\n .tw-checkbox[aria-checked=\"true\"] {\n --tw-bg-opacity: 1;\n background-color: hsl(var(--bc) / var(--tw-bg-opacity));\n background-repeat: no-repeat;\n animation: checkmark var(--animation-input, 0.2s) ease-in-out;\n background-image: linear-gradient(-45deg, transparent 65%, hsl(var(--chkbg)) 65.99%), linear-gradient(45deg, transparent 75%, hsl(var(--chkbg)) 75.99%), linear-gradient(-45deg, hsl(var(--chkbg)) 40%, transparent 40.99%), linear-gradient(45deg, hsl(var(--chkbg)) 30%, hsl(var(--chkfg)) 30.99%, hsl(var(--chkfg)) 40%, transparent 40.99%), linear-gradient(-45deg, hsl(var(--chkfg)) 50%, hsl(var(--chkbg)) 50.99%);\n}\n.tw-checkbox:indeterminate {\n --tw-bg-opacity: 1;\n background-color: hsl(var(--bc) / var(--tw-bg-opacity));\n background-repeat: no-repeat;\n animation: checkmark var(--animation-input, 0.2s) ease-in-out;\n background-image: linear-gradient(90deg, transparent 80%, hsl(var(--chkbg)) 80%), linear-gradient(-90deg, transparent 80%, hsl(var(--chkbg)) 80%), linear-gradient(0deg, hsl(var(--chkbg)) 43%, hsl(var(--chkfg)) 43%, hsl(var(--chkfg)) 57%, hsl(var(--chkbg)) 57%);\n}\n.tw-checkbox-success {\n --chkbg: var(--su);\n --chkfg: var(--suc);\n --tw-border-opacity: 1;\n border-color: hsl(var(--su) / var(--tw-border-opacity));\n}\n.tw-checkbox-success:hover {\n --tw-border-opacity: 1;\n border-color: hsl(var(--su) / var(--tw-border-opacity));\n}\n.tw-checkbox-success:focus-visible {\n outline: 2px solid hsl(var(--su));\n}\n.tw-checkbox-success:checked,\n .tw-checkbox-success[checked=\"true\"],\n .tw-checkbox-success[aria-checked=true] {\n --tw-border-opacity: 1;\n border-color: hsl(var(--su) / var(--tw-border-opacity));\n --tw-bg-opacity: 1;\n background-color: hsl(var(--su) / var(--tw-bg-opacity));\n --tw-text-opacity: 1;\n color: hsl(var(--suc, var(--nc)) / var(--tw-text-opacity));\n}\n.tw-checkbox:disabled {\n cursor: not-allowed;\n border-color: transparent;\n --tw-bg-opacity: 1;\n background-color: hsl(var(--bc) / var(--tw-bg-opacity));\n opacity: 0.2;\n}\n@keyframes checkmark {\n\n 0% {\n background-position-y: 5px;\n }\n\n 50% {\n background-position-y: -2px;\n }\n\n 100% {\n background-position-y: 0;\n }\n}\n[dir=\"rtl\"] .tw-checkbox:checked,\n [dir=\"rtl\"] .tw-checkbox[checked=\"true\"],\n [dir=\"rtl\"] .tw-checkbox[aria-checked=\"true\"] {\n background-image: linear-gradient(45deg, transparent 65%, hsl(var(--chkbg)) 65.99%), linear-gradient(-45deg, transparent 75%, hsl(var(--chkbg)) 75.99%), linear-gradient(45deg, hsl(var(--chkbg)) 40%, transparent 40.99%), linear-gradient(-45deg, hsl(var(--chkbg)) 30%, hsl(var(--chkfg)) 30.99%, hsl(var(--chkfg)) 40%, transparent 40.99%), linear-gradient(45deg, hsl(var(--chkfg)) 50%, hsl(var(--chkbg)) 50.99%);\n}\n.tw-divider:before {\n background-color: hsl(var(--bc) / var(--tw-bg-opacity));\n --tw-bg-opacity: 0.1;\n}\n.tw-divider:after {\n background-color: hsl(var(--bc) / var(--tw-bg-opacity));\n --tw-bg-opacity: 0.1;\n}\n.tw-divider:not(:empty) {\n gap: 1rem;\n}\n.tw-drawer-toggle:focus-visible ~ .tw-drawer-content .tw-drawer-button.tw-btn-primary {\n outline: 2px solid hsl(var(--p));\n}\n.tw-drawer-toggle:focus-visible ~ .tw-drawer-content .tw-drawer-button.tw-btn-ghost {\n outline: 2px solid currentColor;\n}\n.tw-dropdown.tw-dropdown-open .tw-dropdown-content,\n.tw-dropdown.tw-dropdown-hover:hover .tw-dropdown-content,\n.tw-dropdown:focus .tw-dropdown-content,\n.tw-dropdown:focus-within .tw-dropdown-content {\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.tw-label-text {\n font-size: 0.875rem;\n line-height: 1.25rem;\n --tw-text-opacity: 1;\n color: hsl(var(--bc) / var(--tw-text-opacity));\n}\n.tw-label a:hover {\n --tw-text-opacity: 1;\n color: hsl(var(--bc) / var(--tw-text-opacity));\n}\n.tw-input[list]::-webkit-calendar-picker-indicator {\n line-height: 1em;\n}\n.tw-input-bordered {\n --tw-border-opacity: 0.2;\n}\n.tw-input:focus {\n outline: 2px solid hsla(var(--bc) / 0.2);\n outline-offset: 2px;\n}\n.tw-input-disabled,\n .tw-input[disabled] {\n cursor: not-allowed;\n --tw-border-opacity: 1;\n border-color: hsl(var(--b2, var(--b1)) / var(--tw-border-opacity));\n --tw-bg-opacity: 1;\n background-color: hsl(var(--b2, var(--b1)) / var(--tw-bg-opacity));\n --tw-text-opacity: 0.2;\n}\n.tw-input-disabled::-moz-placeholder, .tw-input[disabled]::-moz-placeholder {\n color: hsl(var(--bc) / var(--tw-placeholder-opacity));\n --tw-placeholder-opacity: 0.2;\n}\n.tw-input-disabled::placeholder,\n .tw-input[disabled]::placeholder {\n color: hsl(var(--bc) / var(--tw-placeholder-opacity));\n --tw-placeholder-opacity: 0.2;\n}\n.tw-menu.tw-horizontal > li.tw-bordered > a,\n .tw-menu.tw-horizontal > li.tw-bordered > button,\n .tw-menu.tw-horizontal > li.tw-bordered > span {\n border-left-width: 0px;\n border-bottom-width: 4px;\n --tw-border-opacity: 1;\n border-color: hsl(var(--p) / var(--tw-border-opacity));\n}\n.tw-menu[class*=\" px-\"]:not(.tw-menu[class*=\" px-0\"]) li > *,\n .tw-menu[class^=\"px-\"]:not(.tw-menu[class^=\"px-0\"]) li > *,\n .tw-menu[class*=\" p-\"]:not(.tw-menu[class*=\" p-0\"]) li > *,\n .tw-menu[class^=\"p-\"]:not(.tw-menu[class^=\"p-0\"]) li > * {\n border-radius: var(--rounded-btn, 0.5rem);\n}\n.tw-menu :where(li.tw-bordered > *) {\n border-left-width: 4px;\n --tw-border-opacity: 1;\n border-color: hsl(var(--p) / var(--tw-border-opacity));\n}\n.tw-menu :where(li) > :where(*:not(ul)) {\n gap: 0.75rem;\n padding-left: 1rem;\n padding-right: 1rem;\n padding-top: 0.75rem;\n padding-bottom: 0.75rem;\n color: currentColor;\n}\n.tw-menu :where(li:not(.tw-menu-title):not(:empty)) > :where(*:not(ul):focus),\n .tw-menu :where(li:not(.tw-menu-title):not(:empty)) > :where(*:not(ul):hover) {\n background-color: hsl(var(--bc) / var(--tw-bg-opacity));\n --tw-bg-opacity: 0.1;\n}\n.tw-menu :where(li:not(.tw-menu-title):not(:empty)) > :where(:not(ul).tw-active),\n .tw-menu :where(li:not(.tw-menu-title):not(:empty)) > :where(*:not(ul):active) {\n --tw-bg-opacity: 1;\n background-color: hsl(var(--p) / var(--tw-bg-opacity));\n --tw-text-opacity: 1;\n color: hsl(var(--pc) / var(--tw-text-opacity));\n}\n.tw-menu :where(li:empty) {\n margin-left: 1rem;\n margin-right: 1rem;\n margin-top: 0.5rem;\n margin-bottom: 0.5rem;\n height: 1px;\n background-color: hsl(var(--bc) / var(--tw-bg-opacity));\n --tw-bg-opacity: 0.1;\n}\n.tw-menu li.tw-disabled > * {\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n color: hsl(var(--bc) / var(--tw-text-opacity));\n --tw-text-opacity: 0.2;\n}\n.tw-menu li.tw-disabled > *:hover {\n background-color: transparent;\n}\n.tw-menu li.tw-hover-bordered a {\n border-left-width: 4px;\n border-color: transparent;\n}\n.tw-menu li.tw-hover-bordered a:hover {\n --tw-border-opacity: 1;\n border-color: hsl(var(--p) / var(--tw-border-opacity));\n}\n.tw-menu.tw-compact li > a,\n .tw-menu.tw-compact li > span {\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n font-size: 0.875rem;\n line-height: 1.25rem;\n}\n.tw-menu .tw-menu-title {\n font-size: 0.75rem;\n line-height: 1rem;\n font-weight: 700;\n opacity: 0.4;\n}\n.tw-menu .tw-menu-title > * {\n padding-top: 0.25rem;\n padding-bottom: 0.25rem;\n}\n.tw-menu :where(li:not(.tw-disabled)) > :where(*:not(ul)) {\n outline: 2px solid transparent;\n outline-offset: 2px;\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-backdrop-filter;\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-backdrop-filter;\n transition-duration: 200ms;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n}\n.tw-menu > :where(li:first-child) {\n border-top-left-radius: inherit;\n border-top-right-radius: inherit;\n border-bottom-right-radius: unset;\n border-bottom-left-radius: unset;\n}\n.tw-menu > :where(li:first-child) > :where(:not(ul)) {\n border-top-left-radius: inherit;\n border-top-right-radius: inherit;\n border-bottom-right-radius: unset;\n border-bottom-left-radius: unset;\n}\n.tw-menu > :where(li:last-child) {\n border-top-left-radius: unset;\n border-top-right-radius: unset;\n border-bottom-right-radius: inherit;\n border-bottom-left-radius: inherit;\n}\n.tw-menu > :where(li:last-child) > :where(:not(ul)) {\n border-top-left-radius: unset;\n border-top-right-radius: unset;\n border-bottom-right-radius: inherit;\n border-bottom-left-radius: inherit;\n}\n.tw-menu > :where(li) > :where(ul) :where(li) {\n width: 100%;\n white-space: nowrap;\n}\n.tw-menu > :where(li) > :where(ul) :where(li) :where(ul) {\n padding-left: 1rem;\n}\n.tw-menu > :where(li) > :where(ul) :where(li) > :where(:not(ul)) {\n width: 100%;\n white-space: nowrap;\n}\n.tw-menu > :where(li) > :where(ul) > :where(li:first-child) {\n border-top-left-radius: inherit;\n border-top-right-radius: inherit;\n border-bottom-right-radius: unset;\n border-bottom-left-radius: unset;\n}\n.tw-menu > :where(li) > :where(ul) > :where(li:first-child) > :where(:not(ul)) {\n border-top-left-radius: inherit;\n border-top-right-radius: inherit;\n border-bottom-right-radius: unset;\n border-bottom-left-radius: unset;\n}\n.tw-menu > :where(li) > :where(ul) > :where(li:last-child) {\n border-top-left-radius: unset;\n border-top-right-radius: unset;\n border-bottom-right-radius: inherit;\n border-bottom-left-radius: inherit;\n}\n.tw-menu > :where(li) > :where(ul) > :where(li:last-child) > :where(:not(ul)) {\n border-top-left-radius: unset;\n border-top-right-radius: unset;\n border-bottom-right-radius: inherit;\n border-bottom-left-radius: inherit;\n}\n.tw-modal-open .tw-modal-box,\n.tw-modal-toggle:checked + .tw-modal .tw-modal-box,\n.tw-modal:target .tw-modal-box {\n --tw-translate-y: 0px;\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.tw-modal-action > :not([hidden]) ~ :not([hidden]) {\n --tw-space-x-reverse: 0;\n margin-right: calc(0.5rem * var(--tw-space-x-reverse));\n margin-left: calc(0.5rem * calc(1 - var(--tw-space-x-reverse)));\n}\n@keyframes progress-loading {\n\n 50% {\n left: 107%;\n }\n}\n@keyframes radiomark {\n\n 0% {\n box-shadow: 0 0 0 12px hsl(var(--b1)) inset, 0 0 0 12px hsl(var(--b1)) inset;\n }\n\n 50% {\n box-shadow: 0 0 0 3px hsl(var(--b1)) inset, 0 0 0 3px hsl(var(--b1)) inset;\n }\n\n 100% {\n box-shadow: 0 0 0 4px hsl(var(--b1)) inset, 0 0 0 4px hsl(var(--b1)) inset;\n }\n}\n@keyframes rating-pop {\n\n 0% {\n transform: translateY(-0.125em);\n }\n\n 40% {\n transform: translateY(-0.125em);\n }\n\n 100% {\n transform: translateY(0);\n }\n}\n.tw-textarea-bordered {\n --tw-border-opacity: 0.2;\n}\n.tw-textarea:focus {\n outline: 2px solid hsla(var(--bc) / 0.2);\n outline-offset: 2px;\n}\n.tw-textarea-disabled,\n .tw-textarea[disabled] {\n cursor: not-allowed;\n --tw-border-opacity: 1;\n border-color: hsl(var(--b2, var(--b1)) / var(--tw-border-opacity));\n --tw-bg-opacity: 1;\n background-color: hsl(var(--b2, var(--b1)) / var(--tw-bg-opacity));\n --tw-text-opacity: 0.2;\n}\n.tw-textarea-disabled::-moz-placeholder, .tw-textarea[disabled]::-moz-placeholder {\n color: hsl(var(--bc) / var(--tw-placeholder-opacity));\n --tw-placeholder-opacity: 0.2;\n}\n.tw-textarea-disabled::placeholder,\n .tw-textarea[disabled]::placeholder {\n color: hsl(var(--bc) / var(--tw-placeholder-opacity));\n --tw-placeholder-opacity: 0.2;\n}\n@keyframes toast-pop {\n\n 0% {\n transform: scale(0.9);\n opacity: 0;\n }\n\n 100% {\n transform: scale(1);\n opacity: 1;\n }\n}\n.tw-tooltip:before,\n.tw-tooltip:after {\n opacity: 0;\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-backdrop-filter;\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-backdrop-filter;\n transition-delay: 100ms;\n transition-duration: 200ms;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n}\n.tw-tooltip:after {\n position: absolute;\n content: \"\";\n border-style: solid;\n border-width: var(--tooltip-tail, 0);\n width: 0;\n height: 0;\n display: block;\n}\n.tw-tooltip.tw-tooltip-open:before,\n.tw-tooltip.tw-tooltip-open:after,\n.tw-tooltip:hover:before,\n.tw-tooltip:hover:after {\n opacity: 1;\n transition-delay: 75ms;\n}\n.tw-tooltip:not([data-tip]):hover:before,\n.tw-tooltip:not([data-tip]):hover:after {\n visibility: hidden;\n opacity: 0;\n}\n.tw-tooltip:after, .tw-tooltip-top:after {\n transform: translateX(-50%);\n border-color: var(--tooltip-color) transparent transparent transparent;\n top: auto;\n left: 50%;\n right: auto;\n bottom: var(--tooltip-tail-offset);\n}\n.tw-tooltip-left:after {\n transform: translateY(-50%);\n border-color: transparent transparent transparent var(--tooltip-color);\n top: 50%;\n left: auto;\n right: calc(var(--tooltip-tail-offset) + 1px);\n bottom: auto;\n}\n.tw-rounded-box {\n border-radius: var(--rounded-box, 1rem);\n}\n.tw-btn-sm {\n height: 2rem;\n padding-left: 0.75rem;\n padding-right: 0.75rem;\n min-height: 2rem;\n font-size: 0.875rem;\n}\n.tw-btn-block {\n width: 100%;\n}\n.tw-btn-square:where(.tw-btn-xs) {\n height: 1.5rem;\n width: 1.5rem;\n padding: 0px;\n}\n.tw-btn-square:where(.tw-btn-sm) {\n height: 2rem;\n width: 2rem;\n padding: 0px;\n}\n.tw-btn-square:where(.tw-btn-md) {\n height: 3rem;\n width: 3rem;\n padding: 0px;\n}\n.tw-btn-square:where(.tw-btn-lg) {\n height: 4rem;\n width: 4rem;\n padding: 0px;\n}\n.tw-btn-circle:where(.tw-btn-xs) {\n height: 1.5rem;\n width: 1.5rem;\n border-radius: 9999px;\n padding: 0px;\n}\n.tw-btn-circle:where(.tw-btn-sm) {\n height: 2rem;\n width: 2rem;\n border-radius: 9999px;\n padding: 0px;\n}\n.tw-btn-circle:where(.tw-btn-md) {\n height: 3rem;\n width: 3rem;\n border-radius: 9999px;\n padding: 0px;\n}\n.tw-btn-circle:where(.tw-btn-lg) {\n height: 4rem;\n width: 4rem;\n border-radius: 9999px;\n padding: 0px;\n}\n.tw-checkbox-xs {\n height: 1rem;\n width: 1rem;\n}\n.tw-avatar.tw-online:before {\n content: \"\";\n position: absolute;\n z-index: 10;\n display: block;\n border-radius: 9999px;\n --tw-bg-opacity: 1;\n background-color: hsl(var(--su) / var(--tw-bg-opacity));\n width: 15%;\n height: 15%;\n top: 7%;\n right: 7%;\n box-shadow: 0 0 0 2px hsl(var(--b1));\n}\n.tw-avatar.tw-offline:before {\n content: \"\";\n position: absolute;\n z-index: 10;\n display: block;\n border-radius: 9999px;\n --tw-bg-opacity: 1;\n background-color: hsl(var(--b3, var(--b2)) / var(--tw-bg-opacity));\n width: 15%;\n height: 15%;\n top: 7%;\n right: 7%;\n box-shadow: 0 0 0 2px hsl(var(--b1));\n}\n.tw-btn-group .tw-btn:not(:first-child):not(:last-child) {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n}\n.tw-btn-group .tw-btn:first-child:not(:last-child) {\n margin-top: -0px;\n margin-left: -1px;\n border-top-left-radius: var(--rounded-btn, 0.5rem);\n border-top-right-radius: 0;\n border-bottom-left-radius: var(--rounded-btn, 0.5rem);\n border-bottom-right-radius: 0;\n}\n.tw-btn-group .tw-btn:last-child:not(:first-child) {\n border-top-left-radius: 0;\n border-top-right-radius: var(--rounded-btn, 0.5rem);\n border-bottom-left-radius: 0;\n border-bottom-right-radius: var(--rounded-btn, 0.5rem);\n}\n.tw-btn-group-horizontal .tw-btn:not(:first-child):not(:last-child) {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n}\n.tw-btn-group-horizontal .tw-btn:first-child:not(:last-child) {\n margin-top: -0px;\n margin-left: -1px;\n border-top-left-radius: var(--rounded-btn, 0.5rem);\n border-top-right-radius: 0;\n border-bottom-left-radius: var(--rounded-btn, 0.5rem);\n border-bottom-right-radius: 0;\n}\n.tw-btn-group-horizontal .tw-btn:last-child:not(:first-child) {\n border-top-left-radius: 0;\n border-top-right-radius: var(--rounded-btn, 0.5rem);\n border-bottom-left-radius: 0;\n border-bottom-right-radius: var(--rounded-btn, 0.5rem);\n}\n.tw-btn-group-vertical .tw-btn:first-child:not(:last-child) {\n margin-top: -1px;\n margin-left: -0px;\n border-top-left-radius: var(--rounded-btn, 0.5rem);\n border-top-right-radius: var(--rounded-btn, 0.5rem);\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n}\n.tw-btn-group-vertical .tw-btn:last-child:not(:first-child) {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n border-bottom-left-radius: var(--rounded-btn, 0.5rem);\n border-bottom-right-radius: var(--rounded-btn, 0.5rem);\n}\n.tw-card-compact .tw-card-body {\n padding: 1rem;\n font-size: 0.875rem;\n line-height: 1.25rem;\n}\n.tw-card-compact .tw-card-title {\n margin-bottom: 0.25rem;\n}\n.tw-card-normal .tw-card-body {\n padding: var(--padding-card, 2rem);\n font-size: 1rem;\n line-height: 1.5rem;\n}\n.tw-card-normal .tw-card-title {\n margin-bottom: 0.75rem;\n}\n.tw-menu-compact :where(li > *) {\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n font-size: 0.875rem;\n line-height: 1.25rem;\n}\n.tw-modal-bottom :where(.tw-modal-box) {\n width: 100%;\n max-width: none;\n --tw-translate-y: 2.5rem;\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n border-bottom-right-radius: 0px;\n border-bottom-left-radius: 0px;\n}\n.tw-modal-middle :where(.tw-modal-box) {\n width: 91.666667%;\n max-width: 32rem;\n --tw-translate-y: 0px;\n --tw-scale-x: .9;\n --tw-scale-y: .9;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n border-bottom-left-radius: var(--rounded-box, 1rem);\n border-bottom-right-radius: var(--rounded-box, 1rem);\n}\n.tw-fixed {\n position: fixed;\n}\n.tw-absolute {\n position: absolute;\n}\n.tw-relative {\n position: relative;\n}\n.tw-inset-y-0 {\n top: 0px;\n bottom: 0px;\n}\n.tw-bottom-4 {\n bottom: 1rem;\n}\n.tw-bottom-5 {\n bottom: 1.25rem;\n}\n.tw-left-0 {\n left: 0px;\n}\n.tw-right-2 {\n right: 0.5rem;\n}\n.tw-right-4 {\n right: 1rem;\n}\n.tw-right-5 {\n right: 1.25rem;\n}\n.tw-top-0 {\n top: 0px;\n}\n.tw-top-2 {\n top: 0.5rem;\n}\n.tw-top-20 {\n top: 5rem;\n}\n.\\!tw-z-\\[1000\\] {\n z-index: 1000 !important;\n}\n.tw-z-1000 {\n z-index: 1000;\n}\n.tw-z-500 {\n z-index: 500;\n}\n.tw-z-\\[1035\\] {\n z-index: 1035;\n}\n.tw-col-span-1 {\n grid-column: span 1 / span 1;\n}\n.tw-col-span-5 {\n grid-column: span 5 / span 5;\n}\n.tw-float-right {\n float: right;\n}\n.tw-m-0 {\n margin: 0px;\n}\n.tw-m-1 {\n margin: 0.25rem;\n}\n.tw-m-auto {\n margin: auto;\n}\n.tw-mx-2 {\n margin-left: 0.5rem;\n margin-right: 0.5rem;\n}\n.tw-mb-0 {\n margin-bottom: 0px;\n}\n.tw-mb-2 {\n margin-bottom: 0.5rem;\n}\n.tw-mb-4 {\n margin-bottom: 1rem;\n}\n.tw-mb-8 {\n margin-bottom: 2rem;\n}\n.tw-ml-2 {\n margin-left: 0.5rem;\n}\n.tw-mr-2 {\n margin-right: 0.5rem;\n}\n.tw-mt-16 {\n margin-top: 4rem;\n}\n.tw-mt-2 {\n margin-top: 0.5rem;\n}\n.tw-mt-3 {\n margin-top: 0.75rem;\n}\n.tw-mt-4 {\n margin-top: 1rem;\n}\n.tw-mt-5 {\n margin-top: 1.25rem;\n}\n.tw-mt-6 {\n margin-top: 1.5rem;\n}\n.tw-mt-8 {\n margin-top: 2rem;\n}\n.tw-inline-block {\n display: inline-block;\n}\n.tw-flex {\n display: flex;\n}\n.tw-grid {\n display: grid;\n}\n.tw-hidden {\n display: none;\n}\n.tw-h-10 {\n height: 2.5rem;\n}\n.tw-h-14 {\n height: 3.5rem;\n}\n.tw-h-40 {\n height: 10rem;\n}\n.tw-h-5 {\n height: 1.25rem;\n}\n.tw-h-6 {\n height: 1.5rem;\n}\n.tw-h-fit {\n height: -moz-fit-content;\n height: fit-content;\n}\n.tw-h-full {\n height: 100%;\n}\n.tw-max-h-72 {\n max-height: 18rem;\n}\n.tw-min-h-64 {\n min-height: 240px;\n}\n.tw-w-1 {\n width: 0.25rem;\n}\n.tw-w-10 {\n width: 2.5rem;\n}\n.tw-w-14 {\n width: 3.5rem;\n}\n.tw-w-48 {\n width: 12rem;\n}\n.tw-w-5 {\n width: 1.25rem;\n}\n.tw-w-52 {\n width: 13rem;\n}\n.tw-w-6 {\n width: 1.5rem;\n}\n.tw-w-72 {\n width: 18rem;\n}\n.tw-w-\\[56px\\] {\n width: 56px;\n}\n.tw-w-full {\n width: 100%;\n}\n.tw-min-w-80 {\n min-width: 320px;\n}\n.tw-max-w-72 {\n max-width: 288px;\n}\n.tw-max-w-xs {\n max-width: 20rem;\n}\n.tw-flex-1 {\n flex: 1 1 0%;\n}\n.tw-flex-none {\n flex: none;\n}\n.tw-basis-1\\/5 {\n flex-basis: 20%;\n}\n.tw-basis-2\\/5 {\n flex-basis: 40%;\n}\n.tw-translate-x-0 {\n --tw-translate-x: 0px;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.tw-rotate-180 {\n --tw-rotate: 180deg;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.tw-cursor-pointer {\n cursor: pointer;\n}\n.tw-list-none {\n list-style-type: none;\n}\n.tw-grid-flow-col {\n grid-auto-flow: column;\n}\n.tw-grid-cols-1 {\n grid-template-columns: repeat(1, minmax(0, 1fr));\n}\n.tw-grid-cols-6 {\n grid-template-columns: repeat(6, minmax(0, 1fr));\n}\n.tw-flex-row {\n flex-direction: row;\n}\n.tw-flex-col {\n flex-direction: column;\n}\n.tw-place-content-center {\n place-content: center;\n}\n.tw-place-items-end {\n place-items: end;\n}\n.tw-justify-normal {\n justify-content: normal;\n}\n.tw-justify-end {\n justify-content: flex-end;\n}\n.tw-justify-center {\n justify-content: center;\n}\n.tw-gap-6 {\n gap: 1.5rem;\n}\n.tw-place-self-center {\n place-self: center;\n}\n.tw-overflow-hidden {\n overflow: hidden;\n}\n.tw-overflow-y-auto {\n overflow-y: auto;\n}\n.tw-overflow-x-hidden {\n overflow-x: hidden;\n}\n.tw-truncate {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.tw-rounded-full {\n border-radius: 9999px;\n}\n.tw-rounded-br-md {\n border-bottom-right-radius: 0.375rem;\n}\n.tw-rounded-tr-md {\n border-top-right-radius: 0.375rem;\n}\n.tw-border-0 {\n border-width: 0px;\n}\n.tw-border-none {\n border-style: none;\n}\n.tw-bg-base-100 {\n --tw-bg-opacity: 1;\n background-color: hsl(var(--b1) / var(--tw-bg-opacity));\n}\n.tw-bg-base-200 {\n --tw-bg-opacity: 1;\n background-color: hsl(var(--b2, var(--b1)) / var(--tw-bg-opacity));\n}\n.tw-bg-primary {\n --tw-bg-opacity: 1;\n background-color: hsl(var(--p) / var(--tw-bg-opacity));\n}\n.tw-bg-white {\n --tw-bg-opacity: 1;\n background-color: rgb(255 255 255 / var(--tw-bg-opacity));\n}\n.tw-stroke-current {\n stroke: currentColor;\n}\n.tw-p-0 {\n padding: 0px;\n}\n.tw-p-2 {\n padding: 0.5rem;\n}\n.tw-p-4 {\n padding: 1rem;\n}\n.tw-p-6 {\n padding: 1.5rem;\n}\n.tw-px-2 {\n padding-left: 0.5rem;\n padding-right: 0.5rem;\n}\n.tw-px-6 {\n padding-left: 1.5rem;\n padding-right: 1.5rem;\n}\n.tw-py-4 {\n padding-top: 1rem;\n padding-bottom: 1rem;\n}\n.tw-pb-0 {\n padding-bottom: 0px;\n}\n.tw-pb-6 {\n padding-bottom: 1.5rem;\n}\n.tw-pl-2 {\n padding-left: 0.5rem;\n}\n.tw-pl-4 {\n padding-left: 1rem;\n}\n.tw-pr-2 {\n padding-right: 0.5rem;\n}\n.tw-pr-4 {\n padding-right: 1rem;\n}\n.tw-pt-0 {\n padding-top: 0px;\n}\n.tw-pt-1 {\n padding-top: 0.25rem;\n}\n.tw-pt-6 {\n padding-top: 1.5rem;\n}\n.tw-pt-8 {\n padding-top: 2rem;\n}\n.tw-align-middle {\n vertical-align: middle;\n}\n.tw-text-lg {\n font-size: 1.125rem;\n line-height: 1.75rem;\n}\n.tw-text-sm {\n font-size: 0.875rem;\n line-height: 1.25rem;\n}\n.tw-text-xl {\n font-size: 1.25rem;\n line-height: 1.75rem;\n}\n.tw-font-bold {\n font-weight: 700;\n}\n.tw-font-normal {\n font-weight: 400;\n}\n.tw-font-semibold {\n font-weight: 600;\n}\n.tw-normal-case {\n text-transform: none;\n}\n.tw-leading-3 {\n line-height: .75rem;\n}\n.tw-leading-5 {\n line-height: 1.25rem;\n}\n.tw-leading-6 {\n line-height: 1.5rem;\n}\n.tw-text-base-content {\n --tw-text-opacity: 1;\n color: hsl(var(--bc) / var(--tw-text-opacity));\n}\n.tw-text-gray-500 {\n --tw-text-opacity: 1;\n color: rgb(107 114 128 / var(--tw-text-opacity));\n}\n.tw-text-green-900 {\n --tw-text-opacity: 1;\n color: rgb(20 83 45 / var(--tw-text-opacity));\n}\n.tw-text-white {\n --tw-text-opacity: 1;\n color: rgb(255 255 255 / var(--tw-text-opacity));\n}\n.tw-shadow {\n --tw-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);\n --tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n.tw-shadow-\\[0_4px_12px_0_rgba\\(0\\,0\\,0\\,0\\.07\\)\\,_0_2px_4px_rgba\\(0\\,0\\,0\\,0\\.05\\)\\] {\n --tw-shadow: 0 4px 12px 0 rgba(0,0,0,0.07), 0 2px 4px rgba(0,0,0,0.05);\n --tw-shadow-colored: 0 4px 12px 0 var(--tw-shadow-color), 0 2px 4px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n.tw-shadow-xl {\n --tw-shadow: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1);\n --tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n.tw-drop-shadow-md {\n --tw-drop-shadow: drop-shadow(0 4px 3px rgb(0 0 0 / 0.07)) drop-shadow(0 2px 2px rgb(0 0 0 / 0.06));\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\n}\n.tw-transition {\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-backdrop-filter;\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-backdrop-filter;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n.tw-transition-all {\n transition-property: all;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n.tw-duration-200 {\n transition-duration: 200ms;\n}\n.tw-duration-500 {\n transition-duration: 500ms;\n}\n.tw-ease-in {\n transition-timing-function: cubic-bezier(0.4, 0, 1, 1);\n}\n\n.tw-modal {\n z-index: 1200 !important;\n}\n\n.hover\\:tw-bg-gray-100:hover {\n --tw-bg-opacity: 1;\n background-color: rgb(243 244 246 / var(--tw-bg-opacity));\n}\n\n.hover\\:tw-bg-white:hover {\n --tw-bg-opacity: 1;\n background-color: rgb(255 255 255 / var(--tw-bg-opacity));\n}\n\n.hover\\:tw-text-gray-700:hover {\n --tw-text-opacity: 1;\n color: rgb(55 65 81 / var(--tw-text-opacity));\n}\n\n.focus\\:tw-outline-none:focus {\n outline: 2px solid transparent;\n outline-offset: 2px;\n}\n\n.data-\\[te-sidenav-slim\\=\\'true\\'\\]\\:tw-hidden[data-te-sidenav-slim='true'] {\n display: none;\n}\n\n.data-\\[te-sidenav-slim-collapsed\\=\\'true\\'\\]\\:tw-w-\\[56px\\][data-te-sidenav-slim-collapsed='true'] {\n width: 56px;\n}\n\n.data-\\[te-sidenav-slim\\=\\'true\\'\\]\\:tw-w-\\[56px\\][data-te-sidenav-slim='true'] {\n width: 56px;\n}\n\n.data-\\[te-sidenav-hidden\\=\\'false\\'\\]\\:tw-translate-x-0[data-te-sidenav-hidden='false'] {\n --tw-translate-x: 0px;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n.tw-group[data-te-sidenav-slim-collapsed='true'] .group-\\[\\&\\[data-te-sidenav-slim-collapsed\\=\\'true\\'\\]\\]\\:data-\\[te-sidenav-slim\\=\\'false\\'\\]\\:tw-hidden[data-te-sidenav-slim='false'] {\n display: none;\n}\n\n:is(.tw-dark .dark\\:tw-bg-zinc-800) {\n --tw-bg-opacity: 1;\n background-color: rgb(39 39 42 / var(--tw-bg-opacity));\n}\n\n@media (min-width: 768px) {\n\n .md\\:tw-grid-cols-2 {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n}\n\n@media (min-width: 1280px) {\n\n .xl\\:tw-max-w-6xl {\n max-width: 72rem;\n }\n}\n\n.\\[\\&\\[data-te-sidenav-slim-collapsed\\=\\'true\\'\\]\\[data-te-sidenav-slim\\=\\'false\\'\\]\\]\\:tw-hidden[data-te-sidenav-slim-collapsed='true'][data-te-sidenav-slim='false'] {\n display: none;\n}\n\n.\\[\\&\\[data-te-sidenav-slim-collapsed\\=\\'true\\'\\]\\[data-te-sidenav-slim\\=\\'true\\'\\]\\]\\:\\[display\\:unset\\][data-te-sidenav-slim-collapsed='true'][data-te-sidenav-slim='true'] {\n display: unset;\n}";
1030
+ styleInject(css_248z);
1031
+
1032
+ export { AppShell, AuthProviderDirectus, Content, Item, Layer, Modal, Quests, Settings, SideBar, Tags, UtopiaMap, useAuthDirectus };
170
1033
  //# sourceMappingURL=index.js.map