diff --git a/src/Toolkit/composer.json b/src/Toolkit/composer.json index dc3a22674a2..dc0e699dbc4 100644 --- a/src/Toolkit/composer.json +++ b/src/Toolkit/composer.json @@ -44,8 +44,12 @@ "zenstruck/console-test": "^1.7", "symfony/http-client": "6.4|^7.0", "symfony/stopwatch": "^6.4|^7.0", - "symfony/phpunit-bridge": "^6.4|^7.0", - "vincentlanglet/twig-cs-fixer": "^3.5" + "symfony/phpunit-bridge": "^7.2", + "vincentlanglet/twig-cs-fixer": "^3.5", + "spatie/phpunit-snapshot-assertions": "^4.2.17", + "phpunit/phpunit": "^9.6.22", + "symfony/ux-icons": "^2.18", + "tales-from-a-dev/twig-tailwind-extra": "^0.4.0" }, "bin": [ "bin/ux-toolkit-kit-create", diff --git a/src/Toolkit/config/services.php b/src/Toolkit/config/services.php index 23a6e5289c3..3406e962806 100644 --- a/src/Toolkit/config/services.php +++ b/src/Toolkit/config/services.php @@ -13,6 +13,7 @@ use Symfony\UX\Toolkit\Command\DebugKitCommand; use Symfony\UX\Toolkit\Command\InstallComponentCommand; +use Symfony\UX\Toolkit\Kit\KitContextRunner; use Symfony\UX\Toolkit\Kit\KitFactory; use Symfony\UX\Toolkit\Kit\KitSynchronizer; use Symfony\UX\Toolkit\Registry\GitHubRegistry; @@ -75,5 +76,12 @@ ->args([ service('filesystem'), ]) + + ->set('ux_toolkit.kit.kit_context_runner', KitContextRunner::class) + ->public() + ->args([ + service('twig'), + service('ux.twig_component.component_factory'), + ]) ; }; diff --git a/src/Toolkit/kits/shadcn/docs/components/AlertDialog.md b/src/Toolkit/kits/shadcn/docs/components/AlertDialog.md deleted file mode 100644 index 3109e0503ef..00000000000 --- a/src/Toolkit/kits/shadcn/docs/components/AlertDialog.md +++ /dev/null @@ -1,80 +0,0 @@ -# AlertDialog - -A modal dialog that interrupts the user with important content and expects a response. - -```twig {"preview":true} - - - Show Dialog - - - - Are you sure? - - This action cannot be undone. This will permanently delete your account - and remove your data from our servers. - - - - Cancel - Continue - - - -``` - -## Installation - - - -## Usage - - - -## Examples - -### Default - -```twig {"preview":true} - - - Show Dialog - - - - Are you sure? - - This action cannot be undone. This will permanently delete your account - and remove your data from our servers. - - - - Cancel - Continue - - - -``` - -### Destructive - -```twig {"preview":true} - - - Delete Account - - - - Are you absolutely sure? - - This action cannot be undone. This will permanently delete your account - and remove your data from our servers. - - - - Cancel - Delete Account - - - -``` diff --git a/src/Toolkit/phpunit.xml.dist b/src/Toolkit/phpunit.xml.dist index 0b5ea05456f..0a4c3bed992 100644 --- a/src/Toolkit/phpunit.xml.dist +++ b/src/Toolkit/phpunit.xml.dist @@ -4,7 +4,7 @@ backupGlobals="false" colors="true" bootstrap="tests/bootstrap.php" - failOnRisky="true" + failOnRisky="true" failOnWarning="true" > @@ -12,8 +12,6 @@ - - diff --git a/src/Toolkit/src/Kit/KitContextRunner.php b/src/Toolkit/src/Kit/KitContextRunner.php new file mode 100644 index 00000000000..f2cd0e4221b --- /dev/null +++ b/src/Toolkit/src/Kit/KitContextRunner.php @@ -0,0 +1,107 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\UX\Toolkit\Kit; + +use Symfony\Component\Filesystem\Path; +use Symfony\UX\Toolkit\File\FileType; +use Symfony\UX\TwigComponent\ComponentFactory; +use Symfony\UX\TwigComponent\ComponentTemplateFinderInterface; +use Twig\Loader\ChainLoader; +use Twig\Loader\FilesystemLoader; + +/** + * @author Hugo Alliaume + * + * @internal + */ +final class KitContextRunner +{ + public function __construct( + private readonly \Twig\Environment $twig, + private readonly ComponentFactory $componentFactory, + ) { + } + + /** + * @template TResult of mixed + * + * @param callable(Kit): TResult $callback + * + * @return TResult + */ + public function runForKit(Kit $kit, callable $callback): mixed + { + $resetServices = $this->contextualizeServicesForKit($kit); + + try { + return $callback($kit); + } finally { + $resetServices(); + } + } + + /** + * @return callable(): void Reset the services when called + */ + private function contextualizeServicesForKit(Kit $kit): callable + { + // Configure Twig + $initialTwigLoader = $this->twig->getLoader(); + $this->twig->setLoader(new ChainLoader([ + new FilesystemLoader(Path::join($kit->path, 'templates/components')), + $initialTwigLoader, + ])); + + // Configure Twig Components + $reflComponentFactory = new \ReflectionClass($this->componentFactory); + + $reflComponentFactoryConfig = $reflComponentFactory->getProperty('config'); + $initialComponentFactoryConfig = $reflComponentFactoryConfig->getValue($this->componentFactory); + $reflComponentFactoryConfig->setValue($this->componentFactory, []); + + $reflComponentFactoryComponentTemplateFinder = $reflComponentFactory->getProperty('componentTemplateFinder'); + $initialComponentFactoryComponentTemplateFinder = $reflComponentFactoryComponentTemplateFinder->getValue($this->componentFactory); + $reflComponentFactoryComponentTemplateFinder->setValue($this->componentFactory, $this->createComponentTemplateFinder($kit)); + + return function () use ($initialTwigLoader, $reflComponentFactoryConfig, $initialComponentFactoryConfig, $reflComponentFactoryComponentTemplateFinder, $initialComponentFactoryComponentTemplateFinder) { + $this->twig->setLoader($initialTwigLoader); + $reflComponentFactoryConfig->setValue($this->componentFactory, $initialComponentFactoryConfig); + $reflComponentFactoryComponentTemplateFinder->setValue($this->componentFactory, $initialComponentFactoryComponentTemplateFinder); + }; + } + + private function createComponentTemplateFinder(Kit $kit): ComponentTemplateFinderInterface + { + static $instances = []; + + return $instances[$kit->name] ?? new class($kit) implements ComponentTemplateFinderInterface { + public function __construct(private readonly Kit $kit) + { + } + + public function findAnonymousComponentTemplate(string $name): ?string + { + if (null === $component = $this->kit->getComponent($name)) { + throw new \RuntimeException(\sprintf('Component "%s" does not exist in kit "%s".', $name, $this->kit->name)); + } + + foreach ($component->files as $file) { + if (FileType::Twig === $file->type) { + return $file->relativePathName; + } + } + + throw new \LogicException(\sprintf('No Twig files found for component "%s" in kit "%s", it should not happens.', $name, $this->kit->name)); + } + }; + } +} diff --git a/src/Toolkit/tests/Fixtures/Kernel.php b/src/Toolkit/tests/Fixtures/Kernel.php index 7ea7eb0574f..6734bb54ea5 100644 --- a/src/Toolkit/tests/Fixtures/Kernel.php +++ b/src/Toolkit/tests/Fixtures/Kernel.php @@ -16,8 +16,11 @@ use Symfony\Bundle\TwigBundle\TwigBundle; use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator; use Symfony\Component\HttpKernel\Kernel as BaseKernel; +use Symfony\UX\Icons\UXIconsBundle; use Symfony\UX\Toolkit\UXToolkitBundle; use Symfony\UX\TwigComponent\TwigComponentBundle; +use TalesFromADev\Twig\Extra\Tailwind\Bridge\Symfony\Bundle\TalesFromADevTwigExtraTailwindBundle; +use Twig\Extra\TwigExtraBundle\TwigExtraBundle; final class Kernel extends BaseKernel { @@ -29,6 +32,9 @@ public function registerBundles(): iterable new FrameworkBundle(), new TwigBundle(), new TwigComponentBundle(), + new TwigExtraBundle(), + new UXIconsBundle(), + new TalesFromADevTwigExtraTailwindBundle(), new UXToolkitBundle(), ]; } @@ -69,6 +75,9 @@ protected function configureContainer(ContainerConfigurator $container): void ->alias('ux_toolkit.registry.registry_factory', '.ux_toolkit.registry.registry_factory') ->public() + + ->alias('ux_toolkit.registry.local', '.ux_toolkit.registry.local') + ->public() ; } } diff --git a/src/Toolkit/tests/Functional/ComponentsRenderingTest.php b/src/Toolkit/tests/Functional/ComponentsRenderingTest.php new file mode 100644 index 00000000000..39978c8a5cd --- /dev/null +++ b/src/Toolkit/tests/Functional/ComponentsRenderingTest.php @@ -0,0 +1,110 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\UX\Toolkit\Tests\Functional; + +use Spatie\Snapshots\Drivers\HtmlDriver; +use Spatie\Snapshots\MatchesSnapshots; +use Symfony\Bundle\FrameworkBundle\Test\WebTestCase; +use Symfony\Component\Filesystem\Path; +use Symfony\Component\Finder\Finder; +use Symfony\UX\Toolkit\Asset\Component; +use Symfony\UX\Toolkit\Kit\Kit; +use Symfony\UX\Toolkit\Kit\KitFactory; +use Symfony\UX\Toolkit\Registry\LocalRegistry; + +class ComponentsRenderingTest extends WebTestCase +{ + use MatchesSnapshots; + + private const KITS_DIR = __DIR__.'/../../kits'; + + /** + * @return iterable + */ + public static function provideTestComponentRendering(): iterable + { + foreach (LocalRegistry::getAvailableKitsName() as $kitName) { + $kitDir = Path::join(__DIR__, '../../kits', $kitName, 'docs/components'); + $docsFinder = (new Finder())->files()->name('*.md')->in($kitDir)->depth(0); + + foreach ($docsFinder as $docFile) { + $componentName = $docFile->getFilenameWithoutExtension(); + + $codeBlockMatchesResult = preg_match_all('/```twig.*?\n(?P.+?)```/s', $docFile->getContents(), $codeBlockMatches); + if (false === $codeBlockMatchesResult || 0 === $codeBlockMatchesResult) { + throw new \RuntimeException(\sprintf('No Twig code blocks found in file "%s"', $docFile->getRelativePathname())); + } + + foreach ($codeBlockMatches['code'] as $i => $code) { + yield \sprintf('Kit %s, component %s, code #%d', $kitName, $componentName, $i + 1) => [$kitName, $componentName, $code]; + } + } + } + } + + /** + * @dataProvider provideTestComponentRendering + */ + public function testComponentRendering(string $kitName, string $componentName, string $code): void + { + $twig = self::getContainer()->get('twig'); + $kitContextRunner = self::getContainer()->get('ux_toolkit.kit.kit_context_runner'); + + $kit = $this->instantiateKit($kitName); + $template = $twig->createTemplate($code); + $renderedCode = $kitContextRunner->runForKit($kit, fn () => $template->render()); + + $this->assertCodeRenderedMatchesHtmlSnapshot($kit, $kit->getComponent($componentName), $code, $renderedCode); + } + + private function instantiateKit(string $kitName): Kit + { + $kitFactory = self::getContainer()->get('ux_toolkit.kit.kit_factory'); + + self::assertInstanceOf(KitFactory::class, $kitFactory); + + return $kitFactory->createKitFromAbsolutePath(Path::join(__DIR__, '../../kits', $kitName)); + } + + private function assertCodeRenderedMatchesHtmlSnapshot(Kit $kit, Component $component, string $code, string $renderedCode): void + { + $info = \sprintf(<< + HTML, + $kit->name, + $component->name, + trim($code) + ); + + $this->assertMatchesSnapshot($renderedCode, new class($info) extends HtmlDriver { + public function __construct(private string $info) + { + } + + public function serialize($data): string + { + $serialized = parent::serialize($data); + $serialized = str_replace(['', ''], '', $serialized); + $serialized = trim($serialized); + + return $this->info."\n".$serialized; + } + }); + } +} diff --git a/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Alert, code 1__1.html b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Alert, code 1__1.html new file mode 100644 index 00000000000..c3586e297f7 --- /dev/null +++ b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Alert, code 1__1.html @@ -0,0 +1,20 @@ + + \ No newline at end of file diff --git a/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Alert, code 2__1.html b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Alert, code 2__1.html new file mode 100644 index 00000000000..c3586e297f7 --- /dev/null +++ b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Alert, code 2__1.html @@ -0,0 +1,20 @@ + + \ No newline at end of file diff --git a/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Alert, code 3__1.html b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Alert, code 3__1.html new file mode 100644 index 00000000000..87ea2e3ad78 --- /dev/null +++ b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Alert, code 3__1.html @@ -0,0 +1,20 @@ + + \ No newline at end of file diff --git a/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component AspectRatio, code 1__1.html b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component AspectRatio, code 1__1.html new file mode 100644 index 00000000000..6f089ea841b --- /dev/null +++ b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component AspectRatio, code 1__1.html @@ -0,0 +1,17 @@ + +
+Landscape photograph by Tobias Tullius +
\ No newline at end of file diff --git a/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component AspectRatio, code 2__1.html b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component AspectRatio, code 2__1.html new file mode 100644 index 00000000000..b20d51b0c0c --- /dev/null +++ b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component AspectRatio, code 2__1.html @@ -0,0 +1,17 @@ + +
+Landscape photograph by Tobias Tullius +
\ No newline at end of file diff --git a/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component AspectRatio, code 3__1.html b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component AspectRatio, code 3__1.html new file mode 100644 index 00000000000..297a8d71d0d --- /dev/null +++ b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component AspectRatio, code 3__1.html @@ -0,0 +1,17 @@ + +
+Landscape photograph by Tobias Tullius +
\ No newline at end of file diff --git a/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Avatar, code 1__1.html b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Avatar, code 1__1.html new file mode 100644 index 00000000000..e1c7e6eed56 --- /dev/null +++ b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Avatar, code 1__1.html @@ -0,0 +1,13 @@ + +@symfony + + \ No newline at end of file diff --git a/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Avatar, code 2__1.html b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Avatar, code 2__1.html new file mode 100644 index 00000000000..e1c7e6eed56 --- /dev/null +++ b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Avatar, code 2__1.html @@ -0,0 +1,13 @@ + +@symfony + + \ No newline at end of file diff --git a/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Avatar, code 3__1.html b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Avatar, code 3__1.html new file mode 100644 index 00000000000..7ef48de0fd2 --- /dev/null +++ b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Avatar, code 3__1.html @@ -0,0 +1,21 @@ + +
+ FP + + FP + +
\ No newline at end of file diff --git a/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Avatar, code 4__1.html b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Avatar, code 4__1.html new file mode 100644 index 00000000000..c16030c2697 --- /dev/null +++ b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Avatar, code 4__1.html @@ -0,0 +1,27 @@ + +
+ @symfony + + + FP + + FP + +
\ No newline at end of file diff --git a/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Badge, code 1__1.html b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Badge, code 1__1.html new file mode 100644 index 00000000000..7b3a1ebdbad --- /dev/null +++ b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Badge, code 1__1.html @@ -0,0 +1,9 @@ + +
Badge
\ No newline at end of file diff --git a/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Badge, code 2__1.html b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Badge, code 2__1.html new file mode 100644 index 00000000000..7b3a1ebdbad --- /dev/null +++ b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Badge, code 2__1.html @@ -0,0 +1,9 @@ + +
Badge
\ No newline at end of file diff --git a/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Badge, code 3__1.html b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Badge, code 3__1.html new file mode 100644 index 00000000000..a32c304ab18 --- /dev/null +++ b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Badge, code 3__1.html @@ -0,0 +1,12 @@ + +
Badge +
\ No newline at end of file diff --git a/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Badge, code 4__1.html b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Badge, code 4__1.html new file mode 100644 index 00000000000..18c1b14ff9a --- /dev/null +++ b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Badge, code 4__1.html @@ -0,0 +1,12 @@ + +
Badge +
\ No newline at end of file diff --git a/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Badge, code 5__1.html b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Badge, code 5__1.html new file mode 100644 index 00000000000..5cdce6f87c3 --- /dev/null +++ b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Badge, code 5__1.html @@ -0,0 +1,12 @@ + +
Badge +
\ No newline at end of file diff --git a/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Badge, code 6__1.html b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Badge, code 6__1.html new file mode 100644 index 00000000000..c2dbe83612a --- /dev/null +++ b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Badge, code 6__1.html @@ -0,0 +1,15 @@ + +
+ + Verified +
\ No newline at end of file diff --git a/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Breadcrumb, code 1__1.html b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Breadcrumb, code 1__1.html new file mode 100644 index 00000000000..a7cb9999539 --- /dev/null +++ b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Breadcrumb, code 1__1.html @@ -0,0 +1,47 @@ + + \ No newline at end of file diff --git a/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Breadcrumb, code 2__1.html b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Breadcrumb, code 2__1.html new file mode 100644 index 00000000000..a7cb9999539 --- /dev/null +++ b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Breadcrumb, code 2__1.html @@ -0,0 +1,47 @@ + + \ No newline at end of file diff --git a/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Breadcrumb, code 3__1.html b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Breadcrumb, code 3__1.html new file mode 100644 index 00000000000..d55f2526493 --- /dev/null +++ b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Breadcrumb, code 3__1.html @@ -0,0 +1,56 @@ + + \ No newline at end of file diff --git a/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Button, code 10__1.html b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Button, code 10__1.html new file mode 100644 index 00000000000..cccc55500e1 --- /dev/null +++ b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Button, code 10__1.html @@ -0,0 +1,12 @@ + + \ No newline at end of file diff --git a/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Button, code 11__1.html b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Button, code 11__1.html new file mode 100644 index 00000000000..3268a717761 --- /dev/null +++ b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Button, code 11__1.html @@ -0,0 +1,12 @@ + + \ No newline at end of file diff --git a/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Button, code 1__1.html b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Button, code 1__1.html new file mode 100644 index 00000000000..adc6db76012 --- /dev/null +++ b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Button, code 1__1.html @@ -0,0 +1,12 @@ + + \ No newline at end of file diff --git a/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Button, code 2__1.html b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Button, code 2__1.html new file mode 100644 index 00000000000..adc6db76012 --- /dev/null +++ b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Button, code 2__1.html @@ -0,0 +1,12 @@ + + \ No newline at end of file diff --git a/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Button, code 3__1.html b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Button, code 3__1.html new file mode 100644 index 00000000000..8d5d34c2f1b --- /dev/null +++ b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Button, code 3__1.html @@ -0,0 +1,9 @@ + + \ No newline at end of file diff --git a/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Button, code 4__1.html b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Button, code 4__1.html new file mode 100644 index 00000000000..51fee13723d --- /dev/null +++ b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Button, code 4__1.html @@ -0,0 +1,9 @@ + + \ No newline at end of file diff --git a/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Button, code 5__1.html b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Button, code 5__1.html new file mode 100644 index 00000000000..609ce7dc802 --- /dev/null +++ b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Button, code 5__1.html @@ -0,0 +1,9 @@ + + \ No newline at end of file diff --git a/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Button, code 6__1.html b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Button, code 6__1.html new file mode 100644 index 00000000000..51fee13723d --- /dev/null +++ b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Button, code 6__1.html @@ -0,0 +1,9 @@ + + \ No newline at end of file diff --git a/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Button, code 7__1.html b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Button, code 7__1.html new file mode 100644 index 00000000000..b787ff13452 --- /dev/null +++ b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Button, code 7__1.html @@ -0,0 +1,9 @@ + + \ No newline at end of file diff --git a/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Button, code 8__1.html b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Button, code 8__1.html new file mode 100644 index 00000000000..0bdafc6e3f0 --- /dev/null +++ b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Button, code 8__1.html @@ -0,0 +1,9 @@ + + \ No newline at end of file diff --git a/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Button, code 9__1.html b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Button, code 9__1.html new file mode 100644 index 00000000000..331e9217ac5 --- /dev/null +++ b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Button, code 9__1.html @@ -0,0 +1,12 @@ + + \ No newline at end of file diff --git a/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Card, code 1__1.html b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Card, code 1__1.html new file mode 100644 index 00000000000..0adf24f033d --- /dev/null +++ b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Card, code 1__1.html @@ -0,0 +1,33 @@ + +
+
+
Card Title
+
Card Description
+
+
+

Lorem ipsum dolor sit amet consectetur adipisicing elit. Quisquam, quos.

+
+
+ + +
+
\ No newline at end of file diff --git a/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Card, code 2__1.html b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Card, code 2__1.html new file mode 100644 index 00000000000..0adf24f033d --- /dev/null +++ b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Card, code 2__1.html @@ -0,0 +1,33 @@ + +
+
+
Card Title
+
Card Description
+
+
+

Lorem ipsum dolor sit amet consectetur adipisicing elit. Quisquam, quos.

+
+
+ + +
+
\ No newline at end of file diff --git a/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Card, code 3__1.html b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Card, code 3__1.html new file mode 100644 index 00000000000..9171b0e831f --- /dev/null +++ b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Card, code 3__1.html @@ -0,0 +1,85 @@ + +
+
+
Notifications
+
You have 3 unread messages.
+
+
+
+ +
+

+ Your call has been confirmed. +

+

+ 1 hour ago +

+
+
+
+ +
+

+ You have a new message! +

+

+ 1 hour ago +

+
+
+
+ +
+

+ Your subscription is expiring soon! +

+

+ 2 hours ago +

+
+
+
+
+ +
+
\ No newline at end of file diff --git a/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Checkbox, code 1__1.html b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Checkbox, code 1__1.html new file mode 100644 index 00000000000..543639dbff1 --- /dev/null +++ b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Checkbox, code 1__1.html @@ -0,0 +1,20 @@ + +
+ + + +
\ No newline at end of file diff --git a/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Checkbox, code 2__1.html b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Checkbox, code 2__1.html new file mode 100644 index 00000000000..543639dbff1 --- /dev/null +++ b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Checkbox, code 2__1.html @@ -0,0 +1,20 @@ + +
+ + + +
\ No newline at end of file diff --git a/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Checkbox, code 3__1.html b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Checkbox, code 3__1.html new file mode 100644 index 00000000000..169aee1851c --- /dev/null +++ b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Checkbox, code 3__1.html @@ -0,0 +1,16 @@ + +
+ + + +
\ No newline at end of file diff --git a/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Checkbox, code 4__1.html b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Checkbox, code 4__1.html new file mode 100644 index 00000000000..70ca0d838fb --- /dev/null +++ b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Checkbox, code 4__1.html @@ -0,0 +1,16 @@ + +
+ + + +
\ No newline at end of file diff --git a/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Input, code 1__1.html b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Input, code 1__1.html new file mode 100644 index 00000000000..1e51cbcdbd4 --- /dev/null +++ b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Input, code 1__1.html @@ -0,0 +1,9 @@ + + \ No newline at end of file diff --git a/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Input, code 2__1.html b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Input, code 2__1.html new file mode 100644 index 00000000000..1e51cbcdbd4 --- /dev/null +++ b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Input, code 2__1.html @@ -0,0 +1,9 @@ + + \ No newline at end of file diff --git a/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Input, code 3__1.html b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Input, code 3__1.html new file mode 100644 index 00000000000..426ba17ddf4 --- /dev/null +++ b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Input, code 3__1.html @@ -0,0 +1,16 @@ + +
+ + + +
\ No newline at end of file diff --git a/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Input, code 4__1.html b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Input, code 4__1.html new file mode 100644 index 00000000000..9ef448ac461 --- /dev/null +++ b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Input, code 4__1.html @@ -0,0 +1,9 @@ + + \ No newline at end of file diff --git a/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Input, code 5__1.html b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Input, code 5__1.html new file mode 100644 index 00000000000..3ee2727d1b8 --- /dev/null +++ b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Input, code 5__1.html @@ -0,0 +1,16 @@ + +
+ + + +
\ No newline at end of file diff --git a/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Input, code 6__1.html b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Input, code 6__1.html new file mode 100644 index 00000000000..1811212cd22 --- /dev/null +++ b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Input, code 6__1.html @@ -0,0 +1,16 @@ + +
+ + + +
\ No newline at end of file diff --git a/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Label, code 1__1.html b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Label, code 1__1.html new file mode 100644 index 00000000000..c085f9dbf88 --- /dev/null +++ b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Label, code 1__1.html @@ -0,0 +1,16 @@ + +
+ + + +
\ No newline at end of file diff --git a/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Label, code 2__1.html b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Label, code 2__1.html new file mode 100644 index 00000000000..c085f9dbf88 --- /dev/null +++ b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Label, code 2__1.html @@ -0,0 +1,16 @@ + +
+ + + +
\ No newline at end of file diff --git a/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Label, code 3__1.html b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Label, code 3__1.html new file mode 100644 index 00000000000..2ac19e5f059 --- /dev/null +++ b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Label, code 3__1.html @@ -0,0 +1,16 @@ + +
+ + + +
\ No newline at end of file diff --git a/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Label, code 4__1.html b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Label, code 4__1.html new file mode 100644 index 00000000000..ccf0432e0ef --- /dev/null +++ b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Label, code 4__1.html @@ -0,0 +1,16 @@ + +
+ + + +
\ No newline at end of file diff --git a/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Pagination, code 1__1.html b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Pagination, code 1__1.html new file mode 100644 index 00000000000..54da00b18ac --- /dev/null +++ b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Pagination, code 1__1.html @@ -0,0 +1,60 @@ + + \ No newline at end of file diff --git a/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Pagination, code 2__1.html b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Pagination, code 2__1.html new file mode 100644 index 00000000000..54da00b18ac --- /dev/null +++ b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Pagination, code 2__1.html @@ -0,0 +1,60 @@ + + \ No newline at end of file diff --git a/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Pagination, code 3__1.html b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Pagination, code 3__1.html new file mode 100644 index 00000000000..cbdcec499aa --- /dev/null +++ b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Pagination, code 3__1.html @@ -0,0 +1,82 @@ + + \ No newline at end of file diff --git a/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Progress, code 1__1.html b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Progress, code 1__1.html new file mode 100644 index 00000000000..0731fbc07ce --- /dev/null +++ b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Progress, code 1__1.html @@ -0,0 +1,11 @@ + +
+
+
\ No newline at end of file diff --git a/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Progress, code 2__1.html b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Progress, code 2__1.html new file mode 100644 index 00000000000..0731fbc07ce --- /dev/null +++ b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Progress, code 2__1.html @@ -0,0 +1,11 @@ + +
+
+
\ No newline at end of file diff --git a/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Progress, code 3__1.html b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Progress, code 3__1.html new file mode 100644 index 00000000000..2fcf5c28d83 --- /dev/null +++ b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Progress, code 3__1.html @@ -0,0 +1,24 @@ + +
+
+ + 33% +
+
+
+
+ +
\ No newline at end of file diff --git a/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Progress, code 4__1.html b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Progress, code 4__1.html new file mode 100644 index 00000000000..0256b1db386 --- /dev/null +++ b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Progress, code 4__1.html @@ -0,0 +1,36 @@ + +
+
+
+
+ +
+
+
+ +
+
+
+ +
+
+
+ +
+
+
+ +
\ No newline at end of file diff --git a/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Select, code 1__1.html b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Select, code 1__1.html new file mode 100644 index 00000000000..4d34ca5723c --- /dev/null +++ b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Select, code 1__1.html @@ -0,0 +1,16 @@ + + \ No newline at end of file diff --git a/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Select, code 2__1.html b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Select, code 2__1.html new file mode 100644 index 00000000000..4d34ca5723c --- /dev/null +++ b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Select, code 2__1.html @@ -0,0 +1,16 @@ + + \ No newline at end of file diff --git a/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Select, code 3__1.html b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Select, code 3__1.html new file mode 100644 index 00000000000..c989fe3eec4 --- /dev/null +++ b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Select, code 3__1.html @@ -0,0 +1,22 @@ + +
+ + +
\ No newline at end of file diff --git a/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Select, code 4__1.html b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Select, code 4__1.html new file mode 100644 index 00000000000..f82b4538605 --- /dev/null +++ b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Select, code 4__1.html @@ -0,0 +1,16 @@ + + \ No newline at end of file diff --git a/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Separator, code 1__1.html b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Separator, code 1__1.html new file mode 100644 index 00000000000..565b8f66e20 --- /dev/null +++ b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Separator, code 1__1.html @@ -0,0 +1,45 @@ + +
+
+

Symfony UX

+

+ Symfony UX initiative: a JavaScript ecosystem for Symfony +

+
+
+
+ +
+ Website +
+
+ + Packages +
+
+ + Source +
+
\ No newline at end of file diff --git a/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Separator, code 2__1.html b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Separator, code 2__1.html new file mode 100644 index 00000000000..c1a0775bffe --- /dev/null +++ b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Separator, code 2__1.html @@ -0,0 +1,45 @@ + +
+
+

Symfony UX

+

+ Symfony UX initiative: a JavaScript ecosystem for Symfony +

+
+
+
+ +
+
Blog
+
+
+ +
Docs
+
+
+ +
Source
+
+
\ No newline at end of file diff --git a/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Separator, code 3__1.html b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Separator, code 3__1.html new file mode 100644 index 00000000000..dbd412538bf --- /dev/null +++ b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Separator, code 3__1.html @@ -0,0 +1,25 @@ + +
+
Blog
+
+
+ +
Docs
+
+
+ +
Source
+
\ No newline at end of file diff --git a/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Skeleton, code 1__1.html b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Skeleton, code 1__1.html new file mode 100644 index 00000000000..499706948a1 --- /dev/null +++ b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Skeleton, code 1__1.html @@ -0,0 +1,24 @@ + +
+
+ +
+
+ +
+ +
+
\ No newline at end of file diff --git a/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Skeleton, code 2__1.html b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Skeleton, code 2__1.html new file mode 100644 index 00000000000..499706948a1 --- /dev/null +++ b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Skeleton, code 2__1.html @@ -0,0 +1,24 @@ + +
+
+ +
+
+ +
+ +
+
\ No newline at end of file diff --git a/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Skeleton, code 3__1.html b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Skeleton, code 3__1.html new file mode 100644 index 00000000000..dd9e56d778d --- /dev/null +++ b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Skeleton, code 3__1.html @@ -0,0 +1,24 @@ + +
+
+ +
+
+ +
+ +
+
\ No newline at end of file diff --git a/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Switch, code 1__1.html b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Switch, code 1__1.html new file mode 100644 index 00000000000..d8b44e43b80 --- /dev/null +++ b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Switch, code 1__1.html @@ -0,0 +1,19 @@ + +
+ + + +
\ No newline at end of file diff --git a/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Switch, code 2__1.html b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Switch, code 2__1.html new file mode 100644 index 00000000000..d8b44e43b80 --- /dev/null +++ b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Switch, code 2__1.html @@ -0,0 +1,19 @@ + +
+ + + +
\ No newline at end of file diff --git a/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Switch, code 3__1.html b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Switch, code 3__1.html new file mode 100644 index 00000000000..69fc94946cc --- /dev/null +++ b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Switch, code 3__1.html @@ -0,0 +1,53 @@ + +
+

Email Notifications

+
+
+
+ +

Receive emails about new products, features, and more.

+
+ + +
+
+
+ +

Receive emails about your account security.

+
+ + +
+
+
\ No newline at end of file diff --git a/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Table, code 1__1.html b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Table, code 1__1.html new file mode 100644 index 00000000000..4b75f309575 --- /dev/null +++ b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Table, code 1__1.html @@ -0,0 +1,65 @@ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
A list of your recent invoices.
InvoiceStatusMethodAmount
INV001PaidCredit Card$250.00
INV002PendingPayPal$150.00
INV003UnpaidBank Transfer$350.00
+
\ No newline at end of file diff --git a/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Table, code 2__1.html b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Table, code 2__1.html new file mode 100644 index 00000000000..b9f6244ffce --- /dev/null +++ b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Table, code 2__1.html @@ -0,0 +1,105 @@ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
A list of your recent invoices.
InvoiceStatusMethodAmount
INV001PaidCredit Card$250.00
INV002PendingPayPal$150.00
INV003UnpaidBank Transfer$350.00
INV004PaidCredit Card$450.00
INV005PaidPayPal$550.00
INV006PendingBank Transfer$200.00
INV007UnpaidCredit Card$300.00
Total$1,500.00
+
\ No newline at end of file diff --git a/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Textarea, code 1__1.html b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Textarea, code 1__1.html new file mode 100644 index 00000000000..49c8bdd6848 --- /dev/null +++ b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Textarea, code 1__1.html @@ -0,0 +1,9 @@ + + \ No newline at end of file diff --git a/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Textarea, code 2__1.html b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Textarea, code 2__1.html new file mode 100644 index 00000000000..49c8bdd6848 --- /dev/null +++ b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Textarea, code 2__1.html @@ -0,0 +1,9 @@ + + \ No newline at end of file diff --git a/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Textarea, code 3__1.html b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Textarea, code 3__1.html new file mode 100644 index 00000000000..61f1f01f337 --- /dev/null +++ b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Textarea, code 3__1.html @@ -0,0 +1,16 @@ + +
+ + + +
\ No newline at end of file diff --git a/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Textarea, code 4__1.html b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Textarea, code 4__1.html new file mode 100644 index 00000000000..ff0e2502d34 --- /dev/null +++ b/src/Toolkit/tests/Functional/__snapshots__/ComponentsRenderingTest__testComponentRendering with data set Kit shadcn, component Textarea, code 4__1.html @@ -0,0 +1,9 @@ + + \ No newline at end of file diff --git a/src/Toolkit/tests/Kit/KitContextRunnerTest.php b/src/Toolkit/tests/Kit/KitContextRunnerTest.php new file mode 100644 index 00000000000..7cfe77c4094 --- /dev/null +++ b/src/Toolkit/tests/Kit/KitContextRunnerTest.php @@ -0,0 +1,63 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\UX\Toolkit\Tests\Kit; + +use Symfony\Bundle\FrameworkBundle\Test\KernelTestCase; +use Symfony\UX\Toolkit\Kit\KitContextRunner; +use Symfony\UX\TwigComponent\ComponentFactory; +use Symfony\UX\TwigComponent\ComponentTemplateFinder; +use Symfony\UX\TwigComponent\ComponentTemplateFinderInterface; + +class KitContextRunnerTest extends KernelTestCase +{ + public function testRunForKitShouldConfigureThenResetServices(): void + { + $twig = self::getContainer()->get('twig'); + $initialTwigLoader = $twig->getLoader(); + + $componentFactory = self::getContainer()->get('ux.twig_component.component_factory'); + $initialComponentFactoryState = $this->extractComponentFactoryState($componentFactory); + $this->assertInstanceOf(ComponentTemplateFinder::class, $initialComponentFactoryState['componentTemplateFinder']); + $this->assertIsArray($initialComponentFactoryState['config']); + + $executed = false; + $kitContextRunner = self::getContainer()->get('ux_toolkit.kit.kit_context_runner'); + $kitContextRunner->runForKit(self::getContainer()->get('ux_toolkit.registry.local')->getKit('shadcn'), function () use (&$executed, $twig, $initialTwigLoader, $componentFactory, $initialComponentFactoryState) { + $executed = true; + + $this->assertNotEquals($initialTwigLoader, $twig->getLoader(), 'The Twig loader must be different in this current kit-aware context.'); + $this->assertNotEquals($initialComponentFactoryState, $this->extractComponentFactoryState($componentFactory), 'The ComponentFactory state must be different in this current kit-aware context.'); + + $template = $twig->createTemplate('Hello world'); + $renderedTemplate = $template->render(); + + $this->assertNotEmpty($renderedTemplate); + $this->assertStringContainsString('Hello world', $renderedTemplate); + $this->assertStringContainsString('style="aspect-ratio:', $renderedTemplate); + }); + $this->assertTrue($executed, \sprintf('The callback passed to %s::runForKit() has not been executed.', KitContextRunner::class)); + + $this->assertEquals($initialTwigLoader, $twig->getLoader(), 'The Twig loader must be back to its original implementation.'); + $this->assertEquals($initialComponentFactoryState, $this->extractComponentFactoryState($componentFactory), 'The ComponentFactory must be back to its original state.'); + } + + /** + * @return array{componentTemplateFinder: ComponentTemplateFinderInterface::class, config: array} + */ + private function extractComponentFactoryState(ComponentFactory $componentFactory): array + { + $componentTemplateFinder = \Closure::bind(fn (ComponentFactory $componentFactory) => $componentFactory->componentTemplateFinder, null, $componentFactory)($componentFactory); + $config = \Closure::bind(fn (ComponentFactory $componentFactory) => $componentFactory->config, null, $componentFactory)($componentFactory); + + return ['componentTemplateFinder' => $componentTemplateFinder, 'config' => $config]; + } +} diff --git a/ux.symfony.com/src/Controller/Toolkit/ComponentsController.php b/ux.symfony.com/src/Controller/Toolkit/ComponentsController.php index bb70a547771..f0bb2599916 100644 --- a/ux.symfony.com/src/Controller/Toolkit/ComponentsController.php +++ b/ux.symfony.com/src/Controller/Toolkit/ComponentsController.php @@ -23,12 +23,7 @@ use Symfony\Component\HttpKernel\Exception\BadRequestHttpException; use Symfony\Component\HttpKernel\Profiler\Profiler; use Symfony\Component\Routing\Attribute\Route; -use Symfony\UX\Toolkit\File\FileType; -use Symfony\UX\Toolkit\Kit\Kit; -use Symfony\UX\TwigComponent\ComponentFactory; -use Symfony\UX\TwigComponent\ComponentTemplateFinderInterface; -use Twig\Loader\ChainLoader; -use Twig\Loader\FilesystemLoader; +use Symfony\UX\Toolkit\Kit\KitContextRunner; class ComponentsController extends AbstractController { @@ -75,8 +70,8 @@ public function previewComponent( #[MapQueryParameter] string $height, UriSigner $uriSigner, \Twig\Environment $twig, - #[Autowire(service: 'ux.twig_component.component_factory')] - ComponentFactory $componentFactory, + #[Autowire(service: 'ux_toolkit.kit.kit_context_runner')] + KitContextRunner $kitContextRunner, #[Autowire(service: 'profiler')] ?Profiler $profiler, ): Response { @@ -88,34 +83,6 @@ public function previewComponent( $kit = $this->toolkitService->getKit($kitId); - $twig->setLoader(new ChainLoader([ - new FilesystemLoader($kit->path.\DIRECTORY_SEPARATOR.'templates'.\DIRECTORY_SEPARATOR.'components'), - $twig->getLoader(), - ])); - - $this->tweakComponentFactory( - $componentFactory, - new class($kit) implements ComponentTemplateFinderInterface { - public function __construct( - private readonly Kit $kit, - ) { - } - - public function findAnonymousComponentTemplate(string $name): ?string - { - if ($component = $this->kit->getComponent($name)) { - foreach ($component->files as $file) { - if (FileType::Twig === $file->type) { - return $file->relativePathName; - } - } - } - - return null; - } - } - ); - $template = $twig->createTemplate(<< @@ -129,24 +96,9 @@ public function findAnonymousComponentTemplate(string $name): ?string HTML); return new Response( - $twig->render($template), + $kitContextRunner->runForKit($kit, fn () => $twig->render($template)), Response::HTTP_OK, ['X-Robots-Tag' => 'noindex, nofollow'] ); } - - /** - * Tweak the ComponentFactory to render anonymous components from the Toolkit kit. - * TODO: In the future, we should implement multiple directories for anonymous components. - */ - private function tweakComponentFactory(ComponentFactory $componentFactory, ComponentTemplateFinderInterface $componentTemplateFinder): void - { - $refl = new \ReflectionClass($componentFactory); - - $propertyConfig = $refl->getProperty('config'); - $propertyConfig->setValue($componentFactory, []); - - $propertyComponentTemplateFinder = $refl->getProperty('componentTemplateFinder'); - $propertyComponentTemplateFinder->setValue($componentFactory, $componentTemplateFinder); - } }