Success-story migration + new plugins + JSON/UX polish

- Success Stories: full migration from old site (48/48, audited),
  markets n:n, quotation content block, columns content block,
  pretty SEO detail URLs via SuccessStoryPathRewrite middleware,
  list/detail split (list page 4 / story page), detailUrl/backUrl
- New plugins: VITEC Locations (grid/list/map + RTE map text),
  VITEC Customer Logos (color/bw logic, only-show-selected),
  VITEC Card (one plugin for product/story/market/solution
  with reloading FlexForm + custom backend preview renderer)
- Eventlist: layout dropdown (list/grid/teaserbar) in settings
- Hero section CB: Images/Video tabs, background video + overlay
- Product JSON: full category rootline (parents), fixed missing
  ConnectionPool import (all-products crash), category tree map
- Backend preview CSS: container-query responsive (narrow columns)
- Docs: ISO architecture spec, root + extension READMEs

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
khaccountandClaude Fable 5 committed 2026-07-24 09:53:33 +02:00
1 parent aafcb5dcb6
commit eae40f4286
110 files changed
+8502 -279

No files matched your search

+4
View File
@@ -168,3 +168,7 @@ bash fix-asset-perms.sh # fix asset permission
[GPL‑2.0‑or‑later](LICENSE) — © evomedien. [GPL‑2.0‑or‑later](LICENSE) — © evomedien.
<div align="center"><sub>VITEC · TYPO3 headless backend + React front end</sub></div> <div align="center"><sub>VITEC · TYPO3 headless backend + React front end</sub></div>
vitecdev
17ZJfy75sJoU68J6
+1
View File
@@ -22,6 +22,7 @@
"friendsoftypo3/headless": "^5.0@rc", "friendsoftypo3/headless": "^5.0@rc",
"georgringer/news": "^14.0", "georgringer/news": "^14.0",
"netzbewegung/nb-headless-content-blocks": "^0.0.23", "netzbewegung/nb-headless-content-blocks": "^0.0.23",
"plan2net/backend-category-hierarchy": "^14.0",
"typo3/cms-backend": "^14.3", "typo3/cms-backend": "^14.3",
"typo3/cms-belog": "^14.3", "typo3/cms-belog": "^14.3",
"typo3/cms-beuser": "^14.3", "typo3/cms-beuser": "^14.3",
Generated
+64 -4
View File
@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically" "This file is @generated automatically"
], ],
"content-hash": "894f07b60885efbdf0a5979a6879e631", "content-hash": "09c5be5fca6a03ab5f0ed81662f20f36",
"packages": [ "packages": [
{ {
"name": "b13/container", "name": "b13/container",
@@ -2834,6 +2834,66 @@
}, },
"time": "2026-07-08T07:01:06+00:00" "time": "2026-07-08T07:01:06+00:00"
}, },
{
"name": "plan2net/backend-category-hierarchy",
"version": "14.0.0",
"source": {
"type": "git",
"url": "https://github.com/plan2net/backend-category-hierarchy.git",
"reference": "ee40a998fadba5545401425a0bc224482d0f643a"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/plan2net/backend-category-hierarchy/zipball/ee40a998fadba5545401425a0bc224482d0f643a",
"reference": "ee40a998fadba5545401425a0bc224482d0f643a",
"shasum": ""
},
"require": {
"php": "^8.2",
"typo3/cms-backend": "^13.4 || ^14.0",
"typo3/cms-core": "^13.4 || ^14.0"
},
"require-dev": {
"friendsofphp/php-cs-fixer": "^3.64",
"phpstan/extension-installer": "^1.4",
"phpstan/phpstan": "^2.0",
"phpstan/phpstan-phpunit": "^2.0",
"phpstan/phpstan-strict-rules": "^2.0",
"phpunit/phpunit": "^11.5",
"typo3/testing-framework": "^9.3 || ^10.0",
"vimeo/psalm": "^6.0"
},
"suggest": {
"georgringer/news": "*"
},
"type": "typo3-cms-extension",
"extra": {
"typo3/cms": {
"extension-key": "backend_category_hierarchy"
}
},
"autoload": {
"psr-4": {
"Plan2net\\BackendCategoryHierarchy\\": "Classes/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"GPL-2.0-or-later"
],
"description": "Show category hierarchy information in list view",
"homepage": "https://plan2.net",
"keywords": [
"TYPO3 CMS",
"backend",
"category"
],
"support": {
"issues": "https://github.com/plan2net/backend-category-hierarchy/issues",
"source": "https://github.com/plan2net/backend-category-hierarchy/tree/14.0.0"
},
"time": "2026-05-17T07:58:49+00:00"
},
{ {
"name": "psr/cache", "name": "psr/cache",
"version": "3.0.0", "version": "3.0.0",
@@ -9411,10 +9471,10 @@
}, },
"prefer-stable": false, "prefer-stable": false,
"prefer-lowest": false, "prefer-lowest": false,
"platform": {}, "platform": [],
"platform-dev": {}, "platform-dev": [],
"platform-overrides": { "platform-overrides": {
"php": "8.4.0" "php": "8.4.0"
}, },
"plugin-api-version": "2.9.0" "plugin-api-version": "2.3.0"
} }
+22
View File
@@ -69,4 +69,26 @@ routeEnhancers:
aspects: aspects:
news-title: news-title:
type: NewsTitle type: NewsTitle
UsecaseDetail:
type: Extbase
limitToPages:
- 4
- 26
- 25
extension: Vitec
plugin: Usecaseshow
routes:
-
routePath: '/{usecase_slug}'
_controller: 'Usecase::show'
_arguments:
usecase_slug: usecase
defaultController: 'Usecase::show'
requirements:
usecase_slug: '[a-zA-Z0-9\-]+'
aspects:
usecase_slug:
type: PersistedAliasMapper
tableName: tx_vitec_domain_model_usecase
routeFieldName: slug
websiteTitle: '' websiteTitle: ''
@@ -0,0 +1,708 @@
<?php
declare(strict_types=1);
namespace Evomedien\Vitec\Command;
use Symfony\Component\Console\Attribute\AsCommand;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Output\OutputInterface;
use TYPO3\CMS\Core\Core\Bootstrap;
use TYPO3\CMS\Core\Database\ConnectionPool;
use TYPO3\CMS\Core\DataHandling\DataHandler;
use TYPO3\CMS\Core\Resource\ResourceFactory;
use TYPO3\CMS\Core\Utility\GeneralUtility;
/**
* One-time (idempotent) migration of the old vitec.com Success Stories into
* the new tx_vitec_domain_model_usecase model.
*
* Source: migrations JSON produced on the OLD site by
* migrations/export_success_stories.php, plus the staged original files under
* fileadmin/success_stories_import/ (same relative identifiers as on the old
* site).
*
* Mapping (see analysis in the session / architecture spec):
* pages(title,slug,SEO) -> usecase base + seo_*
* mask_web__markets_card -> subtitle, card_image, customer_logo
* mask_web__success_story__promo -> hero (bgimage, overlay color, theme)
* use_case element (APP) -> industries (sys_category) -> markets MM
* page content (flux tree) -> inline content_elements:
* text -> text CE (blockquote quotes -> vitec_quotation)
* image/textmedia -> image/textmedia CE + FAL
* html -> html CE
* 2-column flux rows -> vitec_columns content block
*
* Usage:
* vendor/bin/typo3 vitec:import-success-stories --dry-run
* vendor/bin/typo3 vitec:import-success-stories --only=meydan-racecourse
* vendor/bin/typo3 vitec:import-success-stories --force (reimport existing)
*/
#[AsCommand(
name: 'vitec:import-success-stories',
description: 'Import success stories from the old-website export JSON into the usecase model'
)]
final class ImportSuccessStoriesCommand extends Command
{
private const TABLE = 'tx_vitec_domain_model_usecase';
private const FILES_BASE = '/success_stories_import';
/** Old market2 token -> canonical industry title. */
private const INDUSTRY_TOKENS = [
'sports' => 'Sports', 'venues' => 'Venues', 'government' => 'Government',
'military' => 'Military', 'corporate' => 'Corporate', 'broadcast' => 'Broadcast',
'education' => 'Education', 'healthcare' => 'Healthcare',
'hospitality' => 'Hospitality & Leisure', 'leisure' => 'Hospitality & Leisure',
'accomodation' => 'Accommodation', 'accommodation' => 'Accommodation',
];
/** CTypes that never become content elements. */
private const SKIP_CTYPES = [
'shortcut', 'div', 'fluxbs5templates_buttonlink', 'mask_web__jumpmenu',
'mask_web__markets_card', 'mask_web__success_story__full_width_promo',
'mask_web__success_top_story', 'mask_use_case', 'header',
];
private const CONTAINER_CTYPES = ['fluxbs5templates_fluidrow', 'fluxbs5templates_container'];
private array $export = [];
private array $pagesByUid = [];
private array $contentByUid = [];
private array $childrenByParent = []; // parentCeUid => list of child CEs
private array $rootsByPid = []; // pageUid => list of colPos-0/5 CEs
private array $cardByPageUid = [];
private array $useCaseByKey = [];
private array $fileRefs = []; // "table:uid:field" => refs[]
private array $catTitleByUid = [];
private array $catsByCeUid = [];
private array $marketUidByTitle = [];
private array $fileUidCache = [];
private string $collectionTable = '';
protected function configure(): void
{
$this->addOption('file', null, InputOption::VALUE_REQUIRED, 'Path to success_stories_export.json', 'var/transient/success_stories_export.json');
$this->addOption('pid', null, InputOption::VALUE_REQUIRED, 'Storage pid for new usecase records (default: pid of existing records)');
$this->addOption('only', null, InputOption::VALUE_REQUIRED, 'Import only the story whose slug tail matches');
$this->addOption('dry-run', null, InputOption::VALUE_NONE, 'Analyse and report only, write nothing');
$this->addOption('force', null, InputOption::VALUE_NONE, 'Delete + recreate stories that already exist (matched by slug)');
}
protected function execute(InputInterface $input, OutputInterface $output): int
{
Bootstrap::initializeBackendAuthentication();
$file = (string)$input->getOption('file');
if (!is_file($file)) {
$output->writeln("<error>Export file not found: $file</error>");
return Command::FAILURE;
}
$this->export = json_decode((string)file_get_contents($file), true) ?? [];
if (!isset($this->export['pages'])) {
$output->writeln('<error>Export JSON malformed (no pages key)</error>');
return Command::FAILURE;
}
$dryRun = (bool)$input->getOption('dry-run');
$force = (bool)$input->getOption('force');
$only = (string)($input->getOption('only') ?? '');
$this->buildIndexes();
$storagePid = $this->resolveStoragePid($input->getOption('pid'));
if ($storagePid <= 0) {
$output->writeln('<error>No storage pid — pass --pid or create one usecase record manually first.</error>');
return Command::FAILURE;
}
$this->collectionTable = (string)($GLOBALS['TCA']['tt_content']['columns']['vitec_items']['config']['foreign_table'] ?? '');
$rootUids = array_map(static fn(array $r): int => (int)$r['uid'], $this->export['storyRoots']);
$stories = array_values(array_filter(
$this->export['pages'],
static fn(array $p): bool => (int)($p['sys_language_uid'] ?? 0) === 0 && in_array((int)$p['pid'], $rootUids, true)
));
$output->writeln(sprintf(
'<info>%d stories in export · storage pid %d · %s</info>',
count($stories),
$storagePid,
$dryRun ? 'DRY-RUN' : 'LIVE'
));
if (!$dryRun) {
$this->ensureMarkets($output, $storagePid);
}
$summary = [];
foreach ($stories as $page) {
$slugTail = basename((string)$page['slug']);
if ($only !== '' && $slugTail !== $only) {
continue;
}
try {
$summary[] = $this->importStory($page, $storagePid, $dryRun, $force, $output);
} catch (\Throwable $e) {
$summary[] = [$slugTail, 'ERROR: ' . $e->getMessage(), 0, 0, 0];
$output->writeln("<error> $slugTail: {$e->getMessage()}</error>");
}
}
$output->writeln('');
$output->writeln(str_pad('story', 55) . str_pad('action', 12) . str_pad('CEs', 5) . str_pad('imgs', 6) . 'markets');
foreach ($summary as [$slug, $action, $ces, $imgs, $mk]) {
$output->writeln(str_pad(substr($slug, 0, 53), 55) . str_pad($action, 12) . str_pad((string)$ces, 5) . str_pad((string)$imgs, 6) . $mk);
}
return Command::SUCCESS;
}
// =========================================================== index building
private function buildIndexes(): void
{
foreach ($this->export['pages'] as $p) {
$this->pagesByUid[(int)$p['uid']] = $p;
}
$allCes = array_merge($this->export['content'], $this->export['storyElementsElsewhere']);
foreach ($allCes as $c) {
$this->contentByUid[(int)$c['uid']] = $c;
}
// flux tree: colPos >= 100 encodes parentUid*100 + column
foreach ($this->export['content'] as $c) {
$colPos = (int)($c['colPos'] ?? 0);
if ($colPos >= 100 && isset($this->contentByUid[intdiv($colPos, 100)])) {
$this->childrenByParent[intdiv($colPos, 100)][] = $c;
} else {
$this->rootsByPid[(int)$c['pid']][] = $c;
}
}
foreach ($this->childrenByParent as &$list) {
usort($list, static fn($a, $b) => [($a['colPos'] % 100), $a['sorting']] <=> [($b['colPos'] % 100), $b['sorting']]);
}
unset($list);
foreach ($this->rootsByPid as &$list) {
usort($list, static fn($a, $b) => $a['sorting'] <=> $b['sorting']);
}
unset($list);
// story card by target page uid (tx_mask_web__markets_card_link = "427" | "t3://page?uid=427")
foreach ($allCes as $c) {
if (($c['CType'] ?? '') !== 'mask_web__markets_card') {
continue;
}
$link = (string)($c['tx_mask_web__markets_card_link'] ?? '');
if (preg_match('/uid=(\d+)/', $link, $m)) {
$target = (int)$m[1];
} elseif (ctype_digit(trim($link))) {
$target = (int)trim($link);
} else {
continue;
}
// prefer the newest non-hidden card per target
$known = $this->cardByPageUid[$target] ?? null;
if ($known === null || ((int)$c['tstamp'] > (int)$known['tstamp'] && empty($c['hidden']))) {
$this->cardByPageUid[$target] = $c;
}
}
// use_case (APP) elements by normalised title
foreach ($allCes as $c) {
if (($c['CType'] ?? '') !== 'mask_use_case') {
continue;
}
foreach ([(string)($c['header'] ?? ''), (string)($c['tx_mask_tile_customer'] ?? '')] as $t) {
$k = $this->normTitle($t);
if ($k !== '' && !isset($this->useCaseByKey[$k])) {
$this->useCaseByKey[$k] = $c;
}
}
}
foreach ($this->export['fileReferences'] as $r) {
if (!empty($r['hidden'])) {
continue;
}
$this->fileRefs[$r['tablenames'] . ':' . $r['uid_foreign'] . ':' . $r['fieldname']][] = $r;
}
foreach ($this->export['categories'] as $c) {
$this->catTitleByUid[(int)$c['uid']] = (string)$c['title'];
}
foreach ($this->export['categoryAssignments'] as $a) {
if ($a['tablenames'] === 'tt_content') {
$this->catsByCeUid[(int)$a['uid_foreign']][] = $this->catTitleByUid[(int)$a['category_uid']] ?? '';
}
}
}
/** Resolve a content-blocks column name: prefixed variant if it exists in TCA. */
private function cbCol(string $table, string $name): string
{
return isset($GLOBALS['TCA'][$table]['columns']['vitec_' . $name]) ? 'vitec_' . $name : $name;
}
private function normTitle(string $t): string
{
return preg_replace('/[^a-z0-9]/', '', strtolower($t)) ?? '';
}
private function refs(string $table, int $uid, string $field): array
{
return $this->fileRefs[$table . ':' . $uid . ':' . $field] ?? [];
}
// ============================================================== market setup
private function resolveStoragePid(mixed $option): int
{
if ($option !== null && (int)$option > 0) {
return (int)$option;
}
$row = GeneralUtility::makeInstance(ConnectionPool::class)
->getConnectionForTable(self::TABLE)
->select(['pid'], self::TABLE, ['deleted' => 0], [], [], 1)
->fetchAssociative();
return (int)($row['pid'] ?? 0);
}
/** Ensure one market record per canonical industry; fill title->uid map. */
private function ensureMarkets(OutputInterface $output, int $fallbackPid): void
{
$conn = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable('tx_vitec_domain_model_market');
$rows = $conn->select(['uid', 'title', 'pid'], 'tx_vitec_domain_model_market', ['deleted' => 0])->fetchAllAssociative();
$marketPid = $fallbackPid;
foreach ($rows as $r) {
$this->marketUidByTitle[$this->normTitle((string)$r['title'])] = (int)$r['uid'];
$marketPid = (int)$r['pid'];
}
$canonical = array_unique(array_values(self::INDUSTRY_TOKENS));
$datamap = [];
foreach ($canonical as $i => $title) {
if (!isset($this->marketUidByTitle[$this->normTitle($title)])) {
$datamap['tx_vitec_domain_model_market']['NEWMARKET' . $i] = ['pid' => $marketPid, 'title' => $title];
}
}
if ($datamap !== []) {
$dh = GeneralUtility::makeInstance(DataHandler::class);
$dh->start($datamap, []);
$dh->process_datamap();
foreach ($datamap['tx_vitec_domain_model_market'] as $key => $fields) {
$uid = (int)($dh->substNEWwithIDs[$key] ?? 0);
if ($uid > 0) {
$this->marketUidByTitle[$this->normTitle($fields['title'])] = $uid;
$output->writeln(" <info>created market: {$fields['title']} ($uid)</info>");
}
}
}
}
/** @return string[] canonical industry titles for one story */
private function industriesForStory(array $page, ?array $card, ?array $useCase): array
{
$out = [];
if ($useCase !== null) {
foreach ($this->catsByCeUid[(int)$useCase['uid']] ?? [] as $t) {
if ($t !== '') {
$out[] = $t;
}
}
}
if ($out === [] && $card !== null) {
$tokens = preg_split('/\s+/', strtolower((string)($card['tx_mask_markets_card_market2'] ?? ''))) ?: [];
foreach ($tokens as $tok) {
if (isset(self::INDUSTRY_TOKENS[$tok])) {
$out[] = self::INDUSTRY_TOKENS[$tok];
}
}
}
return array_values(array_unique($out));
}
// =============================================================== story import
/** @return array{0:string,1:string,2:int,3:int,4:string} */
private function importStory(array $page, int $storagePid, bool $dryRun, bool $force, OutputInterface $output): array
{
$pageUid = (int)$page['uid'];
$slugTail = basename((string)$page['slug']);
$slug = '/' . $slugTail;
$card = $this->cardByPageUid[$pageUid] ?? null;
$useCase = $this->useCaseByKey[$this->normTitle((string)$page['title'])] ?? null;
$promo = null;
foreach ($this->rootsByPid[$pageUid] ?? [] as $ce) {
if ($ce['CType'] === 'mask_web__success_story__full_width_promo') {
$promo = $ce;
break;
}
}
$industries = $this->industriesForStory($page, $card, $useCase);
$ceSpecs = $this->transformContent($pageUid);
// ---- existing?
$conn = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable(self::TABLE);
$existing = $conn->select(['uid'], self::TABLE, ['slug' => $slug, 'deleted' => 0])->fetchAssociative()
?: $conn->select(['uid'], self::TABLE, ['slug' => $slugTail, 'deleted' => 0])->fetchAssociative();
$imgCount = 0;
foreach ($ceSpecs as $s) {
$imgCount += count($s['files'] ?? []);
foreach ($s['items'] ?? [] as $it) {
$imgCount += count($it['files'] ?? []);
}
}
if ($dryRun) {
$output->writeln(sprintf(
' <comment>%s</comment> ces=%d quotes=%d cols=%d imgs=%d markets=[%s] card=%s uc=%s hero=%s%s',
$slugTail,
count($ceSpecs),
count(array_filter($ceSpecs, fn($s) => $s['CType'] === 'vitec_quotation')),
count(array_filter($ceSpecs, fn($s) => $s['CType'] === 'vitec_columns')),
$imgCount,
implode(',', $industries),
$card ? 'y' : 'MISSING',
$useCase ? 'y' : '-',
$promo ? 'y' : 'MISSING',
$existing ? ' EXISTS(uid=' . $existing['uid'] . ')' : ''
));
return [$slugTail, $existing ? 'dry(exists)' : 'dry', count($ceSpecs), $imgCount, implode(',', $industries)];
}
if ($existing) {
if (!$force) {
return [$slugTail, 'skipped', 0, 0, ''];
}
$dh = GeneralUtility::makeInstance(DataHandler::class);
$dh->start([], [self::TABLE => [(int)$existing['uid'] => ['delete' => 1]]]);
$dh->process_cmdmap();
}
// ---- assemble datamap
$datamap = [];
$storyKey = 'NEWSTORY1';
$refCounter = 0;
$newRef = function (string $identifier, string $table, string $key, string $field, array $meta = []) use (&$datamap, &$refCounter, $storagePid): ?string {
$fileUid = $this->fileUidFor($identifier);
if ($fileUid === null) {
return null;
}
$refKey = 'NEWREF' . (++$refCounter);
$datamap['sys_file_reference'][$refKey] = array_filter([
'pid' => $storagePid,
'uid_local' => 'sys_file_' . $fileUid,
'tablenames' => $table,
'uid_foreign' => $key,
'fieldname' => $field,
'title' => $meta['title'] ?? null,
'alternative' => $meta['alternative'] ?? null,
'description' => $meta['description'] ?? null,
'crop' => $meta['crop'] ?? null,
], static fn($v) => $v !== null && $v !== '');
return $refKey;
};
$attach = function (array $refs, string $table, string $key, string $newField) use ($newRef): string {
$ids = [];
foreach ($refs as $r) {
$id = $newRef((string)$r['identifier'], $table, $key, $newField, $r);
if ($id !== null) {
$ids[] = $id;
}
}
return implode(',', $ids);
};
// story base fields
$subtitle = trim(strip_tags((string)($card['tx_mask_web__markets_card_frontttext'] ?? '')));
if ($subtitle === '' && $useCase !== null) {
$subtitle = (string)($useCase['tx_mask_tile_teaser'] ?? '');
}
$textColor = strtolower((string)($promo['tx_mask_web__success_story__full_width_promo_textcolor'] ?? ''));
$overlay = (string)($promo['tx_mask_web__success_story__full_width_promo_color'] ?? '');
$story = [
'pid' => $storagePid,
'title' => (string)$page['title'],
'slug' => $slug,
'subtitle' => $subtitle,
'teaser' => (string)($page['abstract'] ?? '') !== '' ? (string)$page['abstract'] : (string)($page['description'] ?? ''),
'seo_title' => (string)($page['seo_title'] ?? ''),
'seo_description' => (string)($page['description'] ?? ''),
'og_title' => (string)($page['og_title'] ?? ''),
'og_description' => (string)($page['og_description'] ?? ''),
'twitter_title' => (string)($page['twitter_title'] ?? ''),
'twitter_description' => (string)($page['twitter_description'] ?? ''),
'no_index' => (int)($page['no_index'] ?? 0),
'no_follow' => (int)($page['no_follow'] ?? 0),
'hero_overlay_color' => $overlay,
'hero_overlay_opacity' => $overlay !== '' ? 0.4 : 0,
'text_theme' => in_array($textColor, ['#fff', '#ffffff', 'white'], true) ? 'light' : 'dark',
'markets' => implode(',', array_filter(array_map(
fn(string $t): int => $this->marketUidByTitle[$this->normTitle($t)] ?? 0,
$industries
))),
];
// FAL: card image, logo, hero, og/twitter
if ($card !== null) {
$story['card_image'] = $attach(
array_slice($this->refs('tt_content', (int)$card['uid'], 'tx_mask_web__markets_card_frontimage'), 0, 1),
self::TABLE, $storyKey, 'card_image'
);
$story['customer_logo'] = $attach(
array_slice($this->refs('tt_content', (int)$card['uid'], 'tx_mask_web__markets_card_customerlogo'), 0, 1),
self::TABLE, $storyKey, 'customer_logo'
);
}
$heroRefs = $promo !== null
? $this->refs('tt_content', (int)$promo['uid'], 'tx_mask_web__success_story__full_width_promo_image')
: [];
if ($heroRefs === []) {
$heroRefs = $this->refs('pages', $pageUid, 'heroimage_big');
}
$story['hero_bgimage'] = $attach(array_slice($heroRefs, 0, 1), self::TABLE, $storyKey, 'hero_bgimage');
$story['og_image'] = $attach(array_slice($this->refs('pages', $pageUid, 'og_image'), 0, 1), self::TABLE, $storyKey, 'og_image');
$story['twitter_image'] = $attach(array_slice($this->refs('pages', $pageUid, 'twitter_image'), 0, 1), self::TABLE, $storyKey, 'twitter_image');
// content elements
$ceKeys = [];
$ceCounter = 0;
$itemCounter = 0;
foreach ($ceSpecs as $spec) {
$ceKey = 'NEWCE' . (++$ceCounter);
$fields = $spec['fields'];
$fields['pid'] = $storagePid;
$fields['CType'] = $spec['CType'];
$fields['colPos'] = 999;
foreach ($spec['files'] ?? [] as $f) {
$fields[$f['field']] = $attach($f['refs'], 'tt_content', $ceKey, $f['field']);
}
if (($spec['CType'] === 'vitec_columns') && $this->collectionTable !== '' && !empty($spec['items'])) {
$itemKeys = [];
foreach ($spec['items'] as $item) {
$itemKey = 'NEWITEM' . (++$itemCounter);
$itemFields = $item['fields'];
$itemFields['pid'] = $storagePid;
foreach ($item['files'] ?? [] as $f) {
$itemFields[$f['field']] = $attach($f['refs'], $this->collectionTable, $itemKey, $f['field']);
}
$datamap[$this->collectionTable][$itemKey] = $itemFields;
$itemKeys[] = $itemKey;
}
$fields[$this->cbCol('tt_content', 'items')] = implode(',', $itemKeys);
}
$datamap['tt_content'][$ceKey] = $fields;
$ceKeys[] = $ceKey;
}
$story['content_elements'] = implode(',', $ceKeys);
$datamap[self::TABLE][$storyKey] = $story;
$dh = GeneralUtility::makeInstance(DataHandler::class);
$dh->start($datamap, []);
$dh->process_datamap();
if ($dh->errorLog !== []) {
throw new \RuntimeException('DataHandler: ' . implode(' | ', array_slice($dh->errorLog, 0, 3)));
}
return [$slugTail, $existing ? 'reimported' : 'created', count($ceSpecs), $imgCount, implode(',', $industries)];
}
// ========================================================== content transform
/** @return array<int,array<string,mixed>> ordered CE specs */
private function transformContent(int $pageUid): array
{
$specs = [];
$roots = $this->rootsByPid[$pageUid] ?? [];
// intro (colPos 5): hero subline — first element, CTA buttons stripped
foreach ($roots as $ce) {
if ((int)$ce['colPos'] === 5 && $ce['CType'] === 'text' && !empty($ce['bodytext'])) {
$body = preg_replace('/<p[^>]*>(?:(?!<\/p>).)*btn(?:(?!<\/p>).)*<\/p>/is', '', (string)$ce['bodytext']) ?? '';
if (trim(strip_tags($body)) !== '') {
$specs[] = ['CType' => 'text', 'fields' => ['header' => '', 'bodytext' => trim($body)], 'files' => []];
}
}
}
foreach ($roots as $ce) {
if ((int)$ce['colPos'] === 0) {
$this->transformCe($ce, $specs);
}
}
return $specs;
}
private function transformCe(array $ce, array &$specs): void
{
$ctype = (string)$ce['CType'];
if (in_array($ctype, self::SKIP_CTYPES, true)) {
return;
}
if (in_array($ctype, self::CONTAINER_CTYPES, true)) {
$this->transformContainer($ce, $specs);
return;
}
switch ($ctype) {
case 'text':
$specs[] = $this->textOrQuoteSpec($ce);
break;
case 'image':
case 'textmedia':
$field = $ctype === 'image' ? 'image' : 'assets';
$spec = [
'CType' => $ctype,
'fields' => array_filter([
'header' => (string)($ce['header'] ?? ''),
'header_layout' => (int)($ce['header_layout'] ?? 0),
'bodytext' => (string)($ce['bodytext'] ?? ''),
], static fn($v) => $v !== '' && $v !== 0),
'files' => [],
];
$refs = $this->refs('tt_content', (int)$ce['uid'], $field);
if ($refs !== []) {
$spec['files'][] = ['field' => $field, 'refs' => $refs];
}
if ($spec['files'] !== [] || ($spec['fields']['bodytext'] ?? '') !== '') {
$specs[] = $spec;
}
break;
case 'html':
if (!empty($ce['bodytext'])) {
$specs[] = ['CType' => 'html', 'fields' => ['bodytext' => (string)$ce['bodytext']], 'files' => []];
}
break;
default:
// unknown → keep text-ish content if any
if (!empty($ce['bodytext']) || !empty($ce['header'])) {
$specs[] = ['CType' => 'text', 'fields' => [
'header' => (string)($ce['header'] ?? ''),
'bodytext' => (string)($ce['bodytext'] ?? ''),
], 'files' => []];
}
}
}
/** Two clean columns -> vitec_columns; everything else flattens in order. */
private function transformContainer(array $ce, array &$specs): void
{
$children = $this->childrenByParent[(int)$ce['uid']] ?? [];
if ($children === []) {
return;
}
$byCol = [];
foreach ($children as $child) {
$byCol[(int)$child['colPos'] % 100][] = $child;
}
ksort($byCol);
$isSimple = static fn(array $c): bool => in_array($c['CType'], ['text', 'image'], true)
&& stripos((string)($c['bodytext'] ?? ''), '<blockquote') === false;
$cols = array_keys($byCol);
$allSimple = count($cols) === 2 && count($children) <= 4
&& array_reduce($children, static fn($ok, $c) => $ok && $isSimple($c), true);
if ($allSimple) {
$items = [];
foreach ($byCol as $colIdx => $colCes) {
$side = $colIdx === $cols[0] ? 'left' : 'right';
foreach ($colCes as $c) {
$t = $this->collectionTable;
if ($c['CType'] === 'text') {
$items[] = ['fields' => [
$this->cbCol($t, 'column') => $side, $this->cbCol($t, 'item_type') => 'text',
$this->cbCol($t, 'headline') => (string)($c['header'] ?? ''),
$this->cbCol($t, 'text') => (string)($c['bodytext'] ?? ''),
], 'files' => []];
} else {
$refs = $this->refs('tt_content', (int)$c['uid'], 'image');
$items[] = ['fields' => [
$this->cbCol($t, 'column') => $side, $this->cbCol($t, 'item_type') => 'image',
$this->cbCol($t, 'headline') => (string)($c['header'] ?? ''),
], 'files' => $refs !== [] ? [['field' => $this->cbCol($t, 'image'), 'refs' => array_slice($refs, 0, 1)]] : []];
}
}
}
$specs[] = [
'CType' => 'vitec_columns',
'fields' => ['header' => (string)($ce['header'] ?? ''), $this->cbCol('tt_content', 'layout') => 'cols_50_50'],
'files' => [],
'items' => $items,
];
return;
}
// flatten: children first; the container header only becomes a heading
// when the container actually contributed content (skips e.g. the old
// "Related Success Stories" section whose children are all shortcuts).
$childSpecs = [];
foreach ($byCol as $colCes) {
foreach ($colCes as $child) {
$this->transformCe($child, $childSpecs);
}
}
$header = trim((string)($ce['header'] ?? ''));
if ($childSpecs !== [] && $header !== '' && !str_starts_with($header, '///')) {
$specs[] = ['CType' => 'text', 'fields' => ['header' => $header], 'files' => []];
}
foreach ($childSpecs as $cs) {
$specs[] = $cs;
}
}
/** blockquote text CEs become vitec_quotation; the rest stay text. */
private function textOrQuoteSpec(array $ce): array
{
$body = (string)($ce['bodytext'] ?? '');
$header = (string)($ce['header'] ?? '');
if (stripos($body, '<blockquote') !== false) {
$quote = $body;
$name = '';
$position = '';
if (preg_match('/<blockquote[^>]*>(.*)<\/blockquote>/is', $body, $m)) {
$inner = $m[1];
// attribution paragraph: <p><strong>— Name</strong><br/>Position</p>
if (preg_match('/<p>\s*<strong>\s*(?:—|&mdash;|-)?\s*(.*?)<\/strong>\s*(?:<br\s*\/?>)?\s*(.*?)<\/p>\s*$/is', $inner, $a)) {
$name = trim(strip_tags($a[1]));
$position = trim(strip_tags($a[2]));
$inner = (string)preg_replace('/<p>\s*<strong>\s*(?:—|&mdash;|-)?.*?<\/p>\s*$/is', '', $inner);
}
$quote = trim(strip_tags($inner));
$quote = trim($quote, "“”\"' \u{201C}\u{201D}");
}
return ['CType' => 'vitec_quotation', 'fields' => [
$this->cbCol('tt_content', 'quote') => $quote,
$this->cbCol('tt_content', 'quote_name') => $name,
$this->cbCol('tt_content', 'quote_position') => $position,
], 'files' => []];
}
return ['CType' => 'text', 'fields' => array_filter([
'header' => strcasecmp($header, 'Quote') === 0 ? '' : $header,
'header_layout' => (int)($ce['header_layout'] ?? 0),
'bodytext' => $body,
], static fn($v) => $v !== '' && $v !== 0), 'files' => []];
}
// ==================================================================== files
/** Old-site identifier -> new-site sys_file uid (staged under FILES_BASE). */
private function fileUidFor(string $identifier): ?int
{
if (isset($this->fileUidCache[$identifier])) {
return $this->fileUidCache[$identifier] ?: null;
}
try {
$file = GeneralUtility::makeInstance(ResourceFactory::class)
->getFileObjectFromCombinedIdentifier('1:' . self::FILES_BASE . $identifier);
$uid = $file !== null ? (int)$file->getUid() : 0;
} catch (\Throwable $e) {
$uid = 0;
}
$this->fileUidCache[$identifier] = $uid;
return $uid ?: null;
}
}
+21
View File
@@ -0,0 +1,21 @@
<?php
declare(strict_types=1);
namespace Evomedien\Vitec\Controller;
use Psr\Http\Message\ResponseInterface;
use TYPO3\CMS\Extbase\Mvc\Controller\ActionController;
/**
* CustomerController — Extbase registration target for the Customerlogos
* plugin. In headless mode the JSON output is produced by
* CustomerlogosJsonRenderer, not by this controller.
*/
class CustomerController extends ActionController
{
public function listAction(): ResponseInterface
{
return $this->htmlResponse();
}
}
+21
View File
@@ -0,0 +1,21 @@
<?php
declare(strict_types=1);
namespace Evomedien\Vitec\Controller;
use Psr\Http\Message\ResponseInterface;
use TYPO3\CMS\Extbase\Mvc\Controller\ActionController;
/**
* LocationController — Extbase registration target for the Locationlist
* plugin. In headless mode the JSON output is produced by
* LocationsJsonRenderer, not by this controller.
*/
class LocationController extends ActionController
{
public function listAction(): ResponseInterface
{
return $this->htmlResponse();
}
}
+21
View File
@@ -0,0 +1,21 @@
<?php
declare(strict_types=1);
namespace Evomedien\Vitec\Controller;
use Psr\Http\Message\ResponseInterface;
use TYPO3\CMS\Extbase\Mvc\Controller\ActionController;
/**
* ModelcardController — Extbase registration target for the VITEC Card
* plugin. In headless mode the JSON output is produced by
* ModelcardJsonRenderer, not by this controller.
*/
class ModelcardController extends ActionController
{
public function listAction(): ResponseInterface
{
return $this->htmlResponse();
}
}
@@ -13,6 +13,9 @@ use Evomedien\Vitec\UserFunc\DownloadcardJsonRenderer;
use Evomedien\Vitec\UserFunc\DownloadcardcollectionJsonRenderer; use Evomedien\Vitec\UserFunc\DownloadcardcollectionJsonRenderer;
use Evomedien\Vitec\UserFunc\DatasheetsJsonRenderer; use Evomedien\Vitec\UserFunc\DatasheetsJsonRenderer;
use Evomedien\Vitec\UserFunc\EventlistJsonRenderer; use Evomedien\Vitec\UserFunc\EventlistJsonRenderer;
use Evomedien\Vitec\UserFunc\LocationsJsonRenderer;
use Evomedien\Vitec\UserFunc\CustomerlogosJsonRenderer;
use Evomedien\Vitec\UserFunc\ModelcardJsonRenderer;
use Evomedien\Vitec\UserFunc\NewsJsonRenderer; use Evomedien\Vitec\UserFunc\NewsJsonRenderer;
use TYPO3\CMS\Core\Database\Connection; use TYPO3\CMS\Core\Database\Connection;
use TYPO3\CMS\Core\Database\ConnectionPool; use TYPO3\CMS\Core\Database\ConnectionPool;
@@ -111,6 +114,9 @@ final class ContainerChildrenProcessor implements DataProcessorInterface
'vitec_downloadcardcollection' => [DownloadcardcollectionJsonRenderer::class, 'downloadcardcollection'], 'vitec_downloadcardcollection' => [DownloadcardcollectionJsonRenderer::class, 'downloadcardcollection'],
'vitec_datasheets' => [DatasheetsJsonRenderer::class, 'datasheets'], 'vitec_datasheets' => [DatasheetsJsonRenderer::class, 'datasheets'],
'vitec_eventlist' => [EventlistJsonRenderer::class, 'eventlist'], 'vitec_eventlist' => [EventlistJsonRenderer::class, 'eventlist'],
'vitec_locationlist' => [LocationsJsonRenderer::class, 'locations'],
'vitec_customerlogos' => [CustomerlogosJsonRenderer::class, 'customerlogos'],
'vitec_modelcard' => [ModelcardJsonRenderer::class, 'card'],
'news_pi1' => [NewsJsonRenderer::class, 'news'], 'news_pi1' => [NewsJsonRenderer::class, 'news'],
'news_newsliststicky' => [NewsJsonRenderer::class, 'news'], 'news_newsliststicky' => [NewsJsonRenderer::class, 'news'],
'news_newsselectedlist' => [NewsJsonRenderer::class, 'news'], 'news_newsselectedlist' => [NewsJsonRenderer::class, 'news'],
@@ -0,0 +1,79 @@
<?php
declare(strict_types=1);
namespace Evomedien\Vitec\Middleware;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\MiddlewareInterface;
use Psr\Http\Server\RequestHandlerInterface;
use TYPO3\CMS\Core\Database\ConnectionPool;
use TYPO3\CMS\Core\Utility\GeneralUtility;
/**
* Pretty detail URLs for Success Stories.
*
* Public URL: /success-stories/<slug> (old-site SEO URLs)
* Real page: /success-stories/story/<slug> (subpage holding ONLY the
* usecaseshow plugin)
*
* TYPO3's page router always resolves /success-stories/<slug> to the LIST
* page (longest page-slug prefix), so the detail subpage could never answer
* that URL. This middleware rewrites the request path internally — before
* page resolution — whenever <slug> matches an existing (visible) success
* story. Real subpages of /success-stories are unaffected: no story match,
* no rewrite. The browser URL never changes.
*
* Exception-safe: any failure leaves the request untouched.
*/
final class SuccessStoryPathRewrite implements MiddlewareInterface
{
private const LIST_PATH = '/success-stories';
private const DETAIL_SEGMENT = 'story';
public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
{
$debug = 'no-match';
try {
$path = $request->getUri()->getPath();
if (preg_match('#^' . self::LIST_PATH . '/([a-zA-Z0-9\-]+)/?$#', $path, $m) === 1
&& $m[1] !== self::DETAIL_SEGMENT
) {
if ($this->isStorySlug($m[1])) {
$uri = $request->getUri()->withPath(
self::LIST_PATH . '/' . self::DETAIL_SEGMENT . '/' . $m[1]
);
$request = $request->withUri($uri);
$debug = 'rewritten';
} else {
$debug = 'slug-not-found:' . $m[1];
}
}
} catch (\Throwable $e) {
$debug = 'exception:' . substr($e->getMessage(), 0, 60);
}
// TEMP-DIAG header (remove after verification)
return $handler->handle($request)->withHeader('X-Vitec-Story-Rewrite', $debug);
}
private function isStorySlug(string $slug): bool
{
$qb = GeneralUtility::makeInstance(ConnectionPool::class)
->getQueryBuilderForTable('tx_vitec_domain_model_usecase');
$row = $qb
->select('uid')
->from('tx_vitec_domain_model_usecase')
->where(
$qb->expr()->eq('slug', $qb->createNamedParameter($slug)),
$qb->expr()->eq('deleted', 0),
$qb->expr()->eq('hidden', 0)
)
->setMaxResults(1)
->executeQuery()
->fetchAssociative();
return $row !== false;
}
}
+127
View File
@@ -0,0 +1,127 @@
<?php
declare(strict_types=1);
namespace Evomedien\Vitec\Preview;
use Doctrine\DBAL\ParameterType;
use TYPO3\CMS\Backend\Preview\StandardContentPreviewRenderer;
use TYPO3\CMS\Backend\View\BackendLayout\Grid\GridColumnItem;
use TYPO3\CMS\Core\Database\ConnectionPool;
use TYPO3\CMS\Core\Resource\ResourceFactory;
use TYPO3\CMS\Core\Service\FlexFormService;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Fluid\View\StandaloneView;
/**
* Page-module preview for the VITEC Card plugin (vitec_modelcard):
* type badge, selected record title, thumbnail and layout badge.
* Registered via TCA types.vitec_modelcard.previewRenderer.
*/
class ModelcardPreviewRenderer extends StandardContentPreviewRenderer
{
private const MODEL_TABLES = [
'product' => 'tx_vitec_domain_model_product',
'story' => 'tx_vitec_domain_model_usecase',
'market' => 'tx_vitec_domain_model_market',
'solution' => 'tx_vitec_domain_model_solution',
];
private const TYPE_LABELS = [
'product' => 'Product',
'story' => 'Success Story',
'market' => 'Market',
'solution' => 'Solution',
];
/** Card-image FAL field per model type (first hit wins). */
private const IMAGE_FIELDS = [
'product' => ['image', 'productimage'],
'story' => ['card_image', 'hero_bgimage'],
'market' => ['image'],
'solution' => ['image'],
];
public function renderPageModulePreviewContent(GridColumnItem $item): string
{
try {
$record = $item->getRecord();
$flexFormService = GeneralUtility::makeInstance(FlexFormService::class);
$flexFormData = $flexFormService->convertFlexFormContentToArray($record['pi_flexform'] ?? '');
$settings = $flexFormData['settings'] ?? [];
$modelType = (string)($settings['modelType'] ?? 'product');
$layout = (string)($settings['layout'] ?? 'vertical');
$recordUid = (int)($settings[$modelType === 'story' ? 'story' : $modelType] ?? 0);
$title = '';
$subtitle = '';
$imageUrl = '';
if ($recordUid > 0 && isset(self::MODEL_TABLES[$modelType])) {
$table = self::MODEL_TABLES[$modelType];
$qb = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable($table);
$row = $qb
->select('*')
->from($table)
->where(
$qb->expr()->eq('uid', $qb->createNamedParameter($recordUid, ParameterType::INTEGER)),
$qb->expr()->eq('deleted', 0)
)
->executeQuery()
->fetchAssociative();
if ($row) {
$title = (string)($row['title'] ?? '');
$subtitle = (string)($row['subtitle'] ?? ($row['teaser'] ?? ''));
$imageUrl = $this->firstImageUrl($table, $recordUid, self::IMAGE_FIELDS[$modelType]);
}
}
$view = GeneralUtility::makeInstance(StandaloneView::class);
$view->setTemplatePathAndFilename('EXT:vitec/Resources/Private/Templates/Preview/Modelcard.html');
$view->assignMultiple([
'typeLabel' => self::TYPE_LABELS[$modelType] ?? $modelType,
'layout' => $layout,
'recordUid' => $recordUid,
'title' => $title,
'subtitle' => $subtitle,
'imageUrl' => $imageUrl,
]);
return $view->render();
} catch (\Throwable $e) {
return parent::renderPageModulePreviewContent($item);
}
}
/** @param string[] $fieldNames */
private function firstImageUrl(string $table, int $uid, array $fieldNames): string
{
try {
$qb = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('sys_file_reference');
foreach ($fieldNames as $fieldName) {
$ref = $qb
->select('uid')
->from('sys_file_reference')
->where(
$qb->expr()->eq('tablenames', $qb->createNamedParameter($table, ParameterType::STRING)),
$qb->expr()->eq('fieldname', $qb->createNamedParameter($fieldName, ParameterType::STRING)),
$qb->expr()->eq('uid_foreign', $qb->createNamedParameter($uid, ParameterType::INTEGER)),
$qb->expr()->eq('deleted', 0),
$qb->expr()->eq('hidden', 0)
)
->setMaxResults(1)
->executeQuery()
->fetchAssociative();
if ($ref) {
$file = GeneralUtility::makeInstance(ResourceFactory::class)
->getFileReferenceObject((int)$ref['uid']);
return (string)$file->getPublicUrl();
}
}
} catch (\Throwable $e) {
// no thumb
}
return '';
}
}
@@ -15,6 +15,9 @@ use Evomedien\Vitec\UserFunc\DownloadcardJsonRenderer;
use Evomedien\Vitec\UserFunc\DownloadcardcollectionJsonRenderer; use Evomedien\Vitec\UserFunc\DownloadcardcollectionJsonRenderer;
use Evomedien\Vitec\UserFunc\DatasheetsJsonRenderer; use Evomedien\Vitec\UserFunc\DatasheetsJsonRenderer;
use Evomedien\Vitec\UserFunc\EventlistJsonRenderer; use Evomedien\Vitec\UserFunc\EventlistJsonRenderer;
use Evomedien\Vitec\UserFunc\LocationsJsonRenderer;
use Evomedien\Vitec\UserFunc\CustomerlogosJsonRenderer;
use Evomedien\Vitec\UserFunc\ModelcardJsonRenderer;
use Evomedien\Vitec\UserFunc\NewsJsonRenderer; use Evomedien\Vitec\UserFunc\NewsJsonRenderer;
use TYPO3\CMS\Core\Database\ConnectionPool; use TYPO3\CMS\Core\Database\ConnectionPool;
use TYPO3\CMS\Core\Utility\GeneralUtility; use TYPO3\CMS\Core\Utility\GeneralUtility;
@@ -76,6 +79,9 @@ final class ContentElementResolver
'vitec_downloadcardcollection' => [DownloadcardcollectionJsonRenderer::class, 'downloadcardcollection'], 'vitec_downloadcardcollection' => [DownloadcardcollectionJsonRenderer::class, 'downloadcardcollection'],
'vitec_datasheets' => [DatasheetsJsonRenderer::class, 'datasheets'], 'vitec_datasheets' => [DatasheetsJsonRenderer::class, 'datasheets'],
'vitec_eventlist' => [EventlistJsonRenderer::class, 'eventlist'], 'vitec_eventlist' => [EventlistJsonRenderer::class, 'eventlist'],
'vitec_locationlist' => [LocationsJsonRenderer::class, 'locations'],
'vitec_customerlogos' => [CustomerlogosJsonRenderer::class, 'customerlogos'],
'vitec_modelcard' => [ModelcardJsonRenderer::class, 'card'],
'news_pi1' => [NewsJsonRenderer::class, 'news'], 'news_pi1' => [NewsJsonRenderer::class, 'news'],
'news_newsliststicky' => [NewsJsonRenderer::class, 'news'], 'news_newsliststicky' => [NewsJsonRenderer::class, 'news'],
'news_newsselectedlist' => [NewsJsonRenderer::class, 'news'], 'news_newsselectedlist' => [NewsJsonRenderer::class, 'news'],
@@ -45,7 +45,7 @@ final class UsecaseSerializer
'teaser' => (string)($u['teaser'] ?? ''), 'teaser' => (string)($u['teaser'] ?? ''),
'cardImage' => $this->image($uid, 'card_image'), 'cardImage' => $this->image($uid, 'card_image'),
'customerLogo' => $this->image($uid, 'customer_logo'), 'customerLogo' => $this->image($uid, 'customer_logo'),
'market' => $this->market((int)($u['market'] ?? 0)), 'markets' => $this->relationMulti('tx_vitec_usecase_market_mm', 'tx_vitec_domain_model_market', $uid),
'categories' => $this->categories($uid), 'categories' => $this->categories($uid),
'featured' => (bool)($u['featured'] ?? false), 'featured' => (bool)($u['featured'] ?? false),
'layoutVariant' => (string)($u['layout_variant'] ?? 'standard'), 'layoutVariant' => (string)($u['layout_variant'] ?? 'standard'),
@@ -75,7 +75,7 @@ final class UsecaseSerializer
'contentElements' => $this->contentElements($uid), 'contentElements' => $this->contentElements($uid),
'related' => [ 'related' => [
'show' => (bool)($u['show_related'] ?? true), 'show' => (bool)($u['show_related'] ?? true),
'market' => $base['market'], 'markets' => $base['markets'],
'solutions' => $this->relationMulti('tx_vitec_usecase_solution_mm', 'tx_vitec_domain_model_solution', $uid), 'solutions' => $this->relationMulti('tx_vitec_usecase_solution_mm', 'tx_vitec_domain_model_solution', $uid),
'products' => $this->relationMulti('tx_vitec_usecase_product_mm', 'tx_vitec_domain_model_product', $uid), 'products' => $this->relationMulti('tx_vitec_usecase_product_mm', 'tx_vitec_domain_model_product', $uid),
'categories' => $base['categories'], 'categories' => $base['categories'],
@@ -129,6 +129,20 @@ final class UsecaseSerializer
$imageService = GeneralUtility::makeInstance(ImageService::class); $imageService = GeneralUtility::makeInstance(ImageService::class);
$fileReference = $resourceFactory->getFileReferenceObject((int)$ref['uid']); $fileReference = $resourceFactory->getFileReferenceObject((int)$ref['uid']);
if (str_contains((string)$fileReference->getMimeType(), 'svg')) {
// SVG: no processing/srcset — deliver the file as-is.
return [
'uid' => (int)$ref['uid'],
'url' => (string)$fileReference->getPublicUrl(),
'title' => (string)($ref['title'] ?? ''),
'alternative' => (string)($ref['alternative'] ?? ''),
'description' => (string)($ref['description'] ?? ''),
'srcset' => [],
'properties' => ['mimeType' => $fileReference->getMimeType()],
];
}
$srcset = []; $srcset = [];
foreach (self::IMAGE_WIDTHS as $width) { foreach (self::IMAGE_WIDTHS as $width) {
$variant = $imageService->applyProcessingInstructions( $variant = $imageService->applyProcessingInstructions(
@@ -165,6 +179,114 @@ final class UsecaseSerializer
} }
} }
/**
* All FAL images of one field (multi-reference), same shape as image().
*
* @return array<int,array<string,mixed>>
*/
public function images(int $recordUid, string $fieldName, ?string $table = null): array
{
try {
$table = $table ?? self::TABLE;
$qb = GeneralUtility::makeInstance(ConnectionPool::class)
->getQueryBuilderForTable('sys_file_reference');
$refs = $qb
->select('sfr.uid')
->from('sys_file_reference', 'sfr')
->where(
$qb->expr()->eq('sfr.tablenames', $qb->createNamedParameter($table, ParameterType::STRING)),
$qb->expr()->eq('sfr.fieldname', $qb->createNamedParameter($fieldName, ParameterType::STRING)),
$qb->expr()->eq('sfr.uid_foreign', $qb->createNamedParameter($recordUid, ParameterType::INTEGER)),
$qb->expr()->eq('sfr.deleted', 0),
$qb->expr()->eq('sfr.hidden', 0)
)
->orderBy('sfr.sorting_foreign')
->executeQuery()
->fetchAllAssociative();
$out = [];
foreach ($refs as $i => $r) {
// reuse the single-image resolver per reference position
$img = $this->imageByReferenceUid((int)$r['uid']);
if ($img !== null) {
$out[] = $img;
}
}
return $out;
} catch (\Throwable $e) {
return [];
}
}
/**
* Resolve one sys_file_reference uid to the standard image shape.
*
* @return array<string,mixed>|null
*/
private function imageByReferenceUid(int $refUid): ?array
{
try {
$qb = GeneralUtility::makeInstance(ConnectionPool::class)
->getQueryBuilderForTable('sys_file_reference');
$ref = $qb
->select('uid', 'title', 'description', 'alternative', 'crop')
->from('sys_file_reference')
->where($qb->expr()->eq('uid', $qb->createNamedParameter($refUid, ParameterType::INTEGER)))
->executeQuery()
->fetchAssociative();
if (!$ref) {
return null;
}
$resourceFactory = GeneralUtility::makeInstance(ResourceFactory::class);
$imageService = GeneralUtility::makeInstance(ImageService::class);
$fileReference = $resourceFactory->getFileReferenceObject((int)$ref['uid']);
if (str_contains((string)$fileReference->getMimeType(), 'svg')) {
// SVG: no processing/srcset — deliver the file as-is.
return [
'uid' => (int)$ref['uid'],
'url' => (string)$fileReference->getPublicUrl(),
'title' => (string)($ref['title'] ?? ''),
'alternative' => (string)($ref['alternative'] ?? ''),
'description' => (string)($ref['description'] ?? ''),
'srcset' => [],
'properties' => ['mimeType' => $fileReference->getMimeType()],
];
}
$srcset = [];
foreach (self::IMAGE_WIDTHS as $width) {
$variant = $imageService->applyProcessingInstructions(
$fileReference,
['width' => $width, 'crop' => $ref['crop'] ?? null]
);
$srcset[] = ['url' => $imageService->getImageUri($variant), 'width' => $width, 'descriptor' => $width . 'w'];
}
$default = $imageService->applyProcessingInstructions(
$fileReference,
['width' => 800, 'crop' => $ref['crop'] ?? null]
);
return [
'uid' => (int)$ref['uid'],
'url' => $imageService->getImageUri($default),
'title' => (string)($ref['title'] ?? ''),
'alternative' => (string)($ref['alternative'] ?? ''),
'description' => (string)($ref['description'] ?? ''),
'srcset' => $srcset,
'properties' => [
'width' => $fileReference->getProperty('width'),
'height' => $fileReference->getProperty('height'),
'mimeType' => $fileReference->getProperty('mime_type'),
],
];
} catch (\Throwable $e) {
return null;
}
}
/** /**
* FAL video (public URL only). $table as in image(). * FAL video (public URL only). $table as in image().
* *
@@ -367,10 +489,39 @@ final class UsecaseSerializer
*/ */
private function resolveInlineElement(array $row): ?array private function resolveInlineElement(array $row): ?array
{ {
if ((string)($row['CType'] ?? '') === self::COLUMNS_CTYPE) { $ctype = (string)($row['CType'] ?? '');
if ($ctype === self::COLUMNS_CTYPE) {
return $this->resolveColumnsElement($row); return $this->resolveColumnsElement($row);
} }
return ContentElementResolver::normaliseRecord($row); if ($ctype === 'vitec_quotation') {
$uid = (int)$row['uid'];
$logoField = array_key_exists('vitec_quote_logo', $row) ? 'vitec_quote_logo' : 'quote_logo';
return [
'id' => $uid,
'type' => 'vitec_quotation',
'colPos' => (int)($row['colPos'] ?? 0),
'sorting' => (int)($row['sorting'] ?? 0),
'header' => (string)($row['header'] ?? ''),
'quote' => (string)($row['vitec_quote'] ?? $row['quote'] ?? ''),
'name' => (string)($row['vitec_quote_name'] ?? $row['quote_name'] ?? ''),
'position' => (string)($row['vitec_quote_position'] ?? $row['quote_position'] ?? ''),
'logo' => $this->image($uid, $logoField, 'tt_content'),
];
}
$el = ContentElementResolver::normaliseRecord($row);
if (is_array($el)) {
$uid = (int)$row['uid'];
$media = [];
foreach (['image', 'assets', 'media'] as $f) {
foreach ($this->images($uid, $f, 'tt_content') as $img) {
$media[] = $img;
}
}
if ($media !== []) {
$el['images'] = $media;
}
}
return $el;
} }
/** /**
@@ -445,15 +596,12 @@ final class UsecaseSerializer
$uid = (int)$it['uid']; $uid = (int)$it['uid'];
$get = static fn (string $k): string => (string)($it['vitec_' . $k] ?? $it[$k] ?? ''); $get = static fn (string $k): string => (string)($it['vitec_' . $k] ?? $it[$k] ?? '');
$imageField = array_key_exists('vitec_image', $it) ? 'vitec_image' : 'image';
$videoField = array_key_exists('vitec_video', $it) ? 'vitec_video' : 'video';
return [ return [
'type' => $get('item_type') !== '' ? $get('item_type') : 'text', 'type' => $get('item_type') !== '' ? $get('item_type') : 'text',
'headline' => $get('headline'), 'headline' => $get('headline'),
'text' => $get('text'), 'text' => $get('text'),
'image' => $this->image($uid, $imageField, $table), 'image' => $this->image($uid, 'vitec_image', $table) ?? $this->image($uid, 'image', $table),
'video' => $this->video($uid, $videoField, $table), 'video' => $this->video($uid, 'vitec_video', $table) ?? $this->video($uid, 'video', $table),
'link' => $get('link'), 'link' => $get('link'),
'linkLabel' => $get('link_label'), 'linkLabel' => $get('link_label'),
]; ];
@@ -0,0 +1,232 @@
<?php
declare(strict_types=1);
namespace Evomedien\Vitec\UserFunc;
use Doctrine\DBAL\ParameterType;
use TYPO3\CMS\Core\Attribute\AsAllowedCallable;
use TYPO3\CMS\Core\Database\ConnectionPool;
use TYPO3\CMS\Core\Resource\ResourceFactory;
use TYPO3\CMS\Core\Service\FlexFormService;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Extbase\Service\ImageService;
/**
* UserFunc: render the VITEC customer logos as JSON (headless).
*
* Output under content.customerlogos:
* { "layout": "list|grid|carousel|marquee", "logos": [ … ] }
*
* Selection logic:
* - no customers selected -> ALL logos, each with color:false (b/w)
* - customers selected -> the selected ones FIRST (selection order,
* color:true), followed by all remaining logos (color:false)
*
* `render()` = top-level plugin / page discovery. `renderForRecord()` = one
* specific tt_content row (reused by ContainerChildrenProcessor for nested
* plugins). Exception-safe.
*/
class CustomerlogosJsonRenderer
{
private const TABLE = 'tx_vitec_domain_model_customer';
private const IMAGE_WIDTHS = [200, 400];
#[AsAllowedCallable]
public function render(string $content, array $conf): string
{
$row = is_array($this->cObj->data ?? null) ? $this->cObj->data : null;
if ($row && (string)($row['CType'] ?? '') === 'vitec_customerlogos') {
return $this->renderForRecord($row);
}
$pageId = 0;
$request = $GLOBALS['TYPO3_REQUEST'] ?? null;
if ($request !== null) {
$pageInfo = $request->getAttribute('frontend.page.information');
if ($pageInfo !== null) {
$pageId = (int)$pageInfo->getId();
}
}
if ($pageId <= 0) {
$pageId = (int)($GLOBALS['TSFE']->id ?? 0);
}
if ($pageId <= 0) {
return '';
}
$qb = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('tt_content');
$ces = $qb
->select('*')
->from('tt_content')
->where(
$qb->expr()->eq('pid', $qb->createNamedParameter($pageId, ParameterType::INTEGER)),
$qb->expr()->eq('CType', $qb->createNamedParameter('vitec_customerlogos', ParameterType::STRING)),
$qb->expr()->eq('deleted', 0),
$qb->expr()->eq('hidden', 0)
)
->executeQuery()
->fetchAllAssociative();
if (empty($ces)) {
return '';
}
return $this->renderForRecord($ces[0]);
}
/**
* @param array<string,mixed> $contentElement
*/
public function renderForRecord(array $contentElement): string
{
try {
$flexFormService = GeneralUtility::makeInstance(FlexFormService::class);
$flexFormData = $flexFormService->convertFlexFormContentToArray($contentElement['pi_flexform'] ?? '');
$settings = $flexFormData['settings'] ?? [];
$layout = (string)($settings['layout'] ?? 'grid');
$debugMode = (bool)($settings['debug'] ?? false);
$selectedUids = GeneralUtility::intExplode(',', (string)($settings['customers'] ?? ''), true);
$onlySelected = (bool)($settings['onlySelected'] ?? false);
$qb = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable(self::TABLE);
$rows = $qb
->select('*')
->from(self::TABLE)
->where(
$qb->expr()->eq('deleted', 0),
$qb->expr()->eq('hidden', 0)
)
->orderBy('sorting', 'ASC')
->executeQuery()
->fetchAllAssociative();
$byUid = [];
foreach ($rows as $r) {
$byUid[(int)$r['uid']] = $r;
}
// Selected customers first (selection order, in color), then the rest (b/w).
$logos = [];
foreach ($selectedUids as $uid) {
if (isset($byUid[$uid])) {
$logos[] = $this->serializeCustomer($byUid[$uid], true);
unset($byUid[$uid]);
}
}
if (!($onlySelected && $selectedUids !== [])) {
foreach ($byUid as $r) {
$logos[] = $this->serializeCustomer($r, false);
}
}
$response = [
'layout' => $layout,
'logos' => $logos,
];
if ($debugMode) {
$response['debug'] = [
'count' => count($logos),
'selected' => $selectedUids,
'settings' => $settings,
];
}
return (string)json_encode($response);
} catch (\Throwable $e) {
return '';
}
}
/**
* @param array<string,mixed> $r
* @return array<string,mixed>
*/
private function serializeCustomer(array $r, bool $color): array
{
return [
'id' => (int)$r['uid'],
'name' => (string)($r['title'] ?? ''),
'emphasized' => (bool)($r['emphasize_logo'] ?? false),
'color' => $color,
'logo' => $this->logo((int)$r['uid']),
];
}
/**
* FAL logo with small srcset; SVGs are delivered unprocessed.
*
* @return array<string,mixed>|null
*/
private function logo(int $customerUid): ?array
{
try {
$qb = GeneralUtility::makeInstance(ConnectionPool::class)
->getQueryBuilderForTable('sys_file_reference');
$ref = $qb
->select('uid', 'title', 'alternative', 'crop')
->from('sys_file_reference')
->where(
$qb->expr()->eq('tablenames', $qb->createNamedParameter(self::TABLE, ParameterType::STRING)),
$qb->expr()->eq('fieldname', $qb->createNamedParameter('logo', ParameterType::STRING)),
$qb->expr()->eq('uid_foreign', $qb->createNamedParameter($customerUid, ParameterType::INTEGER)),
$qb->expr()->eq('deleted', 0),
$qb->expr()->eq('hidden', 0)
)
->orderBy('sorting_foreign')
->setMaxResults(1)
->executeQuery()
->fetchAssociative();
if (!$ref) {
return null;
}
$resourceFactory = GeneralUtility::makeInstance(ResourceFactory::class);
$imageService = GeneralUtility::makeInstance(ImageService::class);
$fileReference = $resourceFactory->getFileReferenceObject((int)$ref['uid']);
if (str_contains((string)$fileReference->getMimeType(), 'svg')) {
// SVG: no processing/srcset — deliver the file as-is.
return [
'uid' => (int)$ref['uid'],
'url' => (string)$fileReference->getPublicUrl(),
'title' => (string)($ref['title'] ?? ''),
'alternative' => (string)($ref['alternative'] ?? ''),
'srcset' => [],
'properties' => ['mimeType' => $fileReference->getMimeType()],
];
}
$srcset = [];
foreach (self::IMAGE_WIDTHS as $width) {
$variant = $imageService->applyProcessingInstructions(
$fileReference,
['width' => $width, 'crop' => $ref['crop'] ?? null]
);
$srcset[] = ['url' => $imageService->getImageUri($variant), 'width' => $width, 'descriptor' => $width . 'w'];
}
$default = $imageService->applyProcessingInstructions(
$fileReference,
['width' => 400, 'crop' => $ref['crop'] ?? null]
);
return [
'uid' => (int)$ref['uid'],
'url' => $imageService->getImageUri($default),
'title' => (string)($ref['title'] ?? ''),
'alternative' => (string)($ref['alternative'] ?? ''),
'srcset' => $srcset,
'properties' => [
'width' => $fileReference->getProperty('width'),
'height' => $fileReference->getProperty('height'),
'mimeType' => $fileReference->getProperty('mime_type'),
],
];
} catch (\Throwable $e) {
return null;
}
}
}
@@ -86,12 +86,14 @@ class EventlistJsonRenderer
$daysInAdvance = (int)($settings['daysinadvance'] ?? 0); $daysInAdvance = (int)($settings['daysinadvance'] ?? 0);
$limit = (int)($settings['limit'] ?? 0); $limit = (int)($settings['limit'] ?? 0);
$debugMode = (bool)($settings['debug'] ?? false); $debugMode = (bool)($settings['debug'] ?? false);
$layout = (string)($settings['layout'] ?? 'list');
$upcoming = $this->fetchEvents(true, $limit, $daysInAdvance); $upcoming = $this->fetchEvents(true, $limit, $daysInAdvance);
$response = [ $response = [
'events' => array_map(fn($e) => $this->serializeEvent($e), $upcoming), 'events' => array_map(fn($e) => $this->serializeEvent($e), $upcoming),
'settings' => [ 'settings' => [
'layout' => $layout,
'showpast' => $showPast, 'showpast' => $showPast,
'daysinadvance' => $daysInAdvance, 'daysinadvance' => $daysInAdvance,
'limit' => $limit, 'limit' => $limit,
+197
View File
@@ -0,0 +1,197 @@
<?php
declare(strict_types=1);
namespace Evomedien\Vitec\UserFunc;
use Doctrine\DBAL\ParameterType;
use TYPO3\CMS\Core\Attribute\AsAllowedCallable;
use TYPO3\CMS\Core\Database\ConnectionPool;
use TYPO3\CMS\Core\Service\FlexFormService;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer;
/**
* UserFunc: render the VITEC locations as JSON (headless).
*
* Output under content.locations:
* { "variant": "grid|list|map", "mapText": "<p>…</p>"|null, "locations": [ … ] }
*
* Each location follows the frontend contract (id, slug, name, countryCode,
* coordinates, address, contact, links, marker, sorting, active).
*
* `render()` = top-level plugin / page discovery. `renderForRecord()` = one
* specific tt_content row (reused by ContainerChildrenProcessor for nested
* plugins). Exception-safe.
*/
class LocationsJsonRenderer
{
private const TABLE = 'tx_vitec_domain_model_location';
#[AsAllowedCallable]
public function render(string $content, array $conf): string
{
$row = is_array($this->cObj->data ?? null) ? $this->cObj->data : null;
if ($row && (string)($row['CType'] ?? '') === 'vitec_locationlist') {
return $this->renderForRecord($row);
}
$pageId = 0;
$request = $GLOBALS['TYPO3_REQUEST'] ?? null;
if ($request !== null) {
$pageInfo = $request->getAttribute('frontend.page.information');
if ($pageInfo !== null) {
$pageId = (int)$pageInfo->getId();
}
}
if ($pageId <= 0) {
$pageId = (int)($GLOBALS['TSFE']->id ?? 0);
}
if ($pageId <= 0) {
return '';
}
$qb = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('tt_content');
$ces = $qb
->select('*')
->from('tt_content')
->where(
$qb->expr()->eq('pid', $qb->createNamedParameter($pageId, ParameterType::INTEGER)),
$qb->expr()->eq('CType', $qb->createNamedParameter('vitec_locationlist', ParameterType::STRING)),
$qb->expr()->eq('deleted', 0),
$qb->expr()->eq('hidden', 0)
)
->executeQuery()
->fetchAllAssociative();
if (empty($ces)) {
return '';
}
return $this->renderForRecord($ces[0]);
}
/**
* @param array<string,mixed> $contentElement
*/
public function renderForRecord(array $contentElement): string
{
try {
$flexFormService = GeneralUtility::makeInstance(FlexFormService::class);
$flexFormData = $flexFormService->convertFlexFormContentToArray($contentElement['pi_flexform'] ?? '');
$settings = $flexFormData['settings'] ?? [];
$variant = (string)($settings['variant'] ?? 'grid');
$mapText = trim((string)($settings['maptext'] ?? ''));
$debugMode = (bool)($settings['debug'] ?? false);
$qb = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable(self::TABLE);
$rows = $qb
->select('*')
->from(self::TABLE)
->where(
$qb->expr()->eq('deleted', 0),
$qb->expr()->eq('hidden', 0)
)
->orderBy('sorting', 'ASC')
->executeQuery()
->fetchAllAssociative();
$locations = array_map(fn(array $r): array => $this->serializeLocation($r), $rows);
$response = [
'variant' => $variant,
'mapText' => $variant === 'map' && $mapText !== '' ? $mapText : null,
'locations' => $locations,
];
if ($debugMode) {
$response['debug'] = ['count' => count($locations), 'settings' => $settings];
}
return (string)json_encode($response);
} catch (\Throwable $e) {
return '';
}
}
/**
* @param array<string,mixed> $r
* @return array<string,mixed>
*/
private function serializeLocation(array $r): array
{
$name = (string)($r['title'] ?? '');
return [
'id' => (int)$r['uid'],
'slug' => (string)($r['slug'] ?? ''),
'name' => $name,
'countryCode' => (string)($r['country_code'] ?? ''),
'coordinates' => [
'latitude' => (float)($r['latitude'] ?? 0),
'longitude' => (float)($r['longitude'] ?? 0),
],
'address' => [
'company' => $this->nullIfEmpty($r['address_company'] ?? ''),
'street' => $this->nullIfEmpty($r['street'] ?? ''),
'additional' => $this->nullIfEmpty($r['address_additional'] ?? ''),
'postalCode' => $this->nullIfEmpty($r['postal_code'] ?? ''),
'city' => $this->nullIfEmpty($r['city'] ?? ''),
'region' => $this->nullIfEmpty($r['region'] ?? ''),
'country' => $this->nullIfEmpty($r['country'] ?? ''),
],
'contact' => [
'phone' => $this->nullIfEmpty($r['phone'] ?? ''),
'fax' => $this->nullIfEmpty($r['fax'] ?? ''),
'email' => $this->nullIfEmpty($r['email'] ?? ''),
],
'links' => [
'contact' => $this->resolveLink((string)($r['contact_link'] ?? '')),
'legal' => $this->resolveLinkLines((string)($r['legal_links'] ?? '')),
],
'marker' => [
'label' => (string)($r['marker_label'] ?? '') !== '' ? (string)$r['marker_label'] : $name,
'color' => (string)($r['marker_color'] ?? '#ff6633'),
'size' => (float)($r['marker_size'] ?? 0.5),
],
'sorting' => (int)($r['sorting'] ?? 0),
'active' => true,
];
}
private function nullIfEmpty(mixed $value): ?string
{
$value = trim((string)$value);
return $value === '' ? null : $value;
}
/** Resolve a typolink parameter (t3://…, page uid, URL) to a URL/path. */
private function resolveLink(string $parameter): ?string
{
$parameter = trim($parameter);
if ($parameter === '') {
return null;
}
try {
$cObj = GeneralUtility::makeInstance(ContentObjectRenderer::class);
$url = $cObj->typoLink_URL(['parameter' => $parameter]);
return $url !== '' ? $url : $parameter;
} catch (\Throwable $e) {
return $parameter;
}
}
/** @return array<int,string> */
private function resolveLinkLines(string $lines): array
{
$out = [];
foreach (preg_split('/\r\n|\r|\n/', $lines) ?: [] as $line) {
$resolved = $this->resolveLink($line);
if ($resolved !== null) {
$out[] = $resolved;
}
}
return $out;
}
}
+175
View File
@@ -0,0 +1,175 @@
<?php
declare(strict_types=1);
namespace Evomedien\Vitec\UserFunc;
use Doctrine\DBAL\ParameterType;
use Evomedien\Vitec\Service\UsecaseSerializer;
use TYPO3\CMS\Core\Attribute\AsAllowedCallable;
use TYPO3\CMS\Core\Database\ConnectionPool;
use TYPO3\CMS\Core\Service\FlexFormService;
use TYPO3\CMS\Core\Utility\GeneralUtility;
/**
* UserFunc: render the VITEC Card plugin as JSON (headless).
*
* ONE plugin for four card types — the FlexForm picks the model type
* (product | story | market | solution) plus one record; ALL card data
* comes from the model. Output under content.card:
*
* { "modelType": "product", "layout": "vertical", "item": { … } }
*
* Image resolution is delegated to UsecaseSerializer::image() (generic,
* srcset + SVG-safe). `render()` = top-level plugin / page discovery,
* `renderForRecord()` = one tt_content row (container-nestable).
* Exception-safe.
*/
class ModelcardJsonRenderer
{
private const MODEL_TABLES = [
'product' => 'tx_vitec_domain_model_product',
'story' => 'tx_vitec_domain_model_usecase',
'market' => 'tx_vitec_domain_model_market',
'solution' => 'tx_vitec_domain_model_solution',
];
#[AsAllowedCallable]
public function render(string $content, array $conf): string
{
$row = is_array($this->cObj->data ?? null) ? $this->cObj->data : null;
if ($row && (string)($row['CType'] ?? '') === 'vitec_modelcard') {
return $this->renderForRecord($row);
}
$pageId = 0;
$request = $GLOBALS['TYPO3_REQUEST'] ?? null;
if ($request !== null) {
$pageInfo = $request->getAttribute('frontend.page.information');
if ($pageInfo !== null) {
$pageId = (int)$pageInfo->getId();
}
}
if ($pageId <= 0) {
$pageId = (int)($GLOBALS['TSFE']->id ?? 0);
}
if ($pageId <= 0) {
return '';
}
$qb = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('tt_content');
$ces = $qb
->select('*')
->from('tt_content')
->where(
$qb->expr()->eq('pid', $qb->createNamedParameter($pageId, ParameterType::INTEGER)),
$qb->expr()->eq('CType', $qb->createNamedParameter('vitec_modelcard', ParameterType::STRING)),
$qb->expr()->eq('deleted', 0),
$qb->expr()->eq('hidden', 0)
)
->executeQuery()
->fetchAllAssociative();
if (empty($ces)) {
return '';
}
return $this->renderForRecord($ces[0]);
}
/**
* @param array<string,mixed> $contentElement
*/
public function renderForRecord(array $contentElement): string
{
try {
$flexFormService = GeneralUtility::makeInstance(FlexFormService::class);
$flexFormData = $flexFormService->convertFlexFormContentToArray($contentElement['pi_flexform'] ?? '');
$settings = $flexFormData['settings'] ?? [];
$modelType = (string)($settings['modelType'] ?? 'product');
$layout = (string)($settings['layout'] ?? 'vertical');
$debugMode = (bool)($settings['debug'] ?? false);
$recordUid = (int)($settings[$modelType === 'story' ? 'story' : $modelType] ?? 0);
$item = null;
if ($recordUid > 0 && isset(self::MODEL_TABLES[$modelType])) {
$row = $this->fetchRecord(self::MODEL_TABLES[$modelType], $recordUid);
if ($row !== null) {
$item = $this->serializeItem($modelType, $row);
}
}
$response = [
'modelType' => $modelType,
'layout' => $layout,
'item' => $item,
];
if ($debugMode) {
$response['debug'] = ['recordUid' => $recordUid, 'settings' => $settings];
}
return (string)json_encode($response);
} catch (\Throwable $e) {
return '';
}
}
/**
* @return array<string,mixed>|null
*/
private function fetchRecord(string $table, int $uid): ?array
{
$qb = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable($table);
$row = $qb
->select('*')
->from($table)
->where(
$qb->expr()->eq('uid', $qb->createNamedParameter($uid, ParameterType::INTEGER)),
$qb->expr()->eq('deleted', 0),
$qb->expr()->eq('hidden', 0)
)
->executeQuery()
->fetchAssociative();
return $row ?: null;
}
/**
* @param array<string,mixed> $row
* @return array<string,mixed>
*/
private function serializeItem(string $modelType, array $row): array
{
$serializer = GeneralUtility::makeInstance(UsecaseSerializer::class);
$uid = (int)$row['uid'];
if ($modelType === 'story') {
// Success stories already have the canonical card serialisation.
return $serializer->serializeListItem($row);
}
if ($modelType === 'product') {
return [
'uid' => $uid,
'title' => (string)($row['title'] ?? ''),
'slug' => (string)($row['slug'] ?? ''),
'subtitle' => (string)($row['subtitle'] ?? ''),
'teaser' => (string)($row['teaser'] ?? ''),
'image' => $serializer->image($uid, 'image', 'tx_vitec_domain_model_product')
?? $serializer->image($uid, 'productimage', 'tx_vitec_domain_model_product'),
];
}
// market | solution — identical field set.
return [
'uid' => $uid,
'title' => (string)($row['title'] ?? ''),
'subtitle' => (string)($row['subtitle'] ?? ''),
'teaser' => (string)($row['teaser'] ?? ''),
'description' => (string)($row['description'] ?? ''),
'image' => $serializer->image($uid, 'image', self::MODEL_TABLES[$modelType]),
];
}
}
@@ -11,6 +11,7 @@ use Evomedien\Vitec\Domain\Repository\ProductRepository;
use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Message\ServerRequestInterface;
use TYPO3\CMS\Core\Core\Environment; use TYPO3\CMS\Core\Core\Environment;
use TYPO3\CMS\Core\Database\Connection; use TYPO3\CMS\Core\Database\Connection;
use TYPO3\CMS\Core\Database\ConnectionPool;
use TYPO3\CMS\Core\Imaging\ImageManipulation\CropVariantCollection; use TYPO3\CMS\Core\Imaging\ImageManipulation\CropVariantCollection;
use TYPO3\CMS\Core\Resource\FileReference; use TYPO3\CMS\Core\Resource\FileReference;
use TYPO3\CMS\Core\Resource\ResourceFactory; use TYPO3\CMS\Core\Resource\ResourceFactory;
@@ -406,15 +407,61 @@ class ProductListJsonRenderer
->executeQuery() ->executeQuery()
->fetchAllAssociative(); ->fetchAllAssociative();
return array_map(static function ($cat) { return array_map(function ($cat) {
return [ return [
'uid' => (int)$cat['uid'], 'uid' => (int)$cat['uid'],
'title' => $cat['title'] ?? '', 'title' => $cat['title'] ?? '',
'description' => $cat['description'] ?? '', 'description' => $cat['description'] ?? '',
'parents' => $this->getCategoryParents((int)$cat['uid']),
]; ];
}, $categories); }, $categories);
} }
/** @var array<int,array{parent:int,title:string}>|null Lazy uid => [parent,title] map of all categories. */
private ?array $categoryTreeMap = null;
/**
* All ancestor categories of one category, ROOT FIRST (excluding itself).
* Backed by a once-per-request map of sys_category — cheap for any number
* of products. Cycle-safe.
*
* @return array<int,array{uid:int,title:string}>
*/
private function getCategoryParents(int $categoryUid): array
{
if ($this->categoryTreeMap === null) {
$qb = GeneralUtility::makeInstance(ConnectionPool::class)
->getQueryBuilderForTable('sys_category');
$rows = $qb
->select('uid', 'parent', 'title')
->from('sys_category')
->where(
$qb->expr()->eq('deleted', 0),
$qb->expr()->eq('hidden', 0)
)
->executeQuery()
->fetchAllAssociative();
$this->categoryTreeMap = [];
foreach ($rows as $row) {
$this->categoryTreeMap[(int)$row['uid']] = [
'parent' => (int)$row['parent'],
'title' => (string)$row['title'],
];
}
}
$parents = [];
$seen = [$categoryUid => true];
$current = $this->categoryTreeMap[$categoryUid]['parent'] ?? 0;
while ($current > 0 && isset($this->categoryTreeMap[$current]) && !isset($seen[$current])) {
$seen[$current] = true;
array_unshift($parents, ['uid' => $current, 'title' => $this->categoryTreeMap[$current]['title']]);
$current = $this->categoryTreeMap[$current]['parent'];
}
return $parents;
}
private function getDownloadFileType(int $downloadUid): string private function getDownloadFileType(int $downloadUid): string
{ {
$qb = GeneralUtility::makeInstance(ConnectionPool::class) $qb = GeneralUtility::makeInstance(ConnectionPool::class)
@@ -493,10 +493,56 @@ class ProductShowJsonRenderer
'uid' => (int)$cat['uid'], 'uid' => (int)$cat['uid'],
'title' => $cat['title'], 'title' => $cat['title'],
'description' => $cat['description'] ?? '', 'description' => $cat['description'] ?? '',
'parents' => $this->getCategoryParents((int)$cat['uid']),
]; ];
}, $categories); }, $categories);
} }
/** @var array<int,array{parent:int,title:string}>|null Lazy uid => [parent,title] map of all categories. */
private ?array $categoryTreeMap = null;
/**
* All ancestor categories of one category, ROOT FIRST (excluding itself).
* Backed by a once-per-request map of sys_category — cheap for any number
* of products. Cycle-safe.
*
* @return array<int,array{uid:int,title:string}>
*/
private function getCategoryParents(int $categoryUid): array
{
if ($this->categoryTreeMap === null) {
$qb = GeneralUtility::makeInstance(ConnectionPool::class)
->getQueryBuilderForTable('sys_category');
$rows = $qb
->select('uid', 'parent', 'title')
->from('sys_category')
->where(
$qb->expr()->eq('deleted', 0),
$qb->expr()->eq('hidden', 0)
)
->executeQuery()
->fetchAllAssociative();
$this->categoryTreeMap = [];
foreach ($rows as $row) {
$this->categoryTreeMap[(int)$row['uid']] = [
'parent' => (int)$row['parent'],
'title' => (string)$row['title'],
];
}
}
$parents = [];
$seen = [$categoryUid => true];
$current = $this->categoryTreeMap[$categoryUid]['parent'] ?? 0;
while ($current > 0 && isset($this->categoryTreeMap[$current]) && !isset($seen[$current])) {
$seen[$current] = true;
array_unshift($parents, ['uid' => $current, 'title' => $this->categoryTreeMap[$current]['title']]);
$current = $this->categoryTreeMap[$current]['parent'];
}
return $parents;
}
private function getDownloadFileType(int $downloadUid): string private function getDownloadFileType(int $downloadUid): string
{ {
$qb = GeneralUtility::makeInstance(ConnectionPool::class) $qb = GeneralUtility::makeInstance(ConnectionPool::class)
@@ -72,6 +72,22 @@ class UsecaseListJsonRenderer
public function renderForRecord(array $contentElement): string public function renderForRecord(array $contentElement): string
{ {
try { try {
// Detail context: when the request carries a story argument the
// list stays silent — the usecaseshow plugin on the same page
// renders the story. Keeps old SEO URLs on one page.
$request = $GLOBALS['TYPO3_REQUEST'] ?? null;
$routing = $request?->getAttribute('routing');
$detailParam = null;
if ($routing instanceof \TYPO3\CMS\Core\Routing\PageArguments) {
$detailParam = $routing->getRouteArguments()['tx_vitec_usecaseshow']['usecase'] ?? null;
}
if ($detailParam === null || $detailParam === '') {
$detailParam = ($request?->getQueryParams() ?? [])['tx_vitec_usecaseshow']['usecase'] ?? null;
}
if ($detailParam !== null && $detailParam !== '') {
return '';
}
$flexFormService = GeneralUtility::makeInstance(FlexFormService::class); $flexFormService = GeneralUtility::makeInstance(FlexFormService::class);
$flexFormData = $flexFormService->convertFlexFormContentToArray($contentElement['pi_flexform'] ?? ''); $flexFormData = $flexFormService->convertFlexFormContentToArray($contentElement['pi_flexform'] ?? '');
$settings = $flexFormData['settings'] ?? []; $settings = $flexFormData['settings'] ?? [];
@@ -92,8 +108,28 @@ class UsecaseListJsonRenderer
->fetchAllAssociative(); ->fetchAllAssociative();
$serializer = GeneralUtility::makeInstance(UsecaseSerializer::class); $serializer = GeneralUtility::makeInstance(UsecaseSerializer::class);
// Detail links: the PUBLIC URL is the PARENT path of the
// FlexForm-selected "Single PID" page plus the story slug —
// /success-stories/<slug>, not /success-stories/story/<slug>.
// The SuccessStoryPathRewrite middleware maps it back to the
// detail subpage at request time.
$singlePid = (int)($settings['singlePid'] ?? 0);
$detailBase = '';
if ($singlePid > 0) {
$detailPath = rtrim($this->resolvePageUrl($singlePid), '/');
$parent = str_contains($detailPath, '/') ? substr($detailPath, 0, (int)strrpos($detailPath, '/')) : '';
$detailBase = $parent !== '' ? $parent : $detailPath;
}
$usecases = array_map( $usecases = array_map(
static fn (array $u): array => $serializer->serializeListItem($u), static function (array $u) use ($serializer, $detailBase): array {
$item = $serializer->serializeListItem($u);
$item['detailUrl'] = ($detailBase !== '' && ($item['slug'] ?? '') !== '')
? $detailBase . '/' . ltrim((string)$item['slug'], '/')
: null;
return $item;
},
$rows $rows
); );
@@ -109,4 +145,15 @@ class UsecaseListJsonRenderer
return ''; return '';
} }
} }
/** Resolve a page uid to its frontend path (route enhancer aware). */
private function resolvePageUrl(int $pageUid): string
{
try {
$cObj = GeneralUtility::makeInstance(\TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer::class);
return (string)$cObj->typoLink_URL(['parameter' => (string)$pageUid]);
} catch (\Throwable $e) {
return '';
}
}
} }
@@ -77,16 +77,21 @@ class UsecaseShowJsonRenderer
$layout = (string)($settings['layout'] ?? 'default'); $layout = (string)($settings['layout'] ?? 'default');
$debugMode = (bool)($settings['debug'] ?? false); $debugMode = (bool)($settings['debug'] ?? false);
$usecaseUid = (int)($settings['usecase'] ?? 0); // The story is resolved from the request ONLY (detail route from the
// list plugin's detailUrl): route-enhancer arguments live in the
// Fallback: uid/slug from the request (React detail route). // `routing` PageArguments, plain GET in query params.
if (!$usecaseUid) { $request = $GLOBALS['TYPO3_REQUEST'] ?? null;
$params = $GLOBALS['TYPO3_REQUEST']?->getQueryParams() ?? []; $param = null;
$param = $params['tx_vitec_usecaseshow']['usecase'] ?? null; $routing = $request?->getAttribute('routing');
if ($param !== null && $param !== '') { if ($routing instanceof \TYPO3\CMS\Core\Routing\PageArguments) {
$usecaseUid = is_numeric($param) ? (int)$param : $this->resolveSlug((string)$param); $param = $routing->getRouteArguments()['tx_vitec_usecaseshow']['usecase'] ?? null;
}
} }
if ($param === null || $param === '') {
$param = ($request?->getQueryParams() ?? [])['tx_vitec_usecaseshow']['usecase'] ?? null;
}
$usecaseUid = ($param !== null && $param !== '')
? (is_numeric($param) ? (int)$param : $this->resolveSlug((string)$param))
: 0;
if (!$usecaseUid) { if (!$usecaseUid) {
return $debugMode return $debugMode
@@ -114,9 +119,11 @@ class UsecaseShowJsonRenderer
$serializer = GeneralUtility::makeInstance(UsecaseSerializer::class); $serializer = GeneralUtility::makeInstance(UsecaseSerializer::class);
$backPid = (int)($settings['backPid'] ?? 0);
$response = [ $response = [
'usecase' => $serializer->serializeDetail($usecase), 'usecase' => $serializer->serializeDetail($usecase),
'layout' => $layout, 'layout' => $layout,
'backUrl' => $backPid > 0 ? ($this->resolvePageUrl($backPid) ?: null) : null,
]; ];
if ($debugMode) { if ($debugMode) {
@@ -145,4 +152,15 @@ class UsecaseShowJsonRenderer
return (int)($row['uid'] ?? 0); return (int)($row['uid'] ?? 0);
} }
/** Resolve a page uid to its frontend path (route enhancer aware). */
private function resolvePageUrl(int $pageUid): string
{
try {
$cObj = GeneralUtility::makeInstance(\TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer::class);
return (string)$cObj->typoLink_URL(['parameter' => (string)$pageUid]);
} catch (\Throwable $e) {
return '';
}
}
} }
+73
View File
@@ -0,0 +1,73 @@
<?xml version="1.0" encoding="UTF-8"?>
<T3DataStructure>
<meta>
<langDisable>1</langDisable>
</meta>
<sheets>
<sDEF>
<ROOT>
<sheetTitle>Customer Logos Settings</sheetTitle>
<type>array</type>
<el>
<settings.layout>
<label>Layout</label>
<config>
<type>select</type>
<renderType>selectSingle</renderType>
<items>
<numIndex index="0">
<label>List</label>
<value>list</value>
</numIndex>
<numIndex index="1">
<label>Grid</label>
<value>grid</value>
</numIndex>
<numIndex index="2">
<label>Carousel</label>
<value>carousel</value>
</numIndex>
<numIndex index="3">
<label>Marquee (scrolling ticker)</label>
<value>marquee</value>
</numIndex>
</items>
<default>grid</default>
</config>
</settings.layout>
<settings.customers>
<label>Highlighted Customers</label>
<description>Empty = all logos black &amp; white. Selected customers are shown in color, in front of the remaining (b/w) logos.</description>
<config>
<type>select</type>
<renderType>selectMultipleSideBySide</renderType>
<foreign_table>tx_vitec_domain_model_customer</foreign_table>
<foreign_table_where>AND tx_vitec_domain_model_customer.hidden = 0 AND tx_vitec_domain_model_customer.deleted = 0 ORDER BY tx_vitec_domain_model_customer.title</foreign_table_where>
<size>8</size>
<minitems>0</minitems>
<maxitems>999</maxitems>
</config>
</settings.customers>
<settings.onlySelected>
<label>Only show selected</label>
<description>Show only the highlighted customers — the remaining (b/w) logos are omitted entirely.</description>
<config>
<type>check</type>
<default>0</default>
</config>
</settings.onlySelected>
<settings.debug>
<label>Allow Debug Output</label>
<config>
<type>check</type>
<default>0</default>
</config>
</settings.debug>
</el>
</ROOT>
</sDEF>
</sheets>
</T3DataStructure>
@@ -9,6 +9,29 @@
<sheetTitle>Event List Settings</sheetTitle> <sheetTitle>Event List Settings</sheetTitle>
<type>array</type> <type>array</type>
<el> <el>
<settings.layout>
<label>Layout</label>
<config>
<type>select</type>
<renderType>selectSingle</renderType>
<items>
<numIndex index="0">
<label>List View</label>
<value>list</value>
</numIndex>
<numIndex index="1">
<label>Grid View</label>
<value>grid</value>
</numIndex>
<numIndex index="2">
<label>Teaser Bar</label>
<value>teaserbar</value>
</numIndex>
</items>
<default>list</default>
</config>
</settings.layout>
<settings.daysinadvance> <settings.daysinadvance>
<label>Days in advance (0 = no limit)</label> <label>Days in advance (0 = no limit)</label>
<description>Only show upcoming events starting within the next N days, e.g. 60.</description> <description>Only show upcoming events starting within the next N days, e.g. 60.</description>
+57
View File
@@ -0,0 +1,57 @@
<?xml version="1.0" encoding="UTF-8"?>
<T3DataStructure>
<meta>
<langDisable>1</langDisable>
</meta>
<sheets>
<sDEF>
<ROOT>
<sheetTitle>Locations Settings</sheetTitle>
<type>array</type>
<el>
<settings.variant>
<label>Display Variant</label>
<config>
<type>select</type>
<renderType>selectSingle</renderType>
<items>
<numIndex index="0">
<label>Grid</label>
<value>grid</value>
</numIndex>
<numIndex index="1">
<label>List</label>
<value>list</value>
</numIndex>
<numIndex index="2">
<label>Map</label>
<value>map</value>
</numIndex>
</items>
<default>grid</default>
</config>
</settings.variant>
<settings.maptext>
<label>Map Text</label>
<description>Rich text shown alongside the map (Map variant only).</description>
<displayCond>FIELD:settings.variant:=:map</displayCond>
<config>
<type>text</type>
<rows>8</rows>
<enableRichtext>1</enableRichtext>
</config>
</settings.maptext>
<settings.debug>
<label>Allow Debug Output</label>
<config>
<type>check</type>
<default>0</default>
</config>
</settings.debug>
</el>
</ROOT>
</sDEF>
</sheets>
</T3DataStructure>
+146
View File
@@ -0,0 +1,146 @@
<?xml version="1.0" encoding="UTF-8"?>
<T3DataStructure>
<meta>
<langDisable>1</langDisable>
</meta>
<sheets>
<sDEF>
<ROOT>
<sheetTitle>Card Settings</sheetTitle>
<type>array</type>
<el>
<settings.modelType>
<label>Card Type</label>
<onChange>reload</onChange>
<config>
<type>select</type>
<renderType>selectSingle</renderType>
<items>
<numIndex index="0">
<label>Product</label>
<value>product</value>
</numIndex>
<numIndex index="1">
<label>Success Story</label>
<value>story</value>
</numIndex>
<numIndex index="2">
<label>Market</label>
<value>market</value>
</numIndex>
<numIndex index="3">
<label>Solution</label>
<value>solution</value>
</numIndex>
</items>
<default>product</default>
</config>
</settings.modelType>
<settings.product>
<label>Product</label>
<displayCond>FIELD:settings.modelType:=:product</displayCond>
<config>
<type>select</type>
<renderType>selectSingle</renderType>
<items>
<numIndex index="0">
<label>— please choose —</label>
<value>0</value>
</numIndex>
</items>
<foreign_table>tx_vitec_domain_model_product</foreign_table>
<foreign_table_where>AND tx_vitec_domain_model_product.hidden = 0 AND tx_vitec_domain_model_product.deleted = 0 ORDER BY tx_vitec_domain_model_product.title</foreign_table_where>
</config>
</settings.product>
<settings.story>
<label>Success Story</label>
<displayCond>FIELD:settings.modelType:=:story</displayCond>
<config>
<type>select</type>
<renderType>selectSingle</renderType>
<items>
<numIndex index="0">
<label>— please choose —</label>
<value>0</value>
</numIndex>
</items>
<foreign_table>tx_vitec_domain_model_usecase</foreign_table>
<foreign_table_where>AND tx_vitec_domain_model_usecase.hidden = 0 AND tx_vitec_domain_model_usecase.deleted = 0 ORDER BY tx_vitec_domain_model_usecase.title</foreign_table_where>
</config>
</settings.story>
<settings.market>
<label>Market</label>
<displayCond>FIELD:settings.modelType:=:market</displayCond>
<config>
<type>select</type>
<renderType>selectSingle</renderType>
<items>
<numIndex index="0">
<label>— please choose —</label>
<value>0</value>
</numIndex>
</items>
<foreign_table>tx_vitec_domain_model_market</foreign_table>
<foreign_table_where>AND tx_vitec_domain_model_market.hidden = 0 AND tx_vitec_domain_model_market.deleted = 0 ORDER BY tx_vitec_domain_model_market.title</foreign_table_where>
</config>
</settings.market>
<settings.solution>
<label>Solution</label>
<displayCond>FIELD:settings.modelType:=:solution</displayCond>
<config>
<type>select</type>
<renderType>selectSingle</renderType>
<items>
<numIndex index="0">
<label>— please choose —</label>
<value>0</value>
</numIndex>
</items>
<foreign_table>tx_vitec_domain_model_solution</foreign_table>
<foreign_table_where>AND tx_vitec_domain_model_solution.hidden = 0 AND tx_vitec_domain_model_solution.deleted = 0 ORDER BY tx_vitec_domain_model_solution.title</foreign_table_where>
</config>
</settings.solution>
<settings.layout>
<label>Layout</label>
<config>
<type>select</type>
<renderType>selectSingle</renderType>
<items>
<numIndex index="0">
<label>Vertical (image top)</label>
<value>vertical</value>
</numIndex>
<numIndex index="1">
<label>Horizontal (image left)</label>
<value>horizontal</value>
</numIndex>
<numIndex index="2">
<label>Image Overlay</label>
<value>overlay</value>
</numIndex>
<numIndex index="3">
<label>Compact</label>
<value>compact</value>
</numIndex>
</items>
<default>vertical</default>
</config>
</settings.layout>
<settings.debug>
<label>Allow Debug Output</label>
<config>
<type>check</type>
<default>0</default>
</config>
</settings.debug>
</el>
</ROOT>
</sDEF>
</sheets>
</T3DataStructure>
@@ -8,6 +8,17 @@
</sheetTitle> </sheetTitle>
<type>array</type> <type>array</type>
<el> <el>
<settings.backPid>
<label>Back to List View (page)</label>
<description>Page that holds the Success Story list plugin. Used to build the back link in the JSON output.</description>
<config>
<type>group</type>
<allowed>pages</allowed>
<size>1</size>
<maxitems>1</maxitems>
</config>
</settings.backPid>
<settings.debug> <settings.debug>
<label>Allow Debug Output.</label> <label>Allow Debug Output.</label>
<config> <config>
@@ -19,20 +30,6 @@
</items> </items>
</config> </config>
</settings.debug> </settings.debug>
<settings.usecase>
<label>
Usecase
</label>
<config>
<type>select</type>
<renderType>selectSingle</renderType>
<foreign_table>tx_vitec_domain_model_usecase</foreign_table>
<foreign_table_where>AND tx_vitec_domain_model_usecase.hidden = 0 AND tx_vitec_domain_model_usecase.deleted = 0 ORDER BY tx_vitec_domain_model_usecase.title</foreign_table_where>
<size>1</size>
<minitems>0</minitems>
<maxitems>1</maxitems>
</config>
</settings.usecase>
<settings.layout> <settings.layout>
<label> <label>
Layout Layout
@@ -6,6 +6,17 @@
<sheetTitle>Usecase List</sheetTitle> <sheetTitle>Usecase List</sheetTitle>
<type>array</type> <type>array</type>
<el> <el>
<settings.singlePid>
<label>Single PID (detail page)</label>
<description>Page that holds the "Show single VITEC Success Story" plugin. Used to build the detail links in the JSON output.</description>
<config>
<type>group</type>
<allowed>pages</allowed>
<size>1</size>
<maxitems>1</maxitems>
</config>
</settings.singlePid>
<settings.debug> <settings.debug>
<label>Allow Debug Output.</label> <label>Allow Debug Output.</label>
<config> <config>
+12
View File
@@ -76,4 +76,16 @@ return [
'provider' => SvgIconProvider::class, 'provider' => SvgIconProvider::class,
'source' => 'EXT:vitec/Resources/Public/Icons/vitec-ogimage.svg', 'source' => 'EXT:vitec/Resources/Public/Icons/vitec-ogimage.svg',
], ],
'vitec-plugin-locationlist' => [
'provider' => SvgIconProvider::class,
'source' => 'EXT:vitec/Resources/Public/Icons/vitec-plugin-locationlist.svg',
],
'vitec-plugin-customerlogos' => [
'provider' => SvgIconProvider::class,
'source' => 'EXT:vitec/Resources/Public/Icons/vitec-plugin-customerlogos.svg',
],
'vitec-plugin-modelcard' => [
'provider' => SvgIconProvider::class,
'source' => 'EXT:vitec/Resources/Public/Icons/vitec-plugin-modelcard.svg',
],
]; ];
+20
View File
@@ -0,0 +1,20 @@
<?php
declare(strict_types=1);
/**
* Frontend middleware registration for EXT:vitec.
*/
return [
'frontend' => [
'vitec/success-story-path-rewrite' => [
'target' => \Evomedien\Vitec\Middleware\SuccessStoryPathRewrite::class,
'after' => [
'typo3/cms-core/normalized-params-attribute',
],
'before' => [
'typo3/cms-frontend/site',
],
],
],
];
@@ -160,6 +160,42 @@ tt_content {
} }
} }
} }
vitec_modelcard < lib.contentElementWithHeader
vitec_modelcard {
fields {
content {
fields {
card = USER
card.userFunc = Evomedien\Vitec\UserFunc\ModelcardJsonRenderer->render
}
}
}
}
vitec_customerlogos < lib.contentElementWithHeader
vitec_customerlogos {
fields {
content {
fields {
customerlogos = USER
customerlogos.userFunc = Evomedien\Vitec\UserFunc\CustomerlogosJsonRenderer->render
}
}
}
}
vitec_locationlist < lib.contentElementWithHeader
vitec_locationlist {
fields {
content {
fields {
locations = USER
locations.userFunc = Evomedien\Vitec\UserFunc\LocationsJsonRenderer->render
}
}
}
}
} }
# Include container (layout) rendering definitions # Include container (layout) rendering definitions
@@ -35,6 +35,41 @@ use TYPO3\CMS\Extbase\Utility\ExtensionUtility;
$registerPluginWithFlexForm('Downloadcardcollection', 'Download Card Collection', 'FILE:EXT:vitec/Configuration/FlexForms/Downloadcardcollection.xml', 'vitec-plugin-downloadcardcollection'); $registerPluginWithFlexForm('Downloadcardcollection', 'Download Card Collection', 'FILE:EXT:vitec/Configuration/FlexForms/Downloadcardcollection.xml', 'vitec-plugin-downloadcardcollection');
$registerPluginWithFlexForm('Datasheets', 'Datasheets', 'FILE:EXT:vitec/Configuration/FlexForms/Datasheets.xml'); $registerPluginWithFlexForm('Datasheets', 'Datasheets', 'FILE:EXT:vitec/Configuration/FlexForms/Datasheets.xml');
$registerPluginWithFlexForm('Eventlist', 'Event List', 'FILE:EXT:vitec/Configuration/FlexForms/Eventlist.xml', 'vitec-plugin-eventlist'); $registerPluginWithFlexForm('Eventlist', 'Event List', 'FILE:EXT:vitec/Configuration/FlexForms/Eventlist.xml', 'vitec-plugin-eventlist');
// Locations: lives in the "VITEC" wizard group, titled "VITEC Locations".
$GLOBALS['TCA']['tt_content']['columns']['CType']['config']['itemGroups']['vitec']
= 'LLL:EXT:vitec/Resources/Private/Language/locallang_containers.xlf:group.header';
ExtensionUtility::registerPlugin(
'Vitec',
'Modelcard',
'VITEC Card',
'vitec-plugin-modelcard',
'vitec',
'One card for a Product, Success Story, Market or Solution — all data from the model.',
'FILE:EXT:vitec/Configuration/FlexForms/Modelcard.xml'
);
$GLOBALS['TCA']['tt_content']['types']['vitec_modelcard']['previewRenderer']
= \Evomedien\Vitec\Preview\ModelcardPreviewRenderer::class;
ExtensionUtility::registerPlugin(
'Vitec',
'Customerlogos',
'VITEC Customer Logos',
'vitec-plugin-customerlogos',
'vitec',
'Customer logos in list, grid, carousel or marquee layout.',
'FILE:EXT:vitec/Configuration/FlexForms/Customerlogos.xml'
);
ExtensionUtility::registerPlugin(
'Vitec',
'Locationlist',
'VITEC Locations',
'vitec-plugin-locationlist',
'vitec',
'Locations as grid, list or interactive map.',
'FILE:EXT:vitec/Configuration/FlexForms/Locationlist.xml'
);
// Change frame_class to allow multiple selections. // Change frame_class to allow multiple selections.
$GLOBALS['TCA']['tt_content']['columns']['frame_class']['config']['renderType'] = 'selectCheckBox'; $GLOBALS['TCA']['tt_content']['columns']['frame_class']['config']['renderType'] = 'selectCheckBox';
@@ -0,0 +1,63 @@
<?php
return [
'ctrl' => [
'title' => 'VITEC Customer',
'label' => 'title',
'tstamp' => 'tstamp',
'crdate' => 'crdate',
'sortby' => 'sorting',
'delete' => 'deleted',
'enablecolumns' => [
'disabled' => 'hidden',
'starttime' => 'starttime',
'endtime' => 'endtime',
],
'searchFields' => 'title',
'iconfile' => 'EXT:vitec/Resources/Public/Icons/vitec-plugin-customerlogos.svg',
'security' => [
'ignorePageTypeRestriction' => true,
],
],
'types' => [
'1' => [
'showitem' =>
'title, logo, emphasize_logo,
--div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:access,
hidden, starttime, endtime',
],
],
'columns' => [
'hidden' => [
'exclude' => true,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.visible',
'config' => [
'type' => 'check',
'renderType' => 'checkboxToggle',
'items' => [['value' => '', 'label' => '', 'invertStateDisplay' => true]],
],
],
'starttime' => [
'exclude' => true,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.starttime',
'config' => ['type' => 'datetime', 'default' => 0],
],
'endtime' => [
'exclude' => true,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.endtime',
'config' => ['type' => 'datetime', 'default' => 0, 'range' => ['upper' => mktime(0, 0, 0, 1, 1, 2038)]],
],
'title' => [
'label' => 'Customer Name',
'config' => ['type' => 'input', 'size' => 40, 'eval' => 'trim', 'required' => true, 'default' => ''],
],
'logo' => [
'label' => 'Logo',
'config' => ['type' => 'file', 'maxitems' => 1, 'allowed' => 'common-image-types'],
],
'emphasize_logo' => [
'label' => 'Emphasize Logo',
'description' => 'Highlight this logo (e.g. larger) in the frontend.',
'config' => ['type' => 'check', 'renderType' => 'checkboxToggle', 'items' => [['value' => '', 'label' => '']]],
],
],
];
@@ -0,0 +1,168 @@
<?php
return [
'ctrl' => [
'title' => 'VITEC Location',
'label' => 'title',
'tstamp' => 'tstamp',
'crdate' => 'crdate',
'sortby' => 'sorting',
'delete' => 'deleted',
'enablecolumns' => [
'disabled' => 'hidden',
'starttime' => 'starttime',
'endtime' => 'endtime',
],
'searchFields' => 'title,slug,city,country,country_code',
'iconfile' => 'EXT:vitec/Resources/Public/Icons/vitec-plugin-locationlist.svg',
'security' => [
'ignorePageTypeRestriction' => true,
],
],
'types' => [
'1' => [
'showitem' =>
'--div--;General,
title, slug, country_code,
--palette--;Coordinates;coords,
--div--;Address,
address_company, street, address_additional,
--palette--;;cityline,
region, country,
--div--;Contact & Links,
phone, fax, email, contact_link, legal_links,
--div--;Marker,
marker_label, marker_color, marker_size,
--div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:access,
hidden, starttime, endtime',
],
],
'palettes' => [
'coords' => ['showitem' => 'latitude, longitude'],
'cityline' => ['showitem' => 'postal_code, city'],
],
'columns' => [
'hidden' => [
'exclude' => true,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.visible',
'config' => [
'type' => 'check',
'renderType' => 'checkboxToggle',
'items' => [['value' => '', 'label' => '', 'invertStateDisplay' => true]],
],
],
'starttime' => [
'exclude' => true,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.starttime',
'config' => ['type' => 'datetime', 'default' => 0],
],
'endtime' => [
'exclude' => true,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.endtime',
'config' => ['type' => 'datetime', 'default' => 0, 'range' => ['upper' => mktime(0, 0, 0, 1, 1, 2038)]],
],
// ----------------------------------------------------------- General
'title' => [
'label' => 'Name',
'config' => ['type' => 'input', 'size' => 40, 'eval' => 'trim', 'required' => true, 'default' => ''],
],
'slug' => [
'label' => 'Slug',
'config' => [
'type' => 'slug',
'size' => 50,
'generatorOptions' => ['fields' => ['title'], 'fieldSeparator' => '-', 'replacements' => ['/' => '', ',' => '']],
'fallbackCharacter' => '-',
'eval' => 'uniqueInPid',
],
],
'country_code' => [
'label' => 'Country Code (ISO 3166-1 alpha-2)',
'description' => 'e.g. US, DE, GB',
'config' => ['type' => 'input', 'size' => 6, 'max' => 5, 'eval' => 'trim,upper', 'default' => ''],
],
'latitude' => [
'label' => 'Latitude',
'config' => ['type' => 'number', 'format' => 'decimal', 'default' => 0, 'range' => ['lower' => -90, 'upper' => 90]],
],
'longitude' => [
'label' => 'Longitude',
'config' => ['type' => 'number', 'format' => 'decimal', 'default' => 0, 'range' => ['lower' => -180, 'upper' => 180]],
],
// ----------------------------------------------------------- Address
'address_company' => [
'label' => 'Company (optional)',
'config' => ['type' => 'input', 'size' => 40, 'eval' => 'trim', 'default' => ''],
],
'street' => [
'label' => 'Street',
'config' => ['type' => 'input', 'size' => 40, 'eval' => 'trim', 'default' => ''],
],
'address_additional' => [
'label' => 'Additional (optional)',
'config' => ['type' => 'input', 'size' => 40, 'eval' => 'trim', 'default' => ''],
],
'postal_code' => [
'label' => 'Postal Code',
'config' => ['type' => 'input', 'size' => 10, 'max' => 20, 'eval' => 'trim', 'default' => ''],
],
'city' => [
'label' => 'City',
'config' => ['type' => 'input', 'size' => 30, 'eval' => 'trim', 'default' => ''],
],
'region' => [
'label' => 'Region / State (optional)',
'description' => 'e.g. GA',
'config' => ['type' => 'input', 'size' => 20, 'eval' => 'trim', 'default' => ''],
],
'country' => [
'label' => 'Country (display name)',
'config' => ['type' => 'input', 'size' => 30, 'eval' => 'trim', 'default' => ''],
],
// --------------------------------------------------- Contact & Links
'phone' => [
'label' => 'Phone',
'config' => ['type' => 'input', 'size' => 30, 'max' => 100, 'eval' => 'trim', 'default' => ''],
],
'fax' => [
'label' => 'Fax',
'config' => ['type' => 'input', 'size' => 30, 'max' => 100, 'eval' => 'trim', 'default' => ''],
],
'email' => [
'label' => 'E-Mail',
'config' => ['type' => 'email', 'size' => 40, 'default' => ''],
],
'contact_link' => [
'label' => 'Contact Link',
'config' => ['type' => 'link', 'allowedTypes' => ['page', 'url', 'email']],
],
'legal_links' => [
'label' => 'Legal Links',
'description' => 'One link per line (page link or URL).',
'config' => ['type' => 'text', 'cols' => 40, 'rows' => 3, 'eval' => 'trim'],
],
// ------------------------------------------------------------ Marker
'marker_label' => [
'label' => 'Marker Label (optional)',
'description' => 'Falls back to the location name.',
'config' => ['type' => 'input', 'size' => 40, 'eval' => 'trim', 'default' => ''],
],
'marker_color' => [
'label' => 'Marker Color',
'config' => ['type' => 'color', 'default' => '#ff6633'],
],
'marker_size' => [
'label' => 'Marker Size (scale, e.g. 0.5)',
'config' => [
'type' => 'number',
'format' => 'decimal',
'default' => 0.5,
'range' => ['lower' => 0, 'upper' => 5],
'slider' => ['step' => 0.05, 'width' => 200],
],
],
],
];
@@ -34,7 +34,7 @@ return [
--div--;Detail · Content, --div--;Detail · Content,
content_elements, content_elements,
--div--;Detail · Related, --div--;Detail · Related,
market, solutions, products, categories, markets, solutions, products, categories,
--div--;SEO, --div--;SEO,
seo_title, seo_description, no_index, no_follow, canonical_link, seo_title, seo_description, no_index, no_follow, canonical_link,
--palette--;Open Graph;ogPalette, --palette--;Open Graph;ogPalette,
@@ -182,15 +182,16 @@ return [
], ],
// --------------------------------------------------- Detail · Related // --------------------------------------------------- Detail · Related
'market' => [ 'markets' => [
'label' => 'Market', 'label' => 'Markets',
'config' => [ 'config' => [
'type' => 'select', 'type' => 'select',
'renderType' => 'selectSingle', 'renderType' => 'selectMultipleSideBySide',
'foreign_table' => 'tx_vitec_domain_model_market', 'foreign_table' => 'tx_vitec_domain_model_market',
'items' => [['label' => '', 'value' => 0]], 'MM' => 'tx_vitec_usecase_market_mm',
'default' => 0, 'size' => 6,
'maxitems' => 1, 'autoSizeMax' => 20,
'maxitems' => 9999,
], ],
], ],
'solutions' => [ 'solutions' => [
@@ -4,6 +4,11 @@ prefixFields: true
prefixType: vendor prefixType: vendor
fields: fields:
# ──────────────────────────────────────────────────────────────────────
- identifier: tab_content
type: Tab
label: Content
- identifier: eyebrow - identifier: eyebrow
type: Text type: Text
max: 50 max: 50
@@ -29,10 +34,6 @@ fields:
- identifier: subheader - identifier: subheader
useExistingField: true useExistingField: true
- identifier: bodytext - identifier: bodytext
useExistingField: true useExistingField: true
enableRichtext: true enableRichtext: true
@@ -53,7 +54,33 @@ fields:
- identifier: Vitec/ButtonStyle - identifier: Vitec/ButtonStyle
type: Basic type: Basic
# --- Image --- - identifier: hero_layout_variant
type: Select
renderType: selectSingle
default: fullscreen
items:
- label: Fullscreen
value: fullscreen
- label: Medium
value: md
- label: Small
value: sm
- label: Extra Small
value: xs
- identifier: show_logo_wall
type: Checkbox
default: 0
- identifier: debug
type: Checkbox
default: 0
# ──────────────────────────────────────────────────────────────────────
- identifier: tab_images
type: Tab
label: Images
- identifier: hero_bgimage - identifier: hero_bgimage
type: File type: File
minitems: 0 minitems: 0
@@ -82,7 +109,11 @@ fields:
- label: Fullwidth - label: Fullwidth
value: fullwidth value: fullwidth
# --- Video --- # ──────────────────────────────────────────────────────────────────────
- identifier: tab_video
type: Tab
label: Video
- identifier: hero_video - identifier: hero_video
type: File type: File
minitems: 0 minitems: 0
@@ -115,24 +146,28 @@ fields:
type: Checkbox type: Checkbox
default: 1 default: 1
- identifier: hero_layout_variant # --- Background video with overlay layer ---
type: Select - identifier: hero_bgvideo
renderType: selectSingle type: File
default: fullscreen label: Background Video
items: description: 'Fullscreen background video behind the hero content.'
- label: Fullscreen minitems: 0
value: fullscreen maxitems: 1
- label: Medium allowed: mp4,webm,ogv,mov,m4v
value: md
- label: Small
value: sm
- label: Extra Small
value: xs
- identifier: show_logo_wall - identifier: hero_overlay_color
type: Checkbox type: Color
default: 0 label: Overlay Color
description: 'Overlay layer on top of the background video/image.'
- identifier: debug - identifier: hero_overlay_opacity
type: Checkbox type: Number
default: 0 label: 'Overlay Opacity (0–1)'
format: decimal
default: 0.4
range:
lower: 0
upper: 1
slider:
step: 0.05
width: 200
@@ -102,6 +102,28 @@
<trans-unit id="hero_bgimage.description"> <trans-unit id="hero_bgimage.description">
<source>Optional background image placed behind the hero content.</source> <source>Optional background image placed behind the hero content.</source>
</trans-unit> </trans-unit>
<trans-unit id="tab_content.label">
<source>Content</source>
</trans-unit>
<trans-unit id="tab_images.label">
<source>Images</source>
</trans-unit>
<trans-unit id="tab_video.label">
<source>Video</source>
</trans-unit>
<trans-unit id="hero_bgvideo.label">
<source>Background Video</source>
</trans-unit>
<trans-unit id="hero_bgvideo.description">
<source>Fullscreen background video behind the hero content.</source>
</trans-unit>
<trans-unit id="hero_overlay_color.label">
<source>Overlay Color</source>
</trans-unit>
<trans-unit id="hero_overlay_opacity.label">
<source>Overlay Opacity (0–1)</source>
</trans-unit>
</body> </body>
</file> </file>
</xliff> </xliff>
@@ -0,0 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" width="32" height="32">
<path d="M6 8h8v8h-6l-2 8H4l2-8V8z" fill="#ff6a00"/>
<path d="M18 8h8v8h-6l-2 8h-2l2-8V8z" fill="#0a3d62"/>
</svg>

After

Width:  |  Height:  |  Size: 203 B

@@ -0,0 +1,44 @@
name: vitec/quotation
group: vitec_custom_components
prefixFields: true
prefixType: vendor
fields:
- identifier: header_section
type: Palette
label: Header
fields:
- identifier: header
useExistingField: true
- type: Linebreak
- identifier: header_layout
useExistingField: true
- identifier: header_position
useExistingField: true
- identifier: date
useExistingField: true
- type: Linebreak
- identifier: header_link
useExistingField: true
- type: Linebreak
- identifier: subheader
useExistingField: true
- identifier: quote
type: Textarea
required: true
rows: 5
- identifier: quote_name
type: Text
max: 120
- identifier: quote_position
type: Text
max: 180
- identifier: quote_logo
type: File
minitems: 0
maxitems: 1
allowed: common-image-types
@@ -0,0 +1,28 @@
<?xml version="1.0" encoding="UTF-8"?>
<xliff version="1.2">
<file source-language="en" datatype="plaintext" original="messages">
<body>
<trans-unit id="title">
<source>VITEC · Customer Quotation</source>
</trans-unit>
<trans-unit id="description">
<source>Customer quote with name, position and optional logo.</source>
</trans-unit>
<trans-unit id="quote.label">
<source>Quote</source>
</trans-unit>
<trans-unit id="quote.description">
<source>Plain quote text without quotation marks — the frontend adds them.</source>
</trans-unit>
<trans-unit id="quote_name.label">
<source>Name</source>
</trans-unit>
<trans-unit id="quote_position.label">
<source>Position / Company</source>
</trans-unit>
<trans-unit id="quote_logo.label">
<source>Logo (optional)</source>
</trans-unit>
</body>
</file>
</xliff>
@@ -0,0 +1,27 @@
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
<f:layout name="Preview"/>
<f:section name="Content">
<f:asset.css identifier="vitec-backend-preview" href="EXT:vitec/Resources/Public/Css/backend-preview.css"/>
<div class="vitec-preview">
<div class="vitec-preview__thumb-placeholder">&#8220;</div>
<div class="vitec-preview__body">
<div class="vitec-preview__label">VITEC · Customer Quotation</div>
<h3 class="vitec-preview__headline">
<f:if condition="{data.quote}">
<f:then>“{data.quote -> f:format.crop(maxCharacters: 90)}”</f:then>
<f:else><em style="color:#c00;">⚠ Quote missing</em></f:else>
</f:if>
</h3>
<f:if condition="{data.quote_name}">
<div class="vitec-preview__subline">— {data.quote_name}<f:if condition="{data.quote_position}">, {data.quote_position}</f:if></div>
</f:if>
</div>
<div class="vitec-preview__settings">
<f:if condition="{data.quote_logo.0}"><span class="vitec-badge">🖼 Logo</span></f:if>
</div>
</div>
</f:section>
</html>
@@ -0,0 +1,3 @@
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
<!-- Headless mode: JSON is built by nb-headless-content-blocks -->
</html>
@@ -0,0 +1,36 @@
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
<f:asset.css identifier="vitec-backend-preview" href="EXT:vitec/Resources/Public/Css/backend-preview.css"/>
<div class="vitec-preview">
<f:if condition="{imageUrl}">
<f:then>
<img src="{imageUrl}" class="vitec-preview__thumb" width="200" alt="Card preview"/>
</f:then>
<f:else>
<div class="vitec-preview__thumb-placeholder">▢</div>
</f:else>
</f:if>
<div class="vitec-preview__body">
<div class="vitec-preview__label">VITEC · Card — {typeLabel}</div>
<h3 class="vitec-preview__headline">
<f:if condition="{title}">
<f:then>{title}</f:then>
<f:else><em style="color:#c00;">⚠ No {typeLabel} selected</em></f:else>
</f:if>
</h3>
<f:if condition="{subtitle}">
<div class="vitec-preview__subline">{subtitle -> f:format.crop(maxCharacters: 90)}</div>
</f:if>
</div>
<div class="vitec-preview__settings">
<span class="vitec-badge">{typeLabel}</span>
<span class="vitec-badge">Layout: {layout}</span>
<f:if condition="{recordUid} == 0">
<span class="vitec-badge vitec-badge--warning">⚠ nothing selected</span>
</f:if>
</div>
</div>
</html>
@@ -204,4 +204,44 @@
align-items: flex-start; align-items: flex-start;
flex-wrap: wrap; flex-wrap: wrap;
} }
} }
/* Small monitors: drop the body text — label, headline and badges stay. */
@media (max-width: 1400px) {
.vitec-preview__body-text {
display: none;
}
}
/* Real fix: react to the PREVIEW COLUMN width, not the monitor width.
The page-module body of a CE containing a vitec preview becomes a size
container (e.g. inside narrow b13 container columns). */
.t3-page-ce-body:has(.vitec-preview) {
container-type: inline-size;
}
/* Narrow column: stack the grid, drop the body text, badges in a row. */
@container (max-width: 700px) {
.vitec-preview {
grid-template-columns: 1fr;
}
.vitec-preview__body-text {
display: none;
}
.vitec-preview__settings {
flex-direction: row;
align-items: flex-start;
flex-wrap: wrap;
}
.vitec-preview__thumb,
.vitec-preview__thumb-placeholder {
max-width: 100%;
height: auto;
}
}
/* Very narrow column: only label, headline and badges survive. */
@container (max-width: 420px) {
.vitec-preview__subline {
display: none;
}
}
@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" width="32" height="32">
<rect x="3" y="7" width="12" height="8" rx="1.5" fill="#ff6a00"/>
<rect x="17" y="7" width="12" height="8" rx="1.5" fill="#9aa2ab"/>
<rect x="3" y="17" width="12" height="8" rx="1.5" fill="#9aa2ab"/>
<rect x="17" y="17" width="12" height="8" rx="1.5" fill="#9aa2ab"/>
</svg>

After

Width:  |  Height:  |  Size: 367 B

@@ -0,0 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" width="32" height="32">
<path d="M16 3c-5 0-9 4-9 9 0 6.6 9 17 9 17s9-10.4 9-17c0-5-4-9-9-9z" fill="#ff6a00"/>
<circle cx="16" cy="12" r="4" fill="#fff"/>
</svg>

After

Width:  |  Height:  |  Size: 226 B

@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" width="32" height="32">
<rect x="5" y="4" width="22" height="24" rx="2" fill="#0a3d62"/>
<rect x="8" y="7" width="16" height="9" rx="1" fill="#ff6a00"/>
<rect x="8" y="19" width="16" height="2.5" rx="1" fill="#fff"/>
<rect x="8" y="23" width="10" height="2.5" rx="1" fill="#9aa2ab"/>
</svg>

After

Width:  |  Height:  |  Size: 359 B

+36
View File
@@ -157,4 +157,40 @@ $GLOBALS['TYPO3_CONF_VARS']['SYS']['formEngine']['nodeRegistry'][1750000000] = [
\Evomedien\Vitec\Controller\EventController::class => 'list' \Evomedien\Vitec\Controller\EventController::class => 'list'
] ]
); );
ExtensionUtility::configurePlugin(
'Vitec',
'Locationlist',
[
\Evomedien\Vitec\Controller\LocationController::class => 'list'
],
[
\Evomedien\Vitec\Controller\LocationController::class => 'list'
]
);
ExtensionUtility::configurePlugin(
'Vitec',
'Customerlogos',
[
\Evomedien\Vitec\Controller\CustomerController::class => 'list'
],
[
\Evomedien\Vitec\Controller\CustomerController::class => 'list'
]
);
ExtensionUtility::configurePlugin(
'Vitec',
'Modelcard',
[
\Evomedien\Vitec\Controller\ModelcardController::class => 'list'
],
[
\Evomedien\Vitec\Controller\ModelcardController::class => 'list'
]
);
})(); })();
+39 -1
View File
@@ -100,7 +100,7 @@ CREATE TABLE tx_vitec_domain_model_usecase (
card_image int(11) unsigned DEFAULT '0' NOT NULL, card_image int(11) unsigned DEFAULT '0' NOT NULL,
customer_logo int(11) unsigned DEFAULT '0' NOT NULL, customer_logo int(11) unsigned DEFAULT '0' NOT NULL,
teaser text, teaser text,
market int(11) unsigned DEFAULT '0' NOT NULL, markets int(11) unsigned DEFAULT '0' NOT NULL,
hero_bgimage int(11) unsigned DEFAULT '0' NOT NULL, hero_bgimage int(11) unsigned DEFAULT '0' NOT NULL,
hero_small_image int(11) unsigned DEFAULT '0' NOT NULL, hero_small_image int(11) unsigned DEFAULT '0' NOT NULL,
@@ -243,3 +243,41 @@ CREATE TABLE tx_vitec_usecase_product_mm (
KEY uid_local (uid_local), KEY uid_local (uid_local),
KEY uid_foreign (uid_foreign) KEY uid_foreign (uid_foreign)
); );
CREATE TABLE tx_vitec_usecase_market_mm (
uid_local int(11) unsigned DEFAULT '0' NOT NULL,
uid_foreign int(11) unsigned DEFAULT '0' NOT NULL,
sorting int(11) unsigned DEFAULT '0' NOT NULL,
sorting_foreign int(11) unsigned DEFAULT '0' NOT NULL,
KEY uid_local (uid_local),
KEY uid_foreign (uid_foreign)
);
CREATE TABLE tx_vitec_domain_model_location (
title varchar(255) DEFAULT '' NOT NULL,
slug varchar(255) DEFAULT '' NOT NULL,
country_code varchar(5) DEFAULT '' NOT NULL,
latitude decimal(11,7) DEFAULT '0.0000000' NOT NULL,
longitude decimal(11,7) DEFAULT '0.0000000' NOT NULL,
address_company varchar(255) DEFAULT '' NOT NULL,
street varchar(255) DEFAULT '' NOT NULL,
address_additional varchar(255) DEFAULT '' NOT NULL,
postal_code varchar(20) DEFAULT '' NOT NULL,
city varchar(255) DEFAULT '' NOT NULL,
region varchar(255) DEFAULT '' NOT NULL,
country varchar(255) DEFAULT '' NOT NULL,
phone varchar(100) DEFAULT '' NOT NULL,
fax varchar(100) DEFAULT '' NOT NULL,
email varchar(255) DEFAULT '' NOT NULL,
contact_link varchar(1024) DEFAULT '' NOT NULL,
legal_links text,
marker_label varchar(255) DEFAULT '' NOT NULL,
marker_color varchar(20) DEFAULT '#ff6633' NOT NULL,
marker_size decimal(3,2) DEFAULT '0.50' NOT NULL
);
CREATE TABLE tx_vitec_domain_model_customer (
title varchar(255) DEFAULT '' NOT NULL,
logo int(11) unsigned DEFAULT '0' NOT NULL,
emphasize_logo smallint(5) unsigned DEFAULT '0' NOT NULL
);
+7 -4
View File
@@ -397,7 +397,10 @@ FileETag None
# Add your own rules here. # Add your own rules here.
#AuthUserFile "/usr/www/users/vitecevo/live/public/.htpasswd" AuthUserFile "/usr/www/users/vitecevo/live/public/.htpasswd"
#AuthName "DEV" AuthName "DEV"
#AuthType Basic AuthType Basic
#require valid-user <RequireAny>
Require ip 217.70.192.164
Require valid-user
</RequireAny>
+27 -27
View File
@@ -1,27 +1,27 @@
RewriteEngine On RewriteEngine On
RewriteBase /_frontend/ RewriteBase /_frontend/
RewriteRule ^index\.html$ - [L] RewriteRule ^index\.html$ - [L]
RewriteCond %{REQUEST_FILENAME} -f [OR] RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L] RewriteRule ^ - [L]
RewriteRule ^ index.html [L] RewriteRule ^ index.html [L]
# ── Cache headers ──────────────────────────────────────────────────────────── # ── Cache headers ────────────────────────────────────────────────────────────
# index.html: never cache — always fetch fresh so the browser picks up # index.html: never cache — always fetch fresh so the browser picks up
# the latest hashed JS/CSS filenames after a deploy. # the latest hashed JS/CSS filenames after a deploy.
<Files "index.html"> <Files "index.html">
Header set Cache-Control "no-store, no-cache, must-revalidate" Header set Cache-Control "no-store, no-cache, must-revalidate"
Header set Pragma "no-cache" Header set Pragma "no-cache"
Header set Expires "0" Header set Expires "0"
</Files> </Files>
# Hashed assets (JS, CSS, fonts, images inside /assets/): # Hashed assets (JS, CSS, fonts, images inside /assets/):
# Vite appends a content hash to every filename, so these are immutable. # Vite appends a content hash to every filename, so these are immutable.
# Cache them for 1 year — a new deploy produces new filenames automatically. # Cache them for 1 year — a new deploy produces new filenames automatically.
<FilesMatch "\.(js|css|woff2?|ttf|eot|otf)$"> <FilesMatch "\.(js|css|woff2?|ttf|eot|otf)$">
Header set Cache-Control "public, max-age=31536000, immutable" Header set Cache-Control "public, max-age=31536000, immutable"
</FilesMatch> </FilesMatch>
@@ -0,0 +1 @@
import{t as e}from"./useControlled-CztbT67m.js";import{A as t,G as n,I as r,K as i,N as a,O as o,P as s,Q as c,X as l,Z as u,at as d,i as f,it as p,mt as m,ot as h,rt as g,tt as _,ut as v}from"./index-CM0zIqrs.js";var y=m(v()),b=y.createContext(void 0);function x(){return y.useContext(b)}function S(e){return p(`PrivateSwitchBase`,e)}g(`PrivateSwitchBase`,[`root`,`checked`,`disabled`,`input`,`edgeStart`,`edgeEnd`]);var C=h(),w=e=>{let{classes:t,checked:n,disabled:r,edge:a}=e;return _({root:[`root`,n&&`checked`,r&&`disabled`,a&&`edge${i(a)}`],input:[`input`]},S,t)},T=u(s,{name:`MuiSwitchBase`})({padding:9,borderRadius:`50%`,variants:[{props:{edge:`start`,size:`small`},style:{marginLeft:-3}},{props:({edge:e,ownerState:t})=>e===`start`&&t.size!==`small`,style:{marginLeft:-12}},{props:{edge:`end`,size:`small`},style:{marginRight:-3}},{props:({edge:e,ownerState:t})=>e===`end`&&t.size!==`small`,style:{marginRight:-12}}]}),E=u(`input`,{name:`MuiSwitchBase`,shouldForwardProp:c})({cursor:`inherit`,position:`absolute`,opacity:0,width:`100%`,height:`100%`,top:0,left:0,margin:0,padding:0,zIndex:1}),D=y.forwardRef(function(t,n){let{autoFocus:i,checked:a,checkedIcon:o,defaultChecked:s,disabled:c,disableFocusRipple:l=!1,edge:u=!1,icon:d,id:f,inputProps:p,inputRef:m,name:h,onBlur:g,onChange:_,onFocus:v,readOnly:y,required:b=!1,tabIndex:S,type:D,value:O,slots:k={},slotProps:A={},...j}=t,[M,N]=e({controlled:a,default:!!s,name:`SwitchBase`,state:`checked`}),P=x(),F=e=>{v&&v(e),P&&P.onFocus&&P.onFocus(e)},I=e=>{g&&g(e),P&&P.onBlur&&P.onBlur(e)},L=e=>{if(e.nativeEvent.defaultPrevented)return;let t=e.target.checked;N(t),_&&_(e,t)},R=c;P&&R===void 0&&(R=P.disabled);let z=D===`checkbox`||D===`radio`,B={...t,checked:M,disabled:R,disableFocusRipple:l,edge:u},V=w(B),H={slots:k,slotProps:{input:p,...A}},[U,W]=r(`root`,{ref:n,elementType:T,className:V.root,shouldForwardComponentProp:!0,externalForwardedProps:{...H,component:`span`,...j},getSlotProps:e=>({...e,onFocus:t=>{e.onFocus?.(t),F(t)},onBlur:t=>{e.onBlur?.(t),I(t)}}),ownerState:B,additionalProps:{centerRipple:!0,focusRipple:!l,disabled:R,role:void 0,tabIndex:null}}),[G,K]=r(`input`,{ref:m,elementType:E,className:V.input,externalForwardedProps:H,getSlotProps:e=>({...e,onChange:t=>{e.onChange?.(t),L(t)}}),ownerState:B,additionalProps:{autoFocus:i,checked:a,defaultChecked:s,disabled:R,id:z?f:void 0,name:h,readOnly:y,required:b,tabIndex:S,type:D,...D===`checkbox`&&O===void 0?{}:{value:O}}});return(0,C.jsxs)(U,{...W,children:[(0,C.jsx)(G,{...K}),M?o:d]})});function O(e){return p(`MuiSwitch`,e)}var k=g(`MuiSwitch`,[`root`,`edgeStart`,`edgeEnd`,`switchBase`,`colorPrimary`,`colorSecondary`,`sizeSmall`,`sizeMedium`,`checked`,`disabled`,`input`,`thumb`,`track`]),A=e=>{let{classes:t,edge:n,size:r,color:a,checked:o,disabled:s}=e,c=_({root:[`root`,n&&`edge${i(n)}`,`size${i(r)}`],switchBase:[`switchBase`,`color${i(a)}`,o&&`checked`,s&&`disabled`],thumb:[`thumb`],track:[`track`],input:[`input`]},O,t);return{...t,...c}},j=u(`span`,{name:`MuiSwitch`,slot:`Root`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.root,n.edge&&t[`edge${i(n.edge)}`],t[`size${i(n.size)}`]]}})({display:`inline-flex`,width:58,height:38,overflow:`hidden`,padding:12,boxSizing:`border-box`,position:`relative`,flexShrink:0,zIndex:0,verticalAlign:`middle`,"@media print":{colorAdjust:`exact`},variants:[{props:{edge:`start`},style:{marginLeft:-8}},{props:{edge:`end`},style:{marginRight:-8}},{props:{size:`small`},style:{width:40,height:24,padding:7,[`& .${k.thumb}`]:{width:16,height:16},[`& .${k.switchBase}`]:{padding:4,[`&.${k.checked}`]:{transform:`translateX(16px)`}}}}]}),M=u(D,{name:`MuiSwitch`,slot:`SwitchBase`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.switchBase,{[`& .${k.input}`]:t.input},n.color!==`default`&&t[`color${i(n.color)}`]]}})(n(({theme:e})=>({position:`absolute`,top:0,left:0,zIndex:1,color:e.vars?e.vars.palette.Switch.defaultColor:`${e.palette.mode===`light`?e.palette.common.white:e.palette.grey[300]}`,transition:e.transitions.create([`left`,`transform`],{duration:e.transitions.duration.shortest}),[`&.${k.checked}`]:{transform:`translateX(20px)`},[`&.${k.disabled}`]:{color:e.vars?e.vars.palette.Switch.defaultDisabledColor:`${e.palette.mode===`light`?e.palette.grey[100]:e.palette.grey[600]}`},[`&.${k.checked} + .${k.track}`]:{opacity:.5},[`&.${k.disabled} + .${k.track}`]:{opacity:e.vars?e.vars.opacity.switchTrackDisabled:`${e.palette.mode===`light`?.12:.2}`},[`& .${k.input}`]:{left:`-100%`,width:`300%`}})),n(({theme:e})=>({"&:hover":{backgroundColor:e.alpha((e.vars||e).palette.action.active,(e.vars||e).palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:`transparent`}},variants:[...Object.entries(e.palette).filter(a([`light`])).map(([t])=>({props:{color:t},style:{[`&.${k.checked}`]:{color:(e.vars||e).palette[t].main,"&:hover":{backgroundColor:e.alpha((e.vars||e).palette[t].main,(e.vars||e).palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:`transparent`}},[`& Line truncated
@@ -1 +0,0 @@
import{t as e}from"./useControlled-OB0I4oAK.js";import{B as t,D as n,H as r,J as i,M as a,P as o,Q as s,U as c,W as l,X as u,Y as d,Z as f,j as p,k as m,q as h,r as g,tt as _,z as v}from"./index-7LYai_r-.js";var y=_(s()),b=y.createContext(void 0);function x(){return y.useContext(b)}function S(e){return d(`PrivateSwitchBase`,e)}i(`PrivateSwitchBase`,[`root`,`checked`,`disabled`,`input`,`edgeStart`,`edgeEnd`]);var C=f(),w=e=>{let{classes:n,checked:r,disabled:i,edge:a}=e;return h({root:[`root`,r&&`checked`,i&&`disabled`,a&&`edge${t(a)}`],input:[`input`]},S,n)},T=c(a,{name:`MuiSwitchBase`})({padding:9,borderRadius:`50%`,variants:[{props:{edge:`start`,size:`small`},style:{marginLeft:-3}},{props:({edge:e,ownerState:t})=>e===`start`&&t.size!==`small`,style:{marginLeft:-12}},{props:{edge:`end`,size:`small`},style:{marginRight:-3}},{props:({edge:e,ownerState:t})=>e===`end`&&t.size!==`small`,style:{marginRight:-12}}]}),E=c(`input`,{name:`MuiSwitchBase`,shouldForwardProp:l})({cursor:`inherit`,position:`absolute`,opacity:0,width:`100%`,height:`100%`,top:0,left:0,margin:0,padding:0,zIndex:1}),D=y.forwardRef(function(t,n){let{autoFocus:r,checked:i,checkedIcon:a,defaultChecked:s,disabled:c,disableFocusRipple:l=!1,edge:u=!1,icon:d,id:f,inputProps:p,inputRef:m,name:h,onBlur:g,onChange:_,onFocus:v,readOnly:y,required:b=!1,tabIndex:S,type:D,value:O,slots:k={},slotProps:A={},...j}=t,[M,N]=e({controlled:i,default:!!s,name:`SwitchBase`,state:`checked`}),P=x(),F=e=>{v&&v(e),P&&P.onFocus&&P.onFocus(e)},I=e=>{g&&g(e),P&&P.onBlur&&P.onBlur(e)},L=e=>{if(e.nativeEvent.defaultPrevented)return;let t=e.target.checked;N(t),_&&_(e,t)},R=c;P&&R===void 0&&(R=P.disabled);let z=D===`checkbox`||D===`radio`,B={...t,checked:M,disabled:R,disableFocusRipple:l,edge:u},V=w(B),H={slots:k,slotProps:{input:p,...A}},[U,W]=o(`root`,{ref:n,elementType:T,className:V.root,shouldForwardComponentProp:!0,externalForwardedProps:{...H,component:`span`,...j},getSlotProps:e=>({...e,onFocus:t=>{e.onFocus?.(t),F(t)},onBlur:t=>{e.onBlur?.(t),I(t)}}),ownerState:B,additionalProps:{centerRipple:!0,focusRipple:!l,disabled:R,role:void 0,tabIndex:null}}),[G,K]=o(`input`,{ref:m,elementType:E,className:V.input,externalForwardedProps:H,getSlotProps:e=>({...e,onChange:t=>{e.onChange?.(t),L(t)}}),ownerState:B,additionalProps:{autoFocus:r,checked:i,defaultChecked:s,disabled:R,id:z?f:void 0,name:h,readOnly:y,required:b,tabIndex:S,type:D,...D===`checkbox`&&O===void 0?{}:{value:O}}});return(0,C.jsxs)(U,{...W,children:[(0,C.jsx)(G,{...K}),M?a:d]})});function O(e){return d(`MuiSwitch`,e)}var k=i(`MuiSwitch`,[`root`,`edgeStart`,`edgeEnd`,`switchBase`,`colorPrimary`,`colorSecondary`,`sizeSmall`,`sizeMedium`,`checked`,`disabled`,`input`,`thumb`,`track`]),A=e=>{let{classes:n,edge:r,size:i,color:a,checked:o,disabled:s}=e,c=h({root:[`root`,r&&`edge${t(r)}`,`size${t(i)}`],switchBase:[`switchBase`,`color${t(a)}`,o&&`checked`,s&&`disabled`],thumb:[`thumb`],track:[`track`],input:[`input`]},O,n);return{...n,...c}},j=c(`span`,{name:`MuiSwitch`,slot:`Root`,overridesResolver:(e,n)=>{let{ownerState:r}=e;return[n.root,r.edge&&n[`edge${t(r.edge)}`],n[`size${t(r.size)}`]]}})({display:`inline-flex`,width:58,height:38,overflow:`hidden`,padding:12,boxSizing:`border-box`,position:`relative`,flexShrink:0,zIndex:0,verticalAlign:`middle`,"@media print":{colorAdjust:`exact`},variants:[{props:{edge:`start`},style:{marginLeft:-8}},{props:{edge:`end`},style:{marginRight:-8}},{props:{size:`small`},style:{width:40,height:24,padding:7,[`& .${k.thumb}`]:{width:16,height:16},[`& .${k.switchBase}`]:{padding:4,[`&.${k.checked}`]:{transform:`translateX(16px)`}}}}]}),M=c(D,{name:`MuiSwitch`,slot:`SwitchBase`,overridesResolver:(e,n)=>{let{ownerState:r}=e;return[n.switchBase,{[`& .${k.input}`]:n.input},r.color!==`default`&&n[`color${t(r.color)}`]]}})(v(({theme:e})=>({position:`absolute`,top:0,left:0,zIndex:1,color:e.vars?e.vars.palette.Switch.defaultColor:`${e.palette.mode===`light`?e.palette.common.white:e.palette.grey[300]}`,transition:e.transitions.create([`left`,`transform`],{duration:e.transitions.duration.shortest}),[`&.${k.checked}`]:{transform:`translateX(20px)`},[`&.${k.disabled}`]:{color:e.vars?e.vars.palette.Switch.defaultDisabledColor:`${e.palette.mode===`light`?e.palette.grey[100]:e.palette.grey[600]}`},[`&.${k.checked} + .${k.track}`]:{opacity:.5},[`&.${k.disabled} + .${k.track}`]:{opacity:e.vars?e.vars.opacity.switchTrackDisabled:`${e.palette.mode===`light`?.12:.2}`},[`& .${k.input}`]:{left:`-100%`,width:`300%`}})),v(({theme:e})=>({"&:hover":{backgroundColor:e.alpha((e.vars||e).palette.action.active,(e.vars||e).palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:`transparent`}},variants:[...Object.entries(e.palette).filter(p([`light`])).map(([t])=>({props:{color:t},style:{[`&.${k.checked}`]:{color:(e.vars||e).palette[t].main,"&:hover":{backgroundColor:e.alpha((e.vars||e).palette[t].main,(e.vars||e).palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:`transparent`}},[`&.${k.dLine truncated
@@ -1 +0,0 @@
import{C as e,S as t,Z as n,_ as r,c as i,d as a,h as o,k as s,l as c,m as l,n as u,p as d,u as f,v as p,y as m}from"./index-7LYai_r-.js";var h=n();function g({element:n,className:g,nested:_,devInfoTags:v,uid:y,spaceBefore:b,spaceAfter:x}){let S=i(n),C=a(n),w=Number(c(n)??0),T=p(w),E=m(w),D=r(f(n)),O=D===`center`?`center`:D===`right`?`right`:`left`,k=D===`center`?`center`:D===`right`?`flex-end`:`flex-start`,A=d(n.content?.headerLink),j=o(n.content?.headerLink),M=l(n.content?.headerLink,`Mehr erfahren`);return w===100?null:(0,h.jsx)(u,{className:g,devInfoTags:v,nested:_,uid:y,spaceBefore:b,spaceAfter:x,children:(0,h.jsx)(`div`,{className:`header__inner`,children:(0,h.jsxs)(e,{spacing:.75,sx:{textAlign:O,alignItems:k},children:[S&&(0,h.jsx)(s,{variant:T,children:S}),C&&(0,h.jsx)(s,{variant:E,color:`text.secondary`,children:C}),A&&(0,h.jsx)(t,{href:A,target:j??`_self`,variant:`outlined`,size:`sm`,children:M})]})})})}export{g as VitecHeader};
@@ -0,0 +1 @@
import{A as e,S as t,T as n,_ as r,b as i,d as a,f as o,g as s,m as c,ot as l,p as u,r as d,t as f,v as p,x as m}from"./index-CM0zIqrs.js";var h=l();function g({element:l,className:g,nested:_,devInfoTags:v,uid:y,spaceBefore:b,spaceAfter:x}){let S=a(l),C=c(l),w=Number(o(l)??0),T=m(w),E=t(w),D=i(u(l)),O=D===`center`?`center`:D===`right`?`right`:`left`,k=D===`center`?`center`:D===`right`?`flex-end`:`flex-start`,A=s(l.content?.headerLink),j=p(l.content?.headerLink),M=r(l.content?.headerLink,`Mehr erfahren`);return w===100?null:(0,h.jsx)(d,{className:g,devInfoTags:v,nested:_,uid:y,spaceBefore:b,spaceAfter:x,children:(0,h.jsx)(`div`,{className:`header__inner`,children:(0,h.jsxs)(n,{spacing:.75,sx:{textAlign:O,alignItems:k},children:[S&&(0,h.jsx)(e,{variant:T,children:S}),C&&(0,h.jsx)(e,{variant:E,sx:{opacity:.6},children:C}),A&&(0,h.jsx)(f,{href:A,target:j??`_self`,variant:`outlined`,size:`sm`,children:M})]})})})}export{g as VitecHeader};
-148
View File
@@ -1,148 +0,0 @@
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/vitec_downloadcardcollection-7D90DISQ.js","assets/jszip.min-B_jfdBDa.js","assets/vitec_datasheets-Bu643D_W.js","assets/vitec_faq-Bii0IQAm.js","assets/useControlled-OB0I4oAK.js","assets/VitecDebugToggle-C76AUijU.js"])))=>i.map(i=>d[i]);
var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),s=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},c=(n,r,a)=>(a=n==null?{}:e(i(n)),s(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n)),l=(e=>typeof require<`u`?require:typeof Proxy<`u`?new Proxy(e,{get:(e,t)=>(typeof require<`u`?require:e)[t]}):e)(function(e){if(typeof require<`u`)return require.apply(this,arguments);throw Error('Calling `require` for "'+e+"\" in an environment that doesn't expose the `require` function.")});(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),e.crossOrigin===`use-credentials`?t.credentials=`include`:e.crossOrigin===`anonymous`?t.credentials=`omit`:t.credentials=`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var u=o((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.portal`),r=Symbol.for(`react.fragment`),i=Symbol.for(`react.strict_mode`),a=Symbol.for(`react.profiler`),o=Symbol.for(`react.consumer`),s=Symbol.for(`react.context`),c=Symbol.for(`react.forward_ref`),l=Symbol.for(`react.suspense`),u=Symbol.for(`react.memo`),d=Symbol.for(`react.lazy`),f=Symbol.for(`react.activity`),p=Symbol.iterator;function m(e){return typeof e!=`object`||!e?null:(e=p&&e[p]||e[`@@iterator`],typeof e==`function`?e:null)}var h={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},g=Object.assign,_={};function v(e,t,n){this.props=e,this.context=t,this.refs=_,this.updater=n||h}v.prototype.isReactComponent={},v.prototype.setState=function(e,t){if(typeof e!=`object`&&typeof e!=`function`&&e!=null)throw Error(`takes an object of state variables to update or a function which returns an object of state variables.`);this.updater.enqueueSetState(this,e,t,`setState`)},v.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,`forceUpdate`)};function y(){}y.prototype=v.prototype;function b(e,t,n){this.props=e,this.context=t,this.refs=_,this.updater=n||h}var x=b.prototype=new y;x.constructor=b,g(x,v.prototype),x.isPureReactComponent=!0;var S=Array.isArray;function C(){}var w={H:null,A:null,T:null,S:null},T=Object.prototype.hasOwnProperty;function E(e,n,r){var i=r.ref;return{$$typeof:t,type:e,key:n,ref:i===void 0?null:i,props:r}}function ee(e,t){return E(e.type,t,e.props)}function D(e){return typeof e==`object`&&!!e&&e.$$typeof===t}function O(e){var t={"=":`=0`,":":`=2`};return`$`+e.replace(/[=:]/g,function(e){return t[e]})}var te=/\/+/g;function k(e,t){return typeof e==`object`&&e&&e.key!=null?O(``+e.key):t.toString(36)}function A(e){switch(e.status){case`fulfilled`:return e.value;case`rejected`:throw e.reason;default:switch(typeof e.status==`string`?e.then(C,C):(e.status=`pending`,e.then(function(t){e.status===`pending`&&(e.status=`fulfilled`,e.value=t)},function(t){e.status===`pending`&&(e.status=`rejected`,e.reason=t)})),e.status){case`fulfilled`:return e.value;case`rejected`:throw e.reason}}throw e}function j(e,r,i,a,o){var s=typeof e;(s===`undefined`||s===`boolean`)&&(e=null);var c=!1;if(e===null)c=!0;else switch(s){case`bigint`:case`string`:case`number`:c=!0;break;case`object`:switch(e.$$typeof){case t:case n:c=!0;break;case d:return c=e._init,j(c(e._payload),r,i,a,o)}}if(c)return o=o(e),c=a===``?`.`+k(e,0):a,S(o)?(i=``,c!=null&&(i=c.replace(te,`$&/`)+`/`),j(o,r,i,``,function(e){return e})):o!=null&&(D(o)&&(o=ee(o,i+(o.key==null||e&&e.key===o.key?``:(``+o.key).replace(te,`$&/`)+`/`)+c)),r.push(o)),1;c=0;var l=a===``?`.`:a+`:`;if(S(e))for(var u=0;u<e.length;u++)a=e[u],s=l+k(a,u),c+=j(a,r,i,s,o);else if(u=m(e),typeof u==`function`)for(e=u.call(e),u=0;!(a=e.next()).done;)a=a.value,s=l+k(a,u++),c+=j(a,r,i,s,o);else if(s===`object`){if(typeof e.then==`function`)return j(A(e),r,i,a,o);throw r=String(e),Error(`Objects are not valid as a React child (found: `+(r===`[object Object]`?`object with keys {`+Object.keys(e).join(`, `)+`}`:r)+`). If you meant to render a collection of children, use an array instead.`)}return c}function ne(e,t,n){if(e==null)return e;var r=[],i=0;return j(e,r,``,``,function(e){return t.call(n,e,i++)}),r}function M(e){if(e._status===-1){var t=e._result;t=t(),t.then(function(t){(e._status===0||e._status===-1)&&(e._statLine truncated
at`)?` (<anonymous>)`:-1<e.stack.indexOf(`@`)?`@unknown:0:0`:``}return`
`+ge+e+_e}var ye=!1;function be(e,t){if(!e||ye)return``;ye=!0;var n=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{var r={DetermineComponentFrameRoot:function(){try{if(t){var n=function(){throw Error()};if(Object.defineProperty(n.prototype,`props`,{set:function(){throw Error()}}),typeof Reflect==`object`&&Reflect.construct){try{Reflect.construct(n,[])}catch(e){var r=e}Reflect.construct(e,[],n)}else{try{n.call()}catch(e){r=e}e.call(n.prototype)}}else{try{throw Error()}catch(e){r=e}(n=e())&&typeof n.catch==`function`&&n.catch(function(){})}}catch(e){if(e&&r&&typeof e.stack==`string`)return[e.stack,r.stack]}return[null,null]}};r.DetermineComponentFrameRoot.displayName=`DetermineComponentFrameRoot`;var i=Object.getOwnPropertyDescriptor(r.DetermineComponentFrameRoot,`name`);i&&i.configurable&&Object.defineProperty(r.DetermineComponentFrameRoot,`name`,{value:`DetermineComponentFrameRoot`});var a=r.DetermineComponentFrameRoot(),o=a[0],s=a[1];if(o&&s){var c=o.split(`
`),l=s.split(`
`);for(i=r=0;r<c.length&&!c[r].includes(`DetermineComponentFrameRoot`);)r++;for(;i<l.length&&!l[i].includes(`DetermineComponentFrameRoot`);)i++;if(r===c.length||i===l.length)for(r=c.length-1,i=l.length-1;1<=r&&0<=i&&c[r]!==l[i];)i--;for(;1<=r&&0<=i;r--,i--)if(c[r]!==l[i]){if(r!==1||i!==1)do if(r--,i--,0>i||c[r]!==l[i]){var u=`
`+c[r].replace(` at new `,` at `);return e.displayName&&u.includes(`<anonymous>`)&&(u=u.replace(`<anonymous>`,e.displayName)),u}while(1<=r&&0<=i);break}}}finally{ye=!1,Error.prepareStackTrace=n}return(n=e?e.displayName||e.name:``)?ve(n):``}function xe(e,t){switch(e.tag){case 26:case 27:case 5:return ve(e.type);case 16:return ve(`Lazy`);case 13:return e.child!==t&&t!==null?ve(`Suspense Fallback`):ve(`Suspense`);case 19:return ve(`SuspenseList`);case 0:case 15:return be(e.type,!1);case 11:return be(e.type.render,!1);case 1:return be(e.type,!0);case 31:return ve(`Activity`);default:return``}}function Se(e){try{var t=``,n=null;do t+=xe(e,n),n=e,e=e.return;while(e);return t}catch(e){return`
Error generating stack: `+e.message+`
`+e.stack}}var Ce=Object.prototype.hasOwnProperty,we=t.unstable_scheduleCallback,Te=t.unstable_cancelCallback,Ee=t.unstable_shouldYield,De=t.unstable_requestPaint,Oe=t.unstable_now,ke=t.unstable_getCurrentPriorityLevel,Ae=t.unstable_ImmediatePriority,je=t.unstable_UserBlockingPriority,Me=t.unstable_NormalPriority,Ne=t.unstable_LowPriority,Pe=t.unstable_IdlePriority,Fe=t.log,Ie=t.unstable_setDisableYieldValue,Le=null,Re=null;function ze(e){if(typeof Fe==`function`&&Ie(e),Re&&typeof Re.setStrictMode==`function`)try{Re.setStrictMode(Le,e)}catch{}}var Be=Math.clz32?Math.clz32:Ue,Ve=Math.log,He=Math.LN2;function Ue(e){return e>>>=0,e===0?32:31-(Ve(e)/He|0)|0}var We=256,Ge=262144,Ke=4194304;function qe(e){var t=e&42;if(t!==0)return t;switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return e&261888;case 262144:case 524288:case 1048576:case 2097152:return e&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return e&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return e}}function Je(e,t,n){var r=e.pendingLanes;if(r===0)return 0;var i=0,a=e.suspendedLanes,o=e.pingedLanes;e=e.warmLanes;var s=r&134217727;return s===0?(s=r&~a,s===0?o===0?n||(n=r&~e,n!==0&&(i=qe(n))):i=qe(o):i=qe(s)):(r=s&~a,r===0?(o&=s,o===0?n||(n=s&~e,n!==0&&(i=qe(n))):i=qe(o)):i=qe(r)),i===0?0:t!==0&&t!==i&&(t&a)===0&&(a=i&-i,n=t&-t,a>=n||a===32&&n&4194048)?t:i}function Ye(e,t){return(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)===0}function Xe(e,t){switch(e){case 1:case 2:case 4:case 8:case 64:return t+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function Ze(){var e=Ke;return Ke<<=1,!(Ke&62914560)&&(Ke=4194304),e}function Qe(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function $e(e,t){e.pendingLanes|=t,t!==268435456&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function et(e,t,n,r,i,a){var o=e.pendingLanes;e.pendingLanes=n,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=n,e.entangledLanes&=n,e.errorRecoveryDisabledLanes&=n,e.shellSuspendCounter=0;var s=e.entanglements,c=e.expirationTimes,l=e.hiddenUpdates;for(n=o&~n;0<n;){var u=31-Be(n),d=1<<u;s[u]=0,c[u]=-1;var f=l[u];if(f!==null)for(l[u]=null,u=0;u<f.length;u++){var p=f[u];p!==null&&(p.lane&=-536870913)}n&=~d}r!==0&&tt(e,r,0),a!==0&&i===0&&e.tag!==0&&(e.suspendedLanes|=a&~(o&~t))}function tt(e,t,n){e.pendingLanes|=t,e.suspendedLanes&=~t;var r=31-Be(t);e.entangledLanes|=t,e.entanglements[r]=e.entanglements[r]|1073741824|n&261930}function nt(e,t){var n=e.entangledLanes|=t;for(e=e.entanglements;n;){var r=31-Be(n),i=1<<r;i&t|e[r]&t&&(e[r]|=t),n&=~i}}function rt(e,t){var n=t&-t;return n=n&42?1:it(n),(n&(e.suspendedLanes|t))===0?n:0}function it(e){switch(e){case 2:e=1;break;case 8:e=4;break;case 32:e=16;break;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:e=128;break;case 268435456:e=134217728;break;default:e=0}return e}function at(e){return e&=-e,2<e?8<e?e&134217727?32:268435456:8:2}function ot(){var e=P.p;return e===0?(e=window.event,e===void 0?32:hp(e.type)):e}function st(e,t){var n=P.p;try{return P.p=e,t()}finally{P.p=n}}var ct=Math.random().toString(36).slice(2),lt=`__reactFiber$`+ct,ut=`__reactProps$`+ct,dt=`__reactContainer$`+ct,ft=`__reactEvents$`+ct,pt=`__reactListeners$`+ct,mt=`__reactHandles$`+ct,ht=`__reactResources$`+ct,gt=`__reactMarker$`+ct;function _t(e){delete e[lt],delete e[ut],delete e[ft],delete e[pt],delete e[mt]}function vt(e){var t=e[lt];if(t)return t;for(var n=e.parentNode;n;){if(t=n[dt]||n[lt]){if(n=t.alternate,t.child!==null||n!==null&&n.child!==null)for(e=ff(e);e!==null;){if(n=e[lt])return n;e=ff(e)}return t}e=n,n=e.parentNode}return null}function yt(e){if(e=e[lt]||e[dt]){var t=e.tag;if(t===5||t===6||t===13||t===31||t===26||t===27||t===3)return e}return null}function bt(e){var t=e.tag;if(t===5||t===26||t===27||t===6)return e.stateNode;throw Error(i(33))}function xt(e){var t=e[ht];return t||=e[ht]={hoistableStyles:new Map,hoistableScripts:new Map},t}function St(e){e[gt]=!0}var Ct=new Set,wt={};function Tt(e,t){Et(e,t),Et(e+`Capture`,t)}function Et(e,t){for(wt[e]=t,e=0;e<t.length;e++)Ct.add(t[e])}var Dt=RegExp(`^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001Line truncated
`).replace(jd,``)}function Nd(e,t){return t=Md(t),Md(e)===t}function Pd(e,t,n,r,a,o){switch(n){case`children`:typeof r==`string`?t===`body`||t===`textarea`&&r===``||Jt(e,r):(typeof r==`number`||typeof r==`bigint`)&&t!==`body`&&Jt(e,``+r);break;case`className`:Mt(e,`class`,r);break;case`tabIndex`:Mt(e,`tabindex`,r);break;case`dir`:case`role`:case`viewBox`:case`width`:case`height`:Mt(e,n,r);break;case`style`:Zt(e,r,o);break;case`data`:if(t!==`object`){Mt(e,`data`,r);break}case`src`:case`href`:if(r===``&&(t!==`a`||n!==`href`)){e.removeAttribute(n);break}if(r==null||typeof r==`function`||typeof r==`symbol`||typeof r==`boolean`){e.removeAttribute(n);break}r=tn(``+r),e.setAttribute(n,r);break;case`action`:case`formAction`:if(typeof r==`function`){e.setAttribute(n,`javascript:throw new Error('A React form was unexpectedly submitted. If you called form.submit() manually, consider using form.requestSubmit() instead. If you\\'re trying to use event.stopPropagation() in a submit event handler, consider also calling event.preventDefault().')`);break}else typeof o==`function`&&(n===`formAction`?(t!==`input`&&Pd(e,t,`name`,a.name,a,null),Pd(e,t,`formEncType`,a.formEncType,a,null),Pd(e,t,`formMethod`,a.formMethod,a,null),Pd(e,t,`formTarget`,a.formTarget,a,null)):(Pd(e,t,`encType`,a.encType,a,null),Pd(e,t,`method`,a.method,a,null),Pd(e,t,`target`,a.target,a,null)));if(r==null||typeof r==`symbol`||typeof r==`boolean`){e.removeAttribute(n);break}r=tn(``+r),e.setAttribute(n,r);break;case`onClick`:r!=null&&(e.onclick=nn);break;case`onScroll`:r!=null&&Z(`scroll`,e);break;case`onScrollEnd`:r!=null&&Z(`scrollend`,e);break;case`dangerouslySetInnerHTML`:if(r!=null){if(typeof r!=`object`||!(`__html`in r))throw Error(i(61));if(n=r.__html,n!=null){if(a.children!=null)throw Error(i(60));e.innerHTML=n}}break;case`multiple`:e.multiple=r&&typeof r!=`function`&&typeof r!=`symbol`;break;case`muted`:e.muted=r&&typeof r!=`function`&&typeof r!=`symbol`;break;case`suppressContentEditableWarning`:case`suppressHydrationWarning`:case`defaultValue`:case`defaultChecked`:case`innerHTML`:case`ref`:break;case`autoFocus`:break;case`xlinkHref`:if(r==null||typeof r==`function`||typeof r==`boolean`||typeof r==`symbol`){e.removeAttribute(`xlink:href`);break}n=tn(``+r),e.setAttributeNS(`http://www.w3.org/1999/xlink`,`xlink:href`,n);break;case`contentEditable`:case`spellCheck`:case`draggable`:case`value`:case`autoReverse`:case`externalResourcesRequired`:case`focusable`:case`preserveAlpha`:r!=null&&typeof r!=`function`&&typeof r!=`symbol`?e.setAttribute(n,``+r):e.removeAttribute(n);break;case`inert`:case`allowFullScreen`:case`async`:case`autoPlay`:case`controls`:case`default`:case`defer`:case`disabled`:case`disablePictureInPicture`:case`disableRemotePlayback`:case`formNoValidate`:case`hidden`:case`loop`:case`noModule`:case`noValidate`:case`open`:case`playsInline`:case`readOnly`:case`required`:case`reversed`:case`scoped`:case`seamless`:case`itemScope`:r&&typeof r!=`function`&&typeof r!=`symbol`?e.setAttribute(n,``):e.removeAttribute(n);break;case`capture`:case`download`:!0===r?e.setAttribute(n,``):!1!==r&&r!=null&&typeof r!=`function`&&typeof r!=`symbol`?e.setAttribute(n,r):e.removeAttribute(n);break;case`cols`:case`rows`:case`size`:case`span`:r!=null&&typeof r!=`function`&&typeof r!=`symbol`&&!isNaN(r)&&1<=r?e.setAttribute(n,r):e.removeAttribute(n);break;case`rowSpan`:case`start`:r==null||typeof r==`function`||typeof r==`symbol`||isNaN(r)?e.removeAttribute(n):e.setAttribute(n,r);break;case`popover`:Z(`beforetoggle`,e),Z(`toggle`,e),jt(e,`popover`,r);break;case`xlinkActuate`:Nt(e,`http://www.w3.org/1999/xlink`,`xlink:actuate`,r);break;case`xlinkArcrole`:Nt(e,`http://www.w3.org/1999/xlink`,`xlink:arcrole`,r);break;case`xlinkRole`:Nt(e,`http://www.w3.org/1999/xlink`,`xlink:role`,r);break;case`xlinkShow`:Nt(e,`http://www.w3.org/1999/xlink`,`xlink:show`,r);break;case`xlinkTitle`:Nt(e,`http://www.w3.org/1999/xlink`,`xlink:title`,r);break;case`xlinkType`:Nt(e,`http://www.w3.org/1999/xlink`,`xlink:type`,r);break;case`xmlBase`:Nt(e,`http://www.w3.org/XML/1998/namespace`,`xml:base`,r);break;case`xmlLang`:Nt(e,`http://www.w3.org/XML/1998/namespace`,`xml:lang`,r);break;case`xmlSpace`:Nt(e,`http://www.w3.org/XML/1998/namespace`,`xml:space`,r);break;case`is`:jt(e,`is`,r);break;case`innerText`:case`textContent`:break;default:(!(2<n.length)||n[0]!==`o`&&n[0]!==`O`||n[1]!==`n`&&n[1]!==`N`)&&(n=$t.get(n)||n,jt(e,n,r))}}function Fd(e,t,n,r,a,o){switch(n){case`style`:Zt(e,r,o);break;case`dangerouslySetInnerHTML`:if(r!=null){if(typeof r!=`object`||!(`__html`in r))throw Error(i(61));if(n=r.__html,n!=null){if(a.children!=null)throw Error(i(60));e.innerHTML=n}}break;case`children`:typeof r==`string`?Jt(e,r):(typeof r==`number`||typeof r==`bigint`)&&Jt(e,``+r);break;case`onScroll`:r!=null&&Z(`scroll`,e);break;case`onScrollEnd`:r!=null&&Z(`scrollend`,e);break;case`onClick`:r!=null&&(e.onclick=nn);break;case`suppressContentEditableWarning`:case`suppressHydrationWarning`:case`innerHTML` Line truncated
Please change the parent <Route path="${e}"> to <Route path="${e===`/`?`*`:`${e}/*`}">.`)}let u=cn(),d;if(t){let e=typeof t==`string`?tt(t):t;Ye(c===`/`||e.pathname?.startsWith(c),`When overriding the location using \`<Routes location>\` or \`useRoutes(routes, location)\`, the location pathname must begin with the portion of the URL pathname that was matched by all parent routes. The current pathname base is "${c}" but pathname "${e.pathname}" was given in the \`location\` prop.`),d=e}else d=u;let f=d.pathname||`/`,p=f;if(c!==`/`){let e=c.replace(/^\//,``).split(`/`);p=`/`+f.replace(/^\//,``).split(`/`).slice(e.length).join(`/`)}let m=n&&n.state.matches.length?n.state.matches.map(e=>Object.assign(e,{route:n.manifest[e.route.id]||e.route})):it(e,{pathname:p});Xe(l||m!=null,`No routes matched location "${d.pathname}${d.search}${d.hash}" `),Xe(m==null||m[m.length-1].route.element!==void 0||m[m.length-1].route.Component!==void 0||m[m.length-1].route.lazy!==void 0,`Matched leaf route at location "${d.pathname}${d.search}${d.hash}" does not have an element or Component. This means it will render an <Outlet /> with a null value by default resulting in an "empty" page.`);let h=xn(m&&m.map(e=>Object.assign({},e,{params:Object.assign({},o,e.params),pathname:Nt([c,r.encodeLocation?r.encodeLocation(e.pathname.replace(/%/g,`%25`).replace(/\?/g,`%3F`).replace(/#/g,`%23`)).pathname:e.pathname]),pathnameBase:e.pathnameBase===`/`?c:Nt([c,r.encodeLocation?r.encodeLocation(e.pathnameBase.replace(/%/g,`%25`).replace(/\?/g,`%3F`).replace(/#/g,`%23`)).pathname:e.pathnameBase])})),i,n);return t&&h?S.createElement(Zt.Provider,{value:{location:{pathname:`/`,search:``,hash:``,state:null,key:`default`,mask:void 0,...d},navigationType:`POP`}},h):h}function hn(){let e=An(),t=zt(e)?`${e.status} ${e.statusText}`:e instanceof Error?e.message:JSON.stringify(e),n=e instanceof Error?e.stack:null,r=`rgba(200,200,200, 0.5)`,i={padding:`0.5rem`,backgroundColor:r},a={padding:`2px 4px`,backgroundColor:r},o=null;return console.error(`Error handled by React Router default ErrorBoundary:`,e),o=S.createElement(S.Fragment,null,S.createElement(`p`,null,`💿 Hey developer 👋`),S.createElement(`p`,null,`You can provide a way better UX than this when your app throws errors by providing your own `,S.createElement(`code`,{style:a},`ErrorBoundary`),` or`,` `,S.createElement(`code`,{style:a},`errorElement`),` prop on your route.`)),S.createElement(S.Fragment,null,S.createElement(`h2`,null,`Unexpected Application Error!`),S.createElement(`h3`,{style:{fontStyle:`italic`}},t),n?S.createElement(`pre`,{style:i},n):null,o)}var gn=S.createElement(hn,null),_n=class extends S.Component{constructor(e){super(e),this.state={location:e.location,revalidation:e.revalidation,error:e.error}}static getDerivedStateFromError(e){return{error:e}}static getDerivedStateFromProps(e,t){return t.location!==e.location||t.revalidation!==`idle`&&e.revalidation===`idle`?{error:e.error,location:e.location,revalidation:e.revalidation}:{error:e.error===void 0?t.error:e.error,location:t.location,revalidation:e.revalidation||t.revalidation}}componentDidCatch(e,t){this.props.onError?this.props.onError(e,t):console.error(`React Router caught the following error during render`,e)}render(){let e=this.state.error;if(this.context&&typeof e==`object`&&e&&`digest`in e&&typeof e.digest==`string`){let t=an(e.digest);t&&(e=t)}let t=e===void 0?this.props.children:S.createElement(Qt.Provider,{value:this.props.routeContext},S.createElement($t.Provider,{value:e,children:this.props.component}));return this.context?S.createElement(yn,{error:e},t):t}};_n.contextType=Gt;var vn=new WeakMap;function yn({children:e,error:t}){let{basename:n}=S.useContext(Xt);if(typeof t==`object`&&t&&`digest`in t&&typeof t.digest==`string`){let e=rn(t.digest);if(e){let r=vn.get(t);if(r)throw r;let i=Ht(e.location,n);if(Vt&&!vn.get(t))if(i.isExternal||e.reloadDocument)window.location.href=i.absoluteURL||i.to;else{let n=Promise.resolve().then(()=>window.__reactRouterDataRouter.navigate(i.to,{replace:e.replace}));throw vn.set(t,n),n}return S.createElement(`meta`,{httpEquiv:`refresh`,content:`0;url=${i.absoluteURL||i.to}`})}}return e}function bn({routeContext:e,match:t,children:n}){let r=S.useContext(Ut);return r&&r.static&&r.staticContext&&(t.route.errorElement||t.route.ErrorBoundary)&&(r.staticContext._deepestRenderedBoundaryId=t.route.id),S.createElement(Qt.Provider,{value:e},n)}function xn(e,t=[],n){let r=n?.state;if(e==null){if(!r)return null;if(r.errors)e=r.matches;else if(t.length===0&&!r.initialized&&r.matches.length>0)e=r.matches;else return null}let i=e,a=r?.errors;if(a!=null){let e=i.findIndex(e=>e.route.id&&a?.[e.route.id]!==void 0);Ye(e>=0,`Could not find a matching route for errors on route IDs: ${Object.keys(a).join(`,`)}`),i=i.slice(0,Math.min(i.length,e+1))}let o=!1,s=-1;if(n&&r){o=r.renderFallback;for(let e=0;e<i.length;e++){let t=i[e];if((t.route.HydrateFallback||t.route.hydrateFallbackElement)&&(s=e),t.route.id){lLine truncated
`)),(yc===void 0?vc:bc)(l,a,o,s,c)}}xc();function Sc(e,t=-(2**53-1),n=2**53-1){return Math.max(t,Math.min(e,n))}var Cc=Sc;function wc(e,t=0,n=1){return Cc(e,t,n)}function Tc(e){e=e.slice(1);let t=RegExp(`.{1,${e.length>=6?2:1}}`,`g`),n=e.match(t);return n&&n[0].length===1&&(n=n.map(e=>e+e)),n?`rgb${n.length===4?`a`:``}(${n.map((e,t)=>t<3?parseInt(e,16):Math.round(parseInt(e,16)/255*1e3)/1e3).join(`, `)})`:``}function Ec(e){if(e.type)return e;if(e.charAt(0)===`#`)return Ec(Tc(e));let t=e.indexOf(`(`),n=e.substring(0,t);if(![`rgb`,`rgba`,`hsl`,`hsla`,`color`].includes(n))throw Error(Ur(9,e));let r=e.substring(t+1,e.length-1),i;if(n===`color`){if(r=r.split(` `),i=r.shift(),r.length===4&&r[3].charAt(0)===`/`&&(r[3]=r[3].slice(1)),![`srgb`,`display-p3`,`a98-rgb`,`prophoto-rgb`,`rec-2020`].includes(i))throw Error(Ur(10,i))}else r=r.split(`,`);return r=r.map(e=>parseFloat(e)),{type:n,values:r,colorSpace:i}}const Dc=e=>{let t=Ec(e);return t.values.slice(0,3).map((e,n)=>t.type.includes(`hsl`)&&n!==0?`${e}%`:e).join(` `)},Oc=(e,t)=>{try{return Dc(e)}catch{return e}};function kc(e){let{type:t,colorSpace:n}=e,{values:r}=e;return t.includes(`rgb`)?r=r.map((e,t)=>t<3?parseInt(e,10):e):t.includes(`hsl`)&&(r[1]=`${r[1]}%`,r[2]=`${r[2]}%`),r=t.includes(`color`)?`${n} ${r.join(` `)}`:`${r.join(`, `)}`,`${t}(${r})`}function Ac(e){e=Ec(e);let{values:t}=e,n=t[0],r=t[1]/100,i=t[2]/100,a=r*Math.min(i,1-i),o=(e,t=(e+n/30)%12)=>i-a*Math.max(Math.min(t-3,9-t,1),-1),s=`rgb`,c=[Math.round(o(0)*255),Math.round(o(8)*255),Math.round(o(4)*255)];return e.type===`hsla`&&(s+=`a`,c.push(t[3])),kc({type:s,values:c})}function jc(e){e=Ec(e);let t=e.type===`hsl`||e.type===`hsla`?Ec(Ac(e)).values:e.values;return t=t.map(t=>(e.type!==`color`&&(t/=255),t<=.03928?t/12.92:((t+.055)/1.055)**2.4)),Number((.2126*t[0]+.7152*t[1]+.0722*t[2]).toFixed(3))}function Mc(e,t){let n=jc(e),r=jc(t);return(Math.max(n,r)+.05)/(Math.min(n,r)+.05)}function Nc(e,t){return e=Ec(e),t=wc(t),(e.type===`rgb`||e.type===`hsl`)&&(e.type+=`a`),e.type===`color`?e.values[3]=`/${t}`:e.values[3]=t,kc(e)}function Pc(e,t,n){try{return Nc(e,t)}catch{return e}}function Fc(e,t){if(e=Ec(e),t=wc(t),e.type.includes(`hsl`))e.values[2]*=1-t;else if(e.type.includes(`rgb`)||e.type.includes(`color`))for(let n=0;n<3;n+=1)e.values[n]*=1-t;return kc(e)}function H(e,t,n){try{return Fc(e,t)}catch{return e}}function Ic(e,t){if(e=Ec(e),t=wc(t),e.type.includes(`hsl`))e.values[2]+=(100-e.values[2])*t;else if(e.type.includes(`rgb`))for(let n=0;n<3;n+=1)e.values[n]+=(255-e.values[n])*t;else if(e.type.includes(`color`))for(let n=0;n<3;n+=1)e.values[n]+=(1-e.values[n])*t;return kc(e)}function U(e,t,n){try{return Ic(e,t)}catch{return e}}function Lc(e,t=.15){return jc(e)>.5?Fc(e,t):Ic(e,t)}function Rc(e,t,n){try{return Lc(e,t)}catch{return e}}var zc=S.createContext(null);function Bc(){return S.useContext(zc)}var Vc=typeof Symbol==`function`&&Symbol.for?Symbol.for(`mui.nested`):`__THEME_NESTED__`;function Hc(e,t){return typeof t==`function`?t(e):{...e,...t}}function Uc(e){let{children:t,theme:n}=e,r=Bc(),i=S.useMemo(()=>{let e=r===null?{...n}:Hc(r,n);return e!=null&&(e[Vc]=r!==null),e},[n,r]);return(0,z.jsx)(zc.Provider,{value:i,children:t})}var Wc=Uc,Gc=S.createContext();function Kc({value:e,...t}){return(0,z.jsx)(Gc.Provider,{value:e??!0,...t})}const qc=()=>S.useContext(Gc)??!1;var Jc=Kc,Yc=S.createContext(void 0);function Xc({value:e,children:t}){return(0,z.jsx)(Yc.Provider,{value:e,children:t})}function Zc(e){let{theme:t,name:n,props:r}=e;if(!t||!t.components||!t.components[n])return r;let i=t.components[n];return i.defaultProps?mc(i.defaultProps,r,t.components.mergeClassNameAndStyle):!i.styleOverrides&&!i.variants?mc(i,r,t.components.mergeClassNameAndStyle):r}function Qc({props:e,name:t}){return Zc({props:e,name:t,theme:{components:S.useContext(Yc)}})}var $c=Xc,el=0;function tl(e){let[t,n]=S.useState(e),r=e||t;return S.useEffect(()=>{t??(el+=1,n(`mui-${el}`))},[t]),r}var nl={...S}.useId;function rl(e){if(nl!==void 0){let t=nl();return e??t}return tl(e)}function il(e){let t=Rs(),n=rl()||``,{modularCssLayers:r}=e,i=`mui.global, mui.components, mui.theme, mui.custom, mui.sx`;return i=!r||t!==null?``:typeof r==`string`?r.replace(/mui(?!\.)/g,i):`@layer ${i};`,_c(()=>{let e=document.querySelector(`head`);if(!e)return;let t=e.firstChild;if(i){if(t&&t.hasAttribute?.(`data-mui-layer-order`)&&t.getAttribute(`data-mui-layer-order`)===n)return;let r=document.createElement(`style`);r.setAttribute(`data-mui-layer-order`,n),r.textContent=i,e.prepend(r)}else e.querySelector(`style[data-mui-layer-order="${n}"]`)?.remove()},[i,n]),i?(0,z.jsx)(Ws,{styles:i}):null}var al={};function ol(e,t,n,r=!1){return S.useMemo(()=>{let i=e&&t[e]||t;if(typeof n==`function`){let a=n(i),o=e?{...t,[e]:a}:a;return r?()=>o:o}return e?{...t,[e]:n}:{...t,...n}},[e,t,n,r])}function sl(e){let{children:t,theme:n,themeId:r}=e,i=Rs(al),a=Bc()||al,o=ol(r,i,n),s=ol(r,a,n,!0),c=(r?o[r]:o).direction===`rtl`,l=il(o);return(0,z.jsx)(Wc,{theme:s,children:( Line truncated
${s}.classList.add('${e}'.replace('%s', colorScheme));`}let d=u.match(/\[([^[\]]+)\]/);if(d){let[e,t]=d[1].split(`=`);t||(l+=`${s}.removeAttribute('${e}'.replace('%s', light));
${s}.removeAttribute('${e}'.replace('%s', dark));`),l+=`
${s}.setAttribute('${e}'.replace('%s', colorScheme), ${t?`${t}.replace('%s', colorScheme)`:`""`});`}else l+=`${s}.setAttribute('${u}', colorScheme);`;return(0,z.jsx)(`script`,{suppressHydrationWarning:!0,nonce:typeof window>`u`?c:``,dangerouslySetInnerHTML:{__html:`(function() {
try {
let colorScheme = '';
const mode = localStorage.getItem('${i}') || '${t}';
const dark = localStorage.getItem('${a}-dark') || '${r}';
const light = localStorage.getItem('${a}-light') || '${n}';
if (mode === 'system') {
// handle system mode
const mql = window.matchMedia('(prefers-color-scheme: dark)');
if (mql.matches) {
colorScheme = dark
} else {
colorScheme = light
}
}
if (mode === 'light') {
colorScheme = light;
}
if (mode === 'dark') {
colorScheme = dark;
}
if (colorScheme) {
${l}
}
} catch(e){}})();`}},`mui-color-scheme-init`)}function ml(){}var hl=({key:e,storageWindow:t})=>(!t&&typeof window<`u`&&(t=window),{get(n){if(typeof window>`u`)return;if(!t)return n;let r;try{r=t.localStorage.getItem(e)}catch{}return r||n},set:n=>{if(t)try{t.localStorage.setItem(e,n)}catch{}},subscribe:n=>{if(!t)return ml;let r=t=>{let r=t.newValue;t.key===e&&n(r)};return t.addEventListener(`storage`,r),()=>{t.removeEventListener(`storage`,r)}}});function gl(){}function _l(e){if(typeof window<`u`&&typeof window.matchMedia==`function`&&e===`system`)return window.matchMedia(`(prefers-color-scheme: dark)`).matches?`dark`:`light`}function vl(e,t){if(e.mode===`light`||e.mode===`system`&&e.systemMode===`light`)return t(`light`);if(e.mode===`dark`||e.mode===`system`&&e.systemMode===`dark`)return t(`dark`)}function yl(e){return vl(e,t=>{if(t===`light`)return e.lightColorScheme;if(t===`dark`)return e.darkColorScheme})}function bl(e){let{defaultMode:t=`light`,defaultLightColorScheme:n,defaultDarkColorScheme:r,supportedColorSchemes:i=[],modeStorageKey:a=dl,colorSchemeStorageKey:o=fl,storageWindow:s=typeof window>`u`?void 0:window,storageManager:c=hl,noSsr:l=!1}=e,u=i.join(`,`),d=i.length>1,f=S.useMemo(()=>c?.({key:a,storageWindow:s}),[c,a,s]),p=S.useMemo(()=>c?.({key:`${o}-light`,storageWindow:s}),[c,o,s]),m=S.useMemo(()=>c?.({key:`${o}-dark`,storageWindow:s}),[c,o,s]),[h,g]=S.useState(()=>{let e=f?.get(t)||t,i=p?.get(n)||n,a=m?.get(r)||r;return{mode:e,systemMode:_l(e),lightColorScheme:i,darkColorScheme:a}}),[_,v]=S.useState(l||!d);S.useEffect(()=>{v(!0)},[]);let y=yl(h),b=S.useCallback(e=>{g(n=>{if(e===n.mode)return n;let r=e??t;return f?.set(r),{...n,mode:r,systemMode:_l(r)}})},[f,t]),x=S.useCallback(e=>{e?typeof e==`string`?e&&!u.includes(e)?console.error(`\`${e}\` does not exist in \`theme.colorSchemes\`.`):g(t=>{let n={...t};return vl(t,t=>{t===`light`&&(p?.set(e),n.lightColorScheme=e),t===`dark`&&(m?.set(e),n.darkColorScheme=e)}),n}):g(t=>{let i={...t},a=e.light===null?n:e.light,o=e.dark===null?r:e.dark;return a&&(u.includes(a)?(i.lightColorScheme=a,p?.set(a)):console.error(`\`${a}\` does not exist in \`theme.colorSchemes\`.`)),o&&(u.includes(o)?(i.darkColorScheme=o,m?.set(o)):console.error(`\`${o}\` does not exist in \`theme.colorSchemes\`.`)),i}):g(e=>(p?.set(n),m?.set(r),{...e,lightColorScheme:n,darkColorScheme:r}))},[u,p,m,n,r]),C=S.useCallback(e=>{h.mode===`system`&&g(t=>{let n=e?.matches?`dark`:`light`;return t.systemMode===n?t:{...t,systemMode:n}})},[h.mode]),w=S.useRef(C);return w.current=C,S.useEffect(()=>{if(typeof window.matchMedia!=`function`||!d)return;let e=(...e)=>w.current(...e),t=window.matchMedia(`(prefers-color-scheme: dark)`);return t.addListener(e),e(t),()=>{t.removeListener(e)}},[d]),S.useEffect(()=>{if(d){let e=f?.subscribe(e=>{(!e||[`light`,`dark`,`system`].includes(e))&&b(e||t)})||gl,n=p?.subscribe(e=>{(!e||u.match(e))&&x({light:e})})||gl,r=m?.subscribe(e=>{(!e||u.match(e))&&x({dark:e})})||gl;return()=>{e(),n(),r()}}},[x,b,u,t,s,d,f,p,m]),{...h,mode:_?h.mode:void 0,systemMode:_?h.systemMode:void 0,colorScheme:_?y:void 0,setMode:b,setColorScheme:x}}function xl(e){let{themeId:t,theme:n={},modeStorageKey:r=dl,colorSchemeStorageKey:i=fl,disableTransitionOnChange:a=!1,defaultColorScheme:o,resolveTheme:s}=e,c={allColorSchemes:[],colorScheme:void 0,darkColorScheme:void 0,lightColorScheme:void 0,mode:void 0,setColorScheme:()=>{},setMode:()=>{},systemMode:void 0},l=S.createContext(void 0),u=()=>S.useContext(l)||c,d={},f={};function p(e){let{children:c,theme:u,modeStorageKey:p=r,colorSchemeStorageKey:m=i,disableTransitionOnChange:h=a,storageManager:g,storageWindow:_=typeof window>`u`?void 0:window,documentNode:v=typeof document>`u`?void 0:document,colorSchemeNode:y=typeof document>`u`?void 0:document.documentElement,disableNestedContext:b=!1,disableStyleSheetGeneration:x=!1,defaultMode:C=`system`,forceThemeRerender:w=!1,noSsr:T}=e,E=S.useRef(!1),ee=Bc(),D=S.useContext(l),O=!!D&&!b,te=S.useMemo(()=>u||(typeof n==`function`?n():n),[u]),k=te[t],A=k||te,{colorSchemes:j=d,components:ne=f,cssVarPrefix:M}=A,N=Object.keys(j).filter(e=>!!j[e]).join(`,`),P=S.useMemo(()=>N.split(`,`),[N]),re=typeof o==`string`?o:o.light,ie=typeof o==`string`?o:o.dark,{mode:ae,setMode:oe,systemMode:se,lightColorScheme:F,darkColorScheme:ce,colorScheme:le,setColorScheme:ue}=bl({supportedColorSchemes:P,defaultLightColorScheme:re,defaultDarkColorScheme:ie,modeStorageKey:p,colorSchemeStorageKey:m,defaultMode:j[re]&&j[ie]?C:j[A.defaultColorScheme]?.palette?.mode||A.palette?.mode,storageManager:g,storageWindow:_,noSsr:T}),de=ae,fe=le;O&&(de=D.mode,fe=D.colorScheme);let pe=fe||A.defaultColorScheme;A.vars&&!w&&(pe=A.defaultColorScheme);let me=S.useMemo(()=>{let e=A.generateThemeVars?.()||A.vars,t={...A,components:ne,colorSchemes:j,cssVarPrefix:M,vars:e};if(typeof t.generateSpacing==`function`&&(t.spacing=t.generateSpacing()),pe){let e=j[pe];e&&typeof e==`object`&&Object.keys(e).forEach(n=>{e[n]&&typeof e[n]==`object`?t[n]={...t[n],...Line truncated
const theme = ${JSON.stringify(t,null,2)};
theme.breakpoints = createBreakpoints(theme.breakpoints || {});
theme.transitions = createTransitions(theme.transitions || {});
export default theme;`}function J(e){return typeof e==`number`?`${(e*100).toFixed(0)}%`:`calc((${e}) * 100%)`}var Ju=e=>{if(!Number.isNaN(+e))return+e;let t=e.match(/\d*\.?\d+/g);if(!t)return 0;let n=0;for(let e=0;e<t.length;e+=1)n+=+t[e];return n};function Yu(e){Object.assign(e,{alpha(t,n){let r=this||e;return r.colorSpace?`oklch(from ${t} l c h / ${typeof n==`string`?`calc(${n})`:n})`:r.vars?`rgba(${t.replace(/var\(--([^,\s)]+)(?:,[^)]+)?\)+/g,`var(--$1Channel)`)} / ${typeof n==`string`?`calc(${n})`:n})`:Nc(t,Ju(n))},lighten(t,n){let r=this||e;return r.colorSpace?`color-mix(in ${r.colorSpace}, ${t}, #fff ${J(n)})`:Ic(t,n)},darken(t,n){let r=this||e;return r.colorSpace?`color-mix(in ${r.colorSpace}, ${t}, #000 ${J(n)})`:Fc(t,n)}})}function Xu(e={},...t){let{breakpoints:n,mixins:r={},spacing:i,palette:a={},transitions:o={},typography:s={},shape:c,colorSpace:l,...u}=e;if(e.vars&&e.generateThemeVars===void 0)throw Error(Ur(20));let d=Ou({...a,colorSpace:l}),f=Fs(e),p=fo(f,{mixins:Au(f.breakpoints,r),palette:d,shadows:zu.slice(),typography:Pu(d,s),transitions:Wu(o),zIndex:{...Gu}});return p=fo(p,u),p=t.reduce((e,t)=>fo(e,t),p),p.unstable_sxConfig={...Ds,...u?.unstable_sxConfig},p.unstable_sx=function(e){return Ms({sx:e,theme:this})},p.toRuntimeSource=qu,Yu(p),p}var Zu=Xu;function Qu(e){let t;return t=e<1?5.11916*e**2:4.5*Math.log(e+1)+2,Math.round(t*10)/1e3}var $u=[...Array(25)].map((e,t)=>{if(t===0)return`none`;let n=Qu(t);return`linear-gradient(rgba(255 255 255 / ${n}), rgba(255 255 255 / ${n}))`});function ed(e){return{inputPlaceholder:e===`dark`?.5:.42,inputUnderline:e===`dark`?.7:.42,switchTrackDisabled:e===`dark`?.2:.12,switchTrack:e===`dark`?.3:.38}}function td(e){return e===`dark`?$u:[]}function nd(e){let{palette:t={mode:`light`},opacity:n,overlays:r,colorSpace:i,...a}=e,o=Ou({...t,colorSpace:i});return{palette:o,opacity:{...ed(o.mode),...n},overlays:r||td(o.mode),...a}}function rd(e){return!!e[0].match(/(cssVarPrefix|colorSchemeSelector|modularCssLayers|rootSelector|typography|mixins|breakpoints|direction|transitions)/)||!!e[0].match(/sxConfig$/)||e[0]===`palette`&&!!e[1]?.match(/(mode|contrastThreshold|tonalOffset)/)}var id=e=>[...[...Array(25)].map((t,n)=>`--${e?`${e}-`:``}overlays-${n}`),`--${e?`${e}-`:``}palette-AppBar-darkBg`,`--${e?`${e}-`:``}palette-AppBar-darkColor`],ad=e=>(t,n)=>{let r=e.rootSelector||`:root`,i=e.colorSchemeSelector,a=i;if(i===`class`&&(a=`.%s`),i===`data`&&(a=`[data-%s]`),i?.startsWith(`data-`)&&!i.includes(`%s`)&&(a=`[${i}="%s"]`),e.defaultColorScheme===t){if(t===`dark`){let i={};return id(e.cssVarPrefix).forEach(e=>{i[e]=n[e],delete n[e]}),a===`media`?{[r]:n,"@media (prefers-color-scheme: dark)":{[r]:i}}:a?{[a.replace(`%s`,t)]:i,[`${r}, ${a.replace(`%s`,t)}`]:n}:{[r]:{...n,...i}}}if(a&&a!==`media`)return`${r}, ${a.replace(`%s`,String(t))}`}else if(t){if(a===`media`)return{[`@media (prefers-color-scheme: ${String(t)})`]:{[r]:n}};if(a)return a.replace(`%s`,String(t))}return r};function od(e,t){t.forEach(t=>{e[t]||(e[t]={})})}function Y(e,t,n){!e[t]&&n&&(e[t]=n)}function sd(e){return typeof e!=`string`||!e.startsWith(`hsl`)?e:Ac(e)}function cd(e,t){`${t}Channel`in e||(e[`${t}Channel`]=Oc(sd(e[t]),`MUI: Can't create \`palette.${t}Channel\` because \`palette.${t}\` is not one of these formats: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color().
To suppress this warning, you need to explicitly provide the \`palette.${t}Channel\` as a string (in rgb format, for example "12 12 12") or undefined if you want to remove the channel token.`))}function ld(e){return typeof e==`number`?`${e}px`:typeof e==`string`||typeof e==`function`||Array.isArray(e)?e:`8px`}var ud=e=>{try{return e()}catch{}};const dd=(e=`mui`)=>Sl(e);function fd(e,t,n,r,i){if(!n)return;n=n===!0?{}:n;let a=i===`dark`?`dark`:`light`;if(!r){t[i]=nd({...n,palette:{mode:a,...n?.palette},colorSpace:e});return}let{palette:o,...s}=Zu({...r,palette:{mode:a,...n?.palette},colorSpace:e});return t[i]={...n,palette:o,opacity:{...ed(a),...n?.opacity},overlays:n?.overlays||td(a)},s}function pd(e={},...t){let{colorSchemes:n={light:!0},defaultColorScheme:r,disableCssColorScheme:i=!1,cssVarPrefix:a=`mui`,nativeColor:o=!1,shouldSkipGeneratingVar:s=rd,colorSchemeSelector:c=n.light&&n.dark?`media`:void 0,rootSelector:l=`:root`,...u}=e,d=Object.keys(n)[0],f=r||(n.light&&d!==`light`?`light`:d),p=dd(a),{[f]:m,light:h,dark:g,..._}=n,v={..._},y=m;if((f===`dark`&&!(`dark`in n)||f===`light`&&!(`light`in n))&&(y=!0),!y)throw Error(Ur(21,f));let b;o&&(b=`oklch`);let x=fd(b,v,y,u,f);h&&!v.light&&fd(b,v,h,void 0,`light`),g&&!v.dark&&fd(b,v,g,void 0,`dark`);let S={defaultColorScheme:f,...x,cssVarPrefix:a,colorSchemeSelector:c,rootSelector:l,getCssVar:p,colorSchemes:v,font:{...ku(x.typography),...x.font},spacing:ld(u.spacing)};Object.keys(S.colorSchemes).forEach(e=>{let t=S.colorSchemes[e].palette,n=e=>{let n=e.split(`-`),r=n[1],i=n[2];return p(e,t[r][i])};t.mode===`light`&&(Y(t.common,`background`,`#fff`),Y(t.common,`onBackground`,`#000`)),t.mode===`dark`&&(Y(t.common,`background`,`#000`),Y(t.common,`onBackground`,`#fff`));function r(e,t,n){if(b){let r;return e===Pc&&(r=`transparent ${((1-n)*100).toFixed(0)}%`),e===H&&(r=`#000 ${(n*100).toFixed(0)}%`),e===U&&(r=`#fff ${(n*100).toFixed(0)}%`),`color-mix(in ${b}, ${t}, ${r})`}return e(t,n)}if(od(t,[`Alert`,`AppBar`,`Avatar`,`Button`,`Chip`,`FilledInput`,`LinearProgress`,`Skeleton`,`Slider`,`SnackbarContent`,`SpeedDialAction`,`StepConnector`,`StepContent`,`Switch`,`TableCell`,`Tooltip`]),t.mode===`light`){Y(t.Alert,`errorColor`,r(H,t.error.light,.6)),Y(t.Alert,`infoColor`,r(H,t.info.light,.6)),Y(t.Alert,`successColor`,r(H,t.success.light,.6)),Y(t.Alert,`warningColor`,r(H,t.warning.light,.6)),Y(t.Alert,`errorFilledBg`,n(`palette-error-main`)),Y(t.Alert,`infoFilledBg`,n(`palette-info-main`)),Y(t.Alert,`successFilledBg`,n(`palette-success-main`)),Y(t.Alert,`warningFilledBg`,n(`palette-warning-main`)),Y(t.Alert,`errorFilledColor`,ud(()=>t.getContrastText(t.error.main))),Y(t.Alert,`infoFilledColor`,ud(()=>t.getContrastText(t.info.main))),Y(t.Alert,`successFilledColor`,ud(()=>t.getContrastText(t.success.main))),Y(t.Alert,`warningFilledColor`,ud(()=>t.getContrastText(t.warning.main))),Y(t.Alert,`errorStandardBg`,r(U,t.error.light,.9)),Y(t.Alert,`infoStandardBg`,r(U,t.info.light,.9)),Y(t.Alert,`successStandardBg`,r(U,t.success.light,.9)),Y(t.Alert,`warningStandardBg`,r(U,t.warning.light,.9)),Y(t.Alert,`errorIconColor`,n(`palette-error-main`)),Y(t.Alert,`infoIconColor`,n(`palette-info-main`)),Y(t.Alert,`successIconColor`,n(`palette-success-main`)),Y(t.Alert,`warningIconColor`,n(`palette-warning-main`)),Y(t.AppBar,`defaultBg`,n(`palette-grey-100`)),Y(t.Avatar,`defaultBg`,n(`palette-grey-400`)),Y(t.Button,`inheritContainedBg`,n(`palette-grey-300`)),Y(t.Button,`inheritContainedHoverBg`,n(`palette-grey-A100`)),Y(t.Chip,`defaultBorder`,n(`palette-grey-400`)),Y(t.Chip,`defaultAvatarColor`,n(`palette-grey-700`)),Y(t.Chip,`defaultIconColor`,n(`palette-grey-700`)),Y(t.FilledInput,`bg`,`rgba(0, 0, 0, 0.06)`),Y(t.FilledInput,`hoverBg`,`rgba(0, 0, 0, 0.09)`),Y(t.FilledInput,`disabledBg`,`rgba(0, 0, 0, 0.12)`),Y(t.LinearProgress,`primaryBg`,r(U,t.primary.main,.62)),Y(t.LinearProgress,`secondaryBg`,r(U,t.secondary.main,.62)),Y(t.LinearProgress,`errorBg`,r(U,t.error.main,.62)),Y(t.LinearProgress,`infoBg`,r(U,t.info.main,.62)),Y(t.LinearProgress,`successBg`,r(U,t.success.main,.62)),Y(t.LinearProgress,`warningBg`,r(U,t.warning.main,.62)),Y(t.Skeleton,`bg`,b?r(Pc,t.text.primary,.11):`rgba(${n(`palette-text-primaryChannel`)} / 0.11)`),Y(t.Slider,`primaryTrack`,r(U,t.primary.main,.62)),Y(t.Slider,`secondaryTrack`,r(U,t.secondary.main,.62)),Y(t.Slider,`errorTrack`,r(U,t.error.main,.62)),Y(t.Slider,`infoTrack`,r(U,t.info.main,.62)),Y(t.Slider,`successTrack`,r(U,t.success.main,.62)),Y(t.Slider,`warningTrack`,r(U,t.warning.main,.62));let e=b?r(H,t.background.default,.6825):Rc(t.background.default,.8);Y(t.SnackbarContent,`bg`,e),Y(t.SnackbarContent,`color`,ud(()=>b?vu.text.primary:t.getContrastText(e))),Y(t.SpeedDialAction,`fabHoverBg`,Rc(t.background.paper,.15)),Y(t.StepConnector,`border`,n(`palette-grey-400`)),Y(t.StepContent,`border`,n(`palette-grey-400`)),Y(t.Switch,`defaultColor`,n(`palette-common-white`)),Y(t.Switch,`defaultDisabledColor`,n(`palette-grey-100`)),Y(t.Switch,`primaryDisabledColor`,r(U,tLine truncated
0% {
transform: scale(0);
opacity: 0.1;
}
100% {
transform: scale(1);
opacity: 0.3;
}
`,Ep=Va`
0% {
opacity: 1;
}
100% {
opacity: 0;
}
`,Dp=Va`
0% {
transform: scale(1);
}
50% {
transform: scale(0.92);
}
100% {
transform: scale(1);
}
`;const Op=X(`span`,{name:`MuiTouchRipple`,slot:`Root`})({overflow:`hidden`,pointerEvents:`none`,position:`absolute`,zIndex:0,top:0,right:0,bottom:0,left:0,borderRadius:`inherit`}),kp=X(Sp,{name:`MuiTouchRipple`,slot:`Ripple`})`
opacity: 0;
position: absolute;
&.${Cp.rippleVisible} {
opacity: 0.3;
transform: scale(1);
animation-name: ${Tp};
animation-duration: ${wp}ms;
animation-timing-function: ${({theme:e})=>e.transitions.easing.easeInOut};
}
&.${Cp.ripplePulsate} {
animation-duration: ${({theme:e})=>e.transitions.duration.shorter}ms;
}
& .${Cp.child} {
opacity: 1;
display: block;
width: 100%;
height: 100%;
border-radius: 50%;
background-color: currentColor;
}
& .${Cp.childLeaving} {
opacity: 0;
animation-name: ${Ep};
animation-duration: ${wp}ms;
animation-timing-function: ${({theme:e})=>e.transitions.easing.easeInOut};
}
& .${Cp.childPulsate} {
position: absolute;
/* @noflip */
left: 0px;
top: 0;
animation-name: ${Dp};
animation-duration: 2500ms;
animation-timing-function: ${({theme:e})=>e.transitions.easing.easeInOut};
animation-iteration-count: infinite;
animation-delay: 200ms;
}
`;var Ap=S.forwardRef(function(e,t){let{center:n=!1,classes:r={},className:i,...a}=jd({props:e,name:`MuiTouchRipple`}),[o,s]=S.useState([]),c=S.useRef(0),l=S.useRef(null);S.useEffect(()=>{l.current&&=(l.current(),null)},[o]);let u=S.useRef(!1),d=Zf(),f=S.useRef(null),p=S.useRef(null),m=S.useCallback(e=>{let{pulsate:t,rippleX:n,rippleY:i,rippleSize:a,cb:o}=e;s(e=>[...e,(0,z.jsx)(kp,{classes:{ripple:V(r.ripple,Cp.ripple),rippleVisible:V(r.rippleVisible,Cp.rippleVisible),ripplePulsate:V(r.ripplePulsate,Cp.ripplePulsate),child:V(r.child,Cp.child),childLeaving:V(r.childLeaving,Cp.childLeaving),childPulsate:V(r.childPulsate,Cp.childPulsate)},timeout:wp,pulsate:t,rippleX:n,rippleY:i,rippleSize:a},c.current)]),c.current+=1,l.current=o},[r]),h=S.useCallback((e={},t={},r=()=>{})=>{let{pulsate:i=!1,center:a=n||t.pulsate,fakeElement:o=!1}=t;if(e?.type===`mousedown`&&u.current){u.current=!1;return}e?.type===`touchstart`&&(u.current=!0);let s=o?null:p.current,c=s?s.getBoundingClientRect():{width:0,height:0,left:0,top:0},l,h,g;if(a||e===void 0||e.clientX===0&&e.clientY===0||!e.clientX&&!e.touches)l=Math.round(c.width/2),h=Math.round(c.height/2);else{let{clientX:t,clientY:n}=e.touches&&e.touches.length>0?e.touches[0]:e;l=Math.round(t-c.left),h=Math.round(n-c.top)}if(a)g=Math.sqrt((2*c.width**2+c.height**2)/3),g%2==0&&(g+=1);else{let e=Math.max(Math.abs((s?s.clientWidth:0)-l),l)*2+2,t=Math.max(Math.abs((s?s.clientHeight:0)-h),h)*2+2;g=Math.sqrt(e**2+t**2)}e?.touches?f.current===null&&(f.current=()=>{m({pulsate:i,rippleX:l,rippleY:h,rippleSize:g,cb:r})},d.start(80,()=>{f.current&&=(f.current(),null)})):m({pulsate:i,rippleX:l,rippleY:h,rippleSize:g,cb:r})},[n,m,d]),g=S.useCallback(()=>{h({},{pulsate:!0})},[h]),_=S.useCallback((e,t)=>{if(d.clear(),e?.type===`touchend`&&f.current){f.current(),f.current=null,d.start(0,()=>{_(e,t)});return}f.current=null,s(e=>e.length>0?e.slice(1):e),l.current=t},[d]);return S.useImperativeHandle(t,()=>({pulsate:g,start:h,stop:_}),[g,h,_]),(0,z.jsx)(Op,{className:V(Cp.root,r.root,i),ref:p,...a,children:(0,z.jsx)(Gf,{component:null,exit:!0,children:o})})});function jp(e){return $s(`MuiButtonBase`,e)}var Mp=ec(`MuiButtonBase`,[`root`,`disabled`,`focusVisible`]),Np=e=>{let{disabled:t,focusVisible:n,focusVisibleClassName:r,classes:i}=e,a=Al({root:[`root`,t&&`disabled`,n&&`focusVisible`]},jp,i);return n&&r&&(a.root+=` ${r}`),a};const Pp=X(`button`,{name:`MuiButtonBase`,slot:`Root`})({display:`inline-flex`,alignItems:`center`,justifyContent:`center`,position:`relative`,boxSizing:`border-box`,WebkitTapHighlightColor:`transparent`,backgroundColor:`transparent`,outline:0,border:0,margin:0,borderRadius:0,padding:0,cursor:`pointer`,userSelect:`none`,verticalAlign:`middle`,MozAppearance:`none`,WebkitAppearance:`none`,textDecoration:`none`,color:`inherit`,"&::-moz-focus-inner":{borderStyle:`none`},[`&.${Mp.disabled}`]:{pointerEvents:`none`,cursor:`default`},"@media print":{colorAdjust:`exact`}});var Fp=S.forwardRef(function(e,t){let n=jd({props:e,name:`MuiButtonBase`}),{action:r,centerRipple:i=!1,children:a,className:o,component:s=`button`,disabled:c=!1,disableRipple:l=!1,disableTouchRipple:u=!1,focusRipple:d=!1,focusVisibleClassName:f,LinkComponent:p=`a`,onBlur:m,onClick:h,onContextMenu:g,onDragLeave:_,onFocus:v,onFocusVisible:y,onKeyDown:b,onKeyUp:x,onMouseDown:C,onMouseLeave:w,onMouseUp:T,onTouchEnd:E,onTouchMove:ee,onTouchStart:D,tabIndex:O=0,TouchRippleProps:te,touchRippleRef:k,type:A,...j}=n,ne=S.useRef(null),M=yp(),N=vf(M.ref,k),[P,re]=S.useState(!1);c&&P&&re(!1),S.useImperativeHandle(r,()=>({focusVisible:()=>{re(!0),ne.current.focus()}}),[]);let ie=M.shouldMount&&!l&&!c;S.useEffect(()=>{P&&d&&!l&&M.pulsate()},[l,d,P,M]);let ae=Ip(M,`start`,C,u),oe=Ip(M,`stop`,g,u),se=Ip(M,`stop`,_,u),F=Ip(M,`stop`,T,u),ce=Ip(M,`stop`,e=>{P&&e.preventDefault(),w&&w(e)},u),le=Ip(M,`start`,D,u),ue=Ip(M,`stop`,E,u),de=Ip(M,`stop`,ee,u),fe=Ip(M,`stop`,e=>{_p(e.target)||re(!1),m&&m(e)},!1),pe=gf(e=>{ne.current||=e.currentTarget,_p(e.target)&&(re(!0),y&&y(e)),v&&v(e)}),me=()=>{let e=ne.current;return s&&s!==`button`&&!(e.tagName===`A`&&e.href)},he=gf(e=>{d&&!e.repeat&&P&&e.key===` `&&M.stop(e,()=>{M.start(e)}),e.target===e.currentTarget&&me()&&e.key===` `&&e.preventDefault(),b&&b(e),e.target===e.currentTarget&&me()&&e.key===`Enter`&&!c&&(e.preventDefault(),h&&h(e))}),ge=gf(e=>{d&&e.key===` `&&P&&!e.defaultPrevented&&M.stop(e,()=>{M.pulsate(e)}),x&&x(e),h&&e.target===e.currentTarget&&me()&&e.key===` `&&!e.defaultPrevented&&h(e)}),_e=s;_e===`button`&&(j.href||j.to)&&(_e=p);let ve={};_e===`button`?(ve.type=A===void 0?`button`:A,ve.disabled=c):(!j.href&&!j.to&&(ve.role=`button`),c&&(ve[`aria-disabled`]=c));let ye=vf(t,ne),be={...n,centerRipple:i,component:s,disabled:c,disableRipple:l,disableTouchRipple:u,focusRipple:d,tabIndex:O,focusVisible:P},xe=Np(be);return(0,z.jsxs)(Pp,{as:_e,className:V(xe.root,o),ownerState:be,onBlur:fe,onClick:h,onContextMenu:oe,onFocus:pe,onKeyDown:he,onKeyUp:ge,onMouseDown:ae,onMouseLeave:ce,onMouseUp Line truncated
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
`,Kp=Va`
0% {
stroke-dasharray: 1px, 200px;
stroke-dashoffset: 0;
}
50% {
stroke-dasharray: 100px, 200px;
stroke-dashoffset: -15px;
}
100% {
stroke-dasharray: 1px, 200px;
stroke-dashoffset: -126px;
}
`,qp=typeof Gp==`string`?null:Ba`
animation: ${Gp} 1.4s linear infinite;
`,Jp=typeof Kp==`string`?null:Ba`
animation: ${Kp} 1.4s ease-in-out infinite;
`,Yp=e=>{let{classes:t,variant:n,color:r,disableShrink:i}=e;return Al({root:[`root`,n,`color${Q(r)}`],svg:[`svg`],track:[`track`],circle:[`circle`,`circle${Q(n)}`,i&&`circleDisableShrink`]},Up,t)},Xp=X(`span`,{name:`MuiCircularProgress`,slot:`Root`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.root,t[n.variant],t[`color${Q(n.color)}`]]}})(Zd(({theme:e})=>({display:`inline-block`,variants:[{props:{variant:`determinate`},style:{transition:e.transitions.create(`transform`)}},{props:{variant:`indeterminate`},style:qp||{animation:`${Gp} 1.4s linear infinite`}},...Object.entries(e.palette).filter(Bp()).map(([t])=>({props:{color:t},style:{color:(e.vars||e).palette[t].main}}))]}))),Zp=X(`svg`,{name:`MuiCircularProgress`,slot:`Svg`})({display:`block`}),Qp=X(`circle`,{name:`MuiCircularProgress`,slot:`Circle`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.circle,t[`circle${Q(n.variant)}`],n.disableShrink&&t.circleDisableShrink]}})(Zd(({theme:e})=>({stroke:`currentColor`,variants:[{props:{variant:`determinate`},style:{transition:e.transitions.create(`stroke-dashoffset`)}},{props:{variant:`indeterminate`},style:{strokeDasharray:`80px, 200px`,strokeDashoffset:0}},{props:({ownerState:e})=>e.variant===`indeterminate`&&!e.disableShrink,style:Jp||{animation:`${Kp} 1.4s ease-in-out infinite`}}]}))),$p=X(`circle`,{name:`MuiCircularProgress`,slot:`Track`})(Zd(({theme:e})=>({stroke:`currentColor`,opacity:(e.vars||e).palette.action.activatedOpacity}))),em=S.forwardRef(function(e,t){let n=jd({props:e,name:`MuiCircularProgress`}),{className:r,color:i=`primary`,disableShrink:a=!1,enableTrackSlot:o=!1,size:s=40,style:c,thickness:l=3.6,value:u=0,variant:d=`indeterminate`,...f}=n,p={...n,color:i,disableShrink:a,size:s,thickness:l,value:u,variant:d,enableTrackSlot:o},m=Yp(p),h={},g={},_={};if(d===`determinate`){let e=2*Math.PI*((Wp-l)/2);h.strokeDasharray=e.toFixed(3),_[`aria-valuenow`]=Math.round(u),h.strokeDashoffset=`${((100-u)/100*e).toFixed(3)}px`,g.transform=`rotate(-90deg)`}return(0,z.jsx)(Xp,{className:V(m.root,r),style:{width:s,height:s,...g,...c},ownerState:p,ref:t,role:`progressbar`,..._,...f,children:(0,z.jsxs)(Zp,{className:m.svg,ownerState:p,viewBox:`${Wp/2} ${Wp/2} ${Wp} ${Wp}`,children:[o?(0,z.jsx)($p,{className:m.track,ownerState:p,cx:Wp,cy:Wp,r:(Wp-l)/2,fill:`none`,strokeWidth:l,"aria-hidden":`true`}):null,(0,z.jsx)(Qp,{className:m.circle,style:h,ownerState:p,cx:Wp,cy:Wp,r:(Wp-l)/2,fill:`none`,strokeWidth:l})]})})});function tm(e){return $s(`MuiIconButton`,e)}var nm=ec(`MuiIconButton`,[`root`,`disabled`,`colorInherit`,`colorPrimary`,`colorSecondary`,`colorError`,`colorInfo`,`colorSuccess`,`colorWarning`,`edgeStart`,`edgeEnd`,`sizeSmall`,`sizeMedium`,`sizeLarge`,`loading`,`loadingIndicator`,`loadingWrapper`]),rm=e=>{let{classes:t,disabled:n,color:r,edge:i,size:a,loading:o}=e;return Al({root:[`root`,o&&`loading`,n&&`disabled`,r!==`default`&&`color${Q(r)}`,i&&`edge${Q(i)}`,`size${Q(a)}`],loadingIndicator:[`loadingIndicator`],loadingWrapper:[`loadingWrapper`]},tm,t)},im=X(Lp,{name:`MuiIconButton`,slot:`Root`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.root,n.loading&&t.loading,n.color!==`default`&&t[`color${Q(n.color)}`],n.edge&&t[`edge${Q(n.edge)}`],t[`size${Q(n.size)}`]]}})(Zd(({theme:e})=>({textAlign:`center`,flex:`0 0 auto`,fontSize:e.typography.pxToRem(24),padding:8,borderRadius:`50%`,color:(e.vars||e).palette.action.active,transition:e.transitions.create(`background-color`,{duration:e.transitions.duration.shortest}),variants:[{props:e=>!e.disableRipple,style:{"--IconButton-hoverBg":e.alpha((e.vars||e).palette.action.active,(e.vars||e).palette.action.hoverOpacity),"&:hover":{backgroundColor:`var(--IconButton-hoverBg)`,"@media (hover: none)":{backgroundColor:`transparent`}}}},{props:{edge:`start`},style:{marginLeft:-12}},{props:{edge:`start`,size:`small`},style:{marginLeft:-3}},{props:{edge:`end`},style:{marginRight:-12}},{props:{edge:`end`,size:`small`},style:{marginRight:-3}}]})),Zd(({theme:e})=>({variants:[{props:{color:`inherit`},style:{color:`inherit`}},...Object.entries(e.palette).filter(Bp()).map(([t])=>({props:{color:t},style:{color:(e.vars||e).palette[t].main}})),...Object.entries(e.palette).filter(Bp()).map(([t])=>({props:{color:t},style:{"--IconButton-hoverBg":e.alpha((e.vars||e).palette[t].main,(e.vars||e).palette.action.hoverOpacity)}})),{props:{size:`small`},style:{padding:5,fontSize:e.typography.pxToRem(18)}},{props:{size:`large`},style:{padding:12,fontSize:e.typography.pxToRem(28)}}],[`&.${nm.disabled}`]:{backgroundColor:`transparent`,color:(e.vars||e).palette.action.disabled},[`&.${nm.loading}`]:{color:`transparent`}}))),am=X(`span`,{name:`MuiIconButton`,slot:`LoadingIndicator`})(({theme:e})=>({display:`none`,position:`absolute`,visibility:`visible`,top:`50%`,left:`50%`,transform:`translate(-50%, -50%)`,color:(e.vars||e).palette.action.disabled,variants:[{props:{loading:!0},style:{display:`flex`}}]})),om=S.forwardRef(function(e,t){let n=jd({props:e,name:`MuiIconButtonLine truncated
@@ -1 +1 @@
.fa,.fa-brands,.fa-classic,.fa-regular,.fa-solid,.fab,.far,.fas{--_fa-family:var(--fa-family,var(--fa-style-family,"Font Awesome 7 Free"));-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:var(--fa-display,inline-block);font-family:var(--_fa-family);font-feature-settings:normal;font-synthesis:none;font-variant:normal;font-style:normal;font-weight:var(--fa-style,900);text-align:center;text-rendering:auto;width:var(--fa-width,1.25em);line-height:1}:is(.fas,.far,.fab,.fa-solid,.fa-regular,.fa-brands,.fa-classic,.fa):before{content:var(--fa)/""}@supports not (content:""/""){:is(.fas,.far,.fab,.fa-solid,.fa-regular,.fa-brands,.fa-classic,.fa):before{content:var(--fa)}}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-2xs{vertical-align:.225em;font-size:.625em;line-height:.1em}.fa-xs{vertical-align:.125em;font-size:.75em;line-height:.08333em}.fa-sm{vertical-align:.05357em;font-size:.875em;line-height:.07143em}.fa-lg{vertical-align:-.075em;font-size:1.25em;line-height:.05em}.fa-xl{vertical-align:-.125em;font-size:1.5em;line-height:.04167em}.fa-2xl{vertical-align:-.1875em;font-size:2em;line-height:.03125em}.fa-width-auto{--fa-width:auto}.fa-fw,.fa-width-fixed{--fa-width:1.25em}.fa-canvas-square{margin-block-end:-.125em;padding-block:.125em}.fa-canvas-roomy{box-sizing:content-box;margin-block-end:-.25em;padding-block:.25em;padding-inline:.125em}.fa-ul{margin-inline-start:var(--fa-li-margin,2.5em);padding-inline-start:0;list-style-type:none}.fa-ul>li{position:relative}.fa-li{text-align:center;width:var(--fa-li-width,2em);line-height:inherit;position:absolute;inset-inline-start:calc(var(--fa-li-width,2em)*-1)}.fa-border{border-radius:var(--fa-border-radius,.1em);border:var(--fa-border-width,.0625em)var(--fa-border-style,solid)var(--fa-border-color,#eee);box-sizing:var(--fa-border-box-sizing,content-box);padding:var(--fa-border-padding,.1875em .25em)}.fa-pull-left,.fa-pull-start{float:inline-start;margin-inline-end:var(--fa-pull-margin,.3em)}.fa-pull-end,.fa-pull-right{float:inline-end;margin-inline-start:var(--fa-pull-margin,.3em)}.fa-beat{animation-name:fa-beat;animation-delay:var(--fa-animation-delay,0s);animation-direction:var(--fa-animation-direction,normal);animation-duration:var(--fa-animation-duration,1s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-bounce{animation-name:fa-bounce;animation-delay:var(--fa-animation-delay,0s);animation-direction:var(--fa-animation-direction,normal);animation-duration:var(--fa-animation-duration,1s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,cubic-bezier(.28,.84,.42,1))}.fa-fade{animation-name:fa-fade;animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-beat-fade,.fa-fade{animation-delay:var(--fa-animation-delay,0s);animation-direction:var(--fa-animation-direction,normal);animation-duration:var(--fa-animation-duration,1s)}.fa-beat-fade{animation-name:fa-beat-fade;animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-flip{animation-name:fa-flip;animation-duration:var(--fa-animation-duration,1.5s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-flip,.fa-flip-360{animation-delay:var(--fa-animation-delay,0s);animation-direction:var(--fa-animation-direction,normal)}.fa-flip-360{animation-name:fa-flip-360;animation-duration:var(--fa-animation-duration,1s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-shake{animation-name:fa-shake;animation-delay:var(--fa-animation-delay,0s);animation-direction:var(--fa-animation-direction,normal);animation-duration:var(--fa-animation-duration,.75s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-spin{animation-name:fa-spin;animation-delay:var(--fa-animation-delay,0s);animation-direction:var(--fa-animation-direction,normal);animation-duration:var(--fa-animation-duration,2s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,linear)}.fa-spin-reverse{--fa-animation-direction:reverse}.fa-pulse,.fa-spin-pulse{animation-name:fa-spin;animation-direction:var(--fa-animation-direction,normal);animation-duration:var(--fa-animation-duration,1s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,steps(8))}.fa-spin-snap{Line truncated .fa,.fa-brands,.fa-classic,.fa-regular,.fa-solid,.fab,.far,.fas{--_fa-family:var(--fa-family,var(--fa-style-family,"Font Awesome 7 Free"));-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:var(--fa-display,inline-block);font-family:var(--_fa-family);font-feature-settings:normal;font-synthesis:none;font-variant:normal;font-style:normal;font-weight:var(--fa-style,900);text-align:center;text-rendering:auto;width:var(--fa-width,1.25em);line-height:1}:is(.fas,.far,.fab,.fa-solid,.fa-regular,.fa-brands,.fa-classic,.fa):before{content:var(--fa)/""}@supports not (content:""/""){:is(.fas,.far,.fab,.fa-solid,.fa-regular,.fa-brands,.fa-classic,.fa):before{content:var(--fa)}}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-2xs{vertical-align:.225em;font-size:.625em;line-height:.1em}.fa-xs{vertical-align:.125em;font-size:.75em;line-height:.08333em}.fa-sm{vertical-align:.05357em;font-size:.875em;line-height:.07143em}.fa-lg{vertical-align:-.075em;font-size:1.25em;line-height:.05em}.fa-xl{vertical-align:-.125em;font-size:1.5em;line-height:.04167em}.fa-2xl{vertical-align:-.1875em;font-size:2em;line-height:.03125em}.fa-width-auto{--fa-width:auto}.fa-fw,.fa-width-fixed{--fa-width:1.25em}.fa-canvas-square{margin-block-end:-.125em;padding-block:.125em}.fa-canvas-roomy{box-sizing:content-box;margin-block-end:-.25em;padding-block:.25em;padding-inline:.125em}.fa-ul{margin-inline-start:var(--fa-li-margin,2.5em);padding-inline-start:0;list-style-type:none}.fa-ul>li{position:relative}.fa-li{text-align:center;width:var(--fa-li-width,2em);line-height:inherit;position:absolute;inset-inline-start:calc(var(--fa-li-width,2em)*-1)}.fa-border{border-radius:var(--fa-border-radius,.1em);border:var(--fa-border-width,.0625em)var(--fa-border-style,solid)var(--fa-border-color,#eee);box-sizing:var(--fa-border-box-sizing,content-box);padding:var(--fa-border-padding,.1875em .25em)}.fa-pull-left,.fa-pull-start{float:inline-start;margin-inline-end:var(--fa-pull-margin,.3em)}.fa-pull-end,.fa-pull-right{float:inline-end;margin-inline-start:var(--fa-pull-margin,.3em)}.fa-beat{animation-name:fa-beat;animation-delay:var(--fa-animation-delay,0s);animation-direction:var(--fa-animation-direction,normal);animation-duration:var(--fa-animation-duration,1s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-bounce{animation-name:fa-bounce;animation-delay:var(--fa-animation-delay,0s);animation-direction:var(--fa-animation-direction,normal);animation-duration:var(--fa-animation-duration,1s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,cubic-bezier(.28,.84,.42,1))}.fa-fade{animation-name:fa-fade;animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-beat-fade,.fa-fade{animation-delay:var(--fa-animation-delay,0s);animation-direction:var(--fa-animation-direction,normal);animation-duration:var(--fa-animation-duration,1s)}.fa-beat-fade{animation-name:fa-beat-fade;animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-flip{animation-name:fa-flip;animation-duration:var(--fa-animation-duration,1.5s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-flip,.fa-flip-360{animation-delay:var(--fa-animation-delay,0s);animation-direction:var(--fa-animation-direction,normal)}.fa-flip-360{animation-name:fa-flip-360;animation-duration:var(--fa-animation-duration,1s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-shake{animation-name:fa-shake;animation-delay:var(--fa-animation-delay,0s);animation-direction:var(--fa-animation-direction,normal);animation-duration:var(--fa-animation-duration,.75s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-spin{animation-name:fa-spin;animation-delay:var(--fa-animation-delay,0s);animation-direction:var(--fa-animation-direction,normal);animation-duration:var(--fa-animation-duration,2s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,linear)}.fa-spin-reverse{--fa-animation-direction:reverse}.fa-pulse,.fa-spin-pulse{animation-name:fa-spin;animation-direction:var(--fa-animation-direction,normal);animation-duration:var(--fa-animation-duration,1s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,steps(8))}.fa-spin-snap{Line truncated
+148
View File
@@ -0,0 +1,148 @@
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/vitec_downloadcardcollection-RsRD4eC3.js","assets/jszip.min-DxLKr7hR.js","assets/vitec_datasheets-Cp-zTFxi.js","assets/vitec_faq-C66INAn2.js","assets/useControlled-CztbT67m.js","assets/VitecDebugToggle-Bp07RQC2.js"])))=>i.map(i=>d[i]);
var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),s=e=>{let n={};for(var r in e)t(n,r,{get:e[r],enumerable:!0});return n},c=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},l=(n,r,a)=>(a=n==null?{}:e(i(n)),c(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n)),u=(e=>typeof require<`u`?require:typeof Proxy<`u`?new Proxy(e,{get:(e,t)=>(typeof require<`u`?require:e)[t]}):e)(function(e){if(typeof require<`u`)return require.apply(this,arguments);throw Error('Calling `require` for "'+e+"\" in an environment that doesn't expose the `require` function.")});(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),e.crossOrigin===`use-credentials`?t.credentials=`include`:e.crossOrigin===`anonymous`?t.credentials=`omit`:t.credentials=`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var d=o((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.portal`),r=Symbol.for(`react.fragment`),i=Symbol.for(`react.strict_mode`),a=Symbol.for(`react.profiler`),o=Symbol.for(`react.consumer`),s=Symbol.for(`react.context`),c=Symbol.for(`react.forward_ref`),l=Symbol.for(`react.suspense`),u=Symbol.for(`react.memo`),d=Symbol.for(`react.lazy`),f=Symbol.for(`react.activity`),p=Symbol.iterator;function m(e){return typeof e!=`object`||!e?null:(e=p&&e[p]||e[`@@iterator`],typeof e==`function`?e:null)}var h={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},g=Object.assign,_={};function v(e,t,n){this.props=e,this.context=t,this.refs=_,this.updater=n||h}v.prototype.isReactComponent={},v.prototype.setState=function(e,t){if(typeof e!=`object`&&typeof e!=`function`&&e!=null)throw Error(`takes an object of state variables to update or a function which returns an object of state variables.`);this.updater.enqueueSetState(this,e,t,`setState`)},v.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,`forceUpdate`)};function y(){}y.prototype=v.prototype;function b(e,t,n){this.props=e,this.context=t,this.refs=_,this.updater=n||h}var x=b.prototype=new y;x.constructor=b,g(x,v.prototype),x.isPureReactComponent=!0;var S=Array.isArray;function C(){}var w={H:null,A:null,T:null,S:null},T=Object.prototype.hasOwnProperty;function E(e,n,r){var i=r.ref;return{$$typeof:t,type:e,key:n,ref:i===void 0?null:i,props:r}}function ee(e,t){return E(e.type,t,e.props)}function D(e){return typeof e==`object`&&!!e&&e.$$typeof===t}function te(e){var t={"=":`=0`,":":`=2`};return`$`+e.replace(/[=:]/g,function(e){return t[e]})}var ne=/\/+/g;function re(e,t){return typeof e==`object`&&e&&e.key!=null?te(``+e.key):t.toString(36)}function O(e){switch(e.status){case`fulfilled`:return e.value;case`rejected`:throw e.reason;default:switch(typeof e.status==`string`?e.then(C,C):(e.status=`pending`,e.then(function(t){e.status===`pending`&&(e.status=`fulfilled`,e.value=t)},function(t){e.status===`pending`&&(e.status=`rejected`,e.reason=t)})),e.status){case`fulfilled`:return e.value;case`rejected`:throw e.reason}}throw e}function k(e,r,i,a,o){var s=typeof e;(s===`undefined`||s===`boolean`)&&(e=null);var c=!1;if(e===null)c=!0;else switch(s){case`bigint`:case`string`:case`number`:c=!0;break;case`object`:switch(e.$$typeof){case t:case n:c=!0;break;case d:return c=e._init,k(c(e._payload),r,i,a,o)}}if(c)return o=o(e),c=a===``?`.`+re(e,0):a,S(o)?(i=``,c!=null&&(i=c.replace(ne,`$&/`)+`/`),k(o,r,i,``,function(e){return e})):o!=null&&(D(o)&&(o=ee(o,i+(o.key==null||e&&e.key===o.key?``:(``+o.key).replace(ne,`$&/`)+`/`)+c)),r.push(o)),1;c=0;var l=a===``?`.`:a+`:`;if(S(e))for(var u=0;u<e.length;u++)a=e[u],s=l+re(a,u),c+=k(a,r,i,s,o);else if(u=m(e),typeof u==`function`)for(e=u.call(e),u=0;!(a=e.next()).done;)a=a.value,s=l+re(a,u++),c+=k(a,r,i,s,o);else if(s===`object`){if(typeof e.then==`function`)return k(O(e),r,i,a,o);throw r=String(e),Error(`Objects are not valid as a React child (found: `+(r===`[object Object]`?`object with keys {`+Object.keys(e).join(`, `)+`}`:r)+`). If you meant to render a collection of children, use an array instead.`)}return c}function A(e,t,n){if(e==null)return e;var r=[],i=0;return k(e,r,``,``,function(e){return t.call(n,e,i++)}),r}function j(e){if(e._status===-1){var tLine truncated
at`)?` (<anonymous>)`:-1<e.stack.indexOf(`@`)?`@unknown:0:0`:``}return`
`+_e+e+ve}var be=!1;function xe(e,t){if(!e||be)return``;be=!0;var n=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{var r={DetermineComponentFrameRoot:function(){try{if(t){var n=function(){throw Error()};if(Object.defineProperty(n.prototype,`props`,{set:function(){throw Error()}}),typeof Reflect==`object`&&Reflect.construct){try{Reflect.construct(n,[])}catch(e){var r=e}Reflect.construct(e,[],n)}else{try{n.call()}catch(e){r=e}e.call(n.prototype)}}else{try{throw Error()}catch(e){r=e}(n=e())&&typeof n.catch==`function`&&n.catch(function(){})}}catch(e){if(e&&r&&typeof e.stack==`string`)return[e.stack,r.stack]}return[null,null]}};r.DetermineComponentFrameRoot.displayName=`DetermineComponentFrameRoot`;var i=Object.getOwnPropertyDescriptor(r.DetermineComponentFrameRoot,`name`);i&&i.configurable&&Object.defineProperty(r.DetermineComponentFrameRoot,`name`,{value:`DetermineComponentFrameRoot`});var a=r.DetermineComponentFrameRoot(),o=a[0],s=a[1];if(o&&s){var c=o.split(`
`),l=s.split(`
`);for(i=r=0;r<c.length&&!c[r].includes(`DetermineComponentFrameRoot`);)r++;for(;i<l.length&&!l[i].includes(`DetermineComponentFrameRoot`);)i++;if(r===c.length||i===l.length)for(r=c.length-1,i=l.length-1;1<=r&&0<=i&&c[r]!==l[i];)i--;for(;1<=r&&0<=i;r--,i--)if(c[r]!==l[i]){if(r!==1||i!==1)do if(r--,i--,0>i||c[r]!==l[i]){var u=`
`+c[r].replace(` at new `,` at `);return e.displayName&&u.includes(`<anonymous>`)&&(u=u.replace(`<anonymous>`,e.displayName)),u}while(1<=r&&0<=i);break}}}finally{be=!1,Error.prepareStackTrace=n}return(n=e?e.displayName||e.name:``)?ye(n):``}function Se(e,t){switch(e.tag){case 26:case 27:case 5:return ye(e.type);case 16:return ye(`Lazy`);case 13:return e.child!==t&&t!==null?ye(`Suspense Fallback`):ye(`Suspense`);case 19:return ye(`SuspenseList`);case 0:case 15:return xe(e.type,!1);case 11:return xe(e.type.render,!1);case 1:return xe(e.type,!0);case 31:return ye(`Activity`);default:return``}}function Ce(e){try{var t=``,n=null;do t+=Se(e,n),n=e,e=e.return;while(e);return t}catch(e){return`
Error generating stack: `+e.message+`
`+e.stack}}var we=Object.prototype.hasOwnProperty,Te=t.unstable_scheduleCallback,Ee=t.unstable_cancelCallback,De=t.unstable_shouldYield,Oe=t.unstable_requestPaint,ke=t.unstable_now,Ae=t.unstable_getCurrentPriorityLevel,je=t.unstable_ImmediatePriority,Me=t.unstable_UserBlockingPriority,Ne=t.unstable_NormalPriority,Pe=t.unstable_LowPriority,Fe=t.unstable_IdlePriority,Ie=t.log,Le=t.unstable_setDisableYieldValue,Re=null,ze=null;function Be(e){if(typeof Ie==`function`&&Le(e),ze&&typeof ze.setStrictMode==`function`)try{ze.setStrictMode(Re,e)}catch{}}var Ve=Math.clz32?Math.clz32:We,He=Math.log,Ue=Math.LN2;function We(e){return e>>>=0,e===0?32:31-(He(e)/Ue|0)|0}var Ge=256,F=262144,Ke=4194304;function qe(e){var t=e&42;if(t!==0)return t;switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return e&261888;case 262144:case 524288:case 1048576:case 2097152:return e&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return e&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return e}}function Je(e,t,n){var r=e.pendingLanes;if(r===0)return 0;var i=0,a=e.suspendedLanes,o=e.pingedLanes;e=e.warmLanes;var s=r&134217727;return s===0?(s=r&~a,s===0?o===0?n||(n=r&~e,n!==0&&(i=qe(n))):i=qe(o):i=qe(s)):(r=s&~a,r===0?(o&=s,o===0?n||(n=s&~e,n!==0&&(i=qe(n))):i=qe(o)):i=qe(r)),i===0?0:t!==0&&t!==i&&(t&a)===0&&(a=i&-i,n=t&-t,a>=n||a===32&&n&4194048)?t:i}function Ye(e,t){return(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)===0}function Xe(e,t){switch(e){case 1:case 2:case 4:case 8:case 64:return t+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function Ze(){var e=Ke;return Ke<<=1,!(Ke&62914560)&&(Ke=4194304),e}function Qe(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function $e(e,t){e.pendingLanes|=t,t!==268435456&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function et(e,t,n,r,i,a){var o=e.pendingLanes;e.pendingLanes=n,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=n,e.entangledLanes&=n,e.errorRecoveryDisabledLanes&=n,e.shellSuspendCounter=0;var s=e.entanglements,c=e.expirationTimes,l=e.hiddenUpdates;for(n=o&~n;0<n;){var u=31-Ve(n),d=1<<u;s[u]=0,c[u]=-1;var f=l[u];if(f!==null)for(l[u]=null,u=0;u<f.length;u++){var p=f[u];p!==null&&(p.lane&=-536870913)}n&=~d}r!==0&&tt(e,r,0),a!==0&&i===0&&e.tag!==0&&(e.suspendedLanes|=a&~(o&~t))}function tt(e,t,n){e.pendingLanes|=t,e.suspendedLanes&=~t;var r=31-Ve(t);e.entangledLanes|=t,e.entanglements[r]=e.entanglements[r]|1073741824|n&261930}function nt(e,t){var n=e.entangledLanes|=t;for(e=e.entanglements;n;){var r=31-Ve(n),i=1<<r;i&t|e[r]&t&&(e[r]|=t),n&=~i}}function rt(e,t){var n=t&-t;return n=n&42?1:it(n),(n&(e.suspendedLanes|t))===0?n:0}function it(e){switch(e){case 2:e=1;break;case 8:e=4;break;case 32:e=16;break;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:e=128;break;case 268435456:e=134217728;break;default:e=0}return e}function at(e){return e&=-e,2<e?8<e?e&134217727?32:268435456:8:2}function ot(){var e=N.p;return e===0?(e=window.event,e===void 0?32:hp(e.type)):e}function st(e,t){var n=N.p;try{return N.p=e,t()}finally{N.p=n}}var ct=Math.random().toString(36).slice(2),lt=`__reactFiber$`+ct,ut=`__reactProps$`+ct,dt=`__reactContainer$`+ct,ft=`__reactEvents$`+ct,pt=`__reactListeners$`+ct,mt=`__reactHandles$`+ct,ht=`__reactResources$`+ct,gt=`__reactMarker$`+ct;function _t(e){delete e[lt],delete e[ut],delete e[ft],delete e[pt],delete e[mt]}function vt(e){var t=e[lt];if(t)return t;for(var n=e.parentNode;n;){if(t=n[dt]||n[lt]){if(n=t.alternate,t.child!==null||n!==null&&n.child!==null)for(e=ff(e);e!==null;){if(n=e[lt])return n;e=ff(e)}return t}e=n,n=e.parentNode}return null}function yt(e){if(e=e[lt]||e[dt]){var t=e.tag;if(t===5||t===6||t===13||t===31||t===26||t===27||t===3)return e}return null}function bt(e){var t=e.tag;if(t===5||t===26||t===27||t===6)return e.stateNode;throw Error(i(33))}function xt(e){var t=e[ht];return t||=e[ht]={hoistableStyles:new Map,hoistableScripts:new Map},t}function St(e){e[gt]=!0}var Ct=new Set,wt={};function Tt(e,t){Et(e,t),Et(e+`Capture`,t)}function Et(e,t){for(wt[e]=t,e=0;e<t.length;e++)Ct.add(t[e])}var Dt=RegExp(`^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-Line truncated
`).replace(jd,``)}function Nd(e,t){return t=Md(t),Md(e)===t}function Pd(e,t,n,r,a,o){switch(n){case`children`:typeof r==`string`?t===`body`||t===`textarea`&&r===``||Jt(e,r):(typeof r==`number`||typeof r==`bigint`)&&t!==`body`&&Jt(e,``+r);break;case`className`:Mt(e,`class`,r);break;case`tabIndex`:Mt(e,`tabindex`,r);break;case`dir`:case`role`:case`viewBox`:case`width`:case`height`:Mt(e,n,r);break;case`style`:Zt(e,r,o);break;case`data`:if(t!==`object`){Mt(e,`data`,r);break}case`src`:case`href`:if(r===``&&(t!==`a`||n!==`href`)){e.removeAttribute(n);break}if(r==null||typeof r==`function`||typeof r==`symbol`||typeof r==`boolean`){e.removeAttribute(n);break}r=tn(``+r),e.setAttribute(n,r);break;case`action`:case`formAction`:if(typeof r==`function`){e.setAttribute(n,`javascript:throw new Error('A React form was unexpectedly submitted. If you called form.submit() manually, consider using form.requestSubmit() instead. If you\\'re trying to use event.stopPropagation() in a submit event handler, consider also calling event.preventDefault().')`);break}else typeof o==`function`&&(n===`formAction`?(t!==`input`&&Pd(e,t,`name`,a.name,a,null),Pd(e,t,`formEncType`,a.formEncType,a,null),Pd(e,t,`formMethod`,a.formMethod,a,null),Pd(e,t,`formTarget`,a.formTarget,a,null)):(Pd(e,t,`encType`,a.encType,a,null),Pd(e,t,`method`,a.method,a,null),Pd(e,t,`target`,a.target,a,null)));if(r==null||typeof r==`symbol`||typeof r==`boolean`){e.removeAttribute(n);break}r=tn(``+r),e.setAttribute(n,r);break;case`onClick`:r!=null&&(e.onclick=nn);break;case`onScroll`:r!=null&&X(`scroll`,e);break;case`onScrollEnd`:r!=null&&X(`scrollend`,e);break;case`dangerouslySetInnerHTML`:if(r!=null){if(typeof r!=`object`||!(`__html`in r))throw Error(i(61));if(n=r.__html,n!=null){if(a.children!=null)throw Error(i(60));e.innerHTML=n}}break;case`multiple`:e.multiple=r&&typeof r!=`function`&&typeof r!=`symbol`;break;case`muted`:e.muted=r&&typeof r!=`function`&&typeof r!=`symbol`;break;case`suppressContentEditableWarning`:case`suppressHydrationWarning`:case`defaultValue`:case`defaultChecked`:case`innerHTML`:case`ref`:break;case`autoFocus`:break;case`xlinkHref`:if(r==null||typeof r==`function`||typeof r==`boolean`||typeof r==`symbol`){e.removeAttribute(`xlink:href`);break}n=tn(``+r),e.setAttributeNS(`http://www.w3.org/1999/xlink`,`xlink:href`,n);break;case`contentEditable`:case`spellCheck`:case`draggable`:case`value`:case`autoReverse`:case`externalResourcesRequired`:case`focusable`:case`preserveAlpha`:r!=null&&typeof r!=`function`&&typeof r!=`symbol`?e.setAttribute(n,``+r):e.removeAttribute(n);break;case`inert`:case`allowFullScreen`:case`async`:case`autoPlay`:case`controls`:case`default`:case`defer`:case`disabled`:case`disablePictureInPicture`:case`disableRemotePlayback`:case`formNoValidate`:case`hidden`:case`loop`:case`noModule`:case`noValidate`:case`open`:case`playsInline`:case`readOnly`:case`required`:case`reversed`:case`scoped`:case`seamless`:case`itemScope`:r&&typeof r!=`function`&&typeof r!=`symbol`?e.setAttribute(n,``):e.removeAttribute(n);break;case`capture`:case`download`:!0===r?e.setAttribute(n,``):!1!==r&&r!=null&&typeof r!=`function`&&typeof r!=`symbol`?e.setAttribute(n,r):e.removeAttribute(n);break;case`cols`:case`rows`:case`size`:case`span`:r!=null&&typeof r!=`function`&&typeof r!=`symbol`&&!isNaN(r)&&1<=r?e.setAttribute(n,r):e.removeAttribute(n);break;case`rowSpan`:case`start`:r==null||typeof r==`function`||typeof r==`symbol`||isNaN(r)?e.removeAttribute(n):e.setAttribute(n,r);break;case`popover`:X(`beforetoggle`,e),X(`toggle`,e),jt(e,`popover`,r);break;case`xlinkActuate`:Nt(e,`http://www.w3.org/1999/xlink`,`xlink:actuate`,r);break;case`xlinkArcrole`:Nt(e,`http://www.w3.org/1999/xlink`,`xlink:arcrole`,r);break;case`xlinkRole`:Nt(e,`http://www.w3.org/1999/xlink`,`xlink:role`,r);break;case`xlinkShow`:Nt(e,`http://www.w3.org/1999/xlink`,`xlink:show`,r);break;case`xlinkTitle`:Nt(e,`http://www.w3.org/1999/xlink`,`xlink:title`,r);break;case`xlinkType`:Nt(e,`http://www.w3.org/1999/xlink`,`xlink:type`,r);break;case`xmlBase`:Nt(e,`http://www.w3.org/XML/1998/namespace`,`xml:base`,r);break;case`xmlLang`:Nt(e,`http://www.w3.org/XML/1998/namespace`,`xml:lang`,r);break;case`xmlSpace`:Nt(e,`http://www.w3.org/XML/1998/namespace`,`xml:space`,r);break;case`is`:jt(e,`is`,r);break;case`innerText`:case`textContent`:break;default:(!(2<n.length)||n[0]!==`o`&&n[0]!==`O`||n[1]!==`n`&&n[1]!==`N`)&&(n=$t.get(n)||n,jt(e,n,r))}}function Fd(e,t,n,r,a,o){switch(n){case`style`:Zt(e,r,o);break;case`dangerouslySetInnerHTML`:if(r!=null){if(typeof r!=`object`||!(`__html`in r))throw Error(i(61));if(n=r.__html,n!=null){if(a.children!=null)throw Error(i(60));e.innerHTML=n}}break;case`children`:typeof r==`string`?Jt(e,r):(typeof r==`number`||typeof r==`bigint`)&&Jt(e,``+r);break;case`onScroll`:r!=null&&X(`scroll`,e);break;case`onScrollEnd`:r!=null&&X(`scrollend`,e);break;case`onClick`:r!=null&&(e.onclick=nn);break;case`suppressContentEditableWarning`:case`suppressHydrationWarning`:case`innerHTML` Line truncated
Please change the parent <Route path="${e}"> to <Route path="${e===`/`?`*`:`${e}/*`}">.`)}let u=ln(),d;if(t){let e=typeof t==`string`?nt(t):t;Xe(c===`/`||e.pathname?.startsWith(c),`When overriding the location using \`<Routes location>\` or \`useRoutes(routes, location)\`, the location pathname must begin with the portion of the URL pathname that was matched by all parent routes. The current pathname base is "${c}" but pathname "${e.pathname}" was given in the \`location\` prop.`),d=e}else d=u;let f=d.pathname||`/`,p=f;if(c!==`/`){let e=c.replace(/^\//,``).split(`/`);p=`/`+f.replace(/^\//,``).split(`/`).slice(e.length).join(`/`)}let m=n&&n.state.matches.length?n.state.matches.map(e=>Object.assign(e,{route:n.manifest[e.route.id]||e.route})):at(e,{pathname:p});Ze(l||m!=null,`No routes matched location "${d.pathname}${d.search}${d.hash}" `),Ze(m==null||m[m.length-1].route.element!==void 0||m[m.length-1].route.Component!==void 0||m[m.length-1].route.lazy!==void 0,`Matched leaf route at location "${d.pathname}${d.search}${d.hash}" does not have an element or Component. This means it will render an <Outlet /> with a null value by default resulting in an "empty" page.`);let h=Sn(m&&m.map(e=>Object.assign({},e,{params:Object.assign({},o,e.params),pathname:Pt([c,r.encodeLocation?r.encodeLocation(e.pathname.replace(/%/g,`%25`).replace(/\?/g,`%3F`).replace(/#/g,`%23`)).pathname:e.pathname]),pathnameBase:e.pathnameBase===`/`?c:Pt([c,r.encodeLocation?r.encodeLocation(e.pathnameBase.replace(/%/g,`%25`).replace(/\?/g,`%3F`).replace(/#/g,`%23`)).pathname:e.pathnameBase])})),i,n);return t&&h?C.createElement(Qt.Provider,{value:{location:{pathname:`/`,search:``,hash:``,state:null,key:`default`,mask:void 0,...d},navigationType:`POP`}},h):h}function gn(){let e=jn(),t=Bt(e)?`${e.status} ${e.statusText}`:e instanceof Error?e.message:JSON.stringify(e),n=e instanceof Error?e.stack:null,r=`rgba(200,200,200, 0.5)`,i={padding:`0.5rem`,backgroundColor:r},a={padding:`2px 4px`,backgroundColor:r},o=null;return console.error(`Error handled by React Router default ErrorBoundary:`,e),o=C.createElement(C.Fragment,null,C.createElement(`p`,null,`💿 Hey developer 👋`),C.createElement(`p`,null,`You can provide a way better UX than this when your app throws errors by providing your own `,C.createElement(`code`,{style:a},`ErrorBoundary`),` or`,` `,C.createElement(`code`,{style:a},`errorElement`),` prop on your route.`)),C.createElement(C.Fragment,null,C.createElement(`h2`,null,`Unexpected Application Error!`),C.createElement(`h3`,{style:{fontStyle:`italic`}},t),n?C.createElement(`pre`,{style:i},n):null,o)}var _n=C.createElement(gn,null),vn=class extends C.Component{constructor(e){super(e),this.state={location:e.location,revalidation:e.revalidation,error:e.error}}static getDerivedStateFromError(e){return{error:e}}static getDerivedStateFromProps(e,t){return t.location!==e.location||t.revalidation!==`idle`&&e.revalidation===`idle`?{error:e.error,location:e.location,revalidation:e.revalidation}:{error:e.error===void 0?t.error:e.error,location:t.location,revalidation:e.revalidation||t.revalidation}}componentDidCatch(e,t){this.props.onError?this.props.onError(e,t):console.error(`React Router caught the following error during render`,e)}render(){let e=this.state.error;if(this.context&&typeof e==`object`&&e&&`digest`in e&&typeof e.digest==`string`){let t=on(e.digest);t&&(e=t)}let t=e===void 0?this.props.children:C.createElement($t.Provider,{value:this.props.routeContext},C.createElement(en.Provider,{value:e,children:this.props.component}));return this.context?C.createElement(bn,{error:e},t):t}};vn.contextType=Kt;var yn=new WeakMap;function bn({children:e,error:t}){let{basename:n}=C.useContext(Zt);if(typeof t==`object`&&t&&`digest`in t&&typeof t.digest==`string`){let e=an(t.digest);if(e){let r=yn.get(t);if(r)throw r;let i=Ut(e.location,n);if(Ht&&!yn.get(t))if(i.isExternal||e.reloadDocument)window.location.href=i.absoluteURL||i.to;else{let n=Promise.resolve().then(()=>window.__reactRouterDataRouter.navigate(i.to,{replace:e.replace}));throw yn.set(t,n),n}return C.createElement(`meta`,{httpEquiv:`refresh`,content:`0;url=${i.absoluteURL||i.to}`})}}return e}function xn({routeContext:e,match:t,children:n}){let r=C.useContext(Wt);return r&&r.static&&r.staticContext&&(t.route.errorElement||t.route.ErrorBoundary)&&(r.staticContext._deepestRenderedBoundaryId=t.route.id),C.createElement($t.Provider,{value:e},n)}function Sn(e,t=[],n){let r=n?.state;if(e==null){if(!r)return null;if(r.errors)e=r.matches;else if(t.length===0&&!r.initialized&&r.matches.length>0)e=r.matches;else return null}let i=e,a=r?.errors;if(a!=null){let e=i.findIndex(e=>e.route.id&&a?.[e.route.id]!==void 0);Xe(e>=0,`Could not find a matching route for errors on route IDs: ${Object.keys(a).join(`,`)}`),i=i.slice(0,Math.min(i.length,e+1))}let o=!1,s=-1;if(n&&r){o=r.renderFallback;for(let e=0;e<i.length;e++){let t=i[e];if((t.route.HydrateFallback||t.route.hydrateFallbackElement)&&(s=e),t.route.id){lLine truncated
`)),(Sc===void 0?xc:Cc)(l,a,o,s,c)}}wc();function Tc(e,t=-(2**53-1),n=2**53-1){return Math.max(t,Math.min(e,n))}var Ec=Tc;function Dc(e,t=0,n=1){return Ec(e,t,n)}function Oc(e){e=e.slice(1);let t=RegExp(`.{1,${e.length>=6?2:1}}`,`g`),n=e.match(t);return n&&n[0].length===1&&(n=n.map(e=>e+e)),n?`rgb${n.length===4?`a`:``}(${n.map((e,t)=>t<3?parseInt(e,16):Math.round(parseInt(e,16)/255*1e3)/1e3).join(`, `)})`:``}function kc(e){if(e.type)return e;if(e.charAt(0)===`#`)return kc(Oc(e));let t=e.indexOf(`(`),n=e.substring(0,t);if(![`rgb`,`rgba`,`hsl`,`hsla`,`color`].includes(n))throw Error(Wr(9,e));let r=e.substring(t+1,e.length-1),i;if(n===`color`){if(r=r.split(` `),i=r.shift(),r.length===4&&r[3].charAt(0)===`/`&&(r[3]=r[3].slice(1)),![`srgb`,`display-p3`,`a98-rgb`,`prophoto-rgb`,`rec-2020`].includes(i))throw Error(Wr(10,i))}else r=r.split(`,`);return r=r.map(e=>parseFloat(e)),{type:n,values:r,colorSpace:i}}const Ac=e=>{let t=kc(e);return t.values.slice(0,3).map((e,n)=>t.type.includes(`hsl`)&&n!==0?`${e}%`:e).join(` `)},jc=(e,t)=>{try{return Ac(e)}catch{return e}};function Mc(e){let{type:t,colorSpace:n}=e,{values:r}=e;return t.includes(`rgb`)?r=r.map((e,t)=>t<3?parseInt(e,10):e):t.includes(`hsl`)&&(r[1]=`${r[1]}%`,r[2]=`${r[2]}%`),r=t.includes(`color`)?`${n} ${r.join(` `)}`:`${r.join(`, `)}`,`${t}(${r})`}function Nc(e){e=kc(e);let{values:t}=e,n=t[0],r=t[1]/100,i=t[2]/100,a=r*Math.min(i,1-i),o=(e,t=(e+n/30)%12)=>i-a*Math.max(Math.min(t-3,9-t,1),-1),s=`rgb`,c=[Math.round(o(0)*255),Math.round(o(8)*255),Math.round(o(4)*255)];return e.type===`hsla`&&(s+=`a`,c.push(t[3])),Mc({type:s,values:c})}function Pc(e){e=kc(e);let t=e.type===`hsl`||e.type===`hsla`?kc(Nc(e)).values:e.values;return t=t.map(t=>(e.type!==`color`&&(t/=255),t<=.03928?t/12.92:((t+.055)/1.055)**2.4)),Number((.2126*t[0]+.7152*t[1]+.0722*t[2]).toFixed(3))}function Fc(e,t){let n=Pc(e),r=Pc(t);return(Math.max(n,r)+.05)/(Math.min(n,r)+.05)}function Ic(e,t){return e=kc(e),t=Dc(t),(e.type===`rgb`||e.type===`hsl`)&&(e.type+=`a`),e.type===`color`?e.values[3]=`/${t}`:e.values[3]=t,Mc(e)}function Lc(e,t,n){try{return Ic(e,t)}catch{return e}}function Rc(e,t){if(e=kc(e),t=Dc(t),e.type.includes(`hsl`))e.values[2]*=1-t;else if(e.type.includes(`rgb`)||e.type.includes(`color`))for(let n=0;n<3;n+=1)e.values[n]*=1-t;return Mc(e)}function U(e,t,n){try{return Rc(e,t)}catch{return e}}function zc(e,t){if(e=kc(e),t=Dc(t),e.type.includes(`hsl`))e.values[2]+=(100-e.values[2])*t;else if(e.type.includes(`rgb`))for(let n=0;n<3;n+=1)e.values[n]+=(255-e.values[n])*t;else if(e.type.includes(`color`))for(let n=0;n<3;n+=1)e.values[n]+=(1-e.values[n])*t;return Mc(e)}function Bc(e,t,n){try{return zc(e,t)}catch{return e}}function Vc(e,t=.15){return Pc(e)>.5?Rc(e,t):zc(e,t)}function Hc(e,t,n){try{return Vc(e,t)}catch{return e}}var Uc=C.createContext(null);function Wc(){return C.useContext(Uc)}var Gc=typeof Symbol==`function`&&Symbol.for?Symbol.for(`mui.nested`):`__THEME_NESTED__`;function Kc(e,t){return typeof t==`function`?t(e):{...e,...t}}function qc(e){let{children:t,theme:n}=e,r=Wc(),i=C.useMemo(()=>{let e=r===null?{...n}:Kc(r,n);return e!=null&&(e[Gc]=r!==null),e},[n,r]);return(0,z.jsx)(Uc.Provider,{value:i,children:t})}var Jc=qc,Yc=C.createContext();function Xc({value:e,...t}){return(0,z.jsx)(Yc.Provider,{value:e??!0,...t})}const Zc=()=>C.useContext(Yc)??!1;var Qc=Xc,$c=C.createContext(void 0);function el({value:e,children:t}){return(0,z.jsx)($c.Provider,{value:e,children:t})}function tl(e){let{theme:t,name:n,props:r}=e;if(!t||!t.components||!t.components[n])return r;let i=t.components[n];return i.defaultProps?_c(i.defaultProps,r,t.components.mergeClassNameAndStyle):!i.styleOverrides&&!i.variants?_c(i,r,t.components.mergeClassNameAndStyle):r}function nl({props:e,name:t}){return tl({props:e,name:t,theme:{components:C.useContext($c)}})}var rl=el,il=0;function al(e){let[t,n]=C.useState(e),r=e||t;return C.useEffect(()=>{t??(il+=1,n(`mui-${il}`))},[t]),r}var ol={...C}.useId;function sl(e){if(ol!==void 0){let t=ol();return e??t}return al(e)}function cl(e){let t=Vs(),n=sl()||``,{modularCssLayers:r}=e,i=`mui.global, mui.components, mui.theme, mui.custom, mui.sx`;return i=!r||t!==null?``:typeof r==`string`?r.replace(/mui(?!\.)/g,i):`@layer ${i};`,bc(()=>{let e=document.querySelector(`head`);if(!e)return;let t=e.firstChild;if(i){if(t&&t.hasAttribute?.(`data-mui-layer-order`)&&t.getAttribute(`data-mui-layer-order`)===n)return;let r=document.createElement(`style`);r.setAttribute(`data-mui-layer-order`,n),r.textContent=i,e.prepend(r)}else e.querySelector(`style[data-mui-layer-order="${n}"]`)?.remove()},[i,n]),i?(0,z.jsx)(qs,{styles:i}):null}var ll={};function ul(e,t,n,r=!1){return C.useMemo(()=>{let i=e&&t[e]||t;if(typeof n==`function`){let a=n(i),o=e?{...t,[e]:a}:a;return r?()=>o:o}return e?{...t,[e]:n}:{...t,...n}},[e,t,n,r])}function dl(e){let{children:t,theme:n,themeId:r}=e,i=Vs(ll),a=Wc()||ll,o=ul(r,i,n),s=ul(r,a,n,!0),c=(r?o[r]:o).direction===`rtl`,l=cl(o);return(0,z.jsx)(Jc,{theme:s,children: Line truncated
${s}.classList.add('${e}'.replace('%s', colorScheme));`}let d=u.match(/\[([^[\]]+)\]/);if(d){let[e,t]=d[1].split(`=`);t||(l+=`${s}.removeAttribute('${e}'.replace('%s', light));
${s}.removeAttribute('${e}'.replace('%s', dark));`),l+=`
${s}.setAttribute('${e}'.replace('%s', colorScheme), ${t?`${t}.replace('%s', colorScheme)`:`""`});`}else l+=`${s}.setAttribute('${u}', colorScheme);`;return(0,z.jsx)(`script`,{suppressHydrationWarning:!0,nonce:typeof window>`u`?c:``,dangerouslySetInnerHTML:{__html:`(function() {
try {
let colorScheme = '';
const mode = localStorage.getItem('${i}') || '${t}';
const dark = localStorage.getItem('${a}-dark') || '${r}';
const light = localStorage.getItem('${a}-light') || '${n}';
if (mode === 'system') {
// handle system mode
const mql = window.matchMedia('(prefers-color-scheme: dark)');
if (mql.matches) {
colorScheme = dark
} else {
colorScheme = light
}
}
if (mode === 'light') {
colorScheme = light;
}
if (mode === 'dark') {
colorScheme = dark;
}
if (colorScheme) {
${l}
}
} catch(e){}})();`}},`mui-color-scheme-init`)}function vl(){}var yl=({key:e,storageWindow:t})=>(!t&&typeof window<`u`&&(t=window),{get(n){if(typeof window>`u`)return;if(!t)return n;let r;try{r=t.localStorage.getItem(e)}catch{}return r||n},set:n=>{if(t)try{t.localStorage.setItem(e,n)}catch{}},subscribe:n=>{if(!t)return vl;let r=t=>{let r=t.newValue;t.key===e&&n(r)};return t.addEventListener(`storage`,r),()=>{t.removeEventListener(`storage`,r)}}});function bl(){}function xl(e){if(typeof window<`u`&&typeof window.matchMedia==`function`&&e===`system`)return window.matchMedia(`(prefers-color-scheme: dark)`).matches?`dark`:`light`}function Sl(e,t){if(e.mode===`light`||e.mode===`system`&&e.systemMode===`light`)return t(`light`);if(e.mode===`dark`||e.mode===`system`&&e.systemMode===`dark`)return t(`dark`)}function Cl(e){return Sl(e,t=>{if(t===`light`)return e.lightColorScheme;if(t===`dark`)return e.darkColorScheme})}function wl(e){let{defaultMode:t=`light`,defaultLightColorScheme:n,defaultDarkColorScheme:r,supportedColorSchemes:i=[],modeStorageKey:a=hl,colorSchemeStorageKey:o=gl,storageWindow:s=typeof window>`u`?void 0:window,storageManager:c=yl,noSsr:l=!1}=e,u=i.join(`,`),d=i.length>1,f=C.useMemo(()=>c?.({key:a,storageWindow:s}),[c,a,s]),p=C.useMemo(()=>c?.({key:`${o}-light`,storageWindow:s}),[c,o,s]),m=C.useMemo(()=>c?.({key:`${o}-dark`,storageWindow:s}),[c,o,s]),[h,g]=C.useState(()=>{let e=f?.get(t)||t,i=p?.get(n)||n,a=m?.get(r)||r;return{mode:e,systemMode:xl(e),lightColorScheme:i,darkColorScheme:a}}),[_,v]=C.useState(l||!d);C.useEffect(()=>{v(!0)},[]);let y=Cl(h),b=C.useCallback(e=>{g(n=>{if(e===n.mode)return n;let r=e??t;return f?.set(r),{...n,mode:r,systemMode:xl(r)}})},[f,t]),x=C.useCallback(e=>{e?typeof e==`string`?e&&!u.includes(e)?console.error(`\`${e}\` does not exist in \`theme.colorSchemes\`.`):g(t=>{let n={...t};return Sl(t,t=>{t===`light`&&(p?.set(e),n.lightColorScheme=e),t===`dark`&&(m?.set(e),n.darkColorScheme=e)}),n}):g(t=>{let i={...t},a=e.light===null?n:e.light,o=e.dark===null?r:e.dark;return a&&(u.includes(a)?(i.lightColorScheme=a,p?.set(a)):console.error(`\`${a}\` does not exist in \`theme.colorSchemes\`.`)),o&&(u.includes(o)?(i.darkColorScheme=o,m?.set(o)):console.error(`\`${o}\` does not exist in \`theme.colorSchemes\`.`)),i}):g(e=>(p?.set(n),m?.set(r),{...e,lightColorScheme:n,darkColorScheme:r}))},[u,p,m,n,r]),S=C.useCallback(e=>{h.mode===`system`&&g(t=>{let n=e?.matches?`dark`:`light`;return t.systemMode===n?t:{...t,systemMode:n}})},[h.mode]),w=C.useRef(S);return w.current=S,C.useEffect(()=>{if(typeof window.matchMedia!=`function`||!d)return;let e=(...e)=>w.current(...e),t=window.matchMedia(`(prefers-color-scheme: dark)`);return t.addListener(e),e(t),()=>{t.removeListener(e)}},[d]),C.useEffect(()=>{if(d){let e=f?.subscribe(e=>{(!e||[`light`,`dark`,`system`].includes(e))&&b(e||t)})||bl,n=p?.subscribe(e=>{(!e||u.match(e))&&x({light:e})})||bl,r=m?.subscribe(e=>{(!e||u.match(e))&&x({dark:e})})||bl;return()=>{e(),n(),r()}}},[x,b,u,t,s,d,f,p,m]),{...h,mode:_?h.mode:void 0,systemMode:_?h.systemMode:void 0,colorScheme:_?y:void 0,setMode:b,setColorScheme:x}}function Tl(e){let{themeId:t,theme:n={},modeStorageKey:r=hl,colorSchemeStorageKey:i=gl,disableTransitionOnChange:a=!1,defaultColorScheme:o,resolveTheme:s}=e,c={allColorSchemes:[],colorScheme:void 0,darkColorScheme:void 0,lightColorScheme:void 0,mode:void 0,setColorScheme:()=>{},setMode:()=>{},systemMode:void 0},l=C.createContext(void 0),u=()=>C.useContext(l)||c,d={},f={};function p(e){let{children:c,theme:u,modeStorageKey:p=r,colorSchemeStorageKey:m=i,disableTransitionOnChange:h=a,storageManager:g,storageWindow:_=typeof window>`u`?void 0:window,documentNode:v=typeof document>`u`?void 0:document,colorSchemeNode:y=typeof document>`u`?void 0:document.documentElement,disableNestedContext:b=!1,disableStyleSheetGeneration:x=!1,defaultMode:S=`system`,forceThemeRerender:w=!1,noSsr:T}=e,E=C.useRef(!1),ee=Wc(),D=C.useContext(l),te=!!D&&!b,ne=C.useMemo(()=>u||(typeof n==`function`?n():n),[u]),re=ne[t],O=re||ne,{colorSchemes:k=d,components:A=f,cssVarPrefix:j}=O,M=Object.keys(k).filter(e=>!!k[e]).join(`,`),N=C.useMemo(()=>M.split(`,`),[M]),ie=typeof o==`string`?o:o.light,ae=typeof o==`string`?o:o.dark,{mode:oe,setMode:se,systemMode:ce,lightColorScheme:P,darkColorScheme:le,colorScheme:ue,setColorScheme:de}=wl({supportedColorSchemes:N,defaultLightColorScheme:ie,defaultDarkColorScheme:ae,modeStorageKey:p,colorSchemeStorageKey:m,defaultMode:k[ie]&&k[ae]?S:k[O.defaultColorScheme]?.palette?.mode||O.palette?.mode,storageManager:g,storageWindow:_,noSsr:T}),fe=oe,pe=ue;te&&(fe=D.mode,pe=D.colorScheme);let me=pe||O.defaultColorScheme;O.vars&&!w&&(me=O.defaultColorScheme);let he=C.useMemo(()=>{let e=O.generateThemeVars?.()||O.vars,t={...O,components:A,colorSchemes:k,cssVarPrefix:j,vars:e};if(typeof t.generateSpacing==`function`&&(t.spacing=t.generateSpacing()),me){let e=k[me];e&&typeof e==`object`&&Object.keys(e).forEach(n=>{e[n]&&typeof e[n]==`object`?t[n]={...t[n],.Line truncated
const theme = ${JSON.stringify(t,null,2)};
theme.breakpoints = createBreakpoints(theme.breakpoints || {});
theme.transitions = createTransitions(theme.transitions || {});
export default theme;`}function Zu(e){return typeof e==`number`?`${(e*100).toFixed(0)}%`:`calc((${e}) * 100%)`}var Qu=e=>{if(!Number.isNaN(+e))return+e;let t=e.match(/\d*\.?\d+/g);if(!t)return 0;let n=0;for(let e=0;e<t.length;e+=1)n+=+t[e];return n};function $u(e){Object.assign(e,{alpha(t,n){let r=this||e;return r.colorSpace?`oklch(from ${t} l c h / ${typeof n==`string`?`calc(${n})`:n})`:r.vars?`rgba(${t.replace(/var\(--([^,\s)]+)(?:,[^)]+)?\)+/g,`var(--$1Channel)`)} / ${typeof n==`string`?`calc(${n})`:n})`:Ic(t,Qu(n))},lighten(t,n){let r=this||e;return r.colorSpace?`color-mix(in ${r.colorSpace}, ${t}, #fff ${Zu(n)})`:zc(t,n)},darken(t,n){let r=this||e;return r.colorSpace?`color-mix(in ${r.colorSpace}, ${t}, #000 ${Zu(n)})`:Rc(t,n)}})}function ed(e={},...t){let{breakpoints:n,mixins:r={},spacing:i,palette:a={},transitions:o={},typography:s={},shape:c,colorSpace:l,...u}=e;if(e.vars&&e.generateThemeVars===void 0)throw Error(Wr(20));let d=ju({...a,colorSpace:l}),f=Rs(e),p=V(f,{mixins:Nu(f.breakpoints,r),palette:d,shadows:Hu.slice(),typography:Lu(d,s),transitions:qu(o),zIndex:{...Ju}});return p=V(p,u),p=t.reduce((e,t)=>V(e,t),p),p.unstable_sxConfig={...As,...u?.unstable_sxConfig},p.unstable_sx=function(e){return Fs({sx:e,theme:this})},p.toRuntimeSource=Xu,$u(p),p}var td=ed;function nd(e){let t;return t=e<1?5.11916*e**2:4.5*Math.log(e+1)+2,Math.round(t*10)/1e3}var rd=[...Array(25)].map((e,t)=>{if(t===0)return`none`;let n=nd(t);return`linear-gradient(rgba(255 255 255 / ${n}), rgba(255 255 255 / ${n}))`});function id(e){return{inputPlaceholder:e===`dark`?.5:.42,inputUnderline:e===`dark`?.7:.42,switchTrackDisabled:e===`dark`?.2:.12,switchTrack:e===`dark`?.3:.38}}function ad(e){return e===`dark`?rd:[]}function od(e){let{palette:t={mode:`light`},opacity:n,overlays:r,colorSpace:i,...a}=e,o=ju({...t,colorSpace:i});return{palette:o,opacity:{...id(o.mode),...n},overlays:r||ad(o.mode),...a}}function sd(e){return!!e[0].match(/(cssVarPrefix|colorSchemeSelector|modularCssLayers|rootSelector|typography|mixins|breakpoints|direction|transitions)/)||!!e[0].match(/sxConfig$/)||e[0]===`palette`&&!!e[1]?.match(/(mode|contrastThreshold|tonalOffset)/)}var cd=e=>[...[...Array(25)].map((t,n)=>`--${e?`${e}-`:``}overlays-${n}`),`--${e?`${e}-`:``}palette-AppBar-darkBg`,`--${e?`${e}-`:``}palette-AppBar-darkColor`],ld=e=>(t,n)=>{let r=e.rootSelector||`:root`,i=e.colorSchemeSelector,a=i;if(i===`class`&&(a=`.%s`),i===`data`&&(a=`[data-%s]`),i?.startsWith(`data-`)&&!i.includes(`%s`)&&(a=`[${i}="%s"]`),e.defaultColorScheme===t){if(t===`dark`){let i={};return cd(e.cssVarPrefix).forEach(e=>{i[e]=n[e],delete n[e]}),a===`media`?{[r]:n,"@media (prefers-color-scheme: dark)":{[r]:i}}:a?{[a.replace(`%s`,t)]:i,[`${r}, ${a.replace(`%s`,t)}`]:n}:{[r]:{...n,...i}}}if(a&&a!==`media`)return`${r}, ${a.replace(`%s`,String(t))}`}else if(t){if(a===`media`)return{[`@media (prefers-color-scheme: ${String(t)})`]:{[r]:n}};if(a)return a.replace(`%s`,String(t))}return r};function ud(e,t){t.forEach(t=>{e[t]||(e[t]={})})}function Y(e,t,n){!e[t]&&n&&(e[t]=n)}function dd(e){return typeof e!=`string`||!e.startsWith(`hsl`)?e:Nc(e)}function fd(e,t){`${t}Channel`in e||(e[`${t}Channel`]=jc(dd(e[t]),`MUI: Can't create \`palette.${t}Channel\` because \`palette.${t}\` is not one of these formats: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color().
To suppress this warning, you need to explicitly provide the \`palette.${t}Channel\` as a string (in rgb format, for example "12 12 12") or undefined if you want to remove the channel token.`))}function pd(e){return typeof e==`number`?`${e}px`:typeof e==`string`||typeof e==`function`||Array.isArray(e)?e:`8px`}var md=e=>{try{return e()}catch{}};const hd=(e=`mui`)=>El(e);function gd(e,t,n,r,i){if(!n)return;n=n===!0?{}:n;let a=i===`dark`?`dark`:`light`;if(!r){t[i]=od({...n,palette:{mode:a,...n?.palette},colorSpace:e});return}let{palette:o,...s}=td({...r,palette:{mode:a,...n?.palette},colorSpace:e});return t[i]={...n,palette:o,opacity:{...id(a),...n?.opacity},overlays:n?.overlays||ad(a)},s}function _d(e={},...t){let{colorSchemes:n={light:!0},defaultColorScheme:r,disableCssColorScheme:i=!1,cssVarPrefix:a=`mui`,nativeColor:o=!1,shouldSkipGeneratingVar:s=sd,colorSchemeSelector:c=n.light&&n.dark?`media`:void 0,rootSelector:l=`:root`,...u}=e,d=Object.keys(n)[0],f=r||(n.light&&d!==`light`?`light`:d),p=hd(a),{[f]:m,light:h,dark:g,..._}=n,v={..._},y=m;if((f===`dark`&&!(`dark`in n)||f===`light`&&!(`light`in n))&&(y=!0),!y)throw Error(Wr(21,f));let b;o&&(b=`oklch`);let x=gd(b,v,y,u,f);h&&!v.light&&gd(b,v,h,void 0,`light`),g&&!v.dark&&gd(b,v,g,void 0,`dark`);let S={defaultColorScheme:f,...x,cssVarPrefix:a,colorSchemeSelector:c,rootSelector:l,getCssVar:p,colorSchemes:v,font:{...Mu(x.typography),...x.font},spacing:pd(u.spacing)};Object.keys(S.colorSchemes).forEach(e=>{let t=S.colorSchemes[e].palette,n=e=>{let n=e.split(`-`),r=n[1],i=n[2];return p(e,t[r][i])};t.mode===`light`&&(Y(t.common,`background`,`#fff`),Y(t.common,`onBackground`,`#000`)),t.mode===`dark`&&(Y(t.common,`background`,`#000`),Y(t.common,`onBackground`,`#fff`));function r(e,t,n){if(b){let r;return e===Lc&&(r=`transparent ${((1-n)*100).toFixed(0)}%`),e===U&&(r=`#000 ${(n*100).toFixed(0)}%`),e===Bc&&(r=`#fff ${(n*100).toFixed(0)}%`),`color-mix(in ${b}, ${t}, ${r})`}return e(t,n)}if(ud(t,[`Alert`,`AppBar`,`Avatar`,`Button`,`Chip`,`FilledInput`,`LinearProgress`,`Skeleton`,`Slider`,`SnackbarContent`,`SpeedDialAction`,`StepConnector`,`StepContent`,`Switch`,`TableCell`,`Tooltip`]),t.mode===`light`){Y(t.Alert,`errorColor`,r(U,t.error.light,.6)),Y(t.Alert,`infoColor`,r(U,t.info.light,.6)),Y(t.Alert,`successColor`,r(U,t.success.light,.6)),Y(t.Alert,`warningColor`,r(U,t.warning.light,.6)),Y(t.Alert,`errorFilledBg`,n(`palette-error-main`)),Y(t.Alert,`infoFilledBg`,n(`palette-info-main`)),Y(t.Alert,`successFilledBg`,n(`palette-success-main`)),Y(t.Alert,`warningFilledBg`,n(`palette-warning-main`)),Y(t.Alert,`errorFilledColor`,md(()=>t.getContrastText(t.error.main))),Y(t.Alert,`infoFilledColor`,md(()=>t.getContrastText(t.info.main))),Y(t.Alert,`successFilledColor`,md(()=>t.getContrastText(t.success.main))),Y(t.Alert,`warningFilledColor`,md(()=>t.getContrastText(t.warning.main))),Y(t.Alert,`errorStandardBg`,r(Bc,t.error.light,.9)),Y(t.Alert,`infoStandardBg`,r(Bc,t.info.light,.9)),Y(t.Alert,`successStandardBg`,r(Bc,t.success.light,.9)),Y(t.Alert,`warningStandardBg`,r(Bc,t.warning.light,.9)),Y(t.Alert,`errorIconColor`,n(`palette-error-main`)),Y(t.Alert,`infoIconColor`,n(`palette-info-main`)),Y(t.Alert,`successIconColor`,n(`palette-success-main`)),Y(t.Alert,`warningIconColor`,n(`palette-warning-main`)),Y(t.AppBar,`defaultBg`,n(`palette-grey-100`)),Y(t.Avatar,`defaultBg`,n(`palette-grey-400`)),Y(t.Button,`inheritContainedBg`,n(`palette-grey-300`)),Y(t.Button,`inheritContainedHoverBg`,n(`palette-grey-A100`)),Y(t.Chip,`defaultBorder`,n(`palette-grey-400`)),Y(t.Chip,`defaultAvatarColor`,n(`palette-grey-700`)),Y(t.Chip,`defaultIconColor`,n(`palette-grey-700`)),Y(t.FilledInput,`bg`,`rgba(0, 0, 0, 0.06)`),Y(t.FilledInput,`hoverBg`,`rgba(0, 0, 0, 0.09)`),Y(t.FilledInput,`disabledBg`,`rgba(0, 0, 0, 0.12)`),Y(t.LinearProgress,`primaryBg`,r(Bc,t.primary.main,.62)),Y(t.LinearProgress,`secondaryBg`,r(Bc,t.secondary.main,.62)),Y(t.LinearProgress,`errorBg`,r(Bc,t.error.main,.62)),Y(t.LinearProgress,`infoBg`,r(Bc,t.info.main,.62)),Y(t.LinearProgress,`successBg`,r(Bc,t.success.main,.62)),Y(t.LinearProgress,`warningBg`,r(Bc,t.warning.main,.62)),Y(t.Skeleton,`bg`,b?r(Lc,t.text.primary,.11):`rgba(${n(`palette-text-primaryChannel`)} / 0.11)`),Y(t.Slider,`primaryTrack`,r(Bc,t.primary.main,.62)),Y(t.Slider,`secondaryTrack`,r(Bc,t.secondary.main,.62)),Y(t.Slider,`errorTrack`,r(Bc,t.error.main,.62)),Y(t.Slider,`infoTrack`,r(Bc,t.info.main,.62)),Y(t.Slider,`successTrack`,r(Bc,t.success.main,.62)),Y(t.Slider,`warningTrack`,r(Bc,t.warning.main,.62));let e=b?r(U,t.background.default,.6825):Hc(t.background.default,.8);Y(t.SnackbarContent,`bg`,e),Y(t.SnackbarContent,`color`,md(()=>b?xu.text.primary:t.getContrastText(e))),Y(t.SpeedDialAction,`fabHoverBg`,Hc(t.background.paper,.15)),Y(t.StepConnector,`border`,n(`palette-grey-400`)),Y(t.StepContent,`border`,n(`palette-grey-400`)),Y(t.Switch,`defaultColor`,n(`palette-common-white`)),Y(t.Switch,`defaultDisabledColor`,n(`palette-grey-100`)),Y(t.Switch,`primaryDis Line truncated
0% {
transform: scale(0);
opacity: 0.1;
}
100% {
transform: scale(1);
opacity: 0.3;
}
`,Ap=Ha`
0% {
opacity: 1;
}
100% {
opacity: 0;
}
`,jp=Ha`
0% {
transform: scale(1);
}
50% {
transform: scale(0.92);
}
100% {
transform: scale(1);
}
`;const Mp=Z(`span`,{name:`MuiTouchRipple`,slot:`Root`})({overflow:`hidden`,pointerEvents:`none`,position:`absolute`,zIndex:0,top:0,right:0,bottom:0,left:0,borderRadius:`inherit`}),Np=Z(Ep,{name:`MuiTouchRipple`,slot:`Ripple`})`
opacity: 0;
position: absolute;
&.${Dp.rippleVisible} {
opacity: 0.3;
transform: scale(1);
animation-name: ${kp};
animation-duration: ${Op}ms;
animation-timing-function: ${({theme:e})=>e.transitions.easing.easeInOut};
}
&.${Dp.ripplePulsate} {
animation-duration: ${({theme:e})=>e.transitions.duration.shorter}ms;
}
& .${Dp.child} {
opacity: 1;
display: block;
width: 100%;
height: 100%;
border-radius: 50%;
background-color: currentColor;
}
& .${Dp.childLeaving} {
opacity: 0;
animation-name: ${Ap};
animation-duration: ${Op}ms;
animation-timing-function: ${({theme:e})=>e.transitions.easing.easeInOut};
}
& .${Dp.childPulsate} {
position: absolute;
/* @noflip */
left: 0px;
top: 0;
animation-name: ${jp};
animation-duration: 2500ms;
animation-timing-function: ${({theme:e})=>e.transitions.easing.easeInOut};
animation-iteration-count: infinite;
animation-delay: 200ms;
}
`;var Pp=C.forwardRef(function(e,t){let{center:n=!1,classes:r={},className:i,...a}=Fd({props:e,name:`MuiTouchRipple`}),[o,s]=C.useState([]),c=C.useRef(0),l=C.useRef(null);C.useEffect(()=>{l.current&&=(l.current(),null)},[o]);let u=C.useRef(!1),d=tp(),f=C.useRef(null),p=C.useRef(null),m=C.useCallback(e=>{let{pulsate:t,rippleX:n,rippleY:i,rippleSize:a,cb:o}=e;s(e=>[...e,(0,z.jsx)(Np,{classes:{ripple:H(r.ripple,Dp.ripple),rippleVisible:H(r.rippleVisible,Dp.rippleVisible),ripplePulsate:H(r.ripplePulsate,Dp.ripplePulsate),child:H(r.child,Dp.child),childLeaving:H(r.childLeaving,Dp.childLeaving),childPulsate:H(r.childPulsate,Dp.childPulsate)},timeout:Op,pulsate:t,rippleX:n,rippleY:i,rippleSize:a},c.current)]),c.current+=1,l.current=o},[r]),h=C.useCallback((e={},t={},r=()=>{})=>{let{pulsate:i=!1,center:a=n||t.pulsate,fakeElement:o=!1}=t;if(e?.type===`mousedown`&&u.current){u.current=!1;return}e?.type===`touchstart`&&(u.current=!0);let s=o?null:p.current,c=s?s.getBoundingClientRect():{width:0,height:0,left:0,top:0},l,h,g;if(a||e===void 0||e.clientX===0&&e.clientY===0||!e.clientX&&!e.touches)l=Math.round(c.width/2),h=Math.round(c.height/2);else{let{clientX:t,clientY:n}=e.touches&&e.touches.length>0?e.touches[0]:e;l=Math.round(t-c.left),h=Math.round(n-c.top)}if(a)g=Math.sqrt((2*c.width**2+c.height**2)/3),g%2==0&&(g+=1);else{let e=Math.max(Math.abs((s?s.clientWidth:0)-l),l)*2+2,t=Math.max(Math.abs((s?s.clientHeight:0)-h),h)*2+2;g=Math.sqrt(e**2+t**2)}e?.touches?f.current===null&&(f.current=()=>{m({pulsate:i,rippleX:l,rippleY:h,rippleSize:g,cb:r})},d.start(80,()=>{f.current&&=(f.current(),null)})):m({pulsate:i,rippleX:l,rippleY:h,rippleSize:g,cb:r})},[n,m,d]),g=C.useCallback(()=>{h({},{pulsate:!0})},[h]),_=C.useCallback((e,t)=>{if(d.clear(),e?.type===`touchend`&&f.current){f.current(),f.current=null,d.start(0,()=>{_(e,t)});return}f.current=null,s(e=>e.length>0?e.slice(1):e),l.current=t},[d]);return C.useImperativeHandle(t,()=>({pulsate:g,start:h,stop:_}),[g,h,_]),(0,z.jsx)(Mp,{className:H(Dp.root,r.root,i),ref:p,...a,children:(0,z.jsx)(Yf,{component:null,exit:!0,children:o})})});function Fp(e){return nc(`MuiButtonBase`,e)}var Ip=rc(`MuiButtonBase`,[`root`,`disabled`,`focusVisible`]),Lp=e=>{let{disabled:t,focusVisible:n,focusVisibleClassName:r,classes:i}=e,a=Pl({root:[`root`,t&&`disabled`,n&&`focusVisible`]},Fp,i);return n&&r&&(a.root+=` ${r}`),a};const Rp=Z(`button`,{name:`MuiButtonBase`,slot:`Root`})({display:`inline-flex`,alignItems:`center`,justifyContent:`center`,position:`relative`,boxSizing:`border-box`,WebkitTapHighlightColor:`transparent`,backgroundColor:`transparent`,outline:0,border:0,margin:0,borderRadius:0,padding:0,cursor:`pointer`,userSelect:`none`,verticalAlign:`middle`,MozAppearance:`none`,WebkitAppearance:`none`,textDecoration:`none`,color:`inherit`,"&::-moz-focus-inner":{borderStyle:`none`},[`&.${Ip.disabled}`]:{pointerEvents:`none`,cursor:`default`},"@media print":{colorAdjust:`exact`}});var zp=C.forwardRef(function(e,t){let n=Fd({props:e,name:`MuiButtonBase`}),{action:r,centerRipple:i=!1,children:a,className:o,component:s=`button`,disabled:c=!1,disableRipple:l=!1,disableTouchRipple:u=!1,focusRipple:d=!1,focusVisibleClassName:f,LinkComponent:p=`a`,onBlur:m,onClick:h,onContextMenu:g,onDragLeave:_,onFocus:v,onFocusVisible:y,onKeyDown:b,onKeyUp:x,onMouseDown:S,onMouseLeave:w,onMouseUp:T,onTouchEnd:E,onTouchMove:ee,onTouchStart:D,tabIndex:te=0,TouchRippleProps:ne,touchRippleRef:re,type:O,...k}=n,A=C.useRef(null),j=Cp(),M=Sf(j.ref,re),[N,ie]=C.useState(!1);c&&N&&ie(!1),C.useImperativeHandle(r,()=>({focusVisible:()=>{ie(!0),A.current.focus()}}),[]);let ae=j.shouldMount&&!l&&!c;C.useEffect(()=>{N&&d&&!l&&j.pulsate()},[l,d,N,j]);let oe=Bp(j,`start`,S,u),se=Bp(j,`stop`,g,u),ce=Bp(j,`stop`,_,u),P=Bp(j,`stop`,T,u),le=Bp(j,`stop`,e=>{N&&e.preventDefault(),w&&w(e)},u),ue=Bp(j,`start`,D,u),de=Bp(j,`stop`,E,u),fe=Bp(j,`stop`,ee,u),pe=Bp(j,`stop`,e=>{xp(e.target)||ie(!1),m&&m(e)},!1),me=bf(e=>{A.current||=e.currentTarget,xp(e.target)&&(ie(!0),y&&y(e)),v&&v(e)}),he=()=>{let e=A.current;return s&&s!==`button`&&!(e.tagName===`A`&&e.href)},ge=bf(e=>{d&&!e.repeat&&N&&e.key===` `&&j.stop(e,()=>{j.start(e)}),e.target===e.currentTarget&&he()&&e.key===` `&&e.preventDefault(),b&&b(e),e.target===e.currentTarget&&he()&&e.key===`Enter`&&!c&&(e.preventDefault(),h&&h(e))}),_e=bf(e=>{d&&e.key===` `&&N&&!e.defaultPrevented&&j.stop(e,()=>{j.pulsate(e)}),x&&x(e),h&&e.target===e.currentTarget&&he()&&e.key===` `&&!e.defaultPrevented&&h(e)}),ve=s;ve===`button`&&(k.href||k.to)&&(ve=p);let ye={};ve===`button`?(ye.type=O===void 0?`button`:O,ye.disabled=c):(!k.href&&!k.to&&(ye.role=`button`),c&&(ye[`aria-disabled`]=c));let be=Sf(t,A),xe={...n,centerRipple:i,component:s,disabled:c,disableRipple:l,disableTouchRipple:u,focusRipple:d,tabIndex:te,focusVisible:N},Se=Lp(xe);return(0,z.jsxs)(Rp,{as:ve,className:H(Se.root,o),ownerState:xe,onBlur:pe,onClick:h,onContextMenu:se,onFocus:me,onKeyDown:ge,onKeyUp:_e,onMouseDown:oe,onMouseLeave:le,onMouseUp: Line truncated
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
`,Xp=Ha`
0% {
stroke-dasharray: 1px, 200px;
stroke-dashoffset: 0;
}
50% {
stroke-dasharray: 100px, 200px;
stroke-dashoffset: -15px;
}
100% {
stroke-dasharray: 1px, 200px;
stroke-dashoffset: -126px;
}
`,Zp=typeof Yp==`string`?null:Va`
animation: ${Yp} 1.4s linear infinite;
`,Qp=typeof Xp==`string`?null:Va`
animation: ${Xp} 1.4s ease-in-out infinite;
`,$p=e=>{let{classes:t,variant:n,color:r,disableShrink:i}=e;return Pl({root:[`root`,n,`color${Q(r)}`],svg:[`svg`],track:[`track`],circle:[`circle`,`circle${Q(n)}`,i&&`circleDisableShrink`]},qp,t)},em=Z(`span`,{name:`MuiCircularProgress`,slot:`Root`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.root,t[n.variant],t[`color${Q(n.color)}`]]}})(tf(({theme:e})=>({display:`inline-block`,variants:[{props:{variant:`determinate`},style:{transition:e.transitions.create(`transform`)}},{props:{variant:`indeterminate`},style:Zp||{animation:`${Yp} 1.4s linear infinite`}},...Object.entries(e.palette).filter(Wp()).map(([t])=>({props:{color:t},style:{color:(e.vars||e).palette[t].main}}))]}))),tm=Z(`svg`,{name:`MuiCircularProgress`,slot:`Svg`})({display:`block`}),nm=Z(`circle`,{name:`MuiCircularProgress`,slot:`Circle`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.circle,t[`circle${Q(n.variant)}`],n.disableShrink&&t.circleDisableShrink]}})(tf(({theme:e})=>({stroke:`currentColor`,variants:[{props:{variant:`determinate`},style:{transition:e.transitions.create(`stroke-dashoffset`)}},{props:{variant:`indeterminate`},style:{strokeDasharray:`80px, 200px`,strokeDashoffset:0}},{props:({ownerState:e})=>e.variant===`indeterminate`&&!e.disableShrink,style:Qp||{animation:`${Xp} 1.4s ease-in-out infinite`}}]}))),rm=Z(`circle`,{name:`MuiCircularProgress`,slot:`Track`})(tf(({theme:e})=>({stroke:`currentColor`,opacity:(e.vars||e).palette.action.activatedOpacity}))),im=C.forwardRef(function(e,t){let n=Fd({props:e,name:`MuiCircularProgress`}),{className:r,color:i=`primary`,disableShrink:a=!1,enableTrackSlot:o=!1,size:s=40,style:c,thickness:l=3.6,value:u=0,variant:d=`indeterminate`,...f}=n,p={...n,color:i,disableShrink:a,size:s,thickness:l,value:u,variant:d,enableTrackSlot:o},m=$p(p),h={},g={},_={};if(d===`determinate`){let e=2*Math.PI*((Jp-l)/2);h.strokeDasharray=e.toFixed(3),_[`aria-valuenow`]=Math.round(u),h.strokeDashoffset=`${((100-u)/100*e).toFixed(3)}px`,g.transform=`rotate(-90deg)`}return(0,z.jsx)(em,{className:H(m.root,r),style:{width:s,height:s,...g,...c},ownerState:p,ref:t,role:`progressbar`,..._,...f,children:(0,z.jsxs)(tm,{className:m.svg,ownerState:p,viewBox:`${Jp/2} ${Jp/2} ${Jp} ${Jp}`,children:[o?(0,z.jsx)(rm,{className:m.track,ownerState:p,cx:Jp,cy:Jp,r:(Jp-l)/2,fill:`none`,strokeWidth:l,"aria-hidden":`true`}):null,(0,z.jsx)(nm,{className:m.circle,style:h,ownerState:p,cx:Jp,cy:Jp,r:(Jp-l)/2,fill:`none`,strokeWidth:l})]})})});function am(e){return nc(`MuiIconButton`,e)}var om=rc(`MuiIconButton`,[`root`,`disabled`,`colorInherit`,`colorPrimary`,`colorSecondary`,`colorError`,`colorInfo`,`colorSuccess`,`colorWarning`,`edgeStart`,`edgeEnd`,`sizeSmall`,`sizeMedium`,`sizeLarge`,`loading`,`loadingIndicator`,`loadingWrapper`]),sm=e=>{let{classes:t,disabled:n,color:r,edge:i,size:a,loading:o}=e;return Pl({root:[`root`,o&&`loading`,n&&`disabled`,r!==`default`&&`color${Q(r)}`,i&&`edge${Q(i)}`,`size${Q(a)}`],loadingIndicator:[`loadingIndicator`],loadingWrapper:[`loadingWrapper`]},am,t)},cm=Z(Vp,{name:`MuiIconButton`,slot:`Root`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.root,n.loading&&t.loading,n.color!==`default`&&t[`color${Q(n.color)}`],n.edge&&t[`edge${Q(n.edge)}`],t[`size${Q(n.size)}`]]}})(tf(({theme:e})=>({textAlign:`center`,flex:`0 0 auto`,fontSize:e.typography.pxToRem(24),padding:8,borderRadius:`50%`,color:(e.vars||e).palette.action.active,transition:e.transitions.create(`background-color`,{duration:e.transitions.duration.shortest}),variants:[{props:e=>!e.disableRipple,style:{"--IconButton-hoverBg":e.alpha((e.vars||e).palette.action.active,(e.vars||e).palette.action.hoverOpacity),"&:hover":{backgroundColor:`var(--IconButton-hoverBg)`,"@media (hover: none)":{backgroundColor:`transparent`}}}},{props:{edge:`start`},style:{marginLeft:-12}},{props:{edge:`start`,size:`small`},style:{marginLeft:-3}},{props:{edge:`end`},style:{marginRight:-12}},{props:{edge:`end`,size:`small`},style:{marginRight:-3}}]})),tf(({theme:e})=>({variants:[{props:{color:`inherit`},style:{color:`inherit`}},...Object.entries(e.palette).filter(Wp()).map(([t])=>({props:{color:t},style:{color:(e.vars||e).palette[t].main}})),...Object.entries(e.palette).filter(Wp()).map(([t])=>({props:{color:t},style:{"--IconButton-hoverBg":e.alpha((e.vars||e).palette[t].main,(e.vars||e).palette.action.hoverOpacity)}})),{props:{size:`small`},style:{padding:5,fontSize:e.typography.pxToRem(18)}},{props:{size:`large`},style:{padding:12,fontSize:e.typography.pxToRem(28)}}],[`&.${om.disabled}`]:{backgroundColor:`transparent`,color:(e.vars||e).palette.action.disabled},[`&.${om.loading}`]:{color:`transparent`}}))),lm=Z(`span`,{name:`MuiIconButton`,slot:`LoadingIndicator`})(({theme:e})=>({display:`none`,position:`absolute`,visibility:`visible`,top:`50%`,left:`50%`,transform:`translate(-50%, -50%)`,color:(e.vars||e).palette.action.disabled,variants:[{props:{loading:!0},style:{display:`flex`}}]})),um=C.forwardRef(function(e,t){let n=Fd({props:e,name:`MuiIconButtonLine truncated
@@ -1,2 +1,2 @@
import{$ as e,et as t}from"./index-7LYai_r-.js";var n=e(((e,n)=>{(function(t){typeof e==`object`&&n!==void 0?n.exports=t():typeof define==`function`&&define.amd?define([],t):(typeof window<`u`?window:typeof global<`u`?global:typeof self<`u`?self:this).JSZip=t()})(function(){return function e(n,r,i){function a(s,c){if(!r[s]){if(!n[s]){var l=typeof t==`function`&&t;if(!c&&l)return l(s,!0);if(o)return o(s,!0);var u=Error(`Cannot find module '`+s+`'`);throw u.code=`MODULE_NOT_FOUND`,u}var d=r[s]={exports:{}};n[s][0].call(d.exports,function(e){var t=n[s][1][e];return a(t||e)},d,d.exports,e,n,r,i)}return r[s].exports}for(var o=typeof t==`function`&&t,s=0;s<i.length;s++)a(i[s]);return a}({1:[function(e,t,n){var r=e(`./utils`),i=e(`./support`),a=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=`;n.encode=function(e){for(var t,n,i,o,s,c,l,u=[],d=0,f=e.length,p=f,m=r.getTypeOf(e)!==`string`;d<e.length;)p=f-d,i=m?(t=e[d++],n=d<f?e[d++]:0,d<f?e[d++]:0):(t=e.charCodeAt(d++),n=d<f?e.charCodeAt(d++):0,d<f?e.charCodeAt(d++):0),o=t>>2,s=(3&t)<<4|n>>4,c=1<p?(15&n)<<2|i>>6:64,l=2<p?63&i:64,u.push(a.charAt(o)+a.charAt(s)+a.charAt(c)+a.charAt(l));return u.join(``)},n.decode=function(e){var t,n,r,o,s,c,l=0,u=0,d=`data:`;if(e.substr(0,d.length)===d)throw Error(`Invalid base64 input, it looks like a data url.`);var f,p=3*(e=e.replace(/[^A-Za-z0-9+/=]/g,``)).length/4;if(e.charAt(e.length-1)===a.charAt(64)&&p--,e.charAt(e.length-2)===a.charAt(64)&&p--,p%1!=0)throw Error(`Invalid base64 input, bad content length.`);for(f=i.uint8array?new Uint8Array(0|p):Array(0|p);l<e.length;)t=a.indexOf(e.charAt(l++))<<2|(o=a.indexOf(e.charAt(l++)))>>4,n=(15&o)<<4|(s=a.indexOf(e.charAt(l++)))>>2,r=(3&s)<<6|(c=a.indexOf(e.charAt(l++))),f[u++]=t,s!==64&&(f[u++]=n),c!==64&&(f[u++]=r);return f}},{"./support":30,"./utils":32}],2:[function(e,t,n){var r=e(`./external`),i=e(`./stream/DataWorker`),a=e(`./stream/Crc32Probe`),o=e(`./stream/DataLengthProbe`);function s(e,t,n,r,i){this.compressedSize=e,this.uncompressedSize=t,this.crc32=n,this.compression=r,this.compressedContent=i}s.prototype={getContentWorker:function(){var e=new i(r.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new o(`data_length`)),t=this;return e.on(`end`,function(){if(this.streamInfo.data_length!==t.uncompressedSize)throw Error(`Bug : uncompressed data size mismatch`)}),e},getCompressedWorker:function(){return new i(r.Promise.resolve(this.compressedContent)).withStreamInfo(`compressedSize`,this.compressedSize).withStreamInfo(`uncompressedSize`,this.uncompressedSize).withStreamInfo(`crc32`,this.crc32).withStreamInfo(`compression`,this.compression)}},s.createWorkerFrom=function(e,t,n){return e.pipe(new a).pipe(new o(`uncompressedSize`)).pipe(t.compressWorker(n)).pipe(new o(`compressedSize`)).withStreamInfo(`compression`,t)},t.exports=s},{"./external":6,"./stream/Crc32Probe":25,"./stream/DataLengthProbe":26,"./stream/DataWorker":27}],3:[function(e,t,n){var r=e(`./stream/GenericWorker`);n.STORE={magic:`\0\0`,compressWorker:function(){return new r(`STORE compression`)},uncompressWorker:function(){return new r(`STORE decompression`)}},n.DEFLATE=e(`./flate`)},{"./flate":7,"./stream/GenericWorker":28}],4:[function(e,t,n){var r=e(`./utils`),i=function(){for(var e,t=[],n=0;n<256;n++){e=n;for(var r=0;r<8;r++)e=1&e?3988292384^e>>>1:e>>>1;t[n]=e}return t}();t.exports=function(e,t){return e!==void 0&&e.length?r.getTypeOf(e)===`string`?function(e,t,n,r){var a=i,o=r+n;e^=-1;for(var s=r;s<o;s++)e=e>>>8^a[255&(e^t.charCodeAt(s))];return-1^e}(0|t,e,e.length,0):function(e,t,n,r){var a=i,o=r+n;e^=-1;for(var s=r;s<o;s++)e=e>>>8^a[255&(e^t[s])];return-1^e}(0|t,e,e.length,0):0}},{"./utils":32}],5:[function(e,t,n){n.base64=!1,n.binary=!1,n.dir=!1,n.createFolders=!0,n.date=null,n.compression=null,n.compressionOptions=null,n.comment=null,n.unixPermissions=null,n.dosPermissions=null},{}],6:[function(e,t,n){var r=null;r=typeof Promise<`u`?Promise:e(`lie`),t.exports={Promise:r}},{lie:37}],7:[function(e,t,n){var r=typeof Uint8Array<`u`&&typeof Uint16Array<`u`&&typeof Uint32Array<`u`,i=e(`pako`),a=e(`./utils`),o=e(`./stream/GenericWorker`),s=r?`uint8array`:`array`;function c(e,t){o.call(this,`FlateWorker/`+e),this._pako=null,this._pakoAction=e,this._pakoOptions=t,this.meta={}}n.magic=`\b\0`,a.inherits(c,o),c.prototype.processChunk=function(e){this.meta=e.meta,this._pako===null&&this._createPako(),this._pako.push(a.transformTo(s,e.data),!1)},c.prototype.flush=function(){o.prototype.flush.call(this),this._pako===null&&this._createPako(),this._pako.push([],!0)},c.prototype.cleanUp=function(){o.prototype.cleanUp.call(this),this._pako=null},c.prototype._createPako=function(){this._pako=new i[this._pakoAction]({raw:!0,level:this._pakoOptions.level||-1});var e=this;this._pako.onData=function(t){e.push({data:t,meta:e.meta})}},n.compressWorker=function(e){return new c(`Deflate`,e)},n.uncompressWorker=function(){return new c(`Inflate`,{})}},{"./stream/GenericWorker":28,".Line truncated import{dt as e,pt as t}from"./index-CM0zIqrs.js";var n=e(((e,n)=>{(function(t){typeof e==`object`&&n!==void 0?n.exports=t():typeof define==`function`&&define.amd?define([],t):(typeof window<`u`?window:typeof global<`u`?global:typeof self<`u`?self:this).JSZip=t()})(function(){return function e(n,r,i){function a(s,c){if(!r[s]){if(!n[s]){var l=typeof t==`function`&&t;if(!c&&l)return l(s,!0);if(o)return o(s,!0);var u=Error(`Cannot find module '`+s+`'`);throw u.code=`MODULE_NOT_FOUND`,u}var d=r[s]={exports:{}};n[s][0].call(d.exports,function(e){var t=n[s][1][e];return a(t||e)},d,d.exports,e,n,r,i)}return r[s].exports}for(var o=typeof t==`function`&&t,s=0;s<i.length;s++)a(i[s]);return a}({1:[function(e,t,n){var r=e(`./utils`),i=e(`./support`),a=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=`;n.encode=function(e){for(var t,n,i,o,s,c,l,u=[],d=0,f=e.length,p=f,m=r.getTypeOf(e)!==`string`;d<e.length;)p=f-d,i=m?(t=e[d++],n=d<f?e[d++]:0,d<f?e[d++]:0):(t=e.charCodeAt(d++),n=d<f?e.charCodeAt(d++):0,d<f?e.charCodeAt(d++):0),o=t>>2,s=(3&t)<<4|n>>4,c=1<p?(15&n)<<2|i>>6:64,l=2<p?63&i:64,u.push(a.charAt(o)+a.charAt(s)+a.charAt(c)+a.charAt(l));return u.join(``)},n.decode=function(e){var t,n,r,o,s,c,l=0,u=0,d=`data:`;if(e.substr(0,d.length)===d)throw Error(`Invalid base64 input, it looks like a data url.`);var f,p=3*(e=e.replace(/[^A-Za-z0-9+/=]/g,``)).length/4;if(e.charAt(e.length-1)===a.charAt(64)&&p--,e.charAt(e.length-2)===a.charAt(64)&&p--,p%1!=0)throw Error(`Invalid base64 input, bad content length.`);for(f=i.uint8array?new Uint8Array(0|p):Array(0|p);l<e.length;)t=a.indexOf(e.charAt(l++))<<2|(o=a.indexOf(e.charAt(l++)))>>4,n=(15&o)<<4|(s=a.indexOf(e.charAt(l++)))>>2,r=(3&s)<<6|(c=a.indexOf(e.charAt(l++))),f[u++]=t,s!==64&&(f[u++]=n),c!==64&&(f[u++]=r);return f}},{"./support":30,"./utils":32}],2:[function(e,t,n){var r=e(`./external`),i=e(`./stream/DataWorker`),a=e(`./stream/Crc32Probe`),o=e(`./stream/DataLengthProbe`);function s(e,t,n,r,i){this.compressedSize=e,this.uncompressedSize=t,this.crc32=n,this.compression=r,this.compressedContent=i}s.prototype={getContentWorker:function(){var e=new i(r.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new o(`data_length`)),t=this;return e.on(`end`,function(){if(this.streamInfo.data_length!==t.uncompressedSize)throw Error(`Bug : uncompressed data size mismatch`)}),e},getCompressedWorker:function(){return new i(r.Promise.resolve(this.compressedContent)).withStreamInfo(`compressedSize`,this.compressedSize).withStreamInfo(`uncompressedSize`,this.uncompressedSize).withStreamInfo(`crc32`,this.crc32).withStreamInfo(`compression`,this.compression)}},s.createWorkerFrom=function(e,t,n){return e.pipe(new a).pipe(new o(`uncompressedSize`)).pipe(t.compressWorker(n)).pipe(new o(`compressedSize`)).withStreamInfo(`compression`,t)},t.exports=s},{"./external":6,"./stream/Crc32Probe":25,"./stream/DataLengthProbe":26,"./stream/DataWorker":27}],3:[function(e,t,n){var r=e(`./stream/GenericWorker`);n.STORE={magic:`\0\0`,compressWorker:function(){return new r(`STORE compression`)},uncompressWorker:function(){return new r(`STORE decompression`)}},n.DEFLATE=e(`./flate`)},{"./flate":7,"./stream/GenericWorker":28}],4:[function(e,t,n){var r=e(`./utils`),i=function(){for(var e,t=[],n=0;n<256;n++){e=n;for(var r=0;r<8;r++)e=1&e?3988292384^e>>>1:e>>>1;t[n]=e}return t}();t.exports=function(e,t){return e!==void 0&&e.length?r.getTypeOf(e)===`string`?function(e,t,n,r){var a=i,o=r+n;e^=-1;for(var s=r;s<o;s++)e=e>>>8^a[255&(e^t.charCodeAt(s))];return-1^e}(0|t,e,e.length,0):function(e,t,n,r){var a=i,o=r+n;e^=-1;for(var s=r;s<o;s++)e=e>>>8^a[255&(e^t[s])];return-1^e}(0|t,e,e.length,0):0}},{"./utils":32}],5:[function(e,t,n){n.base64=!1,n.binary=!1,n.dir=!1,n.createFolders=!0,n.date=null,n.compression=null,n.compressionOptions=null,n.comment=null,n.unixPermissions=null,n.dosPermissions=null},{}],6:[function(e,t,n){var r=null;r=typeof Promise<`u`?Promise:e(`lie`),t.exports={Promise:r}},{lie:37}],7:[function(e,t,n){var r=typeof Uint8Array<`u`&&typeof Uint16Array<`u`&&typeof Uint32Array<`u`,i=e(`pako`),a=e(`./utils`),o=e(`./stream/GenericWorker`),s=r?`uint8array`:`array`;function c(e,t){o.call(this,`FlateWorker/`+e),this._pako=null,this._pakoAction=e,this._pakoOptions=t,this.meta={}}n.magic=`\b\0`,a.inherits(c,o),c.prototype.processChunk=function(e){this.meta=e.meta,this._pako===null&&this._createPako(),this._pako.push(a.transformTo(s,e.data),!1)},c.prototype.flush=function(){o.prototype.flush.call(this),this._pako===null&&this._createPako(),this._pako.push([],!0)},c.prototype.cleanUp=function(){o.prototype.cleanUp.call(this),this._pako=null},c.prototype._createPako=function(){this._pako=new i[this._pakoAction]({raw:!0,level:this._pakoOptions.level||-1});var e=this;this._pako.onData=function(t){e.push({data:t,meta:e.meta})}},n.compressWorker=function(e){return new c(`Deflate`,e)},n.uncompressWorker=function(){return new c(`Inflate`,{})}},{"./stream/GenericWorker":28,"Line truncated
\0`,M+=r(k,2),M+=m.magic,M+=r(d,2),M+=r(f,2),M+=r(O.crc32,4),M+=r(O.compressedSize,4),M+=r(O.uncompressedSize,4),M+=r(g.length,2),M+=r(C.length,2),{fileRecord:l.LOCAL_FILE_HEADER+M+g+C,dirRecord:l.CENTRAL_FILE_HEADER+r(j,2)+M+r(y.length,2)+`\0\0\0\0`+r(A,4)+r(i,4)+g+C+y}}var a=e(`../utils`),o=e(`../stream/GenericWorker`),s=e(`../utf8`),c=e(`../crc32`),l=e(`../signature`);function u(e,t,n,r){o.call(this,`ZipFileWorker`),this.bytesWritten=0,this.zipComment=t,this.zipPlatform=n,this.encodeFileName=r,this.streamFiles=e,this.accumulate=!1,this.contentBuffer=[],this.dirRecords=[],this.currentSourceOffset=0,this.entriesCount=0,this.currentFile=null,this._sources=[]}a.inherits(u,o),u.prototype.push=function(e){var t=e.meta.percent||0,n=this.entriesCount,r=this._sources.length;this.accumulate?this.contentBuffer.push(e):(this.bytesWritten+=e.data.length,o.prototype.push.call(this,{data:e.data,meta:{currentFile:this.currentFile,percent:n?(t+100*(n-r-1))/n:100}}))},u.prototype.openedSource=function(e){this.currentSourceOffset=this.bytesWritten,this.currentFile=e.file.name;var t=this.streamFiles&&!e.file.dir;if(t){var n=i(e,t,!1,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);this.push({data:n.fileRecord,meta:{percent:0}})}else this.accumulate=!0},u.prototype.closedSource=function(e){this.accumulate=!1;var t=this.streamFiles&&!e.file.dir,n=i(e,t,!0,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);if(this.dirRecords.push(n.dirRecord),t)this.push({data:function(e){return l.DATA_DESCRIPTOR+r(e.crc32,4)+r(e.compressedSize,4)+r(e.uncompressedSize,4)}(e),meta:{percent:100}});else for(this.push({data:n.fileRecord,meta:{percent:0}});this.contentBuffer.length;)this.push(this.contentBuffer.shift());this.currentFile=null},u.prototype.flush=function(){for(var e=this.bytesWritten,t=0;t<this.dirRecords.length;t++)this.push({data:this.dirRecords[t],meta:{percent:100}});var n=this.bytesWritten-e,i=function(e,t,n,i,o){var s=a.transformTo(`string`,o(i));return l.CENTRAL_DIRECTORY_END+`\0\0\0\0`+r(e,2)+r(e,2)+r(t,4)+r(n,4)+r(s.length,2)+s}(this.dirRecords.length,n,e,this.zipComment,this.encodeFileName);this.push({data:i,meta:{percent:100}})},u.prototype.prepareNextSource=function(){this.previous=this._sources.shift(),this.openedSource(this.previous.streamInfo),this.isPaused?this.previous.pause():this.previous.resume()},u.prototype.registerPrevious=function(e){this._sources.push(e);var t=this;return e.on(`data`,function(e){t.processChunk(e)}),e.on(`end`,function(){t.closedSource(t.previous.streamInfo),t._sources.length?t.prepareNextSource():t.end()}),e.on(`error`,function(e){t.error(e)}),this},u.prototype.resume=function(){return!!o.prototype.resume.call(this)&&(!this.previous&&this._sources.length?(this.prepareNextSource(),!0):this.previous||this._sources.length||this.generatedError?void 0:(this.end(),!0))},u.prototype.error=function(e){var t=this._sources;if(!o.prototype.error.call(this,e))return!1;for(var n=0;n<t.length;n++)try{t[n].error(e)}catch{}return!0},u.prototype.lock=function(){o.prototype.lock.call(this);for(var e=this._sources,t=0;t<e.length;t++)e[t].lock()},t.exports=u},{"../crc32":4,"../signature":23,"../stream/GenericWorker":28,"../utf8":31,"../utils":32}],9:[function(e,t,n){var r=e(`../compressions`),i=e(`./ZipFileWorker`);n.generateWorker=function(e,t,n){var a=new i(t.streamFiles,n,t.platform,t.encodeFileName),o=0;try{e.forEach(function(e,n){o++;var i=function(e,t){var n=e||t,i=r[n];if(!i)throw Error(n+` is not a valid compression method !`);return i}(n.options.compression,t.compression),s=n.options.compressionOptions||t.compressionOptions||{},c=n.dir,l=n.date;n._compressWorker(i,s).withStreamInfo(`file`,{name:e,dir:c,date:l,comment:n.comment||``,unixPermissions:n.unixPermissions,dosPermissions:n.dosPermissions}).pipe(a)}),a.entriesCount=o}catch(e){a.error(e)}return a}},{"../compressions":3,"./ZipFileWorker":8}],10:[function(e,t,n){function r(){if(!(this instanceof r))return new r;if(arguments.length)throw Error(`The constructor with parameters has been removed in JSZip 3.0, please check the upgrade guide.`);this.files=Object.create(null),this.comment=null,this.root=``,this.clone=function(){var e=new r;for(var t in this)typeof this[t]!=`function`&&(e[t]=this[t]);return e}}(r.prototype=e(`./object`)).loadAsync=e(`./load`),r.support=e(`./support`),r.defaults=e(`./defaults`),r.version=`3.10.1`,r.loadAsync=function(e,t){return new r().loadAsync(e,t)},r.external=e(`./external`),t.exports=r},{"./defaults":5,"./external":6,"./load":11,"./object":15,"./support":30}],11:[function(e,t,n){var r=e(`./utils`),i=e(`./external`),a=e(`./utf8`),o=e(`./zipEntries`),s=e(`./stream/Crc32Probe`),c=e(`./nodejsUtils`);function l(e){return new i.Promise(function(t,n){var r=e.decompressed.getContentWorker().pipe(new s);r.on(`error`,function(e){n(e)}).on(`end`,function(){r.streamInfo.crc32===e.decompressed.crc32?t():n(Error(`Corrupted zip : CRC32 mismatch`))}).resume()})}t.exports=function(e,t){var n=this;return t=r.ex Line truncated \0`,M+=r(k,2),M+=m.magic,M+=r(d,2),M+=r(f,2),M+=r(O.crc32,4),M+=r(O.compressedSize,4),M+=r(O.uncompressedSize,4),M+=r(g.length,2),M+=r(C.length,2),{fileRecord:l.LOCAL_FILE_HEADER+M+g+C,dirRecord:l.CENTRAL_FILE_HEADER+r(j,2)+M+r(y.length,2)+`\0\0\0\0`+r(A,4)+r(i,4)+g+C+y}}var a=e(`../utils`),o=e(`../stream/GenericWorker`),s=e(`../utf8`),c=e(`../crc32`),l=e(`../signature`);function u(e,t,n,r){o.call(this,`ZipFileWorker`),this.bytesWritten=0,this.zipComment=t,this.zipPlatform=n,this.encodeFileName=r,this.streamFiles=e,this.accumulate=!1,this.contentBuffer=[],this.dirRecords=[],this.currentSourceOffset=0,this.entriesCount=0,this.currentFile=null,this._sources=[]}a.inherits(u,o),u.prototype.push=function(e){var t=e.meta.percent||0,n=this.entriesCount,r=this._sources.length;this.accumulate?this.contentBuffer.push(e):(this.bytesWritten+=e.data.length,o.prototype.push.call(this,{data:e.data,meta:{currentFile:this.currentFile,percent:n?(t+100*(n-r-1))/n:100}}))},u.prototype.openedSource=function(e){this.currentSourceOffset=this.bytesWritten,this.currentFile=e.file.name;var t=this.streamFiles&&!e.file.dir;if(t){var n=i(e,t,!1,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);this.push({data:n.fileRecord,meta:{percent:0}})}else this.accumulate=!0},u.prototype.closedSource=function(e){this.accumulate=!1;var t=this.streamFiles&&!e.file.dir,n=i(e,t,!0,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);if(this.dirRecords.push(n.dirRecord),t)this.push({data:function(e){return l.DATA_DESCRIPTOR+r(e.crc32,4)+r(e.compressedSize,4)+r(e.uncompressedSize,4)}(e),meta:{percent:100}});else for(this.push({data:n.fileRecord,meta:{percent:0}});this.contentBuffer.length;)this.push(this.contentBuffer.shift());this.currentFile=null},u.prototype.flush=function(){for(var e=this.bytesWritten,t=0;t<this.dirRecords.length;t++)this.push({data:this.dirRecords[t],meta:{percent:100}});var n=this.bytesWritten-e,i=function(e,t,n,i,o){var s=a.transformTo(`string`,o(i));return l.CENTRAL_DIRECTORY_END+`\0\0\0\0`+r(e,2)+r(e,2)+r(t,4)+r(n,4)+r(s.length,2)+s}(this.dirRecords.length,n,e,this.zipComment,this.encodeFileName);this.push({data:i,meta:{percent:100}})},u.prototype.prepareNextSource=function(){this.previous=this._sources.shift(),this.openedSource(this.previous.streamInfo),this.isPaused?this.previous.pause():this.previous.resume()},u.prototype.registerPrevious=function(e){this._sources.push(e);var t=this;return e.on(`data`,function(e){t.processChunk(e)}),e.on(`end`,function(){t.closedSource(t.previous.streamInfo),t._sources.length?t.prepareNextSource():t.end()}),e.on(`error`,function(e){t.error(e)}),this},u.prototype.resume=function(){return!!o.prototype.resume.call(this)&&(!this.previous&&this._sources.length?(this.prepareNextSource(),!0):this.previous||this._sources.length||this.generatedError?void 0:(this.end(),!0))},u.prototype.error=function(e){var t=this._sources;if(!o.prototype.error.call(this,e))return!1;for(var n=0;n<t.length;n++)try{t[n].error(e)}catch{}return!0},u.prototype.lock=function(){o.prototype.lock.call(this);for(var e=this._sources,t=0;t<e.length;t++)e[t].lock()},t.exports=u},{"../crc32":4,"../signature":23,"../stream/GenericWorker":28,"../utf8":31,"../utils":32}],9:[function(e,t,n){var r=e(`../compressions`),i=e(`./ZipFileWorker`);n.generateWorker=function(e,t,n){var a=new i(t.streamFiles,n,t.platform,t.encodeFileName),o=0;try{e.forEach(function(e,n){o++;var i=function(e,t){var n=e||t,i=r[n];if(!i)throw Error(n+` is not a valid compression method !`);return i}(n.options.compression,t.compression),s=n.options.compressionOptions||t.compressionOptions||{},c=n.dir,l=n.date;n._compressWorker(i,s).withStreamInfo(`file`,{name:e,dir:c,date:l,comment:n.comment||``,unixPermissions:n.unixPermissions,dosPermissions:n.dosPermissions}).pipe(a)}),a.entriesCount=o}catch(e){a.error(e)}return a}},{"../compressions":3,"./ZipFileWorker":8}],10:[function(e,t,n){function r(){if(!(this instanceof r))return new r;if(arguments.length)throw Error(`The constructor with parameters has been removed in JSZip 3.0, please check the upgrade guide.`);this.files=Object.create(null),this.comment=null,this.root=``,this.clone=function(){var e=new r;for(var t in this)typeof this[t]!=`function`&&(e[t]=this[t]);return e}}(r.prototype=e(`./object`)).loadAsync=e(`./load`),r.support=e(`./support`),r.defaults=e(`./defaults`),r.version=`3.10.1`,r.loadAsync=function(e,t){return new r().loadAsync(e,t)},r.external=e(`./external`),t.exports=r},{"./defaults":5,"./external":6,"./load":11,"./object":15,"./support":30}],11:[function(e,t,n){var r=e(`./utils`),i=e(`./external`),a=e(`./utf8`),o=e(`./zipEntries`),s=e(`./stream/Crc32Probe`),c=e(`./nodejsUtils`);function l(e){return new i.Promise(function(t,n){var r=e.decompressed.getContentWorker().pipe(new s);r.on(`error`,function(e){n(e)}).on(`end`,function(){r.streamInfo.crc32===e.decompressed.crc32?t():n(Error(`Corrupted zip : CRC32 mismatch`))}).resume()})}t.exports=function(e,t){var n=this;return t=r.ex Line truncated
@@ -0,0 +1 @@
import{A as e,C as t,J as n,O as r,T as i,c as a,k as o,o as s,ot as c,r as l}from"./index-CM0zIqrs.js";var u=c();function d(e){return e.split(`?`)[0].split(`.`).pop()?.toLowerCase()??``}function f(e){return decodeURIComponent(e.split(`?`)[0].split(`/`).pop()??``).replace(/^csm_/,``).replace(/_[a-f0-9]{8,}(\.[^.]+)$/,`$1`)}function p(e){return[`pdf`,`doc`,`docx`,`xls`,`xlsx`,`ppt`,`pptx`,`zip`,`txt`,`csv`].includes(e)}function m({categories:e}){return e?.length?(0,u.jsx)(u.Fragment,{children:e.map(e=>(0,u.jsx)(o,{label:e.title,size:`small`,className:`vitec_newslist__chip`},e.uid))}):null}function h(){return(0,u.jsxs)(`svg`,{width:`14`,height:`14`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2.25`,strokeLinecap:`round`,strokeLinejoin:`round`,"aria-hidden":`true`,children:[(0,u.jsx)(`path`,{d:`M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4`}),(0,u.jsx)(`polyline`,{points:`7 10 12 15 17 10`}),(0,u.jsx)(`line`,{x1:`12`,y1:`15`,x2:`12`,y2:`3`})]})}function g({file:e}){let t=d(e.url),r=f(e.url);return(0,u.jsxs)(`a`,{href:n(e.url,a.base_url,a.router_mode),download:p(t)?r:void 0,target:`_blank`,rel:`noreferrer`,className:`vitec_newsdetail__file`,children:[(0,u.jsx)(`span`,{className:`vitec_newsdetail__file-ext`,children:t.toUpperCase()}),(0,u.jsx)(`span`,{className:`vitec_newsdetail__file-name`,children:r}),(0,u.jsx)(`span`,{className:`vitec_newsdetail__file-dl`,children:(0,u.jsx)(h,{})})]})}function _({element:n,className:a,nested:o,devInfoTags:c,uid:d,spaceBefore:f,spaceAfter:p}){let h=n.content?.news?.news;if(!h)return(0,u.jsx)(l,{className:[`vitec_newsdetail`,a].filter(Boolean).join(` `),devInfoTags:c,nested:o,uid:d,spaceBefore:f,spaceAfter:p,children:(0,u.jsx)(e,{variant:`body2`,color:`text.secondary`,children:`No article found.`})});let _=h.media?.[0]?.url,v=h.datetime?s(h.datetime):null,y=h.relatedFiles??[];return(0,u.jsxs)(l,{className:[`vitec_newsdetail`,a].filter(Boolean).join(` `),devInfoTags:c,nested:o,uid:d,spaceBefore:f,spaceAfter:p,children:[_&&(0,u.jsxs)(`div`,{className:`vitec_newsdetail__hero`,children:[(0,u.jsx)(`img`,{src:_,alt:``,className:`vitec_newsdetail__hero-img`,loading:`eager`}),(0,u.jsx)(`div`,{className:`vitec_newsdetail__hero-overlay`})]}),(0,u.jsxs)(`div`,{className:`vitec_newsdetail__body`,children:[(0,u.jsxs)(i,{direction:`row`,spacing:.75,flexWrap:`wrap`,useFlexGap:!0,alignItems:`center`,className:`vitec_newsdetail__meta`,children:[(0,u.jsx)(m,{categories:h.categories}),v&&(0,u.jsx)(`span`,{className:`vitec_newsdetail__date`,children:v}),h.author&&(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(`span`,{className:`vitec_newsdetail__meta-sep`,"aria-hidden":!0,children:`·`}),(0,u.jsx)(`span`,{className:`vitec_newsdetail__author`,children:h.author})]})]}),(0,u.jsx)(`h1`,{className:`vitec_newsdetail__title`,children:h.title}),h.teaser&&(0,u.jsx)(`p`,{className:`vitec_newsdetail__teaser`,children:h.teaser}),h.bodytext&&(0,u.jsx)(r,{className:`vitec_newsdetail__bodytext`,sx:t,dangerouslySetInnerHTML:{__html:h.bodytext}}),y.length>0&&(0,u.jsxs)(`div`,{className:`vitec_newsdetail__files`,children:[(0,u.jsx)(`p`,{className:`vitec_newsdetail__files-label`,children:`Downloads`}),(0,u.jsx)(`div`,{className:`vitec_newsdetail__files-list`,children:y.map(e=>(0,u.jsx)(g,{file:e},e.uid))})]})]})]})}export{_ as NewsNewsDetail};
@@ -0,0 +1 @@
import{A as e,J as t,T as n,b as r,c as i,d as a,f as o,k as s,m as c,ot as l,p as u,r as d,s as f,t as p}from"./index-CM0zIqrs.js";var m=l();function h(e){if(e)return t(e,i.base_url,i.router_mode)}function g({timestamp:e}){let t=f(e);return(0,m.jsxs)(`div`,{className:`vitec_newslist__date-badge`,"aria-label":t.label,children:[(0,m.jsx)(`span`,{className:`vitec_newslist__date-day`,children:t.day}),(0,m.jsx)(`span`,{className:`vitec_newslist__date-month`,children:t.month})]})}function _({categories:e,dark:t=!1}){return e?.length?(0,m.jsx)(n,{direction:`row`,spacing:.5,flexWrap:`wrap`,useFlexGap:!0,children:e.map(e=>(0,m.jsx)(s,{label:e.title,size:`small`,className:`vitec_newslist__chip${t?` vitec_newslist__chip--dark`:``}`},e.uid))}):null}function v({items:t}){return t.length?(0,m.jsx)(`div`,{className:`vitec_newslist__items`,children:t.map(e=>{let t=h(e.detailUrl),n=e.media?.[0]?.url;return(0,m.jsxs)(`div`,{className:`vitec_newslist__item`,children:[e.datetime?(0,m.jsx)(g,{timestamp:e.datetime}):(0,m.jsx)(`div`,{className:`vitec_newslist__date-badge vitec_newslist__date-badge--empty`}),(0,m.jsxs)(`div`,{className:`vitec_newslist__content`,children:[(0,m.jsx)(_,{categories:e.categories}),t?(0,m.jsx)(`a`,{href:t,className:`vitec_newslist__title-link`,children:(0,m.jsx)(`span`,{className:`vitec_newslist__title`,children:e.title})}):(0,m.jsx)(`span`,{className:`vitec_newslist__title`,children:e.title}),e.teaser&&(0,m.jsx)(`p`,{className:`vitec_newslist__teaser`,children:e.teaser}),t&&(0,m.jsx)(`a`,{href:t,className:`vitec_newslist__read-more`,"aria-label":`Read more: ${e.title}`,children:`Read more`})]}),(0,m.jsx)(`div`,{className:`vitec_newslist__thumbnail${n?``:` vitec_newslist__thumbnail--empty`}`,children:n&&(0,m.jsx)(`img`,{src:n,alt:``,className:`vitec_newslist__thumbnail-img`,loading:`lazy`})})]},e.uid)})}):(0,m.jsx)(e,{variant:`body2`,color:`text.secondary`,children:`No news available.`})}function y({items:t}){if(!t.length)return(0,m.jsx)(e,{variant:`body2`,color:`text.secondary`,children:`No news available.`});let[n,...r]=t,i=h(n.detailUrl),a=n.media?.[0]?.url;return(0,m.jsxs)(`div`,{className:`vitec_newslist__featured`,children:[(0,m.jsxs)(`div`,{className:`vitec_newslist__featured-hero`,children:[a&&(0,m.jsxs)(`div`,{className:`vitec_newslist__featured-img-wrap`,children:[(0,m.jsx)(`img`,{src:a,alt:``,className:`vitec_newslist__featured-img`,loading:`eager`}),(0,m.jsx)(`div`,{className:`vitec_newslist__featured-overlay`})]}),(0,m.jsxs)(`div`,{className:`vitec_newslist__featured-body`,children:[(0,m.jsx)(_,{categories:n.categories,dark:!0}),n.datetime&&(0,m.jsx)(`span`,{className:`vitec_newslist__featured-date`,children:f(n.datetime).label}),(0,m.jsx)(`p`,{className:`vitec_newslist__featured-title`,children:n.title}),n.teaser&&(0,m.jsx)(`p`,{className:`vitec_newslist__featured-teaser`,children:n.teaser}),i&&(0,m.jsx)(`div`,{children:(0,m.jsx)(p,{href:i,variant:`light`,children:`Read more`})})]})]}),r.length>0&&(0,m.jsx)(v,{items:r})]})}function b({items:t}){return t.length?(0,m.jsx)(`div`,{className:`vitec_newslist__grid`,children:t.map(e=>{let t=h(e.detailUrl),r=e.media?.[0]?.url,i=e.datetime?f(e.datetime).label:null;return(0,m.jsxs)(`div`,{className:`vitec_newslist__grid-card`,children:[t?(0,m.jsx)(`a`,{href:t,className:`vitec_newslist__grid-img-link`,tabIndex:-1,"aria-hidden":`true`,children:(0,m.jsx)(`div`,{className:`vitec_newslist__grid-img${r?``:` vitec_newslist__grid-img--empty`}`,children:r&&(0,m.jsx)(`img`,{src:r,alt:``,loading:`lazy`})})}):(0,m.jsx)(`div`,{className:`vitec_newslist__grid-img${r?``:` vitec_newslist__grid-img--empty`}`,children:r&&(0,m.jsx)(`img`,{src:r,alt:``,loading:`lazy`})}),(0,m.jsx)(`div`,{className:`vitec_newslist__grid-body`,children:(0,m.jsxs)(n,{spacing:.6,children:[(0,m.jsxs)(n,{direction:`row`,spacing:.75,alignItems:`center`,flexWrap:`wrap`,useFlexGap:!0,children:[(0,m.jsx)(_,{categories:e.categories}),i&&(0,m.jsx)(`span`,{className:`vitec_newslist__grid-date`,children:i})]}),t?(0,m.jsx)(`a`,{href:t,className:`vitec_newslist__title-link`,children:(0,m.jsx)(`span`,{className:`vitec_newslist__grid-title`,children:e.title})}):(0,m.jsx)(`span`,{className:`vitec_newslist__grid-title`,children:e.title}),e.teaser&&(0,m.jsx)(`p`,{className:`vitec_newslist__grid-teaser`,children:e.teaser})]})})]},e.uid)})}):(0,m.jsx)(e,{variant:`body2`,color:`text.secondary`,children:`No news available.`})}function x({items:t}){let r=t[0];if(!r)return(0,m.jsx)(e,{variant:`body2`,color:`text.secondary`,children:`No news available.`});let i=h(r.detailUrl),a=r.media?.[0]?.url,o=r.datetime?f(r.datetime).label:null;return(0,m.jsxs)(`div`,{className:`vitec_newslist__spotlight`,children:[a&&(0,m.jsx)(`div`,{className:`vitec_newslist__spotlight-img-wrap`,children:i?(0,m.jsx)(`a`,{href:i,tabIndex:-1,"aria-hidden":`true`,children:(0,m.jsx)(`img`,{src:a,alt:``,className:`vitec_newslist__spotlight-img`,loading:`eager`})}):(0,m.jsx)(`img`,{src:a,alt:``,className:`vitec_newslist__spotlight-img`,loadingLine truncated
-1
View File
@@ -1 +0,0 @@
import{C as e,D as t,S as n,Z as r,_ as i,b as a,c as o,d as s,h as c,k as l,l as u,m as d,n as f,p,s as m,u as h,v as g,y as _}from"./index-7LYai_r-.js";var v=r();function y({element:r,className:y,nested:b,devInfoTags:x,uid:S,spaceBefore:C,spaceAfter:w}){let T=o(r),E=s(r),D=m(r),O=Number(u(r)??0),k=g(O),A=_(O),j=i(h(r)),M=j===`center`?`center`:j===`right`?`right`:`left`,N=j===`center`?`center`:j===`right`?`flex-end`:`flex-start`,P=r.appearance?.frameClass?.split(`,`).map(e=>e.trim()).includes(`vitec-full-width`)??!1,F=p(r.content?.headerLink),I=c(r.content?.headerLink),L=d(r.content?.headerLink,`Mehr erfahren`);return(0,v.jsx)(f,{className:y,devInfoTags:x,fullWidth:P,nested:b,uid:S,spaceBefore:C,spaceAfter:w,children:(0,v.jsx)(`div`,{className:`text__inner`,children:(0,v.jsxs)(e,{spacing:2,sx:{textAlign:M,alignItems:N},children:[(T||E)&&(0,v.jsxs)(e,{spacing:.5,children:[T&&(0,v.jsx)(l,{variant:k,children:T}),E&&(0,v.jsx)(l,{variant:A,color:`text.secondary`,children:E})]}),F&&(0,v.jsx)(n,{href:F,target:I??`_self`,variant:`outlined`,size:`sm`,children:L}),D&&(0,v.jsx)(t,{sx:{...a,textAlign:`left`},dangerouslySetInnerHTML:{__html:D}})]})})})}export{y as VitecText};
+1
View File
@@ -0,0 +1 @@
import{A as e,C as t,O as n,S as r,T as i,_ as a,b as o,d as s,f as c,g as l,m as u,ot as d,p as f,r as p,t as m,u as h,v as g,x as _}from"./index-CM0zIqrs.js";var v=d();function y({element:d,className:y,nested:b,devInfoTags:x,uid:S,spaceBefore:C,spaceAfter:w}){let T=s(d),E=u(d),D=h(d),O=Number(c(d)??0),k=_(O),A=r(O),j=o(f(d)),M=j===`center`?`center`:j===`right`?`right`:`left`,N=j===`center`?`center`:j===`right`?`flex-end`:`flex-start`,P=d.appearance?.frameClass?.split(`,`).map(e=>e.trim()).includes(`vitec-full-width`)??!1,F=l(d.content?.headerLink),I=g(d.content?.headerLink),L=a(d.content?.headerLink,`Mehr erfahren`);return(0,v.jsx)(p,{className:y,devInfoTags:x,fullWidth:P,nested:b,uid:S,spaceBefore:C,spaceAfter:w,children:(0,v.jsx)(`div`,{className:`text__inner`,children:(0,v.jsxs)(i,{spacing:2,sx:{textAlign:M,alignItems:N},children:[(T||E)&&(0,v.jsxs)(i,{spacing:.5,children:[T&&(0,v.jsx)(e,{variant:k,children:T}),E&&(0,v.jsx)(e,{variant:A,color:`text.secondary`,children:E})]}),F&&(0,v.jsx)(m,{href:F,target:I??`_self`,variant:`outlined`,size:`sm`,children:L}),D&&(0,v.jsx)(n,{sx:{...t,textAlign:`left`},dangerouslySetInnerHTML:{__html:D}})]})})})}export{y as VitecText};
@@ -1 +0,0 @@
import{C as e,D as t,S as n,Z as r,_ as i,b as a,c as o,d as s,h as c,i as l,k as u,l as d,m as f,n as p,p as m,s as h,t as g,u as _,v,w as y,y as b}from"./index-7LYai_r-.js";var x=r();function S({element:r,className:S,nested:C,devInfoTags:w,uid:T,spaceBefore:E,spaceAfter:D}){let O=o(r),k=s(r),A=h(r),j=Number(d(r)??0),M=v(j),N=b(j),P=i(_(r)),F=P===`center`?`center`:P===`right`?`right`:`left`,I=P===`center`?`center`:P===`right`?`flex-end`:`flex-start`,L=r.appearance?.frameClass?.split(`,`).map(e=>e.trim()).includes(`vitec-full-width`)??!1,R=m(r.content?.headerLink),z=c(r.content?.headerLink),B=f(r.content?.headerLink,`Mehr erfahren`),V=l(r.content?.gallery),H=r.content?.gallery?.position?.horizontal,U=V.length>0&&(H===`right`||H===`left`),W=H!==`left`,G=(r.content?.gallery?.width??480)>=600?5:4;return(0,x.jsx)(p,{className:S,devInfoTags:w,fullWidth:L,nested:C,uid:T,spaceBefore:E,spaceAfter:D,children:(0,x.jsx)(`div`,{className:`textpic__inner`,children:(0,x.jsxs)(y,{container:!0,spacing:3,alignItems:`start`,direction:W?`row`:`row-reverse`,children:[(0,x.jsx)(y,{size:{xs:12,md:U?12-G:12},children:(0,x.jsxs)(e,{spacing:2.5,children:[(0,x.jsxs)(e,{spacing:.5,sx:{width:`100%`,textAlign:F,alignItems:I},children:[(0,x.jsx)(u,{variant:M,children:O??`Untitled content`}),k&&(0,x.jsx)(u,{variant:N,color:`text.secondary`,children:k})]}),R&&(0,x.jsx)(n,{href:R,target:z??`_self`,variant:`outlined`,size:`sm`,alignStart:!0,children:B}),A&&(0,x.jsx)(t,{sx:{...a,textAlign:`left`},dangerouslySetInnerHTML:{__html:A}})]})}),V.length>0&&(0,x.jsx)(y,{size:{xs:12,md:U?G:12},children:(0,x.jsx)(g,{images:V})})]})})})}export{S as Textpic};
@@ -0,0 +1 @@
import{A as e,C as t,E as n,O as r,S as i,T as a,_ as o,a as s,b as c,d as l,f as u,g as d,m as f,n as p,ot as m,p as h,r as g,t as _,u as v,v as y,x as b}from"./index-CM0zIqrs.js";var x=m();function S({element:m,className:S,nested:C,devInfoTags:w,uid:T,spaceBefore:E,spaceAfter:D}){let O=l(m),k=f(m),A=v(m),j=Number(u(m)??0),M=b(j),N=i(j),P=c(h(m)),F=P===`center`?`center`:P===`right`?`right`:`left`,I=P===`center`?`center`:P===`right`?`flex-end`:`flex-start`,L=m.appearance?.frameClass?.split(`,`).map(e=>e.trim()).includes(`vitec-full-width`)??!1,R=d(m.content?.headerLink),z=y(m.content?.headerLink),B=o(m.content?.headerLink,`Mehr erfahren`),V=s(m.content?.gallery),H=m.content?.gallery?.position?.horizontal,U=V.length>0&&(H===`right`||H===`left`),W=H!==`left`,G=(m.content?.gallery?.width??480)>=600?5:4;return(0,x.jsx)(g,{className:S,devInfoTags:w,fullWidth:L,nested:C,uid:T,spaceBefore:E,spaceAfter:D,children:(0,x.jsx)(`div`,{className:`textpic__inner`,children:(0,x.jsxs)(n,{container:!0,spacing:3,alignItems:`start`,direction:W?`row`:`row-reverse`,children:[(0,x.jsx)(n,{size:{xs:12,md:U?12-G:12},children:(0,x.jsxs)(a,{spacing:2.5,children:[(0,x.jsxs)(a,{spacing:.5,sx:{width:`100%`,textAlign:F,alignItems:I},children:[(0,x.jsx)(e,{variant:M,children:O??`Untitled content`}),k&&(0,x.jsx)(e,{variant:N,color:`text.secondary`,children:k})]}),R&&(0,x.jsx)(_,{href:R,target:z??`_self`,variant:`outlined`,size:`sm`,alignStart:!0,children:B}),A&&(0,x.jsx)(r,{sx:{...t,textAlign:`left`},dangerouslySetInnerHTML:{__html:A}})]})}),V.length>0&&(0,x.jsx)(n,{size:{xs:12,md:U?G:12},children:(0,x.jsx)(p,{images:V})})]})})})}export{S as Textpic};
@@ -0,0 +1 @@
import{mt as e,ut as t}from"./index-CM0zIqrs.js";var n=e(t());function r(e){let{controlled:t,default:r,name:i,state:a=`value`}=e,{current:o}=n.useRef(t!==void 0),[s,c]=n.useState(r);return[o?t:s,n.useCallback(e=>{o||c(e)},[])]}var i=r;export{i as t};
@@ -1 +0,0 @@
import{Q as e,tt as t}from"./index-7LYai_r-.js";var n=t(e());function r(e){let{controlled:t,default:r,name:i,state:a=`value`}=e,{current:o}=n.useRef(t!==void 0),[s,c]=n.useState(r);return[o?t:s,n.useCallback(e=>{o||c(e)},[])]}var i=r;export{i as t};
@@ -0,0 +1 @@
import{A as e,C as t,O as n,T as r,_ as i,d as a,g as o,l as s,m as c,ot as l,r as u,t as d,u as f,v as p,y as m}from"./index-CM0zIqrs.js";var h=l();function g({element:l,className:g,nested:_,devInfoTags:v,uid:y,spaceBefore:b,spaceAfter:x}){let S=a(l),C=c(l),w=f(l),T=l.data?.eyebrow,E=l.data?.background_variant,D=l.data?.text_alignment??`left`,O=l.data?.layout_variant??`stacked`,k=l.data?.image_aspect_ratio??`auto`,A=l.data?.border_style??`none`,j=l.data?.shadow??`soft`,M=m(l.data?.button_style,`orange`),N=m(l.data?.secondary_button_style,`ghost`),P=(l.data?.icon?.length?l.data.icon:l.data?.image)??[],F=P[0]?.publicUrl,I=P[0]?.alt||P[0]?.title||S||``,L=o(l.data?.card_link),R=o(l.data?.primary_cta),z=p(l.data?.primary_cta),B=l.data?.primary_cta_label||i(l.data?.primary_cta,`Learn more`),V=o(l.data?.secondary_cta),H=p(l.data?.secondary_cta),U=l.data?.secondary_cta_label||i(l.data?.secondary_cta,`Learn more`),W=!!(R||V),G=O===`image_overlay`,K=O===`text_only`,q=[`graphite`,`midnight`,`orange`,`blue`,`dark`].includes(E??``),J=[`vitec_card__inner`,`vitec_card__inner--${O}`,q?`vitec_card__inner--dark-bg`:``,j===`none`?``:`vitec_card__inner--shadow-${j}`,A===`none`?``:`vitec_card__inner--border-${A}`].filter(Boolean).join(` `),Y=`vitec_card__media${k===`auto`?``:` vitec_card__media--${k}`}`,X=(0,h.jsxs)(`div`,{className:J,style:G&&F?{backgroundImage:`url(${F})`,backgroundSize:`cover`,backgroundPosition:`center`}:E&&E!==`none`?s(E):{},children:[F&&!K&&!G&&(0,h.jsx)(`div`,{className:Y,children:(0,h.jsx)(`img`,{className:`vitec_card__image`,src:F,alt:I,loading:`lazy`})}),(0,h.jsxs)(`div`,{className:`vitec_card__body`,style:{textAlign:D},children:[(0,h.jsxs)(r,{spacing:.75,children:[T&&(0,h.jsx)(e,{variant:`overline`,className:`vitec_card__eyebrow`,children:T}),S&&(0,h.jsx)(e,{variant:`h5`,className:`vitec_card__header`,children:S}),C&&(0,h.jsx)(e,{variant:`subtitle2`,color:`text.secondary`,className:`vitec_card__subheader`,children:C}),w&&(0,h.jsx)(n,{className:`vitec_card__text`,sx:t,dangerouslySetInnerHTML:{__html:w}})]}),W&&(0,h.jsx)(`div`,{className:`vitec_card__footer`,children:(0,h.jsxs)(r,{direction:`column`,spacing:.75,children:[R&&(0,h.jsx)(d,{href:R,target:z??`_self`,variant:M,children:B}),V&&(0,h.jsx)(d,{href:V,target:H??`_self`,variant:N,children:U})]})})]})]}),Z=!!L;return(0,h.jsx)(u,{className:g,devInfoTags:v,nested:_,uid:y,spaceBefore:b,spaceAfter:x,children:Z?Z&&!W?(0,h.jsx)(`a`,{className:`vitec_card__link-wrap`,href:L,"aria-label":S??void 0,children:X}):(0,h.jsx)(`div`,{className:`vitec_card__link-wrap vitec_card__link-wrap--div`,role:`link`,tabIndex:0,onClick:()=>{window.location.href=L},onKeyDown:e=>{(e.key===`Enter`||e.key===` `)&&(window.location.href=L)},children:X}):X})}export{g as VitecCard};
@@ -1 +0,0 @@
import{C as e,D as t,S as n,Z as r,b as i,c as a,d as o,g as s,h as c,k as l,m as u,n as d,o as f,p,s as m}from"./index-7LYai_r-.js";var h=r();function g({element:r,className:g,nested:_,devInfoTags:v,uid:y,spaceBefore:b,spaceAfter:x}){let S=a(r),C=o(r),w=m(r),T=r.data?.eyebrow,E=r.data?.background_variant,D=r.data?.text_alignment??`left`,O=r.data?.layout_variant??`stacked`,k=r.data?.image_aspect_ratio??`auto`,A=r.data?.border_style??`none`,j=r.data?.shadow??`soft`,M=s(r.data?.button_style,`orange`),N=s(r.data?.secondary_button_style,`ghost`),P=(r.data?.icon?.length?r.data.icon:r.data?.image)??[],F=P[0]?.publicUrl,I=P[0]?.alt||P[0]?.title||S||``,L=p(r.data?.card_link),R=p(r.data?.primary_cta),z=c(r.data?.primary_cta),B=r.data?.primary_cta_label||u(r.data?.primary_cta,`Learn more`),V=p(r.data?.secondary_cta),H=c(r.data?.secondary_cta),U=r.data?.secondary_cta_label||u(r.data?.secondary_cta,`Learn more`),W=!!(R||V),G=O===`image_overlay`,K=O===`text_only`,q=[`graphite`,`midnight`,`orange`,`blue`,`dark`].includes(E??``),J=[`vitec_card__inner`,`vitec_card__inner--${O}`,q?`vitec_card__inner--dark-bg`:``,j===`none`?``:`vitec_card__inner--shadow-${j}`,A===`none`?``:`vitec_card__inner--border-${A}`].filter(Boolean).join(` `),Y=`vitec_card__media${k===`auto`?``:` vitec_card__media--${k}`}`,X=(0,h.jsxs)(`div`,{className:J,style:G&&F?{backgroundImage:`url(${F})`,backgroundSize:`cover`,backgroundPosition:`center`}:E&&E!==`none`?f(E):{},children:[F&&!K&&!G&&(0,h.jsx)(`div`,{className:Y,children:(0,h.jsx)(`img`,{className:`vitec_card__image`,src:F,alt:I,loading:`lazy`})}),(0,h.jsxs)(`div`,{className:`vitec_card__body`,style:{textAlign:D},children:[(0,h.jsxs)(e,{spacing:.75,children:[T&&(0,h.jsx)(l,{variant:`overline`,className:`vitec_card__eyebrow`,children:T}),S&&(0,h.jsx)(l,{variant:`h5`,className:`vitec_card__header`,children:S}),C&&(0,h.jsx)(l,{variant:`subtitle2`,color:`text.secondary`,className:`vitec_card__subheader`,children:C}),w&&(0,h.jsx)(t,{className:`vitec_card__text`,sx:i,dangerouslySetInnerHTML:{__html:w}})]}),W&&(0,h.jsx)(`div`,{className:`vitec_card__footer`,children:(0,h.jsxs)(e,{direction:`column`,spacing:.75,children:[R&&(0,h.jsx)(n,{href:R,target:z??`_self`,variant:M,children:B}),V&&(0,h.jsx)(n,{href:V,target:H??`_self`,variant:N,children:U})]})})]})]}),Z=!!L;return(0,h.jsx)(d,{className:g,devInfoTags:v,nested:_,uid:y,spaceBefore:b,spaceAfter:x,children:Z?Z&&!W?(0,h.jsx)(`a`,{className:`vitec_card__link-wrap`,href:L,"aria-label":S??void 0,children:X}):(0,h.jsx)(`div`,{className:`vitec_card__link-wrap vitec_card__link-wrap--div`,role:`link`,tabIndex:0,onClick:()=>{window.location.href=L},onKeyDown:e=>{(e.key===`Enter`||e.key===` `)&&(window.location.href=L)},children:X}):X})}export{g as VitecCard};
@@ -1 +0,0 @@
import{C as e,D as t,Q as n,Z as r,_ as i,c as a,d as o,k as s,n as c,o as l,u}from"./index-7LYai_r-.js";var d=n(),f=r();function p(){return(0,f.jsx)(`svg`,{width:`18`,height:`18`,viewBox:`0 0 18 18`,fill:`none`,"aria-hidden":`true`,children:(0,f.jsx)(`path`,{d:`M11 4.5L6.5 9l4.5 4.5`,stroke:`currentColor`,strokeWidth:`1.75`,strokeLinecap:`round`,strokeLinejoin:`round`})})}function m(){return(0,f.jsx)(`svg`,{width:`18`,height:`18`,viewBox:`0 0 18 18`,fill:`none`,"aria-hidden":`true`,children:(0,f.jsx)(`path`,{d:`M7 4.5L11.5 9 7 13.5`,stroke:`currentColor`,strokeWidth:`1.75`,strokeLinecap:`round`,strokeLinejoin:`round`})})}var h=24;function g({element:n,className:r,nested:g,devInfoTags:_,uid:v,spaceBefore:ee,spaceAfter:y,renderElement:b}){let x=a(n),S=o(n),C=i(u(n)),w=n.cssClass,T=n.tx_vitec_bg_variant,E=!!(T&&T!==`none`),D=E?l(T):{},O=n.carousel??{},k=Math.max(1,parseInt(O.slidesPerView??`3`,10)),A=O.showArrows!==`0`,j=O.showIndicators!==`0`,M=n.items?.flatMap(e=>e.contentElements??[])??[],N=(0,d.useRef)(null),P=(0,d.useRef)({dragging:!1,startX:0,startScrollLeft:0,moved:!1}),[F,I]=(0,d.useState)(!1),[L,R]=(0,d.useState)(!1),[z,B]=(0,d.useState)(0),[V,H]=(0,d.useState)(k),U=(0,d.useCallback)(()=>{let e=N.current;if(!e||!e.children[0])return;let t=e.children[0].offsetWidth;t>0&&H(Math.max(1,Math.floor((e.clientWidth+h)/(t+h))))},[]),W=(0,d.useCallback)(()=>{let e=N.current;if(!e)return;let{scrollLeft:t,scrollWidth:n,clientWidth:r}=e;I(t>4),R(t<n-r-4);let i=e.children[0];if(i){let n=i.offsetWidth+h;if(n>0){let r=Math.round(t/n),i=Math.max(1,Math.floor((e.clientWidth+h)/n)),a=Math.max(1,M.length-i+1);B(Math.min(r,a-1))}}},[M.length]);(0,d.useEffect)(()=>{U(),W();let e=new ResizeObserver(()=>{U(),W()});return N.current&&e.observe(N.current),()=>e.disconnect()},[U,W]),(0,d.useEffect)(()=>{let e=N.current;if(!e)return;let t=0,n=0,r=0,i=null,a=a=>{let o=a.touches[0];t=o.pageX,n=o.pageY,r=e.scrollLeft,i=null,P.current={dragging:!0,startX:o.pageX,startScrollLeft:e.scrollLeft,moved:!1},e.style.scrollSnapType=`none`},o=a=>{if(!P.current.dragging)return;let o=a.touches[0],s=o.pageX-t,c=o.pageY-n;i===null&&(i=Math.abs(s)>Math.abs(c)),i?(a.preventDefault(),Math.abs(s)>3&&(P.current.moved=!0),e.scrollLeft=r-s):(e.style.scrollSnapType=``,P.current.dragging=!1)},s=()=>{P.current.dragging&&(P.current.dragging=!1,e.style.scrollSnapType=``)};return e.addEventListener(`touchstart`,a,{passive:!0}),e.addEventListener(`touchmove`,o,{passive:!1}),e.addEventListener(`touchend`,s,{passive:!0}),()=>{e.removeEventListener(`touchstart`,a),e.removeEventListener(`touchmove`,o),e.removeEventListener(`touchend`,s)}},[]);let G=(0,d.useCallback)(e=>{let t=N.current;if(!t||!t.children[0])return;let n=t.children[0].offsetWidth+h;t.scrollTo({left:e*n,behavior:`smooth`})},[]),K=(0,d.useCallback)(e=>{let t=N.current;if(!t||!t.children[0])return;let n=t.children[0].offsetWidth+h;t.scrollBy({left:e*n,behavior:`smooth`})},[]),q=(0,d.useCallback)(e=>{let t=N.current;t&&(P.current={dragging:!0,startX:e.pageX,startScrollLeft:t.scrollLeft,moved:!1},t.style.scrollSnapType=`none`,t.style.cursor=`grabbing`,t.style.userSelect=`none`)},[]),J=(0,d.useCallback)(e=>{let t=P.current;if(!t.dragging)return;let n=N.current;if(!n)return;let r=e.pageX-t.startX;Math.abs(r)>3&&(t.moved=!0),n.scrollLeft=t.startScrollLeft-r},[]),Y=(0,d.useCallback)(()=>{let e=N.current;!e||!P.current.dragging||(P.current.dragging=!1,e.style.cursor=``,e.style.userSelect=``,e.style.scrollSnapType=``)},[]),X=(0,d.useCallback)(e=>{P.current.moved&&(e.stopPropagation(),e.preventDefault(),P.current.moved=!1)},[]),Z=Math.max(1,M.length-V+1),Q=M.length>V,$=!!(x||S);return(0,f.jsx)(c,{className:[r,w].filter(Boolean).join(` `)||void 0,devInfoTags:_,nested:g,uid:v,spaceBefore:ee,spaceAfter:y,children:(0,f.jsx)(t,{sx:{...D,...E?{borderRadius:3,px:{xs:2.5,md:4},py:{xs:3,md:3.5},"& p, & h1, & h2, & h3, & h4, & h5, & h6, & .MuiTypography-root":{color:`inherit`}}:{}},children:(0,f.jsxs)(`div`,{className:`vitec_cards_carousel__inner`,children:[($||A&&Q)&&(0,f.jsxs)(`div`,{className:`vitec_cards_carousel__header`,children:[$&&(0,f.jsxs)(e,{spacing:.25,sx:{textAlign:C,alignItems:C===`center`?`center`:C===`right`?`flex-end`:`flex-start`},children:[x&&(0,f.jsx)(s,{variant:`h4`,children:x}),S&&(0,f.jsx)(s,{variant:`subtitle1`,color:`text.secondary`,children:S})]}),A&&Q&&(0,f.jsxs)(`div`,{className:`vitec_cards_carousel__arrows`,children:[(0,f.jsx)(`button`,{className:`vitec_cards_carousel__arrow`,onClick:()=>K(-1),disabled:!F,"aria-label":`Previous slide`,children:(0,f.jsx)(p,{})}),(0,f.jsx)(`button`,{className:`vitec_cards_carousel__arrow`,onClick:()=>K(1),disabled:!L,"aria-label":`Next slide`,children:(0,f.jsx)(m,{})})]})]}),(0,f.jsx)(`div`,{className:`vitec_cards_carousel__track vitec_cards_carousel__track--slides-${k}`,ref:N,onScroll:W,onMouseDown:q,onMouseMove:J,onMouseUp:Y,onMouseLeave:Y,onClickCapture:X,onDragStart:e=>e.preventDefault(),children:M.map(e=>(0,f.jsx)(d.Fragment,{children:(0,f.jsx)(`div`,{cLine truncated
@@ -0,0 +1 @@
import{A as e,O as t,T as n,b as r,d as i,l as a,m as o,ot as s,p as c,r as l,ut as u}from"./index-CM0zIqrs.js";var d=u(),f=s();function p(){return(0,f.jsx)(`svg`,{width:`18`,height:`18`,viewBox:`0 0 18 18`,fill:`none`,"aria-hidden":`true`,children:(0,f.jsx)(`path`,{d:`M11 4.5L6.5 9l4.5 4.5`,stroke:`currentColor`,strokeWidth:`1.75`,strokeLinecap:`round`,strokeLinejoin:`round`})})}function m(){return(0,f.jsx)(`svg`,{width:`18`,height:`18`,viewBox:`0 0 18 18`,fill:`none`,"aria-hidden":`true`,children:(0,f.jsx)(`path`,{d:`M7 4.5L11.5 9 7 13.5`,stroke:`currentColor`,strokeWidth:`1.75`,strokeLinecap:`round`,strokeLinejoin:`round`})})}var h=24;function g({element:s,className:u,nested:g,devInfoTags:_,uid:v,spaceBefore:ee,spaceAfter:y,renderElement:b}){let x=i(s),S=o(s),C=r(c(s)),w=s.cssClass,T=s.tx_vitec_bg_variant,E=!!(T&&T!==`none`),D=E?a(T):{},O=s.carousel??{},k=Math.max(1,parseInt(O.slidesPerView??`3`,10)),A=O.showArrows!==`0`,j=O.showIndicators!==`0`,M=s.items?.flatMap(e=>e.contentElements??[])??[],N=(0,d.useRef)(null),P=(0,d.useRef)({dragging:!1,startX:0,startScrollLeft:0,moved:!1}),[F,I]=(0,d.useState)(!1),[L,R]=(0,d.useState)(!1),[z,B]=(0,d.useState)(0),[V,H]=(0,d.useState)(k),U=(0,d.useCallback)(()=>{let e=N.current;if(!e||!e.children[0])return;let t=e.children[0].offsetWidth;t>0&&H(Math.max(1,Math.floor((e.clientWidth+h)/(t+h))))},[]),W=(0,d.useCallback)(()=>{let e=N.current;if(!e)return;let{scrollLeft:t,scrollWidth:n,clientWidth:r}=e;I(t>4),R(t<n-r-4);let i=e.children[0];if(i){let n=i.offsetWidth+h;if(n>0){let r=Math.round(t/n),i=Math.max(1,Math.floor((e.clientWidth+h)/n)),a=Math.max(1,M.length-i+1);B(Math.min(r,a-1))}}},[M.length]);(0,d.useEffect)(()=>{U(),W();let e=new ResizeObserver(()=>{U(),W()});return N.current&&e.observe(N.current),()=>e.disconnect()},[U,W]),(0,d.useEffect)(()=>{let e=N.current;if(!e)return;let t=0,n=0,r=0,i=null,a=a=>{let o=a.touches[0];t=o.pageX,n=o.pageY,r=e.scrollLeft,i=null,P.current={dragging:!0,startX:o.pageX,startScrollLeft:e.scrollLeft,moved:!1},e.style.scrollSnapType=`none`},o=a=>{if(!P.current.dragging)return;let o=a.touches[0],s=o.pageX-t,c=o.pageY-n;i===null&&(i=Math.abs(s)>Math.abs(c)),i?(a.preventDefault(),Math.abs(s)>3&&(P.current.moved=!0),e.scrollLeft=r-s):(e.style.scrollSnapType=``,P.current.dragging=!1)},s=()=>{P.current.dragging&&(P.current.dragging=!1,e.style.scrollSnapType=``)};return e.addEventListener(`touchstart`,a,{passive:!0}),e.addEventListener(`touchmove`,o,{passive:!1}),e.addEventListener(`touchend`,s,{passive:!0}),()=>{e.removeEventListener(`touchstart`,a),e.removeEventListener(`touchmove`,o),e.removeEventListener(`touchend`,s)}},[]);let G=(0,d.useCallback)(e=>{let t=N.current;if(!t||!t.children[0])return;let n=t.children[0].offsetWidth+h;t.scrollTo({left:e*n,behavior:`smooth`})},[]),K=(0,d.useCallback)(e=>{let t=N.current;if(!t||!t.children[0])return;let n=t.children[0].offsetWidth+h;t.scrollBy({left:e*n,behavior:`smooth`})},[]),q=(0,d.useCallback)(e=>{let t=N.current;t&&(P.current={dragging:!0,startX:e.pageX,startScrollLeft:t.scrollLeft,moved:!1},t.style.scrollSnapType=`none`,t.style.cursor=`grabbing`,t.style.userSelect=`none`)},[]),J=(0,d.useCallback)(e=>{let t=P.current;if(!t.dragging)return;let n=N.current;if(!n)return;let r=e.pageX-t.startX;Math.abs(r)>3&&(t.moved=!0),n.scrollLeft=t.startScrollLeft-r},[]),Y=(0,d.useCallback)(()=>{let e=N.current;!e||!P.current.dragging||(P.current.dragging=!1,e.style.cursor=``,e.style.userSelect=``,e.style.scrollSnapType=``)},[]),X=(0,d.useCallback)(e=>{P.current.moved&&(e.stopPropagation(),e.preventDefault(),P.current.moved=!1)},[]),Z=Math.max(1,M.length-V+1),Q=M.length>V,$=!!(x||S);return(0,f.jsx)(l,{className:[u,w].filter(Boolean).join(` `)||void 0,devInfoTags:_,nested:g,uid:v,spaceBefore:ee,spaceAfter:y,children:(0,f.jsx)(t,{sx:{...D,...E?{borderRadius:3,px:{xs:2.5,md:4},py:{xs:3,md:3.5},"& p, & h1, & h2, & h3, & h4, & h5, & h6, & .MuiTypography-root":{color:`inherit`}}:{}},children:(0,f.jsxs)(`div`,{className:`vitec_cards_carousel__inner`,children:[($||A&&Q)&&(0,f.jsxs)(`div`,{className:`vitec_cards_carousel__header`,children:[$&&(0,f.jsxs)(n,{spacing:.25,sx:{textAlign:C,alignItems:C===`center`?`center`:C===`right`?`flex-end`:`flex-start`},children:[x&&(0,f.jsx)(e,{variant:`h4`,children:x}),S&&(0,f.jsx)(e,{variant:`subtitle1`,color:`text.secondary`,children:S})]}),A&&Q&&(0,f.jsxs)(`div`,{className:`vitec_cards_carousel__arrows`,children:[(0,f.jsx)(`button`,{className:`vitec_cards_carousel__arrow`,onClick:()=>K(-1),disabled:!F,"aria-label":`Previous slide`,children:(0,f.jsx)(p,{})}),(0,f.jsx)(`button`,{className:`vitec_cards_carousel__arrow`,onClick:()=>K(1),disabled:!L,"aria-label":`Next slide`,children:(0,f.jsx)(m,{})})]})]}),(0,f.jsx)(`div`,{className:`vitec_cards_carousel__track vitec_cards_carousel__track--slides-${k}`,ref:N,onScroll:W,onMouseDown:q,onMouseMove:J,onMouseUp:Y,onMouseLeave:Y,onClickCapture:X,onDragStart:e=>e.preventDefault(),children:M.map(e=>(0,f.jsx)(d.Fragment,{children:(0,f.jsx)(`Line truncated
@@ -1 +0,0 @@
import{C as e,O as t,Q as n,Z as r,_ as i,c as a,d as o,k as s,n as c,u as l,w as u,x as d}from"./index-7LYai_r-.js";var f=n(),p=r();function m({element:n,nested:r,devInfoTags:m,uid:h,renderElement:g,columnSpans:_,spaceBefore:v,spaceAfter:y}){let b=n.headerLayout??n.data?.header_layout??n.content?.headerLayout,x=b===100?void 0:a(n),S=b===100?void 0:o(n),C=i(l(n)),w=C===`center`?`center`:C===`right`?`right`:`left`,T=C===`center`?`center`:C===`right`?`flex-end`:`flex-start`,E=n.appearance?.frameClass?.split(`,`).map(e=>e.trim()).includes(`vitec-full-width`)??!1,D=d(),O=n.type??`vitec_cols`,k=n.data?.tx_vitec_gap??n.gap??`3`,A=`${Math.min(5,Math.max(1,parseInt(k,10)))}rem`;return(0,p.jsx)(c,{className:O,devInfoTags:m,fullWidth:E,nested:r,uid:h,spaceBefore:v,spaceAfter:y,children:(0,p.jsxs)(`div`,{className:`${O}__inner`,children:[(x||S)&&(0,p.jsxs)(e,{spacing:.5,sx:{width:`100%`,textAlign:w,alignItems:T},children:[x&&(0,p.jsx)(s,{variant:`h5`,children:x}),S&&(0,p.jsx)(s,{variant:`subtitle1`,color:`text.secondary`,children:S})]}),(0,p.jsx)(u,{container:!0,spacing:A,children:n.items?.map((r,i)=>{let a=_[i]??Math.max(1,Math.floor(12/Math.max(n.items?.length??1,1))),o=r.config?.align||`stretch`,s=r.config?.justify||`flex-start`;return(0,p.jsx)(u,{size:{xs:12,md:a},sx:{alignSelf:o},children:(0,p.jsxs)(e,{spacing:1.5,children:[D&&(0,p.jsx)(t,{label:`TYPO3 slot: colPos${r.config?.colPos??i}`,size:`small`,variant:`outlined`,sx:{width:`fit-content`,height:22,"& .MuiChip-label":{px:.75,fontSize:`0.68rem`}}}),(0,p.jsx)(e,{spacing:2,sx:{justifyContent:s},children:r.contentElements?.map(e=>{let t=`${e.id??e.type??`nested`}-${r.config?.colPos??i}`;return(0,p.jsx)(f.Fragment,{children:g(e,!0)},t)})})]})},`${n.id??n.type??`grid`}-${r.config?.colPos??i}`)})})]})})}export{m as VitecCols};
@@ -0,0 +1 @@
import{A as e,E as t,O as n,T as r,b as i,d as a,k as o,l as s,m as c,ot as l,p as u,r as d,ut as f,w as p}from"./index-CM0zIqrs.js";var m=f(),h=l();function g({element:l,nested:f,devInfoTags:g,uid:_,className:v,renderElement:y,columnSpans:b,slotColPos:x,spaceBefore:S,spaceAfter:C}){let w=l.headerLayout??l.data?.header_layout??l.content?.headerLayout,T=w===100?void 0:a(l),E=w===100?void 0:c(l),D=i(u(l)),O=D===`center`?`center`:D===`right`?`right`:`left`,k=D===`center`?`center`:D===`right`?`flex-end`:`flex-start`,A=l.appearance?.frameClass?.split(`,`).map(e=>e.trim()).includes(`vitec-full-width`)??!1,j=p(),M=l.type??`vitec_cols`,N=l.tx_vitec_bg_variant,P=!!(N&&N!==`none`),F=P?s(N):{},I=l.data?.tx_vitec_gap??l.gap??`3`,L=`${Math.min(5,Math.max(1,parseInt(I,10)))}rem`,R=e=>({config:{colPos:e},contentElements:[]}),z=new Map((l.items??[]).map(e=>[e.config?.colPos??-1,e])),B;if(x&&x.length===b.length)B=x.map(e=>z.get(e)??R(e));else{let e=[...l.items??[]].sort((e,t)=>(e.config?.colPos??0)-(t.config?.colPos??0)),t=Math.max(0,b.length-e.length);B=[...e,...Array.from({length:t},(e,t)=>R(-(t+1)))]}return(0,h.jsx)(d,{className:v??M,devInfoTags:g,fullWidth:A,nested:f,uid:_,spaceBefore:S,spaceAfter:C,children:(0,h.jsx)(`div`,{className:`${M}__inner`,children:(0,h.jsxs)(n,{sx:{...F,...P?{borderRadius:3,px:{xs:2.5,md:4},py:{xs:3,md:3.5},"& p, & h1, & h2, & h3, & h4, & h5, & h6, & .MuiTypography-root":{color:`inherit`}}:{}},children:[(T||E)&&(0,h.jsxs)(r,{spacing:.5,sx:{width:`100%`,mb:2,textAlign:O,alignItems:k},children:[T&&(0,h.jsx)(e,{variant:`h5`,children:T}),E&&(0,h.jsx)(e,{variant:`subtitle1`,color:`text.secondary`,children:E})]}),(0,h.jsx)(t,{container:!0,spacing:L,children:B.map((e,n)=>{let i=b[n]??Math.max(1,Math.floor(12/Math.max(B.length,1))),a=e.config?.align||`stretch`,s=e.config?.justify||`flex-start`;return(0,h.jsx)(t,{size:{xs:12,md:i},sx:{alignSelf:a},children:(0,h.jsxs)(r,{spacing:1.5,children:[j&&(0,h.jsx)(o,{label:e.config?.colPos<0?`TYPO3 slot: empty`:`TYPO3 slot: colPos${e.config?.colPos??n}`,size:`small`,variant:`outlined`,sx:{width:`fit-content`,height:22,"& .MuiChip-label":{px:.75,fontSize:`0.68rem`}}}),(0,h.jsx)(r,{spacing:2,sx:{justifyContent:s},children:e.contentElements?.map(t=>{let r=`${t.id??t.type??`nested`}-${e.config?.colPos??n}`;return(0,h.jsx)(m.Fragment,{children:y(t,!0)},r)})})]})},`${l.id??l.type??`grid`}-${e.config?.colPos??n}`)})})]})})})}export{g as VitecCols};
@@ -0,0 +1 @@
import{ot as e,r as t}from"./index-CM0zIqrs.js";var n=e();function r(e){if(e?.length)return e.map(e=>`${e.url} ${e.descriptor}`).join(`, `)}function i({item:e}){return e.type===`image`&&e.image?.url?(0,n.jsxs)(`div`,{className:`vitec_columns__item vitec_columns__item--image`,children:[(0,n.jsx)(`img`,{className:`vitec_columns__image`,src:e.image.url,srcSet:r(e.image.srcset),sizes:`(max-width: 899px) 100vw, 50vw`,alt:e.image.alternative||e.headline||``,loading:`lazy`}),e.headline&&(0,n.jsx)(`p`,{className:`vitec_columns__item-caption`,children:e.headline})]}):e.type===`text`?(0,n.jsxs)(`div`,{className:`vitec_columns__item vitec_columns__item--text`,children:[e.headline&&(0,n.jsx)(`h3`,{className:`vitec_columns__item-headline`,children:e.headline}),e.text&&(0,n.jsx)(`div`,{className:`vitec_columns__item-body`,dangerouslySetInnerHTML:{__html:e.text}}),e.link&&e.linkLabel&&(0,n.jsx)(`a`,{className:`vitec_columns__item-link`,href:e.link,children:e.linkLabel})]}):null}function a({element:e,className:r,nested:a,devInfoTags:o,uid:s,spaceBefore:c,spaceAfter:l}){let u=e,d=u.columns,f=u.layout??`cols_50_50`,p=d?.left??[],m=d?.right??[];return!p.length&&!m.length?null:(0,n.jsx)(t,{className:r,devInfoTags:o,nested:a,uid:s,spaceBefore:c,spaceAfter:l,children:(0,n.jsxs)(`div`,{className:`vitec_columns vitec_columns--${f.replace(/_/g,`-`)}`,children:[p.length>0&&(0,n.jsx)(`div`,{className:`vitec_columns__col vitec_columns__col--left`,children:p.map((e,t)=>(0,n.jsx)(i,{item:e},t))}),m.length>0&&(0,n.jsx)(`div`,{className:`vitec_columns__col vitec_columns__col--right`,children:m.map((e,t)=>(0,n.jsx)(i,{item:e},t))})]})})}export{a as VitecColumns};
@@ -0,0 +1 @@
import{A as e,T as t,d as n,l as r,m as i,ot as a,r as o,ut as s}from"./index-CM0zIqrs.js";var c=s(),l=a();function u({element:a,nested:s,devInfoTags:u,uid:d,spaceBefore:f,spaceAfter:p,className:m,renderElement:h}){let g=n(a),_=i(a),v=a.tx_vitec_bg_variant,y=!!(v&&v!==`none`),b=r(v),x=[`vitec_container`,a.cssClass,m].filter(Boolean).join(` `),S=a.items?.flatMap(e=>e.contentElements??[])??[];return(0,l.jsx)(o,{className:x,devInfoTags:u,fullWidth:y&&!s,nested:s,uid:d,spaceBefore:f,spaceAfter:p,style:y?{background:b.background,color:b.color}:void 0,children:(0,l.jsx)(`div`,{className:`vitec_container__inner`,children:(0,l.jsxs)(`div`,{className:y?`vitec-content-box vitec_container__content`:`vitec_container__content`,children:[(g||_)&&(0,l.jsxs)(t,{spacing:.5,sx:{mb:2.5},children:[g&&(0,l.jsx)(e,{variant:`h4`,children:g}),_&&(0,l.jsx)(e,{variant:`subtitle1`,sx:y?{color:`rgba(var(--vitec-near-white), 0.65)`}:{color:`text.secondary`},children:_})]}),(0,l.jsx)(t,{spacing:2,children:S.map(e=>(0,l.jsx)(c.Fragment,{children:h(e,!0)},`${e.id??e.type}-${e.colPos}`))})]})})})}export{u as VitecContainer};
@@ -1 +0,0 @@
import{C as e,D as t,Q as n,Z as r,c as i,d as a,k as o,n as s,o as c}from"./index-7LYai_r-.js";var l=n(),u=r();function d({element:n,nested:r,devInfoTags:d,uid:f,spaceBefore:p,spaceAfter:m,className:h,renderElement:g}){let _=i(n),v=a(n),y=n.tx_vitec_bg_variant,b=!!(y&&y!==`none`),x=b?c(y):{},S=[`vitec_container`,n.cssClass,h].filter(Boolean).join(` `),C=n.items?.flatMap(e=>e.contentElements??[])??[];return(0,u.jsx)(s,{className:S,devInfoTags:d,nested:r,uid:f,spaceBefore:p,spaceAfter:m,children:(0,u.jsx)(`div`,{className:`vitec_container__inner`,children:(0,u.jsxs)(t,{sx:{...x,...b?{borderRadius:3,px:{xs:2.5,md:4},py:{xs:3,md:3.5}}:{},"& p, & h1, & h2, & h3, & h4, & h5, & h6, & .MuiTypography-root":{color:`inherit`}},children:[(_||v)&&(0,u.jsxs)(e,{spacing:.5,sx:{mb:2.5},children:[_&&(0,u.jsx)(o,{variant:`h4`,children:_}),v&&(0,u.jsx)(o,{variant:`subtitle1`,color:`text.secondary`,children:v})]}),(0,u.jsx)(e,{spacing:2,children:C.map(e=>(0,u.jsx)(l.Fragment,{children:g(e,!0)},`${e.id??e.type}-${e.colPos}`))})]})})})}export{d as VitecContainer};
@@ -1 +0,0 @@
import{C as e,D as t,S as n,Z as r,b as i,c as a,f as o,g as s,h as c,k as l,m as u,n as d,o as f,p,s as m,w as h}from"./index-7LYai_r-.js";var g=r();function _({element:r,className:_,nested:v,devInfoTags:y,uid:b,spaceBefore:x,spaceAfter:S}){let C=a(r),w=m(r),T=f(r.data?.background_variant),E=o(r.data?.background_image),D=o(r.data?.icon),O=p(r.data?.primary_cta),k=c(r.data?.primary_cta),A=p(r.data?.secondary_cta),j=c(r.data?.secondary_cta),M=r.data?.layout_variant??`stacked`,N=s(r.data?.button_style,`light`),P=s(r.data?.secondary_button_style,`ghost`),F=r.appearance?.frameClass?.split(`,`).map(e=>e.trim()).includes(`vitec-full-width`)??!1,I=M===`centered`,L=M===`split`,R=M===`compact`,z=M===`feature`,B=M===`icon_card`,V=R?{px:{xs:2,md:3},py:{xs:1.5,md:2}}:z?{px:{xs:3,md:5},py:{xs:4,md:5}}:{px:{xs:2.5,md:4},py:{xs:3,md:3.5}},H=R?120:z?320:200,U=z?`h3`:R?`h5`:`h4`,W=(0,g.jsxs)(e,{direction:L?`column`:{xs:`column`,sm:`row`},spacing:1.25,alignItems:I?`center`:void 0,children:[O&&(0,g.jsx)(n,{href:O,target:k??`_self`,variant:N,children:r.data?.primary_cta_label||u(r.data?.primary_cta,`Primary CTA`)}),A&&(0,g.jsx)(n,{href:A,target:j??`_self`,variant:P,children:r.data?.secondary_cta_label||u(r.data?.secondary_cta,`Secondary CTA`)})]});return(0,g.jsx)(d,{className:_,devInfoTags:y,fullWidth:F,nested:v,uid:b,spaceBefore:x,spaceAfter:S,children:(0,g.jsx)(`div`,{className:`vitec_ctabanner__inner vitec_ctabanner--${M}`,children:(0,g.jsxs)(t,{sx:{...T,position:`relative`,overflow:`hidden`,borderRadius:3,...V,minHeight:H},children:[E&&M!==`text_only`&&(0,g.jsx)(t,{sx:{position:`absolute`,inset:0,backgroundImage:`linear-gradient(90deg, rgba(var(--vitec-surface-dark), 0.9), rgba(var(--vitec-surface-dark), 0.45)), url(${E})`,backgroundSize:`cover`,backgroundPosition:`center`,opacity:.9}}),L?(0,g.jsxs)(h,{container:!0,spacing:4,alignItems:`center`,sx:{position:`relative`,zIndex:1},children:[(0,g.jsx)(h,{size:{xs:12,md:7},children:(0,g.jsxs)(e,{spacing:1.5,children:[C&&(0,g.jsx)(l,{variant:U,children:C}),w&&(0,g.jsx)(t,{sx:i,dangerouslySetInnerHTML:{__html:w}})]})}),(0,g.jsx)(h,{size:{xs:12,md:5},children:W})]}):(0,g.jsxs)(e,{spacing:R?1.5:2,sx:{position:`relative`,zIndex:1,maxWidth:I||z?760:640,textAlign:I?`center`:`left`,alignItems:I?`center`:`flex-start`,mx:I?`auto`:void 0},children:[B&&D&&(0,g.jsx)(t,{component:`img`,src:D,alt:``,sx:{height:48,width:`auto`,objectFit:`contain`}}),C&&(0,g.jsx)(l,{variant:U,children:C}),w&&(0,g.jsx)(t,{sx:i,dangerouslySetInnerHTML:{__html:w}}),W]})]})})})}export{_ as VitecCtaBanner};
@@ -0,0 +1 @@
import{A as e,C as t,E as n,O as r,T as i,_ as a,d as o,g as s,h as c,l,m as u,ot as d,r as f,t as p,u as m,v as h,y as g}from"./index-CM0zIqrs.js";var _=d();function v({element:d,className:v,nested:y,devInfoTags:b,uid:x,spaceBefore:S,spaceAfter:C}){let w=o(d),T=u(d),E=m(d),D=l(d.data?.background_variant),O=c(d.data?.background_image),k=c(d.data?.icon),A=s(d.data?.primary_cta),j=h(d.data?.primary_cta),M=s(d.data?.secondary_cta),N=h(d.data?.secondary_cta),P=d.data?.layout_variant??`stacked`,F=g(d.data?.button_style,`light`),I=g(d.data?.secondary_button_style,`ghost`),L=d.appearance?.frameClass?.split(`,`).map(e=>e.trim()).includes(`vitec-full-width`)??!1,R=P===`centered`,z=P===`split`,B=P===`compact`,V=P===`feature`,H=P===`icon_card`,U=B?{px:{xs:2,md:3},py:{xs:1.5,md:2}}:V?{px:{xs:3,md:5},py:{xs:4,md:5}}:{px:{xs:2.5,md:4},py:{xs:3,md:3.5}},W=B?120:V?320:200,G=V?`h3`:B?`h5`:`h4`,K=(0,_.jsxs)(i,{direction:z?`column`:{xs:`column`,sm:`row`},spacing:1.25,alignItems:R?`center`:void 0,children:[A&&(0,_.jsx)(p,{href:A,target:j??`_self`,variant:F,children:d.data?.primary_cta_label||a(d.data?.primary_cta,`Primary CTA`)}),M&&(0,_.jsx)(p,{href:M,target:N??`_self`,variant:I,children:d.data?.secondary_cta_label||a(d.data?.secondary_cta,`Secondary CTA`)})]});return(0,_.jsx)(f,{className:v,devInfoTags:b,fullWidth:L,nested:y,uid:x,spaceBefore:S,spaceAfter:C,children:(0,_.jsx)(`div`,{className:`vitec_ctabanner__inner vitec_ctabanner--${P}`,children:(0,_.jsxs)(r,{sx:{...D,position:`relative`,overflow:`hidden`,borderRadius:3,...U,minHeight:W},children:[O&&P!==`text_only`&&(0,_.jsx)(r,{sx:{position:`absolute`,inset:0,backgroundImage:`linear-gradient(90deg, rgba(var(--vitec-surface-dark), 0.9), rgba(var(--vitec-surface-dark), 0.45)), url(${O})`,backgroundSize:`cover`,backgroundPosition:`center`,opacity:.9}}),z?(0,_.jsxs)(n,{container:!0,spacing:4,alignItems:`center`,sx:{position:`relative`,zIndex:1},children:[(0,_.jsx)(n,{size:{xs:12,md:7},children:(0,_.jsxs)(i,{spacing:1.5,children:[w&&(0,_.jsx)(e,{variant:G,children:w}),T&&(0,_.jsx)(e,{variant:`subtitle1`,sx:{opacity:.85},children:T}),E&&(0,_.jsx)(r,{sx:t,dangerouslySetInnerHTML:{__html:E}})]})}),(0,_.jsx)(n,{size:{xs:12,md:5},children:K})]}):(0,_.jsxs)(i,{spacing:B?1.5:2,sx:{position:`relative`,zIndex:1,maxWidth:R||V?760:640,textAlign:R?`center`:`left`,alignItems:R?`center`:`flex-start`,mx:R?`auto`:void 0},children:[H&&k&&(0,_.jsx)(r,{component:`img`,src:k,alt:``,sx:{height:48,width:`auto`,objectFit:`contain`}}),w&&(0,_.jsx)(e,{variant:G,children:w}),T&&(0,_.jsx)(e,{variant:`subtitle1`,sx:{opacity:.85},children:T}),E&&(0,_.jsx)(r,{sx:t,dangerouslySetInnerHTML:{__html:E}}),K]})]})})})}export{v as VitecCtaBanner};
@@ -0,0 +1 @@
import{A as e,b as t,d as n,f as r,ot as i,p as a,r as o,ut as s,x as c}from"./index-CM0zIqrs.js";var l=s(),u=i();function d({item:e}){let t=e.logo?.url,n=e.logo?.alternative||e.logo?.title||e.name,r=e.logo?.srcset?.map(e=>`${e.url} ${e.descriptor}`).join(`, `);return t?(0,u.jsx)(`img`,{src:t,srcSet:r||void 0,sizes:`200px`,alt:n,className:`vitec_customerlogos__logo-img${e.color?``:` vitec_customerlogos__logo-img--grey`}`,loading:`lazy`,decoding:`async`}):null}function f({logos:e}){let t=[...e,...e];return(0,u.jsx)(`div`,{className:`vitec_customerlogos__marquee`,"aria-label":`Customer logos`,"aria-hidden":`true`,children:(0,u.jsx)(`div`,{className:`vitec_customerlogos__marquee-track`,children:t.map((e,t)=>(0,u.jsx)(`div`,{className:`vitec_customerlogos__marquee-item`,children:(0,u.jsx)(d,{item:e})},`${e.id}-${t}`))})})}function p({logos:e}){return(0,u.jsx)(`ul`,{className:`vitec_customerlogos__grid`,"aria-label":`Customer logos`,children:e.map(e=>(0,u.jsx)(`li`,{className:`vitec_customerlogos__grid-item`,children:(0,u.jsx)(d,{item:e})},e.id))})}var m=24;function h(){return(0,u.jsx)(`svg`,{width:`18`,height:`18`,viewBox:`0 0 18 18`,fill:`none`,"aria-hidden":`true`,children:(0,u.jsx)(`path`,{d:`M11 4.5L6.5 9l4.5 4.5`,stroke:`currentColor`,strokeWidth:`1.75`,strokeLinecap:`round`,strokeLinejoin:`round`})})}function g(){return(0,u.jsx)(`svg`,{width:`18`,height:`18`,viewBox:`0 0 18 18`,fill:`none`,"aria-hidden":`true`,children:(0,u.jsx)(`path`,{d:`M7 4.5L11.5 9 7 13.5`,stroke:`currentColor`,strokeWidth:`1.75`,strokeLinecap:`round`,strokeLinejoin:`round`})})}function _({logos:e}){let t=(0,l.useRef)(null),n=(0,l.useRef)({dragging:!1,startX:0,startScrollLeft:0,moved:!1}),[r,i]=(0,l.useState)(!1),[a,o]=(0,l.useState)(!1),[s,c]=(0,l.useState)(0),[f,p]=(0,l.useState)(5),_=(0,l.useCallback)(()=>{let n=t.current;if(!n)return;let{scrollLeft:r,scrollWidth:a,clientWidth:s}=n;i(r>4),o(r<a-s-4);let l=n.children[0];if(l){let t=l.offsetWidth+m;if(t>0){let i=Math.round(r/t),a=Math.max(1,Math.floor((n.clientWidth+m)/t));p(a);let o=Math.max(1,e.length-a+1);c(Math.min(i,o-1))}}},[e.length]);(0,l.useEffect)(()=>{_();let e=new ResizeObserver(_);return t.current&&e.observe(t.current),()=>e.disconnect()},[_]),(0,l.useEffect)(()=>{let e=t.current;if(!e)return;let r=0,i=0,a=0,o=null,s=t=>{let s=t.touches[0];r=s.pageX,i=s.pageY,a=e.scrollLeft,o=null,n.current={dragging:!0,startX:s.pageX,startScrollLeft:e.scrollLeft,moved:!1},e.style.scrollSnapType=`none`},c=t=>{if(!n.current.dragging)return;let s=t.touches[0],c=s.pageX-r,l=s.pageY-i;o===null&&(o=Math.abs(c)>Math.abs(l)),o?(t.preventDefault(),Math.abs(c)>3&&(n.current.moved=!0),e.scrollLeft=a-c):(e.style.scrollSnapType=``,n.current.dragging=!1)},l=()=>{n.current.dragging&&(n.current.dragging=!1,e.style.scrollSnapType=``)};return e.addEventListener(`touchstart`,s,{passive:!0}),e.addEventListener(`touchmove`,c,{passive:!1}),e.addEventListener(`touchend`,l,{passive:!0}),()=>{e.removeEventListener(`touchstart`,s),e.removeEventListener(`touchmove`,c),e.removeEventListener(`touchend`,l)}},[]);let v=(0,l.useCallback)(e=>{let n=t.current;if(!n||!n.children[0])return;let r=n.children[0].offsetWidth+m;n.scrollBy({left:e*r,behavior:`smooth`})},[]),y=(0,l.useCallback)(e=>{let n=t.current;if(!n||!n.children[0])return;let r=n.children[0].offsetWidth+m;n.scrollTo({left:e*r,behavior:`smooth`})},[]),b=(0,l.useCallback)(e=>{let r=t.current;r&&(n.current={dragging:!0,startX:e.pageX,startScrollLeft:r.scrollLeft,moved:!1},r.style.scrollSnapType=`none`,r.style.cursor=`grabbing`,r.style.userSelect=`none`)},[]),x=(0,l.useCallback)(e=>{let r=n.current;if(!r.dragging)return;let i=t.current;if(!i)return;let a=e.pageX-r.startX;Math.abs(a)>3&&(r.moved=!0),i.scrollLeft=r.startScrollLeft-a},[]),S=(0,l.useCallback)(()=>{let e=t.current;!e||!n.current.dragging||(n.current.dragging=!1,e.style.cursor=``,e.style.userSelect=``,e.style.scrollSnapType=``)},[]),C=e.length>f,w=Math.max(1,e.length-f+1);return(0,u.jsxs)(`div`,{className:`vitec_customerlogos__carousel`,children:[C&&(0,u.jsx)(`div`,{className:`vitec_customerlogos__carousel-header`,children:(0,u.jsxs)(`div`,{className:`vitec_customerlogos__carousel-arrows`,children:[(0,u.jsx)(`button`,{className:`vitec_customerlogos__carousel-arrow`,onClick:()=>v(-1),disabled:!r,"aria-label":`Previous`,children:(0,u.jsx)(h,{})}),(0,u.jsx)(`button`,{className:`vitec_customerlogos__carousel-arrow`,onClick:()=>v(1),disabled:!a,"aria-label":`Next`,children:(0,u.jsx)(g,{})})]})}),(0,u.jsx)(`div`,{className:`vitec_customerlogos__carousel-track`,ref:t,onScroll:_,onMouseDown:b,onMouseMove:x,onMouseUp:S,onMouseLeave:S,onDragStart:e=>e.preventDefault(),children:e.map(e=>(0,u.jsx)(`div`,{className:`vitec_customerlogos__carousel-slide`,children:(0,u.jsx)(d,{item:e})},e.id))}),C&&(0,u.jsx)(`div`,{className:`vitec_customerlogos__carousel-dots`,role:`tablist`,children:Array.from({length:w}).map((e,t)=>(0,u.jsx)(`button`,{role:`tab`,"aria-selected":t===s,"aria-label":`Position ${t+1}`,className:`vit Line truncated
@@ -1 +0,0 @@
import{C as e,D as t,O as n,Q as r,V as i,Z as a,a as o,k as s,n as c,tt as l,w as u}from"./index-7LYai_r-.js";import{t as d}from"./jszip.min-B_jfdBDa.js";var f=l(r(),1),p=l(d(),1),m=a(),h=`vitec_datasheets_view`,g=`vitec_datasheets_favorites`,_=e=>e?e>=1024*1024?`${(e/(1024*1024)).toFixed(1)} MB`:`${Math.round(e/1024)} KB`:``;async function v(e,t){let n=new p.default;await Promise.all(e.map(async e=>{let t=e.datasheet?.file?.url;if(!t)return;let r=await fetch(i(t,o.base_url,o.router_mode));r.ok&&n.file(e.datasheet?.file?.name??`${e.product?.slug??`datasheet`}.pdf`,await r.blob())}));let r=await n.generateAsync({type:`blob`}),a=Object.assign(document.createElement(`a`),{href:URL.createObjectURL(r),download:t});a.click(),URL.revokeObjectURL(a.href)}function y({ext:e}){return e?(0,m.jsx)(s,{component:`span`,sx:{fontSize:`0.5625rem`,fontWeight:700,letterSpacing:`0.06em`,px:`0.3125rem`,py:`0.125rem`,borderRadius:`0.1875rem`,background:`rgba(var(--vitec-brand), 1)`,color:`#fff`,textTransform:`uppercase`,flexShrink:0},children:e}):null}function b({href:e}){return(0,m.jsxs)(t,{component:`a`,href:e,target:`_blank`,rel:`noreferrer noopener`,sx:{display:`inline-flex`,alignItems:`center`,gap:`0.3rem`,fontSize:`0.8125rem`,fontWeight:600,color:`rgba(var(--vitec-orange), 1)`,textDecoration:`none`,"&:hover":{color:`rgba(var(--vitec-orange-dark), 1)`},flexShrink:0},children:[(0,m.jsxs)(`svg`,{width:`13`,height:`13`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2.5`,strokeLinecap:`round`,strokeLinejoin:`round`,"aria-hidden":`true`,children:[(0,m.jsx)(`path`,{d:`M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4`}),(0,m.jsx)(`polyline`,{points:`7 10 12 15 17 10`}),(0,m.jsx)(`line`,{x1:`12`,y1:`15`,x2:`12`,y2:`3`})]}),`Download`]})}function x({active:e,onToggle:t,size:n=18}){return(0,m.jsx)(`button`,{onClick:t,title:e?`Remove from favorites`:`Add to favorites`,style:{display:`flex`,alignItems:`center`,justifyContent:`center`,padding:0,border:`none`,outline:`none`,background:`none`,cursor:`pointer`,transition:`transform 0.15s`,lineHeight:0},onMouseEnter:e=>{e.currentTarget.style.transform=`scale(1.2)`},onMouseLeave:e=>{e.currentTarget.style.transform=`scale(1)`},children:(0,m.jsx)(`svg`,{width:n,height:n,viewBox:`0 0 24 24`,fill:e?`#f59e0b`:`none`,stroke:e?`#f59e0b`:`#9ca3af`,strokeWidth:`1.75`,strokeLinecap:`round`,strokeLinejoin:`round`,"aria-hidden":`true`,children:(0,m.jsx)(`polygon`,{points:`12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2`})})})}function S(){return(0,m.jsxs)(`svg`,{width:`16`,height:`16`,viewBox:`0 0 16 16`,"aria-hidden":`true`,style:{display:`block`},children:[(0,m.jsx)(`rect`,{x:`1`,y:`1`,width:`6`,height:`6`,rx:`1`,fill:`currentColor`}),(0,m.jsx)(`rect`,{x:`9`,y:`1`,width:`6`,height:`6`,rx:`1`,fill:`currentColor`}),(0,m.jsx)(`rect`,{x:`1`,y:`9`,width:`6`,height:`6`,rx:`1`,fill:`currentColor`}),(0,m.jsx)(`rect`,{x:`9`,y:`9`,width:`6`,height:`6`,rx:`1`,fill:`currentColor`})]})}function C(){return(0,m.jsxs)(`svg`,{width:`16`,height:`16`,viewBox:`0 0 16 16`,"aria-hidden":`true`,style:{display:`block`},children:[(0,m.jsx)(`rect`,{x:`1`,y:`2`,width:`14`,height:`2.5`,rx:`1`,fill:`currentColor`}),(0,m.jsx)(`rect`,{x:`1`,y:`7`,width:`14`,height:`2.5`,rx:`1`,fill:`currentColor`}),(0,m.jsx)(`rect`,{x:`1`,y:`11.5`,width:`14`,height:`2.5`,rx:`1`,fill:`currentColor`})]})}function w({view:e,onChange:t}){let n=e=>({display:`flex`,alignItems:`center`,justifyContent:`center`,width:`2rem`,height:`2rem`,padding:0,border:`none`,borderRadius:`0.25rem`,background:e?`rgba(var(--vitec-brand), 1)`:`transparent`,color:e?`#ffffff`:`#6b7280`,cursor:e?`default`:`pointer`,transition:`background 0.15s, color 0.15s`});return(0,m.jsxs)(`div`,{style:{display:`flex`,border:`1px solid #e5e7eb`,borderRadius:`0.375rem`,padding:`0.1875rem`,gap:`0.1875rem`,background:`#fff`},children:[(0,m.jsx)(`button`,{onClick:()=>t(`grid`),title:`Grid view`,style:n(e===`grid`),children:(0,m.jsx)(S,{})}),(0,m.jsx)(`button`,{onClick:()=>t(`table`),title:`Table view`,style:n(e===`table`),children:(0,m.jsx)(C,{})})]})}function T({value:e,onChange:n}){return(0,m.jsxs)(t,{sx:{display:`flex`,alignItems:`center`,gap:`0.625rem`,px:`0.875rem`,py:`0.5rem`,borderRadius:`0.5rem`,border:`1.5px solid`,borderColor:e?`rgba(var(--vitec-brand), 1)`:`divider`,bgcolor:`#fff`,maxWidth:`24rem`,transition:`border-color 0.15s`,"&:focus-within":{borderColor:`rgba(var(--vitec-brand), 1)`}},children:[(0,m.jsx)(t,{sx:{color:`text.disabled`,flexShrink:0,display:`flex`},children:(0,m.jsxs)(`svg`,{width:`15`,height:`15`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,m.jsx)(`circle`,{cx:`11`,cy:`11`,r:`8`}),(0,m.jsx)(`line`,{x1:`21`,y1:`21`,x2:`16.65`,y2:`16.65`})]})}),(0,m.jsx)(t,{component:`input`,value:e,onChange:e=>n(e.target.value),placeholder:`Search datasheets…`,sx:{flex:1,border:`none`,outline:`none`,background:`transparent`,fontSize:`0.875 Line truncated
@@ -0,0 +1 @@
import{A as e,E as t,J as n,O as r,T as i,c as a,k as o,mt as s,ot as c,r as l,ut as u}from"./index-CM0zIqrs.js";import{t as d}from"./jszip.min-DxLKr7hR.js";var f=s(u(),1),p=s(d(),1),m=c(),h=`vitec_datasheets_view`,g=`vitec_datasheets_favorites`,_=e=>e?e>=1024*1024?`${(e/(1024*1024)).toFixed(1)} MB`:`${Math.round(e/1024)} KB`:``;async function v(e,t){let r=new p.default;await Promise.all(e.map(async e=>{let t=e.datasheet?.file?.url;if(!t)return;let i=await fetch(n(t,a.base_url,a.router_mode));i.ok&&r.file(e.datasheet?.file?.name??`${e.product?.slug??`datasheet`}.pdf`,await i.blob())}));let i=await r.generateAsync({type:`blob`}),o=Object.assign(document.createElement(`a`),{href:URL.createObjectURL(i),download:t});o.click(),URL.revokeObjectURL(o.href)}function y({ext:t}){return t?(0,m.jsx)(e,{component:`span`,sx:{fontSize:`0.5625rem`,fontWeight:700,letterSpacing:`0.06em`,px:`0.3125rem`,py:`0.125rem`,borderRadius:`0.1875rem`,background:`rgba(var(--vitec-brand), 1)`,color:`#fff`,textTransform:`uppercase`,flexShrink:0},children:t}):null}function b({href:e}){return(0,m.jsxs)(r,{component:`a`,href:e,target:`_blank`,rel:`noreferrer noopener`,sx:{display:`inline-flex`,alignItems:`center`,gap:`0.3rem`,fontSize:`0.8125rem`,fontWeight:600,color:`rgba(var(--vitec-orange), 1)`,textDecoration:`none`,"&:hover":{color:`rgba(var(--vitec-orange-dark), 1)`},flexShrink:0},children:[(0,m.jsxs)(`svg`,{width:`13`,height:`13`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2.5`,strokeLinecap:`round`,strokeLinejoin:`round`,"aria-hidden":`true`,children:[(0,m.jsx)(`path`,{d:`M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4`}),(0,m.jsx)(`polyline`,{points:`7 10 12 15 17 10`}),(0,m.jsx)(`line`,{x1:`12`,y1:`15`,x2:`12`,y2:`3`})]}),`Download`]})}function x({active:e,onToggle:t,size:n=18}){return(0,m.jsx)(`button`,{onClick:t,title:e?`Remove from favorites`:`Add to favorites`,style:{display:`flex`,alignItems:`center`,justifyContent:`center`,padding:0,border:`none`,outline:`none`,background:`none`,cursor:`pointer`,transition:`transform 0.15s`,lineHeight:0},onMouseEnter:e=>{e.currentTarget.style.transform=`scale(1.2)`},onMouseLeave:e=>{e.currentTarget.style.transform=`scale(1)`},children:(0,m.jsx)(`svg`,{width:n,height:n,viewBox:`0 0 24 24`,fill:e?`#f59e0b`:`none`,stroke:e?`#f59e0b`:`#9ca3af`,strokeWidth:`1.75`,strokeLinecap:`round`,strokeLinejoin:`round`,"aria-hidden":`true`,children:(0,m.jsx)(`polygon`,{points:`12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2`})})})}function S(){return(0,m.jsxs)(`svg`,{width:`16`,height:`16`,viewBox:`0 0 16 16`,"aria-hidden":`true`,style:{display:`block`},children:[(0,m.jsx)(`rect`,{x:`1`,y:`1`,width:`6`,height:`6`,rx:`1`,fill:`currentColor`}),(0,m.jsx)(`rect`,{x:`9`,y:`1`,width:`6`,height:`6`,rx:`1`,fill:`currentColor`}),(0,m.jsx)(`rect`,{x:`1`,y:`9`,width:`6`,height:`6`,rx:`1`,fill:`currentColor`}),(0,m.jsx)(`rect`,{x:`9`,y:`9`,width:`6`,height:`6`,rx:`1`,fill:`currentColor`})]})}function C(){return(0,m.jsxs)(`svg`,{width:`16`,height:`16`,viewBox:`0 0 16 16`,"aria-hidden":`true`,style:{display:`block`},children:[(0,m.jsx)(`rect`,{x:`1`,y:`2`,width:`14`,height:`2.5`,rx:`1`,fill:`currentColor`}),(0,m.jsx)(`rect`,{x:`1`,y:`7`,width:`14`,height:`2.5`,rx:`1`,fill:`currentColor`}),(0,m.jsx)(`rect`,{x:`1`,y:`11.5`,width:`14`,height:`2.5`,rx:`1`,fill:`currentColor`})]})}function w({view:e,onChange:t}){let n=e=>({display:`flex`,alignItems:`center`,justifyContent:`center`,width:`2rem`,height:`2rem`,padding:0,border:`none`,borderRadius:`0.25rem`,background:e?`rgba(var(--vitec-brand), 1)`:`transparent`,color:e?`#ffffff`:`#6b7280`,cursor:e?`default`:`pointer`,transition:`background 0.15s, color 0.15s`});return(0,m.jsxs)(`div`,{style:{display:`flex`,border:`1px solid #e5e7eb`,borderRadius:`0.375rem`,padding:`0.1875rem`,gap:`0.1875rem`,background:`#fff`},children:[(0,m.jsx)(`button`,{onClick:()=>t(`grid`),title:`Grid view`,style:n(e===`grid`),children:(0,m.jsx)(S,{})}),(0,m.jsx)(`button`,{onClick:()=>t(`table`),title:`Table view`,style:n(e===`table`),children:(0,m.jsx)(C,{})})]})}function T({value:e,onChange:t}){return(0,m.jsxs)(r,{sx:{display:`flex`,alignItems:`center`,gap:`0.625rem`,px:`0.875rem`,py:`0.5rem`,borderRadius:`0.5rem`,border:`1.5px solid`,borderColor:e?`rgba(var(--vitec-brand), 1)`:`divider`,bgcolor:`#fff`,maxWidth:`24rem`,transition:`border-color 0.15s`,"&:focus-within":{borderColor:`rgba(var(--vitec-brand), 1)`}},children:[(0,m.jsx)(r,{sx:{color:`text.disabled`,flexShrink:0,display:`flex`},children:(0,m.jsxs)(`svg`,{width:`15`,height:`15`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,m.jsx)(`circle`,{cx:`11`,cy:`11`,r:`8`}),(0,m.jsx)(`line`,{x1:`21`,y1:`21`,x2:`16.65`,y2:`16.65`})]})}),(0,m.jsx)(r,{component:`input`,value:e,onChange:e=>t(e.target.value),placeholder:`Search datasheets…`,sx:{flex:1,border:`none`,outline:`none`,background:`transparent`,fontSize:`0.8 Line truncated
@@ -1 +0,0 @@
import{T as e,Z as t,n}from"./index-7LYai_r-.js";var r=t();function i({className:t,nested:i,devInfoTags:a,uid:o,spaceBefore:s,spaceAfter:c}){return(0,r.jsx)(n,{className:t,devInfoTags:a,nested:i,uid:o,spaceBefore:s,spaceAfter:c,children:(0,r.jsx)(`div`,{className:`vitec_divider__inner`,children:(0,r.jsx)(e,{})})})}export{i as VitecDivider};
@@ -0,0 +1 @@
import{D as e,ot as t,r as n}from"./index-CM0zIqrs.js";var r=t();function i({className:t,nested:i,devInfoTags:a,uid:o,spaceBefore:s,spaceAfter:c}){return(0,r.jsx)(n,{className:t,devInfoTags:a,nested:i,uid:o,spaceBefore:s,spaceAfter:c,children:(0,r.jsx)(`div`,{className:`vitec_divider__inner`,children:(0,r.jsx)(e,{})})})}export{i as VitecDivider};
@@ -0,0 +1 @@
import{A as e,J as t,O as n,T as r,c as i,d as a,ot as o,r as s}from"./index-CM0zIqrs.js";var c=o(),l=e=>e?e>=1024*1024?`${(e/(1024*1024)).toFixed(1)} MB`:`${Math.round(e/1024)} KB`:``,u={brochure:{background:`linear-gradient(135deg, rgba(var(--vitec-graphite), 1) 0%, rgba(var(--vitec-graphite-mid), 1) 100%)`,color:`#fff`},datasheet:{background:`linear-gradient(135deg, rgba(var(--vitec-brand), 1) 0%, rgba(var(--vitec-navy-deep), 1) 100%)`,color:`#fff`},neutral:{background:`rgba(var(--vitec-surface-light, 245 246 248), 1)`,color:`inherit`}},d={brochure:`Brochure`,datasheet:`Datasheet`,neutral:`Download`};function f(e){return e===`brochure`?`brochure`:e===`datasheet`?`datasheet`:`neutral`}function p({element:o,className:p,nested:h,devInfoTags:g,uid:_,spaceBefore:v,spaceAfter:y}){let b=o.content?.downloadcard,x=o.data?.downloadcard,S=b?.download??x?.download,C=f((x?.settings??b?.settings)?.layout),w=u[C],T=d[C],E=a(o)||S?.title,D=S?.file,O=D?.url?t(D.url,i.base_url,i.router_mode):void 0,k=D?.thumbnail?t(D.thumbnail,i.base_url,i.router_mode):void 0,A=l(D?.size),j=C!==`neutral`;return(0,c.jsx)(s,{className:p,devInfoTags:g,nested:h,uid:_,spaceBefore:v,spaceAfter:y,children:(0,c.jsxs)(n,{component:`a`,href:O??`#`,target:`_blank`,rel:`noreferrer noopener`,"aria-label":E??`Download`,className:`vitec_downloadcard vitec_downloadcard--${C}`,sx:{display:`flex`,textDecoration:`none`,color:`inherit`,borderRadius:`0.75rem`,overflow:`hidden`,boxShadow:`0 0.125rem 0.75rem rgba(0,0,0,0.08)`,minHeight:`9rem`,transition:`box-shadow 0.2s ease, transform 0.2s ease`,"&:hover":{boxShadow:`0 0.5rem 1.75rem rgba(0,0,0,0.15)`,transform:`translateY(-0.125rem)`}},children:[(0,c.jsx)(n,{sx:{width:`38%`,flexShrink:0,bgcolor:`#fff`,display:`flex`,alignItems:`center`,justifyContent:`center`,p:k?0:`1rem`,overflow:`hidden`},children:k?(0,c.jsx)(n,{component:`img`,src:k,alt:``,loading:`lazy`,sx:{width:`100%`,height:`100%`,objectFit:`contain`,objectPosition:`top center`,display:`block`,p:`0.75rem`}}):(0,c.jsx)(n,{sx:{color:`text.disabled`,opacity:.4},children:(0,c.jsxs)(`svg`,{width:`40`,height:`40`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`1.25`,strokeLinecap:`round`,strokeLinejoin:`round`,"aria-hidden":`true`,children:[(0,c.jsx)(`path`,{d:`M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z`}),(0,c.jsx)(`polyline`,{points:`14 2 14 8 20 8`})]})})}),(0,c.jsxs)(n,{sx:{flex:1,...w,display:`flex`,flexDirection:`column`,justifyContent:`space-between`,p:`1.25rem 1.25rem 1rem`,gap:`0.5rem`},children:[(0,c.jsxs)(r,{direction:`row`,alignItems:`center`,spacing:1,children:[(0,c.jsx)(e,{component:`span`,sx:{fontSize:`0.6875rem`,fontWeight:700,letterSpacing:`0.06em`,textTransform:`uppercase`,opacity:j?.85:.6,whiteSpace:`nowrap`,color:`inherit`},children:T}),(0,c.jsx)(n,{sx:{flex:1,height:`1px`,bgcolor:j?`rgba(255,255,255,0.3)`:`rgba(0,0,0,0.15)`}})]}),E&&(0,c.jsx)(e,{variant:`h6`,sx:{fontWeight:600,lineHeight:1.25,fontSize:`clamp(0.9375rem, 2vw, 1.25rem)`,color:`inherit`,flex:1},children:E}),(0,c.jsx)(r,{direction:`row`,alignItems:`center`,spacing:.625,sx:{mt:`auto`},children:C===`neutral`?(0,c.jsxs)(n,{component:`span`,sx:{display:`inline-flex`,alignItems:`center`,gap:`0.375rem`,fontSize:`0.8125rem`,fontWeight:600,px:`0.875rem`,py:`0.4375rem`,borderRadius:`0.375rem`,border:`1.5px solid currentColor`,color:`rgba(var(--vitec-brand), 1)`},children:[(0,c.jsx)(m,{}),`Download`,A&&(0,c.jsxs)(e,{component:`span`,variant:`caption`,sx:{opacity:.6,ml:.25},children:[`(`,A,`)`]})]}):(0,c.jsxs)(n,{component:`span`,sx:{display:`inline-flex`,alignItems:`center`,gap:`0.375rem`,fontSize:`0.8125rem`,fontWeight:600,color:j?`rgba(255,255,255,0.85)`:`inherit`,"&:hover":{color:j?`#fff`:`inherit`}},children:[(0,c.jsx)(m,{}),`Download`,A&&(0,c.jsxs)(e,{component:`span`,variant:`caption`,sx:{opacity:.6,ml:.25},children:[`(`,A,`)`]})]})})]})]})})}function m(){return(0,c.jsxs)(`svg`,{width:`13`,height:`13`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2.5`,strokeLinecap:`round`,strokeLinejoin:`round`,"aria-hidden":`true`,children:[(0,c.jsx)(`path`,{d:`M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4`}),(0,c.jsx)(`polyline`,{points:`7 10 12 15 17 10`}),(0,c.jsx)(`line`,{x1:`12`,y1:`15`,x2:`12`,y2:`3`})]})}export{p as VitecDownloadCard};
@@ -1 +0,0 @@
import{C as e,D as t,V as n,Z as r,a as i,c as a,k as o,n as s}from"./index-7LYai_r-.js";var c=r(),l=e=>e?e>=1024*1024?`${(e/(1024*1024)).toFixed(1)} MB`:`${Math.round(e/1024)} KB`:``,u={brochure:{background:`linear-gradient(135deg, rgba(var(--vitec-orange), 1) 0%, rgba(var(--vitec-orange-dark), 1) 100%)`,color:`#fff`},datasheet:{background:`linear-gradient(135deg, rgba(var(--vitec-brand), 1) 0%, rgba(var(--vitec-navy-deep), 1) 100%)`,color:`#fff`},neutral:{background:`rgba(var(--vitec-surface-light, 245 246 248), 1)`,color:`inherit`}},d={brochure:`Brochure`,datasheet:`Datasheet`,neutral:`Download`};function f(e){return e===`brochure`?`brochure`:e===`datasheet`?`datasheet`:`neutral`}function p({element:r,className:p,nested:h,devInfoTags:g,uid:_,spaceBefore:v,spaceAfter:y}){let b=r.content?.downloadcard,x=r.data?.downloadcard,S=b?.download??x?.download,C=f((x?.settings??b?.settings)?.layout),w=u[C],T=d[C],E=a(r)||S?.title,D=S?.file,O=D?.url?n(D.url,i.base_url,i.router_mode):void 0,k=D?.thumbnail?n(D.thumbnail,i.base_url,i.router_mode):void 0,A=l(D?.size),j=C!==`neutral`;return(0,c.jsx)(s,{className:p,devInfoTags:g,nested:h,uid:_,spaceBefore:v,spaceAfter:y,children:(0,c.jsxs)(t,{component:`a`,href:O??`#`,target:`_blank`,rel:`noreferrer noopener`,"aria-label":E??`Download`,className:`vitec_downloadcard vitec_downloadcard--${C}`,sx:{display:`flex`,textDecoration:`none`,color:`inherit`,borderRadius:`0.75rem`,overflow:`hidden`,boxShadow:`0 0.125rem 0.75rem rgba(0,0,0,0.08)`,minHeight:`9rem`,transition:`box-shadow 0.2s ease, transform 0.2s ease`,"&:hover":{boxShadow:`0 0.5rem 1.75rem rgba(0,0,0,0.15)`,transform:`translateY(-0.125rem)`}},children:[(0,c.jsx)(t,{sx:{width:`38%`,flexShrink:0,bgcolor:`#fff`,display:`flex`,alignItems:`center`,justifyContent:`center`,p:k?0:`1rem`,overflow:`hidden`},children:k?(0,c.jsx)(t,{component:`img`,src:k,alt:``,loading:`lazy`,sx:{width:`100%`,height:`100%`,objectFit:`contain`,objectPosition:`top center`,display:`block`,p:`0.75rem`}}):(0,c.jsx)(t,{sx:{color:`text.disabled`,opacity:.4},children:(0,c.jsxs)(`svg`,{width:`40`,height:`40`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`1.25`,strokeLinecap:`round`,strokeLinejoin:`round`,"aria-hidden":`true`,children:[(0,c.jsx)(`path`,{d:`M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z`}),(0,c.jsx)(`polyline`,{points:`14 2 14 8 20 8`})]})})}),(0,c.jsxs)(t,{sx:{flex:1,...w,display:`flex`,flexDirection:`column`,justifyContent:`space-between`,p:`1.25rem 1.25rem 1rem`,gap:`0.5rem`},children:[(0,c.jsxs)(e,{direction:`row`,alignItems:`center`,spacing:1,children:[(0,c.jsx)(o,{component:`span`,sx:{fontSize:`0.6875rem`,fontWeight:700,letterSpacing:`0.06em`,textTransform:`uppercase`,opacity:j?.85:.6,whiteSpace:`nowrap`,color:`inherit`},children:T}),(0,c.jsx)(t,{sx:{flex:1,height:`1px`,bgcolor:j?`rgba(255,255,255,0.3)`:`rgba(0,0,0,0.15)`}})]}),E&&(0,c.jsx)(o,{variant:`h6`,sx:{fontWeight:600,lineHeight:1.25,fontSize:`clamp(0.9375rem, 2vw, 1.25rem)`,color:`inherit`,flex:1},children:E}),(0,c.jsx)(e,{direction:`row`,alignItems:`center`,spacing:.625,sx:{mt:`auto`},children:C===`neutral`?(0,c.jsxs)(t,{component:`span`,sx:{display:`inline-flex`,alignItems:`center`,gap:`0.375rem`,fontSize:`0.8125rem`,fontWeight:600,px:`0.875rem`,py:`0.4375rem`,borderRadius:`0.375rem`,border:`1.5px solid currentColor`,color:`rgba(var(--vitec-brand), 1)`},children:[(0,c.jsx)(m,{}),`Download`,A&&(0,c.jsxs)(o,{component:`span`,variant:`caption`,sx:{opacity:.6,ml:.25},children:[`(`,A,`)`]})]}):(0,c.jsxs)(t,{component:`span`,sx:{display:`inline-flex`,alignItems:`center`,gap:`0.375rem`,fontSize:`0.8125rem`,fontWeight:600,color:j?`rgba(255,255,255,0.85)`:`inherit`,"&:hover":{color:j?`#fff`:`inherit`}},children:[(0,c.jsx)(m,{}),`Download`,A&&(0,c.jsxs)(o,{component:`span`,variant:`caption`,sx:{opacity:.6,ml:.25},children:[`(`,A,`)`]})]})})]})]})})}function m(){return(0,c.jsxs)(`svg`,{width:`13`,height:`13`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2.5`,strokeLinecap:`round`,strokeLinejoin:`round`,"aria-hidden":`true`,children:[(0,c.jsx)(`path`,{d:`M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4`}),(0,c.jsx)(`polyline`,{points:`7 10 12 15 17 10`}),(0,c.jsx)(`line`,{x1:`12`,y1:`15`,x2:`12`,y2:`3`})]})}export{p as VitecDownloadCard};
@@ -1 +0,0 @@
import{A as e,C as t,D as n,Q as r,V as i,Z as a,a as o,c as s,k as c,n as l,tt as u}from"./index-7LYai_r-.js";import{t as d}from"./jszip.min-B_jfdBDa.js";var f=r(),p=u(d(),1),m=a(),h=`linear-gradient(135deg, rgba(var(--vitec-brand), 1) 0%, rgba(var(--vitec-navy-deep), 1) 100%)`;async function g(e,t){let n=new p.default;await Promise.all(e.map(async e=>{let t=e.file?.url;if(!t)return;let r=i(t,o.base_url,o.router_mode),a=await fetch(r);if(!a.ok)return;let s=await a.blob();n.file(e.file?.name??`download_${e.uid}.pdf`,s)}));let r=await n.generateAsync({type:`blob`}),a=URL.createObjectURL(r),s=document.createElement(`a`);s.href=a,s.download=t,s.click(),URL.revokeObjectURL(a)}function _({download:e}){let t=e.file,r=t?.url?i(t.url,o.base_url,o.router_mode):void 0,a=e.title??t?.name??`Download`;return(0,m.jsxs)(n,{component:`a`,href:r??`#`,target:`_blank`,rel:`noreferrer noopener`,sx:{display:`flex`,alignItems:`baseline`,gap:`0.4rem`,color:`rgba(255,255,255,0.85)`,textDecoration:`none`,fontSize:`0.8125rem`,lineHeight:1.4,"&:hover":{color:`#fff`,textDecoration:`underline`}},children:[(0,m.jsx)(n,{component:`span`,sx:{flexShrink:0,mt:`0.2em`,color:`rgba(var(--vitec-orange), 1)`,fontSize:`0.5rem`},children:`■`}),(0,m.jsx)(`span`,{children:a})]})}function v({downloads:t,zipName:r}){let[i,a]=(0,f.useState)(`idle`);return(0,m.jsxs)(n,{component:`button`,onClick:async e=>{if(e.preventDefault(),i!==`loading`){a(`loading`);try{await g(t,r),a(`idle`)}catch{a(`error`),setTimeout(()=>a(`idle`),3e3)}}},disabled:i===`loading`,sx:{display:`inline-flex`,alignItems:`center`,gap:`0.4rem`,alignSelf:`flex-start`,mt:`auto`,fontSize:`0.8125rem`,fontWeight:600,color:i===`error`?`rgba(255,180,180,1)`:`#fff`,background:`none`,border:`1.5px solid`,borderColor:i===`error`?`rgba(255,120,120,0.6)`:`rgba(255,255,255,0.5)`,borderRadius:`0.375rem`,px:`0.875rem`,py:`0.4375rem`,cursor:i===`loading`?`default`:`pointer`,transition:`border-color 0.15s, background 0.15s`,"&:hover:not(:disabled)":{borderColor:`#fff`,bgcolor:`rgba(255,255,255,0.1)`}},children:[i===`loading`?(0,m.jsx)(e,{size:12,sx:{color:`inherit`}}):(0,m.jsxs)(`svg`,{width:`12`,height:`12`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2.5`,strokeLinecap:`round`,strokeLinejoin:`round`,"aria-hidden":`true`,children:[(0,m.jsx)(`path`,{d:`M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4`}),(0,m.jsx)(`polyline`,{points:`7 10 12 15 17 10`}),(0,m.jsx)(`line`,{x1:`12`,y1:`15`,x2:`12`,y2:`3`})]}),i===`error`?`Download failed`:`Download All Documents (ZIP)`]})}function y({element:e,className:r,nested:a,devInfoTags:u,uid:d,spaceBefore:f,spaceAfter:p}){let g=e.content?.downloadcardcollection??e.data?.downloadcardcollection,y=g?.downloads??[],b=s(e),x=g?.image,S=x&&`publicUrl`in x?x.publicUrl:void 0,C=y[0]?.file?.thumbnail,w=S??(C?i(C,o.base_url,o.router_mode):void 0),T=y.filter(e=>e.file?.url),E=`${(b??`documents`).toLowerCase().replace(/\s+/g,`-`)}.zip`;return y.length===0?null:(0,m.jsx)(l,{className:r,devInfoTags:u,nested:a,uid:d,spaceBefore:f,spaceAfter:p,children:(0,m.jsxs)(n,{className:`vitec_downloadcardcollection`,sx:{display:`flex`,borderRadius:`0.75rem`,overflow:`hidden`,boxShadow:`0 0.125rem 0.75rem rgba(0,0,0,0.08)`,minHeight:`10rem`},children:[(0,m.jsx)(n,{sx:{width:`38%`,flexShrink:0,bgcolor:`#fff`,display:`flex`,alignItems:`center`,justifyContent:`center`,overflow:`hidden`,p:w?0:`1.5rem`},children:w?(0,m.jsx)(n,{component:`img`,src:w,alt:b??`Downloads`,loading:`lazy`,sx:{width:`100%`,height:`100%`,objectFit:`contain`,objectPosition:`top center`,display:`block`,p:`0.75rem`}}):(0,m.jsx)(n,{sx:{color:`text.disabled`,opacity:.3},children:(0,m.jsxs)(`svg`,{width:`48`,height:`48`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`1`,strokeLinecap:`round`,strokeLinejoin:`round`,"aria-hidden":`true`,children:[(0,m.jsx)(`path`,{d:`M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z`}),(0,m.jsx)(`polyline`,{points:`14 2 14 8 20 8`}),(0,m.jsx)(`line`,{x1:`8`,y1:`13`,x2:`16`,y2:`13`}),(0,m.jsx)(`line`,{x1:`8`,y1:`17`,x2:`16`,y2:`17`}),(0,m.jsx)(`polyline`,{points:`10 9 9 9 8 9`})]})})}),(0,m.jsxs)(n,{sx:{flex:1,background:h,color:`#fff`,display:`flex`,flexDirection:`column`,p:`1.25rem 1.25rem 1rem`,gap:`0.75rem`},children:[(0,m.jsxs)(t,{direction:`row`,alignItems:`center`,spacing:1,children:[(0,m.jsx)(c,{component:`span`,sx:{fontSize:`0.6875rem`,fontWeight:700,letterSpacing:`0.06em`,textTransform:`uppercase`,opacity:.85,whiteSpace:`nowrap`,color:`inherit`},children:b??`Download Collection`}),(0,m.jsx)(n,{sx:{flex:1,height:`1px`,bgcolor:`rgba(255,255,255,0.3)`}})]}),(0,m.jsx)(t,{spacing:.375,sx:{flex:1},children:y.map(e=>(0,m.jsx)(_,{download:e},e.uid??e.slug??e.title))}),T.length>1&&(0,m.jsx)(v,{downloads:T,zipName:E})]})]})})}export{y as VitecDownloadCardCollection};
@@ -0,0 +1 @@
import{A as e,J as t,M as n,O as r,T as i,c as a,d as o,mt as s,ot as c,r as l,ut as u}from"./index-CM0zIqrs.js";import{t as d}from"./jszip.min-DxLKr7hR.js";var f=u(),p=s(d(),1),m=c(),h=`linear-gradient(135deg, rgba(var(--vitec-brand), 1) 0%, rgba(var(--vitec-navy-deep), 1) 100%)`;async function g(e,n){let r=new p.default;await Promise.all(e.map(async e=>{let n=e.file?.url;if(!n)return;let i=t(n,a.base_url,a.router_mode),o=await fetch(i);if(!o.ok)return;let s=await o.blob();r.file(e.file?.name??`download_${e.uid}.pdf`,s)}));let i=await r.generateAsync({type:`blob`}),o=URL.createObjectURL(i),s=document.createElement(`a`);s.href=o,s.download=n,s.click(),URL.revokeObjectURL(o)}function _({download:e}){let n=e.file,i=n?.url?t(n.url,a.base_url,a.router_mode):void 0,o=e.title??n?.name??`Download`;return(0,m.jsxs)(r,{component:`a`,href:i??`#`,target:`_blank`,rel:`noreferrer noopener`,sx:{display:`flex`,alignItems:`baseline`,gap:`0.4rem`,color:`rgba(255,255,255,0.85)`,textDecoration:`none`,fontSize:`0.8125rem`,lineHeight:1.4,"&:hover":{color:`#fff`,textDecoration:`underline`}},children:[(0,m.jsx)(r,{component:`span`,sx:{flexShrink:0,mt:`0.2em`,color:`rgba(var(--vitec-orange), 1)`,fontSize:`0.5rem`},children:`■`}),(0,m.jsx)(`span`,{children:o})]})}function v({downloads:e,zipName:t}){let[i,a]=(0,f.useState)(`idle`);return(0,m.jsxs)(r,{component:`button`,onClick:async n=>{if(n.preventDefault(),i!==`loading`){a(`loading`);try{await g(e,t),a(`idle`)}catch{a(`error`),setTimeout(()=>a(`idle`),3e3)}}},disabled:i===`loading`,sx:{display:`inline-flex`,alignItems:`center`,gap:`0.4rem`,alignSelf:`flex-start`,mt:`auto`,fontSize:`0.8125rem`,fontWeight:600,color:i===`error`?`rgba(255,180,180,1)`:`#fff`,background:`none`,border:`1.5px solid`,borderColor:i===`error`?`rgba(255,120,120,0.6)`:`rgba(255,255,255,0.5)`,borderRadius:`0.375rem`,px:`0.875rem`,py:`0.4375rem`,cursor:i===`loading`?`default`:`pointer`,transition:`border-color 0.15s, background 0.15s`,"&:hover:not(:disabled)":{borderColor:`#fff`,bgcolor:`rgba(255,255,255,0.1)`}},children:[i===`loading`?(0,m.jsx)(n,{size:12,sx:{color:`inherit`}}):(0,m.jsxs)(`svg`,{width:`12`,height:`12`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2.5`,strokeLinecap:`round`,strokeLinejoin:`round`,"aria-hidden":`true`,children:[(0,m.jsx)(`path`,{d:`M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4`}),(0,m.jsx)(`polyline`,{points:`7 10 12 15 17 10`}),(0,m.jsx)(`line`,{x1:`12`,y1:`15`,x2:`12`,y2:`3`})]}),i===`error`?`Download failed`:`Download All Documents (ZIP)`]})}function y({element:n,className:s,nested:c,devInfoTags:u,uid:d,spaceBefore:f,spaceAfter:p}){let g=n.content?.downloadcardcollection??n.data?.downloadcardcollection,y=g?.downloads??[],b=o(n),x=g?.image,S=x&&`publicUrl`in x?x.publicUrl:void 0,C=y[0]?.file?.thumbnail,w=S??(C?t(C,a.base_url,a.router_mode):void 0),T=y.filter(e=>e.file?.url),E=`${(b??`documents`).toLowerCase().replace(/\s+/g,`-`)}.zip`;return y.length===0?null:(0,m.jsx)(l,{className:s,devInfoTags:u,nested:c,uid:d,spaceBefore:f,spaceAfter:p,children:(0,m.jsxs)(r,{className:`vitec_downloadcardcollection`,sx:{display:`flex`,borderRadius:`0.75rem`,overflow:`hidden`,boxShadow:`0 0.125rem 0.75rem rgba(0,0,0,0.08)`,minHeight:`10rem`},children:[(0,m.jsx)(r,{sx:{width:`38%`,flexShrink:0,bgcolor:`#fff`,display:`flex`,alignItems:`center`,justifyContent:`center`,overflow:`hidden`,p:w?0:`1.5rem`},children:w?(0,m.jsx)(r,{component:`img`,src:w,alt:b??`Downloads`,loading:`lazy`,sx:{width:`100%`,height:`100%`,objectFit:`contain`,objectPosition:`top center`,display:`block`,p:`0.75rem`}}):(0,m.jsx)(r,{sx:{color:`text.disabled`,opacity:.3},children:(0,m.jsxs)(`svg`,{width:`48`,height:`48`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`1`,strokeLinecap:`round`,strokeLinejoin:`round`,"aria-hidden":`true`,children:[(0,m.jsx)(`path`,{d:`M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z`}),(0,m.jsx)(`polyline`,{points:`14 2 14 8 20 8`}),(0,m.jsx)(`line`,{x1:`8`,y1:`13`,x2:`16`,y2:`13`}),(0,m.jsx)(`line`,{x1:`8`,y1:`17`,x2:`16`,y2:`17`}),(0,m.jsx)(`polyline`,{points:`10 9 9 9 8 9`})]})})}),(0,m.jsxs)(r,{sx:{flex:1,background:h,color:`#fff`,display:`flex`,flexDirection:`column`,p:`1.25rem 1.25rem 1rem`,gap:`0.75rem`},children:[(0,m.jsxs)(i,{direction:`row`,alignItems:`center`,spacing:1,children:[(0,m.jsx)(e,{component:`span`,sx:{fontSize:`0.6875rem`,fontWeight:700,letterSpacing:`0.06em`,textTransform:`uppercase`,opacity:.85,whiteSpace:`nowrap`,color:`inherit`},children:b??`Download Collection`}),(0,m.jsx)(r,{sx:{flex:1,height:`1px`,bgcolor:`rgba(255,255,255,0.3)`}})]}),(0,m.jsx)(i,{spacing:.375,sx:{flex:1},children:y.map(e=>(0,m.jsx)(_,{download:e},e.uid??e.slug??e.title))}),T.length>1&&(0,m.jsx)(v,{downloads:T,zipName:E})]})]})})}export{y as VitecDownloadCardCollection};
@@ -1 +0,0 @@
import{C as e,E as t,O as n,Z as r,_ as i,c as a,d as o,k as s,n as c,u as l}from"./index-7LYai_r-.js";var u=r();function d(e){return e?Array.isArray(e)?e[0]??null:e:null}function f(e){return e.url??e.publicUrl}function p(e,t){return e.alternative??e.alt??e.title??t}function m(e){if(e.srcset?.length)return e.srcset.map(e=>`${e.url} ${e.descriptor}`).join(`, `)}function h(e){let t=new Date(e);return{day:t.toLocaleString(`en-US`,{day:`numeric`}),month:t.toLocaleString(`en-US`,{month:`short`}).toUpperCase()}}function g(e,t){if(!e)return null;let n=new Date(e),r=n.toLocaleString(`en-US`,{month:`short`,day:`numeric`,year:`numeric`});if(!t||e===t)return r;let i=new Date(t);return n.getMonth()===i.getMonth()&&n.getFullYear()===i.getFullYear()?`${n.toLocaleString(`en-US`,{month:`short`,day:`numeric`})} – ${i.toLocaleString(`en-US`,{day:`numeric`,year:`numeric`})}`:`${r} – ${i.toLocaleString(`en-US`,{month:`short`,day:`numeric`,year:`numeric`})}`}function _(e){return e?/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e.trim()):!1}function v({element:r,className:v,nested:y,devInfoTags:b,uid:x,spaceBefore:S,spaceAfter:C}){let w=a(r),T=o(r),E=i(l(r)),D=r.content?.eventlist?.events??[];return(0,u.jsx)(c,{className:[`vitec_eventlist`,v].filter(Boolean).join(` `),devInfoTags:b,nested:y,uid:x,spaceBefore:S,spaceAfter:C,children:(0,u.jsxs)(`div`,{className:`vitec_eventlist__inner`,children:[(w||T)&&(0,u.jsxs)(e,{spacing:.5,sx:{mb:2.5,textAlign:E,alignItems:E===`center`?`center`:E===`right`?`flex-end`:`flex-start`},children:[w&&(0,u.jsx)(s,{variant:`h4`,children:w}),T&&(0,u.jsx)(s,{variant:`subtitle1`,color:`text.secondary`,children:T})]}),D.length===0?(0,u.jsx)(s,{variant:`body2`,color:`text.secondary`,children:`No upcoming events.`}):(0,u.jsx)(`div`,{className:`vitec_eventlist__items`,children:D.map(r=>{let i=r.eventstart?h(r.eventstart):null,a=r.eventend&&r.eventstart!==r.eventend,o=g(r.eventstart,r.eventend),c=[r.venue,r.city,r.country].filter(Boolean).join(`, `),l=d(r.image),v=l?f(l):void 0,y=_(r.meetinglink)?`mailto:${r.meetinglink.trim()}`:r.meetinglink?r.meetinglink:void 0;return(0,u.jsxs)(`div`,{className:`vitec_eventlist__item`,children:[i&&(0,u.jsxs)(`div`,{className:`vitec_eventlist__date-badge`,"aria-label":o??void 0,children:[(0,u.jsx)(`span`,{className:`vitec_eventlist__date-day`,children:i.day}),(0,u.jsx)(`span`,{className:`vitec_eventlist__date-month`,children:i.month}),a&&(0,u.jsx)(`span`,{className:`vitec_eventlist__date-multiday`,children:`multi-day`})]}),(0,u.jsxs)(`div`,{className:`vitec_eventlist__content`,children:[(0,u.jsx)(s,{variant:`h6`,className:`vitec_eventlist__title`,children:r.title}),r.teaser&&(0,u.jsx)(s,{variant:`body2`,className:`vitec_eventlist__teaser`,children:r.teaser}),(o||c)&&(0,u.jsxs)(`div`,{className:`vitec_eventlist__meta`,children:[o&&(0,u.jsx)(`span`,{className:`vitec_eventlist__meta-date`,children:o}),o&&c&&(0,u.jsx)(`span`,{className:`vitec_eventlist__meta-sep`,"aria-hidden":!0,children:`·`}),c&&(0,u.jsx)(`span`,{className:`vitec_eventlist__meta-location`,children:c})]}),(0,u.jsxs)(e,{direction:`row`,spacing:1,flexWrap:`wrap`,useFlexGap:!0,alignItems:`center`,sx:{mt:1},children:[r.booth&&(0,u.jsx)(n,{label:r.booth,size:`small`,variant:`outlined`,className:`vitec_eventlist__chip vitec_eventlist__chip--booth`}),r.attendancemode===`online`&&(0,u.jsx)(n,{label:`Online`,size:`small`,variant:`outlined`,className:`vitec_eventlist__chip vitec_eventlist__chip--online`}),y&&(0,u.jsx)(t,{component:`a`,href:y,size:`small`,variant:`outlined`,className:`vitec_eventlist__btn vitec_eventlist__btn--contact`,children:`Contact`}),r.eventurl&&(0,u.jsx)(t,{component:`a`,href:r.eventurl,target:`_blank`,rel:`noreferrer`,size:`small`,variant:`contained`,className:`vitec_eventlist__btn vitec_eventlist__btn--more`,children:`Learn more`})]})]}),(0,u.jsx)(`div`,{className:`vitec_eventlist__logo-box${v?``:` vitec_eventlist__logo-box--empty`}`,children:v&&(0,u.jsx)(`img`,{src:v,srcSet:l?m(l):void 0,sizes:`128px`,alt:l?p(l,r.title):r.title,className:`vitec_eventlist__logo-img`,loading:`lazy`})})]},r.uid)})})]})})}export{v as VitecEventList};
@@ -0,0 +1 @@
import{A as e,G as t,K as n,M as r,N as i,P as a,Q as o,T as s,W as c,X as l,Z as u,at as d,b as f,d as p,it as m,j as h,k as g,m as _,mt as v,nt as y,ot as b,p as x,r as S,rt as C,tt as w,ut as T}from"./index-CM0zIqrs.js";function E(e){return m(`MuiButton`,e)}var D=C(`MuiButton`,`root.text.textInherit.textPrimary.textSecondary.textSuccess.textError.textInfo.textWarning.outlined.outlinedInherit.outlinedPrimary.outlinedSecondary.outlinedSuccess.outlinedError.outlinedInfo.outlinedWarning.contained.containedInherit.containedPrimary.containedSecondary.containedSuccess.containedError.containedInfo.containedWarning.disableElevation.focusVisible.disabled.colorInherit.colorPrimary.colorSecondary.colorSuccess.colorError.colorInfo.colorWarning.textSizeSmall.textSizeMedium.textSizeLarge.outlinedSizeSmall.outlinedSizeMedium.outlinedSizeLarge.containedSizeSmall.containedSizeMedium.containedSizeLarge.sizeMedium.sizeSmall.sizeLarge.fullWidth.startIcon.endIcon.icon.iconSizeSmall.iconSizeMedium.iconSizeLarge.loading.loadingWrapper.loadingIconPlaceholder.loadingIndicator.loadingPositionCenter.loadingPositionStart.loadingPositionEnd`.split(`.`)),O=v(T()),k=O.createContext({}),A=O.createContext(void 0),j=b(),M=e=>{let{color:t,disableElevation:r,fullWidth:i,size:a,variant:o,loading:s,loadingPosition:c,classes:l}=e,u=w({root:[`root`,s&&`loading`,o,`${o}${n(t)}`,`size${n(a)}`,`${o}Size${n(a)}`,`color${n(t)}`,r&&`disableElevation`,i&&`fullWidth`,s&&`loadingPosition${n(c)}`],startIcon:[`icon`,`startIcon`,`iconSize${n(a)}`],endIcon:[`icon`,`endIcon`,`iconSize${n(a)}`],loadingIndicator:[`loadingIndicator`],loadingWrapper:[`loadingWrapper`]},E,l);return{...l,...u}},N=[{props:{size:`small`},style:{"& > *:nth-of-type(1)":{fontSize:18}}},{props:{size:`medium`},style:{"& > *:nth-of-type(1)":{fontSize:20}}},{props:{size:`large`},style:{"& > *:nth-of-type(1)":{fontSize:22}}}],P=u(a,{shouldForwardProp:e=>o(e)||e===`classes`,name:`MuiButton`,slot:`Root`,overridesResolver:(e,t)=>{let{ownerState:r}=e;return[t.root,t[r.variant],t[`${r.variant}${n(r.color)}`],t[`size${n(r.size)}`],t[`${r.variant}Size${n(r.size)}`],r.color===`inherit`&&t.colorInherit,r.disableElevation&&t.disableElevation,r.fullWidth&&t.fullWidth,r.loading&&t.loading]}})(t(({theme:e})=>{let t=e.palette.mode===`light`?e.palette.grey[300]:e.palette.grey[800],n=e.palette.mode===`light`?e.palette.grey.A100:e.palette.grey[700];return{...e.typography.button,minWidth:64,padding:`6px 16px`,border:0,borderRadius:(e.vars||e).shape.borderRadius,transition:e.transitions.create([`background-color`,`box-shadow`,`border-color`,`color`],{duration:e.transitions.duration.short}),"&:hover":{textDecoration:`none`},[`&.${D.disabled}`]:{color:(e.vars||e).palette.action.disabled},variants:[{props:{variant:`contained`},style:{color:`var(--variant-containedColor)`,backgroundColor:`var(--variant-containedBg)`,boxShadow:(e.vars||e).shadows[2],"&:hover":{boxShadow:(e.vars||e).shadows[4],"@media (hover: none)":{boxShadow:(e.vars||e).shadows[2]}},"&:active":{boxShadow:(e.vars||e).shadows[8]},[`&.${D.focusVisible}`]:{boxShadow:(e.vars||e).shadows[6]},[`&.${D.disabled}`]:{color:(e.vars||e).palette.action.disabled,boxShadow:(e.vars||e).shadows[0],backgroundColor:(e.vars||e).palette.action.disabledBackground}}},{props:{variant:`outlined`},style:{padding:`5px 15px`,border:`1px solid currentColor`,borderColor:`var(--variant-outlinedBorder, currentColor)`,backgroundColor:`var(--variant-outlinedBg)`,color:`var(--variant-outlinedColor)`,[`&.${D.disabled}`]:{border:`1px solid ${(e.vars||e).palette.action.disabledBackground}`}}},{props:{variant:`text`},style:{padding:`6px 8px`,color:`var(--variant-textColor)`,backgroundColor:`var(--variant-textBg)`}},...Object.entries(e.palette).filter(i()).map(([t])=>({props:{color:t},style:{"--variant-textColor":(e.vars||e).palette[t].main,"--variant-outlinedColor":(e.vars||e).palette[t].main,"--variant-outlinedBorder":e.alpha((e.vars||e).palette[t].main,.5),"--variant-containedColor":(e.vars||e).palette[t].contrastText,"--variant-containedBg":(e.vars||e).palette[t].main,"@media (hover: hover)":{"&:hover":{"--variant-containedBg":(e.vars||e).palette[t].dark,"--variant-textBg":e.alpha((e.vars||e).palette[t].main,(e.vars||e).palette.action.hoverOpacity),"--variant-outlinedBorder":(e.vars||e).palette[t].main,"--variant-outlinedBg":e.alpha((e.vars||e).palette[t].main,(e.vars||e).palette.action.hoverOpacity)}}}})),{props:{color:`inherit`},style:{color:`inherit`,borderColor:`currentColor`,"--variant-containedBg":e.vars?e.vars.palette.Button.inheritContainedBg:t,"@media (hover: hover)":{"&:hover":{"--variant-containedBg":e.vars?e.vars.palette.Button.inheritContainedHoverBg:n,"--variant-textBg":e.alpha((e.vars||e).palette.text.primary,(e.vars||e).palette.action.hoverOpacity),"--variant-outlinedBg":e.alpha((e.vars||e).palette.text.primary,(e.vars||e).palette.action.hoverOpacity)}}}},{props:{size:`small`,variant:`text`},style:{padding:`4px 5px`,fontSize:e.typography.pxToRem(13)}},{props:{size:`Line truncated
@@ -1 +0,0 @@
import{t as e}from"./useControlled-OB0I4oAK.js";import{C as t,D as n,F as r,G as i,H as a,I as o,J as s,K as c,L as l,M as u,N as d,P as f,Q as p,R as m,U as h,X as g,Y as _,Z as v,_ as y,b,c as x,d as S,k as C,n as w,q as T,tt as E,u as D,z as O}from"./index-7LYai_r-.js";function k(e){return _(`MuiCollapse`,e)}s(`MuiCollapse`,[`root`,`horizontal`,`vertical`,`entered`,`hidden`,`wrapper`,`wrapperInner`]);var A=E(p()),j=v(),M=e=>{let{orientation:t,classes:n}=e;return T({root:[`root`,`${t}`],entered:[`entered`],hidden:[`hidden`],wrapper:[`wrapper`,`${t}`],wrapperInner:[`wrapperInner`,`${t}`]},k,n)},N=h(`div`,{name:`MuiCollapse`,slot:`Root`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.root,t[n.orientation],n.state===`entered`&&t.entered,n.state===`exited`&&!n.in&&n.collapsedSize===`0px`&&t.hidden]}})(O(({theme:e})=>({height:0,overflow:`hidden`,transition:e.transitions.create(`height`),variants:[{props:{orientation:`horizontal`},style:{height:`auto`,width:0,transition:e.transitions.create(`width`)}},{props:{state:`entered`},style:{height:`auto`,overflow:`visible`}},{props:{state:`entered`,orientation:`horizontal`},style:{width:`auto`}},{props:({ownerState:e})=>e.state===`exited`&&!e.in&&e.collapsedSize===`0px`,style:{visibility:`hidden`}}]}))),P=h(`div`,{name:`MuiCollapse`,slot:`Wrapper`})({display:`flex`,width:`100%`,variants:[{props:{orientation:`horizontal`},style:{width:`auto`,height:`100%`}}]}),F=h(`div`,{name:`MuiCollapse`,slot:`WrapperInner`})({width:`100%`,variants:[{props:{orientation:`horizontal`},style:{width:`auto`,height:`100%`}}]}),I=A.forwardRef(function(e,t){let n=a({props:e,name:`MuiCollapse`}),{addEndListener:s,children:u,className:d,collapsedSize:p=`0px`,component:h,easing:_,in:v,onEnter:y,onEntered:b,onEntering:x,onExit:S,onExited:C,onExiting:w,orientation:T=`vertical`,slots:E={},slotProps:D={},style:O,timeout:k=c.standard,TransitionComponent:I=l,...L}=n,R={...n,orientation:T,collapsedSize:p},z=M(R),B=i(),V=o(),H=A.useRef(null),U=A.useRef(),W=typeof p==`number`?`${p}px`:p,G=T===`horizontal`,K=G?`width`:`height`,q=A.useRef(null),J=m(t,q),Y=e=>t=>{if(e){let n=q.current;t===void 0?e(n):e(n,t)}},X=()=>H.current?H.current[G?`clientWidth`:`clientHeight`]:0,Z=Y((e,t)=>{H.current&&G&&(H.current.style.position=`absolute`),e.style[K]=W,y&&y(e,t)}),Q=Y((e,t)=>{let n=X();H.current&&G&&(H.current.style.position=``);let{duration:i,easing:a}=r({style:O,timeout:k,easing:_},{mode:`enter`});if(k===`auto`){let t=B.transitions.getAutoHeightDuration(n);e.style.transitionDuration=`${t}ms`,U.current=t}else e.style.transitionDuration=typeof i==`string`?i:`${i}ms`;e.style[K]=`${n}px`,e.style.transitionTimingFunction=a,x&&x(e,t)}),ee=Y((e,t)=>{e.style[K]=`auto`,b&&b(e,t)}),te=Y(e=>{e.style[K]=`${X()}px`,S&&S(e)}),ne=Y(C),re=Y(e=>{let t=X(),{duration:n,easing:i}=r({style:O,timeout:k,easing:_},{mode:`exit`});if(k===`auto`){let n=B.transitions.getAutoHeightDuration(t);e.style.transitionDuration=`${n}ms`,U.current=n}else e.style.transitionDuration=typeof n==`string`?n:`${n}ms`;e.style[K]=W,e.style.transitionTimingFunction=i,w&&w(e)}),ie=e=>{k===`auto`&&V.start(U.current||0,e),s&&s(q.current,e)},$={slots:E,slotProps:D,component:h},[ae,oe]=f(`root`,{ref:J,className:g(z.root,d),elementType:N,externalForwardedProps:$,ownerState:R,additionalProps:{style:{[G?`minWidth`:`minHeight`]:W,...O}}}),[se,ce]=f(`wrapper`,{ref:H,className:z.wrapper,elementType:P,externalForwardedProps:$,ownerState:R}),[le,ue]=f(`wrapperInner`,{className:z.wrapperInner,elementType:F,externalForwardedProps:$,ownerState:R});return(0,j.jsx)(I,{in:v,onEnter:Z,onEntered:ee,onEntering:Q,onExit:te,onExited:ne,onExiting:re,addEndListener:ie,nodeRef:q,timeout:k===`auto`?null:k,...L,children:(e,{ownerState:t,...n})=>{let r={...R,state:e};return(0,j.jsx)(ae,{...oe,className:g(oe.className,{entered:z.entered,exited:!v&&W===`0px`&&z.hidden}[e]),ownerState:r,...n,children:(0,j.jsx)(se,{...ce,ownerState:r,children:(0,j.jsx)(le,{...ue,ownerState:r,children:u})})})}})});I&&(I.muiSupportAuto=!0);var L=I,R=A.createContext({});function z(e){return _(`MuiAccordion`,e)}var B=s(`MuiAccordion`,[`root`,`heading`,`rounded`,`expanded`,`disabled`,`gutters`,`region`]),V=e=>{let{classes:t,square:n,expanded:r,disabled:i,disableGutters:a}=e;return T({root:[`root`,!n&&`rounded`,r&&`expanded`,i&&`disabled`,!a&&`gutters`],heading:[`heading`],region:[`region`]},z,t)},H=h(d,{name:`MuiAccordion`,slot:`Root`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[{[`& .${B.region}`]:t.region},t.root,!n.square&&t.rounded,!n.disableGutters&&t.gutters]}})(O(({theme:e})=>{let t={duration:e.transitions.duration.shortest};return{position:`relative`,transition:e.transitions.create([`margin`],t),overflowAnchor:`none`,"&::before":{position:`absolute`,left:0,top:-1,right:0,height:1,content:`""`,opacity:1,backgroundColor:(e.vars||e).palette.divider,transition:e.transitions.create([`opacity`,`background-color`],t)},"&:first-of-type":{"&::before":{display:`none`}},[`&.${B.expanded}`]:{"&::before":{Line truncated
@@ -0,0 +1 @@
import{t as e}from"./useControlled-CztbT67m.js";import{$ as t,A as n,B as r,C as i,F as a,G as o,I as s,L as c,O as l,P as u,R as d,T as f,U as p,X as m,Z as h,at as g,b as _,d as v,et as y,it as b,m as x,mt as S,ot as C,p as w,r as T,rt as E,tt as D,ut as O}from"./index-CM0zIqrs.js";function k(e){return b(`MuiCollapse`,e)}E(`MuiCollapse`,[`root`,`horizontal`,`vertical`,`entered`,`hidden`,`wrapper`,`wrapperInner`]);var A=S(O()),j=C(),M=e=>{let{orientation:t,classes:n}=e;return D({root:[`root`,`${t}`],entered:[`entered`],hidden:[`hidden`],wrapper:[`wrapper`,`${t}`],wrapperInner:[`wrapperInner`,`${t}`]},k,n)},N=h(`div`,{name:`MuiCollapse`,slot:`Root`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.root,t[n.orientation],n.state===`entered`&&t.entered,n.state===`exited`&&!n.in&&n.collapsedSize===`0px`&&t.hidden]}})(o(({theme:e})=>({height:0,overflow:`hidden`,transition:e.transitions.create(`height`),variants:[{props:{orientation:`horizontal`},style:{height:`auto`,width:0,transition:e.transitions.create(`width`)}},{props:{state:`entered`},style:{height:`auto`,overflow:`visible`}},{props:{state:`entered`,orientation:`horizontal`},style:{width:`auto`}},{props:({ownerState:e})=>e.state===`exited`&&!e.in&&e.collapsedSize===`0px`,style:{visibility:`hidden`}}]}))),P=h(`div`,{name:`MuiCollapse`,slot:`Wrapper`})({display:`flex`,width:`100%`,variants:[{props:{orientation:`horizontal`},style:{width:`auto`,height:`100%`}}]}),F=h(`div`,{name:`MuiCollapse`,slot:`WrapperInner`})({width:`100%`,variants:[{props:{orientation:`horizontal`},style:{width:`auto`,height:`100%`}}]}),I=A.forwardRef(function(e,n){let i=m({props:e,name:`MuiCollapse`}),{addEndListener:a,children:o,className:l,collapsedSize:u=`0px`,component:f,easing:h,in:_,onEnter:v,onEntered:b,onEntering:x,onExit:S,onExited:C,onExiting:w,orientation:T=`vertical`,slots:E={},slotProps:D={},style:O,timeout:k=y.standard,TransitionComponent:I=r,...L}=i,R={...i,orientation:T,collapsedSize:u},z=M(R),B=t(),V=d(),H=A.useRef(null),U=A.useRef(),W=typeof u==`number`?`${u}px`:u,G=T===`horizontal`,K=G?`width`:`height`,q=A.useRef(null),J=p(n,q),Y=e=>t=>{if(e){let n=q.current;t===void 0?e(n):e(n,t)}},X=()=>H.current?H.current[G?`clientWidth`:`clientHeight`]:0,Z=Y((e,t)=>{H.current&&G&&(H.current.style.position=`absolute`),e.style[K]=W,v&&v(e,t)}),Q=Y((e,t)=>{let n=X();H.current&&G&&(H.current.style.position=``);let{duration:r,easing:i}=c({style:O,timeout:k,easing:h},{mode:`enter`});if(k===`auto`){let t=B.transitions.getAutoHeightDuration(n);e.style.transitionDuration=`${t}ms`,U.current=t}else e.style.transitionDuration=typeof r==`string`?r:`${r}ms`;e.style[K]=`${n}px`,e.style.transitionTimingFunction=i,x&&x(e,t)}),ee=Y((e,t)=>{e.style[K]=`auto`,b&&b(e,t)}),te=Y(e=>{e.style[K]=`${X()}px`,S&&S(e)}),ne=Y(C),re=Y(e=>{let t=X(),{duration:n,easing:r}=c({style:O,timeout:k,easing:h},{mode:`exit`});if(k===`auto`){let n=B.transitions.getAutoHeightDuration(t);e.style.transitionDuration=`${n}ms`,U.current=n}else e.style.transitionDuration=typeof n==`string`?n:`${n}ms`;e.style[K]=W,e.style.transitionTimingFunction=r,w&&w(e)}),ie=e=>{k===`auto`&&V.start(U.current||0,e),a&&a(q.current,e)},$={slots:E,slotProps:D,component:f},[ae,oe]=s(`root`,{ref:J,className:g(z.root,l),elementType:N,externalForwardedProps:$,ownerState:R,additionalProps:{style:{[G?`minWidth`:`minHeight`]:W,...O}}}),[se,ce]=s(`wrapper`,{ref:H,className:z.wrapper,elementType:P,externalForwardedProps:$,ownerState:R}),[le,ue]=s(`wrapperInner`,{className:z.wrapperInner,elementType:F,externalForwardedProps:$,ownerState:R});return(0,j.jsx)(I,{in:_,onEnter:Z,onEntered:ee,onEntering:Q,onExit:te,onExited:ne,onExiting:re,addEndListener:ie,nodeRef:q,timeout:k===`auto`?null:k,...L,children:(e,{ownerState:t,...n})=>{let r={...R,state:e};return(0,j.jsx)(ae,{...oe,className:g(oe.className,{entered:z.entered,exited:!_&&W===`0px`&&z.hidden}[e]),ownerState:r,...n,children:(0,j.jsx)(se,{...ce,ownerState:r,children:(0,j.jsx)(le,{...ue,ownerState:r,children:o})})})}})});I&&(I.muiSupportAuto=!0);var L=I,R=A.createContext({});function z(e){return b(`MuiAccordion`,e)}var B=E(`MuiAccordion`,[`root`,`heading`,`rounded`,`expanded`,`disabled`,`gutters`,`region`]),V=e=>{let{classes:t,square:n,expanded:r,disabled:i,disableGutters:a}=e;return D({root:[`root`,!n&&`rounded`,r&&`expanded`,i&&`disabled`,!a&&`gutters`],heading:[`heading`],region:[`region`]},z,t)},H=h(a,{name:`MuiAccordion`,slot:`Root`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[{[`& .${B.region}`]:t.region},t.root,!n.square&&t.rounded,!n.disableGutters&&t.gutters]}})(o(({theme:e})=>{let t={duration:e.transitions.duration.shortest};return{position:`relative`,transition:e.transitions.create([`margin`],t),overflowAnchor:`none`,"&::before":{position:`absolute`,left:0,top:-1,right:0,height:1,content:`""`,opacity:1,backgroundColor:(e.vars||e).palette.divider,transition:e.transitions.create([`opacity`,`background-color`],t)},"&:first-of-type":{"&::before":{display:`none`}},[`&.${B.expanded}`]:{"Line truncated
@@ -1 +0,0 @@
import{C as e,D as t,S as n,Z as r,b as i,c as a,d as o,f as s,g as c,h as l,k as u,m as d,n as f,o as p,p as m,s as h,w as g}from"./index-7LYai_r-.js";var _=r();function v({element:r,className:v,nested:y,devInfoTags:b,uid:x,spaceBefore:S,spaceAfter:C}){let w=a(r),T=o(r),E=h(r),D=p(r.data?.background_variant),O=m(r.data?.cta),k=l(r.data?.cta),A=c(r.data?.button_style,`light`),j=r.data?.hero_layout_variant??`sm`,M=r.data?.hero_video??[],N=r.data?.hero_image??[],P=M.length>0,F=N.length>0,I=(P||F)&&j!==`xs`,L=P,R=P?M[0]?.publicUrl:N[0]?.publicUrl,z=!P&&N[0]?N[0].alt||N[0].title||w||`Hero image`:``,B=(P?r.data?.hero_video_alignment:r.data?.hero_image_alignment)??`right`,V=I&&(B===`left`||B===`right`),H=I&&(B===`center`||B===`fullwidth`),U=!!r.data?.hero_video_autoplay,W=!!r.data?.hero_video_loop,G=!!r.data?.hero_video_muted||U,K=s(r.data?.hero_bgimage);return j===`xs`?(0,_.jsx)(f,{className:v,devInfoTags:b,fullWidth:!0,nested:y,uid:x,spaceBefore:S,spaceAfter:C,children:(0,_.jsx)(`div`,{className:`vitec_herosection__inner vitec_herosection__inner--xs`})}):(0,_.jsx)(f,{className:v,devInfoTags:b,fullWidth:!0,nested:y,uid:x,spaceBefore:S,spaceAfter:C,children:(0,_.jsx)(`div`,{className:`vitec_herosection__inner vitec_herosection__inner--${j}`,children:(0,_.jsxs)(t,{sx:{...D,...K?{backgroundImage:`url(${K})`,backgroundSize:`cover`,backgroundPosition:`center`}:{},borderRadius:3,px:{xs:2.5,md:4},py:{xs:3,md:4},overflow:`hidden`,display:`flex`,alignItems:`center`},children:[(0,_.jsxs)(g,{container:!0,spacing:4,alignItems:`center`,sx:{width:`100%`},children:[(0,_.jsx)(g,{size:{xs:12,md:V?7:12},sx:V&&B===`left`?{order:{md:2}}:{},children:(0,_.jsxs)(e,{spacing:2,sx:{maxWidth:V?`100%`:680},children:[r.data?.eyebrow&&j!==`sm`&&(0,_.jsx)(u,{variant:`overline`,sx:{letterSpacing:`0.14em`,opacity:.8},children:r.data.eyebrow}),w&&(0,_.jsx)(u,{variant:`h2`,children:w}),T&&(0,_.jsx)(u,{variant:`h6`,sx:{opacity:.85,fontWeight:500},children:T}),E&&(0,_.jsx)(t,{sx:{...i,"& a":{color:`inherit`},"& mark":{backgroundColor:`rgba(var(--vitec-highlight), 0.85)`}},dangerouslySetInnerHTML:{__html:E}}),O&&(0,_.jsx)(n,{href:O,target:k??`_self`,variant:A,alignStart:!0,children:r.data?.cta_label||d(r.data?.cta,`Learn more`)}),!!r.data?.show_logo_wall&&(0,_.jsx)(t,{sx:{mt:1,border:`1px dashed rgba(var(--vitec-white), 0.35)`,borderRadius:2,px:2,py:1.5,width:`fit-content`},children:(0,_.jsx)(u,{variant:`caption`,sx:{opacity:.85},children:`Logo wall placeholder enabled`})})]})}),V&&R&&(0,_.jsx)(g,{size:{xs:12,md:5},sx:B===`left`?{order:{md:1}}:{},children:L?(0,_.jsx)(`video`,{src:R,autoPlay:U,loop:W,muted:G,playsInline:!0,controls:!U,style:{width:`100%`,height:`auto`,display:`block`,borderRadius:`12px`,boxShadow:`0 20px 40px rgba(var(--vitec-surface-dark), 0.25)`}}):(0,_.jsx)(t,{component:`img`,src:R,alt:z,sx:{width:`100%`,height:`auto`,display:`block`,borderRadius:3,boxShadow:`0 20px 40px rgba(var(--vitec-surface-dark), 0.25)`}})})]}),H&&R&&(0,_.jsx)(t,{sx:{mt:3,mx:B===`center`?`auto`:void 0,maxWidth:B===`center`?720:`100%`},children:L?(0,_.jsx)(`video`,{src:R,autoPlay:U,loop:W,muted:G,playsInline:!0,controls:!U,style:{width:`100%`,height:`auto`,display:`block`,borderRadius:`12px`,boxShadow:`0 20px 40px rgba(var(--vitec-surface-dark), 0.25)`}}):(0,_.jsx)(t,{component:`img`,src:R,alt:z,sx:{width:`100%`,height:`auto`,display:`block`,borderRadius:3,boxShadow:`0 20px 40px rgba(var(--vitec-surface-dark), 0.25)`}})})]})})})}export{v as VitecHeroSection};
@@ -0,0 +1 @@
import{A as e,E as t,O as n,T as r,_ as i,d as a,g as o,h as s,l as c,m as l,ot as u,r as d,t as f,u as p,v as m,y as h}from"./index-CM0zIqrs.js";var g=u();function _({element:u,className:_,nested:v,devInfoTags:y,uid:b,spaceBefore:x,spaceAfter:S}){let C=a(u),w=l(u),T=p(u),E=c(u.data?.background_variant),D=o(u.data?.cta),O=m(u.data?.cta),k=h(u.data?.button_style,`light`),A=u.data?.hero_layout_variant??`sm`,j=u.data?.hero_video??[],M=u.data?.hero_image??[],N=j.length>0,P=M.length>0,F=(N||P)&&A!==`xs`,I=N,L=N?j[0]?.publicUrl:M[0]?.publicUrl,R=!N&&M[0]?M[0].alt||M[0].title||C||`Hero image`:``,z=(N?u.data?.hero_video_alignment:u.data?.hero_image_alignment)??`right`,B=F&&(z===`left`||z===`right`),V=F&&(z===`center`||z===`fullwidth`),H=!!u.data?.hero_video_autoplay,U=!!u.data?.hero_video_loop,W=!!u.data?.hero_video_muted||H,G=s(u.data?.hero_bgimage),K=F&&L?I?(0,g.jsx)(`video`,{src:L,autoPlay:H,loop:U,muted:W,playsInline:!0,controls:!H,style:{width:`100%`,height:`auto`,display:`block`,borderRadius:`12px`,boxShadow:`0 20px 40px rgba(var(--vitec-surface-dark), 0.25)`}}):(0,g.jsx)(n,{component:`img`,src:L,alt:R,sx:{width:`100%`,height:`auto`,display:`block`,borderRadius:3,boxShadow:`0 20px 40px rgba(var(--vitec-surface-dark), 0.25)`}}):null;if(A===`xs`)return(0,g.jsx)(d,{className:_,devInfoTags:y,fullWidth:!0,nested:v,uid:b,spaceBefore:x,spaceAfter:S,children:(0,g.jsx)(`div`,{className:`vitec_herosection__inner vitec_herosection__inner--xs`})});let q=(u.data?.header_position??``)===`center`;return(0,g.jsx)(d,{className:_,devInfoTags:y,fullWidth:!0,nested:v,uid:b,spaceBefore:x,spaceAfter:S,children:(0,g.jsx)(`div`,{className:`vitec_herosection__inner vitec_herosection__inner--${A}`,children:(0,g.jsxs)(n,{className:`vitec_herosection__box`,sx:{...E,...G?{backgroundImage:`url(${G})`,backgroundSize:`cover`,backgroundPosition:`center`}:{}},children:[(0,g.jsxs)(t,{container:!0,spacing:4,alignItems:`center`,className:`vitec_herosection__grid`,children:[(0,g.jsx)(t,{size:{xs:12,md:B?7:12},className:B&&z===`left`?`vitec_herosection__text-col vitec_herosection__text-col--order-last`:`vitec_herosection__text-col`,children:(0,g.jsxs)(r,{spacing:2,className:[`vitec_herosection__content-stack`,B?`vitec_herosection__content-stack--side`:``,q?`vitec_herosection__content-stack--centered`:``].filter(Boolean).join(` `),children:[u.data?.eyebrow&&A!==`sm`&&(0,g.jsx)(e,{variant:`overline`,className:`vitec_herosection__eyebrow`,children:u.data.eyebrow}),C&&(0,g.jsx)(e,{variant:`h2`,children:C}),w&&(0,g.jsx)(e,{variant:`h6`,className:`vitec_herosection__subheader`,children:w}),T&&(0,g.jsx)(`div`,{className:`vitec_herosection__bodytext`,dangerouslySetInnerHTML:{__html:T}}),D&&(0,g.jsx)(f,{href:D,target:O??`_self`,variant:k,alignStart:!0,children:u.data?.cta_label||i(u.data?.cta,`Learn more`)}),!!u.data?.show_logo_wall&&(0,g.jsx)(`div`,{className:`vitec_herosection__logo-wall-placeholder`,children:(0,g.jsx)(e,{variant:`caption`,children:`Logo wall placeholder enabled`})})]})}),B&&K&&(0,g.jsx)(t,{size:{xs:12,md:5},className:z===`left`?`vitec_herosection__media-col vitec_herosection__media-col--order-first`:`vitec_herosection__media-col`,children:K})]}),V&&K&&(0,g.jsx)(`div`,{className:`vitec_herosection__stacked-media vitec_herosection__stacked-media--${z}`,children:K})]})})})}export{_ as VitecHeroSection};
@@ -1 +0,0 @@
import{C as e,D as t,S as n,Z as r,_ as i,b as a,c as o,d as s,g as c,h as l,k as u,n as d,p as f,s as p,w as m}from"./index-7LYai_r-.js";var h=r();function g({element:r,className:g,nested:_,devInfoTags:v,uid:y,spaceBefore:b,spaceAfter:x}){let S=o(r),C=s(r),w=p(r),T=f(r.data?.button_link),E=l(r.data?.button_link),D=r.data?.button_text,O=c(r.data?.button_style),k=r.data?.intro_layout_variant??`variant_1`,A=i(r.data?.header_position)===`center`||k===`variant_1`,j=!!r.data?.fullwidth,M=r.data?.intro_video??[],N=r.data?.intro_image??[],P=M.length>0,F=N.length>0,I=P||F,L=P,R=P?M[0]?.publicUrl:N[0]?.publicUrl,z=!P&&N[0]&&(N[0].alt||N[0].title||S)||``,B=(P?r.data?.intro_video_alignment:r.data?.intro_image_alignment)??`right`,V=I&&(B===`left`||B===`right`),H=I&&(B===`center`||B===`fullwidth`),U=!!r.data?.intro_video_autoplay,W=!!r.data?.intro_video_loop,G=!!r.data?.intro_video_muted||U,K=(0,h.jsxs)(e,{spacing:2.5,sx:{textAlign:A&&!I?`center`:`left`,alignItems:A&&!I?`center`:`flex-start`,maxWidth:I?void 0:760,mx:A&&!I?`auto`:void 0},children:[S&&(0,h.jsx)(u,{variant:`h3`,children:S}),C&&(0,h.jsx)(u,{variant:`subtitle1`,color:`text.secondary`,children:C}),w&&(0,h.jsx)(t,{sx:a,dangerouslySetInnerHTML:{__html:w}}),T&&(0,h.jsx)(n,{href:T,target:E??`_self`,variant:O,children:D??`Mehr erfahren`})]}),q=I&&R&&(L?(0,h.jsx)(`video`,{src:R,autoPlay:U,loop:W,muted:G,playsInline:!0,controls:!U,style:{width:`100%`,height:`auto`,display:`block`,borderRadius:`12px`}}):(0,h.jsx)(t,{component:`img`,src:R,alt:z,sx:{width:`100%`,height:`auto`,display:`block`,borderRadius:2}}));return(0,h.jsx)(d,{className:g,devInfoTags:v,fullWidth:j,nested:_,uid:y,spaceBefore:b,spaceAfter:x,children:(0,h.jsx)(`div`,{className:`vitec_introparagraph__inner vitec_introparagraph--${k}`,children:V?(0,h.jsxs)(m,{container:!0,spacing:4,alignItems:`center`,children:[(0,h.jsx)(m,{size:{xs:12,md:6},sx:B===`left`?{order:{md:2}}:{},children:K}),(0,h.jsx)(m,{size:{xs:12,md:6},sx:B===`left`?{order:{md:1}}:{},children:q})]}):(0,h.jsxs)(h.Fragment,{children:[K,H&&q&&(0,h.jsx)(t,{sx:{mt:3,mx:B===`center`?`auto`:void 0,maxWidth:B===`center`?720:`100%`},children:q})]})})})}export{g as VitecIntroParagraph};
@@ -0,0 +1 @@
import{A as e,C as t,E as n,O as r,T as i,b as a,d as o,g as s,m as c,ot as l,r as u,t as d,u as f,v as p,y as m}from"./index-CM0zIqrs.js";var h=l();function g({element:l,className:g,nested:_,devInfoTags:v,uid:y,spaceBefore:b,spaceAfter:x}){let S=o(l),C=c(l),w=f(l),T=s(l.data?.button_link),E=p(l.data?.button_link),D=l.data?.button_text,O=m(l.data?.button_style),k=l.data?.intro_layout_variant??`variant_1`,A=a(l.data?.header_position)===`center`||k===`variant_1`,j=!!l.data?.fullwidth,M=l.data?.intro_video??[],N=l.data?.intro_image??[],P=M.length>0,F=N.length>0,I=P||F,L=P,R=P?M[0]?.publicUrl:N[0]?.publicUrl,z=!P&&N[0]&&(N[0].alt||N[0].title||S)||``,B=(P?l.data?.intro_video_alignment:l.data?.intro_image_alignment)??`right`,V=I&&(B===`left`||B===`right`),H=I&&(B===`center`||B===`fullwidth`),U=!!l.data?.intro_video_autoplay,W=!!l.data?.intro_video_loop,G=!!l.data?.intro_video_muted||U,K=(0,h.jsxs)(i,{spacing:2.5,sx:{textAlign:A&&!I?`center`:`left`,alignItems:A&&!I?`center`:`flex-start`,maxWidth:I?void 0:760,mx:A&&!I?`auto`:void 0},children:[S&&(0,h.jsx)(e,{variant:`h3`,children:S}),C&&(0,h.jsx)(e,{variant:`subtitle1`,color:`text.secondary`,children:C}),w&&(0,h.jsx)(r,{sx:t,dangerouslySetInnerHTML:{__html:w}}),T&&(0,h.jsx)(d,{href:T,target:E??`_self`,variant:O,children:D??`Mehr erfahren`})]}),q=I&&R&&(L?(0,h.jsx)(`video`,{src:R,autoPlay:U,loop:W,muted:G,playsInline:!0,controls:!U,style:{width:`100%`,height:`auto`,display:`block`,borderRadius:`12px`}}):(0,h.jsx)(r,{component:`img`,src:R,alt:z,sx:{width:`100%`,height:`auto`,display:`block`,borderRadius:2}}));return(0,h.jsx)(u,{className:g,devInfoTags:v,fullWidth:j,nested:_,uid:y,spaceBefore:b,spaceAfter:x,children:(0,h.jsx)(`div`,{className:`vitec_introparagraph__inner vitec_introparagraph--${k}`,children:V?(0,h.jsxs)(n,{container:!0,spacing:4,alignItems:`center`,children:[(0,h.jsx)(n,{size:{xs:12,md:6},sx:B===`left`?{order:{md:2}}:{},children:K}),(0,h.jsx)(n,{size:{xs:12,md:6},sx:B===`left`?{order:{md:1}}:{},children:q})]}):(0,h.jsxs)(h.Fragment,{children:[K,H&&q&&(0,h.jsx)(r,{sx:{mt:3,mx:B===`center`?`auto`:void 0,maxWidth:B===`center`?720:`100%`},children:q})]})})})}export{g as VitecIntroParagraph};
@@ -0,0 +1,2 @@
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/vitec_locationmap-CO_jtYJV.js","assets/index-CM0zIqrs.js","assets/index-B6-rfpgz.css"])))=>i.map(i=>d[i]);
import{A as e,d as t,f as n,lt as r,ot as i,r as a,ut as o,x as s}from"./index-CM0zIqrs.js";var c=o(),l=i(),u=(0,c.lazy)(()=>r(()=>import(`./vitec_locationmap-CO_jtYJV.js`),__vite__mapDeps([0,1,2])).then(e=>({default:e.VitecGlobeMap}))),d=e=>e.toUpperCase().split(``).map(e=>String.fromCodePoint(e.charCodeAt(0)+127397)).join(``);function f(e){let t=e.address;if(!t)return[];let n=[];t.company&&n.push(t.company),t.street?n.push(t.street+(t.additional?`, `+t.additional:``)):t.additional&&n.push(t.additional);let r=[t.postalCode,t.city,t.region].filter(Boolean).join(` `);return r&&n.push(r),t.country&&n.push(t.country),n}function p(){return(0,l.jsx)(`svg`,{width:`13`,height:`13`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,"aria-hidden":`true`,children:(0,l.jsx)(`path`,{d:`M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07A19.5 19.5 0 0 1 4.49 12 19.79 19.79 0 0 1 1.47 3.55 2 2 0 0 1 3.44 1.35h3a2 2 0 0 1 2 1.72c.127.96.361 1.903.7 2.81a2 2 0 0 1-.45 2.11L7.91 9a16 16 0 0 0 6.09 6.09l1.27-.78a2 2 0 0 1 2.11-.45c.907.339 1.85.573 2.81.7A2 2 0 0 1 22 16.92z`})})}function m(){return(0,l.jsxs)(`svg`,{width:`13`,height:`13`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,"aria-hidden":`true`,children:[(0,l.jsx)(`polyline`,{points:`22 17 13 17`}),(0,l.jsx)(`rect`,{x:`2`,y:`3`,width:`8`,height:`18`,rx:`1`}),(0,l.jsx)(`path`,{d:`M22 17l-5-5V7a2 2 0 0 0-2-2h-1`}),(0,l.jsx)(`line`,{x1:`6`,y1:`8`,x2:`6`,y2:`8`})]})}function h({loc:e}){let t=f(e),n=e.countryCode?d(e.countryCode):``,r=e.links?.contact??`/contact`;return(0,l.jsxs)(`div`,{className:`vitec_locationcard`,children:[(0,l.jsxs)(`div`,{className:`vitec_locationcard__header`,children:[n&&(0,l.jsx)(`span`,{className:`vitec_locationcard__flag`,"aria-hidden":`true`,children:n}),(0,l.jsx)(`span`,{className:`vitec_locationcard__name`,children:e.name})]}),(0,l.jsxs)(`div`,{className:`vitec_locationcard__body`,children:[t.length>0&&(0,l.jsx)(`address`,{className:`vitec_locationcard__address`,children:t.map((e,t)=>(0,l.jsx)(`span`,{children:e},t))}),(e.contact?.phone||e.contact?.fax)&&(0,l.jsxs)(`div`,{className:`vitec_locationcard__contact`,children:[e.contact.phone&&(0,l.jsxs)(`a`,{href:`tel:${e.contact.phone.replace(/\s/g,``)}`,className:`vitec_locationcard__contact-line`,children:[(0,l.jsx)(p,{}),e.contact.phone]}),e.contact.fax&&(0,l.jsxs)(`span`,{className:`vitec_locationcard__contact-line vitec_locationcard__contact-line--fax`,children:[(0,l.jsx)(m,{}),e.contact.fax]})]})]}),(0,l.jsx)(`div`,{className:`vitec_locationcard__footer`,children:(0,l.jsx)(`a`,{href:r,className:`vitec_locationcard__cta`,children:`Contact us`})})]})}function g({loc:e}){let t=f(e),n=e.countryCode?d(e.countryCode):``,r=e.links?.contact??`/contact`;return(0,l.jsxs)(`div`,{className:`vitec_locationrow`,children:[(0,l.jsxs)(`div`,{className:`vitec_locationrow__identity`,children:[n&&(0,l.jsx)(`span`,{className:`vitec_locationrow__flag`,"aria-hidden":`true`,children:n}),(0,l.jsx)(`span`,{className:`vitec_locationrow__name`,children:e.name})]}),t.length>0&&(0,l.jsx)(`address`,{className:`vitec_locationrow__address`,children:t.map((e,t)=>(0,l.jsx)(`span`,{children:e},t))}),(0,l.jsxs)(`div`,{className:`vitec_locationrow__right`,children:[(e.contact?.phone||e.contact?.fax)&&(0,l.jsxs)(`div`,{className:`vitec_locationrow__contact`,children:[e.contact.phone&&(0,l.jsxs)(`a`,{href:`tel:${e.contact.phone.replace(/\s/g,``)}`,className:`vitec_locationrow__contact-line`,children:[(0,l.jsx)(p,{}),e.contact.phone]}),e.contact.fax&&(0,l.jsxs)(`span`,{className:`vitec_locationrow__contact-line vitec_locationrow__contact-line--fax`,children:[(0,l.jsx)(m,{}),e.contact.fax]})]}),(0,l.jsx)(`a`,{href:r,className:`vitec_locationrow__cta`,children:`Contact →`})]})]})}function _({element:r,className:i,nested:o,devInfoTags:d,uid:f,spaceBefore:p,spaceAfter:m}){let _=t(r),v=Number(n(r)??0),y=s(v===0?2:v),b=r.content?.locations,x=b?.variant??`list`,S=(b?.locations??[]).filter(e=>e.active!==!1);return x===`map`?(0,l.jsx)(a,{className:i,devInfoTags:d,fullWidth:!0,nested:o,uid:f,spaceBefore:p,spaceAfter:m,children:(0,l.jsx)(c.Suspense,{fallback:(0,l.jsx)(`div`,{className:`vitec_locationmap__loading`}),children:(0,l.jsx)(u,{locations:S,mapText:b?.mapText})})}):(0,l.jsx)(a,{className:i,devInfoTags:d,nested:o,uid:f,spaceBefore:p,spaceAfter:m,children:(0,l.jsxs)(`div`,{className:`vitec_locationlist__inner`,children:[_&&(0,l.jsx)(e,{variant:y,className:`vitec_locationlist__heading`,children:_}),x===`grid`?(0,l.jsx)(`div`,{className:`vitec_locationlist__grid`,children:S.map(e=>(0,l.jsx)(h,{loc:e},e.id??e.slug))}):(0,l.jsx)(`div`,{className:`vitec_locationlist__list`,children:S.map(e=>(0,l.jsx)(g,{loc:e},e.id??e.slug))})]})})}export{_ as VitecLocationList};
File diff suppressed because it is too large. Load diff
@@ -0,0 +1 @@
import{A as e,C as t,E as n,O as r,T as i,k as a,ot as o,r as s}from"./index-CM0zIqrs.js";var c=o();function l({element:o,className:l,nested:u,devInfoTags:d,uid:f,spaceBefore:p,spaceAfter:m}){let h=o.content?.market?.market,g=o.appearance?.frameClass?.split(`,`).map(e=>e.trim()).includes(`vitec-full-width`)??!1,_=h?.image?.url,v=h?.image?.srcset?.map(e=>`${e.url} ${e.descriptor}`).join(`, `);return(0,c.jsx)(s,{className:l,devInfoTags:d,fullWidth:g,nested:u,uid:f,spaceBefore:p,spaceAfter:m,children:(0,c.jsx)(`div`,{className:`vitec_marketshow__inner`,children:(0,c.jsxs)(n,{container:!0,spacing:3,alignItems:`start`,children:[_&&(0,c.jsx)(n,{size:{xs:12,md:5},children:(0,c.jsx)(r,{component:`img`,src:_,srcSet:v,sizes:`(max-width: 900px) 100vw, 40vw`,alt:h?.title??`Market`,sx:{width:`100%`,height:`auto`,display:`block`,borderRadius:3}})}),(0,c.jsx)(n,{size:{xs:12,md:_?7:12},children:(0,c.jsxs)(i,{spacing:2,children:[(0,c.jsx)(e,{variant:`overline`,color:`text.secondary`,children:`Market`}),h?.title&&(0,c.jsx)(e,{variant:`h4`,children:h.title}),h?.subtitle&&(0,c.jsx)(e,{variant:`subtitle1`,color:`text.secondary`,children:h.subtitle}),h?.teaser&&(0,c.jsx)(e,{variant:`body1`,children:h.teaser}),h?.description&&(0,c.jsx)(r,{sx:t,dangerouslySetInnerHTML:{__html:h.description}}),h?.categories&&h.categories.length>0&&(0,c.jsx)(i,{direction:`row`,spacing:.75,flexWrap:`wrap`,useFlexGap:!0,children:h.categories.map(e=>(0,c.jsx)(a,{label:e.title??`Category`,size:`small`},e.uid??e.title))})]})})]})})})}export{l as VitecMarketShow};
@@ -1 +0,0 @@
import{C as e,D as t,O as n,Z as r,b as i,k as a,n as o,w as s}from"./index-7LYai_r-.js";var c=r();function l({element:r,className:l,nested:u,devInfoTags:d,uid:f,spaceBefore:p,spaceAfter:m}){let h=r.content?.market?.market,g=r.appearance?.frameClass?.split(`,`).map(e=>e.trim()).includes(`vitec-full-width`)??!1,_=h?.image?.url,v=h?.image?.srcset?.map(e=>`${e.url} ${e.descriptor}`).join(`, `);return(0,c.jsx)(o,{className:l,devInfoTags:d,fullWidth:g,nested:u,uid:f,spaceBefore:p,spaceAfter:m,children:(0,c.jsx)(`div`,{className:`vitec_marketshow__inner`,children:(0,c.jsxs)(s,{container:!0,spacing:3,alignItems:`start`,children:[_&&(0,c.jsx)(s,{size:{xs:12,md:5},children:(0,c.jsx)(t,{component:`img`,src:_,srcSet:v,sizes:`(max-width: 900px) 100vw, 40vw`,alt:h?.title??`Market`,sx:{width:`100%`,height:`auto`,display:`block`,borderRadius:3}})}),(0,c.jsx)(s,{size:{xs:12,md:_?7:12},children:(0,c.jsxs)(e,{spacing:2,children:[(0,c.jsx)(a,{variant:`overline`,color:`text.secondary`,children:`Market`}),h?.title&&(0,c.jsx)(a,{variant:`h4`,children:h.title}),h?.subtitle&&(0,c.jsx)(a,{variant:`subtitle1`,color:`text.secondary`,children:h.subtitle}),h?.teaser&&(0,c.jsx)(a,{variant:`body1`,children:h.teaser}),h?.description&&(0,c.jsx)(t,{sx:i,dangerouslySetInnerHTML:{__html:h.description}}),h?.categories&&h.categories.length>0&&(0,c.jsx)(e,{direction:`row`,spacing:.75,flexWrap:`wrap`,useFlexGap:!0,children:h.categories.map(e=>(0,c.jsx)(n,{label:e.title??`Category`,size:`small`},e.uid??e.title))})]})})]})})})}export{l as VitecMarketShow};
@@ -0,0 +1 @@
import{A as e,J as t,O as n,b as r,c as i,d as a,k as o,m as s,ot as c,p as l,r as u,ut as d}from"./index-CM0zIqrs.js";var f=d(),p=c();function m(e){if(e.srcset?.length)return e.srcset.map(e=>`${e.url} ${e.descriptor}`).join(`, `)}function h(e){if(e)return e.url??e.publicUrl}function g(e){let t=e.parents?.find(e=>e.uid!=null&&e.uid!==1);return!t?.uid||!t.title?null:{uid:t.uid,title:t.title}}function _(e){let t=new Set,n=[];for(let r of e.categories??[]){let e=g(r);e&&!t.has(e.uid)&&(t.add(e.uid),n.push(e))}return n}function v({value:e,onChange:t}){return(0,p.jsxs)(n,{sx:{display:`flex`,alignItems:`center`,gap:`0.625rem`,px:`0.875rem`,py:`0.5rem`,borderRadius:`0.5rem`,border:`1.5px solid`,borderColor:e?`rgba(var(--vitec-brand), 1)`:`divider`,bgcolor:`#fff`,maxWidth:`24rem`,transition:`border-color 0.15s`,"&:focus-within":{borderColor:`rgba(var(--vitec-brand), 1)`}},children:[(0,p.jsx)(n,{sx:{color:`text.disabled`,flexShrink:0,display:`flex`},children:(0,p.jsxs)(`svg`,{width:`15`,height:`15`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,p.jsx)(`circle`,{cx:`11`,cy:`11`,r:`8`}),(0,p.jsx)(`line`,{x1:`21`,y1:`21`,x2:`16.65`,y2:`16.65`})]})}),(0,p.jsx)(n,{component:`input`,value:e,onChange:e=>t(e.target.value),placeholder:`Search products…`,sx:{flex:1,border:`none`,outline:`none`,background:`transparent`,fontSize:`0.875rem`,color:`text.primary`,"&::placeholder":{color:`text.disabled`}}}),e&&(0,p.jsx)(n,{component:`button`,onClick:()=>t(``),sx:{display:`flex`,p:0,border:`none`,background:`none`,cursor:`pointer`,color:`text.disabled`,"&:hover":{color:`text.primary`}},children:(0,p.jsxs)(`svg`,{width:`14`,height:`14`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2.5`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,p.jsx)(`line`,{x1:`18`,y1:`6`,x2:`6`,y2:`18`}),(0,p.jsx)(`line`,{x1:`6`,y1:`6`,x2:`18`,y2:`18`})]})})]})}function y(){return(0,p.jsxs)(`svg`,{className:`vitec_productlist__placeholder-icon`,viewBox:`0 32 66 44`,fill:`white`,xmlns:`http://www.w3.org/2000/svg`,"aria-hidden":`true`,children:[(0,p.jsx)(`path`,{fillOpacity:`0.35`,d:`M22.918,60.551c1.156,0,2.094,0.938,2.094,2.094c0,1.161-0.938,2.098-2.094,2.098c-1.162,0-2.094-0.942-2.094-2.098C20.824,61.488,21.762,60.551,22.918,60.551z M15.355,60.551c1.158,0,2.095,0.938,2.095,2.094c0,1.155-0.938,2.098-2.095,2.098c-1.162,0-2.098-0.937-2.098-2.098C13.257,61.488,14.193,60.551,15.355,60.551z M48.136,58.941c0.006,0,0.011,0,0.016,0c0.281,0.006,0.547,0.124,0.734,0.333c1.406,1.416,1.823,3.547,1.063,5.396c-0.762,1.848-2.552,3.062-4.547,3.062c-1.996,0-3.792-1.214-4.554-3.062c-0.759-1.85-0.342-3.98,1.063-5.396c0.188-0.198,0.443-0.308,0.714-0.318c0.948-0.025,1.434,1.114,0.761,1.781c-0.817,0.824-1.063,2.063-0.62,3.142c0.448,1.082,1.484,1.781,2.636,1.781c1.15,0,2.187-0.699,2.629-1.781c0.443-1.079,0.199-2.317-0.621-3.142C46.72,60.087,47.188,58.926,48.136,58.941z M45.392,57.717c0.583-0.01,1.063,0.469,1.052,1.058l-0.005,3.843c-0.01,1.387-2.084,1.381-2.084-0.004l0.006-3.85C44.354,58.19,44.819,57.723,45.392,57.717z M11.412,55.898c-1.483,0-2.609,1.12-2.609,2.605v8.276c0,1.483,1.126,2.604,2.609,2.604h43.161c1.485,0,2.605-1.12,2.605-2.604v-8.276c0-1.485-1.12-2.605-2.605-2.605H11.412z`}),(0,p.jsx)(`path`,{fillOpacity:`0.18`,d:`M11.412,54.8h43.161c2.073,0,3.715,1.631,3.715,3.704v8.276c0,2.071-1.642,3.713-3.715,3.713H11.412c-2.071,0-3.713-1.642-3.713-3.713v-8.276C7.699,56.431,9.341,54.8,11.412,54.8z M15.601,39.051c-1.527,0-2.776,0.719-3.62,1.703c-0.844,0.983-1.364,2.197-1.787,3.411L5.956,56.379c-0.048,0.129-0.074,0.266-0.068,0.405c-0.172,0.548-0.265,1.12-0.265,1.72v8.276c0,3.187,2.598,5.785,5.79,5.785h43.161c3.188,0,5.787-2.599,5.787-5.785v-8.276c0-0.6-0.094-1.178-0.266-1.72c0.005-0.14-0.017-0.276-0.068-0.405l-4.235-12.214c-0.421-1.214-0.947-2.428-1.791-3.411c-0.839-0.984-2.095-1.703-3.615-1.703H15.601z`})]})}function b({element:t,className:i,nested:c,devInfoTags:d,uid:m,spaceBefore:h,spaceAfter:g}){let y=a(t),b=s(t),S=r(l(t)),C=S===`center`?`center`:S===`right`?`right`:`left`,w=S===`center`?`center`:S===`right`?`flex-end`:`flex-start`,T=t.appearance?.frameClass?.split(`,`).map(e=>e.trim()).includes(`vitec-full-width`)??!1,E=t.content?.products?.products??[],D=t.content!=null,[O,k]=(0,f.useState)(``),[A,j]=(0,f.useState)(new Set),M=(0,f.useMemo)(()=>{let e=new Map;for(let t of E)for(let n of _(t))e.has(n.uid)||e.set(n.uid,n.title);return Array.from(e.entries()).map(([e,t])=>({uid:e,title:t})).sort((e,t)=>e.uid-t.uid)},[E]),N=A.size>0||O.trim().length>0,P=e=>{j(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},F=(0,f.useMemo)(()=>{let e=O.toLowerCase().trim();return E.filter(t=>{let n=!e||t.title?.toLowerCase().includes(e)||t.subtitle?.toLowerCase().includes(e)||t.teaser?.toLowerCase().includes(e),r=A.size===0||_(t).some(e=>A.has(e.uid));return n&&r})},[E,O,A]),I=(0,f.useMemo)(()=>N?[]:M.map(e=>({mainCat:e,products:E.filter(t=>_(t).some(t=>t.uid===e.uid)).sort(Line truncated
@@ -1 +0,0 @@
import{C as e,D as t,N as n,O as r,S as i,V as a,Z as o,_ as s,a as c,c as l,d as u,f as d,k as f,n as p,u as m,w as h}from"./index-7LYai_r-.js";var g=o();function _({element:o,className:_,nested:v,devInfoTags:y,uid:b,spaceBefore:x,spaceAfter:S}){let C=l(o),w=u(o),T=s(m(o)),E=T===`center`?`center`:T===`right`?`right`:`left`,D=T===`center`?`center`:T===`right`?`flex-end`:`flex-start`,O=o.appearance?.frameClass?.split(`,`).map(e=>e.trim()).includes(`vitec-full-width`)??!1,k=o.content?.products?.products??[],A=o.content!=null;return(0,g.jsx)(p,{className:_,devInfoTags:y,fullWidth:O,nested:v,uid:b,spaceBefore:x,spaceAfter:S,children:(0,g.jsxs)(`div`,{className:`vitec_productlist__inner`,children:[(C||w)&&(0,g.jsxs)(e,{spacing:.5,sx:{width:`100%`,textAlign:E,alignItems:D},children:[C&&(0,g.jsx)(f,{variant:`h4`,children:C}),w&&(0,g.jsx)(f,{variant:`subtitle1`,color:`text.secondary`,children:w})]}),!A&&(0,g.jsxs)(f,{variant:`body2`,color:`text.disabled`,sx:{fontStyle:`italic`},children:[`No product data — plugin not configured or no products assigned (UID `,b??`?`,`).`]}),(0,g.jsx)(h,{container:!0,spacing:3,children:k.map(o=>{let s=d(o.images),l=a(o.link,c.base_url,c.router_mode);return(0,g.jsx)(h,{size:{xs:12,md:6,lg:4},children:(0,g.jsx)(n,{variant:`outlined`,sx:{height:`100%`,p:2.5,borderRadius:3},children:(0,g.jsxs)(e,{spacing:2,sx:{height:`100%`},children:[s&&(0,g.jsx)(t,{component:`img`,src:s,alt:o.title??`Product image`,sx:{width:`100%`,height:180,objectFit:`cover`,borderRadius:2}}),(0,g.jsxs)(e,{spacing:.75,children:[(0,g.jsx)(f,{variant:`h6`,children:o.title??`Product`}),o.subtitle&&(0,g.jsx)(f,{color:`text.secondary`,children:o.subtitle}),o.teaser&&(0,g.jsx)(f,{children:o.teaser})]}),o.categories&&o.categories.length>0&&(0,g.jsx)(e,{direction:`row`,spacing:.75,flexWrap:`wrap`,useFlexGap:!0,children:o.categories.map(e=>(0,g.jsx)(r,{label:e.title??`Category`,size:`small`},e.uid??e.title))}),(0,g.jsx)(t,{sx:{flexGrow:1}}),l&&(0,g.jsx)(i,{href:l,variant:`outlined`,size:`sm`,alignStart:!0,children:`View product`})]})})},o.uid??o.slug??o.title)})})]})})}export{_ as VitecProductList};
Loaded 100 of 110 files, more files were not shown because too many files have changed in this diff. Show more