utopia-ui 3.0.63 → 3.0.65

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -4,7 +4,7 @@ var jsxRuntime = require('react/jsx-runtime');
4
4
  var leaflet = require('leaflet');
5
5
  var reactLeaflet = require('react-leaflet');
6
6
  var reactQuery = require('@tanstack/react-query');
7
- var react = require('react');
7
+ var React = require('react');
8
8
  var reactRouterDom = require('react-router-dom');
9
9
  var reactToastify = require('react-toastify');
10
10
  require('leaflet/dist/leaflet.css');
@@ -27,6 +27,25 @@ var reactImageCrop = require('react-image-crop');
27
27
  require('react-image-crop/dist/ReactCrop.css');
28
28
  var reactColorful = require('react-colorful');
29
29
 
30
+ function _interopNamespaceDefault(e) {
31
+ var n = Object.create(null);
32
+ if (e) {
33
+ Object.keys(e).forEach(function (k) {
34
+ if (k !== 'default') {
35
+ var d = Object.getOwnPropertyDescriptor(e, k);
36
+ Object.defineProperty(n, k, d.get ? d : {
37
+ enumerable: true,
38
+ get: function () { return e[k]; }
39
+ });
40
+ }
41
+ });
42
+ }
43
+ n.default = e;
44
+ return Object.freeze(n);
45
+ }
46
+
47
+ var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
48
+
30
49
  function styleInject(css, ref) {
31
50
  if ( ref === void 0 ) ref = {};
32
51
  var insertAt = ref.insertAt;
@@ -54,54 +73,55 @@ function styleInject(css, ref) {
54
73
  }
55
74
  }
56
75
 
57
- var css_248z$4 = "*, ::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-gradient-from-position: ;\n --tw-gradient-via-position: ;\n --tw-gradient-to-position: ;\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 --tw-contain-size: ;\n --tw-contain-layout: ;\n --tw-contain-paint: ;\n --tw-contain-style: ;\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-gradient-from-position: ;\n --tw-gradient-via-position: ;\n --tw-gradient-to-position: ;\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 --tw-contain-size: ;\n --tw-contain-layout: ;\n --tw-contain-paint: ;\n --tw-contain-style: ;\n}/*\n! tailwindcss v3.4.17 | 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.\n7. Disable tap highlights on iOS\n*/\n\nhtml,\n:host {\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: Helvetica, sans-serif, Roboto; /* 4 */\n font-feature-settings: normal; /* 5 */\n font-variation-settings: normal; /* 6 */\n -webkit-tap-highlight-color: transparent; /* 7 */\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. Use the user's configured `mono` font-feature-settings by default.\n3. Use the user's configured `mono` font-variation-settings by default.\n4. Correct the odd `em` font sizing in all browsers.\n*/\n\ncode,\nkbd,\nsamp,\npre {\n font-family: ui-monospace, monospace; /* 1 */\n font-feature-settings: normal; /* 2 */\n font-variation-settings: normal; /* 3 */\n font-size: 1em; /* 4 */\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-feature-settings: inherit; /* 1 */\n font-variation-settings: inherit; /* 1 */\n font-size: 100%; /* 1 */\n font-weight: inherit; /* 1 */\n line-height: inherit; /* 1 */\n letter-spacing: 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,\ninput:where([type='button']),\ninput:where([type='reset']),\ninput:where([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/*\nReset default styling for dialogs.\n*/\ndialog {\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]:where(:not([hidden=\"until-found\"])) {\n display: none;\n}\n\n:root,\n[data-theme] {\n background-color: var(--fallback-b1,oklch(var(--b1)/1));\n color: var(--fallback-bc,oklch(var(--bc)/1));\n}\n\n@supports not (color: oklch(0% 0 0)) {\n\n :root {\n color-scheme: light;\n --fallback-p: #491eff;\n --fallback-pc: #d4dbff;\n --fallback-s: #ff41c7;\n --fallback-sc: #fff9fc;\n --fallback-a: #00cfbd;\n --fallback-ac: #00100d;\n --fallback-n: #2b3440;\n --fallback-nc: #d7dde4;\n --fallback-b1: #ffffff;\n --fallback-b2: #e5e6e6;\n --fallback-b3: #e5e6e6;\n --fallback-bc: #1f2937;\n --fallback-in: #00b3f0;\n --fallback-inc: #000000;\n --fallback-su: #00ca92;\n --fallback-suc: #000000;\n --fallback-wa: #ffc22d;\n --fallback-wac: #000000;\n --fallback-er: #ff6f70;\n --fallback-erc: #000000;\n }\n\n @media (prefers-color-scheme: dark) {\n\n :root {\n color-scheme: dark;\n --fallback-p: #7582ff;\n --fallback-pc: #050617;\n --fallback-s: #ff71cf;\n --fallback-sc: #190211;\n --fallback-a: #00c7b5;\n --fallback-ac: #000e0c;\n --fallback-n: #2a323c;\n --fallback-nc: #a6adbb;\n --fallback-b1: #1d232a;\n --fallback-b2: #191e24;\n --fallback-b3: #15191e;\n --fallback-bc: #a6adbb;\n --fallback-in: #00b3f0;\n --fallback-inc: #000000;\n --fallback-su: #00ca92;\n --fallback-suc: #000000;\n --fallback-wa: #ffc22d;\n --fallback-wac: #000000;\n --fallback-er: #ff6f70;\n --fallback-erc: #000000;\n }\n }\n}\n\nhtml {\n -webkit-tap-highlight-color: transparent;\n}\n\n* {\n scrollbar-color: color-mix(in oklch, currentColor 35%, transparent) transparent;\n}\n\n*:hover {\n scrollbar-color: color-mix(in oklch, currentColor 60%, transparent) transparent;\n}\n\n:root {\n color-scheme: light;\n --in: 72.06% 0.191 231.6;\n --su: 64.8% 0.150 160;\n --wa: 84.71% 0.199 83.87;\n --er: 71.76% 0.221 22.18;\n --pc: 89.824% 0.06192 275.75;\n --ac: 15.352% 0.0368 183.61;\n --inc: 0% 0 0;\n --suc: 0% 0 0;\n --wac: 0% 0 0;\n --erc: 0% 0 0;\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-focus-scale: 0.95;\n --border-btn: 1px;\n --tab-border: 1px;\n --tab-radius: 0.5rem;\n --p: 49.12% 0.3096 275.75;\n --s: 69.71% 0.329 342.55;\n --sc: 98.71% 0.0106 342.55;\n --a: 76.76% 0.184 183.61;\n --n: 32.1785% 0.02476 255.701624;\n --nc: 89.4994% 0.011585 252.096176;\n --b1: 100% 0 0;\n --b2: 96.1151% 0 0;\n --b3: 92.4169% 0.00108 197.137559;\n --bc: 27.8078% 0.029596 256.847952;\n}\n\n@media (prefers-color-scheme: dark) {\n\n :root {\n color-scheme: dark;\n --in: 72.06% 0.191 231.6;\n --su: 64.8% 0.150 160;\n --wa: 84.71% 0.199 83.87;\n --er: 71.76% 0.221 22.18;\n --pc: 13.138% 0.0392 275.75;\n --sc: 14.96% 0.052 342.55;\n --ac: 14.902% 0.0334 183.61;\n --inc: 0% 0 0;\n --suc: 0% 0 0;\n --wac: 0% 0 0;\n --erc: 0% 0 0;\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-focus-scale: 0.95;\n --border-btn: 1px;\n --tab-border: 1px;\n --tab-radius: 0.5rem;\n --p: 65.69% 0.196 275.75;\n --s: 74.8% 0.26 342.55;\n --a: 74.51% 0.167 183.61;\n --n: 31.3815% 0.021108 254.139175;\n --nc: 74.6477% 0.0216 264.435964;\n --b1: 25.3267% 0.015896 252.417568;\n --b2: 23.2607% 0.013807 253.100675;\n --b3: 21.1484% 0.01165 254.087939;\n --bc: 74.6477% 0.0216 264.435964;\n }\n}\n\n[data-theme=light] {\n color-scheme: light;\n --in: 72.06% 0.191 231.6;\n --su: 64.8% 0.150 160;\n --wa: 84.71% 0.199 83.87;\n --er: 71.76% 0.221 22.18;\n --pc: 89.824% 0.06192 275.75;\n --ac: 15.352% 0.0368 183.61;\n --inc: 0% 0 0;\n --suc: 0% 0 0;\n --wac: 0% 0 0;\n --erc: 0% 0 0;\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-focus-scale: 0.95;\n --border-btn: 1px;\n --tab-border: 1px;\n --tab-radius: 0.5rem;\n --p: 49.12% 0.3096 275.75;\n --s: 69.71% 0.329 342.55;\n --sc: 98.71% 0.0106 342.55;\n --a: 76.76% 0.184 183.61;\n --n: 32.1785% 0.02476 255.701624;\n --nc: 89.4994% 0.011585 252.096176;\n --b1: 100% 0 0;\n --b2: 96.1151% 0 0;\n --b3: 92.4169% 0.00108 197.137559;\n --bc: 27.8078% 0.029596 256.847952;\n}\n\n[data-theme=dark] {\n color-scheme: dark;\n --in: 72.06% 0.191 231.6;\n --su: 64.8% 0.150 160;\n --wa: 84.71% 0.199 83.87;\n --er: 71.76% 0.221 22.18;\n --pc: 13.138% 0.0392 275.75;\n --sc: 14.96% 0.052 342.55;\n --ac: 14.902% 0.0334 183.61;\n --inc: 0% 0 0;\n --suc: 0% 0 0;\n --wac: 0% 0 0;\n --erc: 0% 0 0;\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-focus-scale: 0.95;\n --border-btn: 1px;\n --tab-border: 1px;\n --tab-radius: 0.5rem;\n --p: 65.69% 0.196 275.75;\n --s: 74.8% 0.26 342.55;\n --a: 74.51% 0.167 183.61;\n --n: 31.3815% 0.021108 254.139175;\n --nc: 74.6477% 0.0216 264.435964;\n --b1: 25.3267% 0.015896 252.417568;\n --b2: 23.2607% 0.013807 253.100675;\n --b3: 21.1484% 0.01165 254.087939;\n --bc: 74.6477% 0.0216 264.435964;\n}\n\n[data-theme=cupcake] {\n color-scheme: light;\n --in: 72.06% 0.191 231.6;\n --su: 64.8% 0.150 160;\n --wa: 84.71% 0.199 83.87;\n --er: 71.76% 0.221 22.18;\n --pc: 15.2344% 0.017892 200.026556;\n --sc: 15.787% 0.020249 356.29965;\n --ac: 15.8762% 0.029206 78.618794;\n --nc: 84.7148% 0.013247 313.189598;\n --inc: 0% 0 0;\n --suc: 0% 0 0;\n --wac: 0% 0 0;\n --erc: 0% 0 0;\n --rounded-box: 1rem;\n --rounded-badge: 1.9rem;\n --animation-btn: 0.25s;\n --animation-input: .2s;\n --btn-focus-scale: 0.95;\n --border-btn: 1px;\n --p: 76.172% 0.089459 200.026556;\n --s: 78.9351% 0.101246 356.29965;\n --a: 79.3811% 0.146032 78.618794;\n --n: 23.5742% 0.066235 313.189598;\n --b1: 97.7882% 0.00418 56.375637;\n --b2: 93.9822% 0.007638 61.449292;\n --b3: 91.5861% 0.006811 53.440502;\n --bc: 23.5742% 0.066235 313.189598;\n --rounded-btn: 1.9rem;\n --tab-border: 2px;\n --tab-radius: 0.7rem;\n}\n\n[data-theme=retro] {\n color-scheme: light;\n --inc: 90.923% 0.043042 262.880917;\n --suc: 12.541% 0.033982 149.213788;\n --wac: 13.3168% 0.031484 58.31834;\n --erc: 13.144% 0.0398 27.33;\n --animation-btn: 0.25s;\n --animation-input: .2s;\n --btn-focus-scale: 0.95;\n --border-btn: 1px;\n --tab-border: 1px;\n --p: 76.8664% 0.104092 22.664655;\n --pc: 26.5104% 0.006243 0.522862;\n --s: 80.7415% 0.052534 159.094608;\n --sc: 26.5104% 0.006243 0.522862;\n --a: 70.3919% 0.125455 52.953428;\n --ac: 26.5104% 0.006243 0.522862;\n --n: 28.4181% 0.009519 355.534017;\n --nc: 92.5604% 0.025113 89.217311;\n --b1: 91.6374% 0.034554 90.51575;\n --b2: 88.2722% 0.049418 91.774344;\n --b3: 84.133% 0.065952 90.856665;\n --bc: 26.5104% 0.006243 0.522862;\n --in: 54.615% 0.215208 262.880917;\n --su: 62.7052% 0.169912 149.213788;\n --wa: 66.584% 0.157422 58.31834;\n --er: 65.72% 0.199 27.33;\n --rounded-box: 0.4rem;\n --rounded-btn: 0.4rem;\n --rounded-badge: 0.4rem;\n --tab-radius: 0.4rem;\n}\n\n[data-theme=cyberpunk] {\n color-scheme: light;\n --b2: 87.8943% 0.16647 104.32;\n --b3: 81.2786% 0.15394 104.32;\n --in: 72.06% 0.191 231.6;\n --su: 64.8% 0.150 160;\n --wa: 84.71% 0.199 83.87;\n --er: 71.76% 0.221 22.18;\n --bc: 18.902% 0.0358 104.32;\n --pc: 14.844% 0.0418 6.35;\n --sc: 16.666% 0.0368 204.72;\n --ac: 14.372% 0.04352 310.43;\n --inc: 0% 0 0;\n --suc: 0% 0 0;\n --wac: 0% 0 0;\n --erc: 0% 0 0;\n --animation-btn: 0.25s;\n --animation-input: .2s;\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: 74.22% 0.209 6.35;\n --s: 83.33% 0.184 204.72;\n --a: 71.86% 0.2176 310.43;\n --n: 23.04% 0.065 269.31;\n --nc: 94.51% 0.179 104.32;\n --b1: 94.51% 0.179 104.32;\n --rounded-box: 0;\n --rounded-btn: 0;\n --rounded-badge: 0;\n --tab-radius: 0;\n}\n\n[data-theme=aqua] {\n color-scheme: dark;\n --b2: 45.3464% 0.118611 261.181672;\n --b3: 41.9333% 0.109683 261.181672;\n --bc: 89.7519% 0.025508 261.181672;\n --sc: 12.1365% 0.02175 309.782946;\n --ac: 18.6854% 0.020445 94.555431;\n --nc: 12.2124% 0.023402 243.760661;\n --inc: 90.923% 0.043042 262.880917;\n --suc: 12.541% 0.033982 149.213788;\n --wac: 13.3168% 0.031484 58.31834;\n --erc: 14.79% 0.038 27.33;\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-focus-scale: 0.95;\n --border-btn: 1px;\n --tab-border: 1px;\n --tab-radius: 0.5rem;\n --p: 85.6617% 0.14498 198.6458;\n --pc: 40.1249% 0.068266 197.603872;\n --s: 60.6827% 0.108752 309.782946;\n --a: 93.4269% 0.102225 94.555431;\n --n: 61.0622% 0.117009 243.760661;\n --b1: 48.7596% 0.127539 261.181672;\n --in: 54.615% 0.215208 262.880917;\n --su: 62.7052% 0.169912 149.213788;\n --wa: 66.584% 0.157422 58.31834;\n --er: 73.95% 0.19 27.33;\n}\n\n[data-theme=docutopia] {\n --p: 54.645% 0.29421 298.46034;\n --b2: 25.8897% 0.107132 328.136712;\n --b3: 23.941% 0.099069 328.136712;\n --in: 72.06% 0.191 231.6;\n --su: 64.8% 0.150 160;\n --wa: 84.71% 0.199 83.87;\n --er: 71.76% 0.221 22.18;\n --pc: 90.929% 0.058842 298.46034;\n --sc: 13.9726% 0.031813 159.602475;\n --ac: 91.4207% 0.047244 260.255903;\n --nc: 84.1911% 0.008064 74.211583;\n --inc: 0% 0 0;\n --suc: 0% 0 0;\n --wac: 0% 0 0;\n --erc: 0% 0 0;\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-focus-scale: 0.95;\n --border-btn: 1px;\n --tab-border: 1px;\n --tab-radius: 0.5rem;\n --s: 69.8629% 0.159065 159.602475;\n --a: 57.1034% 0.236222 260.255903;\n --n: 20.9553% 0.040319 74.211583;\n --bc: 81.3966% 0.126754 58.524936;\n --b1: 27.8384% 0.115196 328.136712;\n}\n\ninput[type=\"range\"]::-webkit-slider-thumb {\n height: 1rem;\n width: 1rem;\n border-radius: 9999px;\n border: 0;\n appearance: none;\n -moz-appearance: none;\n -webkit-appearance: none;\n cursor: pointer;\n}\n\n.dark input[type=\"range\"]::-webkit-slider-thumb {}\n\ninput[type=\"range\"]:disabled::-webkit-slider-thumb {}\n\ninput[type=\"range\"]:disabled:focus::-webkit-slider-thumb {}\n\ninput[type=\"range\"]:disabled:active::-webkit-slider-thumb {}\n\n.dark input[type=\"range\"]:disabled::-webkit-slider-thumb {}\n\n.dark input[type=\"range\"]:disabled:focus::-webkit-slider-thumb {}\n\n.dark input[type=\"range\"]:disabled:active::-webkit-slider-thumb {}\n\ninput[type=\"range\"]::-moz-range-thumb {\n height: 1rem;\n width: 1rem;\n border-radius: 9999px;\n border: 0;\n appearance: none;\n -moz-appearance: none;\n -webkit-appearance: none;\n cursor: pointer;\n}\n\n.dark input[type=\"range\"]::-moz-range-thumb {}\n\ninput[type=\"range\"]:disabled::-moz-range-thumb {}\n\n.dark input[type=\"range\"]:disabled::-moz-range-thumb {}\n\ninput[type=\"range\"]::-moz-range-progress {}\n\ninput[type=\"range\"]::-ms-fill-lower {}\n\n.dark input[type=\"range\"]::-moz-range-progress {}\n\n.dark input[type=\"range\"]::-ms-fill-lower {}\n\ninput[type=\"range\"]:focus {\n outline: none;\n}\n\ninput[type=\"range\"]:focus::-webkit-slider-thumb {}\n\ninput[type=\"range\"]:active::-webkit-slider-thumb {}\n\n.dark input[type=\"range\"]:focus::-webkit-slider-thumb {}\n\n.dark input[type=\"range\"]:active::-webkit-slider-thumb {}\n.tw-alert {\n display: grid;\n width: 100%;\n grid-auto-flow: row;\n align-content: flex-start;\n align-items: center;\n justify-items: center;\n gap: 1rem;\n text-align: center;\n border-radius: var(--rounded-box, 1rem);\n border-width: 1px;\n --tw-border-opacity: 1;\n border-color: var(--fallback-b2,oklch(var(--b2)/var(--tw-border-opacity)));\n padding: 1rem;\n --tw-text-opacity: 1;\n color: var(--fallback-bc,oklch(var(--bc)/var(--tw-text-opacity)));\n --alert-bg: var(--fallback-b2,oklch(var(--b2)/1));\n --alert-bg-mix: var(--fallback-b1,oklch(var(--b1)/1));\n background-color: var(--alert-bg);\n}\n@media (min-width: 640px) {\n\n .tw-alert {\n grid-auto-flow: column;\n grid-template-columns: auto minmax(auto,1fr);\n justify-items: start;\n text-align: start;\n }\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-badge {\n display: inline-flex;\n align-items: center;\n justify-content: 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-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-timing-function: cubic-bezier(0, 0, 0.2, 1);\n transition-duration: 200ms;\n height: 1.25rem;\n font-size: 0.875rem;\n line-height: 1.25rem;\n width: -moz-fit-content;\n width: fit-content;\n padding-left: 0.563rem;\n padding-right: 0.563rem;\n border-radius: var(--rounded-badge, 1.9rem);\n border-width: 1px;\n --tw-border-opacity: 1;\n border-color: var(--fallback-b2,oklch(var(--b2)/var(--tw-border-opacity)));\n --tw-bg-opacity: 1;\n background-color: var(--fallback-b1,oklch(var(--b1)/var(--tw-bg-opacity)));\n --tw-text-opacity: 1;\n color: var(--fallback-bc,oklch(var(--bc)/var(--tw-text-opacity)));\n}\n.tw-breadcrumbs {\n max-width: 100%;\n overflow-x: auto;\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n}\n.tw-breadcrumbs > ul,\n .tw-breadcrumbs > ol {\n display: flex;\n align-items: center;\n white-space: nowrap;\n min-height: -moz-min-content;\n min-height: min-content;\n}\n.tw-breadcrumbs > ul > li, .tw-breadcrumbs > ol > li {\n display: flex;\n align-items: center;\n}\n.tw-breadcrumbs > ul > li > a, .tw-breadcrumbs > ol > li > a {\n display: flex;\n cursor: pointer;\n align-items: center;\n}\n@media (hover:hover) {\n\n .tw-breadcrumbs > ul > li > a:hover, .tw-breadcrumbs > ol > li > a:hover {\n text-decoration-line: underline;\n }\n\n .tw-checkbox-success:hover {\n --tw-border-opacity: 1;\n border-color: var(--fallback-su,oklch(var(--su)/var(--tw-border-opacity)));\n }\n\n .tw-label a:hover {\n --tw-text-opacity: 1;\n color: var(--fallback-bc,oklch(var(--bc)/var(--tw-text-opacity)));\n }\n\n .tw-menu li > *:not(ul, .tw-menu-title, details, .tw-btn):active,\n.tw-menu li > *:not(ul, .tw-menu-title, details, .tw-btn).tw-active,\n.tw-menu li > details > summary:active {\n --tw-bg-opacity: 1;\n background-color: var(--fallback-n,oklch(var(--n)/var(--tw-bg-opacity)));\n --tw-text-opacity: 1;\n color: var(--fallback-nc,oklch(var(--nc)/var(--tw-text-opacity)));\n }\n\n .tw-tab:hover {\n --tw-text-opacity: 1;\n }\n\n .tw-table tr.tw-hover:hover,\n .tw-table tr.tw-hover:nth-child(even):hover {\n --tw-bg-opacity: 1;\n background-color: var(--fallback-b2,oklch(var(--b2)/var(--tw-bg-opacity)));\n }\n}\n.tw-btn {\n display: inline-flex;\n height: 3rem;\n min-height: 3rem;\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-radius: var(--rounded-btn, 0.5rem);\n border-color: transparent;\n border-color: oklch(var(--btn-color, var(--b2)) / var(--tw-border-opacity));\n padding-left: 1rem;\n padding-right: 1rem;\n text-align: center;\n font-size: 0.875rem;\n line-height: 1em;\n gap: 0.5rem;\n font-weight: 600;\n text-decoration-line: none;\n transition-duration: 200ms;\n transition-timing-function: cubic-bezier(0, 0, 0.2, 1);\n border-width: var(--border-btn, 1px);\n transition-property: color, background-color, border-color, opacity, box-shadow, transform;\n --tw-text-opacity: 1;\n color: var(--fallback-bc,oklch(var(--bc)/var(--tw-text-opacity)));\n --tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05);\n --tw-shadow-colored: 0 1px 2px 0 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 outline-color: var(--fallback-bc,oklch(var(--bc)/1));\n background-color: oklch(var(--btn-color, var(--b2)) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n --tw-border-opacity: 1;\n}\n.tw-btn-disabled,\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:where(.tw-btn:is(input[type=\"checkbox\"])),\n:where(.tw-btn:is(input[type=\"radio\"])) {\n width: auto;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n}\n.tw-btn:is(input[type=\"checkbox\"]):after,\n.tw-btn:is(input[type=\"radio\"]):after {\n --tw-content: attr(aria-label);\n content: var(--tw-content);\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 border-radius: var(--rounded-box, 1rem);\n --tw-bg-opacity: 1;\n background-color: var(--fallback-n,oklch(var(--n)/var(--tw-bg-opacity)));\n opacity: 0.75;\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: var(--fallback-nc,oklch(var(--nc)/var(--tw-text-opacity)));\n}\n.tw-checkbox {\n flex-shrink: 0;\n --chkbg: var(--fallback-bc,oklch(var(--bc)/1));\n --chkfg: var(--fallback-b1,oklch(var(--b1)/1));\n height: 1.5rem;\n width: 1.5rem;\n cursor: pointer;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n border-radius: var(--rounded-btn, 0.5rem);\n border-width: 1px;\n border-color: var(--fallback-bc,oklch(var(--bc)/var(--tw-border-opacity)));\n --tw-border-opacity: 0.2;\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 height: 0.125rem;\n width: 100%;\n flex-grow: 1;\n --tw-content: '';\n content: var(--tw-content);\n background-color: var(--fallback-bc,oklch(var(--bc)/0.1));\n}\n.tw-dropdown {\n position: relative;\n display: inline-block;\n}\n.tw-dropdown > *:not(summary):focus {\n outline: 2px solid transparent;\n outline-offset: 2px;\n}\n.tw-dropdown .tw-dropdown-content {\n position: absolute;\n}\n.tw-dropdown:is(:not(details)) .tw-dropdown-content {\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-timing-function: cubic-bezier(0, 0, 0.2, 1);\n visibility: hidden;\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-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-timing-function: cubic-bezier(0, 0, 0.2, 1);\n transition-duration: 200ms;\n}\n.tw-dropdown-end .tw-dropdown-content {\n inset-inline-end: 0px;\n}\n.tw-dropdown-left .tw-dropdown-content {\n bottom: auto;\n inset-inline-end: 100%;\n top: 0px;\n transform-origin: right;\n}\n.tw-dropdown-right .tw-dropdown-content {\n bottom: auto;\n inset-inline-start: 100%;\n top: 0px;\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:not(.tw-dropdown-hover):focus .tw-dropdown-content,\n.tw-dropdown:focus-within .tw-dropdown-content {\n visibility: visible;\n opacity: 1;\n}\n@media (hover: hover) {\n\n .tw-dropdown.tw-dropdown-hover:hover .tw-dropdown-content {\n visibility: visible;\n opacity: 1;\n }\n\n .tw-btn:hover {\n --tw-border-opacity: 1;\n border-color: var(--fallback-b3,oklch(var(--b3)/var(--tw-border-opacity)));\n --tw-bg-opacity: 1;\n background-color: var(--fallback-b3,oklch(var(--b3)/var(--tw-bg-opacity)));\n }\n\n @supports (color: color-mix(in oklab, black, black)) {\n\n .tw-btn:hover {\n background-color: color-mix(\n in oklab,\n oklch(var(--btn-color, var(--b2)) / var(--tw-bg-opacity, 1)) 90%,\n black\n );\n border-color: color-mix(\n in oklab,\n oklch(var(--btn-color, var(--b2)) / var(--tw-border-opacity, 1)) 90%,\n black\n );\n }\n }\n\n @supports not (color: oklch(0% 0 0)) {\n\n .tw-btn:hover {\n background-color: var(--btn-color, var(--fallback-b2));\n border-color: var(--btn-color, var(--fallback-b2));\n }\n }\n\n .tw-btn:hover {\n --tw-border-opacity: 1;\n border-color: var(--fallback-b3,oklch(var(--b3)/var(--tw-border-opacity)));\n --tw-bg-opacity: 1;\n background-color: var(--fallback-b3,oklch(var(--b3)/var(--tw-bg-opacity)));\n }\n\n @supports (color: color-mix(in oklab, black, black)) {\n\n .tw-btn:hover {\n background-color: color-mix(\n in oklab,\n oklch(var(--btn-color, var(--b2)) / var(--tw-bg-opacity, 1)) 90%,\n black\n );\n border-color: color-mix(\n in oklab,\n oklch(var(--btn-color, var(--b2)) / var(--tw-border-opacity, 1)) 90%,\n black\n );\n }\n }\n\n @supports not (color: oklch(0% 0 0)) {\n\n .tw-btn:hover {\n background-color: var(--btn-color, var(--fallback-b2));\n border-color: var(--btn-color, var(--fallback-b2));\n }\n }\n\n .tw-btn:hover {\n --tw-border-opacity: 1;\n border-color: var(--fallback-b3,oklch(var(--b3)/var(--tw-border-opacity)));\n --tw-bg-opacity: 1;\n background-color: var(--fallback-b3,oklch(var(--b3)/var(--tw-bg-opacity)));\n }\n\n @supports (color: color-mix(in oklab, black, black)) {\n\n .tw-btn:hover {\n background-color: color-mix(\n in oklab,\n oklch(var(--btn-color, var(--b2)) / var(--tw-bg-opacity, 1)) 90%,\n black\n );\n border-color: color-mix(\n in oklab,\n oklch(var(--btn-color, var(--b2)) / var(--tw-border-opacity, 1)) 90%,\n black\n );\n }\n }\n\n @supports not (color: oklch(0% 0 0)) {\n\n .tw-btn:hover {\n background-color: var(--btn-color, var(--fallback-b2));\n border-color: var(--btn-color, var(--fallback-b2));\n }\n }\n\n .tw-btn.tw-glass:hover {\n --glass-opacity: 25%;\n --glass-border-opacity: 15%;\n }\n\n .tw-btn-ghost:hover {\n border-color: transparent;\n }\n\n @supports (color: oklch(0% 0 0)) {\n\n .tw-btn-ghost:hover {\n background-color: var(--fallback-bc,oklch(var(--bc)/0.2));\n }\n }\n\n .tw-btn-ghost:hover {\n border-color: transparent;\n }\n\n @supports (color: oklch(0% 0 0)) {\n\n .tw-btn-ghost:hover {\n background-color: var(--fallback-bc,oklch(var(--bc)/0.2));\n }\n }\n\n .tw-btn-outline.tw-btn-primary:hover {\n --tw-text-opacity: 1;\n color: var(--fallback-pc,oklch(var(--pc)/var(--tw-text-opacity)));\n }\n\n @supports (color: color-mix(in oklab, black, black)) {\n\n .tw-btn-outline.tw-btn-primary:hover {\n background-color: color-mix(in oklab, var(--fallback-p,oklch(var(--p)/1)) 90%, black);\n border-color: color-mix(in oklab, var(--fallback-p,oklch(var(--p)/1)) 90%, black);\n }\n }\n\n .tw-btn-outline.tw-btn-primary:hover {\n --tw-text-opacity: 1;\n color: var(--fallback-pc,oklch(var(--pc)/var(--tw-text-opacity)));\n }\n\n @supports (color: color-mix(in oklab, black, black)) {\n\n .tw-btn-outline.tw-btn-primary:hover {\n background-color: color-mix(in oklab, var(--fallback-p,oklch(var(--p)/1)) 90%, black);\n border-color: color-mix(in oklab, var(--fallback-p,oklch(var(--p)/1)) 90%, black);\n }\n }\n\n .tw-btn-outline.tw-btn-error:hover {\n --tw-text-opacity: 1;\n color: var(--fallback-erc,oklch(var(--erc)/var(--tw-text-opacity)));\n }\n\n @supports (color: color-mix(in oklab, black, black)) {\n\n .tw-btn-outline.tw-btn-error:hover {\n background-color: color-mix(in oklab, var(--fallback-er,oklch(var(--er)/1)) 90%, black);\n border-color: color-mix(in oklab, var(--fallback-er,oklch(var(--er)/1)) 90%, black);\n }\n }\n\n .tw-btn-outline.tw-btn-error:hover {\n --tw-text-opacity: 1;\n color: var(--fallback-erc,oklch(var(--erc)/var(--tw-text-opacity)));\n }\n\n @supports (color: color-mix(in oklab, black, black)) {\n\n .tw-btn-outline.tw-btn-error:hover {\n background-color: color-mix(in oklab, var(--fallback-er,oklch(var(--er)/1)) 90%, black);\n border-color: color-mix(in oklab, var(--fallback-er,oklch(var(--er)/1)) 90%, black);\n }\n }\n\n .tw-btn-disabled:hover,\n .tw-btn[disabled]:hover,\n .tw-btn:disabled:hover {\n --tw-border-opacity: 0;\n background-color: var(--fallback-n,oklch(var(--n)/var(--tw-bg-opacity)));\n --tw-bg-opacity: 0.2;\n color: var(--fallback-bc,oklch(var(--bc)/var(--tw-text-opacity)));\n --tw-text-opacity: 0.2;\n }\n\n @supports (color: color-mix(in oklab, black, black)) {\n\n .tw-btn:is(input[type=\"checkbox\"]:checked):hover, .tw-btn:is(input[type=\"radio\"]:checked):hover {\n background-color: color-mix(in oklab, var(--fallback-p,oklch(var(--p)/1)) 90%, black);\n border-color: color-mix(in oklab, var(--fallback-p,oklch(var(--p)/1)) 90%, black);\n }\n }\n\n .tw-dropdown.tw-dropdown-hover:hover .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\n :where(.tw-menu li:not(.tw-menu-title, .tw-disabled) > *:not(ul, details, .tw-menu-title)):not(.tw-active, .tw-btn):hover, :where(.tw-menu li:not(.tw-menu-title, .tw-disabled) > details > summary:not(.tw-menu-title)):not(.tw-active, .tw-btn):hover {\n cursor: pointer;\n outline: 2px solid transparent;\n outline-offset: 2px;\n }\n\n @supports (color: oklch(0% 0 0)) {\n\n :where(.tw-menu li:not(.tw-menu-title, .tw-disabled) > *:not(ul, details, .tw-menu-title)):not(.tw-active, .tw-btn):hover, :where(.tw-menu li:not(.tw-menu-title, .tw-disabled) > details > summary:not(.tw-menu-title)):not(.tw-active, .tw-btn):hover {\n background-color: var(--fallback-bc,oklch(var(--bc)/0.1));\n }\n }\n\n :where(.tw-menu li:not(.tw-menu-title, .tw-disabled) > *:not(ul, details, .tw-menu-title)):not(.tw-active, .tw-btn):hover, :where(.tw-menu li:not(.tw-menu-title, .tw-disabled) > details > summary:not(.tw-menu-title)):not(.tw-active, .tw-btn):hover {\n cursor: pointer;\n outline: 2px solid transparent;\n outline-offset: 2px;\n }\n\n @supports (color: oklch(0% 0 0)) {\n\n :where(.tw-menu li:not(.tw-menu-title, .tw-disabled) > *:not(ul, details, .tw-menu-title)):not(.tw-active, .tw-btn):hover, :where(.tw-menu li:not(.tw-menu-title, .tw-disabled) > details > summary:not(.tw-menu-title)):not(.tw-active, .tw-btn):hover {\n background-color: var(--fallback-bc,oklch(var(--bc)/0.1));\n }\n }\n\n :where(.tw-menu li:not(.tw-menu-title, .tw-disabled) > *:not(ul, details, .tw-menu-title)):not(.tw-active, .tw-btn):hover, :where(.tw-menu li:not(.tw-menu-title, .tw-disabled) > details > summary:not(.tw-menu-title)):not(.tw-active, .tw-btn):hover {\n cursor: pointer;\n outline: 2px solid transparent;\n outline-offset: 2px;\n }\n\n @supports (color: oklch(0% 0 0)) {\n\n :where(.tw-menu li:not(.tw-menu-title, .tw-disabled) > *:not(ul, details, .tw-menu-title)):not(.tw-active, .tw-btn):hover, :where(.tw-menu li:not(.tw-menu-title, .tw-disabled) > details > summary:not(.tw-menu-title)):not(.tw-active, .tw-btn):hover {\n background-color: var(--fallback-bc,oklch(var(--bc)/0.1));\n }\n }\n\n :where(.tw-menu li:not(.tw-menu-title, .tw-disabled) > *:not(ul, details, .tw-menu-title)):not(.tw-active, .tw-btn):hover, :where(.tw-menu li:not(.tw-menu-title, .tw-disabled) > details > summary:not(.tw-menu-title)):not(.tw-active, .tw-btn):hover {\n cursor: pointer;\n outline: 2px solid transparent;\n outline-offset: 2px;\n }\n\n @supports (color: oklch(0% 0 0)) {\n\n :where(.tw-menu li:not(.tw-menu-title, .tw-disabled) > *:not(ul, details, .tw-menu-title)):not(.tw-active, .tw-btn):hover, :where(.tw-menu li:not(.tw-menu-title, .tw-disabled) > details > summary:not(.tw-menu-title)):not(.tw-active, .tw-btn):hover {\n background-color: var(--fallback-bc,oklch(var(--bc)/0.1));\n }\n }\n\n .tw-tab[disabled],\n .tw-tab[disabled]:hover {\n cursor: not-allowed;\n color: var(--fallback-bc,oklch(var(--bc)/var(--tw-text-opacity)));\n --tw-text-opacity: 0.2;\n }\n}\n.tw-dropdown:is(details) summary::-webkit-details-marker {\n display: none;\n}\n.tw-file-input {\n height: 3rem;\n flex-shrink: 1;\n padding-inline-end: 1rem;\n font-size: 1rem;\n line-height: 2;\n line-height: 1.5rem;\n overflow: hidden;\n border-radius: var(--rounded-btn, 0.5rem);\n border-width: 1px;\n border-color: var(--fallback-bc,oklch(var(--bc)/var(--tw-border-opacity)));\n --tw-border-opacity: 0;\n --tw-bg-opacity: 1;\n background-color: var(--fallback-b1,oklch(var(--b1)/var(--tw-bg-opacity)));\n}\n.tw-file-input::file-selector-button {\n margin-inline-end: 1rem;\n display: inline-flex;\n height: 100%;\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 padding-left: 1rem;\n padding-right: 1rem;\n text-align: center;\n font-size: 0.875rem;\n line-height: 1.25rem;\n line-height: 1em;\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-timing-function: cubic-bezier(0, 0, 0.2, 1);\n transition-duration: 200ms;\n border-style: solid;\n --tw-border-opacity: 1;\n border-color: var(--fallback-n,oklch(var(--n)/var(--tw-border-opacity)));\n --tw-bg-opacity: 1;\n background-color: var(--fallback-n,oklch(var(--n)/var(--tw-bg-opacity)));\n font-weight: 600;\n text-transform: uppercase;\n --tw-text-opacity: 1;\n color: var(--fallback-nc,oklch(var(--nc)/var(--tw-text-opacity)));\n text-decoration-line: none;\n border-width: var(--border-btn, 1px);\n animation: button-pop var(--animation-btn, 0.25s) ease-out;\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-indicator {\n position: relative;\n display: inline-flex;\n width: -moz-max-content;\n width: max-content;\n}\n.tw-indicator :where(.tw-indicator-item) {\n z-index: 1;\n position: absolute;\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 white-space: nowrap;\n}\n.tw-input {\n flex-shrink: 1;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\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-radius: var(--rounded-btn, 0.5rem);\n border-width: 1px;\n border-color: transparent;\n --tw-bg-opacity: 1;\n background-color: var(--fallback-b1,oklch(var(--b1)/var(--tw-bg-opacity)));\n}\n.tw-input[type=\"number\"]::-webkit-inner-spin-button,\n.tw-input-md[type=\"number\"]::-webkit-inner-spin-button {\n margin-top: -1rem;\n margin-bottom: -1rem;\n margin-inline-end: -1rem;\n}\n.tw-input-sm[type=\"number\"]::-webkit-inner-spin-button {\n margin-top: 0px;\n margin-bottom: 0px;\n margin-inline-end: -0px;\n}\n.tw-join .tw-dropdown .tw-join-item:first-child:not(:last-child),\n .tw-join *:first-child:not(:last-child) .tw-dropdown .tw-join-item {\n border-start-end-radius: inherit;\n border-end-end-radius: inherit;\n}\n.tw-mask {\n -webkit-mask-size: contain;\n mask-size: contain;\n -webkit-mask-repeat: no-repeat;\n mask-repeat: no-repeat;\n -webkit-mask-position: center;\n mask-position: center;\n}\n.tw-menu {\n display: flex;\n flex-direction: column;\n flex-wrap: wrap;\n font-size: 0.875rem;\n line-height: 1.25rem;\n padding: 0.5rem;\n}\n.tw-menu :where(li ul) {\n position: relative;\n white-space: nowrap;\n margin-inline-start: 1rem;\n padding-inline-start: 0.5rem;\n}\n.tw-menu :where(li:not(.tw-menu-title) > *:not(ul, details, .tw-menu-title, .tw-btn)), .tw-menu :where(li:not(.tw-menu-title) > details > summary:not(.tw-menu-title)) {\n display: grid;\n grid-auto-flow: column;\n align-content: flex-start;\n align-items: center;\n gap: 0.5rem;\n grid-auto-columns: minmax(auto, max-content) auto max-content;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n}\n.tw-menu li.tw-disabled {\n cursor: not-allowed;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n color: var(--fallback-bc,oklch(var(--bc)/0.3));\n}\n.tw-menu :where(li > .tw-menu-dropdown:not(.tw-menu-dropdown-show)) {\n display: none;\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:where(.tw-menu li) .tw-badge {\n justify-self: end;\n}\n.tw-modal {\n pointer-events: none;\n position: fixed;\n inset: 0px;\n margin: 0px;\n display: grid;\n height: 100%;\n max-height: none;\n width: 100%;\n max-width: none;\n justify-items: center;\n padding: 0px;\n opacity: 0;\n overscroll-behavior: contain;\n z-index: 999;\n background-color: transparent;\n color: inherit;\n transition-duration: 200ms;\n transition-timing-function: cubic-bezier(0, 0, 0.2, 1);\n transition-property: transform, opacity, visibility;\n overflow-y: hidden;\n}\n:where(.tw-modal) {\n align-items: center;\n}\n.tw-modal-box {\n max-height: calc(100vh - 5em);\n grid-column-start: 1;\n grid-row-start: 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-bottom-right-radius: var(--rounded-box, 1rem);\n border-bottom-left-radius: var(--rounded-box, 1rem);\n border-top-left-radius: var(--rounded-box, 1rem);\n border-top-right-radius: var(--rounded-box, 1rem);\n --tw-bg-opacity: 1;\n background-color: var(--fallback-b1,oklch(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-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-timing-function: cubic-bezier(0, 0, 0.2, 1);\n transition-duration: 200ms;\n box-shadow: rgba(0, 0, 0, 0.25) 0px 25px 50px -12px;\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.tw-modal[open] {\n pointer-events: auto;\n visibility: visible;\n opacity: 1;\n}\n:root:has(:is(.tw-modal-open, .tw-modal:target, .tw-modal-toggle:checked + .tw-modal, .tw-modal[open])) {\n overflow: hidden;\n scrollbar-gutter: stable;\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 > *:not(script, style)) {\n display: inline-flex;\n align-items: center;\n}\n.tw-select {\n display: inline-flex;\n cursor: pointer;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n height: 3rem;\n min-height: 3rem;\n padding-inline-start: 1rem;\n padding-inline-end: 2.5rem;\n font-size: 0.875rem;\n line-height: 1.25rem;\n line-height: 2;\n border-radius: var(--rounded-btn, 0.5rem);\n border-width: 1px;\n border-color: transparent;\n --tw-bg-opacity: 1;\n background-color: var(--fallback-b1,oklch(var(--b1)/var(--tw-bg-opacity)));\n background-image: linear-gradient(45deg, transparent 50%, currentColor 50%),\n linear-gradient(135deg, currentColor 50%, transparent 50%);\n background-position: calc(100% - 20px) calc(1px + 50%),\n calc(100% - 16.1px) calc(1px + 50%);\n background-size: 4px 4px,\n 4px 4px;\n background-repeat: no-repeat;\n}\n.tw-select[multiple] {\n height: auto;\n}\n.tw-tabs {\n display: grid;\n align-items: flex-end;\n}\n.tw-tabs-lifted:has(.tw-tab-content[class^=\"rounded-\"])\n .tw-tab:first-child:not(:is(.tw-tab-active, [aria-selected=\"true\"])), .tw-tabs-lifted:has(.tw-tab-content[class*=\" rounded-\"])\n .tw-tab:first-child:not(:is(.tw-tab-active, [aria-selected=\"true\"])) {\n border-bottom-color: transparent;\n}\n.tw-tab {\n position: relative;\n grid-row-start: 1;\n display: inline-flex;\n height: 2rem;\n cursor: pointer;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n flex-wrap: wrap;\n align-items: center;\n justify-content: center;\n text-align: center;\n font-size: 0.875rem;\n line-height: 1.25rem;\n line-height: 2;\n --tab-padding: 1rem;\n --tw-text-opacity: 0.5;\n --tab-color: var(--fallback-bc,oklch(var(--bc)/1));\n --tab-bg: var(--fallback-b1,oklch(var(--b1)/1));\n --tab-border-color: var(--fallback-b3,oklch(var(--b3)/1));\n color: var(--tab-color);\n padding-inline-start: var(--tab-padding, 1rem);\n padding-inline-end: var(--tab-padding, 1rem);\n}\n.tw-tab:is(input[type=\"radio\"]) {\n width: auto;\n border-bottom-right-radius: 0px;\n border-bottom-left-radius: 0px;\n}\n.tw-tab:is(input[type=\"radio\"]):after {\n --tw-content: attr(aria-label);\n content: var(--tw-content);\n}\n.tw-tab:not(input):empty {\n cursor: default;\n grid-column-start: span 9999;\n}\n.tw-tab-content {\n grid-column-start: 1;\n grid-column-end: span 9999;\n grid-row-start: 2;\n margin-top: calc(var(--tab-border) * -1);\n display: none;\n border-color: transparent;\n border-width: var(--tab-border, 0);\n}\n:checked + .tw-tab-content:nth-child(2),\n :is(.tw-tab-active, [aria-selected=\"true\"]) + .tw-tab-content:nth-child(2) {\n border-start-start-radius: 0px;\n}\ninput.tw-tab:checked + .tw-tab-content,\n:is(.tw-tab-active, [aria-selected=\"true\"]) + .tw-tab-content {\n display: block;\n}\n.tw-table {\n position: relative;\n width: 100%;\n border-radius: var(--rounded-box, 1rem);\n text-align: left;\n font-size: 0.875rem;\n line-height: 1.25rem;\n}\n.tw-table :where(.tw-table-pin-rows thead tr) {\n position: sticky;\n top: 0px;\n z-index: 1;\n --tw-bg-opacity: 1;\n background-color: var(--fallback-b1,oklch(var(--b1)/var(--tw-bg-opacity)));\n}\n.tw-table :where(.tw-table-pin-rows tfoot tr) {\n position: sticky;\n bottom: 0px;\n z-index: 1;\n --tw-bg-opacity: 1;\n background-color: var(--fallback-b1,oklch(var(--b1)/var(--tw-bg-opacity)));\n}\n.tw-table :where(.tw-table-pin-cols tr th) {\n position: sticky;\n left: 0px;\n right: 0px;\n --tw-bg-opacity: 1;\n background-color: var(--fallback-b1,oklch(var(--b1)/var(--tw-bg-opacity)));\n}\n.tw-textarea {\n min-height: 3rem;\n flex-shrink: 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 border-radius: var(--rounded-btn, 0.5rem);\n border-width: 1px;\n border-color: transparent;\n --tw-bg-opacity: 1;\n background-color: var(--fallback-b1,oklch(var(--b1)/var(--tw-bg-opacity)));\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: var(--fallback-b1,oklch(var(--b1)/var(--tw-border-opacity)));\n}\n.tw-badge-success {\n border-color: transparent;\n --tw-bg-opacity: 1;\n background-color: var(--fallback-su,oklch(var(--su)/var(--tw-bg-opacity)));\n --tw-text-opacity: 1;\n color: var(--fallback-suc,oklch(var(--suc)/var(--tw-text-opacity)));\n}\n.tw-badge-outline.tw-badge-success {\n --tw-text-opacity: 1;\n color: var(--fallback-su,oklch(var(--su)/var(--tw-text-opacity)));\n}\n.tw-btm-nav > * .tw-label {\n font-size: 1rem;\n line-height: 1.5rem;\n}\n.tw-breadcrumbs > ul > li > a:focus, .tw-breadcrumbs > ol > li > a:focus {\n outline: 2px solid transparent;\n outline-offset: 2px;\n}\n.tw-breadcrumbs > ul > li > a:focus-visible, .tw-breadcrumbs > ol > li > a:focus-visible {\n outline: 2px solid currentColor;\n outline-offset: 2px;\n}\n.tw-breadcrumbs > ul > li + *:before, .tw-breadcrumbs > ol > li + *:before {\n content: \"\";\n margin-left: 0.5rem;\n margin-right: 0.75rem;\n display: block;\n height: 0.375rem;\n width: 0.375rem;\n --tw-rotate: 45deg;\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 opacity: 0.4;\n border-top: 1px solid;\n border-right: 1px solid;\n background-color: transparent;\n}\n[dir=\"rtl\"] .tw-breadcrumbs > ul > li + *:before,\n[dir=\"rtl\"] .tw-breadcrumbs > ol > li + *:before {\n --tw-rotate: -135deg;\n}\n@media (prefers-reduced-motion: no-preference) {\n\n .tw-btn {\n animation: button-pop var(--animation-btn, 0.25s) ease-out;\n }\n}\n.tw-btn:active:hover,\n .tw-btn:active:focus {\n animation: button-pop 0s ease-out;\n transform: scale(var(--btn-focus-scale, 0.97));\n}\n@supports not (color: oklch(0% 0 0)) {\n\n .tw-btn {\n background-color: var(--btn-color, var(--fallback-b2));\n border-color: var(--btn-color, var(--fallback-b2));\n }\n\n .tw-btn-primary {\n --btn-color: var(--fallback-p);\n }\n\n .tw-btn-neutral {\n --btn-color: var(--fallback-n);\n }\n\n .tw-btn-error {\n --btn-color: var(--fallback-er);\n }\n}\n@supports (color: color-mix(in oklab, black, black)) {\n\n .tw-btn-outline.tw-btn-primary.tw-btn-active {\n background-color: color-mix(in oklab, var(--fallback-p,oklch(var(--p)/1)) 90%, black);\n border-color: color-mix(in oklab, var(--fallback-p,oklch(var(--p)/1)) 90%, black);\n }\n\n .tw-btn-outline.tw-btn-error.tw-btn-active {\n background-color: color-mix(in oklab, var(--fallback-er,oklch(var(--er)/1)) 90%, black);\n border-color: color-mix(in oklab, var(--fallback-er,oklch(var(--er)/1)) 90%, black);\n }\n}\n.tw-btn:focus-visible {\n outline-style: solid;\n outline-width: 2px;\n outline-offset: 2px;\n}\n.tw-btn-primary {\n --tw-text-opacity: 1;\n color: var(--fallback-pc,oklch(var(--pc)/var(--tw-text-opacity)));\n outline-color: var(--fallback-p,oklch(var(--p)/1));\n}\n@supports (color: oklch(0% 0 0)) {\n\n .tw-btn-primary {\n --btn-color: var(--p);\n }\n\n .tw-btn-neutral {\n --btn-color: var(--n);\n }\n\n .tw-btn-error {\n --btn-color: var(--er);\n }\n}\n.tw-btn-neutral {\n --tw-text-opacity: 1;\n color: var(--fallback-nc,oklch(var(--nc)/var(--tw-text-opacity)));\n outline-color: var(--fallback-n,oklch(var(--n)/1));\n}\n.tw-btn-error {\n --tw-text-opacity: 1;\n color: var(--fallback-erc,oklch(var(--erc)/var(--tw-text-opacity)));\n outline-color: var(--fallback-er,oklch(var(--er)/1));\n}\n.tw-btn.tw-glass {\n --tw-shadow: 0 0 #0000;\n --tw-shadow-colored: 0 0 #0000;\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n outline-color: currentColor;\n}\n.tw-btn.tw-glass.tw-btn-active {\n --glass-opacity: 25%;\n --glass-border-opacity: 15%;\n}\n.tw-btn-ghost {\n border-width: 1px;\n border-color: transparent;\n background-color: transparent;\n color: currentColor;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-colored: 0 0 #0000;\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n outline-color: currentColor;\n}\n.tw-btn-ghost.tw-btn-active {\n border-color: transparent;\n background-color: var(--fallback-bc,oklch(var(--bc)/0.2));\n}\n.tw-btn-outline.tw-btn-primary {\n --tw-text-opacity: 1;\n color: var(--fallback-p,oklch(var(--p)/var(--tw-text-opacity)));\n}\n.tw-btn-outline.tw-btn-primary.tw-btn-active {\n --tw-text-opacity: 1;\n color: var(--fallback-pc,oklch(var(--pc)/var(--tw-text-opacity)));\n}\n.tw-btn-outline.tw-btn-error {\n --tw-text-opacity: 1;\n color: var(--fallback-er,oklch(var(--er)/var(--tw-text-opacity)));\n}\n.tw-btn-outline.tw-btn-error.tw-btn-active {\n --tw-text-opacity: 1;\n color: var(--fallback-erc,oklch(var(--erc)/var(--tw-text-opacity)));\n}\n.tw-btn.tw-btn-disabled,\n .tw-btn[disabled],\n .tw-btn:disabled {\n --tw-border-opacity: 0;\n background-color: var(--fallback-n,oklch(var(--n)/var(--tw-bg-opacity)));\n --tw-bg-opacity: 0.2;\n color: var(--fallback-bc,oklch(var(--bc)/var(--tw-text-opacity)));\n --tw-text-opacity: 0.2;\n}\n.tw-btn:is(input[type=\"checkbox\"]:checked),\n.tw-btn:is(input[type=\"radio\"]:checked) {\n --tw-border-opacity: 1;\n border-color: var(--fallback-p,oklch(var(--p)/var(--tw-border-opacity)));\n --tw-bg-opacity: 1;\n background-color: var(--fallback-p,oklch(var(--p)/var(--tw-bg-opacity)));\n --tw-text-opacity: 1;\n color: var(--fallback-pc,oklch(var(--pc)/var(--tw-text-opacity)));\n}\n.tw-btn:is(input[type=\"checkbox\"]:checked):focus-visible, .tw-btn:is(input[type=\"radio\"]:checked):focus-visible {\n outline-color: var(--fallback-p,oklch(var(--p)/1));\n}\n@keyframes button-pop {\n\n 0% {\n transform: scale(var(--btn-focus-scale, 0.98));\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: var(--fallback-b2,oklch(var(--b2)/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 {\n box-shadow: none;\n}\n.tw-checkbox:focus-visible {\n outline-style: solid;\n outline-width: 2px;\n outline-offset: 2px;\n outline-color: var(--fallback-bc,oklch(var(--bc)/1));\n}\n.tw-checkbox:disabled {\n border-width: 0px;\n cursor: not-allowed;\n border-color: transparent;\n --tw-bg-opacity: 1;\n background-color: var(--fallback-bc,oklch(var(--bc)/var(--tw-bg-opacity)));\n opacity: 0.2;\n}\n.tw-checkbox:checked,\n .tw-checkbox[aria-checked=\"true\"] {\n background-repeat: no-repeat;\n animation: checkmark var(--animation-input, 0.2s) ease-out;\n background-color: var(--chkbg);\n background-image: linear-gradient(-45deg, transparent 65%, var(--chkbg) 65.99%),\n linear-gradient(45deg, transparent 75%, var(--chkbg) 75.99%),\n linear-gradient(-45deg, var(--chkbg) 40%, transparent 40.99%),\n linear-gradient(\n 45deg,\n var(--chkbg) 30%,\n var(--chkfg) 30.99%,\n var(--chkfg) 40%,\n transparent 40.99%\n ),\n linear-gradient(-45deg, var(--chkfg) 50%, var(--chkbg) 50.99%);\n}\n.tw-checkbox:indeterminate {\n --tw-bg-opacity: 1;\n background-color: var(--fallback-bc,oklch(var(--bc)/var(--tw-bg-opacity)));\n background-repeat: no-repeat;\n animation: checkmark var(--animation-input, 0.2s) ease-out;\n background-image: linear-gradient(90deg, transparent 80%, var(--chkbg) 80%),\n linear-gradient(-90deg, transparent 80%, var(--chkbg) 80%),\n linear-gradient(0deg, var(--chkbg) 43%, var(--chkfg) 43%, var(--chkfg) 57%, var(--chkbg) 57%);\n}\n.tw-checkbox-success {\n --chkbg: var(--fallback-su,oklch(var(--su)/1));\n --chkfg: var(--fallback-suc,oklch(var(--suc)/1));\n --tw-border-opacity: 1;\n border-color: var(--fallback-su,oklch(var(--su)/var(--tw-border-opacity)));\n}\n.tw-checkbox-success:focus-visible {\n outline-color: var(--fallback-su,oklch(var(--su)/1));\n}\n.tw-checkbox-success:checked,\n .tw-checkbox-success[aria-checked=\"true\"] {\n --tw-border-opacity: 1;\n border-color: var(--fallback-su,oklch(var(--su)/var(--tw-border-opacity)));\n --tw-bg-opacity: 1;\n background-color: var(--fallback-su,oklch(var(--su)/var(--tw-bg-opacity)));\n --tw-text-opacity: 1;\n color: var(--fallback-suc,oklch(var(--suc)/var(--tw-text-opacity)));\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.tw-divider:not(:empty) {\n gap: 1rem;\n}\n.tw-dropdown.tw-dropdown-open .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-file-input:focus {\n outline-style: solid;\n outline-width: 2px;\n outline-offset: 2px;\n outline-color: var(--fallback-bc,oklch(var(--bc)/0.2));\n}\n.tw-file-input-disabled,\n .tw-file-input[disabled] {\n cursor: not-allowed;\n --tw-border-opacity: 1;\n border-color: var(--fallback-b2,oklch(var(--b2)/var(--tw-border-opacity)));\n --tw-bg-opacity: 1;\n background-color: var(--fallback-b2,oklch(var(--b2)/var(--tw-bg-opacity)));\n --tw-text-opacity: 0.2;\n}\n.tw-file-input-disabled::-moz-placeholder, .tw-file-input[disabled]::-moz-placeholder {\n color: var(--fallback-bc,oklch(var(--bc)/var(--tw-placeholder-opacity)));\n --tw-placeholder-opacity: 0.2;\n}\n.tw-file-input-disabled::placeholder,\n .tw-file-input[disabled]::placeholder {\n color: var(--fallback-bc,oklch(var(--bc)/var(--tw-placeholder-opacity)));\n --tw-placeholder-opacity: 0.2;\n}\n.tw-file-input-disabled::file-selector-button, .tw-file-input[disabled]::file-selector-button {\n --tw-border-opacity: 0;\n background-color: var(--fallback-n,oklch(var(--n)/var(--tw-bg-opacity)));\n --tw-bg-opacity: 0.2;\n color: var(--fallback-bc,oklch(var(--bc)/var(--tw-text-opacity)));\n --tw-text-opacity: 0.2;\n}\n.tw-label-text {\n font-size: 0.875rem;\n line-height: 1.25rem;\n --tw-text-opacity: 1;\n color: var(--fallback-bc,oklch(var(--bc)/var(--tw-text-opacity)));\n}\n.tw-input input {\n --tw-bg-opacity: 1;\n background-color: var(--fallback-p,oklch(var(--p)/var(--tw-bg-opacity)));\n background-color: transparent;\n}\n.tw-input input:focus {\n outline: 2px solid transparent;\n outline-offset: 2px;\n}\n.tw-input[list]::-webkit-calendar-picker-indicator {\n line-height: 1em;\n}\n.tw-input-bordered {\n border-color: var(--fallback-bc,oklch(var(--bc)/0.2));\n}\n.tw-input:focus,\n .tw-input:focus-within {\n box-shadow: none;\n border-color: var(--fallback-bc,oklch(var(--bc)/0.2));\n outline-style: solid;\n outline-width: 2px;\n outline-offset: 2px;\n outline-color: var(--fallback-bc,oklch(var(--bc)/0.2));\n}\n.tw-input:has(> input[disabled]),\n .tw-input-disabled,\n .tw-input:disabled,\n .tw-input[disabled] {\n cursor: not-allowed;\n --tw-border-opacity: 1;\n border-color: var(--fallback-b2,oklch(var(--b2)/var(--tw-border-opacity)));\n --tw-bg-opacity: 1;\n background-color: var(--fallback-b2,oklch(var(--b2)/var(--tw-bg-opacity)));\n color: var(--fallback-bc,oklch(var(--bc)/0.4));\n}\n.tw-input:has(> input[disabled])::-moz-placeholder, .tw-input-disabled::-moz-placeholder, .tw-input:disabled::-moz-placeholder, .tw-input[disabled]::-moz-placeholder {\n color: var(--fallback-bc,oklch(var(--bc)/var(--tw-placeholder-opacity)));\n --tw-placeholder-opacity: 0.2;\n}\n.tw-input:has(> input[disabled])::placeholder,\n .tw-input-disabled::placeholder,\n .tw-input:disabled::placeholder,\n .tw-input[disabled]::placeholder {\n color: var(--fallback-bc,oklch(var(--bc)/var(--tw-placeholder-opacity)));\n --tw-placeholder-opacity: 0.2;\n}\n.tw-input:has(> input[disabled]) > input[disabled] {\n cursor: not-allowed;\n}\n.tw-input::-webkit-date-and-time-value {\n text-align: inherit;\n}\n.tw-join > :where(*:not(:first-child)):is(.tw-btn) {\n margin-inline-start: calc(var(--border-btn) * -1);\n}\n.tw-loading {\n pointer-events: none;\n display: inline-block;\n aspect-ratio: 1 / 1;\n width: 1.5rem;\n background-color: currentColor;\n -webkit-mask-size: 100%;\n mask-size: 100%;\n -webkit-mask-repeat: no-repeat;\n mask-repeat: no-repeat;\n -webkit-mask-position: center;\n mask-position: center;\n -webkit-mask-image: url(\"data:image/svg+xml,%3Csvg width='24' height='24' stroke='black' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cg transform-origin='center'%3E%3Ccircle cx='12' cy='12' r='9.5' fill='none' stroke-width='3' stroke-linecap='round'%3E%3CanimateTransform attributeName='transform' type='rotate' from='0 12 12' to='360 12 12' dur='2s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dasharray' values='0,150;42,150;42,150' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dashoffset' values='0;-16;-59' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3C/circle%3E%3C/g%3E%3C/svg%3E\");\n mask-image: url(\"data:image/svg+xml,%3Csvg width='24' height='24' stroke='black' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cg transform-origin='center'%3E%3Ccircle cx='12' cy='12' r='9.5' fill='none' stroke-width='3' stroke-linecap='round'%3E%3CanimateTransform attributeName='transform' type='rotate' from='0 12 12' to='360 12 12' dur='2s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dasharray' values='0,150;42,150;42,150' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dashoffset' values='0;-16;-59' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3C/circle%3E%3C/g%3E%3C/svg%3E\");\n}\n.tw-loading-spinner {\n -webkit-mask-image: url(\"data:image/svg+xml,%3Csvg width='24' height='24' stroke='black' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cg transform-origin='center'%3E%3Ccircle cx='12' cy='12' r='9.5' fill='none' stroke-width='3' stroke-linecap='round'%3E%3CanimateTransform attributeName='transform' type='rotate' from='0 12 12' to='360 12 12' dur='2s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dasharray' values='0,150;42,150;42,150' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dashoffset' values='0;-16;-59' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3C/circle%3E%3C/g%3E%3C/svg%3E\");\n mask-image: url(\"data:image/svg+xml,%3Csvg width='24' height='24' stroke='black' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cg transform-origin='center'%3E%3Ccircle cx='12' cy='12' r='9.5' fill='none' stroke-width='3' stroke-linecap='round'%3E%3CanimateTransform attributeName='transform' type='rotate' from='0 12 12' to='360 12 12' dur='2s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dasharray' values='0,150;42,150;42,150' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dashoffset' values='0;-16;-59' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3C/circle%3E%3C/g%3E%3C/svg%3E\");\n}\n.tw-loading-sm {\n width: 1.25rem;\n}\n.tw-loading-md {\n width: 1.5rem;\n}\n.tw-mask-squircle {\n -webkit-mask-image: url(\"data:image/svg+xml,%3csvg width='200' height='200' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M100 0C20 0 0 20 0 100s20 100 100 100 100-20 100-100S180 0 100 0Z'/%3e%3c/svg%3e\");\n mask-image: url(\"data:image/svg+xml,%3csvg width='200' height='200' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M100 0C20 0 0 20 0 100s20 100 100 100 100-20 100-100S180 0 100 0Z'/%3e%3c/svg%3e\");\n}\n.tw-mask-decagon {\n -webkit-mask-image: url(\"data:image/svg+xml,%3csvg width='192' height='200' xmlns='http://www.w3.org/2000/svg'%3e%3cpath fill='black' d='m96 0 58.779 19.098 36.327 50v61.804l-36.327 50L96 200l-58.779-19.098-36.327-50V69.098l36.327-50z' fill-rule='evenodd'/%3e%3c/svg%3e\");\n mask-image: url(\"data:image/svg+xml,%3csvg width='192' height='200' xmlns='http://www.w3.org/2000/svg'%3e%3cpath fill='black' d='m96 0 58.779 19.098 36.327 50v61.804l-36.327 50L96 200l-58.779-19.098-36.327-50V69.098l36.327-50z' fill-rule='evenodd'/%3e%3c/svg%3e\");\n}\n.tw-mask-hexagon-2 {\n -webkit-mask-image: url(\"data:image/svg+xml,%3csvg width='200' height='182' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M64.786 181.4c-9.196 0-20.063-6.687-25.079-14.21L3.762 105.33c-5.016-8.36-5.016-20.9 0-29.259l35.945-61.86C44.723 5.851 55.59 0 64.786 0h71.055c9.196 0 20.063 6.688 25.079 14.211l35.945 61.86c4.18 8.36 4.18 20.899 0 29.258l-35.945 61.86c-4.18 8.36-15.883 14.211-25.079 14.211H64.786Z' fill='black' fill-rule='nonzero'/%3e%3c/svg%3e\");\n mask-image: url(\"data:image/svg+xml,%3csvg width='200' height='182' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M64.786 181.4c-9.196 0-20.063-6.687-25.079-14.21L3.762 105.33c-5.016-8.36-5.016-20.9 0-29.259l35.945-61.86C44.723 5.851 55.59 0 64.786 0h71.055c9.196 0 20.063 6.688 25.079 14.211l35.945 61.86c4.18 8.36 4.18 20.899 0 29.258l-35.945 61.86c-4.18 8.36-15.883 14.211-25.079 14.211H64.786Z' fill='black' fill-rule='nonzero'/%3e%3c/svg%3e\");\n}\n.tw-mask-circle {\n -webkit-mask-image: url(\"data:image/svg+xml,%3csvg width='200' height='200' xmlns='http://www.w3.org/2000/svg'%3e%3ccircle fill='black' cx='100' cy='100' r='100' fill-rule='evenodd'/%3e%3c/svg%3e\");\n mask-image: url(\"data:image/svg+xml,%3csvg width='200' height='200' xmlns='http://www.w3.org/2000/svg'%3e%3ccircle fill='black' cx='100' cy='100' r='100' fill-rule='evenodd'/%3e%3c/svg%3e\");\n}\n:where(.tw-menu li:empty) {\n --tw-bg-opacity: 1;\n background-color: var(--fallback-bc,oklch(var(--bc)/var(--tw-bg-opacity)));\n opacity: 0.1;\n margin: 0.5rem 1rem;\n height: 1px;\n}\n.tw-menu :where(li ul):before {\n position: absolute;\n bottom: 0.75rem;\n inset-inline-start: 0px;\n top: 0.75rem;\n width: 1px;\n --tw-bg-opacity: 1;\n background-color: var(--fallback-bc,oklch(var(--bc)/var(--tw-bg-opacity)));\n opacity: 0.1;\n content: \"\";\n}\n.tw-menu :where(li:not(.tw-menu-title) > *:not(ul, details, .tw-menu-title, .tw-btn)),\n.tw-menu :where(li:not(.tw-menu-title) > details > summary:not(.tw-menu-title)) {\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-timing-function: cubic-bezier(0, 0, 0.2, 1);\n border-radius: var(--rounded-btn, 0.5rem);\n padding-left: 1rem;\n padding-right: 1rem;\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n text-align: start;\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-timing-function: cubic-bezier(0, 0, 0.2, 1);\n transition-duration: 200ms;\n text-wrap: balance;\n}\n:where(.tw-menu li:not(.tw-menu-title, .tw-disabled) > *:not(ul, details, .tw-menu-title)):not(summary, .tw-active, .tw-btn).tw-focus, :where(.tw-menu li:not(.tw-menu-title, .tw-disabled) > *:not(ul, details, .tw-menu-title)):not(summary, .tw-active, .tw-btn):focus, :where(.tw-menu li:not(.tw-menu-title, .tw-disabled) > *:not(ul, details, .tw-menu-title)):is(summary):not(.tw-active, .tw-btn):focus-visible, :where(.tw-menu li:not(.tw-menu-title, .tw-disabled) > details > summary:not(.tw-menu-title)):not(summary, .tw-active, .tw-btn).tw-focus, :where(.tw-menu li:not(.tw-menu-title, .tw-disabled) > details > summary:not(.tw-menu-title)):not(summary, .tw-active, .tw-btn):focus, :where(.tw-menu li:not(.tw-menu-title, .tw-disabled) > details > summary:not(.tw-menu-title)):is(summary):not(.tw-active, .tw-btn):focus-visible {\n cursor: pointer;\n background-color: var(--fallback-bc,oklch(var(--bc)/0.1));\n --tw-text-opacity: 1;\n color: var(--fallback-bc,oklch(var(--bc)/var(--tw-text-opacity)));\n outline: 2px solid transparent;\n outline-offset: 2px;\n}\n.tw-menu li > *:not(ul, .tw-menu-title, details, .tw-btn):active,\n.tw-menu li > *:not(ul, .tw-menu-title, details, .tw-btn).tw-active,\n.tw-menu li > details > summary:active {\n --tw-bg-opacity: 1;\n background-color: var(--fallback-n,oklch(var(--n)/var(--tw-bg-opacity)));\n --tw-text-opacity: 1;\n color: var(--fallback-nc,oklch(var(--nc)/var(--tw-text-opacity)));\n}\n.tw-menu :where(li > details > summary)::-webkit-details-marker {\n display: none;\n}\n.tw-menu :where(li > details > summary):after,\n.tw-menu :where(li > .tw-menu-dropdown-toggle):after {\n justify-self: end;\n display: block;\n margin-top: -0.5rem;\n height: 0.5rem;\n width: 0.5rem;\n transform: rotate(45deg);\n transition-property: transform, margin-top;\n transition-duration: 0.3s;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n content: \"\";\n transform-origin: 75% 75%;\n box-shadow: 2px 2px;\n pointer-events: none;\n}\n.tw-menu :where(li > details[open] > summary):after,\n.tw-menu :where(li > .tw-menu-dropdown-toggle.tw-menu-dropdown-show):after {\n transform: rotate(225deg);\n margin-top: 0;\n}\n.tw-mockup-browser .tw-mockup-browser-toolbar .tw-input {\n position: relative;\n margin-left: auto;\n margin-right: auto;\n display: block;\n height: 1.75rem;\n width: 24rem;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n --tw-bg-opacity: 1;\n background-color: var(--fallback-b2,oklch(var(--b2)/var(--tw-bg-opacity)));\n padding-left: 2rem;\n direction: ltr;\n}\n.tw-mockup-browser .tw-mockup-browser-toolbar .tw-input:before {\n content: \"\";\n position: absolute;\n left: 0.5rem;\n top: 50%;\n aspect-ratio: 1 / 1;\n height: 0.75rem;\n --tw-translate-y: -50%;\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-radius: 9999px;\n border-width: 2px;\n border-color: currentColor;\n opacity: 0.6;\n}\n.tw-mockup-browser .tw-mockup-browser-toolbar .tw-input:after {\n content: \"\";\n position: absolute;\n left: 1.25rem;\n top: 50%;\n height: 0.5rem;\n --tw-translate-y: 25%;\n --tw-rotate: -45deg;\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-radius: 9999px;\n border-width: 1px;\n border-color: currentColor;\n opacity: 0.6;\n}\n.tw-modal:not(dialog:not(.tw-modal-open)),\n .tw-modal::backdrop {\n background-color: #0006;\n animation: modal-pop 0.2s ease-out;\n}\n.tw-modal-backdrop {\n z-index: -1;\n grid-column-start: 1;\n grid-row-start: 1;\n display: grid;\n align-self: stretch;\n justify-self: stretch;\n color: transparent;\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-modal[open] .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@keyframes modal-pop {\n\n 0% {\n opacity: 0;\n }\n}\n@keyframes progress-loading {\n\n 50% {\n background-position-x: -115%;\n }\n}\n@keyframes radiomark {\n\n 0% {\n box-shadow: 0 0 0 12px var(--fallback-b1,oklch(var(--b1)/1)) inset,\n 0 0 0 12px var(--fallback-b1,oklch(var(--b1)/1)) inset;\n }\n\n 50% {\n box-shadow: 0 0 0 3px var(--fallback-b1,oklch(var(--b1)/1)) inset,\n 0 0 0 3px var(--fallback-b1,oklch(var(--b1)/1)) inset;\n }\n\n 100% {\n box-shadow: 0 0 0 4px var(--fallback-b1,oklch(var(--b1)/1)) inset,\n 0 0 0 4px var(--fallback-b1,oklch(var(--b1)/1)) 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-select-bordered {\n border-color: var(--fallback-bc,oklch(var(--bc)/0.2));\n}\n.tw-select:focus {\n box-shadow: none;\n border-color: var(--fallback-bc,oklch(var(--bc)/0.2));\n outline-style: solid;\n outline-width: 2px;\n outline-offset: 2px;\n outline-color: var(--fallback-bc,oklch(var(--bc)/0.2));\n}\n.tw-select-disabled,\n .tw-select:disabled,\n .tw-select[disabled] {\n cursor: not-allowed;\n --tw-border-opacity: 1;\n border-color: var(--fallback-b2,oklch(var(--b2)/var(--tw-border-opacity)));\n --tw-bg-opacity: 1;\n background-color: var(--fallback-b2,oklch(var(--b2)/var(--tw-bg-opacity)));\n color: var(--fallback-bc,oklch(var(--bc)/0.4));\n}\n.tw-select-disabled::-moz-placeholder, .tw-select:disabled::-moz-placeholder, .tw-select[disabled]::-moz-placeholder {\n color: var(--fallback-bc,oklch(var(--bc)/var(--tw-placeholder-opacity)));\n --tw-placeholder-opacity: 0.2;\n}\n.tw-select-disabled::placeholder,\n .tw-select:disabled::placeholder,\n .tw-select[disabled]::placeholder {\n color: var(--fallback-bc,oklch(var(--bc)/var(--tw-placeholder-opacity)));\n --tw-placeholder-opacity: 0.2;\n}\n.tw-select-multiple,\n .tw-select[multiple],\n .tw-select[size].tw-select:not([size=\"1\"]) {\n background-image: none;\n padding-right: 1rem;\n}\n[dir=\"rtl\"] .tw-select {\n background-position: calc(0% + 12px) calc(1px + 50%),\n calc(0% + 16px) calc(1px + 50%);\n}\n@keyframes skeleton {\n\n from {\n background-position: 150%;\n }\n\n to {\n background-position: -50%;\n }\n}\n.tw-tabs-lifted > .tw-tab:focus-visible {\n border-end-end-radius: 0;\n border-end-start-radius: 0;\n}\n.tw-tab:is(.tw-tab-active, [aria-selected=\"true\"]):not(.tw-tab-disabled):not([disabled]), .tw-tab:is(input:checked) {\n border-color: var(--fallback-bc,oklch(var(--bc)/var(--tw-border-opacity)));\n --tw-border-opacity: 1;\n --tw-text-opacity: 1;\n}\n.tw-tab:focus {\n outline: 2px solid transparent;\n outline-offset: 2px;\n}\n.tw-tab:focus-visible {\n outline: 2px solid currentColor;\n outline-offset: -5px;\n}\n.tw-tab-disabled,\n .tw-tab[disabled] {\n cursor: not-allowed;\n color: var(--fallback-bc,oklch(var(--bc)/var(--tw-text-opacity)));\n --tw-text-opacity: 0.2;\n}\n.tw-tabs-bordered > .tw-tab {\n border-color: var(--fallback-bc,oklch(var(--bc)/var(--tw-border-opacity)));\n --tw-border-opacity: 0.2;\n border-style: solid;\n border-bottom-width: calc(var(--tab-border, 1px) + 1px);\n}\n.tw-tabs-lifted > .tw-tab {\n border: var(--tab-border, 1px) solid transparent;\n border-width: 0 0 var(--tab-border, 1px) 0;\n border-start-start-radius: var(--tab-radius, 0.5rem);\n border-start-end-radius: var(--tab-radius, 0.5rem);\n border-bottom-color: var(--tab-border-color);\n padding-inline-start: var(--tab-padding, 1rem);\n padding-inline-end: var(--tab-padding, 1rem);\n padding-top: var(--tab-border, 1px);\n}\n.tw-tabs-lifted > .tw-tab:is(.tw-tab-active, [aria-selected=\"true\"]):not(.tw-tab-disabled):not([disabled]), .tw-tabs-lifted > .tw-tab:is(input:checked) {\n background-color: var(--tab-bg);\n border-width: var(--tab-border, 1px) var(--tab-border, 1px) 0 var(--tab-border, 1px);\n border-inline-start-color: var(--tab-border-color);\n border-inline-end-color: var(--tab-border-color);\n border-top-color: var(--tab-border-color);\n padding-inline-start: calc(var(--tab-padding, 1rem) - var(--tab-border, 1px));\n padding-inline-end: calc(var(--tab-padding, 1rem) - var(--tab-border, 1px));\n padding-bottom: var(--tab-border, 1px);\n padding-top: 0;\n}\n.tw-tabs-lifted > .tw-tab:is(.tw-tab-active, [aria-selected=\"true\"]):not(.tw-tab-disabled):not([disabled]):before, .tw-tabs-lifted > .tw-tab:is(input:checked):before {\n z-index: 1;\n content: \"\";\n display: block;\n position: absolute;\n width: calc(100% + var(--tab-radius, 0.5rem) * 2);\n height: var(--tab-radius, 0.5rem);\n bottom: 0;\n background-size: var(--tab-radius, 0.5rem);\n background-position: top left,\n top right;\n background-repeat: no-repeat;\n --tab-grad: calc(69% - var(--tab-border, 1px));\n --radius-start: radial-gradient(\n circle at top left,\n transparent var(--tab-grad),\n var(--tab-border-color) calc(var(--tab-grad) + 0.25px),\n var(--tab-border-color) calc(var(--tab-grad) + var(--tab-border, 1px)),\n var(--tab-bg) calc(var(--tab-grad) + var(--tab-border, 1px) + 0.25px)\n );\n --radius-end: radial-gradient(\n circle at top right,\n transparent var(--tab-grad),\n var(--tab-border-color) calc(var(--tab-grad) + 0.25px),\n var(--tab-border-color) calc(var(--tab-grad) + var(--tab-border, 1px)),\n var(--tab-bg) calc(var(--tab-grad) + var(--tab-border, 1px) + 0.25px)\n );\n background-image: var(--radius-start), var(--radius-end);\n}\n.tw-tabs-lifted > .tw-tab:is(.tw-tab-active, [aria-selected=\"true\"]):not(.tw-tab-disabled):not([disabled]):first-child:before, .tw-tabs-lifted > .tw-tab:is(input:checked):first-child:before {\n background-image: var(--radius-end);\n background-position: top right;\n}\n[dir=\"rtl\"] .tw-tabs-lifted > .tw-tab:is(.tw-tab-active, [aria-selected=\"true\"]):not(.tw-tab-disabled):not([disabled]):first-child:before, [dir=\"rtl\"] .tw-tabs-lifted > .tw-tab:is(input:checked):first-child:before {\n background-image: var(--radius-start);\n background-position: top left;\n}\n.tw-tabs-lifted > .tw-tab:is(.tw-tab-active, [aria-selected=\"true\"]):not(.tw-tab-disabled):not([disabled]):last-child:before, .tw-tabs-lifted > .tw-tab:is(input:checked):last-child:before {\n background-image: var(--radius-start);\n background-position: top left;\n}\n[dir=\"rtl\"] .tw-tabs-lifted > .tw-tab:is(.tw-tab-active, [aria-selected=\"true\"]):not(.tw-tab-disabled):not([disabled]):last-child:before, [dir=\"rtl\"] .tw-tabs-lifted > .tw-tab:is(input:checked):last-child:before {\n background-image: var(--radius-end);\n background-position: top right;\n}\n.tw-tabs-lifted\n > :is(.tw-tab-active, [aria-selected=\"true\"]):not(.tw-tab-disabled):not([disabled])\n + .tw-tabs-lifted\n :is(.tw-tab-active, [aria-selected=\"true\"]):not(.tw-tab-disabled):not([disabled]):before, .tw-tabs-lifted > .tw-tab:is(input:checked) + .tw-tabs-lifted .tw-tab:is(input:checked):before {\n background-image: var(--radius-end);\n background-position: top right;\n}\n.tw-tabs-boxed .tw-tab {\n border-radius: var(--rounded-btn, 0.5rem);\n}\n.tw-table:where([dir=\"rtl\"], [dir=\"rtl\"] *) {\n text-align: right;\n}\n.tw-table :where(th, td) {\n padding-left: 1rem;\n padding-right: 1rem;\n padding-top: 0.75rem;\n padding-bottom: 0.75rem;\n vertical-align: middle;\n}\n.tw-table tr.tw-active,\n .tw-table tr.tw-active:nth-child(even),\n .tw-table-zebra tbody tr:nth-child(even) {\n --tw-bg-opacity: 1;\n background-color: var(--fallback-b2,oklch(var(--b2)/var(--tw-bg-opacity)));\n}\n.tw-table :where(thead tr, tbody tr:not(:last-child), tbody tr:first-child:last-child) {\n border-bottom-width: 1px;\n --tw-border-opacity: 1;\n border-bottom-color: var(--fallback-b2,oklch(var(--b2)/var(--tw-border-opacity)));\n}\n.tw-table :where(thead, tfoot) {\n white-space: nowrap;\n font-size: 0.75rem;\n line-height: 1rem;\n font-weight: 700;\n color: var(--fallback-bc,oklch(var(--bc)/0.6));\n}\n.tw-table :where(tfoot) {\n border-top-width: 1px;\n --tw-border-opacity: 1;\n border-top-color: var(--fallback-b2,oklch(var(--b2)/var(--tw-border-opacity)));\n}\n.tw-textarea-bordered {\n border-color: var(--fallback-bc,oklch(var(--bc)/0.2));\n}\n.tw-textarea:focus {\n box-shadow: none;\n border-color: var(--fallback-bc,oklch(var(--bc)/0.2));\n outline-style: solid;\n outline-width: 2px;\n outline-offset: 2px;\n outline-color: var(--fallback-bc,oklch(var(--bc)/0.2));\n}\n.tw-textarea-disabled,\n .tw-textarea:disabled,\n .tw-textarea[disabled] {\n cursor: not-allowed;\n --tw-border-opacity: 1;\n border-color: var(--fallback-b2,oklch(var(--b2)/var(--tw-border-opacity)));\n --tw-bg-opacity: 1;\n background-color: var(--fallback-b2,oklch(var(--b2)/var(--tw-bg-opacity)));\n color: var(--fallback-bc,oklch(var(--bc)/0.4));\n}\n.tw-textarea-disabled::-moz-placeholder, .tw-textarea:disabled::-moz-placeholder, .tw-textarea[disabled]::-moz-placeholder {\n color: var(--fallback-bc,oklch(var(--bc)/var(--tw-placeholder-opacity)));\n --tw-placeholder-opacity: 0.2;\n}\n.tw-textarea-disabled::placeholder,\n .tw-textarea:disabled::placeholder,\n .tw-textarea[disabled]::placeholder {\n color: var(--fallback-bc,oklch(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-btn-xs {\n height: 1.5rem;\n min-height: 1.5rem;\n padding-left: 0.5rem;\n padding-right: 0.5rem;\n font-size: 0.75rem;\n}\n.tw-btn-sm {\n height: 2rem;\n min-height: 2rem;\n padding-left: 0.75rem;\n padding-right: 0.75rem;\n font-size: 0.875rem;\n}\n.tw-btn-lg {\n height: 4rem;\n min-height: 4rem;\n padding-left: 1.5rem;\n padding-right: 1.5rem;\n font-size: 1.125rem;\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[type=\"checkbox\"].tw-checkbox-xs {\n height: 1rem;\n width: 1rem;\n}\n[type=\"checkbox\"].tw-checkbox-sm {\n height: 1.25rem;\n width: 1.25rem;\n}\n.tw-indicator :where(.tw-indicator-item) {\n bottom: auto;\n inset-inline-end: 0px;\n inset-inline-start: auto;\n top: 0px;\n --tw-translate-y: -50%;\n --tw-translate-x: 50%;\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-indicator :where(.tw-indicator-item):where([dir=\"rtl\"], [dir=\"rtl\"] *) {\n --tw-translate-x: -50%;\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-indicator :where(.tw-indicator-item.tw-indicator-start) {\n inset-inline-end: auto;\n inset-inline-start: 0px;\n --tw-translate-x: -50%;\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-indicator :where(.tw-indicator-item.tw-indicator-start):where([dir=\"rtl\"], [dir=\"rtl\"] *) {\n --tw-translate-x: 50%;\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-indicator :where(.tw-indicator-item.tw-indicator-center) {\n inset-inline-end: 50%;\n inset-inline-start: 50%;\n --tw-translate-x: -50%;\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-indicator :where(.tw-indicator-item.tw-indicator-center):where([dir=\"rtl\"], [dir=\"rtl\"] *) {\n --tw-translate-x: 50%;\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-indicator :where(.tw-indicator-item.tw-indicator-end) {\n inset-inline-end: 0px;\n inset-inline-start: auto;\n --tw-translate-x: 50%;\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-indicator :where(.tw-indicator-item.tw-indicator-end):where([dir=\"rtl\"], [dir=\"rtl\"] *) {\n --tw-translate-x: -50%;\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-indicator :where(.tw-indicator-item.tw-indicator-bottom) {\n bottom: 0px;\n top: auto;\n --tw-translate-y: 50%;\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-indicator :where(.tw-indicator-item.tw-indicator-middle) {\n bottom: 50%;\n top: 50%;\n --tw-translate-y: -50%;\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-indicator :where(.tw-indicator-item.tw-indicator-top) {\n bottom: auto;\n top: 0px;\n --tw-translate-y: -50%;\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-input-md {\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}\n.tw-input-sm {\n height: 2rem;\n padding-left: 0.75rem;\n padding-right: 0.75rem;\n font-size: 0.875rem;\n line-height: 2rem;\n}\n.tw-tabs-md :where(.tw-tab) {\n height: 2rem;\n font-size: 0.875rem;\n line-height: 1.25rem;\n line-height: 2;\n --tab-padding: 1rem;\n}\n.tw-tabs-lg :where(.tw-tab) {\n height: 3rem;\n font-size: 1.125rem;\n line-height: 1.75rem;\n line-height: 2;\n --tab-padding: 1.25rem;\n}\n.tw-tabs-sm :where(.tw-tab) {\n height: 1.5rem;\n font-size: 0.875rem;\n line-height: .75rem;\n --tab-padding: 0.75rem;\n}\n.tw-tabs-xs :where(.tw-tab) {\n height: 1.25rem;\n font-size: 0.75rem;\n line-height: .75rem;\n --tab-padding: 0.5rem;\n}\n.tw-tooltip {\n position: relative;\n display: inline-block;\n --tooltip-offset: calc(100% + 1px + var(--tooltip-tail, 0px));\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}\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-tooltip-right:before {\n transform: translateY(-50%);\n top: 50%;\n left: var(--tooltip-offset);\n right: auto;\n bottom: auto;\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: var(--fallback-su,oklch(var(--su)/var(--tw-bg-opacity)));\n outline-style: solid;\n outline-width: 2px;\n outline-color: var(--fallback-b1,oklch(var(--b1)/1));\n width: 15%;\n height: 15%;\n top: 7%;\n right: 7%;\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: var(--fallback-b3,oklch(var(--b3)/var(--tw-bg-opacity)));\n outline-style: solid;\n outline-width: 2px;\n outline-color: var(--fallback-b1,oklch(var(--b1)/1));\n width: 15%;\n height: 15%;\n top: 7%;\n right: 7%;\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-join.tw-join-vertical > :where(*:not(:first-child)):is(.tw-btn) {\n margin-top: calc(var(--border-btn) * -1);\n}\n.tw-join.tw-join-horizontal > :where(*:not(:first-child)):is(.tw-btn) {\n margin-inline-start: calc(var(--border-btn) * -1);\n margin-top: 0px;\n}\n.tw-modal-top :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: var(--rounded-box, 1rem);\n border-bottom-left-radius: var(--rounded-box, 1rem);\n border-top-left-radius: 0px;\n border-top-right-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-top-left-radius: var(--rounded-box, 1rem);\n border-top-right-radius: var(--rounded-box, 1rem);\n border-bottom-right-radius: var(--rounded-box, 1rem);\n border-bottom-left-radius: var(--rounded-box, 1rem);\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-top-left-radius: var(--rounded-box, 1rem);\n border-top-right-radius: var(--rounded-box, 1rem);\n border-bottom-right-radius: 0px;\n border-bottom-left-radius: 0px;\n}\n.tw-tooltip {\n position: relative;\n display: inline-block;\n text-align: center;\n --tooltip-tail: 0.1875rem;\n --tooltip-color: var(--fallback-n,oklch(var(--n)/1));\n --tooltip-text-color: var(--fallback-nc,oklch(var(--nc)/1));\n --tooltip-tail-offset: calc(100% + 0.0625rem - var(--tooltip-tail));\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:before {\n max-width: 20rem;\n white-space: normal;\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.tw-tooltip-open:before {\n opacity: 1;\n transition-delay: 75ms;\n}\n.tw-tooltip.tw-tooltip-open:after {\n opacity: 1;\n transition-delay: 75ms;\n}\n.tw-tooltip:hover:before {\n opacity: 1;\n transition-delay: 75ms;\n}\n.tw-tooltip:hover:after {\n opacity: 1;\n transition-delay: 75ms;\n}\n.tw-tooltip:has(:focus-visible):after,\n.tw-tooltip:has(:focus-visible):before {\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) + 0.0625rem);\n bottom: auto;\n}\n.tw-tooltip-right:after {\n transform: translateY(-50%);\n border-color: transparent var(--tooltip-color) transparent transparent;\n top: 50%;\n left: calc(var(--tooltip-tail-offset) + 0.0625rem);\n right: auto;\n bottom: auto;\n}\n.tw-pointer-events-none {\n pointer-events: none;\n}\n.tw-pointer-events-auto {\n pointer-events: auto;\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-24 {\n bottom: 6rem !important;\n}\n.\\!tw-left-0 {\n left: 0px !important;\n}\n.\\!tw-left-auto {\n left: auto !important;\n}\n.-tw-left-6 {\n left: -1.5rem;\n}\n.tw--right-2 {\n right: -0.5rem;\n}\n.tw--top-2 {\n top: -0.5rem;\n}\n.tw-bottom-0 {\n bottom: 0px;\n}\n.tw-bottom-4 {\n bottom: 1rem;\n}\n.tw-left-0 {\n left: 0px;\n}\n.tw-left-1\\/2 {\n left: 50%;\n}\n.tw-left-4 {\n left: 1rem;\n}\n.tw-right-0 {\n right: 0px;\n}\n.tw-right-1 {\n right: 0.25rem;\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-1 {\n top: 0.25rem;\n}\n.tw-top-14 {\n top: 3.5rem;\n}\n.tw-top-2 {\n top: 0.5rem;\n}\n.tw-top-4 {\n top: 1rem;\n}\n.\\!tw-z-\\[10000\\] {\n z-index: 10000 !important;\n}\n.tw-z-1000 {\n z-index: 1000;\n}\n.tw-z-3000 {\n z-index: 3000;\n}\n.tw-z-500 {\n z-index: 500;\n}\n.tw-z-\\[10000\\] {\n z-index: 10000;\n}\n.tw-z-\\[10035\\] {\n z-index: 10035;\n}\n.tw-z-\\[2000\\] {\n z-index: 2000;\n}\n.tw-z-\\[4000\\] {\n z-index: 4000;\n}\n.tw-z-\\[9998\\] {\n z-index: 9998;\n}\n.tw-z-\\[999\\] {\n z-index: 999;\n}\n.tw-col-span-1 {\n grid-column: span 1 / span 1;\n}\n.tw-float-right {\n float: right;\n}\n.tw-float-left {\n float: left;\n}\n.tw-m-1 {\n margin: 0.25rem;\n}\n.tw-m-4 {\n margin: 1rem;\n}\n.tw-m-auto {\n margin: auto;\n}\n.\\!tw-my-0 {\n margin-top: 0px !important;\n margin-bottom: 0px !important;\n}\n.\\!tw-my-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n}\n.-tw-mx-4 {\n margin-left: -1rem;\n margin-right: -1rem;\n}\n.tw-mx-2 {\n margin-left: 0.5rem;\n margin-right: 0.5rem;\n}\n.tw-mx-4 {\n margin-left: 1rem;\n margin-right: 1rem;\n}\n.tw-mx-6 {\n margin-left: 1.5rem;\n margin-right: 1.5rem;\n}\n.tw-mx-auto {\n margin-left: auto;\n margin-right: auto;\n}\n.tw-my-1 {\n margin-top: 0.25rem;\n margin-bottom: 0.25rem;\n}\n.tw-my-10 {\n margin-top: 2.5rem;\n margin-bottom: 2.5rem;\n}\n.tw-my-2 {\n margin-top: 0.5rem;\n margin-bottom: 0.5rem;\n}\n.-tw-mb-1 {\n margin-bottom: -0.25rem;\n}\n.-tw-mb-2 {\n margin-bottom: -0.5rem;\n}\n.-tw-mb-4 {\n margin-bottom: -1rem;\n}\n.-tw-mr-4 {\n margin-right: -1rem;\n}\n.-tw-mr-6 {\n margin-right: -1.5rem;\n}\n.-tw-mt-2 {\n margin-top: -0.5rem;\n}\n.tw-mb-0 {\n margin-bottom: 0px;\n}\n.tw-mb-1 {\n margin-bottom: 0.25rem;\n}\n.tw-mb-10 {\n margin-bottom: 2.5rem;\n}\n.tw-mb-2 {\n margin-bottom: 0.5rem;\n}\n.tw-mb-3 {\n margin-bottom: 0.75rem;\n}\n.tw-mb-4 {\n margin-bottom: 1rem;\n}\n.tw-mb-6 {\n margin-bottom: 1.5rem;\n}\n.tw-ml-1 {\n margin-left: 0.25rem;\n}\n.tw-ml-2 {\n margin-left: 0.5rem;\n}\n.tw-mr-1 {\n margin-right: 0.25rem;\n}\n.tw-mr-2 {\n margin-right: 0.5rem;\n}\n.tw-mr-4 {\n margin-right: 1rem;\n}\n.tw-mr-5 {\n margin-right: 1.25rem;\n}\n.tw-mt-0 {\n margin-top: 0px;\n}\n.tw-mt-1 {\n margin-top: 0.25rem;\n}\n.tw-mt-1\\.5 {\n margin-top: 0.375rem;\n}\n.tw-mt-12 {\n margin-top: 3rem;\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-block {\n display: block;\n}\n.tw-inline-block {\n display: inline-block;\n}\n.tw-inline {\n display: inline;\n}\n.tw-flex {\n display: flex;\n}\n.tw-inline-flex {\n display: inline-flex;\n}\n.tw-table {\n display: table;\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-12 {\n height: 3rem;\n}\n.tw-h-20 {\n height: 5rem;\n}\n.tw-h-24 {\n height: 6rem;\n}\n.tw-h-28 {\n height: 7rem;\n}\n.tw-h-3 {\n height: 0.75rem;\n}\n.tw-h-3\\/4 {\n height: 75%;\n}\n.tw-h-32 {\n height: 8rem;\n}\n.tw-h-4 {\n height: 1rem;\n}\n.tw-h-40 {\n height: 10rem;\n}\n.tw-h-48 {\n height: 12rem;\n}\n.tw-h-5 {\n height: 1.25rem;\n}\n.tw-h-6 {\n height: 1.5rem;\n}\n.tw-h-8 {\n height: 2rem;\n}\n.tw-h-96 {\n height: 24rem;\n}\n.tw-h-\\[100dvh\\] {\n height: 100dvh;\n}\n.tw-h-\\[calc\\(100\\%-1rem\\)\\] {\n height: calc(100% - 1rem);\n}\n.tw-h-\\[calc\\(100dvh-268px\\)\\] {\n height: calc(100dvh - 268px);\n}\n.tw-h-\\[calc\\(100dvh-280px\\)\\] {\n height: calc(100dvh - 280px);\n}\n.tw-h-\\[calc\\(100dvh-332px\\)\\] {\n height: calc(100dvh - 332px);\n}\n.tw-h-\\[calc\\(100dvh-64px\\)\\] {\n height: calc(100dvh - 64px);\n}\n.tw-h-\\[calc\\(50\\%-0\\.75em\\)\\] {\n height: calc(50% - 0.75em);\n}\n.tw-h-\\[calc\\(50\\%-1\\.5em\\)\\] {\n height: calc(50% - 1.5em);\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-64 {\n max-height: 16rem;\n}\n.tw-max-h-\\[calc\\(100dvh-152px\\)\\] {\n max-height: calc(100dvh - 152px);\n}\n.tw-max-h-\\[calc\\(100dvh-96px\\)\\] {\n max-height: calc(100dvh - 96px);\n}\n.tw-min-h-0 {\n min-height: 0px;\n}\n.tw-min-h-56 {\n min-height: 224px;\n}\n.tw-min-h-80 {\n min-height: 320px;\n}\n.tw-min-h-\\[21px\\] {\n min-height: 21px;\n}\n.tw-min-h-\\[5em\\] {\n min-height: 5em;\n}\n.tw-w-1 {\n width: 0.25rem;\n}\n.tw-w-10 {\n width: 2.5rem;\n}\n.tw-w-12 {\n width: 3rem;\n}\n.tw-w-20 {\n width: 5rem;\n}\n.tw-w-28 {\n width: 7rem;\n}\n.tw-w-4 {\n width: 1rem;\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-8 {\n width: 2rem;\n}\n.tw-w-80 {\n width: 20rem;\n}\n.tw-w-96 {\n width: 24rem;\n}\n.tw-w-\\[56px\\] {\n width: 56px;\n}\n.tw-w-\\[calc\\(100\\%-32px\\)\\] {\n width: calc(100% - 32px);\n}\n.tw-w-\\[calc\\(100vw-2rem\\)\\] {\n width: calc(100vw - 2rem);\n}\n.tw-w-fit {\n width: -moz-fit-content;\n width: fit-content;\n}\n.tw-w-full {\n width: 100%;\n}\n.tw-min-w-0 {\n min-width: 0px;\n}\n.tw-min-w-80 {\n min-width: 320px;\n}\n.tw-min-w-\\[10\\.4em\\] {\n min-width: 10.4em;\n}\n.tw-min-w-\\[10em\\] {\n min-width: 10em;\n}\n.tw-min-w-\\[8rem\\] {\n min-width: 8rem;\n}\n.tw-min-w-fit {\n min-width: -moz-fit-content;\n min-width: fit-content;\n}\n.tw-max-w-3xl {\n max-width: 48rem;\n}\n.tw-max-w-\\[17rem\\] {\n max-width: 17rem;\n}\n.tw-max-w-\\[22rem\\] {\n max-width: 22rem;\n}\n.tw-max-w-\\[calc\\(100\\%-60px\\)\\] {\n max-width: calc(100% - 60px);\n}\n.tw-max-w-full {\n max-width: 100%;\n}\n.tw-max-w-xl {\n max-width: 36rem;\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-flex-grow {\n flex-grow: 1;\n}\n.tw-grow {\n flex-grow: 1;\n}\n.tw-basis-1\\/5 {\n flex-basis: 20%;\n}\n.tw-basis-2\\/5 {\n flex-basis: 40%;\n}\n.-tw-translate-y-1\\/3 {\n --tw-translate-y: -33.333333%;\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--translate-x-1\\/2 {\n --tw-translate-x: -50%;\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--translate-x-full {\n --tw-translate-x: -100%;\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-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-translate-x-1\\/3 {\n --tw-translate-x: 33.333333%;\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-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@keyframes tw-pulseGrow {\n\n 0%, 100% {\n transform: scale(1.00);\n }\n\n 80% {\n transform: scale(1.00);\n }\n\n 90% {\n transform: scale(0.95);\n }\n}\n.tw-animate-pulseGrow {\n animation: tw-pulseGrow 2s ease-in-out infinite;\n}\n.tw-cursor-pointer {\n cursor: pointer;\n}\n.tw-cursor-text {\n cursor: text;\n}\n.tw-resize-none {\n resize: none;\n}\n.tw-list-inside {\n list-style-position: inside;\n}\n.tw-list-decimal {\n list-style-type: decimal;\n}\n.tw-list-disc {\n list-style-type: disc;\n}\n.tw-list-none {\n list-style-type: none;\n}\n.tw-columns-1 {\n -moz-columns: 1;\n columns: 1;\n}\n.tw-break-inside-avoid {\n -moz-column-break-inside: avoid;\n break-inside: avoid;\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-2 {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n}\n.tw-grid-cols-3 {\n grid-template-columns: repeat(3, 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-flex-wrap {\n flex-wrap: wrap;\n}\n.tw-place-content-center {\n place-content: center;\n}\n.tw-place-content-end {\n place-content: end;\n}\n.tw-place-items-end {\n place-items: end;\n}\n.tw-place-items-center {\n place-items: center;\n}\n.tw-items-center {\n align-items: center;\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-justify-between {\n justify-content: space-between;\n}\n.tw-gap-2 {\n gap: 0.5rem;\n}\n.tw-gap-6 {\n gap: 1.5rem;\n}\n.tw-space-x-2 > :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.tw-space-x-3 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-x-reverse: 0;\n margin-right: calc(0.75rem * var(--tw-space-x-reverse));\n margin-left: calc(0.75rem * calc(1 - var(--tw-space-x-reverse)));\n}\n.tw-space-y-4 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-y-reverse: 0;\n margin-top: calc(1rem * calc(1 - var(--tw-space-y-reverse)));\n margin-bottom: calc(1rem * var(--tw-space-y-reverse));\n}\n.tw-space-y-6 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-y-reverse: 0;\n margin-top: calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));\n margin-bottom: calc(1.5rem * var(--tw-space-y-reverse));\n}\n.tw-place-self-end {\n place-self: end;\n}\n.tw-place-self-center {\n place-self: center;\n}\n.tw-self-center {\n align-self: center;\n}\n.tw-overflow-auto {\n overflow: auto;\n}\n.tw-overflow-hidden {\n overflow: hidden;\n}\n.tw-overflow-scroll {\n overflow: scroll;\n}\n.tw-overflow-x-auto {\n overflow-x: auto;\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-text-ellipsis {\n text-overflow: ellipsis;\n}\n.tw-whitespace-nowrap {\n white-space: nowrap;\n}\n.\\!tw-rounded-none {\n border-radius: 0px !important;\n}\n.tw-rounded {\n border-radius: 0.25rem;\n}\n.tw-rounded-2xl {\n border-radius: 1rem;\n}\n.tw-rounded-box {\n border-radius: var(--rounded-box, 1rem);\n}\n.tw-rounded-full {\n border-radius: 9999px;\n}\n.tw-rounded-lg {\n border-radius: 0.5rem;\n}\n.tw-rounded-md {\n border-radius: 0.375rem;\n}\n.tw-rounded-none {\n border-radius: 0px;\n}\n.tw-rounded-xl {\n border-radius: 0.75rem;\n}\n.tw-rounded-br-md {\n border-bottom-right-radius: 0.375rem;\n}\n.tw-rounded-tl-none {\n border-top-left-radius: 0px;\n}\n.tw-rounded-tr-md {\n border-top-right-radius: 0.375rem;\n}\n.tw-border {\n border-width: 1px;\n}\n.tw-border-0 {\n border-width: 0px;\n}\n.tw-border-4 {\n border-width: 4px;\n}\n.tw-border-\\[1px\\] {\n border-width: 1px;\n}\n.tw-border-t-0 {\n border-top-width: 0px;\n}\n.tw-border-none {\n border-style: none;\n}\n.tw-border-\\[var\\(--fallback-bc\\,oklch\\(var\\(--bc\\)\\/0\\.2\\)\\)\\] {\n border-color: var(--fallback-bc,oklch(var(--bc)/0.2));\n}\n.tw-border-base-200 {\n --tw-border-opacity: 1;\n border-color: var(--fallback-b2,oklch(var(--b2)/var(--tw-border-opacity, 1)));\n}\n.tw-border-base-300 {\n --tw-border-opacity: 1;\n border-color: var(--fallback-b3,oklch(var(--b3)/var(--tw-border-opacity, 1)));\n}\n.tw-border-current {\n border-color: currentColor;\n}\n.tw-border-gray-300 {\n --tw-border-opacity: 1;\n border-color: rgb(209 213 219 / var(--tw-border-opacity, 1));\n}\n.tw-bg-\\[\\#369acc\\] {\n --tw-bg-opacity: 1;\n background-color: rgb(54 154 204 / var(--tw-bg-opacity, 1));\n}\n.tw-bg-\\[\\#95cf92\\] {\n --tw-bg-opacity: 1;\n background-color: rgb(149 207 146 / var(--tw-bg-opacity, 1));\n}\n.tw-bg-\\[\\#9656a2\\] {\n --tw-bg-opacity: 1;\n background-color: rgb(150 86 162 / var(--tw-bg-opacity, 1));\n}\n.tw-bg-\\[\\#A9DEF9\\] {\n --tw-bg-opacity: 1;\n background-color: rgb(169 222 249 / var(--tw-bg-opacity, 1));\n}\n.tw-bg-\\[\\#D0F4DE\\] {\n --tw-bg-opacity: 1;\n background-color: rgb(208 244 222 / var(--tw-bg-opacity, 1));\n}\n.tw-bg-\\[\\#E4C1F9\\] {\n --tw-bg-opacity: 1;\n background-color: rgb(228 193 249 / var(--tw-bg-opacity, 1));\n}\n.tw-bg-\\[\\#FCF6BD\\] {\n --tw-bg-opacity: 1;\n background-color: rgb(252 246 189 / var(--tw-bg-opacity, 1));\n}\n.tw-bg-\\[\\#FF99C8\\] {\n --tw-bg-opacity: 1;\n background-color: rgb(255 153 200 / var(--tw-bg-opacity, 1));\n}\n.tw-bg-\\[\\#de324c\\] {\n --tw-bg-opacity: 1;\n background-color: rgb(222 50 76 / var(--tw-bg-opacity, 1));\n}\n.tw-bg-\\[\\#f4895f\\] {\n --tw-bg-opacity: 1;\n background-color: rgb(244 137 95 / var(--tw-bg-opacity, 1));\n}\n.tw-bg-\\[\\#f8e16f\\] {\n --tw-bg-opacity: 1;\n background-color: rgb(248 225 111 / var(--tw-bg-opacity, 1));\n}\n.tw-bg-\\[\\#fff0d6\\] {\n --tw-bg-opacity: 1;\n background-color: rgb(255 240 214 / var(--tw-bg-opacity, 1));\n}\n.tw-bg-base-100 {\n --tw-bg-opacity: 1;\n background-color: var(--fallback-b1,oklch(var(--b1)/var(--tw-bg-opacity, 1)));\n}\n.tw-bg-base-200 {\n --tw-bg-opacity: 1;\n background-color: var(--fallback-b2,oklch(var(--b2)/var(--tw-bg-opacity, 1)));\n}\n.tw-bg-base-300 {\n --tw-bg-opacity: 1;\n background-color: var(--fallback-b3,oklch(var(--b3)/var(--tw-bg-opacity, 1)));\n}\n.tw-bg-gray-200 {\n --tw-bg-opacity: 1;\n background-color: rgb(229 231 235 / var(--tw-bg-opacity, 1));\n}\n.tw-bg-neutral-content {\n --tw-bg-opacity: 1;\n background-color: var(--fallback-nc,oklch(var(--nc)/var(--tw-bg-opacity, 1)));\n}\n.tw-bg-primary {\n --tw-bg-opacity: 1;\n background-color: var(--fallback-p,oklch(var(--p)/var(--tw-bg-opacity, 1)));\n}\n.tw-bg-slate-200 {\n --tw-bg-opacity: 1;\n background-color: rgb(226 232 240 / var(--tw-bg-opacity, 1));\n}\n.tw-bg-transparent {\n background-color: transparent;\n}\n.tw-bg-white {\n --tw-bg-opacity: 1;\n background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1));\n}\n.tw-fill-current {\n fill: currentColor;\n}\n.tw-stroke-current {\n stroke: currentColor;\n}\n.tw-object-cover {\n -o-object-fit: cover;\n object-fit: cover;\n}\n.\\!tw-p-0 {\n padding: 0px !important;\n}\n.\\!tw-p-4 {\n padding: 1rem !important;\n}\n.\\!tw-p-9 {\n padding: 2.25rem !important;\n}\n.tw-p-0 {\n padding: 0px;\n}\n.tw-p-1 {\n padding: 0.25rem;\n}\n.tw-p-2 {\n padding: 0.5rem;\n}\n.tw-p-3 {\n padding: 0.75rem;\n}\n.tw-p-4 {\n padding: 1rem;\n}\n.tw-p-6 {\n padding: 1.5rem;\n}\n.tw-p-\\[1px\\] {\n padding: 1px;\n}\n.tw-px-2 {\n padding-left: 0.5rem;\n padding-right: 0.5rem;\n}\n.tw-px-4 {\n padding-left: 1rem;\n padding-right: 1rem;\n}\n.tw-px-6 {\n padding-left: 1.5rem;\n padding-right: 1.5rem;\n}\n.tw-px-8 {\n padding-left: 2rem;\n padding-right: 2rem;\n}\n.tw-py-0\\.5 {\n padding-top: 0.125rem;\n padding-bottom: 0.125rem;\n}\n.tw-py-1 {\n padding-top: 0.25rem;\n padding-bottom: 0.25rem;\n}\n.tw-py-2 {\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n}\n.\\!tw-pe-2 {\n padding-inline-end: 0.5rem !important;\n}\n.\\!tw-ps-2 {\n padding-inline-start: 0.5rem !important;\n}\n.tw-pb-0 {\n padding-bottom: 0px;\n}\n.tw-pb-1 {\n padding-bottom: 0.25rem;\n}\n.tw-pb-2 {\n padding-bottom: 0.5rem;\n}\n.tw-pb-4 {\n padding-bottom: 1rem;\n}\n.tw-pb-6 {\n padding-bottom: 1.5rem;\n}\n.tw-pl-2 {\n padding-left: 0.5rem;\n}\n.tw-pr-1 {\n padding-right: 0.25rem;\n}\n.tw-pr-12 {\n padding-right: 3rem;\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-2 {\n padding-top: 0.5rem;\n}\n.tw-pt-4 {\n padding-top: 1rem;\n}\n.tw-pt-6 {\n padding-top: 1.5rem;\n}\n.tw-text-center {\n text-align: center;\n}\n.tw-text-right {\n text-align: right;\n}\n.tw-align-middle {\n vertical-align: middle;\n}\n.tw-text-2xl {\n font-size: 1.5rem;\n line-height: 2rem;\n}\n.tw-text-3xl {\n font-size: 1.875rem;\n line-height: 2.25rem;\n}\n.tw-text-6xl {\n font-size: 3.75rem;\n line-height: 1;\n}\n.tw-text-base {\n font-size: 1rem;\n line-height: 1.5rem;\n}\n.tw-text-lg {\n font-size: 1.125rem;\n line-height: 1.75rem;\n}\n.tw-text-map {\n font-size: 13px;\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-text-xs {\n font-size: 0.75rem;\n line-height: 1rem;\n}\n.tw-font-bold {\n font-weight: 700;\n}\n.tw-font-medium {\n font-weight: 500;\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-italic {\n font-style: italic;\n}\n.tw-leading-3 {\n line-height: .75rem;\n}\n.tw-leading-5 {\n line-height: 1.25rem;\n}\n.tw-leading-map {\n line-height: 1.4em;\n}\n.\\!tw-text-base-content {\n --tw-text-opacity: 1 !important;\n color: var(--fallback-bc,oklch(var(--bc)/var(--tw-text-opacity, 1))) !important;\n}\n.\\!tw-text-error {\n --tw-text-opacity: 1 !important;\n color: var(--fallback-er,oklch(var(--er)/var(--tw-text-opacity, 1))) !important;\n}\n.tw-text-base-content {\n --tw-text-opacity: 1;\n color: var(--fallback-bc,oklch(var(--bc)/var(--tw-text-opacity, 1)));\n}\n.tw-text-current {\n color: currentColor;\n}\n.tw-text-error {\n --tw-text-opacity: 1;\n color: var(--fallback-er,oklch(var(--er)/var(--tw-text-opacity, 1)));\n}\n.tw-text-gray-400 {\n --tw-text-opacity: 1;\n color: rgb(156 163 175 / var(--tw-text-opacity, 1));\n}\n.tw-text-gray-500 {\n --tw-text-opacity: 1;\n color: rgb(107 114 128 / var(--tw-text-opacity, 1));\n}\n.tw-text-gray-600 {\n --tw-text-opacity: 1;\n color: rgb(75 85 99 / var(--tw-text-opacity, 1));\n}\n.tw-text-green-500 {\n --tw-text-opacity: 1;\n color: rgb(34 197 94 / var(--tw-text-opacity, 1));\n}\n.tw-text-primary {\n --tw-text-opacity: 1;\n color: var(--fallback-p,oklch(var(--p)/var(--tw-text-opacity, 1)));\n}\n.tw-text-white {\n --tw-text-opacity: 1;\n color: rgb(255 255 255 / var(--tw-text-opacity, 1));\n}\n.tw-text-zinc-500 {\n --tw-text-opacity: 1;\n color: rgb(113 113 122 / var(--tw-text-opacity, 1));\n}\n.tw-underline {\n text-decoration-line: underline;\n}\n.tw-opacity-0 {\n opacity: 0;\n}\n.tw-opacity-100 {\n opacity: 1;\n}\n.tw-opacity-50 {\n opacity: 0.5;\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-lg {\n --tw-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);\n --tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -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-md {\n --tw-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);\n --tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px 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-sm {\n --tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05);\n --tw-shadow-colored: 0 1px 2px 0 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-backdrop-brightness-75 {\n --tw-backdrop-brightness: brightness(.75);\n -webkit-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);\n backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);\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-transition-none {\n transition-property: none;\n}\n.tw-transition-opacity {\n transition-property: opacity;\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-300 {\n transition-duration: 300ms;\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.\\[--tab-border-color\\:var\\(--fallback-bc\\2c oklch\\(var\\(--bc\\)\\/0\\.2\\)\\)\\] {\n --tab-border-color: var(--fallback-bc,oklch(var(--bc)/0.2));\n}\n.\\!\\[clip\\:rect\\(0\\2c 0\\2c 0\\2c 0\\)\\] {\n clip: rect(0,0,0,0) !important;\n}\n.\\[clip\\:rect\\(0\\2c 0\\2c 0\\2c 0\\)\\] {\n clip: rect(0,0,0,0);\n}\n.\\[direction\\:ltr\\] {\n direction: ltr;\n}\n.\\[overflow-anchor\\:none\\] {\n overflow-anchor: none;\n}\n.\\[transition\\:background-color_\\.2s_linear\\2c _height_\\.2s_ease-in-out\\] {\n transition: background-color .2s linear, height .2s ease-in-out;\n}\n.\\[transition\\:background-color_\\.2s_linear\\2c _width_\\.2s_ease-in-out\\2c _opacity\\] {\n transition: background-color .2s linear, width .2s ease-in-out, opacity;\n}\n.\\[transition\\:background-color_250ms_cubic-bezier\\(0\\.4\\2c 0\\2c 0\\.2\\2c 1\\)_0ms\\2c box-shadow_250ms_cubic-bezier\\(0\\.4\\2c 0\\2c 0\\.2\\2c 1\\)_0ms\\2c border_250ms_cubic-bezier\\(0\\.4\\2c 0\\2c 0\\.2\\2c 1\\)_0ms\\] {\n transition: background-color 250ms cubic-bezier(0.4,0,0.2,1) 0ms,box-shadow 250ms cubic-bezier(0.4,0,0.2,1) 0ms,border 250ms cubic-bezier(0.4,0,0.2,1) 0ms;\n}\n\n.fade {\n -webkit-mask-image: linear-gradient(180deg, transparent, #000 1%, #000 99%, transparent);\n mask-image: linear-gradient(180deg, transparent, #000 1%, #000 99%, transparent);\n}\n\n.tw-modal {\n z-index: 1200 !important;\n}\n\n.tw-menu li a {\n border-radius: 10px;\n}\n\n.tw-modal {\n z-index: 1200 !important;\n max-height: 100dvh;\n}\n\n.tw-modal-box {\n max-height: calc(100dvh - 2em);\n}\n\n.Toastify__toast {\n border-radius: 1rem;\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 margin-left: 1rem;\n margin-right: 1rem;\n margin-bottom: 1rem;\n background-color: var(--fallback-b1,oklch(var(--b1)/1));\n color: var(--fallback-bc,oklch(var(--bc)/1));\n}\n\n.Toastify__toast-container {\n z-index: 2001 !important;\n}\n\n.Toastify__toast-container--top-right {\n top: 4.75em !important;\n}\n\n:root {\n\n --toastify-color-info: var(--fallback-in,oklch(var(--in)/1));\n --toastify-color-success: var(--fallback-su,oklch(var(--su)/1));\n --toastify-color-warning: var(--fallback-wa,oklch(var(--wa)/1));\n --toastify-color-error: var(--fallback-er,oklch(var(--er)/1));\n\n}\n\n.placeholder-center::-moz-placeholder {\n text-align: center;\n}\n\n.placeholder-center::placeholder {\n text-align: center;\n}\n\n.custom-file-upload {\n cursor: pointer;\n}\n\ninput[type=\"file\"] {\n display: none;\n}\n\n.custom-file-upload:hover .button {\n opacity: 0.8;\n}\n\n.custom-file-upload .button {\n transition: .5s ease;\n opacity: 0;\n position: absolute;\n transform: translate(8px, 8px);\n\n}\n\n.tw-tab-content .container {\n height: 100%;\n}\n\n.masonry {\n -moz-column-count: 1;\n column-count: 1;\n -moz-column-gap: 1.5rem;\n column-gap: 1.5rem;\n}\n.masonry-item {\n -moz-column-break-inside: avoid;\n break-inside: avoid;\n margin-bottom: 1.5rem;\n}\n@media (min-width: 640px) {\n .masonry {\n -moz-column-count: 2;\n column-count: 2;\n }\n}\n@media (min-width: 1024px) {\n .masonry {\n -moz-column-count: 3;\n column-count: 3;\n }\n}\n@media (min-width: 1536px) {\n .masonry {\n -moz-column-count: 4;\n column-count: 4;\n }\n}\n@media (min-width: 640px) {\n\n .sm\\:tw-table-sm :not(thead):not(tfoot) tr {\n font-size: 0.875rem;\n line-height: 1.25rem;\n }\n\n .sm\\:tw-table-sm :where(th, td) {\n padding-left: 0.75rem;\n padding-right: 0.75rem;\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n }\n}\n@media (min-width: 768px) {\n\n .md\\:tw-table-md :not(thead):not(tfoot) tr {\n font-size: 0.875rem;\n line-height: 1.25rem;\n }\n\n .md\\:tw-table-md :where(th, td) {\n padding-left: 1rem;\n padding-right: 1rem;\n padding-top: 0.75rem;\n padding-bottom: 0.75rem;\n }\n}\n.hover\\:tw-cursor-pointer:hover {\n cursor: pointer;\n}\n.hover\\:tw-bg-base-200:hover {\n --tw-bg-opacity: 1;\n background-color: var(--fallback-b2,oklch(var(--b2)/var(--tw-bg-opacity, 1)));\n}\n.hover\\:tw-bg-slate-300:hover {\n --tw-bg-opacity: 1;\n background-color: rgb(203 213 225 / var(--tw-bg-opacity, 1));\n}\n.hover\\:tw-bg-transparent:hover {\n background-color: transparent;\n}\n.hover\\:tw-font-bold:hover {\n font-weight: 700;\n}\n.hover\\:tw-text-primary:hover {\n --tw-text-opacity: 1;\n color: var(--fallback-p,oklch(var(--p)/var(--tw-text-opacity, 1)));\n}\n.hover\\:tw-underline:hover {\n text-decoration-line: underline;\n}\n.focus\\:tw-border-indigo-500:focus {\n --tw-border-opacity: 1;\n border-color: rgb(99 102 241 / var(--tw-border-opacity, 1));\n}\n.focus\\:tw-outline-none:focus {\n outline: 2px solid transparent;\n outline-offset: 2px;\n}\n.focus\\:tw-ring-indigo-500:focus {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(99 102 241 / var(--tw-ring-opacity, 1));\n}\n.data-\\[te-sidenav-slim\\=\\'true\\'\\]\\:tw-hidden[data-te-sidenav-slim='true'] {\n display: none;\n}\n.data-\\[te-sidenav-slim-collapsed\\=\\'true\\'\\]\\:tw-w-\\[56px\\][data-te-sidenav-slim-collapsed='true'] {\n width: 56px;\n}\n.data-\\[te-sidenav-slim\\=\\'true\\'\\]\\:tw-w-\\[56px\\][data-te-sidenav-slim='true'] {\n width: 56px;\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.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@media (min-width: 640px) {\n\n .sm\\:\\!tw-left-auto {\n left: auto !important;\n }\n\n .sm\\:tw-grid-cols-2 {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n\n .sm\\:tw-text-sm {\n font-size: 0.875rem;\n line-height: 1.25rem;\n }\n}\n@media (min-width: 768px) {\n\n .md\\:tw-mb-0 {\n margin-bottom: 0px;\n }\n\n .md\\:tw-flex {\n display: flex;\n }\n\n .md\\:tw-hidden {\n display: none;\n }\n\n .md\\:tw-w-1\\/2 {\n width: 50%;\n }\n\n .md\\:tw-w-\\[calc\\(50\\%-32px\\)\\] {\n width: calc(50% - 32px);\n }\n\n .md\\:tw-columns-2 {\n -moz-columns: 2;\n columns: 2;\n }\n\n .md\\:tw-grid-cols-1 {\n grid-template-columns: repeat(1, minmax(0, 1fr));\n }\n\n .md\\:tw-grid-cols-2 {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n\n .md\\:tw-space-x-4 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-x-reverse: 0;\n margin-right: calc(1rem * var(--tw-space-x-reverse));\n margin-left: calc(1rem * calc(1 - var(--tw-space-x-reverse)));\n }\n\n .md\\:tw-text-2xl {\n font-size: 1.5rem;\n line-height: 2rem;\n }\n}\n@media (min-width: 1024px) {\n\n .lg\\:tw-columns-3 {\n -moz-columns: 3;\n columns: 3;\n }\n\n .lg\\:tw-grid-cols-1 {\n grid-template-columns: repeat(1, minmax(0, 1fr));\n }\n}\n@media (min-width: 1280px) {\n\n .xl\\:tw-max-w-6xl {\n max-width: 72rem;\n }\n\n .xl\\:tw-grid-cols-1 {\n grid-template-columns: repeat(1, minmax(0, 1fr));\n }\n\n .xl\\:tw-text-3xl {\n font-size: 1.875rem;\n line-height: 2.25rem;\n }\n}\n@media (min-width: 1536px) {\n\n .\\32xl\\:tw-columns-4 {\n -moz-columns: 4;\n columns: 4;\n }\n\n .\\32xl\\:tw-grid-cols-2 {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n}\n.rtl\\:\\[direction\\:rtl\\]:where([dir=\"rtl\"], [dir=\"rtl\"] *) {\n direction: rtl;\n}\n@media (prefers-color-scheme: dark) {\n\n .dark\\:tw-bg-zinc-800 {\n --tw-bg-opacity: 1;\n background-color: rgb(39 39 42 / var(--tw-bg-opacity, 1));\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.\\[\\&\\[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}";
76
+ var css_248z$4 = "*, ::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-gradient-from-position: ;\n --tw-gradient-via-position: ;\n --tw-gradient-to-position: ;\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 --tw-contain-size: ;\n --tw-contain-layout: ;\n --tw-contain-paint: ;\n --tw-contain-style: ;\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-gradient-from-position: ;\n --tw-gradient-via-position: ;\n --tw-gradient-to-position: ;\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 --tw-contain-size: ;\n --tw-contain-layout: ;\n --tw-contain-paint: ;\n --tw-contain-style: ;\n}/*\n! tailwindcss v3.4.17 | 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.\n7. Disable tap highlights on iOS\n*/\n\nhtml,\n:host {\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: Helvetica, sans-serif, Roboto; /* 4 */\n font-feature-settings: normal; /* 5 */\n font-variation-settings: normal; /* 6 */\n -webkit-tap-highlight-color: transparent; /* 7 */\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. Use the user's configured `mono` font-feature-settings by default.\n3. Use the user's configured `mono` font-variation-settings by default.\n4. Correct the odd `em` font sizing in all browsers.\n*/\n\ncode,\nkbd,\nsamp,\npre {\n font-family: ui-monospace, monospace; /* 1 */\n font-feature-settings: normal; /* 2 */\n font-variation-settings: normal; /* 3 */\n font-size: 1em; /* 4 */\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-feature-settings: inherit; /* 1 */\n font-variation-settings: inherit; /* 1 */\n font-size: 100%; /* 1 */\n font-weight: inherit; /* 1 */\n line-height: inherit; /* 1 */\n letter-spacing: 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,\ninput:where([type='button']),\ninput:where([type='reset']),\ninput:where([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/*\nReset default styling for dialogs.\n*/\ndialog {\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]:where(:not([hidden=\"until-found\"])) {\n display: none;\n}\n\n:root,\n[data-theme] {\n background-color: var(--fallback-b1,oklch(var(--b1)/1));\n color: var(--fallback-bc,oklch(var(--bc)/1));\n}\n\n@supports not (color: oklch(0% 0 0)) {\n\n :root {\n color-scheme: light;\n --fallback-p: #491eff;\n --fallback-pc: #d4dbff;\n --fallback-s: #ff41c7;\n --fallback-sc: #fff9fc;\n --fallback-a: #00cfbd;\n --fallback-ac: #00100d;\n --fallback-n: #2b3440;\n --fallback-nc: #d7dde4;\n --fallback-b1: #ffffff;\n --fallback-b2: #e5e6e6;\n --fallback-b3: #e5e6e6;\n --fallback-bc: #1f2937;\n --fallback-in: #00b3f0;\n --fallback-inc: #000000;\n --fallback-su: #00ca92;\n --fallback-suc: #000000;\n --fallback-wa: #ffc22d;\n --fallback-wac: #000000;\n --fallback-er: #ff6f70;\n --fallback-erc: #000000;\n }\n\n @media (prefers-color-scheme: dark) {\n\n :root {\n color-scheme: dark;\n --fallback-p: #7582ff;\n --fallback-pc: #050617;\n --fallback-s: #ff71cf;\n --fallback-sc: #190211;\n --fallback-a: #00c7b5;\n --fallback-ac: #000e0c;\n --fallback-n: #2a323c;\n --fallback-nc: #a6adbb;\n --fallback-b1: #1d232a;\n --fallback-b2: #191e24;\n --fallback-b3: #15191e;\n --fallback-bc: #a6adbb;\n --fallback-in: #00b3f0;\n --fallback-inc: #000000;\n --fallback-su: #00ca92;\n --fallback-suc: #000000;\n --fallback-wa: #ffc22d;\n --fallback-wac: #000000;\n --fallback-er: #ff6f70;\n --fallback-erc: #000000;\n }\n }\n}\n\nhtml {\n -webkit-tap-highlight-color: transparent;\n}\n\n* {\n scrollbar-color: color-mix(in oklch, currentColor 35%, transparent) transparent;\n}\n\n*:hover {\n scrollbar-color: color-mix(in oklch, currentColor 60%, transparent) transparent;\n}\n\n:root {\n color-scheme: light;\n --in: 72.06% 0.191 231.6;\n --su: 64.8% 0.150 160;\n --wa: 84.71% 0.199 83.87;\n --er: 71.76% 0.221 22.18;\n --pc: 89.824% 0.06192 275.75;\n --ac: 15.352% 0.0368 183.61;\n --inc: 0% 0 0;\n --suc: 0% 0 0;\n --wac: 0% 0 0;\n --erc: 0% 0 0;\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-focus-scale: 0.95;\n --border-btn: 1px;\n --tab-border: 1px;\n --tab-radius: 0.5rem;\n --p: 49.12% 0.3096 275.75;\n --s: 69.71% 0.329 342.55;\n --sc: 98.71% 0.0106 342.55;\n --a: 76.76% 0.184 183.61;\n --n: 32.1785% 0.02476 255.701624;\n --nc: 89.4994% 0.011585 252.096176;\n --b1: 100% 0 0;\n --b2: 96.1151% 0 0;\n --b3: 92.4169% 0.00108 197.137559;\n --bc: 27.8078% 0.029596 256.847952;\n}\n\n@media (prefers-color-scheme: dark) {\n\n :root {\n color-scheme: dark;\n --in: 72.06% 0.191 231.6;\n --su: 64.8% 0.150 160;\n --wa: 84.71% 0.199 83.87;\n --er: 71.76% 0.221 22.18;\n --pc: 13.138% 0.0392 275.75;\n --sc: 14.96% 0.052 342.55;\n --ac: 14.902% 0.0334 183.61;\n --inc: 0% 0 0;\n --suc: 0% 0 0;\n --wac: 0% 0 0;\n --erc: 0% 0 0;\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-focus-scale: 0.95;\n --border-btn: 1px;\n --tab-border: 1px;\n --tab-radius: 0.5rem;\n --p: 65.69% 0.196 275.75;\n --s: 74.8% 0.26 342.55;\n --a: 74.51% 0.167 183.61;\n --n: 31.3815% 0.021108 254.139175;\n --nc: 74.6477% 0.0216 264.435964;\n --b1: 25.3267% 0.015896 252.417568;\n --b2: 23.2607% 0.013807 253.100675;\n --b3: 21.1484% 0.01165 254.087939;\n --bc: 74.6477% 0.0216 264.435964;\n }\n}\n\n[data-theme=light] {\n color-scheme: light;\n --in: 72.06% 0.191 231.6;\n --su: 64.8% 0.150 160;\n --wa: 84.71% 0.199 83.87;\n --er: 71.76% 0.221 22.18;\n --pc: 89.824% 0.06192 275.75;\n --ac: 15.352% 0.0368 183.61;\n --inc: 0% 0 0;\n --suc: 0% 0 0;\n --wac: 0% 0 0;\n --erc: 0% 0 0;\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-focus-scale: 0.95;\n --border-btn: 1px;\n --tab-border: 1px;\n --tab-radius: 0.5rem;\n --p: 49.12% 0.3096 275.75;\n --s: 69.71% 0.329 342.55;\n --sc: 98.71% 0.0106 342.55;\n --a: 76.76% 0.184 183.61;\n --n: 32.1785% 0.02476 255.701624;\n --nc: 89.4994% 0.011585 252.096176;\n --b1: 100% 0 0;\n --b2: 96.1151% 0 0;\n --b3: 92.4169% 0.00108 197.137559;\n --bc: 27.8078% 0.029596 256.847952;\n}\n\n[data-theme=dark] {\n color-scheme: dark;\n --in: 72.06% 0.191 231.6;\n --su: 64.8% 0.150 160;\n --wa: 84.71% 0.199 83.87;\n --er: 71.76% 0.221 22.18;\n --pc: 13.138% 0.0392 275.75;\n --sc: 14.96% 0.052 342.55;\n --ac: 14.902% 0.0334 183.61;\n --inc: 0% 0 0;\n --suc: 0% 0 0;\n --wac: 0% 0 0;\n --erc: 0% 0 0;\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-focus-scale: 0.95;\n --border-btn: 1px;\n --tab-border: 1px;\n --tab-radius: 0.5rem;\n --p: 65.69% 0.196 275.75;\n --s: 74.8% 0.26 342.55;\n --a: 74.51% 0.167 183.61;\n --n: 31.3815% 0.021108 254.139175;\n --nc: 74.6477% 0.0216 264.435964;\n --b1: 25.3267% 0.015896 252.417568;\n --b2: 23.2607% 0.013807 253.100675;\n --b3: 21.1484% 0.01165 254.087939;\n --bc: 74.6477% 0.0216 264.435964;\n}\n\n[data-theme=cupcake] {\n color-scheme: light;\n --in: 72.06% 0.191 231.6;\n --su: 64.8% 0.150 160;\n --wa: 84.71% 0.199 83.87;\n --er: 71.76% 0.221 22.18;\n --pc: 15.2344% 0.017892 200.026556;\n --sc: 15.787% 0.020249 356.29965;\n --ac: 15.8762% 0.029206 78.618794;\n --nc: 84.7148% 0.013247 313.189598;\n --inc: 0% 0 0;\n --suc: 0% 0 0;\n --wac: 0% 0 0;\n --erc: 0% 0 0;\n --rounded-box: 1rem;\n --rounded-badge: 1.9rem;\n --animation-btn: 0.25s;\n --animation-input: .2s;\n --btn-focus-scale: 0.95;\n --border-btn: 1px;\n --p: 76.172% 0.089459 200.026556;\n --s: 78.9351% 0.101246 356.29965;\n --a: 79.3811% 0.146032 78.618794;\n --n: 23.5742% 0.066235 313.189598;\n --b1: 97.7882% 0.00418 56.375637;\n --b2: 93.9822% 0.007638 61.449292;\n --b3: 91.5861% 0.006811 53.440502;\n --bc: 23.5742% 0.066235 313.189598;\n --rounded-btn: 1.9rem;\n --tab-border: 2px;\n --tab-radius: 0.7rem;\n}\n\n[data-theme=retro] {\n color-scheme: light;\n --inc: 90.923% 0.043042 262.880917;\n --suc: 12.541% 0.033982 149.213788;\n --wac: 13.3168% 0.031484 58.31834;\n --erc: 13.144% 0.0398 27.33;\n --animation-btn: 0.25s;\n --animation-input: .2s;\n --btn-focus-scale: 0.95;\n --border-btn: 1px;\n --tab-border: 1px;\n --p: 76.8664% 0.104092 22.664655;\n --pc: 26.5104% 0.006243 0.522862;\n --s: 80.7415% 0.052534 159.094608;\n --sc: 26.5104% 0.006243 0.522862;\n --a: 70.3919% 0.125455 52.953428;\n --ac: 26.5104% 0.006243 0.522862;\n --n: 28.4181% 0.009519 355.534017;\n --nc: 92.5604% 0.025113 89.217311;\n --b1: 91.6374% 0.034554 90.51575;\n --b2: 88.2722% 0.049418 91.774344;\n --b3: 84.133% 0.065952 90.856665;\n --bc: 26.5104% 0.006243 0.522862;\n --in: 54.615% 0.215208 262.880917;\n --su: 62.7052% 0.169912 149.213788;\n --wa: 66.584% 0.157422 58.31834;\n --er: 65.72% 0.199 27.33;\n --rounded-box: 0.4rem;\n --rounded-btn: 0.4rem;\n --rounded-badge: 0.4rem;\n --tab-radius: 0.4rem;\n}\n\n[data-theme=cyberpunk] {\n color-scheme: light;\n --b2: 87.8943% 0.16647 104.32;\n --b3: 81.2786% 0.15394 104.32;\n --in: 72.06% 0.191 231.6;\n --su: 64.8% 0.150 160;\n --wa: 84.71% 0.199 83.87;\n --er: 71.76% 0.221 22.18;\n --bc: 18.902% 0.0358 104.32;\n --pc: 14.844% 0.0418 6.35;\n --sc: 16.666% 0.0368 204.72;\n --ac: 14.372% 0.04352 310.43;\n --inc: 0% 0 0;\n --suc: 0% 0 0;\n --wac: 0% 0 0;\n --erc: 0% 0 0;\n --animation-btn: 0.25s;\n --animation-input: .2s;\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: 74.22% 0.209 6.35;\n --s: 83.33% 0.184 204.72;\n --a: 71.86% 0.2176 310.43;\n --n: 23.04% 0.065 269.31;\n --nc: 94.51% 0.179 104.32;\n --b1: 94.51% 0.179 104.32;\n --rounded-box: 0;\n --rounded-btn: 0;\n --rounded-badge: 0;\n --tab-radius: 0;\n}\n\n[data-theme=aqua] {\n color-scheme: dark;\n --b2: 45.3464% 0.118611 261.181672;\n --b3: 41.9333% 0.109683 261.181672;\n --bc: 89.7519% 0.025508 261.181672;\n --sc: 12.1365% 0.02175 309.782946;\n --ac: 18.6854% 0.020445 94.555431;\n --nc: 12.2124% 0.023402 243.760661;\n --inc: 90.923% 0.043042 262.880917;\n --suc: 12.541% 0.033982 149.213788;\n --wac: 13.3168% 0.031484 58.31834;\n --erc: 14.79% 0.038 27.33;\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-focus-scale: 0.95;\n --border-btn: 1px;\n --tab-border: 1px;\n --tab-radius: 0.5rem;\n --p: 85.6617% 0.14498 198.6458;\n --pc: 40.1249% 0.068266 197.603872;\n --s: 60.6827% 0.108752 309.782946;\n --a: 93.4269% 0.102225 94.555431;\n --n: 61.0622% 0.117009 243.760661;\n --b1: 48.7596% 0.127539 261.181672;\n --in: 54.615% 0.215208 262.880917;\n --su: 62.7052% 0.169912 149.213788;\n --wa: 66.584% 0.157422 58.31834;\n --er: 73.95% 0.19 27.33;\n}\n\n[data-theme=docutopia] {\n --p: 54.645% 0.29421 298.46034;\n --b2: 25.8897% 0.107132 328.136712;\n --b3: 23.941% 0.099069 328.136712;\n --in: 72.06% 0.191 231.6;\n --su: 64.8% 0.150 160;\n --wa: 84.71% 0.199 83.87;\n --er: 71.76% 0.221 22.18;\n --pc: 90.929% 0.058842 298.46034;\n --sc: 13.9726% 0.031813 159.602475;\n --ac: 91.4207% 0.047244 260.255903;\n --nc: 84.1911% 0.008064 74.211583;\n --inc: 0% 0 0;\n --suc: 0% 0 0;\n --wac: 0% 0 0;\n --erc: 0% 0 0;\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-focus-scale: 0.95;\n --border-btn: 1px;\n --tab-border: 1px;\n --tab-radius: 0.5rem;\n --s: 69.8629% 0.159065 159.602475;\n --a: 57.1034% 0.236222 260.255903;\n --n: 20.9553% 0.040319 74.211583;\n --bc: 81.3966% 0.126754 58.524936;\n --b1: 27.8384% 0.115196 328.136712;\n}\n\ninput[type=\"range\"]::-webkit-slider-thumb {\n height: 1rem;\n width: 1rem;\n border-radius: 9999px;\n border: 0;\n appearance: none;\n -moz-appearance: none;\n -webkit-appearance: none;\n cursor: pointer;\n}\n\n.dark input[type=\"range\"]::-webkit-slider-thumb {}\n\ninput[type=\"range\"]:disabled::-webkit-slider-thumb {}\n\ninput[type=\"range\"]:disabled:focus::-webkit-slider-thumb {}\n\ninput[type=\"range\"]:disabled:active::-webkit-slider-thumb {}\n\n.dark input[type=\"range\"]:disabled::-webkit-slider-thumb {}\n\n.dark input[type=\"range\"]:disabled:focus::-webkit-slider-thumb {}\n\n.dark input[type=\"range\"]:disabled:active::-webkit-slider-thumb {}\n\ninput[type=\"range\"]::-moz-range-thumb {\n height: 1rem;\n width: 1rem;\n border-radius: 9999px;\n border: 0;\n appearance: none;\n -moz-appearance: none;\n -webkit-appearance: none;\n cursor: pointer;\n}\n\n.dark input[type=\"range\"]::-moz-range-thumb {}\n\ninput[type=\"range\"]:disabled::-moz-range-thumb {}\n\n.dark input[type=\"range\"]:disabled::-moz-range-thumb {}\n\ninput[type=\"range\"]::-moz-range-progress {}\n\ninput[type=\"range\"]::-ms-fill-lower {}\n\n.dark input[type=\"range\"]::-moz-range-progress {}\n\n.dark input[type=\"range\"]::-ms-fill-lower {}\n\ninput[type=\"range\"]:focus {\n outline: none;\n}\n\ninput[type=\"range\"]:focus::-webkit-slider-thumb {}\n\ninput[type=\"range\"]:active::-webkit-slider-thumb {}\n\n.dark input[type=\"range\"]:focus::-webkit-slider-thumb {}\n\n.dark input[type=\"range\"]:active::-webkit-slider-thumb {}\n.tw-alert {\n display: grid;\n width: 100%;\n grid-auto-flow: row;\n align-content: flex-start;\n align-items: center;\n justify-items: center;\n gap: 1rem;\n text-align: center;\n border-radius: var(--rounded-box, 1rem);\n border-width: 1px;\n --tw-border-opacity: 1;\n border-color: var(--fallback-b2,oklch(var(--b2)/var(--tw-border-opacity)));\n padding: 1rem;\n --tw-text-opacity: 1;\n color: var(--fallback-bc,oklch(var(--bc)/var(--tw-text-opacity)));\n --alert-bg: var(--fallback-b2,oklch(var(--b2)/1));\n --alert-bg-mix: var(--fallback-b1,oklch(var(--b1)/1));\n background-color: var(--alert-bg);\n}\n@media (min-width: 640px) {\n\n .tw-alert {\n grid-auto-flow: column;\n grid-template-columns: auto minmax(auto,1fr);\n justify-items: start;\n text-align: start;\n }\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-badge {\n display: inline-flex;\n align-items: center;\n justify-content: 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-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-timing-function: cubic-bezier(0, 0, 0.2, 1);\n transition-duration: 200ms;\n height: 1.25rem;\n font-size: 0.875rem;\n line-height: 1.25rem;\n width: -moz-fit-content;\n width: fit-content;\n padding-left: 0.563rem;\n padding-right: 0.563rem;\n border-radius: var(--rounded-badge, 1.9rem);\n border-width: 1px;\n --tw-border-opacity: 1;\n border-color: var(--fallback-b2,oklch(var(--b2)/var(--tw-border-opacity)));\n --tw-bg-opacity: 1;\n background-color: var(--fallback-b1,oklch(var(--b1)/var(--tw-bg-opacity)));\n --tw-text-opacity: 1;\n color: var(--fallback-bc,oklch(var(--bc)/var(--tw-text-opacity)));\n}\n.tw-breadcrumbs {\n max-width: 100%;\n overflow-x: auto;\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n}\n.tw-breadcrumbs > ul,\n .tw-breadcrumbs > ol {\n display: flex;\n align-items: center;\n white-space: nowrap;\n min-height: -moz-min-content;\n min-height: min-content;\n}\n.tw-breadcrumbs > ul > li, .tw-breadcrumbs > ol > li {\n display: flex;\n align-items: center;\n}\n.tw-breadcrumbs > ul > li > a, .tw-breadcrumbs > ol > li > a {\n display: flex;\n cursor: pointer;\n align-items: center;\n}\n@media (hover:hover) {\n\n .tw-breadcrumbs > ul > li > a:hover, .tw-breadcrumbs > ol > li > a:hover {\n text-decoration-line: underline;\n }\n\n .tw-checkbox-success:hover {\n --tw-border-opacity: 1;\n border-color: var(--fallback-su,oklch(var(--su)/var(--tw-border-opacity)));\n }\n\n .tw-label a:hover {\n --tw-text-opacity: 1;\n color: var(--fallback-bc,oklch(var(--bc)/var(--tw-text-opacity)));\n }\n\n .tw-menu li > *:not(ul, .tw-menu-title, details, .tw-btn):active,\n.tw-menu li > *:not(ul, .tw-menu-title, details, .tw-btn).tw-active,\n.tw-menu li > details > summary:active {\n --tw-bg-opacity: 1;\n background-color: var(--fallback-n,oklch(var(--n)/var(--tw-bg-opacity)));\n --tw-text-opacity: 1;\n color: var(--fallback-nc,oklch(var(--nc)/var(--tw-text-opacity)));\n }\n\n .tw-tab:hover {\n --tw-text-opacity: 1;\n }\n\n .tw-table tr.tw-hover:hover,\n .tw-table tr.tw-hover:nth-child(even):hover {\n --tw-bg-opacity: 1;\n background-color: var(--fallback-b2,oklch(var(--b2)/var(--tw-bg-opacity)));\n }\n}\n.tw-btn {\n display: inline-flex;\n height: 3rem;\n min-height: 3rem;\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-radius: var(--rounded-btn, 0.5rem);\n border-color: transparent;\n border-color: oklch(var(--btn-color, var(--b2)) / var(--tw-border-opacity));\n padding-left: 1rem;\n padding-right: 1rem;\n text-align: center;\n font-size: 0.875rem;\n line-height: 1em;\n gap: 0.5rem;\n font-weight: 600;\n text-decoration-line: none;\n transition-duration: 200ms;\n transition-timing-function: cubic-bezier(0, 0, 0.2, 1);\n border-width: var(--border-btn, 1px);\n transition-property: color, background-color, border-color, opacity, box-shadow, transform;\n --tw-text-opacity: 1;\n color: var(--fallback-bc,oklch(var(--bc)/var(--tw-text-opacity)));\n --tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05);\n --tw-shadow-colored: 0 1px 2px 0 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 outline-color: var(--fallback-bc,oklch(var(--bc)/1));\n background-color: oklch(var(--btn-color, var(--b2)) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n --tw-border-opacity: 1;\n}\n.tw-btn-disabled,\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:where(.tw-btn:is(input[type=\"checkbox\"])),\n:where(.tw-btn:is(input[type=\"radio\"])) {\n width: auto;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n}\n.tw-btn:is(input[type=\"checkbox\"]):after,\n.tw-btn:is(input[type=\"radio\"]):after {\n --tw-content: attr(aria-label);\n content: var(--tw-content);\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 border-radius: var(--rounded-box, 1rem);\n --tw-bg-opacity: 1;\n background-color: var(--fallback-n,oklch(var(--n)/var(--tw-bg-opacity)));\n opacity: 0.75;\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: var(--fallback-nc,oklch(var(--nc)/var(--tw-text-opacity)));\n}\n.tw-checkbox {\n flex-shrink: 0;\n --chkbg: var(--fallback-bc,oklch(var(--bc)/1));\n --chkfg: var(--fallback-b1,oklch(var(--b1)/1));\n height: 1.5rem;\n width: 1.5rem;\n cursor: pointer;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n border-radius: var(--rounded-btn, 0.5rem);\n border-width: 1px;\n border-color: var(--fallback-bc,oklch(var(--bc)/var(--tw-border-opacity)));\n --tw-border-opacity: 0.2;\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 height: 0.125rem;\n width: 100%;\n flex-grow: 1;\n --tw-content: '';\n content: var(--tw-content);\n background-color: var(--fallback-bc,oklch(var(--bc)/0.1));\n}\n.tw-dropdown {\n position: relative;\n display: inline-block;\n}\n.tw-dropdown > *:not(summary):focus {\n outline: 2px solid transparent;\n outline-offset: 2px;\n}\n.tw-dropdown .tw-dropdown-content {\n position: absolute;\n}\n.tw-dropdown:is(:not(details)) .tw-dropdown-content {\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-timing-function: cubic-bezier(0, 0, 0.2, 1);\n visibility: hidden;\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-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-timing-function: cubic-bezier(0, 0, 0.2, 1);\n transition-duration: 200ms;\n}\n.tw-dropdown-end .tw-dropdown-content {\n inset-inline-end: 0px;\n}\n.tw-dropdown-left .tw-dropdown-content {\n bottom: auto;\n inset-inline-end: 100%;\n top: 0px;\n transform-origin: right;\n}\n.tw-dropdown-right .tw-dropdown-content {\n bottom: auto;\n inset-inline-start: 100%;\n top: 0px;\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:not(.tw-dropdown-hover):focus .tw-dropdown-content,\n.tw-dropdown:focus-within .tw-dropdown-content {\n visibility: visible;\n opacity: 1;\n}\n@media (hover: hover) {\n\n .tw-dropdown.tw-dropdown-hover:hover .tw-dropdown-content {\n visibility: visible;\n opacity: 1;\n }\n\n .tw-btn:hover {\n --tw-border-opacity: 1;\n border-color: var(--fallback-b3,oklch(var(--b3)/var(--tw-border-opacity)));\n --tw-bg-opacity: 1;\n background-color: var(--fallback-b3,oklch(var(--b3)/var(--tw-bg-opacity)));\n }\n\n @supports (color: color-mix(in oklab, black, black)) {\n\n .tw-btn:hover {\n background-color: color-mix(\n in oklab,\n oklch(var(--btn-color, var(--b2)) / var(--tw-bg-opacity, 1)) 90%,\n black\n );\n border-color: color-mix(\n in oklab,\n oklch(var(--btn-color, var(--b2)) / var(--tw-border-opacity, 1)) 90%,\n black\n );\n }\n }\n\n @supports not (color: oklch(0% 0 0)) {\n\n .tw-btn:hover {\n background-color: var(--btn-color, var(--fallback-b2));\n border-color: var(--btn-color, var(--fallback-b2));\n }\n }\n\n .tw-btn:hover {\n --tw-border-opacity: 1;\n border-color: var(--fallback-b3,oklch(var(--b3)/var(--tw-border-opacity)));\n --tw-bg-opacity: 1;\n background-color: var(--fallback-b3,oklch(var(--b3)/var(--tw-bg-opacity)));\n }\n\n @supports (color: color-mix(in oklab, black, black)) {\n\n .tw-btn:hover {\n background-color: color-mix(\n in oklab,\n oklch(var(--btn-color, var(--b2)) / var(--tw-bg-opacity, 1)) 90%,\n black\n );\n border-color: color-mix(\n in oklab,\n oklch(var(--btn-color, var(--b2)) / var(--tw-border-opacity, 1)) 90%,\n black\n );\n }\n }\n\n @supports not (color: oklch(0% 0 0)) {\n\n .tw-btn:hover {\n background-color: var(--btn-color, var(--fallback-b2));\n border-color: var(--btn-color, var(--fallback-b2));\n }\n }\n\n .tw-btn:hover {\n --tw-border-opacity: 1;\n border-color: var(--fallback-b3,oklch(var(--b3)/var(--tw-border-opacity)));\n --tw-bg-opacity: 1;\n background-color: var(--fallback-b3,oklch(var(--b3)/var(--tw-bg-opacity)));\n }\n\n @supports (color: color-mix(in oklab, black, black)) {\n\n .tw-btn:hover {\n background-color: color-mix(\n in oklab,\n oklch(var(--btn-color, var(--b2)) / var(--tw-bg-opacity, 1)) 90%,\n black\n );\n border-color: color-mix(\n in oklab,\n oklch(var(--btn-color, var(--b2)) / var(--tw-border-opacity, 1)) 90%,\n black\n );\n }\n }\n\n @supports not (color: oklch(0% 0 0)) {\n\n .tw-btn:hover {\n background-color: var(--btn-color, var(--fallback-b2));\n border-color: var(--btn-color, var(--fallback-b2));\n }\n }\n\n .tw-btn.tw-glass:hover {\n --glass-opacity: 25%;\n --glass-border-opacity: 15%;\n }\n\n .tw-btn-ghost:hover {\n border-color: transparent;\n }\n\n @supports (color: oklch(0% 0 0)) {\n\n .tw-btn-ghost:hover {\n background-color: var(--fallback-bc,oklch(var(--bc)/0.2));\n }\n }\n\n .tw-btn-ghost:hover {\n border-color: transparent;\n }\n\n @supports (color: oklch(0% 0 0)) {\n\n .tw-btn-ghost:hover {\n background-color: var(--fallback-bc,oklch(var(--bc)/0.2));\n }\n }\n\n .tw-btn-outline.tw-btn-primary:hover {\n --tw-text-opacity: 1;\n color: var(--fallback-pc,oklch(var(--pc)/var(--tw-text-opacity)));\n }\n\n @supports (color: color-mix(in oklab, black, black)) {\n\n .tw-btn-outline.tw-btn-primary:hover {\n background-color: color-mix(in oklab, var(--fallback-p,oklch(var(--p)/1)) 90%, black);\n border-color: color-mix(in oklab, var(--fallback-p,oklch(var(--p)/1)) 90%, black);\n }\n }\n\n .tw-btn-outline.tw-btn-primary:hover {\n --tw-text-opacity: 1;\n color: var(--fallback-pc,oklch(var(--pc)/var(--tw-text-opacity)));\n }\n\n @supports (color: color-mix(in oklab, black, black)) {\n\n .tw-btn-outline.tw-btn-primary:hover {\n background-color: color-mix(in oklab, var(--fallback-p,oklch(var(--p)/1)) 90%, black);\n border-color: color-mix(in oklab, var(--fallback-p,oklch(var(--p)/1)) 90%, black);\n }\n }\n\n .tw-btn-outline.tw-btn-error:hover {\n --tw-text-opacity: 1;\n color: var(--fallback-erc,oklch(var(--erc)/var(--tw-text-opacity)));\n }\n\n @supports (color: color-mix(in oklab, black, black)) {\n\n .tw-btn-outline.tw-btn-error:hover {\n background-color: color-mix(in oklab, var(--fallback-er,oklch(var(--er)/1)) 90%, black);\n border-color: color-mix(in oklab, var(--fallback-er,oklch(var(--er)/1)) 90%, black);\n }\n }\n\n .tw-btn-outline.tw-btn-error:hover {\n --tw-text-opacity: 1;\n color: var(--fallback-erc,oklch(var(--erc)/var(--tw-text-opacity)));\n }\n\n @supports (color: color-mix(in oklab, black, black)) {\n\n .tw-btn-outline.tw-btn-error:hover {\n background-color: color-mix(in oklab, var(--fallback-er,oklch(var(--er)/1)) 90%, black);\n border-color: color-mix(in oklab, var(--fallback-er,oklch(var(--er)/1)) 90%, black);\n }\n }\n\n .tw-btn-disabled:hover,\n .tw-btn[disabled]:hover,\n .tw-btn:disabled:hover {\n --tw-border-opacity: 0;\n background-color: var(--fallback-n,oklch(var(--n)/var(--tw-bg-opacity)));\n --tw-bg-opacity: 0.2;\n color: var(--fallback-bc,oklch(var(--bc)/var(--tw-text-opacity)));\n --tw-text-opacity: 0.2;\n }\n\n @supports (color: color-mix(in oklab, black, black)) {\n\n .tw-btn:is(input[type=\"checkbox\"]:checked):hover, .tw-btn:is(input[type=\"radio\"]:checked):hover {\n background-color: color-mix(in oklab, var(--fallback-p,oklch(var(--p)/1)) 90%, black);\n border-color: color-mix(in oklab, var(--fallback-p,oklch(var(--p)/1)) 90%, black);\n }\n }\n\n .tw-dropdown.tw-dropdown-hover:hover .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\n :where(.tw-menu li:not(.tw-menu-title, .tw-disabled) > *:not(ul, details, .tw-menu-title)):not(.tw-active, .tw-btn):hover, :where(.tw-menu li:not(.tw-menu-title, .tw-disabled) > details > summary:not(.tw-menu-title)):not(.tw-active, .tw-btn):hover {\n cursor: pointer;\n outline: 2px solid transparent;\n outline-offset: 2px;\n }\n\n @supports (color: oklch(0% 0 0)) {\n\n :where(.tw-menu li:not(.tw-menu-title, .tw-disabled) > *:not(ul, details, .tw-menu-title)):not(.tw-active, .tw-btn):hover, :where(.tw-menu li:not(.tw-menu-title, .tw-disabled) > details > summary:not(.tw-menu-title)):not(.tw-active, .tw-btn):hover {\n background-color: var(--fallback-bc,oklch(var(--bc)/0.1));\n }\n }\n\n :where(.tw-menu li:not(.tw-menu-title, .tw-disabled) > *:not(ul, details, .tw-menu-title)):not(.tw-active, .tw-btn):hover, :where(.tw-menu li:not(.tw-menu-title, .tw-disabled) > details > summary:not(.tw-menu-title)):not(.tw-active, .tw-btn):hover {\n cursor: pointer;\n outline: 2px solid transparent;\n outline-offset: 2px;\n }\n\n @supports (color: oklch(0% 0 0)) {\n\n :where(.tw-menu li:not(.tw-menu-title, .tw-disabled) > *:not(ul, details, .tw-menu-title)):not(.tw-active, .tw-btn):hover, :where(.tw-menu li:not(.tw-menu-title, .tw-disabled) > details > summary:not(.tw-menu-title)):not(.tw-active, .tw-btn):hover {\n background-color: var(--fallback-bc,oklch(var(--bc)/0.1));\n }\n }\n\n :where(.tw-menu li:not(.tw-menu-title, .tw-disabled) > *:not(ul, details, .tw-menu-title)):not(.tw-active, .tw-btn):hover, :where(.tw-menu li:not(.tw-menu-title, .tw-disabled) > details > summary:not(.tw-menu-title)):not(.tw-active, .tw-btn):hover {\n cursor: pointer;\n outline: 2px solid transparent;\n outline-offset: 2px;\n }\n\n @supports (color: oklch(0% 0 0)) {\n\n :where(.tw-menu li:not(.tw-menu-title, .tw-disabled) > *:not(ul, details, .tw-menu-title)):not(.tw-active, .tw-btn):hover, :where(.tw-menu li:not(.tw-menu-title, .tw-disabled) > details > summary:not(.tw-menu-title)):not(.tw-active, .tw-btn):hover {\n background-color: var(--fallback-bc,oklch(var(--bc)/0.1));\n }\n }\n\n :where(.tw-menu li:not(.tw-menu-title, .tw-disabled) > *:not(ul, details, .tw-menu-title)):not(.tw-active, .tw-btn):hover, :where(.tw-menu li:not(.tw-menu-title, .tw-disabled) > details > summary:not(.tw-menu-title)):not(.tw-active, .tw-btn):hover {\n cursor: pointer;\n outline: 2px solid transparent;\n outline-offset: 2px;\n }\n\n @supports (color: oklch(0% 0 0)) {\n\n :where(.tw-menu li:not(.tw-menu-title, .tw-disabled) > *:not(ul, details, .tw-menu-title)):not(.tw-active, .tw-btn):hover, :where(.tw-menu li:not(.tw-menu-title, .tw-disabled) > details > summary:not(.tw-menu-title)):not(.tw-active, .tw-btn):hover {\n background-color: var(--fallback-bc,oklch(var(--bc)/0.1));\n }\n }\n\n .tw-tab[disabled],\n .tw-tab[disabled]:hover {\n cursor: not-allowed;\n color: var(--fallback-bc,oklch(var(--bc)/var(--tw-text-opacity)));\n --tw-text-opacity: 0.2;\n }\n}\n.tw-dropdown:is(details) summary::-webkit-details-marker {\n display: none;\n}\n.tw-file-input {\n height: 3rem;\n flex-shrink: 1;\n padding-inline-end: 1rem;\n font-size: 1rem;\n line-height: 2;\n line-height: 1.5rem;\n overflow: hidden;\n border-radius: var(--rounded-btn, 0.5rem);\n border-width: 1px;\n border-color: var(--fallback-bc,oklch(var(--bc)/var(--tw-border-opacity)));\n --tw-border-opacity: 0;\n --tw-bg-opacity: 1;\n background-color: var(--fallback-b1,oklch(var(--b1)/var(--tw-bg-opacity)));\n}\n.tw-file-input::file-selector-button {\n margin-inline-end: 1rem;\n display: inline-flex;\n height: 100%;\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 padding-left: 1rem;\n padding-right: 1rem;\n text-align: center;\n font-size: 0.875rem;\n line-height: 1.25rem;\n line-height: 1em;\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-timing-function: cubic-bezier(0, 0, 0.2, 1);\n transition-duration: 200ms;\n border-style: solid;\n --tw-border-opacity: 1;\n border-color: var(--fallback-n,oklch(var(--n)/var(--tw-border-opacity)));\n --tw-bg-opacity: 1;\n background-color: var(--fallback-n,oklch(var(--n)/var(--tw-bg-opacity)));\n font-weight: 600;\n text-transform: uppercase;\n --tw-text-opacity: 1;\n color: var(--fallback-nc,oklch(var(--nc)/var(--tw-text-opacity)));\n text-decoration-line: none;\n border-width: var(--border-btn, 1px);\n animation: button-pop var(--animation-btn, 0.25s) ease-out;\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-indicator {\n position: relative;\n display: inline-flex;\n width: -moz-max-content;\n width: max-content;\n}\n.tw-indicator :where(.tw-indicator-item) {\n z-index: 1;\n position: absolute;\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 white-space: nowrap;\n}\n.tw-input {\n flex-shrink: 1;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\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-radius: var(--rounded-btn, 0.5rem);\n border-width: 1px;\n border-color: transparent;\n --tw-bg-opacity: 1;\n background-color: var(--fallback-b1,oklch(var(--b1)/var(--tw-bg-opacity)));\n}\n.tw-input[type=\"number\"]::-webkit-inner-spin-button,\n.tw-input-md[type=\"number\"]::-webkit-inner-spin-button {\n margin-top: -1rem;\n margin-bottom: -1rem;\n margin-inline-end: -1rem;\n}\n.tw-input-sm[type=\"number\"]::-webkit-inner-spin-button {\n margin-top: 0px;\n margin-bottom: 0px;\n margin-inline-end: -0px;\n}\n.tw-join .tw-dropdown .tw-join-item:first-child:not(:last-child),\n .tw-join *:first-child:not(:last-child) .tw-dropdown .tw-join-item {\n border-start-end-radius: inherit;\n border-end-end-radius: inherit;\n}\n.tw-mask {\n -webkit-mask-size: contain;\n mask-size: contain;\n -webkit-mask-repeat: no-repeat;\n mask-repeat: no-repeat;\n -webkit-mask-position: center;\n mask-position: center;\n}\n.tw-menu {\n display: flex;\n flex-direction: column;\n flex-wrap: wrap;\n font-size: 0.875rem;\n line-height: 1.25rem;\n padding: 0.5rem;\n}\n.tw-menu :where(li ul) {\n position: relative;\n white-space: nowrap;\n margin-inline-start: 1rem;\n padding-inline-start: 0.5rem;\n}\n.tw-menu :where(li:not(.tw-menu-title) > *:not(ul, details, .tw-menu-title, .tw-btn)), .tw-menu :where(li:not(.tw-menu-title) > details > summary:not(.tw-menu-title)) {\n display: grid;\n grid-auto-flow: column;\n align-content: flex-start;\n align-items: center;\n gap: 0.5rem;\n grid-auto-columns: minmax(auto, max-content) auto max-content;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n}\n.tw-menu li.tw-disabled {\n cursor: not-allowed;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n color: var(--fallback-bc,oklch(var(--bc)/0.3));\n}\n.tw-menu :where(li > .tw-menu-dropdown:not(.tw-menu-dropdown-show)) {\n display: none;\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:where(.tw-menu li) .tw-badge {\n justify-self: end;\n}\n.tw-modal {\n pointer-events: none;\n position: fixed;\n inset: 0px;\n margin: 0px;\n display: grid;\n height: 100%;\n max-height: none;\n width: 100%;\n max-width: none;\n justify-items: center;\n padding: 0px;\n opacity: 0;\n overscroll-behavior: contain;\n z-index: 999;\n background-color: transparent;\n color: inherit;\n transition-duration: 200ms;\n transition-timing-function: cubic-bezier(0, 0, 0.2, 1);\n transition-property: transform, opacity, visibility;\n overflow-y: hidden;\n}\n:where(.tw-modal) {\n align-items: center;\n}\n.tw-modal-box {\n max-height: calc(100vh - 5em);\n grid-column-start: 1;\n grid-row-start: 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-bottom-right-radius: var(--rounded-box, 1rem);\n border-bottom-left-radius: var(--rounded-box, 1rem);\n border-top-left-radius: var(--rounded-box, 1rem);\n border-top-right-radius: var(--rounded-box, 1rem);\n --tw-bg-opacity: 1;\n background-color: var(--fallback-b1,oklch(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-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-timing-function: cubic-bezier(0, 0, 0.2, 1);\n transition-duration: 200ms;\n box-shadow: rgba(0, 0, 0, 0.25) 0px 25px 50px -12px;\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.tw-modal[open] {\n pointer-events: auto;\n visibility: visible;\n opacity: 1;\n}\n:root:has(:is(.tw-modal-open, .tw-modal:target, .tw-modal-toggle:checked + .tw-modal, .tw-modal[open])) {\n overflow: hidden;\n scrollbar-gutter: stable;\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 > *:not(script, style)) {\n display: inline-flex;\n align-items: center;\n}\n.tw-select {\n display: inline-flex;\n cursor: pointer;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n height: 3rem;\n min-height: 3rem;\n padding-inline-start: 1rem;\n padding-inline-end: 2.5rem;\n font-size: 0.875rem;\n line-height: 1.25rem;\n line-height: 2;\n border-radius: var(--rounded-btn, 0.5rem);\n border-width: 1px;\n border-color: transparent;\n --tw-bg-opacity: 1;\n background-color: var(--fallback-b1,oklch(var(--b1)/var(--tw-bg-opacity)));\n background-image: linear-gradient(45deg, transparent 50%, currentColor 50%),\n linear-gradient(135deg, currentColor 50%, transparent 50%);\n background-position: calc(100% - 20px) calc(1px + 50%),\n calc(100% - 16.1px) calc(1px + 50%);\n background-size: 4px 4px,\n 4px 4px;\n background-repeat: no-repeat;\n}\n.tw-select[multiple] {\n height: auto;\n}\n.tw-tabs {\n display: grid;\n align-items: flex-end;\n}\n.tw-tabs-lifted:has(.tw-tab-content[class^=\"rounded-\"])\n .tw-tab:first-child:not(:is(.tw-tab-active, [aria-selected=\"true\"])), .tw-tabs-lifted:has(.tw-tab-content[class*=\" rounded-\"])\n .tw-tab:first-child:not(:is(.tw-tab-active, [aria-selected=\"true\"])) {\n border-bottom-color: transparent;\n}\n.tw-tab {\n position: relative;\n grid-row-start: 1;\n display: inline-flex;\n height: 2rem;\n cursor: pointer;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n flex-wrap: wrap;\n align-items: center;\n justify-content: center;\n text-align: center;\n font-size: 0.875rem;\n line-height: 1.25rem;\n line-height: 2;\n --tab-padding: 1rem;\n --tw-text-opacity: 0.5;\n --tab-color: var(--fallback-bc,oklch(var(--bc)/1));\n --tab-bg: var(--fallback-b1,oklch(var(--b1)/1));\n --tab-border-color: var(--fallback-b3,oklch(var(--b3)/1));\n color: var(--tab-color);\n padding-inline-start: var(--tab-padding, 1rem);\n padding-inline-end: var(--tab-padding, 1rem);\n}\n.tw-tab:is(input[type=\"radio\"]) {\n width: auto;\n border-bottom-right-radius: 0px;\n border-bottom-left-radius: 0px;\n}\n.tw-tab:is(input[type=\"radio\"]):after {\n --tw-content: attr(aria-label);\n content: var(--tw-content);\n}\n.tw-tab:not(input):empty {\n cursor: default;\n grid-column-start: span 9999;\n}\n.tw-tab-content {\n grid-column-start: 1;\n grid-column-end: span 9999;\n grid-row-start: 2;\n margin-top: calc(var(--tab-border) * -1);\n display: none;\n border-color: transparent;\n border-width: var(--tab-border, 0);\n}\n:checked + .tw-tab-content:nth-child(2),\n :is(.tw-tab-active, [aria-selected=\"true\"]) + .tw-tab-content:nth-child(2) {\n border-start-start-radius: 0px;\n}\ninput.tw-tab:checked + .tw-tab-content,\n:is(.tw-tab-active, [aria-selected=\"true\"]) + .tw-tab-content {\n display: block;\n}\n.tw-table {\n position: relative;\n width: 100%;\n border-radius: var(--rounded-box, 1rem);\n text-align: left;\n font-size: 0.875rem;\n line-height: 1.25rem;\n}\n.tw-table :where(.tw-table-pin-rows thead tr) {\n position: sticky;\n top: 0px;\n z-index: 1;\n --tw-bg-opacity: 1;\n background-color: var(--fallback-b1,oklch(var(--b1)/var(--tw-bg-opacity)));\n}\n.tw-table :where(.tw-table-pin-rows tfoot tr) {\n position: sticky;\n bottom: 0px;\n z-index: 1;\n --tw-bg-opacity: 1;\n background-color: var(--fallback-b1,oklch(var(--b1)/var(--tw-bg-opacity)));\n}\n.tw-table :where(.tw-table-pin-cols tr th) {\n position: sticky;\n left: 0px;\n right: 0px;\n --tw-bg-opacity: 1;\n background-color: var(--fallback-b1,oklch(var(--b1)/var(--tw-bg-opacity)));\n}\n.tw-textarea {\n min-height: 3rem;\n flex-shrink: 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 border-radius: var(--rounded-btn, 0.5rem);\n border-width: 1px;\n border-color: transparent;\n --tw-bg-opacity: 1;\n background-color: var(--fallback-b1,oklch(var(--b1)/var(--tw-bg-opacity)));\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: var(--fallback-b1,oklch(var(--b1)/var(--tw-border-opacity)));\n}\n.tw-badge-success {\n border-color: transparent;\n --tw-bg-opacity: 1;\n background-color: var(--fallback-su,oklch(var(--su)/var(--tw-bg-opacity)));\n --tw-text-opacity: 1;\n color: var(--fallback-suc,oklch(var(--suc)/var(--tw-text-opacity)));\n}\n.tw-badge-outline.tw-badge-success {\n --tw-text-opacity: 1;\n color: var(--fallback-su,oklch(var(--su)/var(--tw-text-opacity)));\n}\n.tw-btm-nav > * .tw-label {\n font-size: 1rem;\n line-height: 1.5rem;\n}\n.tw-breadcrumbs > ul > li > a:focus, .tw-breadcrumbs > ol > li > a:focus {\n outline: 2px solid transparent;\n outline-offset: 2px;\n}\n.tw-breadcrumbs > ul > li > a:focus-visible, .tw-breadcrumbs > ol > li > a:focus-visible {\n outline: 2px solid currentColor;\n outline-offset: 2px;\n}\n.tw-breadcrumbs > ul > li + *:before, .tw-breadcrumbs > ol > li + *:before {\n content: \"\";\n margin-left: 0.5rem;\n margin-right: 0.75rem;\n display: block;\n height: 0.375rem;\n width: 0.375rem;\n --tw-rotate: 45deg;\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 opacity: 0.4;\n border-top: 1px solid;\n border-right: 1px solid;\n background-color: transparent;\n}\n[dir=\"rtl\"] .tw-breadcrumbs > ul > li + *:before,\n[dir=\"rtl\"] .tw-breadcrumbs > ol > li + *:before {\n --tw-rotate: -135deg;\n}\n@media (prefers-reduced-motion: no-preference) {\n\n .tw-btn {\n animation: button-pop var(--animation-btn, 0.25s) ease-out;\n }\n}\n.tw-btn:active:hover,\n .tw-btn:active:focus {\n animation: button-pop 0s ease-out;\n transform: scale(var(--btn-focus-scale, 0.97));\n}\n@supports not (color: oklch(0% 0 0)) {\n\n .tw-btn {\n background-color: var(--btn-color, var(--fallback-b2));\n border-color: var(--btn-color, var(--fallback-b2));\n }\n\n .tw-btn-primary {\n --btn-color: var(--fallback-p);\n }\n\n .tw-btn-neutral {\n --btn-color: var(--fallback-n);\n }\n\n .tw-btn-error {\n --btn-color: var(--fallback-er);\n }\n}\n@supports (color: color-mix(in oklab, black, black)) {\n\n .tw-btn-outline.tw-btn-primary.tw-btn-active {\n background-color: color-mix(in oklab, var(--fallback-p,oklch(var(--p)/1)) 90%, black);\n border-color: color-mix(in oklab, var(--fallback-p,oklch(var(--p)/1)) 90%, black);\n }\n\n .tw-btn-outline.tw-btn-error.tw-btn-active {\n background-color: color-mix(in oklab, var(--fallback-er,oklch(var(--er)/1)) 90%, black);\n border-color: color-mix(in oklab, var(--fallback-er,oklch(var(--er)/1)) 90%, black);\n }\n}\n.tw-btn:focus-visible {\n outline-style: solid;\n outline-width: 2px;\n outline-offset: 2px;\n}\n.tw-btn-primary {\n --tw-text-opacity: 1;\n color: var(--fallback-pc,oklch(var(--pc)/var(--tw-text-opacity)));\n outline-color: var(--fallback-p,oklch(var(--p)/1));\n}\n@supports (color: oklch(0% 0 0)) {\n\n .tw-btn-primary {\n --btn-color: var(--p);\n }\n\n .tw-btn-neutral {\n --btn-color: var(--n);\n }\n\n .tw-btn-error {\n --btn-color: var(--er);\n }\n}\n.tw-btn-neutral {\n --tw-text-opacity: 1;\n color: var(--fallback-nc,oklch(var(--nc)/var(--tw-text-opacity)));\n outline-color: var(--fallback-n,oklch(var(--n)/1));\n}\n.tw-btn-error {\n --tw-text-opacity: 1;\n color: var(--fallback-erc,oklch(var(--erc)/var(--tw-text-opacity)));\n outline-color: var(--fallback-er,oklch(var(--er)/1));\n}\n.tw-btn.tw-glass {\n --tw-shadow: 0 0 #0000;\n --tw-shadow-colored: 0 0 #0000;\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n outline-color: currentColor;\n}\n.tw-btn.tw-glass.tw-btn-active {\n --glass-opacity: 25%;\n --glass-border-opacity: 15%;\n}\n.tw-btn-ghost {\n border-width: 1px;\n border-color: transparent;\n background-color: transparent;\n color: currentColor;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-colored: 0 0 #0000;\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n outline-color: currentColor;\n}\n.tw-btn-ghost.tw-btn-active {\n border-color: transparent;\n background-color: var(--fallback-bc,oklch(var(--bc)/0.2));\n}\n.tw-btn-outline.tw-btn-primary {\n --tw-text-opacity: 1;\n color: var(--fallback-p,oklch(var(--p)/var(--tw-text-opacity)));\n}\n.tw-btn-outline.tw-btn-primary.tw-btn-active {\n --tw-text-opacity: 1;\n color: var(--fallback-pc,oklch(var(--pc)/var(--tw-text-opacity)));\n}\n.tw-btn-outline.tw-btn-error {\n --tw-text-opacity: 1;\n color: var(--fallback-er,oklch(var(--er)/var(--tw-text-opacity)));\n}\n.tw-btn-outline.tw-btn-error.tw-btn-active {\n --tw-text-opacity: 1;\n color: var(--fallback-erc,oklch(var(--erc)/var(--tw-text-opacity)));\n}\n.tw-btn.tw-btn-disabled,\n .tw-btn[disabled],\n .tw-btn:disabled {\n --tw-border-opacity: 0;\n background-color: var(--fallback-n,oklch(var(--n)/var(--tw-bg-opacity)));\n --tw-bg-opacity: 0.2;\n color: var(--fallback-bc,oklch(var(--bc)/var(--tw-text-opacity)));\n --tw-text-opacity: 0.2;\n}\n.tw-btn:is(input[type=\"checkbox\"]:checked),\n.tw-btn:is(input[type=\"radio\"]:checked) {\n --tw-border-opacity: 1;\n border-color: var(--fallback-p,oklch(var(--p)/var(--tw-border-opacity)));\n --tw-bg-opacity: 1;\n background-color: var(--fallback-p,oklch(var(--p)/var(--tw-bg-opacity)));\n --tw-text-opacity: 1;\n color: var(--fallback-pc,oklch(var(--pc)/var(--tw-text-opacity)));\n}\n.tw-btn:is(input[type=\"checkbox\"]:checked):focus-visible, .tw-btn:is(input[type=\"radio\"]:checked):focus-visible {\n outline-color: var(--fallback-p,oklch(var(--p)/1));\n}\n@keyframes button-pop {\n\n 0% {\n transform: scale(var(--btn-focus-scale, 0.98));\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: var(--fallback-b2,oklch(var(--b2)/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 {\n box-shadow: none;\n}\n.tw-checkbox:focus-visible {\n outline-style: solid;\n outline-width: 2px;\n outline-offset: 2px;\n outline-color: var(--fallback-bc,oklch(var(--bc)/1));\n}\n.tw-checkbox:disabled {\n border-width: 0px;\n cursor: not-allowed;\n border-color: transparent;\n --tw-bg-opacity: 1;\n background-color: var(--fallback-bc,oklch(var(--bc)/var(--tw-bg-opacity)));\n opacity: 0.2;\n}\n.tw-checkbox:checked,\n .tw-checkbox[aria-checked=\"true\"] {\n background-repeat: no-repeat;\n animation: checkmark var(--animation-input, 0.2s) ease-out;\n background-color: var(--chkbg);\n background-image: linear-gradient(-45deg, transparent 65%, var(--chkbg) 65.99%),\n linear-gradient(45deg, transparent 75%, var(--chkbg) 75.99%),\n linear-gradient(-45deg, var(--chkbg) 40%, transparent 40.99%),\n linear-gradient(\n 45deg,\n var(--chkbg) 30%,\n var(--chkfg) 30.99%,\n var(--chkfg) 40%,\n transparent 40.99%\n ),\n linear-gradient(-45deg, var(--chkfg) 50%, var(--chkbg) 50.99%);\n}\n.tw-checkbox:indeterminate {\n --tw-bg-opacity: 1;\n background-color: var(--fallback-bc,oklch(var(--bc)/var(--tw-bg-opacity)));\n background-repeat: no-repeat;\n animation: checkmark var(--animation-input, 0.2s) ease-out;\n background-image: linear-gradient(90deg, transparent 80%, var(--chkbg) 80%),\n linear-gradient(-90deg, transparent 80%, var(--chkbg) 80%),\n linear-gradient(0deg, var(--chkbg) 43%, var(--chkfg) 43%, var(--chkfg) 57%, var(--chkbg) 57%);\n}\n.tw-checkbox-success {\n --chkbg: var(--fallback-su,oklch(var(--su)/1));\n --chkfg: var(--fallback-suc,oklch(var(--suc)/1));\n --tw-border-opacity: 1;\n border-color: var(--fallback-su,oklch(var(--su)/var(--tw-border-opacity)));\n}\n.tw-checkbox-success:focus-visible {\n outline-color: var(--fallback-su,oklch(var(--su)/1));\n}\n.tw-checkbox-success:checked,\n .tw-checkbox-success[aria-checked=\"true\"] {\n --tw-border-opacity: 1;\n border-color: var(--fallback-su,oklch(var(--su)/var(--tw-border-opacity)));\n --tw-bg-opacity: 1;\n background-color: var(--fallback-su,oklch(var(--su)/var(--tw-bg-opacity)));\n --tw-text-opacity: 1;\n color: var(--fallback-suc,oklch(var(--suc)/var(--tw-text-opacity)));\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.tw-divider:not(:empty) {\n gap: 1rem;\n}\n.tw-dropdown.tw-dropdown-open .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-file-input:focus {\n outline-style: solid;\n outline-width: 2px;\n outline-offset: 2px;\n outline-color: var(--fallback-bc,oklch(var(--bc)/0.2));\n}\n.tw-file-input-disabled,\n .tw-file-input[disabled] {\n cursor: not-allowed;\n --tw-border-opacity: 1;\n border-color: var(--fallback-b2,oklch(var(--b2)/var(--tw-border-opacity)));\n --tw-bg-opacity: 1;\n background-color: var(--fallback-b2,oklch(var(--b2)/var(--tw-bg-opacity)));\n --tw-text-opacity: 0.2;\n}\n.tw-file-input-disabled::-moz-placeholder, .tw-file-input[disabled]::-moz-placeholder {\n color: var(--fallback-bc,oklch(var(--bc)/var(--tw-placeholder-opacity)));\n --tw-placeholder-opacity: 0.2;\n}\n.tw-file-input-disabled::placeholder,\n .tw-file-input[disabled]::placeholder {\n color: var(--fallback-bc,oklch(var(--bc)/var(--tw-placeholder-opacity)));\n --tw-placeholder-opacity: 0.2;\n}\n.tw-file-input-disabled::file-selector-button, .tw-file-input[disabled]::file-selector-button {\n --tw-border-opacity: 0;\n background-color: var(--fallback-n,oklch(var(--n)/var(--tw-bg-opacity)));\n --tw-bg-opacity: 0.2;\n color: var(--fallback-bc,oklch(var(--bc)/var(--tw-text-opacity)));\n --tw-text-opacity: 0.2;\n}\n.tw-label-text {\n font-size: 0.875rem;\n line-height: 1.25rem;\n --tw-text-opacity: 1;\n color: var(--fallback-bc,oklch(var(--bc)/var(--tw-text-opacity)));\n}\n.tw-input input {\n --tw-bg-opacity: 1;\n background-color: var(--fallback-p,oklch(var(--p)/var(--tw-bg-opacity)));\n background-color: transparent;\n}\n.tw-input input:focus {\n outline: 2px solid transparent;\n outline-offset: 2px;\n}\n.tw-input[list]::-webkit-calendar-picker-indicator {\n line-height: 1em;\n}\n.tw-input-bordered {\n border-color: var(--fallback-bc,oklch(var(--bc)/0.2));\n}\n.tw-input:focus,\n .tw-input:focus-within {\n box-shadow: none;\n border-color: var(--fallback-bc,oklch(var(--bc)/0.2));\n outline-style: solid;\n outline-width: 2px;\n outline-offset: 2px;\n outline-color: var(--fallback-bc,oklch(var(--bc)/0.2));\n}\n.tw-input:has(> input[disabled]),\n .tw-input-disabled,\n .tw-input:disabled,\n .tw-input[disabled] {\n cursor: not-allowed;\n --tw-border-opacity: 1;\n border-color: var(--fallback-b2,oklch(var(--b2)/var(--tw-border-opacity)));\n --tw-bg-opacity: 1;\n background-color: var(--fallback-b2,oklch(var(--b2)/var(--tw-bg-opacity)));\n color: var(--fallback-bc,oklch(var(--bc)/0.4));\n}\n.tw-input:has(> input[disabled])::-moz-placeholder, .tw-input-disabled::-moz-placeholder, .tw-input:disabled::-moz-placeholder, .tw-input[disabled]::-moz-placeholder {\n color: var(--fallback-bc,oklch(var(--bc)/var(--tw-placeholder-opacity)));\n --tw-placeholder-opacity: 0.2;\n}\n.tw-input:has(> input[disabled])::placeholder,\n .tw-input-disabled::placeholder,\n .tw-input:disabled::placeholder,\n .tw-input[disabled]::placeholder {\n color: var(--fallback-bc,oklch(var(--bc)/var(--tw-placeholder-opacity)));\n --tw-placeholder-opacity: 0.2;\n}\n.tw-input:has(> input[disabled]) > input[disabled] {\n cursor: not-allowed;\n}\n.tw-input::-webkit-date-and-time-value {\n text-align: inherit;\n}\n.tw-join > :where(*:not(:first-child)):is(.tw-btn) {\n margin-inline-start: calc(var(--border-btn) * -1);\n}\n.tw-loading {\n pointer-events: none;\n display: inline-block;\n aspect-ratio: 1 / 1;\n width: 1.5rem;\n background-color: currentColor;\n -webkit-mask-size: 100%;\n mask-size: 100%;\n -webkit-mask-repeat: no-repeat;\n mask-repeat: no-repeat;\n -webkit-mask-position: center;\n mask-position: center;\n -webkit-mask-image: url(\"data:image/svg+xml,%3Csvg width='24' height='24' stroke='black' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cg transform-origin='center'%3E%3Ccircle cx='12' cy='12' r='9.5' fill='none' stroke-width='3' stroke-linecap='round'%3E%3CanimateTransform attributeName='transform' type='rotate' from='0 12 12' to='360 12 12' dur='2s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dasharray' values='0,150;42,150;42,150' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dashoffset' values='0;-16;-59' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3C/circle%3E%3C/g%3E%3C/svg%3E\");\n mask-image: url(\"data:image/svg+xml,%3Csvg width='24' height='24' stroke='black' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cg transform-origin='center'%3E%3Ccircle cx='12' cy='12' r='9.5' fill='none' stroke-width='3' stroke-linecap='round'%3E%3CanimateTransform attributeName='transform' type='rotate' from='0 12 12' to='360 12 12' dur='2s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dasharray' values='0,150;42,150;42,150' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dashoffset' values='0;-16;-59' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3C/circle%3E%3C/g%3E%3C/svg%3E\");\n}\n.tw-loading-spinner {\n -webkit-mask-image: url(\"data:image/svg+xml,%3Csvg width='24' height='24' stroke='black' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cg transform-origin='center'%3E%3Ccircle cx='12' cy='12' r='9.5' fill='none' stroke-width='3' stroke-linecap='round'%3E%3CanimateTransform attributeName='transform' type='rotate' from='0 12 12' to='360 12 12' dur='2s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dasharray' values='0,150;42,150;42,150' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dashoffset' values='0;-16;-59' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3C/circle%3E%3C/g%3E%3C/svg%3E\");\n mask-image: url(\"data:image/svg+xml,%3Csvg width='24' height='24' stroke='black' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cg transform-origin='center'%3E%3Ccircle cx='12' cy='12' r='9.5' fill='none' stroke-width='3' stroke-linecap='round'%3E%3CanimateTransform attributeName='transform' type='rotate' from='0 12 12' to='360 12 12' dur='2s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dasharray' values='0,150;42,150;42,150' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dashoffset' values='0;-16;-59' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3C/circle%3E%3C/g%3E%3C/svg%3E\");\n}\n.tw-loading-sm {\n width: 1.25rem;\n}\n.tw-loading-md {\n width: 1.5rem;\n}\n.tw-mask-squircle {\n -webkit-mask-image: url(\"data:image/svg+xml,%3csvg width='200' height='200' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M100 0C20 0 0 20 0 100s20 100 100 100 100-20 100-100S180 0 100 0Z'/%3e%3c/svg%3e\");\n mask-image: url(\"data:image/svg+xml,%3csvg width='200' height='200' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M100 0C20 0 0 20 0 100s20 100 100 100 100-20 100-100S180 0 100 0Z'/%3e%3c/svg%3e\");\n}\n.tw-mask-decagon {\n -webkit-mask-image: url(\"data:image/svg+xml,%3csvg width='192' height='200' xmlns='http://www.w3.org/2000/svg'%3e%3cpath fill='black' d='m96 0 58.779 19.098 36.327 50v61.804l-36.327 50L96 200l-58.779-19.098-36.327-50V69.098l36.327-50z' fill-rule='evenodd'/%3e%3c/svg%3e\");\n mask-image: url(\"data:image/svg+xml,%3csvg width='192' height='200' xmlns='http://www.w3.org/2000/svg'%3e%3cpath fill='black' d='m96 0 58.779 19.098 36.327 50v61.804l-36.327 50L96 200l-58.779-19.098-36.327-50V69.098l36.327-50z' fill-rule='evenodd'/%3e%3c/svg%3e\");\n}\n.tw-mask-hexagon-2 {\n -webkit-mask-image: url(\"data:image/svg+xml,%3csvg width='200' height='182' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M64.786 181.4c-9.196 0-20.063-6.687-25.079-14.21L3.762 105.33c-5.016-8.36-5.016-20.9 0-29.259l35.945-61.86C44.723 5.851 55.59 0 64.786 0h71.055c9.196 0 20.063 6.688 25.079 14.211l35.945 61.86c4.18 8.36 4.18 20.899 0 29.258l-35.945 61.86c-4.18 8.36-15.883 14.211-25.079 14.211H64.786Z' fill='black' fill-rule='nonzero'/%3e%3c/svg%3e\");\n mask-image: url(\"data:image/svg+xml,%3csvg width='200' height='182' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M64.786 181.4c-9.196 0-20.063-6.687-25.079-14.21L3.762 105.33c-5.016-8.36-5.016-20.9 0-29.259l35.945-61.86C44.723 5.851 55.59 0 64.786 0h71.055c9.196 0 20.063 6.688 25.079 14.211l35.945 61.86c4.18 8.36 4.18 20.899 0 29.258l-35.945 61.86c-4.18 8.36-15.883 14.211-25.079 14.211H64.786Z' fill='black' fill-rule='nonzero'/%3e%3c/svg%3e\");\n}\n.tw-mask-circle {\n -webkit-mask-image: url(\"data:image/svg+xml,%3csvg width='200' height='200' xmlns='http://www.w3.org/2000/svg'%3e%3ccircle fill='black' cx='100' cy='100' r='100' fill-rule='evenodd'/%3e%3c/svg%3e\");\n mask-image: url(\"data:image/svg+xml,%3csvg width='200' height='200' xmlns='http://www.w3.org/2000/svg'%3e%3ccircle fill='black' cx='100' cy='100' r='100' fill-rule='evenodd'/%3e%3c/svg%3e\");\n}\n:where(.tw-menu li:empty) {\n --tw-bg-opacity: 1;\n background-color: var(--fallback-bc,oklch(var(--bc)/var(--tw-bg-opacity)));\n opacity: 0.1;\n margin: 0.5rem 1rem;\n height: 1px;\n}\n.tw-menu :where(li ul):before {\n position: absolute;\n bottom: 0.75rem;\n inset-inline-start: 0px;\n top: 0.75rem;\n width: 1px;\n --tw-bg-opacity: 1;\n background-color: var(--fallback-bc,oklch(var(--bc)/var(--tw-bg-opacity)));\n opacity: 0.1;\n content: \"\";\n}\n.tw-menu :where(li:not(.tw-menu-title) > *:not(ul, details, .tw-menu-title, .tw-btn)),\n.tw-menu :where(li:not(.tw-menu-title) > details > summary:not(.tw-menu-title)) {\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-timing-function: cubic-bezier(0, 0, 0.2, 1);\n border-radius: var(--rounded-btn, 0.5rem);\n padding-left: 1rem;\n padding-right: 1rem;\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n text-align: start;\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-timing-function: cubic-bezier(0, 0, 0.2, 1);\n transition-duration: 200ms;\n text-wrap: balance;\n}\n:where(.tw-menu li:not(.tw-menu-title, .tw-disabled) > *:not(ul, details, .tw-menu-title)):not(summary, .tw-active, .tw-btn).tw-focus, :where(.tw-menu li:not(.tw-menu-title, .tw-disabled) > *:not(ul, details, .tw-menu-title)):not(summary, .tw-active, .tw-btn):focus, :where(.tw-menu li:not(.tw-menu-title, .tw-disabled) > *:not(ul, details, .tw-menu-title)):is(summary):not(.tw-active, .tw-btn):focus-visible, :where(.tw-menu li:not(.tw-menu-title, .tw-disabled) > details > summary:not(.tw-menu-title)):not(summary, .tw-active, .tw-btn).tw-focus, :where(.tw-menu li:not(.tw-menu-title, .tw-disabled) > details > summary:not(.tw-menu-title)):not(summary, .tw-active, .tw-btn):focus, :where(.tw-menu li:not(.tw-menu-title, .tw-disabled) > details > summary:not(.tw-menu-title)):is(summary):not(.tw-active, .tw-btn):focus-visible {\n cursor: pointer;\n background-color: var(--fallback-bc,oklch(var(--bc)/0.1));\n --tw-text-opacity: 1;\n color: var(--fallback-bc,oklch(var(--bc)/var(--tw-text-opacity)));\n outline: 2px solid transparent;\n outline-offset: 2px;\n}\n.tw-menu li > *:not(ul, .tw-menu-title, details, .tw-btn):active,\n.tw-menu li > *:not(ul, .tw-menu-title, details, .tw-btn).tw-active,\n.tw-menu li > details > summary:active {\n --tw-bg-opacity: 1;\n background-color: var(--fallback-n,oklch(var(--n)/var(--tw-bg-opacity)));\n --tw-text-opacity: 1;\n color: var(--fallback-nc,oklch(var(--nc)/var(--tw-text-opacity)));\n}\n.tw-menu :where(li > details > summary)::-webkit-details-marker {\n display: none;\n}\n.tw-menu :where(li > details > summary):after,\n.tw-menu :where(li > .tw-menu-dropdown-toggle):after {\n justify-self: end;\n display: block;\n margin-top: -0.5rem;\n height: 0.5rem;\n width: 0.5rem;\n transform: rotate(45deg);\n transition-property: transform, margin-top;\n transition-duration: 0.3s;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n content: \"\";\n transform-origin: 75% 75%;\n box-shadow: 2px 2px;\n pointer-events: none;\n}\n.tw-menu :where(li > details[open] > summary):after,\n.tw-menu :where(li > .tw-menu-dropdown-toggle.tw-menu-dropdown-show):after {\n transform: rotate(225deg);\n margin-top: 0;\n}\n.tw-mockup-browser .tw-mockup-browser-toolbar .tw-input {\n position: relative;\n margin-left: auto;\n margin-right: auto;\n display: block;\n height: 1.75rem;\n width: 24rem;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n --tw-bg-opacity: 1;\n background-color: var(--fallback-b2,oklch(var(--b2)/var(--tw-bg-opacity)));\n padding-left: 2rem;\n direction: ltr;\n}\n.tw-mockup-browser .tw-mockup-browser-toolbar .tw-input:before {\n content: \"\";\n position: absolute;\n left: 0.5rem;\n top: 50%;\n aspect-ratio: 1 / 1;\n height: 0.75rem;\n --tw-translate-y: -50%;\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-radius: 9999px;\n border-width: 2px;\n border-color: currentColor;\n opacity: 0.6;\n}\n.tw-mockup-browser .tw-mockup-browser-toolbar .tw-input:after {\n content: \"\";\n position: absolute;\n left: 1.25rem;\n top: 50%;\n height: 0.5rem;\n --tw-translate-y: 25%;\n --tw-rotate: -45deg;\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-radius: 9999px;\n border-width: 1px;\n border-color: currentColor;\n opacity: 0.6;\n}\n.tw-modal:not(dialog:not(.tw-modal-open)),\n .tw-modal::backdrop {\n background-color: #0006;\n animation: modal-pop 0.2s ease-out;\n}\n.tw-modal-backdrop {\n z-index: -1;\n grid-column-start: 1;\n grid-row-start: 1;\n display: grid;\n align-self: stretch;\n justify-self: stretch;\n color: transparent;\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-modal[open] .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@keyframes modal-pop {\n\n 0% {\n opacity: 0;\n }\n}\n@keyframes progress-loading {\n\n 50% {\n background-position-x: -115%;\n }\n}\n@keyframes radiomark {\n\n 0% {\n box-shadow: 0 0 0 12px var(--fallback-b1,oklch(var(--b1)/1)) inset,\n 0 0 0 12px var(--fallback-b1,oklch(var(--b1)/1)) inset;\n }\n\n 50% {\n box-shadow: 0 0 0 3px var(--fallback-b1,oklch(var(--b1)/1)) inset,\n 0 0 0 3px var(--fallback-b1,oklch(var(--b1)/1)) inset;\n }\n\n 100% {\n box-shadow: 0 0 0 4px var(--fallback-b1,oklch(var(--b1)/1)) inset,\n 0 0 0 4px var(--fallback-b1,oklch(var(--b1)/1)) 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-select-bordered {\n border-color: var(--fallback-bc,oklch(var(--bc)/0.2));\n}\n.tw-select:focus {\n box-shadow: none;\n border-color: var(--fallback-bc,oklch(var(--bc)/0.2));\n outline-style: solid;\n outline-width: 2px;\n outline-offset: 2px;\n outline-color: var(--fallback-bc,oklch(var(--bc)/0.2));\n}\n.tw-select-disabled,\n .tw-select:disabled,\n .tw-select[disabled] {\n cursor: not-allowed;\n --tw-border-opacity: 1;\n border-color: var(--fallback-b2,oklch(var(--b2)/var(--tw-border-opacity)));\n --tw-bg-opacity: 1;\n background-color: var(--fallback-b2,oklch(var(--b2)/var(--tw-bg-opacity)));\n color: var(--fallback-bc,oklch(var(--bc)/0.4));\n}\n.tw-select-disabled::-moz-placeholder, .tw-select:disabled::-moz-placeholder, .tw-select[disabled]::-moz-placeholder {\n color: var(--fallback-bc,oklch(var(--bc)/var(--tw-placeholder-opacity)));\n --tw-placeholder-opacity: 0.2;\n}\n.tw-select-disabled::placeholder,\n .tw-select:disabled::placeholder,\n .tw-select[disabled]::placeholder {\n color: var(--fallback-bc,oklch(var(--bc)/var(--tw-placeholder-opacity)));\n --tw-placeholder-opacity: 0.2;\n}\n.tw-select-multiple,\n .tw-select[multiple],\n .tw-select[size].tw-select:not([size=\"1\"]) {\n background-image: none;\n padding-right: 1rem;\n}\n[dir=\"rtl\"] .tw-select {\n background-position: calc(0% + 12px) calc(1px + 50%),\n calc(0% + 16px) calc(1px + 50%);\n}\n@keyframes skeleton {\n\n from {\n background-position: 150%;\n }\n\n to {\n background-position: -50%;\n }\n}\n.tw-tabs-lifted > .tw-tab:focus-visible {\n border-end-end-radius: 0;\n border-end-start-radius: 0;\n}\n.tw-tab:is(.tw-tab-active, [aria-selected=\"true\"]):not(.tw-tab-disabled):not([disabled]), .tw-tab:is(input:checked) {\n border-color: var(--fallback-bc,oklch(var(--bc)/var(--tw-border-opacity)));\n --tw-border-opacity: 1;\n --tw-text-opacity: 1;\n}\n.tw-tab:focus {\n outline: 2px solid transparent;\n outline-offset: 2px;\n}\n.tw-tab:focus-visible {\n outline: 2px solid currentColor;\n outline-offset: -5px;\n}\n.tw-tab-disabled,\n .tw-tab[disabled] {\n cursor: not-allowed;\n color: var(--fallback-bc,oklch(var(--bc)/var(--tw-text-opacity)));\n --tw-text-opacity: 0.2;\n}\n.tw-tabs-bordered > .tw-tab {\n border-color: var(--fallback-bc,oklch(var(--bc)/var(--tw-border-opacity)));\n --tw-border-opacity: 0.2;\n border-style: solid;\n border-bottom-width: calc(var(--tab-border, 1px) + 1px);\n}\n.tw-tabs-lifted > .tw-tab {\n border: var(--tab-border, 1px) solid transparent;\n border-width: 0 0 var(--tab-border, 1px) 0;\n border-start-start-radius: var(--tab-radius, 0.5rem);\n border-start-end-radius: var(--tab-radius, 0.5rem);\n border-bottom-color: var(--tab-border-color);\n padding-inline-start: var(--tab-padding, 1rem);\n padding-inline-end: var(--tab-padding, 1rem);\n padding-top: var(--tab-border, 1px);\n}\n.tw-tabs-lifted > .tw-tab:is(.tw-tab-active, [aria-selected=\"true\"]):not(.tw-tab-disabled):not([disabled]), .tw-tabs-lifted > .tw-tab:is(input:checked) {\n background-color: var(--tab-bg);\n border-width: var(--tab-border, 1px) var(--tab-border, 1px) 0 var(--tab-border, 1px);\n border-inline-start-color: var(--tab-border-color);\n border-inline-end-color: var(--tab-border-color);\n border-top-color: var(--tab-border-color);\n padding-inline-start: calc(var(--tab-padding, 1rem) - var(--tab-border, 1px));\n padding-inline-end: calc(var(--tab-padding, 1rem) - var(--tab-border, 1px));\n padding-bottom: var(--tab-border, 1px);\n padding-top: 0;\n}\n.tw-tabs-lifted > .tw-tab:is(.tw-tab-active, [aria-selected=\"true\"]):not(.tw-tab-disabled):not([disabled]):before, .tw-tabs-lifted > .tw-tab:is(input:checked):before {\n z-index: 1;\n content: \"\";\n display: block;\n position: absolute;\n width: calc(100% + var(--tab-radius, 0.5rem) * 2);\n height: var(--tab-radius, 0.5rem);\n bottom: 0;\n background-size: var(--tab-radius, 0.5rem);\n background-position: top left,\n top right;\n background-repeat: no-repeat;\n --tab-grad: calc(69% - var(--tab-border, 1px));\n --radius-start: radial-gradient(\n circle at top left,\n transparent var(--tab-grad),\n var(--tab-border-color) calc(var(--tab-grad) + 0.25px),\n var(--tab-border-color) calc(var(--tab-grad) + var(--tab-border, 1px)),\n var(--tab-bg) calc(var(--tab-grad) + var(--tab-border, 1px) + 0.25px)\n );\n --radius-end: radial-gradient(\n circle at top right,\n transparent var(--tab-grad),\n var(--tab-border-color) calc(var(--tab-grad) + 0.25px),\n var(--tab-border-color) calc(var(--tab-grad) + var(--tab-border, 1px)),\n var(--tab-bg) calc(var(--tab-grad) + var(--tab-border, 1px) + 0.25px)\n );\n background-image: var(--radius-start), var(--radius-end);\n}\n.tw-tabs-lifted > .tw-tab:is(.tw-tab-active, [aria-selected=\"true\"]):not(.tw-tab-disabled):not([disabled]):first-child:before, .tw-tabs-lifted > .tw-tab:is(input:checked):first-child:before {\n background-image: var(--radius-end);\n background-position: top right;\n}\n[dir=\"rtl\"] .tw-tabs-lifted > .tw-tab:is(.tw-tab-active, [aria-selected=\"true\"]):not(.tw-tab-disabled):not([disabled]):first-child:before, [dir=\"rtl\"] .tw-tabs-lifted > .tw-tab:is(input:checked):first-child:before {\n background-image: var(--radius-start);\n background-position: top left;\n}\n.tw-tabs-lifted > .tw-tab:is(.tw-tab-active, [aria-selected=\"true\"]):not(.tw-tab-disabled):not([disabled]):last-child:before, .tw-tabs-lifted > .tw-tab:is(input:checked):last-child:before {\n background-image: var(--radius-start);\n background-position: top left;\n}\n[dir=\"rtl\"] .tw-tabs-lifted > .tw-tab:is(.tw-tab-active, [aria-selected=\"true\"]):not(.tw-tab-disabled):not([disabled]):last-child:before, [dir=\"rtl\"] .tw-tabs-lifted > .tw-tab:is(input:checked):last-child:before {\n background-image: var(--radius-end);\n background-position: top right;\n}\n.tw-tabs-lifted\n > :is(.tw-tab-active, [aria-selected=\"true\"]):not(.tw-tab-disabled):not([disabled])\n + .tw-tabs-lifted\n :is(.tw-tab-active, [aria-selected=\"true\"]):not(.tw-tab-disabled):not([disabled]):before, .tw-tabs-lifted > .tw-tab:is(input:checked) + .tw-tabs-lifted .tw-tab:is(input:checked):before {\n background-image: var(--radius-end);\n background-position: top right;\n}\n.tw-tabs-boxed .tw-tab {\n border-radius: var(--rounded-btn, 0.5rem);\n}\n.tw-table:where([dir=\"rtl\"], [dir=\"rtl\"] *) {\n text-align: right;\n}\n.tw-table :where(th, td) {\n padding-left: 1rem;\n padding-right: 1rem;\n padding-top: 0.75rem;\n padding-bottom: 0.75rem;\n vertical-align: middle;\n}\n.tw-table tr.tw-active,\n .tw-table tr.tw-active:nth-child(even),\n .tw-table-zebra tbody tr:nth-child(even) {\n --tw-bg-opacity: 1;\n background-color: var(--fallback-b2,oklch(var(--b2)/var(--tw-bg-opacity)));\n}\n.tw-table :where(thead tr, tbody tr:not(:last-child), tbody tr:first-child:last-child) {\n border-bottom-width: 1px;\n --tw-border-opacity: 1;\n border-bottom-color: var(--fallback-b2,oklch(var(--b2)/var(--tw-border-opacity)));\n}\n.tw-table :where(thead, tfoot) {\n white-space: nowrap;\n font-size: 0.75rem;\n line-height: 1rem;\n font-weight: 700;\n color: var(--fallback-bc,oklch(var(--bc)/0.6));\n}\n.tw-table :where(tfoot) {\n border-top-width: 1px;\n --tw-border-opacity: 1;\n border-top-color: var(--fallback-b2,oklch(var(--b2)/var(--tw-border-opacity)));\n}\n.tw-textarea-bordered {\n border-color: var(--fallback-bc,oklch(var(--bc)/0.2));\n}\n.tw-textarea:focus {\n box-shadow: none;\n border-color: var(--fallback-bc,oklch(var(--bc)/0.2));\n outline-style: solid;\n outline-width: 2px;\n outline-offset: 2px;\n outline-color: var(--fallback-bc,oklch(var(--bc)/0.2));\n}\n.tw-textarea-disabled,\n .tw-textarea:disabled,\n .tw-textarea[disabled] {\n cursor: not-allowed;\n --tw-border-opacity: 1;\n border-color: var(--fallback-b2,oklch(var(--b2)/var(--tw-border-opacity)));\n --tw-bg-opacity: 1;\n background-color: var(--fallback-b2,oklch(var(--b2)/var(--tw-bg-opacity)));\n color: var(--fallback-bc,oklch(var(--bc)/0.4));\n}\n.tw-textarea-disabled::-moz-placeholder, .tw-textarea:disabled::-moz-placeholder, .tw-textarea[disabled]::-moz-placeholder {\n color: var(--fallback-bc,oklch(var(--bc)/var(--tw-placeholder-opacity)));\n --tw-placeholder-opacity: 0.2;\n}\n.tw-textarea-disabled::placeholder,\n .tw-textarea:disabled::placeholder,\n .tw-textarea[disabled]::placeholder {\n color: var(--fallback-bc,oklch(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-btn-xs {\n height: 1.5rem;\n min-height: 1.5rem;\n padding-left: 0.5rem;\n padding-right: 0.5rem;\n font-size: 0.75rem;\n}\n.tw-btn-sm {\n height: 2rem;\n min-height: 2rem;\n padding-left: 0.75rem;\n padding-right: 0.75rem;\n font-size: 0.875rem;\n}\n.tw-btn-lg {\n height: 4rem;\n min-height: 4rem;\n padding-left: 1.5rem;\n padding-right: 1.5rem;\n font-size: 1.125rem;\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[type=\"checkbox\"].tw-checkbox-xs {\n height: 1rem;\n width: 1rem;\n}\n[type=\"checkbox\"].tw-checkbox-sm {\n height: 1.25rem;\n width: 1.25rem;\n}\n.tw-indicator :where(.tw-indicator-item) {\n bottom: auto;\n inset-inline-end: 0px;\n inset-inline-start: auto;\n top: 0px;\n --tw-translate-y: -50%;\n --tw-translate-x: 50%;\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-indicator :where(.tw-indicator-item):where([dir=\"rtl\"], [dir=\"rtl\"] *) {\n --tw-translate-x: -50%;\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-indicator :where(.tw-indicator-item.tw-indicator-start) {\n inset-inline-end: auto;\n inset-inline-start: 0px;\n --tw-translate-x: -50%;\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-indicator :where(.tw-indicator-item.tw-indicator-start):where([dir=\"rtl\"], [dir=\"rtl\"] *) {\n --tw-translate-x: 50%;\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-indicator :where(.tw-indicator-item.tw-indicator-center) {\n inset-inline-end: 50%;\n inset-inline-start: 50%;\n --tw-translate-x: -50%;\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-indicator :where(.tw-indicator-item.tw-indicator-center):where([dir=\"rtl\"], [dir=\"rtl\"] *) {\n --tw-translate-x: 50%;\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-indicator :where(.tw-indicator-item.tw-indicator-end) {\n inset-inline-end: 0px;\n inset-inline-start: auto;\n --tw-translate-x: 50%;\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-indicator :where(.tw-indicator-item.tw-indicator-end):where([dir=\"rtl\"], [dir=\"rtl\"] *) {\n --tw-translate-x: -50%;\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-indicator :where(.tw-indicator-item.tw-indicator-bottom) {\n bottom: 0px;\n top: auto;\n --tw-translate-y: 50%;\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-indicator :where(.tw-indicator-item.tw-indicator-middle) {\n bottom: 50%;\n top: 50%;\n --tw-translate-y: -50%;\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-indicator :where(.tw-indicator-item.tw-indicator-top) {\n bottom: auto;\n top: 0px;\n --tw-translate-y: -50%;\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-input-md {\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}\n.tw-input-sm {\n height: 2rem;\n padding-left: 0.75rem;\n padding-right: 0.75rem;\n font-size: 0.875rem;\n line-height: 2rem;\n}\n.tw-tabs-md :where(.tw-tab) {\n height: 2rem;\n font-size: 0.875rem;\n line-height: 1.25rem;\n line-height: 2;\n --tab-padding: 1rem;\n}\n.tw-tabs-lg :where(.tw-tab) {\n height: 3rem;\n font-size: 1.125rem;\n line-height: 1.75rem;\n line-height: 2;\n --tab-padding: 1.25rem;\n}\n.tw-tabs-sm :where(.tw-tab) {\n height: 1.5rem;\n font-size: 0.875rem;\n line-height: .75rem;\n --tab-padding: 0.75rem;\n}\n.tw-tabs-xs :where(.tw-tab) {\n height: 1.25rem;\n font-size: 0.75rem;\n line-height: .75rem;\n --tab-padding: 0.5rem;\n}\n.tw-tooltip {\n position: relative;\n display: inline-block;\n --tooltip-offset: calc(100% + 1px + var(--tooltip-tail, 0px));\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}\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-tooltip-right:before {\n transform: translateY(-50%);\n top: 50%;\n left: var(--tooltip-offset);\n right: auto;\n bottom: auto;\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: var(--fallback-su,oklch(var(--su)/var(--tw-bg-opacity)));\n outline-style: solid;\n outline-width: 2px;\n outline-color: var(--fallback-b1,oklch(var(--b1)/1));\n width: 15%;\n height: 15%;\n top: 7%;\n right: 7%;\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: var(--fallback-b3,oklch(var(--b3)/var(--tw-bg-opacity)));\n outline-style: solid;\n outline-width: 2px;\n outline-color: var(--fallback-b1,oklch(var(--b1)/1));\n width: 15%;\n height: 15%;\n top: 7%;\n right: 7%;\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-join.tw-join-vertical > :where(*:not(:first-child)):is(.tw-btn) {\n margin-top: calc(var(--border-btn) * -1);\n}\n.tw-join.tw-join-horizontal > :where(*:not(:first-child)):is(.tw-btn) {\n margin-inline-start: calc(var(--border-btn) * -1);\n margin-top: 0px;\n}\n.tw-modal-top :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: var(--rounded-box, 1rem);\n border-bottom-left-radius: var(--rounded-box, 1rem);\n border-top-left-radius: 0px;\n border-top-right-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-top-left-radius: var(--rounded-box, 1rem);\n border-top-right-radius: var(--rounded-box, 1rem);\n border-bottom-right-radius: var(--rounded-box, 1rem);\n border-bottom-left-radius: var(--rounded-box, 1rem);\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-top-left-radius: var(--rounded-box, 1rem);\n border-top-right-radius: var(--rounded-box, 1rem);\n border-bottom-right-radius: 0px;\n border-bottom-left-radius: 0px;\n}\n.tw-tooltip {\n position: relative;\n display: inline-block;\n text-align: center;\n --tooltip-tail: 0.1875rem;\n --tooltip-color: var(--fallback-n,oklch(var(--n)/1));\n --tooltip-text-color: var(--fallback-nc,oklch(var(--nc)/1));\n --tooltip-tail-offset: calc(100% + 0.0625rem - var(--tooltip-tail));\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:before {\n max-width: 20rem;\n white-space: normal;\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.tw-tooltip-open:before {\n opacity: 1;\n transition-delay: 75ms;\n}\n.tw-tooltip.tw-tooltip-open:after {\n opacity: 1;\n transition-delay: 75ms;\n}\n.tw-tooltip:hover:before {\n opacity: 1;\n transition-delay: 75ms;\n}\n.tw-tooltip:hover:after {\n opacity: 1;\n transition-delay: 75ms;\n}\n.tw-tooltip:has(:focus-visible):after,\n.tw-tooltip:has(:focus-visible):before {\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) + 0.0625rem);\n bottom: auto;\n}\n.tw-tooltip-right:after {\n transform: translateY(-50%);\n border-color: transparent var(--tooltip-color) transparent transparent;\n top: 50%;\n left: calc(var(--tooltip-tail-offset) + 0.0625rem);\n right: auto;\n bottom: auto;\n}\n.tw-pointer-events-none {\n pointer-events: none;\n}\n.tw-pointer-events-auto {\n pointer-events: auto;\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-24 {\n bottom: 6rem !important;\n}\n.\\!tw-left-0 {\n left: 0px !important;\n}\n.\\!tw-left-auto {\n left: auto !important;\n}\n.-tw-left-6 {\n left: -1.5rem;\n}\n.tw--right-2 {\n right: -0.5rem;\n}\n.tw--top-2 {\n top: -0.5rem;\n}\n.tw-bottom-0 {\n bottom: 0px;\n}\n.tw-bottom-4 {\n bottom: 1rem;\n}\n.tw-left-0 {\n left: 0px;\n}\n.tw-left-1\\/2 {\n left: 50%;\n}\n.tw-left-4 {\n left: 1rem;\n}\n.tw-right-0 {\n right: 0px;\n}\n.tw-right-1 {\n right: 0.25rem;\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-1 {\n top: 0.25rem;\n}\n.tw-top-14 {\n top: 3.5rem;\n}\n.tw-top-2 {\n top: 0.5rem;\n}\n.tw-top-4 {\n top: 1rem;\n}\n.\\!tw-z-\\[10000\\] {\n z-index: 10000 !important;\n}\n.tw-z-1000 {\n z-index: 1000;\n}\n.tw-z-3000 {\n z-index: 3000;\n}\n.tw-z-500 {\n z-index: 500;\n}\n.tw-z-\\[10000\\] {\n z-index: 10000;\n}\n.tw-z-\\[10035\\] {\n z-index: 10035;\n}\n.tw-z-\\[2000\\] {\n z-index: 2000;\n}\n.tw-z-\\[4000\\] {\n z-index: 4000;\n}\n.tw-z-\\[9998\\] {\n z-index: 9998;\n}\n.tw-z-\\[999\\] {\n z-index: 999;\n}\n.tw-col-span-1 {\n grid-column: span 1 / span 1;\n}\n.tw-float-right {\n float: right;\n}\n.tw-float-left {\n float: left;\n}\n.tw-m-1 {\n margin: 0.25rem;\n}\n.tw-m-4 {\n margin: 1rem;\n}\n.tw-m-auto {\n margin: auto;\n}\n.\\!tw-my-0 {\n margin-top: 0px !important;\n margin-bottom: 0px !important;\n}\n.\\!tw-my-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n}\n.-tw-mx-4 {\n margin-left: -1rem;\n margin-right: -1rem;\n}\n.tw-mx-2 {\n margin-left: 0.5rem;\n margin-right: 0.5rem;\n}\n.tw-mx-4 {\n margin-left: 1rem;\n margin-right: 1rem;\n}\n.tw-mx-6 {\n margin-left: 1.5rem;\n margin-right: 1.5rem;\n}\n.tw-mx-auto {\n margin-left: auto;\n margin-right: auto;\n}\n.tw-my-1 {\n margin-top: 0.25rem;\n margin-bottom: 0.25rem;\n}\n.tw-my-10 {\n margin-top: 2.5rem;\n margin-bottom: 2.5rem;\n}\n.tw-my-2 {\n margin-top: 0.5rem;\n margin-bottom: 0.5rem;\n}\n.-tw-mb-1 {\n margin-bottom: -0.25rem;\n}\n.-tw-mb-2 {\n margin-bottom: -0.5rem;\n}\n.-tw-mb-4 {\n margin-bottom: -1rem;\n}\n.-tw-mr-4 {\n margin-right: -1rem;\n}\n.-tw-mr-6 {\n margin-right: -1.5rem;\n}\n.-tw-mt-2 {\n margin-top: -0.5rem;\n}\n.tw-mb-0 {\n margin-bottom: 0px;\n}\n.tw-mb-1 {\n margin-bottom: 0.25rem;\n}\n.tw-mb-10 {\n margin-bottom: 2.5rem;\n}\n.tw-mb-2 {\n margin-bottom: 0.5rem;\n}\n.tw-mb-3 {\n margin-bottom: 0.75rem;\n}\n.tw-mb-4 {\n margin-bottom: 1rem;\n}\n.tw-mb-6 {\n margin-bottom: 1.5rem;\n}\n.tw-ml-1 {\n margin-left: 0.25rem;\n}\n.tw-ml-2 {\n margin-left: 0.5rem;\n}\n.tw-mr-1 {\n margin-right: 0.25rem;\n}\n.tw-mr-2 {\n margin-right: 0.5rem;\n}\n.tw-mr-4 {\n margin-right: 1rem;\n}\n.tw-mr-5 {\n margin-right: 1.25rem;\n}\n.tw-mt-0 {\n margin-top: 0px;\n}\n.tw-mt-1 {\n margin-top: 0.25rem;\n}\n.tw-mt-1\\.5 {\n margin-top: 0.375rem;\n}\n.tw-mt-12 {\n margin-top: 3rem;\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-block {\n display: block;\n}\n.tw-inline-block {\n display: inline-block;\n}\n.tw-inline {\n display: inline;\n}\n.tw-flex {\n display: flex;\n}\n.tw-inline-flex {\n display: inline-flex;\n}\n.tw-table {\n display: table;\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-12 {\n height: 3rem;\n}\n.tw-h-20 {\n height: 5rem;\n}\n.tw-h-24 {\n height: 6rem;\n}\n.tw-h-28 {\n height: 7rem;\n}\n.tw-h-3 {\n height: 0.75rem;\n}\n.tw-h-3\\/4 {\n height: 75%;\n}\n.tw-h-32 {\n height: 8rem;\n}\n.tw-h-4 {\n height: 1rem;\n}\n.tw-h-40 {\n height: 10rem;\n}\n.tw-h-48 {\n height: 12rem;\n}\n.tw-h-5 {\n height: 1.25rem;\n}\n.tw-h-6 {\n height: 1.5rem;\n}\n.tw-h-8 {\n height: 2rem;\n}\n.tw-h-96 {\n height: 24rem;\n}\n.tw-h-\\[100dvh\\] {\n height: 100dvh;\n}\n.tw-h-\\[2em\\] {\n height: 2em;\n}\n.tw-h-\\[calc\\(100\\%-1rem\\)\\] {\n height: calc(100% - 1rem);\n}\n.tw-h-\\[calc\\(100dvh-268px\\)\\] {\n height: calc(100dvh - 268px);\n}\n.tw-h-\\[calc\\(100dvh-280px\\)\\] {\n height: calc(100dvh - 280px);\n}\n.tw-h-\\[calc\\(100dvh-332px\\)\\] {\n height: calc(100dvh - 332px);\n}\n.tw-h-\\[calc\\(100dvh-64px\\)\\] {\n height: calc(100dvh - 64px);\n}\n.tw-h-\\[calc\\(50\\%-0\\.75em\\)\\] {\n height: calc(50% - 0.75em);\n}\n.tw-h-\\[calc\\(50\\%-1\\.5em\\)\\] {\n height: calc(50% - 1.5em);\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-64 {\n max-height: 16rem;\n}\n.tw-max-h-\\[calc\\(100dvh-152px\\)\\] {\n max-height: calc(100dvh - 152px);\n}\n.tw-max-h-\\[calc\\(100dvh-96px\\)\\] {\n max-height: calc(100dvh - 96px);\n}\n.tw-min-h-0 {\n min-height: 0px;\n}\n.tw-min-h-56 {\n min-height: 224px;\n}\n.tw-min-h-80 {\n min-height: 320px;\n}\n.tw-min-h-\\[21px\\] {\n min-height: 21px;\n}\n.tw-min-h-\\[5em\\] {\n min-height: 5em;\n}\n.tw-w-1 {\n width: 0.25rem;\n}\n.tw-w-10 {\n width: 2.5rem;\n}\n.tw-w-12 {\n width: 3rem;\n}\n.tw-w-20 {\n width: 5rem;\n}\n.tw-w-28 {\n width: 7rem;\n}\n.tw-w-4 {\n width: 1rem;\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-8 {\n width: 2rem;\n}\n.tw-w-80 {\n width: 20rem;\n}\n.tw-w-96 {\n width: 24rem;\n}\n.tw-w-\\[56px\\] {\n width: 56px;\n}\n.tw-w-\\[calc\\(100\\%-32px\\)\\] {\n width: calc(100% - 32px);\n}\n.tw-w-\\[calc\\(100vw-2rem\\)\\] {\n width: calc(100vw - 2rem);\n}\n.tw-w-fit {\n width: -moz-fit-content;\n width: fit-content;\n}\n.tw-w-full {\n width: 100%;\n}\n.tw-min-w-0 {\n min-width: 0px;\n}\n.tw-min-w-80 {\n min-width: 320px;\n}\n.tw-min-w-\\[10\\.4em\\] {\n min-width: 10.4em;\n}\n.tw-min-w-\\[10em\\] {\n min-width: 10em;\n}\n.tw-min-w-\\[8rem\\] {\n min-width: 8rem;\n}\n.tw-min-w-fit {\n min-width: -moz-fit-content;\n min-width: fit-content;\n}\n.tw-max-w-3xl {\n max-width: 48rem;\n}\n.tw-max-w-\\[17rem\\] {\n max-width: 17rem;\n}\n.tw-max-w-\\[22rem\\] {\n max-width: 22rem;\n}\n.tw-max-w-\\[calc\\(100\\%-60px\\)\\] {\n max-width: calc(100% - 60px);\n}\n.tw-max-w-full {\n max-width: 100%;\n}\n.tw-max-w-xl {\n max-width: 36rem;\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-flex-grow {\n flex-grow: 1;\n}\n.tw-grow {\n flex-grow: 1;\n}\n.tw-basis-1\\/5 {\n flex-basis: 20%;\n}\n.tw-basis-2\\/5 {\n flex-basis: 40%;\n}\n.-tw-translate-y-1\\/3 {\n --tw-translate-y: -33.333333%;\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--translate-x-1\\/2 {\n --tw-translate-x: -50%;\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--translate-x-full {\n --tw-translate-x: -100%;\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-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-translate-x-1\\/3 {\n --tw-translate-x: 33.333333%;\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-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@keyframes tw-pulseGrow {\n\n 0%, 100% {\n transform: scale(1.00);\n }\n\n 80% {\n transform: scale(1.00);\n }\n\n 90% {\n transform: scale(0.95);\n }\n}\n.tw-animate-pulseGrow {\n animation: tw-pulseGrow 2s ease-in-out infinite;\n}\n.tw-cursor-pointer {\n cursor: pointer;\n}\n.tw-cursor-text {\n cursor: text;\n}\n.tw-resize-none {\n resize: none;\n}\n.tw-list-inside {\n list-style-position: inside;\n}\n.tw-list-decimal {\n list-style-type: decimal;\n}\n.tw-list-disc {\n list-style-type: disc;\n}\n.tw-list-none {\n list-style-type: none;\n}\n.tw-columns-1 {\n -moz-columns: 1;\n columns: 1;\n}\n.tw-break-inside-avoid {\n -moz-column-break-inside: avoid;\n break-inside: avoid;\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-2 {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n}\n.tw-grid-cols-3 {\n grid-template-columns: repeat(3, 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-flex-wrap {\n flex-wrap: wrap;\n}\n.tw-place-content-center {\n place-content: center;\n}\n.tw-place-content-end {\n place-content: end;\n}\n.tw-place-items-end {\n place-items: end;\n}\n.tw-place-items-center {\n place-items: center;\n}\n.tw-items-center {\n align-items: center;\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-justify-between {\n justify-content: space-between;\n}\n.tw-gap-2 {\n gap: 0.5rem;\n}\n.tw-gap-6 {\n gap: 1.5rem;\n}\n.tw-space-x-2 > :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.tw-space-x-3 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-x-reverse: 0;\n margin-right: calc(0.75rem * var(--tw-space-x-reverse));\n margin-left: calc(0.75rem * calc(1 - var(--tw-space-x-reverse)));\n}\n.tw-space-y-4 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-y-reverse: 0;\n margin-top: calc(1rem * calc(1 - var(--tw-space-y-reverse)));\n margin-bottom: calc(1rem * var(--tw-space-y-reverse));\n}\n.tw-space-y-6 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-y-reverse: 0;\n margin-top: calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));\n margin-bottom: calc(1.5rem * var(--tw-space-y-reverse));\n}\n.tw-place-self-end {\n place-self: end;\n}\n.tw-place-self-center {\n place-self: center;\n}\n.tw-self-center {\n align-self: center;\n}\n.tw-overflow-auto {\n overflow: auto;\n}\n.tw-overflow-hidden {\n overflow: hidden;\n}\n.tw-overflow-scroll {\n overflow: scroll;\n}\n.tw-overflow-x-auto {\n overflow-x: auto;\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-text-ellipsis {\n text-overflow: ellipsis;\n}\n.tw-whitespace-nowrap {\n white-space: nowrap;\n}\n.\\!tw-rounded-none {\n border-radius: 0px !important;\n}\n.tw-rounded {\n border-radius: 0.25rem;\n}\n.tw-rounded-2xl {\n border-radius: 1rem;\n}\n.tw-rounded-box {\n border-radius: var(--rounded-box, 1rem);\n}\n.tw-rounded-full {\n border-radius: 9999px;\n}\n.tw-rounded-lg {\n border-radius: 0.5rem;\n}\n.tw-rounded-md {\n border-radius: 0.375rem;\n}\n.tw-rounded-none {\n border-radius: 0px;\n}\n.tw-rounded-xl {\n border-radius: 0.75rem;\n}\n.tw-rounded-br-md {\n border-bottom-right-radius: 0.375rem;\n}\n.tw-rounded-tl-none {\n border-top-left-radius: 0px;\n}\n.tw-rounded-tr-md {\n border-top-right-radius: 0.375rem;\n}\n.tw-border {\n border-width: 1px;\n}\n.tw-border-0 {\n border-width: 0px;\n}\n.tw-border-4 {\n border-width: 4px;\n}\n.tw-border-\\[1px\\] {\n border-width: 1px;\n}\n.tw-border-t-0 {\n border-top-width: 0px;\n}\n.tw-border-none {\n border-style: none;\n}\n.tw-border-\\[var\\(--fallback-bc\\,oklch\\(var\\(--bc\\)\\/0\\.2\\)\\)\\] {\n border-color: var(--fallback-bc,oklch(var(--bc)/0.2));\n}\n.tw-border-base-200 {\n --tw-border-opacity: 1;\n border-color: var(--fallback-b2,oklch(var(--b2)/var(--tw-border-opacity, 1)));\n}\n.tw-border-base-300 {\n --tw-border-opacity: 1;\n border-color: var(--fallback-b3,oklch(var(--b3)/var(--tw-border-opacity, 1)));\n}\n.tw-border-current {\n border-color: currentColor;\n}\n.tw-border-gray-300 {\n --tw-border-opacity: 1;\n border-color: rgb(209 213 219 / var(--tw-border-opacity, 1));\n}\n.tw-bg-\\[\\#369acc\\] {\n --tw-bg-opacity: 1;\n background-color: rgb(54 154 204 / var(--tw-bg-opacity, 1));\n}\n.tw-bg-\\[\\#95cf92\\] {\n --tw-bg-opacity: 1;\n background-color: rgb(149 207 146 / var(--tw-bg-opacity, 1));\n}\n.tw-bg-\\[\\#9656a2\\] {\n --tw-bg-opacity: 1;\n background-color: rgb(150 86 162 / var(--tw-bg-opacity, 1));\n}\n.tw-bg-\\[\\#A9DEF9\\] {\n --tw-bg-opacity: 1;\n background-color: rgb(169 222 249 / var(--tw-bg-opacity, 1));\n}\n.tw-bg-\\[\\#D0F4DE\\] {\n --tw-bg-opacity: 1;\n background-color: rgb(208 244 222 / var(--tw-bg-opacity, 1));\n}\n.tw-bg-\\[\\#E4C1F9\\] {\n --tw-bg-opacity: 1;\n background-color: rgb(228 193 249 / var(--tw-bg-opacity, 1));\n}\n.tw-bg-\\[\\#FCF6BD\\] {\n --tw-bg-opacity: 1;\n background-color: rgb(252 246 189 / var(--tw-bg-opacity, 1));\n}\n.tw-bg-\\[\\#FF99C8\\] {\n --tw-bg-opacity: 1;\n background-color: rgb(255 153 200 / var(--tw-bg-opacity, 1));\n}\n.tw-bg-\\[\\#de324c\\] {\n --tw-bg-opacity: 1;\n background-color: rgb(222 50 76 / var(--tw-bg-opacity, 1));\n}\n.tw-bg-\\[\\#f4895f\\] {\n --tw-bg-opacity: 1;\n background-color: rgb(244 137 95 / var(--tw-bg-opacity, 1));\n}\n.tw-bg-\\[\\#f8e16f\\] {\n --tw-bg-opacity: 1;\n background-color: rgb(248 225 111 / var(--tw-bg-opacity, 1));\n}\n.tw-bg-\\[\\#fff0d6\\] {\n --tw-bg-opacity: 1;\n background-color: rgb(255 240 214 / var(--tw-bg-opacity, 1));\n}\n.tw-bg-base-100 {\n --tw-bg-opacity: 1;\n background-color: var(--fallback-b1,oklch(var(--b1)/var(--tw-bg-opacity, 1)));\n}\n.tw-bg-base-200 {\n --tw-bg-opacity: 1;\n background-color: var(--fallback-b2,oklch(var(--b2)/var(--tw-bg-opacity, 1)));\n}\n.tw-bg-base-300 {\n --tw-bg-opacity: 1;\n background-color: var(--fallback-b3,oklch(var(--b3)/var(--tw-bg-opacity, 1)));\n}\n.tw-bg-gray-200 {\n --tw-bg-opacity: 1;\n background-color: rgb(229 231 235 / var(--tw-bg-opacity, 1));\n}\n.tw-bg-neutral-content {\n --tw-bg-opacity: 1;\n background-color: var(--fallback-nc,oklch(var(--nc)/var(--tw-bg-opacity, 1)));\n}\n.tw-bg-primary {\n --tw-bg-opacity: 1;\n background-color: var(--fallback-p,oklch(var(--p)/var(--tw-bg-opacity, 1)));\n}\n.tw-bg-slate-200 {\n --tw-bg-opacity: 1;\n background-color: rgb(226 232 240 / var(--tw-bg-opacity, 1));\n}\n.tw-bg-transparent {\n background-color: transparent;\n}\n.tw-bg-white {\n --tw-bg-opacity: 1;\n background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1));\n}\n.tw-fill-current {\n fill: currentColor;\n}\n.tw-stroke-\\[2\\.5\\] {\n stroke-width: 2.5;\n}\n.tw-stroke-\\[3\\] {\n stroke-width: 3;\n}\n.tw-object-cover {\n -o-object-fit: cover;\n object-fit: cover;\n}\n.\\!tw-p-0 {\n padding: 0px !important;\n}\n.\\!tw-p-4 {\n padding: 1rem !important;\n}\n.\\!tw-p-9 {\n padding: 2.25rem !important;\n}\n.tw-p-0 {\n padding: 0px;\n}\n.tw-p-1 {\n padding: 0.25rem;\n}\n.tw-p-2 {\n padding: 0.5rem;\n}\n.tw-p-3 {\n padding: 0.75rem;\n}\n.tw-p-4 {\n padding: 1rem;\n}\n.tw-p-6 {\n padding: 1.5rem;\n}\n.tw-p-\\[1px\\] {\n padding: 1px;\n}\n.tw-px-2 {\n padding-left: 0.5rem;\n padding-right: 0.5rem;\n}\n.tw-px-4 {\n padding-left: 1rem;\n padding-right: 1rem;\n}\n.tw-px-6 {\n padding-left: 1.5rem;\n padding-right: 1.5rem;\n}\n.tw-px-8 {\n padding-left: 2rem;\n padding-right: 2rem;\n}\n.tw-py-0\\.5 {\n padding-top: 0.125rem;\n padding-bottom: 0.125rem;\n}\n.tw-py-1 {\n padding-top: 0.25rem;\n padding-bottom: 0.25rem;\n}\n.tw-py-2 {\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n}\n.\\!tw-pe-2 {\n padding-inline-end: 0.5rem !important;\n}\n.\\!tw-ps-2 {\n padding-inline-start: 0.5rem !important;\n}\n.tw-pb-0 {\n padding-bottom: 0px;\n}\n.tw-pb-1 {\n padding-bottom: 0.25rem;\n}\n.tw-pb-2 {\n padding-bottom: 0.5rem;\n}\n.tw-pb-4 {\n padding-bottom: 1rem;\n}\n.tw-pb-6 {\n padding-bottom: 1.5rem;\n}\n.tw-pl-2 {\n padding-left: 0.5rem;\n}\n.tw-pr-1 {\n padding-right: 0.25rem;\n}\n.tw-pr-12 {\n padding-right: 3rem;\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-2 {\n padding-top: 0.5rem;\n}\n.tw-pt-4 {\n padding-top: 1rem;\n}\n.tw-pt-6 {\n padding-top: 1.5rem;\n}\n.tw-text-center {\n text-align: center;\n}\n.tw-text-right {\n text-align: right;\n}\n.tw-align-middle {\n vertical-align: middle;\n}\n.tw-text-2xl {\n font-size: 1.5rem;\n line-height: 2rem;\n}\n.tw-text-3xl {\n font-size: 1.875rem;\n line-height: 2.25rem;\n}\n.tw-text-6xl {\n font-size: 3.75rem;\n line-height: 1;\n}\n.tw-text-base {\n font-size: 1rem;\n line-height: 1.5rem;\n}\n.tw-text-lg {\n font-size: 1.125rem;\n line-height: 1.75rem;\n}\n.tw-text-map {\n font-size: 13px;\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-text-xs {\n font-size: 0.75rem;\n line-height: 1rem;\n}\n.tw-font-bold {\n font-weight: 700;\n}\n.tw-font-medium {\n font-weight: 500;\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-italic {\n font-style: italic;\n}\n.tw-leading-3 {\n line-height: .75rem;\n}\n.tw-leading-5 {\n line-height: 1.25rem;\n}\n.tw-leading-map {\n line-height: 1.4em;\n}\n.\\!tw-text-base-content {\n --tw-text-opacity: 1 !important;\n color: var(--fallback-bc,oklch(var(--bc)/var(--tw-text-opacity, 1))) !important;\n}\n.\\!tw-text-error {\n --tw-text-opacity: 1 !important;\n color: var(--fallback-er,oklch(var(--er)/var(--tw-text-opacity, 1))) !important;\n}\n.tw-text-base-content {\n --tw-text-opacity: 1;\n color: var(--fallback-bc,oklch(var(--bc)/var(--tw-text-opacity, 1)));\n}\n.tw-text-current {\n color: currentColor;\n}\n.tw-text-error {\n --tw-text-opacity: 1;\n color: var(--fallback-er,oklch(var(--er)/var(--tw-text-opacity, 1)));\n}\n.tw-text-gray-400 {\n --tw-text-opacity: 1;\n color: rgb(156 163 175 / var(--tw-text-opacity, 1));\n}\n.tw-text-gray-500 {\n --tw-text-opacity: 1;\n color: rgb(107 114 128 / var(--tw-text-opacity, 1));\n}\n.tw-text-gray-600 {\n --tw-text-opacity: 1;\n color: rgb(75 85 99 / var(--tw-text-opacity, 1));\n}\n.tw-text-green-500 {\n --tw-text-opacity: 1;\n color: rgb(34 197 94 / var(--tw-text-opacity, 1));\n}\n.tw-text-primary {\n --tw-text-opacity: 1;\n color: var(--fallback-p,oklch(var(--p)/var(--tw-text-opacity, 1)));\n}\n.tw-text-white {\n --tw-text-opacity: 1;\n color: rgb(255 255 255 / var(--tw-text-opacity, 1));\n}\n.tw-text-zinc-500 {\n --tw-text-opacity: 1;\n color: rgb(113 113 122 / var(--tw-text-opacity, 1));\n}\n.tw-underline {\n text-decoration-line: underline;\n}\n.tw-opacity-0 {\n opacity: 0;\n}\n.tw-opacity-100 {\n opacity: 1;\n}\n.tw-opacity-50 {\n opacity: 0.5;\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-lg {\n --tw-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);\n --tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -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-md {\n --tw-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);\n --tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px 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-sm {\n --tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05);\n --tw-shadow-colored: 0 1px 2px 0 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-backdrop-brightness-75 {\n --tw-backdrop-brightness: brightness(.75);\n -webkit-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);\n backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);\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-transition-none {\n transition-property: none;\n}\n.tw-transition-opacity {\n transition-property: opacity;\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-300 {\n transition-duration: 300ms;\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.\\[--tab-border-color\\:var\\(--fallback-bc\\2c oklch\\(var\\(--bc\\)\\/0\\.2\\)\\)\\] {\n --tab-border-color: var(--fallback-bc,oklch(var(--bc)/0.2));\n}\n.\\!\\[clip\\:rect\\(0\\2c 0\\2c 0\\2c 0\\)\\] {\n clip: rect(0,0,0,0) !important;\n}\n.\\[clip\\:rect\\(0\\2c 0\\2c 0\\2c 0\\)\\] {\n clip: rect(0,0,0,0);\n}\n.\\[direction\\:ltr\\] {\n direction: ltr;\n}\n.\\[overflow-anchor\\:none\\] {\n overflow-anchor: none;\n}\n.\\[transition\\:background-color_\\.2s_linear\\2c _height_\\.2s_ease-in-out\\] {\n transition: background-color .2s linear, height .2s ease-in-out;\n}\n.\\[transition\\:background-color_\\.2s_linear\\2c _width_\\.2s_ease-in-out\\2c _opacity\\] {\n transition: background-color .2s linear, width .2s ease-in-out, opacity;\n}\n.\\[transition\\:background-color_250ms_cubic-bezier\\(0\\.4\\2c 0\\2c 0\\.2\\2c 1\\)_0ms\\2c box-shadow_250ms_cubic-bezier\\(0\\.4\\2c 0\\2c 0\\.2\\2c 1\\)_0ms\\2c border_250ms_cubic-bezier\\(0\\.4\\2c 0\\2c 0\\.2\\2c 1\\)_0ms\\] {\n transition: background-color 250ms cubic-bezier(0.4,0,0.2,1) 0ms,box-shadow 250ms cubic-bezier(0.4,0,0.2,1) 0ms,border 250ms cubic-bezier(0.4,0,0.2,1) 0ms;\n}\n\n.fade {\n -webkit-mask-image: linear-gradient(180deg, transparent, #000 1%, #000 99%, transparent);\n mask-image: linear-gradient(180deg, transparent, #000 1%, #000 99%, transparent);\n}\n\n.tw-modal {\n z-index: 1200 !important;\n}\n\n.tw-menu li a {\n border-radius: 10px;\n}\n\n.tw-modal {\n z-index: 1200 !important;\n max-height: 100dvh;\n}\n\n.tw-modal-box {\n max-height: calc(100dvh - 2em);\n}\n\n.Toastify__toast {\n border-radius: 1rem;\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 margin-left: 1rem;\n margin-right: 1rem;\n margin-bottom: 1rem;\n background-color: var(--fallback-b1,oklch(var(--b1)/1));\n color: var(--fallback-bc,oklch(var(--bc)/1));\n}\n\n.Toastify__toast-container {\n z-index: 2001 !important;\n}\n\n.Toastify__toast-container--top-right {\n top: 4.75em !important;\n}\n\n:root {\n\n --toastify-color-info: var(--fallback-in,oklch(var(--in)/1));\n --toastify-color-success: var(--fallback-su,oklch(var(--su)/1));\n --toastify-color-warning: var(--fallback-wa,oklch(var(--wa)/1));\n --toastify-color-error: var(--fallback-er,oklch(var(--er)/1));\n\n}\n\n.placeholder-center::-moz-placeholder {\n text-align: center;\n}\n\n.placeholder-center::placeholder {\n text-align: center;\n}\n\n.custom-file-upload {\n cursor: pointer;\n}\n\ninput[type=\"file\"] {\n display: none;\n}\n\n.custom-file-upload:hover .button {\n opacity: 0.8;\n}\n\n.custom-file-upload .button {\n transition: .5s ease;\n opacity: 0;\n position: absolute;\n transform: translate(8px, 8px);\n\n}\n\n.tw-tab-content .container {\n height: 100%;\n}\n\n.masonry {\n -moz-column-count: 1;\n column-count: 1;\n -moz-column-gap: 1.5rem;\n column-gap: 1.5rem;\n}\n.masonry-item {\n -moz-column-break-inside: avoid;\n break-inside: avoid;\n margin-bottom: 1.5rem;\n}\n@media (min-width: 640px) {\n .masonry {\n -moz-column-count: 2;\n column-count: 2;\n }\n}\n@media (min-width: 1024px) {\n .masonry {\n -moz-column-count: 3;\n column-count: 3;\n }\n}\n@media (min-width: 1536px) {\n .masonry {\n -moz-column-count: 4;\n column-count: 4;\n }\n}\n@media (min-width: 640px) {\n\n .sm\\:tw-table-sm :not(thead):not(tfoot) tr {\n font-size: 0.875rem;\n line-height: 1.25rem;\n }\n\n .sm\\:tw-table-sm :where(th, td) {\n padding-left: 0.75rem;\n padding-right: 0.75rem;\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n }\n}\n@media (min-width: 768px) {\n\n .md\\:tw-table-md :not(thead):not(tfoot) tr {\n font-size: 0.875rem;\n line-height: 1.25rem;\n }\n\n .md\\:tw-table-md :where(th, td) {\n padding-left: 1rem;\n padding-right: 1rem;\n padding-top: 0.75rem;\n padding-bottom: 0.75rem;\n }\n}\n.hover\\:tw-cursor-pointer:hover {\n cursor: pointer;\n}\n.hover\\:tw-bg-base-200:hover {\n --tw-bg-opacity: 1;\n background-color: var(--fallback-b2,oklch(var(--b2)/var(--tw-bg-opacity, 1)));\n}\n.hover\\:tw-bg-slate-300:hover {\n --tw-bg-opacity: 1;\n background-color: rgb(203 213 225 / var(--tw-bg-opacity, 1));\n}\n.hover\\:tw-bg-transparent:hover {\n background-color: transparent;\n}\n.hover\\:tw-font-bold:hover {\n font-weight: 700;\n}\n.hover\\:tw-text-primary:hover {\n --tw-text-opacity: 1;\n color: var(--fallback-p,oklch(var(--p)/var(--tw-text-opacity, 1)));\n}\n.hover\\:tw-underline:hover {\n text-decoration-line: underline;\n}\n.focus\\:tw-border-indigo-500:focus {\n --tw-border-opacity: 1;\n border-color: rgb(99 102 241 / var(--tw-border-opacity, 1));\n}\n.focus\\:tw-outline-none:focus {\n outline: 2px solid transparent;\n outline-offset: 2px;\n}\n.focus\\:tw-ring-indigo-500:focus {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(99 102 241 / var(--tw-ring-opacity, 1));\n}\n.data-\\[te-sidenav-slim\\=\\'true\\'\\]\\:tw-hidden[data-te-sidenav-slim='true'] {\n display: none;\n}\n.data-\\[te-sidenav-slim-collapsed\\=\\'true\\'\\]\\:tw-w-\\[56px\\][data-te-sidenav-slim-collapsed='true'] {\n width: 56px;\n}\n.data-\\[te-sidenav-slim\\=\\'true\\'\\]\\:tw-w-\\[56px\\][data-te-sidenav-slim='true'] {\n width: 56px;\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.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@media (min-width: 640px) {\n\n .sm\\:\\!tw-left-auto {\n left: auto !important;\n }\n\n .sm\\:tw-grid-cols-2 {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n\n .sm\\:tw-text-sm {\n font-size: 0.875rem;\n line-height: 1.25rem;\n }\n}\n@media (min-width: 768px) {\n\n .md\\:tw-mb-0 {\n margin-bottom: 0px;\n }\n\n .md\\:tw-flex {\n display: flex;\n }\n\n .md\\:tw-hidden {\n display: none;\n }\n\n .md\\:tw-w-1\\/2 {\n width: 50%;\n }\n\n .md\\:tw-w-\\[calc\\(50\\%-32px\\)\\] {\n width: calc(50% - 32px);\n }\n\n .md\\:tw-columns-2 {\n -moz-columns: 2;\n columns: 2;\n }\n\n .md\\:tw-grid-cols-1 {\n grid-template-columns: repeat(1, minmax(0, 1fr));\n }\n\n .md\\:tw-grid-cols-2 {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n\n .md\\:tw-space-x-4 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-x-reverse: 0;\n margin-right: calc(1rem * var(--tw-space-x-reverse));\n margin-left: calc(1rem * calc(1 - var(--tw-space-x-reverse)));\n }\n\n .md\\:tw-text-2xl {\n font-size: 1.5rem;\n line-height: 2rem;\n }\n}\n@media (min-width: 1024px) {\n\n .lg\\:tw-columns-3 {\n -moz-columns: 3;\n columns: 3;\n }\n\n .lg\\:tw-grid-cols-1 {\n grid-template-columns: repeat(1, minmax(0, 1fr));\n }\n}\n@media (min-width: 1280px) {\n\n .xl\\:tw-max-w-6xl {\n max-width: 72rem;\n }\n\n .xl\\:tw-grid-cols-1 {\n grid-template-columns: repeat(1, minmax(0, 1fr));\n }\n\n .xl\\:tw-text-3xl {\n font-size: 1.875rem;\n line-height: 2.25rem;\n }\n}\n@media (min-width: 1536px) {\n\n .\\32xl\\:tw-columns-4 {\n -moz-columns: 4;\n columns: 4;\n }\n\n .\\32xl\\:tw-grid-cols-2 {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n}\n.rtl\\:\\[direction\\:rtl\\]:where([dir=\"rtl\"], [dir=\"rtl\"] *) {\n direction: rtl;\n}\n@media (prefers-color-scheme: dark) {\n\n .dark\\:tw-bg-zinc-800 {\n --tw-bg-opacity: 1;\n background-color: rgb(39 39 42 / var(--tw-bg-opacity, 1));\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.\\[\\&\\[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}";
58
77
  styleInject(css_248z$4);
59
78
 
60
- const QuestContext = react.createContext({
79
+ const QuestContext = React.createContext({
61
80
  open: false,
62
81
  setQuestsOpen: () => { },
63
82
  });
64
83
  function useQuestsManager(initialOpen) {
65
- const [open, setOpen] = react.useState(initialOpen);
66
- const setQuestsOpen = react.useCallback((questOpen) => {
84
+ const [open, setOpen] = React.useState(initialOpen);
85
+ const setQuestsOpen = React.useCallback((questOpen) => {
67
86
  setOpen(questOpen);
68
87
  }, []);
69
88
  return { open, setQuestsOpen };
70
89
  }
71
- const QuestsProvider = ({ initialOpen, children }) => (jsxRuntime.jsx(QuestContext.Provider, { value: useQuestsManager(initialOpen), children: children }));
90
+ const QuestsProvider = ({ initialOpen, children, }) => (jsxRuntime.jsx(QuestContext.Provider, { value: useQuestsManager(initialOpen), children: children }));
72
91
  const useQuestsOpen = () => {
73
- const { open } = react.useContext(QuestContext);
92
+ const { open } = React.useContext(QuestContext);
74
93
  return open;
75
94
  };
76
95
  const useSetQuestOpen = () => {
77
- const { setQuestsOpen } = react.useContext(QuestContext);
96
+ const { setQuestsOpen } = React.useContext(QuestContext);
78
97
  return setQuestsOpen;
79
98
  };
80
99
 
81
- const ClusterRefContext = react.createContext({
100
+ const ClusterRefContext = React.createContext({
82
101
  clusterRef: {},
83
102
  setClusterRef: () => { },
84
103
  });
85
104
  function useClusterRefManager() {
86
- const [clusterRef, setClusterRef] = react.useState({});
105
+ const [clusterRef, setClusterRef] = React.useState({});
87
106
  return { clusterRef, setClusterRef };
88
107
  }
89
108
  const ClusterRefProvider = ({ children }) => (jsxRuntime.jsx(ClusterRefContext.Provider, { value: useClusterRefManager(), children: children }));
90
109
  const useClusterRef = () => {
91
- const { clusterRef } = react.useContext(ClusterRefContext);
110
+ const { clusterRef } = React.useContext(ClusterRefContext);
92
111
  return clusterRef;
93
112
  };
94
113
  const useSetClusterRef = () => {
95
- const { setClusterRef } = react.useContext(ClusterRefContext);
114
+ const { setClusterRef } = React.useContext(ClusterRefContext);
96
115
  return setClusterRef;
97
116
  };
98
117
 
99
- const LayerContext = react.createContext({
118
+ const LayerContext = React.createContext({
100
119
  layers: [],
120
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
101
121
  addLayer: () => { },
102
122
  });
103
123
  function useLayerManager(initialLayers) {
104
- const [layers, dispatch] = react.useReducer((state, action) => {
124
+ const [layers, dispatch] = React.useReducer((state, action) => {
105
125
  switch (action.type) {
106
126
  case 'ADD LAYER':
107
127
  // eslint-disable-next-line no-case-declarations
@@ -115,7 +135,7 @@ function useLayerManager(initialLayers) {
115
135
  throw new Error();
116
136
  }
117
137
  }, initialLayers);
118
- const addLayer = react.useCallback((layer) => {
138
+ const addLayer = React.useCallback((layer) => {
119
139
  dispatch({
120
140
  type: 'ADD LAYER',
121
141
  layer,
@@ -125,11 +145,11 @@ function useLayerManager(initialLayers) {
125
145
  }
126
146
  const LayersProvider = ({ initialLayers, children }) => (jsxRuntime.jsx(LayerContext.Provider, { value: useLayerManager(initialLayers), children: children }));
127
147
  const useLayers = () => {
128
- const { layers } = react.useContext(LayerContext);
148
+ const { layers } = React.useContext(LayerContext);
129
149
  return layers;
130
150
  };
131
151
  const useAddLayer = () => {
132
- const { addLayer } = react.useContext(LayerContext);
152
+ const { addLayer } = React.useContext(LayerContext);
133
153
  return addLayer;
134
154
  };
135
155
 
@@ -141,8 +161,8 @@ function getWindowDimensions() {
141
161
  };
142
162
  }
143
163
  function useWindowDimensions() {
144
- const [windowDimensions, setWindowDimensions] = react.useState(getWindowDimensions());
145
- react.useEffect(() => {
164
+ const [windowDimensions, setWindowDimensions] = React.useState(getWindowDimensions());
165
+ React.useEffect(() => {
146
166
  function handleResize() {
147
167
  setWindowDimensions(getWindowDimensions());
148
168
  }
@@ -152,7 +172,7 @@ function useWindowDimensions() {
152
172
  return windowDimensions;
153
173
  }
154
174
 
155
- const FilterContext = react.createContext({
175
+ const FilterContext = React.createContext({
156
176
  filterTags: [],
157
177
  searchPhrase: '',
158
178
  visibleLayers: [],
@@ -170,7 +190,7 @@ const FilterContext = react.createContext({
170
190
  isGroupTypeVisible: () => true,
171
191
  });
172
192
  function useFilterManager(initialTags) {
173
- const [filterTags, dispatchTags] = react.useReducer((state, action) => {
193
+ const [filterTags, dispatchTags] = React.useReducer((state, action) => {
174
194
  switch (action.type) {
175
195
  case 'ADD_TAG':
176
196
  const exist = state.find((tag) => tag.id === action.tag.id);
@@ -190,7 +210,7 @@ function useFilterManager(initialTags) {
190
210
  const initialLayers = useLayers();
191
211
  const navigate = reactRouterDom.useNavigate();
192
212
  const windowDimensions = useWindowDimensions();
193
- const [visibleLayers, dispatchLayers] = react.useReducer((state, action) => {
213
+ const [visibleLayers, dispatchLayers] = React.useReducer((state, action) => {
194
214
  switch (action.type) {
195
215
  case 'ADD_LAYER':
196
216
  const exist1 = state.find((layer) => layer.name === action.layer.name);
@@ -211,7 +231,7 @@ function useFilterManager(initialTags) {
211
231
  throw new Error();
212
232
  }
213
233
  }, initialLayers);
214
- const [visibleGroupTypes, dispatchGroupTypes] = react.useReducer((state, action) => {
234
+ const [visibleGroupTypes, dispatchGroupTypes] = React.useReducer((state, action) => {
215
235
  switch (action.type) {
216
236
  case 'ADD_GROUP_TYPE':
217
237
  const exist1 = state.find((groupType) => groupType === action.groupType);
@@ -232,8 +252,8 @@ function useFilterManager(initialTags) {
232
252
  throw new Error();
233
253
  }
234
254
  }, []);
235
- const [searchPhrase, searchPhraseSet] = react.useState('');
236
- const addFilterTag = react.useCallback((tag) => {
255
+ const [searchPhrase, searchPhraseSet] = React.useState('');
256
+ const addFilterTag = React.useCallback((tag) => {
237
257
  const params = new URLSearchParams(location.search);
238
258
  const urlTags = params.get('tags');
239
259
  const decodedTags = urlTags ? decodeURIComponent(urlTags) : '';
@@ -250,7 +270,7 @@ function useFilterManager(initialTags) {
250
270
  });
251
271
  // eslint-disable-next-line react-hooks/exhaustive-deps
252
272
  }, []);
253
- const removeFilterTag = react.useCallback((name) => {
273
+ const removeFilterTag = React.useCallback((name) => {
254
274
  const params = new URLSearchParams(window.location.search);
255
275
  const urlTags = params.get('tags');
256
276
  let newUrlTags = '';
@@ -277,7 +297,7 @@ function useFilterManager(initialTags) {
277
297
  });
278
298
  // eslint-disable-next-line react-hooks/exhaustive-deps
279
299
  }, []);
280
- const resetFilterTags = react.useCallback(() => {
300
+ const resetFilterTags = React.useCallback(() => {
281
301
  dispatchTags({
282
302
  type: 'RESET_TAGS',
283
303
  });
@@ -294,12 +314,12 @@ function useFilterManager(initialTags) {
294
314
  layer,
295
315
  });
296
316
  };
297
- const resetVisibleLayers = react.useCallback(() => {
317
+ const resetVisibleLayers = React.useCallback(() => {
298
318
  dispatchLayers({
299
319
  type: 'RESET_LAYERS',
300
320
  });
301
321
  }, []);
302
- const isLayerVisible = react.useCallback((layer) => {
322
+ const isLayerVisible = React.useCallback((layer) => {
303
323
  return visibleLayers.some((l) => l.name === layer.name);
304
324
  }, [visibleLayers]);
305
325
  const addVisibleGroupType = (groupType) => {
@@ -314,10 +334,10 @@ function useFilterManager(initialTags) {
314
334
  groupType,
315
335
  });
316
336
  };
317
- const isGroupTypeVisible = react.useCallback((groupType) => {
337
+ const isGroupTypeVisible = React.useCallback((groupType) => {
318
338
  return visibleGroupTypes.some((gt) => gt === groupType);
319
339
  }, [visibleGroupTypes]);
320
- const setSearchPhrase = react.useCallback((phrase) => {
340
+ const setSearchPhrase = React.useCallback((phrase) => {
321
341
  searchPhraseSet(phrase);
322
342
  }, []);
323
343
  return {
@@ -340,51 +360,51 @@ function useFilterManager(initialTags) {
340
360
  }
341
361
  const FilterProvider = ({ initialTags, children }) => (jsxRuntime.jsx(FilterContext.Provider, { value: useFilterManager(initialTags), children: children }));
342
362
  const useFilterTags = () => {
343
- const { filterTags } = react.useContext(FilterContext);
363
+ const { filterTags } = React.useContext(FilterContext);
344
364
  return filterTags;
345
365
  };
346
366
  const useAddFilterTag = () => {
347
- const { addFilterTag } = react.useContext(FilterContext);
367
+ const { addFilterTag } = React.useContext(FilterContext);
348
368
  return addFilterTag;
349
369
  };
350
370
  const useRemoveFilterTag = () => {
351
- const { removeFilterTag } = react.useContext(FilterContext);
371
+ const { removeFilterTag } = React.useContext(FilterContext);
352
372
  return removeFilterTag;
353
373
  };
354
374
  const useResetFilterTags = () => {
355
- const { resetFilterTags } = react.useContext(FilterContext);
375
+ const { resetFilterTags } = React.useContext(FilterContext);
356
376
  return resetFilterTags;
357
377
  };
358
378
  const useAddVisibleLayer = () => {
359
- const { addVisibleLayer } = react.useContext(FilterContext);
379
+ const { addVisibleLayer } = React.useContext(FilterContext);
360
380
  return addVisibleLayer;
361
381
  };
362
382
  const useToggleVisibleLayer = () => {
363
- const { toggleVisibleLayer } = react.useContext(FilterContext);
383
+ const { toggleVisibleLayer } = React.useContext(FilterContext);
364
384
  return toggleVisibleLayer;
365
385
  };
366
386
  const useIsLayerVisible = () => {
367
- const { isLayerVisible } = react.useContext(FilterContext);
387
+ const { isLayerVisible } = React.useContext(FilterContext);
368
388
  return isLayerVisible;
369
389
  };
370
390
  const useAddVisibleGroupType = () => {
371
- const { addVisibleGroupType } = react.useContext(FilterContext);
391
+ const { addVisibleGroupType } = React.useContext(FilterContext);
372
392
  return addVisibleGroupType;
373
393
  };
374
394
  const useToggleVisibleGroupType = () => {
375
- const { toggleVisibleGroupType } = react.useContext(FilterContext);
395
+ const { toggleVisibleGroupType } = React.useContext(FilterContext);
376
396
  return toggleVisibleGroupType;
377
397
  };
378
398
  const useIsGroupTypeVisible = () => {
379
- const { isGroupTypeVisible } = react.useContext(FilterContext);
399
+ const { isGroupTypeVisible } = React.useContext(FilterContext);
380
400
  return isGroupTypeVisible;
381
401
  };
382
402
  const useVisibleGroupType = () => {
383
- const { visibleGroupTypes } = react.useContext(FilterContext);
403
+ const { visibleGroupTypes } = React.useContext(FilterContext);
384
404
  return visibleGroupTypes;
385
405
  };
386
406
 
387
- const ItemContext = react.createContext({
407
+ const ItemContext = React.createContext({
388
408
  items: [],
389
409
  addItem: () => { },
390
410
  updateItem: () => { },
@@ -396,8 +416,8 @@ const ItemContext = react.createContext({
396
416
  });
397
417
  function useItemsManager(initialItems) {
398
418
  const addLayer = useAddLayer();
399
- const [allItemsLoaded, setallItemsLoaded] = react.useState(false);
400
- const [items, dispatch] = react.useReducer((state, action) => {
419
+ const [allItemsLoaded, setallItemsLoaded] = React.useState(false);
420
+ const [items, dispatch] = React.useReducer((state, action) => {
401
421
  switch (action.type) {
402
422
  case 'ADD':
403
423
  // eslint-disable-next-line no-case-declarations
@@ -422,7 +442,7 @@ function useItemsManager(initialItems) {
422
442
  throw new Error();
423
443
  }
424
444
  }, initialItems);
425
- const setItemsApi = react.useCallback(async (layer) => {
445
+ const setItemsApi = React.useCallback(async (layer) => {
426
446
  addLayer(layer);
427
447
  const result = await reactToastify.toast.promise(layer.api.getItems(), {
428
448
  pending: `loading ${layer.name} ...`,
@@ -434,14 +454,13 @@ function useItemsManager(initialItems) {
434
454
  },
435
455
  });
436
456
  result.map((item) => {
437
- // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
438
457
  dispatch({ type: 'ADD', item: { ...item, layer } });
439
458
  return null;
440
459
  });
441
460
  setallItemsLoaded(true);
442
461
  // eslint-disable-next-line react-hooks/exhaustive-deps
443
462
  }, []);
444
- const setItemsData = react.useCallback((layer) => {
463
+ const setItemsData = React.useCallback((layer) => {
445
464
  addLayer(layer);
446
465
  layer.data?.map((item) => {
447
466
  dispatch({ type: 'ADD', item: { ...item, layer } });
@@ -450,25 +469,25 @@ function useItemsManager(initialItems) {
450
469
  setallItemsLoaded(true);
451
470
  // eslint-disable-next-line react-hooks/exhaustive-deps
452
471
  }, []);
453
- const addItem = react.useCallback(async (item) => {
472
+ const addItem = React.useCallback(async (item) => {
454
473
  dispatch({
455
474
  type: 'ADD',
456
475
  item,
457
476
  });
458
477
  }, []);
459
- const updateItem = react.useCallback(async (item) => {
478
+ const updateItem = React.useCallback(async (item) => {
460
479
  dispatch({
461
480
  type: 'UPDATE',
462
481
  item,
463
482
  });
464
483
  }, []);
465
- const removeItem = react.useCallback((item) => {
484
+ const removeItem = React.useCallback((item) => {
466
485
  dispatch({
467
486
  type: 'REMOVE',
468
487
  item,
469
488
  });
470
489
  }, []);
471
- const resetItems = react.useCallback((layer) => {
490
+ const resetItems = React.useCallback((layer) => {
472
491
  dispatch({
473
492
  type: 'RESET',
474
493
  layer,
@@ -487,41 +506,41 @@ function useItemsManager(initialItems) {
487
506
  }
488
507
  const ItemsProvider = ({ initialItems, children }) => (jsxRuntime.jsx(ItemContext.Provider, { value: useItemsManager(initialItems), children: children }));
489
508
  const useItems = () => {
490
- const { items } = react.useContext(ItemContext);
509
+ const { items } = React.useContext(ItemContext);
491
510
  return items;
492
511
  };
493
512
  const useAddItem = () => {
494
- const { addItem } = react.useContext(ItemContext);
513
+ const { addItem } = React.useContext(ItemContext);
495
514
  return addItem;
496
515
  };
497
516
  const useUpdateItem = () => {
498
- const { updateItem } = react.useContext(ItemContext);
517
+ const { updateItem } = React.useContext(ItemContext);
499
518
  return updateItem;
500
519
  };
501
520
  const useRemoveItem = () => {
502
- const { removeItem } = react.useContext(ItemContext);
521
+ const { removeItem } = React.useContext(ItemContext);
503
522
  return removeItem;
504
523
  };
505
524
  const useSetItemsApi = () => {
506
- const { setItemsApi } = react.useContext(ItemContext);
525
+ const { setItemsApi } = React.useContext(ItemContext);
507
526
  return setItemsApi;
508
527
  };
509
528
  const useSetItemsData = () => {
510
- const { setItemsData } = react.useContext(ItemContext);
529
+ const { setItemsData } = React.useContext(ItemContext);
511
530
  return setItemsData;
512
531
  };
513
532
  const useAllItemsLoaded = () => {
514
- const { allItemsLoaded } = react.useContext(ItemContext);
533
+ const { allItemsLoaded } = React.useContext(ItemContext);
515
534
  return allItemsLoaded;
516
535
  };
517
536
 
518
- const LeafletRefsContext = react.createContext({
537
+ const LeafletRefsContext = React.createContext({
519
538
  leafletRefs: {},
520
539
  addMarker: () => { },
521
540
  addPopup: () => { },
522
541
  });
523
542
  function useLeafletRefsManager(initialLeafletRefs) {
524
- const [leafletRefs, dispatch] = react.useReducer((state, action) => {
543
+ const [leafletRefs, dispatch] = React.useReducer((state, action) => {
525
544
  switch (action.type) {
526
545
  case 'ADD_MARKER':
527
546
  return {
@@ -541,14 +560,14 @@ function useLeafletRefsManager(initialLeafletRefs) {
541
560
  throw new Error();
542
561
  }
543
562
  }, initialLeafletRefs);
544
- const addMarker = react.useCallback((item, marker) => {
563
+ const addMarker = React.useCallback((item, marker) => {
545
564
  dispatch({
546
565
  type: 'ADD_MARKER',
547
566
  item,
548
567
  marker,
549
568
  });
550
569
  }, []);
551
- const addPopup = react.useCallback((item, popup) => {
570
+ const addPopup = React.useCallback((item, popup) => {
552
571
  dispatch({
553
572
  type: 'ADD_POPUP',
554
573
  item,
@@ -559,19 +578,19 @@ function useLeafletRefsManager(initialLeafletRefs) {
559
578
  }
560
579
  const LeafletRefsProvider = ({ initialLeafletRefs, children }) => (jsxRuntime.jsx(LeafletRefsContext.Provider, { value: useLeafletRefsManager(initialLeafletRefs), children: children }));
561
580
  const useLeafletRefs = () => {
562
- const { leafletRefs } = react.useContext(LeafletRefsContext);
581
+ const { leafletRefs } = React.useContext(LeafletRefsContext);
563
582
  return leafletRefs;
564
583
  };
565
584
  const useAddMarker = () => {
566
- const { addMarker } = react.useContext(LeafletRefsContext);
585
+ const { addMarker } = React.useContext(LeafletRefsContext);
567
586
  return addMarker;
568
587
  };
569
588
  const useAddPopup = () => {
570
- const { addPopup } = react.useContext(LeafletRefsContext);
589
+ const { addPopup } = React.useContext(LeafletRefsContext);
571
590
  return addPopup;
572
591
  };
573
592
 
574
- const AuthContext = react.createContext({
593
+ const AuthContext = React.createContext({
575
594
  isAuthenticated: false,
576
595
  user: null,
577
596
  login: () => Promise.reject(Error('Unimplemented')),
@@ -587,12 +606,13 @@ const AuthContext = react.createContext({
587
606
  * @category Auth
588
607
  */
589
608
  const AuthProvider = ({ userApi, children }) => {
590
- const [user, setUser] = react.useState(null);
591
- const [token, setToken] = react.useState(null);
592
- const [loading, setLoading] = react.useState(false);
609
+ const [user, setUser] = React.useState(null);
610
+ const [token, setToken] = React.useState();
611
+ const [loading, setLoading] = React.useState(false);
593
612
  const isAuthenticated = !!user;
594
- react.useEffect(() => {
613
+ React.useEffect(() => {
595
614
  setLoading(true);
615
+ // eslint-disable-next-line @typescript-eslint/no-floating-promises
596
616
  loadUser();
597
617
  setLoading(false);
598
618
  // eslint-disable-next-line react-hooks/exhaustive-deps
@@ -619,8 +639,8 @@ const AuthProvider = ({ userApi, children }) => {
619
639
  const login = async (credentials) => {
620
640
  setLoading(true);
621
641
  try {
622
- const res = await userApi.login(credentials.email, credentials.password);
623
- setToken(res?.access_token);
642
+ const user = await userApi.login(credentials.email, credentials.password);
643
+ setToken(user?.access_token);
624
644
  return await loadUser();
625
645
  }
626
646
  catch (error) {
@@ -651,13 +671,12 @@ const AuthProvider = ({ userApi, children }) => {
651
671
  };
652
672
  const updateUser = async (user) => {
653
673
  setLoading(true);
654
- const { id, ...userRest } = user;
655
674
  try {
656
- const res = await userApi.updateUser(userRest);
657
- setUser(res);
658
- loadUser();
675
+ const updatedUser = await userApi.updateUser(user);
676
+ setUser(updatedUser);
677
+ await loadUser();
659
678
  setLoading(false);
660
- return res;
679
+ return updatedUser;
661
680
  }
662
681
  catch (error) {
663
682
  setLoading(false);
@@ -699,9 +718,9 @@ const AuthProvider = ({ userApi, children }) => {
699
718
  passwordReset,
700
719
  }, children: children }));
701
720
  };
702
- const useAuth = () => react.useContext(AuthContext);
721
+ const useAuth = () => React.useContext(AuthContext);
703
722
 
704
- const PermissionContext = react.createContext({
723
+ const PermissionContext = React.createContext({
705
724
  permissions: [],
706
725
  setPermissionApi: () => { },
707
726
  setPermissionData: () => { },
@@ -709,7 +728,7 @@ const PermissionContext = react.createContext({
709
728
  hasUserPermission: () => true,
710
729
  });
711
730
  function usePermissionsManager(initialPermissions) {
712
- const [permissions, dispatch] = react.useReducer((state, action) => {
731
+ const [permissions, dispatch] = React.useReducer((state, action) => {
713
732
  switch (action.type) {
714
733
  case 'ADD':
715
734
  // eslint-disable-next-line no-case-declarations
@@ -725,22 +744,22 @@ function usePermissionsManager(initialPermissions) {
725
744
  throw new Error();
726
745
  }
727
746
  }, initialPermissions);
728
- const [adminRole, setAdminRole] = react.useState(null);
747
+ const [adminRole, setAdminRole] = React.useState(null);
729
748
  const { user } = useAuth();
730
- const setPermissionApi = react.useCallback(async (api) => {
749
+ const setPermissionApi = React.useCallback(async (api) => {
731
750
  const result = await api.getItems();
732
751
  result.map((permission) => {
733
752
  dispatch({ type: 'ADD', permission });
734
753
  return null;
735
754
  });
736
755
  }, []);
737
- const setPermissionData = react.useCallback((data) => {
756
+ const setPermissionData = React.useCallback((data) => {
738
757
  data.map((permission) => {
739
758
  dispatch({ type: 'ADD', permission });
740
759
  return null;
741
760
  });
742
761
  }, []);
743
- const hasUserPermission = react.useCallback((collectionName, action, item, layer) => {
762
+ const hasUserPermission = React.useCallback((collectionName, action, item, layer) => {
744
763
  const evaluateCondition = (condition) => {
745
764
  if (condition.user_created?._eq === '$CURRENT_USER') {
746
765
  return item?.user_created?.id === user?.id;
@@ -751,7 +770,7 @@ function usePermissionsManager(initialPermissions) {
751
770
  return false;
752
771
  };
753
772
  const evaluatePermissions = (permissionConditions) => {
754
- if (!permissionConditions || !permissionConditions._and) {
773
+ if (!permissionConditions?._and) {
755
774
  return true;
756
775
  }
757
776
  return permissionConditions._and.every((andCondition) => andCondition._or
@@ -763,12 +782,12 @@ function usePermissionsManager(initialPermissions) {
763
782
  // Bedingung für leere Berechtigungen nur, wenn NICHT item und create
764
783
  if (permissions.length === 0)
765
784
  return true;
766
- else if (user && user.role.id === adminRole)
785
+ else if (user && user.role?.id === adminRole)
767
786
  return true;
768
787
  else {
769
788
  return permissions.some((p) => p.action === action &&
770
789
  p.collection === collectionName &&
771
- ((p.policy?.name === user?.role.name &&
790
+ ((p.policy?.name === user?.role?.name &&
772
791
  (!item || evaluatePermissions(p.permissions))) ||
773
792
  (p.policy?.name === '$t:public_label' &&
774
793
  (layer?.public_edit_items || item?.layer?.public_edit_items) &&
@@ -777,37 +796,37 @@ function usePermissionsManager(initialPermissions) {
777
796
  }, [permissions, user, adminRole]);
778
797
  return { permissions, setPermissionApi, setPermissionData, setAdminRole, hasUserPermission };
779
798
  }
780
- const PermissionsProvider = ({ initialPermissions, children }) => (jsxRuntime.jsx(PermissionContext.Provider, { value: usePermissionsManager(initialPermissions), children: children }));
799
+ const PermissionsProvider = ({ initialPermissions, children, }) => (jsxRuntime.jsx(PermissionContext.Provider, { value: usePermissionsManager(initialPermissions), children: children }));
781
800
  const useSetPermissionApi = () => {
782
- const { setPermissionApi } = react.useContext(PermissionContext);
801
+ const { setPermissionApi } = React.useContext(PermissionContext);
783
802
  return setPermissionApi;
784
803
  };
785
804
  const useSetPermissionData = () => {
786
- const { setPermissionData } = react.useContext(PermissionContext);
805
+ const { setPermissionData } = React.useContext(PermissionContext);
787
806
  return setPermissionData;
788
807
  };
789
808
  const useHasUserPermission = () => {
790
- const { hasUserPermission } = react.useContext(PermissionContext);
809
+ const { hasUserPermission } = React.useContext(PermissionContext);
791
810
  return hasUserPermission;
792
811
  };
793
812
  const useSetAdminRole = () => {
794
- const { setAdminRole } = react.useContext(PermissionContext);
813
+ const { setAdminRole } = React.useContext(PermissionContext);
795
814
  return setAdminRole;
796
815
  };
797
816
 
798
- const SelectPositionContext = react.createContext({
817
+ const SelectPositionContext = React.createContext({
799
818
  selectPosition: null,
800
819
  setSelectPosition: () => { },
801
820
  setMarkerClicked: () => { },
802
821
  setMapClicked: () => { },
803
822
  });
804
823
  function useSelectPositionManager() {
805
- const [selectPosition, setSelectPosition] = react.useState(null);
806
- const [markerClicked, setMarkerClicked] = react.useState();
807
- const [mapClicked, setMapClicked] = react.useState();
824
+ const [selectPosition, setSelectPosition] = React.useState(null);
825
+ const [markerClicked, setMarkerClicked] = React.useState();
826
+ const [mapClicked, setMapClicked] = React.useState();
808
827
  const updateItem = useUpdateItem();
809
828
  const hasUserPermission = useHasUserPermission();
810
- react.useEffect(() => {
829
+ React.useEffect(() => {
811
830
  if (selectPosition &&
812
831
  markerClicked &&
813
832
  'text' in selectPosition &&
@@ -816,7 +835,7 @@ function useSelectPositionManager() {
816
835
  }
817
836
  // eslint-disable-next-line react-hooks/exhaustive-deps
818
837
  }, [markerClicked]);
819
- react.useEffect(() => {
838
+ React.useEffect(() => {
820
839
  if (selectPosition != null) {
821
840
  if ('menuIcon' in selectPosition) {
822
841
  mapClicked &&
@@ -914,25 +933,25 @@ function useSelectPositionManager() {
914
933
  }
915
934
  const SelectPositionProvider = ({ children }) => (jsxRuntime.jsx(SelectPositionContext.Provider, { value: useSelectPositionManager(), children: children }));
916
935
  const useSelectPosition = () => {
917
- const { selectPosition } = react.useContext(SelectPositionContext);
936
+ const { selectPosition } = React.useContext(SelectPositionContext);
918
937
  return selectPosition;
919
938
  };
920
939
  const useSetSelectPosition = () => {
921
- const { setSelectPosition } = react.useContext(SelectPositionContext);
940
+ const { setSelectPosition } = React.useContext(SelectPositionContext);
922
941
  return setSelectPosition;
923
942
  };
924
943
  const useSetMarkerClicked = () => {
925
- const { setMarkerClicked } = react.useContext(SelectPositionContext);
944
+ const { setMarkerClicked } = React.useContext(SelectPositionContext);
926
945
  return setMarkerClicked;
927
946
  };
928
947
  const useSetMapClicked = () => {
929
- const { setMapClicked } = react.useContext(SelectPositionContext);
948
+ const { setMapClicked } = React.useContext(SelectPositionContext);
930
949
  return setMapClicked;
931
950
  };
932
951
 
933
952
  const hashTagRegex = /(#+[a-zA-Z0-9À-ÖØ-öø-ʸ_-]{1,})/g;
934
953
 
935
- const TagContext = react.createContext({
954
+ const TagContext = React.createContext({
936
955
  tags: [],
937
956
  addTag: () => { },
938
957
  setTagApi: () => { },
@@ -941,9 +960,9 @@ const TagContext = react.createContext({
941
960
  allTagsLoaded: false,
942
961
  });
943
962
  function useTagsManager(initialTags) {
944
- const [allTagsLoaded, setallTagsLoaded] = react.useState(false);
945
- const [tagCount, setTagCount] = react.useState(0);
946
- const [tags, dispatch] = react.useReducer((state, action) => {
963
+ const [allTagsLoaded, setallTagsLoaded] = React.useState(false);
964
+ const [tagCount, setTagCount] = React.useState(0);
965
+ const [tags, dispatch] = React.useReducer((state, action) => {
947
966
  switch (action.type) {
948
967
  case 'ADD':
949
968
  // eslint-disable-next-line no-case-declarations
@@ -960,8 +979,8 @@ function useTagsManager(initialTags) {
960
979
  throw new Error();
961
980
  }
962
981
  }, initialTags);
963
- const [api, setApi] = react.useState({});
964
- const setTagApi = react.useCallback(async (api) => {
982
+ const [api, setApi] = React.useState({});
983
+ const setTagApi = React.useCallback(async (api) => {
965
984
  setApi(api);
966
985
  const result = await api.getItems();
967
986
  setTagCount(result.length);
@@ -976,7 +995,7 @@ function useTagsManager(initialTags) {
976
995
  }
977
996
  // eslint-disable-next-line react-hooks/exhaustive-deps
978
997
  }, []);
979
- const setTagData = react.useCallback((data) => {
998
+ const setTagData = React.useCallback((data) => {
980
999
  data.map((tag) => {
981
1000
  // tag.name = tag.name.toLocaleLowerCase();
982
1001
  dispatch({ type: 'ADD', tag });
@@ -992,7 +1011,7 @@ function useTagsManager(initialTags) {
992
1011
  api.createItem && api.createItem(tag);
993
1012
  }
994
1013
  };
995
- const getItemTags = react.useCallback((item) => {
1014
+ const getItemTags = React.useCallback((item) => {
996
1015
  const text = item.text;
997
1016
  const itemTagStrings = text?.match(hashTagRegex);
998
1017
  const itemTags = [];
@@ -1017,27 +1036,27 @@ function useTagsManager(initialTags) {
1017
1036
  }
1018
1037
  const TagsProvider = ({ initialTags, children }) => (jsxRuntime.jsx(TagContext.Provider, { value: useTagsManager(initialTags), children: children }));
1019
1038
  const useTags = () => {
1020
- const { tags } = react.useContext(TagContext);
1039
+ const { tags } = React.useContext(TagContext);
1021
1040
  return tags;
1022
1041
  };
1023
1042
  const useAddTag = () => {
1024
- const { addTag } = react.useContext(TagContext);
1043
+ const { addTag } = React.useContext(TagContext);
1025
1044
  return addTag;
1026
1045
  };
1027
1046
  const useSetTagApi = () => {
1028
- const { setTagApi } = react.useContext(TagContext);
1047
+ const { setTagApi } = React.useContext(TagContext);
1029
1048
  return setTagApi;
1030
1049
  };
1031
1050
  const useSetTagData = () => {
1032
- const { setTagData } = react.useContext(TagContext);
1051
+ const { setTagData } = React.useContext(TagContext);
1033
1052
  return setTagData;
1034
1053
  };
1035
1054
  const useGetItemTags = () => {
1036
- const { getItemTags } = react.useContext(TagContext);
1055
+ const { getItemTags } = React.useContext(TagContext);
1037
1056
  return getItemTags;
1038
1057
  };
1039
1058
  const useAllTagsLoaded = () => {
1040
- const { allTagsLoaded } = react.useContext(TagContext);
1059
+ const { allTagsLoaded } = React.useContext(TagContext);
1041
1060
  return allTagsLoaded;
1042
1061
  };
1043
1062
 
@@ -1045,13 +1064,13 @@ const initialAppState = {
1045
1064
  assetsApi: {},
1046
1065
  userType: '',
1047
1066
  };
1048
- const AppContext = react.createContext({
1067
+ const AppContext = React.createContext({
1049
1068
  state: initialAppState,
1050
1069
  setAppState: () => { },
1051
1070
  });
1052
1071
  function useAppManager() {
1053
- const [state, setState] = react.useState(initialAppState);
1054
- const setAppState = react.useCallback((newState) => {
1072
+ const [state, setState] = React.useState(initialAppState);
1073
+ const setAppState = React.useCallback((newState) => {
1055
1074
  setState((prevState) => ({
1056
1075
  ...prevState,
1057
1076
  ...newState,
@@ -1061,19 +1080,18 @@ function useAppManager() {
1061
1080
  }
1062
1081
  const AppStateProvider = ({ children }) => jsxRuntime.jsx(AppContext.Provider, { value: useAppManager(), children: children });
1063
1082
  const useAppState = () => {
1064
- const { state } = react.useContext(AppContext);
1083
+ const { state } = React.useContext(AppContext);
1065
1084
  return state;
1066
1085
  };
1067
1086
  const useSetAppState = () => {
1068
- const { setAppState } = react.useContext(AppContext);
1087
+ const { setAppState } = React.useContext(AppContext);
1069
1088
  return setAppState;
1070
1089
  };
1071
1090
 
1072
1091
  // Helper context to determine if the ContextWrapper is already present.
1073
- const ContextCheckContext = react.createContext(false);
1074
- // eslint-disable-next-line react/prop-types
1092
+ const ContextCheckContext = React.createContext(false);
1075
1093
  const ContextWrapper = ({ children }) => {
1076
- const isWrapped = react.useContext(ContextCheckContext);
1094
+ const isWrapped = React.useContext(ContextCheckContext);
1077
1095
  // Check if we are already inside a Router
1078
1096
  let location;
1079
1097
  try {
@@ -1113,6 +1131,8 @@ function containsUUID(str) {
1113
1131
  return uuidRegex.test(str);
1114
1132
  }
1115
1133
 
1134
+ var PlusSVG = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9Im5vbmUiIHZpZXdCb3g9IjAgMCAyNCAyNCIgc3Ryb2tlLXdpZHRoPSIzIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgY2xhc3M9InR3LXctNSB0dy1oLTUiPjxwYXRoIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgZD0iTTEyIDQuNXYxNW03LjUtNy41aC0xNSI+PC9wYXRoPjwvc3ZnPg==';
1135
+
1116
1136
  function AddButton({ triggerAction, }) {
1117
1137
  const layers = useLayers();
1118
1138
  const hasUserPermission = useHasUserPermission();
@@ -1127,7 +1147,7 @@ function AddButton({ triggerAction, }) {
1127
1147
  });
1128
1148
  return canAdd;
1129
1149
  };
1130
- return (jsxRuntime.jsx(jsxRuntime.Fragment, { children: canAddItems() ? (jsxRuntime.jsxs("div", { className: 'tw-dropdown tw-dropdown-top tw-dropdown-end tw-dropdown-hover tw-z-500 tw-absolute tw-right-4 tw-bottom-4', children: [jsxRuntime.jsx("label", { tabIndex: 0, className: 'tw-z-500 tw-btn tw-btn-circle tw-shadow tw-bg-base-100', children: jsxRuntime.jsx("svg", { xmlns: 'http://www.w3.org/2000/svg', fill: 'none', viewBox: '0 0 24 24', strokeWidth: '3', stroke: 'currentColor', className: 'tw-w-5 tw-h-5', children: jsxRuntime.jsx("path", { strokeLinecap: 'round', strokeLinejoin: 'round', d: 'M12 4.5v15m7.5-7.5h-15' }) }) }), jsxRuntime.jsx("ul", { tabIndex: 0, className: 'tw-dropdown-content tw-pr-1 tw-list-none', children: layers.map((layer) => layer.api?.createItem &&
1150
+ return (jsxRuntime.jsx(jsxRuntime.Fragment, { children: canAddItems() ? (jsxRuntime.jsxs("div", { className: 'tw-dropdown tw-dropdown-top tw-dropdown-end tw-dropdown-hover tw-z-500 tw-absolute tw-right-4 tw-bottom-4', children: [jsxRuntime.jsx("label", { tabIndex: 0, className: 'tw-z-500 tw-btn tw-btn-circle tw-shadow tw-bg-base-100', children: jsxRuntime.jsx("img", { src: PlusSVG, alt: 'Layers', className: 'tw-h-5 tw-w-5' }) }), jsxRuntime.jsx("ul", { tabIndex: 0, className: 'tw-dropdown-content tw-pr-1 tw-list-none', children: layers.map((layer) => layer.api?.createItem &&
1131
1151
  hasUserPermission(layer.api.collectionName, 'create', undefined, layer) &&
1132
1152
  layer.listed && (jsxRuntime.jsx("li", { children: jsxRuntime.jsx("a", { children: jsxRuntime.jsx("div", { className: 'tw-tooltip tw-tooltip-left', "data-tip": layer.menuText, children: jsxRuntime.jsx("button", { tabIndex: 0, className: 'tw-z-500 tw-border-0 tw-pl-2 tw-p-0 tw-mb-3 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 || '#777' }, onClick: () => {
1133
1153
  triggerAction(layer);
@@ -1138,8 +1158,8 @@ function AddButton({ triggerAction, }) {
1138
1158
  }
1139
1159
 
1140
1160
  const Control = ({ position, children, zIndex, absolute, }) => {
1141
- const controlContainerRef = react.createRef();
1142
- react.useEffect(() => {
1161
+ const controlContainerRef = React.createRef();
1162
+ React.useEffect(() => {
1143
1163
  if (controlContainerRef.current !== null) {
1144
1164
  leaflet.DomEvent.disableClickPropagation(controlContainerRef.current);
1145
1165
  leaflet.DomEvent.disableScrollPropagation(controlContainerRef.current);
@@ -1148,14 +1168,39 @@ const Control = ({ position, children, zIndex, absolute, }) => {
1148
1168
  return (jsxRuntime.jsx("div", { ref: controlContainerRef, style: { zIndex }, className: `${absolute && 'tw-absolute'} tw-z-[999] tw-flex-col ${position === 'topLeft' && 'tw-top-4 tw-left-4'} ${position === 'bottomLeft' && 'tw-bottom-4 tw-left-4'} ${position === 'topRight' && 'tw-bottom-4 tw-right-4'} ${position === 'bottomRight' && 'tw-bottom-4 tw-right-4'}`, children: children }));
1149
1169
  };
1150
1170
 
1171
+ function FunnelIcon({
1172
+ title,
1173
+ titleId,
1174
+ ...props
1175
+ }, svgRef) {
1176
+ return /*#__PURE__*/React__namespace.createElement("svg", Object.assign({
1177
+ xmlns: "http://www.w3.org/2000/svg",
1178
+ fill: "none",
1179
+ viewBox: "0 0 24 24",
1180
+ strokeWidth: 1.5,
1181
+ stroke: "currentColor",
1182
+ "aria-hidden": "true",
1183
+ "data-slot": "icon",
1184
+ ref: svgRef,
1185
+ "aria-labelledby": titleId
1186
+ }, props), title ? /*#__PURE__*/React__namespace.createElement("title", {
1187
+ id: titleId
1188
+ }, title) : null, /*#__PURE__*/React__namespace.createElement("path", {
1189
+ strokeLinecap: "round",
1190
+ strokeLinejoin: "round",
1191
+ d: "M12 3c2.755 0 5.455.232 8.083.678.533.09.917.556.917 1.096v1.044a2.25 2.25 0 0 1-.659 1.591l-5.432 5.432a2.25 2.25 0 0 0-.659 1.591v2.927a2.25 2.25 0 0 1-1.244 2.013L9.75 21v-6.568a2.25 2.25 0 0 0-.659-1.591L3.659 7.409A2.25 2.25 0 0 1 3 5.818V4.774c0-.54.384-1.006.917-1.096A48.32 48.32 0 0 1 12 3Z"
1192
+ }));
1193
+ }
1194
+ const ForwardRef$e = /*#__PURE__*/ React__namespace.forwardRef(FunnelIcon);
1195
+
1151
1196
  function FilterControl() {
1152
- const [open, setOpen] = react.useState(false);
1197
+ const [open, setOpen] = React.useState(false);
1153
1198
  const groupTypes = [
1154
1199
  { text: 'Regional Gruppe', value: 'wuerdekompass' },
1155
1200
  { text: 'Themen Gruppe', value: 'themenkompass' },
1156
1201
  { text: 'liebevoll.jetzt', value: 'liebevoll.jetzt' },
1157
1202
  ];
1158
- react.useEffect(() => {
1203
+ React.useEffect(() => {
1159
1204
  groupTypes.map((layer) => addVisibleGroupType(layer.value));
1160
1205
  // eslint-disable-next-line react-hooks/exhaustive-deps
1161
1206
  }, []);
@@ -1167,185 +1212,33 @@ function FilterControl() {
1167
1212
  setOpen(false);
1168
1213
  }, children: jsxRuntime.jsx("p", { className: 'tw-text-center ', children: "\u2715" }) }), jsxRuntime.jsx("ul", { className: 'tw-flex-row', children: groupTypes.map((groupType) => (jsxRuntime.jsx("li", { children: jsxRuntime.jsxs("label", { htmlFor: groupType.value, className: 'tw-label tw-justify-normal tw-pt-1 tw-pb-1', children: [jsxRuntime.jsx("input", { id: groupType.value, onChange: () => toggleVisibleGroupType(groupType.value), type: 'checkbox', className: 'tw-checkbox tw-checkbox-xs tw-checkbox-success', checked: isGroupTypeVisible(groupType.value) }), jsxRuntime.jsx("span", { className: 'tw-text-sm tw-label-text tw-mx-2 tw-cursor-pointer', children: groupType.text })] }) }, groupType.value))) })] })) : (jsxRuntime.jsxs("div", { className: 'tw-indicator', children: [visibleGroupTypes.length < groupTypes.length && (jsxRuntime.jsx("span", { className: 'tw-indicator-item tw-badge tw-badge-success tw-h-4 tw-p-2 tw-translate-x-1/3 -tw-translate-y-1/3 tw-border-0' })), jsxRuntime.jsx("div", { className: 'tw-card-body hover:tw-bg-slate-300 tw-card tw-p-2 tw-h-10 tw-w-10 tw-transition-all tw-duration-300 hover:tw-cursor-pointer', onClick: () => {
1169
1214
  setOpen(true);
1170
- }, children: jsxRuntime.jsx("svg", { xmlns: 'http://www.w3.org/2000/svg', fill: 'none', viewBox: '0 0 24 24', strokeWidth: 2.3, stroke: 'currentColor', className: 'size-6', children: jsxRuntime.jsx("path", { strokeLinecap: 'round', strokeLinejoin: 'round', d: 'M12 3c2.755 0 5.455.232 8.083.678.533.09.917.556.917 1.096v1.044a2.25 2.25 0 0 1-.659 1.591l-5.432 5.432a2.25 2.25 0 0 0-.659 1.591v2.927a2.25 2.25 0 0 1-1.244 2.013L9.75 21v-6.568a2.25 2.25 0 0 0-.659-1.591L3.659 7.409A2.25 2.25 0 0 1 3 5.818V4.774c0-.54.384-1.006.917-1.096A48.32 48.32 0 0 1 12 3Z' }) }) })] })) }));
1171
- }
1172
-
1173
- /**
1174
- * @category Templates
1175
- */
1176
- function MapOverlayPage({ children, className, backdrop, card = true, }) {
1177
- const closeScreen = () => {
1178
- navigate(`/${window.location.search ? window.location.search : ''}`);
1179
- };
1180
- const navigate = reactRouterDom.useNavigate();
1181
- const overlayRef = react.createRef();
1182
- const backdropRef = react.createRef();
1183
- react.useEffect(() => {
1184
- if (overlayRef.current !== null) {
1185
- leaflet.DomEvent.disableClickPropagation(overlayRef.current);
1186
- leaflet.DomEvent.disableScrollPropagation(overlayRef.current);
1187
- }
1188
- if (backdropRef.current !== null && backdrop) {
1189
- leaflet.DomEvent.disableClickPropagation(backdropRef.current);
1190
- leaflet.DomEvent.disableScrollPropagation(backdropRef.current);
1191
- }
1192
- // eslint-disable-next-line react-hooks/exhaustive-deps
1193
- }, [overlayRef, backdropRef]);
1194
- return (jsxRuntime.jsx("div", { className: `tw-absolute tw-h-full tw-w-full tw-m-auto ${backdrop && 'tw-z-[2000]'}`, children: jsxRuntime.jsx("div", { ref: backdropRef, className: `${backdrop && 'tw-backdrop-brightness-75'} tw-h-full tw-w-full tw-grid tw-place-items-center tw-m-auto`, children: jsxRuntime.jsxs("div", { ref: overlayRef, className: `${card && 'tw-card tw-card-body'} tw-shadow-xl tw-bg-base-100 tw-p-6 ${className && className} ${!backdrop && 'tw-z-[2000]'} tw-absolute tw-top-0 tw-bottom-0 tw-right-0 tw-left-0 tw-m-auto`, children: [children, jsxRuntime.jsx("button", { className: 'tw-btn tw-btn-sm tw-btn-circle tw-btn-ghost tw-absolute tw-right-2 tw-top-2', onClick: () => closeScreen(), children: "\u2715" })] }) }) }));
1195
- }
1196
-
1197
- /**
1198
- * @category Auth
1199
- */
1200
- function LoginPage() {
1201
- const [email, setEmail] = react.useState('');
1202
- const [password, setPassword] = react.useState('');
1203
- const { login, loading } = useAuth();
1204
- const navigate = reactRouterDom.useNavigate();
1205
- // eslint-disable-next-line react-hooks/exhaustive-deps
1206
- const onLogin = async () => {
1207
- await reactToastify.toast.promise(login({ email, password }), {
1208
- success: {
1209
- render({ data }) {
1210
- navigate('/');
1211
- return `Hi ${data?.first_name}`;
1212
- },
1213
- // other options
1214
- icon: '✌️',
1215
- },
1216
- error: {
1217
- render({ data }) {
1218
- return `${data}`;
1219
- },
1220
- autoClose: 10000,
1221
- },
1222
- pending: 'logging in ...',
1223
- });
1224
- };
1225
- react.useEffect(() => {
1226
- const keyDownHandler = (event) => {
1227
- if (event.key === 'Enter') {
1228
- event.preventDefault();
1229
- onLogin();
1230
- }
1231
- };
1232
- document.addEventListener('keydown', keyDownHandler);
1233
- return () => {
1234
- document.removeEventListener('keydown', keyDownHandler);
1235
- };
1236
- }, [onLogin]);
1237
- return (jsxRuntime.jsxs(MapOverlayPage, { backdrop: true, className: 'tw-max-w-xs tw-h-fit', children: [jsxRuntime.jsx("h2", { className: 'tw-text-2xl tw-font-semibold tw-mb-2 tw-text-center', children: "Login" }), jsxRuntime.jsx("input", { type: 'email', placeholder: 'E-Mail', value: email, onChange: (e) => setEmail(e.target.value), className: 'tw-input tw-input-bordered tw-w-full tw-max-w-xs' }), jsxRuntime.jsx("input", { type: 'password', placeholder: 'Password', onChange: (e) => setPassword(e.target.value), className: 'tw-input tw-input-bordered tw-w-full tw-max-w-xs' }), jsxRuntime.jsx("div", { className: 'tw-text-right tw-text-primary', children: jsxRuntime.jsx(reactRouterDom.Link, { to: '/reset-password', children: jsxRuntime.jsx("span", { className: 'tw-text-sm tw-inline-block hover:tw-text-primary hover:tw-underline hover:tw-cursor-pointer tw-transition tw-duration-200', children: "Forgot Password?" }) }) }), jsxRuntime.jsx("div", { className: 'tw-card-actions', children: jsxRuntime.jsx("button", { className: loading
1238
- ? 'tw-btn tw-btn-disabled tw-btn-block tw-btn-primary'
1239
- : 'tw-btn tw-btn-primary tw-btn-block', onClick: () => onLogin(), children: loading ? jsxRuntime.jsx("span", { className: 'tw-loading tw-loading-spinner' }) : 'Login' }) })] }));
1240
- }
1241
-
1242
- /**
1243
- * @category Auth
1244
- */
1245
- function SignupPage() {
1246
- const [email, setEmail] = react.useState('');
1247
- const [userName, setUserName] = react.useState('');
1248
- const [password, setPassword] = react.useState('');
1249
- const { register, loading } = useAuth();
1250
- const navigate = reactRouterDom.useNavigate();
1251
- // eslint-disable-next-line react-hooks/exhaustive-deps
1252
- const onRegister = async () => {
1253
- await reactToastify.toast.promise(register({ email, password }, userName), {
1254
- success: {
1255
- render({ data }) {
1256
- navigate('/');
1257
- return `Hi ${data?.first_name}`;
1258
- },
1259
- // other options
1260
- icon: '✌️',
1261
- },
1262
- error: {
1263
- render({ data }) {
1264
- return `${data}`;
1265
- },
1266
- autoClose: 10000,
1267
- },
1268
- pending: 'creating new user ...',
1269
- });
1270
- };
1271
- react.useEffect(() => {
1272
- const keyDownHandler = (event) => {
1273
- if (event.key === 'Enter') {
1274
- event.preventDefault();
1275
- onRegister();
1276
- }
1277
- };
1278
- document.addEventListener('keydown', keyDownHandler);
1279
- return () => {
1280
- document.removeEventListener('keydown', keyDownHandler);
1281
- };
1282
- }, [onRegister]);
1283
- return (jsxRuntime.jsxs(MapOverlayPage, { backdrop: true, className: 'tw-max-w-xs tw-h-fit', children: [jsxRuntime.jsx("h2", { className: 'tw-text-2xl tw-font-semibold tw-mb-2 tw-text-center', children: "Sign Up" }), jsxRuntime.jsx("input", { type: 'text', placeholder: 'Name', value: userName, onChange: (e) => setUserName(e.target.value), className: 'tw-input tw-input-bordered tw-w-full tw-max-w-xs' }), jsxRuntime.jsx("input", { type: 'email', placeholder: 'E-Mail', value: email, onChange: (e) => setEmail(e.target.value), className: 'tw-input tw-input-bordered tw-w-full tw-max-w-xs' }), jsxRuntime.jsx("input", { type: 'password', placeholder: 'Password', onChange: (e) => setPassword(e.target.value), className: 'tw-input tw-input-bordered tw-w-full tw-max-w-xs' }), jsxRuntime.jsx("div", { className: 'tw-card-actions tw-mt-4', children: jsxRuntime.jsx("button", { className: loading
1284
- ? 'tw-btn tw-btn-disabled tw-btn-block tw-btn-primary'
1285
- : 'tw-btn tw-btn-primary tw-btn-block', onClick: () => onRegister(), children: loading ? jsxRuntime.jsx("span", { className: 'tw-loading tw-loading-spinner' }) : 'Sign Up' }) })] }));
1215
+ }, children: jsxRuntime.jsx(ForwardRef$e, { className: 'size-6 tw-stroke-[2.5]' }) })] })) }));
1286
1216
  }
1287
1217
 
1288
- /**
1289
- * @category Auth
1290
- */
1291
- // eslint-disable-next-line react/prop-types
1292
- function RequestPasswordPage({ resetUrl }) {
1293
- const [email, setEmail] = react.useState('');
1294
- const { requestPasswordReset, loading } = useAuth();
1295
- const navigate = reactRouterDom.useNavigate();
1296
- const onReset = async () => {
1297
- await reactToastify.toast.promise(requestPasswordReset(email, resetUrl), {
1298
- success: {
1299
- render() {
1300
- navigate('/');
1301
- return 'Check your mailbox';
1302
- },
1303
- // other options
1304
- icon: '📬',
1305
- },
1306
- error: {
1307
- render({ data }) {
1308
- return `${data}`;
1309
- },
1310
- },
1311
- pending: 'sending email ...',
1312
- });
1313
- };
1314
- return (jsxRuntime.jsxs(MapOverlayPage, { backdrop: true, className: 'tw-max-w-xs tw-h-fit', children: [jsxRuntime.jsx("h2", { className: 'tw-text-2xl tw-font-semibold tw-mb-2 tw-text-center', children: "Reset Password" }), jsxRuntime.jsx("input", { type: 'email', placeholder: 'E-Mail', value: email, onChange: (e) => setEmail(e.target.value), className: 'tw-input tw-input-bordered tw-w-full tw-max-w-xs' }), jsxRuntime.jsx("div", { className: 'tw-card-actions tw-mt-4', children: jsxRuntime.jsx("button", { className: loading
1315
- ? 'tw-btn tw-btn-disabled tw-btn-block tw-btn-primary'
1316
- : 'tw-btn tw-btn-primary tw-btn-block', onClick: () => onReset(), children: loading ? jsxRuntime.jsx("span", { className: 'tw-loading tw-loading-spinner' }) : 'Send' }) })] }));
1317
- }
1318
-
1319
- /**
1320
- * @category Auth
1321
- */
1322
- function SetNewPasswordPage() {
1323
- const [password, setPassword] = react.useState('');
1324
- const { passwordReset, loading } = useAuth();
1325
- const navigate = reactRouterDom.useNavigate();
1326
- const onReset = async () => {
1327
- const token = window.location.search.split('token=')[1];
1328
- // eslint-disable-next-line no-console
1329
- console.log(token);
1330
- await reactToastify.toast.promise(passwordReset(token, password), {
1331
- success: {
1332
- render() {
1333
- navigate('/');
1334
- return 'New password set';
1335
- },
1336
- },
1337
- error: {
1338
- render({ data }) {
1339
- return `${data}`;
1340
- },
1341
- },
1342
- pending: 'setting password ...',
1343
- });
1344
- };
1345
- return (jsxRuntime.jsxs(MapOverlayPage, { backdrop: true, className: 'tw-max-w-xs tw-h-fit', children: [jsxRuntime.jsx("h2", { className: 'tw-text-2xl tw-font-semibold tw-mb-2 tw-text-center', children: "Set new Password" }), jsxRuntime.jsx("input", { type: 'password', placeholder: 'Password', onChange: (e) => setPassword(e.target.value), className: 'tw-input tw-input-bordered tw-w-full tw-max-w-xs' }), jsxRuntime.jsx("div", { className: 'tw-card-actions tw-mt-4', children: jsxRuntime.jsx("button", { className: loading
1346
- ? 'tw-btn tw-btn-disabled tw-btn-block tw-btn-primary'
1347
- : 'tw-btn tw-btn-primary tw-btn-block', onClick: () => onReset(), children: loading ? jsxRuntime.jsx("span", { className: 'tw-loading tw-loading-spinner' }) : 'Set' }) })] }));
1218
+ function HeartIcon({
1219
+ title,
1220
+ titleId,
1221
+ ...props
1222
+ }, svgRef) {
1223
+ return /*#__PURE__*/React__namespace.createElement("svg", Object.assign({
1224
+ xmlns: "http://www.w3.org/2000/svg",
1225
+ fill: "none",
1226
+ viewBox: "0 0 24 24",
1227
+ strokeWidth: 1.5,
1228
+ stroke: "currentColor",
1229
+ "aria-hidden": "true",
1230
+ "data-slot": "icon",
1231
+ ref: svgRef,
1232
+ "aria-labelledby": titleId
1233
+ }, props), title ? /*#__PURE__*/React__namespace.createElement("title", {
1234
+ id: titleId
1235
+ }, title) : null, /*#__PURE__*/React__namespace.createElement("path", {
1236
+ strokeLinecap: "round",
1237
+ strokeLinejoin: "round",
1238
+ d: "M21 8.25c0-2.485-2.099-4.5-4.688-4.5-1.935 0-3.597 1.126-4.312 2.733-.715-1.607-2.377-2.733-4.313-2.733C5.1 3.75 3 5.765 3 8.25c0 7.22 9 12 9 12s9-4.78 9-12Z"
1239
+ }));
1348
1240
  }
1241
+ const ForwardRef$d = /*#__PURE__*/ React__namespace.forwardRef(HeartIcon);
1349
1242
 
1350
1243
  const GratitudeControl = () => {
1351
1244
  const navigate = reactRouterDom.useNavigate();
@@ -1353,14 +1246,16 @@ const GratitudeControl = () => {
1353
1246
  if (isAuthenticated) {
1354
1247
  return (jsxRuntime.jsx("div", { className: 'tw-card tw-bg-base-100 tw-shadow-xl tw-mt-2 tw-w-fit', children: jsxRuntime.jsx("div", { className: 'tw-card-body hover:tw-bg-slate-300 tw-card tw-p-2 tw-h-10 tw-w-10 tw-transition-all tw-duration-300 hover:tw-cursor-pointer', onClick: () => {
1355
1248
  navigate('/select-user');
1356
- }, children: jsxRuntime.jsx("svg", { xmlns: 'http://www.w3.org/2000/svg', fill: 'none', viewBox: '0 0 24 24', strokeWidth: 2.5, stroke: 'currentColor', className: 'size-6', children: jsxRuntime.jsx("path", { strokeLinecap: 'round', strokeLinejoin: 'round', d: 'M21 8.25c0-2.485-2.099-4.5-4.688-4.5-1.935 0-3.597 1.126-4.312 2.733-.715-1.607-2.377-2.733-4.313-2.733C5.1 3.75 3 5.765 3 8.25c0 7.22 9 12 9 12s9-4.78 9-12Z' }) }) }) }));
1249
+ }, children: jsxRuntime.jsx(ForwardRef$d, { className: 'tw-stroke-[2.5]' }) }) }));
1357
1250
  }
1358
1251
  else
1359
1252
  return jsxRuntime.jsx(jsxRuntime.Fragment, {});
1360
1253
  };
1361
1254
 
1255
+ var LayerSVG = 'data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPScxLjEnIHZpZXdCb3g9JzAgMCAyMCAyMCcgc3Ryb2tlLXdpZHRoPSIyIiB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnPgogICAgPHBhdGgKICAgICAgICBpZD0nc3ZnXzEnCiAgICAgICAgZmlsbD0nY3VycmVudENvbG9yJwogICAgICAgIGQ9J20yLjc1NTY1LDExLjkwNzI3bC0xLjAzODUyLDAuMjgzNzJjLTAuNzc3MTgsMC4zODg1OSAtMC43NzcxOCwxLjAxMzggMCwxLjQwMjNsNy4wMTU2LDMuNTA3OGMwLjc3NzE4LDAuMzg4NTkgMi4wMjc1LDAuMzg4NTkgMi44MDQ3LDBsNy4wMTU2LC0zLjUwNzhjMC43NzcxOCwtMC4zODg1OSAwLjc3NzE4LC0xLjAxMzggMCwtMS40MDIzbC0wLjYzMzExLC0wLjQ4NjQzbC00LjY3NzE4LDIuMjM2MjRjLTEuNTQ1MiwwLjc3MjYyIC0zLjMxODc3LDEuNTgzNDMgLTQuODY0MDcsMC44MTA4MWwtNS42MjMwMiwtMi44NDQzNHonCiAgICAvPgogICAgPHBhdGgKICAgICAgICBpZD0nc3ZnXzInCiAgICAgICAgc3Ryb2tlPSdjdXJyZW50Q29sb3InCiAgICAgICAgZmlsbD0nbm9uZScKICAgICAgICBkPSdtMTEuMjQ3LDQuMzA4NTFsNi4yMzQ5LDMuMDg3N2MwLjY5MDgzLDAuMzQyMTEgMC42OTA4MywwLjg5Mjk1IDAsMS4yMzUxbC02LjIzNDksMy4wODc3Yy0wLjY5MDgzLDAuMzQyMTEgLTEuODAzMSwwLjM0MjEyIC0yLjQ5NCwwbC02LjIzNDksLTMuMDg3N2MtMC42OTA4MywtMC4zNDIxMSAtMC42OTA4MywtMC44OTI5NSAwLC0xLjIzNTFsNi4yMzQ5LC0zLjA4NzdjMC42OTA4MywtMC4zNDIxMSAxLjgwMzEsLTAuMzQyMTEgMi40OTQsMHonCiAgICAvPgo8L3N2Zz4=';
1256
+
1362
1257
  function LayerControl() {
1363
- const [open, setOpen] = react.useState(false);
1258
+ const [open, setOpen] = React.useState(false);
1364
1259
  const layers = useLayers();
1365
1260
  const isLayerVisible = useIsLayerVisible();
1366
1261
  const toggleVisibleLayer = useToggleVisibleLayer();
@@ -1368,43 +1263,92 @@ function LayerControl() {
1368
1263
  setOpen(false);
1369
1264
  }, children: jsxRuntime.jsx("p", { className: 'tw-text-center ', children: "\u2715" }) }), jsxRuntime.jsx("ul", { className: 'tw-flex-row', children: layers.map((layer) => layer.listed && (jsxRuntime.jsx("li", { children: jsxRuntime.jsxs("label", { htmlFor: layer.name, className: 'tw-label tw-justify-normal tw-pt-1 tw-pb-1', children: [jsxRuntime.jsx("input", { id: layer.name, onChange: () => toggleVisibleLayer(layer), type: 'checkbox', className: 'tw-checkbox tw-checkbox-xs tw-checkbox-success', checked: isLayerVisible(layer) }), jsxRuntime.jsx("span", { className: 'tw-text-sm tw-label-text tw-mx-2 tw-cursor-pointer', children: layer.name })] }) }, layer.name))) })] })) : (jsxRuntime.jsx("div", { className: 'tw-card-body hover:tw-bg-slate-300 tw-card tw-p-2 tw-h-10 tw-w-10 tw-transition-all tw-duration-300 hover:tw-cursor-pointer', onClick: () => {
1370
1265
  setOpen(true);
1371
- }, children: jsxRuntime.jsxs("svg", { version: '1.1', viewBox: '0 0 20 20', xmlns: 'http://www.w3.org/2000/svg', children: [jsxRuntime.jsx("path", { id: 'svg_1', fill: 'currentColor', d: 'm2.75565,11.90727l-1.03852,0.28372c-0.77718,0.38859 -0.77718,1.0138 0,1.4023l7.0156,3.5078c0.77718,0.38859 2.0275,0.38859 2.8047,0l7.0156,-3.5078c0.77718,-0.38859 0.77718,-1.0138 0,-1.4023l-0.63311,-0.48643l-4.67718,2.23624c-1.5452,0.77262 -3.31877,1.58343 -4.86407,0.81081l-5.62302,-2.84434z' }), jsxRuntime.jsx("path", { id: 'svg_2', strokeWidth: '2', stroke: 'currentColor', fill: 'none', d: 'm11.247,4.30851l6.2349,3.0877c0.69083,0.34211 0.69083,0.89295 0,1.2351l-6.2349,3.0877c-0.69083,0.34211 -1.8031,0.34212 -2.494,0l-6.2349,-3.0877c-0.69083,-0.34211 -0.69083,-0.89295 0,-1.2351l6.2349,-3.0877c0.69083,-0.34211 1.8031,-0.34211 2.494,0z' })] }) })) }));
1266
+ }, children: jsxRuntime.jsx("img", { src: LayerSVG, alt: 'Layers' }) })) }));
1372
1267
  }
1373
1268
 
1269
+ function FlagIcon({
1270
+ title,
1271
+ titleId,
1272
+ ...props
1273
+ }, svgRef) {
1274
+ return /*#__PURE__*/React__namespace.createElement("svg", Object.assign({
1275
+ xmlns: "http://www.w3.org/2000/svg",
1276
+ fill: "none",
1277
+ viewBox: "0 0 24 24",
1278
+ strokeWidth: 1.5,
1279
+ stroke: "currentColor",
1280
+ "aria-hidden": "true",
1281
+ "data-slot": "icon",
1282
+ ref: svgRef,
1283
+ "aria-labelledby": titleId
1284
+ }, props), title ? /*#__PURE__*/React__namespace.createElement("title", {
1285
+ id: titleId
1286
+ }, title) : null, /*#__PURE__*/React__namespace.createElement("path", {
1287
+ strokeLinecap: "round",
1288
+ strokeLinejoin: "round",
1289
+ d: "M3 3v1.5M3 21v-6m0 0 2.77-.693a9 9 0 0 1 6.208.682l.108.054a9 9 0 0 0 6.086.71l3.114-.732a48.524 48.524 0 0 1-.005-10.499l-3.11.732a9 9 0 0 1-6.085-.711l-.108-.054a9 9 0 0 0-6.208-.682L3 4.5M3 15V4.5"
1290
+ }));
1291
+ }
1292
+ const ForwardRef$c = /*#__PURE__*/ React__namespace.forwardRef(FlagIcon);
1293
+
1294
+ function MagnifyingGlassIcon({
1295
+ title,
1296
+ titleId,
1297
+ ...props
1298
+ }, svgRef) {
1299
+ return /*#__PURE__*/React__namespace.createElement("svg", Object.assign({
1300
+ xmlns: "http://www.w3.org/2000/svg",
1301
+ fill: "none",
1302
+ viewBox: "0 0 24 24",
1303
+ strokeWidth: 1.5,
1304
+ stroke: "currentColor",
1305
+ "aria-hidden": "true",
1306
+ "data-slot": "icon",
1307
+ ref: svgRef,
1308
+ "aria-labelledby": titleId
1309
+ }, props), title ? /*#__PURE__*/React__namespace.createElement("title", {
1310
+ id: titleId
1311
+ }, title) : null, /*#__PURE__*/React__namespace.createElement("path", {
1312
+ strokeLinecap: "round",
1313
+ strokeLinejoin: "round",
1314
+ d: "m21 21-5.197-5.197m0 0A7.5 7.5 0 1 0 5.196 5.196a7.5 7.5 0 0 0 10.607 10.607Z"
1315
+ }));
1316
+ }
1317
+ const ForwardRef$b = /*#__PURE__*/ React__namespace.forwardRef(MagnifyingGlassIcon);
1318
+
1374
1319
  /* eslint-disable @typescript-eslint/no-explicit-any */
1375
1320
  /* eslint-disable @typescript-eslint/no-unsafe-argument */
1376
1321
  /* eslint-disable @typescript-eslint/no-unsafe-return */
1377
1322
  /* eslint-disable @typescript-eslint/no-unsafe-call */
1378
1323
  /* eslint-disable @typescript-eslint/no-unsafe-assignment */
1379
1324
  const useTimeout = (callback, delay) => {
1380
- const callbackRef = react.useRef(callback);
1381
- const timeoutRef = react.useRef();
1382
- react.useEffect(() => {
1325
+ const callbackRef = React.useRef(callback);
1326
+ const timeoutRef = React.useRef();
1327
+ React.useEffect(() => {
1383
1328
  callbackRef.current = callback;
1384
1329
  }, [callback]);
1385
- const set = react.useCallback(() => {
1330
+ const set = React.useCallback(() => {
1386
1331
  timeoutRef.current = setTimeout(() => callbackRef.current(), delay);
1387
1332
  }, [delay]);
1388
- const clear = react.useCallback(() => {
1333
+ const clear = React.useCallback(() => {
1389
1334
  timeoutRef.current && clearTimeout(timeoutRef.current);
1390
1335
  }, []);
1391
- react.useEffect(() => {
1336
+ React.useEffect(() => {
1392
1337
  set();
1393
1338
  return clear;
1394
1339
  }, [delay, set, clear]);
1395
- const reset = react.useCallback(() => {
1340
+ const reset = React.useCallback(() => {
1396
1341
  clear();
1397
1342
  set();
1398
1343
  }, [clear, set]);
1399
1344
  return { reset, clear };
1400
1345
  };
1401
1346
 
1402
- /* eslint-disable @typescript-eslint/no-unsafe-assignment */
1403
1347
  const useDebounce = (callback, delay, deps) => {
1404
1348
  const { reset, clear } = useTimeout(callback, delay);
1405
- react.useEffect(reset, [...deps, reset]);
1349
+ React.useEffect(reset, [...deps, reset]);
1406
1350
  // eslint-disable-next-line react-hooks/exhaustive-deps
1407
- react.useEffect(clear, []);
1351
+ React.useEffect(clear, []);
1408
1352
  };
1409
1353
 
1410
1354
  function decodeTag(string) {
@@ -1496,6 +1440,8 @@ const MarkerIconFactory = (shape, color1, color2, icon) => {
1496
1440
  });
1497
1441
  };
1498
1442
 
1443
+ var TargetSVG = 'data:image/svg+xml;base64,PHN2ZwogICAgZmlsbD0nY3VycmVudENvbG9yJwogICAgdmlld0JveD0nMCAwIDMyIDMyJwogICAgdmVyc2lvbj0nMS4xJwogICAgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJwo+CiAgPHBhdGggZD0nTTMwIDE0Ljc1aC0yLjgyNGMtMC42MDgtNS4yMTktNC43MDctOS4zMTgtOS44NzQtOS45MjFsLTAuMDUzLTAuMDA1di0yLjgyNGMwLTAuNjktMC41Ni0xLjI1LTEuMjUtMS4yNXMtMS4yNSAwLjU2LTEuMjUgMS4yNXYwIDIuODI0Yy01LjIxOSAwLjYwOC05LjMxOCA0LjcwNy05LjkyMSA5Ljg3NGwtMC4wMDUgMC4wNTNoLTIuODI0Yy0wLjY5IDAtMS4yNSAwLjU2LTEuMjUgMS4yNXMwLjU2IDEuMjUgMS4yNSAxLjI1djBoMi44MjRjMC42MDggNS4yMTkgNC43MDcgOS4zMTggOS44NzQgOS45MjFsMC4wNTMgMC4wMDV2Mi44MjRjMCAwLjY5IDAuNTYgMS4yNSAxLjI1IDEuMjVzMS4yNS0wLjU2IDEuMjUtMS4yNXYwLTIuODI0YzUuMjE5LTAuNjA4IDkuMzE4LTQuNzA3IDkuOTIxLTkuODc0bDAuMDA1LTAuMDUzaDIuODI0YzAuNjkgMCAxLjI1LTAuNTYgMS4yNS0xLjI1cy0wLjU2LTEuMjUtMS4yNS0xLjI1djB6TTE3LjI1IDI0LjYyNHYtMi42MjRjMC0wLjY5LTAuNTYtMS4yNS0xLjI1LTEuMjVzLTEuMjUgMC41Ni0xLjI1IDEuMjV2MCAyLjYyNGMtMy44MjEtMC41Ny02LjgwMy0zLjU1My03LjM2OC03LjMyNmwtMC4wMDYtMC4wNDhoMi42MjRjMC42OSAwIDEuMjUtMC41NiAxLjI1LTEuMjVzLTAuNTYtMS4yNS0xLjI1LTEuMjV2MGgtMi42MjRjMC41Ny0zLjgyMSAzLjU1My02LjgwNCA3LjMyNi03LjM2OGwwLjA0OC0wLjAwNnYyLjYyNGMwIDAuNjkgMC41NiAxLjI1IDEuMjUgMS4yNXMxLjI1LTAuNTYgMS4yNS0xLjI1djAtMi42MjRjMy44MjEgMC41NyA2LjgwMyAzLjU1MyA3LjM2OCA3LjMyNmwwLjAwNiAwLjA0OGgtMi42MjRjLTAuNjkgMC0xLjI1IDAuNTYtMS4yNSAxLjI1czAuNTYgMS4yNSAxLjI1IDEuMjV2MGgyLjYyNGMtMC41NzEgMy44MjEtMy41NTMgNi44MDMtNy4zMjYgNy4zNjhsLTAuMDQ4IDAuMDA2eic+PC9wYXRoPgo8L3N2Zz4=';
1444
+
1499
1445
  /*!
1500
1446
  Copyright (c) 2016 Dominik Moritz
1501
1447
 
@@ -2448,11 +2394,11 @@ You can find the project at: https://github.com/domoritz/leaflet-locatecontrol
2448
2394
  const LocateControl = () => {
2449
2395
  const map = reactLeaflet.useMap();
2450
2396
  // prevent react18 from calling useEffect twice
2451
- const init = react.useRef(false);
2452
- const [lc, setLc] = react.useState(null);
2453
- const [active, setActive] = react.useState(false);
2454
- const [loading, setLoading] = react.useState(false);
2455
- react.useEffect(() => {
2397
+ const init = React.useRef(false);
2398
+ const [lc, setLc] = React.useState(null);
2399
+ const [active, setActive] = React.useState(false);
2400
+ const [loading, setLoading] = React.useState(false);
2401
+ React.useEffect(() => {
2456
2402
  if (!init.current) {
2457
2403
  // @ts-ignore
2458
2404
  setLc(leaflet.control.locate().addTo(map));
@@ -2475,22 +2421,45 @@ const LocateControl = () => {
2475
2421
  lc.start();
2476
2422
  setLoading(true);
2477
2423
  }
2478
- }, children: loading ? (jsxRuntime.jsx("span", { className: 'tw-loading tw-loading-spinner tw-loading-md tw-mt-1' })) : (jsxRuntime.jsx("svg", { fill: `${active ? '#fc8702' : 'currentColor'}`, viewBox: '0 0 32 32', version: '1.1', xmlns: 'http://www.w3.org/2000/svg', className: 'tw-mt-1 tw-p-[1px]', children: jsxRuntime.jsx("path", { d: 'M30 14.75h-2.824c-0.608-5.219-4.707-9.318-9.874-9.921l-0.053-0.005v-2.824c0-0.69-0.56-1.25-1.25-1.25s-1.25 0.56-1.25 1.25v0 2.824c-5.219 0.608-9.318 4.707-9.921 9.874l-0.005 0.053h-2.824c-0.69 0-1.25 0.56-1.25 1.25s0.56 1.25 1.25 1.25v0h2.824c0.608 5.219 4.707 9.318 9.874 9.921l0.053 0.005v2.824c0 0.69 0.56 1.25 1.25 1.25s1.25-0.56 1.25-1.25v0-2.824c5.219-0.608 9.318-4.707 9.921-9.874l0.005-0.053h2.824c0.69 0 1.25-0.56 1.25-1.25s-0.56-1.25-1.25-1.25v0zM17.25 24.624v-2.624c0-0.69-0.56-1.25-1.25-1.25s-1.25 0.56-1.25 1.25v0 2.624c-3.821-0.57-6.803-3.553-7.368-7.326l-0.006-0.048h2.624c0.69 0 1.25-0.56 1.25-1.25s-0.56-1.25-1.25-1.25v0h-2.624c0.57-3.821 3.553-6.804 7.326-7.368l0.048-0.006v2.624c0 0.69 0.56 1.25 1.25 1.25s1.25-0.56 1.25-1.25v0-2.624c3.821 0.57 6.803 3.553 7.368 7.326l0.006 0.048h-2.624c-0.69 0-1.25 0.56-1.25 1.25s0.56 1.25 1.25 1.25v0h2.624c-0.571 3.821-3.553 6.803-7.326 7.368l-0.048 0.006z' }) })) }) }) }));
2424
+ }, children: loading ? (jsxRuntime.jsx("span", { className: 'tw-loading tw-loading-spinner tw-loading-md tw-mt-1' })) : (jsxRuntime.jsx("img", { src: TargetSVG, alt: 'x', className: 'tw-mt-1 tw-p-[1px]', style: { fill: `${active ? '#fc8702' : 'currentColor'}` } })) }) }) }));
2479
2425
  };
2480
2426
 
2427
+ function Bars3Icon({
2428
+ title,
2429
+ titleId,
2430
+ ...props
2431
+ }, svgRef) {
2432
+ return /*#__PURE__*/React__namespace.createElement("svg", Object.assign({
2433
+ xmlns: "http://www.w3.org/2000/svg",
2434
+ viewBox: "0 0 16 16",
2435
+ fill: "currentColor",
2436
+ "aria-hidden": "true",
2437
+ "data-slot": "icon",
2438
+ ref: svgRef,
2439
+ "aria-labelledby": titleId
2440
+ }, props), title ? /*#__PURE__*/React__namespace.createElement("title", {
2441
+ id: titleId
2442
+ }, title) : null, /*#__PURE__*/React__namespace.createElement("path", {
2443
+ fillRule: "evenodd",
2444
+ d: "M2 3.75A.75.75 0 0 1 2.75 3h10.5a.75.75 0 0 1 0 1.5H2.75A.75.75 0 0 1 2 3.75ZM2 8a.75.75 0 0 1 .75-.75h10.5a.75.75 0 0 1 0 1.5H2.75A.75.75 0 0 1 2 8Zm0 4.25a.75.75 0 0 1 .75-.75h10.5a.75.75 0 0 1 0 1.5H2.75a.75.75 0 0 1-.75-.75Z",
2445
+ clipRule: "evenodd"
2446
+ }));
2447
+ }
2448
+ const ForwardRef$a = /*#__PURE__*/ React__namespace.forwardRef(Bars3Icon);
2449
+
2481
2450
  // Converts leaflet.locatecontrol to a React Component
2482
2451
  const SidebarControl = () => {
2483
- return (jsxRuntime.jsx(jsxRuntime.Fragment, { children: jsxRuntime.jsx("div", { className: 'tw-card tw-bg-base-100 tw-shadow-xl tw-items-center tw-justify-center hover:tw-bg-slate-300 hover:tw-cursor-pointer tw-transition-all tw-duration-300 tw-mr-2 tw-h-12 tw-w-12 ', children: jsxRuntime.jsx("div", { className: 'tw-card-body tw-card tw-p-0', children: jsxRuntime.jsx("button", { className: 'tw-btn tw-btn-square tw-btn-ghost tw-rounded-2xl', "data-te-sidenav-toggle-ref": true, "data-te-target": '#sidenav', "aria-controls": '#sidenav', "aria-haspopup": 'true', children: jsxRuntime.jsx("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', children: jsxRuntime.jsx("path", { strokeLinecap: 'round', strokeLinejoin: 'round', strokeWidth: '2', d: 'M4 6h16M4 12h16M4 18h16' }) }) }) }) }) }));
2452
+ return (jsxRuntime.jsx(jsxRuntime.Fragment, { children: jsxRuntime.jsx("div", { className: 'tw-card tw-bg-base-100 tw-shadow-xl tw-items-center tw-justify-center hover:tw-bg-slate-300 hover:tw-cursor-pointer tw-transition-all tw-duration-300 tw-mr-2 tw-h-12 tw-w-12 ', children: jsxRuntime.jsx("div", { className: 'tw-card-body tw-card tw-p-0', children: jsxRuntime.jsx("button", { className: 'tw-btn tw-btn-square tw-btn-ghost tw-rounded-2xl', "data-te-sidenav-toggle-ref": true, "data-te-target": '#sidenav', "aria-controls": '#sidenav', "aria-haspopup": 'true', children: jsxRuntime.jsx(ForwardRef$a, { className: 'tw-inline-block tw-w-5 tw-h-5' }) }) }) }) }));
2484
2453
  };
2485
2454
 
2486
2455
  const SearchControl = () => {
2487
2456
  const windowDimensions = useWindowDimensions();
2488
- const [popupOpen, setPopupOpen] = react.useState(false);
2489
- const [value, setValue] = react.useState('');
2490
- const [geoResults, setGeoResults] = react.useState([]);
2491
- const [tagsResults, setTagsResults] = react.useState([]);
2492
- const [itemsResults, setItemsResults] = react.useState([]);
2493
- const [hideSuggestions, setHideSuggestions] = react.useState(true);
2457
+ const [popupOpen, setPopupOpen] = React.useState(false);
2458
+ const [value, setValue] = React.useState('');
2459
+ const [geoResults, setGeoResults] = React.useState([]);
2460
+ const [tagsResults, setTagsResults] = React.useState([]);
2461
+ const [itemsResults, setItemsResults] = React.useState([]);
2462
+ const [hideSuggestions, setHideSuggestions] = React.useState(true);
2494
2463
  const map = reactLeaflet.useMap();
2495
2464
  const tags = useTags();
2496
2465
  const items = useItems();
@@ -2533,10 +2502,10 @@ const SearchControl = () => {
2533
2502
  setHideSuggestions(true);
2534
2503
  }, 200);
2535
2504
  };
2536
- const searchInput = react.useRef(null);
2537
- const [embedded, setEmbedded] = react.useState(true);
2505
+ const searchInput = React.useRef(null);
2506
+ const [embedded, setEmbedded] = React.useState(true);
2538
2507
  const location = reactRouterDom.useLocation();
2539
- react.useEffect(() => {
2508
+ React.useEffect(() => {
2540
2509
  const params = new URLSearchParams(location.search);
2541
2510
  const embedded = params.get('embedded');
2542
2511
  embedded !== 'true' && setEmbedded(false);
@@ -2579,7 +2548,7 @@ const SearchControl = () => {
2579
2548
  else
2580
2549
  map.setView(new leaflet.LatLng(geo.geometry.coordinates[1], geo.geometry.coordinates[0]), 15, { duration: 1 });
2581
2550
  hide();
2582
- }, children: [jsxRuntime.jsx("svg", { xmlns: 'http://www.w3.org/2000/svg', fill: 'none', viewBox: '0 0 24 24', strokeWidth: '1.5', stroke: 'currentColor', className: 'tw-text-current tw-mr-2 tw-mt-0 tw-w-4', children: jsxRuntime.jsx("path", { strokeLinecap: 'round', strokeLinejoin: 'round', d: 'm21 21-5.197-5.197m0 0A7.5 7.5 0 1 0 5.196 5.196a7.5 7.5 0 0 0 10.607 10.607Z' }) }), jsxRuntime.jsxs("div", { children: [jsxRuntime.jsx("div", { className: 'tw-text-sm tw-overflow-hidden tw-text-ellipsis tw-whitespace-nowrap tw-max-w-[17rem]', children: geo?.properties.name ? geo?.properties.name : value }), jsxRuntime.jsxs("div", { className: 'tw-text-xs tw-overflow-hidden tw-text-ellipsis tw-whitespace-nowrap tw-max-w-[17rem]', children: [geo?.properties?.city && `${capitalizeFirstLetter(geo?.properties?.city)}, `, ' ', geo?.properties?.osm_value &&
2551
+ }, children: [jsxRuntime.jsx(ForwardRef$b, { className: 'tw-text-current tw-mr-2 tw-mt-0 tw-w-4' }), jsxRuntime.jsxs("div", { children: [jsxRuntime.jsx("div", { className: 'tw-text-sm tw-overflow-hidden tw-text-ellipsis tw-whitespace-nowrap tw-max-w-[17rem]', children: geo?.properties.name ? geo?.properties.name : value }), jsxRuntime.jsxs("div", { className: 'tw-text-xs tw-overflow-hidden tw-text-ellipsis tw-whitespace-nowrap tw-max-w-[17rem]', children: [geo?.properties?.city && `${capitalizeFirstLetter(geo?.properties?.city)}, `, ' ', geo?.properties?.osm_value &&
2583
2552
  geo?.properties?.osm_value !== 'yes' &&
2584
2553
  geo?.properties?.osm_value !== 'primary' &&
2585
2554
  geo?.properties?.osm_value !== 'path' &&
@@ -2598,7 +2567,7 @@ const SearchControl = () => {
2598
2567
  console.log(e.target.remove());
2599
2568
  });
2600
2569
  map.setView(new leaflet.LatLng(extractCoordinates(value)[0], extractCoordinates(value)[1]), 15, { duration: 1 });
2601
- }, children: [jsxRuntime.jsx("svg", { xmlns: 'http://www.w3.org/2000/svg', fill: 'none', viewBox: '0 0 24 24', strokeWidth: 1.5, stroke: 'currentColor', className: 'tw-text-current tw-mr-2 tw-mt-0 tw-w-4', children: jsxRuntime.jsx("path", { strokeLinecap: 'round', strokeLinejoin: 'round', d: 'M3 3v1.5M3 21v-6m0 0 2.77-.693a9 9 0 0 1 6.208.682l.108.054a9 9 0 0 0 6.086.71l3.114-.732a48.524 48.524 0 0 1-.005-10.499l-3.11.732a9 9 0 0 1-6.085-.711l-.108-.054a9 9 0 0 0-6.208-.682L3 4.5M3 15V4.5' }) }), jsxRuntime.jsxs("div", { children: [jsxRuntime.jsx("div", { className: 'tw-text-sm tw-overflow-hidden tw-text-ellipsis tw-whitespace-nowrap tw-max-w-[17rem]', children: value }), jsxRuntime.jsx("div", { className: 'tw-text-xs tw-overflow-hidden tw-text-ellipsis tw-whitespace-nowrap tw-max-w-[17rem]', children: 'Coordiante' })] })] }))] }))] })) }));
2570
+ }, children: [jsxRuntime.jsx(ForwardRef$c, { className: 'tw-text-current tw-mr-2 tw-mt-0 tw-w-4' }), jsxRuntime.jsxs("div", { children: [jsxRuntime.jsx("div", { className: 'tw-text-sm tw-overflow-hidden tw-text-ellipsis tw-whitespace-nowrap tw-max-w-[17rem]', children: value }), jsxRuntime.jsx("div", { className: 'tw-text-xs tw-overflow-hidden tw-text-ellipsis tw-whitespace-nowrap tw-max-w-[17rem]', children: 'Coordiante' })] })] }))] }))] })) }));
2602
2571
  };
2603
2572
  function isGeoCoordinate(input) {
2604
2573
  const geokoordinatenRegex =
@@ -2717,7 +2686,7 @@ const TextView = ({ item, itemId, text, truncate = false, rawText, itemTextField
2717
2686
  }, children: decodeTag(children) }, tag ? tag.name + itemId : itemId));
2718
2687
  };
2719
2688
  // eslint-disable-next-line react/display-name
2720
- const MemoizedVideoEmbed = react.memo(({ url }) => (jsxRuntime.jsx("iframe", { className: 'tw-w-full', src: url, allow: 'fullscreen; picture-in-picture', allowFullScreen: true })));
2689
+ const MemoizedVideoEmbed = React.memo(({ url }) => (jsxRuntime.jsx("iframe", { className: 'tw-w-full', src: url, allow: 'fullscreen; picture-in-picture', allowFullScreen: true })));
2721
2690
  return (jsxRuntime.jsx(Markdown, { className: 'tw-text-map tw-leading-map tw-text-sm', remarkPlugins: [remarkBreaks], components: {
2722
2691
  p: CustomParagraph,
2723
2692
  a: ({ href, children }) => {
@@ -2801,18 +2770,18 @@ function UtopiaMapInner({ children, geo, showFilterControl = false, showGratitud
2801
2770
  const setClusterRef = useSetClusterRef();
2802
2771
  const clusterRef = useClusterRef();
2803
2772
  const setMapClicked = useSetMapClicked();
2804
- const [itemFormPopup, setItemFormPopup] = react.useState(null);
2773
+ const [itemFormPopup, setItemFormPopup] = React.useState(null);
2805
2774
  const layers = useLayers();
2806
2775
  const addVisibleLayer = useAddVisibleLayer();
2807
2776
  const leafletRefs = useLeafletRefs();
2808
2777
  const location = reactRouterDom.useLocation();
2809
2778
  const map = reactLeaflet.useMap();
2810
- react.useEffect(() => {
2779
+ React.useEffect(() => {
2811
2780
  layers.forEach((layer) => addVisibleLayer(layer));
2812
2781
  // eslint-disable-next-line react-hooks/exhaustive-deps
2813
2782
  }, [layers]);
2814
- const init = react.useRef(false);
2815
- react.useEffect(() => {
2783
+ const init = React.useRef(false);
2784
+ React.useEffect(() => {
2816
2785
  if (!init.current) {
2817
2786
  donationWidget &&
2818
2787
  setTimeout(() => {
@@ -2880,7 +2849,7 @@ function UtopiaMapInner({ children, geo, showFilterControl = false, showGratitud
2880
2849
  }
2881
2850
  }
2882
2851
  };
2883
- react.useEffect(() => {
2852
+ React.useEffect(() => {
2884
2853
  openPopup();
2885
2854
  // eslint-disable-next-line react-hooks/exhaustive-deps
2886
2855
  }, [leafletRefs, location]);
@@ -2900,8 +2869,8 @@ function UtopiaMapInner({ children, geo, showFilterControl = false, showGratitud
2900
2869
  layer.bindPopup(feature.properties.name);
2901
2870
  }
2902
2871
  };
2903
- return (jsxRuntime.jsxs("div", { className: `tw-h-full ${selectNewItemPosition != null ? 'crosshair-cursor-enabled' : undefined}`, children: [jsxRuntime.jsx(reactRouterDom.Outlet, {}), jsxRuntime.jsxs(Control, { position: 'topLeft', zIndex: '1000', absolute: true, children: [jsxRuntime.jsx(SearchControl, {}), jsxRuntime.jsx(TagsControl, {})] }), jsxRuntime.jsxs(Control, { position: 'bottomLeft', zIndex: '999', absolute: true, children: [showFilterControl && jsxRuntime.jsx(FilterControl, {}), showLayerControl && jsxRuntime.jsx(LayerControl, {}), showGratitudeControl && jsxRuntime.jsx(GratitudeControl, {})] }), jsxRuntime.jsx(reactLeaflet.TileLayer, { maxZoom: 19, attribution: '\u00A9 <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors', url: 'https://tile.osmand.net/hd/{z}/{x}/{y}.png' }), jsxRuntime.jsx(MarkerClusterGroup, { ref: (r) => setClusterRef(r), showCoverageOnHover: true, chunkedLoading: true, maxClusterRadius: 50, removeOutsideVisibleBounds: false, children: react.Children.toArray(children).map((child) => react.isValidElement(child)
2904
- ? react.cloneElement(child, { setItemFormPopup, itemFormPopup, clusterRef })
2872
+ return (jsxRuntime.jsxs("div", { className: `tw-h-full ${selectNewItemPosition != null ? 'crosshair-cursor-enabled' : undefined}`, children: [jsxRuntime.jsx(reactRouterDom.Outlet, {}), jsxRuntime.jsxs(Control, { position: 'topLeft', zIndex: '1000', absolute: true, children: [jsxRuntime.jsx(SearchControl, {}), jsxRuntime.jsx(TagsControl, {})] }), jsxRuntime.jsxs(Control, { position: 'bottomLeft', zIndex: '999', absolute: true, children: [showFilterControl && jsxRuntime.jsx(FilterControl, {}), showLayerControl && jsxRuntime.jsx(LayerControl, {}), showGratitudeControl && jsxRuntime.jsx(GratitudeControl, {})] }), jsxRuntime.jsx(reactLeaflet.TileLayer, { maxZoom: 19, attribution: '\u00A9 <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors', url: 'https://tile.osmand.net/hd/{z}/{x}/{y}.png' }), jsxRuntime.jsx(MarkerClusterGroup, { ref: (r) => setClusterRef(r), showCoverageOnHover: true, chunkedLoading: true, maxClusterRadius: 50, removeOutsideVisibleBounds: false, children: React.Children.toArray(children).map((child) => React.isValidElement(child)
2873
+ ? React.cloneElement(child, { setItemFormPopup, itemFormPopup, clusterRef })
2905
2874
  : child) }), geo && (jsxRuntime.jsx(reactLeaflet.GeoJSON, { data: geo, onEachFeature: onEachFeature, eventHandlers: {
2906
2875
  click: (e) => {
2907
2876
  if (selectNewItemPosition) {
@@ -2981,14 +2950,14 @@ const rgbToHex = (r, g, b) => '#' +
2981
2950
  * @category Input
2982
2951
  */
2983
2952
  function TextAreaInput({ labelTitle, dataField, labelStyle, containerStyle, inputStyle, defaultValue, placeholder, required = true, updateFormValue, }) {
2984
- const ref = react.useRef(null);
2985
- const [inputValue, setInputValue] = react.useState(defaultValue);
2953
+ const ref = React.useRef(null);
2954
+ const [inputValue, setInputValue] = React.useState(defaultValue);
2986
2955
  const tags = useTags();
2987
2956
  const values = [];
2988
2957
  tags.forEach((tag) => {
2989
2958
  values.push({ key: tag.name, value: tag.name, color: tag.color });
2990
2959
  });
2991
- react.useEffect(() => {
2960
+ React.useEffect(() => {
2992
2961
  setInputValue(defaultValue);
2993
2962
  }, [defaultValue]);
2994
2963
  const handleChange = (e) => {
@@ -2998,16 +2967,16 @@ function TextAreaInput({ labelTitle, dataField, labelStyle, containerStyle, inpu
2998
2967
  updateFormValue(newValue);
2999
2968
  }
3000
2969
  };
3001
- return (jsxRuntime.jsxs("div", { className: `tw-form-control tw-w-full ${containerStyle || ''}`, children: [labelTitle ? (jsxRuntime.jsx("label", { className: 'tw-label', children: jsxRuntime.jsx("span", { className: `tw-label-text tw-text-base-content ${labelStyle}`, children: labelTitle }) })) : null, jsxRuntime.jsx("textarea", { required: required, ref: ref, value: inputValue, name: dataField, className: `tw-textarea tw-textarea-bordered tw-w-full tw-leading-5 ${inputStyle || ''}`, placeholder: placeholder || '', onChange: handleChange })] }));
2970
+ return (jsxRuntime.jsxs("div", { className: `tw-form-control tw-w-full ${containerStyle ?? ''}`, children: [labelTitle ? (jsxRuntime.jsx("label", { className: 'tw-label', children: jsxRuntime.jsx("span", { className: `tw-label-text tw-text-base-content ${labelStyle ?? ''}`, children: labelTitle }) })) : null, jsxRuntime.jsx("textarea", { required: required, ref: ref, value: inputValue, name: dataField, className: `tw-textarea tw-textarea-bordered tw-w-full tw-leading-5 ${inputStyle ?? ''}`, placeholder: placeholder ?? '', onChange: handleChange })] }));
3002
2971
  }
3003
2972
 
3004
2973
  /**
3005
2974
  * @category Input
3006
2975
  */
3007
2976
  function TextInput({ labelTitle, labelStyle, type, dataField, containerStyle, inputStyle, defaultValue, placeholder, autocomplete, pattern, required = true, updateFormValue, }) {
3008
- const [inputValue, setInputValue] = react.useState(defaultValue || '');
3009
- react.useEffect(() => {
3010
- setInputValue(defaultValue || '');
2977
+ const [inputValue, setInputValue] = React.useState(defaultValue ?? '');
2978
+ React.useEffect(() => {
2979
+ setInputValue(defaultValue ?? '');
3011
2980
  }, [defaultValue]);
3012
2981
  const handleChange = (e) => {
3013
2982
  const newValue = e.target.value;
@@ -3016,13 +2985,13 @@ function TextInput({ labelTitle, labelStyle, type, dataField, containerStyle, in
3016
2985
  updateFormValue(newValue);
3017
2986
  }
3018
2987
  };
3019
- return (jsxRuntime.jsxs("div", { className: `tw-form-control ${containerStyle}`, children: [labelTitle ? (jsxRuntime.jsx("label", { className: 'tw-label', children: jsxRuntime.jsx("span", { className: `tw-label-text tw-text-base-content ${labelStyle}`, children: labelTitle }) })) : null, jsxRuntime.jsx("input", { required: required, pattern: pattern, type: type || 'text', name: dataField, value: inputValue, placeholder: placeholder || '', autoComplete: autocomplete, onChange: handleChange, className: `tw-input tw-input-bordered tw-w-full ${inputStyle || ''}` })] }));
2988
+ return (jsxRuntime.jsxs("div", { className: `tw-form-control ${containerStyle ?? ''}`, children: [labelTitle ? (jsxRuntime.jsx("label", { className: 'tw-label', children: jsxRuntime.jsx("span", { className: `tw-label-text tw-text-base-content ${labelStyle ?? ''}`, children: labelTitle }) })) : null, jsxRuntime.jsx("input", { required: required, pattern: pattern, type: type ?? 'text', name: dataField, value: inputValue, placeholder: placeholder ?? '', autoComplete: autocomplete, onChange: handleChange, className: `tw-input tw-input-bordered tw-w-full ${inputStyle ?? ''}` })] }));
3020
2989
  }
3021
2990
 
3022
2991
  function ItemFormPopup(props) {
3023
- const [spinner, setSpinner] = react.useState(false);
3024
- const [popupTitle, setPopupTitle] = react.useState('');
3025
- const formRef = react.useRef(null);
2992
+ const [spinner, setSpinner] = React.useState(false);
2993
+ const [popupTitle, setPopupTitle] = React.useState('');
2994
+ const formRef = React.useRef(null);
3026
2995
  const map = reactLeaflet.useMap();
3027
2996
  const addItem = useAddItem();
3028
2997
  const updateItem = useUpdateItem();
@@ -3041,6 +3010,11 @@ function ItemFormPopup(props) {
3041
3010
  });
3042
3011
  formItem.position = { type: 'Point', coordinates: [props.position.lng, props.position.lat] };
3043
3012
  evt.preventDefault();
3013
+ const name = formItem.name ? formItem.name : user?.first_name;
3014
+ if (!name) {
3015
+ reactToastify.toast.error('Name is must be defined');
3016
+ return;
3017
+ }
3044
3018
  setSpinner(true);
3045
3019
  formItem.text &&
3046
3020
  formItem.text
@@ -3072,18 +3046,18 @@ function ItemFormPopup(props) {
3072
3046
  map.closePopup();
3073
3047
  }
3074
3048
  else {
3075
- const item = items.find((i) => i.user_created?.id === user?.id && i.layer?.itemType.name === props.layer.itemType.name);
3049
+ const item = items.find((i) => i.user_created?.id === user?.id && i.layer?.id === props.layer.id);
3076
3050
  const uuid = crypto.randomUUID();
3077
3051
  let success = false;
3078
3052
  try {
3079
- props.layer.onlyOnePerOwner &&
3053
+ props.layer.userProfileLayer &&
3080
3054
  item &&
3081
3055
  (await props.layer.api?.updateItem({ ...formItem, id: item.id }));
3082
- (!props.layer.onlyOnePerOwner || !item) &&
3056
+ (!props.layer.userProfileLayer || !item) &&
3083
3057
  (await props.layer.api?.createItem({
3084
3058
  ...formItem,
3059
+ name,
3085
3060
  id: uuid,
3086
- name: formItem.name ? formItem.name : user?.first_name,
3087
3061
  }));
3088
3062
  success = true;
3089
3063
  // eslint-disable-next-line no-catch-all/no-catch-all
@@ -3092,14 +3066,13 @@ function ItemFormPopup(props) {
3092
3066
  reactToastify.toast.error(error.toString());
3093
3067
  }
3094
3068
  if (success) {
3095
- if (props.layer.onlyOnePerOwner && item)
3069
+ if (props.layer.userProfileLayer && item)
3096
3070
  updateItem({ ...item, ...formItem });
3097
- if (!props.layer.onlyOnePerOwner || !item) {
3071
+ if (!props.layer.userProfileLayer || !item) {
3098
3072
  addItem({
3099
3073
  ...formItem,
3100
3074
  name: (formItem.name ? formItem.name : user?.first_name) ?? '',
3101
3075
  user_created: user ?? undefined,
3102
- type: props.layer.itemType,
3103
3076
  id: uuid,
3104
3077
  layer: props.layer,
3105
3078
  public_edit: !user,
@@ -3118,7 +3091,7 @@ function ItemFormPopup(props) {
3118
3091
  formRef.current.reset();
3119
3092
  }
3120
3093
  };
3121
- react.useEffect(() => {
3094
+ React.useEffect(() => {
3122
3095
  resetPopup();
3123
3096
  }, [props.position]);
3124
3097
  return (jsxRuntime.jsx(reactLeaflet.Popup, { minWidth: 275, maxWidth: 275, autoPanPadding: [20, 80], eventHandlers: {
@@ -3127,8 +3100,8 @@ function ItemFormPopup(props) {
3127
3100
  resetPopup();
3128
3101
  }, 100);
3129
3102
  },
3130
- }, position: props.position, children: jsxRuntime.jsxs("form", { ref: formRef, onReset: resetPopup, autoComplete: 'off', onSubmit: (e) => handleSubmit(e), children: [props.item ? (jsxRuntime.jsx("div", { className: 'tw-h-3' })) : (jsxRuntime.jsx("div", { className: 'tw-flex tw-justify-center', children: jsxRuntime.jsx("b", { className: 'tw-text-xl tw-text-center tw-font-bold', children: props.layer.menuText }) })), props.children ? (react.Children.toArray(props.children).map((child) => react.isValidElement(child)
3131
- ? react.cloneElement(child, {
3103
+ }, position: props.position, children: jsxRuntime.jsxs("form", { ref: formRef, onReset: resetPopup, autoComplete: 'off', onSubmit: (e) => handleSubmit(e), children: [props.item ? (jsxRuntime.jsx("div", { className: 'tw-h-3' })) : (jsxRuntime.jsx("div", { className: 'tw-flex tw-justify-center', children: jsxRuntime.jsx("b", { className: 'tw-text-xl tw-text-center tw-font-bold', children: props.layer.menuText }) })), props.children ? (React.Children.toArray(props.children).map((child) => React.isValidElement(child)
3104
+ ? React.cloneElement(child, {
3132
3105
  item: props.item,
3133
3106
  key: props.position.toString(),
3134
3107
  setPopupTitle,
@@ -3170,13 +3143,80 @@ const calculateTimeDifference = (time) => {
3170
3143
  };
3171
3144
  };
3172
3145
 
3146
+ function EllipsisVerticalIcon({
3147
+ title,
3148
+ titleId,
3149
+ ...props
3150
+ }, svgRef) {
3151
+ return /*#__PURE__*/React__namespace.createElement("svg", Object.assign({
3152
+ xmlns: "http://www.w3.org/2000/svg",
3153
+ viewBox: "0 0 16 16",
3154
+ fill: "currentColor",
3155
+ "aria-hidden": "true",
3156
+ "data-slot": "icon",
3157
+ ref: svgRef,
3158
+ "aria-labelledby": titleId
3159
+ }, props), title ? /*#__PURE__*/React__namespace.createElement("title", {
3160
+ id: titleId
3161
+ }, title) : null, /*#__PURE__*/React__namespace.createElement("path", {
3162
+ d: "M8 2a1.5 1.5 0 1 1 0 3 1.5 1.5 0 0 1 0-3ZM8 6.5a1.5 1.5 0 1 1 0 3 1.5 1.5 0 0 1 0-3ZM9.5 12.5a1.5 1.5 0 1 0-3 0 1.5 1.5 0 0 0 3 0Z"
3163
+ }));
3164
+ }
3165
+ const ForwardRef$9 = /*#__PURE__*/ React__namespace.forwardRef(EllipsisVerticalIcon);
3166
+
3167
+ function PencilIcon({
3168
+ title,
3169
+ titleId,
3170
+ ...props
3171
+ }, svgRef) {
3172
+ return /*#__PURE__*/React__namespace.createElement("svg", Object.assign({
3173
+ xmlns: "http://www.w3.org/2000/svg",
3174
+ viewBox: "0 0 24 24",
3175
+ fill: "currentColor",
3176
+ "aria-hidden": "true",
3177
+ "data-slot": "icon",
3178
+ ref: svgRef,
3179
+ "aria-labelledby": titleId
3180
+ }, props), title ? /*#__PURE__*/React__namespace.createElement("title", {
3181
+ id: titleId
3182
+ }, title) : null, /*#__PURE__*/React__namespace.createElement("path", {
3183
+ d: "M21.731 2.269a2.625 2.625 0 0 0-3.712 0l-1.157 1.157 3.712 3.712 1.157-1.157a2.625 2.625 0 0 0 0-3.712ZM19.513 8.199l-3.712-3.712-12.15 12.15a5.25 5.25 0 0 0-1.32 2.214l-.8 2.685a.75.75 0 0 0 .933.933l2.685-.8a5.25 5.25 0 0 0 2.214-1.32L19.513 8.2Z"
3184
+ }));
3185
+ }
3186
+ const ForwardRef$8 = /*#__PURE__*/ React__namespace.forwardRef(PencilIcon);
3187
+
3188
+ function TrashIcon({
3189
+ title,
3190
+ titleId,
3191
+ ...props
3192
+ }, svgRef) {
3193
+ return /*#__PURE__*/React__namespace.createElement("svg", Object.assign({
3194
+ xmlns: "http://www.w3.org/2000/svg",
3195
+ viewBox: "0 0 24 24",
3196
+ fill: "currentColor",
3197
+ "aria-hidden": "true",
3198
+ "data-slot": "icon",
3199
+ ref: svgRef,
3200
+ "aria-labelledby": titleId
3201
+ }, props), title ? /*#__PURE__*/React__namespace.createElement("title", {
3202
+ id: titleId
3203
+ }, title) : null, /*#__PURE__*/React__namespace.createElement("path", {
3204
+ fillRule: "evenodd",
3205
+ d: "M16.5 4.478v.227a48.816 48.816 0 0 1 3.878.512.75.75 0 1 1-.256 1.478l-.209-.035-1.005 13.07a3 3 0 0 1-2.991 2.77H8.084a3 3 0 0 1-2.991-2.77L4.087 6.66l-.209.035a.75.75 0 0 1-.256-1.478A48.567 48.567 0 0 1 7.5 4.705v-.227c0-1.564 1.213-2.9 2.816-2.951a52.662 52.662 0 0 1 3.369 0c1.603.051 2.815 1.387 2.815 2.951Zm-6.136-1.452a51.196 51.196 0 0 1 3.273 0C14.39 3.05 15 3.684 15 4.478v.113a49.488 49.488 0 0 0-6 0v-.113c0-.794.609-1.428 1.364-1.452Zm-.355 5.945a.75.75 0 1 0-1.5.058l.347 9a.75.75 0 1 0 1.499-.058l-.346-9Zm5.48.058a.75.75 0 1 0-1.498-.058l-.347 9a.75.75 0 0 0 1.5.058l.345-9Z",
3206
+ clipRule: "evenodd"
3207
+ }));
3208
+ }
3209
+ const ForwardRef$7 = /*#__PURE__*/ React__namespace.forwardRef(TrashIcon);
3210
+
3211
+ var TargetDotSVG = 'data:image/svg+xml;base64,PHN2ZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPSdjdXJyZW50Q29sb3InCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPSdjdXJyZW50Q29sb3InCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2VXaWR0aD0nMCcKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9JzAgMCA1MTIgNTEyJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPSd0dy13LTUgdHctaC01JwogICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJwogICAgICAgICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9J00yNTYgMGMxNy43IDAgMzIgMTQuMyAzMiAzMlY0Mi40YzkzLjcgMTMuOSAxNjcuNyA4OCAxODEuNiAxODEuNkg0ODBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJINDY5LjZjLTEzLjkgOTMuNy04OCAxNjcuNy0xODEuNiAxODEuNlY0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWNDY5LjZDMTMwLjMgNDU1LjcgNTYuMyAzODEuNyA0Mi40IDI4OEgzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMkg0Mi40QzU2LjMgMTMwLjMgMTMwLjMgNTYuMyAyMjQgNDIuNFYzMmMwLTE3LjcgMTQuMy0zMiAzMi0zMnpNMTA3LjQgMjg4YzEyLjUgNTguMyA1OC40IDEwNC4xIDExNi42IDExNi42VjM4NGMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMydjIwLjZjNTguMy0xMi41IDEwNC4xLTU4LjQgMTE2LjYtMTE2LjZIMzg0Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyaDIwLjZDMzkyLjEgMTY1LjcgMzQ2LjMgMTE5LjkgMjg4IDEwNy40VjEyOGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYxMDcuNEMxNjUuNyAxMTkuOSAxMTkuOSAxNjUuNyAxMDcuNCAyMjRIMTI4YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDEwNy40ek0yNTYgMjI0YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHonPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz4=';
3212
+
3173
3213
  const isClickInsideRectangle = (e, element) => {
3174
3214
  const r = element.getBoundingClientRect();
3175
3215
  return e.clientX > r.left && e.clientX < r.right && e.clientY > r.top && e.clientY < r.bottom;
3176
3216
  };
3177
3217
  const DialogModal = ({ title, isOpened, onClose, children, showCloseButton = true, closeOnClickOutside = true, className, }) => {
3178
- const ref = react.useRef(null);
3179
- react.useEffect(() => {
3218
+ const ref = React.useRef(null);
3219
+ React.useEffect(() => {
3180
3220
  if (isOpened) {
3181
3221
  ref.current?.showModal();
3182
3222
  ref.current?.classList.remove('tw-hidden');
@@ -3196,19 +3236,19 @@ const DialogModal = ({ title, isOpened, onClose, children, showCloseButton = tru
3196
3236
  };
3197
3237
 
3198
3238
  function HeaderView({ item, api, editCallback, deleteCallback, setPositionCallback, loading, hideMenu = false, big = false, truncateSubname = true, hideSubname = false, showAddress = false, }) {
3199
- const [modalOpen, setModalOpen] = react.useState(false);
3239
+ const [modalOpen, setModalOpen] = React.useState(false);
3200
3240
  const hasUserPermission = useHasUserPermission();
3201
3241
  const navigate = reactRouterDom.useNavigate();
3202
3242
  const appState = useAppState();
3203
- const [imageLoaded, setImageLoaded] = react.useState(false);
3204
- react.useEffect(() => {
3243
+ const [imageLoaded, setImageLoaded] = React.useState(false);
3244
+ React.useEffect(() => {
3205
3245
  setImageLoaded(false);
3206
3246
  }, [item]);
3207
3247
  const avatar = item.image &&
3208
3248
  appState.assetsApi.url + item.image + `${big ? '?width=160&heigth=160' : '?width=80&heigth=80'}`;
3209
3249
  const title = item.name;
3210
3250
  const subtitle = item.subname;
3211
- const [address] = react.useState('');
3251
+ const [address] = React.useState('');
3212
3252
  const params = new URLSearchParams(window.location.search);
3213
3253
  const openDeleteModal = async (event) => {
3214
3254
  setModalOpen(true);
@@ -3217,29 +3257,29 @@ function HeaderView({ item, api, editCallback, deleteCallback, setPositionCallba
3217
3257
  return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsxs("div", { className: 'tw-flex tw-flex-row', children: [jsxRuntime.jsx("div", { className: 'tw-grow tw-max-w-[calc(100%-60px)] }', children: jsxRuntime.jsxs("div", { className: 'flex items-center', children: [avatar && (jsxRuntime.jsx("div", { className: 'tw-avatar', children: jsxRuntime.jsxs("div", { className: `${big ? 'tw-w-20' : 'tw-w-10'} tw-inline tw-items-center tw-justify-center overflow-hidden`, children: [jsxRuntime.jsx("img", { className: 'tw-w-full tw-h-full tw-object-cover tw-rounded-full', src: avatar, alt: item.name + ' logo', onLoad: () => setImageLoaded(true), onError: () => setImageLoaded(false), style: { display: imageLoaded ? 'block' : 'none' } }), !imageLoaded && (jsxRuntime.jsx("div", { className: 'tw-w-full tw-h-full tw-bg-gray-200 tw-rounded-full' }))] }) })), jsxRuntime.jsxs("div", { className: `${avatar ? 'tw-ml-2' : ''} tw-overflow-hidden`, children: [jsxRuntime.jsx("div", { className: `${big ? 'xl:tw-text-3xl tw-text-2xl' : 'tw-text-xl'} tw-font-semibold tw-truncate`, title: title, children: title }), showAddress && address && !hideSubname && (jsxRuntime.jsx("div", { className: `tw-text-xs tw-text-gray-500 ${truncateSubname && 'tw-truncate'}`, children: address })), subtitle && !hideSubname && (jsxRuntime.jsx("div", { className: `tw-text-xs tw-text-gray-500 ${truncateSubname && 'tw-truncate'}`, children: subtitle }))] })] }) }), jsxRuntime.jsx("div", { onClick: (e) => e.stopPropagation(), className: `${big ? 'tw-mt-5' : 'tw-mt-1'}`, children: (api?.deleteItem || item.layer?.api?.updateItem) &&
3218
3258
  (hasUserPermission(api?.collectionName, 'delete', item) ||
3219
3259
  hasUserPermission(api?.collectionName, 'update', item)) &&
3220
- !hideMenu && (jsxRuntime.jsxs("div", { className: 'tw-dropdown tw-dropdown-bottom', children: [jsxRuntime.jsx("label", { tabIndex: 0, className: 'tw-bg-base-100 tw-btn tw-m-1 tw-leading-3 tw-border-none tw-min-h-0 tw-h-6', children: jsxRuntime.jsx("svg", { xmlns: 'http://www.w3.org/2000/svg', className: 'tw-h-5 tw-w-5', viewBox: '0 0 20 20', fill: 'currentColor', children: jsxRuntime.jsx("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' }) }) }), jsxRuntime.jsxs("ul", { tabIndex: 0, className: 'tw-dropdown-content tw-menu tw-p-2 tw-shadow tw-bg-base-100 tw-rounded-box tw-z-1000', children: [api?.updateItem &&
3260
+ !hideMenu && (jsxRuntime.jsxs("div", { className: 'tw-dropdown tw-dropdown-bottom', children: [jsxRuntime.jsx("label", { tabIndex: 0, className: 'tw-bg-base-100 tw-btn tw-m-1 tw-leading-3 tw-border-none tw-min-h-0 tw-h-6', children: jsxRuntime.jsx(ForwardRef$9, { className: 'tw-h-5 tw-w-5' }) }), jsxRuntime.jsxs("ul", { tabIndex: 0, className: 'tw-dropdown-content tw-menu tw-p-2 tw-shadow tw-bg-base-100 tw-rounded-box tw-z-1000', children: [api?.updateItem &&
3221
3261
  hasUserPermission(api.collectionName, 'update', item) &&
3222
3262
  editCallback && (jsxRuntime.jsx("li", { children: jsxRuntime.jsx("a", { className: '!tw-text-base-content tw-cursor-pointer', onClick: (e) => item.layer?.customEditLink
3223
3263
  ? navigate(`${item.layer.customEditLink}${item.layer.customEditParameter ? `/${item.id}${params && '?' + params}` : ''} `)
3224
- : editCallback(e), children: jsxRuntime.jsx("svg", { xmlns: 'http://www.w3.org/2000/svg', className: 'tw-h-5 tw-w-5', viewBox: '0 0 20 20', fill: 'currentColor', children: jsxRuntime.jsx("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' }) }) }) })), api?.updateItem &&
3264
+ : editCallback(e), children: jsxRuntime.jsx(ForwardRef$8, { className: 'tw-h-5 tw-w-5' }) }) })), api?.updateItem &&
3225
3265
  hasUserPermission(api.collectionName, 'update', item) &&
3226
- setPositionCallback && (jsxRuntime.jsx("li", { children: jsxRuntime.jsx("a", { className: '!tw-text-base-content tw-cursor-pointer', onClick: setPositionCallback, children: jsxRuntime.jsx("svg", { stroke: 'currentColor', fill: 'currentColor', strokeWidth: '0', viewBox: '0 0 512 512', className: 'tw-w-5 tw-h-5', xmlns: 'http://www.w3.org/2000/svg', children: jsxRuntime.jsx("path", { d: 'M256 0c17.7 0 32 14.3 32 32V42.4c93.7 13.9 167.7 88 181.6 181.6H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H469.6c-13.9 93.7-88 167.7-181.6 181.6V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V469.6C130.3 455.7 56.3 381.7 42.4 288H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H42.4C56.3 130.3 130.3 56.3 224 42.4V32c0-17.7 14.3-32 32-32zM107.4 288c12.5 58.3 58.4 104.1 116.6 116.6V384c0-17.7 14.3-32 32-32s32 14.3 32 32v20.6c58.3-12.5 104.1-58.4 116.6-116.6H384c-17.7 0-32-14.3-32-32s14.3-32 32-32h20.6C392.1 165.7 346.3 119.9 288 107.4V128c0 17.7-14.3 32-32 32s-32-14.3-32-32V107.4C165.7 119.9 119.9 165.7 107.4 224H128c17.7 0 32 14.3 32 32s-14.3 32-32 32H107.4zM256 224a32 32 0 1 1 0 64 32 32 0 1 1 0-64z' }) }) }) })), api?.deleteItem &&
3266
+ setPositionCallback && (jsxRuntime.jsx("li", { children: jsxRuntime.jsx("a", { className: '!tw-text-base-content tw-cursor-pointer', onClick: setPositionCallback, children: jsxRuntime.jsx("img", { src: TargetDotSVG, alt: 'Position', className: 'tw-w-5 tw-h-5' }) }) })), api?.deleteItem &&
3227
3267
  hasUserPermission(api.collectionName, 'delete', item) &&
3228
- deleteCallback && (jsxRuntime.jsx("li", { children: jsxRuntime.jsx("a", { className: 'tw-cursor-pointer !tw-text-error', onClick: openDeleteModal, children: loading ? (jsxRuntime.jsx("span", { className: 'tw-loading tw-loading-spinner tw-loading-sm' })) : (jsxRuntime.jsx("svg", { xmlns: 'http://www.w3.org/2000/svg', className: 'tw-h-5 tw-w-5', viewBox: '0 0 20 20', fill: 'currentColor', children: jsxRuntime.jsx("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' }) })) }) }))] })] })) })] }), jsxRuntime.jsx(DialogModal, { isOpened: modalOpen, title: 'Are you sure?', showCloseButton: false, onClose: () => setModalOpen(false), children: jsxRuntime.jsxs("div", { onClick: (e) => e.stopPropagation(), children: [jsxRuntime.jsxs("span", { children: ["Do you want to delete ", jsxRuntime.jsx("b", { children: item.name }), "?"] }), jsxRuntime.jsx("div", { className: 'tw-grid', children: jsxRuntime.jsxs("div", { className: 'tw-flex tw-justify-between', children: [jsxRuntime.jsx("label", { className: 'tw-btn tw-mt-4 tw-btn-error', onClick: (e) => {
3268
+ deleteCallback && (jsxRuntime.jsx("li", { children: jsxRuntime.jsx("a", { className: 'tw-cursor-pointer !tw-text-error', onClick: openDeleteModal, children: loading ? (jsxRuntime.jsx("span", { className: 'tw-loading tw-loading-spinner tw-loading-sm' })) : (jsxRuntime.jsx(ForwardRef$7, { className: 'tw-h-5 tw-w-5' })) }) }))] })] })) })] }), jsxRuntime.jsx(DialogModal, { isOpened: modalOpen, title: 'Are you sure?', showCloseButton: false, onClose: () => setModalOpen(false), children: jsxRuntime.jsxs("div", { onClick: (e) => e.stopPropagation(), children: [jsxRuntime.jsxs("span", { children: ["Do you want to delete ", jsxRuntime.jsx("b", { children: item.name }), "?"] }), jsxRuntime.jsx("div", { className: 'tw-grid', children: jsxRuntime.jsxs("div", { className: 'tw-flex tw-justify-between', children: [jsxRuntime.jsx("label", { className: 'tw-btn tw-mt-4 tw-btn-error', onClick: (e) => {
3229
3269
  deleteCallback(e);
3230
3270
  setModalOpen(false);
3231
3271
  }, children: "Yes" }), jsxRuntime.jsx("label", { className: 'tw-btn tw-mt-4', onClick: () => setModalOpen(false), children: "No" })] }) })] }) })] }));
3232
3272
  }
3233
3273
 
3234
3274
  // eslint-disable-next-line react/display-name
3235
- const ItemViewPopup = react.forwardRef((props, ref) => {
3275
+ const ItemViewPopup = React.forwardRef((props, ref) => {
3236
3276
  const map = reactLeaflet.useMap();
3237
- const [loading, setLoading] = react.useState(false);
3277
+ const [loading, setLoading] = React.useState(false);
3238
3278
  const removeItem = useRemoveItem();
3239
3279
  const updadateItem = useUpdateItem();
3240
3280
  const navigate = reactRouterDom.useNavigate();
3241
3281
  const setSelectPosition = useSetSelectPosition();
3242
- const [infoExpanded, setInfoExpanded] = react.useState(false);
3282
+ const [infoExpanded, setInfoExpanded] = React.useState(false);
3243
3283
  const handleEdit = (event) => {
3244
3284
  event.stopPropagation();
3245
3285
  map.closePopup();
@@ -3256,9 +3296,9 @@ const ItemViewPopup = react.forwardRef((props, ref) => {
3256
3296
  setLoading(true);
3257
3297
  let success = false;
3258
3298
  try {
3259
- !props.item.layer?.onlyOnePerOwner &&
3299
+ !props.item.layer?.userProfileLayer &&
3260
3300
  (await props.item.layer?.api?.deleteItem(props.item.id));
3261
- props.item.layer?.onlyOnePerOwner &&
3301
+ props.item.layer?.userProfileLayer &&
3262
3302
  (await props.item.layer.api?.updateItem({ id: props.item.id, position: null }));
3263
3303
  success = true;
3264
3304
  // eslint-disable-next-line no-catch-all/no-catch-all
@@ -3268,8 +3308,8 @@ const ItemViewPopup = react.forwardRef((props, ref) => {
3268
3308
  reactToastify.toast.error(error.toString());
3269
3309
  }
3270
3310
  if (success) {
3271
- !props.item.layer?.onlyOnePerOwner && removeItem(props.item);
3272
- props.item.layer?.onlyOnePerOwner && updadateItem({ ...props.item, position: undefined });
3311
+ !props.item.layer?.userProfileLayer && removeItem(props.item);
3312
+ props.item.layer?.userProfileLayer && updadateItem({ ...props.item, position: undefined });
3273
3313
  reactToastify.toast.success('Item deleted');
3274
3314
  }
3275
3315
  setLoading(false);
@@ -3282,15 +3322,15 @@ const ItemViewPopup = react.forwardRef((props, ref) => {
3282
3322
  map.closePopup();
3283
3323
  setSelectPosition(props.item);
3284
3324
  navigate('/');
3285
- }, loading: loading }), jsxRuntime.jsx("div", { className: 'tw-overflow-y-auto tw-overflow-x-hidden tw-max-h-64 fade', children: props.children ? (react.Children.toArray(props.children).map((child) => react.isValidElement(child)
3286
- ? react.cloneElement(child, { item: props.item })
3325
+ }, loading: loading }), jsxRuntime.jsx("div", { className: 'tw-overflow-y-auto tw-overflow-x-hidden tw-max-h-64 fade', children: props.children ? (React.Children.toArray(props.children).map((child) => React.isValidElement(child)
3326
+ ? React.cloneElement(child, { item: props.item })
3287
3327
  : '')) : (jsxRuntime.jsx(TextView, { text: props.item.text, itemId: props.item.id })) }), jsxRuntime.jsxs("div", { className: 'tw-flex -tw-mb-1 tw-flex-row tw-mr-2 tw-mt-1', children: [infoExpanded ? (jsxRuntime.jsx("p", { className: 'tw-italic tw-min-h-[21px] !tw-my-0 tw-text-gray-500', children: `${props.item.date_updated && props.item.date_updated !== props.item.date_created ? 'updated' : 'posted'} ${props.item && props.item.user_created && props.item.user_created.first_name ? `by ${props.item.user_created.first_name}` : ''} ${props.item.date_updated ? timeAgo(props.item.date_updated) : timeAgo(props.item.date_created)}` })) : (jsxRuntime.jsx("p", { className: '!tw-my-0 tw-min-h-[21px] tw-font-bold tw-cursor-pointer tw-text-gray-500', onClick: () => setInfoExpanded(true), children: "\u24D8" })), jsxRuntime.jsx("div", { className: 'tw-grow' })] })] }) }));
3288
3328
  });
3289
3329
 
3290
3330
  /**
3291
3331
  * @category Map
3292
3332
  */
3293
- const Layer = ({ data, children, name = 'places', menuIcon = 'MapPinIcon', menuText = 'add new place', menuColor = '#2E7D32', markerIcon = 'point', markerShape = 'circle', markerDefaultColor = '#777', markerDefaultColor2 = 'RGBA(35, 31, 32, 0.2)', api, itemType, onlyOnePerOwner = false, customEditLink, customEditParameter,
3333
+ const Layer = ({ data, children, name = 'places', menuIcon = 'MapPinIcon', menuText = 'add new place', menuColor = '#2E7D32', markerIcon = 'point', markerShape = 'circle', markerDefaultColor = '#777', markerDefaultColor2 = 'RGBA(35, 31, 32, 0.2)', api, itemType, userProfileLayer = false, customEditLink, customEditParameter,
3294
3334
  // eslint-disable-next-line camelcase
3295
3335
  public_edit_items, listed = true, setItemFormPopup, itemFormPopup, clusterRef, }) => {
3296
3336
  const filterTags = useFilterTags();
@@ -3307,12 +3347,12 @@ public_edit_items, listed = true, setItemFormPopup, itemFormPopup, clusterRef, }
3307
3347
  const selectPosition = useSelectPosition();
3308
3348
  const tags = useTags();
3309
3349
  const addTag = useAddTag();
3310
- const [newTagsToAdd, setNewTagsToAdd] = react.useState([]);
3311
- const [tagsReady, setTagsReady] = react.useState(false);
3350
+ const [newTagsToAdd, setNewTagsToAdd] = React.useState([]);
3351
+ const [tagsReady, setTagsReady] = React.useState(false);
3312
3352
  const isLayerVisible = useIsLayerVisible();
3313
3353
  const isGroupTypeVisible = useIsGroupTypeVisible();
3314
3354
  const visibleGroupTypes = useVisibleGroupType();
3315
- react.useEffect(() => {
3355
+ React.useEffect(() => {
3316
3356
  data &&
3317
3357
  setItemsData({
3318
3358
  data,
@@ -3327,7 +3367,7 @@ public_edit_items, listed = true, setItemFormPopup, itemFormPopup, clusterRef, }
3327
3367
  markerDefaultColor2,
3328
3368
  api,
3329
3369
  itemType,
3330
- onlyOnePerOwner,
3370
+ userProfileLayer,
3331
3371
  // Can we just use editCallback for all cases?
3332
3372
  customEditLink,
3333
3373
  customEditParameter,
@@ -3353,7 +3393,7 @@ public_edit_items, listed = true, setItemFormPopup, itemFormPopup, clusterRef, }
3353
3393
  markerDefaultColor2,
3354
3394
  api,
3355
3395
  itemType,
3356
- onlyOnePerOwner,
3396
+ userProfileLayer,
3357
3397
  customEditLink,
3358
3398
  customEditParameter,
3359
3399
  // eslint-disable-next-line camelcase
@@ -3366,7 +3406,7 @@ public_edit_items, listed = true, setItemFormPopup, itemFormPopup, clusterRef, }
3366
3406
  });
3367
3407
  // eslint-disable-next-line react-hooks/exhaustive-deps
3368
3408
  }, [data, api]);
3369
- react.useEffect(() => {
3409
+ React.useEffect(() => {
3370
3410
  if (tagsReady) {
3371
3411
  const processedTags = {};
3372
3412
  newTagsToAdd.map((newtag) => {
@@ -3440,7 +3480,7 @@ public_edit_items, listed = true, setItemFormPopup, itemFormPopup, clusterRef, }
3440
3480
  selectPosition && setMarkerClicked(item);
3441
3481
  },
3442
3482
  }, icon: MarkerIconFactory(markerShape, color1, color2, item.markerIcon ? item.markerIcon : markerIcon), position: [latitude, longitude], children: [children &&
3443
- react.Children.toArray(children).some((child) => isComponentWithType(child) && child.type.__TYPE === 'ItemView') ? (react.Children.toArray(children).map((child) => isComponentWithType(child) && child.type.__TYPE === 'ItemView' ? (jsxRuntime.jsx(ItemViewPopup, { ref: (r) => {
3483
+ React.Children.toArray(children).some((child) => isComponentWithType(child) && child.type.__TYPE === 'ItemView') ? (React.Children.toArray(children).map((child) => isComponentWithType(child) && child.type.__TYPE === 'ItemView' ? (jsxRuntime.jsx(ItemViewPopup, { ref: (r) => {
3444
3484
  if (!(item.id in leafletRefs && leafletRefs[item.id].popup === r)) {
3445
3485
  r && addPopup(item, r);
3446
3486
  }
@@ -3455,10 +3495,10 @@ public_edit_items, listed = true, setItemFormPopup, itemFormPopup, clusterRef, }
3455
3495
  }), itemFormPopup &&
3456
3496
  itemFormPopup.layer.name === name &&
3457
3497
  (children &&
3458
- react.Children.toArray(children).some((child) => isComponentWithType(child) && child.type.__TYPE === 'ItemForm') ? (react.Children.toArray(children).map((child) => isComponentWithType(child) && child.type.__TYPE === 'ItemForm' ? (jsxRuntime.jsx(ItemFormPopup, { position: itemFormPopup.position, layer: itemFormPopup.layer, setItemFormPopup: setItemFormPopup, item: itemFormPopup.item, children: child }, setItemFormPopup?.name)) : (''))) : (jsxRuntime.jsx(jsxRuntime.Fragment, { children: jsxRuntime.jsx(ItemFormPopup, { position: itemFormPopup.position, layer: itemFormPopup.layer, setItemFormPopup: setItemFormPopup, item: itemFormPopup.item }) })))] }));
3498
+ React.Children.toArray(children).some((child) => isComponentWithType(child) && child.type.__TYPE === 'ItemForm') ? (React.Children.toArray(children).map((child) => isComponentWithType(child) && child.type.__TYPE === 'ItemForm' ? (jsxRuntime.jsx(ItemFormPopup, { position: itemFormPopup.position, layer: itemFormPopup.layer, setItemFormPopup: setItemFormPopup, item: itemFormPopup.item, children: child }, setItemFormPopup?.name)) : (''))) : (jsxRuntime.jsx(jsxRuntime.Fragment, { children: jsxRuntime.jsx(ItemFormPopup, { position: itemFormPopup.position, layer: itemFormPopup.layer, setItemFormPopup: setItemFormPopup, item: itemFormPopup.item }) })))] }));
3459
3499
  };
3460
3500
  function isComponentWithType(node) {
3461
- return react.isValidElement(node) && typeof node.type !== 'string' && '__TYPE' in node.type;
3501
+ return React.isValidElement(node) && typeof node.type !== 'string' && '__TYPE' in node.type;
3462
3502
  }
3463
3503
 
3464
3504
  /**
@@ -3467,7 +3507,7 @@ function isComponentWithType(node) {
3467
3507
  function Tags({ data, api }) {
3468
3508
  const setTagData = useSetTagData();
3469
3509
  const setTagApi = useSetTagApi();
3470
- react.useEffect(() => {
3510
+ React.useEffect(() => {
3471
3511
  data && setTagData(data);
3472
3512
  api && setTagApi(api);
3473
3513
  // eslint-disable-next-line react-hooks/exhaustive-deps
@@ -3477,7 +3517,7 @@ function Tags({ data, api }) {
3477
3517
  const resetFilterTags = useResetFilterTags();
3478
3518
  const tags = useTags();
3479
3519
  const filterTags = useFilterTags();
3480
- react.useEffect(() => {
3520
+ React.useEffect(() => {
3481
3521
  const params = new URLSearchParams(location.search);
3482
3522
  const urlTags = params.get('tags');
3483
3523
  const decodedTags = urlTags ? decodeURIComponent(urlTags) : '';
@@ -3504,7 +3544,7 @@ function Permissions({ data, api, adminRole }) {
3504
3544
  const setPermissionApi = useSetPermissionApi();
3505
3545
  const setAdminRole = useSetAdminRole();
3506
3546
  const { user } = useAuth();
3507
- react.useEffect(() => {
3547
+ React.useEffect(() => {
3508
3548
  adminRole && setAdminRole(adminRole);
3509
3549
  data && setPermissionData(data);
3510
3550
  api && setPermissionApi(api);
@@ -3517,13 +3557,13 @@ function Permissions({ data, api, adminRole }) {
3517
3557
  * @category Map
3518
3558
  */
3519
3559
  const ItemForm = ({ children, item, title, setPopupTitle, }) => {
3520
- react.useEffect(() => {
3560
+ React.useEffect(() => {
3521
3561
  setPopupTitle && title && setPopupTitle(title);
3522
3562
  // eslint-disable-next-line react-hooks/exhaustive-deps
3523
3563
  }, [title]);
3524
3564
  return (jsxRuntime.jsx("div", { children: children
3525
- ? react.Children.toArray(children).map((child) => react.isValidElement(child)
3526
- ? react.cloneElement(child, { item, test: 'test' })
3565
+ ? React.Children.toArray(children).map((child) => React.isValidElement(child)
3566
+ ? React.cloneElement(child, { item, test: 'test' })
3527
3567
  : '')
3528
3568
  : '' }));
3529
3569
  };
@@ -3534,7 +3574,7 @@ ItemForm.__TYPE = 'ItemForm';
3534
3574
  */
3535
3575
  const ItemView = ({ children, item }) => {
3536
3576
  return (jsxRuntime.jsx("div", { children: children
3537
- ? react.Children.toArray(children).map((child) => react.isValidElement(child) ? react.cloneElement(child, { item }) : null)
3577
+ ? React.Children.toArray(children).map((child) => React.isValidElement(child) ? React.cloneElement(child, { item }) : null)
3538
3578
  : null }));
3539
3579
  };
3540
3580
  ItemView.__TYPE = 'ItemView';
@@ -3544,12 +3584,12 @@ ItemView.__TYPE = 'ItemView';
3544
3584
  */
3545
3585
  function SelectBox(props) {
3546
3586
  const { labelTitle, labelDescription, defaultValue, containerStyle, placeholder, labelStyle, options, updateFormValue, } = props;
3547
- const [value, setValue] = react.useState(defaultValue || '');
3587
+ const [value, setValue] = React.useState(defaultValue || '');
3548
3588
  const updateValue = (newValue) => {
3549
3589
  updateFormValue(newValue);
3550
3590
  setValue(newValue);
3551
3591
  };
3552
- return (jsxRuntime.jsxs("div", { className: `tw-inline-block ${containerStyle}`, children: [labelTitle ? (jsxRuntime.jsx("label", { className: `tw-label ${labelStyle}`, children: jsxRuntime.jsxs("div", { className: 'tw-label-text', children: [labelTitle, labelDescription && (jsxRuntime.jsx("div", { className: 'tw-tooltip tw-tooltip-right', "data-tip": labelDescription, children: jsxRuntime.jsx(InformationCircleIcon, { className: 'tw-w-4 tw-h-4' }) }))] }) })) : (''), jsxRuntime.jsxs("select", { className: 'tw-select tw-select-bordered tw-w-full', value: value, onChange: (e) => updateValue(e.target.value), children: [jsxRuntime.jsx("option", { disabled: true, value: 'PLACEHOLDER', children: placeholder }), options.map((o, k) => {
3592
+ return (jsxRuntime.jsxs("div", { className: `tw-inline-block ${containerStyle ?? ''}`, children: [labelTitle ? (jsxRuntime.jsx("label", { className: `tw-label ${labelStyle ?? ''}`, children: jsxRuntime.jsxs("div", { className: 'tw-label-text', children: [labelTitle, labelDescription && (jsxRuntime.jsx("div", { className: 'tw-tooltip tw-tooltip-right', "data-tip": labelDescription, children: jsxRuntime.jsx(InformationCircleIcon, { className: 'tw-w-4 tw-h-4' }) }))] }) })) : (''), jsxRuntime.jsxs("select", { className: 'tw-select tw-select-bordered tw-w-full', value: value, onChange: (e) => updateValue(e.target.value), children: [jsxRuntime.jsx("option", { disabled: true, value: 'PLACEHOLDER', children: placeholder }), options.map((o, k) => {
3553
3593
  return (jsxRuntime.jsx("option", { value: o.value || o.name, children: o.name }, k));
3554
3594
  })] })] }));
3555
3595
  }
@@ -3582,34 +3622,57 @@ const PopupCheckboxInput = ({ dataField, label, item, }) => {
3582
3622
  return (jsxRuntime.jsxs("label", { htmlFor: item?.id, className: 'tw-label tw-justify-normal tw-pt-1 tw-pb-1', children: [jsxRuntime.jsx("input", { id: item?.id, type: 'checkbox', name: dataField, className: 'tw-checkbox tw-checkbox-xs tw-checkbox-success', checked: item?.public_edit }), jsxRuntime.jsx("span", { className: 'tw-text-sm tw-label-text tw-mx-2 tw-cursor-pointer', children: label })] }));
3583
3623
  };
3584
3624
 
3625
+ function CalendarDaysIcon({
3626
+ title,
3627
+ titleId,
3628
+ ...props
3629
+ }, svgRef) {
3630
+ return /*#__PURE__*/React__namespace.createElement("svg", Object.assign({
3631
+ xmlns: "http://www.w3.org/2000/svg",
3632
+ viewBox: "0 0 24 24",
3633
+ fill: "currentColor",
3634
+ "aria-hidden": "true",
3635
+ "data-slot": "icon",
3636
+ ref: svgRef,
3637
+ "aria-labelledby": titleId
3638
+ }, props), title ? /*#__PURE__*/React__namespace.createElement("title", {
3639
+ id: titleId
3640
+ }, title) : null, /*#__PURE__*/React__namespace.createElement("path", {
3641
+ d: "M12.75 12.75a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0ZM7.5 15.75a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5ZM8.25 17.25a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0ZM9.75 15.75a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5ZM10.5 17.25a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0ZM12 15.75a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5ZM12.75 17.25a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0ZM14.25 15.75a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5ZM15 17.25a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0ZM16.5 15.75a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5ZM15 12.75a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0ZM16.5 13.5a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5Z"
3642
+ }), /*#__PURE__*/React__namespace.createElement("path", {
3643
+ fillRule: "evenodd",
3644
+ d: "M6.75 2.25A.75.75 0 0 1 7.5 3v1.5h9V3A.75.75 0 0 1 18 3v1.5h.75a3 3 0 0 1 3 3v11.25a3 3 0 0 1-3 3H5.25a3 3 0 0 1-3-3V7.5a3 3 0 0 1 3-3H6V3a.75.75 0 0 1 .75-.75Zm13.5 9a1.5 1.5 0 0 0-1.5-1.5H5.25a1.5 1.5 0 0 0-1.5 1.5v7.5a1.5 1.5 0 0 0 1.5 1.5h13.5a1.5 1.5 0 0 0 1.5-1.5v-7.5Z",
3645
+ clipRule: "evenodd"
3646
+ }));
3647
+ }
3648
+ const ForwardRef$6 = /*#__PURE__*/ React__namespace.forwardRef(CalendarDaysIcon);
3649
+
3585
3650
  /**
3586
3651
  * @category Map
3587
3652
  */
3588
3653
  const StartEndView = ({ item }) => {
3589
- return (jsxRuntime.jsxs("div", { className: 'tw-flex tw-flex-row tw-mb-4 tw-mt-1', children: [jsxRuntime.jsxs("div", { className: 'tw-basis-2/5 tw-flex tw-flex-row', children: [jsxRuntime.jsx("svg", { xmlns: 'http://www.w3.org/2000/svg', className: 'tw-h-4 tw-w-4 tw-mr-2', fill: 'none', viewBox: '0 0 24 24', stroke: 'currentColor', strokeWidth: 2, children: jsxRuntime.jsx("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' }) }), jsxRuntime.jsx("time", { className: 'tw-align-middle', dateTime: item && item.start ? item.start.substring(0, 10) : '', children: item && item.start ? new Date(item.start).toLocaleDateString() : '' })] }), jsxRuntime.jsx("div", { className: 'tw-basis-1/5 tw-place-content-center', children: jsxRuntime.jsx("span", { children: "-" }) }), jsxRuntime.jsxs("div", { className: 'tw-basis-2/5 tw-flex tw-flex-row', children: [jsxRuntime.jsx("svg", { xmlns: 'http://www.w3.org/2000/svg', className: 'tw-h-4 tw-w-4 tw-mr-2', fill: 'none', viewBox: '0 0 24 24', stroke: 'currentColor', strokeWidth: 2, children: jsxRuntime.jsx("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' }) }), jsxRuntime.jsx("time", { className: 'tw-align-middle', dateTime: item && item.end ? item.end.substring(0, 10) : '', children: item && item.end ? new Date(item.end).toLocaleDateString() : '' })] })] }));
3654
+ return (jsxRuntime.jsxs("div", { className: 'tw-flex tw-flex-row tw-mb-4 tw-mt-1', children: [jsxRuntime.jsxs("div", { className: 'tw-basis-2/5 tw-flex tw-flex-row', children: [jsxRuntime.jsx(ForwardRef$6, { className: 'tw-h-4 tw-w-4 tw-mr-2' }), jsxRuntime.jsx("time", { className: 'tw-align-middle', dateTime: item && item.start ? item.start.substring(0, 10) : '', children: item && item.start ? new Date(item.start).toLocaleDateString() : '' })] }), jsxRuntime.jsx("div", { className: 'tw-basis-1/5 tw-place-content-center', children: jsxRuntime.jsx("span", { children: "-" }) }), jsxRuntime.jsxs("div", { className: 'tw-basis-2/5 tw-flex tw-flex-row', children: [jsxRuntime.jsx(ForwardRef$6, { className: 'tw-h-4 tw-w-4 tw-mr-2' }), jsxRuntime.jsx("time", { className: 'tw-align-middle', dateTime: item && item.end ? item.end.substring(0, 10) : '', children: item && item.end ? new Date(item.end).toLocaleDateString() : '' })] })] }));
3590
3655
  };
3591
3656
 
3592
- function NavBar({ appName, userType }) {
3657
+ function NavBar({ appName }) {
3593
3658
  const { isAuthenticated, user, logout } = useAuth();
3594
- const [userProfile, setUserProfile] = react.useState({});
3659
+ const [userProfile, setUserProfile] = React.useState({});
3595
3660
  const items = useItems();
3596
- react.useEffect(() => {
3597
- const profile = user &&
3598
- items.find((i) => i.user_created?.id === user.id && i.layer?.itemType.name === userType);
3661
+ React.useEffect(() => {
3662
+ const profile = user && items.find((i) => i.user_created?.id === user.id && i.layer?.userProfileLayer);
3599
3663
  profile
3600
3664
  ? setUserProfile(profile)
3601
3665
  : setUserProfile({ id: crypto.randomUUID(), name: user?.first_name ?? '', text: '' });
3602
- // eslint-disable-next-line react-hooks/exhaustive-deps
3603
3666
  }, [user, items]);
3604
3667
  // useEffect(() => {}, [userProfile])
3605
- const nameRef = react.useRef(null);
3606
- const [nameWidth, setNameWidth] = react.useState(0);
3668
+ const nameRef = React.useRef(null);
3669
+ const [nameWidth, setNameWidth] = React.useState(0);
3607
3670
  const location = reactRouterDom.useLocation();
3608
- const [showNav, setShowNav] = react.useState(false);
3609
- react.useEffect(() => {
3671
+ const [showNav, setShowNav] = React.useState(false);
3672
+ React.useEffect(() => {
3610
3673
  showNav && nameRef.current && setNameWidth(nameRef.current.scrollWidth);
3611
3674
  }, [nameRef, appName, showNav]);
3612
- react.useEffect(() => {
3675
+ React.useEffect(() => {
3613
3676
  const params = new URLSearchParams(location.search);
3614
3677
  const embedded = params.get('embedded');
3615
3678
  embedded !== 'true' && setShowNav(true);
@@ -3632,46 +3695,43 @@ function NavBar({ appName, userType }) {
3632
3695
  });
3633
3696
  };
3634
3697
  if (showNav) {
3635
- return (jsxRuntime.jsx(jsxRuntime.Fragment, { children: jsxRuntime.jsxs("div", { className: 'tw-navbar tw-bg-base-100 tw-z-[9998] tw-shadow-xl tw-relative', children: [jsxRuntime.jsx("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', children: jsxRuntime.jsx("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', children: jsxRuntime.jsx("path", { strokeLinecap: 'round', strokeLinejoin: 'round', strokeWidth: '2', d: 'M4 6h16M4 12h16M4 18h16' }) }) }), jsxRuntime.jsx("div", { className: 'tw-flex-1 tw-mr-2', children: jsxRuntime.jsxs("div", { className: 'tw-flex-1 tw-truncate tw-grid tw-grid-flow-col', style: { maxWidth: nameWidth + 60 }, children: [jsxRuntime.jsx(reactRouterDom.Link, { className: 'tw-btn tw-btn-ghost tw-px-2 tw-normal-case tw-text-xl tw-flex-1 tw-truncate', to: '/', children: jsxRuntime.jsx("h1", { ref: nameRef, className: 'tw-truncate', children: appName }) }), jsxRuntime.jsx("button", { className: 'tw-btn tw-px-2 tw-btn-ghost', onClick: () => window.my_modal_3.showModal(), children: jsxRuntime.jsx(QuestionMarkIcon, { className: 'tw-h-5 tw-w-5' }) })] }) }), isAuthenticated ? (jsxRuntime.jsxs("div", { className: 'tw-flex-none', children: [jsxRuntime.jsxs(reactRouterDom.Link, { to: `${userProfile.id && '/item/' + userProfile.id}`, className: 'tw-flex tw-items-center', children: [userProfile.image && (jsxRuntime.jsx("div", { className: 'tw-avatar', children: jsxRuntime.jsx("div", { className: 'tw-w-10 tw-rounded-full', children: jsxRuntime.jsx("img", { src: 'https://api.utopia-lab.org/assets/' + userProfile.image }) }) })), jsxRuntime.jsx("div", { className: 'tw-ml-2 tw-mr-2', children: userProfile.name || user?.first_name })] }), jsxRuntime.jsxs("div", { className: 'tw-dropdown tw-dropdown-end', children: [jsxRuntime.jsx("label", { tabIndex: 0, className: 'tw-btn tw-btn-ghost tw-btn-square', children: jsxRuntime.jsx("svg", { xmlns: 'http://www.w3.org/2000/svg', className: 'tw-h-5 tw-w-5', viewBox: '0 0 20 20', fill: 'currentColor', children: jsxRuntime.jsx("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' }) }) }), jsxRuntime.jsxs("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-[10000]', children: [jsxRuntime.jsx("li", { children: jsxRuntime.jsx(reactRouterDom.Link, { to: `${userProfile.id && '/edit-item/' + userProfile.id}`, children: "Profile" }) }), jsxRuntime.jsx("li", { children: jsxRuntime.jsx(reactRouterDom.Link, { to: '/user-settings', children: "Settings" }) }), jsxRuntime.jsx("li", { children: jsxRuntime.jsx("a", { onClick: () => {
3698
+ return (jsxRuntime.jsx(jsxRuntime.Fragment, { children: jsxRuntime.jsxs("div", { className: 'tw-navbar tw-bg-base-100 tw-z-[9998] tw-shadow-xl tw-relative', children: [jsxRuntime.jsx("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', children: jsxRuntime.jsx(ForwardRef$a, { className: 'tw-inline-block tw-w-5 tw-h-5' }) }), jsxRuntime.jsx("div", { className: 'tw-flex-1 tw-mr-2', children: jsxRuntime.jsxs("div", { className: 'tw-flex-1 tw-truncate tw-grid tw-grid-flow-col', style: { maxWidth: nameWidth + 60 }, children: [jsxRuntime.jsx(reactRouterDom.Link, { className: 'tw-btn tw-btn-ghost tw-px-2 tw-normal-case tw-text-xl tw-flex-1 tw-truncate', to: '/', children: jsxRuntime.jsx("h1", { ref: nameRef, className: 'tw-truncate', children: appName }) }), jsxRuntime.jsx("button", { className: 'tw-btn tw-px-2 tw-btn-ghost', onClick: () => window.my_modal_3.showModal(), children: jsxRuntime.jsx(QuestionMarkIcon, { className: 'tw-h-5 tw-w-5' }) })] }) }), isAuthenticated ? (jsxRuntime.jsxs("div", { className: 'tw-flex-none', children: [jsxRuntime.jsxs(reactRouterDom.Link, { to: `${userProfile.id && '/item/' + userProfile.id}`, className: 'tw-flex tw-items-center', children: [userProfile.image && (jsxRuntime.jsx("div", { className: 'tw-avatar', children: jsxRuntime.jsx("div", { className: 'tw-w-10 tw-rounded-full', children: jsxRuntime.jsx("img", { src: 'https://api.utopia-lab.org/assets/' + userProfile.image }) }) })), jsxRuntime.jsx("div", { className: 'tw-ml-2 tw-mr-2', children: userProfile.name || user?.first_name })] }), jsxRuntime.jsxs("div", { className: 'tw-dropdown tw-dropdown-end', children: [jsxRuntime.jsx("label", { tabIndex: 0, className: 'tw-btn tw-btn-ghost tw-btn-square', children: jsxRuntime.jsx(ForwardRef$9, { className: 'tw-h-5 tw-w-5' }) }), jsxRuntime.jsxs("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-[10000]', children: [jsxRuntime.jsx("li", { children: jsxRuntime.jsx(reactRouterDom.Link, { to: `${userProfile.id && '/edit-item/' + userProfile.id}`, children: "Profile" }) }), jsxRuntime.jsx("li", { children: jsxRuntime.jsx(reactRouterDom.Link, { to: '/user-settings', children: "Settings" }) }), jsxRuntime.jsx("li", { children: jsxRuntime.jsx("a", { onClick: () => {
3636
3699
  void onLogout();
3637
- }, children: "Logout" }) })] })] })] })) : (jsxRuntime.jsxs("div", { children: [jsxRuntime.jsxs("div", { className: 'tw-hidden md:tw-flex', children: [jsxRuntime.jsx(reactRouterDom.Link, { to: '/login', children: jsxRuntime.jsx("div", { className: 'tw-btn tw-btn-ghost tw-mr-2', children: "Login" }) }), jsxRuntime.jsx(reactRouterDom.Link, { to: '/signup', children: jsxRuntime.jsx("div", { className: 'tw-btn tw-btn-ghost tw-mr-2', children: "Sign Up" }) })] }), jsxRuntime.jsxs("div", { className: 'tw-dropdown tw-dropdown-end', children: [jsxRuntime.jsx("label", { tabIndex: 1, className: 'tw-btn tw-btn-ghost md:tw-hidden', children: jsxRuntime.jsx("svg", { xmlns: 'http://www.w3.org/2000/svg', className: 'tw-h-5 tw-w-5', viewBox: '0 0 20 20', fill: 'currentColor', children: jsxRuntime.jsx("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' }) }) }), jsxRuntime.jsxs("ul", { tabIndex: 1, className: 'tw-menu tw-dropdown-content tw-mt-3 tw-p-2 tw-shadow tw-bg-base-100 tw-rounded-box tw-w-52 !tw-z-[10000]', children: [jsxRuntime.jsx("li", { children: jsxRuntime.jsx(reactRouterDom.Link, { to: '/login', children: "Login" }) }), jsxRuntime.jsx("li", { children: jsxRuntime.jsx(reactRouterDom.Link, { to: '/signup', children: "Sign Up" }) })] })] })] }))] }) }));
3700
+ }, children: "Logout" }) })] })] })] })) : (jsxRuntime.jsxs("div", { children: [jsxRuntime.jsxs("div", { className: 'tw-hidden md:tw-flex', children: [jsxRuntime.jsx(reactRouterDom.Link, { to: '/login', children: jsxRuntime.jsx("div", { className: 'tw-btn tw-btn-ghost tw-mr-2', children: "Login" }) }), jsxRuntime.jsx(reactRouterDom.Link, { to: '/signup', children: jsxRuntime.jsx("div", { className: 'tw-btn tw-btn-ghost tw-mr-2', children: "Sign Up" }) })] }), jsxRuntime.jsxs("div", { className: 'tw-dropdown tw-dropdown-end', children: [jsxRuntime.jsx("label", { tabIndex: 1, className: 'tw-btn tw-btn-ghost md:tw-hidden', children: jsxRuntime.jsx(ForwardRef$9, { className: 'tw-h-5 tw-w-5' }) }), jsxRuntime.jsxs("ul", { tabIndex: 1, className: 'tw-menu tw-dropdown-content tw-mt-3 tw-p-2 tw-shadow tw-bg-base-100 tw-rounded-box tw-w-52 !tw-z-[10000]', children: [jsxRuntime.jsx("li", { children: jsxRuntime.jsx(reactRouterDom.Link, { to: '/login', children: "Login" }) }), jsxRuntime.jsx("li", { children: jsxRuntime.jsx(reactRouterDom.Link, { to: '/signup', children: "Sign Up" }) })] })] })] }))] }) }));
3638
3701
  }
3639
3702
  else
3640
3703
  return jsxRuntime.jsx(jsxRuntime.Fragment, {});
3641
3704
  }
3642
3705
 
3643
- const SetAppState = ({ assetsApi, userType, }) => {
3706
+ const SetAppState = ({ assetsApi }) => {
3644
3707
  const setAppState = useSetAppState();
3645
- react.useEffect(() => {
3708
+ React.useEffect(() => {
3646
3709
  setAppState({ assetsApi });
3647
3710
  // eslint-disable-next-line react-hooks/exhaustive-deps
3648
3711
  }, [assetsApi]);
3649
- react.useEffect(() => {
3650
- setAppState({ userType });
3651
- }, [setAppState, userType]);
3652
3712
  return jsxRuntime.jsx(jsxRuntime.Fragment, {});
3653
3713
  };
3654
3714
 
3655
3715
  /**
3656
3716
  * @category AppShell
3657
3717
  */
3658
- function AppShell({ appName, children, assetsApi, userType, }) {
3659
- return (jsxRuntime.jsx(ContextWrapper, { children: jsxRuntime.jsxs("div", { className: 'tw-flex tw-flex-col tw-h-full', children: [jsxRuntime.jsx(SetAppState, { assetsApi: assetsApi, userType: userType }), jsxRuntime.jsx(NavBar, { userType: userType, appName: appName }), jsxRuntime.jsx("div", { id: 'app-content', className: 'tw-flex-grow', children: children })] }) }));
3718
+ function AppShell({ appName, children, assetsApi, }) {
3719
+ return (jsxRuntime.jsx(ContextWrapper, { children: jsxRuntime.jsxs("div", { className: 'tw-flex tw-flex-col tw-h-full', children: [jsxRuntime.jsx(SetAppState, { assetsApi: assetsApi }), jsxRuntime.jsx(NavBar, { appName: appName }), jsxRuntime.jsx("div", { id: 'app-content', className: 'tw-flex-grow', children: children })] }) }));
3660
3720
  }
3661
3721
 
3662
3722
  function SidebarSubmenu({ submenu, name, icon, }) {
3663
3723
  const location = reactRouterDom.useLocation();
3664
- const [isExpanded, setIsExpanded] = react.useState(false);
3724
+ const [isExpanded, setIsExpanded] = React.useState(false);
3665
3725
  /** Open Submenu list if path found in routes, this is for directly loading submenu routes first time */
3666
- react.useEffect(() => {
3667
- if (submenu.filter((m) => {
3726
+ React.useEffect(() => {
3727
+ if (submenu?.filter((m) => {
3668
3728
  return m.path === location.pathname;
3669
3729
  })[0])
3670
3730
  setIsExpanded(true);
3671
3731
  // eslint-disable-next-line react-hooks/exhaustive-deps
3672
3732
  }, []);
3673
3733
  return (jsxRuntime.jsxs("div", { className: 'flex-col', children: [jsxRuntime.jsxs("div", { className: 'w-full', onClick: () => setIsExpanded(!isExpanded), children: [icon, ' ', jsxRuntime.jsxs("span", { className: "group-[&[data-te-sidenav-slim-collapsed='true']]:data-[te-sidenav-slim='false']:hidden", "data-te-sidenav-slim": 'false', children: [name, ' '] }), jsxRuntime.jsx(ChevronDownIcon, { className: 'w-5 h-5 mt-1 float-right delay-400 duration-500 transition-all ' +
3674
- (isExpanded ? 'rotate-180' : '') })] }), jsxRuntime.jsx("div", { className: ' w-full data-[te-collapse-show]:!hidden ' + (isExpanded ? '' : 'hidden'), children: jsxRuntime.jsx("ul", { className: 'menu menu-compact', children: submenu.map((m, k) => {
3734
+ (isExpanded ? 'rotate-180' : '') })] }), jsxRuntime.jsx("div", { className: ' w-full data-[te-collapse-show]:!hidden ' + (isExpanded ? '' : 'hidden'), children: jsxRuntime.jsx("ul", { className: 'menu menu-compact', children: submenu?.map((m, k) => {
3675
3735
  return (jsxRuntime.jsx("li", { children: jsxRuntime.jsxs(reactRouterDom.Link, { to: m.path, className: '', children: [m.icon, jsxRuntime.jsx("span", { className: '', "data-te-sidenav-slim": 'false', children: m.name }), location.pathname === m.path ? (jsxRuntime.jsx("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] }) }, k));
3676
3736
  }) }) })] }));
3677
3737
  }
@@ -3681,40 +3741,44 @@ function SidebarSubmenu({ submenu, name, icon, }) {
3681
3741
  */
3682
3742
  function SideBar({ routes, bottomRoutes }) {
3683
3743
  // prevent react18 from calling useEffect twice
3684
- const init = react.useRef(false);
3744
+ const init = React.useRef(false);
3685
3745
  const location = reactRouterDom.useLocation();
3686
- const [instance, setInstance] = react.useState(null);
3687
- const [slim, setSlim] = react.useState(false);
3746
+ const [instance, setInstance] = React.useState();
3747
+ const [slim, setSlim] = React.useState(false);
3688
3748
  const toggleSlim = () => {
3689
3749
  setSlim(!slim);
3690
- instance.toggleSlim();
3750
+ instance?.toggleSlim();
3691
3751
  };
3692
- react.useEffect(() => {
3752
+ React.useEffect(() => {
3693
3753
  if (!init.current) {
3754
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call
3694
3755
  twElements.initTE({ Sidenav: twElements.Sidenav });
3756
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call
3695
3757
  const instance = twElements.Sidenav.getInstance(document.getElementById('sidenav'));
3696
3758
  setInstance(instance);
3697
3759
  instance.toggleSlim();
3698
3760
  init.current = true;
3699
3761
  }
3700
3762
  }, []);
3701
- const [embedded, setEmbedded] = react.useState(true);
3702
- react.useEffect(() => {
3763
+ const [embedded, setEmbedded] = React.useState(true);
3764
+ React.useEffect(() => {
3703
3765
  const params = new URLSearchParams(location.search);
3704
3766
  const embedded = params.get('embedded');
3705
3767
  embedded !== 'true' && setEmbedded(false);
3706
3768
  }, [location]);
3707
3769
  const params = new URLSearchParams(window.location.search);
3708
3770
  return (jsxRuntime.jsx("nav", { id: 'sidenav', className: `group tw-fixed tw-left-0 ${embedded ? 'tw-mt-0 tw-h-[100dvh]' : 'tw-mt-16 tw-h-[calc(100dvh-64px)]'} tw-top-0 tw-z-[10035] tw--translate-x-full tw-overflow-hidden tw-shadow-xl 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": '180', children: jsxRuntime.jsxs("div", { className: `tw-flex tw-flex-col ${embedded ? 'tw-h-full' : 'tw-h-[calc(100dvh-64px)]'}`, children: [jsxRuntime.jsx("ul", { className: 'tw-menu tw-w-full tw-bg-base-100 tw-text-base-content tw-p-0', "data-te-sidenav-menu-ref": true, children: routes.map((route, k) => {
3709
- return (jsxRuntime.jsx("li", { className: '', children: route.submenu ? (jsxRuntime.jsx(SidebarSubmenu, { ...route })) : (jsxRuntime.jsxs(reactRouterDom.NavLink, { end: true, target: route.blank ? '_blank' : '_self', to: `${route.path}${params && '?' + params}`, className: ({ isActive }) => `${isActive ? 'tw-font-semibold tw-bg-base-200 !tw-rounded-none' : 'tw-font-normal !tw-rounded-none'}`, onClick: () => {
3771
+ return (jsxRuntime.jsx("li", { className: '', children: route.submenu ? (jsxRuntime.jsx(SidebarSubmenu, { ...route })) : (jsxRuntime.jsxs(reactRouterDom.NavLink, { end: true, target: route.blank ? '_blank' : '_self',
3772
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
3773
+ to: `${route.path}${params && '?' + params.toString()}`, className: ({ isActive }) => `${isActive ? 'tw-font-semibold tw-bg-base-200 !tw-rounded-none' : 'tw-font-normal !tw-rounded-none'}`, onClick: () => {
3710
3774
  if (screen.width < 640 && !slim)
3711
- instance.toggle();
3775
+ instance?.toggle();
3712
3776
  }, children: [route.icon, jsxRuntime.jsx("span", { className: "group-[&[data-te-sidenav-slim-collapsed='true']]:data-[te-sidenav-slim='false']:tw-hidden", "data-te-sidenav-slim": 'false', children: route.name }), (location.pathname.includes(route.path) && route.path.length > 1) ||
3713
3777
  location.pathname === route.path ? (jsxRuntime.jsx("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] })) }, k));
3714
3778
  }) }), jsxRuntime.jsx("div", { id: 'slim-toggler', className: 'tw-w-full tw-bg-base-100 tw-flex-1 tw-grid tw-place-items-end', "aria-haspopup": 'true', children: jsxRuntime.jsxs("div", { className: 'tw-w-full', children: [jsxRuntime.jsx("ul", { className: 'tw-menu tw-w-full tw-bg-base-100 tw-text-base-content tw-p-0 tw-mb-0', "data-te-sidenav-menu-ref": true, children: bottomRoutes?.map((route, k) => {
3715
3779
  return (jsxRuntime.jsx("li", { className: '', children: route.submenu ? (jsxRuntime.jsx(SidebarSubmenu, { ...route })) : (jsxRuntime.jsxs(reactRouterDom.NavLink, { end: true, target: route.blank ? '_blank' : '_self', to: route.path, className: ({ isActive }) => `${isActive ? 'tw-font-semibold tw-bg-base-200 !tw-rounded-none' : 'tw-font-normal !tw-rounded-none'}`, onClick: () => {
3716
3780
  if (screen.width < 640 && !slim)
3717
- instance.toggle();
3781
+ instance?.toggle();
3718
3782
  }, children: [route.icon, jsxRuntime.jsx("span", { className: "group-[&[data-te-sidenav-slim-collapsed='true']]:data-[te-sidenav-slim='false']:tw-hidden", "data-te-sidenav-slim": 'false', children: route.name }), (location.pathname.includes(route.path) && route.path.length > 1) ||
3719
3783
  location.pathname === route.path ? (jsxRuntime.jsx("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] })) }, k));
3720
3784
  }) }), jsxRuntime.jsx(ChevronRightIcon, { className: 'tw-w-5 tw-h-5 tw-mb-4 tw-mr-4 tw-cursor-pointer tw-float-right tw-delay-400 tw-duration-500 tw-transition-all ' +
@@ -3732,9 +3796,9 @@ function Content({ children }) {
3732
3796
  * @category AppShell
3733
3797
  */
3734
3798
  const Sitemap = ({ url }) => {
3735
- const [sitemap, setSitemap] = react.useState('');
3799
+ const [sitemap, setSitemap] = React.useState('');
3736
3800
  const items = useItems();
3737
- react.useEffect(() => {
3801
+ React.useEffect(() => {
3738
3802
  if (items.length) {
3739
3803
  const generateSitemap = () => {
3740
3804
  let sitemapXML = '<?xml version="1.0" encoding="UTF-8"?>\n';
@@ -3754,6 +3818,190 @@ const Sitemap = ({ url }) => {
3754
3818
  return (jsxRuntime.jsxs("div", { children: [jsxRuntime.jsx("h1", { children: "Sitemap" }), jsxRuntime.jsx("textarea", { value: sitemap, readOnly: true, rows: items.length + 4, cols: 80 })] }));
3755
3819
  };
3756
3820
 
3821
+ /**
3822
+ * @category Templates
3823
+ */
3824
+ function MapOverlayPage({ children, className, backdrop, card = true, }) {
3825
+ const closeScreen = () => {
3826
+ navigate(`/${window.location.search ? window.location.search : ''}`);
3827
+ };
3828
+ const navigate = reactRouterDom.useNavigate();
3829
+ const overlayRef = React.createRef();
3830
+ const backdropRef = React.createRef();
3831
+ React.useEffect(() => {
3832
+ if (overlayRef.current !== null) {
3833
+ leaflet.DomEvent.disableClickPropagation(overlayRef.current);
3834
+ leaflet.DomEvent.disableScrollPropagation(overlayRef.current);
3835
+ }
3836
+ if (backdropRef.current !== null && backdrop) {
3837
+ leaflet.DomEvent.disableClickPropagation(backdropRef.current);
3838
+ leaflet.DomEvent.disableScrollPropagation(backdropRef.current);
3839
+ }
3840
+ // eslint-disable-next-line react-hooks/exhaustive-deps
3841
+ }, [overlayRef, backdropRef]);
3842
+ return (jsxRuntime.jsx("div", { className: `tw-absolute tw-h-full tw-w-full tw-m-auto ${backdrop && 'tw-z-[2000]'}`, children: jsxRuntime.jsx("div", { ref: backdropRef, className: `${backdrop && 'tw-backdrop-brightness-75'} tw-h-full tw-w-full tw-grid tw-place-items-center tw-m-auto`, children: jsxRuntime.jsxs("div", { ref: overlayRef, className: `${card && 'tw-card tw-card-body'} tw-shadow-xl tw-bg-base-100 tw-p-6 ${className && className} ${!backdrop && 'tw-z-[2000]'} tw-absolute tw-top-0 tw-bottom-0 tw-right-0 tw-left-0 tw-m-auto`, children: [children, jsxRuntime.jsx("button", { className: 'tw-btn tw-btn-sm tw-btn-circle tw-btn-ghost tw-absolute tw-right-2 tw-top-2', onClick: () => closeScreen(), children: "\u2715" })] }) }) }));
3843
+ }
3844
+
3845
+ /**
3846
+ * @category Auth
3847
+ */
3848
+ function LoginPage() {
3849
+ const [email, setEmail] = React.useState('');
3850
+ const [password, setPassword] = React.useState('');
3851
+ const { login, loading } = useAuth();
3852
+ const navigate = reactRouterDom.useNavigate();
3853
+ // eslint-disable-next-line react-hooks/exhaustive-deps
3854
+ const onLogin = async () => {
3855
+ await reactToastify.toast.promise(login({ email, password }), {
3856
+ success: {
3857
+ render({ data }) {
3858
+ navigate('/');
3859
+ return `Hi ${data?.first_name ? data.first_name : 'Traveler'}`;
3860
+ },
3861
+ // other options
3862
+ icon: '✌️',
3863
+ },
3864
+ error: {
3865
+ render({ data }) {
3866
+ return `${data}`;
3867
+ },
3868
+ autoClose: 10000,
3869
+ },
3870
+ pending: 'logging in ...',
3871
+ });
3872
+ };
3873
+ React.useEffect(() => {
3874
+ const keyDownHandler = (event) => {
3875
+ if (event.key === 'Enter') {
3876
+ event.preventDefault();
3877
+ // eslint-disable-next-line @typescript-eslint/no-floating-promises
3878
+ onLogin();
3879
+ }
3880
+ };
3881
+ document.addEventListener('keydown', keyDownHandler);
3882
+ return () => {
3883
+ document.removeEventListener('keydown', keyDownHandler);
3884
+ };
3885
+ }, [onLogin]);
3886
+ return (jsxRuntime.jsxs(MapOverlayPage, { backdrop: true, className: 'tw-max-w-xs tw-h-fit', children: [jsxRuntime.jsx("h2", { className: 'tw-text-2xl tw-font-semibold tw-mb-2 tw-text-center', children: "Login" }), jsxRuntime.jsx("input", { type: 'email', placeholder: 'E-Mail', value: email, onChange: (e) => setEmail(e.target.value), className: 'tw-input tw-input-bordered tw-w-full tw-max-w-xs' }), jsxRuntime.jsx("input", { type: 'password', placeholder: 'Password', onChange: (e) => setPassword(e.target.value), className: 'tw-input tw-input-bordered tw-w-full tw-max-w-xs' }), jsxRuntime.jsx("div", { className: 'tw-text-right tw-text-primary', children: jsxRuntime.jsx(reactRouterDom.Link, { to: '/reset-password', children: jsxRuntime.jsx("span", { className: 'tw-text-sm tw-inline-block hover:tw-text-primary hover:tw-underline hover:tw-cursor-pointer tw-transition tw-duration-200', children: "Forgot Password?" }) }) }), jsxRuntime.jsx("div", { className: 'tw-card-actions', children: jsxRuntime.jsx("button", { className: loading
3887
+ ? 'tw-btn tw-btn-disabled tw-btn-block tw-btn-primary'
3888
+ : 'tw-btn tw-btn-primary tw-btn-block',
3889
+ // eslint-disable-next-line @typescript-eslint/no-misused-promises
3890
+ onClick: () => onLogin(), children: loading ? jsxRuntime.jsx("span", { className: 'tw-loading tw-loading-spinner' }) : 'Login' }) })] }));
3891
+ }
3892
+
3893
+ /**
3894
+ * @category Auth
3895
+ */
3896
+ function SignupPage() {
3897
+ const [email, setEmail] = React.useState('');
3898
+ const [userName, setUserName] = React.useState('');
3899
+ const [password, setPassword] = React.useState('');
3900
+ const { register, loading } = useAuth();
3901
+ const navigate = reactRouterDom.useNavigate();
3902
+ // eslint-disable-next-line react-hooks/exhaustive-deps
3903
+ const onRegister = async () => {
3904
+ await reactToastify.toast.promise(register({ email, password }, userName), {
3905
+ success: {
3906
+ render({ data }) {
3907
+ navigate('/');
3908
+ return `Hi ${data?.first_name ? data.first_name : 'Traveler'}`;
3909
+ },
3910
+ // other options
3911
+ icon: '✌️',
3912
+ },
3913
+ error: {
3914
+ render({ data }) {
3915
+ return `${data}`;
3916
+ },
3917
+ autoClose: 10000,
3918
+ },
3919
+ pending: 'creating new user ...',
3920
+ });
3921
+ };
3922
+ React.useEffect(() => {
3923
+ const keyDownHandler = (event) => {
3924
+ if (event.key === 'Enter') {
3925
+ event.preventDefault();
3926
+ // eslint-disable-next-line @typescript-eslint/no-floating-promises
3927
+ onRegister();
3928
+ }
3929
+ };
3930
+ document.addEventListener('keydown', keyDownHandler);
3931
+ return () => {
3932
+ document.removeEventListener('keydown', keyDownHandler);
3933
+ };
3934
+ }, [onRegister]);
3935
+ return (jsxRuntime.jsxs(MapOverlayPage, { backdrop: true, className: 'tw-max-w-xs tw-h-fit', children: [jsxRuntime.jsx("h2", { className: 'tw-text-2xl tw-font-semibold tw-mb-2 tw-text-center', children: "Sign Up" }), jsxRuntime.jsx("input", { type: 'text', placeholder: 'Name', value: userName, onChange: (e) => setUserName(e.target.value), className: 'tw-input tw-input-bordered tw-w-full tw-max-w-xs' }), jsxRuntime.jsx("input", { type: 'email', placeholder: 'E-Mail', value: email, onChange: (e) => setEmail(e.target.value), className: 'tw-input tw-input-bordered tw-w-full tw-max-w-xs' }), jsxRuntime.jsx("input", { type: 'password', placeholder: 'Password', onChange: (e) => setPassword(e.target.value), className: 'tw-input tw-input-bordered tw-w-full tw-max-w-xs' }), jsxRuntime.jsx("div", { className: 'tw-card-actions tw-mt-4', children: jsxRuntime.jsx("button", { className: loading
3936
+ ? 'tw-btn tw-btn-disabled tw-btn-block tw-btn-primary'
3937
+ : 'tw-btn tw-btn-primary tw-btn-block',
3938
+ // eslint-disable-next-line @typescript-eslint/no-misused-promises
3939
+ onClick: () => onRegister(), children: loading ? jsxRuntime.jsx("span", { className: 'tw-loading tw-loading-spinner' }) : 'Sign Up' }) })] }));
3940
+ }
3941
+
3942
+ /**
3943
+ * @category Auth
3944
+ */
3945
+ function RequestPasswordPage({ resetUrl }) {
3946
+ const [email, setEmail] = React.useState('');
3947
+ const { requestPasswordReset, loading } = useAuth();
3948
+ const navigate = reactRouterDom.useNavigate();
3949
+ const onReset = async () => {
3950
+ await reactToastify.toast.promise(requestPasswordReset(email, resetUrl), {
3951
+ success: {
3952
+ render() {
3953
+ navigate('/');
3954
+ return 'Check your mailbox';
3955
+ },
3956
+ // other options
3957
+ icon: '📬',
3958
+ },
3959
+ error: {
3960
+ render({ data }) {
3961
+ return `${data}`;
3962
+ },
3963
+ },
3964
+ pending: 'sending email ...',
3965
+ });
3966
+ };
3967
+ return (jsxRuntime.jsxs(MapOverlayPage, { backdrop: true, className: 'tw-max-w-xs tw-h-fit', children: [jsxRuntime.jsx("h2", { className: 'tw-text-2xl tw-font-semibold tw-mb-2 tw-text-center', children: "Reset Password" }), jsxRuntime.jsx("input", { type: 'email', placeholder: 'E-Mail', value: email, onChange: (e) => setEmail(e.target.value), className: 'tw-input tw-input-bordered tw-w-full tw-max-w-xs' }), jsxRuntime.jsx("div", { className: 'tw-card-actions tw-mt-4', children: jsxRuntime.jsx("button", { className: loading
3968
+ ? 'tw-btn tw-btn-disabled tw-btn-block tw-btn-primary'
3969
+ : 'tw-btn tw-btn-primary tw-btn-block',
3970
+ // eslint-disable-next-line @typescript-eslint/no-misused-promises
3971
+ onClick: () => onReset(), children: loading ? jsxRuntime.jsx("span", { className: 'tw-loading tw-loading-spinner' }) : 'Send' }) })] }));
3972
+ }
3973
+
3974
+ /**
3975
+ * @category Auth
3976
+ */
3977
+ function SetNewPasswordPage() {
3978
+ const [password, setPassword] = React.useState('');
3979
+ const { passwordReset, loading } = useAuth();
3980
+ const navigate = reactRouterDom.useNavigate();
3981
+ const onReset = async () => {
3982
+ const token = window.location.search.split('token=')[1];
3983
+ await reactToastify.toast.promise(passwordReset(token, password), {
3984
+ success: {
3985
+ render() {
3986
+ navigate('/');
3987
+ return 'New password set';
3988
+ },
3989
+ },
3990
+ error: {
3991
+ render({ data }) {
3992
+ return `${data}`;
3993
+ },
3994
+ },
3995
+ pending: 'setting password ...',
3996
+ });
3997
+ };
3998
+ return (jsxRuntime.jsxs(MapOverlayPage, { backdrop: true, className: 'tw-max-w-xs tw-h-fit', children: [jsxRuntime.jsx("h2", { className: 'tw-text-2xl tw-font-semibold tw-mb-2 tw-text-center', children: "Set new Password" }), jsxRuntime.jsx("input", { type: 'password', placeholder: 'Password', onChange: (e) => setPassword(e.target.value), className: 'tw-input tw-input-bordered tw-w-full tw-max-w-xs' }), jsxRuntime.jsx("div", { className: 'tw-card-actions tw-mt-4', children: jsxRuntime.jsx("button", { className: loading
3999
+ ? 'tw-btn tw-btn-disabled tw-btn-block tw-btn-primary'
4000
+ : 'tw-btn tw-btn-primary tw-btn-block',
4001
+ // eslint-disable-next-line @typescript-eslint/no-misused-promises
4002
+ onClick: () => onReset(), children: loading ? jsxRuntime.jsx("span", { className: 'tw-loading tw-loading-spinner' }) : 'Set' }) })] }));
4003
+ }
4004
+
3757
4005
  function Subtitle({ styleClass, children }) {
3758
4006
  return jsxRuntime.jsx("div", { className: `tw-text-xl tw-font-semibold ${styleClass}`, children: children });
3759
4007
  }
@@ -3803,8 +4051,8 @@ const getLastNewMoon = (date = new Date()) => {
3803
4051
  };
3804
4052
 
3805
4053
  const CircleLayout = ({ items, radius, fontSize, }) => {
3806
- const containerRef = react.useRef(null);
3807
- react.useEffect(() => {
4054
+ const containerRef = React.useRef(null);
4055
+ React.useEffect(() => {
3808
4056
  const container = containerRef.current;
3809
4057
  const itemCount = items.length;
3810
4058
  if (container) {
@@ -3828,7 +4076,7 @@ const CircleLayout = ({ items, radius, fontSize, }) => {
3828
4076
  */
3829
4077
  const MoonCalendar = () => {
3830
4078
  const today = dateFns.startOfToday();
3831
- const [currMonth, setCurrMonth] = react.useState(() => dateFns.format(today, 'MMM-yyyy'));
4079
+ const [currMonth, setCurrMonth] = React.useState(() => dateFns.format(today, 'MMM-yyyy'));
3832
4080
  const firstDayOfMonth = dateFns.parse(currMonth, 'MMM-yyyy', new Date());
3833
4081
  const getPrevMonth = (event) => {
3834
4082
  event.preventDefault();
@@ -3854,22 +4102,47 @@ const MoonCalendar = () => {
3854
4102
  const SelectUser = () => {
3855
4103
  const appState = useAppState();
3856
4104
  const items = useItems();
3857
- const users = items.filter((i) => i.layer?.itemType.name === appState.userType);
3858
- const [selectedUsers, setSelectedUsers] = react.useState([]);
4105
+ const users = items.filter((i) => i.layer?.userProfileLayer);
4106
+ const [selectedUsers, setSelectedUsers] = React.useState([]);
3859
4107
  return (jsxRuntime.jsxs(MapOverlayPage, { backdrop: true, className: 'tw-h-3/4 tw-w-80', children: [jsxRuntime.jsx("div", { className: 'tw-text-center tw-text-xl tw-font-bold tw-mb-4', children: "Gratitude to ..." }), jsxRuntime.jsx("div", { className: 'tw-overflow-x-auto tw-w-full fade', children: jsxRuntime.jsx("table", { className: 'tw-table tw-w-full', children: jsxRuntime.jsx("tbody", { children: users.map((u, k) => {
3860
4108
  return (jsxRuntime.jsxs("tr", { children: [jsxRuntime.jsx("td", { children: jsxRuntime.jsx("input", { type: 'checkbox', onChange: () => setSelectedUsers((prev) => [...prev, u.id]), className: 'tw-checkbox tw-checkbox-sm' }) }), jsxRuntime.jsx("td", { children: jsxRuntime.jsxs("div", { className: 'tw-flex tw-items-center tw-space-x-3', children: [u.image ? (jsxRuntime.jsx("div", { className: 'tw-avatar', children: jsxRuntime.jsx("div", { className: 'tw-mask tw-mask-circle tw-w-8 tw-h-8', children: jsxRuntime.jsx("img", { src: appState.assetsApi.url + u.image + '?width=40&heigth=40', alt: 'Avatar' }) }) })) : (jsxRuntime.jsx("div", { className: 'tw-mask tw-mask-circle tw-text-xl md:tw-text-2xl tw-bg-slate-200 tw-rounded-full tw-w-8 tw-h-8' })), jsxRuntime.jsx("div", { children: jsxRuntime.jsx("div", { className: 'tw-font-bold', children: u.name }) })] }) })] }, k));
3861
4109
  }) }) }) }), jsxRuntime.jsx("div", { className: 'tw-w-full tw-grid tw-mt-4', children: jsxRuntime.jsx(reactRouterDom.Link, { className: 'tw-place-self-center ', to: '/attestation-form' + '?to=' + selectedUsers.map((u) => u, ','), children: jsxRuntime.jsx("button", { className: 'tw-btn tw-px-8', children: "Next" }) }) })] }));
3862
4110
  };
3863
4111
 
4112
+ function PlusIcon({
4113
+ title,
4114
+ titleId,
4115
+ ...props
4116
+ }, svgRef) {
4117
+ return /*#__PURE__*/React__namespace.createElement("svg", Object.assign({
4118
+ xmlns: "http://www.w3.org/2000/svg",
4119
+ fill: "none",
4120
+ viewBox: "0 0 24 24",
4121
+ strokeWidth: 1.5,
4122
+ stroke: "currentColor",
4123
+ "aria-hidden": "true",
4124
+ "data-slot": "icon",
4125
+ ref: svgRef,
4126
+ "aria-labelledby": titleId
4127
+ }, props), title ? /*#__PURE__*/React__namespace.createElement("title", {
4128
+ id: titleId
4129
+ }, title) : null, /*#__PURE__*/React__namespace.createElement("path", {
4130
+ strokeLinecap: "round",
4131
+ strokeLinejoin: "round",
4132
+ d: "M12 4.5v15m7.5-7.5h-15"
4133
+ }));
4134
+ }
4135
+ const ForwardRef$5 = /*#__PURE__*/ React__namespace.forwardRef(PlusIcon);
4136
+
3864
4137
  function PlusButton({ layer, triggerAction, color, collection = 'items', }) {
3865
4138
  const hasUserPermission = useHasUserPermission();
3866
4139
  return (jsxRuntime.jsx(jsxRuntime.Fragment, { children: hasUserPermission(collection, 'create', undefined, layer) && (jsxRuntime.jsx("div", { className: 'tw-dropdown tw-dropdown-top tw-dropdown-end tw-dropdown-hover tw-z-3000 tw-absolute tw-right-4 tw-bottom-4', children: jsxRuntime.jsx("button", { tabIndex: 0, className: 'tw-z-500 tw-btn tw-btn-circle tw-shadow', onClick: () => {
3867
4140
  triggerAction();
3868
- }, style: { backgroundColor: color, color: '#fff' }, children: jsxRuntime.jsx("svg", { xmlns: 'http://www.w3.org/2000/svg', fill: 'none', viewBox: '0 0 24 24', strokeWidth: '2', stroke: 'currentColor', className: 'tw-w-5 tw-h-5', children: jsxRuntime.jsx("path", { strokeLinecap: 'round', strokeLinejoin: 'round', d: 'M12 4.5v15m7.5-7.5h-15' }) }) }) })) }));
4141
+ }, style: { backgroundColor: color, color: '#fff' }, children: jsxRuntime.jsx(ForwardRef$5, { className: 'tw-w-5 tw-h-5 tw-stroke-[2.5]' }) }) })) }));
3869
4142
  }
3870
4143
 
3871
4144
  const DateUserInfo = ({ item }) => {
3872
- const [infoExpanded, setInfoExpanded] = react.useState(false);
4145
+ const [infoExpanded, setInfoExpanded] = React.useState(false);
3873
4146
  return (jsxRuntime.jsxs("div", { className: 'tw-flex -tw-mb-1 tw-flex-row tw-mr-2 -tw-mt-2', onClick: (e) => e.stopPropagation(), children: [infoExpanded ? (jsxRuntime.jsx("p", { className: 'tw-italic tw-min-h-[21px] !tw-my-0 tw-text-gray-500', onClick: () => setInfoExpanded(false), children: `${item.date_updated && item.date_updated !== item.date_created ? 'updated' : 'posted'} ${item && item.user_created && item.user_created.first_name ? `by ${item.user_created.first_name}` : ''} ${item.date_updated ? timeAgo(item.date_updated) : timeAgo(item.date_created)}` })) : (jsxRuntime.jsx("p", { className: '!tw-my-0 tw-min-h-[21px] tw-font-bold tw-cursor-pointer tw-text-gray-500', onClick: () => setInfoExpanded(true), children: "\u24D8" })), jsxRuntime.jsx("div", { className: 'tw-grow ' })] }));
3874
4147
  };
3875
4148
 
@@ -3890,16 +4163,16 @@ const ItemCard = ({ i, loading, url, deleteCallback, }) => {
3890
4163
  * @category Templates
3891
4164
  */
3892
4165
  const OverlayItemsIndexPage = ({ url, layerName, parameterField, plusButton = true, }) => {
3893
- const [loading, setLoading] = react.useState(false);
3894
- const [addItemPopupType, setAddItemPopupType] = react.useState('');
3895
- const tabRef = react.useRef(null);
4166
+ const [loading, setLoading] = React.useState(false);
4167
+ const [addItemPopupType, setAddItemPopupType] = React.useState('');
4168
+ const tabRef = React.useRef(null);
3896
4169
  function scroll() {
3897
4170
  tabRef.current?.scrollIntoView();
3898
4171
  }
3899
- react.useEffect(() => {
4172
+ React.useEffect(() => {
3900
4173
  scroll();
3901
4174
  }, [addItemPopupType]);
3902
- react.useEffect(() => {
4175
+ React.useEffect(() => {
3903
4176
  setAddItemPopupType('');
3904
4177
  }, [layerName]);
3905
4178
  const tags = useTags();
@@ -3993,7 +4266,7 @@ const OverlayItemsIndexPage = ({ url, layerName, parameterField, plusButton = tr
3993
4266
  };
3994
4267
 
3995
4268
  const EmojiPicker = ({ selectedEmoji, selectedColor, selectedShape, setSelectedEmoji, setSelectedColor, setSelectedShape, }) => {
3996
- const [isOpen, setIsOpen] = react.useState(false);
4269
+ const [isOpen, setIsOpen] = React.useState(false);
3997
4270
  const emojis = [
3998
4271
  '❤️',
3999
4272
  '🙏',
@@ -4071,17 +4344,17 @@ const EmojiPicker = ({ selectedEmoji, selectedColor, selectedShape, setSelectedE
4071
4344
  const AttestationForm = ({ api }) => {
4072
4345
  const items = useItems();
4073
4346
  const appState = useAppState();
4074
- const [users, setUsers] = react.useState();
4347
+ const [users, setUsers] = React.useState();
4075
4348
  const navigate = reactRouterDom.useNavigate();
4076
- react.useEffect(() => {
4349
+ React.useEffect(() => {
4077
4350
  const params = new URLSearchParams(location.search);
4078
4351
  const toUserIds = params.get('to');
4079
4352
  setUsers(items.filter((i) => toUserIds?.includes(i.id)));
4080
4353
  // eslint-disable-next-line react-hooks/exhaustive-deps
4081
4354
  }, [items, location]);
4082
- const [inputValue, setInputValue] = react.useState('');
4083
- const inputRef = react.useRef(null);
4084
- react.useEffect(() => {
4355
+ const [inputValue, setInputValue] = React.useState('');
4356
+ const inputRef = React.useRef(null);
4357
+ React.useEffect(() => {
4085
4358
  if (inputRef.current) {
4086
4359
  inputRef.current.style.width = 'auto';
4087
4360
  inputRef.current.style.width = `${inputRef.current.scrollWidth + 20}px`;
@@ -4118,12 +4391,12 @@ const AttestationForm = ({ api }) => {
4118
4391
  items.find((i) =>
4119
4392
  // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
4120
4393
  i.user_created?.id === to[0].directus_users_id &&
4121
- i.layer?.itemType.name === 'player')?.id +
4394
+ i.layer?.userProfileLayer === true)?.id +
4122
4395
  '?tab=2'));
4123
4396
  };
4124
- const [selectedEmoji, setSelectedEmoji] = react.useState('select badge');
4125
- const [selectedShape, setSelectedShape] = react.useState('circle');
4126
- const [selectedColor, setSelectedColor] = react.useState('#fff0d6');
4397
+ const [selectedEmoji, setSelectedEmoji] = React.useState('select badge');
4398
+ const [selectedShape, setSelectedShape] = React.useState('circle');
4399
+ const [selectedColor, setSelectedColor] = React.useState('#fff0d6');
4127
4400
  return (jsxRuntime.jsxs(MapOverlayPage, { backdrop: true, className: 'tw-h-fit tw-min-h-56 tw-w-96', children: [jsxRuntime.jsx("div", { className: 'tw-text-center tw-text-xl tw-font-bold', children: "Gratitude" }), jsxRuntime.jsx("div", { className: 'tw-text-center tw-text-base tw-text-gray-400', children: "to" }), jsxRuntime.jsx("div", { className: 'tw-flex tw-flex-row tw-justify-center tw-items-center tw-flex-wrap', children: users?.map((u, k) => (jsxRuntime.jsxs("div", { className: 'tw-flex tw-items-center tw-space-x-3 tw-mx-2 tw-my-1', children: [u.image ? (jsxRuntime.jsx("div", { className: 'tw-avatar', children: jsxRuntime.jsx("div", { className: 'tw-mask tw-mask-circle tw-w-8 tw-h-8', children: jsxRuntime.jsx("img", { src: appState.assetsApi.url + u.image + '?width=40&heigth=40', alt: 'Avatar' }) }) })) : (jsxRuntime.jsx("div", { className: 'tw-mask tw-mask-circle tw-text-xl md:tw-text-2xl tw-bg-slate-200 tw-rounded-full tw-w-8 tw-h-8' })), jsxRuntime.jsx("div", { children: jsxRuntime.jsx("div", { className: 'tw-font-bold', children: u.name }) })] }, k)), ', ') }), jsxRuntime.jsxs("div", { className: 'tw-w-full', children: [jsxRuntime.jsx("div", { className: 'tw-flex tw-justify-center tw-items-center', children: jsxRuntime.jsx("div", { className: ' tw-flex tw-justify-center tw-items-center tw-w-28 tw-h-28 tw-m-4', children: jsxRuntime.jsx(EmojiPicker, { selectedEmoji: selectedEmoji, selectedColor: selectedColor, selectedShape: selectedShape, setSelectedEmoji: setSelectedEmoji, setSelectedColor: setSelectedColor, setSelectedShape: setSelectedShape }) }) }), jsxRuntime.jsx("div", { className: 'tw-flex tw-justify-center tw-items-center', children: jsxRuntime.jsx("input", { ref: inputRef, value: inputValue, onChange: handleChange, type: 'text', placeholder: '... and say some words', className: 'tw-input tw-min-w-0 tw-w-fit tw-resize-none tw-overflow-hidden tw-text-center ' }) })] }), jsxRuntime.jsx("div", { className: 'tw-w-full tw-grid tw-mt-4', children: jsxRuntime.jsx("button", { onClick: sendAttestation, className: 'tw-btn tw-place-self-center tw-px-8', children: "Next" }) })] }));
4128
4401
  };
4129
4402
 
@@ -4150,12 +4423,12 @@ function groupAndCount(arr) {
4150
4423
  * @category Templates
4151
4424
  */
4152
4425
  const MarketView = () => {
4153
- const [offers, setOffers] = react.useState([]);
4154
- const [needs, setNeeds] = react.useState([]);
4426
+ const [offers, setOffers] = React.useState([]);
4427
+ const [needs, setNeeds] = React.useState([]);
4155
4428
  const navigate = reactRouterDom.useNavigate();
4156
4429
  const items = useItems();
4157
4430
  const tags = useTags();
4158
- react.useEffect(() => {
4431
+ React.useEffect(() => {
4159
4432
  setOffers([]);
4160
4433
  setNeeds([]);
4161
4434
  for (const item of items) {
@@ -4180,12 +4453,12 @@ const MarketView = () => {
4180
4453
  */
4181
4454
  function UserSettings() {
4182
4455
  const { user, updateUser, loading /* token */ } = useAuth();
4183
- const [id, setId] = react.useState('');
4184
- const [email, setEmail] = react.useState('');
4185
- const [password, setPassword] = react.useState('');
4186
- const [passwordChanged, setPasswordChanged] = react.useState(false);
4456
+ const [id, setId] = React.useState('');
4457
+ const [email, setEmail] = React.useState('');
4458
+ const [password, setPassword] = React.useState('');
4459
+ const [passwordChanged, setPasswordChanged] = React.useState(false);
4187
4460
  const navigate = reactRouterDom.useNavigate();
4188
- react.useEffect(() => {
4461
+ React.useEffect(() => {
4189
4462
  setId(user?.id ? user.id : '');
4190
4463
  setEmail(user?.email ? user.email : '');
4191
4464
  setPassword(user?.password ? user.password : '');
@@ -4393,7 +4666,6 @@ const onUpdateItem = async (state, item, tags, addTag, setLoading, navigate, upd
4393
4666
  ...changedItem,
4394
4667
  layer: item.layer,
4395
4668
  user_created: user,
4396
- type: item.layer?.itemType,
4397
4669
  }))
4398
4670
  .then(() => {
4399
4671
  setLoading(false);
@@ -4403,19 +4675,64 @@ const onUpdateItem = async (state, item, tags, addTag, setLoading, navigate, upd
4403
4675
  }
4404
4676
  };
4405
4677
 
4678
+ function EnvelopeIcon({
4679
+ title,
4680
+ titleId,
4681
+ ...props
4682
+ }, svgRef) {
4683
+ return /*#__PURE__*/React__namespace.createElement("svg", Object.assign({
4684
+ xmlns: "http://www.w3.org/2000/svg",
4685
+ fill: "none",
4686
+ viewBox: "0 0 24 24",
4687
+ strokeWidth: 1.5,
4688
+ stroke: "currentColor",
4689
+ "aria-hidden": "true",
4690
+ "data-slot": "icon",
4691
+ ref: svgRef,
4692
+ "aria-labelledby": titleId
4693
+ }, props), title ? /*#__PURE__*/React__namespace.createElement("title", {
4694
+ id: titleId
4695
+ }, title) : null, /*#__PURE__*/React__namespace.createElement("path", {
4696
+ strokeLinecap: "round",
4697
+ strokeLinejoin: "round",
4698
+ d: "M21.75 6.75v10.5a2.25 2.25 0 0 1-2.25 2.25h-15a2.25 2.25 0 0 1-2.25-2.25V6.75m19.5 0A2.25 2.25 0 0 0 19.5 4.5h-15a2.25 2.25 0 0 0-2.25 2.25m19.5 0v.243a2.25 2.25 0 0 1-1.07 1.916l-7.5 4.615a2.25 2.25 0 0 1-2.36 0L3.32 8.91a2.25 2.25 0 0 1-1.07-1.916V6.75"
4699
+ }));
4700
+ }
4701
+ const ForwardRef$4 = /*#__PURE__*/ React__namespace.forwardRef(EnvelopeIcon);
4702
+
4703
+ function PhoneIcon({
4704
+ title,
4705
+ titleId,
4706
+ ...props
4707
+ }, svgRef) {
4708
+ return /*#__PURE__*/React__namespace.createElement("svg", Object.assign({
4709
+ xmlns: "http://www.w3.org/2000/svg",
4710
+ fill: "none",
4711
+ viewBox: "0 0 24 24",
4712
+ strokeWidth: 1.5,
4713
+ stroke: "currentColor",
4714
+ "aria-hidden": "true",
4715
+ "data-slot": "icon",
4716
+ ref: svgRef,
4717
+ "aria-labelledby": titleId
4718
+ }, props), title ? /*#__PURE__*/React__namespace.createElement("title", {
4719
+ id: titleId
4720
+ }, title) : null, /*#__PURE__*/React__namespace.createElement("path", {
4721
+ strokeLinecap: "round",
4722
+ strokeLinejoin: "round",
4723
+ d: "M2.25 6.75c0 8.284 6.716 15 15 15h2.25a2.25 2.25 0 0 0 2.25-2.25v-1.372c0-.516-.351-.966-.852-1.091l-4.423-1.106c-.44-.11-.902.055-1.173.417l-.97 1.293c-.282.376-.769.542-1.21.38a12.035 12.035 0 0 1-7.143-7.143c-.162-.441.004-.928.38-1.21l1.293-.97c.363-.271.527-.734.417-1.173L6.963 3.102a1.125 1.125 0 0 0-1.091-.852H4.5A2.25 2.25 0 0 0 2.25 4.5v2.25Z"
4724
+ }));
4725
+ }
4726
+ const ForwardRef$3 = /*#__PURE__*/ React__namespace.forwardRef(PhoneIcon);
4727
+
4406
4728
  const ContactInfoView = ({ item, heading }) => {
4407
4729
  const appState = useAppState();
4408
- const [profileOwner, setProfileOwner] = react.useState();
4730
+ const [profileOwner, setProfileOwner] = React.useState();
4409
4731
  const items = useItems();
4410
- react.useEffect(() => {
4411
- // eslint-disable-next-line no-console
4412
- console.log('user:', items.find((i) => i.user_created?.id === item.user_created?.id &&
4413
- i.layer?.itemType.name === appState.userType));
4414
- setProfileOwner(items.find((i) => i.user_created?.id === item.user_created?.id &&
4415
- i.layer?.itemType.name === appState.userType));
4416
- // eslint-disable-next-line react-hooks/exhaustive-deps
4732
+ React.useEffect(() => {
4733
+ setProfileOwner(items.find((i) => i.user_created?.id === item.user_created?.id && i.layer?.userProfileLayer));
4417
4734
  }, [item, items]);
4418
- return (jsxRuntime.jsxs("div", { className: 'tw-bg-base-200 tw-mb-6 tw-mt-6 tw-p-6', children: [jsxRuntime.jsx("h2", { className: 'tw-text-lg tw-font-semibold', children: heading }), jsxRuntime.jsxs("div", { className: 'tw-mt-4 tw-flex tw-items-center', children: [profileOwner?.image && (jsxRuntime.jsx(ConditionalLink, { url: '/item/' + profileOwner?.id, children: jsxRuntime.jsx("div", { className: 'tw-mr-5 tw-flex tw-items-center tw-justify-center', children: jsxRuntime.jsx("div", { className: 'tw-avatar', children: jsxRuntime.jsx("div", { className: 'tw-w-20 tw-h-20 tw-bg-gray-200 rounded-full tw-flex tw-items-center tw-justify-center overflow-hidden', children: jsxRuntime.jsx("img", { src: appState.assetsApi.url + profileOwner?.image, alt: profileOwner?.name, className: 'tw-w-full tw-h-full tw-object-cover' }) }) }) }) })), jsxRuntime.jsxs("div", { className: 'tw-text-sm tw-flex-grow', children: [jsxRuntime.jsx("p", { className: 'tw-font-semibold', children: profileOwner?.name }), item.contact && (jsxRuntime.jsx("p", { children: jsxRuntime.jsxs("a", { href: `mailto:${item.contact}`, className: 'tw-mt-2 tw-text-green-500 tw-inline-flex tw-items-center', children: [jsxRuntime.jsxs("svg", { xmlns: 'http://www.w3.org/2000/svg', viewBox: '0 0 24 24', fill: 'none', stroke: 'currentColor', strokeWidth: '2', strokeLinecap: 'round', strokeLinejoin: 'round', className: 'tw-w-4 tw-h-4 tw-mr-1', children: [jsxRuntime.jsx("path", { d: 'M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z' }), jsxRuntime.jsx("polyline", { points: '22,6 12,13 2,6' })] }), item.contact] }) })), item.telephone && (jsxRuntime.jsx("p", { children: jsxRuntime.jsxs("a", { href: `tel:${item.telephone}`, className: 'tw-mt-2 tw-text-green-500 tw-inline-flex tw-items-center tw-whitespace-nowrap', children: [jsxRuntime.jsx("svg", { xmlns: 'http://www.w3.org/2000/svg', viewBox: '0 0 24 24', fill: 'none', stroke: 'currentColor', strokeWidth: '2', strokeLinecap: 'round', strokeLinejoin: 'round', className: 'tw-w-4 tw-h-4 tw-mr-1', children: jsxRuntime.jsx("path", { d: 'M22 16.92v3a2 2 0 01-2.18 2 19.79 19.79 0 01-8.63-3.07 19.5 19.5 0 01-6-6 19.79 19.79 0 01-3.07-8.67A2 2 0 014.11 2h3a2 2 0 012 1.72 12.84 12.84 0 00.7 2.81 2 2 0 01-.45 2.11L8.09 9.91a16 16 0 006 6l1.27-1.27a2 2 0 012.11-.45 12.84 12.84 0 002.81.7A2 2 0 0122 16.92z' }) }), item.telephone] }) }))] })] })] }));
4735
+ return (jsxRuntime.jsxs("div", { className: 'tw-bg-base-200 tw-mb-6 tw-mt-6 tw-p-6', children: [jsxRuntime.jsx("h2", { className: 'tw-text-lg tw-font-semibold', children: heading }), jsxRuntime.jsxs("div", { className: 'tw-mt-4 tw-flex tw-items-center', children: [profileOwner?.image && (jsxRuntime.jsx(ConditionalLink, { url: '/item/' + profileOwner?.id, children: jsxRuntime.jsx("div", { className: 'tw-mr-5 tw-flex tw-items-center tw-justify-center', children: jsxRuntime.jsx("div", { className: 'tw-avatar', children: jsxRuntime.jsx("div", { className: 'tw-w-20 tw-h-20 tw-bg-gray-200 rounded-full tw-flex tw-items-center tw-justify-center overflow-hidden', children: jsxRuntime.jsx("img", { src: appState.assetsApi.url + profileOwner?.image, alt: profileOwner?.name, className: 'tw-w-full tw-h-full tw-object-cover' }) }) }) }) })), jsxRuntime.jsxs("div", { className: 'tw-text-sm tw-flex-grow', children: [jsxRuntime.jsx("p", { className: 'tw-font-semibold', children: profileOwner?.name }), item.contact && (jsxRuntime.jsx("p", { children: jsxRuntime.jsxs("a", { href: `mailto:${item.contact}`, className: 'tw-mt-2 tw-text-green-500 tw-inline-flex tw-items-center', children: [jsxRuntime.jsx(ForwardRef$4, { className: 'tw-w-4 tw-h-4 tw-mr-1' }), item.contact] }) })), item.telephone && (jsxRuntime.jsx("p", { children: jsxRuntime.jsxs("a", { href: `tel:${item.telephone}`, className: 'tw-mt-2 tw-text-green-500 tw-inline-flex tw-items-center tw-whitespace-nowrap', children: [jsxRuntime.jsx(ForwardRef$3, { className: 'tw-w-4 tw-h-4 tw-mr-1' }), item.telephone] }) }))] })] })] }));
4419
4736
  };
4420
4737
  // eslint-disable-next-line react/prop-types
4421
4738
  const ConditionalLink = ({ url, children }) => {
@@ -4433,7 +4750,7 @@ var css_248z$1 = ".react-photo-album{display:flex}.react-photo-album,.react-phot
4433
4750
  styleInject(css_248z$1);
4434
4751
 
4435
4752
  const GalleryView = ({ item }) => {
4436
- const [index, setIndex] = react.useState(-1);
4753
+ const [index, setIndex] = React.useState(-1);
4437
4754
  const appState = useAppState();
4438
4755
  const images = item.gallery?.map((i, j) => {
4439
4756
  return {
@@ -4448,35 +4765,51 @@ const GalleryView = ({ item }) => {
4448
4765
  return (jsxRuntime.jsxs("div", { className: 'tw-mx-6 tw-mb-6', children: [jsxRuntime.jsx(reactPhotoAlbum.RowsPhotoAlbum, { photos: images, targetRowHeight: 150, onClick: ({ index: current }) => setIndex(current) }), jsxRuntime.jsx(ReactLightbox, { index: index, slides: images, open: index >= 0, close: () => setIndex(-1) })] }));
4449
4766
  };
4450
4767
 
4768
+ var ChevronSVG = 'data:image/svg+xml;base64,PHN2ZwogICAgICAgICAgICB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnCiAgICAgICAgICAgIHZpZXdCb3g9JzAgMCAyNCAyNCcKICAgICAgICAgICAgZmlsbD0nd2hpdGUnCiAgICAgICAgICAgIGNsYXNzTmFtZT0ndHctaC00IHR3LXctNCcKICAgICAgICAgID4KICAgICAgICAgICAgPHBhdGggZD0nTTIwIDRINGMtMS4xIDAtMS45OS45LTEuOTkgMkwyIDE4YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnptMCA0bC04IDUtOC01VjZsOCA1IDgtNXYyeicgLz4KICAgICAgICAgIDwvc3ZnPg==';
4769
+
4770
+ var ClipboardSVG = 'data:image/svg+xml;base64,PHN2ZyBzdHJva2U9ImN1cnJlbnRDb2xvciIgZmlsbD0id2hpdGUiIHN0cm9rZS13aWR0aD0iMCIgdmlld0JveD0iMCAwIDI1NiAyNTYiIGhlaWdodD0iMS41ZW0iIHdpZHRoPSIxLjVlbSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMTgwLDY0SDQwQTEyLDEyLDAsMCwwLDI4LDc2VjIxNmExMiwxMiwwLDAsMCwxMiwxMkgxODBhMTIsMTIsMCwwLDAsMTItMTJWNzZBMTIsMTIsMCwwLDAsMTgwLDY0Wk0xNjgsMjA0SDUyVjg4SDE2OFpNMjI4LDQwVjE4MGExMiwxMiwwLDAsMS0yNCwwVjUySDc2YTEyLDEyLDAsMCwxLDAtMjRIMjE2QTEyLDEyLDAsMCwxLDIyOCw0MFoiPjwvcGF0aD48L3N2Zz4=';
4771
+
4772
+ var FacebookSVG = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCAyNCAyNCcgZmlsbD0nd2hpdGUnPgogICAgICAgIDxwYXRoIGQ9J00xOCAyaC0zYTUgNSAwIDAwLTUgNXYzSDd2NGgzdjhoNHYtOGgzbDEtNGgtNFY3YTEgMSAwIDAxMS0xaDN6JyAvPgogICAgICA8L3N2Zz4=';
4773
+
4774
+ var LinkedinSVG = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCAyNCAyNCcgZmlsbD0nd2hpdGUnPgogICAgICAgIDxwYXRoIGQ9J00xNiA4YTYgNiAwIDAxNiA2djdoLTR2LTdhMiAyIDAgMDAtMi0yIDIgMiAwIDAwLTIgMnY3aC00di03YTYgNiAwIDAxNi02ek0yIDloNHYxMkgyeicgLz4KICAgICAgICA8Y2lyY2xlIGN4PSc0JyBjeT0nNCcgcj0nMicgLz4KICAgICAgPC9zdmc+';
4775
+
4776
+ var TelegramSVG = 'data:image/svg+xml;base64,PHN2ZwogICAgICAgIHN0cm9rZT0nd2hpdGUnCiAgICAgICAgZmlsbD0nd2hpdGUnCiAgICAgICAgc3Ryb2tlV2lkdGg9JzAnCiAgICAgICAgdmlld0JveD0nMCAwIDQ0OCA1MTInCiAgICAgICAgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJwogICAgICA+CiAgICAgICAgPHBhdGggZD0nTTQ0Ni43IDk4LjZsLTY3LjYgMzE4LjhjLTUuMSAyMi41LTE4LjQgMjguMS0zNy4zIDE3LjVsLTEwMy03NS45LTQ5LjcgNDcuOGMtNS41IDUuNS0xMC4xIDEwLjEtMjAuNyAxMC4xbDcuNC0xMDQuOSAxOTAuOS0xNzIuNWM4LjMtNy40LTEuOC0xMS41LTEyLjktNC4xTDExNy44IDI4NCAxNi4yIDI1Mi4yYy0yMi4xLTYuOS0yMi41LTIyLjEgNC42LTMyLjdMNDE4LjIgNjYuNGMxOC40LTYuOSAzNC41IDQuMSAyOC41IDMyLjJ6Jz48L3BhdGg+CiAgICAgIDwvc3ZnPg==';
4777
+
4778
+ var TwitterSVG = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCAyNCAyNCcgZmlsbD0nd2hpdGUnPgogICAgICAgIDxwYXRoIGQ9J00yMyAzYTEwLjkgMTAuOSAwIDAxLTMuMTQgMS41MyA0LjQ4IDQuNDggMCAwMC03Ljg2IDN2MUExMC42NiAxMC42NiAwIDAxMyA0cy00IDkgNSAxM2ExMS42NCAxMS42NCAwIDAxLTcgMmM5IDUgMjAgMCAyMC0xMS41YTQuNSA0LjUgMCAwMC0uMDgtLjgzQTcuNzIgNy43MiAwIDAwMjMgM3onIC8+CiAgICAgIDwvc3ZnPg==';
4779
+
4780
+ var WhatsappSVG = 'data:image/svg+xml;base64,PHN2ZwogICAgICAgIHN0cm9rZT0nY3VycmVudENvbG9yJwogICAgICAgIGZpbGw9J3doaXRlJwogICAgICAgIHN0cm9rZVdpZHRoPScwJwogICAgICAgIHZpZXdCb3g9JzAgMCA1MTIgNTEyJwogICAgICAgIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycKICAgICAgPgogICAgICAgIDxwYXRoIGQ9J000OTcuMzkgMzYxLjhsLTExMi00OGEyNCAyNCAwIDAgMC0yOCA2LjlsLTQ5LjYgNjAuNkEzNzAuNjYgMzcwLjY2IDAgMCAxIDEzMC42IDIwNC4xMWw2MC42LTQ5LjZhMjMuOTQgMjMuOTQgMCAwIDAgNi45LTI4bC00OC0xMTJBMjQuMTYgMjQuMTYgMCAwIDAgMTIyLjYuNjFsLTEwNCAyNEEyNCAyNCAwIDAgMCAwIDQ4YzAgMjU2LjUgMjA3LjkgNDY0IDQ2NCA0NjRhMjQgMjQgMCAwIDAgMjMuNC0xOC42bDI0LTEwNGEyNC4yOSAyNC4yOSAwIDAgMC0xNC4wMS0yNy42eic+PC9wYXRoPgogICAgICA8L3N2Zz4=';
4781
+
4782
+ var XingSVG = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCAyNCAyNCcgZmlsbD0nd2hpdGUnPgogICAgICAgIDxwYXRoIGQ9J00xOC4xODggMGMtLjUxNyAwLS43NDEuMzI1LS45MjcuNjYgMCAwLTcuNDU1IDEzLjIyNC03LjcwMiAxMy42NTcuMDE1LjAyNCA0LjkxOSA5LjAyMyA0LjkxOSA5LjAyMy4xNy4zMDguNDM2LjY2Ljk2Ny42NmgzLjQ1NGMuMjExIDAgLjM3NS0uMDc4LjQ2My0uMjIuMDg5LS4xNTEuMDg5LS4zNDYtLjAwOS0uNTM2bC00Ljg3OS04LjkxNmMtLjAwNC0uMDA2LS4wMDQtLjAxNiAwLS4wMjJMMjIuMTM5Ljc1NmMuMDk1LS4xOTEuMDk3LS4zODcuMDA2LS41MzVDMjIuMDU2LjA3OCAyMS44OTQgMCAyMS42ODYgMGgtMy40OTh6TTMuNjQ4IDQuNzRjLS4yMTEgMC0uMzg1LjA3NC0uNDczLjIxNi0uMDkuMTQ5LS4wNzguMzM5LjAyLjUzMWwyLjM0IDQuMDVjLjAwNC4wMS4wMDQuMDE2IDAgLjAyMUwxLjg2IDE2LjA1MWMtLjA5OS4xODgtLjA5My4zODEgMCAuNTI5LjA4NS4xNDIuMjM5LjIzNC40NS4yMzRoMy40NjFjLjUxOCAwIC43NjYtLjM0OC45NDUtLjY2N2wzLjczNC02LjYwOS0yLjM3OC00LjE1NWMtLjE3Mi0uMzE1LS40MzQtLjY1OS0uOTYyLS42NTlIMy42NDh2LjAxNnonIC8+CiAgICAgIDwvc3ZnPg==';
4783
+
4451
4784
  const platformConfigs = {
4452
4785
  facebook: {
4453
4786
  shareUrl: 'https://www.facebook.com/sharer/sharer.php?u={url}',
4454
- icon: (jsxRuntime.jsx("svg", { xmlns: 'http://www.w3.org/2000/svg', viewBox: '0 0 24 24', fill: 'white', children: jsxRuntime.jsx("path", { d: 'M18 2h-3a5 5 0 00-5 5v3H7v4h3v8h4v-8h3l1-4h-4V7a1 1 0 011-1h3z' }) })),
4787
+ icon: jsxRuntime.jsx("img", { src: FacebookSVG, alt: 'Facebook' }),
4455
4788
  bgColor: '#3b5998',
4456
4789
  },
4457
4790
  twitter: {
4458
4791
  shareUrl: 'https://twitter.com/intent/tweet?text={title}:%20{url}',
4459
- icon: (jsxRuntime.jsx("svg", { xmlns: 'http://www.w3.org/2000/svg', viewBox: '0 0 24 24', fill: 'white', children: jsxRuntime.jsx("path", { d: 'M23 3a10.9 10.9 0 01-3.14 1.53 4.48 4.48 0 00-7.86 3v1A10.66 10.66 0 013 4s-4 9 5 13a11.64 11.64 0 01-7 2c9 5 20 0 20-11.5a4.5 4.5 0 00-.08-.83A7.72 7.72 0 0023 3z' }) })),
4792
+ icon: jsxRuntime.jsx("img", { src: TwitterSVG, alt: 'Twitter' }),
4460
4793
  bgColor: '#55acee',
4461
4794
  },
4462
4795
  linkedin: {
4463
4796
  shareUrl: 'http://www.linkedin.com/shareArticle?mini=true&url={url}&title={title}',
4464
- icon: (jsxRuntime.jsxs("svg", { xmlns: 'http://www.w3.org/2000/svg', viewBox: '0 0 24 24', fill: 'white', children: [jsxRuntime.jsx("path", { d: 'M16 8a6 6 0 016 6v7h-4v-7a2 2 0 00-2-2 2 2 0 00-2 2v7h-4v-7a6 6 0 016-6zM2 9h4v12H2z' }), jsxRuntime.jsx("circle", { cx: '4', cy: '4', r: '2' })] })),
4797
+ icon: jsxRuntime.jsx("img", { src: LinkedinSVG, alt: 'Linkedin' }),
4465
4798
  bgColor: '#4875b4',
4466
4799
  },
4467
4800
  xing: {
4468
4801
  shareUrl: 'https://www.xing-share.com/app/user?op=share;sc_p=xing-share;url={url}',
4469
- icon: (jsxRuntime.jsx("svg", { xmlns: 'http://www.w3.org/2000/svg', viewBox: '0 0 24 24', fill: 'white', children: jsxRuntime.jsx("path", { d: 'M18.188 0c-.517 0-.741.325-.927.66 0 0-7.455 13.224-7.702 13.657.015.024 4.919 9.023 4.919 9.023.17.308.436.66.967.66h3.454c.211 0 .375-.078.463-.22.089-.151.089-.346-.009-.536l-4.879-8.916c-.004-.006-.004-.016 0-.022L22.139.756c.095-.191.097-.387.006-.535C22.056.078 21.894 0 21.686 0h-3.498zM3.648 4.74c-.211 0-.385.074-.473.216-.09.149-.078.339.02.531l2.34 4.05c.004.01.004.016 0 .021L1.86 16.051c-.099.188-.093.381 0 .529.085.142.239.234.45.234h3.461c.518 0 .766-.348.945-.667l3.734-6.609-2.378-4.155c-.172-.315-.434-.659-.962-.659H3.648v.016z' }) })),
4802
+ icon: jsxRuntime.jsx("img", { src: XingSVG, alt: 'Xing' }),
4470
4803
  bgColor: '#026466',
4471
4804
  },
4472
4805
  whatsapp: {
4473
4806
  shareUrl: 'https://api.whatsapp.com/send?text={title}%20{url}',
4474
- icon: (jsxRuntime.jsx("svg", { stroke: 'currentColor', fill: 'currentColor', strokeWidth: '0', viewBox: '0 0 512 512', xmlns: 'http://www.w3.org/2000/svg', children: jsxRuntime.jsx("path", { d: 'M497.39 361.8l-112-48a24 24 0 0 0-28 6.9l-49.6 60.6A370.66 370.66 0 0 1 130.6 204.11l60.6-49.6a23.94 23.94 0 0 0 6.9-28l-48-112A24.16 24.16 0 0 0 122.6.61l-104 24A24 24 0 0 0 0 48c0 256.5 207.9 464 464 464a24 24 0 0 0 23.4-18.6l24-104a24.29 24.29 0 0 0-14.01-27.6z' }) })),
4807
+ icon: jsxRuntime.jsx("img", { src: WhatsappSVG, alt: 'Whatsapp' }),
4475
4808
  bgColor: '#25D366',
4476
4809
  },
4477
4810
  telegram: {
4478
4811
  shareUrl: 'https://t.me/share/url?url={url}&text={title}',
4479
- icon: (jsxRuntime.jsx("svg", { stroke: 'white', fill: 'white', strokeWidth: '0', viewBox: '0 0 448 512', xmlns: 'http://www.w3.org/2000/svg', children: jsxRuntime.jsx("path", { d: 'M446.7 98.6l-67.6 318.8c-5.1 22.5-18.4 28.1-37.3 17.5l-103-75.9-49.7 47.8c-5.5 5.5-10.1 10.1-20.7 10.1l7.4-104.9 190.9-172.5c8.3-7.4-1.8-11.5-12.9-4.1L117.8 284 16.2 252.2c-22.1-6.9-22.5-22.1 4.6-32.7L418.2 66.4c18.4-6.9 34.5 4.1 28.5 32.2z' }) })),
4812
+ icon: jsxRuntime.jsx("img", { src: TelegramSVG, alt: 'Telegram' }),
4480
4813
  bgColor: '#0088cc',
4481
4814
  },
4482
4815
  };
@@ -4493,7 +4826,7 @@ const SocialShareButton = ({ platform, url, title, }) => {
4493
4826
  return (jsxRuntime.jsx("a", { href: finalShareUrl, target: '_blank', rel: 'noopener noreferrer', className: 'tw-w-8 tw-h-8 tw-mt-2 tw-rounded-full tw-flex tw-items-center tw-justify-center tw-text-white', style: {
4494
4827
  color: 'white',
4495
4828
  backgroundColor: bgColor,
4496
- }, title: `share link on ${platform}`, children: react.cloneElement(icon, { className: 'tw-w-4 tw-h-4 tw-fill-current' }) }));
4829
+ }, title: `share link on ${platform}`, children: React.cloneElement(icon, { className: 'tw-w-4 tw-h-4 tw-fill-current' }) }));
4497
4830
  };
4498
4831
 
4499
4832
  const SocialShareBar = ({ url, title, platforms = ['facebook', 'twitter', 'linkedin', 'xing', 'email'], }) => {
@@ -4512,10 +4845,10 @@ const SocialShareBar = ({ url, title, platforms = ['facebook', 'twitter', 'linke
4512
4845
  return (jsxRuntime.jsxs("div", { className: 'tw-flex tw-place-content-end tw-justify-end tw-space-x-2 tw-grow tw-min-w-fit tw-pl-2', children: [platforms.map((platform) => (jsxRuntime.jsx(SocialShareButton, { platform: platform, url: url, title: title }, platform))), platforms.includes('email') && (jsxRuntime.jsx("a", { href: `mailto:?subject=${title}&body=${url}`, target: '_blank', rel: 'noopener noreferrer', className: 'tw-w-8 tw-h-8 tw-mt-2 tw-rounded-full tw-flex tw-items-center tw-justify-center tw-text-white hover:tw-cursor-pointer', style: {
4513
4846
  color: 'white',
4514
4847
  backgroundColor: '#444',
4515
- }, onClick: () => copyLink(), title: 'share link via email', children: jsxRuntime.jsx("svg", { xmlns: 'http://www.w3.org/2000/svg', viewBox: '0 0 24 24', fill: 'white', className: 'tw-h-4 tw-w-4', children: jsxRuntime.jsx("path", { d: 'M20 4H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm0 4l-8 5-8-5V6l8 5 8-5v2z' }) }) })), platforms.includes('clipboard') && (jsxRuntime.jsx("div", { rel: 'noopener noreferrer', className: 'tw-w-8 tw-h-8 tw-mt-2 tw-rounded-full tw-flex tw-items-center tw-justify-center tw-text-white hover:tw-cursor-pointer', style: {
4848
+ }, onClick: () => copyLink(), title: 'share link via email', children: jsxRuntime.jsx("img", { src: ChevronSVG, alt: '\\/', className: 'tw-h-4 tw-w-4' }) })), platforms.includes('clipboard') && (jsxRuntime.jsx("div", { rel: 'noopener noreferrer', className: 'tw-w-8 tw-h-8 tw-mt-2 tw-rounded-full tw-flex tw-items-center tw-justify-center tw-text-white hover:tw-cursor-pointer', style: {
4516
4849
  color: 'white',
4517
4850
  backgroundColor: '#888',
4518
- }, onClick: () => copyLink(), title: 'copy Link', children: jsxRuntime.jsx("svg", { stroke: 'currentColor', fill: 'currentColor', strokeWidth: '0', viewBox: '0 0 256 256', height: '1.5em', width: '1.5em', xmlns: 'http://www.w3.org/2000/svg', children: jsxRuntime.jsx("path", { d: 'M180,64H40A12,12,0,0,0,28,76V216a12,12,0,0,0,12,12H180a12,12,0,0,0,12-12V76A12,12,0,0,0,180,64ZM168,204H52V88H168ZM228,40V180a12,12,0,0,1-24,0V52H76a12,12,0,0,1,0-24H216A12,12,0,0,1,228,40Z' }) }) }))] }));
4851
+ }, onClick: () => copyLink(), title: 'copy Link', children: jsxRuntime.jsx("img", { src: ClipboardSVG, className: 'tw-w-5' }) }))] }));
4519
4852
  };
4520
4853
 
4521
4854
  const GroupSubHeaderView = ({ item, shareBaseUrl, platforms, }) => (jsxRuntime.jsxs("div", { className: 'tw-px-6', children: [jsxRuntime.jsxs("div", { className: 'tw-float-left tw-mt-2 tw-mb-4 tw-flex tw-items-center', children: [item.status && (jsxRuntime.jsx("div", { className: 'tw-mt-1.5', children: jsxRuntime.jsx("span", { className: 'tw-text-sm tw-text-current tw-bg-base-300 tw-rounded tw-py-0.5 tw-px-2 tw-inline-flex tw-items-center tw-mr-2', children: item.status }) })), item.group_type && (jsxRuntime.jsx("div", { className: 'tw-mt-1.5', children: jsxRuntime.jsx("span", { className: 'tw-text-sm tw-text-current tw-bg-base-300 tw-rounded tw-py-1 tw-px-2', children: item.group_type }) }))] }), jsxRuntime.jsx("div", { children: jsxRuntime.jsx(SocialShareBar, { url: shareBaseUrl && item.slug
@@ -4546,10 +4879,8 @@ const get = (value, path, defaultValue) => {
4546
4879
 
4547
4880
  const ProfileTextView = ({ item, dataField = 'text', heading, hideWhenEmpty, }) => {
4548
4881
  const text = get(item, dataField);
4549
- if (typeof text !== 'string') {
4550
- throw new Error('ProfileTextView: text is not a string');
4551
- }
4552
- return (jsxRuntime.jsxs("div", { className: 'tw-my-10 tw-mt-2 tw-px-6', children: [!(text === '' && hideWhenEmpty) && (jsxRuntime.jsx("h2", { className: 'tw-text-lg tw-font-semibold', children: heading })), jsxRuntime.jsx("div", { className: 'tw-mt-2 tw-text-sm', children: jsxRuntime.jsx(TextView, { itemId: item.id, rawText: text }) })] }));
4882
+ const parsedText = typeof text !== 'string' ? '' : text;
4883
+ return (jsxRuntime.jsxs("div", { className: 'tw-my-10 tw-mt-2 tw-px-6', children: [!(text === '' && hideWhenEmpty) && (jsxRuntime.jsx("h2", { className: 'tw-text-lg tw-font-semibold', children: heading })), jsxRuntime.jsx("div", { className: 'tw-mt-2 tw-text-sm', children: jsxRuntime.jsx(TextView, { itemId: item.id, rawText: parsedText }) })] }));
4553
4884
  };
4554
4885
 
4555
4886
  const componentMap$1 = {
@@ -4579,10 +4910,35 @@ const SimpleView = ({ item }) => {
4579
4910
  return (jsxRuntime.jsx("div", { className: 'tw-mt-8 tw-h-full tw-overflow-y-auto fade tw-px-6', children: jsxRuntime.jsx(TextView, { text: item.text, itemId: item.id }) }));
4580
4911
  };
4581
4912
 
4913
+ function LinkIcon({
4914
+ title,
4915
+ titleId,
4916
+ ...props
4917
+ }, svgRef) {
4918
+ return /*#__PURE__*/React__namespace.createElement("svg", Object.assign({
4919
+ xmlns: "http://www.w3.org/2000/svg",
4920
+ fill: "none",
4921
+ viewBox: "0 0 24 24",
4922
+ strokeWidth: 1.5,
4923
+ stroke: "currentColor",
4924
+ "aria-hidden": "true",
4925
+ "data-slot": "icon",
4926
+ ref: svgRef,
4927
+ "aria-labelledby": titleId
4928
+ }, props), title ? /*#__PURE__*/React__namespace.createElement("title", {
4929
+ id: titleId
4930
+ }, title) : null, /*#__PURE__*/React__namespace.createElement("path", {
4931
+ strokeLinecap: "round",
4932
+ strokeLinejoin: "round",
4933
+ d: "M13.19 8.688a4.5 4.5 0 0 1 1.242 7.244l-4.5 4.5a4.5 4.5 0 0 1-6.364-6.364l1.757-1.757m13.35-.622 1.757-1.757a4.5 4.5 0 0 0-6.364-6.364l-4.5 4.5a4.5 4.5 0 0 0 1.242 7.244"
4934
+ }));
4935
+ }
4936
+ const ForwardRef$2 = /*#__PURE__*/ React__namespace.forwardRef(LinkIcon);
4937
+
4582
4938
  function ActionButton({ item, triggerAddButton, triggerItemSelected, existingRelations, itemType, collection = 'items', customStyle, }) {
4583
4939
  const hasUserPermission = useHasUserPermission();
4584
- const [modalOpen, setModalOpen] = react.useState(false);
4585
- const [search, setSearch] = react.useState('');
4940
+ const [modalOpen, setModalOpen] = React.useState(false);
4941
+ const [search, setSearch] = React.useState('');
4586
4942
  const getItemTags = useGetItemTags();
4587
4943
  const items = useItems();
4588
4944
  const filterdItems = items
@@ -4598,12 +4954,12 @@ function ActionButton({ item, triggerAddButton, triggerItemSelected, existingRel
4598
4954
  }, style: {
4599
4955
  backgroundColor,
4600
4956
  color: '#fff',
4601
- }, children: jsxRuntime.jsx("svg", { className: 'tw-h-5 tw-w-5', stroke: 'currentColor', fill: 'currentColor', strokeWidth: '0', viewBox: '0 0 512 512', xmlns: 'http://www.w3.org/2000/svg', children: jsxRuntime.jsx("path", { d: 'M326.612 185.391c59.747 59.809 58.927 155.698.36 214.59-.11.12-.24.25-.36.37l-67.2 67.2c-59.27 59.27-155.699 59.262-214.96 0-59.27-59.26-59.27-155.7 0-214.96l37.106-37.106c9.84-9.84 26.786-3.3 27.294 10.606.648 17.722 3.826 35.527 9.69 52.721 1.986 5.822.567 12.262-3.783 16.612l-13.087 13.087c-28.026 28.026-28.905 73.66-1.155 101.96 28.024 28.579 74.086 28.749 102.325.51l67.2-67.19c28.191-28.191 28.073-73.757 0-101.83-3.701-3.694-7.429-6.564-10.341-8.569a16.037 16.037 0 0 1-6.947-12.606c-.396-10.567 3.348-21.456 11.698-29.806l21.054-21.055c5.521-5.521 14.182-6.199 20.584-1.731a152.482 152.482 0 0 1 20.522 17.197zM467.547 44.449c-59.261-59.262-155.69-59.27-214.96 0l-67.2 67.2c-.12.12-.25.25-.36.37-58.566 58.892-59.387 154.781.36 214.59a152.454 152.454 0 0 0 20.521 17.196c6.402 4.468 15.064 3.789 20.584-1.731l21.054-21.055c8.35-8.35 12.094-19.239 11.698-29.806a16.037 16.037 0 0 0-6.947-12.606c-2.912-2.005-6.64-4.875-10.341-8.569-28.073-28.073-28.191-73.639 0-101.83l67.2-67.19c28.239-28.239 74.3-28.069 102.325.51 27.75 28.3 26.872 73.934-1.155 101.96l-13.087 13.087c-4.35 4.35-5.769 10.79-3.783 16.612 5.864 17.194 9.042 34.999 9.69 52.721.509 13.906 17.454 20.446 27.294 10.606l37.106-37.106c59.271-59.259 59.271-155.699.001-214.959z' }) }) })), triggerAddButton && (jsxRuntime.jsx("button", { tabIndex: 0, className: 'tw-z-500 tw-btn tw-btn-circle tw-shadow tw-mt-2', onClick: () => {
4957
+ }, children: jsxRuntime.jsx(ForwardRef$2, { className: 'tw-h-5 tw-w-5 tw-stroke-[2.5]' }) })), triggerAddButton && (jsxRuntime.jsx("button", { tabIndex: 0, className: 'tw-z-500 tw-btn tw-btn-circle tw-shadow tw-mt-2', onClick: () => {
4602
4958
  triggerAddButton();
4603
4959
  }, style: {
4604
4960
  backgroundColor,
4605
4961
  color: '#fff',
4606
- }, children: jsxRuntime.jsx("svg", { xmlns: 'http://www.w3.org/2000/svg', fill: 'none', viewBox: '0 0 24 24', strokeWidth: '4', stroke: 'currentColor', className: 'tw-w-5 tw-h-5', children: jsxRuntime.jsx("path", { strokeLinecap: 'round', strokeLinejoin: 'round', d: 'M12 4.5v15m7.5-7.5h-15' }) }) }))] }), jsxRuntime.jsxs(DialogModal, { title: 'Select', isOpened: modalOpen, onClose: () => setModalOpen(false), className: 'tw-w-xl sm:tw-w-2xl tw-min-h-80 tw-bg-base-200', children: [jsxRuntime.jsx(TextInput, { defaultValue: '', placeholder: '\uD83D\uDD0D Search', containerStyle: 'lg:col-span-2 tw-m-4 ', updateFormValue: (val) => {
4962
+ }, children: jsxRuntime.jsx(ForwardRef$5, { className: 'tw-w-5 tw-h-5 tw-stroke-[2.5]' }) }))] }), jsxRuntime.jsxs(DialogModal, { title: 'Select', isOpened: modalOpen, onClose: () => setModalOpen(false), className: 'tw-w-xl sm:tw-w-2xl tw-min-h-80 tw-bg-base-200', children: [jsxRuntime.jsx(TextInput, { defaultValue: '', placeholder: '\uD83D\uDD0D Search', containerStyle: 'lg:col-span-2 tw-m-4 ', updateFormValue: (val) => {
4607
4963
  setSearch(val);
4608
4964
  } }), jsxRuntime.jsx("div", { className: 'tw-grid tw-grid-cols-1 sm:tw-grid-cols-2', children: filterdItems
4609
4965
  .filter((item) => {
@@ -4617,33 +4973,58 @@ function ActionButton({ item, triggerAddButton, triggerItemSelected, existingRel
4617
4973
  }, children: jsxRuntime.jsx(HeaderView, { item: i, hideMenu: true }) }, i.id))) })] })] })) }));
4618
4974
  }
4619
4975
 
4976
+ function LinkSlashIcon({
4977
+ title,
4978
+ titleId,
4979
+ ...props
4980
+ }, svgRef) {
4981
+ return /*#__PURE__*/React__namespace.createElement("svg", Object.assign({
4982
+ xmlns: "http://www.w3.org/2000/svg",
4983
+ fill: "none",
4984
+ viewBox: "0 0 24 24",
4985
+ strokeWidth: 1.5,
4986
+ stroke: "currentColor",
4987
+ "aria-hidden": "true",
4988
+ "data-slot": "icon",
4989
+ ref: svgRef,
4990
+ "aria-labelledby": titleId
4991
+ }, props), title ? /*#__PURE__*/React__namespace.createElement("title", {
4992
+ id: titleId
4993
+ }, title) : null, /*#__PURE__*/React__namespace.createElement("path", {
4994
+ strokeLinecap: "round",
4995
+ strokeLinejoin: "round",
4996
+ d: "M13.181 8.68a4.503 4.503 0 0 1 1.903 6.405m-9.768-2.782L3.56 14.06a4.5 4.5 0 0 0 6.364 6.365l3.129-3.129m5.614-5.615 1.757-1.757a4.5 4.5 0 0 0-6.364-6.365l-4.5 4.5c-.258.26-.479.541-.661.84m1.903 6.405a4.495 4.495 0 0 1-1.242-.88 4.483 4.483 0 0 1-1.062-1.683m6.587 2.345 5.907 5.907m-5.907-5.907L8.898 8.898M2.991 2.99 8.898 8.9"
4997
+ }));
4998
+ }
4999
+ const ForwardRef$1 = /*#__PURE__*/ React__namespace.forwardRef(LinkSlashIcon);
5000
+
4620
5001
  function LinkedItemsHeaderView({ item, unlinkCallback, loading, unlinkPermission, }) {
4621
5002
  const appState = useAppState();
4622
5003
  const avatar = appState.assetsApi.url + item.image;
4623
5004
  const title = item.name;
4624
5005
  const subtitle = item.subname;
4625
- react.useEffect(() => { }, [item]);
4626
- return (jsxRuntime.jsx(jsxRuntime.Fragment, { children: jsxRuntime.jsxs("div", { className: 'tw-flex tw-flex-row', children: [jsxRuntime.jsx("div", { className: 'tw-grow tw-max-w-[calc(100%-60px)] }', children: jsxRuntime.jsxs("div", { className: 'flex items-center', children: [avatar && (jsxRuntime.jsx("img", { className: 'tw-w-10 tw-inline tw-rounded-full', src: avatar, alt: item.name + ' logo' })), jsxRuntime.jsxs("div", { className: `${avatar ? 'tw-ml-2' : ''} tw-overflow-hidden`, children: [jsxRuntime.jsx("div", { className: 'tw-text-xl tw-font-semibold tw-truncate', children: title }), subtitle && (jsxRuntime.jsx("div", { className: 'tw-text-xs tw-truncate tw-text-gray-500 ', children: subtitle }))] })] }) }), jsxRuntime.jsx("div", { className: 'tw-col-span-1', onClick: (e) => e.stopPropagation(), children: unlinkPermission && (jsxRuntime.jsxs("div", { className: 'tw-dropdown tw-dropdown-bottom', children: [jsxRuntime.jsx("label", { tabIndex: 0, className: ' tw-btn tw-m-1 tw-leading-3 tw-border-none tw-min-h-0 tw-h-6', children: jsxRuntime.jsx("svg", { xmlns: 'http://www.w3.org/2000/svg', className: 'tw-h-5 tw-w-5', viewBox: '0 0 20 20', fill: 'currentColor', children: jsxRuntime.jsx("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' }) }) }), jsxRuntime.jsx("ul", { tabIndex: 0, className: 'tw-dropdown-content tw-menu tw-p-2 tw-shadow tw-bg-base-100 tw-rounded-box tw-z-1000', children: (jsxRuntime.jsx("li", { children: jsxRuntime.jsx("a", { className: 'tw-cursor-pointer !tw-text-error', onClick: () => unlinkCallback(item.id), children: loading ? (jsxRuntime.jsx("span", { className: 'tw-loading tw-loading-spinner tw-loading-sm' })) : (jsxRuntime.jsx("svg", { className: 'tw-h-5 tw-w-5', stroke: 'currentColor', fill: 'currentColor', strokeWidth: '0', viewBox: '0 0 512 512', xmlns: 'http://www.w3.org/2000/svg', children: jsxRuntime.jsx("path", { d: 'M304.083 405.907c4.686 4.686 4.686 12.284 0 16.971l-44.674 44.674c-59.263 59.262-155.693 59.266-214.961 0-59.264-59.265-59.264-155.696 0-214.96l44.675-44.675c4.686-4.686 12.284-4.686 16.971 0l39.598 39.598c4.686 4.686 4.686 12.284 0 16.971l-44.675 44.674c-28.072 28.073-28.072 73.75 0 101.823 28.072 28.072 73.75 28.073 101.824 0l44.674-44.674c4.686-4.686 12.284-4.686 16.971 0l39.597 39.598zm-56.568-260.216c4.686 4.686 12.284 4.686 16.971 0l44.674-44.674c28.072-28.075 73.75-28.073 101.824 0 28.072 28.073 28.072 73.75 0 101.823l-44.675 44.674c-4.686 4.686-4.686 12.284 0 16.971l39.598 39.598c4.686 4.686 12.284 4.686 16.971 0l44.675-44.675c59.265-59.265 59.265-155.695 0-214.96-59.266-59.264-155.695-59.264-214.961 0l-44.674 44.674c-4.686 4.686-4.686 12.284 0 16.971l39.597 39.598zm234.828 359.28l22.627-22.627c9.373-9.373 9.373-24.569 0-33.941L63.598 7.029c-9.373-9.373-24.569-9.373-33.941 0L7.029 29.657c-9.373 9.373-9.373 24.569 0 33.941l441.373 441.373c9.373 9.372 24.569 9.372 33.941 0z' }) })) }) })) })] })) })] }) }));
5006
+ React.useEffect(() => { }, [item]);
5007
+ return (jsxRuntime.jsx(jsxRuntime.Fragment, { children: jsxRuntime.jsxs("div", { className: 'tw-flex tw-flex-row', children: [jsxRuntime.jsx("div", { className: 'tw-grow tw-max-w-[calc(100%-60px)] }', children: jsxRuntime.jsxs("div", { className: 'flex items-center', children: [avatar && (jsxRuntime.jsx("img", { className: 'tw-w-10 tw-inline tw-rounded-full', src: avatar, alt: item.name + ' logo' })), jsxRuntime.jsxs("div", { className: `${avatar ? 'tw-ml-2' : ''} tw-overflow-hidden`, children: [jsxRuntime.jsx("div", { className: 'tw-text-xl tw-font-semibold tw-truncate', children: title }), subtitle && (jsxRuntime.jsx("div", { className: 'tw-text-xs tw-truncate tw-text-gray-500 ', children: subtitle }))] })] }) }), jsxRuntime.jsx("div", { className: 'tw-col-span-1', onClick: (e) => e.stopPropagation(), children: unlinkPermission && (jsxRuntime.jsxs("div", { className: 'tw-dropdown tw-dropdown-bottom', children: [jsxRuntime.jsx("label", { tabIndex: 0, className: ' tw-btn tw-m-1 tw-leading-3 tw-border-none tw-min-h-0 tw-h-6', children: jsxRuntime.jsx(ForwardRef$9, { className: 'tw-h-5 tw-w-5' }) }), jsxRuntime.jsx("ul", { tabIndex: 0, className: 'tw-dropdown-content tw-menu tw-p-2 tw-shadow tw-bg-base-100 tw-rounded-box tw-z-1000', children: (jsxRuntime.jsx("li", { children: jsxRuntime.jsx("a", { className: 'tw-cursor-pointer !tw-text-error', onClick: () => unlinkCallback(item.id), children: loading ? (jsxRuntime.jsx("span", { className: 'tw-loading tw-loading-spinner tw-loading-sm' })) : (jsxRuntime.jsx(ForwardRef$1, { className: 'tw-h-5 tw-w-5 tw-stroke-[3]' })) }) })) })] })) })] }) }));
4627
5008
  }
4628
5009
 
4629
5010
  const TabsView = ({ attestations, item, offers, needs, relations, updatePermission, loading, linkItem, unlinkItem, }) => {
4630
5011
  const addFilterTag = useAddFilterTag();
4631
- const [activeTab, setActiveTab] = react.useState();
5012
+ const [activeTab, setActiveTab] = React.useState();
4632
5013
  const navigate = reactRouterDom.useNavigate();
4633
- const [addItemPopupType] = react.useState('');
5014
+ const [addItemPopupType] = React.useState('');
4634
5015
  const items = useItems();
4635
5016
  const appState = useAppState();
4636
5017
  const getUserProfile = (id) => {
4637
5018
  return items.find((i) => i.user_created?.id === id && i.layer?.itemType.name === appState.userType);
4638
5019
  };
4639
- react.useEffect(() => {
5020
+ React.useEffect(() => {
4640
5021
  scroll();
4641
5022
  }, [addItemPopupType]);
4642
5023
  function scroll() {
4643
5024
  tabRef.current?.scrollIntoView();
4644
5025
  }
4645
- const tabRef = react.useRef(null);
4646
- const updateActiveTab = react.useCallback((id) => {
5026
+ const tabRef = React.useRef(null);
5027
+ const updateActiveTab = React.useCallback((id) => {
4647
5028
  setActiveTab(id);
4648
5029
  const params = new URLSearchParams(window.location.search);
4649
5030
  params.set('tab', `${id}`);
@@ -4652,7 +5033,7 @@ const TabsView = ({ attestations, item, offers, needs, relations, updatePermissi
4652
5033
  },
4653
5034
  // eslint-disable-next-line react-hooks/exhaustive-deps
4654
5035
  [location.pathname]);
4655
- react.useEffect(() => {
5036
+ React.useEffect(() => {
4656
5037
  const params = new URLSearchParams(location.search);
4657
5038
  const urlTab = params.get('tab');
4658
5039
  setActiveTab(urlTab ? Number(urlTab) : 1);
@@ -4672,13 +5053,13 @@ const TabsView = ({ attestations, item, offers, needs, relations, updatePermissi
4672
5053
  * @category Profile
4673
5054
  */
4674
5055
  function ProfileView({ attestationApi }) {
4675
- const [item, setItem] = react.useState();
4676
- const [updatePermission, setUpdatePermission] = react.useState(false);
4677
- const [relations, setRelations] = react.useState([]);
4678
- const [offers, setOffers] = react.useState([]);
4679
- const [needs, setNeeds] = react.useState([]);
4680
- const [loading, setLoading] = react.useState(false);
4681
- const [template, setTemplate] = react.useState('');
5056
+ const [item, setItem] = React.useState();
5057
+ const [updatePermission, setUpdatePermission] = React.useState(false);
5058
+ const [relations, setRelations] = React.useState([]);
5059
+ const [offers, setOffers] = React.useState([]);
5060
+ const [needs, setNeeds] = React.useState([]);
5061
+ const [loading, setLoading] = React.useState(false);
5062
+ const [template, setTemplate] = React.useState('');
4682
5063
  const location = reactRouterDom.useLocation();
4683
5064
  const items = useItems();
4684
5065
  const updateItem = useUpdateItem();
@@ -4692,8 +5073,8 @@ function ProfileView({ attestationApi }) {
4692
5073
  const clusterRef = useClusterRef();
4693
5074
  const leafletRefs = useLeafletRefs();
4694
5075
  const appState = useAppState();
4695
- const [attestations, setAttestations] = react.useState([]);
4696
- react.useEffect(() => {
5076
+ const [attestations, setAttestations] = React.useState([]);
5077
+ React.useEffect(() => {
4697
5078
  if (attestationApi) {
4698
5079
  attestationApi
4699
5080
  .getItems()
@@ -4710,12 +5091,12 @@ function ProfileView({ attestationApi }) {
4710
5091
  });
4711
5092
  }
4712
5093
  }, [attestationApi]);
4713
- react.useEffect(() => {
5094
+ React.useEffect(() => {
4714
5095
  const itemId = location.pathname.split('/')[2];
4715
5096
  const item = items.find((i) => i.id === itemId);
4716
5097
  item && setItem(item);
4717
5098
  }, [items, location]);
4718
- react.useEffect(() => {
5099
+ React.useEffect(() => {
4719
5100
  setOffers([]);
4720
5101
  setNeeds([]);
4721
5102
  setRelations([]);
@@ -4733,7 +5114,7 @@ function ProfileView({ attestationApi }) {
4733
5114
  });
4734
5115
  // eslint-disable-next-line react-hooks/exhaustive-deps
4735
5116
  }, [item, items]);
4736
- react.useEffect(() => {
5117
+ React.useEffect(() => {
4737
5118
  const setMap = (marker, x) => {
4738
5119
  map.setView(new leaflet.LatLng(item?.position?.coordinates[1], item?.position?.coordinates[0] + x / 4), undefined);
4739
5120
  setTimeout(() => {
@@ -4774,15 +5155,15 @@ function ProfileView({ attestationApi }) {
4774
5155
  return parent;
4775
5156
  }
4776
5157
  };
4777
- react.useEffect(() => {
5158
+ React.useEffect(() => {
4778
5159
  item && hasUserPermission('items', 'update', item) && setUpdatePermission(true);
4779
5160
  // eslint-disable-next-line react-hooks/exhaustive-deps
4780
5161
  }, [item]);
4781
- react.useEffect(() => {
5162
+ React.useEffect(() => {
4782
5163
  selectPosition && map.closePopup();
4783
5164
  // eslint-disable-next-line react-hooks/exhaustive-deps
4784
5165
  }, [selectPosition]);
4785
- react.useEffect(() => {
5166
+ React.useEffect(() => {
4786
5167
  setTemplate(item?.layer?.itemType.template ?? appState.userType);
4787
5168
  }, [appState.userType, item]);
4788
5169
  return (jsxRuntime.jsx(jsxRuntime.Fragment, { children: item && (jsxRuntime.jsx(MapOverlayPage, { className: `!tw-p-0 tw-mx-4 tw-mt-4 tw-mb-4 md:tw-w-[calc(50%-32px)] tw-w-[calc(100%-32px)] tw-min-w-80 tw-max-w-3xl !tw-left-0 sm:!tw-left-auto tw-top-0 tw-bottom-0 tw-transition-opacity tw-duration-500 ${!selectPosition ? 'tw-opacity-100 tw-pointer-events-auto' : 'tw-opacity-0 tw-pointer-events-none'}`, children: jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("div", { className: 'tw-px-6 tw-pt-6', children: jsxRuntime.jsx(HeaderView, { api: item.layer?.api, item: item, deleteCallback: (e) => handleDelete(e, item, setLoading, removeItem, map, navigate), editCallback: () => navigate('/edit-item/' + item.id), setPositionCallback: () => {
@@ -4792,14 +5173,41 @@ function ProfileView({ attestationApi }) {
4792
5173
  }, big: true, truncateSubname: false }) }), template === 'onepager' && jsxRuntime.jsx(OnepagerView, { item: item }), template === 'simple' && jsxRuntime.jsx(SimpleView, { item: item }), template === 'flex' && jsxRuntime.jsx(FlexView, { item: item }), template === 'tabs' && (jsxRuntime.jsx(TabsView, { attestations: attestations, item: item, loading: loading, offers: offers, needs: needs, relations: relations, updatePermission: updatePermission, linkItem: (id) => linkItem(id, item, updateItem), unlinkItem: (id) => unlinkItem(id, item, updateItem) }))] }) }, item.id)) }));
4793
5174
  }
4794
5175
 
5176
+ function ArrowUpTrayIcon({
5177
+ title,
5178
+ titleId,
5179
+ ...props
5180
+ }, svgRef) {
5181
+ return /*#__PURE__*/React__namespace.createElement("svg", Object.assign({
5182
+ xmlns: "http://www.w3.org/2000/svg",
5183
+ fill: "none",
5184
+ viewBox: "0 0 24 24",
5185
+ strokeWidth: 1.5,
5186
+ stroke: "currentColor",
5187
+ "aria-hidden": "true",
5188
+ "data-slot": "icon",
5189
+ ref: svgRef,
5190
+ "aria-labelledby": titleId
5191
+ }, props), title ? /*#__PURE__*/React__namespace.createElement("title", {
5192
+ id: titleId
5193
+ }, title) : null, /*#__PURE__*/React__namespace.createElement("path", {
5194
+ strokeLinecap: "round",
5195
+ strokeLinejoin: "round",
5196
+ d: "M3 16.5v2.25A2.25 2.25 0 0 0 5.25 21h13.5A2.25 2.25 0 0 0 21 18.75V16.5m-13.5-9L12 3m0 0 4.5 4.5M12 3v13.5"
5197
+ }));
5198
+ }
5199
+ const ForwardRef = /*#__PURE__*/ React__namespace.forwardRef(ArrowUpTrayIcon);
5200
+
5201
+ var UserSVG = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMCIgdmlld0JveD0iMCAwIDE1MCAxNTAiIGNsYXNzPSJ0dy13LTIwIHR3LWgtMjAgdHctcm91bmRlZC1mdWxsIiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogcmdiKDIzOCwgMjM4LCAyMzgpOyI+PHBhdGggZmlsbD0iI2NjYyIgZD0iTSAxMDQuNjg3MzEsNTYuNjg5MzUzIEMgMTAyLjE5NDM1LDgwLjY0MDQ5MyA5My4xMDQ5ODEsOTcuMjY4NzUgNzQuMzcyMTk2LDk3LjI2ODc1IDU1LjYzOTQwMiw5Ny4yNjg3NSA0Ni45ODg4MjMsODIuMzA4MDM0IDQ0LjA1NzAwNSw1Ny4yODk5NDEgNDEuNjIzMzE0LDM0LjkzODgzOCA1NS42Mzk0MDIsMTUuODAwMTUyIDc0LjM3MjE5NiwxNS44MDAxNTIgYyAxOC43MzI3ODUsMCAzMi40NTE5NDQsMTguNDkzOTcxIDMwLjMxNTExNCw0MC44ODkyMDEgeiI+PC9wYXRoPjxwYXRoIGZpbGw9IiNjY2MiIGQ9Ik0gOTIuNTY3NSA4OS42MDQ4IEMgOTAuNzk0ODQgOTMuNDc4OTMgODkuMzk4OTMgMTAyLjQ1MDQgOTQuODY0NzggMTA2LjkwMzkgQyAxMDMuOTM3NSAxMTQuMjk2MyAxMDYuNzA2NCAxMTYuNDcyMyAxMTguMzExNyAxMTguOTQ2MiBDIDE0NC4wNDMyIDEyNC40MzE0IDE0MS42NDkyIDEzOC4xNTQzIDE0Ni41MjQ0IDE0OS4yMjA2IEwgNC4yNjg0NDQgMTQ5LjEwMjMgQyA4LjQ3MjIyMyAxMzguNjUxOCA2LjUwNTc5OSAxMjQuNzgxMiAzMi40MDA1MSAxMTguMzg3IEMgNDEuODA5OTIgMTE2LjA2MzUgNDUuNjY1MTMgMTEzLjg4MjMgNTMuNTg2NTkgMTA3LjAxNTggQyA1OC41Mjc0NCAxMDIuNzMyOSA1Ny41MjU4MyA5My45OTI2NyA1Ni40MzA4NCA4OS4yNjkyNiBDIDUyLjQ5Mjc1IDg4LjgzMDExIDk0LjE3MzkgODguMTQwNTQgOTIuNTY3NSA4OS42MDQ4IHoiPjwvcGF0aD48L3N2Zz4=';
5202
+
4795
5203
  const AvatarWidget = ({ avatar, setAvatar }) => {
4796
- const [crop, setCrop] = react.useState();
4797
- const [image, setImage] = react.useState('');
4798
- const [cropModalOpen, setCropModalOpen] = react.useState(false);
4799
- const [cropping, setCropping] = react.useState(false);
5204
+ const [crop, setCrop] = React.useState();
5205
+ const [image, setImage] = React.useState('');
5206
+ const [cropModalOpen, setCropModalOpen] = React.useState(false);
5207
+ const [cropping, setCropping] = React.useState(false);
4800
5208
  const appState = useAppState();
4801
- const imgRef = react.useRef(null);
4802
- const onImageChange = react.useCallback((event) => {
5209
+ const imgRef = React.useRef(null);
5210
+ const onImageChange = React.useCallback((event) => {
4803
5211
  const file = event.target.files && event.target.files[0];
4804
5212
  if (file) {
4805
5213
  const validFormats = ['image/jpeg', 'image/png'];
@@ -4820,7 +5228,7 @@ const AvatarWidget = ({ avatar, setAvatar }) => {
4820
5228
  alert('No file selected or an error occurred while selecting the file.');
4821
5229
  }
4822
5230
  }, []);
4823
- const onImageLoad = react.useCallback((e) => {
5231
+ const onImageLoad = React.useCallback((e) => {
4824
5232
  const { width, height } = e.currentTarget;
4825
5233
  setCrop(centerAspectCrop(width, height, 1));
4826
5234
  }, []);
@@ -4853,7 +5261,7 @@ const AvatarWidget = ({ avatar, setAvatar }) => {
4853
5261
  await resizedImage.decode();
4854
5262
  return resizedImage;
4855
5263
  }
4856
- const renderCrop = react.useCallback(async () => {
5264
+ const renderCrop = React.useCallback(async () => {
4857
5265
  const image = imgRef.current;
4858
5266
  if (crop && image) {
4859
5267
  const resizedImage = await resizeImage(image, 1024, 1024); // Bildgröße vor dem Zuschneiden reduzieren
@@ -4875,7 +5283,7 @@ const AvatarWidget = ({ avatar, setAvatar }) => {
4875
5283
  }
4876
5284
  // eslint-disable-next-line react-hooks/exhaustive-deps
4877
5285
  }, [crop]);
4878
- const resizeBlob = react.useCallback(async (blob) => {
5286
+ const resizeBlob = React.useCallback(async (blob) => {
4879
5287
  const img = new Image();
4880
5288
  img.src = URL.createObjectURL(blob);
4881
5289
  await img.decode();
@@ -4886,7 +5294,7 @@ const AvatarWidget = ({ avatar, setAvatar }) => {
4886
5294
  const asset = await appState.assetsApi.upload(resizedBlob, 'avatar');
4887
5295
  setAvatar(asset.id);
4888
5296
  }, [appState.assetsApi, setAvatar]);
4889
- return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [!cropping ? (jsxRuntime.jsxs("label", { className: 'custom-file-upload', children: [jsxRuntime.jsx("input", { type: 'file', accept: 'image/*', className: 'tw-file-input tw-w-full tw-max-w-xs', onChange: onImageChange }), jsxRuntime.jsx("div", { className: 'button tw-btn tw-btn-lg tw-btn-circle tw-animate-none', children: jsxRuntime.jsx("svg", { xmlns: 'http://www.w3.org/2000/svg', fill: 'none', viewBox: '0 0 24 24', strokeWidth: '1.5', stroke: 'currentColor', className: 'tw-w-6 tw-h-6', children: jsxRuntime.jsx("path", { strokeLinecap: 'round', strokeLinejoin: 'round', d: 'M3 16.5v2.25A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75V16.5m-13.5-9L12 3m0 0l4.5 4.5M12 3v13.5' }) }) }), avatar ? (jsxRuntime.jsx("div", { className: 'tw-h-20 tw-w-20', children: jsxRuntime.jsx("img", { src: appState.assetsApi.url + avatar, className: 'tw-h-20 tw-w-20 tw-rounded-full' }) })) : (jsxRuntime.jsx("div", { className: 'tw-h-20 tw-w-20', children: jsxRuntime.jsxs("svg", { xmlns: 'http://www.w3.org/2000/svg', version: '1.0', viewBox: '0 0 150 150', className: 'tw-w-20 tw-h-20 tw-rounded-full', style: { backgroundColor: '#eee' }, children: [jsxRuntime.jsx("path", { fill: '#ccc', d: 'M 104.68731,56.689353 C 102.19435,80.640493 93.104981,97.26875 74.372196,97.26875 55.639402,97.26875 46.988823,82.308034 44.057005,57.289941 41.623314,34.938838 55.639402,15.800152 74.372196,15.800152 c 18.732785,0 32.451944,18.493971 30.315114,40.889201 z' }), jsxRuntime.jsx("path", { fill: '#ccc', d: 'M 92.5675 89.6048 C 90.79484 93.47893 89.39893 102.4504 94.86478 106.9039 C 103.9375 114.2963 106.7064 116.4723 118.3117 118.9462 C 144.0432 124.4314 141.6492 138.1543 146.5244 149.2206 L 4.268444 149.1023 C 8.472223 138.6518 6.505799 124.7812 32.40051 118.387 C 41.80992 116.0635 45.66513 113.8823 53.58659 107.0158 C 58.52744 102.7329 57.52583 93.99267 56.43084 89.26926 C 52.49275 88.83011 94.1739 88.14054 92.5675 89.6048 z' })] }) }))] })) : (jsxRuntime.jsx("div", { className: 'tw-w-20 tw-flex tw-items-center tw-justify-center', children: jsxRuntime.jsx("span", { className: 'tw-loading tw-loading-spinner' }) })), jsxRuntime.jsxs(DialogModal, { title: '', isOpened: cropModalOpen, onClose: () => {
5297
+ return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [!cropping ? (jsxRuntime.jsxs("label", { className: 'custom-file-upload', children: [jsxRuntime.jsx("input", { type: 'file', accept: 'image/*', className: 'tw-file-input tw-w-full tw-max-w-xs', onChange: onImageChange }), jsxRuntime.jsx("div", { className: 'button tw-btn tw-btn-lg tw-btn-circle tw-animate-none', children: jsxRuntime.jsx(ForwardRef, { className: 'tw-w-6 tw-h-6' }) }), avatar ? (jsxRuntime.jsx("div", { className: 'tw-h-20 tw-w-20', children: jsxRuntime.jsx("img", { src: appState.assetsApi.url + avatar, className: 'tw-h-20 tw-w-20 tw-rounded-full' }) })) : (jsxRuntime.jsx("div", { className: 'tw-h-20 tw-w-20', children: jsxRuntime.jsx("img", { src: UserSVG, className: 'tw-rounded-full' }) }))] })) : (jsxRuntime.jsx("div", { className: 'tw-w-20 tw-flex tw-items-center tw-justify-center', children: jsxRuntime.jsx("span", { className: 'tw-loading tw-loading-spinner' }) })), jsxRuntime.jsxs(DialogModal, { title: '', isOpened: cropModalOpen, onClose: () => {
4890
5298
  setCropModalOpen(false);
4891
5299
  setImage('');
4892
5300
  }, closeOnClickOutside: false, children: [jsxRuntime.jsx(reactImageCrop.ReactCrop, { crop: crop, onChange: (c) => setCrop(c), aspect: 1, children: jsxRuntime.jsx("img", { src: image, ref: imgRef, onLoad: onImageLoad }) }), jsxRuntime.jsx("button", { className: 'tw-btn tw-btn-primary', onClick: () => {
@@ -4905,7 +5313,7 @@ styleInject(css_248z);
4905
5313
  /* eslint-disable @typescript-eslint/no-unsafe-call */
4906
5314
  // Improved version of https://usehooks.com/useOnClickOutside/
4907
5315
  const useClickOutside = (ref, handler) => {
4908
- react.useEffect(() => {
5316
+ React.useEffect(() => {
4909
5317
  let startedInside = false;
4910
5318
  let startedWhenMounted = false;
4911
5319
  const listener = (event) => {
@@ -4934,12 +5342,12 @@ const useClickOutside = (ref, handler) => {
4934
5342
 
4935
5343
  // eslint-disable-next-line react/prop-types
4936
5344
  const ColorPicker = ({ color, onChange, className }) => {
4937
- const popover = react.useRef(null);
4938
- const [isOpen, toggle] = react.useState(false);
4939
- const close = react.useCallback(() => toggle(false), []);
5345
+ const popover = React.useRef(null);
5346
+ const [isOpen, toggle] = React.useState(false);
5347
+ const close = React.useCallback(() => toggle(false), []);
4940
5348
  useClickOutside(popover, close);
4941
- const colorPickerRef = react.useRef(null);
4942
- react.useEffect(() => {
5349
+ const colorPickerRef = React.useRef(null);
5350
+ React.useEffect(() => {
4943
5351
  // Füge dem Color-Picker explizit Event-Listener hinzu
4944
5352
  const colorPickerElement = colorPickerRef.current;
4945
5353
  if (colorPickerElement) {
@@ -4990,7 +5398,7 @@ const ComboBoxInput = ({ id, options, value, onValueChange }) => {
4990
5398
  };
4991
5399
 
4992
5400
  const GroupSubheaderForm = ({ state, setState, groupStates, groupTypes, }) => {
4993
- react.useEffect(() => {
5401
+ React.useEffect(() => {
4994
5402
  if (groupTypes && groupStates) {
4995
5403
  const groupType = groupTypes.find((gt) => gt.groupTypes_id.name === state.group_type);
4996
5404
  const customImage = !groupTypes.some((gt) => gt.groupTypes_id.image === state.image || !state.image);
@@ -5026,16 +5434,18 @@ const ProfileStartEndForm = ({ item, setState, }) => {
5026
5434
  })) }));
5027
5435
  };
5028
5436
 
5437
+ var MarkdownSVG = 'data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJwogICAgICBhcmlhLWhpZGRlbj0ndHJ1ZScKICAgICAgaGVpZ2h0PScxNicKICAgICAgdmlld0JveD0nMCAwIDE2IDE2JwogICAgICB2ZXJzaW9uPScxLjEnCiAgICAgIHdpZHRoPScxNicKICAgICAgZGF0YS12aWV3LWNvbXBvbmVudD0ndHJ1ZScKICAgICAgY2xhc3NOYW1lPSdvY3RpY29uIG9jdGljb24tbWFya2Rvd24nCiAgICAgIGZpbGw9J3JnYigxNTYgMTYzIDE3NSknCj4KICA8cGF0aCBkPSdNMTQuODUgM2MuNjMgMCAxLjE1LjUyIDEuMTQgMS4xNXY3LjdjMCAuNjMtLjUxIDEuMTUtMS4xNSAxLjE1SDEuMTVDLjUyIDEzIDAgMTIuNDggMCAxMS44NFY0LjE1QzAgMy41Mi41MiAzIDEuMTUgM1pNOSAxMVY1SDdMNS41IDcgNCA1SDJ2NmgyVjhsMS41IDEuOTJMNyA4djNabTIuOTkuNUwxNC41IDhIMTNWNWgtMnYzSDkuNVonPjwvcGF0aD4KPC9zdmc+';
5438
+
5029
5439
  const MarkdownHint = () => {
5030
- const [expended, setExpended] = react.useState(false);
5031
- return (jsxRuntime.jsxs("div", { onClick: () => setExpended(true), title: 'Markdown is supported', className: 'flex tw-flex-row tw-text-gray-400 tw-cursor-pointer tw-items-center', children: [jsxRuntime.jsx("svg", { "aria-hidden": 'true', height: '16', viewBox: '0 0 16 16', version: '1.1', width: '16', "data-view-component": 'true', className: 'octicon octicon-markdown', fill: 'rgb(156 163 175 / var(--tw-text-opacity))', children: jsxRuntime.jsx("path", { d: 'M14.85 3c.63 0 1.15.52 1.14 1.15v7.7c0 .63-.51 1.15-1.15 1.15H1.15C.52 13 0 12.48 0 11.84V4.15C0 3.52.52 3 1.15 3ZM9 11V5H7L5.5 7 4 5H2v6h2V8l1.5 1.92L7 8v3Zm2.99.5L14.5 8H13V5h-2v3H9.5Z' }) }), expended && (jsxRuntime.jsxs("a", { href: 'https://www.markdownguide.org/cheat-sheet/#basic-syntax', target: '_blank', rel: 'noreferrer', children: [jsxRuntime.jsx("span", { className: 'Button-label tw-ml-1', children: "Markdown is support" }), ' '] }))] }));
5440
+ const [expended, setExpended] = React.useState(false);
5441
+ return (jsxRuntime.jsxs("div", { onClick: () => setExpended(true), title: 'Markdown is supported', className: 'flex tw-flex-row tw-text-gray-400 tw-cursor-pointer tw-items-center', children: [jsxRuntime.jsx("img", { src: MarkdownSVG, alt: 'Markdown', className: 'octicon octicon-markdown tw-gray-400' }), expended && (jsxRuntime.jsxs("a", { href: 'https://www.markdownguide.org/cheat-sheet/#basic-syntax', target: '_blank', rel: 'noreferrer', children: [jsxRuntime.jsx("span", { className: 'Button-label tw-ml-1', children: "Markdown is support" }), ' '] }))] }));
5032
5442
  };
5033
5443
 
5034
5444
  const ProfileTextForm = ({ state, setState,
5035
5445
  // Is this really used?
5036
5446
  dataField, heading, size, hideInputLabel, required, }) => {
5037
- const [field, setField] = react.useState(dataField || 'text');
5038
- react.useEffect(() => {
5447
+ const [field, setField] = React.useState(dataField || 'text');
5448
+ React.useEffect(() => {
5039
5449
  if (!dataField) {
5040
5450
  setField('text');
5041
5451
  }
@@ -5080,15 +5490,15 @@ const SimpleForm = ({ state, setState }) => {
5080
5490
  };
5081
5491
 
5082
5492
  const Autocomplete = ({ inputProps, suggestions, onSelected, pushFilteredSuggestions, setFocus, }) => {
5083
- const [filteredSuggestions, setFilteredSuggestions] = react.useState([]);
5084
- const [heighlightedSuggestion, setHeighlightedSuggestion] = react.useState(0);
5085
- react.useEffect(() => {
5493
+ const [filteredSuggestions, setFilteredSuggestions] = React.useState([]);
5494
+ const [heighlightedSuggestion, setHeighlightedSuggestion] = React.useState(0);
5495
+ React.useEffect(() => {
5086
5496
  pushFilteredSuggestions && setFilteredSuggestions(pushFilteredSuggestions);
5087
5497
  }, [pushFilteredSuggestions]);
5088
- react.useEffect(() => {
5498
+ React.useEffect(() => {
5089
5499
  setFocus && inputRef.current?.focus();
5090
5500
  }, [setFocus]);
5091
- const inputRef = react.useRef();
5501
+ const inputRef = React.useRef();
5092
5502
  const getSuggestions = (value) => {
5093
5503
  const inputValue = value.trim().toLowerCase();
5094
5504
  const inputLength = inputValue.length;
@@ -5133,13 +5543,13 @@ const Autocomplete = ({ inputProps, suggestions, onSelected, pushFilteredSuggest
5133
5543
 
5134
5544
  // eslint-disable-next-line react/prop-types
5135
5545
  const TagsWidget = ({ placeholder, containerStyle, defaultTags, onUpdate }) => {
5136
- const [input, setInput] = react.useState('');
5137
- const [isKeyReleased, setIsKeyReleased] = react.useState(false);
5546
+ const [input, setInput] = React.useState('');
5547
+ const [isKeyReleased, setIsKeyReleased] = React.useState(false);
5138
5548
  const tags = useTags();
5139
- const [pushFilteredSuggestions, setPushFilteredSuggestions] = react.useState([]);
5140
- const [focusInput, setFocusInput] = react.useState(false);
5141
- const [currentTags, setCurrentTags] = react.useState(defaultTags);
5142
- react.useEffect(() => {
5549
+ const [pushFilteredSuggestions, setPushFilteredSuggestions] = React.useState([]);
5550
+ const [focusInput, setFocusInput] = React.useState(false);
5551
+ const [currentTags, setCurrentTags] = React.useState(defaultTags);
5552
+ React.useEffect(() => {
5143
5553
  setCurrentTags(defaultTags);
5144
5554
  }, [defaultTags]);
5145
5555
  const onChange = (e) => {
@@ -5213,10 +5623,10 @@ const TagsWidget = ({ placeholder, containerStyle, defaultTags, onUpdate }) => {
5213
5623
  };
5214
5624
 
5215
5625
  const TabsForm = ({ item, state, setState, updatePermission, linkItem, unlinkItem, loading, setUrlParams, }) => {
5216
- const [activeTab, setActiveTab] = react.useState(1);
5626
+ const [activeTab, setActiveTab] = React.useState(1);
5217
5627
  const navigate = reactRouterDom.useNavigate();
5218
5628
  const updateItem = useUpdateItem();
5219
- const updateActiveTab = react.useCallback((id) => {
5629
+ const updateActiveTab = React.useCallback((id) => {
5220
5630
  setActiveTab(id);
5221
5631
  const params = new URLSearchParams(window.location.search);
5222
5632
  params.set('tab', `${id}`);
@@ -5226,7 +5636,7 @@ const TabsForm = ({ item, state, setState, updatePermission, linkItem, unlinkIte
5226
5636
  },
5227
5637
  // eslint-disable-next-line react-hooks/exhaustive-deps
5228
5638
  [location.pathname]);
5229
- react.useEffect(() => {
5639
+ React.useEffect(() => {
5230
5640
  const params = new URLSearchParams(location.search);
5231
5641
  const urlTab = params.get('tab');
5232
5642
  setActiveTab(urlTab ? Number(urlTab) : 1);
@@ -5258,7 +5668,7 @@ const TabsForm = ({ item, state, setState, updatePermission, linkItem, unlinkIte
5258
5668
  * @category Profile
5259
5669
  */
5260
5670
  function ProfileForm() {
5261
- const [state, setState] = react.useState({
5671
+ const [state, setState] = React.useState({
5262
5672
  color: '',
5263
5673
  id: '',
5264
5674
  group_type: 'wuerdekompass',
@@ -5277,9 +5687,9 @@ function ProfileForm() {
5277
5687
  start: '',
5278
5688
  end: '',
5279
5689
  });
5280
- const [updatePermission, setUpdatePermission] = react.useState(false);
5281
- const [loading, setLoading] = react.useState(false);
5282
- const [item, setItem] = react.useState({});
5690
+ const [updatePermission, setUpdatePermission] = React.useState(false);
5691
+ const [loading, setLoading] = React.useState(false);
5692
+ const [item, setItem] = React.useState({});
5283
5693
  const { user } = useAuth();
5284
5694
  const updateItem = useUpdateItem();
5285
5695
  const addItem = useAddItem();
@@ -5292,27 +5702,33 @@ function ProfileForm() {
5292
5702
  const getItemTags = useGetItemTags();
5293
5703
  const items = useItems();
5294
5704
  const appState = useAppState();
5295
- const [urlParams, setUrlParams] = react.useState(new URLSearchParams(location.search));
5296
- react.useEffect(() => {
5705
+ const [urlParams, setUrlParams] = React.useState(new URLSearchParams(location.search));
5706
+ React.useEffect(() => {
5297
5707
  item && hasUserPermission('items', 'update', item) && setUpdatePermission(true);
5298
5708
  }, [hasUserPermission, item]);
5299
- react.useEffect(() => {
5709
+ React.useEffect(() => {
5300
5710
  const itemId = location.pathname.split('/')[2];
5301
5711
  const item = items.find((i) => i.id === itemId);
5302
5712
  item && setItem(item);
5303
5713
  if (!item) {
5304
- const layer = layers.find((l) => l.itemType.name === appState.userType);
5305
- setItem({
5306
- id: crypto.randomUUID(),
5307
- name: user?.first_name ?? '',
5308
- text: '',
5309
- layer,
5310
- new: true,
5311
- });
5714
+ if (items.some((i) => i.user_created?.id === user?.id && i.layer?.userProfileLayer)) {
5715
+ navigate('/');
5716
+ reactToastify.toast.error('Item does not exist');
5717
+ }
5718
+ else {
5719
+ const layer = layers.find((l) => l.userProfileLayer);
5720
+ setItem({
5721
+ id: crypto.randomUUID(),
5722
+ name: user?.first_name ?? '',
5723
+ text: '',
5724
+ layer,
5725
+ new: true,
5726
+ });
5727
+ }
5312
5728
  }
5313
5729
  // eslint-disable-next-line react-hooks/exhaustive-deps
5314
5730
  }, [items]);
5315
- react.useEffect(() => {
5731
+ React.useEffect(() => {
5316
5732
  const newColor = item.color ??
5317
5733
  (getItemTags(item) && getItemTags(item)[0]?.color
5318
5734
  ? getItemTags(item)[0].color
@@ -5357,8 +5773,8 @@ function ProfileForm() {
5357
5773
  });
5358
5774
  // eslint-disable-next-line react-hooks/exhaustive-deps
5359
5775
  }, [item, tags, items]);
5360
- const [template, setTemplate] = react.useState('');
5361
- react.useEffect(() => {
5776
+ const [template, setTemplate] = React.useState('');
5777
+ React.useEffect(() => {
5362
5778
  setTemplate(item.layer?.itemType.template ?? appState.userType);
5363
5779
  }, [appState.userType, item]);
5364
5780
  return (jsxRuntime.jsx(jsxRuntime.Fragment, { children: jsxRuntime.jsx(MapOverlayPage, { backdrop: true, className: 'tw-mx-4 tw-mt-4 tw-mb-4 tw-overflow-x-hidden tw-w-[calc(100%-32px)] md:tw-w-[calc(50%-32px)] tw-max-w-3xl !tw-left-auto tw-top-0 tw-bottom-0', children: jsxRuntime.jsx("form", { className: 'tw-h-full', onSubmit: (e) => {
@@ -5375,7 +5791,7 @@ function ProfileForm() {
5375
5791
  * @category Gaming
5376
5792
  */
5377
5793
  function Modal({ children, showOnStartup, }) {
5378
- react.useEffect(() => {
5794
+ React.useEffect(() => {
5379
5795
  if (showOnStartup) {
5380
5796
  window.my_modal_3.showModal();
5381
5797
  }
@@ -5391,18 +5807,18 @@ function Quests() {
5391
5807
  const questsOpen = useQuestsOpen();
5392
5808
  const setQuestsOpen = useSetQuestOpen();
5393
5809
  const { isAuthenticated, user } = useAuth();
5394
- react.useEffect(() => {
5810
+ React.useEffect(() => {
5395
5811
  setQuestsOpen(false);
5396
5812
  // eslint-disable-next-line react-hooks/exhaustive-deps
5397
5813
  }, []);
5398
- const [profile, setProfie] = react.useState();
5814
+ const [profile, setProfie] = React.useState();
5399
5815
  const items = useItems();
5400
- react.useEffect(() => {
5816
+ React.useEffect(() => {
5401
5817
  setProfie(items.find((i) => i.user_created?.id === user?.id &&
5402
- i.layer?.itemType.name === 'user' &&
5818
+ i.layer?.userProfileLayer &&
5403
5819
  i.user_created?.id != null));
5404
5820
  }, [items, user]);
5405
- return (jsxRuntime.jsx(jsxRuntime.Fragment, { children: questsOpen ? (jsxRuntime.jsx("div", { className: 'tw-card tw-w-48 tw-bg-base-100 tw-shadow-xl tw-absolute tw-bottom-4 tw-left-4 tw-z-[2000]', children: jsxRuntime.jsxs("div", { className: 'tw-card-body tw-p-4 tw-pt-0', children: [jsxRuntime.jsx("div", { className: 'tw-card-actions tw-justify-end', children: jsxRuntime.jsx("label", { className: 'tw-btn tw-btn-sm tw-btn-circle tw-btn-ghost tw-absolute tw-right-1 tw-top-1', onClick: () => setQuestsOpen(false), children: "\u2715" }) }), jsxRuntime.jsxs("h2", { className: 'tw-card-title tw-m-auto ', children: ["Level 1", jsxRuntime.jsx("svg", { xmlns: 'http://www.w3.org/2000/svg', fill: 'none', viewBox: '0 0 24 24', strokeWidth: 1.5, stroke: '#aaa', className: 'tw-w-5 tw-h-5 tw-cursor-pointer', children: jsxRuntime.jsx("path", { strokeLinecap: 'round', strokeLinejoin: 'round', d: 'M9.879 7.519c1.171-1.025 3.071-1.025 4.242 0 1.172 1.025 1.172 2.687 0 3.712-.203.179-.43.326-.67.442-.745.361-1.45.999-1.45 1.827v.75M21 12a9 9 0 11-18 0 9 9 0 0118 0zm-9 5.25h.008v.008H12v-.008z' }) })] }), jsxRuntime.jsxs("ul", { className: 'tw-flex-row', children: [jsxRuntime.jsx("li", { children: jsxRuntime.jsxs("label", { className: 'tw-label tw-justify-normal tw-pt-1 tw-pb-0', children: [jsxRuntime.jsx("input", { type: 'checkbox', readOnly: true, className: 'tw-checkbox tw-checkbox-xs tw-checkbox-success', checked: isAuthenticated || false }), jsxRuntime.jsx("span", { className: 'tw-text-sm tw-label-text tw-mx-2', children: "Sign Up" })] }) }), jsxRuntime.jsx("li", { children: jsxRuntime.jsxs("label", { className: 'tw-label tw-justify-normal tw-pt-1 tw-pb-0', children: [jsxRuntime.jsx("input", { type: 'checkbox', readOnly: true, className: 'tw-checkbox tw-checkbox-xs tw-checkbox-success', checked: !!profile?.text }), jsxRuntime.jsx("span", { className: 'tw-text-sm tw-label-text tw-mx-2', children: "Fill Profile" })] }) }), jsxRuntime.jsx("li", { children: jsxRuntime.jsxs("label", { className: 'tw-label tw-justify-normal tw-pt-1 tw-pb-0', children: [jsxRuntime.jsx("input", { type: 'checkbox', readOnly: true, className: 'tw-checkbox tw-checkbox-xs tw-checkbox-success', checked: !!profile?.image }), jsxRuntime.jsx("span", { className: 'tw-text-sm tw-label-text tw-mx-2', children: "Upload Avatar" })] }) })] }), ' '] }) })) : ('') }));
5821
+ return (jsxRuntime.jsx(jsxRuntime.Fragment, { children: questsOpen ? (jsxRuntime.jsx("div", { className: 'tw-card tw-w-48 tw-bg-base-100 tw-shadow-xl tw-absolute tw-bottom-4 tw-left-4 tw-z-[2000]', children: jsxRuntime.jsxs("div", { className: 'tw-card-body tw-p-4 tw-pt-0', children: [jsxRuntime.jsx("div", { className: 'tw-card-actions tw-justify-end', children: jsxRuntime.jsx("label", { className: 'tw-btn tw-btn-sm tw-btn-circle tw-btn-ghost tw-absolute tw-right-1 tw-top-1', onClick: () => setQuestsOpen(false), children: "\u2715" }) }), jsxRuntime.jsxs("h2", { className: 'tw-card-title tw-m-auto ', children: ["Level 1", jsxRuntime.jsx(QuestionMarkIcon, {})] }), jsxRuntime.jsxs("ul", { className: 'tw-flex-row', children: [jsxRuntime.jsx("li", { children: jsxRuntime.jsxs("label", { className: 'tw-label tw-justify-normal tw-pt-1 tw-pb-0', children: [jsxRuntime.jsx("input", { type: 'checkbox', readOnly: true, className: 'tw-checkbox tw-checkbox-xs tw-checkbox-success', checked: isAuthenticated || false }), jsxRuntime.jsx("span", { className: 'tw-text-sm tw-label-text tw-mx-2', children: "Sign Up" })] }) }), jsxRuntime.jsx("li", { children: jsxRuntime.jsxs("label", { className: 'tw-label tw-justify-normal tw-pt-1 tw-pb-0', children: [jsxRuntime.jsx("input", { type: 'checkbox', readOnly: true, className: 'tw-checkbox tw-checkbox-xs tw-checkbox-success', checked: !!profile?.text }), jsxRuntime.jsx("span", { className: 'tw-text-sm tw-label-text tw-mx-2', children: "Fill Profile" })] }) }), jsxRuntime.jsx("li", { children: jsxRuntime.jsxs("label", { className: 'tw-label tw-justify-normal tw-pt-1 tw-pb-0', children: [jsxRuntime.jsx("input", { type: 'checkbox', readOnly: true, className: 'tw-checkbox tw-checkbox-xs tw-checkbox-success', checked: !!profile?.image }), jsxRuntime.jsx("span", { className: 'tw-text-sm tw-label-text tw-mx-2', children: "Upload Avatar" })] }) })] }), ' '] }) })) : ('') }));
5406
5822
  }
5407
5823
 
5408
5824
  exports.AppShell = AppShell;
@@ -5420,7 +5836,6 @@ exports.Modal = Modal;
5420
5836
  exports.MoonCalendar = MoonCalendar;
5421
5837
  exports.OverlayItemsIndexPage = OverlayItemsIndexPage;
5422
5838
  exports.Permissions = Permissions;
5423
- exports.PlusButton = PlusButton;
5424
5839
  exports.PopupButton = PopupButton;
5425
5840
  exports.PopupCheckboxInput = PopupCheckboxInput;
5426
5841
  exports.PopupStartEndInput = PopupStartEndInput;
@@ -5444,5 +5859,4 @@ exports.TextView = TextView;
5444
5859
  exports.TitleCard = TitleCard;
5445
5860
  exports.UserSettings = UserSettings;
5446
5861
  exports.UtopiaMap = UtopiaMap;
5447
- exports.useAuth = useAuth;
5448
5862
  //# sourceMappingURL=index.cjs.map