utopia-ui 1.0.6 → 1.0.8

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 (40) hide show
  1. package/LICENSE.md +5 -0
  2. package/README.md +39 -90
  3. package/dist/Components/Map/AddButton.d.ts +4 -0
  4. package/dist/Components/Map/Layer.d.ts +3 -0
  5. package/dist/Components/Map/NewItemPopup.d.ts +9 -0
  6. package/dist/Components/Map/Popup.d.ts +8 -0
  7. package/dist/Components/Map/Subcomponents/AddButton.d.ts +4 -0
  8. package/dist/Components/Map/Subcomponents/EditItemPopup.d.ts +10 -0
  9. package/dist/Components/Map/Subcomponents/NewItemPopup.d.ts +10 -0
  10. package/dist/Components/Map/Subcomponents/Popup.d.ts +10 -0
  11. package/dist/Components/Map/Tags.d.ts +5 -0
  12. package/dist/Components/Map/UtopiaMap.d.ts +11 -0
  13. package/dist/Components/Map/UtopiaMap.stories.d.ts +6 -0
  14. package/dist/Components/Map/data.d.ts +4 -0
  15. package/dist/Components/Map/data.new.d.ts +4 -0
  16. package/dist/Components/Map/hooks/useContext.d.ts +7 -0
  17. package/dist/Components/Map/hooks/useForceUpdate.d.ts +1 -0
  18. package/dist/Components/Map/hooks/useItems.d.ts +18 -0
  19. package/dist/Components/Map/hooks/useLayers.d.ts +14 -0
  20. package/dist/Components/Map/hooks/useMapContext.d.ts +11 -0
  21. package/dist/Components/Map/hooks/useNewItemPopup.d.ts +12 -0
  22. package/dist/Components/Map/hooks/useTags.d.ts +16 -0
  23. package/dist/Components/Map/index.d.ts +3 -0
  24. package/dist/Components/Map/useItems.d.ts +16 -0
  25. package/dist/Components/Map/useLayers.d.ts +18 -0
  26. package/dist/Components/Map/useTags.d.ts +16 -0
  27. package/dist/Utils/DynamicHeroIcon.d.ts +5 -0
  28. package/dist/Utils/ReplaceURLs.d.ts +1 -0
  29. package/dist/index.d.ts +1 -15
  30. package/dist/index.js +483 -64
  31. package/dist/index.js.map +1 -1
  32. package/dist/types.d.ts +54 -0
  33. package/package.json +23 -7
  34. package/dist/Components/Map/MarkerPopup.d.ts +0 -28
  35. package/dist/Utils/StringFormater.d.ts +0 -1
  36. package/dist/components/Map.d.ts +0 -12
  37. package/dist/components/include/MarkerPopup.d.ts +0 -28
  38. package/dist/components/index.d.ts +0 -1
  39. package/dist/sampleData/data.d.ts +0 -19
  40. package/dist/utils/MarkerIconFactory.d.ts +0 -3
package/dist/index.js CHANGED
@@ -1,43 +1,385 @@
1
-
2
-
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
1
  Object.defineProperty(exports, '__esModule', { value: true });
15
2
 
16
3
  var reactLeaflet = require('react-leaflet');
17
4
  require('leaflet/dist/leaflet.css');
18
5
  var React = require('react');
19
6
  var L = require('leaflet');
7
+ var MarkerClusterGroup = require('react-leaflet-cluster');
8
+ var HIcons = require('@heroicons/react/solid');
9
+
10
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
20
11
 
21
12
  function _interopNamespace(e) {
22
- if (e && e.__esModule) return e;
23
- var n = Object.create(null);
24
- if (e) {
25
- Object.keys(e).forEach(function (k) {
26
- if (k !== 'default') {
27
- var d = Object.getOwnPropertyDescriptor(e, k);
28
- Object.defineProperty(n, k, d.get ? d : {
29
- enumerable: true,
30
- get: function () { return e[k]; }
31
- });
32
- }
13
+ if (e && e.__esModule) return e;
14
+ var n = Object.create(null);
15
+ if (e) {
16
+ Object.keys(e).forEach(function (k) {
17
+ if (k !== 'default') {
18
+ var d = Object.getOwnPropertyDescriptor(e, k);
19
+ Object.defineProperty(n, k, d.get ? d : {
20
+ enumerable: true,
21
+ get: function () { return e[k]; }
33
22
  });
34
- }
35
- n["default"] = e;
36
- return Object.freeze(n);
23
+ }
24
+ });
25
+ }
26
+ n["default"] = e;
27
+ return Object.freeze(n);
37
28
  }
38
29
 
39
30
  var React__namespace = /*#__PURE__*/_interopNamespace(React);
40
31
  var L__namespace = /*#__PURE__*/_interopNamespace(L);
32
+ var MarkerClusterGroup__default = /*#__PURE__*/_interopDefaultLegacy(MarkerClusterGroup);
33
+ var HIcons__namespace = /*#__PURE__*/_interopNamespace(HIcons);
34
+
35
+ var Item = /** @class */ (function () {
36
+ function Item(id, name, text, position, layer) {
37
+ this.id = id;
38
+ this.name = name;
39
+ this.text = text;
40
+ this.position = position;
41
+ this.layer = layer;
42
+ }
43
+ return Item;
44
+ }());
45
+ var Geometry = /** @class */ (function () {
46
+ function Geometry(lng, lat) {
47
+ this.coordinates = [lng, lat];
48
+ this.type = "Point";
49
+ }
50
+ return Geometry;
51
+ }());
52
+
53
+ function styleInject(css, ref) {
54
+ if ( ref === void 0 ) ref = {};
55
+ var insertAt = ref.insertAt;
56
+
57
+ if (!css || typeof document === 'undefined') { return; }
58
+
59
+ var head = document.head || document.getElementsByTagName('head')[0];
60
+ var style = document.createElement('style');
61
+ style.type = 'text/css';
62
+
63
+ if (insertAt === 'top') {
64
+ if (head.firstChild) {
65
+ head.insertBefore(style, head.firstChild);
66
+ } else {
67
+ head.appendChild(style);
68
+ }
69
+ } else {
70
+ head.appendChild(style);
71
+ }
72
+
73
+ if (style.styleSheet) {
74
+ style.styleSheet.cssText = css;
75
+ } else {
76
+ style.appendChild(document.createTextNode(css));
77
+ }
78
+ }
79
+
80
+ var css_248z = ":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}\nhtml {\n -webkit-tap-highlight-color: transparent;\n}\n:root {\n --p: 259 94% 51%;\n --pf: 259 94% 41%;\n --sf: 314 100% 38%;\n --af: 174 60% 41%;\n --nf: 219 14% 22%;\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 --pc: 0 0% 100%;\n --s: 314 100% 47%;\n --sc: 0 0% 100%;\n --a: 174 60% 51%;\n --ac: 175 44% 15%;\n --n: 219 14% 28%;\n --nc: 0 0% 100%;\n --b1: 0 0% 100%;\n --b2: 0 0% 95%;\n --b3: 180 2% 90%;\n --bc: 215 28% 17%;\n}\n@media (prefers-color-scheme: dark) {\n :root {\n --p: 262 80% 50%;\n --pf: 262 80% 40%;\n --sf: 316 70% 40%;\n --af: 175 70% 33%;\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 --pc: 0 0% 100%;\n --s: 316 70% 50%;\n --sc: 0 0% 100%;\n --a: 175 70% 41%;\n --ac: 0 0% 100%;\n --n: 218 18% 12%;\n --nf: 223 17% 8%;\n --nc: 220 13% 69%;\n --b1: 220 18% 20%;\n --b2: 220 17% 17%;\n --b3: 219 18% 15%;\n --bc: 220 13% 69%;\n }\n}\n[data-theme=light] {\n --p: 259 94% 51%;\n --pf: 259 94% 41%;\n --sf: 314 100% 38%;\n --af: 174 60% 41%;\n --nf: 219 14% 22%;\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 --pc: 0 0% 100%;\n --s: 314 100% 47%;\n --sc: 0 0% 100%;\n --a: 174 60% 51%;\n --ac: 175 44% 15%;\n --n: 219 14% 28%;\n --nc: 0 0% 100%;\n --b1: 0 0% 100%;\n --b2: 0 0% 95%;\n --b3: 180 2% 90%;\n --bc: 215 28% 17%;\n}\n[data-theme=dark] {\n --p: 262 80% 50%;\n --pf: 262 80% 40%;\n --sf: 316 70% 40%;\n --af: 175 70% 33%;\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 --pc: 0 0% 100%;\n --s: 316 70% 50%;\n --sc: 0 0% 100%;\n --a: 175 70% 41%;\n --ac: 0 0% 100%;\n --n: 218 18% 12%;\n --nf: 223 17% 8%;\n --nc: 220 13% 69%;\n --b1: 220 18% 20%;\n --b2: 220 17% 17%;\n --b3: 219 18% 15%;\n --bc: 220 13% 69%;\n}\n[data-theme=cupcake] {\n --p: 183 47% 59%;\n --pf: 183 47% 47%;\n --sf: 338 71% 62%;\n --af: 39 84% 46%;\n --nf: 280 46% 11%;\n --in: 198 93% 60%;\n --su: 158 64% 52%;\n --wa: 43 96% 56%;\n --er: 0 91% 71%;\n --pc: 183 100% 12%;\n --sc: 338 100% 16%;\n --ac: 39 100% 12%;\n --nc: 280 83% 83%;\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 --s: 338 71% 78%;\n --a: 39 84% 58%;\n --n: 280 46% 14%;\n --b1: 24 33% 97%;\n --b2: 27 22% 92%;\n --b3: 22 14% 89%;\n --bc: 280 46% 14%;\n --rounded-btn: 1.9rem;\n --tab-border: 2px;\n --tab-radius: .5rem;\n}\n[data-theme=bumblebee] {\n --p: 41 74% 53%;\n --pf: 41 74% 42%;\n --sf: 50 94% 46%;\n --af: 240 33% 11%;\n --nf: 240 33% 11%;\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% 83%;\n --nc: 240 60% 83%;\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 --pc: 240 33% 14%;\n --s: 50 94% 58%;\n --sc: 240 33% 14%;\n --a: 240 33% 14%;\n --n: 240 33% 14%;\n --b1: 0 0% 100%;\n}\n[data-theme=emerald] {\n --p: 141 50% 60%;\n --pf: 141 50% 48%;\n --sf: 219 96% 48%;\n --af: 10 81% 45%;\n --nf: 219 20% 20%;\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 --pc: 151 28% 19%;\n --s: 219 96% 60%;\n --sc: 210 20% 98%;\n --a: 10 81% 56%;\n --ac: 210 20% 98%;\n --n: 219 20% 25%;\n --nc: 210 20% 98%;\n --b1: 0 0% 100%;\n --bc: 219 20% 25%;\n --animation-btn: 0;\n --animation-input: 0;\n --btn-focus-scale: 1;\n}\n[data-theme=corporate] {\n --p: 229 96% 64%;\n --pf: 229 96% 51%;\n --sf: 215 26% 47%;\n --af: 154 49% 48%;\n --nf: 233 27% 10%;\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 100% 93%;\n --sc: 215 100% 12%;\n --ac: 154 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 --s: 215 26% 59%;\n --a: 154 49% 60%;\n --n: 233 27% 13%;\n --nc: 210 38% 95%;\n --b1: 0 0% 100%;\n --bc: 233 27% 13%;\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[data-theme=synthwave] {\n --p: 321 70% 69%;\n --pf: 321 70% 55%;\n --sf: 197 87% 52%;\n --af: 48 89% 46%;\n --nf: 253 61% 15%;\n --b2: 254 59% 23%;\n --b3: 254 59% 21%;\n --pc: 321 100% 14%;\n --sc: 197 100% 13%;\n --ac: 48 100% 11%;\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 --s: 197 87% 65%;\n --a: 48 89% 57%;\n --n: 253 61% 19%;\n --nc: 260 60% 98%;\n --b1: 254 59% 26%;\n --bc: 260 60% 98%;\n --in: 199 87% 64%;\n --inc: 257 63% 17%;\n --su: 168 74% 68%;\n --suc: 257 63% 17%;\n --wa: 48 89% 57%;\n --wac: 257 63% 17%;\n --er: 352 74% 57%;\n --erc: 260 60% 98%;\n}\n[data-theme=retro] {\n --p: 3 74% 76%;\n --pf: 3 74% 61%;\n --sf: 145 27% 58%;\n --af: 49 67% 61%;\n --nf: 42 17% 34%;\n --inc: 221 100% 91%;\n --suc: 142 100% 87%;\n --wac: 32 100% 9%;\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 --tab-radius: 0.5rem;\n --pc: 345 5% 15%;\n --s: 145 27% 72%;\n --sc: 345 5% 15%;\n --a: 49 67% 76%;\n --ac: 345 5% 15%;\n --n: 42 17% 42%;\n --nc: 45 47% 80%;\n --b1: 45 47% 80%;\n --b2: 45 37% 72%;\n --b3: 42 36% 65%;\n --bc: 345 5% 15%;\n --in: 221 83% 53%;\n --su: 142 76% 36%;\n --wa: 32 95% 44%;\n --er: 0 72% 51%;\n --rounded-box: 0.4rem;\n --rounded-btn: 0.4rem;\n --rounded-badge: 0.4rem;\n}\n[data-theme=cyberpunk] {\n font-family: ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;\n --pf: 345 100% 58%;\n --sf: 195 80% 56%;\n --af: 276 74% 57%;\n --nf: 57 100% 10%;\n --b2: 56 100% 45%;\n --b3: 56 100% 41%;\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: 345 100% 15%;\n --sc: 195 100% 14%;\n --ac: 276 100% 14%;\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 --p: 345 100% 73%;\n --s: 195 80% 70%;\n --a: 276 74% 71%;\n --n: 57 100% 13%;\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[data-theme=valentine] {\n --p: 353 74% 67%;\n --pf: 353 74% 54%;\n --sf: 254 86% 61%;\n --af: 181 56% 56%;\n --nf: 336 43% 38%;\n --b2: 318 46% 80%;\n --b3: 318 46% 72%;\n --pc: 353 100% 13%;\n --sc: 254 100% 15%;\n --ac: 181 100% 14%;\n --inc: 221 100% 91%;\n --suc: 142 100% 87%;\n --wac: 32 100% 9%;\n --erc: 0 100% 90%;\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 --s: 254 86% 77%;\n --a: 181 56% 70%;\n --n: 336 43% 48%;\n --nc: 318 46% 89%;\n --b1: 318 46% 89%;\n --bc: 344 38% 28%;\n --in: 221 83% 53%;\n --su: 142 76% 36%;\n --wa: 32 95% 44%;\n --er: 0 72% 51%;\n --rounded-btn: 1.9rem;\n}\n[data-theme=halloween] {\n --p: 32 89% 52%;\n --pf: 32 89% 42%;\n --sf: 271 46% 34%;\n --af: 91 100% 26%;\n --nf: 180 4% 9%;\n --b2: 0 0% 12%;\n --b3: 0 0% 10%;\n --bc: 0 0% 83%;\n --sc: 271 100% 88%;\n --ac: 91 100% 7%;\n --nc: 180 5% 82%;\n --inc: 221 100% 91%;\n --suc: 142 100% 87%;\n --wac: 32 100% 9%;\n --erc: 0 100% 90%;\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 --pc: 180 7% 8%;\n --s: 271 46% 42%;\n --a: 91 100% 33%;\n --n: 180 4% 11%;\n --b1: 0 0% 13%;\n --in: 221 83% 53%;\n --su: 142 76% 36%;\n --wa: 32 95% 44%;\n --er: 0 72% 51%;\n}\n[data-theme=garden] {\n --p: 139 16% 43%;\n --pf: 139 16% 34%;\n --sf: 97 37% 75%;\n --af: 0 68% 75%;\n --nf: 0 4% 28%;\n --b2: 0 4% 82%;\n --b3: 0 4% 74%;\n --in: 198 93% 60%;\n --su: 158 64% 52%;\n --wa: 43 96% 56%;\n --er: 0 91% 71%;\n --pc: 139 100% 89%;\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 --s: 97 37% 93%;\n --sc: 96 32% 15%;\n --a: 0 68% 94%;\n --ac: 0 22% 16%;\n --n: 0 4% 35%;\n --nc: 0 4% 91%;\n --b1: 0 4% 91%;\n --bc: 0 3% 6%;\n}\n[data-theme=forest] {\n --p: 141 72% 42%;\n --pf: 141 72% 34%;\n --sf: 141 75% 38%;\n --af: 35 69% 42%;\n --nf: 0 10% 5%;\n --b2: 0 12% 7%;\n --b3: 0 12% 7%;\n --in: 198 93% 60%;\n --su: 158 64% 52%;\n --wa: 43 96% 56%;\n --er: 0 91% 71%;\n --bc: 0 12% 82%;\n --pc: 141 100% 8%;\n --sc: 141 100% 10%;\n --ac: 35 100% 10%;\n --nc: 0 7% 81%;\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 --s: 141 75% 48%;\n --a: 35 69% 52%;\n --n: 0 10% 6%;\n --b1: 0 12% 8%;\n --rounded-btn: 1.9rem;\n}\n[data-theme=aqua] {\n --p: 182 93% 49%;\n --pf: 182 93% 40%;\n --sf: 274 31% 45%;\n --af: 47 100% 64%;\n --nf: 205 54% 40%;\n --b2: 219 53% 39%;\n --b3: 219 53% 35%;\n --bc: 219 100% 89%;\n --sc: 274 100% 91%;\n --ac: 47 100% 16%;\n --nc: 205 100% 90%;\n --inc: 221 100% 91%;\n --suc: 142 100% 87%;\n --wac: 32 100% 9%;\n --erc: 0 100% 90%;\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 --pc: 181 100% 17%;\n --s: 274 31% 57%;\n --a: 47 100% 80%;\n --n: 205 54% 50%;\n --b1: 219 53% 43%;\n --in: 221 83% 53%;\n --su: 142 76% 36%;\n --wa: 32 95% 44%;\n --er: 0 72% 51%;\n}\n[data-theme=lofi] {\n --p: 0 0% 5%;\n --pf: 0 0% 4%;\n --sf: 0 2% 8%;\n --af: 0 0% 12%;\n --nf: 0 0% 0%;\n --btn-text-case: uppercase;\n --border-btn: 1px;\n --tab-border: 1px;\n --pc: 0 0% 100%;\n --s: 0 2% 10%;\n --sc: 0 0% 100%;\n --a: 0 0% 15%;\n --ac: 0 0% 100%;\n --n: 0 0% 0%;\n --nc: 0 0% 100%;\n --b1: 0 0% 100%;\n --b2: 0 0% 95%;\n --b3: 0 2% 90%;\n --bc: 0 0% 0%;\n --in: 212 100% 48%;\n --inc: 0 0% 100%;\n --su: 137 72% 46%;\n --suc: 0 0% 100%;\n --wa: 5 100% 66%;\n --wac: 0 0% 100%;\n --er: 325 78% 49%;\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[data-theme=pastel] {\n --p: 284 22% 80%;\n --pf: 284 22% 64%;\n --sf: 352 70% 70%;\n --af: 158 55% 65%;\n --nf: 199 44% 49%;\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: 284 59% 16%;\n --sc: 352 100% 18%;\n --ac: 158 100% 16%;\n --nc: 199 100% 12%;\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 --s: 352 70% 88%;\n --a: 158 55% 81%;\n --n: 199 44% 61%;\n --b1: 0 0% 100%;\n --b2: 210 20% 98%;\n --b3: 216 12% 84%;\n --rounded-btn: 1.9rem;\n}\n[data-theme=fantasy] {\n --p: 296 83% 25%;\n --pf: 296 83% 20%;\n --sf: 200 100% 30%;\n --af: 31 94% 41%;\n --nf: 215 28% 13%;\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 100% 85%;\n --sc: 200 100% 87%;\n --ac: 31 100% 10%;\n --nc: 215 62% 83%;\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 --s: 200 100% 37%;\n --a: 31 94% 51%;\n --n: 215 28% 17%;\n --b1: 0 0% 100%;\n --bc: 215 28% 17%;\n}\n[data-theme=wireframe] {\n font-family: Chalkboard,comic sans ms,\"sanssecondaryerif\";\n --pf: 0 0% 58%;\n --sf: 0 0% 58%;\n --af: 0 0% 58%;\n --nf: 0 0% 74%;\n --bc: 0 0% 20%;\n --pc: 0 0% 14%;\n --sc: 0 0% 14%;\n --ac: 0 0% 14%;\n --nc: 0 0% 18%;\n --inc: 240 100% 90%;\n --suc: 120 100% 85%;\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 --p: 0 0% 72%;\n --s: 0 0% 72%;\n --a: 0 0% 72%;\n --n: 0 0% 92%;\n --b1: 0 0% 100%;\n --b2: 0 0% 93%;\n --b3: 0 0% 87%;\n --in: 240 100% 50%;\n --su: 120 100% 25%;\n --wa: 60 30% 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[data-theme=black] {\n --p: 0 2% 20%;\n --pf: 0 2% 16%;\n --sf: 0 2% 16%;\n --af: 0 2% 16%;\n --bc: 0 0% 80%;\n --pc: 0 5% 84%;\n --sc: 0 5% 84%;\n --ac: 0 5% 84%;\n --nc: 0 3% 83%;\n --inc: 240 100% 90%;\n --suc: 120 100% 85%;\n --wac: 60 100% 10%;\n --erc: 0 100% 90%;\n --border-btn: 1px;\n --tab-border: 1px;\n --s: 0 2% 20%;\n --a: 0 2% 20%;\n --b1: 0 0% 0%;\n --b2: 0 0% 5%;\n --b3: 0 2% 10%;\n --n: 0 1% 15%;\n --nf: 0 2% 20%;\n --in: 240 100% 50%;\n --su: 120 100% 25%;\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[data-theme=luxury] {\n --p: 0 0% 100%;\n --pf: 0 0% 80%;\n --sf: 218 54% 14%;\n --af: 319 22% 21%;\n --nf: 270 4% 7%;\n --pc: 0 0% 20%;\n --sc: 218 100% 84%;\n --ac: 319 85% 85%;\n --inc: 202 100% 14%;\n --suc: 89 100% 10%;\n --wac: 54 100% 13%;\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 --s: 218 54% 18%;\n --a: 319 22% 26%;\n --n: 270 4% 9%;\n --nc: 37 67% 58%;\n --b1: 240 10% 4%;\n --b2: 270 4% 9%;\n --b3: 270 2% 18%;\n --bc: 37 67% 58%;\n --in: 202 100% 70%;\n --su: 89 62% 52%;\n --wa: 54 69% 64%;\n --er: 0 100% 72%;\n}\n[data-theme=dracula] {\n --p: 326 100% 74%;\n --pf: 326 100% 59%;\n --sf: 265 89% 62%;\n --af: 31 100% 57%;\n --nf: 230 15% 24%;\n --b2: 231 15% 17%;\n --b3: 231 15% 15%;\n --pc: 326 100% 15%;\n --sc: 265 100% 16%;\n --ac: 31 100% 14%;\n --nc: 230 71% 86%;\n --inc: 191 100% 15%;\n --suc: 135 100% 13%;\n --wac: 65 100% 15%;\n --erc: 0 100% 93%;\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 --s: 265 89% 78%;\n --a: 31 100% 71%;\n --n: 230 15% 30%;\n --b1: 231 15% 18%;\n --bc: 60 30% 96%;\n --in: 191 97% 77%;\n --su: 135 94% 65%;\n --wa: 65 92% 76%;\n --er: 0 100% 67%;\n}\n[data-theme=cmyk] {\n --p: 203 83% 60%;\n --pf: 203 83% 48%;\n --sf: 335 78% 48%;\n --af: 56 100% 48%;\n --nf: 0 0% 8%;\n --b2: 0 0% 90%;\n --b3: 0 0% 81%;\n --bc: 0 0% 20%;\n --pc: 203 100% 12%;\n --sc: 335 100% 92%;\n --ac: 56 100% 12%;\n --nc: 0 0% 82%;\n --inc: 192 100% 10%;\n --suc: 291 100% 88%;\n --wac: 25 100% 11%;\n --erc: 4 100% 91%;\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 --s: 335 78% 60%;\n --a: 56 100% 60%;\n --n: 0 0% 10%;\n --b1: 0 0% 100%;\n --in: 192 48% 52%;\n --su: 291 48% 38%;\n --wa: 25 85% 57%;\n --er: 4 81% 56%;\n}\n[data-theme=autumn] {\n --p: 344 96% 28%;\n --pf: 344 96% 22%;\n --sf: 0 63% 47%;\n --af: 27 56% 50%;\n --nf: 22 17% 35%;\n --b2: 0 0% 85%;\n --b3: 0 0% 77%;\n --bc: 0 0% 19%;\n --pc: 344 100% 86%;\n --sc: 0 100% 92%;\n --ac: 27 100% 13%;\n --nc: 22 100% 89%;\n --inc: 187 100% 10%;\n --suc: 165 100% 9%;\n --wac: 30 100% 10%;\n --erc: 354 100% 90%;\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 --s: 0 63% 58%;\n --a: 27 56% 63%;\n --n: 22 17% 44%;\n --b1: 0 0% 95%;\n --in: 187 48% 50%;\n --su: 165 34% 43%;\n --wa: 30 84% 50%;\n --er: 354 79% 49%;\n}\n[data-theme=business] {\n --p: 210 64% 31%;\n --pf: 210 64% 24%;\n --sf: 200 13% 44%;\n --af: 13 80% 48%;\n --nf: 213 14% 13%;\n --b2: 0 0% 11%;\n --b3: 0 0% 10%;\n --bc: 0 0% 83%;\n --pc: 210 100% 86%;\n --sc: 200 100% 11%;\n --ac: 13 100% 12%;\n --nc: 213 28% 83%;\n --inc: 199 100% 88%;\n --suc: 144 100% 11%;\n --wac: 39 100% 12%;\n --erc: 6 100% 89%;\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 --s: 200 13% 55%;\n --a: 13 80% 60%;\n --n: 213 14% 16%;\n --b1: 0 0% 13%;\n --in: 199 100% 42%;\n --su: 144 31% 56%;\n --wa: 39 64% 60%;\n --er: 6 56% 43%;\n --rounded-box: 0.25rem;\n --rounded-btn: .125rem;\n --rounded-badge: .125rem;\n}\n[data-theme=acid] {\n --p: 303 100% 50%;\n --pf: 303 100% 40%;\n --sf: 27 100% 40%;\n --af: 72 98% 40%;\n --nf: 238 43% 14%;\n --b2: 0 0% 88%;\n --b3: 0 0% 79%;\n --bc: 0 0% 20%;\n --pc: 303 100% 90%;\n --sc: 27 100% 10%;\n --ac: 72 100% 10%;\n --nc: 238 99% 83%;\n --inc: 210 100% 12%;\n --suc: 149 100% 12%;\n --wac: 53 100% 11%;\n --erc: 1 100% 89%;\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 --s: 27 100% 50%;\n --a: 72 98% 50%;\n --n: 238 43% 17%;\n --b1: 0 0% 98%;\n --in: 210 92% 58%;\n --su: 149 50% 58%;\n --wa: 53 93% 57%;\n --er: 1 100% 45%;\n --rounded-box: 1.25rem;\n --rounded-btn: 1rem;\n --rounded-badge: 1rem;\n}\n[data-theme=lemonade] {\n --p: 89 96% 31%;\n --pf: 89 96% 24%;\n --sf: 60 81% 44%;\n --af: 63 80% 71%;\n --nf: 238 43% 14%;\n --b2: 0 0% 90%;\n --b3: 0 0% 81%;\n --bc: 0 0% 20%;\n --pc: 89 100% 86%;\n --sc: 60 100% 11%;\n --ac: 63 100% 18%;\n --nc: 238 99% 83%;\n --inc: 192 79% 17%;\n --suc: 74 100% 16%;\n --wac: 50 100% 15%;\n --erc: 1 100% 17%;\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 --s: 60 81% 55%;\n --a: 63 80% 88%;\n --n: 238 43% 17%;\n --b1: 0 0% 100%;\n --in: 192 39% 85%;\n --su: 74 76% 79%;\n --wa: 50 87% 75%;\n --er: 1 70% 83%;\n}\n[data-theme=night] {\n --p: 198 93% 60%;\n --pf: 198 93% 48%;\n --sf: 234 89% 59%;\n --af: 329 86% 56%;\n --b2: 222 47% 10%;\n --b3: 222 47% 9%;\n --bc: 222 66% 82%;\n --pc: 198 100% 12%;\n --sc: 234 100% 15%;\n --ac: 329 100% 14%;\n --nc: 217 76% 83%;\n --inc: 198 100% 10%;\n --suc: 172 100% 10%;\n --wac: 41 100% 13%;\n --erc: 351 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 --s: 234 89% 74%;\n --a: 329 86% 70%;\n --n: 217 33% 17%;\n --nf: 217 30% 22%;\n --b1: 222 47% 11%;\n --in: 198 90% 48%;\n --su: 172 66% 50%;\n --wa: 41 88% 64%;\n --er: 351 95% 71%;\n}\n[data-theme=coffee] {\n --p: 30 67% 58%;\n --pf: 30 67% 46%;\n --sf: 182 25% 16%;\n --af: 194 74% 20%;\n --nf: 300 20% 5%;\n --b2: 306 19% 10%;\n --b3: 306 19% 9%;\n --pc: 30 100% 12%;\n --sc: 182 67% 84%;\n --ac: 194 100% 85%;\n --nc: 300 14% 81%;\n --inc: 171 100% 13%;\n --suc: 93 100% 12%;\n --wac: 43 100% 14%;\n --erc: 10 100% 15%;\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 --s: 182 25% 20%;\n --a: 194 74% 25%;\n --n: 300 20% 6%;\n --b1: 306 19% 11%;\n --bc: 37 8% 42%;\n --in: 171 37% 67%;\n --su: 93 25% 62%;\n --wa: 43 100% 69%;\n --er: 10 95% 75%;\n}\n[data-theme=winter] {\n --p: 212 100% 51%;\n --pf: 212 100% 41%;\n --sf: 247 47% 35%;\n --af: 310 49% 42%;\n --nf: 217 92% 8%;\n --pc: 212 100% 90%;\n --sc: 247 100% 89%;\n --ac: 310 100% 90%;\n --nc: 217 100% 82%;\n --inc: 192 100% 16%;\n --suc: 182 100% 13%;\n --wac: 32 100% 17%;\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 --s: 247 47% 43%;\n --a: 310 49% 52%;\n --n: 217 92% 10%;\n --b1: 0 0% 100%;\n --b2: 217 100% 97%;\n --b3: 219 44% 92%;\n --bc: 214 30% 32%;\n --in: 192 93% 78%;\n --su: 182 47% 66%;\n --wa: 32 62% 84%;\n --er: 0 63% 72%;\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::-webkit-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::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.container {\n width: 100%;\n}\n@media (min-width: 640px) {\n .container {\n max-width: 640px;\n }\n}\n@media (min-width: 768px) {\n .container {\n max-width: 768px;\n }\n}\n@media (min-width: 1024px) {\n .container {\n max-width: 1024px;\n }\n}\n@media (min-width: 1280px) {\n .container {\n max-width: 1280px;\n }\n}\n@media (min-width: 1536px) {\n .container {\n max-width: 1536px;\n }\n}\n.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.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 .alert {\n flex-direction: row;\n }\n .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.alert > :where(*) {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n}\n.avatar.placeholder > div {\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.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, fill, stroke, opacity, box-shadow, transform, filter, -webkit-text-decoration-color, -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-text-decoration-color, -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 -webkit-text-decoration-line: none;\n text-decoration-line: none;\n border-width: var(--border-btn, 1px);\n -webkit-animation: button-pop var(--animation-btn, 0.25s) ease-out;\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.btn-disabled, \n .btn[disabled] {\n pointer-events: none;\n}\n.btn.loading, \n .btn.loading:hover {\n pointer-events: none;\n}\n.btn.loading:before {\n margin-right: 0.5rem;\n height: 1rem;\n width: 1rem;\n border-radius: 9999px;\n border-width: 2px;\n -webkit-animation: spin 2s linear infinite;\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 .btn.loading:before {\n -webkit-animation: spin 10s linear infinite;\n animation: spin 10s linear infinite;\n }\n}\n@-webkit-keyframes spin {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n}\n@keyframes spin {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n}\n.btn-group > input[type=\"radio\"].btn {\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n}\n.btn-group > input[type=\"radio\"].btn:before {\n content: attr(data-title);\n}\n.dropdown {\n position: relative;\n display: inline-block;\n}\n.dropdown > *:focus {\n outline: 2px solid transparent;\n outline-offset: 2px;\n}\n.dropdown .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, fill, stroke, opacity, box-shadow, transform, filter, -webkit-text-decoration-color, -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-text-decoration-color, -webkit-backdrop-filter;\n transition-duration: 200ms;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n}\n.dropdown-end .dropdown-content {\n right: 0px;\n}\n.dropdown-left .dropdown-content {\n top: 0px;\n right: 100%;\n bottom: auto;\n transform-origin: right;\n}\n.dropdown-right .dropdown-content {\n left: 100%;\n top: 0px;\n bottom: auto;\n transform-origin: left;\n}\n.dropdown-top .dropdown-content {\n bottom: 100%;\n top: auto;\n transform-origin: bottom;\n}\n.dropdown-end.dropdown-right .dropdown-content {\n bottom: 0px;\n top: auto;\n}\n.dropdown-end.dropdown-left .dropdown-content {\n bottom: 0px;\n top: auto;\n}\n.dropdown.dropdown-open .dropdown-content, \n.dropdown.dropdown-hover:hover .dropdown-content, \n.dropdown:not(.dropdown-hover):focus .dropdown-content, \n.dropdown:not(.dropdown-hover):focus-within .dropdown-content {\n visibility: visible;\n opacity: 1;\n}\n.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.input {\n flex-shrink: 1;\n transition-property: color, background-color, border-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-text-decoration-color, -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-text-decoration-color, -webkit-backdrop-filter;\n transition-duration: 200ms;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n height: 3rem;\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.input-group > *, \n .input-group > .input {\n border-radius: 0px;\n}\n.menu {\n display: flex;\n flex-direction: column;\n}\n.menu.horizontal {\n display: inline-flex;\n flex-direction: row;\n}\n.menu.horizontal :where(li) {\n flex-direction: row;\n}\n.menu :where(li) {\n position: relative;\n display: flex;\n flex-direction: column;\n flex-wrap: wrap;\n align-items: stretch;\n}\n.menu :where(li:not(.menu-title)) > :where(*:not(ul)) {\n display: flex;\n}\n.menu :where(li:not(.disabled):not(.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.menu > :where(li > *:not(ul):focus) {\n outline: 2px solid transparent;\n outline-offset: 2px;\n}\n.menu > :where(li.disabled > *:not(ul):focus) {\n cursor: auto;\n}\n.menu > :where(li) :where(ul) {\n display: flex;\n flex-direction: column;\n align-items: stretch;\n}\n.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.menu > :where(li:hover) > :where(ul) {\n display: flex;\n}\n.menu > :where(li:focus) > :where(ul) {\n display: flex;\n}\n.textarea {\n flex-shrink: 1;\n transition-property: color, background-color, border-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-text-decoration-color, -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-text-decoration-color, -webkit-backdrop-filter;\n transition-duration: 200ms;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n padding-left: 1rem;\n padding-right: 1rem;\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n font-size: 0.875rem;\n line-height: 1.25rem;\n line-height: 2;\n min-height: 3rem;\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.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.tooltip:before {\n position: absolute;\n pointer-events: none;\n content: attr(data-tip);\n transform: translateX(-50%);\n top: auto;\n left: 50%;\n right: auto;\n bottom: var(--tooltip-offset);\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: -webkit-max-content;\n width: -moz-max-content;\n width: max-content;\n}\n.tooltip-left:before {\n transform: translateY(-50%);\n top: 50%;\n left: auto;\n right: var(--tooltip-offset);\n bottom: auto;\n}\n.btm-nav>* .label {\n font-size: 1rem;\n line-height: 1.5rem;\n}\n.btn:active:hover,\n .btn:active:focus {\n -webkit-animation: none;\n animation: none;\n transform: scale(var(--btn-focus-scale, 0.95));\n}\n.btn:hover, \n .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.btn:focus-visible {\n outline: 2px solid hsl(var(--nf));\n outline-offset: 2px;\n}\n.btn.glass:hover,\n .btn.glass.btn-active {\n --glass-opacity: 25%;\n --glass-border-opacity: 15%;\n}\n.btn.glass:focus-visible {\n outline: 2px solid 0 0 2px currentColor;\n}\n.btn-disabled, \n .btn-disabled:hover, \n .btn[disabled], \n .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.btn.loading.btn-square:before, \n .btn.loading.btn-circle:before {\n margin-right: 0px;\n}\n.btn.loading.btn-xl:before, \n .btn.loading.btn-lg:before {\n height: 1.25rem;\n width: 1.25rem;\n}\n.btn.loading.btn-sm:before, \n .btn.loading.btn-xs:before {\n height: 0.75rem;\n width: 0.75rem;\n}\n.btn-group > input[type=\"radio\"]:checked.btn, \n .btn-group > .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.btn-group > input[type=\"radio\"]:checked.btn:focus-visible, .btn-group > .btn-active:focus-visible {\n outline: 2px solid hsl(var(--p));\n}\n.btn-group:not(.btn-group-vertical) > .btn:not(:first-of-type) {\n margin-left: -1px;\n border-top-left-radius: 0px;\n border-bottom-left-radius: 0px;\n}\n.btn-group:not(.btn-group-vertical) > .btn:not(:last-of-type) {\n border-top-right-radius: 0px;\n border-bottom-right-radius: 0px;\n}\n.btn-group-vertical > .btn:not(:first-of-type) {\n margin-top: -1px;\n border-top-left-radius: 0px;\n border-top-right-radius: 0px;\n}\n.btn-group-vertical > .btn:not(:last-of-type) {\n border-bottom-right-radius: 0px;\n border-bottom-left-radius: 0px;\n}\n@-webkit-keyframes button-pop {\n 0% {\n transform: scale(var(--btn-focus-scale, 0.95));\n }\n 40% {\n transform: scale(1.02);\n }\n 100% {\n transform: scale(1);\n }\n}\n@keyframes button-pop {\n 0% {\n transform: scale(var(--btn-focus-scale, 0.95));\n }\n 40% {\n transform: scale(1.02);\n }\n 100% {\n transform: scale(1);\n }\n}\n@-webkit-keyframes checkmark {\n 0% {\n background-position-y: 5px;\n }\n 50% {\n background-position-y: -2px;\n }\n 100% {\n background-position-y: 0;\n }\n}\n@keyframes checkmark {\n 0% {\n background-position-y: 5px;\n }\n 50% {\n background-position-y: -2px;\n }\n 100% {\n background-position-y: 0;\n }\n}\n.dropdown.dropdown-open .dropdown-content, \n.dropdown.dropdown-hover:hover .dropdown-content, \n.dropdown:focus .dropdown-content, \n.dropdown:focus-within .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.label a:hover {\n --tw-text-opacity: 1;\n color: hsl(var(--bc) / var(--tw-text-opacity));\n}\n.input[list]::-webkit-calendar-picker-indicator {\n line-height: 1em;\n}\n.input-bordered {\n --tw-border-opacity: 0.2;\n}\n.input:focus {\n outline: 2px solid hsla(var(--bc) / 0.2);\n outline-offset: 2px;\n}\n.input-disabled, \n .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.input-disabled::-moz-placeholder, .input[disabled]::-moz-placeholder {\n color: hsl(var(--bc) / var(--tw-placeholder-opacity));\n --tw-placeholder-opacity: 0.2;\n}\n.input-disabled::placeholder, \n .input[disabled]::placeholder {\n color: hsl(var(--bc) / var(--tw-placeholder-opacity));\n --tw-placeholder-opacity: 0.2;\n}\n.menu.horizontal li.bordered > a, \n .menu.horizontal li.bordered > button, \n .menu.horizontal li.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.menu[class*=\" p-\"] li > *, \n .menu[class^=\"p-\"] li > * {\n border-radius: var(--rounded-btn, 0.5rem);\n}\n.menu :where(li.bordered > *) {\n border-left-width: 4px;\n --tw-border-opacity: 1;\n border-color: hsl(var(--p) / var(--tw-border-opacity));\n}\n.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.menu :where(li:not(.menu-title):not(:empty)) > :where(*:not(ul):focus), \n .menu :where(li:not(.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.menu :where(li:not(.menu-title):not(:empty)) > :where(:not(ul).active), \n .menu :where(li:not(.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.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.menu li.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.menu li.disabled > *:hover {\n background-color: transparent;\n}\n.menu li.hover-bordered a {\n border-left-width: 4px;\n border-color: transparent;\n}\n.menu li.hover-bordered a:hover {\n --tw-border-opacity: 1;\n border-color: hsl(var(--p) / var(--tw-border-opacity));\n}\n.menu.compact li > a, \n .menu.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.menu .menu-title > * {\n padding-top: 0.25rem;\n padding-bottom: 0.25rem;\n font-size: 0.75rem;\n line-height: 1rem;\n font-weight: 700;\n color: hsl(var(--bc) / var(--tw-text-opacity));\n --tw-text-opacity: 0.4;\n}\n.menu :where(li:not(.disabled)) > :where(*:not(ul)) {\n outline: 2px solid transparent;\n outline-offset: 2px;\n transition-property: color, background-color, border-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-text-decoration-color, -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-text-decoration-color, -webkit-backdrop-filter;\n transition-duration: 200ms;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n}\n.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.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.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.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.menu > :where(li) > :where(ul) :where(li) {\n width: 100%;\n white-space: nowrap;\n}\n.menu > :where(li) > :where(ul) :where(li) :where(ul) {\n padding-left: 1rem;\n}\n.menu > :where(li) > :where(ul) :where(li) > :where(:not(ul)) {\n width: 100%;\n white-space: nowrap;\n}\n.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.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.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.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.mockup-phone .display {\n overflow: hidden;\n border-radius: 40px;\n margin-top: -25px;\n}\n@-webkit-keyframes progress-loading {\n 50% {\n left: 107%;\n }\n}\n@keyframes progress-loading {\n 50% {\n left: 107%;\n }\n}\n@-webkit-keyframes radiomark {\n 0% {\n box-shadow: 0 0 0 12px hsl(var(--b1)) inset, 0 0 0 12px hsl(var(--b1)) inset;\n }\n 50% {\n box-shadow: 0 0 0 3px hsl(var(--b1)) inset, 0 0 0 3px hsl(var(--b1)) inset;\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 radiomark {\n 0% {\n box-shadow: 0 0 0 12px hsl(var(--b1)) inset, 0 0 0 12px hsl(var(--b1)) inset;\n }\n 50% {\n box-shadow: 0 0 0 3px hsl(var(--b1)) inset, 0 0 0 3px hsl(var(--b1)) inset;\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@-webkit-keyframes rating-pop {\n 0% {\n transform: translateY(-0.125em);\n }\n 40% {\n transform: translateY(-0.125em);\n }\n 100% {\n transform: translateY(0);\n }\n}\n@keyframes rating-pop {\n 0% {\n transform: translateY(-0.125em);\n }\n 40% {\n transform: translateY(-0.125em);\n }\n 100% {\n transform: translateY(0);\n }\n}\n.textarea-bordered {\n --tw-border-opacity: 0.2;\n}\n.textarea:focus {\n outline: 2px solid hsla(var(--bc) / 0.2);\n outline-offset: 2px;\n}\n.textarea-disabled, \n .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.textarea-disabled::-moz-placeholder, .textarea[disabled]::-moz-placeholder {\n color: hsl(var(--bc) / var(--tw-placeholder-opacity));\n --tw-placeholder-opacity: 0.2;\n}\n.textarea-disabled::placeholder, \n .textarea[disabled]::placeholder {\n color: hsl(var(--bc) / var(--tw-placeholder-opacity));\n --tw-placeholder-opacity: 0.2;\n}\n@-webkit-keyframes toast-pop {\n 0% {\n transform: scale(0.9);\n opacity: 0;\n }\n 100% {\n transform: scale(1);\n opacity: 1;\n }\n}\n@keyframes toast-pop {\n 0% {\n transform: scale(0.9);\n opacity: 0;\n }\n 100% {\n transform: scale(1);\n opacity: 1;\n }\n}\n.tooltip:before, \n.tooltip:after {\n opacity: 0;\n transition-property: color, background-color, border-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-text-decoration-color, -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-text-decoration-color, -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.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 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.tooltip.tooltip-open:before, \n.tooltip.tooltip-open:after, \n.tooltip:hover:before, \n.tooltip:hover:after {\n opacity: 1;\n transition-delay: 75ms;\n}\n.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.rounded-box {\n border-radius: var(--rounded-box, 1rem);\n}\n.artboard.phone {\n width: 320px;\n}\n.avatar.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.fixed {\n position: fixed;\n}\n.absolute {\n position: absolute;\n}\n.right-5 {\n right: 1.25rem;\n}\n.top-5 {\n top: 1.25rem;\n}\n.bottom-5 {\n bottom: 1.25rem;\n}\n.z-500 {\n z-index: 500;\n}\n.m-0 {\n margin: 0px;\n}\n.m-1 {\n margin: 0.25rem;\n}\n.mt-2 {\n margin-top: 0.5rem;\n}\n.mb-0 {\n margin-bottom: 0px;\n}\n.mb-2 {\n margin-bottom: 0.5rem;\n}\n.mt-5 {\n margin-top: 1.25rem;\n}\n.mr-2 {\n margin-right: 0.5rem;\n}\n.inline-block {\n display: inline-block;\n}\n.flex {\n display: flex;\n}\n.h-6 {\n height: 1.5rem;\n}\n.h-14 {\n height: 3.5rem;\n}\n.h-10 {\n height: 2.5rem;\n}\n.h-5 {\n height: 1.25rem;\n}\n.w-6 {\n width: 1.5rem;\n}\n.w-14 {\n width: 3.5rem;\n}\n.w-10 {\n width: 2.5rem;\n}\n.w-full {\n width: 100%;\n}\n.w-5 {\n width: 1.25rem;\n}\n.max-w-xs {\n max-width: 20rem;\n}\n.basis-5\\/6 {\n flex-basis: 83.333333%;\n}\n.basis-1\\/6 {\n flex-basis: 16.666667%;\n}\n.basis-2\\/5 {\n flex-basis: 40%;\n}\n.basis-1\\/5 {\n flex-basis: 20%;\n}\n.transform {\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.cursor-pointer {\n cursor: pointer;\n}\n.list-none {\n list-style-type: none;\n}\n.flex-row {\n flex-direction: row;\n}\n.place-content-center {\n place-content: center;\n}\n.justify-center {\n justify-content: center;\n}\n.place-self-center {\n place-self: center;\n}\n.rounded-full {\n border-radius: 9999px;\n}\n.border-0 {\n border-width: 0px;\n}\n.bg-white {\n --tw-bg-opacity: 1;\n background-color: rgb(255 255 255 / var(--tw-bg-opacity));\n}\n.bg-base-100 {\n --tw-bg-opacity: 1;\n background-color: hsl(var(--b1) / var(--tw-bg-opacity));\n}\n.p-0 {\n padding: 0px;\n}\n.p-2 {\n padding: 0.5rem;\n}\n.pr-2 {\n padding-right: 0.5rem;\n}\n.align-middle {\n vertical-align: middle;\n}\n.text-xl {\n font-size: 1.25rem;\n line-height: 1.75rem;\n}\n.font-bold {\n font-weight: 700;\n}\n.leading-3 {\n line-height: .75rem;\n}\n.leading-6 {\n line-height: 1.5rem;\n}\n.text-white {\n --tw-text-opacity: 1;\n color: rgb(255 255 255 / var(--tw-text-opacity));\n}\n.text-green-900 {\n --tw-text-opacity: 1;\n color: rgb(20 83 45 / var(--tw-text-opacity));\n}\n.text-gray-500 {\n --tw-text-opacity: 1;\n color: rgb(107 114 128 / var(--tw-text-opacity));\n}\n.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.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.filter {\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.transition {\n transition-property: color, background-color, border-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-text-decoration-color, -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-text-decoration-color, -webkit-backdrop-filter;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n.duration-200 {\n transition-duration: 200ms;\n}\n.ease-in {\n transition-timing-function: cubic-bezier(0.4, 0, 1, 1);\n}\n\n.leaflet-container {\n text-align: left;\n}\n\ninput {\n box-sizing: border-box;\n}\n\ntextarea {\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: -40px;\n left: 10px;\n width: 13px;\n}\n\n\n.circle-icon {\n position: relative;\n top: -38px;\n left: 10px;\n width: 13px;\n}\n\n\n.hover\\:bg-gray-100:hover {\n --tw-bg-opacity: 1;\n background-color: rgb(243 244 246 / var(--tw-bg-opacity));\n}\n\n\n.hover\\:bg-white:hover {\n --tw-bg-opacity: 1;\n background-color: rgb(255 255 255 / var(--tw-bg-opacity));\n}\n\n\n.hover\\:text-gray-700:hover {\n --tw-text-opacity: 1;\n color: rgb(55 65 81 / var(--tw-text-opacity));\n}\n\n\n.focus\\:outline-none:focus {\n outline: 2px solid transparent;\n outline-offset: 2px;\n}";
81
+ styleInject(css_248z);
82
+
83
+ /******************************************************************************
84
+ Copyright (c) Microsoft Corporation.
85
+
86
+ Permission to use, copy, modify, and/or distribute this software for any
87
+ purpose with or without fee is hereby granted.
88
+
89
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
90
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
91
+ AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
92
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
93
+ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
94
+ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
95
+ PERFORMANCE OF THIS SOFTWARE.
96
+ ***************************************************************************** */
97
+
98
+ function __rest(s, e) {
99
+ var t = {};
100
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
101
+ t[p] = s[p];
102
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
103
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
104
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
105
+ t[p[i]] = s[p[i]];
106
+ }
107
+ return t;
108
+ }
109
+
110
+ function __spreadArray(to, from, pack) {
111
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
112
+ if (ar || !(i in from)) {
113
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
114
+ ar[i] = from[i];
115
+ }
116
+ }
117
+ return to.concat(ar || Array.prototype.slice.call(from));
118
+ }
119
+
120
+ // DynamicHeroIcon.tsx
121
+ var DynamicHeroIcon = function (props) {
122
+ var icons = __rest(HIcons__namespace
123
+ // @ts-ignore
124
+ , []);
125
+ // @ts-ignore
126
+ var TheIcon = icons[props.icon];
127
+ return (React__namespace.createElement(React__namespace.Fragment, null,
128
+ React__namespace.createElement(TheIcon, { className: "h-6 w-6 text-white", "aria-hidden": "true" })));
129
+ };
130
+
131
+ var LayerContext = React.createContext({
132
+ layers: [],
133
+ addLayer: function () { },
134
+ });
135
+ function useLayerManager(initialLayers) {
136
+ var _a = React.useReducer(function (state, action) {
137
+ switch (action.type) {
138
+ case "ADD LAYER":
139
+ return __spreadArray(__spreadArray([], state, true), [
140
+ action.layer,
141
+ ], false);
142
+ default:
143
+ throw new Error();
144
+ }
145
+ }, initialLayers), layers = _a[0], dispatch = _a[1];
146
+ var addLayer = React.useCallback(function (layer) {
147
+ dispatch({
148
+ type: "ADD LAYER",
149
+ layer: layer
150
+ });
151
+ }, []);
152
+ return { layers: layers, addLayer: addLayer };
153
+ }
154
+ var LayersProvider = function (_a) {
155
+ var initialLayers = _a.initialLayers, children = _a.children;
156
+ return (React__namespace.createElement(LayerContext.Provider, { value: useLayerManager(initialLayers) }, children));
157
+ };
158
+ var useLayers = function () {
159
+ var layers = React.useContext(LayerContext).layers;
160
+ return layers;
161
+ };
162
+ var useAddLayer = function () {
163
+ var addLayer = React.useContext(LayerContext).addLayer;
164
+ return addLayer;
165
+ };
166
+
167
+ function AddButton(_a) {
168
+ var setSelectMode = _a.setSelectMode;
169
+ var layers = useLayers();
170
+ console.log("Layers: " + layers);
171
+ return (React__namespace.createElement("div", { className: "dropdown dropdown-top dropdown-end dropdown-hover z-500 absolute right-5 bottom-5" },
172
+ React__namespace.createElement("button", { tabIndex: 0, className: "z-500 border-0 m-0 mt-2 p-0 w-14 h-14 cursor-pointer bg-white rounded-full hover:bg-gray-100 mouse drop-shadow-md transition ease-in duration-200 focus:outline-none" },
173
+ React__namespace.createElement("svg", { viewBox: "0 0 20 20", enableBackground: "new 0 0 20 20", className: "w-6 h-6 inline-block" },
174
+ React__namespace.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" }))),
175
+ React__namespace.createElement("ul", { tabIndex: 0, className: "dropdown-content pr-2 mb-0 list-none" }, layers.map(function (layer) { return (React__namespace.createElement("li", { key: layer.name },
176
+ React__namespace.createElement("a", null,
177
+ React__namespace.createElement("div", { className: "tooltip tooltip-left", "data-tip": layer.menuText },
178
+ React__namespace.createElement("button", { tabIndex: 0, className: "z-500 border-0 p-0 mb-2 mt-2 w-10 h-10 cursor-pointer rounded-full mouse drop-shadow-md transition ease-in duration-200 focus:outline-none", style: { backgroundColor: layer.menuColor }, onClick: function () { setSelectMode(layer); } },
179
+ React__namespace.createElement(DynamicHeroIcon, { icon: layer.menuIcon })))))); }))));
180
+ }
181
+
182
+ var ItemContext = React.createContext({
183
+ items: [],
184
+ addItem: function () { },
185
+ updateItem: function () { },
186
+ removeItem: function () { }
187
+ });
188
+ function useItemsManager(initialItems) {
189
+ var _a = React.useReducer(function (state, action) {
190
+ switch (action.type) {
191
+ case "ADD":
192
+ return __spreadArray(__spreadArray([], state, true), [
193
+ action.item,
194
+ ], false);
195
+ case "UPDATE":
196
+ return state.map(function (item) {
197
+ if (item.id === action.item.id) {
198
+ return action.item;
199
+ }
200
+ return item;
201
+ });
202
+ case "REMOVE":
203
+ return state.filter(function (item) { return item !== action.item; });
204
+ default:
205
+ throw new Error();
206
+ }
207
+ }, initialItems), items = _a[0], dispatch = _a[1];
208
+ var addItem = React.useCallback(function (item) {
209
+ dispatch({
210
+ type: "ADD",
211
+ item: item,
212
+ });
213
+ }, []);
214
+ var updateItem = React.useCallback(function (item) {
215
+ dispatch({
216
+ type: "UPDATE",
217
+ item: item,
218
+ });
219
+ }, []);
220
+ var removeItem = React.useCallback(function (item) {
221
+ dispatch({
222
+ type: "REMOVE",
223
+ item: item,
224
+ });
225
+ }, []);
226
+ return { items: items, updateItem: updateItem, addItem: addItem, removeItem: removeItem };
227
+ }
228
+ var ItemsProvider = function (_a) {
229
+ var initialItems = _a.initialItems, children = _a.children;
230
+ return (React__namespace.createElement(ItemContext.Provider, { value: useItemsManager(initialItems) }, children));
231
+ };
232
+ var useItems = function () {
233
+ var items = React.useContext(ItemContext).items;
234
+ return items;
235
+ };
236
+ var useAddItem = function () {
237
+ var addItem = React.useContext(ItemContext).addItem;
238
+ return addItem;
239
+ };
240
+ var useUpdateItem = function () {
241
+ var updateItem = React.useContext(ItemContext).updateItem;
242
+ return updateItem;
243
+ };
244
+ var useRemoveItem = function () {
245
+ var removeItem = React.useContext(ItemContext).removeItem;
246
+ return removeItem;
247
+ };
248
+
249
+ function NewItemPopup(props) {
250
+ var _a = React.useState(''), name = _a[0], setName = _a[1];
251
+ var _b = React.useState(''), text = _b[0], setText = _b[1];
252
+ var map = reactLeaflet.useMap();
253
+ var addItem = useAddItem();
254
+ var updateItem = useUpdateItem();
255
+ var handleSubmit = function (evt) {
256
+ evt.preventDefault();
257
+ console.log("New Item Popup is adding Item ...");
258
+ if (props.item) {
259
+ updateItem(new Item(props.item.id, name, text, new Geometry(props.position.lng, props.position.lat), props.layer));
260
+ }
261
+ else {
262
+ addItem(new Item(crypto.randomUUID(), name, text, new Geometry(props.position.lng, props.position.lat), props.layer));
263
+ }
264
+ map.closePopup();
265
+ props.setNewItemPopup(null);
266
+ };
267
+ var resetPopup = function () {
268
+ setName('');
269
+ setText('');
270
+ };
271
+ var setItemValues = function () {
272
+ var _a, _b;
273
+ if (props.item) {
274
+ setName((_a = props.item) === null || _a === void 0 ? void 0 : _a.name);
275
+ setText((_b = props.item) === null || _b === void 0 ? void 0 : _b.text);
276
+ console.log('set name + txt');
277
+ }
278
+ };
279
+ React.useEffect(function () {
280
+ setItemValues();
281
+ }, [props.item]);
282
+ return (React__namespace.createElement(reactLeaflet.Popup, { maxHeight: 300, minWidth: 275, maxWidth: 275, autoPanPadding: [20, 5], eventHandlers: {
283
+ remove: resetPopup
284
+ }, position: props.position },
285
+ React__namespace.createElement("form", { onSubmit: handleSubmit },
286
+ React__namespace.createElement("div", { className: 'flex justify-center' },
287
+ React__namespace.createElement("b", { className: "text-xl font-bold" },
288
+ "New ",
289
+ props.layer.name)),
290
+ React__namespace.createElement("input", { type: "text", placeholder: "Name", className: "input input-bordered w-full max-w-xs mt-5", value: name, onChange: function (e) { return setName(e.target.value); } }),
291
+ React__namespace.createElement("textarea", { className: "textarea textarea-bordered w-full mt-5", placeholder: "Text", value: text, onChange: function (e) { return setText(e.target.value); } }),
292
+ React__namespace.createElement("div", { className: 'flex justify-center' },
293
+ React__namespace.createElement("button", { className: "btn mt-5 place-self-center" }, "Save")))));
294
+ }
295
+
296
+ var TagContext = React.createContext({
297
+ tags: [],
298
+ addTag: function () { },
299
+ removeTag: function () { }
300
+ });
301
+ function useTagsManager(initialTags) {
302
+ var _a = React.useReducer(function (state, action) {
303
+ switch (action.type) {
304
+ case "ADD":
305
+ return __spreadArray(__spreadArray([], state, true), [
306
+ action.tag,
307
+ ], false);
308
+ case "REMOVE":
309
+ return state.filter(function (_a) {
310
+ var id = _a.id;
311
+ return id !== action.id;
312
+ });
313
+ default:
314
+ throw new Error();
315
+ }
316
+ }, initialTags), tags = _a[0], dispatch = _a[1];
317
+ var addTag = React.useCallback(function (tag) {
318
+ dispatch({
319
+ type: "ADD",
320
+ tag: tag,
321
+ });
322
+ }, []);
323
+ var removeTag = React.useCallback(function (id) {
324
+ dispatch({
325
+ type: "REMOVE",
326
+ id: id,
327
+ });
328
+ }, []);
329
+ return { tags: tags, addTag: addTag, removeTag: removeTag };
330
+ }
331
+ var TagsProvider = function (_a) {
332
+ var initialTags = _a.initialTags, children = _a.children;
333
+ return (React__namespace.createElement(TagContext.Provider, { value: useTagsManager(initialTags) }, children));
334
+ };
335
+ var useTags = function () {
336
+ var tags = React.useContext(TagContext).tags;
337
+ return tags;
338
+ };
339
+ var useAddTag = function () {
340
+ var addTag = React.useContext(TagContext).addTag;
341
+ return addTag;
342
+ };
343
+
344
+ function MapEventListener(props) {
345
+ reactLeaflet.useMapEvents({
346
+ click: function (e) {
347
+ console.log(e.latlng.lat + ',' + e.latlng.lng);
348
+ console.log(props.selectMode);
349
+ if (props.selectMode != null) {
350
+ props.setNewItemPopup({ layer: props.selectMode, position: e.latlng });
351
+ props.setSelectMode(null);
352
+ }
353
+ }
354
+ });
355
+ return null;
356
+ }
357
+ function UtopiaMap(_a) {
358
+ 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 L.LatLng(50.6, 9.5) : _d, _e = _a.zoom, zoom = _e === void 0 ? 10 : _e, children = _a.children;
359
+ var _f = React.useState(null), selectMode = _f[0], setSelectMode = _f[1];
360
+ var _g = React.useState(null), newItemPopup = _g[0], setNewItemPopup = _g[1];
361
+ return (React__namespace.createElement(LayersProvider, { initialLayers: [] },
362
+ React__namespace.createElement(TagsProvider, { initialTags: [] },
363
+ React__namespace.createElement(ItemsProvider, { initialItems: [] },
364
+ React__namespace.createElement("div", { className: (selectMode != null ? "crosshair-cursor-enabled" : undefined) },
365
+ React__namespace.createElement(reactLeaflet.MapContainer, { style: { height: height, width: width }, center: center, zoom: zoom },
366
+ 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" }),
367
+ React__namespace.createElement(MarkerClusterGroup__default["default"], { showCoverageOnHover: true, chunkedLoading: true, maxClusterRadius: 50 }, React__namespace.Children.toArray(children).map(function (child) {
368
+ return React__namespace.isValidElement(child) ? React__namespace.cloneElement(child, { setNewItemPopup: setNewItemPopup }) : child;
369
+ })),
370
+ React__namespace.createElement(MapEventListener, { setSelectMode: setSelectMode, selectMode: selectMode, setNewItemPopup: setNewItemPopup }),
371
+ newItemPopup &&
372
+ React__namespace.createElement(NewItemPopup, { position: newItemPopup.position, layer: newItemPopup.layer, setNewItemPopup: setNewItemPopup, item: newItemPopup.item }),
373
+ React__namespace.createElement(AddButton, { setSelectMode: setSelectMode })),
374
+ selectMode != null &&
375
+ React__namespace.createElement("div", { className: "button z-500 absolute right-5 top-5 drop-shadow-md" },
376
+ React__namespace.createElement("div", { className: "alert bg-white text-green-900" },
377
+ React__namespace.createElement("div", null,
378
+ React__namespace.createElement("span", null,
379
+ "Select ",
380
+ selectMode.name,
381
+ " position!")))))))));
382
+ }
41
383
 
42
384
  var createSvg = function (shape, markerColor, borderColor) {
43
385
  var svgMap = {
@@ -51,9 +393,9 @@ var createSvg = function (shape, markerColor, borderColor) {
51
393
  var addIcon = function (icon) {
52
394
  switch (icon) {
53
395
  case "circle-solid":
54
- 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>';
396
+ 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>';
55
397
  case "calendar-days-solid":
56
- 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>';
398
+ 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>';
57
399
  default:
58
400
  return "";
59
401
  }
@@ -69,26 +411,83 @@ var MarkerIconFactory = function (shape, color1, color2, icon) {
69
411
  });
70
412
  };
71
413
 
72
- var MarkerPopup = function (props) {
414
+ function replaceURLs(message) {
415
+ if (!message)
416
+ return "";
417
+ var urlRegex = /(^| )(http:\/\/www\.|https:\/\/www\.|http:\/\/|https:\/\/)?[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,10}(:[0-9]{1,10})?(\/.*)?$/gm;
418
+ message = message.replace(urlRegex, function (url) {
419
+ var hyperlink = url.replace(' ', '');
420
+ if (!hyperlink.match('^https?:\/\/')) {
421
+ hyperlink = 'http://' + hyperlink;
422
+ }
423
+ return '<a href="' + hyperlink + '" target="_blank" rel="noopener noreferrer">' + url + '</a>';
424
+ });
425
+ var mailRegex = /([a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\.[a-zA-Z0-9_-]+)/gi;
426
+ message = message.replace(mailRegex, function (mail) {
427
+ return '<a href="mailto:' + mail + '">' + mail + '</a>';
428
+ });
429
+ return message;
430
+ }
431
+
432
+ var Popup = function (props) {
73
433
  var item = props.item;
74
- return (React__namespace.createElement(reactLeaflet.Popup, null,
75
- React__namespace.createElement("b", { style: { fontSize: '1.0rem' } }, item.name),
76
- React__namespace.createElement("p", null,
77
- item.start || "",
78
- " ",
79
- item.end || ""),
80
- React__namespace.createElement("p", null, item.text),
81
- item.tags &&
82
- props.tags.map(function (tag) { return (React__namespace.createElement("span", { className: "badge", style: { backgroundColor: tag.color, marginLeft: '.2rem', fontSize: "100%" }, key: tag.id },
434
+ var tags = props.tags;
435
+ var removeItem = useRemoveItem();
436
+ var map = reactLeaflet.useMap();
437
+ var removeItemFromMap = function (event) {
438
+ removeItem(item);
439
+ event.stopPropagation();
440
+ map.closePopup();
441
+ };
442
+ var openEditPopup = function (event) {
443
+ event.stopPropagation();
444
+ map.closePopup();
445
+ if (props.setNewItemPopup)
446
+ props.setNewItemPopup({ position: new L.LatLng(item.position.coordinates[1], item.position.coordinates[0]), layer: item.layer, item: item, setNewItemPopup: props.setNewItemPopup });
447
+ };
448
+ return (React__namespace.createElement(reactLeaflet.Popup, { maxHeight: 300, minWidth: 275, maxWidth: 275, autoPanPadding: [20, 5] },
449
+ React__namespace.createElement("div", { className: 'flex flex-row' },
450
+ React__namespace.createElement("div", { className: 'basis-5/6' },
451
+ React__namespace.createElement("b", { className: "text-xl font-bold" }, item.name)),
452
+ React__namespace.createElement("div", { className: 'basis-1/6' },
453
+ React__namespace.createElement("div", { className: "dropdown dropdown-right" },
454
+ React__namespace.createElement("label", { tabIndex: 0, className: "btn m-1 bg-white hover:bg-white text-gray-500 hover:text-gray-700 leading-3" },
455
+ React__namespace.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", className: "h-5 w-5", viewBox: "0 0 20 20", fill: "currentColor" },
456
+ React__namespace.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" }))),
457
+ React__namespace.createElement("ul", { tabIndex: 0, className: "dropdown-content menu p-2 shadow bg-base-100 rounded-box" },
458
+ React__namespace.createElement("li", null,
459
+ React__namespace.createElement("a", { className: 'bg-white hover:bg-white text-gray-500 hover:text-gray-700', onClick: openEditPopup },
460
+ React__namespace.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", className: "h-5 w-5", viewBox: "0 0 20 20", fill: "currentColor" },
461
+ React__namespace.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" })))),
462
+ React__namespace.createElement("li", null,
463
+ React__namespace.createElement("a", { className: 'bg-white hover:bg-white text-gray-500 hover:text-gray-700', onClick: removeItemFromMap },
464
+ React__namespace.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", className: "h-5 w-5", viewBox: "0 0 20 20", fill: "currentColor" },
465
+ React__namespace.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" })))))))),
466
+ item.start && item.end &&
467
+ React__namespace.createElement("div", { className: "flex flex-row" },
468
+ React__namespace.createElement("div", { className: "basis-2/5" },
469
+ React__namespace.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", className: "h-6 w-6 mr-2", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", strokeWidth: 2 },
470
+ React__namespace.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" })),
471
+ React__namespace.createElement("span", { className: 'align-middle' }, new Date(item.start).toISOString().substring(0, 10) || "")),
472
+ React__namespace.createElement("div", { className: "basis-1/5 place-content-center" },
473
+ React__namespace.createElement("span", null, "-")),
474
+ React__namespace.createElement("div", { className: "basis-2/5" },
475
+ React__namespace.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", className: "h-6 w-6 mr-2", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", strokeWidth: 2 },
476
+ React__namespace.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" })),
477
+ React__namespace.createElement("span", { className: 'align-middle leading-6' }, new Date(item.end).toISOString().substring(0, 10) || ""))),
478
+ React__namespace.createElement("p", { style: { whiteSpace: "pre-wrap" }, dangerouslySetInnerHTML: { __html: replaceURLs(item.text) } }),
479
+ React__namespace.createElement("p", null, item.tags &&
480
+ tags.map(function (tag) { return (React__namespace.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 },
83
481
  "#",
84
- tag.name)); })));
482
+ tag.name)); }))));
85
483
  };
86
484
 
87
- ___$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}");
88
-
89
- var UtopiaMap = function (props) {
485
+ var Layer = function (props) {
90
486
  var _a;
91
- var tagMap = new Map((_a = props.tags) === null || _a === void 0 ? void 0 : _a.map(function (key) { return [key.id, key]; }));
487
+ var tags = useTags();
488
+ // create a JS-Map with all Tags
489
+ var tagMap = new Map(tags === null || tags === void 0 ? void 0 : tags.map(function (key) { return [key.id, key]; }));
490
+ // returns all tags for passed item
92
491
  var getTags = function (item) {
93
492
  var tags = [];
94
493
  item.tags && item.tags.forEach(function (element) {
@@ -98,26 +497,46 @@ var UtopiaMap = function (props) {
98
497
  });
99
498
  return tags;
100
499
  };
101
- return (React__namespace.createElement(reactLeaflet.MapContainer, { style: { height: props.height, width: props.width }, center: props.center, zoom: props.zoom },
102
- 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" }),
103
- props.places &&
104
- props.places.map(function (place) {
105
- var tags = getTags(place);
106
- var color1 = "#555";
107
- var color2 = "RGBA(35, 31, 32, 0.2)";
108
- if (tags[0]) {
109
- color1 = tags[0].color;
110
- }
111
- if (tags[1]) {
112
- color2 = tags[1].color;
113
- }
114
- 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]] },
115
- React__namespace.createElement(MarkerPopup, { item: place, tags: tags })));
116
- }),
117
- props.events &&
118
- (props.events).map(function (event) { return (React__namespace.createElement(reactLeaflet.Marker, { icon: MarkerIconFactory('square', '#6d398b', 'RGBA(35, 31, 32, 0.2)', 'calendar-days-solid'), key: event.id, position: [event.position.coordinates[1], event.position.coordinates[0]] },
119
- React__namespace.createElement(MarkerPopup, { item: event, tags: getTags(event) }))); })));
500
+ var items = useItems();
501
+ var addItem = useAddItem();
502
+ var addLayer = useAddLayer();
503
+ React.useEffect(function () {
504
+ props.data.map(function (item) {
505
+ item.layer = props;
506
+ addItem(item);
507
+ });
508
+ addLayer(props);
509
+ }, []);
510
+ return (React__namespace.createElement(React__namespace.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 :
511
+ _a.map(function (place) {
512
+ var tags = getTags(place);
513
+ var color1 = "#666";
514
+ var color2 = "RGBA(35, 31, 32, 0.2)";
515
+ if (tags[0]) {
516
+ color1 = tags[0].color;
517
+ }
518
+ if (tags[1]) {
519
+ color2 = tags[1].color;
520
+ }
521
+ return (React__namespace.createElement(reactLeaflet.Marker, { icon: MarkerIconFactory(props.markerShape, color1, color2, props.markerIcon), key: place.id, position: [place.position.coordinates[1], place.position.coordinates[0]] },
522
+ React__namespace.createElement(Popup, { item: place, tags: tags, setNewItemPopup: props.setNewItemPopup })));
523
+ }),
524
+ props.children));
120
525
  };
121
526
 
122
- exports["default"] = UtopiaMap;
527
+ function Tags(_a) {
528
+ var data = _a.data;
529
+ var addTag = useAddTag();
530
+ React.useEffect(function () {
531
+ data.map(function (tag) {
532
+ addTag(tag);
533
+ });
534
+ }, []);
535
+ return (React__namespace.createElement(React__namespace.Fragment, null));
536
+ }
537
+
538
+ exports.Item = Item;
539
+ exports.Layer = Layer;
540
+ exports.Tags = Tags;
541
+ exports.UtopiaMap = UtopiaMap;
123
542
  //# sourceMappingURL=index.js.map