1import { 2 og_image_default 3} from "/build/_shared/chunk-6WU5M7Q7.js"; 4import { 5 useMatchesData 6} from "/build/_shared/chunk-UHQDUM2S.js"; 7import { 8 require_config 9} from "/build/_shared/chunk-AROMJ2TK.js"; 10import { 11 CookiesBanner, 12 ExposeAppConfig, 13 NavigationFlyoutMenu, 14 NavigationFlyoutMobileMenu, 15 Rt, 16 ThemenBox_default, 17 bg_dot_pattern_lightgray_default, 18 icon_event_default, 19 icon_fachbeitraege_default, 20 icon_media_default, 21 slide_over_dialog_default, 22 themenCards 23} from "/build/_shared/chunk-LTL4HYOU.js"; 24import { 25 Ke 26} from "/build/_shared/chunk-EY65NO2V.js"; 27import { 28 Ie, 29 _t 30} from "/build/_shared/chunk-C3KA4SO6.js"; 31import { 32 logomain_default 33} from "/build/_shared/chunk-XYPXCSVK.js"; 34import { 35 ArrowUpOnSquareIcon_default, 36 ErrorBoundary, 37 FavoriteListCard, 38 ListItem, 39 MagnifyingGlassIcon_default, 40 StarIcon_default, 41 XMarkIcon_default, 42 default_default, 43 es_default, 44 hero_dot_bg_default, 45 search_box_default, 46 search_box_header_default 47} from "/build/_shared/chunk-Y6OIBGDA.js"; 48import { 49 Bars3Icon_default, 50 GetScreenSize, 51 class_names_default, 52 copy_to_clipboard_default, 53 get_client_side_config_default, 54 to_safe_path_segment_default 55} from "/build/_shared/chunk-P4WFY3UR.js"; 56import "/build/_shared/chunk-VIU3M2OR.js"; 57import { 58 Link, 59 Links, 60 LiveReload, 61 Meta, 62 Outlet, 63 Scripts, 64 init_esm, 65 useBeforeUnload, 66 useCatch, 67 useFetcher, 68 useLoaderData, 69 useLocation, 70 useMatches, 71 useNavigate, 72 useParams, 73 useTransition 74} from "/build/_shared/chunk-46RNFGVL.js"; 75import { 76 React, 77 __toESM, 78 init_react, 79 require_react 80} from "/build/_shared/chunk-BNRLY3XL.js"; 81 82// browser-route-module:root.tsx?browser 83init_react(); 84
85// app/root.tsx 86init_react(); 87init_esm(); 88var import_react16 = __toESM(require_react()); 89
90// app/hooks/use_scroll_restration.tsx 91init_react(); 92var React2 = __toESM(require_react()); 93init_esm(); 94var STORAGE_KEY = "positions"; 95var positions = {}; 96if (typeof document !== "undefined") { 97 let sessionPositions = sessionStorage.getItem(STORAGE_KEY); 98 if (sessionPositions) { 99 positions = JSON.parse(sessionPositions); 100 } 101} 102function ScrollRestoration({ nonce = void 0 }) { 103 useScrollRestoration(); 104 React2.useEffect(() => { 105 window.history.scrollRestoration = "manual"; 106 }, []); 107 useBeforeUnload(React2.useCallback(() => { 108 window.history.scrollRestoration = "auto"; 109 }, [])); 110 let restoreScroll = ((STORAGE_KEY2) => { 111 if (!window.history.state || !window.history.state.key) { 112 let key = Math.random().toString(32).slice(2); 113 window.history.replaceState({ key }, ""); 114 } 115 try { 116 let positions2 = JSON.parse(sessionStorage.getItem(STORAGE_KEY2) || "{}"); 117 let storedY = positions2[window.history.state.key]; 118 if (typeof storedY === "number") { 119 window.scrollTo(0, storedY); 120 } 121 } catch (error) { 122 console.error(error); 123 sessionStorage.removeItem(STORAGE_KEY2); 124 } 125 }).toString(); 126 return /* @__PURE__ */ React2.createElement("script", { 127 nonce, 128 suppressHydrationWarning: true, 129 dangerouslySetInnerHTML: { 130 __html: `(${restoreScroll})(${JSON.stringify(STORAGE_KEY)})` 131 } 132 }); 133} 134var hydrated = false; 135function useScrollRestoration() { 136 let location = useLocation(); 137 let transition = useTransition(); 138 let wasSubmissionRef = React2.useRef(false); 139 React2.useEffect(() => { 140 if (transition.submission) { 141 wasSubmissionRef.current = true; 142 } 143 }, [transition]); 144 React2.useEffect(() => { 145 if (transition.location) { 146 positions[location.key] = window.scrollY; 147 } 148 }, [transition, location]); 149 useBeforeUnload(React2.useCallback(() => { 150 sessionStorage.setItem(STORAGE_KEY, JSON.stringify(positions)); 151 }, [])); 152 if (typeof document !== "undefined") { 153 React2.useLayoutEffect(() => { 154 if (!hydrated) { 155 hydrated = true; 156 return; 157 } 158 let y = positions[location.key]; 159 if (y != void 0) { 160 window.scrollTo({ 161 top: y, 162 left: 0, 163 behavior: "smooth" 164 }); 165 return; 166 } 167 if (location.hash) { 168 let el = document.getElementById(location.hash.slice(1)); 169 if (el) { 170 el.scrollIntoView(); 171 return; 172 } 173 } 174 if (wasSubmissionRef.current === true) { 175 wasSubmissionRef.current = false; 176 return; 177 } 178 if (location.state && typeof location.state === "object" && location.state.scroll === false) { 179 return; 180 } 181 window.scrollTo(0, 0); 182 }, [location]); 183 } 184 React2.useEffect(() => { 185 if (transition.submission) { 186 wasSubmissionRef.current = true; 187 } 188 }, [transition]); 189} 190
191// app/layout/index.tsx 192init_react(); 193var import_react11 = __toESM(require_react()); 194init_esm(); 195
196// app/layout/header.tsx 197init_react(); 198var import_react4 = __toESM(require_react()); 199init_esm(); 200
201// app/assets/images/img-hero-start.png 202var img_hero_start_default = "/build/_assets/img-hero-start-NYOZF2K4.png"; 203
204// app/layout/favorite_list.tsx 205init_react(); 206var import_react2 = __toESM(require_react()); 207init_esm(); 208var FavoriteList = ({ 209 setFavOpen 210}) => { 211 const [favoriteList, setFavoriteList] = es_default("favoriteList", { 212 defaultValue: [] 213 }); 214 const navigate = useNavigate(); 215 const onOpen = (text) => { 216 return _t.success(text); 217 }; 218 const removeFromFavorit = (id) => { 219 const newItems = favoriteList.filter((item) => item.id !== id); 220 if (newItems) { 221 setFavoriteList(newItems); 222 } 223 }; 224 const handleCopyArticleToClipboard = (id, name, slug) => { 225 const isCopied = copy_to_clipboard_default(`${get_client_side_config_default.SHARELINKURL}/search/main/${id}/${to_safe_path_segment_default(slug || name)}`); 226 if (isCopied) { 227 onOpen("Der Link zu diesem Eintrag befindet sich nun in Deiner Zwischenablage. Du kannst ihn nun \xFCberall \xFCber Rechtsklick+Einf\xFCgen oder strg+v/cmd+v einf\xFCgen."); 228 } 229 setTimeout(() => { 230 setFavOpen(false); 231 }, 9e3); 232 }; 233 const handleOpenFavoriteListItem = (id, name, slug) => { 234 if (id && name) { 235 navigate(`/search/main/${id}/${to_safe_path_segment_default(slug || name)}`); 236 setTimeout(() => { 237 setFavOpen(false); 238 }, 1e3); 239 } 240 }; 241 return /* @__PURE__ */ import_react2.default.createElement("div", { 242 className: "border-t border-gray-200 px-2" 243 }, /* @__PURE__ */ import_react2.default.createElement("div", { 244 className: "scrollbar-styled" 245 }, favoriteList.length === 0 && /* @__PURE__ */ import_react2.default.createElement("div", null, /* @__PURE__ */ import_react2.default.createElement("p", { 246 style: { lineHeight: "30px", fontWeight: "bold" } 247 }, "Du hast noch keine Medien ausgew\xE4hlt. Klicke auf das Sternsymbol, um sie auf Deine Merkliste zu setzen")), /* @__P
247URE__ */ import_react2.default.createElement("div", null, /* @__PURE__ */ import_react2.default.createElement("ul", null, favoriteList && favoriteList.length ? favoriteList.map((media) => { 248 return /* @__PURE__ */ import_react2.default.createElement(ListItem, { 249 className: "mb-3", 250 key: media.id 251 }, /* @__PURE__ */ import_react2.default.createElement(FavoriteListCard, { 252 ...media, 253 handleCopyFavoritItem: handleCopyArticleToClipboard, 254 handleRemoveFavoriteItem: removeFromFavorit, 255 handleOpenFavoriteListItem 256 })); 257 }) : null))), /* @__PURE__ */ import_react2.default.createElement(Ie, { 258 position: "top-right", 259 reverseOrder: false, 260 toastOptions: { className: "text-sm", duration: 9e3 } 261 })); 262}; 263var favorite_list_default = FavoriteList; 264
265// app/layout/header.tsx 266var Header = ({ links: links2 }) => { 267 const { button } = default_default; 268 const { base, navBar } = button; 269 const [favoriteListOpen, setFavoriteList] = (0, import_react4.useState)(false); 270 const [favoriteList] = es_default("favoriteList", { 271 defaultValue: [] 272 }); 273 const shareFetcher = useFetcher(); 274 const isSharing = shareFetcher.state !== "idle"; 275 const [query, setSearchQuery] = (0, import_react4.useState)(""); 276 const [pendingShareLink, setPendingShareLink] = (0, import_react4.useState)(null); 277 const manualShareLinkInputRef = (0, import_react4.useRef)(null); 278 const copyShareLinkToClipboard = (0, import_react4.useCallback)(async (shareLink) => { 279 var _a; 280 if (typeof navigator !== "undefined" && ((_a = navigator.clipboard) == null ? void 0 : _a.writeText)) { 281 try { 282 await navigator.clipboard.writeText(shareLink); 283 return true; 284 } catch { 285 } 286 } 287 return copy_to_clipboard_default(shareLink); 288 }, []); 289 const handleManualCopyShareLink = (0, import_react4.useCallback)(async () => { 290 if (!pendingShareLink) { 291 return; 292 } 293 const isCopied = await copyShareLinkToClipboard(pendingShareLink); 294 if (isCopied) { 295 _t.success("Die Merkliste wurde in die Zwischenablage kopiert. Sie koennen den Link nun teilen."); 296 setPendingShareLink(null); 297 return; 298 } 299 if (manualShareLinkInputRef.current) { 300 manualShareLinkInputRef.current.focus(); 301 manualShareLinkInputRef.current.select(); 302 } 303 _t.error("Bitte druecke Cmd+C, um den Link manuell zu kopieren."); 304 }, [pendingShareLink, copyShareLinkToClipboard]); 305 const handleShareFavoriteList = () => { 306 if (isSharing) { 307 return; 308 } 309 const listIDs = favoriteList.map((listitem) => listitem.id); 310 if (!listIDs.length) { 311 _t.error("Deine Merkliste ist leer und kann nicht geteilt werden."); 312 return; 313 } 314 let formData = new FormData(); 315 formData.set("favArticleIds", listIDs.join(",")); 316 setPendingShareLink(null); 317 shareFetcher.submit(formData, { method: "post", action: "/" }); 318 }; 319 (0, import_react4.useEffect)(() => { 320 var _a; 321 if (shareFetcher.state !== "idle" || !shareFetcher.data) { 322 return; 323 } 324 const { success, data, error } = shareFetcher.data; 325 if (!success || !data) { 326 _t.error(error || "Beim Teilen der Merkliste ist ein Fehler aufgetreten. Bitte versuche es erneut."); 327 return; 328 } 329 const shareLinkBaseUrl = (_a = get_client_side_config_default) == null ? void 0 : _a.SHARELINKURL; 330 if (!shareLinkBaseUrl) { 331 _t.error("Der Teilen-Link ist aktuell nicht verfuegbar."); 332 return; 333 } 334 const shareLink = `${shareLinkBaseUrl}/media/favorites_article/${data}`; 335 void (async () => { 336 const isCopied = await copyShareLinkToClipboard(shareLink); 337 if (isCopied) { 338 setPendingShareLink(null); 339 _t.success("Die Merkliste wurde in die Zwischenablage kopiert. Sie koennen den Link nun teilen."); 340 return; 341 } 342 setPendingShareLink(shareLink); 343 _t.error("Automatisches Kopieren wurde vom Browser blockiert. Nutze den Button Link kopieren."); 344 })(); 345 }, [shareFetcher.state, shareFetcher.data, copyShareLinkToClipboard]); 346 return /* @__PURE__ */ React.createElement(Rt, { 347 id: "header_wrapper", 348 className: "fixed top-0 left-0 z-50 w-full bg-white shadow-[0_1px_2px_rgba(0,0,0,0.2)]" 349 }, /* @__PURE__ */ React.createElement("div", { 350 className: "relative" 351 }, /* @__PURE__ */ React.createElement("div", { 352 className: "section-wrapper flex items-center justify-between py-4 sm:px-6 md:py-2 md:px-0" 353 }, /* @__PURE__ */ React.createElement("div", null, /* @__PURE__ */ React.createElement(Link, { 354 to: "/media/home" 355 }, /* @__PURE__ */ React.createElement("span", { 356 className: "sr-only" 357 }, "RU-digital"), /* @__PURE__ */ React.createElement("img", { 358 className: "h-8 w-auto sm:h-12", 359 src: logomain_default, 360 alt: "RU-digital-logo" 361 }))), /* @__PURE__ */ React.createElement("div", { 362 className: "-my-2 md:hidden" 363 }, /* @__PURE__ */ React.createElement(Rt.Button, { 364 className: "inline-flex items-center justify-center rounded-md bg-white p-2 text-gray-400 hover:bg-gray-100 hover:text-gray-500 focus:ring-inset focus:ring-orange-500" 365 }
365, /* @__PURE__ */ React.createElement("span", { 366 className: "sr-only" 367 }, "Open menu"), /* @__PURE__ */ React.createElement(Bars3Icon_default, { 368 className: "h-6 w-6", 369 "aria-hidden": "true" 370 }))), /* @__PURE__ */ React.createElement("div", { 371 className: "hidden md:flex md:flex-1 md:items-center md:justify-end" 372 }, /* @__PURE__ */ React.createElement(Rt.Group, { 373 as: "nav", 374 className: "flex space-x-4" 375 }, /* @__PURE__ */ React.createElement(Rt, null, ({ open, close }) => /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(Rt.Button, { 376 className: class_names_default(open ? "text-gray-900" : "text-gray-500", "group rounded-full px-2.5 text-xs font-normal", base, navBar) 377 }, " ", /* @__PURE__ */ React.createElement(MagnifyingGlassIcon_default, { 378 className: class_names_default(open ? "text-gray-600" : "text-textColor-light", "h-5 w-5 group-hover:text-blue-900"), 379 "aria-hidden": "true" 380 })), /* @__PURE__ */ React.createElement(Ke, { 381 as: import_react4.Fragment, 382 enter: "transition ease-out duration-200", 383 enterFrom: "opacity-0 -translate-y-1", 384 enterTo: "opacity-100 translate-y-0", 385 leave: "transition ease-in duration-150", 386 leaveFrom: "opacity-100 translate-y-0", 387 leaveTo: "opacity-0 -translate-y-1" 388 }, /* @__PURE__ */ React.createElement(Rt.Panel, { 389 className: "absolute inset-x-0 top-full z-10 hidden transform bg-white shadow-lg md:block" 390 }, /* @__PURE__ */ React.createElement("div", { 391 className: "section-wrapper py-8" 392 }, /* @__PURE__ */ React.createElement(search_box_header_default, { 393 onSubmit: close, 394 query, 395 setSearchQuery 396 })))))), /* @__PURE__ */ React.createElement("div", null, /* @__PURE__ */ React.createElement("button", { 397 type: "button", 398 onClick: () => { 399 setFavoriteList(!favoriteListOpen); 400 }, 401 className: class_names_default(favoriteListOpen ? "text-primary" : "text-textColor-light", "group px-5 text-xs font-normal hover:text-primary", base, navBar) 402 }, " ", /* @__PURE__ */ React.createElement(StarIcon_default, { 403 className: class_names_default(favoriteListOpen ? "text-primary" : "text-textColor-light", "-ml-0.5 mr-2 h-6 w-6 group-hover:text-primary"), 404 "aria-hidden": "true" 405 }), /* @__PURE__ */ React.createElement("span", null, "Merkliste"), /* @__PURE__ */ React.createElement("span", { 406 className: "ml-2 -mr-1 h-4 w-6 rounded-xl bg-btnColor-secondary text-white" 407 }, favoriteList ? favoriteList.length : "")), /* @__PURE__ */ React.createElement(slide_over_dialog_default, { 408 width: "max-w-lg", 409 dir: "right", 410 open: favoriteListOpen, 411 toggle: setFavoriteList, 412 size: "small", 413 parentSelector: "#header_wrapper" 414 }, /* @__PURE__ */ React.createElement("div", { 415 className: "opacity-1 flex h-full w-full flex-col rounded-l-3xl bg-white pt-2 shadow-xl blur-none" 416 }, /* @__PURE__ */ React.createElement("div", { 417 className: "flex min-h-0 flex-1 flex-col py-6" 418 }, /* @__PURE__ */ React.createElement("div", { 419 className: "px-4 sm:px-6" 420 }, /* @__PURE__ */ React.createElement("div", { 421 className: "flex items-start justify-between" 422 }, /* @__PURE__ */ React.createElement("div", { 423 className: "ml-3 flex h-7 items-center" 424 }, /* @__PURE__ */ React.createElement("button", { 425 type: "button", 426 className: "rounded-full bg-primary text-white focus:outline-none focus:ring-2 focus:ring-btnColor-secondary", 427 onClick: () => setFavoriteList(false) 428 }, /* @__PURE__ */ React.createElement("span", { 429 className: "sr-only" 430 }, "Close panel"), /* @__PURE__ */ React.createElement(XMarkIcon_default, { 431 className: "h-6 w-6", 432 "aria-hidden": "true" 433 }))), /* @__PURE__ */ React.createElement("div", null, /* @__PURE__ */ React.createElement("button", { 434 onClick: handleShareFavoriteList, 435 type: "button", 436 disabled: isSharing, 437 "aria-busy": isSharing, 438 className: "ml-1 inline-flex items-center border-none pr-2 text-sm font-medium leading-4 text-primary hover:text-btnColor-secondary focus:outline-none focus:ring-2 focus:ring-btnColor-secondary focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-70" 439 }
439, isSharing ? /* @__PURE__ */ React.createElement("svg", { 440 className: "-ml-0.5 mr-2 h-5 w-5 animate-spin", 441 viewBox: "0 0 24 24", 442 "aria-hidden": "true" 443 }, /* @__PURE__ */ React.createElement("circle", { 444 className: "opacity-25", 445 cx: "12", 446 cy: "12", 447 r: "10", 448 stroke: "currentColor", 449 strokeWidth: "4", 450 fill: "none" 451 }), /* @__PURE__ */ React.createElement("path", { 452 className: "opacity-75", 453 fill: "currentColor", 454 d: "M4 12a8 8 0 0 1 8-8V0C5.37258 0 0 5.37258 0 12h4z" 455 })) : /* @__PURE__ */ React.createElement(ArrowUpOnSquareIcon_default, { 456 className: "-ml-0.5 mr-2 h-6 w-6", 457 "aria-hidden": "true" 458 }), isSharing ? "Teilen..." : "Teilen"))), pendingShareLink && /* @__PURE__ */ React.createElement("div", { 459 className: "mt-4 rounded-lg border border-blue-200 bg-blue-50 p-3" 460 }, /* @__PURE__ */ React.createElement("p", { 461 className: "text-xs font-semibold text-blue-900" 462 }, "Teilen-Link erstellt"), /* @__PURE__ */ React.createElement("p", { 463 className: "mt-1 text-xs text-blue-800" 464 }, "Automatisches Kopieren ist blockiert. Bitte hier kopieren."), /* @__PURE__ */ React.createElement("div", { 465 className: "mt-2 flex items-center gap-2" 466 }, /* @__PURE__ */ React.createElement("input", { 467 ref: manualShareLinkInputRef, 468 readOnly: true, 469 value: pendingShareLink, 470 onFocus: (event) => event.currentTarget.select(), 471 className: "flex-1 rounded-md border border-blue-300 bg-white px-2 py-1 text-xs text-blue-900" 472 }), /* @__PURE__ */ React.createElement("button", { 473 type: "button", 474 onClick: handleManualCopyShareLink, 475 className: "rounded-md bg-blue-700 px-3 py-1 text-xs font-semibold text-white hover:bg-blue-800" 476 }, "Link kopieren")))), /* @__PURE__ */ React.createElement("div", { 477 className: "relative mt-6 flex-1 overflow-y-scroll px-4 sm:px-6" 478 }, /* @__PURE__ */ React.createElement(favorite_list_default, { 479 setFavOpen: setFavoriteList 480 })))))), /* @__PURE__ */ React.createElement(Rt, null, ({ open }) => /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(Rt.Button, { 481 className: class_names_default(!open ? "bg-btnColor-navBar" : "bg-btnColor-secondary", base, "rounded-full px-2.5") 482 }, /* @__PURE__ */ React.createElement(Bars3Icon_default, { 483 className: class_names_default(!open ? "text-gray-900" : " text-white", "h-6 w-6 rounded-full"), 484 "aria-hidden": "true" 485 })), /* @__PURE__ */ React.createElement(Ke, { 486 as: import_react4.Fragment, 487 enter: "transition ease-out duration-200", 488 enterFrom: "opacity-0 -translate-y-1", 489 enterTo: "opacity-100 translate-y-0", 490 leave: "transition ease-in duration-150", 491 leaveFrom: "opacity-100 translate-y-0", 492 leaveTo: "opacity-0 -translate-y-1" 493 }, /* @__PURE__ */ React.createElement(Rt.Panel, { 494 className: "absolute inset-x-0 top-full z-50 hidden transform border-t bg-white shadow-lg md:block" 495 }, /* @__PURE__ */ React.createElement(NavigationFlyoutMenu, { 496 links: links2 497 }))))))))), /* @__PURE__ */ React.createElement(Ke, { 498 as: import_react4.Fragment, 499 enter: "duration-200 ease-out", 500 enterFrom: "opacity-0 scale-95", 501 enterTo: "opacity-100 scale-100", 502 leave: "duration-100 ease-in", 503 leaveFrom: "opacity-100 scale-100", 504 leaveTo: "opacity-0 scale-95" 505 }, /* @__PURE__ */ React.createElement(Rt.Panel, { 506 focus: false, 507 className: "absolute inset-x-0 top-0 z-30 origin-top-right transform p-2 transition md:hidden" 508 }, ({ close }) => { 509 return /* @__PURE__ */ React.createElement(NavigationFlyoutMobileMenu, { 510 links: links2, 511 close 512 }); 513 }))); 514}; 515var header_default = Header; 516
517// app/layout/page-intro-wrapper.tsx 518init_react(); 519var import_react7 = __toESM(require_react()); 520init_esm(); 521
522// app/assets/images/start-page-wave.svg 523var start_page_wave_default = "/build/_assets/start-page-wave-RIJJU6PJ.svg"; 524
525// app/layout/landing_page_tabs.tsx 526init_react(); 527var LandingPageTabs = ({ 528 activeTab, 529 setActiveTab, 530 isMobile = false 531}) => { 532 const buttonBaseClass = isMobile ? "inline-flex flex-1 items-center justify-center px-2 py-2 text-xs font-medium" : "inline-flex items-center px-6 py-3 text-sm font-medium "; 533 const iconSizeClass = isMobile ? "mr-1 h-3 w-3" : "mr-2 h-5 w-5"; 534 const getIconClass = (tab) => class_names_default(iconSizeClass, activeTab === tab ? "" : "brightness-0 invert"); 535 return /* @__PURE__ */ React.createElement("div", { 536 className: "flex gap-0" 537 }, /* @__PURE__ */ React.createElement("button", { 538 onClick: () => setActiveTab("medien"), 539 style: { borderTopLeftRadius: "20px" }, 540 className: class_names_default(buttonBaseClass, "border-b-0", activeTab === "medien" ? "bg-white text-primary" : "bg-primary text-white hover:bg-primary") 541 }, /* @__PURE__ */ React.createElement("img", { 542 src: icon_media_default, 543 alt: "", 544 "aria-hidden": "true", 545 className: getIconClass("medien") 546 }), "Medien"), /* @__PURE__ */ React.createElement("button", { 547 onClick: () => setActiveTab("fachartikel"), 548 className: class_names_default(buttonBaseClass, "border-b-0", activeTab === "fachartikel" ? "bg-white text-primary" : "bg-primary text-white hover:bg-primary") 549 }, /* @__PURE__ */ React.createElement("img", { 550 src: icon_fachbeitraege_default, 551 alt: "", 552 "aria-hidden": "true", 553 className: getIconClass("fachartikel") 554 }), "Fachbeitr\xE4ge"), /* @__PURE__ */ React.createElement("button", { 555 onClick: () => { 556 window.open("https://veranstaltungen.ru-digital.de", "_blank"); 557 }, 558 style: { borderTopRightRadius: "20px" }, 559 className: class_names_default(buttonBaseClass, "border-b-0", "bg-primary text-white hover:bg-primary") 560 }, /* @__PURE__ */ React.createElement("img", { 561 src: icon_event_default, 562 alt: "", 563 "aria-hidden": "true", 564 className: getIconClass("veranstaltungen") 565 }), "Veranstaltungen")); 566}; 567
568// app/layout/page-intro-wrapper.tsx 569var PageIntro = ({ 570 logo, 571 title, 572 subtitle, 573 searchBox, 574 mainImage, 575 size, 576 isLandingPage = false, 577 activeTab = "medien", 578 setActiveTab 579}) => { 580 const location = useLocation(); 581 const getHeightBasedOnScreenType = () => { 582 if (isLandingPage) { 583 return ""; 584 } 585 if (location.pathname.includes("/method_glossar") || location.pathname.includes("/impressum") || location.pathname.includes("/datenschutz") || location.pathname.includes("/partners")) { 586 return "h-hero-sm"; 587 } 588 return "h-hero-xs"; 589 }; 590 return /* @__PURE__ */ import_react7.default.createElement("div", { 591 className: class_names_default("relative flex w-full bg-cover bg-bottom pt-0", getHeightBasedOnScreenType(), isLandingPage ? "min-h-[815px] md:min-h-[875px] lg:min-h-[890px] xl:min-h-[930px] 2xl:min-h-[1040px]" : ""), 592 style: { 593 backgroundImage: `linear-gradient(to right, #153d71, #005283, #006792, #007c9e, #1f91a7)` 594 } 595 }, /* @__PURE__ */ import_react7.default.createElement("div", { 596 className: "flex w-full", 597 style: isLandingPage ? { 598 backgroundImage: `url(${bg_dot_pattern_lightgray_default})`, 599 backgroundSize: "43%", 600 backgroundPosition: "right", 601 backgroundRepeat: "no-repeat" 602 } : void 0 603 }, /* @__PURE__ */ import_react7.default.createElement("div", { 604 className: "z-10 flex w-full flex-col items-center", 605 style: { 606 backgroundImage: `url(${start_page_wave_default})`, 607 backgroundSize: "100%", 608 backgroundPosition: "100% 100%", 609 backgroundRepeat: "no-repeat", 610 zIndex: 10 611 } 612 }, /* @__PURE__ */ import_react7.default.createElement("div", { 613 className: "intro-page-wrapper mx-2 flex w-full flex-col md:flex-row" 614 }, /* @__PURE__ */ import_react7.default.createElement("div", { 615 className: class_names_default(!subtitle && !searchBox || location.pathname.includes("/help_center") ? "justify-center " : "justify-start", "md:1/2 flex w-full flex-col items-center md:items-start") 616 }, /* @__PURE__ */ import_react7.default.createElement("div", { 617 className: class_names_default(isLandingPage ? "mt-6 md:mt-20 lg:mt-24" : "mt-8", "pt-4 md:pt-8 md:pb-3") 618 }, /* @__PURE__ */ import_react7.default.createElement("h1", { 619 className: class_names_default("text-left text-2xl font-bold leading-8 text-white md:text-3xl lg:text-[42px]") 620 }, title)), subtitle && /* @__PURE__ */ import_react7.default.createElement("div", null, /* @__PURE__ */ import_react7.default.createElement("p", { 621 className: "max-w-full py-1 pt-2 text-left text-base text-white md:max-w-lg md:pb-5 md:text-lg" 622 }, subtitle))), /* @__PURE__ */ import_react7.default.createElement("div", { 623 className: "mt-5 flex w-full flex-col md:hidden" 624 }, searchBox && /* @__PURE__ */ import_react7.default.createElement("div", { 625 className: "z-50 flex w-full flex-col" 626 }, isLandingPage && setActiveTab && /* @__PURE__ */ import_react7.default.createElement(LandingPageTabs, { 627 activeTab, 628 setActiveTab, 629 isMobile: true 630 }), /* @__PURE__ */ import_react7.default.createElement("div", { 631 style: { 632 borderBottomRightRadius: "20px", 633 borderBottomLeftRadius: "20px" 634 }, 635 className: "flex w-full items-center bg-white px-2 shadow-card" 636 }, searchBox), isLandingPage && /* @__PURE__ */ import_react7.default.createElement("div", { 637 className: "mt-4 flex flex-col gap-3 sm:flex-row sm:gap-4" 638 }, themenCards.map((card, index) => /* @__PURE__ */ import_react7.default.createElement("div", { 639 key: `${card.title}-${index}`, 640 className: "flex-1" 641 }, /* @__PURE__ */ import_react7.default.createElement(ThemenBox_default, { 642 title: card.title, 643 to: card.to, 644 description: card.description 645 }))))), /* @__PURE__ */ import_react7.default.createElement("div", { 646 className: "flex" 647 }, /* @__PURE__ */ import_react7.default.createElement("img", { 648 className: class_names_default("h-[20rem] w-full object-contain md:object-scale-down", isLandingPage ? "-mt-10" : ""), 649 src: mainImage || img_hero_start_default 650 }))), /* @__PURE__ */ import_react7.default.createElement("div", { 651 className: "relative hidden w-full md:flex md:flex-col" 652 }
652, /* @__PURE__ */ import_react7.default.createElement("img", { 653 className: class_names_default(isLandingPage ? "h-76 md:h-auto lg:h-[490px] xl:h-[500px]" : "h-64 md:h-full", "w-full object-contain md:object-scale-down"), 654 src: mainImage || img_hero_start_default 655 }))), /* @__PURE__ */ import_react7.default.createElement("div", { 656 className: "md:-mt-18 z-10 hidden w-full md:block lg:-mt-20 xl:-mt-20" 657 }, searchBox && /* @__PURE__ */ import_react7.default.createElement("div", { 658 className: "intro-page-wrapper" 659 }, isLandingPage && setActiveTab && /* @__PURE__ */ import_react7.default.createElement(LandingPageTabs, { 660 activeTab, 661 setActiveTab, 662 isMobile: false 663 }), /* @__PURE__ */ import_react7.default.createElement("div", { 664 style: { 665 borderTopRightRadius: "20px", 666 borderBottomRightRadius: "20px", 667 borderBottomLeftRadius: "20px" 668 }, 669 className: "bg-white px-5 py-2 shadow-card" 670 }, searchBox), isLandingPage && /* @__PURE__ */ import_react7.default.createElement("div", { 671 className: "mx-auto mt-8 mb-4 flex w-full flex-col gap-3 md:flex-row md:gap-4" 672 }, themenCards.map((card, index) => /* @__PURE__ */ import_react7.default.createElement("div", { 673 key: `${card.title}-${index}`, 674 className: "flex-1" 675 }, /* @__PURE__ */ import_react7.default.createElement(ThemenBox_default, { 676 title: card.title, 677 to: card.to, 678 description: card.description 679 }))))))))); 680}; 681var page_intro_wrapper_default = PageIntro; 682
683// app/layout/footer.tsx 684init_react(); 685init_esm(); 686
687// app/assets/icons/IcRoundFacebook.svg 688var IcRoundFacebook_default = "/build/_assets/IcRoundFacebook-AC7BEAQO.svg"; 689
690// app/assets/icons/CarbonLogoInstagram.svg 691var CarbonLogoInstagram_default = "/build/_assets/CarbonLogoInstagram-Q7TRDB2S.svg"; 692
693// app/assets/icons/CarbonLogoYoutube.svg 694var CarbonLogoYoutube_default = "/build/_assets/CarbonLogoYoutube-EFH6ZKIP.svg"; 695
696// app/layout/footer.tsx 697var FooterMain = ({ links: links2, isLandingPage }) => { 698 const navigate = useNavigate(); 699 const footerLabelsColor = isLandingPage ? "#040404" : "#040404"; 700 const navigation = { 701 solutions: [{ name: "Medien", href: "/media/home", isExternal: false }], 702 support: [ 703 { name: "Inklusion", href: "/inklusion", isExternal: false }, 704 { 705 name: "Themenschwerpunkte", 706 href: "/themenschwerpunkte", 707 isExternal: false 708 }, 709 { 710 name: "Methodenglossar", 711 href: "https://methoden.ru-digital.de", 712 isExternal: true 713 } 714 ], 715 company: [ 716 { name: "Blog", href: "https://blog.ru-digital.de/", isExternal: true }, 717 { 718 name: "Hilfecenter", 719 href: "https://docs.ru-digital.de/", 720 isExternal: true 721 }, 722 { 723 name: "Unterst\xFCtzen & Mitmachen", 724 href: "https://join.ru-digital.de", 725 isExternal: true 726 } 727 ], 728 legal: [ 729 { 730 name: "\xDCber ru-digital", 731 href: "https://ueber.ru-digital.de/", 732 isExternal: true 733 }, 734 { 735 name: "Partner & Unterst\xFCtzer", 736 href: "https://explore.ru-digital.de/partner-unterstuetzer/", 737 isExternal: true 738 }, 739 { name: "Kontakt", href: "/contact" } 740 ], 741 social: [ 742 { 743 name: "Facebook", 744 icon: () => /* @__PURE__ */ React.createElement("img", { 745 src: IcRoundFacebook_default, 746 alt: "Facebook", 747 className: "h-6 w-6" 748 }), 749 href: "https://www.facebook.com/religionsunterrichtdigital/" 750 }, 751 { 752 name: "Youtube", 753 icon: () => /* @__PURE__ */ React.createElement("img", { 754 src: CarbonLogoYoutube_default, 755 alt: "Youtube", 756 className: "h-6 w-6" 757 }), 758 href: "https://www.youtube.com/user/EulenfischMagazin" 759 }, 760 { 761 name: "Instagram", 762 icon: () => /* @__PURE__ */ React.createElement("img", { 763 src: CarbonLogoInstagram_default, 764 alt: "Instagram", 765 className: "h-6 w-6" 766 }), 767 href: "https://www.instagram.com/ru.digital/" 768 } 769 ] 770 }; 771 return /* @__PURE__ */ React.createElement("footer", { 772 className: "bg-white", 773 "aria-labelledby": "footer-heading" 774 }, /* @__PURE__ */ React.createElement("h2", { 775 id: "footer-heading", 776 className: "sr-only" 777 }, "Footer"), /* @__PURE__ */ React.createElement("div", { 778 className: "section-wrapper lg:py-16" 779 }, /* @__PURE__ */ React.createElement("div", { 780 className: "xl:grid xl:grid-cols-3 xl:gap-8" 781 }, /* @__PURE__ */ React.createElement("div", { 782 className: "space-y-8 xl:col-span-1" 783 }, /* @__PURE__ */ React.createElement("img", { 784 className: "h-10", 785 src: logomain_default, 786 alt: "Company name" 787 }), /* @__PURE__ */ React.createElement("p", { 788 className: "text-base text-gray-500" 789 }, "Der Guide f\xFCr deinen Religionsunterricht."), /* @__PURE__ */ React.createElement("div", { 790 className: "flex space-x-6" 791 }, navigation.social.map((item) => /* @__PURE__ */ React.createElement("a", { 792 key: item.name, 793 href: item.href, 794 target: "_blank", 795 className: "text-sm text-gray-400", 796 rel: "noreferrer" 797 }, /* @__PURE__ */ React.createElement("span", { 798 className: "sr-only" 799 }, item.name), /* @__PURE__ */ React.createElement(item.icon, { 800 "aria-hidden": "true" 801 }))))), /* @__PURE__ */ React.createElement("div", { 802 className: "mt-12 grid grid-cols-2 gap-8 xl:col-span-2 xl:mt-0" 803 }, /* @__PURE__ */ React.createElement("div", { 804 className: "md:grid md:grid-cols-2 md:gap-8" 805 }, /* @__PURE__ */ React.createElement("div", null, /* @__PURE__ */ React.createElement("ul", { 806 className: "mt-4 space-y-4" 807 }, navigation.solutions.map((item) => /* @__PURE__ */ React.createElement("li", { 808 key: item.name 809 }, item.isExternal ? /* @__PURE__ */ React.createElement("a", { 810 href: item.href, 811 target: "_blank", 812 rel: "noreferrer", 813 className: "text-sm text-gray-500 hover:text-gray-900" 814 }, item.name) : /* @__PURE__ */ React.createElement("button", { 815 onClick: () => { 816 navigate(item.href); 817 }, 818 key: item.name, 819 className: "text-sm text-gray-500 hover:text-gray-900" 820 }
820, item.name))))), /* @__PURE__ */ React.createElement("div", { 821 className: "mt-12 md:mt-0" 822 }, /* @__PURE__ */ React.createElement("ul", { 823 className: "mt-4 space-y-4" 824 }, navigation.support.map((item) => /* @__PURE__ */ React.createElement("li", { 825 key: item.name 826 }, item.isExternal ? /* @__PURE__ */ React.createElement("a", { 827 href: item.href, 828 target: "_blank", 829 rel: "noreferrer", 830 className: "text-sm text-gray-500 hover:text-gray-900" 831 }, item.name) : /* @__PURE__ */ React.createElement("button", { 832 onClick: () => { 833 navigate(item.href); 834 }, 835 key: item.name, 836 className: "text-sm text-gray-500 hover:text-gray-900" 837 }, item.name)))))), /* @__PURE__ */ React.createElement("div", { 838 className: "md:grid md:grid-cols-2 md:gap-8" 839 }, /* @__PURE__ */ React.createElement("div", null, /* @__PURE__ */ React.createElement("ul", { 840 className: "mt-4 space-y-4" 841 }, navigation.company.map((item) => /* @__PURE__ */ React.createElement("li", { 842 key: item.name 843 }, item.isExternal ? /* @__PURE__ */ React.createElement("a", { 844 href: item.href, 845 target: "_blank", 846 rel: "noreferrer", 847 className: "text-sm text-gray-500 hover:text-gray-900" 848 }, item.name) : /* @__PURE__ */ React.createElement("button", { 849 onClick: () => { 850 navigate(item.href); 851 }, 852 key: item.name, 853 className: "text-sm text-gray-500 hover:text-gray-900" 854 }, item.name))))), /* @__PURE__ */ React.createElement("div", { 855 className: "mt-12 md:mt-0" 856 }, /* @__PURE__ */ React.createElement("ul", { 857 className: "mt-4 space-y-4" 858 }, navigation.legal.map((item) => /* @__PURE__ */ React.createElement("li", { 859 key: item.name 860 }, item.isExternal ? /* @__PURE__ */ React.createElement("a", { 861 href: item.href, 862 target: "_blank", 863 rel: "noreferrer", 864 className: "text-sm text-gray-500 hover:text-gray-900" 865 }, item.name) : /* @__PURE__ */ React.createElement("button", { 866 onClick: () => { 867 navigate(item.href); 868 }, 869 key: item.name, 870 className: "text-sm text-gray-500 hover:text-gray-900" 871 }, item.name)))))))), /* @__PURE__ */ React.createElement("div", { 872 className: "mt-12 flex justify-center border-t border-gray-200 pt-8" 873 }, /* @__PURE__ */ React.createElement("p", { 874 className: "mr-1 text-base text-gray-400 xl:text-center" 875 }, "\xA9 2026 ru-digital | Eulenfisch |"), /* @__PURE__ */ React.createElement(Link, { 876 to: "/datenschutz" 877 }, /* @__PURE__ */ React.createElement("span", { 878 className: "mr-1 text-base text-gray-400 hover:text-gray-900 xl:text-center" 879 }, "Datenschutz |")), /* @__PURE__ */ React.createElement(Link, { 880 to: "/impressum" 881 }, /* @__PURE__ */ React.createElement("span", { 882 className: "text-base text-gray-400 hover:text-gray-900 xl:text-center" 883 }, "Impressum"))))); 884}; 885var footer_default = FooterMain; 886
887// app/layout/inklusion_background_image.tsx 888init_react(); 889var import_react10 = __toESM(require_react()); 890
891// app/assets/images/inkusion/hero-inklusion.svg 892var hero_inklusion_default = "/build/_assets/hero-inklusion-7MB4VKZ3.svg"; 893
894// app/assets/images/inkusion/wave-bg-top-gray.svg 895var wave_bg_top_gray_default = "/build/_assets/wave-bg-top-gray-TQAGIMO6.svg"; 896
897// app/layout/inklusion_background_image.tsx 898var InklusionIntroImage = ({ 899 title, 900 subtitle, 901 size 902}) => { 903 return /* @__PURE__ */ import_react10.default.createElement("div", { 904 className: "relative mt-6 flex h-full w-full flex-col pt-0", 905 style: { 906 backgroundImage: `linear-gradient(90deg,#FFAB00 0, #FFC500 100%)` 907 } 908 }, /* @__PURE__ */ import_react10.default.createElement("div", { 909 className: "3xl:mx-auto\n 3xl:max-w-8xl", 910 style: { 911 backgroundImage: `url(${hero_dot_bg_default})`, 912 backgroundPosition: "100% 100%", 913 backgroundRepeat: "repeat" 914 } 915 }, /* @__PURE__ */ import_react10.default.createElement("div", { 916 className: "mx-auto flex w-full flex-col px-3\n text-center\n md:flex-row\n md:px-0\n 3xl:mx-auto\n 3xl:max-w-8xl" 917 }, /* @__PURE__ */ import_react10.default.createElement("div", { 918 className: "w-full md:w-1/2" 919 }, /* @__PURE__ */ import_react10.default.createElement("div", { 920 className: "ml-auto w-full\n md:max-w-[calc(100%_-_60px)]\n xl:max-w-[calc(100%_-_160px)]\n 3xl:max-w-full\n " 921 }, /* @__PURE__ */ import_react10.default.createElement("div", { 922 className: "w-full pt-3 xl:pt-5 2xl:mt-12 2xl:pt-0" 923 }, /* @__PURE__ */ import_react10.default.createElement("h1", { 924 className: "max-w-sm text-center font-sans text-2xl font-bold\n leading-[1] text-primary md:text-left md:text-3xl lg:text-5xl\n xl:text-[74px]" 925 }, title)), subtitle && /* @__PURE__ */ import_react10.default.createElement("div", null, /* @__PURE__ */ import_react10.default.createElement("p", { 926 className: "max-w-full pt-1 text-center text-primary\n sm:text-base md:pt-5 md:text-left\n md:text-lg xl:text-2xl" 927 }, subtitle)))), /* @__PURE__ */ import_react10.default.createElement("div", { 928 className: "z-0 w-full md:w-1/2" 929 }, /* @__PURE__ */ import_react10.default.createElement("img", { 930 className: class_names_default("z-0 h-full w-full object-fill"), 931 src: hero_inklusion_default 932 })))), /* @__PURE__ */ import_react10.default.createElement("div", { 933 className: "absolute bottom-0 z-40 w-full 3xl:bottom-[-100px] 3xl:z-0 3xl:h-24" 934 }, /* @__PURE__ */ import_react10.default.createElement("div", { 935 className: "md:-mt-20" 936 }, /* @__PURE__ */ import_react10.default.createElement("img", { 937 className: class_names_default("z-50 w-full object-bottom"), 938 src: wave_bg_top_gray_default 939 })))); 940}; 941var inklusion_background_image_default = InklusionIntroImage; 942
943// app/assets/images/search/search-bg.svg 944var search_bg_default = "/build/_assets/search-bg-ZTV2SFRF.svg"; 945
946// app/layout/index.tsx 947function Layout({ 948 children, 949 title, 950 subtitle, 951 links: links2, 952 isLandingPage, 953 hasPageIntro = true, 954 hasLogo 955}) { 956 const size = GetScreenSize(); 957 const { pathname } = useLocation(); 958 const { articleId, methodId } = useParams(); 959 const [query, setSearchQuery] = (0, import_react11.useState)(""); 960 const [activeTab, setActiveTab] = (0, import_react11.useState)("medien"); 961 const isDetailsPpage = articleId || methodId; 962 const getFormAction = () => { 963 if (activeTab === "fachartikel") { 964 return query ? `/professional_article/main?q=${query}` : `/professional_article/main`; 965 } 966 return query ? `/search/main?q=${query}` : `/search/main`; 967 }; 968 const formAction = getFormAction(); 969 return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(header_default, { 970 links: links2 971 }), /* @__PURE__ */ React.createElement("main", { 972 id: "scrollArea", 973 className: "mt-[40px] mb-20 flex-grow" 974 }, hasPageIntro && /* @__PURE__ */ React.createElement(page_intro_wrapper_default, { 975 size, 976 isLandingPage, 977 title, 978 subtitle, 979 logo: hasLogo, 980 activeTab, 981 setActiveTab, 982 searchBox: isLandingPage && pathname !== "/inklusion" ? /* @__P
982URE__ */ React.createElement(search_box_default, { 983 formAction, 984 query, 985 setSearchQuery, 986 isLandingPage: true, 987 activeTab 988 }) : void 0 989 }), pathname === "/inklusion" && /* @__PURE__ */ React.createElement(inklusion_background_image_default, { 990 size, 991 title, 992 subtitle 993 }), (pathname.includes("/search/main") || pathname.includes("/professional_article/main")) && /* @__PURE__ */ React.createElement("div", { 994 className: "relative -z-10 hidden h-full w-full flex-col pt-0 md:flex" 995 }, /* @__PURE__ */ React.createElement("div", { 996 className: class_names_default("absolute w-full", isDetailsPpage ? "top-5" : "top-24") 997 }, /* @__PURE__ */ React.createElement("div", { 998 className: "" 999 }, /* @__PURE__ */ React.createElement("img", { 1000 alt: "", 1001 className: "w-full object-bottom", 1002 src: search_bg_default 1003 })))), pathname.includes("/themenschwerpunkte") && /* @__PURE__ */ React.createElement("div", { 1004 className: "relative -z-10 hidden h-full w-full flex-col pt-16 md:flex" 1005 }, /* @__PURE__ */ React.createElement("div", { 1006 className: class_names_default("absolute top-6 w-full") 1007 }, /* @__PURE__ */ React.createElement("div", { 1008 className: "" 1009 }, /* @__PURE__ */ React.createElement("img", { 1010 alt: "", 1011 className: "w-full object-bottom", 1012 src: search_bg_default 1013 })))), children), /* @__PURE__ */ React.createElement(footer_default, { 1014 isLandingPage, 1015 links: links2 1016 })); 1017} 1018
1019// app/styles/main.css 1020var main_default = "/build/_assets/main-75ELVFQO.css"; 1021
1022// app/root.tsx 1023var import_config = __toESM(require_config()); 1024
1025// app/hooks/use_matomo.tsx 1026init_react(); 1027var import_react13 = __toESM(require_react()); 1028init_esm(); 1029function useMatomo(gtaConsent, isProduction) { 1030 const location = useLocation(); 1031 (0, import_react13.useEffect)(() => { 1032 if (gtaConsent === "all" && isProduction) { 1033 if (!window._matomoInitialized) { 1034 const script = document.createElement("script"); 1035 script.async = true; 1036 script.src = "https://statistik.ru-digital.de/matomo.js"; 1037 const trackerScript = document.createElement("script"); 1038 trackerScript.innerHTML = ` 1039 var _paq = window._paq = window._paq || []; 1040 _paq.push(['enableLinkTracking']); 1041 (function() { 1042 var u="https://statistik.ru-digital.de/"; 1043 _paq.push(['setTrackerUrl', u+'matomo.php']); 1044 _paq.push(['setSiteId', '3']); 1045 })(); 1046 `; 1047 document.head.appendChild(script); 1048 document.head.appendChild(trackerScript); 1049 window._matomoInitialized = true; 1050 } 1051 } 1052 }, [gtaConsent, isProduction]); 1053 (0, import_react13.useEffect)(() => { 1054 if (gtaConsent === "all" && window._paq) { 1055 window._paq.push(["setCustomUrl", window.location.href]); 1056 window._paq.push(["setDocumentTitle", document.title]); 1057 window._paq.push(["trackPageView"]); 1058 } 1059 }, [location, gtaConsent]); 1060} 1061
1062// app/root.tsx 1063var unstable_shouldReload = ({ submission }) => { 1064 var _a; 1065 if (!submission) { 1066 return true; 1067 } 1068 const method = typeof submission.formMethod === "string" ? submission.formMethod : typeof submission.method === "string" ? submission.method : ""; 1069 const isShareFavoritesPost = method.toLowerCase() === "post" && ((_a = submission.formData) == null ? void 0 : _a.has("favArticleIds")); 1070 if (isShareFavoritesPost) { 1071 return false; 1072 } 1073 return true; 1074}; 1075var links = () => { 1076 return [{ rel: "stylesheet", href: main_default }]; 1077}; 1078var meta = () => { 1079 return [ 1080 { 1081 property: "og:title", 1082 content: "ru-digital - Der Guide f\xFCr deinen Religionsunterricht" 1083 }, 1084 { 1085 name: "description", 1086 content: "ru-digital ist dein digitaler Begleiter und Resource f\xFCr die Planung und Durchf\xFChrung von Religionsunterricht." 1087 }, 1088 { property: "og:image", content: og_image_default }, 1089 { 1090 property: "name", 1091 content: "ru-digital ist dein digitaler Begleiter und Resource f\xFCr die Planung und Durchf\xFChrung von Religionsunterricht." 1092 } 1093 ]; 1094}; 1095function Document({ 1096 children, 1097 title, 1098 theme, 1099 bgColor 1100}) { 1101 return /* @__PURE__ */ React.createElement("html", { 1102 lang: "de", 1103 "data-theme": theme 1104 }, /* @__PURE__ */ React.createElement("head", null, /* @__PURE__ */ React.createElement("meta", { 1105 charSet: "utf-8" 1106 }), /* @__PURE__ */ React.createElement("meta", { 1107 name: "viewport", 1108 content: "width=device-width,initial-scale=1" 1109 }
1109), title ? /* @__PURE__ */ React.createElement("title", null, title) : null, /* @__PURE__ */ React.createElement(Meta, null), /* @__PURE__ */ React.createElement(Links, null)), /* @__PURE__ */ React.createElement("body", { 1110 className: `flex min-h-screen flex-col ${bgColor ? bgColor : "bg-white"}` 1111 }, children, /* @__PURE__ */ React.createElement(ScrollRestoration, null), /* @__PURE__ */ React.createElement(Scripts, null), /* @__PURE__ */ React.createElement(LiveReload, null))); 1112} 1113function AppWithProviders() { 1114 return /* @__PURE__ */ React.createElement(App, null); 1115} 1116function App() { 1117 const hasWindow = typeof window !== "undefined"; 1118 const matches = useMatches(); 1119 const [showPendingSpinner, setShowPendingSpinner] = (0, import_react16.useState)(false); 1120 const location = useLocation(); 1121 const data = useMatchesData("/", location.pathname); 1122 const { inklusionData, ENV } = useLoaderData(); 1123 let transition = useTransition(); 1124 const { isLandingPage, title, subtitle, id, hasPageIntro, hasLogo } = data == null ? void 0 : data.item; 1125 const gtaConsent = data == null ? void 0 : data.gdprConsent; 1126 const isWidgetFrame = matches.some((match) => match.pathname === "/widget/frame"); 1127 useMatomo(gtaConsent, ENV.ISPRODUCTION); 1128 (0, import_react16.useEffect)(() => { 1129 let timer = setTimeout(() => { 1130 if (hasWindow) { 1131 setShowPendingSpinner(transition.state !== "idle"); 1132 } 1133 }, 100); 1134 return () => { 1135 clearTimeout(timer); 1136 }; 1137 }, [transition.state, hasWindow]); 1138 if (isWidgetFrame) { 1139 return /* @__PURE__ */ React.createElement(Document, { 1140 bgColor: "bg-transparent" 1141 }, /* @__PURE__ */ React.createElement(Outlet, { 1142 context: { showPendingSpinner } 1143 }), ";"); 1144 } 1145 return /* @__PURE__ */ React.createElement(Document, null, /* @__PURE__ */ React.createElement(Layout, { 1146 links: data == null ? void 0 : data.links, 1147 hasPageIntro, 1148 isLandingPage, 1149 title: location.pathname === "/inklusion" ? inklusionData.title : title, 1150 hasLogo, 1151 subtitle: location.pathname === "/inklusion" ? inklusionData.subtitle : subtitle, 1152 id 1153 }, showPendingSpinner && /* @__PURE__ */ React.createElement("div", { 1154 className: "fixed top-1/2 left-1/2 z-20 -translate-x-1/2 -translate-y-1/2 transform-gpu rounded-md bg-black p-14 text-center opacity-60" 1155 }, /* @__PURE__ */ React.createElement("div", { 1156 "aria-label": "Loading...", 1157 role: "status", 1158 className: "flex justify-center" 1159 }, /* @__PURE__ */ React.createElement("svg", { 1160 className: "h-8 w-8 animate-spin", 1161 viewBox: "3 3 18 18" 1162 }, /* @__PURE__ */ React.createElement("path", { 1163 className: "fill-yellow-400", 1164 d: "M12 5C8.13401 5 5 8.13401 5 12C5 15.866 8.13401 19 12 19C15.866 19 19 15.866 19 12C19 8.13401 15.866 5 12 5ZM3 12C3 7.02944 7.02944 3 12 3C16.9706 3 21 7.02944 21 12C21 16.9706 16.9706 21 12 21C7.02944 21 3 16.9706 3 12Z" 1165 }), /* @__PURE__ */ React.createElement("path", { 1166 className: "fill-gray-800", 1167 d: "M16.9497 7.05015C14.2161 4.31648 9.78392 4.31648 7.05025 7.05015C6.65973 7.44067 6.02656 7.44067 5.63604 7.05015C5.24551 6.65962 5.24551 6.02646 5.63604 5.63593C9.15076 2.12121 14.8492 2.12121 18.364 5.63593C18.7545 6.02646 18.7545 6.65962 18.364 7.05015C17.9734 7.44067 17.3403 7.44067 16.9497 7.05015Z" 1168 }))), /* @__PURE__ */ React.createElement("div", null, /* @__PURE__ */ React.createElement("p", { 1169 className: "mt-2 text-center font-bold text-white" 1170 }, "Daten werden geladen..."))), /* @__PURE__ */ React.createElement(Outlet, { 1171 context: { showPendingSpinner } 1172 }), gtaConsent || gtaConsent === false ? null : /* @__PURE__ */ React.createElement(CookiesBanner, null)), /* @__P
1172URE__ */ React.createElement(ExposeAppConfig, { 1173 appConfig: ENV, 1174 nonce: "" 1175 })); 1176} 1177function CatchBoundary() { 1178 const { button } = default_default; 1179 const { base, color } = button; 1180 const caught = useCatch(); 1181 return /* @__PURE__ */ React.createElement("html", { 1182 className: "h-full", 1183 lang: "de" 1184 }, /* @__PURE__ */ React.createElement("head", null, /* @__PURE__ */ React.createElement("meta", { 1185 charSet: "utf-8" 1186 }), /* @__PURE__ */ React.createElement("title", null, "404 Seite nicht gefunden"), /* @__PURE__ */ React.createElement(Links, null)), /* @__PURE__ */ React.createElement("body", { 1187 className: "h-full" 1188 }, /* @__PURE__ */ React.createElement("div", { 1189 className: "flex min-h-full flex-col bg-white pt-16 pb-12" 1190 }, /* @__PURE__ */ React.createElement("main", { 1191 className: "mx-auto flex w-full max-w-7xl flex-grow flex-col justify-center px-4 sm:px-6 lg:px-8" 1192 }, /* @__PURE__ */ React.createElement("div", { 1193 className: "py-16" 1194 }, /* @__PURE__ */ React.createElement("div", { 1195 className: "text-center" 1196 }, /* @__PURE__ */ React.createElement("p", { 1197 className: "text-base font-bold uppercase tracking-wide text-btnColor-secondary" 1198 }, caught.status, " error"), /* @__PURE__ */ React.createElement("h1", { 1199 className: "mt-2 text-4xl font-bold tracking-tight text-gray-900 sm:text-5xl" 1200 }, caught.statusText === "Not Found" ? "Seite nicht gefunden" : caught.statusText), /* @__PURE__ */ React.createElement("p", { 1201 className: "mt-2 text-base text-gray-500" 1202 }, caught.data ? caught.data : "Es tut uns leid. Die Seite, die du suchst, gibt es nicht."), /* @__PURE__ */ React.createElement("div", { 1203 className: "mt-6" 1204 }, /* @__PURE__ */ React.createElement(Link, { 1205 type: "button", 1206 to: "/media/home", 1207 className: class_names_default(base, color.primary, "px-9") 1208 }, "Zur\xFCck zur Startseite")))))))); 1209} 1210var ErrorBoundary2 = ({ error }) => { 1211 return /* @__PURE__ */ React.createElement(Document, { 1212 title: "Error!" 1213 }, /* @__PURE__ */ React.createElement(ErrorBoundary, { 1214 error 1215 })); 1216}; 1217export { 1218 CatchBoundary, 1219 ErrorBoundary2 as ErrorBoundary, 1220 AppWithProviders as default, 1221 links, 1222 meta, 1223 unstable_shouldReload 1224}; 1225//# sourceMappingURL=/build/root-WHTWSDWP.js.map
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.