utopia-ui 3.0.78 → 3.0.80
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 +186 -1293
- package/dist/index.cjs.map +1 -1
- package/dist/index.esm.js +188 -1294
- package/dist/index.esm.js.map +1 -1
- package/dist/types/src/Components/Profile/Subcomponents/CrowdfundingForm.d.ts +5 -0
- package/dist/types/src/Components/Profile/Subcomponents/CrowdfundingView.d.ts +4 -0
- package/package.json +4 -4
package/dist/index.cjs
CHANGED
@@ -12,6 +12,7 @@ var React = require('react');
|
|
12
12
|
var reactRouterDom = require('react-router-dom');
|
13
13
|
var reactToastify = require('react-toastify');
|
14
14
|
var MarkerClusterGroup = require('react-leaflet-cluster');
|
15
|
+
var SVG = require('react-inlinesvg');
|
15
16
|
var axios = require('axios');
|
16
17
|
var Markdown = require('react-markdown');
|
17
18
|
var remarkBreaks = require('remark-breaks');
|
@@ -75,25 +76,25 @@ styleInject(css_248z$9);
|
|
75
76
|
var css_248z$8 = ".yarl__fullsize{height:100%;width:100%}.yarl__relative{position:relative}.yarl__portal{bottom:0;left:0;opacity:0;overflow:hidden;position:fixed;right:0;top:0;transition:opacity var(--yarl__fade_animation_duration,.25s) var(--yarl__fade_animation_timing_function,ease);z-index:var(--yarl__portal_zindex,9999)}.yarl__portal_open{opacity:1}.yarl__container{background-color:var(--yarl__container_background_color,var(--yarl__color_backdrop,#000));bottom:0;left:0;outline:none;overflow:hidden;overscroll-behavior:var(--yarl__controller_overscroll_behavior,contain);position:absolute;right:0;top:0;touch-action:var(--yarl__controller_touch_action,none);-webkit-user-select:none;-moz-user-select:none;user-select:none}.yarl__carousel{align-content:center;align-items:stretch;display:flex;flex:0 0 auto;height:100%;justify-content:center;opacity:var(--yarl__pull_opacity,1);transform:translate(var(--yarl__swipe_offset,0),var(--yarl__pull_offset,0));width:calc(100% + (var(--yarl__carousel_slides_count) - 1)*(100% + var(--yarl__carousel_spacing_px, 0)*1px + var(--yarl__carousel_spacing_percent, 0)*1%))}.yarl__carousel_with_slides{-moz-column-gap:calc(var(--yarl__carousel_spacing_px, 0)*1px + 100/(var(--yarl__carousel_slides_count)*100 + (var(--yarl__carousel_slides_count) - 1)*var(--yarl__carousel_spacing_percent, 0))*var(--yarl__carousel_spacing_percent, 0)*1%);column-gap:calc(var(--yarl__carousel_spacing_px, 0)*1px + 100/(var(--yarl__carousel_slides_count)*100 + (var(--yarl__carousel_slides_count) - 1)*var(--yarl__carousel_spacing_percent, 0))*var(--yarl__carousel_spacing_percent, 0)*1%)}.yarl__flex_center{align-content:center;align-items:center;display:flex;justify-content:center}.yarl__slide{flex:1;overflow:hidden;padding:calc(var(--yarl__carousel_padding_px, 0)*1px + 100/(var(--yarl__carousel_slides_count)*100 + (var(--yarl__carousel_slides_count) - 1)*var(--yarl__carousel_spacing_percent, 0))*var(--yarl__carousel_padding_percent, 0)*1%);position:relative}[dir=rtl] .yarl__slide{--yarl__direction:-1}.yarl__slide_image{max-height:100%;max-width:100%;-o-object-fit:contain;object-fit:contain;touch-action:var(--yarl__controller_touch_action,none);-moz-user-select:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}.yarl__slide_image_cover{height:100%;-o-object-fit:cover;object-fit:cover;width:100%}.yarl__slide_image_loading{opacity:0}@media screen and (min-width:800px){.yarl__slide_wrapper:not(.yarl__slide_wrapper_interactive) .yarl__slide_image{-webkit-backface-visibility:hidden;-webkit-transform:translateZ(0);-webkit-transform-style:preserve-3d}}.yarl__slide_placeholder{left:50%;line-height:0;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%)}.yarl__slide_loading{animation:yarl__delayed_fadein 1s linear;color:var(--yarl__slide_icon_loading_color,var(--yarl__color_button,hsla(0,0%,100%,.8)))}.yarl__slide_loading line{animation:yarl__stroke_opacity 1s linear infinite}.yarl__slide_loading line:first-of-type{animation-delay:-1.875s}.yarl__slide_loading line:nth-of-type(2){animation-delay:-1.75s}.yarl__slide_loading line:nth-of-type(3){animation-delay:-1.625s}.yarl__slide_loading line:nth-of-type(4){animation-delay:-1.5s}.yarl__slide_loading line:nth-of-type(5){animation-delay:-1.375s}.yarl__slide_loading line:nth-of-type(6){animation-delay:-1.25s}.yarl__slide_loading line:nth-of-type(7){animation-delay:-1.125s}.yarl__slide_loading line:nth-of-type(8){animation-delay:-1s}.yarl__slide_error{color:var(--yarl__slide_icon_error_color,red);height:var(--yarl__slide_icon_error_size,48px);width:var(--yarl__slide_icon_error_size,48px)}@media (prefers-reduced-motion){.yarl__portal,.yarl__slide{transition:unset}.yarl__slide_loading,.yarl__slide_loading line{animation:unset}}.yarl__toolbar{bottom:auto;display:flex;justify-content:flex-end;left:auto;padding:var(--yarl__toolbar_padding,8px);position:absolute;right:0;top:0}[dir=rtl] .yarl__toolbar{bottom:auto;left:0;right:auto;top:0}.yarl__icon{height:var(--yarl__icon_size,32px);width:var(--yarl__icon_size,32px)}.yarl__button{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--yarl__button_background_color,transparent);border:var(--yarl__button_border,0);color:var(--yarl__color_button,hsla(0,0%,100%,.8));cursor:pointer;filter:var(--yarl__button_filter,drop-shadow(2px 2px 2px rgba(0,0,0,.8)));line-height:0;margin:var(--yarl__button_margin,0);outline:none;padding:var(--yarl__button_padding,8px);-webkit-tap-highlight-color:transparent}.yarl__button:focus{color:var(--yarl__color_button_active,#fff)}.yarl__button:focus:not(:focus-visible){color:var(--yarl__color_button,hsla(0,0%,100%,.8))}.yarl__button:focus-visible{color:var(--yarl__color_button_active,#fff)}@media (hover:hover){.yarl__button:focus-visible:hover,.yarl__button:focus:hover,.yarl__button:hover{color:var(--yarl__color_button_active,#fff)}}.yarl__button:disabled{color:var(--yarl__color_button_disabled,hsla(0,0%,100%,.4));cursor:default}.yarl__navigation_next,.yarl__navigation_prev{padding:var(--yarl__navigation_button_padding,24px 16px);position:absolute;top:50%;transform:translateY(-50%)}.yarl__navigation_prev{left:0}[dir=rtl] .yarl__navigation_prev{left:unset;right:0;transform:translateY(-50%) rotate(180deg)}.yarl__navigation_next{right:0}[dir=rtl] .yarl__navigation_next{left:0;right:unset;transform:translateY(-50%) rotate(180deg)}.yarl__no_scroll{height:100%;overflow:hidden;overscroll-behavior:none}@keyframes yarl__delayed_fadein{0%{opacity:0}80%{opacity:0}to{opacity:1}}@keyframes yarl__stroke_opacity{0%{stroke-opacity:1}to{stroke-opacity:.125}}";
|
76
77
|
styleInject(css_248z$8);
|
77
78
|
|
78
|
-
var css_248z$7 = "*, ::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, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", 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.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-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@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-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-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-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-14 {\n margin-left: 3.5rem;\n}\n.tw-ml-2 {\n margin-left: 0.5rem;\n}\n.tw-ml-48 {\n margin-left: 12rem;\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-\\[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-14 {\n width: 3.5rem;\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-\\[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-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-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-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\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.tw-tab-content .container {\n height: 100%;\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\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\n.hover\\:tw-cursor-pointer:hover {\n cursor: pointer;\n}\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\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\n.hover\\:tw-bg-transparent:hover {\n background-color: transparent;\n}\n\n.hover\\:tw-font-bold:hover {\n font-weight: 700;\n}\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\n.hover\\:tw-underline:hover {\n text-decoration-line: underline;\n}\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\n.focus\\:tw-outline-none:focus {\n outline: 2px solid transparent;\n outline-offset: 2px;\n}\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\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\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\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\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\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\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}";
|
79
|
+
var css_248z$7 = "/*! tailwindcss v4.0.14 | MIT License | https://tailwindcss.com */\n@layer theme, base, components, utilities;\n@layer theme {\n :root, :host {\n --tw-color-green-500: oklch(0.723 0.219 149.579);\n --tw-color-indigo-500: oklch(0.585 0.233 277.117);\n --tw-color-slate-200: oklch(0.929 0.013 255.508);\n --tw-color-slate-300: oklch(0.869 0.022 252.894);\n --tw-color-gray-200: oklch(0.928 0.006 264.531);\n --tw-color-gray-300: oklch(0.872 0.01 258.338);\n --tw-color-gray-400: oklch(0.707 0.022 261.325);\n --tw-color-gray-500: oklch(0.551 0.027 264.364);\n --tw-color-gray-600: oklch(0.446 0.03 256.802);\n --tw-color-zinc-500: oklch(0.552 0.016 285.938);\n --tw-color-zinc-800: oklch(0.274 0.006 286.033);\n --tw-color-white: #fff;\n --tw-spacing: 0.25rem;\n --tw-container-xs: 20rem;\n --tw-container-xl: 36rem;\n --tw-container-2xl: 42rem;\n --tw-container-3xl: 48rem;\n --tw-container-6xl: 72rem;\n --tw-text-xs: 0.75rem;\n --tw-text-xs--line-height: calc(1 / 0.75);\n --tw-text-sm: 0.875rem;\n --tw-text-sm--line-height: calc(1.25 / 0.875);\n --tw-text-base: 1rem;\n --tw-text-base--line-height: calc(1.5 / 1);\n --tw-text-lg: 1.125rem;\n --tw-text-lg--line-height: calc(1.75 / 1.125);\n --tw-text-xl: 1.25rem;\n --tw-text-xl--line-height: calc(1.75 / 1.25);\n --tw-text-2xl: 1.5rem;\n --tw-text-2xl--line-height: calc(2 / 1.5);\n --tw-text-3xl: 1.875rem;\n --tw-text-3xl--line-height: calc(2.25 / 1.875);\n --tw-text-6xl: 3.75rem;\n --tw-text-6xl--line-height: 1;\n --tw-font-weight-normal: 400;\n --tw-font-weight-medium: 500;\n --tw-font-weight-semibold: 600;\n --tw-font-weight-bold: 700;\n --tw-radius-md: 0.375rem;\n --tw-radius-lg: 0.5rem;\n --tw-radius-xl: 0.75rem;\n --tw-radius-2xl: 1rem;\n --tw-drop-shadow-md: 0 3px 3px rgb(0 0 0 / 0.12);\n --tw-ease-in: cubic-bezier(0.4, 0, 1, 1);\n --tw-default-transition-duration: 150ms;\n --tw-default-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n --tw-z-index-500: 500;\n --tw-z-index-1000: 1000;\n --tw-z-index-2000: 2000;\n --tw-z-index-3000: 3000;\n --tw-min-width-80: 320px;\n --tw-container-52: 208px;\n --tw-min-height-56: 224px;\n --tw-min-height-80: 320px;\n --tw-text-map: 13px;\n --tw-leading-map: 1.4em;\n }\n}\n@layer base {\n *, ::after, ::before, ::backdrop, ::file-selector-button {\n box-sizing: border-box;\n margin: 0;\n padding: 0;\n border: 0 solid;\n }\n html, :host {\n line-height: 1.5;\n -webkit-text-size-adjust: 100%;\n tab-size: 4;\n font-family: var( --default-font-family, ui-sans-serif, system-ui, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\" );\n font-feature-settings: var(--default-font-feature-settings, normal);\n font-variation-settings: var( --default-font-variation-settings, normal );\n -webkit-tap-highlight-color: transparent;\n }\n body {\n line-height: inherit;\n }\n hr {\n height: 0;\n color: inherit;\n border-top-width: 1px;\n }\n abbr:where([title]) {\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n }\n h1, h2, h3, h4, h5, h6 {\n font-size: inherit;\n font-weight: inherit;\n }\n a {\n color: inherit;\n -webkit-text-decoration: inherit;\n text-decoration: inherit;\n }\n b, strong {\n font-weight: bolder;\n }\n code, kbd, samp, pre {\n font-family: var( --default-mono-font-family, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace );\n font-feature-settings: var( --default-mono-font-feature-settings, normal );\n font-variation-settings: var( --default-mono-font-variation-settings, normal );\n font-size: 1em;\n }\n small {\n font-size: 80%;\n }\n sub, sup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n }\n sub {\n bottom: -0.25em;\n }\n sup {\n top: -0.5em;\n }\n table {\n text-indent: 0;\n border-color: inherit;\n border-collapse: collapse;\n }\n :-moz-focusring {\n outline: auto;\n }\n progress {\n vertical-align: baseline;\n }\n summary {\n display: list-item;\n }\n ol, ul, menu {\n list-style: none;\n }\n img, svg, video, canvas, audio, iframe, embed, object {\n display: block;\n vertical-align: middle;\n }\n img, video {\n max-width: 100%;\n height: auto;\n }\n button, input, select, optgroup, textarea, ::file-selector-button {\n font: inherit;\n font-feature-settings: inherit;\n font-variation-settings: inherit;\n letter-spacing: inherit;\n color: inherit;\n border-radius: 0;\n background-color: transparent;\n opacity: 1;\n }\n :where(select:is([multiple], [size])) optgroup {\n font-weight: bolder;\n }\n :where(select:is([multiple], [size])) optgroup option {\n padding-inline-start: 20px;\n }\n ::file-selector-button {\n margin-inline-end: 4px;\n }\n ::placeholder {\n opacity: 1;\n color: color-mix(in oklab, currentColor 50%, transparent);\n }\n textarea {\n resize: vertical;\n }\n ::-webkit-search-decoration {\n -webkit-appearance: none;\n }\n ::-webkit-date-and-time-value {\n min-height: 1lh;\n text-align: inherit;\n }\n ::-webkit-datetime-edit {\n display: inline-flex;\n }\n ::-webkit-datetime-edit-fields-wrapper {\n padding: 0;\n }\n ::-webkit-datetime-edit, ::-webkit-datetime-edit-year-field, ::-webkit-datetime-edit-month-field, ::-webkit-datetime-edit-day-field, ::-webkit-datetime-edit-hour-field, ::-webkit-datetime-edit-minute-field, ::-webkit-datetime-edit-second-field, ::-webkit-datetime-edit-millisecond-field, ::-webkit-datetime-edit-meridiem-field {\n padding-block: 0;\n }\n :-moz-ui-invalid {\n box-shadow: none;\n }\n button, input:where([type=\"button\"], [type=\"reset\"], [type=\"submit\"]), ::file-selector-button {\n appearance: button;\n }\n ::-webkit-inner-spin-button, ::-webkit-outer-spin-button {\n height: auto;\n }\n [hidden]:where(:not([hidden=\"until-found\"])) {\n display: none !important;\n }\n}\n@layer utilities {\n .tw\\:pointer-events-auto {\n pointer-events: auto;\n }\n .tw\\:pointer-events-none {\n pointer-events: none;\n }\n .tw\\:table {\n font-size: 0.875rem;\n position: relative;\n width: 100%;\n border-radius: var(--radius-box);\n text-align: left;\n &:where(:dir(rtl), [dir=\"rtl\"], [dir=\"rtl\"] *) {\n text-align: right;\n }\n tr.tw\\:row-hover {\n &, &:nth-child(even) {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-base-200);\n }\n }\n }\n }\n :where(th, td) {\n padding-inline: calc(0.25rem * 4);\n padding-block: calc(0.25rem * 3);\n vertical-align: middle;\n }\n :where(thead, tfoot) {\n white-space: nowrap;\n color: color-mix(in oklab, var(--color-base-content) 60%, transparent);\n font-size: 0.875rem;\n font-weight: 600;\n }\n :where(tfoot) {\n border-top: var(--border) solid color-mix(in oklch, var(--color-base-content) 5%, #0000);\n }\n :where(.tw\\:table-pin-rows thead tr) {\n position: sticky;\n top: calc(0.25rem * 0);\n z-index: 1;\n background-color: var(--color-base-100);\n }\n :where(.tw\\:table-pin-rows tfoot tr) {\n position: sticky;\n bottom: calc(0.25rem * 0);\n z-index: 1;\n background-color: var(--color-base-100);\n }\n :where(.tw\\:table-pin-cols tr th) {\n position: sticky;\n right: calc(0.25rem * 0);\n left: calc(0.25rem * 0);\n background-color: var(--color-base-100);\n }\n :where(thead tr, tbody tr:not(:last-child)) {\n border-bottom: var(--border) solid color-mix(in oklch, var(--color-base-content) 5%, #0000);\n }\n }\n .tw\\:absolute {\n position: absolute;\n }\n .tw\\:fixed {\n position: fixed;\n }\n .tw\\:relative {\n position: relative;\n }\n .tw\\:inset-y-0 {\n inset-block: calc(var(--tw-spacing) * 0);\n }\n .tw\\:-top-2 {\n top: calc(var(--tw-spacing) * -2);\n }\n .tw\\:top-0 {\n top: calc(var(--tw-spacing) * 0);\n }\n .tw\\:top-1 {\n top: calc(var(--tw-spacing) * 1);\n }\n .tw\\:top-2 {\n top: calc(var(--tw-spacing) * 2);\n }\n .tw\\:top-4 {\n top: calc(var(--tw-spacing) * 4);\n }\n .tw\\:top-14 {\n top: calc(var(--tw-spacing) * 14);\n }\n .tw\\:-right-2 {\n right: calc(var(--tw-spacing) * -2);\n }\n .tw\\:right-0 {\n right: calc(var(--tw-spacing) * 0);\n }\n .tw\\:right-1 {\n right: calc(var(--tw-spacing) * 1);\n }\n .tw\\:right-2 {\n right: calc(var(--tw-spacing) * 2);\n }\n .tw\\:right-4 {\n right: calc(var(--tw-spacing) * 4);\n }\n .tw\\:right-5 {\n right: calc(var(--tw-spacing) * 5);\n }\n .tw\\:bottom-0 {\n bottom: calc(var(--tw-spacing) * 0);\n }\n .tw\\:bottom-4 {\n bottom: calc(var(--tw-spacing) * 4);\n }\n .tw\\:bottom-24\\! {\n bottom: calc(var(--tw-spacing) * 24) !important;\n }\n .tw\\:-left-6 {\n left: calc(var(--tw-spacing) * -6);\n }\n .tw\\:left-0 {\n left: calc(var(--tw-spacing) * 0);\n }\n .tw\\:left-0\\! {\n left: calc(var(--tw-spacing) * 0) !important;\n }\n .tw\\:left-1\\/2 {\n left: calc(1/2 * 100%);\n }\n .tw\\:left-4 {\n left: calc(var(--tw-spacing) * 4);\n }\n .tw\\:left-auto\\! {\n left: auto !important;\n }\n .tw\\:z-500 {\n z-index: var(--tw-z-index-500);\n }\n .tw\\:z-999 {\n z-index: 999;\n }\n .tw\\:z-1000 {\n z-index: var(--tw-z-index-1000);\n }\n .tw\\:z-2000 {\n z-index: var(--tw-z-index-2000);\n }\n .tw\\:z-3000 {\n z-index: var(--tw-z-index-3000);\n }\n .tw\\:z-4000 {\n z-index: 4000;\n }\n .tw\\:z-9998 {\n z-index: 9998;\n }\n .tw\\:z-10000 {\n z-index: 10000;\n }\n .tw\\:z-10000\\! {\n z-index: 10000 !important;\n }\n .tw\\:z-10035 {\n z-index: 10035;\n }\n .tw\\:col-span-1 {\n grid-column: span 1 / span 1;\n }\n .tw\\:float-left {\n float: left;\n }\n .tw\\:float-right {\n float: right;\n }\n .tw\\:m-1 {\n margin: calc(var(--tw-spacing) * 1);\n }\n .tw\\:m-4 {\n margin: calc(var(--tw-spacing) * 4);\n }\n .tw\\:m-auto {\n margin: auto;\n }\n .tw\\:-mx-4 {\n margin-inline: calc(var(--tw-spacing) * -4);\n }\n .tw\\:mx-2 {\n margin-inline: calc(var(--tw-spacing) * 2);\n }\n .tw\\:mx-4 {\n margin-inline: calc(var(--tw-spacing) * 4);\n }\n .tw\\:mx-6 {\n margin-inline: calc(var(--tw-spacing) * 6);\n }\n .tw\\:my-0\\! {\n margin-block: calc(var(--tw-spacing) * 0) !important;\n }\n .tw\\:my-1 {\n margin-block: calc(var(--tw-spacing) * 1);\n }\n .tw\\:my-2 {\n margin-block: calc(var(--tw-spacing) * 2);\n }\n .tw\\:my-2\\! {\n margin-block: calc(var(--tw-spacing) * 2) !important;\n }\n .tw\\:my-10 {\n margin-block: calc(var(--tw-spacing) * 10);\n }\n .tw\\:-mt-2 {\n margin-top: calc(var(--tw-spacing) * -2);\n }\n .tw\\:mt-0 {\n margin-top: calc(var(--tw-spacing) * 0);\n }\n .tw\\:mt-1 {\n margin-top: calc(var(--tw-spacing) * 1);\n }\n .tw\\:mt-1\\.5 {\n margin-top: calc(var(--tw-spacing) * 1.5);\n }\n .tw\\:mt-2 {\n margin-top: calc(var(--tw-spacing) * 2);\n }\n .tw\\:mt-3 {\n margin-top: calc(var(--tw-spacing) * 3);\n }\n .tw\\:mt-4 {\n margin-top: calc(var(--tw-spacing) * 4);\n }\n .tw\\:mt-5 {\n margin-top: calc(var(--tw-spacing) * 5);\n }\n .tw\\:mt-6 {\n margin-top: calc(var(--tw-spacing) * 6);\n }\n .tw\\:mt-8 {\n margin-top: calc(var(--tw-spacing) * 8);\n }\n .tw\\:mt-12 {\n margin-top: calc(var(--tw-spacing) * 12);\n }\n .tw\\:mt-16 {\n margin-top: calc(var(--tw-spacing) * 16);\n }\n .tw\\:-mr-4 {\n margin-right: calc(var(--tw-spacing) * -4);\n }\n .tw\\:-mr-6 {\n margin-right: calc(var(--tw-spacing) * -6);\n }\n .tw\\:mr-1 {\n margin-right: calc(var(--tw-spacing) * 1);\n }\n .tw\\:mr-2 {\n margin-right: calc(var(--tw-spacing) * 2);\n }\n .tw\\:mr-4 {\n margin-right: calc(var(--tw-spacing) * 4);\n }\n .tw\\:mr-5 {\n margin-right: calc(var(--tw-spacing) * 5);\n }\n .tw\\:-mb-1 {\n margin-bottom: calc(var(--tw-spacing) * -1);\n }\n .tw\\:-mb-2 {\n margin-bottom: calc(var(--tw-spacing) * -2);\n }\n .tw\\:-mb-4 {\n margin-bottom: calc(var(--tw-spacing) * -4);\n }\n .tw\\:mb-0 {\n margin-bottom: calc(var(--tw-spacing) * 0);\n }\n .tw\\:mb-1 {\n margin-bottom: calc(var(--tw-spacing) * 1);\n }\n .tw\\:mb-2 {\n margin-bottom: calc(var(--tw-spacing) * 2);\n }\n .tw\\:mb-3 {\n margin-bottom: calc(var(--tw-spacing) * 3);\n }\n .tw\\:mb-4 {\n margin-bottom: calc(var(--tw-spacing) * 4);\n }\n .tw\\:mb-6 {\n margin-bottom: calc(var(--tw-spacing) * 6);\n }\n .tw\\:mb-10 {\n margin-bottom: calc(var(--tw-spacing) * 10);\n }\n .tw\\:ml-1 {\n margin-left: calc(var(--tw-spacing) * 1);\n }\n .tw\\:ml-2 {\n margin-left: calc(var(--tw-spacing) * 2);\n }\n .tw\\:ml-14 {\n margin-left: calc(var(--tw-spacing) * 14);\n }\n .tw\\:ml-48 {\n margin-left: calc(var(--tw-spacing) * 48);\n }\n .tw\\:block {\n display: block;\n }\n .tw\\:flex {\n display: flex;\n }\n .tw\\:grid {\n display: grid;\n }\n .tw\\:hidden {\n display: none;\n }\n .tw\\:inline {\n display: inline;\n }\n .tw\\:inline-block {\n display: inline-block;\n }\n .tw\\:inline-flex {\n display: inline-flex;\n }\n .tw\\:table {\n display: table;\n }\n .tw\\:h-3 {\n height: calc(var(--tw-spacing) * 3);\n }\n .tw\\:h-3\\/4 {\n height: calc(3/4 * 100%);\n }\n .tw\\:h-4 {\n height: calc(var(--tw-spacing) * 4);\n }\n .tw\\:h-5 {\n height: calc(var(--tw-spacing) * 5);\n }\n .tw\\:h-6 {\n height: calc(var(--tw-spacing) * 6);\n }\n .tw\\:h-8 {\n height: calc(var(--tw-spacing) * 8);\n }\n .tw\\:h-10 {\n height: calc(var(--tw-spacing) * 10);\n }\n .tw\\:h-12 {\n height: calc(var(--tw-spacing) * 12);\n }\n .tw\\:h-20 {\n height: calc(var(--tw-spacing) * 20);\n }\n .tw\\:h-24 {\n height: calc(var(--tw-spacing) * 24);\n }\n .tw\\:h-28 {\n height: calc(var(--tw-spacing) * 28);\n }\n .tw\\:h-32 {\n height: calc(var(--tw-spacing) * 32);\n }\n .tw\\:h-40 {\n height: calc(var(--tw-spacing) * 40);\n }\n .tw\\:h-48 {\n height: calc(var(--tw-spacing) * 48);\n }\n .tw\\:h-\\[2em\\] {\n height: 2em;\n }\n .tw\\:h-\\[100dvh\\] {\n height: 100dvh;\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-\\[calc\\(100\\%-1rem\\)\\] {\n height: calc(100% - 1rem);\n }\n .tw\\:h-\\[calc\\(100dvh-64px\\)\\] {\n height: calc(100dvh - 64px);\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-fit {\n height: fit-content;\n }\n .tw\\:h-full {\n height: 100%;\n }\n .tw\\:max-h-64 {\n max-height: calc(var(--tw-spacing) * 64);\n }\n .tw\\:max-h-\\[calc\\(100dvh-96px\\)\\] {\n max-height: calc(100dvh - 96px);\n }\n .tw\\:max-h-\\[calc\\(100dvh-152px\\)\\] {\n max-height: calc(100dvh - 152px);\n }\n .tw\\:min-h-0 {\n min-height: calc(var(--tw-spacing) * 0);\n }\n .tw\\:min-h-56 {\n min-height: var(--tw-min-height-56);\n }\n .tw\\:min-h-80 {\n min-height: var(--tw-min-height-80);\n }\n .tw\\:min-h-\\[5em\\] {\n min-height: 5em;\n }\n .tw\\:min-h-\\[21px\\] {\n min-height: 21px;\n }\n .tw\\:w-1 {\n width: calc(var(--tw-spacing) * 1);\n }\n .tw\\:w-4 {\n width: calc(var(--tw-spacing) * 4);\n }\n .tw\\:w-5 {\n width: calc(var(--tw-spacing) * 5);\n }\n .tw\\:w-6 {\n width: calc(var(--tw-spacing) * 6);\n }\n .tw\\:w-8 {\n width: calc(var(--tw-spacing) * 8);\n }\n .tw\\:w-10 {\n width: calc(var(--tw-spacing) * 10);\n }\n .tw\\:w-12 {\n width: calc(var(--tw-spacing) * 12);\n }\n .tw\\:w-14 {\n width: calc(var(--tw-spacing) * 14);\n }\n .tw\\:w-20 {\n width: calc(var(--tw-spacing) * 20);\n }\n .tw\\:w-28 {\n width: calc(var(--tw-spacing) * 28);\n }\n .tw\\:w-48 {\n width: calc(var(--tw-spacing) * 48);\n }\n .tw\\:w-52 {\n width: var(--tw-container-52);\n }\n .tw\\:w-80 {\n width: calc(var(--tw-spacing) * 80);\n }\n .tw\\:w-96 {\n width: calc(var(--tw-spacing) * 96);\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: fit-content;\n }\n .tw\\:w-full {\n width: 100%;\n }\n .tw\\:w-xl {\n width: var(--tw-container-xl);\n }\n .tw\\:max-w-3xl {\n max-width: var(--tw-container-3xl);\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: var(--tw-container-xl);\n }\n .tw\\:max-w-xs {\n max-width: var(--tw-container-xs);\n }\n .tw\\:min-w-0 {\n min-width: calc(var(--tw-spacing) * 0);\n }\n .tw\\:min-w-80 {\n min-width: var(--tw-min-width-80);\n }\n .tw\\:min-w-\\[8rem\\] {\n min-width: 8rem;\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-fit {\n min-width: fit-content;\n }\n .tw\\:flex-1 {\n flex: 1;\n }\n .tw\\:flex-none {\n flex: none;\n }\n .tw\\:grow {\n flex-grow: 1;\n }\n .tw\\:basis-1\\/5 {\n flex-basis: calc(1/5 * 100%);\n }\n .tw\\:basis-2\\/5 {\n flex-basis: calc(2/5 * 100%);\n }\n .tw\\:-translate-x-1\\/2 {\n --tw-translate-x: calc(calc(1/2 * 100%) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .tw\\:-translate-x-full {\n --tw-translate-x: -100%;\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .tw\\:translate-x-0 {\n --tw-translate-x: calc(var(--tw-spacing) * 0);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .tw\\:translate-x-1\\/3 {\n --tw-translate-x: calc(1/3 * 100%);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .tw\\:-translate-y-1\\/3 {\n --tw-translate-y: calc(calc(1/3 * 100%) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .tw\\:rotate-180 {\n rotate: 180deg;\n }\n .tw\\:transform {\n transform: var(--tw-rotate-x) var(--tw-rotate-y) var(--tw-rotate-z) var(--tw-skew-x) var(--tw-skew-y);\n }\n .tw\\:animate-none {\n animation: none;\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 columns: 1;\n }\n .tw\\: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-col {\n flex-direction: column;\n }\n .tw\\:flex-row {\n flex-direction: row;\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-center {\n place-items: center;\n }\n .tw\\:place-items-end {\n place-items: end;\n }\n .tw\\:items-center {\n align-items: center;\n }\n .tw\\:justify-between {\n justify-content: space-between;\n }\n .tw\\:justify-center {\n justify-content: center;\n }\n .tw\\:justify-end {\n justify-content: flex-end;\n }\n .tw\\:justify-normal {\n justify-content: normal;\n }\n .tw\\:gap-2 {\n gap: calc(var(--tw-spacing) * 2);\n }\n .tw\\:gap-6 {\n gap: calc(var(--tw-spacing) * 6);\n }\n .tw\\:space-y-4 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--tw-spacing) * 4) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--tw-spacing) * 4) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .tw\\:space-y-6 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--tw-spacing) * 6) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--tw-spacing) * 6) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .tw\\:space-x-2 {\n :where(& > :not(:last-child)) {\n --tw-space-x-reverse: 0;\n margin-inline-start: calc(calc(var(--tw-spacing) * 2) * var(--tw-space-x-reverse));\n margin-inline-end: calc(calc(var(--tw-spacing) * 2) * calc(1 - var(--tw-space-x-reverse)));\n }\n }\n .tw\\:space-x-3 {\n :where(& > :not(:last-child)) {\n --tw-space-x-reverse: 0;\n margin-inline-start: calc(calc(var(--tw-spacing) * 3) * var(--tw-space-x-reverse));\n margin-inline-end: calc(calc(var(--tw-spacing) * 3) * calc(1 - var(--tw-space-x-reverse)));\n }\n }\n .tw\\:place-self-center {\n place-self: center;\n }\n .tw\\:place-self-end {\n place-self: end;\n }\n .tw\\:self-center {\n align-self: center;\n }\n .tw\\:truncate {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\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-x-hidden {\n overflow-x: hidden;\n }\n .tw\\:overflow-y-auto {\n overflow-y: auto;\n }\n .tw\\:rounded {\n border-radius: 0.25rem;\n }\n .tw\\:rounded-2xl {\n border-radius: var(--tw-radius-2xl);\n }\n .tw\\:rounded-box {\n border-radius: var(--radius-box);\n }\n .tw\\:rounded-box {\n border-radius: var(--radius-box);\n }\n .tw\\:rounded-full {\n border-radius: calc(infinity * 1px);\n }\n .tw\\:rounded-lg {\n border-radius: var(--tw-radius-lg);\n }\n .tw\\:rounded-md {\n border-radius: var(--tw-radius-md);\n }\n .tw\\:rounded-none {\n border-radius: 0;\n }\n .tw\\:rounded-none\\! {\n border-radius: 0 !important;\n }\n .tw\\:rounded-xl {\n border-radius: var(--tw-radius-xl);\n }\n .tw\\:rounded-tl-none {\n border-top-left-radius: 0;\n }\n .tw\\:rounded-tr-md {\n border-top-right-radius: var(--tw-radius-md);\n }\n .tw\\:rounded-br-md {\n border-bottom-right-radius: var(--tw-radius-md);\n }\n .tw\\:border {\n border-style: var(--tw-border-style);\n border-width: 1px;\n }\n .tw\\:border-0 {\n border-style: var(--tw-border-style);\n border-width: 0px;\n }\n .tw\\:border-4 {\n border-style: var(--tw-border-style);\n border-width: 4px;\n }\n .tw\\:border-\\[1px\\] {\n border-style: var(--tw-border-style);\n border-width: 1px;\n }\n .tw\\:border-t-0 {\n border-top-style: var(--tw-border-style);\n border-top-width: 0px;\n }\n .tw\\:border-none {\n --tw-border-style: none;\n border-style: none;\n }\n .tw\\:border-\\(--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 border-color: var(--color-base-200);\n }\n .tw\\:border-base-300 {\n border-color: var(--color-base-300);\n }\n .tw\\:border-current {\n border-color: currentColor;\n }\n .tw\\:border-gray-300 {\n border-color: var(--tw-color-gray-300);\n }\n .tw\\:bg-base-100 {\n background-color: var(--color-base-100);\n }\n .tw\\:bg-base-200 {\n background-color: var(--color-base-200);\n }\n .tw\\:bg-base-300 {\n background-color: var(--color-base-300);\n }\n .tw\\:bg-gray-200 {\n background-color: var(--tw-color-gray-200);\n }\n .tw\\:bg-neutral-content {\n background-color: var(--color-neutral-content);\n }\n .tw\\:bg-primary {\n background-color: var(--color-primary);\n }\n .tw\\:bg-slate-200 {\n background-color: var(--tw-color-slate-200);\n }\n .tw\\:bg-transparent {\n background-color: transparent;\n }\n .tw\\:bg-white {\n background-color: var(--tw-color-white);\n }\n .tw\\:fill-current {\n fill: currentColor;\n }\n .tw\\:stroke-3 {\n stroke-width: 3;\n }\n .tw\\:stroke-\\[2\\.5\\] {\n stroke-width: 2.5;\n }\n .tw\\:object-cover {\n object-fit: cover;\n }\n .tw\\:p-0 {\n padding: calc(var(--tw-spacing) * 0);\n }\n .tw\\:p-0\\! {\n padding: calc(var(--tw-spacing) * 0) !important;\n }\n .tw\\:p-1 {\n padding: calc(var(--tw-spacing) * 1);\n }\n .tw\\:p-2 {\n padding: calc(var(--tw-spacing) * 2);\n }\n .tw\\:p-3 {\n padding: calc(var(--tw-spacing) * 3);\n }\n .tw\\:p-4 {\n padding: calc(var(--tw-spacing) * 4);\n }\n .tw\\:p-4\\! {\n padding: calc(var(--tw-spacing) * 4) !important;\n }\n .tw\\:p-6 {\n padding: calc(var(--tw-spacing) * 6);\n }\n .tw\\:p-9\\! {\n padding: calc(var(--tw-spacing) * 9) !important;\n }\n .tw\\:p-\\[1px\\] {\n padding: 1px;\n }\n .tw\\:px-2 {\n padding-inline: calc(var(--tw-spacing) * 2);\n }\n .tw\\:px-4 {\n padding-inline: calc(var(--tw-spacing) * 4);\n }\n .tw\\:px-6 {\n padding-inline: calc(var(--tw-spacing) * 6);\n }\n .tw\\:px-8 {\n padding-inline: calc(var(--tw-spacing) * 8);\n }\n .tw\\:py-0\\.5 {\n padding-block: calc(var(--tw-spacing) * 0.5);\n }\n .tw\\:py-1 {\n padding-block: calc(var(--tw-spacing) * 1);\n }\n .tw\\:py-2 {\n padding-block: calc(var(--tw-spacing) * 2);\n }\n .tw\\:ps-2\\! {\n padding-inline-start: calc(var(--tw-spacing) * 2) !important;\n }\n .tw\\:pe-2\\! {\n padding-inline-end: calc(var(--tw-spacing) * 2) !important;\n }\n .tw\\:pt-0 {\n padding-top: calc(var(--tw-spacing) * 0);\n }\n .tw\\:pt-1 {\n padding-top: calc(var(--tw-spacing) * 1);\n }\n .tw\\:pt-2 {\n padding-top: calc(var(--tw-spacing) * 2);\n }\n .tw\\:pt-4 {\n padding-top: calc(var(--tw-spacing) * 4);\n }\n .tw\\:pt-6 {\n padding-top: calc(var(--tw-spacing) * 6);\n }\n .tw\\:pr-1 {\n padding-right: calc(var(--tw-spacing) * 1);\n }\n .tw\\:pr-4 {\n padding-right: calc(var(--tw-spacing) * 4);\n }\n .tw\\:pr-12 {\n padding-right: calc(var(--tw-spacing) * 12);\n }\n .tw\\:pb-0 {\n padding-bottom: calc(var(--tw-spacing) * 0);\n }\n .tw\\:pb-1 {\n padding-bottom: calc(var(--tw-spacing) * 1);\n }\n .tw\\:pb-2 {\n padding-bottom: calc(var(--tw-spacing) * 2);\n }\n .tw\\:pb-4 {\n padding-bottom: calc(var(--tw-spacing) * 4);\n }\n .tw\\:pb-6 {\n padding-bottom: calc(var(--tw-spacing) * 6);\n }\n .tw\\:pl-2 {\n padding-left: calc(var(--tw-spacing) * 2);\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: var(--tw-text-2xl);\n line-height: var(--tw-leading, var(--tw-text-2xl--line-height));\n }\n .tw\\:text-3xl {\n font-size: var(--tw-text-3xl);\n line-height: var(--tw-leading, var(--tw-text-3xl--line-height));\n }\n .tw\\:text-6xl {\n font-size: var(--tw-text-6xl);\n line-height: var(--tw-leading, var(--tw-text-6xl--line-height));\n }\n .tw\\:text-base {\n font-size: var(--tw-text-base);\n line-height: var(--tw-leading, var(--tw-text-base--line-height));\n }\n .tw\\:text-lg {\n font-size: var(--tw-text-lg);\n line-height: var(--tw-leading, var(--tw-text-lg--line-height));\n }\n .tw\\:text-sm {\n font-size: var(--tw-text-sm);\n line-height: var(--tw-leading, var(--tw-text-sm--line-height));\n }\n .tw\\:text-xl {\n font-size: var(--tw-text-xl);\n line-height: var(--tw-leading, var(--tw-text-xl--line-height));\n }\n .tw\\:text-xs {\n font-size: var(--tw-text-xs);\n line-height: var(--tw-leading, var(--tw-text-xs--line-height));\n }\n .tw\\:text-map {\n font-size: var(--tw-text-map);\n }\n .tw\\:leading-3 {\n --tw-leading: calc(var(--tw-spacing) * 3);\n line-height: calc(var(--tw-spacing) * 3);\n }\n .tw\\:leading-5 {\n --tw-leading: calc(var(--tw-spacing) * 5);\n line-height: calc(var(--tw-spacing) * 5);\n }\n .tw\\:leading-map {\n --tw-leading: var(--tw-leading-map);\n line-height: var(--tw-leading-map);\n }\n .tw\\:font-bold {\n --tw-font-weight: var(--tw-font-weight-bold);\n font-weight: var(--tw-font-weight-bold);\n }\n .tw\\:font-medium {\n --tw-font-weight: var(--tw-font-weight-medium);\n font-weight: var(--tw-font-weight-medium);\n }\n .tw\\:font-normal {\n --tw-font-weight: var(--tw-font-weight-normal);\n font-weight: var(--tw-font-weight-normal);\n }\n .tw\\:font-semibold {\n --tw-font-weight: var(--tw-font-weight-semibold);\n font-weight: var(--tw-font-weight-semibold);\n }\n .tw\\:text-ellipsis {\n text-overflow: ellipsis;\n }\n .tw\\:whitespace-nowrap {\n white-space: nowrap;\n }\n .tw\\:text-base-content {\n color: var(--color-base-content);\n }\n .tw\\:text-base-content\\! {\n color: var(--color-base-content) !important;\n }\n .tw\\:text-current {\n color: currentColor;\n }\n .tw\\:text-error {\n color: var(--color-error);\n }\n .tw\\:text-error\\! {\n color: var(--color-error) !important;\n }\n .tw\\:text-gray-400 {\n color: var(--tw-color-gray-400);\n }\n .tw\\:text-gray-500 {\n color: var(--tw-color-gray-500);\n }\n .tw\\:text-gray-600 {\n color: var(--tw-color-gray-600);\n }\n .tw\\:text-green-500 {\n color: var(--tw-color-green-500);\n }\n .tw\\:text-primary {\n color: var(--color-primary);\n }\n .tw\\:text-white {\n color: var(--tw-color-white);\n }\n .tw\\:text-zinc-500 {\n color: var(--tw-color-zinc-500);\n }\n .tw\\:normal-case {\n text-transform: none;\n }\n .tw\\:italic {\n font-style: italic;\n }\n .tw\\:underline {\n text-decoration-line: underline;\n }\n .tw\\:opacity-0 {\n opacity: 0%;\n }\n .tw\\:opacity-50 {\n opacity: 50%;\n }\n .tw\\:opacity-100 {\n opacity: 100%;\n }\n .tw\\:shadow {\n --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .tw\\:shadow-lg {\n --tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 4px 6px -4px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .tw\\:shadow-md {\n --tw-shadow: 0 4px 6px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 2px 4px -2px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .tw\\:shadow-sm {\n --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .tw\\:shadow-xl {\n --tw-shadow: 0 20px 25px -5px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 8px 10px -6px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .tw\\:drop-shadow-md {\n --tw-drop-shadow: drop-shadow(var(--tw-drop-shadow-md));\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, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to, opacity, box-shadow, transform, translate, scale, rotate, filter, -webkit-backdrop-filter, backdrop-filter;\n transition-timing-function: var(--tw-ease, var(--tw-default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--tw-default-transition-duration));\n }\n .tw\\:transition-all {\n transition-property: all;\n transition-timing-function: var(--tw-ease, var(--tw-default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--tw-default-transition-duration));\n }\n .tw\\:transition-opacity {\n transition-property: opacity;\n transition-timing-function: var(--tw-ease, var(--tw-default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--tw-default-transition-duration));\n }\n .tw\\:transition-none {\n transition-property: none;\n }\n .tw\\:delay-400 {\n transition-delay: 400ms;\n }\n .tw\\:duration-200 {\n --tw-duration: 200ms;\n transition-duration: 200ms;\n }\n .tw\\:duration-300 {\n --tw-duration: 300ms;\n transition-duration: 300ms;\n }\n .tw\\:duration-500 {\n --tw-duration: 500ms;\n transition-duration: 500ms;\n }\n .tw\\:ease-in {\n --tw-ease: var(--tw-ease-in);\n transition-timing-function: var(--tw-ease-in);\n }\n .tw\\:\\[--tab-border-color\\:var\\(--fallback-bc\\,oklch\\(var\\(--bc\\)\\/0\\.2\\)\\)\\] {\n --tab-border-color: var(--fallback-bc,oklch(var(--bc)/0.2));\n }\n .tw\\:hover\\:cursor-pointer {\n &:hover {\n @media (hover: hover) {\n cursor: pointer;\n }\n }\n }\n .tw\\:hover\\:bg-base-200 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-base-200);\n }\n }\n }\n .tw\\:hover\\:bg-slate-300 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--tw-color-slate-300);\n }\n }\n }\n .tw\\:hover\\:bg-transparent {\n &:hover {\n @media (hover: hover) {\n background-color: transparent;\n }\n }\n }\n .tw\\:hover\\:font-bold {\n &:hover {\n @media (hover: hover) {\n --tw-font-weight: var(--tw-font-weight-bold);\n font-weight: var(--tw-font-weight-bold);\n }\n }\n }\n .tw\\:hover\\:text-primary {\n &:hover {\n @media (hover: hover) {\n color: var(--color-primary);\n }\n }\n }\n .tw\\:hover\\:underline {\n &:hover {\n @media (hover: hover) {\n text-decoration-line: underline;\n }\n }\n }\n .tw\\:focus\\:border-indigo-500 {\n &:focus {\n border-color: var(--tw-color-indigo-500);\n }\n }\n .tw\\:focus\\:ring-indigo-500 {\n &:focus {\n --tw-ring-color: var(--tw-color-indigo-500);\n }\n }\n .tw\\:focus\\:outline-hidden {\n &:focus {\n --tw-outline-style: none;\n outline-style: none;\n @media (forced-colors: active) {\n outline: 2px solid transparent;\n outline-offset: 2px;\n }\n }\n }\n .tw\\:sm\\:left-auto\\! {\n @media (width >= 40rem) {\n left: auto !important;\n }\n }\n .tw\\:sm\\:w-2xl {\n @media (width >= 40rem) {\n width: var(--tw-container-2xl);\n }\n }\n .tw\\:sm\\:grid-cols-2 {\n @media (width >= 40rem) {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n }\n .tw\\:sm\\:text-sm {\n @media (width >= 40rem) {\n font-size: var(--tw-text-sm);\n line-height: var(--tw-leading, var(--tw-text-sm--line-height));\n }\n }\n .tw\\:md\\:mb-0 {\n @media (width >= 48rem) {\n margin-bottom: calc(var(--tw-spacing) * 0);\n }\n }\n .tw\\:md\\:flex {\n @media (width >= 48rem) {\n display: flex;\n }\n }\n .tw\\:md\\:hidden {\n @media (width >= 48rem) {\n display: none;\n }\n }\n .tw\\:md\\:w-1\\/2 {\n @media (width >= 48rem) {\n width: calc(1/2 * 100%);\n }\n }\n .tw\\:md\\:w-\\[calc\\(50\\%-32px\\)\\] {\n @media (width >= 48rem) {\n width: calc(50% - 32px);\n }\n }\n .tw\\:md\\:columns-2 {\n @media (width >= 48rem) {\n columns: 2;\n }\n }\n .tw\\:md\\:grid-cols-1 {\n @media (width >= 48rem) {\n grid-template-columns: repeat(1, minmax(0, 1fr));\n }\n }\n .tw\\:md\\:grid-cols-2 {\n @media (width >= 48rem) {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n }\n .tw\\:md\\:space-x-4 {\n @media (width >= 48rem) {\n :where(& > :not(:last-child)) {\n --tw-space-x-reverse: 0;\n margin-inline-start: calc(calc(var(--tw-spacing) * 4) * var(--tw-space-x-reverse));\n margin-inline-end: calc(calc(var(--tw-spacing) * 4) * calc(1 - var(--tw-space-x-reverse)));\n }\n }\n }\n .tw\\:md\\:text-2xl {\n @media (width >= 48rem) {\n font-size: var(--tw-text-2xl);\n line-height: var(--tw-leading, var(--tw-text-2xl--line-height));\n }\n }\n .tw\\:lg\\:columns-3 {\n @media (width >= 64rem) {\n columns: 3;\n }\n }\n .tw\\:lg\\:grid-cols-1 {\n @media (width >= 64rem) {\n grid-template-columns: repeat(1, minmax(0, 1fr));\n }\n }\n .tw\\:xl\\:max-w-6xl {\n @media (width >= 80rem) {\n max-width: var(--tw-container-6xl);\n }\n }\n .tw\\:xl\\:grid-cols-1 {\n @media (width >= 80rem) {\n grid-template-columns: repeat(1, minmax(0, 1fr));\n }\n }\n .tw\\:xl\\:text-3xl {\n @media (width >= 80rem) {\n font-size: var(--tw-text-3xl);\n line-height: var(--tw-leading, var(--tw-text-3xl--line-height));\n }\n }\n .tw\\:2xl\\:columns-4 {\n @media (width >= 96rem) {\n columns: 4;\n }\n }\n .tw\\:2xl\\:grid-cols-2 {\n @media (width >= 96rem) {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n }\n .tw\\:dark\\:bg-zinc-800 {\n @media (prefers-color-scheme: dark) {\n background-color: var(--tw-color-zinc-800);\n }\n }\n}\n@layer base {\n *,\n ::after,\n ::before,\n ::backdrop,\n ::file-selector-button {\n border-color: var(--color-gray-200, currentColor);\n }\n}\n.tw-modal {\n z-index: 1200 !important;\n}\n.tw-menu li a {\n border-radius: 10px;\n}\n.tw-modal {\n z-index: 1200 !important;\n max-height: 100dvh;\n}\n.tw-modal-box {\n max-height: calc(100dvh - 2em);\n}\n.tw-tab-content .container {\n height: 100%;\n}\n@layer base {\n :where(:root),:root:has(input.theme-controller[value=light]:checked),[data-theme=light] {\n color-scheme: light;\n --color-base-100: oklch(100% 0 0);\n --color-base-200: oklch(98% 0 0);\n --color-base-300: oklch(95% 0 0);\n --color-base-content: oklch(21% 0.006 285.885);\n --color-primary: oklch(45% 0.24 277.023);\n --color-primary-content: oklch(93% 0.034 272.788);\n --color-secondary: oklch(65% 0.241 354.308);\n --color-secondary-content: oklch(94% 0.028 342.258);\n --color-accent: oklch(77% 0.152 181.912);\n --color-accent-content: oklch(38% 0.063 188.416);\n --color-neutral: oklch(14% 0.005 285.823);\n --color-neutral-content: oklch(92% 0.004 286.32);\n --color-info: oklch(74% 0.16 232.661);\n --color-info-content: oklch(29% 0.066 243.157);\n --color-success: oklch(76% 0.177 163.223);\n --color-success-content: oklch(37% 0.077 168.94);\n --color-warning: oklch(82% 0.189 84.429);\n --color-warning-content: oklch(41% 0.112 45.904);\n --color-error: oklch(71% 0.194 13.428);\n --color-error-content: oklch(27% 0.105 12.094);\n --radius-selector: 0.5rem;\n --radius-field: 0.25rem;\n --radius-box: 0.5rem;\n --size-selector: 0.25rem;\n --size-field: 0.25rem;\n --border: 1px;\n --depth: 1;\n --noise: 0;\n }\n}\n@layer base {\n @media (prefers-color-scheme: dark) {\n :root {\n color-scheme: dark;\n --color-base-100: oklch(25.33% 0.016 252.42);\n --color-base-200: oklch(23.26% 0.014 253.1);\n --color-base-300: oklch(21.15% 0.012 254.09);\n --color-base-content: oklch(97.807% 0.029 256.847);\n --color-primary: oklch(58% 0.233 277.117);\n --color-primary-content: oklch(96% 0.018 272.314);\n --color-secondary: oklch(65% 0.241 354.308);\n --color-secondary-content: oklch(94% 0.028 342.258);\n --color-accent: oklch(77% 0.152 181.912);\n --color-accent-content: oklch(38% 0.063 188.416);\n --color-neutral: oklch(14% 0.005 285.823);\n --color-neutral-content: oklch(92% 0.004 286.32);\n --color-info: oklch(74% 0.16 232.661);\n --color-info-content: oklch(29% 0.066 243.157);\n --color-success: oklch(76% 0.177 163.223);\n --color-success-content: oklch(37% 0.077 168.94);\n --color-warning: oklch(82% 0.189 84.429);\n --color-warning-content: oklch(41% 0.112 45.904);\n --color-error: oklch(71% 0.194 13.428);\n --color-error-content: oklch(27% 0.105 12.094);\n --radius-selector: 0.5rem;\n --radius-field: 0.25rem;\n --radius-box: 0.5rem;\n --size-selector: 0.25rem;\n --size-field: 0.25rem;\n --border: 1px;\n --depth: 1;\n --noise: 0;\n }\n }\n}\n@layer base {\n :root:has(input.theme-controller[value=light]:checked),[data-theme=light] {\n color-scheme: light;\n --color-base-100: oklch(100% 0 0);\n --color-base-200: oklch(98% 0 0);\n --color-base-300: oklch(95% 0 0);\n --color-base-content: oklch(21% 0.006 285.885);\n --color-primary: oklch(45% 0.24 277.023);\n --color-primary-content: oklch(93% 0.034 272.788);\n --color-secondary: oklch(65% 0.241 354.308);\n --color-secondary-content: oklch(94% 0.028 342.258);\n --color-accent: oklch(77% 0.152 181.912);\n --color-accent-content: oklch(38% 0.063 188.416);\n --color-neutral: oklch(14% 0.005 285.823);\n --color-neutral-content: oklch(92% 0.004 286.32);\n --color-info: oklch(74% 0.16 232.661);\n --color-info-content: oklch(29% 0.066 243.157);\n --color-success: oklch(76% 0.177 163.223);\n --color-success-content: oklch(37% 0.077 168.94);\n --color-warning: oklch(82% 0.189 84.429);\n --color-warning-content: oklch(41% 0.112 45.904);\n --color-error: oklch(71% 0.194 13.428);\n --color-error-content: oklch(27% 0.105 12.094);\n --radius-selector: 0.5rem;\n --radius-field: 0.25rem;\n --radius-box: 0.5rem;\n --size-selector: 0.25rem;\n --size-field: 0.25rem;\n --border: 1px;\n --depth: 1;\n --noise: 0;\n }\n}\n@layer base {\n :root:has(input.theme-controller[value=dark]:checked),[data-theme=dark] {\n color-scheme: dark;\n --color-base-100: oklch(25.33% 0.016 252.42);\n --color-base-200: oklch(23.26% 0.014 253.1);\n --color-base-300: oklch(21.15% 0.012 254.09);\n --color-base-content: oklch(97.807% 0.029 256.847);\n --color-primary: oklch(58% 0.233 277.117);\n --color-primary-content: oklch(96% 0.018 272.314);\n --color-secondary: oklch(65% 0.241 354.308);\n --color-secondary-content: oklch(94% 0.028 342.258);\n --color-accent: oklch(77% 0.152 181.912);\n --color-accent-content: oklch(38% 0.063 188.416);\n --color-neutral: oklch(14% 0.005 285.823);\n --color-neutral-content: oklch(92% 0.004 286.32);\n --color-info: oklch(74% 0.16 232.661);\n --color-info-content: oklch(29% 0.066 243.157);\n --color-success: oklch(76% 0.177 163.223);\n --color-success-content: oklch(37% 0.077 168.94);\n --color-warning: oklch(82% 0.189 84.429);\n --color-warning-content: oklch(41% 0.112 45.904);\n --color-error: oklch(71% 0.194 13.428);\n --color-error-content: oklch(27% 0.105 12.094);\n --radius-selector: 0.5rem;\n --radius-field: 0.25rem;\n --radius-box: 0.5rem;\n --size-selector: 0.25rem;\n --size-field: 0.25rem;\n --border: 1px;\n --depth: 1;\n --noise: 0;\n }\n}\n@layer base {\n :root:has(input.theme-controller[value=cupcake]:checked),[data-theme=cupcake] {\n color-scheme: light;\n --color-base-100: oklch(97.788% 0.004 56.375);\n --color-base-200: oklch(93.982% 0.007 61.449);\n --color-base-300: oklch(91.586% 0.006 53.44);\n --color-base-content: oklch(23.574% 0.066 313.189);\n --color-primary: oklch(85% 0.138 181.071);\n --color-primary-content: oklch(43% 0.078 188.216);\n --color-secondary: oklch(89% 0.061 343.231);\n --color-secondary-content: oklch(45% 0.187 3.815);\n --color-accent: oklch(90% 0.076 70.697);\n --color-accent-content: oklch(47% 0.157 37.304);\n --color-neutral: oklch(27% 0.006 286.033);\n --color-neutral-content: oklch(92% 0.004 286.32);\n --color-info: oklch(68% 0.169 237.323);\n --color-info-content: oklch(29% 0.066 243.157);\n --color-success: oklch(69% 0.17 162.48);\n --color-success-content: oklch(26% 0.051 172.552);\n --color-warning: oklch(79% 0.184 86.047);\n --color-warning-content: oklch(28% 0.066 53.813);\n --color-error: oklch(64% 0.246 16.439);\n --color-error-content: oklch(27% 0.105 12.094);\n --radius-selector: 1rem;\n --radius-field: 2rem;\n --radius-box: 1rem;\n --size-selector: 0.25rem;\n --size-field: 0.25rem;\n --border: 2px;\n --depth: 1;\n --noise: 0;\n }\n}\n@layer base {\n @property --radialprogress {\n syntax: \"<percentage>\";\n inherits: true;\n initial-value: 0%;\n }\n}\n@layer base {\n :root {\n scrollbar-color: color-mix(in oklch, currentColor 35%, #0000) #0000;\n }\n}\n@layer base {\n :root:has( .modal-open, .modal[open], .modal:target, .modal-toggle:checked, .drawer:not([class*=\"drawer-open\"]) > .drawer-toggle:checked ) {\n overflow: hidden;\n }\n}\n@layer base {\n :root,\n[data-theme] {\n background-color: var(--root-bg, var(--color-base-100));\n color: var(--color-base-content);\n }\n}\n@layer base {\n :root {\n --fx-noise: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='a'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='1.34' numOctaves='4' stitchTiles='stitch'%3E%3C/feTurbulence%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23a)' opacity='0.2'%3E%3C/rect%3E%3C/svg%3E\");\n }\n .chat {\n --mask-chat: url(\"data:image/svg+xml,%3csvg width='13' height='13' xmlns='http://www.w3.org/2000/svg'%3e%3cpath fill='black' d='M0 11.5004C0 13.0004 2 13.0004 2 13.0004H12H13V0.00036329L12.5 0C12.5 0 11.977 2.09572 11.8581 2.50033C11.6075 3.35237 10.9149 4.22374 9 5.50036C6 7.50036 0 10.0004 0 11.5004Z'/%3e%3c/svg%3e\");\n }\n}\n@layer base {\n :where(\n :root:has(\n .modal-open,\n .modal[open],\n .modal:target,\n .modal-toggle:checked,\n .drawer:not(.drawer-open) > .drawer-toggle:checked\n )\n) {\n scrollbar-gutter: stable;\n background-image: linear-gradient(var(--color-base-100), var(--color-base-100));\n --root-bg: color-mix(in srgb, var(--color-base-100), oklch(0% 0 0) 40%);\n }\n}\n@keyframes skeleton {\n 0% {\n background-position: 150%;\n }\n 100% {\n background-position: -50%;\n }\n}\n@keyframes progress {\n 50% {\n background-position-x: -115%;\n }\n}\n@keyframes radio {\n 0% {\n padding: 5px;\n }\n 50% {\n padding: 3px;\n }\n}\n@keyframes dropdown {\n 0% {\n opacity: 0;\n }\n}\n@keyframes rating {\n 0%, 40% {\n scale: 1.1;\n filter: brightness(1.05) contrast(1.05);\n }\n}\n@keyframes toast {\n 0% {\n scale: 0.9;\n opacity: 0;\n }\n 100% {\n scale: 1;\n opacity: 1;\n }\n}\n@property --tw-translate-x {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-translate-y {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-translate-z {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-rotate-x {\n syntax: \"*\";\n inherits: false;\n initial-value: rotateX(0);\n}\n@property --tw-rotate-y {\n syntax: \"*\";\n inherits: false;\n initial-value: rotateY(0);\n}\n@property --tw-rotate-z {\n syntax: \"*\";\n inherits: false;\n initial-value: rotateZ(0);\n}\n@property --tw-skew-x {\n syntax: \"*\";\n inherits: false;\n initial-value: skewX(0);\n}\n@property --tw-skew-y {\n syntax: \"*\";\n inherits: false;\n initial-value: skewY(0);\n}\n@property --tw-space-y-reverse {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-space-x-reverse {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-border-style {\n syntax: \"*\";\n inherits: false;\n initial-value: solid;\n}\n@property --tw-leading {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-font-weight {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-shadow-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-inset-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-inset-shadow-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-ring-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-ring-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-inset-ring-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-inset-ring-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-ring-inset {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-ring-offset-width {\n syntax: \"<length>\";\n inherits: false;\n initial-value: 0px;\n}\n@property --tw-ring-offset-color {\n syntax: \"*\";\n inherits: false;\n initial-value: #fff;\n}\n@property --tw-ring-offset-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-blur {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-brightness {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-contrast {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-grayscale {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-hue-rotate {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-invert {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-opacity {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-saturate {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-sepia {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-drop-shadow {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-blur {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-brightness {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-contrast {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-grayscale {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-hue-rotate {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-invert {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-opacity {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-saturate {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-sepia {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-duration {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-ease {\n syntax: \"*\";\n inherits: false;\n}";
|
79
80
|
styleInject(css_248z$7);
|
80
81
|
|
81
|
-
var css_248z$6 = ".masonry {\n
|
82
|
+
var css_248z$6 = ".masonry {\n column-count: 1;\n column-gap: 1.5rem;\n}\n\n.masonry-item {\n break-inside: avoid;\n margin-bottom: 1.5rem;\n}\n\n@media (min-width: 640px) {\n .masonry {\n column-count: 2;\n }\n}\n\n@media (min-width: 1024px) {\n .masonry {\n column-count: 3;\n }\n}\n\n@media (min-width: 1536px) {\n .masonry {\n column-count: 4;\n }\n}";
|
82
83
|
styleInject(css_248z$6);
|
83
84
|
|
84
|
-
var css_248z$5 = ":root {\n --toastify-color-info:
|
85
|
+
var css_248z$5 = ":root {\n --toastify-color-info: theme('colors.info');\n --toastify-color-success: theme('colors.success');\n --toastify-color-warning: theme('colors.warning');\n --toastify-color-error: theme('colors.error');\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: theme('colors.base-100');\n color: theme('colors.base-content');\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}";
|
85
86
|
styleInject(css_248z$5);
|
86
87
|
|
87
88
|
var css_248z$4 = ".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}";
|
88
89
|
styleInject(css_248z$4);
|
89
90
|
|
90
|
-
var css_248z$3 = ".fade {\n
|
91
|
+
var css_248z$3 = ".fade {\n mask-image: linear-gradient(180deg, transparent, #000 1%, #000 99%, transparent);\n}\n\n.placeholder-center::placeholder {\n text-align: center;\n}\n\ninput {\n box-sizing: border-box;\n}\n\ntextarea {\n box-sizing: border-box;\n}\n\n.crosshair-cursor-enabled {\n cursor: crosshair;\n}\n\n.marker-cluster span {\n color: #000;\n}";
|
91
92
|
styleInject(css_248z$3);
|
92
93
|
|
93
94
|
var css_248z$2 = ".calendar-icon {\n position: relative;\n top: -35px;\n left: 10px;\n width: 13px;\n}\n\n.user-icon {\n position: relative;\n top: -36px;\n left: 10px;\n width: 13px;\n}\n\n.circle-icon {\n position: relative;\n top: -33px;\n left: 10px;\n width: 13px;\n}\n\n.fire-icon {\n position: relative;\n top: -36px;\n left: 10px;\n width: 13px;\n}\n\n.tree-icon {\n position: relative;\n top: -38px;\n left: 4px;\n width: 24px;\n}\n\n.music-icon {\n position: relative;\n top: -35px;\n left: 4px;\n width: 24px;\n}\n\n.quest-icon {\n position: relative;\n top: -34px;\n left: 4px;\n width: 24px;\n}\n\n.drum-icon {\n position: relative;\n top: -38px;\n left: 4px;\n width: 24px;\n}\n\n.compass-icon {\n position: relative;\n top: -36.5px;\n left: 4px;\n width: 24px;\n}\n\n.group-icon {\n position: relative;\n top: -37px;\n left: 4px;\n width: 24px;\n}\n\n.liebevoll-jetzt-icon{\n position: relative;\n top: -35px;\n left: 4px;\n width: 24px;\n}\n\n.staff-snake-icon {\n position: relative;\n top: -35px;\n left: 4px;\n width: 24px;\n}\n\n.flower-icon {\n position: relative;\n top: -35px;\n left: 4px;\n width: 24px;\n}\n\n.network-icon {\n position: relative;\n top: -35px;\n left: 4px;\n width: 24px;\n}\n\n.shop-icon {\n position: relative;\n top: -34px;\n left: 4px;\n width: 24px;\n}\n\n.plant-icon {\n position: relative;\n top: -34px;\n left: 4px;\n width: 24px;\n}\n\n.circle-dot-icon {\n position: relative;\n top: -36px;\n left: 4px;\n width: 24px;\n}";
|
94
95
|
styleInject(css_248z$2);
|
95
96
|
|
96
|
-
var css_248z$1 = ".leaflet-control-attribution {\n display: none;\n}\n\n.leaflet-control-locate {\n display: none;\n}\n\n.leaflet-data-marker {\n background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACMAAAAQCAYAAACcN8ZaAAAB3klEQVR42s3U4UdDURzG8czMXJnJ1Vwzc6VJZjaZJdlMlpQsKdmUFNOUspRSSqUolfQfr+fF98Vx5mwv9qbDx7LdznnO7/7Omej3+/+Ga0QMUYkhbvBgmhzCQxwxibIGrGEF8CQhU+LLtKQkQNqScUgjxRxTBIxbgfgD/BgnhM8kM5KTeclLQYqGkkMRBckzR8ic/mAgd5BAZplsUaqyIg2sDtHg2brUZJk5SmwopErJUWE8SpmTMhNvya60Zd/SNrR4bkeaskG4uiwRZk6yrJEYFibGAxn+scECHTmTnuVCzvmty3PHciB7bGKN6lQkzysPqIrHmpFhYbKUtckC1/Ioz4ZHuZdbuSLYiRxRpSZVWXZVxAzC0R4Ik5SQsu6w8yd5l2/5kg95I9SdXMoZQfYIUjeqEUrgOkXGPeN4TYRhxy8E+ZUf+eS7B7miIoeybVSjKDnm8u3+gH3pDTYwu1igATvs/pXqvBKiR4i2bNJfi1ZfUAnjgrOG8wY2quNzBKuU/ZS+uSFEl5O0xRGuUIlZCcw7xG5QPkeHYUSNV5WXGou2sC3rBC0LjenqCXGO0WEiTJa0Lr4KixdHBrDGuGGiRqCUpFk8pGIpQtCU7p4YPwxYxEMCk1aAMQZh8Ac8PfbIzYPJOwAAAABJRU5ErkJggg==') no-repeat;\n background-position: 6px 32px;\n}\n\n.leaflet-container {\n cursor: inherit;\n}\n\n.leaflet-popup-scrolled {\n overflow-x: hidden;\n}\n\n.leaflet-popup-content-wrapper, .leaflet-popup-tip{\n background-color:
|
97
|
+
var css_248z$1 = ".leaflet-control-attribution {\n display: none;\n}\n\n.leaflet-control-locate {\n display: none;\n}\n\n.leaflet-data-marker {\n background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACMAAAAQCAYAAACcN8ZaAAAB3klEQVR42s3U4UdDURzG8czMXJnJ1Vwzc6VJZjaZJdlMlpQsKdmUFNOUspRSSqUolfQfr+fF98Vx5mwv9qbDx7LdznnO7/7Omej3+/+Ga0QMUYkhbvBgmhzCQxwxibIGrGEF8CQhU+LLtKQkQNqScUgjxRxTBIxbgfgD/BgnhM8kM5KTeclLQYqGkkMRBckzR8ic/mAgd5BAZplsUaqyIg2sDtHg2brUZJk5SmwopErJUWE8SpmTMhNvya60Zd/SNrR4bkeaskG4uiwRZk6yrJEYFibGAxn+scECHTmTnuVCzvmty3PHciB7bGKN6lQkzysPqIrHmpFhYbKUtckC1/Ioz4ZHuZdbuSLYiRxRpSZVWXZVxAzC0R4Ik5SQsu6w8yd5l2/5kg95I9SdXMoZQfYIUjeqEUrgOkXGPeN4TYRhxy8E+ZUf+eS7B7miIoeybVSjKDnm8u3+gH3pDTYwu1igATvs/pXqvBKiR4i2bNJfi1ZfUAnjgrOG8wY2quNzBKuU/ZS+uSFEl5O0xRGuUIlZCcw7xG5QPkeHYUSNV5WXGou2sC3rBC0LjenqCXGO0WEiTJa0Lr4KixdHBrDGuGGiRqCUpFk8pGIpQtCU7p4YPwxYxEMCk1aAMQZh8Ac8PfbIzYPJOwAAAABJRU5ErkJggg==') no-repeat;\n background-position: 6px 32px;\n}\n\n.leaflet-container {\n cursor: inherit;\n}\n\n.leaflet-popup-scrolled {\n overflow-x: hidden;\n}\n\n.leaflet-popup-content-wrapper, .leaflet-popup-tip{\n background-color: theme('colors.base-100');\n color: theme('colors.base-content');\n\n}\n\n.leaflet-tooltip {\n background-color: theme('colors.base-100');\n color: theme('colors.base-content');\n border-width: 0px;\n}\n\n.leaflet-tooltip {\n border-radius: 1em;\n transition: opacity 500ms;\n transition-delay: 50ms;\n\n}\n\n.leaflet-tooltip-top::before {\n border-top-color: theme('colors.base-100');\n}\n\n.leaflet-container {\n text-align: left;\n background-image: url(\"data:image/svg+xml,%3Csvg width='40' height='40' stroke='%23000' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cstyle%3E.spinner_V8m1%7Btransform-origin:center;animation:spinner_zKoa 2s linear infinite%7D.spinner_V8m1 circle%7Bstroke-linecap:round;animation:spinner_YpZS 1.5s ease-out infinite%7D%40keyframes spinner_zKoa%7B100%25%7Btransform:rotate(360deg)%7D%7D%40keyframes spinner_YpZS%7B0%25%7Bstroke-dasharray:0 150;stroke-dashoffset:0%7D47.5%25%7Bstroke-dasharray:42 150;stroke-dashoffset:-16%7D95%25%2C100%25%7Bstroke-dasharray:42 150;stroke-dashoffset:-59%7D%7D%3C%2Fstyle%3E%3Cg class='spinner_V8m1'%3E%3Ccircle cx='12' cy='12' r='9.5' fill='none' stroke-width='3'%3E%3C%2Fcircle%3E%3C%2Fg%3E%3C%2Fsvg%3E\");\n background-repeat: no-repeat;\n background-attachment: fixed;\n background-position: 50% 80%;\n}";
|
97
98
|
styleInject(css_248z$1);
|
98
99
|
|
99
100
|
var css_248z = ".picker {\n position: relative;\n}\n\n.swatch {\n width: 28px;\n height: 28px;\n border-radius: 8px;\n border: 3px solid #fff;\n box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.1), inset 0 0 0 1px rgba(0, 0, 0, 0.1);\n cursor: pointer;\n}\n\n.popover {\n position: absolute;\n top: 0;\n left: 36px;\n border-radius: 9px;\n box-shadow: 0 6px 12px rgba(0, 0, 0, 0.15);\n}";
|
@@ -1114,6 +1115,7 @@ const useSetAppState = () => {
|
|
1114
1115
|
|
1115
1116
|
// Helper context to determine if the ContextWrapper is already present.
|
1116
1117
|
const ContextCheckContext = React.createContext(false);
|
1118
|
+
const CloseButton = ({ closeToast }) => (jsxRuntime.jsx("button", { className: 'tw-btn tw-btn-sm tw-btn-circle tw-btn-ghost tw:absolute tw:right-2 tw:top-2 tw:focus:outline-hidden', onClick: closeToast, children: "\u2715" }));
|
1117
1119
|
const ContextWrapper = ({ children }) => {
|
1118
1120
|
const isWrapped = React.useContext(ContextCheckContext);
|
1119
1121
|
const isInsideRouter = reactRouterDom.useInRouterContext();
|
@@ -1129,7 +1131,7 @@ const ContextWrapper = ({ children }) => {
|
|
1129
1131
|
// eslint-disable-next-line react/prop-types
|
1130
1132
|
const Wrappers = ({ children }) => {
|
1131
1133
|
const queryClient = new reactQuery.QueryClient();
|
1132
|
-
return (jsxRuntime.jsx(PermissionsProvider, { initialPermissions: [], children: jsxRuntime.jsx(TagsProvider, { initialTags: [], children: jsxRuntime.jsx(LayersProvider, { initialLayers: [], children: jsxRuntime.jsx(FilterProvider, { initialTags: [], children: jsxRuntime.jsx(ItemsProvider, { initialItems: [], children: jsxRuntime.jsx(SelectPositionProvider, { children: jsxRuntime.jsx(LeafletRefsProvider, { initialLeafletRefs: {}, children: jsxRuntime.jsx(reactQuery.QueryClientProvider, { client: queryClient, children: jsxRuntime.jsx(AppStateProvider, { children: jsxRuntime.jsx(ClusterRefProvider, { children: jsxRuntime.jsxs(QuestsProvider, { initialOpen: true, children: [jsxRuntime.jsx(reactToastify.ToastContainer, { position: 'top-right', autoClose: 2000, hideProgressBar: true, newestOnTop: false, closeOnClick: true, rtl: false, pauseOnFocusLoss: true, draggable: true, pauseOnHover: true, theme: 'light' }), children] }) }) }) }) }) }) }) }) }) }) }));
|
1134
|
+
return (jsxRuntime.jsx(PermissionsProvider, { initialPermissions: [], children: jsxRuntime.jsx(TagsProvider, { initialTags: [], children: jsxRuntime.jsx(LayersProvider, { initialLayers: [], children: jsxRuntime.jsx(FilterProvider, { initialTags: [], children: jsxRuntime.jsx(ItemsProvider, { initialItems: [], children: jsxRuntime.jsx(SelectPositionProvider, { children: jsxRuntime.jsx(LeafletRefsProvider, { initialLeafletRefs: {}, children: jsxRuntime.jsx(reactQuery.QueryClientProvider, { client: queryClient, children: jsxRuntime.jsx(AppStateProvider, { children: jsxRuntime.jsx(ClusterRefProvider, { children: jsxRuntime.jsxs(QuestsProvider, { initialOpen: true, children: [jsxRuntime.jsx(reactToastify.ToastContainer, { position: 'top-right', autoClose: 2000, hideProgressBar: true, newestOnTop: false, closeOnClick: true, rtl: false, pauseOnFocusLoss: true, draggable: true, pauseOnHover: true, theme: 'light', closeButton: CloseButton }), children] }) }) }) }) }) }) }) }) }) }) }));
|
1133
1135
|
};
|
1134
1136
|
|
1135
1137
|
function containsUUID(str) {
|
@@ -1137,1117 +1139,6 @@ function containsUUID(str) {
|
|
1137
1139
|
return uuidRegex.test(str);
|
1138
1140
|
}
|
1139
1141
|
|
1140
|
-
// src/index.ts
|
1141
|
-
|
1142
|
-
// src/helpers.ts
|
1143
|
-
var styleToObject = (input) => {
|
1144
|
-
if (typeof input !== "string") {
|
1145
|
-
return {};
|
1146
|
-
}
|
1147
|
-
return input.split(/ ?; ?/).reduce((acc, item) => {
|
1148
|
-
const [key, value] = item.split(/ ?: ?/).map((d, index) => index === 0 ? d.replace(/\s+/g, "") : d.trim());
|
1149
|
-
if (key && value) {
|
1150
|
-
const nextKey = key.replace(/(\w)-(\w)/g, (_$0, $1, $2) => `${$1}${$2.toUpperCase()}`);
|
1151
|
-
let nextValue = value.trim();
|
1152
|
-
if (!Number.isNaN(Number(value))) {
|
1153
|
-
nextValue = Number(value);
|
1154
|
-
}
|
1155
|
-
acc[key.startsWith("-") ? key : nextKey] = nextValue;
|
1156
|
-
}
|
1157
|
-
return acc;
|
1158
|
-
}, {});
|
1159
|
-
};
|
1160
|
-
function randomString$1(length = 6) {
|
1161
|
-
const characters = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
|
1162
|
-
let result = "";
|
1163
|
-
for (let index = length; index > 0; --index) {
|
1164
|
-
result += characters[Math.round(Math.random() * (characters.length - 1))];
|
1165
|
-
}
|
1166
|
-
return result;
|
1167
|
-
}
|
1168
|
-
var noTextChildNodes = [
|
1169
|
-
"br",
|
1170
|
-
"col",
|
1171
|
-
"colgroup",
|
1172
|
-
"dl",
|
1173
|
-
"hr",
|
1174
|
-
"iframe",
|
1175
|
-
"img",
|
1176
|
-
"input",
|
1177
|
-
"link",
|
1178
|
-
"menuitem",
|
1179
|
-
"meta",
|
1180
|
-
"ol",
|
1181
|
-
"param",
|
1182
|
-
"select",
|
1183
|
-
"table",
|
1184
|
-
"tbody",
|
1185
|
-
"tfoot",
|
1186
|
-
"thead",
|
1187
|
-
"tr",
|
1188
|
-
"ul",
|
1189
|
-
"wbr"
|
1190
|
-
];
|
1191
|
-
var possibleStandardNames = {
|
1192
|
-
// HTML
|
1193
|
-
"accept-charset": "acceptCharset",
|
1194
|
-
acceptcharset: "acceptCharset",
|
1195
|
-
accesskey: "accessKey",
|
1196
|
-
allowfullscreen: "allowFullScreen",
|
1197
|
-
autocapitalize: "autoCapitalize",
|
1198
|
-
autocomplete: "autoComplete",
|
1199
|
-
autocorrect: "autoCorrect",
|
1200
|
-
autofocus: "autoFocus",
|
1201
|
-
autoplay: "autoPlay",
|
1202
|
-
autosave: "autoSave",
|
1203
|
-
cellpadding: "cellPadding",
|
1204
|
-
cellspacing: "cellSpacing",
|
1205
|
-
charset: "charSet",
|
1206
|
-
class: "className",
|
1207
|
-
classid: "classID",
|
1208
|
-
classname: "className",
|
1209
|
-
colspan: "colSpan",
|
1210
|
-
contenteditable: "contentEditable",
|
1211
|
-
contextmenu: "contextMenu",
|
1212
|
-
controlslist: "controlsList",
|
1213
|
-
crossorigin: "crossOrigin",
|
1214
|
-
dangerouslysetinnerhtml: "dangerouslySetInnerHTML",
|
1215
|
-
datetime: "dateTime",
|
1216
|
-
defaultchecked: "defaultChecked",
|
1217
|
-
defaultvalue: "defaultValue",
|
1218
|
-
enctype: "encType",
|
1219
|
-
for: "htmlFor",
|
1220
|
-
formmethod: "formMethod",
|
1221
|
-
formaction: "formAction",
|
1222
|
-
formenctype: "formEncType",
|
1223
|
-
formnovalidate: "formNoValidate",
|
1224
|
-
formtarget: "formTarget",
|
1225
|
-
frameborder: "frameBorder",
|
1226
|
-
hreflang: "hrefLang",
|
1227
|
-
htmlfor: "htmlFor",
|
1228
|
-
httpequiv: "httpEquiv",
|
1229
|
-
"http-equiv": "httpEquiv",
|
1230
|
-
icon: "icon",
|
1231
|
-
innerhtml: "innerHTML",
|
1232
|
-
inputmode: "inputMode",
|
1233
|
-
itemid: "itemID",
|
1234
|
-
itemprop: "itemProp",
|
1235
|
-
itemref: "itemRef",
|
1236
|
-
itemscope: "itemScope",
|
1237
|
-
itemtype: "itemType",
|
1238
|
-
keyparams: "keyParams",
|
1239
|
-
keytype: "keyType",
|
1240
|
-
marginwidth: "marginWidth",
|
1241
|
-
marginheight: "marginHeight",
|
1242
|
-
maxlength: "maxLength",
|
1243
|
-
mediagroup: "mediaGroup",
|
1244
|
-
minlength: "minLength",
|
1245
|
-
nomodule: "noModule",
|
1246
|
-
novalidate: "noValidate",
|
1247
|
-
playsinline: "playsInline",
|
1248
|
-
radiogroup: "radioGroup",
|
1249
|
-
readonly: "readOnly",
|
1250
|
-
referrerpolicy: "referrerPolicy",
|
1251
|
-
rowspan: "rowSpan",
|
1252
|
-
spellcheck: "spellCheck",
|
1253
|
-
srcdoc: "srcDoc",
|
1254
|
-
srclang: "srcLang",
|
1255
|
-
srcset: "srcSet",
|
1256
|
-
tabindex: "tabIndex",
|
1257
|
-
typemustmatch: "typeMustMatch",
|
1258
|
-
usemap: "useMap",
|
1259
|
-
// SVG
|
1260
|
-
accentheight: "accentHeight",
|
1261
|
-
"accent-height": "accentHeight",
|
1262
|
-
alignmentbaseline: "alignmentBaseline",
|
1263
|
-
"alignment-baseline": "alignmentBaseline",
|
1264
|
-
allowreorder: "allowReorder",
|
1265
|
-
arabicform: "arabicForm",
|
1266
|
-
"arabic-form": "arabicForm",
|
1267
|
-
attributename: "attributeName",
|
1268
|
-
attributetype: "attributeType",
|
1269
|
-
autoreverse: "autoReverse",
|
1270
|
-
basefrequency: "baseFrequency",
|
1271
|
-
baselineshift: "baselineShift",
|
1272
|
-
"baseline-shift": "baselineShift",
|
1273
|
-
baseprofile: "baseProfile",
|
1274
|
-
calcmode: "calcMode",
|
1275
|
-
capheight: "capHeight",
|
1276
|
-
"cap-height": "capHeight",
|
1277
|
-
clippath: "clipPath",
|
1278
|
-
"clip-path": "clipPath",
|
1279
|
-
clippathunits: "clipPathUnits",
|
1280
|
-
cliprule: "clipRule",
|
1281
|
-
"clip-rule": "clipRule",
|
1282
|
-
colorinterpolation: "colorInterpolation",
|
1283
|
-
"color-interpolation": "colorInterpolation",
|
1284
|
-
colorinterpolationfilters: "colorInterpolationFilters",
|
1285
|
-
"color-interpolation-filters": "colorInterpolationFilters",
|
1286
|
-
colorprofile: "colorProfile",
|
1287
|
-
"color-profile": "colorProfile",
|
1288
|
-
colorrendering: "colorRendering",
|
1289
|
-
"color-rendering": "colorRendering",
|
1290
|
-
contentscripttype: "contentScriptType",
|
1291
|
-
contentstyletype: "contentStyleType",
|
1292
|
-
diffuseconstant: "diffuseConstant",
|
1293
|
-
dominantbaseline: "dominantBaseline",
|
1294
|
-
"dominant-baseline": "dominantBaseline",
|
1295
|
-
edgemode: "edgeMode",
|
1296
|
-
enablebackground: "enableBackground",
|
1297
|
-
"enable-background": "enableBackground",
|
1298
|
-
externalresourcesrequired: "externalResourcesRequired",
|
1299
|
-
fillopacity: "fillOpacity",
|
1300
|
-
"fill-opacity": "fillOpacity",
|
1301
|
-
fillrule: "fillRule",
|
1302
|
-
"fill-rule": "fillRule",
|
1303
|
-
filterres: "filterRes",
|
1304
|
-
filterunits: "filterUnits",
|
1305
|
-
floodopacity: "floodOpacity",
|
1306
|
-
"flood-opacity": "floodOpacity",
|
1307
|
-
floodcolor: "floodColor",
|
1308
|
-
"flood-color": "floodColor",
|
1309
|
-
fontfamily: "fontFamily",
|
1310
|
-
"font-family": "fontFamily",
|
1311
|
-
fontsize: "fontSize",
|
1312
|
-
"font-size": "fontSize",
|
1313
|
-
fontsizeadjust: "fontSizeAdjust",
|
1314
|
-
"font-size-adjust": "fontSizeAdjust",
|
1315
|
-
fontstretch: "fontStretch",
|
1316
|
-
"font-stretch": "fontStretch",
|
1317
|
-
fontstyle: "fontStyle",
|
1318
|
-
"font-style": "fontStyle",
|
1319
|
-
fontvariant: "fontVariant",
|
1320
|
-
"font-variant": "fontVariant",
|
1321
|
-
fontweight: "fontWeight",
|
1322
|
-
"font-weight": "fontWeight",
|
1323
|
-
glyphname: "glyphName",
|
1324
|
-
"glyph-name": "glyphName",
|
1325
|
-
glyphorientationhorizontal: "glyphOrientationHorizontal",
|
1326
|
-
"glyph-orientation-horizontal": "glyphOrientationHorizontal",
|
1327
|
-
glyphorientationvertical: "glyphOrientationVertical",
|
1328
|
-
"glyph-orientation-vertical": "glyphOrientationVertical",
|
1329
|
-
glyphref: "glyphRef",
|
1330
|
-
gradienttransform: "gradientTransform",
|
1331
|
-
gradientunits: "gradientUnits",
|
1332
|
-
horizadvx: "horizAdvX",
|
1333
|
-
"horiz-adv-x": "horizAdvX",
|
1334
|
-
horizoriginx: "horizOriginX",
|
1335
|
-
"horiz-origin-x": "horizOriginX",
|
1336
|
-
imagerendering: "imageRendering",
|
1337
|
-
"image-rendering": "imageRendering",
|
1338
|
-
kernelmatrix: "kernelMatrix",
|
1339
|
-
kernelunitlength: "kernelUnitLength",
|
1340
|
-
keypoints: "keyPoints",
|
1341
|
-
keysplines: "keySplines",
|
1342
|
-
keytimes: "keyTimes",
|
1343
|
-
lengthadjust: "lengthAdjust",
|
1344
|
-
letterspacing: "letterSpacing",
|
1345
|
-
"letter-spacing": "letterSpacing",
|
1346
|
-
lightingcolor: "lightingColor",
|
1347
|
-
"lighting-color": "lightingColor",
|
1348
|
-
limitingconeangle: "limitingConeAngle",
|
1349
|
-
markerend: "markerEnd",
|
1350
|
-
"marker-end": "markerEnd",
|
1351
|
-
markerheight: "markerHeight",
|
1352
|
-
markermid: "markerMid",
|
1353
|
-
"marker-mid": "markerMid",
|
1354
|
-
markerstart: "markerStart",
|
1355
|
-
"marker-start": "markerStart",
|
1356
|
-
markerunits: "markerUnits",
|
1357
|
-
markerwidth: "markerWidth",
|
1358
|
-
maskcontentunits: "maskContentUnits",
|
1359
|
-
maskunits: "maskUnits",
|
1360
|
-
numoctaves: "numOctaves",
|
1361
|
-
overlineposition: "overlinePosition",
|
1362
|
-
"overline-position": "overlinePosition",
|
1363
|
-
overlinethickness: "overlineThickness",
|
1364
|
-
"overline-thickness": "overlineThickness",
|
1365
|
-
paintorder: "paintOrder",
|
1366
|
-
"paint-order": "paintOrder",
|
1367
|
-
"panose-1": "panose1",
|
1368
|
-
pathlength: "pathLength",
|
1369
|
-
patterncontentunits: "patternContentUnits",
|
1370
|
-
patterntransform: "patternTransform",
|
1371
|
-
patternunits: "patternUnits",
|
1372
|
-
pointerevents: "pointerEvents",
|
1373
|
-
"pointer-events": "pointerEvents",
|
1374
|
-
pointsatx: "pointsAtX",
|
1375
|
-
pointsaty: "pointsAtY",
|
1376
|
-
pointsatz: "pointsAtZ",
|
1377
|
-
preservealpha: "preserveAlpha",
|
1378
|
-
preserveaspectratio: "preserveAspectRatio",
|
1379
|
-
primitiveunits: "primitiveUnits",
|
1380
|
-
refx: "refX",
|
1381
|
-
refy: "refY",
|
1382
|
-
renderingintent: "renderingIntent",
|
1383
|
-
"rendering-intent": "renderingIntent",
|
1384
|
-
repeatcount: "repeatCount",
|
1385
|
-
repeatdur: "repeatDur",
|
1386
|
-
requiredextensions: "requiredExtensions",
|
1387
|
-
requiredfeatures: "requiredFeatures",
|
1388
|
-
shaperendering: "shapeRendering",
|
1389
|
-
"shape-rendering": "shapeRendering",
|
1390
|
-
specularconstant: "specularConstant",
|
1391
|
-
specularexponent: "specularExponent",
|
1392
|
-
spreadmethod: "spreadMethod",
|
1393
|
-
startoffset: "startOffset",
|
1394
|
-
stddeviation: "stdDeviation",
|
1395
|
-
stitchtiles: "stitchTiles",
|
1396
|
-
stopcolor: "stopColor",
|
1397
|
-
"stop-color": "stopColor",
|
1398
|
-
stopopacity: "stopOpacity",
|
1399
|
-
"stop-opacity": "stopOpacity",
|
1400
|
-
strikethroughposition: "strikethroughPosition",
|
1401
|
-
"strikethrough-position": "strikethroughPosition",
|
1402
|
-
strikethroughthickness: "strikethroughThickness",
|
1403
|
-
"strikethrough-thickness": "strikethroughThickness",
|
1404
|
-
strokedasharray: "strokeDasharray",
|
1405
|
-
"stroke-dasharray": "strokeDasharray",
|
1406
|
-
strokedashoffset: "strokeDashoffset",
|
1407
|
-
"stroke-dashoffset": "strokeDashoffset",
|
1408
|
-
strokelinecap: "strokeLinecap",
|
1409
|
-
"stroke-linecap": "strokeLinecap",
|
1410
|
-
strokelinejoin: "strokeLinejoin",
|
1411
|
-
"stroke-linejoin": "strokeLinejoin",
|
1412
|
-
strokemiterlimit: "strokeMiterlimit",
|
1413
|
-
"stroke-miterlimit": "strokeMiterlimit",
|
1414
|
-
strokewidth: "strokeWidth",
|
1415
|
-
"stroke-width": "strokeWidth",
|
1416
|
-
strokeopacity: "strokeOpacity",
|
1417
|
-
"stroke-opacity": "strokeOpacity",
|
1418
|
-
suppresscontenteditablewarning: "suppressContentEditableWarning",
|
1419
|
-
suppresshydrationwarning: "suppressHydrationWarning",
|
1420
|
-
surfacescale: "surfaceScale",
|
1421
|
-
systemlanguage: "systemLanguage",
|
1422
|
-
tablevalues: "tableValues",
|
1423
|
-
targetx: "targetX",
|
1424
|
-
targety: "targetY",
|
1425
|
-
textanchor: "textAnchor",
|
1426
|
-
"text-anchor": "textAnchor",
|
1427
|
-
textdecoration: "textDecoration",
|
1428
|
-
"text-decoration": "textDecoration",
|
1429
|
-
textlength: "textLength",
|
1430
|
-
textrendering: "textRendering",
|
1431
|
-
"text-rendering": "textRendering",
|
1432
|
-
underlineposition: "underlinePosition",
|
1433
|
-
"underline-position": "underlinePosition",
|
1434
|
-
underlinethickness: "underlineThickness",
|
1435
|
-
"underline-thickness": "underlineThickness",
|
1436
|
-
unicodebidi: "unicodeBidi",
|
1437
|
-
"unicode-bidi": "unicodeBidi",
|
1438
|
-
unicoderange: "unicodeRange",
|
1439
|
-
"unicode-range": "unicodeRange",
|
1440
|
-
unitsperem: "unitsPerEm",
|
1441
|
-
"units-per-em": "unitsPerEm",
|
1442
|
-
unselectable: "unselectable",
|
1443
|
-
valphabetic: "vAlphabetic",
|
1444
|
-
"v-alphabetic": "vAlphabetic",
|
1445
|
-
vectoreffect: "vectorEffect",
|
1446
|
-
"vector-effect": "vectorEffect",
|
1447
|
-
vertadvy: "vertAdvY",
|
1448
|
-
"vert-adv-y": "vertAdvY",
|
1449
|
-
vertoriginx: "vertOriginX",
|
1450
|
-
"vert-origin-x": "vertOriginX",
|
1451
|
-
vertoriginy: "vertOriginY",
|
1452
|
-
"vert-origin-y": "vertOriginY",
|
1453
|
-
vhanging: "vHanging",
|
1454
|
-
"v-hanging": "vHanging",
|
1455
|
-
videographic: "vIdeographic",
|
1456
|
-
"v-ideographic": "vIdeographic",
|
1457
|
-
viewbox: "viewBox",
|
1458
|
-
viewtarget: "viewTarget",
|
1459
|
-
vmathematical: "vMathematical",
|
1460
|
-
"v-mathematical": "vMathematical",
|
1461
|
-
wordspacing: "wordSpacing",
|
1462
|
-
"word-spacing": "wordSpacing",
|
1463
|
-
writingmode: "writingMode",
|
1464
|
-
"writing-mode": "writingMode",
|
1465
|
-
xchannelselector: "xChannelSelector",
|
1466
|
-
xheight: "xHeight",
|
1467
|
-
"x-height": "xHeight",
|
1468
|
-
xlinkactuate: "xlinkActuate",
|
1469
|
-
"xlink:actuate": "xlinkActuate",
|
1470
|
-
xlinkarcrole: "xlinkArcrole",
|
1471
|
-
"xlink:arcrole": "xlinkArcrole",
|
1472
|
-
xlinkhref: "xlinkHref",
|
1473
|
-
"xlink:href": "xlinkHref",
|
1474
|
-
xlinkrole: "xlinkRole",
|
1475
|
-
"xlink:role": "xlinkRole",
|
1476
|
-
xlinkshow: "xlinkShow",
|
1477
|
-
"xlink:show": "xlinkShow",
|
1478
|
-
xlinktitle: "xlinkTitle",
|
1479
|
-
"xlink:title": "xlinkTitle",
|
1480
|
-
xlinktype: "xlinkType",
|
1481
|
-
"xlink:type": "xlinkType",
|
1482
|
-
xmlbase: "xmlBase",
|
1483
|
-
"xml:base": "xmlBase",
|
1484
|
-
xmllang: "xmlLang",
|
1485
|
-
"xml:lang": "xmlLang",
|
1486
|
-
"xml:space": "xmlSpace",
|
1487
|
-
xmlnsxlink: "xmlnsXlink",
|
1488
|
-
"xmlns:xlink": "xmlnsXlink",
|
1489
|
-
xmlspace: "xmlSpace",
|
1490
|
-
ychannelselector: "yChannelSelector",
|
1491
|
-
zoomandpan: "zoomAndPan",
|
1492
|
-
// event handlers
|
1493
|
-
onblur: "onBlur",
|
1494
|
-
onchange: "onChange",
|
1495
|
-
onclick: "onClick",
|
1496
|
-
oncontextmenu: "onContextMenu",
|
1497
|
-
ondoubleclick: "onDoubleClick",
|
1498
|
-
ondrag: "onDrag",
|
1499
|
-
ondragend: "onDragEnd",
|
1500
|
-
ondragenter: "onDragEnter",
|
1501
|
-
ondragexit: "onDragExit",
|
1502
|
-
ondragleave: "onDragLeave",
|
1503
|
-
ondragover: "onDragOver",
|
1504
|
-
ondragstart: "onDragStart",
|
1505
|
-
ondrop: "onDrop",
|
1506
|
-
onerror: "onError",
|
1507
|
-
onfocus: "onFocus",
|
1508
|
-
oninput: "onInput",
|
1509
|
-
oninvalid: "onInvalid",
|
1510
|
-
onkeydown: "onKeyDown",
|
1511
|
-
onkeypress: "onKeyPress",
|
1512
|
-
onkeyup: "onKeyUp",
|
1513
|
-
onload: "onLoad",
|
1514
|
-
onmousedown: "onMouseDown",
|
1515
|
-
onmouseenter: "onMouseEnter",
|
1516
|
-
onmouseleave: "onMouseLeave",
|
1517
|
-
onmousemove: "onMouseMove",
|
1518
|
-
onmouseout: "onMouseOut",
|
1519
|
-
onmouseover: "onMouseOver",
|
1520
|
-
onmouseup: "onMouseUp",
|
1521
|
-
onscroll: "onScroll",
|
1522
|
-
onsubmit: "onSubmit",
|
1523
|
-
ontouchcancel: "onTouchCancel",
|
1524
|
-
ontouchend: "onTouchEnd",
|
1525
|
-
ontouchmove: "onTouchMove",
|
1526
|
-
ontouchstart: "onTouchStart",
|
1527
|
-
onwheel: "onWheel"
|
1528
|
-
};
|
1529
|
-
|
1530
|
-
// src/index.ts
|
1531
|
-
function getReactNode(node, options) {
|
1532
|
-
const { key, level, ...rest } = options;
|
1533
|
-
switch (node.nodeType) {
|
1534
|
-
case 1: {
|
1535
|
-
return React__namespace.createElement(
|
1536
|
-
parseName(node.nodeName),
|
1537
|
-
parseAttributes(node, key),
|
1538
|
-
parseChildren(node.childNodes, level, rest)
|
1539
|
-
);
|
1540
|
-
}
|
1541
|
-
case 3: {
|
1542
|
-
const nodeText = node.nodeValue?.toString() ?? "";
|
1543
|
-
if (!rest.allowWhiteSpaces && /^\s+$/.test(nodeText) && !/[\u00A0\u202F]/.test(nodeText)) {
|
1544
|
-
return null;
|
1545
|
-
}
|
1546
|
-
if (!node.parentNode) {
|
1547
|
-
return nodeText;
|
1548
|
-
}
|
1549
|
-
const parentNodeName = node.parentNode.nodeName.toLowerCase();
|
1550
|
-
if (noTextChildNodes.includes(parentNodeName)) {
|
1551
|
-
if (/\S/.test(nodeText)) {
|
1552
|
-
console.warn(
|
1553
|
-
`A textNode is not allowed inside '${parentNodeName}'. Your text "${nodeText}" will be ignored`
|
1554
|
-
);
|
1555
|
-
}
|
1556
|
-
return null;
|
1557
|
-
}
|
1558
|
-
return nodeText;
|
1559
|
-
}
|
1560
|
-
case 8: {
|
1561
|
-
return null;
|
1562
|
-
}
|
1563
|
-
case 11: {
|
1564
|
-
return parseChildren(node.childNodes, level, options);
|
1565
|
-
}
|
1566
|
-
/* c8 ignore next 3 */
|
1567
|
-
default: {
|
1568
|
-
return null;
|
1569
|
-
}
|
1570
|
-
}
|
1571
|
-
}
|
1572
|
-
function parseAttributes(node, reactKey) {
|
1573
|
-
const attributes = {
|
1574
|
-
key: reactKey
|
1575
|
-
};
|
1576
|
-
if (node instanceof Element) {
|
1577
|
-
const nodeClassNames = node.getAttribute("class");
|
1578
|
-
if (nodeClassNames) {
|
1579
|
-
attributes.className = nodeClassNames;
|
1580
|
-
}
|
1581
|
-
[...node.attributes].forEach((d) => {
|
1582
|
-
switch (d.name) {
|
1583
|
-
// this is manually handled above, so break;
|
1584
|
-
case "class":
|
1585
|
-
break;
|
1586
|
-
case "style":
|
1587
|
-
attributes[d.name] = styleToObject(d.value);
|
1588
|
-
break;
|
1589
|
-
case "allowfullscreen":
|
1590
|
-
case "allowpaymentrequest":
|
1591
|
-
case "async":
|
1592
|
-
case "autofocus":
|
1593
|
-
case "autoplay":
|
1594
|
-
case "checked":
|
1595
|
-
case "controls":
|
1596
|
-
case "default":
|
1597
|
-
case "defer":
|
1598
|
-
case "disabled":
|
1599
|
-
case "formnovalidate":
|
1600
|
-
case "hidden":
|
1601
|
-
case "ismap":
|
1602
|
-
case "itemscope":
|
1603
|
-
case "loop":
|
1604
|
-
case "multiple":
|
1605
|
-
case "muted":
|
1606
|
-
case "nomodule":
|
1607
|
-
case "novalidate":
|
1608
|
-
case "open":
|
1609
|
-
case "readonly":
|
1610
|
-
case "required":
|
1611
|
-
case "reversed":
|
1612
|
-
case "selected":
|
1613
|
-
case "typemustmatch":
|
1614
|
-
attributes[possibleStandardNames[d.name] || d.name] = true;
|
1615
|
-
break;
|
1616
|
-
default:
|
1617
|
-
attributes[possibleStandardNames[d.name] || d.name] = d.value;
|
1618
|
-
}
|
1619
|
-
});
|
1620
|
-
}
|
1621
|
-
return attributes;
|
1622
|
-
}
|
1623
|
-
function parseChildren(childNodeList, level, options) {
|
1624
|
-
const children = [...childNodeList].map(
|
1625
|
-
(node, index) => convertFromNode(node, {
|
1626
|
-
...options,
|
1627
|
-
index,
|
1628
|
-
level: level + 1
|
1629
|
-
})
|
1630
|
-
).filter(Boolean);
|
1631
|
-
if (!children.length) {
|
1632
|
-
return null;
|
1633
|
-
}
|
1634
|
-
return children;
|
1635
|
-
}
|
1636
|
-
function parseName(nodeName) {
|
1637
|
-
if (/[a-z]+[A-Z]+[a-z]+/.test(nodeName)) {
|
1638
|
-
return nodeName;
|
1639
|
-
}
|
1640
|
-
return nodeName.toLowerCase();
|
1641
|
-
}
|
1642
|
-
function convert(input, options = {}) {
|
1643
|
-
if (typeof input === "string") {
|
1644
|
-
return convertFromString(input, options);
|
1645
|
-
}
|
1646
|
-
if (input instanceof Node) {
|
1647
|
-
return convertFromNode(input, options);
|
1648
|
-
}
|
1649
|
-
return null;
|
1650
|
-
}
|
1651
|
-
function convertFromNode(input, options = {}) {
|
1652
|
-
if (!input || !(input instanceof Node)) {
|
1653
|
-
return null;
|
1654
|
-
}
|
1655
|
-
const { actions = [], index = 0, level = 0, randomKey } = options;
|
1656
|
-
let node = input;
|
1657
|
-
let key = `${level}-${index}`;
|
1658
|
-
const result = [];
|
1659
|
-
if (randomKey && level === 0) {
|
1660
|
-
key = `${randomString$1()}-${key}`;
|
1661
|
-
}
|
1662
|
-
if (Array.isArray(actions)) {
|
1663
|
-
actions.forEach((action) => {
|
1664
|
-
if (action.condition(node, key, level)) {
|
1665
|
-
if (typeof action.pre === "function") {
|
1666
|
-
node = action.pre(node, key, level);
|
1667
|
-
if (!(node instanceof Node)) {
|
1668
|
-
node = input;
|
1669
|
-
if (process.env.NODE_ENV !== "production") {
|
1670
|
-
console.warn(
|
1671
|
-
"The `pre` method always must return a valid DomNode (instanceof Node) - your modification will be ignored (Hint: if you want to render a React-component, use the `post` method instead)"
|
1672
|
-
);
|
1673
|
-
}
|
1674
|
-
}
|
1675
|
-
}
|
1676
|
-
if (typeof action.post === "function") {
|
1677
|
-
result.push(action.post(node, key, level));
|
1678
|
-
}
|
1679
|
-
}
|
1680
|
-
});
|
1681
|
-
}
|
1682
|
-
if (result.length) {
|
1683
|
-
return result;
|
1684
|
-
}
|
1685
|
-
return getReactNode(node, { key, level, ...options });
|
1686
|
-
}
|
1687
|
-
function convertFromString(input, options = {}) {
|
1688
|
-
if (!input || typeof input !== "string") {
|
1689
|
-
return null;
|
1690
|
-
}
|
1691
|
-
const {
|
1692
|
-
includeAllNodes = false,
|
1693
|
-
nodeOnly = false,
|
1694
|
-
selector = "body > *",
|
1695
|
-
type = "text/html"
|
1696
|
-
} = options;
|
1697
|
-
try {
|
1698
|
-
const parser = new DOMParser();
|
1699
|
-
const document = parser.parseFromString(input, type);
|
1700
|
-
if (includeAllNodes) {
|
1701
|
-
const { childNodes } = document.body;
|
1702
|
-
if (nodeOnly) {
|
1703
|
-
return childNodes;
|
1704
|
-
}
|
1705
|
-
return [...childNodes].map((node2) => convertFromNode(node2, options));
|
1706
|
-
}
|
1707
|
-
const node = document.querySelector(selector) || document.body.childNodes[0];
|
1708
|
-
if (!(node instanceof Node)) {
|
1709
|
-
throw new TypeError("Error parsing input");
|
1710
|
-
}
|
1711
|
-
if (nodeOnly) {
|
1712
|
-
return node;
|
1713
|
-
}
|
1714
|
-
return convertFromNode(node, options);
|
1715
|
-
} catch (error) {
|
1716
|
-
if (process.env.NODE_ENV !== "production") {
|
1717
|
-
console.error(error);
|
1718
|
-
}
|
1719
|
-
}
|
1720
|
-
return null;
|
1721
|
-
}
|
1722
|
-
|
1723
|
-
var __defProp = Object.defineProperty;
|
1724
|
-
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
1725
|
-
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
1726
|
-
|
1727
|
-
// src/config.ts
|
1728
|
-
var CACHE_NAME = "react-inlinesvg";
|
1729
|
-
var CACHE_MAX_RETRIES = 10;
|
1730
|
-
var STATUS = {
|
1731
|
-
IDLE: "idle",
|
1732
|
-
LOADING: "loading",
|
1733
|
-
LOADED: "loaded",
|
1734
|
-
FAILED: "failed",
|
1735
|
-
READY: "ready",
|
1736
|
-
UNSUPPORTED: "unsupported"
|
1737
|
-
};
|
1738
|
-
|
1739
|
-
// src/modules/helpers.ts
|
1740
|
-
function randomCharacter(character) {
|
1741
|
-
return character[Math.floor(Math.random() * character.length)];
|
1742
|
-
}
|
1743
|
-
function canUseDOM() {
|
1744
|
-
return !!(typeof window !== "undefined" && window.document?.createElement);
|
1745
|
-
}
|
1746
|
-
function isSupportedEnvironment() {
|
1747
|
-
return supportsInlineSVG() && typeof window !== "undefined" && window !== null;
|
1748
|
-
}
|
1749
|
-
function omit(input, ...filter) {
|
1750
|
-
const output = {};
|
1751
|
-
for (const key in input) {
|
1752
|
-
if ({}.hasOwnProperty.call(input, key)) {
|
1753
|
-
if (!filter.includes(key)) {
|
1754
|
-
output[key] = input[key];
|
1755
|
-
}
|
1756
|
-
}
|
1757
|
-
}
|
1758
|
-
return output;
|
1759
|
-
}
|
1760
|
-
function randomString(length) {
|
1761
|
-
const letters = "abcdefghijklmnopqrstuvwxyz";
|
1762
|
-
const numbers = "1234567890";
|
1763
|
-
const charset = `${letters}${letters.toUpperCase()}${numbers}`;
|
1764
|
-
let R = "";
|
1765
|
-
for (let index = 0; index < length; index++) {
|
1766
|
-
R += randomCharacter(charset);
|
1767
|
-
}
|
1768
|
-
return R;
|
1769
|
-
}
|
1770
|
-
async function request(url, options) {
|
1771
|
-
const response = await fetch(url, options);
|
1772
|
-
const contentType = response.headers.get("content-type");
|
1773
|
-
const [fileType] = (contentType ?? "").split(/ ?; ?/);
|
1774
|
-
if (response.status > 299) {
|
1775
|
-
throw new Error("Not found");
|
1776
|
-
}
|
1777
|
-
if (!["image/svg+xml", "text/plain"].some((d) => fileType.includes(d))) {
|
1778
|
-
throw new Error(`Content type isn't valid: ${fileType}`);
|
1779
|
-
}
|
1780
|
-
return response.text();
|
1781
|
-
}
|
1782
|
-
function sleep$1(seconds = 1) {
|
1783
|
-
return new Promise((resolve) => {
|
1784
|
-
setTimeout(resolve, seconds * 1e3);
|
1785
|
-
});
|
1786
|
-
}
|
1787
|
-
function supportsInlineSVG() {
|
1788
|
-
if (!document) {
|
1789
|
-
return false;
|
1790
|
-
}
|
1791
|
-
const div = document.createElement("div");
|
1792
|
-
div.innerHTML = "<svg />";
|
1793
|
-
const svg = div.firstChild;
|
1794
|
-
return !!svg && svg.namespaceURI === "http://www.w3.org/2000/svg";
|
1795
|
-
}
|
1796
|
-
|
1797
|
-
// src/modules/cache.ts
|
1798
|
-
var CacheStore = class {
|
1799
|
-
constructor() {
|
1800
|
-
__publicField(this, "cacheApi");
|
1801
|
-
__publicField(this, "cacheStore");
|
1802
|
-
__publicField(this, "subscribers", []);
|
1803
|
-
__publicField(this, "isReady", false);
|
1804
|
-
this.cacheStore = /* @__PURE__ */ new Map();
|
1805
|
-
let cacheName = CACHE_NAME;
|
1806
|
-
let usePersistentCache = false;
|
1807
|
-
if (canUseDOM()) {
|
1808
|
-
cacheName = window.REACT_INLINESVG_CACHE_NAME ?? CACHE_NAME;
|
1809
|
-
usePersistentCache = !!window.REACT_INLINESVG_PERSISTENT_CACHE && "caches" in window;
|
1810
|
-
}
|
1811
|
-
if (usePersistentCache) {
|
1812
|
-
caches.open(cacheName).then((cache) => {
|
1813
|
-
this.cacheApi = cache;
|
1814
|
-
}).catch((error) => {
|
1815
|
-
console.error(`Failed to open cache: ${error.message}`);
|
1816
|
-
this.cacheApi = void 0;
|
1817
|
-
}).finally(() => {
|
1818
|
-
this.isReady = true;
|
1819
|
-
const callbacks = [...this.subscribers];
|
1820
|
-
this.subscribers.length = 0;
|
1821
|
-
callbacks.forEach((callback) => {
|
1822
|
-
try {
|
1823
|
-
callback();
|
1824
|
-
} catch (error) {
|
1825
|
-
console.error(`Error in CacheStore subscriber callback: ${error.message}`);
|
1826
|
-
}
|
1827
|
-
});
|
1828
|
-
});
|
1829
|
-
} else {
|
1830
|
-
this.isReady = true;
|
1831
|
-
}
|
1832
|
-
}
|
1833
|
-
onReady(callback) {
|
1834
|
-
if (this.isReady) {
|
1835
|
-
callback();
|
1836
|
-
} else {
|
1837
|
-
this.subscribers.push(callback);
|
1838
|
-
}
|
1839
|
-
}
|
1840
|
-
async get(url, fetchOptions) {
|
1841
|
-
await (this.cacheApi ? this.fetchAndAddToPersistentCache(url, fetchOptions) : this.fetchAndAddToInternalCache(url, fetchOptions));
|
1842
|
-
return this.cacheStore.get(url)?.content ?? "";
|
1843
|
-
}
|
1844
|
-
set(url, data) {
|
1845
|
-
this.cacheStore.set(url, data);
|
1846
|
-
}
|
1847
|
-
isCached(url) {
|
1848
|
-
return this.cacheStore.get(url)?.status === STATUS.LOADED;
|
1849
|
-
}
|
1850
|
-
async fetchAndAddToInternalCache(url, fetchOptions) {
|
1851
|
-
const cache = this.cacheStore.get(url);
|
1852
|
-
if (cache?.status === STATUS.LOADING) {
|
1853
|
-
await this.handleLoading(url, async () => {
|
1854
|
-
this.cacheStore.set(url, { content: "", status: STATUS.IDLE });
|
1855
|
-
await this.fetchAndAddToInternalCache(url, fetchOptions);
|
1856
|
-
});
|
1857
|
-
return;
|
1858
|
-
}
|
1859
|
-
if (!cache?.content) {
|
1860
|
-
this.cacheStore.set(url, { content: "", status: STATUS.LOADING });
|
1861
|
-
try {
|
1862
|
-
const content = await request(url, fetchOptions);
|
1863
|
-
this.cacheStore.set(url, { content, status: STATUS.LOADED });
|
1864
|
-
} catch (error) {
|
1865
|
-
this.cacheStore.set(url, { content: "", status: STATUS.FAILED });
|
1866
|
-
throw error;
|
1867
|
-
}
|
1868
|
-
}
|
1869
|
-
}
|
1870
|
-
async fetchAndAddToPersistentCache(url, fetchOptions) {
|
1871
|
-
const cache = this.cacheStore.get(url);
|
1872
|
-
if (cache?.status === STATUS.LOADED) {
|
1873
|
-
return;
|
1874
|
-
}
|
1875
|
-
if (cache?.status === STATUS.LOADING) {
|
1876
|
-
await this.handleLoading(url, async () => {
|
1877
|
-
this.cacheStore.set(url, { content: "", status: STATUS.IDLE });
|
1878
|
-
await this.fetchAndAddToPersistentCache(url, fetchOptions);
|
1879
|
-
});
|
1880
|
-
return;
|
1881
|
-
}
|
1882
|
-
this.cacheStore.set(url, { content: "", status: STATUS.LOADING });
|
1883
|
-
const data = await this.cacheApi?.match(url);
|
1884
|
-
if (data) {
|
1885
|
-
const content = await data.text();
|
1886
|
-
this.cacheStore.set(url, { content, status: STATUS.LOADED });
|
1887
|
-
return;
|
1888
|
-
}
|
1889
|
-
try {
|
1890
|
-
await this.cacheApi?.add(new Request(url, fetchOptions));
|
1891
|
-
const response = await this.cacheApi?.match(url);
|
1892
|
-
const content = await response?.text() ?? "";
|
1893
|
-
this.cacheStore.set(url, { content, status: STATUS.LOADED });
|
1894
|
-
} catch (error) {
|
1895
|
-
this.cacheStore.set(url, { content: "", status: STATUS.FAILED });
|
1896
|
-
throw error;
|
1897
|
-
}
|
1898
|
-
}
|
1899
|
-
async handleLoading(url, callback) {
|
1900
|
-
for (let retryCount = 0; retryCount < CACHE_MAX_RETRIES; retryCount++) {
|
1901
|
-
if (this.cacheStore.get(url)?.status !== STATUS.LOADING) {
|
1902
|
-
return;
|
1903
|
-
}
|
1904
|
-
await sleep$1(0.1);
|
1905
|
-
}
|
1906
|
-
await callback();
|
1907
|
-
}
|
1908
|
-
keys() {
|
1909
|
-
return [...this.cacheStore.keys()];
|
1910
|
-
}
|
1911
|
-
data() {
|
1912
|
-
return [...this.cacheStore.entries()].map(([key, value]) => ({ [key]: value }));
|
1913
|
-
}
|
1914
|
-
async delete(url) {
|
1915
|
-
if (this.cacheApi) {
|
1916
|
-
await this.cacheApi.delete(url);
|
1917
|
-
}
|
1918
|
-
this.cacheStore.delete(url);
|
1919
|
-
}
|
1920
|
-
async clear() {
|
1921
|
-
if (this.cacheApi) {
|
1922
|
-
const keys = await this.cacheApi.keys();
|
1923
|
-
await Promise.allSettled(keys.map((key) => this.cacheApi.delete(key)));
|
1924
|
-
}
|
1925
|
-
this.cacheStore.clear();
|
1926
|
-
}
|
1927
|
-
};
|
1928
|
-
function usePrevious(state) {
|
1929
|
-
const ref = React.useRef(void 0);
|
1930
|
-
React.useEffect(() => {
|
1931
|
-
ref.current = state;
|
1932
|
-
});
|
1933
|
-
return ref.current;
|
1934
|
-
}
|
1935
|
-
function getNode(options) {
|
1936
|
-
const {
|
1937
|
-
baseURL,
|
1938
|
-
content,
|
1939
|
-
description,
|
1940
|
-
handleError,
|
1941
|
-
hash,
|
1942
|
-
preProcessor,
|
1943
|
-
title,
|
1944
|
-
uniquifyIDs = false
|
1945
|
-
} = options;
|
1946
|
-
try {
|
1947
|
-
const svgText = processSVG(content, preProcessor);
|
1948
|
-
const node = convert(svgText, { nodeOnly: true });
|
1949
|
-
if (!node || !(node instanceof SVGSVGElement)) {
|
1950
|
-
throw new Error("Could not convert the src to a DOM Node");
|
1951
|
-
}
|
1952
|
-
const svg = updateSVGAttributes(node, { baseURL, hash, uniquifyIDs });
|
1953
|
-
if (description) {
|
1954
|
-
const originalDesc = svg.querySelector("desc");
|
1955
|
-
if (originalDesc?.parentNode) {
|
1956
|
-
originalDesc.parentNode.removeChild(originalDesc);
|
1957
|
-
}
|
1958
|
-
const descElement = document.createElementNS("http://www.w3.org/2000/svg", "desc");
|
1959
|
-
descElement.innerHTML = description;
|
1960
|
-
svg.prepend(descElement);
|
1961
|
-
}
|
1962
|
-
if (typeof title !== "undefined") {
|
1963
|
-
const originalTitle = svg.querySelector("title");
|
1964
|
-
if (originalTitle?.parentNode) {
|
1965
|
-
originalTitle.parentNode.removeChild(originalTitle);
|
1966
|
-
}
|
1967
|
-
if (title) {
|
1968
|
-
const titleElement = document.createElementNS("http://www.w3.org/2000/svg", "title");
|
1969
|
-
titleElement.innerHTML = title;
|
1970
|
-
svg.prepend(titleElement);
|
1971
|
-
}
|
1972
|
-
}
|
1973
|
-
return svg;
|
1974
|
-
} catch (error) {
|
1975
|
-
return handleError(error);
|
1976
|
-
}
|
1977
|
-
}
|
1978
|
-
function processSVG(content, preProcessor) {
|
1979
|
-
if (preProcessor) {
|
1980
|
-
return preProcessor(content);
|
1981
|
-
}
|
1982
|
-
return content;
|
1983
|
-
}
|
1984
|
-
function updateSVGAttributes(node, options) {
|
1985
|
-
const { baseURL = "", hash, uniquifyIDs } = options;
|
1986
|
-
const replaceableAttributes = ["id", "href", "xlink:href", "xlink:role", "xlink:arcrole"];
|
1987
|
-
const linkAttributes = ["href", "xlink:href"];
|
1988
|
-
const isDataValue = (name, value) => linkAttributes.includes(name) && (value ? !value.includes("#") : false);
|
1989
|
-
if (!uniquifyIDs) {
|
1990
|
-
return node;
|
1991
|
-
}
|
1992
|
-
[...node.children].forEach((d) => {
|
1993
|
-
if (d.attributes?.length) {
|
1994
|
-
const attributes = Object.values(d.attributes).map((a) => {
|
1995
|
-
const attribute = a;
|
1996
|
-
const match = /url\((.*?)\)/.exec(a.value);
|
1997
|
-
if (match?.[1]) {
|
1998
|
-
attribute.value = a.value.replace(match[0], `url(${baseURL}${match[1]}__${hash})`);
|
1999
|
-
}
|
2000
|
-
return attribute;
|
2001
|
-
});
|
2002
|
-
replaceableAttributes.forEach((r) => {
|
2003
|
-
const attribute = attributes.find((a) => a.name === r);
|
2004
|
-
if (attribute && !isDataValue(r, attribute.value)) {
|
2005
|
-
attribute.value = `${attribute.value}__${hash}`;
|
2006
|
-
}
|
2007
|
-
});
|
2008
|
-
}
|
2009
|
-
if (d.children.length) {
|
2010
|
-
return updateSVGAttributes(d, options);
|
2011
|
-
}
|
2012
|
-
return d;
|
2013
|
-
});
|
2014
|
-
return node;
|
2015
|
-
}
|
2016
|
-
|
2017
|
-
// src/index.tsx
|
2018
|
-
var cacheStore;
|
2019
|
-
function ReactInlineSVG(props) {
|
2020
|
-
const {
|
2021
|
-
cacheRequests = true,
|
2022
|
-
children = null,
|
2023
|
-
description,
|
2024
|
-
fetchOptions,
|
2025
|
-
innerRef,
|
2026
|
-
loader = null,
|
2027
|
-
onError,
|
2028
|
-
onLoad,
|
2029
|
-
src,
|
2030
|
-
title,
|
2031
|
-
uniqueHash
|
2032
|
-
} = props;
|
2033
|
-
const [state, setState] = React.useReducer(
|
2034
|
-
(previousState2, nextState) => ({
|
2035
|
-
...previousState2,
|
2036
|
-
...nextState
|
2037
|
-
}),
|
2038
|
-
{
|
2039
|
-
content: "",
|
2040
|
-
element: null,
|
2041
|
-
isCached: cacheRequests && cacheStore.isCached(props.src),
|
2042
|
-
status: STATUS.IDLE
|
2043
|
-
}
|
2044
|
-
);
|
2045
|
-
const { content, element, isCached, status } = state;
|
2046
|
-
const previousProps = usePrevious(props);
|
2047
|
-
const previousState = usePrevious(state);
|
2048
|
-
const hash = React.useRef(uniqueHash ?? randomString(8));
|
2049
|
-
const isActive = React.useRef(false);
|
2050
|
-
const isInitialized = React.useRef(false);
|
2051
|
-
const handleError = React.useCallback(
|
2052
|
-
(error) => {
|
2053
|
-
if (isActive.current) {
|
2054
|
-
setState({
|
2055
|
-
status: error.message === "Browser does not support SVG" ? STATUS.UNSUPPORTED : STATUS.FAILED
|
2056
|
-
});
|
2057
|
-
onError?.(error);
|
2058
|
-
}
|
2059
|
-
},
|
2060
|
-
[onError]
|
2061
|
-
);
|
2062
|
-
const handleLoad = React.useCallback((loadedContent, hasCache = false) => {
|
2063
|
-
if (isActive.current) {
|
2064
|
-
setState({
|
2065
|
-
content: loadedContent,
|
2066
|
-
isCached: hasCache,
|
2067
|
-
status: STATUS.LOADED
|
2068
|
-
});
|
2069
|
-
}
|
2070
|
-
}, []);
|
2071
|
-
const fetchContent = React.useCallback(async () => {
|
2072
|
-
const responseContent = await request(src, fetchOptions);
|
2073
|
-
handleLoad(responseContent);
|
2074
|
-
}, [fetchOptions, handleLoad, src]);
|
2075
|
-
const getElement = React.useCallback(() => {
|
2076
|
-
try {
|
2077
|
-
const node = getNode({ ...props, handleError, hash: hash.current, content });
|
2078
|
-
const convertedElement = convert(node);
|
2079
|
-
if (!convertedElement || !React.isValidElement(convertedElement)) {
|
2080
|
-
throw new Error("Could not convert the src to a React element");
|
2081
|
-
}
|
2082
|
-
setState({
|
2083
|
-
element: convertedElement,
|
2084
|
-
status: STATUS.READY
|
2085
|
-
});
|
2086
|
-
} catch (error) {
|
2087
|
-
handleError(error);
|
2088
|
-
}
|
2089
|
-
}, [content, handleError, props]);
|
2090
|
-
const getContent = React.useCallback(async () => {
|
2091
|
-
const dataURI = /^data:image\/svg[^,]*?(;base64)?,(.*)/u.exec(src);
|
2092
|
-
let inlineSrc;
|
2093
|
-
if (dataURI) {
|
2094
|
-
inlineSrc = dataURI[1] ? window.atob(dataURI[2]) : decodeURIComponent(dataURI[2]);
|
2095
|
-
} else if (src.includes("<svg")) {
|
2096
|
-
inlineSrc = src;
|
2097
|
-
}
|
2098
|
-
if (inlineSrc) {
|
2099
|
-
handleLoad(inlineSrc);
|
2100
|
-
return;
|
2101
|
-
}
|
2102
|
-
try {
|
2103
|
-
if (cacheRequests) {
|
2104
|
-
const cachedContent = await cacheStore.get(src, fetchOptions);
|
2105
|
-
handleLoad(cachedContent, true);
|
2106
|
-
} else {
|
2107
|
-
await fetchContent();
|
2108
|
-
}
|
2109
|
-
} catch (error) {
|
2110
|
-
handleError(error);
|
2111
|
-
}
|
2112
|
-
}, [cacheRequests, fetchContent, fetchOptions, handleError, handleLoad, src]);
|
2113
|
-
const load = React.useCallback(async () => {
|
2114
|
-
if (isActive.current) {
|
2115
|
-
setState({
|
2116
|
-
content: "",
|
2117
|
-
element: null,
|
2118
|
-
isCached: false,
|
2119
|
-
status: STATUS.LOADING
|
2120
|
-
});
|
2121
|
-
}
|
2122
|
-
}, []);
|
2123
|
-
React.useEffect(
|
2124
|
-
() => {
|
2125
|
-
isActive.current = true;
|
2126
|
-
if (!canUseDOM() || isInitialized.current) {
|
2127
|
-
return void 0;
|
2128
|
-
}
|
2129
|
-
try {
|
2130
|
-
if (status === STATUS.IDLE) {
|
2131
|
-
if (!isSupportedEnvironment()) {
|
2132
|
-
throw new Error("Browser does not support SVG");
|
2133
|
-
}
|
2134
|
-
if (!src) {
|
2135
|
-
throw new Error("Missing src");
|
2136
|
-
}
|
2137
|
-
load();
|
2138
|
-
}
|
2139
|
-
} catch (error) {
|
2140
|
-
handleError(error);
|
2141
|
-
}
|
2142
|
-
isInitialized.current = true;
|
2143
|
-
return () => {
|
2144
|
-
isActive.current = false;
|
2145
|
-
};
|
2146
|
-
},
|
2147
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
2148
|
-
[]
|
2149
|
-
);
|
2150
|
-
React.useEffect(() => {
|
2151
|
-
if (!canUseDOM() || !previousProps) {
|
2152
|
-
return;
|
2153
|
-
}
|
2154
|
-
if (previousProps.src !== src) {
|
2155
|
-
if (!src) {
|
2156
|
-
handleError(new Error("Missing src"));
|
2157
|
-
return;
|
2158
|
-
}
|
2159
|
-
load();
|
2160
|
-
}
|
2161
|
-
}, [handleError, load, previousProps, src]);
|
2162
|
-
React.useEffect(() => {
|
2163
|
-
if (status === STATUS.LOADED) {
|
2164
|
-
getElement();
|
2165
|
-
}
|
2166
|
-
}, [status, getElement]);
|
2167
|
-
React.useEffect(() => {
|
2168
|
-
if (!canUseDOM() || !previousProps || previousProps.src !== src) {
|
2169
|
-
return;
|
2170
|
-
}
|
2171
|
-
if (previousProps.title !== title || previousProps.description !== description) {
|
2172
|
-
getElement();
|
2173
|
-
}
|
2174
|
-
}, [description, getElement, previousProps, src, title]);
|
2175
|
-
React.useEffect(() => {
|
2176
|
-
if (!previousState) {
|
2177
|
-
return;
|
2178
|
-
}
|
2179
|
-
switch (status) {
|
2180
|
-
case STATUS.LOADING: {
|
2181
|
-
if (previousState.status !== STATUS.LOADING) {
|
2182
|
-
getContent();
|
2183
|
-
}
|
2184
|
-
break;
|
2185
|
-
}
|
2186
|
-
case STATUS.LOADED: {
|
2187
|
-
if (previousState.status !== STATUS.LOADED) {
|
2188
|
-
getElement();
|
2189
|
-
}
|
2190
|
-
break;
|
2191
|
-
}
|
2192
|
-
case STATUS.READY: {
|
2193
|
-
if (previousState.status !== STATUS.READY) {
|
2194
|
-
onLoad?.(src, isCached);
|
2195
|
-
}
|
2196
|
-
break;
|
2197
|
-
}
|
2198
|
-
}
|
2199
|
-
}, [getContent, getElement, isCached, onLoad, previousState, src, status]);
|
2200
|
-
const elementProps = omit(
|
2201
|
-
props,
|
2202
|
-
"baseURL",
|
2203
|
-
"cacheRequests",
|
2204
|
-
"children",
|
2205
|
-
"description",
|
2206
|
-
"fetchOptions",
|
2207
|
-
"innerRef",
|
2208
|
-
"loader",
|
2209
|
-
"onError",
|
2210
|
-
"onLoad",
|
2211
|
-
"preProcessor",
|
2212
|
-
"src",
|
2213
|
-
"title",
|
2214
|
-
"uniqueHash",
|
2215
|
-
"uniquifyIDs"
|
2216
|
-
);
|
2217
|
-
if (!canUseDOM()) {
|
2218
|
-
return loader;
|
2219
|
-
}
|
2220
|
-
if (element) {
|
2221
|
-
return React.cloneElement(element, {
|
2222
|
-
ref: innerRef,
|
2223
|
-
...elementProps
|
2224
|
-
});
|
2225
|
-
}
|
2226
|
-
if ([STATUS.UNSUPPORTED, STATUS.FAILED].includes(status)) {
|
2227
|
-
return children;
|
2228
|
-
}
|
2229
|
-
return loader;
|
2230
|
-
}
|
2231
|
-
function InlineSVG(props) {
|
2232
|
-
if (!cacheStore) {
|
2233
|
-
cacheStore = new CacheStore();
|
2234
|
-
}
|
2235
|
-
const { loader } = props;
|
2236
|
-
const [isReady, setReady] = React.useState(cacheStore.isReady);
|
2237
|
-
React.useEffect(() => {
|
2238
|
-
if (isReady) {
|
2239
|
-
return;
|
2240
|
-
}
|
2241
|
-
cacheStore.onReady(() => {
|
2242
|
-
setReady(true);
|
2243
|
-
});
|
2244
|
-
}, [isReady]);
|
2245
|
-
if (!isReady) {
|
2246
|
-
return loader;
|
2247
|
-
}
|
2248
|
-
return /* @__PURE__ */ React.createElement(ReactInlineSVG, { ...props });
|
2249
|
-
}
|
2250
|
-
|
2251
1142
|
var PlusSVG = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9Im5vbmUiIHZpZXdCb3g9IjAgMCAyNCAyNCIgc3Ryb2tlLXdpZHRoPSIzIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgY2xhc3M9InR3LXctNSB0dy1oLTUiPjxwYXRoIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgZD0iTTEyIDQuNXYxNW03LjUtNy41aC0xNSI+PC9wYXRoPjwvc3ZnPg==';
|
2252
1143
|
|
2253
1144
|
function AddButton({ triggerAction, }) {
|
@@ -2264,14 +1155,14 @@ function AddButton({ triggerAction, }) {
|
|
2264
1155
|
});
|
2265
1156
|
return canAdd;
|
2266
1157
|
};
|
2267
|
-
return (jsxRuntime.jsx(jsxRuntime.Fragment, { children: canAddItems() ? (jsxRuntime.jsxs("div", { className: 'tw-dropdown tw-dropdown-top tw-dropdown-end tw-dropdown-hover tw
|
1158
|
+
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, { src: PlusSVG, 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 &&
|
2268
1159
|
hasUserPermission(layer.api.collectionName, 'create', undefined, layer) &&
|
2269
|
-
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
|
1160
|
+
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 tw:focus:outline-hidden', style: { backgroundColor: layer.menuColor || '#777' }, onClick: () => {
|
2270
1161
|
triggerAction(layer);
|
2271
1162
|
}, onTouchEnd: (e) => {
|
2272
1163
|
triggerAction(layer);
|
2273
1164
|
e.preventDefault();
|
2274
|
-
}, children: jsxRuntime.jsx("img", { src: layer.menuIcon, className: 'tw
|
1165
|
+
}, children: jsxRuntime.jsx("img", { src: layer.menuIcon, className: 'tw:h-6 tw:w-6 tw:text-white', style: { filter: 'invert(100%) brightness(200%)' } }) }) }) }) }, layer.name))) })] })) : ('') }));
|
2275
1166
|
}
|
2276
1167
|
|
2277
1168
|
const Control = ({ position, children, zIndex, absolute, }) => {
|
@@ -2282,7 +1173,7 @@ const Control = ({ position, children, zIndex, absolute, }) => {
|
|
2282
1173
|
leaflet.DomEvent.disableScrollPropagation(controlContainerRef.current);
|
2283
1174
|
}
|
2284
1175
|
}, [controlContainerRef]);
|
2285
|
-
return (jsxRuntime.jsx("div", { ref: controlContainerRef, style: { zIndex }, className: `${absolute && 'tw
|
1176
|
+
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 }));
|
2286
1177
|
};
|
2287
1178
|
|
2288
1179
|
function FunnelIcon({
|
@@ -2325,11 +1216,11 @@ function FilterControl() {
|
|
2325
1216
|
const toggleVisibleGroupType = useToggleVisibleGroupType();
|
2326
1217
|
const addVisibleGroupType = useAddVisibleGroupType();
|
2327
1218
|
const visibleGroupTypes = useVisibleGroupType();
|
2328
|
-
return (jsxRuntime.jsx("div", { className: 'tw-card tw
|
1219
|
+
return (jsxRuntime.jsx("div", { className: 'tw-card tw:bg-base-100 tw:shadow-xl tw:mt-2 tw:w-fit', children: open ? (jsxRuntime.jsxs("div", { className: 'tw-card-body tw:pr-4 tw:min-w-[8rem] tw:p-2 tw:w-fit tw:transition-all tw:duration-300', children: [jsxRuntime.jsx("label", { className: 'tw-btn tw-btn-sm tw:rounded-2xl tw-btn-circle tw-btn-ghost tw:hover:bg-transparent tw:absolute tw:right-0 tw:top-0 tw:text-gray-600', onClick: () => {
|
2329
1220
|
setOpen(false);
|
2330
|
-
}, children: jsxRuntime.jsx("p", { className: 'tw
|
1221
|
+
}, 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 tw:hover:bg-slate-300 tw-card tw:p-2 tw:h-10 tw:w-10 tw:transition-all tw:duration-300 tw:hover:cursor-pointer', onClick: () => {
|
2331
1222
|
setOpen(true);
|
2332
|
-
}, children: jsxRuntime.jsx(ForwardRef$e, { className: 'size-6 tw
|
1223
|
+
}, children: jsxRuntime.jsx(ForwardRef$e, { className: 'size-6 tw:stroke-[2.5]' }) })] })) }));
|
2333
1224
|
}
|
2334
1225
|
|
2335
1226
|
function HeartIcon({
|
@@ -2361,9 +1252,9 @@ const GratitudeControl = () => {
|
|
2361
1252
|
const navigate = reactRouterDom.useNavigate();
|
2362
1253
|
const { isAuthenticated } = useAuth();
|
2363
1254
|
if (isAuthenticated) {
|
2364
|
-
return (jsxRuntime.jsx("div", { className: 'tw-card tw
|
1255
|
+
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 tw:hover:bg-slate-300 tw-card tw:p-2 tw:h-10 tw:w-10 tw:transition-all tw:duration-300 tw:hover:cursor-pointer', onClick: () => {
|
2365
1256
|
navigate('/select-user');
|
2366
|
-
}, children: jsxRuntime.jsx(ForwardRef$d, { className: 'tw
|
1257
|
+
}, children: jsxRuntime.jsx(ForwardRef$d, { className: 'tw:stroke-[2.5]' }) }) }));
|
2367
1258
|
}
|
2368
1259
|
else
|
2369
1260
|
return jsxRuntime.jsx(jsxRuntime.Fragment, {});
|
@@ -2376,11 +1267,11 @@ function LayerControl() {
|
|
2376
1267
|
const layers = useLayers();
|
2377
1268
|
const isLayerVisible = useIsLayerVisible();
|
2378
1269
|
const toggleVisibleLayer = useToggleVisibleLayer();
|
2379
|
-
return (jsxRuntime.jsx("div", { className: 'tw-card tw
|
1270
|
+
return (jsxRuntime.jsx("div", { className: 'tw-card tw:bg-base-100 tw:shadow-xl tw:mt-2 tw:w-fit', children: open ? (jsxRuntime.jsxs("div", { className: 'tw-card-body tw:pr-4 tw:min-w-[8rem] tw:p-2 tw:transition-all tw:w-fit tw:duration-300', children: [jsxRuntime.jsx("label", { className: 'tw-btn tw-btn-sm tw:rounded-2xl tw-btn-circle tw-btn-ghost tw:hover:bg-transparent tw:absolute tw:right-0 tw:top-0 tw:text-gray-600', onClick: () => {
|
2380
1271
|
setOpen(false);
|
2381
|
-
}, children: jsxRuntime.jsx("p", { className: 'tw
|
1272
|
+
}, 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 tw:hover:bg-slate-300 tw-card tw:p-2 tw:h-10 tw:w-10 tw:transition-all tw:duration-300 tw:hover:cursor-pointer', onClick: () => {
|
2382
1273
|
setOpen(true);
|
2383
|
-
}, children: jsxRuntime.jsx(
|
1274
|
+
}, children: jsxRuntime.jsx(SVG, { src: LayerSVG }) })) }));
|
2384
1275
|
}
|
2385
1276
|
|
2386
1277
|
function FlagIcon({
|
@@ -3529,7 +2420,7 @@ const LocateControl = () => {
|
|
3529
2420
|
setActive(true);
|
3530
2421
|
},
|
3531
2422
|
});
|
3532
|
-
return (jsxRuntime.jsx(jsxRuntime.Fragment, { children: jsxRuntime.jsx("div", { className: 'tw-card tw
|
2423
|
+
return (jsxRuntime.jsx(jsxRuntime.Fragment, { children: jsxRuntime.jsx("div", { className: 'tw-card tw:h-12 tw:w-12 tw:bg-base-100 tw:shadow-xl tw:items-center tw:justify-center tw:hover:bg-slate-300 tw:hover:cursor-pointer tw:transition-all tw:duration-300 tw:ml-2', children: jsxRuntime.jsx("div", { className: 'tw-card-body tw-card tw:p-2 tw:h-10 tw:w-10 ', onClick: () => {
|
3533
2424
|
if (active) {
|
3534
2425
|
lc.stop();
|
3535
2426
|
setActive(false);
|
@@ -3538,7 +2429,7 @@ const LocateControl = () => {
|
|
3538
2429
|
lc.start();
|
3539
2430
|
setLoading(true);
|
3540
2431
|
}
|
3541
|
-
}, children: loading ? (jsxRuntime.jsx("span", { className: 'tw-loading tw-loading-spinner tw-loading-md tw
|
2432
|
+
}, children: loading ? (jsxRuntime.jsx("span", { className: 'tw-loading tw-loading-spinner tw-loading-md tw:mt-1' })) : (jsxRuntime.jsx(SVG, { src: TargetSVG, className: 'tw:mt-1 tw:p-[1px]', style: { fill: `${active ? '#fc8702' : 'currentColor'}` } })) }) }) }));
|
3542
2433
|
};
|
3543
2434
|
|
3544
2435
|
function Bars3Icon({
|
@@ -3566,7 +2457,7 @@ const ForwardRef$a = /*#__PURE__*/ React__namespace.forwardRef(Bars3Icon);
|
|
3566
2457
|
|
3567
2458
|
// Converts leaflet.locatecontrol to a React Component
|
3568
2459
|
const SidebarControl = () => {
|
3569
|
-
return (jsxRuntime.jsx(jsxRuntime.Fragment, { children: jsxRuntime.jsx("div", { className: 'tw-card tw
|
2460
|
+
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 tw:hover:bg-slate-300 tw:hover: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' }) }) }) }) }));
|
3570
2461
|
};
|
3571
2462
|
|
3572
2463
|
const SearchControl = () => {
|
@@ -3627,18 +2518,18 @@ const SearchControl = () => {
|
|
3627
2518
|
const embedded = params.get('embedded');
|
3628
2519
|
embedded !== 'true' && setEmbedded(false);
|
3629
2520
|
}, [location]);
|
3630
|
-
return (jsxRuntime.jsx(jsxRuntime.Fragment, { children: !(windowDimensions.height < 500 && popupOpen && hideSuggestions) && (jsxRuntime.jsxs("div", { className: 'tw
|
2521
|
+
return (jsxRuntime.jsx(jsxRuntime.Fragment, { children: !(windowDimensions.height < 500 && popupOpen && hideSuggestions) && (jsxRuntime.jsxs("div", { className: 'tw:w-[calc(100vw-2rem)] tw:max-w-[22rem] ', children: [jsxRuntime.jsxs("div", { className: 'tw:flex tw:flex-row', children: [embedded && jsxRuntime.jsx(SidebarControl, {}), jsxRuntime.jsxs("div", { className: 'tw:relative', children: [jsxRuntime.jsx("input", { type: 'text', placeholder: 'search ...', autoComplete: 'off', value: value, className: 'tw-input tw-input-bordered tw:grow tw:shadow-xl tw:rounded-lg tw:pr-12', ref: searchInput, onChange: (e) => setValue(e.target.value), onFocus: () => {
|
3631
2522
|
setHideSuggestions(false);
|
3632
2523
|
if (windowDimensions.width < 500)
|
3633
2524
|
map.closePopup();
|
3634
|
-
}, onBlur: () => hide() }), value.length > 0 && (jsxRuntime.jsx("button", { className: 'tw-btn tw-btn-sm tw-btn-circle tw
|
2525
|
+
}, onBlur: () => hide() }), value.length > 0 && (jsxRuntime.jsx("button", { className: 'tw-btn tw-btn-sm tw-btn-circle tw:absolute tw:right-2 tw:top-2', onClick: () => setValue(''), children: "\u2715" }))] }), jsxRuntime.jsx(LocateControl, {})] }), hideSuggestions ||
|
3635
2526
|
(Array.from(geoResults).length === 0 &&
|
3636
2527
|
itemsResults.length === 0 &&
|
3637
2528
|
tagsResults.length === 0 &&
|
3638
2529
|
!isGeoCoordinate(value)) ||
|
3639
|
-
value.length === 0 ? ('') : (jsxRuntime.jsxs("div", { className: 'tw-card tw-card-body tw
|
2530
|
+
value.length === 0 ? ('') : (jsxRuntime.jsxs("div", { className: 'tw-card tw-card-body tw:bg-base-100 tw:p-4 tw:mt-2 tw:shadow-xl tw:overflow-y-auto tw:max-h-[calc(100dvh-152px)] tw:absolute tw:z-3000', children: [tagsResults.length > 0 && (jsxRuntime.jsx("div", { className: 'tw:flex tw:flex-wrap', children: tagsResults.slice(0, 3).map((tag) => (jsxRuntime.jsx("div", { className: 'tw:rounded-2xl tw:text-white tw:p-1 tw:px-4 tw:shadow-md tw-card tw:mr-2 tw:mb-2 tw:cursor-pointer', style: { backgroundColor: tag.color }, onClick: () => {
|
3640
2531
|
addFilterTag(tag);
|
3641
|
-
}, children: jsxRuntime.jsxs("b", { children: ["#", decodeTag(tag.name)] }) }, tag.name))) })), itemsResults.length > 0 && tagsResults.length > 0 && (jsxRuntime.jsx("hr", { className: 'tw
|
2532
|
+
}, children: jsxRuntime.jsxs("b", { children: ["#", decodeTag(tag.name)] }) }, tag.name))) })), itemsResults.length > 0 && tagsResults.length > 0 && (jsxRuntime.jsx("hr", { className: 'tw:opacity-50' })), itemsResults.slice(0, 5).map((item) => (jsxRuntime.jsxs("div", { className: 'tw:cursor-pointer tw:hover:font-bold tw:flex tw:flex-row', onClick: () => {
|
3642
2533
|
const marker = Object.entries(leafletRefs).find((r) => r[1].item === item)?.[1]
|
3643
2534
|
.marker;
|
3644
2535
|
if (marker) {
|
@@ -3647,14 +2538,18 @@ const SearchControl = () => {
|
|
3647
2538
|
else {
|
3648
2539
|
navigate('item/' + item.id + '?' + new URLSearchParams(window.location.search));
|
3649
2540
|
}
|
3650
|
-
}, children:
|
3651
|
-
|
2541
|
+
}, children: [item.layer?.menuIcon ? (jsxRuntime.jsx(SVG, { src: item.layer.menuIcon, className: 'tw:text-current tw:mr-2 tw:mt-0 tw:w-5', preProcessor: (code) => {
|
2542
|
+
code = code.replace(/fill=".*?"/g, 'fill="currentColor"');
|
2543
|
+
code = code.replace(/stroke=".*?"/g, 'stroke="currentColor"');
|
2544
|
+
return code;
|
2545
|
+
} })) : (jsxRuntime.jsx("div", { className: 'tw:w-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: item.name }), jsxRuntime.jsx("div", { className: 'tw:text-xs tw:overflow-hidden tw:text-ellipsis tw:whitespace-nowrap tw:max-w-[17rem]', children: item.text })] })] }, item.id))), Array.from(geoResults).length > 0 &&
|
2546
|
+
(itemsResults.length > 0 || tagsResults.length > 0) && (jsxRuntime.jsx("hr", { className: 'tw:opacity-50' })), Array.from(geoResults).map((geo) => (jsxRuntime.jsxs("div", { className: 'tw:flex tw:flex-row tw:hover:font-bold tw:cursor-pointer', onClick: () => {
|
3652
2547
|
searchInput.current?.blur();
|
3653
2548
|
leaflet.marker(new leaflet.LatLng(geo.geometry.coordinates[1], geo.geometry.coordinates[0]), {
|
3654
2549
|
icon: MarkerIconFactory('circle', '#777', 'RGBA(35, 31, 32, 0.2)', 'point'),
|
3655
2550
|
})
|
3656
2551
|
.addTo(map)
|
3657
|
-
.bindPopup(`<h3 class="tw
|
2552
|
+
.bindPopup(`<h3 class="tw:text-base tw:font-bold">${geo?.properties.name ? geo?.properties.name : value}<h3>${capitalizeFirstLetter(geo?.properties?.osm_value)}`)
|
3658
2553
|
.openPopup()
|
3659
2554
|
.addEventListener('popupclose', (e) => {
|
3660
2555
|
// eslint-disable-next-line no-console
|
@@ -3665,26 +2560,26 @@ const SearchControl = () => {
|
|
3665
2560
|
else
|
3666
2561
|
map.setView(new leaflet.LatLng(geo.geometry.coordinates[1], geo.geometry.coordinates[0]), 15, { duration: 1 });
|
3667
2562
|
hide();
|
3668
|
-
}, children: [jsxRuntime.jsx(ForwardRef$b, { className: 'tw
|
2563
|
+
}, children: [jsxRuntime.jsx(ForwardRef$b, { className: 'tw:text-current tw:mr-2 tw:mt-0 tw:w-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: 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 &&
|
3669
2564
|
geo?.properties?.osm_value !== 'yes' &&
|
3670
2565
|
geo?.properties?.osm_value !== 'primary' &&
|
3671
2566
|
geo?.properties?.osm_value !== 'path' &&
|
3672
2567
|
geo?.properties?.osm_value !== 'secondary' &&
|
3673
2568
|
geo?.properties?.osm_value !== 'residential' &&
|
3674
2569
|
geo?.properties?.osm_value !== 'unclassified' &&
|
3675
|
-
`${capitalizeFirstLetter(geo?.properties?.osm_value)}, `, ' ', geo.properties.state && `${geo.properties.state}, `, ' ', geo.properties.country && geo.properties.country] })] })] }, Math.random()))), isGeoCoordinate(value) && (jsxRuntime.jsxs("div", { className: 'tw
|
2570
|
+
`${capitalizeFirstLetter(geo?.properties?.osm_value)}, `, ' ', geo.properties.state && `${geo.properties.state}, `, ' ', geo.properties.country && geo.properties.country] })] })] }, Math.random()))), isGeoCoordinate(value) && (jsxRuntime.jsxs("div", { className: 'tw:flex tw:flex-row tw:hover:font-bold tw:cursor-pointer', onClick: () => {
|
3676
2571
|
leaflet.marker(new leaflet.LatLng(extractCoordinates(value)[0], extractCoordinates(value)[1]), {
|
3677
2572
|
icon: MarkerIconFactory('circle', '#777', 'RGBA(35, 31, 32, 0.2)', 'point'),
|
3678
2573
|
})
|
3679
2574
|
.addTo(map)
|
3680
|
-
.bindPopup(`<h3 class="tw
|
2575
|
+
.bindPopup(`<h3 class="tw:text-base tw:font-bold">${extractCoordinates(value)[0]}, ${extractCoordinates(value)[1]}</h3>`)
|
3681
2576
|
.openPopup()
|
3682
2577
|
.addEventListener('popupclose', (e) => {
|
3683
2578
|
// eslint-disable-next-line no-console
|
3684
2579
|
console.log(e.target.remove());
|
3685
2580
|
});
|
3686
2581
|
map.setView(new leaflet.LatLng(extractCoordinates(value)[0], extractCoordinates(value)[1]), 15, { duration: 1 });
|
3687
|
-
}, children: [jsxRuntime.jsx(ForwardRef$c, { className: 'tw
|
2582
|
+
}, 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' })] })] }))] }))] })) }));
|
3688
2583
|
};
|
3689
2584
|
function isGeoCoordinate(input) {
|
3690
2585
|
const geokoordinatenRegex =
|
@@ -3710,7 +2605,7 @@ function capitalizeFirstLetter(string) {
|
|
3710
2605
|
const TagsControl = () => {
|
3711
2606
|
const filterTags = useFilterTags();
|
3712
2607
|
const removeFilterTag = useRemoveFilterTag();
|
3713
|
-
return (jsxRuntime.jsx("div", { className: 'tw
|
2608
|
+
return (jsxRuntime.jsx("div", { className: 'tw:flex tw:flex-wrap tw:mt-4 tw:w-[calc(100vw-2rem)] tw:max-w-xs', children: filterTags.map((tag) => (jsxRuntime.jsxs("div", { className: 'tw:rounded-2xl tw:text-white tw:p-2 tw:px-4 tw:shadow-xl tw-card tw:mr-2 tw:mb-2', style: { backgroundColor: tag.color }, children: [jsxRuntime.jsx("div", { className: 'tw-card-actions tw:justify-end', children: jsxRuntime.jsx("label", { className: 'tw-btn tw-btn-xs tw-btn-circle tw:absolute tw:-right-2 tw:-top-2 tw:bg-white tw:text-gray-600', onClick: () => removeFilterTag(tag.name), children: "\u2715" }) }), jsxRuntime.jsxs("b", { children: ["#", decodeTag(tag.name)] })] }, tag.id))) }));
|
3714
2609
|
};
|
3715
2610
|
|
3716
2611
|
const urlRegex =
|
@@ -3772,19 +2667,19 @@ const TextView = ({ item, itemId, text, truncate = false, rawText, itemTextField
|
|
3772
2667
|
return `[${match}](${match})`;
|
3773
2668
|
});
|
3774
2669
|
}
|
3775
|
-
const CustomH1 = ({ children }) => jsxRuntime.jsx("h1", { className: 'tw
|
3776
|
-
const CustomH2 = ({ children }) => jsxRuntime.jsx("h2", { className: 'tw
|
3777
|
-
const CustomH3 = ({ children }) => jsxRuntime.jsx("h3", { className: 'tw
|
3778
|
-
const CustomH4 = ({ children }) => jsxRuntime.jsx("h4", { className: 'tw
|
3779
|
-
const CustomH5 = ({ children }) => jsxRuntime.jsx("h5", { className: 'tw
|
3780
|
-
const CustomH6 = ({ children }) => jsxRuntime.jsx("h6", { className: 'tw
|
3781
|
-
const CustomParagraph = ({ children }) => jsxRuntime.jsx("p", { className: '
|
3782
|
-
const CustomUnorderdList = ({ children }) => (jsxRuntime.jsx("ul", { className: 'tw
|
3783
|
-
const CustomOrderdList = ({ children }) => (jsxRuntime.jsx("ol", { className: 'tw
|
3784
|
-
const CustomHorizontalRow = ({ children }) => jsxRuntime.jsx("hr", { className: 'tw
|
2670
|
+
const CustomH1 = ({ children }) => jsxRuntime.jsx("h1", { className: 'tw:text-xl tw:font-bold', children: children });
|
2671
|
+
const CustomH2 = ({ children }) => jsxRuntime.jsx("h2", { className: 'tw:text-lg tw:font-bold', children: children });
|
2672
|
+
const CustomH3 = ({ children }) => jsxRuntime.jsx("h3", { className: 'tw:text-base tw:font-bold', children: children });
|
2673
|
+
const CustomH4 = ({ children }) => jsxRuntime.jsx("h4", { className: 'tw:text-base tw:font-bold', children: children });
|
2674
|
+
const CustomH5 = ({ children }) => jsxRuntime.jsx("h5", { className: 'tw:text-sm tw:font-bold', children: children });
|
2675
|
+
const CustomH6 = ({ children }) => jsxRuntime.jsx("h6", { className: 'tw:text-sm tw:font-bold', children: children });
|
2676
|
+
const CustomParagraph = ({ children }) => jsxRuntime.jsx("p", { className: 'tw:my-2!', children: children });
|
2677
|
+
const CustomUnorderdList = ({ children }) => (jsxRuntime.jsx("ul", { className: 'tw:list-disc tw:list-inside', children: children }));
|
2678
|
+
const CustomOrderdList = ({ children }) => (jsxRuntime.jsx("ol", { className: 'tw:list-decimal tw:list-inside', children: children }));
|
2679
|
+
const CustomHorizontalRow = ({ children }) => jsxRuntime.jsx("hr", { className: 'tw:border-current', children: children });
|
3785
2680
|
// eslint-disable-next-line react/prop-types
|
3786
|
-
const CustomImage = ({ alt, src, title }) => (jsxRuntime.jsx("img", { className: 'tw
|
3787
|
-
const CustomExternalLink = ({ href, children }) => (jsxRuntime.jsxs("a", { className: 'tw
|
2681
|
+
const CustomImage = ({ alt, src, title }) => (jsxRuntime.jsx("img", { className: 'tw:max-w-full tw:rounded tw:shadow', src: src, alt: alt, title: title }));
|
2682
|
+
const CustomExternalLink = ({ href, children }) => (jsxRuntime.jsxs("a", { className: 'tw:font-bold tw:underline', href: href, target: '_blank', rel: 'noreferrer', children: [' ', children] }));
|
3788
2683
|
const CustomHashTagLink = ({ children, tag, itemId, }) => {
|
3789
2684
|
return (jsxRuntime.jsx("a", { style: { color: tag ? tag.color : '#faa', fontWeight: 'bold', cursor: 'pointer' }, onClick: (e) => {
|
3790
2685
|
e.stopPropagation();
|
@@ -3792,8 +2687,8 @@ const TextView = ({ item, itemId, text, truncate = false, rawText, itemTextField
|
|
3792
2687
|
}, children: decodeTag(children) }, tag ? tag.name + itemId : itemId));
|
3793
2688
|
};
|
3794
2689
|
// eslint-disable-next-line react/display-name
|
3795
|
-
const MemoizedVideoEmbed = React.memo(({ url }) => (jsxRuntime.jsx("iframe", { className: 'tw
|
3796
|
-
return (jsxRuntime.jsx(Markdown, { className: 'tw
|
2690
|
+
const MemoizedVideoEmbed = React.memo(({ url }) => (jsxRuntime.jsx("iframe", { className: 'tw:w-full', src: url, allow: 'fullscreen; picture-in-picture', allowFullScreen: true })));
|
2691
|
+
return (jsxRuntime.jsx(Markdown, { className: 'tw:text-map tw:leading-map tw:text-sm', remarkPlugins: [remarkBreaks], components: {
|
3797
2692
|
p: CustomParagraph,
|
3798
2693
|
a: ({ href, children }) => {
|
3799
2694
|
const isYouTubeVideo = href?.startsWith('https://www.youtube.com/watch?v=');
|
@@ -3865,9 +2760,9 @@ function truncateText(text, limit) {
|
|
3865
2760
|
|
3866
2761
|
/* eslint-disable @typescript-eslint/no-unsafe-call */
|
3867
2762
|
const SelectPosition = ({ setSelectNewItemPosition }) => {
|
3868
|
-
return (jsxRuntime.jsxs("div", { className: 'tw
|
2763
|
+
return (jsxRuntime.jsxs("div", { className: 'tw:animate-pulseGrow tw-button tw:z-1000 tw:absolute tw:right-5 tw:top-4 tw:drop-shadow-md', children: [jsxRuntime.jsx("label", { className: 'tw-btn tw-btn-sm tw:rounded-2xl tw-btn-circle tw-btn-ghost tw:hover:bg-transparent tw:absolute tw:right-0 tw:top-0 tw:text-gray-600', onClick: () => {
|
3869
2764
|
setSelectNewItemPosition(null);
|
3870
|
-
}, children: jsxRuntime.jsx("p", { className: 'tw
|
2765
|
+
}, children: jsxRuntime.jsx("p", { className: 'tw:text-center ', children: "\u2715" }) }), jsxRuntime.jsx("div", { className: 'tw-alert tw:bg-base-100 tw:text-base-content', children: jsxRuntime.jsx("div", { children: jsxRuntime.jsx("span", { className: 'tw:text-lg', children: "Select position on the map!" }) }) })] }));
|
3871
2766
|
};
|
3872
2767
|
|
3873
2768
|
function UtopiaMapInner({ children, geo, showFilterControl = false, showGratitudeControl = false, showLayerControl = true, donationWidget, }) {
|
@@ -3891,7 +2786,7 @@ function UtopiaMapInner({ children, geo, showFilterControl = false, showGratitud
|
|
3891
2786
|
if (!init.current) {
|
3892
2787
|
donationWidget &&
|
3893
2788
|
setTimeout(() => {
|
3894
|
-
reactToastify.toast(jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(TextView, { itemId: '', rawText: '## Do you like this Map?' }), jsxRuntime.jsxs("div", { children: [jsxRuntime.jsx(TextView, { itemId: '', rawText: 'Support us building free opensource maps and help us grow 🌱☀️' }), jsxRuntime.jsx("a", { href: 'https://opencollective.com/utopia-project', children: jsxRuntime.jsx("div", { className: 'tw-btn
|
2789
|
+
reactToastify.toast(jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(TextView, { itemId: '', rawText: '## Do you like this Map?' }), jsxRuntime.jsxs("div", { children: [jsxRuntime.jsx(TextView, { itemId: '', rawText: 'Support us building free opensource maps for communities and help us grow 🌱☀️' }), jsxRuntime.jsx("a", { href: 'https://opencollective.com/utopia-project', children: jsxRuntime.jsx("div", { className: 'tw-btn tw-btn-sm tw:float-right tw-btn-primary', children: "Donate" }) })] })] }), { autoClose: false });
|
3895
2790
|
}, 600000);
|
3896
2791
|
init.current = true;
|
3897
2792
|
}
|
@@ -3975,7 +2870,7 @@ function UtopiaMapInner({ children, geo, showFilterControl = false, showGratitud
|
|
3975
2870
|
layer.bindPopup(feature.properties.name);
|
3976
2871
|
}
|
3977
2872
|
};
|
3978
|
-
return (jsxRuntime.jsxs("div", { className: `tw
|
2873
|
+
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)
|
3979
2874
|
? React.cloneElement(child, { setItemFormPopup, itemFormPopup, clusterRef })
|
3980
2875
|
: child) }), geo && (jsxRuntime.jsx(reactLeaflet.GeoJSON, { data: geo, onEachFeature: onEachFeature, eventHandlers: {
|
3981
2876
|
click: (e) => {
|
@@ -4063,7 +2958,7 @@ function TextAreaInput({ labelTitle, dataField, labelStyle, containerStyle, inpu
|
|
4063
2958
|
updateFormValue(newValue);
|
4064
2959
|
}
|
4065
2960
|
};
|
4066
|
-
return (jsxRuntime.jsxs("div", { className: `tw-form-control tw
|
2961
|
+
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 })] }));
|
4067
2962
|
}
|
4068
2963
|
|
4069
2964
|
/**
|
@@ -4081,7 +2976,7 @@ function TextInput({ labelTitle, labelStyle, type, dataField, containerStyle, in
|
|
4081
2976
|
updateFormValue(newValue);
|
4082
2977
|
}
|
4083
2978
|
};
|
4084
|
-
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
|
2979
|
+
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 ?? ''}` })] }));
|
4085
2980
|
}
|
4086
2981
|
|
4087
2982
|
function ItemFormPopup(props) {
|
@@ -4133,8 +3028,6 @@ function ItemFormPopup(props) {
|
|
4133
3028
|
reactToastify.toast.error(error.toString());
|
4134
3029
|
}
|
4135
3030
|
if (success) {
|
4136
|
-
// eslint-disable-next-line no-console
|
4137
|
-
console.log(props.item);
|
4138
3031
|
updateItem({ ...props.item, ...formItem });
|
4139
3032
|
reactToastify.toast.success('Item updated');
|
4140
3033
|
}
|
@@ -4142,7 +3035,7 @@ function ItemFormPopup(props) {
|
|
4142
3035
|
map.closePopup();
|
4143
3036
|
}
|
4144
3037
|
else {
|
4145
|
-
const item = items.find((i) => i.user_created?.id === user?.id && i.layer
|
3038
|
+
const item = items.find((i) => i.user_created?.id === user?.id && i.layer === props.layer);
|
4146
3039
|
const uuid = crypto.randomUUID();
|
4147
3040
|
let success = false;
|
4148
3041
|
try {
|
@@ -4196,15 +3089,15 @@ function ItemFormPopup(props) {
|
|
4196
3089
|
resetPopup();
|
4197
3090
|
}, 100);
|
4198
3091
|
},
|
4199
|
-
}, 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
|
3092
|
+
}, 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)
|
4200
3093
|
? React.cloneElement(child, {
|
4201
3094
|
item: props.item,
|
4202
3095
|
key: props.position.toString(),
|
4203
3096
|
setPopupTitle,
|
4204
3097
|
})
|
4205
|
-
: '')) : (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(TextInput, { type: 'text', placeholder: 'Name', dataField: 'name', defaultValue: props.item ? props.item.name : '', inputStyle: '' }), jsxRuntime.jsx(TextAreaInput, { placeholder: 'Text', dataField: 'text', defaultValue: props.item?.text ?? '', inputStyle: 'tw
|
4206
|
-
? 'tw-btn tw-btn-disabled tw
|
4207
|
-
: 'tw-btn tw
|
3098
|
+
: '')) : (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(TextInput, { type: 'text', placeholder: 'Name', dataField: 'name', defaultValue: props.item ? props.item.name : '', inputStyle: '' }), jsxRuntime.jsx(TextAreaInput, { placeholder: 'Text', dataField: 'text', defaultValue: props.item?.text ?? '', inputStyle: 'tw:h-40 tw:mt-5' }, props.position.toString())] })), jsxRuntime.jsx("div", { className: 'tw:flex tw:justify-center', children: jsxRuntime.jsx("button", { className: spinner
|
3099
|
+
? 'tw-btn tw-btn-disabled tw:mt-5 tw:place-self-center'
|
3100
|
+
: 'tw-btn tw:mt-5 tw:place-self-center', type: 'submit', children: spinner ? jsxRuntime.jsx("span", { className: 'tw-loading tw-loading-spinner' }) : 'Save' }) })] }) }));
|
4208
3101
|
}
|
4209
3102
|
|
4210
3103
|
// in miliseconds
|
@@ -4315,17 +3208,17 @@ const DialogModal = ({ title, isOpened, onClose, children, showCloseButton = tru
|
|
4315
3208
|
React.useEffect(() => {
|
4316
3209
|
if (isOpened) {
|
4317
3210
|
ref.current?.showModal();
|
4318
|
-
ref.current?.classList.remove('tw
|
3211
|
+
ref.current?.classList.remove('tw:hidden');
|
4319
3212
|
document.body.classList.add('modal-open'); // prevent bg scroll
|
4320
3213
|
}
|
4321
3214
|
else {
|
4322
3215
|
ref.current?.close();
|
4323
|
-
ref.current?.classList.add('tw
|
3216
|
+
ref.current?.classList.add('tw:hidden');
|
4324
3217
|
document.body.classList.remove('modal-open');
|
4325
3218
|
}
|
4326
3219
|
}, [isOpened]);
|
4327
3220
|
if (isOpened) {
|
4328
|
-
return (jsxRuntime.jsx("dialog", { className: `${className ?? ''} tw-card tw
|
3221
|
+
return (jsxRuntime.jsx("dialog", { className: `${className ?? ''} tw-card tw:shadow-xl tw:absolute tw:right-0 tw:top-0 tw:bottom-0 tw:left-0 tw:m-auto tw:transition-opacity tw:duration-300 tw:p-4 tw:max-w-xl tw:bg-base-100`, ref: ref, onCancel: onClose, onClick: (e) => ref.current && !isClickInsideRectangle(e, ref.current) && closeOnClickOutside && onClose(), children: jsxRuntime.jsxs("div", { className: 'tw-card-body tw:p-2', children: [jsxRuntime.jsx("h2", { className: 'tw:text-2xl tw:font-semibold tw:mb-2 tw:text-center', children: title }), children, showCloseButton && (jsxRuntime.jsx("button", { className: 'tw-btn tw-btn-sm tw-btn-circle tw-btn-ghost tw:absolute tw:right-2 tw:top-2', onClick: onClose, children: "\u2715" }))] }) }));
|
4329
3222
|
}
|
4330
3223
|
else
|
4331
3224
|
return jsxRuntime.jsx(jsxRuntime.Fragment, {});
|
@@ -4347,21 +3240,21 @@ function HeaderView({ item, api, editCallback, deleteCallback, setPositionCallba
|
|
4347
3240
|
setModalOpen(true);
|
4348
3241
|
event.stopPropagation();
|
4349
3242
|
};
|
4350
|
-
return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsxs("div", { className: 'tw
|
3243
|
+
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 ? 'tw:xl: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) &&
|
4351
3244
|
(hasUserPermission(api?.collectionName, 'delete', item) ||
|
4352
3245
|
hasUserPermission(api?.collectionName, 'update', item)) &&
|
4353
|
-
!hideMenu && (jsxRuntime.jsxs("div", { className: 'tw-dropdown tw-dropdown-bottom', children: [jsxRuntime.jsx("label", { tabIndex: 0, className: 'tw
|
3246
|
+
!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 &&
|
4354
3247
|
hasUserPermission(api.collectionName, 'update', item) &&
|
4355
|
-
editCallback && (jsxRuntime.jsx("li", { children: jsxRuntime.jsx("a", { className: '
|
3248
|
+
editCallback && (jsxRuntime.jsx("li", { children: jsxRuntime.jsx("a", { className: 'tw:text-base-content! tw:cursor-pointer', onClick: (e) => item.layer?.customEditLink
|
4356
3249
|
? navigate(`${item.layer.customEditLink}${item.layer.customEditParameter ? `/${item.id}${params && '?' + params}` : ''} `)
|
4357
|
-
: editCallback(e), children: jsxRuntime.jsx(ForwardRef$8, { className: 'tw
|
3250
|
+
: editCallback(e), children: jsxRuntime.jsx(ForwardRef$8, { className: 'tw:h-5 tw:w-5' }) }) })), api?.updateItem &&
|
4358
3251
|
hasUserPermission(api.collectionName, 'update', item) &&
|
4359
|
-
setPositionCallback && (jsxRuntime.jsx("li", { children: jsxRuntime.jsx("a", { className: '
|
3252
|
+
setPositionCallback && (jsxRuntime.jsx("li", { children: jsxRuntime.jsx("a", { className: 'tw:text-base-content! tw:cursor-pointer', onClick: setPositionCallback, children: jsxRuntime.jsx(SVG, { src: TargetDotSVG, className: 'tw:w-5 tw:h-5' }) }) })), api?.deleteItem &&
|
4360
3253
|
hasUserPermission(api.collectionName, 'delete', item) &&
|
4361
|
-
deleteCallback && (jsxRuntime.jsx("li", { children: jsxRuntime.jsx("a", { className: 'tw
|
3254
|
+
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) => {
|
4362
3255
|
deleteCallback(e);
|
4363
3256
|
setModalOpen(false);
|
4364
|
-
}, children: "Yes" }), jsxRuntime.jsx("label", { className: 'tw-btn tw
|
3257
|
+
}, children: "Yes" }), jsxRuntime.jsx("label", { className: 'tw-btn tw:mt-4', onClick: () => setModalOpen(false), children: "No" })] }) })] }) })] }));
|
4365
3258
|
}
|
4366
3259
|
|
4367
3260
|
// eslint-disable-next-line react/display-name
|
@@ -4411,13 +3304,13 @@ const ItemViewPopup = React.forwardRef((props, ref) => {
|
|
4411
3304
|
window.history.pushState({}, '', '/' + `${params ? `?${params}` : ''}`);
|
4412
3305
|
navigate('/');
|
4413
3306
|
};
|
4414
|
-
return (jsxRuntime.jsx(reactLeaflet.Popup, { ref: ref, maxHeight: 377, minWidth: 275, maxWidth: 275, autoPanPadding: [20, 80], children: jsxRuntime.jsxs("div", { className: 'tw
|
3307
|
+
return (jsxRuntime.jsx(reactLeaflet.Popup, { ref: ref, maxHeight: 377, minWidth: 275, maxWidth: 275, autoPanPadding: [20, 80], children: jsxRuntime.jsxs("div", { className: 'tw:bg-base-100 tw:text-base-content', children: [jsxRuntime.jsx(HeaderView, { api: props.item.layer?.api, item: props.item, editCallback: handleEdit, deleteCallback: handleDelete, setPositionCallback: () => {
|
4415
3308
|
map.closePopup();
|
4416
3309
|
setSelectPosition(props.item);
|
4417
3310
|
navigate('/');
|
4418
|
-
}, loading: loading }), jsxRuntime.jsx("div", { className: 'tw
|
3311
|
+
}, 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)
|
4419
3312
|
? React.cloneElement(child, { item: props.item })
|
4420
|
-
: '')) : (jsxRuntime.jsx(TextView, { text: props.item.text, itemId: props.item.id })) }), jsxRuntime.jsxs("div", { className: 'tw
|
3313
|
+
: '')) : (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' })] })] }) }));
|
4421
3314
|
});
|
4422
3315
|
|
4423
3316
|
/**
|
@@ -4683,21 +3576,21 @@ const PopupTextAreaInput = ({ dataField, placeholder, style, item, }) => {
|
|
4683
3576
|
* @category Map
|
4684
3577
|
*/
|
4685
3578
|
const PopupStartEndInput = ({ item, showLabels = true, updateStartValue, updateEndValue, }) => {
|
4686
|
-
return (jsxRuntime.jsxs("div", { className: 'tw
|
3579
|
+
return (jsxRuntime.jsxs("div", { className: 'tw:grid tw:grid-cols-2 tw:gap-2', children: [jsxRuntime.jsx(TextInput, { type: 'date', placeholder: 'start', dataField: 'start', inputStyle: 'tw:text-sm tw:px-2', labelTitle: showLabels ? 'start' : '', defaultValue: item && item.start ? item.start.substring(0, 10) : '', autocomplete: 'one-time-code', updateFormValue: updateStartValue }), jsxRuntime.jsx(TextInput, { type: 'date', placeholder: 'end', dataField: 'end', inputStyle: 'tw:text-sm tw:px-2', labelTitle: showLabels ? 'end' : '', defaultValue: item && item.end ? item.end.substring(0, 10) : '', autocomplete: 'one-time-code', updateFormValue: updateEndValue })] }));
|
4687
3580
|
};
|
4688
3581
|
|
4689
3582
|
/**
|
4690
3583
|
* @category Map
|
4691
3584
|
*/
|
4692
3585
|
const PopupTextInput = ({ dataField, placeholder, style, item, }) => {
|
4693
|
-
return (jsxRuntime.jsx(TextInput, { defaultValue: item?.name ? item.name : '', dataField: dataField, placeholder: placeholder, inputStyle: style, type: 'text', containerStyle: 'tw
|
3586
|
+
return (jsxRuntime.jsx(TextInput, { defaultValue: item?.name ? item.name : '', dataField: dataField, placeholder: placeholder, inputStyle: style, type: 'text', containerStyle: 'tw:mt-4' }));
|
4694
3587
|
};
|
4695
3588
|
|
4696
3589
|
/**
|
4697
3590
|
* @category Map
|
4698
3591
|
*/
|
4699
3592
|
const PopupCheckboxInput = ({ dataField, label, item, }) => {
|
4700
|
-
return (jsxRuntime.jsxs("label", { htmlFor: item?.id, className: 'tw-label tw
|
3593
|
+
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 })] }));
|
4701
3594
|
};
|
4702
3595
|
|
4703
3596
|
function CalendarDaysIcon({
|
@@ -4729,7 +3622,7 @@ const ForwardRef$6 = /*#__PURE__*/ React__namespace.forwardRef(CalendarDaysIcon)
|
|
4729
3622
|
* @category Map
|
4730
3623
|
*/
|
4731
3624
|
const StartEndView = ({ item }) => {
|
4732
|
-
return (jsxRuntime.jsxs("div", { className: 'tw
|
3625
|
+
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() : '' })] })] }));
|
4733
3626
|
};
|
4734
3627
|
|
4735
3628
|
/**
|
@@ -4740,7 +3633,7 @@ const PopupButton = ({ url, parameterField, text, item, }) => {
|
|
4740
3633
|
const getItemTags = useGetItemTags();
|
4741
3634
|
return (jsxRuntime.jsx(reactRouterDom.Link, { to: `${url}/${parameterField ? item?.id : ''}?${params}`, children: jsxRuntime.jsx("button", { style: {
|
4742
3635
|
backgroundColor: `${item?.color ?? (item && (getItemTags(item) && getItemTags(item)[0] && getItemTags(item)[0].color ? getItemTags(item)[0].color : (item?.layer?.markerDefaultColor ?? '#000')))}`,
|
4743
|
-
}, className: 'tw-btn tw
|
3636
|
+
}, className: 'tw-btn tw:text-white tw-btn-sm tw:float-right tw:mt-1', children: text }) }));
|
4744
3637
|
};
|
4745
3638
|
|
4746
3639
|
function NavBar({ appName }) {
|
@@ -4788,9 +3681,9 @@ function NavBar({ appName }) {
|
|
4788
3681
|
});
|
4789
3682
|
};
|
4790
3683
|
if (showNav) {
|
4791
|
-
return (jsxRuntime.jsx(jsxRuntime.Fragment, { children: jsxRuntime.jsxs("div", { className: 'tw-navbar tw
|
3684
|
+
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', "aria-controls": '#sidenav', "aria-haspopup": 'true', onClick: () => toggleSidebar(), 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: appState.assetsApi.url + 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: () => {
|
4792
3685
|
void onLogout();
|
4793
|
-
}, children: "Logout" }) })] })] })] })) : (jsxRuntime.jsxs("div", { children: [jsxRuntime.jsxs("div", { className: 'tw
|
3686
|
+
}, children: "Logout" }) })] })] })] })) : (jsxRuntime.jsxs("div", { children: [jsxRuntime.jsxs("div", { className: 'tw:hidden tw:md: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 tw:md: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" }) })] })] })] }))] }) }));
|
4794
3687
|
}
|
4795
3688
|
else
|
4796
3689
|
return jsxRuntime.jsx(jsxRuntime.Fragment, {});
|
@@ -4809,7 +3702,7 @@ const SetAppState = ({ assetsApi }) => {
|
|
4809
3702
|
* @category AppShell
|
4810
3703
|
*/
|
4811
3704
|
function AppShell({ appName, children, assetsApi, }) {
|
4812
|
-
return (jsxRuntime.jsx(ContextWrapper, { children: jsxRuntime.jsxs("div", { className: 'tw
|
3705
|
+
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', children: children })] }) }));
|
4813
3706
|
}
|
4814
3707
|
|
4815
3708
|
function SidebarSubmenu({ submenu, name, icon, }) {
|
@@ -4849,26 +3742,26 @@ function SideBar({ routes, bottomRoutes }) {
|
|
4849
3742
|
const toggleSidebarSlim = () => {
|
4850
3743
|
setAppState({ sideBarSlim: !appState.sideBarSlim });
|
4851
3744
|
};
|
4852
|
-
return (jsxRuntime.jsx("nav", { id: 'sidenav', className: `${appState.sideBarOpen ? 'tw
|
4853
|
-
${appState.sideBarSlim ? 'tw
|
4854
|
-
${embedded ? 'tw
|
4855
|
-
tw
|
4856
|
-
tw
|
3745
|
+
return (jsxRuntime.jsx("nav", { id: 'sidenav', className: `${appState.sideBarOpen ? 'tw:translate-x-0' : 'tw:-translate-x-full'}
|
3746
|
+
${appState.sideBarSlim ? 'tw:w-14' : 'tw:w-48'}
|
3747
|
+
${embedded ? 'tw:mt-0 tw:h-[100dvh]' : 'tw:mt-16 tw:h-[calc(100dvh-64px)]'}
|
3748
|
+
tw:fixed tw:left-0 tw:transition-all tw:duration-300 tw:top-0 tw:z-10035
|
3749
|
+
tw:overflow-hidden tw:shadow-xl tw:dark:bg-zinc-800`, 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) => {
|
4857
3750
|
return (jsxRuntime.jsx("li", { className: '', children: route.submenu ? (jsxRuntime.jsx(SidebarSubmenu, { ...route })) : (jsxRuntime.jsxs(reactRouterDom.NavLink, { end: true, target: route.blank ? '_blank' : '_self',
|
4858
3751
|
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
4859
|
-
to: `${route.path}${params && '?' + params.toString()}`, className: ({ isActive }) => `${isActive ? 'tw
|
3752
|
+
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: () => {
|
4860
3753
|
if (screen.width < 640 && !appState.sideBarSlim)
|
4861
3754
|
toggleSidebarOpen();
|
4862
|
-
}, children: [route.icon, jsxRuntime.jsx("span", { className: `${appState.sideBarSlim ? 'tw
|
4863
|
-
location.pathname === route.path ? (jsxRuntime.jsx("span", { className: 'tw
|
4864
|
-
}) }), jsxRuntime.jsx("div", { id: 'slim-toggler', className: 'tw
|
4865
|
-
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
|
3755
|
+
}, children: [route.icon, jsxRuntime.jsx("span", { className: `${appState.sideBarSlim ? 'tw:hidden' : ''}`, "data-te-sidenav-slim": 'false', children: route.name }), (location.pathname.includes(route.path) && route.path.length > 1) ||
|
3756
|
+
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));
|
3757
|
+
}) }), 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) => {
|
3758
|
+
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: () => {
|
4866
3759
|
if (screen.width < 640 && !appState.sideBarSlim)
|
4867
3760
|
toggleSidebarOpen();
|
4868
|
-
}, children: [route.icon, jsxRuntime.jsx("span", { className: `${appState.sideBarSlim ? 'tw
|
4869
|
-
location.pathname === route.path ? (jsxRuntime.jsx("span", { className: 'tw
|
4870
|
-
}) }), jsxRuntime.jsx(ChevronRightIcon, { className: 'tw
|
4871
|
-
(!appState.sideBarSlim ? 'tw
|
3761
|
+
}, children: [route.icon, jsxRuntime.jsx("span", { className: `${appState.sideBarSlim ? 'tw:hidden' : ''}`, "data-te-sidenav-slim": 'false', children: route.name }), (location.pathname.includes(route.path) && route.path.length > 1) ||
|
3762
|
+
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));
|
3763
|
+
}) }), 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 ' +
|
3764
|
+
(!appState.sideBarSlim ? 'tw:rotate-180' : ''), onClick: () => toggleSidebarSlim() })] }) })] }) }));
|
4872
3765
|
}
|
4873
3766
|
|
4874
3767
|
/**
|
@@ -4876,7 +3769,7 @@ function SideBar({ routes, bottomRoutes }) {
|
|
4876
3769
|
*/
|
4877
3770
|
function Content({ children }) {
|
4878
3771
|
const appState = useAppState();
|
4879
|
-
return (jsxRuntime.jsx("div", { className: `${appState.sideBarOpen && !appState.sideBarSlim ? 'tw
|
3772
|
+
return (jsxRuntime.jsx("div", { className: `${appState.sideBarOpen && !appState.sideBarSlim ? 'tw:ml-48' : appState.sideBarOpen && appState.sideBarSlim ? 'tw:ml-14' : ''} tw:flex tw:flex-col tw:w-full tw:h-full tw:bg-base-200 tw:relative tw:transition-all tw:duration-300`, children: children }));
|
4880
3773
|
}
|
4881
3774
|
|
4882
3775
|
/**
|
@@ -4900,7 +3793,7 @@ function MapOverlayPage({ children, className, backdrop, card = true, }) {
|
|
4900
3793
|
}
|
4901
3794
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
4902
3795
|
}, [overlayRef, backdropRef]);
|
4903
|
-
return (jsxRuntime.jsx("div", { className: `tw
|
3796
|
+
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 ?? ''} ${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" })] }) }) }));
|
4904
3797
|
}
|
4905
3798
|
|
4906
3799
|
/**
|
@@ -4944,7 +3837,7 @@ function LoginPage() {
|
|
4944
3837
|
document.removeEventListener('keydown', keyDownHandler);
|
4945
3838
|
};
|
4946
3839
|
}, [onLogin]);
|
4947
|
-
return (jsxRuntime.jsxs(MapOverlayPage, { backdrop: true, className: 'tw
|
3840
|
+
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 tw:hover:text-primary tw:hover:underline tw:hover:cursor-pointer tw:transition tw:duration-200', children: "Forgot Password?" }) }) }), jsxRuntime.jsx("div", { className: 'tw-card-actions', children: jsxRuntime.jsx("button", { className: loading
|
4948
3841
|
? 'tw-btn tw-btn-disabled tw-btn-block tw-btn-primary'
|
4949
3842
|
: 'tw-btn tw-btn-primary tw-btn-block',
|
4950
3843
|
// eslint-disable-next-line @typescript-eslint/no-misused-promises
|
@@ -4993,7 +3886,7 @@ function SignupPage() {
|
|
4993
3886
|
document.removeEventListener('keydown', keyDownHandler);
|
4994
3887
|
};
|
4995
3888
|
}, [onRegister]);
|
4996
|
-
return (jsxRuntime.jsxs(MapOverlayPage, { backdrop: true, className: 'tw
|
3889
|
+
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
|
4997
3890
|
? 'tw-btn tw-btn-disabled tw-btn-block tw-btn-primary'
|
4998
3891
|
: 'tw-btn tw-btn-primary tw-btn-block',
|
4999
3892
|
// eslint-disable-next-line @typescript-eslint/no-misused-promises
|
@@ -5025,7 +3918,7 @@ function RequestPasswordPage({ resetUrl }) {
|
|
5025
3918
|
pending: 'sending email ...',
|
5026
3919
|
});
|
5027
3920
|
};
|
5028
|
-
return (jsxRuntime.jsxs(MapOverlayPage, { backdrop: true, className: 'tw
|
3921
|
+
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
|
5029
3922
|
? 'tw-btn tw-btn-disabled tw-btn-block tw-btn-primary'
|
5030
3923
|
: 'tw-btn tw-btn-primary tw-btn-block',
|
5031
3924
|
// eslint-disable-next-line @typescript-eslint/no-misused-promises
|
@@ -5056,7 +3949,7 @@ function SetNewPasswordPage() {
|
|
5056
3949
|
pending: 'setting password ...',
|
5057
3950
|
});
|
5058
3951
|
};
|
5059
|
-
return (jsxRuntime.jsxs(MapOverlayPage, { backdrop: true, className: 'tw
|
3952
|
+
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
|
5060
3953
|
? 'tw-btn tw-btn-disabled tw-btn-block tw-btn-primary'
|
5061
3954
|
: 'tw-btn tw-btn-primary tw-btn-block',
|
5062
3955
|
// eslint-disable-next-line @typescript-eslint/no-misused-promises
|
@@ -5064,24 +3957,24 @@ function SetNewPasswordPage() {
|
|
5064
3957
|
}
|
5065
3958
|
|
5066
3959
|
function Subtitle({ styleClass, children }) {
|
5067
|
-
return jsxRuntime.jsx("div", { className: `tw
|
3960
|
+
return jsxRuntime.jsx("div", { className: `tw:text-xl tw:font-semibold ${styleClass}`, children: children });
|
5068
3961
|
}
|
5069
3962
|
|
5070
3963
|
/**
|
5071
3964
|
* @category Templates
|
5072
3965
|
*/
|
5073
3966
|
function TitleCard({ title, hideTitle, children, topMargin, TopSideButtons, className, }) {
|
5074
|
-
return (jsxRuntime.jsxs("div", { className: 'tw-card tw
|
3967
|
+
return (jsxRuntime.jsxs("div", { className: 'tw-card tw:w-full tw:p-6 tw:bg-base-100 tw:shadow-xl tw:h-fit tw:mb-4 ' +
|
5075
3968
|
(className ?? '') +
|
5076
3969
|
' ' +
|
5077
|
-
(topMargin ?? 'tw
|
3970
|
+
(topMargin ?? 'tw:mt-6'), children: [!hideTitle && (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsxs(Subtitle, { styleClass: TopSideButtons ? 'tw:inline-block' : '', children: [title, TopSideButtons && (jsxRuntime.jsx("div", { className: 'tw:inline-block tw:float-right', children: TopSideButtons }))] }), jsxRuntime.jsx("div", { className: 'tw-divider tw:mt-2' })] })), jsxRuntime.jsx("div", { className: 'tw:h-full tw:bg-transparent tw:w-full tw:pb-6 tw:bg-base-100', children: children })] }));
|
5078
3971
|
}
|
5079
3972
|
|
5080
3973
|
/**
|
5081
3974
|
* @category Templates
|
5082
3975
|
*/
|
5083
3976
|
function CardPage({ title, hideTitle, children, parents, }) {
|
5084
|
-
return (jsxRuntime.jsx("main", { className: 'tw
|
3977
|
+
return (jsxRuntime.jsx("main", { className: 'tw:flex-1 tw:overflow-y-auto tw:overflow-x-hidden tw:pt-2 tw:px-6 tw:min-w-80 tw:flex tw:justify-center', children: jsxRuntime.jsxs("div", { className: 'tw:w-full tw:xl:max-w-6xl ', children: [jsxRuntime.jsx("div", { className: 'tw:text-sm tw-breadcrumbs', children: jsxRuntime.jsxs("ul", { children: [jsxRuntime.jsx("li", { children: jsxRuntime.jsx(reactRouterDom.Link, { to: '/', children: "Home" }) }), parents?.map((b, i) => (jsxRuntime.jsx("li", { children: jsxRuntime.jsx(reactRouterDom.Link, { to: b.path, children: b.name }) }, i))), jsxRuntime.jsx("li", { children: title })] }) }), jsxRuntime.jsx(TitleCard, { hideTitle: hideTitle, title: title, topMargin: 'tw:my-2', className: ' tw:mb-4', children: children })] }) }));
|
5085
3978
|
}
|
5086
3979
|
|
5087
3980
|
/**
|
@@ -5092,9 +3985,9 @@ const SelectUser = () => {
|
|
5092
3985
|
const items = useItems();
|
5093
3986
|
const users = items.filter((i) => i.layer?.userProfileLayer);
|
5094
3987
|
const [selectedUsers, setSelectedUsers] = React.useState([]);
|
5095
|
-
return (jsxRuntime.jsxs(MapOverlayPage, { backdrop: true, className: 'tw
|
5096
|
-
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
|
5097
|
-
}) }) }) }), jsxRuntime.jsx("div", { className: 'tw
|
3988
|
+
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) => {
|
3989
|
+
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 tw:md: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));
|
3990
|
+
}) }) }) }), 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" }) }) })] }));
|
5098
3991
|
};
|
5099
3992
|
|
5100
3993
|
function PlusIcon({
|
@@ -5124,27 +4017,27 @@ const ForwardRef$5 = /*#__PURE__*/ React__namespace.forwardRef(PlusIcon);
|
|
5124
4017
|
|
5125
4018
|
function PlusButton({ layer, triggerAction, color, collection = 'items', }) {
|
5126
4019
|
const hasUserPermission = useHasUserPermission();
|
5127
|
-
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
|
4020
|
+
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: () => {
|
5128
4021
|
triggerAction();
|
5129
|
-
}, style: { backgroundColor: color, color: '#fff' }, children: jsxRuntime.jsx(ForwardRef$5, { className: 'tw
|
4022
|
+
}, style: { backgroundColor: color, color: '#fff' }, children: jsxRuntime.jsx(ForwardRef$5, { className: 'tw:w-5 tw:h-5 tw:stroke-[2.5]' }) }) })) }));
|
5130
4023
|
}
|
5131
4024
|
|
5132
4025
|
const DateUserInfo = ({ item }) => {
|
5133
4026
|
const [infoExpanded, setInfoExpanded] = React.useState(false);
|
5134
|
-
return (jsxRuntime.jsxs("div", { className: 'tw
|
4027
|
+
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.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 ' })] }));
|
5135
4028
|
};
|
5136
4029
|
|
5137
4030
|
const ItemCard = ({ i, loading, url, deleteCallback, }) => {
|
5138
4031
|
const navigate = reactRouterDom.useNavigate();
|
5139
4032
|
const windowDimensions = useWindowDimensions();
|
5140
|
-
return (jsxRuntime.jsxs("div", { className: 'tw
|
4033
|
+
return (jsxRuntime.jsxs("div", { className: 'tw:cursor-pointer tw-card tw:border-[1px] tw:border-base-300 tw-card-body tw:shadow-xl tw:bg-base-100 tw:text-base-content tw:p-4 tw:mb-4 tw:h-fit', onClick: () => {
|
5141
4034
|
// We could have an onClick callback instead
|
5142
4035
|
const params = new URLSearchParams(window.location.search);
|
5143
4036
|
if (windowDimensions.width < 786 && i.position)
|
5144
4037
|
navigate('/' + i.id + `${params.size > 0 ? `?${params.toString()}` : ''}`);
|
5145
4038
|
else
|
5146
4039
|
navigate(url + i.id + `${params.size > 0 ? `?${params.toString()}` : ''}`);
|
5147
|
-
}, children: [jsxRuntime.jsx(HeaderView, { loading: loading, item: i, api: i.layer?.api, editCallback: () => navigate('/edit-item/' + i.id), deleteCallback: () => deleteCallback(i) }), jsxRuntime.jsxs("div", { className: 'tw
|
4040
|
+
}, children: [jsxRuntime.jsx(HeaderView, { loading: loading, item: i, api: i.layer?.api, editCallback: () => navigate('/edit-item/' + i.id), deleteCallback: () => deleteCallback(i) }), jsxRuntime.jsxs("div", { className: 'tw:overflow-y-auto tw:overflow-x-hidden tw:max-h-64 fade', children: [i.layer?.itemType.show_start_end && jsxRuntime.jsx(StartEndView, { item: i }), i.layer?.itemType.show_text && jsxRuntime.jsx(TextView, { truncate: true, text: i.text, itemId: i.id })] }), jsxRuntime.jsx(DateUserInfo, { item: i })] }));
|
5148
4041
|
};
|
5149
4042
|
|
5150
4043
|
/**
|
@@ -5227,7 +4120,7 @@ const OverlayItemsIndexPage = ({ url, layerName, parameterField, plusButton = tr
|
|
5227
4120
|
removeItem(item);
|
5228
4121
|
setLoading(false);
|
5229
4122
|
};
|
5230
|
-
return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(MapOverlayPage, { className: 'tw
|
4123
|
+
return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(MapOverlayPage, { className: 'tw:rounded-none tw:overflow-y-auto tw:bg-base-200 tw:p-4!', children: jsxRuntime.jsxs("div", { className: 'tw:flex tw:flex-col tw:h-full', children: [jsxRuntime.jsx("div", { className: 'tw:flex-none', children: jsxRuntime.jsxs(Control, { position: 'topLeft', zIndex: '1000', absolute: false, children: [jsxRuntime.jsx(SearchControl, {}), jsxRuntime.jsx(TagsControl, {})] }) }), jsxRuntime.jsx("div", { className: 'tw:overflow-scroll fade tw:flex-1', children: jsxRuntime.jsxs("div", { className: 'tw:columns-1 tw:md:columns-2 tw:lg:columns-3 tw:2xl:columns-4 tw:gap-6 tw:pt-4', children: [items
|
5231
4124
|
.filter((i) => i.layer?.name === layerName)
|
5232
4125
|
.filter((item) => filterTags.length === 0
|
5233
4126
|
? item
|
@@ -5246,9 +4139,9 @@ const OverlayItemsIndexPage = ({ url, layerName, parameterField, plusButton = tr
|
|
5246
4139
|
: 0;
|
5247
4140
|
return dateB - dateA; // Subtracts milliseconds which are numbers
|
5248
4141
|
})
|
5249
|
-
.map((i, k) => (jsxRuntime.jsx("div", { className: 'tw
|
5250
|
-
? 'tw-btn tw-btn-disabled tw
|
5251
|
-
: 'tw-btn tw
|
4142
|
+
.map((i, k) => (jsxRuntime.jsx("div", { className: 'tw:break-inside-avoid tw:mb-6', children: jsxRuntime.jsx(ItemCard, { i: i, loading: loading, url: url, deleteCallback: () => deleteItem(i) }) }, k))), addItemPopupType === 'place' && (jsxRuntime.jsx("form", { ref: tabRef, autoComplete: 'off', onSubmit: (e) => submitNewItem(e), children: jsxRuntime.jsxs("div", { className: 'tw:cursor-pointer tw:break-inside-avoid tw-card tw:border-[1px] tw:border-base-300 tw-card-body tw:shadow-xl tw:bg-base-100 tw:text-base-content tw:p-6 tw:mb-10', children: [jsxRuntime.jsx("label", { className: 'tw-btn tw-btn-sm tw:rounded-2xl tw-btn-circle tw-btn-ghost tw:hover:bg-transparent tw:absolute tw:right-0 tw:top-0 tw:text-gray-600', onClick: () => setAddItemPopupType(''), children: jsxRuntime.jsx("p", { className: 'tw:text-center', children: "\u2715" }) }), jsxRuntime.jsx(TextInput, { type: 'text', placeholder: 'Name', dataField: 'name', defaultValue: '', inputStyle: '' }), layer?.itemType.show_start_end_input && jsxRuntime.jsx(PopupStartEndInput, {}), jsxRuntime.jsx(TextAreaInput, { placeholder: 'Text', dataField: 'text', defaultValue: '', inputStyle: 'tw:h-40 tw:mt-5' }), jsxRuntime.jsx("div", { className: 'tw:flex tw:justify-center', children: jsxRuntime.jsx("button", { className: loading
|
4143
|
+
? 'tw-btn tw-btn-disabled tw:mt-5 tw:place-self-center'
|
4144
|
+
: 'tw-btn tw:mt-5 tw:place-self-center', type: 'submit', children: loading ? jsxRuntime.jsx("span", { className: 'tw-loading tw-loading-spinner' }) : 'Save' }) })] }) }))] }) })] }) }), plusButton && (jsxRuntime.jsx(PlusButton, { layer: layer, triggerAction: () => {
|
5252
4145
|
setAddItemPopupType('place');
|
5253
4146
|
scroll();
|
5254
4147
|
}, color: '#777', collection: 'items' }))] }));
|
@@ -5324,7 +4217,7 @@ const EmojiPicker = ({ selectedEmoji, selectedColor, selectedShape, setSelectedE
|
|
5324
4217
|
setSelectedColor(color);
|
5325
4218
|
setIsOpen(false);
|
5326
4219
|
};
|
5327
|
-
return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("div", { onClick: toggleDropdown, className: `tw
|
4220
|
+
return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("div", { onClick: toggleDropdown, className: `tw:cursor-pointer ${selectedEmoji === 'select badge' ? 'tw:text-sm tw:p-9! tw:text-center ' : 'tw:text-6xl'} tw-mask tw-mask-${selectedShape} tw:p-6 tw-bg-[${selectedColor}]`, children: selectedEmoji }), isOpen && (jsxRuntime.jsxs("div", { className: 'tw:absolute tw:z-3000 tw:top-0 tw:left-1/2 tw:transform tw:-translate-x-1/2 tw:mt-12 tw:bg-base-100 tw:rounded-2xl tw:shadow-lg tw:p-2 tw:w-full', children: [jsxRuntime.jsx("div", { className: 'tw:grid tw:grid-cols-6 tw:gap-2 tw:pb-2', children: emojis.map((emoji) => (jsxRuntime.jsx("button", { onClick: () => selectEmoji(emoji), className: `tw:cursor-pointer tw:text-2xl tw:p-2 tw:hover:bg-base-200 tw:rounded-md ${emoji === selectedEmoji ? 'tw:bg-base-300' : ''}`, children: emoji }, emoji))) }), jsxRuntime.jsx("hr", {}), jsxRuntime.jsx("div", { className: 'tw:grid tw:grid-cols-3 tw:gap-2 tw:py-2', children: shapes.map((shape) => (jsxRuntime.jsx("div", { className: `tw:cursor-pointer tw:hover:bg-base-200 tw:rounded-md tw:p-2 ${shape === selectedShape ? 'tw:bg-base-300' : ''}`, onClick: () => selectShape(shape), children: jsxRuntime.jsx("div", { className: `tw:h-12 tw-mask tw-mask-${shape} tw:bg-neutral-content` }) }, shape))) }), jsxRuntime.jsx("hr", {}), jsxRuntime.jsx("div", { className: 'tw:grid tw:grid-cols-6 tw:gap-2 tw:py-2 tw:px-6', children: colors.map((color) => (jsxRuntime.jsx("div", { className: `tw:cursor-pointer tw:hover:bg-base-200 tw:rounded-md tw:p-2 tw:flex tw:justify-center tw:items-center ${color === selectedColor ? 'tw:bg-base-300' : ''}`, onClick: () => selectColor(color), children: jsxRuntime.jsx("div", { className: `tw:h-8 tw:w-8 tw:rounded-full tw-bg-[${color}]` }) }, color))) })] }))] }));
|
5328
4221
|
};
|
5329
4222
|
|
5330
4223
|
/**
|
@@ -5386,13 +4279,13 @@ const AttestationForm = ({ api }) => {
|
|
5386
4279
|
const [selectedEmoji, setSelectedEmoji] = React.useState('select badge');
|
5387
4280
|
const [selectedShape, setSelectedShape] = React.useState('circle');
|
5388
4281
|
const [selectedColor, setSelectedColor] = React.useState('#fff0d6');
|
5389
|
-
return (jsxRuntime.jsxs(MapOverlayPage, { backdrop: true, className: 'tw
|
4282
|
+
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 tw:md: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" }) })] }));
|
5390
4283
|
};
|
5391
4284
|
|
5392
4285
|
const TagView = ({ tag, heighlight, onClick, count, }) => {
|
5393
4286
|
return (
|
5394
4287
|
// Use your imagination to render suggestions.
|
5395
|
-
jsxRuntime.jsxs("div", { onClick: onClick, className: `tw
|
4288
|
+
jsxRuntime.jsxs("div", { onClick: onClick, className: `tw:flex tw:items-center tw:flex-row tw:rounded-2xl tw:text-white tw:p-2 tw:px-4 tw:shadow-xl tw-card tw:mt-3 tw:mr-4 tw:cursor-pointer tw:w-fit ${heighlight ? 'tw:border-4 tw:border-base-200 tw:shadow-lg' : ''}`, style: { backgroundColor: tag.color ? tag.color : '#666' }, children: [jsxRuntime.jsx("b", { children: decodeTag(tag.name) }), count && jsxRuntime.jsxs("span", { className: 'tw:ml-2', children: ["(", count, ")"] })] }, tag.name));
|
5396
4289
|
};
|
5397
4290
|
|
5398
4291
|
function groupAndCount(arr) {
|
@@ -5434,7 +4327,7 @@ const MarketView = () => {
|
|
5434
4327
|
console.log(offers);
|
5435
4328
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
5436
4329
|
}, [items]);
|
5437
|
-
return (jsxRuntime.jsx(MapOverlayPage, { className: 'tw
|
4330
|
+
return (jsxRuntime.jsx(MapOverlayPage, { className: 'tw:rounded-none tw:overflow-y-auto tw:bg-base-200 tw:p-4!', children: jsxRuntime.jsxs("div", { className: 'tw:grid tw:grid-cols-1 tw:md:grid-cols-2', children: [jsxRuntime.jsxs("div", { children: [jsxRuntime.jsx("p", { className: 'tw:text-lg tw:font-bold', children: "Offers" }), jsxRuntime.jsx("div", { className: 'tw:flex tw:flex-wrap', children: groupAndCount(offers).map((o) => (jsxRuntime.jsx(TagView, { onClick: () => navigate(`/?tags=${o.object.name}`), tag: o.object, count: o.count }, o.object.id))) })] }), jsxRuntime.jsxs("div", { children: [jsxRuntime.jsx("p", { className: 'tw:text-lg tw:font-bold', children: "Needs" }), jsxRuntime.jsx("div", { className: 'tw:flex tw:flex-wrap', children: groupAndCount(needs).map((o) => (jsxRuntime.jsx(TagView, { onClick: () => navigate(`/?tags=${o.object.name}`), tag: o.object, count: o.count }, o.object.id))) })] })] }) }));
|
5438
4331
|
};
|
5439
4332
|
|
5440
4333
|
/**
|
@@ -5470,12 +4363,12 @@ function UserSettings() {
|
|
5470
4363
|
throw e;
|
5471
4364
|
});
|
5472
4365
|
};
|
5473
|
-
return (jsxRuntime.jsxs(MapOverlayPage, { backdrop: true, className: 'tw
|
4366
|
+
return (jsxRuntime.jsxs(MapOverlayPage, { backdrop: true, className: 'tw:mx-4 tw:mt-4 tw:max-h-[calc(100dvh-96px)] tw:h-fit tw:md:w-[calc(50%-32px)] tw:w-[calc(100%-32px)] tw:max-w-xl tw:left-auto! tw:top-0 tw:bottom-0', children: [jsxRuntime.jsx("div", { className: 'tw:text-xl tw:font-semibold', children: "Settings" }), jsxRuntime.jsx("div", { className: 'tw-divider tw:mt-2' }), jsxRuntime.jsxs("div", { className: 'tw:grid tw:grid-cols-1 tw:gap-6', children: [jsxRuntime.jsx(TextInput, { type: 'email', placeholder: 'new E-Mail', defaultValue: user?.email ? user.email : '', updateFormValue: (v) => setEmail(v) }), jsxRuntime.jsx(TextInput, { type: 'password', placeholder: 'new Password', defaultValue: user?.password ? user.password : '', updateFormValue: (v) => {
|
5474
4367
|
setPassword(v);
|
5475
4368
|
setPasswordChanged(true);
|
5476
|
-
} })] }), jsxRuntime.jsx("div", { className: 'tw
|
5477
|
-
? ' tw-loading tw-btn-disabled tw-btn tw-btn-primary tw
|
5478
|
-
: 'tw-btn tw-btn-primary tw
|
4369
|
+
} })] }), jsxRuntime.jsx("div", { className: 'tw:mt-8', children: jsxRuntime.jsx("button", { className: loading
|
4370
|
+
? ' tw-loading tw-btn-disabled tw-btn tw-btn-primary tw:float-right'
|
4371
|
+
: 'tw-btn tw-btn-primary tw:float-right', onClick: () => onUpdateUser(), children: "Update" }) })] }));
|
5479
4372
|
}
|
5480
4373
|
|
5481
4374
|
/* eslint-disable @typescript-eslint/no-unnecessary-condition */
|
@@ -5721,7 +4614,7 @@ const ContactInfoView = ({ item, heading }) => {
|
|
5721
4614
|
React.useEffect(() => {
|
5722
4615
|
setProfileOwner(items.find((i) => i.user_created?.id === item.user_created?.id && i.layer?.userProfileLayer));
|
5723
4616
|
}, [item, items]);
|
5724
|
-
return (jsxRuntime.jsxs("div", { className: 'tw
|
4617
|
+
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: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] }) }))] })] })] }));
|
5725
4618
|
};
|
5726
4619
|
// eslint-disable-next-line react/prop-types
|
5727
4620
|
const ConditionalLink = ({ url, children }) => {
|
@@ -5745,7 +4638,7 @@ const GalleryView = ({ item }) => {
|
|
5745
4638
|
});
|
5746
4639
|
if (!images)
|
5747
4640
|
throw new Error('GalleryView: images is undefined');
|
5748
|
-
return (jsxRuntime.jsxs("div", { className: 'tw
|
4641
|
+
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) })] }));
|
5749
4642
|
};
|
5750
4643
|
|
5751
4644
|
var ChevronSVG = 'data:image/svg+xml;base64,PHN2ZwogICAgICAgICAgICB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnCiAgICAgICAgICAgIHZpZXdCb3g9JzAgMCAyNCAyNCcKICAgICAgICAgICAgZmlsbD0nd2hpdGUnCiAgICAgICAgICAgIGNsYXNzTmFtZT0ndHctaC00IHR3LXctNCcKICAgICAgICAgID4KICAgICAgICAgICAgPHBhdGggZD0nTTIwIDRINGMtMS4xIDAtMS45OS45LTEuOTkgMkwyIDE4YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnptMCA0bC04IDUtOC01VjZsOCA1IDgtNXYyeicgLz4KICAgICAgICAgIDwvc3ZnPg==';
|
@@ -5806,10 +4699,10 @@ const SocialShareButton = ({ platform, url, title, }) => {
|
|
5806
4699
|
const finalShareUrl = shareUrl
|
5807
4700
|
.replace('{url}', encodeURIComponent(url))
|
5808
4701
|
.replace('{title}', encodeURIComponent(title));
|
5809
|
-
return (jsxRuntime.jsx("a", { href: finalShareUrl, target: '_blank', rel: 'noopener noreferrer', className: 'tw
|
4702
|
+
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: {
|
5810
4703
|
color: 'white',
|
5811
4704
|
backgroundColor: bgColor,
|
5812
|
-
}, title: `share link on ${platform}`, children: React.cloneElement(icon, { className: 'tw
|
4705
|
+
}, title: `share link on ${platform}`, children: React.cloneElement(icon, { className: 'tw:w-4 tw:h-4 tw:fill-current' }) }));
|
5813
4706
|
};
|
5814
4707
|
|
5815
4708
|
const SocialShareBar = ({ url, title, platforms = ['facebook', 'twitter', 'linkedin', 'xing', 'email'], }) => {
|
@@ -5825,21 +4718,21 @@ const SocialShareBar = ({ url, title, platforms = ['facebook', 'twitter', 'linke
|
|
5825
4718
|
reactToastify.toast.error('Fehler beim Kopieren des Links: ', error);
|
5826
4719
|
});
|
5827
4720
|
};
|
5828
|
-
return (jsxRuntime.jsxs("div", { className: 'tw
|
4721
|
+
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 tw:hover:cursor-pointer', style: {
|
5829
4722
|
color: 'white',
|
5830
4723
|
backgroundColor: '#444',
|
5831
|
-
}, onClick: () => copyLink(), title: 'share link via email', children: jsxRuntime.jsx("img", { src: ChevronSVG, alt: '\\/', className: 'tw
|
4724
|
+
}, 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 tw:hover:cursor-pointer', style: {
|
5832
4725
|
color: 'white',
|
5833
4726
|
backgroundColor: '#888',
|
5834
|
-
}, onClick: () => copyLink(), title: 'copy Link', children: jsxRuntime.jsx("img", { src: ClipboardSVG, className: 'tw
|
4727
|
+
}, onClick: () => copyLink(), title: 'copy Link', children: jsxRuntime.jsx("img", { src: ClipboardSVG, className: 'tw:w-5' }) }))] }));
|
5835
4728
|
};
|
5836
4729
|
|
5837
|
-
const GroupSubHeaderView = ({ item, shareBaseUrl, platforms, }) => (jsxRuntime.jsxs("div", { className: 'tw
|
4730
|
+
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
|
5838
4731
|
? shareBaseUrl + item.slug
|
5839
4732
|
: window.location.protocol + '//' + window.location.host + '/item/' + item.id, title: item.name, platforms: platforms }) })] }));
|
5840
4733
|
|
5841
4734
|
const ProfileStartEndView = ({ item }) => {
|
5842
|
-
return (jsxRuntime.jsx("div", { className: 'tw
|
4735
|
+
return (jsxRuntime.jsx("div", { className: 'tw:mt-2 tw:px-6 tw:max-w-xs', children: jsxRuntime.jsx(StartEndView, { item: item }) }));
|
5843
4736
|
};
|
5844
4737
|
|
5845
4738
|
const get = (value, path, defaultValue) => {
|
@@ -5863,7 +4756,7 @@ const get = (value, path, defaultValue) => {
|
|
5863
4756
|
const ProfileTextView = ({ item, dataField = 'text', heading, hideWhenEmpty, }) => {
|
5864
4757
|
const text = get(item, dataField);
|
5865
4758
|
const parsedText = typeof text !== 'string' ? '' : text;
|
5866
|
-
return (jsxRuntime.jsxs("div", { className: 'tw
|
4759
|
+
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 }) })] }));
|
5867
4760
|
};
|
5868
4761
|
|
5869
4762
|
const componentMap$1 = {
|
@@ -5877,7 +4770,7 @@ const componentMap$1 = {
|
|
5877
4770
|
const FlexView = ({ item }) => {
|
5878
4771
|
// eslint-disable-next-line no-console
|
5879
4772
|
console.log(item);
|
5880
|
-
return (jsxRuntime.jsx("div", { className: 'tw
|
4773
|
+
return (jsxRuntime.jsx("div", { className: 'tw:h-full tw:overflow-y-auto fade', children: item.layer?.itemType.profileTemplate.map(
|
5881
4774
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
5882
4775
|
(templateItem) => {
|
5883
4776
|
const TemplateComponent = componentMap$1[templateItem.collection];
|
@@ -5886,11 +4779,11 @@ const FlexView = ({ item }) => {
|
|
5886
4779
|
};
|
5887
4780
|
|
5888
4781
|
const OnepagerView = ({ item }) => {
|
5889
|
-
return (jsxRuntime.jsxs("div", { className: 'tw
|
4782
|
+
return (jsxRuntime.jsxs("div", { className: 'tw:h-full tw:overflow-y-auto fade', children: [jsxRuntime.jsx(GroupSubHeaderView, { item: item, shareBaseUrl: `https://www.wuerdekompass.org/aktivitaeten/gruppensuche/#/gruppe/${item.slug}` }), item.user_created?.first_name && jsxRuntime.jsx(ContactInfoView, { heading: 'Du hast Fragen?', item: item }), jsxRuntime.jsx("div", { className: 'tw:my-10 tw:mt-2 tw:px-6 tw:text-sm ', children: jsxRuntime.jsx(TextView, { itemId: item.id, rawText: item.text ?? 'Keine Beschreibung vorhanden' }) }), item.next_appointment && (jsxRuntime.jsxs("div", { className: 'tw:my-10 tw:px-6', children: [jsxRuntime.jsx("h2", { className: 'tw:text-lg tw:font-semibold', children: "N\u00E4chste Termine" }), jsxRuntime.jsx("div", { className: 'tw:mt-2 tw:text-sm', children: jsxRuntime.jsx(TextView, { itemId: item.id, rawText: item.next_appointment }) })] })), ";"] }));
|
5890
4783
|
};
|
5891
4784
|
|
5892
4785
|
const SimpleView = ({ item }) => {
|
5893
|
-
return (jsxRuntime.jsx("div", { className: 'tw
|
4786
|
+
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 }) }));
|
5894
4787
|
};
|
5895
4788
|
|
5896
4789
|
function LinkIcon({
|
@@ -5932,25 +4825,25 @@ function ActionButton({ item, triggerAddButton, triggerItemSelected, existingRel
|
|
5932
4825
|
(getItemTags(item) && getItemTags(item)[0] && getItemTags(item)[0].color
|
5933
4826
|
? getItemTags(item)[0].color
|
5934
4827
|
: item.layer?.markerDefaultColor);
|
5935
|
-
return (jsxRuntime.jsx(jsxRuntime.Fragment, { children: hasUserPermission(collection, 'update', item) && (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsxs("div", { className: `tw
|
4828
|
+
return (jsxRuntime.jsx(jsxRuntime.Fragment, { children: hasUserPermission(collection, 'update', item) && (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsxs("div", { className: `tw:absolute tw:right-4 tw:bottom-4 tw:flex tw:flex-col ${customStyle}`, children: [triggerItemSelected && (jsxRuntime.jsx("button", { tabIndex: 0, className: 'tw:z-500 tw-btn tw-btn-circle tw:shadow', onClick: () => {
|
5936
4829
|
setModalOpen(true);
|
5937
4830
|
}, style: {
|
5938
4831
|
backgroundColor,
|
5939
4832
|
color: '#fff',
|
5940
|
-
}, children: jsxRuntime.jsx(ForwardRef$2, { className: 'tw
|
4833
|
+
}, 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: () => {
|
5941
4834
|
triggerAddButton();
|
5942
4835
|
}, style: {
|
5943
4836
|
backgroundColor,
|
5944
4837
|
color: '#fff',
|
5945
|
-
}, children: jsxRuntime.jsx(ForwardRef$5, { className: 'tw
|
4838
|
+
}, 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 tw:sm: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) => {
|
5946
4839
|
setSearch(val);
|
5947
|
-
} }), jsxRuntime.jsx("div", { className: 'tw
|
4840
|
+
} }), jsxRuntime.jsx("div", { className: 'tw:grid tw:grid-cols-1 tw:sm:grid-cols-2', children: filterdItems
|
5948
4841
|
.filter((item) => {
|
5949
4842
|
return search === ''
|
5950
4843
|
? item
|
5951
4844
|
: item.name.toLowerCase().includes(search.toLowerCase());
|
5952
4845
|
})
|
5953
|
-
.map((i) => (jsxRuntime.jsx("div", { className: 'tw
|
4846
|
+
.map((i) => (jsxRuntime.jsx("div", { className: 'tw:cursor-pointer tw-card tw:border-[1px] tw:border-base-300 tw-card-body tw:shadow-xl tw:bg-base-100 tw:text-base-content tw:mx-4 tw:p-4 tw:mb-4 tw:h-fit', onClick: () => {
|
5954
4847
|
triggerItemSelected(i.id);
|
5955
4848
|
setModalOpen(false);
|
5956
4849
|
}, children: jsxRuntime.jsx(HeaderView, { item: i, hideMenu: true }) }, i.id))) })] })] })) }));
|
@@ -5987,7 +4880,7 @@ function LinkedItemsHeaderView({ item, unlinkCallback, loading, unlinkPermission
|
|
5987
4880
|
const title = item.name;
|
5988
4881
|
const subtitle = item.subname;
|
5989
4882
|
React.useEffect(() => { }, [item]);
|
5990
|
-
return (jsxRuntime.jsx(jsxRuntime.Fragment, { children: jsxRuntime.jsxs("div", { className: 'tw
|
4883
|
+
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' })) }) })) })] })) })] }) }));
|
5991
4884
|
}
|
5992
4885
|
|
5993
4886
|
const TabsView = ({ attestations, item, offers, needs, relations, updatePermission, loading, linkItem, unlinkItem, }) => {
|
@@ -6022,15 +4915,15 @@ const TabsView = ({ attestations, item, offers, needs, relations, updatePermissi
|
|
6022
4915
|
setActiveTab(urlTab ? Number(urlTab) : 1);
|
6023
4916
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
6024
4917
|
}, [location.search]);
|
6025
|
-
return (jsxRuntime.jsxs("div", { role: 'tablist', className: 'tw-tabs tw-tabs-lifted tw
|
4918
|
+
return (jsxRuntime.jsxs("div", { role: 'tablist', className: 'tw-tabs tw-tabs-lifted tw:mt-2 tw:mb-2 tw:px-6', children: [jsxRuntime.jsx("input", { type: 'radio', name: 'my_tabs_2', role: 'tab', className: 'tw-tab tw:font-bold tw:ps-2! tw:pe-2! tw:[--tab-border-color:var(--fallback-bc,oklch(var(--bc)/0.2))]', "aria-label": `${item.layer?.itemType.icon_as_labels && activeTab !== 1 ? '📝' : '📝\u00A0Info'}`, checked: activeTab === 1 && true, onChange: () => updateActiveTab(1) }), jsxRuntime.jsxs("div", { role: 'tabpanel', className: 'tw-tab-content tw:bg-base-100 tw:rounded-box tw:h-[calc(100dvh-280px)] tw:overflow-y-auto fade tw:pt-2 tw:pb-4 tw:mb-4 tw:overflow-x-hidden', children: [item.layer?.itemType.show_start_end && (jsxRuntime.jsx("div", { className: 'tw:max-w-xs', children: jsxRuntime.jsx(StartEndView, { item: item }) })), jsxRuntime.jsx(TextView, { text: item.text, itemId: item.id }), jsxRuntime.jsx("div", { className: 'tw:h-4' }), jsxRuntime.jsx(TextView, { text: item.contact, itemId: item.id })] }), item.layer?.itemType.questlog && (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("input", { type: 'radio', name: 'my_tabs_2', role: 'tab', className: 'tw-tab tw:font-bold tw:ps-2! tw:pe-2! tw:[--tab-border-color:var(--fallback-bc,oklch(var(--bc)/0.2))]', "aria-label": `${item.layer.itemType.icon_as_labels && activeTab !== 2 ? '❤️' : '❤️\u00A0Trust'}`, checked: activeTab === 2 && true, onChange: () => updateActiveTab(2) }), jsxRuntime.jsx("div", { role: 'tabpanel', className: 'tw-tab-content tw:bg-base-100 tw:rounded-box tw:h-[calc(100dvh-280px)] tw:overflow-y-auto fade tw:pt-2 tw:pb-4 tw:mb-4 tw:overflow-x-hidden', children: jsxRuntime.jsx("table", { className: 'sm:tw-table-sm md:tw-table-md', children: jsxRuntime.jsx("tbody", { children: attestations
|
6026
4919
|
.filter((a) => a.to.some((t) => t.directus_users_id === item.user_created?.id))
|
6027
4920
|
.sort((a, b) => new Date(b.date_created).getTime() - new Date(a.date_created).getTime())
|
6028
|
-
.map((a, i) => (jsxRuntime.jsxs("tr", { children: [jsxRuntime.jsx("td", { children: jsxRuntime.jsx("div", { className: `tw
|
4921
|
+
.map((a, i) => (jsxRuntime.jsxs("tr", { children: [jsxRuntime.jsx("td", { children: jsxRuntime.jsx("div", { className: `tw:cursor-pointer tw:text-3xl tw-mask tw-mask-${a.shape} tw:p-3 tw:mr-2 tw:shadow-xl tw-bg-[${a.color}]`, children: a.emoji }) }), jsxRuntime.jsx("td", { children: jsxRuntime.jsx("div", { className: 'tw:mr-2', children: jsxRuntime.jsx("i", { children: a.text }) }) }), jsxRuntime.jsx("td", { children: getUserProfile(a.user_created.id) ? (jsxRuntime.jsx(reactRouterDom.Link, { to: '/item/' + getUserProfile(a.user_created.id)?.id, children: jsxRuntime.jsxs("div", { className: 'flex items-center gap-3', children: [jsxRuntime.jsx("div", { className: 'tw-avatar', children: jsxRuntime.jsx("div", { className: 'tw-mask tw:rounded-full tw:h-8 tw:w-8 tw:mr-2', children: getUserProfile(a.user_created.id)?.image && (jsxRuntime.jsx("img", { src: appState.assetsApi.url +
|
6029
4922
|
getUserProfile(a.user_created.id)?.image, alt: 'Avatar' })) }) }), jsxRuntime.jsxs("div", { children: [jsxRuntime.jsxs("div", { className: 'font-bold', children: [getUserProfile(a.user_created.id)?.name ??
|
6030
|
-
a.user_created.first_name, ' '] }), jsxRuntime.jsx("div", { className: 'tw
|
4923
|
+
a.user_created.first_name, ' '] }), jsxRuntime.jsx("div", { className: 'tw:text-xs opacity-50 tw:text-zinc-500', children: timeAgo(a.date_created) })] })] }) })) : (jsxRuntime.jsxs("div", { children: [jsxRuntime.jsxs("div", { className: 'font-bold', children: [a.user_created.first_name, " "] }), jsxRuntime.jsx("div", { className: 'tw:text-xs opacity-50 tw:text-zinc-500', children: timeAgo(a.date_created) })] })) })] }, i))) }) }) })] })), item.layer?.itemType.offers_and_needs && (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("input", { type: 'radio', name: 'my_tabs_2', role: 'tab', className: `tw-tab tw:font-bold tw:ps-2! tw:pe-2! ${!(item.layer.itemType.icon_as_labels && activeTab !== 3) && 'tw:min-w-[10.4em]'} tw:[--tab-border-color:var(--fallback-bc,oklch(var(--bc)/0.2))]`, "aria-label": `${item.layer.itemType.icon_as_labels && activeTab !== 3 ? '♻️' : '♻️\u00A0Offers & Needs'}`, checked: activeTab === 3 && true, onChange: () => updateActiveTab(3) }), jsxRuntime.jsx("div", { role: 'tabpanel', className: 'tw-tab-content tw:bg-base-100 tw:rounded-box tw:h-[calc(100dvh-268px)] tw:overflow-y-auto fade tw:pt-4 tw:pb-1', children: jsxRuntime.jsx("div", { className: 'tw:h-full', children: jsxRuntime.jsxs("div", { className: 'tw:grid tw:grid-cols-1', children: [offers.length > 0 ? (jsxRuntime.jsxs("div", { className: 'tw:col-span-1', children: [jsxRuntime.jsx("h3", { className: 'tw:-mb-2', children: "Offers" }), jsxRuntime.jsx("div", { className: 'tw:flex tw:flex-wrap tw:mb-4', children: offers.map((o) => (jsxRuntime.jsx(TagView, { tag: o, onClick: () => {
|
6031
4924
|
addFilterTag(o);
|
6032
|
-
} }, o.id))) })] })) : (''), needs.length > 0 ? (jsxRuntime.jsxs("div", { className: 'tw
|
6033
|
-
relations.map((i) => (jsxRuntime.jsxs("div", { className: 'tw
|
4925
|
+
} }, o.id))) })] })) : (''), needs.length > 0 ? (jsxRuntime.jsxs("div", { className: 'tw:col-span-1', children: [jsxRuntime.jsx("h3", { className: 'tw:-mb-2 tw:col-span-1', children: "Needs" }), jsxRuntime.jsx("div", { className: 'tw:flex tw:flex-wrap tw:mb-4', children: needs.map((n) => (jsxRuntime.jsx(TagView, { tag: n, onClick: () => addFilterTag(n) }, n.id))) })] })) : ('')] }) }) })] })), item.layer?.itemType.relations && (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("input", { type: 'radio', name: 'my_tabs_2', role: 'tab', className: 'tw-tab tw:font-bold tw:ps-2! tw:pe-2! tw:[--tab-border-color:var(--fallback-bc,oklch(var(--bc)/0.2))]', "aria-label": `${item.layer.itemType.icon_as_labels && activeTab !== 7 ? '🔗' : '🔗\u00A0Links'}`, checked: activeTab === 7 && true, onChange: () => updateActiveTab(7) }), jsxRuntime.jsx("div", { role: 'tabpanel', className: 'tw-tab-content tw:bg-base-100 tw:rounded-box tw:h-[calc(100dvh-280px)] tw:overflow-y-auto tw:pt-4 tw:pb-1 tw:-mr-4 tw:-mb-4 tw:overflow-x-hidden', children: jsxRuntime.jsx("div", { className: 'tw:h-full', children: jsxRuntime.jsxs("div", { className: 'tw:grid tw:grid-cols-1 tw:sm:grid-cols-2 tw:md:grid-cols-1 tw:lg:grid-cols-1 tw:xl:grid-cols-1 tw:2xl:grid-cols-2 tw:pb-4', children: [relations &&
|
4926
|
+
relations.map((i) => (jsxRuntime.jsxs("div", { className: 'tw:cursor-pointer tw-card tw:bg-base-200 tw:border-[1px] tw:border-base-300 tw-card-body tw:shadow-xl tw:text-base-content tw:p-6 tw:mr-4 tw:mb-4', onClick: () => navigate('/item/' + i.id), children: [jsxRuntime.jsx(LinkedItemsHeaderView, { unlinkPermission: updatePermission, item: i, unlinkCallback: unlinkItem, loading: loading }), jsxRuntime.jsx("div", { className: 'tw:overflow-y-auto tw:overflow-x-hidden tw:max-h-64 fade', children: jsxRuntime.jsx(TextView, { truncate: true, text: i.text, itemId: item.id }) })] }, i.id))), updatePermission && (jsxRuntime.jsx(ActionButton, { collection: 'items', item: item, existingRelations: relations, triggerItemSelected: linkItem }))] }) }) })] }))] }));
|
6034
4927
|
};
|
6035
4928
|
|
6036
4929
|
/**
|
@@ -6156,7 +5049,7 @@ function ProfileView({ attestationApi }) {
|
|
6156
5049
|
setTemplate(userLayer.itemType.template);
|
6157
5050
|
}
|
6158
5051
|
}, [item, layers]);
|
6159
|
-
return (jsxRuntime.jsx(jsxRuntime.Fragment, { children: item && (jsxRuntime.jsx(MapOverlayPage, { className:
|
5052
|
+
return (jsxRuntime.jsx(jsxRuntime.Fragment, { children: item && (jsxRuntime.jsx(MapOverlayPage, { className: `tw:p-0! tw:mx-4 tw:mt-4 tw:mb-4 tw:md:w-[calc(50%-32px)] tw:w-[calc(100%-32px)] tw:min-w-80 tw:max-w-3xl tw:left-0! tw:sm: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: () => {
|
6160
5053
|
map.closePopup();
|
6161
5054
|
setSelectPosition(item);
|
6162
5055
|
navigate('/');
|
@@ -6284,7 +5177,7 @@ const AvatarWidget = ({ avatar, setAvatar }) => {
|
|
6284
5177
|
const asset = await appState.assetsApi.upload(resizedBlob, 'avatar');
|
6285
5178
|
setAvatar(asset.id);
|
6286
5179
|
}, [appState.assetsApi, setAvatar]);
|
6287
|
-
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
|
5180
|
+
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: () => {
|
6288
5181
|
setCropModalOpen(false);
|
6289
5182
|
setImage('');
|
6290
5183
|
}, 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: () => {
|
@@ -6347,30 +5240,30 @@ const ColorPicker = ({ color, onChange, className }) => {
|
|
6347
5240
|
});
|
6348
5241
|
}
|
6349
5242
|
}, []);
|
6350
|
-
return (jsxRuntime.jsxs("div", { ref: colorPickerRef, className: `picker ${className}`, children: [jsxRuntime.jsx("div", { className: 'swatch', style: { backgroundColor: color }, onClick: () => toggle(true) }), isOpen && (jsxRuntime.jsx("div", { className: 'popover tw
|
5243
|
+
return (jsxRuntime.jsxs("div", { ref: colorPickerRef, className: `picker ${className}`, children: [jsxRuntime.jsx("div", { className: 'swatch', style: { backgroundColor: color }, onClick: () => toggle(true) }), isOpen && (jsxRuntime.jsx("div", { className: 'popover tw:z-10000', ref: popover, children: jsxRuntime.jsx(reactColorful.HexColorPicker, { color: color, onChange: onChange, onClick: () => toggle(false) }) }))] }));
|
6351
5244
|
};
|
6352
5245
|
|
6353
5246
|
const FormHeader = ({ item, state, setState }) => {
|
6354
|
-
return (jsxRuntime.jsxs("div", { className: 'tw
|
5247
|
+
return (jsxRuntime.jsxs("div", { className: 'tw:flex', children: [jsxRuntime.jsx(AvatarWidget, { avatar: state.image, setAvatar: (i) => setState((prevState) => ({
|
6355
5248
|
...prevState,
|
6356
5249
|
image: i,
|
6357
5250
|
})) }), jsxRuntime.jsx(ColorPicker, { color: state.color, onChange: (c) => setState((prevState) => ({
|
6358
5251
|
...prevState,
|
6359
5252
|
color: c,
|
6360
|
-
})), className: '
|
5253
|
+
})), className: 'tw:-left-6 tw:top-14 tw:-mr-6' }), jsxRuntime.jsxs("div", { className: 'tw:grow tw:mr-4', children: [jsxRuntime.jsx(TextInput, { placeholder: 'Name', defaultValue: item?.name ? item.name : '', updateFormValue: (v) => setState((prevState) => ({
|
6361
5254
|
...prevState,
|
6362
5255
|
name: v,
|
6363
|
-
})), containerStyle: 'tw
|
5256
|
+
})), containerStyle: 'tw:grow tw-input-md' }), jsxRuntime.jsx(TextInput, { placeholder: 'Subtitle', required: false, defaultValue: item?.subname ? item.subname : '', updateFormValue: (v) => setState((prevState) => ({
|
6364
5257
|
...prevState,
|
6365
5258
|
subname: v,
|
6366
|
-
})), containerStyle: 'tw
|
5259
|
+
})), containerStyle: 'tw:grow tw-input-sm tw:px-4 tw:mt-1' })] })] }));
|
6367
5260
|
};
|
6368
5261
|
|
6369
5262
|
const ContactInfoForm = ({ state, setState, }) => {
|
6370
|
-
return (jsxRuntime.jsxs("div", { className: 'tw
|
5263
|
+
return (jsxRuntime.jsxs("div", { className: 'tw:mt-4 tw:space-y-4', children: [jsxRuntime.jsxs("div", { children: [jsxRuntime.jsx("label", { htmlFor: 'email', className: 'tw:block tw:text-sm tw:font-medium tw:text-gray-500 tw:mb-1', children: "Email-Adresse (Kontakt):" }), jsxRuntime.jsx(TextInput, { placeholder: 'Email', type: 'email', required: false, defaultValue: state.contact, updateFormValue: (v) => setState((prevState) => ({
|
6371
5264
|
...prevState,
|
6372
5265
|
contact: v,
|
6373
|
-
})) })] }), jsxRuntime.jsxs("div", { children: [jsxRuntime.jsx("label", { htmlFor: 'telephone', className: 'tw
|
5266
|
+
})) })] }), jsxRuntime.jsxs("div", { children: [jsxRuntime.jsx("label", { htmlFor: 'telephone', className: 'tw:block tw:text-sm tw:font-medium tw:text-gray-500 tw:mb-1', children: "Telefonnummer (Kontakt):" }), jsxRuntime.jsx(TextInput, { placeholder: 'Telefonnummer', type: 'tel', required: false, pattern: '^\\+?[0-9\\s\\-]{7,15}$', defaultValue: state.telephone, updateFormValue: (v) => setState((prevState) => ({
|
6374
5267
|
...prevState,
|
6375
5268
|
telephone: v,
|
6376
5269
|
})) })] })] }));
|
@@ -6381,7 +5274,7 @@ const ComboBoxInput = ({ id, options, value, onValueChange }) => {
|
|
6381
5274
|
const value = e.target.value;
|
6382
5275
|
onValueChange(value);
|
6383
5276
|
};
|
6384
|
-
return (jsxRuntime.jsx("select", { id: id, className: 'tw-form-select tw
|
5277
|
+
return (jsxRuntime.jsx("select", { id: id, className: 'tw-form-select tw:block tw:w-full tw:py-2 tw:px-4 tw:border tw:border-gray-300 rounded-md tw:shadow-sm tw:text-sm tw:focus:outline-hidden tw:focus:ring-indigo-500 tw:focus:border-indigo-500 tw:sm:text-sm', onChange: handleChange, defaultValue: value, children: options.map((o) => (jsxRuntime.jsx("option", { value: o, children: o }, o))) }));
|
6385
5278
|
};
|
6386
5279
|
|
6387
5280
|
const GroupSubheaderForm = ({ state, setState, groupStates, groupTypes, }) => {
|
@@ -6402,10 +5295,10 @@ const GroupSubheaderForm = ({ state, setState, groupStates, groupTypes, }) => {
|
|
6402
5295
|
}
|
6403
5296
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
6404
5297
|
}, [state.group_type, groupTypes]);
|
6405
|
-
return (jsxRuntime.jsxs("div", { className: 'tw
|
5298
|
+
return (jsxRuntime.jsxs("div", { className: 'tw:grid tw:grid-cols-1 tw:md:grid-cols-2 tw:gap-6', children: [jsxRuntime.jsxs("div", { children: [jsxRuntime.jsx("label", { htmlFor: 'status', className: 'tw:block tw:text-sm tw:font-medium tw:text-gray-500 tw:mb-1', children: "Gruppenstatus:" }), jsxRuntime.jsx(ComboBoxInput, { id: 'status', options: groupStates || [], value: state.status, onValueChange: (v) => setState((prevState) => ({
|
6406
5299
|
...prevState,
|
6407
5300
|
status: v,
|
6408
|
-
})) })] }), jsxRuntime.jsxs("div", { children: [jsxRuntime.jsx("label", { htmlFor: 'groupType', className: 'tw
|
5301
|
+
})) })] }), jsxRuntime.jsxs("div", { children: [jsxRuntime.jsx("label", { htmlFor: 'groupType', className: 'tw:block tw:text-sm tw:font-medium tw:text-gray-500 tw:mb-1', children: "Gruppenart:" }), jsxRuntime.jsx(ComboBoxInput, { id: 'groupType', options: groupTypes?.map((gt) => gt.groupTypes_id.name) || [], value: state.group_type, onValueChange: (v) => setState((prevState) => ({
|
6409
5302
|
...prevState,
|
6410
5303
|
group_type: v,
|
6411
5304
|
})) })] })] }));
|
@@ -6425,7 +5318,7 @@ var MarkdownSVG = 'data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9J2h0dHA6Ly93d3cudzM
|
|
6425
5318
|
|
6426
5319
|
const MarkdownHint = () => {
|
6427
5320
|
const [expended, setExpended] = React.useState(false);
|
6428
|
-
return (jsxRuntime.jsxs("div", { onClick: () => setExpended(true), title: 'Markdown is supported', className: 'flex tw
|
5321
|
+
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" }), ' '] }))] }));
|
6429
5322
|
};
|
6430
5323
|
|
6431
5324
|
const ProfileTextForm = ({ state, setState,
|
@@ -6437,12 +5330,12 @@ dataField, heading, size, hideInputLabel, required, }) => {
|
|
6437
5330
|
setField('text');
|
6438
5331
|
}
|
6439
5332
|
}, [dataField]);
|
6440
|
-
return (jsxRuntime.jsxs("div", { className: 'tw
|
5333
|
+
return (jsxRuntime.jsxs("div", { className: 'tw:h-full tw:flex tw:flex-col tw:mt-4', children: [jsxRuntime.jsxs("div", { className: 'tw:flex tw:justify-between tw:items-center', children: [jsxRuntime.jsxs("label", { htmlFor: 'nextAppointment', className: 'tw:block tw:text-sm tw:font-medium tw:text-gray-500 tw:mb-1', children: [heading || 'Text', ":"] }), jsxRuntime.jsx(MarkdownHint, {})] }), jsxRuntime.jsx(TextAreaInput, { placeholder: '...',
|
6441
5334
|
// eslint-disable-next-line security/detect-object-injection
|
6442
5335
|
defaultValue: state[field], updateFormValue: (v) => setState((prevState) => ({
|
6443
5336
|
...prevState,
|
6444
5337
|
[field]: v,
|
6445
|
-
})), labelStyle: hideInputLabel ? 'tw
|
5338
|
+
})), labelStyle: hideInputLabel ? 'tw:hidden' : '', containerStyle: size === 'full' ? 'tw:grow tw:h-full' : '', inputStyle: size === 'full' ? 'tw:h-full' : 'tw:h-24', required: required })] }));
|
6446
5339
|
};
|
6447
5340
|
|
6448
5341
|
const componentMap = {
|
@@ -6453,17 +5346,17 @@ const componentMap = {
|
|
6453
5346
|
// weitere Komponenten hier
|
6454
5347
|
};
|
6455
5348
|
const FlexForm = ({ item, state, setState, }) => {
|
6456
|
-
return (jsxRuntime.jsx("div", { className: 'tw
|
5349
|
+
return (jsxRuntime.jsx("div", { className: 'tw:mt-6 tw:flex tw:flex-col tw:h-full', children: item.layer?.itemType.profileTemplate.map((templateItem) => {
|
6457
5350
|
const TemplateComponent = componentMap[templateItem.collection];
|
6458
5351
|
return TemplateComponent ? (jsxRuntime.jsx(TemplateComponent, { state: state, setState: setState, item: item, ...templateItem.item }, templateItem.id)) : (jsxRuntime.jsx("div", { children: "Component not found" }, templateItem.id));
|
6459
5352
|
}) }));
|
6460
5353
|
};
|
6461
5354
|
|
6462
5355
|
const OnepagerForm = ({ item, state, setState, }) => {
|
6463
|
-
return (jsxRuntime.jsxs("div", { className: 'tw
|
5356
|
+
return (jsxRuntime.jsxs("div", { className: 'tw:space-y-6 tw:mt-6', children: [jsxRuntime.jsx(GroupSubheaderForm, { state: state, setState: setState, item: item }), jsxRuntime.jsx(ContactInfoForm, { state: state, setState: setState }), jsxRuntime.jsxs("div", { children: [jsxRuntime.jsx("label", { htmlFor: 'description', className: 'tw:block tw:text-sm tw:font-medium tw:text-gray-500 tw:mb-1', children: "Gruppenbeschreibung:" }), jsxRuntime.jsx(TextAreaInput, { placeholder: 'Beschreibung', defaultValue: state.text || '', updateFormValue: (v) => setState((prevState) => ({
|
6464
5357
|
...prevState,
|
6465
5358
|
text: v,
|
6466
|
-
})), inputStyle: 'tw
|
5359
|
+
})), inputStyle: 'tw:h-48' })] })] }));
|
6467
5360
|
};
|
6468
5361
|
|
6469
5362
|
// eslint-disable-next-line react/prop-types
|
@@ -6473,7 +5366,7 @@ const SimpleForm = ({ state, setState }) => {
|
|
6473
5366
|
defaultValue: state?.text || '', updateFormValue: (v) => setState((prevState) => ({
|
6474
5367
|
...prevState,
|
6475
5368
|
text: v,
|
6476
|
-
})), containerStyle: 'tw
|
5369
|
+
})), containerStyle: 'tw:mt-8 tw:h-full', inputStyle: 'tw:h-full' }));
|
6477
5370
|
};
|
6478
5371
|
|
6479
5372
|
const Autocomplete = ({ inputProps, suggestions, onSelected, pushFilteredSuggestions, setFocus, }) => {
|
@@ -6525,7 +5418,7 @@ const Autocomplete = ({ inputProps, suggestions, onSelected, pushFilteredSuggest
|
|
6525
5418
|
break;
|
6526
5419
|
}
|
6527
5420
|
};
|
6528
|
-
return (jsxRuntime.jsxs("div", { children: [jsxRuntime.jsx("input", { ref: inputRef, ...inputProps, type: 'text', onChange: (e) => handleChange(e), tabIndex: '-1', onKeyDown: handleKeyDown }), jsxRuntime.jsx("ul", { className: `tw
|
5421
|
+
return (jsxRuntime.jsxs("div", { children: [jsxRuntime.jsx("input", { ref: inputRef, ...inputProps, type: 'text', onChange: (e) => handleChange(e), tabIndex: '-1', onKeyDown: handleKeyDown }), jsxRuntime.jsx("ul", { className: `tw:absolute tw:z-4000 ${filteredSuggestions.length > 0 && 'tw:bg-base-100 tw:rounded-xl tw:p-2'}`, children: filteredSuggestions.map((suggestion, index) => (jsxRuntime.jsx("li", { onClick: () => handleSuggestionClick(suggestion), children: jsxRuntime.jsx(TagView, { heighlight: index === heighlightedSuggestion, tag: suggestion }) }, index))) })] }));
|
6529
5422
|
};
|
6530
5423
|
|
6531
5424
|
// eslint-disable-next-line react/prop-types
|
@@ -6597,7 +5490,7 @@ const TagsWidget = ({ placeholder, containerStyle, defaultTags, onUpdate }) => {
|
|
6597
5490
|
onKeyDown,
|
6598
5491
|
onKeyUp,
|
6599
5492
|
onChange,
|
6600
|
-
className: 'tw
|
5493
|
+
className: 'tw:bg-transparent tw:w-fit tw:mt-5 tw:h-fit',
|
6601
5494
|
};
|
6602
5495
|
/* eslint-disable react/prop-types */
|
6603
5496
|
return (jsxRuntime.jsx("div", { onClick: () => {
|
@@ -6605,7 +5498,7 @@ const TagsWidget = ({ placeholder, containerStyle, defaultTags, onUpdate }) => {
|
|
6605
5498
|
setTimeout(() => {
|
6606
5499
|
setFocusInput(false);
|
6607
5500
|
}, 200);
|
6608
|
-
}, className: `tw-input tw-input-bordered tw
|
5501
|
+
}, className: `tw-input tw-input-bordered tw:cursor-text ${containerStyle}`, children: jsxRuntime.jsxs("div", { className: 'tw:flex tw:flex-wrap tw:h-fit', children: [defaultTags.map((tag) => (jsxRuntime.jsxs("div", { className: 'tw:rounded-2xl tw:text-white tw:p-2 tw:px-4 tw:shadow-xl tw-card tw:mt-3 tw:mr-4', style: { backgroundColor: tag.color ? tag.color : '#666' }, children: [jsxRuntime.jsx("div", { className: 'tw-card-actions tw:justify-end', children: jsxRuntime.jsx("label", { className: 'tw-btn tw-btn-xs tw-btn-circle tw:absolute tw:-right-2 tw:-top-2 tw:bg-white tw:text-gray-600', onClick: () => deleteTag(tag), children: "\u2715" }) }), jsxRuntime.jsx("b", { children: decodeTag(tag.name) })] }, tag.name))), jsxRuntime.jsx(Autocomplete, { suggestions: tags, pushFilteredSuggestions: pushFilteredSuggestions, setFocus: focusInput, inputProps: inputProps, onSelected: (tag) => onSelected(tag) })] }) }));
|
6609
5502
|
/* eslint-enable react/prop-types */
|
6610
5503
|
};
|
6611
5504
|
|
@@ -6629,7 +5522,7 @@ const TabsForm = ({ item, state, setState, updatePermission, linkItem, unlinkIte
|
|
6629
5522
|
setActiveTab(urlTab ? Number(urlTab) : 1);
|
6630
5523
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
6631
5524
|
}, [location.search]);
|
6632
|
-
return (jsxRuntime.jsxs("div", { role: 'tablist', className: 'tw-tabs tw-tabs-lifted tw
|
5525
|
+
return (jsxRuntime.jsxs("div", { role: 'tablist', className: 'tw-tabs tw-tabs-lifted tw:mt-3', children: [jsxRuntime.jsx("input", { type: 'radio', name: 'my_tabs_2', role: 'tab', className: 'tw-tab tw:[--tab-border-color:var(--fallback-bc,oklch(var(--bc)/0.2))]', "aria-label": 'Info', checked: activeTab === 1 && true, onChange: () => updateActiveTab(1) }), jsxRuntime.jsx("div", { role: 'tabpanel', className: 'tw-tab-content tw:bg-base-100 tw:border-(--fallback-bc,oklch(var(--bc)/0.2)) tw:rounded-box tw:h-[calc(100dvh-332px)] tw:min-h-56 tw:border-none', children: jsxRuntime.jsxs("div", { className: `tw:flex tw:flex-col tw:h-full ${item.layer.itemType.show_start_end_input && 'tw:pt-4'}`, children: [item.layer.itemType.show_start_end_input && (jsxRuntime.jsx(PopupStartEndInput, { item: item, showLabels: false, updateEndValue: (e) => setState((prevState) => ({
|
6633
5526
|
...prevState,
|
6634
5527
|
end: e,
|
6635
5528
|
})), updateStartValue: (s) => setState((prevState) => ({
|
@@ -6638,17 +5531,17 @@ const TabsForm = ({ item, state, setState, updatePermission, linkItem, unlinkIte
|
|
6638
5531
|
})) })), jsxRuntime.jsx(TextAreaInput, { placeholder: 'about ...', defaultValue: item?.text ? item.text : '', updateFormValue: (v) => setState((prevState) => ({
|
6639
5532
|
...prevState,
|
6640
5533
|
text: v,
|
6641
|
-
})), containerStyle: 'tw
|
5534
|
+
})), containerStyle: 'tw:grow', inputStyle: `tw:h-full ${!item.layer.itemType.show_start_end_input && 'tw:border-t-0 tw:rounded-tl-none'}` }), jsxRuntime.jsx("div", { children: jsxRuntime.jsx(TextAreaInput, { placeholder: 'contact info ...', defaultValue: state.contact || '', updateFormValue: (c) => setState((prevState) => ({
|
6642
5535
|
...prevState,
|
6643
5536
|
contact: c,
|
6644
|
-
})), inputStyle: 'tw
|
5537
|
+
})), inputStyle: 'tw:h-24', containerStyle: 'tw:pt-4', required: false }) })] }) }), item.layer?.itemType.offers_and_needs && (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("input", { type: 'radio', name: 'my_tabs_2', role: 'tab', className: 'tw-tab tw:min-w-[10em] tw:[--tab-border-color:var(--fallback-bc,oklch(var(--bc)/0.2))]', "aria-label": 'Offers & Needs', checked: activeTab === 3 && true, onChange: () => updateActiveTab(3) }), jsxRuntime.jsx("div", { role: 'tabpanel', className: 'tw-tab-content tw:bg-base-100 tw:border-(--fallback-bc,oklch(var(--bc)/0.2)) tw:rounded-box tw:h-[calc(100dvh-332px)] tw:min-h-56 tw:border-none', children: jsxRuntime.jsxs("div", { className: 'tw:h-full', children: [jsxRuntime.jsx("div", { className: 'tw:w-full tw:h-[calc(50%-0.75em)] tw:mb-4', children: jsxRuntime.jsx(TagsWidget, { defaultTags: state.offers, onUpdate: (v) => setState((prevState) => ({
|
6645
5538
|
...prevState,
|
6646
5539
|
offers: v,
|
6647
|
-
})), placeholder: 'enter your offers', containerStyle: 'tw
|
5540
|
+
})), placeholder: 'enter your offers', containerStyle: 'tw:bg-transparent tw:w-full tw:h-full tw:mt-3 tw:text-xs tw:h-[calc(100%-1rem)] tw:min-h-[5em] tw:pb-2 tw:overflow-auto' }) }), jsxRuntime.jsx("div", { className: 'tw:w-full tw:h-[calc(50%-1.5em)]', children: jsxRuntime.jsx(TagsWidget, { defaultTags: state.needs, onUpdate: (v) => setState((prevState) => ({
|
6648
5541
|
...prevState,
|
6649
5542
|
needs: v,
|
6650
|
-
})), placeholder: 'enter your needs', containerStyle: 'tw
|
6651
|
-
state.relations.map((i) => (jsxRuntime.jsxs("div", { className: 'tw
|
5543
|
+
})), placeholder: 'enter your needs', containerStyle: 'tw:bg-transparent tw:w-full tw:h-full tw:mt-3 tw:text-xs tw:h-[calc(100%-1rem)] tw:min-h-[5em] tw:pb-2 tw:overflow-auto' }) })] }) })] })), item.layer?.itemType.relations && (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("input", { type: 'radio', name: 'my_tabs_2', role: 'tab', className: 'tw-tab tw:[--tab-border-color:var(--fallback-bc,oklch(var(--bc)/0.2))]', "aria-label": 'Links', checked: activeTab === 7 && true, onChange: () => updateActiveTab(7) }), jsxRuntime.jsx("div", { role: 'tabpanel', className: 'tw-tab-content tw:bg-base-100 tw:rounded-box tw:h-[calc(100dvh-332px)] tw:overflow-y-auto tw:pt-4 tw:pb-1 tw:-mx-4 tw:overflow-x-hidden fade', children: jsxRuntime.jsx("div", { className: 'tw:h-full', children: jsxRuntime.jsxs("div", { className: 'tw:grid tw:grid-cols-1 tw:sm:grid-cols-2 tw:md:grid-cols-1 tw:lg:grid-cols-1 tw:xl:grid-cols-1 tw:2xl:grid-cols-2 tw:mb-4', children: [state.relations &&
|
5544
|
+
state.relations.map((i) => (jsxRuntime.jsxs("div", { className: 'tw:cursor-pointer tw-card tw:bg-base-200 tw:border-[1px] tw:border-base-300 tw-card-body tw:shadow-xl tw:text-base-content tw:mx-4 tw:p-6 tw:mb-4', onClick: () => navigate('/item/' + i.id), children: [jsxRuntime.jsx(LinkedItemsHeaderView, { unlinkPermission: updatePermission, item: i, unlinkCallback: (id) => unlinkItem(id, item, updateItem), loading: loading }), jsxRuntime.jsx("div", { className: 'tw:overflow-y-auto tw:overflow-x-hidden tw:max-h-64 fade', children: jsxRuntime.jsx(TextView, { truncate: true, itemId: item.id }) })] }, i.id))), updatePermission && (jsxRuntime.jsx(ActionButton, { customStyle: 'tw:bottom-24!', collection: 'items', item: item, existingRelations: state.relations, triggerItemSelected: (id) => linkItem(id, item, updateItem) }))] }) }) })] }))] }));
|
6652
5545
|
};
|
6653
5546
|
|
6654
5547
|
/**
|
@@ -6769,10 +5662,10 @@ function ProfileForm() {
|
|
6769
5662
|
setTemplate(userLayer.itemType.template);
|
6770
5663
|
}
|
6771
5664
|
}, [item, layers]);
|
6772
|
-
return (jsxRuntime.jsx(jsxRuntime.Fragment, { children: jsxRuntime.jsx(MapOverlayPage, { backdrop: true, className: 'tw
|
5665
|
+
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)] tw:md: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) => {
|
6773
5666
|
e.preventDefault();
|
6774
5667
|
void onUpdateItem(state, item, tags, addTag, setLoading, navigate, updateItem, addItem, user, urlParams);
|
6775
|
-
}, children: jsxRuntime.jsxs("div", { className: 'tw
|
5668
|
+
}, children: jsxRuntime.jsxs("div", { className: 'tw:flex tw:flex-col tw:h-full', children: [jsxRuntime.jsx(FormHeader, { item: item, state: state, setState: setState }), template === 'onepager' && (jsxRuntime.jsx(OnepagerForm, { item: item, state: state, setState: setState })), template === 'simple' && jsxRuntime.jsx(SimpleForm, { state: state, setState: setState }), template === 'flex' && (jsxRuntime.jsx(FlexForm, { item: item, state: state, setState: setState })), template === 'tabs' && (jsxRuntime.jsx(TabsForm, { loading: loading, item: item, state: state, setState: setState, updatePermission: updatePermission, linkItem: (id) => linkItem(id, item, updateItem), unlinkItem: (id) => unlinkItem(id, item, updateItem), setUrlParams: setUrlParams })), jsxRuntime.jsx("div", { className: 'tw:mt-4', children: jsxRuntime.jsx("button", { className: loading ? ' tw-loading tw-btn tw:float-right' : 'tw-btn tw:float-right', type: 'submit', style: {
|
6776
5669
|
// We could refactor this, it is used several times at different locations
|
6777
5670
|
backgroundColor: `${item.color ?? (getItemTags(item) && getItemTags(item)[0] && getItemTags(item)[0].color ? getItemTags(item)[0].color : item?.layer?.markerDefaultColor)}`,
|
6778
5671
|
color: '#fff',
|
@@ -6789,7 +5682,7 @@ function Modal({ children, showOnStartup, }) {
|
|
6789
5682
|
}
|
6790
5683
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
6791
5684
|
}, []);
|
6792
|
-
return (jsxRuntime.jsx(jsxRuntime.Fragment, { children: jsxRuntime.jsxs("dialog", { id: 'my_modal_3', className: 'tw-modal tw
|
5685
|
+
return (jsxRuntime.jsx(jsxRuntime.Fragment, { children: jsxRuntime.jsxs("dialog", { id: 'my_modal_3', className: 'tw-modal tw:transition-all tw:duration-300', children: [jsxRuntime.jsxs("form", { method: 'dialog', className: 'tw-modal-box tw:transition-none', children: [jsxRuntime.jsx("button", { className: 'tw-btn tw-btn-sm tw-btn-circle tw-btn-ghost tw:absolute tw:right-2 tw:top-2 tw:focus:outline-hidden', children: "\u2715" }), children] }), jsxRuntime.jsx("form", { method: 'dialog', className: 'tw-modal-backdrop', children: jsxRuntime.jsx("button", { children: "close" }) })] }) }));
|
6793
5686
|
}
|
6794
5687
|
|
6795
5688
|
/**
|
@@ -6810,9 +5703,10 @@ function Quests() {
|
|
6810
5703
|
i.layer?.userProfileLayer &&
|
6811
5704
|
i.user_created?.id != null));
|
6812
5705
|
}, [items, user]);
|
6813
|
-
return (jsxRuntime.jsx(jsxRuntime.Fragment, { children: questsOpen ? (jsxRuntime.jsx("div", { className: 'tw-card tw
|
5706
|
+
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" })] }) })] }), ' '] }) })) : ('') }));
|
6814
5707
|
}
|
6815
5708
|
|
5709
|
+
exports.SVG = SVG;
|
6816
5710
|
exports.AppShell = AppShell;
|
6817
5711
|
exports.AttestationForm = AttestationForm;
|
6818
5712
|
exports.AuthProvider = AuthProvider;
|
@@ -6836,7 +5730,6 @@ exports.ProfileForm = ProfileForm;
|
|
6836
5730
|
exports.ProfileView = ProfileView;
|
6837
5731
|
exports.Quests = Quests;
|
6838
5732
|
exports.RequestPasswordPage = RequestPasswordPage;
|
6839
|
-
exports.SVG = InlineSVG;
|
6840
5733
|
exports.SelectUser = SelectUser;
|
6841
5734
|
exports.SetNewPasswordPage = SetNewPasswordPage;
|
6842
5735
|
exports.SideBar = SideBar;
|