From c68ee1874fc62536b7e3ea37a2ed4fa6fb66dd5f Mon Sep 17 00:00:00 2001 From: Grok Designer Date: Sun, 18 Oct 2026 22:21:52 +0300 Subject: [PATCH 1/8] xgen-2: replace the 0.1 engine with the xgen generation layer Brings the xgen packages of codegen-x/ui8kit (main 18d9e650) into ui8kit/codegen: schema (JSON Schemas, Codex manifest and block data, @ui8kit/contract v0.4 validation), spec (loader and canonical renderer), screens (view IR builder, authoring of organisms, blocks, presets and screens), generator, check, cli and the runtimes svelte, react, vue, solid, templ, twig, jinja2, latte; plus rules/, packages/tooling, the ui8px policy and the root Bun workspace. Standalone changes: the Go module is github.com/ui8kit/codegen/packages/templ/ui; the taste-data copy-deck target and the magazine style zone apply only when those packages exist; blocks.json regenerated without the monorepo-only surfaces; tests read the workspace instead of assuming apps/magazine; the 0.1 engine (bricks/, src/, runtime/, generated/, examples/, tests/) is removed (still at 972b492 on main). Version 2.0.0 (not published); LICENSE holder UI8Kit. --- .githooks/pre-push | 9 + .github/workflows/ci.yml | 25 +- .gitignore | 25 +- .project/README.md | 11 - .project/plan/jinja2-runtime.md | 103 - .project/plan/rails-erb-runtime.md | 135 - .project/progress.md | 26 - .project/roadmap.md | 32 - .ui8px/gate.json | 10 + .ui8px/policy/allowed.json | 447 + .ui8px/policy/denied.json | 16 + .ui8px/policy/groups.json | 57 + .ui8px/policy/patterns.json | 3 + .ui8px/policy/scopes.json | 58 + README.md | 217 - bricks/_dsl.ts | 136 - bricks/alert/alert.def.ts | 65 - bricks/alert/alert.variants.json | 17 - bricks/badge/badge.data.json | 42 - bricks/badge/badge.def.ts | 36 - bricks/badge/badge.variants.json | 26 - bricks/block/block.data.json | 36 - bricks/block/block.def.ts | 44 - bricks/block/block.variants.json | 8 - bricks/box/box.data.json | 16 - bricks/box/box.def.ts | 31 - bricks/box/box.variants.json | 8 - bricks/breadcrumb/breadcrumb.def.ts | 106 - bricks/button/button.data.json | 107 - bricks/button/button.def.ts | 119 - bricks/button/button.variants.json | 29 - bricks/card/card.def.ts | 87 - bricks/card/card.variants.json | 21 - bricks/checkbox/checkbox.data.json | 26 - bricks/checkbox/checkbox.def.ts | 66 - bricks/checkbox/checkbox.variants.json | 26 - bricks/container/container.data.json | 18 - bricks/container/container.def.ts | 26 - bricks/container/container.variants.json | 8 - bricks/dialog/dialog.data.json | 20 - bricks/dialog/dialog.def.ts | 62 - bricks/dialog/dialog.variants.json | 27 - bricks/disclosure/disclosure.data.json | 16 - bricks/disclosure/disclosure.def.ts | 58 - bricks/disclosure/disclosure.variants.json | 25 - bricks/disclosure/summary.variants.json | 25 - bricks/form/controls.data.json | 17 - bricks/form/controls.def.ts | 162 - bricks/form/fieldset.variants.json | 25 - bricks/form/form-description.variants.json | 8 - bricks/form/form-item.variants.json | 8 - bricks/form/form-message.variants.json | 8 - bricks/form/form.data.json | 14 - bricks/form/form.def.ts | 108 - bricks/form/form.variants.json | 8 - bricks/form/legend.variants.json | 24 - bricks/form/meter.variants.json | 24 - bricks/form/progress.variants.json | 24 - bricks/grid/grid.data.json | 18 - bricks/grid/grid.def.ts | 96 - bricks/grid/grid.variants.json | 8 - bricks/group/group.data.json | 18 - bricks/group/group.def.ts | 31 - bricks/group/group.variants.json | 8 - bricks/icon/icon.data.json | 22 - bricks/icon/icon.def.ts | 108 - bricks/icon/icon.variants.json | 28 - bricks/iconbadge/iconbadge.def.ts | 32 - bricks/iconbadge/iconbadge.variants.json | 25 - bricks/image/image.data.json | 32 - bricks/image/image.def.ts | 120 - bricks/image/image.variants.json | 61 - bricks/index.ts | 75 - bricks/inline/inline.data.json | 11 - bricks/inline/inline.def.ts | 22 - bricks/inline/inline.variants.json | 8 - bricks/input/input.data.json | 42 - bricks/input/input.def.ts | 75 - bricks/input/input.variants.json | 26 - bricks/label/label.data.json | 11 - bricks/label/label.def.ts | 19 - bricks/label/label.variants.json | 8 - bricks/linebreak/linebreak.data.json | 16 - bricks/linebreak/linebreak.def.ts | 28 - bricks/linebreak/linebreak.variants.json | 8 - bricks/link/link.data.json | 17 - bricks/link/link.def.ts | 92 - bricks/link/link.variants.json | 28 - bricks/list/list.data.json | 24 - bricks/list/list.def.ts | 66 - bricks/list/list.variants.json | 8 - bricks/radio/radio.data.json | 18 - bricks/radio/radio.def.ts | 64 - bricks/radio/radio.variants.json | 26 - bricks/select/select.data.json | 34 - bricks/select/select.def.ts | 129 - bricks/select/select.variants.json | 26 - bricks/separator/separator.data.json | 17 - bricks/separator/separator.def.ts | 52 - bricks/separator/separator.variants.json | 25 - bricks/stack/stack.data.json | 18 - bricks/stack/stack.def.ts | 31 - bricks/stack/stack.variants.json | 8 - bricks/switch/switch.data.json | 29 - bricks/switch/switch.def.ts | 71 - bricks/switch/switch.variants.json | 26 - bricks/table/table.data.json | 28 - bricks/table/table.def.ts | 119 - bricks/table/table.variants.json | 8 - bricks/text/text.data.json | 19 - bricks/text/text.def.ts | 22 - bricks/text/text.variants.json | 8 - bricks/textarea/textarea.data.json | 26 - bricks/textarea/textarea.def.ts | 70 - bricks/textarea/textarea.variants.json | 26 - bricks/title/title.data.json | 22 - bricks/title/title.def.ts | 38 - bricks/title/title.variants.json | 8 - bun.lock | 776 +- bunfig.toml | 4 +- docs/README.md | 35 - docs/architecture.md | 156 - docs/bricks.md | 205 - docs/cli-and-scripts.md | 158 - docs/contract.md | 125 - docs/examples.md | 151 - docs/getting-started.md | 141 - docs/latte-bundle.md | 41 - docs/overview.md | 76 - docs/php-complex-parts.md | 410 - docs/runtimes.md | 180 - docs/testing-and-ci.md | 201 - examples/README.md | 65 - examples/bun.lock | 468 - examples/data/welcome.json | 27 - examples/dist/static/css/app.css | 2 - examples/dist/static/css/input.css | 16 - examples/dist/static/css/tokens.css | 221 - examples/html/about/index.html | 12 - examples/html/index.html | 12 - examples/html/static/css/app.css | 2 - examples/html/static/css/input.css | 20 - examples/html/static/css/tokens.css | 221 - examples/latte/server.php | 37 - examples/latte/templates/page.latte | 13 - examples/latte/templates/welcome.latte | 107 - examples/package.json | 40 - examples/react/dist/assets/index-TdQjjyEy.js | 49 - examples/react/dist/index.html | 13 - examples/react/index.html | 13 - examples/react/script/generate-static.tsx | 61 - examples/react/src/Welcome.tsx | 104 - examples/react/src/main.tsx | 9 - examples/react/tsconfig.json | 19 - examples/react/vite.config.ts | 24 - examples/scripts/composer-install.mjs | 39 - examples/scripts/php-server.mjs | 32 - examples/scripts/resolve-php.mjs | 43 - examples/shared/vite-static.ts | 32 - examples/solid/index.html | 13 - examples/solid/src/Welcome.tsx | 105 - examples/solid/src/main.tsx | 5 - examples/solid/tsconfig.json | 17 - examples/solid/vite.config.ts | 23 - examples/svelte/dist/assets/index-Bluwn2uY.js | 2 - examples/svelte/dist/index.html | 13 - examples/svelte/index.html | 13 - examples/svelte/src/Welcome.svelte | 82 - examples/svelte/src/main.ts | 4 - examples/svelte/svelte.config.js | 6 - examples/svelte/tsconfig.json | 15 - examples/svelte/vite.config.ts | 23 - examples/templ/cmd/server/main.go | 54 - examples/templ/go.mod | 10 - examples/templ/go.sum | 4 - examples/templ/page.templ | 16 - examples/templ/page_templ.go | 48 - examples/templ/welcome.templ | 148 - examples/templ/welcome_templ.go | 1147 -- examples/twig/server.php | 35 - examples/twig/templates/page.html.twig | 12 - examples/twig/templates/welcome.html.twig | 105 - examples/vue/dist/assets/index-CdiGC986.js | 17 - examples/vue/dist/index.html | 13 - examples/vue/index.html | 13 - examples/vue/src/Welcome.vue | 87 - examples/vue/src/main.ts | 4 - examples/vue/tsconfig.json | 16 - examples/vue/vite.config.ts | 23 - examples/web/static/css/app.css | 2 - examples/web/static/css/input.css | 21 - examples/web/static/css/tokens.css | 221 - generated/cmd/parity-latte/main.php | 29 - generated/cmd/parity-twig/main.php | 27 - generated/cmd/parity/main.go | 462 - generated/composer.json | 16 - generated/composer.lock | 431 - generated/go.mod | 5 - generated/go.sum | 4 - generated/php/UI8Kit/Classes.php | 410 - generated/php/UI8Kit/Rt.php | 190 - generated/php/UI8Kit/TwigExtension.php | 41 - generated/php/vendor/autoload.php | 22 - generated/php/vendor/bin/latte-lint | 119 - generated/php/vendor/bin/latte-lint.bat | 5 - generated/php/vendor/composer/ClassLoader.php | 579 - .../php/vendor/composer/InstalledVersions.php | 396 - generated/php/vendor/composer/LICENSE | 21 - .../php/vendor/composer/autoload_classmap.php | 192 - .../php/vendor/composer/autoload_files.php | 16 - .../vendor/composer/autoload_namespaces.php | 9 - .../php/vendor/composer/autoload_psr4.php | 14 - .../php/vendor/composer/autoload_real.php | 50 - .../php/vendor/composer/autoload_static.php | 257 - generated/php/vendor/composer/installed.json | 431 - generated/php/vendor/composer/installed.php | 68 - .../php/vendor/composer/platform_check.php | 25 - .../php/vendor/latte/latte/bin/latte-lint | 40 - .../php/vendor/latte/latte/composer.json | 65 - generated/php/vendor/latte/latte/license.md | 60 - generated/php/vendor/latte/latte/readme.md | 47 - .../src/Bridges/Tracy/BlueScreenPanel.php | 98 - .../latte/src/Bridges/Tracy/LattePanel.php | 124 - .../src/Bridges/Tracy/TracyExtension.php | 35 - .../latte/src/Bridges/Tracy/dist/panel.phtml | 94 - .../latte/src/Bridges/Tracy/dist/tab.phtml | 10 - .../latte/latte/src/Latte/Compiler/Block.php | 39 - .../latte/latte/src/Latte/Compiler/Dedent.php | 144 - .../latte/src/Latte/Compiler/Escaper.php | 261 - .../latte/latte/src/Latte/Compiler/Node.php | 24 - .../latte/src/Latte/Compiler/NodeHelpers.php | 152 - .../src/Latte/Compiler/NodeTraverser.php | 88 - .../src/Latte/Compiler/Nodes/AreaNode.php | 21 - .../Latte/Compiler/Nodes/AuxiliaryNode.php | 42 - .../src/Latte/Compiler/Nodes/FragmentNode.php | 79 - .../Compiler/Nodes/Html/AttributeNode.php | 58 - .../Compiler/Nodes/Html/BogusTagNode.php | 44 - .../Latte/Compiler/Nodes/Html/CommentNode.php | 40 - .../Latte/Compiler/Nodes/Html/ElementNode.php | 131 - .../Nodes/Html/ExpressionAttributeNode.php | 60 - .../src/Latte/Compiler/Nodes/Html/TagNode.php | 70 - .../src/Latte/Compiler/Nodes/NopNode.php | 28 - .../Latte/Compiler/Nodes/Php/ArgumentNode.php | 52 - .../Compiler/Nodes/Php/ArrayItemNode.php | 63 - .../Compiler/Nodes/Php/ClosureUseNode.php | 39 - .../Compiler/Nodes/Php/ComplexTypeNode.php | 18 - .../Nodes/Php/Expression/ArrayAccessNode.php | 42 - .../Nodes/Php/Expression/ArrayNode.php | 52 - .../Nodes/Php/Expression/AssignNode.php | 66 - .../Nodes/Php/Expression/AssignOpNode.php | 67 - .../Nodes/Php/Expression/AuxiliaryNode.php | 43 - .../Nodes/Php/Expression/BinaryOpNode.php | 94 - .../Nodes/Php/Expression/CastNode.php | 51 - .../Php/Expression/ClassConstantFetchNode.php | 43 - .../Nodes/Php/Expression/CloneNode.php | 44 - .../Nodes/Php/Expression/ClosureNode.php | 78 - .../Php/Expression/ConstantFetchNode.php | 46 - .../Nodes/Php/Expression/EmptyNode.php | 37 - .../Nodes/Php/Expression/FilterCallNode.php | 45 - .../Nodes/Php/Expression/FunctionCallNode.php | 54 - .../Compiler/Nodes/Php/Expression/InNode.php | 43 - .../Nodes/Php/Expression/InstanceofNode.php | 49 - .../Nodes/Php/Expression/IssetNode.php | 57 - .../Nodes/Php/Expression/MatchNode.php | 52 - .../Nodes/Php/Expression/MethodCallNode.php | 63 - .../Compiler/Nodes/Php/Expression/NewNode.php | 55 - .../Nodes/Php/Expression/PostOpNode.php | 62 - .../Nodes/Php/Expression/PreOpNode.php | 62 - .../Php/Expression/PropertyFetchNode.php | 43 - .../Php/Expression/StaticMethodCallNode.php | 64 - .../Expression/StaticPropertyFetchNode.php | 43 - .../Nodes/Php/Expression/TemporaryNode.php | 37 - .../Nodes/Php/Expression/TernaryNode.php | 55 - .../Nodes/Php/Expression/UnaryOpNode.php | 55 - .../Nodes/Php/Expression/VariableNode.php | 41 - .../Compiler/Nodes/Php/ExpressionNode.php | 51 - .../Latte/Compiler/Nodes/Php/FilterNode.php | 87 - .../Compiler/Nodes/Php/IdentifierNode.php | 43 - .../Nodes/Php/InterpolatedStringPartNode.php | 37 - .../Nodes/Php/IntersectionTypeNode.php | 42 - .../Latte/Compiler/Nodes/Php/ListItemNode.php | 49 - .../src/Latte/Compiler/Nodes/Php/ListNode.php | 57 - .../Latte/Compiler/Nodes/Php/MatchArmNode.php | 48 - .../Latte/Compiler/Nodes/Php/ModifierNode.php | 98 - .../src/Latte/Compiler/Nodes/Php/NameNode.php | 90 - .../Compiler/Nodes/Php/NullableTypeNode.php | 36 - .../Latte/Compiler/Nodes/Php/OperatorNode.php | 27 - .../Compiler/Nodes/Php/ParameterNode.php | 55 - .../Compiler/Nodes/Php/Scalar/BooleanNode.php | 31 - .../Compiler/Nodes/Php/Scalar/FloatNode.php | 66 - .../Compiler/Nodes/Php/Scalar/IntegerNode.php | 72 - .../Php/Scalar/InterpolatedStringNode.php | 78 - .../Compiler/Nodes/Php/Scalar/NullNode.php | 30 - .../Compiler/Nodes/Php/Scalar/StringNode.php | 42 - .../Latte/Compiler/Nodes/Php/ScalarNode.php | 20 - .../Compiler/Nodes/Php/SuperiorTypeNode.php | 36 - .../Compiler/Nodes/Php/UnionTypeNode.php | 42 - .../Nodes/Php/VarLikeIdentifierNode.php | 22 - .../Nodes/Php/VariadicPlaceholderNode.php | 36 - .../src/Latte/Compiler/Nodes/PrintNode.php | 59 - .../Latte/Compiler/Nodes/StatementNode.php | 23 - .../src/Latte/Compiler/Nodes/TemplateNode.php | 35 - .../src/Latte/Compiler/Nodes/TextNode.php | 45 - .../latte/src/Latte/Compiler/PhpHelpers.php | 279 - .../latte/src/Latte/Compiler/Position.php | 52 - .../latte/src/Latte/Compiler/PrintContext.php | 323 - .../latte/latte/src/Latte/Compiler/Range.php | 31 - .../latte/latte/src/Latte/Compiler/Tag.php | 128 - .../latte/src/Latte/Compiler/TagLexer.php | 399 - .../latte/src/Latte/Compiler/TagParser.php | 492 - .../src/Latte/Compiler/TagParserData.php | 629 -- .../src/Latte/Compiler/TemplateGenerator.php | 220 - .../src/Latte/Compiler/TemplateLexer.php | 343 - .../src/Latte/Compiler/TemplateParser.php | 509 - .../src/Latte/Compiler/TemplateParserHtml.php | 631 -- .../latte/latte/src/Latte/Compiler/Token.php | 270 - .../latte/src/Latte/Compiler/TokenStream.php | 141 - .../latte/latte/src/Latte/ContentType.php | 23 - .../vendor/latte/latte/src/Latte/Engine.php | 589 - .../src/Latte/Essential/AuxiliaryIterator.php | 44 - .../latte/src/Latte/Essential/Blueprint.php | 183 - .../src/Latte/Essential/CachingIterator.php | 222 - .../src/Latte/Essential/CoreExtension.php | 292 - .../latte/src/Latte/Essential/Filters.php | 855 -- .../src/Latte/Essential/Nodes/BlockNode.php | 161 - .../src/Latte/Essential/Nodes/CaptureNode.php | 86 - .../Latte/Essential/Nodes/ContentTypeNode.php | 86 - .../Nodes/CustomFunctionCallNode.php | 46 - .../Latte/Essential/Nodes/DebugbreakNode.php | 52 - .../src/Latte/Essential/Nodes/DefineNode.php | 136 - .../src/Latte/Essential/Nodes/DoNode.php | 60 - .../src/Latte/Essential/Nodes/DumpNode.php | 57 - .../src/Latte/Essential/Nodes/EmbedNode.php | 124 - .../src/Latte/Essential/Nodes/ExtendsNode.php | 55 - .../Essential/Nodes/FirstLastSepNode.php | 75 - .../src/Latte/Essential/Nodes/ForNode.php | 92 - .../src/Latte/Essential/Nodes/ForeachNode.php | 207 - .../Latte/Essential/Nodes/IfChangedNode.php | 137 - .../Latte/Essential/Nodes/IfContentNode.php | 86 - .../src/Latte/Essential/Nodes/IfNode.php | 182 - .../src/Latte/Essential/Nodes/ImportNode.php | 54 - .../Essential/Nodes/IncludeBlockNode.php | 142 - .../Latte/Essential/Nodes/IncludeFileNode.php | 78 - .../Essential/Nodes/IterateWhileNode.php | 96 - .../src/Latte/Essential/Nodes/JumpNode.php | 84 - .../src/Latte/Essential/Nodes/NAttrNode.php | 93 - .../src/Latte/Essential/Nodes/NClassNode.php | 53 - .../src/Latte/Essential/Nodes/NElseNode.php | 123 - .../src/Latte/Essential/Nodes/NTagNode.php | 47 - .../Latte/Essential/Nodes/ParametersNode.php | 87 - .../src/Latte/Essential/Nodes/RawPhpNode.php | 51 - .../Latte/Essential/Nodes/RollbackNode.php | 42 - .../Latte/Essential/Nodes/SpacelessNode.php | 61 - .../src/Latte/Essential/Nodes/SwitchNode.php | 121 - .../Essential/Nodes/TemplatePrintNode.php | 67 - .../Essential/Nodes/TemplateTypeNode.php | 43 - .../src/Latte/Essential/Nodes/TraceNode.php | 40 - .../Latte/Essential/Nodes/TranslateNode.php | 104 - .../src/Latte/Essential/Nodes/TryNode.php | 73 - .../src/Latte/Essential/Nodes/VarNode.php | 106 - .../Latte/Essential/Nodes/VarPrintNode.php | 52 - .../src/Latte/Essential/Nodes/VarTypeNode.php | 41 - .../src/Latte/Essential/Nodes/WhileNode.php | 81 - .../latte/src/Latte/Essential/Passes.php | 134 - .../src/Latte/Essential/RawPhpExtension.php | 24 - .../src/Latte/Essential/RollbackException.php | 14 - .../latte/src/Latte/Essential/Tracer.php | 116 - .../Latte/Essential/TranslatorExtension.php | 106 - .../latte/latte/src/Latte/Extension.php | 103 - .../vendor/latte/latte/src/Latte/Helpers.php | 234 - .../vendor/latte/latte/src/Latte/Loader.php | 30 - .../latte/src/Latte/Loaders/FileLoader.php | 87 - .../latte/src/Latte/Loaders/StringLoader.php | 60 - .../vendor/latte/latte/src/Latte/Policy.php | 25 - .../latte/latte/src/Latte/Runtime/Block.php | 18 - .../latte/latte/src/Latte/Runtime/Cache.php | 146 - .../src/Latte/Runtime/FilterExecutor.php | 143 - .../latte/src/Latte/Runtime/FilterInfo.php | 37 - .../src/Latte/Runtime/FunctionExecutor.php | 70 - .../latte/latte/src/Latte/Runtime/Helpers.php | 91 - .../latte/latte/src/Latte/Runtime/Html.php | 29 - .../latte/src/Latte/Runtime/HtmlHelpers.php | 385 - .../src/Latte/Runtime/HtmlStringable.php | 18 - .../latte/src/Latte/Runtime/Template.php | 366 - .../latte/src/Latte/Runtime/XmlHelpers.php | 114 - .../Latte/Sandbox/Nodes/FunctionCallNode.php | 38 - .../Latte/Sandbox/Nodes/MethodCallNode.php | 42 - .../Latte/Sandbox/Nodes/PropertyFetchNode.php | 33 - .../src/Latte/Sandbox/Nodes/SandboxNode.php | 72 - .../Sandbox/Nodes/StaticMethodCallNode.php | 41 - .../Sandbox/Nodes/StaticPropertyFetchNode.php | 33 - .../src/Latte/Sandbox/RuntimeChecker.php | 131 - .../src/Latte/Sandbox/SandboxExtension.php | 140 - .../src/Latte/Sandbox/SecurityPolicy.php | 189 - .../latte/latte/src/Latte/attributes.php | 28 - .../vendor/latte/latte/src/Latte/enums.php | 30 - .../latte/latte/src/Latte/exceptions.php | 106 - .../vendor/latte/latte/src/Tools/Linter.php | 199 - .../latte/latte/src/Tools/LinterExtension.php | 176 - .../deprecation-contracts/CHANGELOG.md | 5 - .../symfony/deprecation-contracts/LICENSE | 19 - .../symfony/deprecation-contracts/README.md | 26 - .../deprecation-contracts/composer.json | 35 - .../deprecation-contracts/function.php | 27 - .../vendor/symfony/polyfill-ctype/Ctype.php | 232 - .../php/vendor/symfony/polyfill-ctype/LICENSE | 19 - .../vendor/symfony/polyfill-ctype/README.md | 12 - .../symfony/polyfill-ctype/bootstrap.php | 50 - .../symfony/polyfill-ctype/bootstrap80.php | 46 - .../symfony/polyfill-ctype/composer.json | 38 - .../vendor/symfony/polyfill-mbstring/LICENSE | 19 - .../symfony/polyfill-mbstring/Mbstring.php | 1138 -- .../symfony/polyfill-mbstring/README.md | 13 - .../Resources/unidata/caseFolding.php | 119 - .../Resources/unidata/lowerCase.php | 1397 --- .../Resources/unidata/titleCaseRegexp.php | 5 - .../Resources/unidata/upperCase.php | 1489 --- .../symfony/polyfill-mbstring/bootstrap.php | 16 - .../symfony/polyfill-mbstring/bootstrap72.php | 173 - .../symfony/polyfill-mbstring/bootstrap80.php | 167 - .../symfony/polyfill-mbstring/composer.json | 39 - generated/php/vendor/twig/twig/CHANGELOG | 569 - generated/php/vendor/twig/twig/LICENSE | 27 - generated/php/vendor/twig/twig/README.rst | 23 - generated/php/vendor/twig/twig/composer.json | 54 - .../twig/twig/src/AbstractTwigCallable.php | 199 - .../twig/twig/src/Attribute/AsTwigFilter.php | 60 - .../twig/src/Attribute/AsTwigFunction.php | 56 - .../twig/twig/src/Attribute/AsTwigTest.php | 52 - .../Attribute/FirstClassTwigCallableReady.php | 20 - .../twig/twig/src/Attribute/YieldReady.php | 20 - .../twig/twig/src/Cache/CacheInterface.php | 46 - .../vendor/twig/twig/src/Cache/ChainCache.php | 88 - .../twig/twig/src/Cache/FilesystemCache.php | 95 - .../vendor/twig/twig/src/Cache/NullCache.php | 42 - .../src/Cache/ReadOnlyFilesystemCache.php | 25 - .../src/Cache/RemovableCacheInterface.php | 20 - .../php/vendor/twig/twig/src/Compiler.php | 263 - .../twig/twig/src/DeprecatedCallableInfo.php | 67 - .../php/vendor/twig/twig/src/Environment.php | 953 -- .../php/vendor/twig/twig/src/Error/Error.php | 208 - .../twig/twig/src/Error/LoaderError.php | 21 - .../twig/twig/src/Error/RuntimeError.php | 22 - .../twig/twig/src/Error/SyntaxError.php | 46 - .../vendor/twig/twig/src/ExpressionParser.php | 369 - .../AbstractExpressionParser.php | 35 - .../ExpressionParserDescriptionInterface.php | 17 - .../ExpressionParserInterface.php | 36 - .../ExpressionParser/ExpressionParserType.php | 33 - .../ExpressionParser/ExpressionParsers.php | 155 - .../ExpressionParser/Infix/ArgumentsTrait.php | 83 - .../Infix/ArrowExpressionParser.php | 53 - .../Infix/AssignmentExpressionParser.php | 66 - .../Infix/BinaryOperatorExpressionParser.php | 80 - .../ConditionalTernaryExpressionParser.php | 62 - .../Infix/DotExpressionParser.php | 114 - .../Infix/FilterExpressionParser.php | 85 - .../Infix/FunctionExpressionParser.php | 97 - .../Infix/IsExpressionParser.php | 84 - .../Infix/IsNotExpressionParser.php | 33 - .../Infix/SquareBracketExpressionParser.php | 91 - .../ExpressionParser/InfixAssociativity.php | 18 - .../InfixExpressionParserInterface.php | 27 - .../src/ExpressionParser/PrecedenceChange.php | 42 - .../Prefix/GroupingExpressionParser.php | 88 - .../Prefix/LiteralExpressionParser.php | 233 - .../Prefix/UnaryOperatorExpressionParser.php | 72 - .../PrefixExpressionParserInterface.php | 25 - .../twig/src/Extension/AbstractExtension.php | 67 - .../twig/src/Extension/AttributeExtension.php | 179 - .../twig/twig/src/Extension/CoreExtension.php | 2223 ---- .../twig/src/Extension/DebugExtension.php | 62 - .../twig/src/Extension/EscaperExtension.php | 221 - .../twig/src/Extension/ExtensionInterface.php | 80 - .../twig/src/Extension/GlobalsInterface.php | 25 - .../LastModifiedExtensionInterface.php | 23 - .../twig/src/Extension/OptimizerExtension.php | 27 - .../twig/src/Extension/ProfilerExtension.php | 52 - .../Extension/RuntimeExtensionInterface.php | 19 - .../twig/src/Extension/SandboxExtension.php | 247 - .../twig/src/Extension/StagingExtension.php | 100 - .../src/Extension/StringLoaderExtension.php | 43 - .../src/Extension/YieldNotReadyExtension.php | 30 - .../php/vendor/twig/twig/src/ExtensionSet.php | 567 - .../src/FileExtensionEscapingStrategy.php | 61 - generated/php/vendor/twig/twig/src/Lexer.php | 621 -- .../twig/twig/src/Loader/ArrayLoader.php | 75 - .../twig/twig/src/Loader/ChainLoader.php | 132 - .../twig/twig/src/Loader/FilesystemLoader.php | 290 - .../twig/twig/src/Loader/LoaderInterface.php | 49 - generated/php/vendor/twig/twig/src/Markup.php | 67 - .../twig/twig/src/Node/AutoEscapeNode.php | 40 - .../vendor/twig/twig/src/Node/BlockNode.php | 50 - .../twig/twig/src/Node/BlockReferenceNode.php | 38 - .../vendor/twig/twig/src/Node/BodyNode.php | 24 - .../vendor/twig/twig/src/Node/CaptureNode.php | 57 - .../twig/src/Node/CheckSecurityCallNode.php | 32 - .../twig/twig/src/Node/CheckSecurityNode.php | 109 - .../twig/twig/src/Node/CheckToStringNode.php | 48 - .../Node/CoercesChildrenToStringInterface.php | 40 - .../vendor/twig/twig/src/Node/ConfigNode.php | 30 - .../twig/twig/src/Node/DeprecatedNode.php | 87 - .../php/vendor/twig/twig/src/Node/DoNode.php | 40 - .../vendor/twig/twig/src/Node/EmbedNode.php | 54 - .../vendor/twig/twig/src/Node/EmptyNode.php | 33 - .../Node/Expression/AbstractExpression.php | 43 - .../src/Node/Expression/ArrayExpression.php | 165 - .../Expression/ArrowFunctionExpression.php | 63 - .../Node/Expression/AssignNameExpression.php | 44 - .../Node/Expression/Binary/AbstractBinary.php | 53 - .../src/Node/Expression/Binary/AddBinary.php | 24 - .../src/Node/Expression/Binary/AndBinary.php | 31 - .../Expression/Binary/BinaryInterface.php | 22 - .../Expression/Binary/BitwiseAndBinary.php | 24 - .../Expression/Binary/BitwiseOrBinary.php | 24 - .../Expression/Binary/BitwiseXorBinary.php | 24 - .../Node/Expression/Binary/ConcatBinary.php | 30 - .../src/Node/Expression/Binary/DivBinary.php | 24 - .../Node/Expression/Binary/ElvisBinary.php | 56 - .../Node/Expression/Binary/EndsWithBinary.php | 36 - .../Node/Expression/Binary/EqualBinary.php | 46 - .../Node/Expression/Binary/FloorDivBinary.php | 30 - .../Node/Expression/Binary/GreaterBinary.php | 46 - .../Expression/Binary/GreaterEqualBinary.php | 46 - .../Node/Expression/Binary/HasEveryBinary.php | 34 - .../Node/Expression/Binary/HasSomeBinary.php | 34 - .../src/Node/Expression/Binary/InBinary.php | 40 - .../src/Node/Expression/Binary/LessBinary.php | 46 - .../Expression/Binary/LessEqualBinary.php | 46 - .../Node/Expression/Binary/MatchesBinary.php | 66 - .../src/Node/Expression/Binary/ModBinary.php | 24 - .../src/Node/Expression/Binary/MulBinary.php | 24 - .../Node/Expression/Binary/NotEqualBinary.php | 46 - .../Node/Expression/Binary/NotInBinary.php | 40 - .../Expression/Binary/NotSameAsBinary.php | 23 - .../Expression/Binary/NullCoalesceBinary.php | 71 - .../Binary/ObjectDestructuringSetBinary.php | 77 - .../src/Node/Expression/Binary/OrBinary.php | 31 - .../Node/Expression/Binary/PowerBinary.php | 23 - .../Node/Expression/Binary/RangeBinary.php | 40 - .../Node/Expression/Binary/SameAsBinary.php | 23 - .../Binary/SequenceDestructuringSetBinary.php | 67 - .../src/Node/Expression/Binary/SetBinary.php | 44 - .../Expression/Binary/SpaceshipBinary.php | 29 - .../Expression/Binary/StartsWithBinary.php | 36 - .../src/Node/Expression/Binary/SubBinary.php | 24 - .../src/Node/Expression/Binary/XorBinary.php | 31 - .../Expression/BlockReferenceExpression.php | 102 - .../src/Node/Expression/CallExpression.php | 375 - .../Node/Expression/ConditionalExpression.php | 53 - .../Node/Expression/ConstantExpression.php | 33 - .../src/Node/Expression/EmptyExpression.php | 33 - .../Node/Expression/Filter/DefaultFilter.php | 72 - .../src/Node/Expression/Filter/RawFilter.php | 45 - .../src/Node/Expression/FilterExpression.php | 87 - .../Node/Expression/FunctionExpression.php | 88 - .../FunctionNode/EnumCasesFunction.php | 50 - .../Expression/FunctionNode/EnumFunction.php | 54 - .../src/Node/Expression/GetAttrExpression.php | 228 - .../twig/src/Node/Expression/InlinePrint.php | 39 - .../src/Node/Expression/ListExpression.php | 41 - .../Expression/MacroReferenceExpression.php | 136 - .../Node/Expression/MethodCallExpression.php | 58 - .../src/Node/Expression/NameExpression.php | 115 - .../Expression/NullCoalesceExpression.php | 77 - .../Expression/OperatorEscapeInterface.php | 25 - .../src/Node/Expression/ParentExpression.php | 46 - .../Node/Expression/ReturnArrayInterface.php | 16 - .../Node/Expression/ReturnBoolInterface.php | 16 - .../Node/Expression/ReturnNumberInterface.php | 16 - .../ReturnPrimitiveTypeInterface.php | 16 - .../Node/Expression/ReturnStringInterface.php | 16 - .../SupportDefinedTestDeprecationTrait.php | 44 - .../SupportDefinedTestInterface.php | 24 - .../Expression/SupportDefinedTestTrait.php | 27 - .../Node/Expression/TempNameExpression.php | 49 - .../Expression/Ternary/ConditionalTernary.php | 43 - .../src/Node/Expression/Test/ConstantTest.php | 49 - .../src/Node/Expression/Test/DefinedTest.php | 68 - .../Node/Expression/Test/DivisiblebyTest.php | 42 - .../src/Node/Expression/Test/EvenTest.php | 41 - .../src/Node/Expression/Test/NullTest.php | 40 - .../twig/src/Node/Expression/Test/OddTest.php | 41 - .../src/Node/Expression/Test/SameasTest.php | 40 - .../src/Node/Expression/Test/TrueTest.php | 52 - .../src/Node/Expression/TestExpression.php | 91 - .../Node/Expression/Unary/AbstractUnary.php | 48 - .../src/Node/Expression/Unary/NegUnary.php | 23 - .../src/Node/Expression/Unary/NotUnary.php | 31 - .../src/Node/Expression/Unary/PosUnary.php | 23 - .../src/Node/Expression/Unary/SpreadUnary.php | 22 - .../Node/Expression/Unary/StringCastUnary.php | 22 - .../Node/Expression/Unary/UnaryInterface.php | 22 - .../Variable/AssignContextVariable.php | 18 - .../Variable/AssignTemplateVariable.php | 44 - .../Expression/Variable/ContextVariable.php | 18 - .../Expression/Variable/LocalVariable.php | 18 - .../Expression/Variable/TemplateVariable.php | 42 - .../Node/Expression/VariadicExpression.php | 24 - .../vendor/twig/twig/src/Node/FlushNode.php | 40 - .../vendor/twig/twig/src/Node/ForElseNode.php | 41 - .../vendor/twig/twig/src/Node/ForLoopNode.php | 51 - .../php/vendor/twig/twig/src/Node/ForNode.php | 123 - .../php/vendor/twig/twig/src/Node/IfNode.php | 79 - .../vendor/twig/twig/src/Node/ImportNode.php | 67 - .../vendor/twig/twig/src/Node/IncludeNode.php | 121 - .../vendor/twig/twig/src/Node/MacroNode.php | 121 - .../vendor/twig/twig/src/Node/ModuleNode.php | 522 - .../twig/twig/src/Node/NameDeprecation.php | 46 - .../php/vendor/twig/twig/src/Node/Node.php | 294 - .../twig/src/Node/NodeCaptureInterface.php | 21 - .../twig/src/Node/NodeOutputInterface.php | 21 - .../php/vendor/twig/twig/src/Node/Nodes.php | 28 - .../vendor/twig/twig/src/Node/PrintNode.php | 69 - .../vendor/twig/twig/src/Node/SandboxNode.php | 54 - .../php/vendor/twig/twig/src/Node/SetNode.php | 115 - .../vendor/twig/twig/src/Node/TextNode.php | 57 - .../vendor/twig/twig/src/Node/TypesNode.php | 40 - .../vendor/twig/twig/src/Node/WithNode.php | 72 - .../vendor/twig/twig/src/NodeTraverser.php | 76 - .../src/NodeVisitor/AbstractNodeVisitor.php | 49 - .../NodeVisitor/CorrectnessNodeVisitor.php | 223 - .../src/NodeVisitor/EscaperNodeVisitor.php | 185 - .../src/NodeVisitor/NodeVisitorInterface.php | 46 - .../src/NodeVisitor/OptimizerNodeVisitor.php | 213 - .../NodeVisitor/SafeAnalysisNodeVisitor.php | 185 - .../src/NodeVisitor/SandboxNodeVisitor.php | 295 - .../NodeVisitor/YieldNotReadyNodeVisitor.php | 59 - .../twig/src/OperatorPrecedenceChange.php | 34 - generated/php/vendor/twig/twig/src/Parser.php | 612 - .../twig/src/Profiler/Dumper/BaseDumper.php | 68 - .../src/Profiler/Dumper/BlackfireDumper.php | 72 - .../twig/src/Profiler/Dumper/HtmlDumper.php | 57 - .../twig/src/Profiler/Dumper/TextDumper.php | 35 - .../src/Profiler/Node/EnterProfileNode.php | 44 - .../src/Profiler/Node/LeaveProfileNode.php | 38 - .../NodeVisitor/ProfilerNodeVisitor.php | 70 - .../vendor/twig/twig/src/Profiler/Profile.php | 194 - .../vendor/twig/twig/src/Resources/core.php | 572 - .../vendor/twig/twig/src/Resources/debug.php | 25 - .../twig/twig/src/Resources/escaper.php | 51 - .../twig/twig/src/Resources/string_loader.php | 26 - .../twig/twig/src/Runtime/EscaperRuntime.php | 346 - .../RuntimeLoader/ContainerRuntimeLoader.php | 35 - .../RuntimeLoader/FactoryRuntimeLoader.php | 39 - .../RuntimeLoader/RuntimeLoaderInterface.php | 27 - .../twig/twig/src/Sandbox/SecurityError.php | 23 - .../Sandbox/SecurityNotAllowedFilterError.php | 33 - .../SecurityNotAllowedFunctionError.php | 33 - .../Sandbox/SecurityNotAllowedMethodError.php | 40 - .../SecurityNotAllowedPropertyError.php | 40 - .../Sandbox/SecurityNotAllowedTagError.php | 33 - .../Sandbox/SecurityNotAllowedTestError.php | 33 - .../twig/twig/src/Sandbox/SecurityPolicy.php | 175 - .../src/Sandbox/SecurityPolicyInterface.php | 46 - .../src/Sandbox/SourcePolicyInterface.php | 26 - generated/php/vendor/twig/twig/src/Source.php | 66 - .../php/vendor/twig/twig/src/Template.php | 560 - .../vendor/twig/twig/src/TemplateWrapper.php | 112 - .../twig/src/Test/IntegrationTestCase.php | 380 - .../twig/twig/src/Test/NodeTestCase.php | 144 - generated/php/vendor/twig/twig/src/Token.php | 256 - .../src/TokenParser/AbstractTokenParser.php | 66 - .../twig/src/TokenParser/ApplyTokenParser.php | 66 - .../src/TokenParser/AutoEscapeTokenParser.php | 58 - .../twig/src/TokenParser/BlockTokenParser.php | 77 - .../src/TokenParser/DeprecatedTokenParser.php | 65 - .../twig/src/TokenParser/DoTokenParser.php | 38 - .../twig/src/TokenParser/EmbedTokenParser.php | 73 - .../src/TokenParser/ExtendsTokenParser.php | 41 - .../twig/src/TokenParser/FlushTokenParser.php | 38 - .../twig/src/TokenParser/ForTokenParser.php | 80 - .../twig/src/TokenParser/FromTokenParser.php | 69 - .../twig/src/TokenParser/GuardTokenParser.php | 79 - .../twig/src/TokenParser/IfTokenParser.php | 90 - .../src/TokenParser/ImportTokenParser.php | 45 - .../src/TokenParser/IncludeTokenParser.php | 73 - .../twig/src/TokenParser/MacroTokenParser.php | 123 - .../src/TokenParser/SandboxTokenParser.php | 72 - .../twig/src/TokenParser/SetTokenParser.php | 87 - .../src/TokenParser/TokenParserInterface.php | 48 - .../twig/src/TokenParser/TypesTokenParser.php | 89 - .../twig/src/TokenParser/UseTokenParser.php | 75 - .../twig/src/TokenParser/WithTokenParser.php | 56 - .../php/vendor/twig/twig/src/TokenStream.php | 132 - .../twig/twig/src/TwigCallableInterface.php | 56 - .../php/vendor/twig/twig/src/TwigFilter.php | 74 - .../php/vendor/twig/twig/src/TwigFunction.php | 63 - .../php/vendor/twig/twig/src/TwigTest.php | 67 - .../src/Util/CallableArgumentsExtractor.php | 204 - .../twig/twig/src/Util/CallableParameters.php | 161 - .../twig/src/Util/DeprecationCollector.php | 77 - .../twig/twig/src/Util/ReflectionCallable.php | 131 - .../twig/src/Util/TemplateDirIterator.php | 36 - generated/ui/alert/Alert.html.twig | 3 - generated/ui/alert/Alert.latte | 16 - generated/ui/alert/Alert.svelte | 37 - generated/ui/alert/Alert.vue | 31 - generated/ui/alert/alert.shared.ts | 26 - generated/ui/alert/alert.solid.tsx | 31 - generated/ui/alert/alert.templ | 45 - generated/ui/alert/alert.tsx | 42 - generated/ui/alert/alert.variants.json | 19 - generated/ui/alert/alert_gen.go | 15 - generated/ui/alert/alert_templ.go | 139 - generated/ui/badge/Badge.html.twig | 3 - generated/ui/badge/Badge.latte | 13 - generated/ui/badge/Badge.svelte | 34 - generated/ui/badge/Badge.vue | 29 - generated/ui/badge/badge.shared.ts | 27 - generated/ui/badge/badge.solid.tsx | 29 - generated/ui/badge/badge.templ | 42 - generated/ui/badge/badge.tsx | 31 - generated/ui/badge/badge.variants.json | 26 - generated/ui/badge/badge_gen.go | 15 - generated/ui/badge/badge_templ.go | 112 - generated/ui/block/Block.html.twig | 4 - generated/ui/block/Block.latte | 15 - generated/ui/block/Block.svelte | 33 - generated/ui/block/Block.vue | 30 - generated/ui/block/block.shared.ts | 21 - generated/ui/block/block.solid.tsx | 31 - generated/ui/block/block.templ | 144 - generated/ui/block/block.tsx | 42 - generated/ui/block/block.variants.json | 8 - generated/ui/block/block_gen.go | 15 - generated/ui/block/block_templ.go | 710 -- generated/ui/box/Box.html.twig | 4 - generated/ui/box/Box.latte | 13 - generated/ui/box/Box.svelte | 33 - generated/ui/box/Box.vue | 30 - generated/ui/box/box.shared.ts | 21 - generated/ui/box/box.solid.tsx | 31 - generated/ui/box/box.templ | 40 - generated/ui/box/box.tsx | 42 - generated/ui/box/box.variants.json | 8 - generated/ui/box/box_gen.go | 15 - generated/ui/box/box_templ.go | 110 - generated/ui/breadcrumb/Breadcrumb.svelte | 41 - generated/ui/breadcrumb/Breadcrumb.vue | 39 - generated/ui/breadcrumb/breadcrumb.shared.ts | 25 - generated/ui/breadcrumb/breadcrumb.solid.tsx | 43 - generated/ui/breadcrumb/breadcrumb.templ | 85 - generated/ui/breadcrumb/breadcrumb.tsx | 45 - generated/ui/breadcrumb/breadcrumb_templ.go | 304 - generated/ui/button/Button.html.twig | 3 - generated/ui/button/Button.latte | 27 - generated/ui/button/Button.svelte | 56 - generated/ui/button/Button.vue | 42 - generated/ui/button/button.shared.ts | 34 - generated/ui/button/button.solid.tsx | 47 - generated/ui/button/button.templ | 126 - generated/ui/button/button.tsx | 58 - generated/ui/button/button.variants.json | 29 - generated/ui/button/button_gen.go | 15 - generated/ui/button/button_templ.go | 461 - generated/ui/card/Card.html.twig | 3 - generated/ui/card/Card.latte | 12 - generated/ui/card/Card.svelte | 32 - generated/ui/card/Card.vue | 28 - generated/ui/card/CardContent.html.twig | 3 - generated/ui/card/CardContent.latte | 11 - generated/ui/card/CardContent.svelte | 29 - generated/ui/card/CardContent.vue | 24 - generated/ui/card/CardDescription.html.twig | 3 - generated/ui/card/CardDescription.latte | 11 - generated/ui/card/CardDescription.svelte | 29 - generated/ui/card/CardDescription.vue | 24 - generated/ui/card/CardFooter.html.twig | 3 - generated/ui/card/CardFooter.latte | 11 - generated/ui/card/CardFooter.svelte | 29 - generated/ui/card/CardFooter.vue | 24 - generated/ui/card/CardHeader.html.twig | 3 - generated/ui/card/CardHeader.latte | 11 - generated/ui/card/CardHeader.svelte | 29 - generated/ui/card/CardHeader.vue | 24 - generated/ui/card/CardTitle.html.twig | 4 - generated/ui/card/CardTitle.latte | 13 - generated/ui/card/CardTitle.svelte | 33 - generated/ui/card/CardTitle.vue | 30 - generated/ui/card/card.shared.ts | 94 - generated/ui/card/card.solid.tsx | 128 - generated/ui/card/card.templ | 195 - generated/ui/card/card.tsx | 149 - generated/ui/card/card.variants.json | 23 - generated/ui/card/card_gen.go | 15 - generated/ui/card/card_templ.go | 697 -- generated/ui/checkbox/Checkbox.html.twig | 3 - generated/ui/checkbox/Checkbox.latte | 31 - generated/ui/checkbox/Checkbox.svelte | 35 - generated/ui/checkbox/Checkbox.vue | 30 - generated/ui/checkbox/checkbox.shared.ts | 30 - generated/ui/checkbox/checkbox.solid.tsx | 29 - generated/ui/checkbox/checkbox.templ | 75 - generated/ui/checkbox/checkbox.tsx | 31 - generated/ui/checkbox/checkbox.variants.json | 26 - generated/ui/checkbox/checkbox_gen.go | 15 - generated/ui/checkbox/checkbox_templ.go | 257 - generated/ui/container/Container.html.twig | 4 - generated/ui/container/Container.latte | 13 - generated/ui/container/Container.svelte | 33 - generated/ui/container/Container.vue | 30 - generated/ui/container/container.shared.ts | 21 - generated/ui/container/container.solid.tsx | 31 - generated/ui/container/container.templ | 54 - generated/ui/container/container.tsx | 42 - .../ui/container/container.variants.json | 8 - generated/ui/container/container_gen.go | 15 - generated/ui/container/container_templ.go | 188 - generated/ui/dialog/Dialog.html.twig | 3 - generated/ui/dialog/Dialog.latte | 25 - generated/ui/dialog/Dialog.svelte | 36 - generated/ui/dialog/Dialog.vue | 30 - generated/ui/dialog/dialog.shared.ts | 28 - generated/ui/dialog/dialog.solid.tsx | 30 - generated/ui/dialog/dialog.templ | 66 - generated/ui/dialog/dialog.tsx | 32 - generated/ui/dialog/dialog.variants.json | 27 - generated/ui/dialog/dialog_gen.go | 15 - generated/ui/dialog/dialog_templ.go | 221 - generated/ui/disclosure/Disclosure.html.twig | 3 - generated/ui/disclosure/Disclosure.latte | 15 - generated/ui/disclosure/Disclosure.svelte | 36 - generated/ui/disclosure/Disclosure.vue | 30 - generated/ui/disclosure/Summary.html.twig | 3 - generated/ui/disclosure/Summary.latte | 13 - generated/ui/disclosure/Summary.svelte | 34 - generated/ui/disclosure/Summary.vue | 29 - generated/ui/disclosure/disclosure.shared.ts | 50 - generated/ui/disclosure/disclosure.solid.tsx | 51 - generated/ui/disclosure/disclosure.templ | 75 - generated/ui/disclosure/disclosure.tsx | 55 - .../ui/disclosure/disclosure.variants.json | 25 - generated/ui/disclosure/disclosure_gen.go | 21 - generated/ui/disclosure/disclosure_templ.go | 204 - generated/ui/disclosure/summary.variants.json | 25 - generated/ui/form/DataList.html.twig | 3 - generated/ui/form/DataList.latte | 13 - generated/ui/form/DataList.svelte | 29 - generated/ui/form/DataList.vue | 24 - generated/ui/form/DataOption.html.twig | 3 - generated/ui/form/DataOption.latte | 12 - generated/ui/form/DataOption.svelte | 20 - generated/ui/form/DataOption.vue | 20 - generated/ui/form/Fieldset.html.twig | 3 - generated/ui/form/Fieldset.latte | 19 - generated/ui/form/Fieldset.svelte | 36 - generated/ui/form/Fieldset.vue | 30 - generated/ui/form/Form.html.twig | 3 - generated/ui/form/Form.latte | 27 - generated/ui/form/Form.svelte | 31 - generated/ui/form/Form.vue | 28 - generated/ui/form/FormDescription.html.twig | 3 - generated/ui/form/FormDescription.latte | 11 - generated/ui/form/FormDescription.svelte | 29 - generated/ui/form/FormDescription.vue | 24 - generated/ui/form/FormItem.html.twig | 3 - generated/ui/form/FormItem.latte | 11 - generated/ui/form/FormItem.svelte | 29 - generated/ui/form/FormItem.vue | 24 - generated/ui/form/FormMessage.html.twig | 3 - generated/ui/form/FormMessage.latte | 12 - generated/ui/form/FormMessage.svelte | 29 - generated/ui/form/FormMessage.vue | 24 - generated/ui/form/Legend.html.twig | 3 - generated/ui/form/Legend.latte | 13 - generated/ui/form/Legend.svelte | 34 - generated/ui/form/Legend.vue | 29 - generated/ui/form/Meter.html.twig | 3 - generated/ui/form/Meter.latte | 27 - generated/ui/form/Meter.svelte | 34 - generated/ui/form/Meter.vue | 29 - generated/ui/form/Output.html.twig | 3 - generated/ui/form/Output.latte | 18 - generated/ui/form/Output.svelte | 29 - generated/ui/form/Output.vue | 29 - generated/ui/form/Progress.html.twig | 3 - generated/ui/form/Progress.latte | 19 - generated/ui/form/Progress.svelte | 34 - generated/ui/form/Progress.vue | 29 - generated/ui/form/controls.shared.ts | 127 - generated/ui/form/controls.solid.tsx | 147 - generated/ui/form/controls.templ | 266 - generated/ui/form/controls.tsx | 161 - generated/ui/form/controls_gen.go | 33 - generated/ui/form/controls_templ.go | 952 -- generated/ui/form/fieldset.variants.json | 25 - .../ui/form/form-description.variants.json | 8 - generated/ui/form/form-item.variants.json | 8 - generated/ui/form/form-message.variants.json | 8 - generated/ui/form/form.shared.ts | 69 - generated/ui/form/form.solid.tsx | 85 - generated/ui/form/form.templ | 135 - generated/ui/form/form.tsx | 93 - generated/ui/form/form.variants.json | 8 - generated/ui/form/form_gen.go | 33 - generated/ui/form/form_templ.go | 487 - generated/ui/form/legend.variants.json | 24 - generated/ui/form/meter.variants.json | 24 - generated/ui/form/progress.variants.json | 24 - generated/ui/grid/Grid.html.twig | 3 - generated/ui/grid/Grid.latte | 12 - generated/ui/grid/Grid.svelte | 31 - generated/ui/grid/Grid.vue | 28 - generated/ui/grid/GridCol.html.twig | 3 - generated/ui/grid/GridCol.latte | 15 - generated/ui/grid/GridCol.svelte | 37 - generated/ui/grid/GridCol.vue | 31 - generated/ui/grid/grid.shared.ts | 44 - generated/ui/grid/grid.solid.tsx | 50 - generated/ui/grid/grid.templ | 69 - generated/ui/grid/grid.tsx | 71 - generated/ui/grid/grid.variants.json | 8 - generated/ui/grid/grid_gen.go | 15 - generated/ui/grid/grid_templ.go | 191 - generated/ui/group/Group.html.twig | 4 - generated/ui/group/Group.latte | 13 - generated/ui/group/Group.svelte | 33 - generated/ui/group/Group.vue | 30 - generated/ui/group/group.shared.ts | 21 - generated/ui/group/group.solid.tsx | 31 - generated/ui/group/group.templ | 54 - generated/ui/group/group.tsx | 42 - generated/ui/group/group.variants.json | 8 - generated/ui/group/group_gen.go | 15 - generated/ui/group/group_templ.go | 188 - generated/ui/icon/Icon.svelte | 65 - generated/ui/icon/Icon.vue | 47 - generated/ui/icon/icon.shared.ts | 37 - generated/ui/icon/icon.solid.tsx | 57 - generated/ui/icon/icon.templ | 117 - generated/ui/icon/icon.tsx | 59 - generated/ui/icon/icon.variants.json | 28 - generated/ui/icon/icon_gen.go | 15 - generated/ui/icon/icon_templ.go | 425 - generated/ui/iconbadge/IconBadge.html.twig | 3 - generated/ui/iconbadge/IconBadge.latte | 13 - generated/ui/iconbadge/IconBadge.svelte | 34 - generated/ui/iconbadge/IconBadge.vue | 29 - generated/ui/iconbadge/iconbadge.shared.ts | 27 - generated/ui/iconbadge/iconbadge.solid.tsx | 29 - generated/ui/iconbadge/iconbadge.templ | 42 - generated/ui/iconbadge/iconbadge.tsx | 31 - .../ui/iconbadge/iconbadge.variants.json | 28 - generated/ui/iconbadge/iconbadge_gen.go | 15 - generated/ui/iconbadge/iconbadge_templ.go | 112 - generated/ui/image/Image.html.twig | 3 - generated/ui/image/Image.latte | 37 - generated/ui/image/Image.svelte | 44 - generated/ui/image/Image.vue | 35 - generated/ui/image/Picture.html.twig | 3 - generated/ui/image/Picture.latte | 11 - generated/ui/image/Picture.svelte | 29 - generated/ui/image/Picture.vue | 24 - generated/ui/image/Source.html.twig | 3 - generated/ui/image/Source.latte | 18 - generated/ui/image/Source.svelte | 20 - generated/ui/image/Source.vue | 20 - generated/ui/image/image.shared.ts | 59 - generated/ui/image/image.solid.tsx | 68 - generated/ui/image/image.templ | 146 - generated/ui/image/image.tsx | 74 - generated/ui/image/image.variants.json | 61 - generated/ui/image/image_gen.go | 15 - generated/ui/image/image_templ.go | 551 - generated/ui/index.solid.ts | 37 - generated/ui/index.svelte.ts | 130 - generated/ui/index.ts | 38 - generated/ui/index.vue.ts | 67 - generated/ui/inline/Inline.html.twig | 3 - generated/ui/inline/Inline.latte | 11 - generated/ui/inline/Inline.svelte | 29 - generated/ui/inline/Inline.vue | 24 - generated/ui/inline/inline.shared.ts | 21 - generated/ui/inline/inline.solid.tsx | 27 - generated/ui/inline/inline.templ | 35 - generated/ui/inline/inline.tsx | 38 - generated/ui/inline/inline.variants.json | 8 - generated/ui/inline/inline_gen.go | 15 - generated/ui/inline/inline_templ.go | 105 - generated/ui/input/Input.html.twig | 3 - generated/ui/input/Input.latte | 38 - generated/ui/input/Input.svelte | 36 - generated/ui/input/Input.vue | 31 - generated/ui/input/input.shared.ts | 30 - generated/ui/input/input.solid.tsx | 30 - generated/ui/input/input.templ | 91 - generated/ui/input/input.tsx | 32 - generated/ui/input/input.variants.json | 26 - generated/ui/input/input_gen.go | 15 - generated/ui/input/input_templ.go | 345 - generated/ui/label/Label.html.twig | 3 - generated/ui/label/Label.latte | 13 - generated/ui/label/Label.svelte | 29 - generated/ui/label/Label.vue | 24 - generated/ui/label/label.shared.ts | 21 - generated/ui/label/label.solid.tsx | 26 - generated/ui/label/label.templ | 39 - generated/ui/label/label.tsx | 28 - generated/ui/label/label.variants.json | 8 - generated/ui/label/label_gen.go | 15 - generated/ui/label/label_templ.go | 123 - generated/ui/linebreak/Break.html.twig | 4 - generated/ui/linebreak/Break.latte | 19 - generated/ui/linebreak/Break.svelte | 28 - generated/ui/linebreak/Break.vue | 28 - generated/ui/linebreak/linebreak.shared.ts | 21 - generated/ui/linebreak/linebreak.solid.tsx | 27 - generated/ui/linebreak/linebreak.templ | 36 - generated/ui/linebreak/linebreak.tsx | 29 - .../ui/linebreak/linebreak.variants.json | 8 - generated/ui/linebreak/linebreak_gen.go | 15 - generated/ui/linebreak/linebreak_templ.go | 130 - generated/ui/link/Link.html.twig | 5 - generated/ui/link/Link.latte | 35 - generated/ui/link/Link.svelte | 45 - generated/ui/link/Link.vue | 36 - generated/ui/link/link.shared.ts | 32 - generated/ui/link/link.solid.tsx | 36 - generated/ui/link/link.templ | 96 - generated/ui/link/link.tsx | 38 - generated/ui/link/link.variants.json | 28 - generated/ui/link/link_gen.go | 15 - generated/ui/link/link_templ.go | 330 - generated/ui/list/List.html.twig | 4 - generated/ui/list/List.latte | 13 - generated/ui/list/List.svelte | 33 - generated/ui/list/List.vue | 30 - generated/ui/list/ListItem.html.twig | 4 - generated/ui/list/ListItem.latte | 15 - generated/ui/list/ListItem.svelte | 36 - generated/ui/list/ListItem.vue | 32 - generated/ui/list/list.shared.ts | 36 - generated/ui/list/list.solid.tsx | 53 - generated/ui/list/list.templ | 109 - generated/ui/list/list.tsx | 58 - generated/ui/list/list.variants.json | 8 - generated/ui/list/list_gen.go | 15 - generated/ui/list/list_templ.go | 407 - generated/ui/radio/Radio.html.twig | 3 - generated/ui/radio/Radio.latte | 31 - generated/ui/radio/Radio.svelte | 35 - generated/ui/radio/Radio.vue | 30 - generated/ui/radio/radio.shared.ts | 30 - generated/ui/radio/radio.solid.tsx | 28 - generated/ui/radio/radio.templ | 74 - generated/ui/radio/radio.tsx | 30 - generated/ui/radio/radio.variants.json | 26 - generated/ui/radio/radio_gen.go | 15 - generated/ui/radio/radio_templ.go | 254 - generated/ui/select/OptGroup.html.twig | 3 - generated/ui/select/OptGroup.latte | 15 - generated/ui/select/OptGroup.svelte | 31 - generated/ui/select/OptGroup.vue | 28 - generated/ui/select/Select.svelte | 46 - generated/ui/select/Select.vue | 37 - generated/ui/select/SelectOption.html.twig | 3 - generated/ui/select/SelectOption.latte | 17 - generated/ui/select/SelectOption.svelte | 29 - generated/ui/select/SelectOption.vue | 27 - generated/ui/select/select.shared.ts | 56 - generated/ui/select/select.solid.tsx | 78 - generated/ui/select/select.templ | 141 - generated/ui/select/select.tsx | 84 - generated/ui/select/select.variants.json | 26 - generated/ui/select/select_gen.go | 15 - generated/ui/select/select_templ.go | 491 - generated/ui/separator/Separator.html.twig | 3 - generated/ui/separator/Separator.latte | 16 - generated/ui/separator/Separator.svelte | 32 - generated/ui/separator/Separator.vue | 29 - generated/ui/separator/separator.shared.ts | 28 - generated/ui/separator/separator.solid.tsx | 27 - generated/ui/separator/separator.templ | 50 - generated/ui/separator/separator.tsx | 29 - .../ui/separator/separator.variants.json | 25 - generated/ui/separator/separator_gen.go | 15 - generated/ui/separator/separator_templ.go | 160 - generated/ui/shared.ts | 36 - generated/ui/stack/Stack.html.twig | 4 - generated/ui/stack/Stack.latte | 13 - generated/ui/stack/Stack.svelte | 33 - generated/ui/stack/Stack.vue | 30 - generated/ui/stack/stack.shared.ts | 21 - generated/ui/stack/stack.solid.tsx | 31 - generated/ui/stack/stack.templ | 54 - generated/ui/stack/stack.tsx | 42 - generated/ui/stack/stack.variants.json | 8 - generated/ui/stack/stack_gen.go | 15 - generated/ui/stack/stack_templ.go | 188 - generated/ui/switch/Switch.html.twig | 3 - generated/ui/switch/Switch.latte | 31 - generated/ui/switch/Switch.svelte | 36 - generated/ui/switch/Switch.vue | 31 - generated/ui/switch/switch.shared.ts | 30 - generated/ui/switch/switch.solid.tsx | 30 - generated/ui/switch/switch.templ | 69 - generated/ui/switch/switch.tsx | 32 - generated/ui/switch/switch.variants.json | 26 - generated/ui/switch/switch_gen.go | 15 - generated/ui/switch/switch_templ.go | 250 - generated/ui/table/Table.html.twig | 3 - generated/ui/table/Table.latte | 11 - generated/ui/table/Table.svelte | 29 - generated/ui/table/Table.vue | 24 - generated/ui/table/TableBody.html.twig | 3 - generated/ui/table/TableBody.latte | 11 - generated/ui/table/TableBody.svelte | 29 - generated/ui/table/TableBody.vue | 24 - generated/ui/table/TableCaption.html.twig | 3 - generated/ui/table/TableCaption.latte | 11 - generated/ui/table/TableCaption.svelte | 29 - generated/ui/table/TableCaption.vue | 24 - generated/ui/table/TableCell.html.twig | 3 - generated/ui/table/TableCell.latte | 19 - generated/ui/table/TableCell.svelte | 38 - generated/ui/table/TableCell.vue | 32 - generated/ui/table/TableCol.html.twig | 3 - generated/ui/table/TableCol.latte | 12 - generated/ui/table/TableCol.svelte | 27 - generated/ui/table/TableCol.vue | 27 - generated/ui/table/TableColGroup.html.twig | 3 - generated/ui/table/TableColGroup.latte | 13 - generated/ui/table/TableColGroup.svelte | 32 - generated/ui/table/TableColGroup.vue | 29 - generated/ui/table/TableFoot.html.twig | 3 - generated/ui/table/TableFoot.latte | 11 - generated/ui/table/TableFoot.svelte | 29 - generated/ui/table/TableFoot.vue | 24 - generated/ui/table/TableHead.html.twig | 3 - generated/ui/table/TableHead.latte | 11 - generated/ui/table/TableHead.svelte | 29 - generated/ui/table/TableHead.vue | 24 - generated/ui/table/TableHeadCell.html.twig | 3 - generated/ui/table/TableHeadCell.latte | 21 - generated/ui/table/TableHeadCell.svelte | 38 - generated/ui/table/TableHeadCell.vue | 32 - generated/ui/table/TableRow.html.twig | 3 - generated/ui/table/TableRow.latte | 11 - generated/ui/table/TableRow.svelte | 29 - generated/ui/table/TableRow.vue | 24 - generated/ui/table/table.shared.ts | 153 - generated/ui/table/table.solid.tsx | 206 - generated/ui/table/table.templ | 290 - generated/ui/table/table.tsx | 226 - generated/ui/table/table.variants.json | 8 - generated/ui/table/table_gen.go | 15 - generated/ui/table/table_templ.go | 1000 -- generated/ui/text/Text.html.twig | 3 - generated/ui/text/Text.latte | 11 - generated/ui/text/Text.svelte | 29 - generated/ui/text/Text.vue | 24 - generated/ui/text/text.shared.ts | 21 - generated/ui/text/text.solid.tsx | 27 - generated/ui/text/text.templ | 35 - generated/ui/text/text.tsx | 38 - generated/ui/text/text.variants.json | 8 - generated/ui/text/text_gen.go | 15 - generated/ui/text/text_templ.go | 105 - generated/ui/textarea/Textarea.html.twig | 3 - generated/ui/textarea/Textarea.latte | 31 - generated/ui/textarea/Textarea.svelte | 38 - generated/ui/textarea/Textarea.vue | 32 - generated/ui/textarea/textarea.shared.ts | 31 - generated/ui/textarea/textarea.solid.tsx | 30 - generated/ui/textarea/textarea.templ | 80 - generated/ui/textarea/textarea.tsx | 32 - generated/ui/textarea/textarea.variants.json | 26 - generated/ui/textarea/textarea_gen.go | 15 - generated/ui/textarea/textarea_templ.go | 275 - generated/ui/title/Title.html.twig | 4 - generated/ui/title/Title.latte | 13 - generated/ui/title/Title.svelte | 33 - generated/ui/title/Title.vue | 30 - generated/ui/title/title.shared.ts | 21 - generated/ui/title/title.solid.tsx | 31 - generated/ui/title/title.templ | 75 - generated/ui/title/title.tsx | 42 - generated/ui/title/title.variants.json | 8 - generated/ui/title/title_gen.go | 15 - generated/ui/title/title_templ.go | 305 - generated/utils/cn.ts | 11 - generated/utils/cn_merge.go | 266 - generated/utils/env.ts | 9 - generated/utils/expr.ts | 98 - generated/utils/index.ts | 12 - generated/utils/recipe-types.ts | 25 - generated/utils/tags.ts | 122 - generated/utils/utils.go | 67 - generated/utils/variants.ts | 78 - generated/utils/variants_json.go | 47 - package.json | 96 +- packages/tooling/bin/audit.sh | 10 + packages/tooling/bin/rules.mjs | 12 + packages/tooling/bin/ui8px-extract.mjs | 69 + packages/tooling/bin/ui8px-gate.mjs | 49 + packages/tooling/bin/zones.mjs | 12 + packages/tooling/package.json | 17 + packages/tooling/src/app.mjs | 28 + packages/tooling/src/zones.mjs | 43 + rules/baselines/discovery.json | 20 + rules/baselines/host-react.json | 20 + rules/baselines/host-solid.json | 20 + rules/baselines/host-svelte.json | 20 + rules/baselines/host-vue.json | 20 + rules/baselines/jinja2-ui.json | 36 + rules/baselines/latte-ui.json | 36 + rules/baselines/magazine.json | 50 + rules/baselines/react-ui.json | 36 + rules/baselines/solid-ui.json | 36 + rules/baselines/svelte-ui.json | 36 + rules/baselines/taste-screens.json | 27 + rules/baselines/templ-ui.json | 36 + rules/baselines/twig-ui.json | 36 + rules/baselines/vue-ui.json | 36 + rules/fixtures/jinja2/block-root.bad.html.j2 | 5 + .../jinja2/block-root.branches.ok.html.j2 | 17 + .../jinja2/block-root.loop.bad.html.j2 | 7 + .../jinja2/block-root.nested.bad.html.j2 | 8 + rules/fixtures/jinja2/block-root.ok.html.j2 | 5 + .../jinja2/block-root.siblings.bad.html.j2 | 9 + rules/fixtures/jinja2/dynamic-tag.bad.html.j2 | 5 + rules/fixtures/jinja2/dynamic-tag.ok.html.j2 | 5 + .../fixtures/jinja2/literal-text.bad.html.j2 | 13 + rules/fixtures/jinja2/literal-text.ok.html.j2 | 9 + rules/fixtures/jinja2/raw-html.bad.html.j2 | 8 + rules/fixtures/jinja2/raw-html.ok.html.j2 | 8 + .../jinja2/raw-native-tag.bad.html.j2 | 5 + .../fixtures/jinja2/raw-native-tag.ok.html.j2 | 11 + .../fixtures/jinja2/reactive-aria.bad.html.j2 | 8 + .../fixtures/jinja2/reactive-aria.ok.html.j2 | 8 + rules/fixtures/latte/block-root.bad.latte | 5 + .../latte/block-root.branches.ok.latte | 17 + .../fixtures/latte/block-root.loop.bad.latte | 7 + .../latte/block-root.nested.bad.latte | 8 + rules/fixtures/latte/block-root.ok.latte | 4 + .../latte/block-root.siblings.bad.latte | 9 + rules/fixtures/latte/dynamic-tag.bad.latte | 5 + rules/fixtures/latte/dynamic-tag.ok.latte | 5 + rules/fixtures/latte/literal-text.bad.latte | 13 + rules/fixtures/latte/literal-text.ok.latte | 9 + rules/fixtures/latte/raw-html.bad.latte | 8 + rules/fixtures/latte/raw-html.ok.latte | 8 + rules/fixtures/latte/raw-native-tag.bad.latte | 5 + rules/fixtures/latte/raw-native-tag.ok.latte | 11 + rules/fixtures/latte/reactive-aria.bad.latte | 8 + rules/fixtures/latte/reactive-aria.ok.latte | 8 + rules/fixtures/react/block-root.bad.tsx | 13 + .../fixtures/react/block-root.branches.ok.tsx | 16 + rules/fixtures/react/block-root.loop.bad.tsx | 15 + .../fixtures/react/block-root.nested.bad.tsx | 13 + rules/fixtures/react/block-root.ok.tsx | 13 + .../react/block-root.siblings.bad.tsx | 18 + rules/fixtures/react/dynamic-tag.bad.tsx | 13 + rules/fixtures/react/dynamic-tag.ok.tsx | 13 + rules/fixtures/react/literal-text.bad.tsx | 15 + rules/fixtures/react/literal-text.ok.tsx | 15 + rules/fixtures/react/raw-html.bad.tsx | 13 + rules/fixtures/react/raw-html.ok.tsx | 13 + rules/fixtures/react/raw-native-tag.bad.tsx | 13 + rules/fixtures/react/raw-native-tag.ok.tsx | 13 + rules/fixtures/react/reactive-aria.bad.tsx | 13 + rules/fixtures/react/reactive-aria.ok.tsx | 13 + rules/fixtures/solid/block-root.bad.tsx | 13 + .../fixtures/solid/block-root.branches.ok.tsx | 30 + rules/fixtures/solid/block-root.loop.bad.tsx | 15 + .../fixtures/solid/block-root.nested.bad.tsx | 13 + rules/fixtures/solid/block-root.ok.tsx | 13 + .../solid/block-root.siblings.bad.tsx | 19 + rules/fixtures/solid/dynamic-tag.bad.tsx | 12 + rules/fixtures/solid/dynamic-tag.ok.tsx | 13 + rules/fixtures/solid/literal-text.bad.tsx | 15 + rules/fixtures/solid/literal-text.ok.tsx | 15 + rules/fixtures/solid/raw-html.bad.tsx | 13 + rules/fixtures/solid/raw-html.ok.tsx | 13 + rules/fixtures/solid/raw-native-tag.bad.tsx | 13 + rules/fixtures/solid/raw-native-tag.ok.tsx | 13 + rules/fixtures/solid/reactive-aria.bad.tsx | 13 + rules/fixtures/solid/reactive-aria.ok.tsx | 13 + rules/fixtures/svelte/block-root.bad.svelte | 10 + .../svelte/block-root.branches.ok.svelte | 20 + .../svelte/block-root.loop.bad.svelte | 12 + .../svelte/block-root.nested.bad.svelte | 12 + rules/fixtures/svelte/block-root.ok.svelte | 10 + .../svelte/block-root.siblings.bad.svelte | 13 + rules/fixtures/svelte/dynamic-tag.bad.svelte | 10 + rules/fixtures/svelte/dynamic-tag.ok.svelte | 10 + rules/fixtures/svelte/literal-text.bad.svelte | 12 + rules/fixtures/svelte/literal-text.ok.svelte | 12 + rules/fixtures/svelte/raw-html.bad.svelte | 10 + rules/fixtures/svelte/raw-html.ok.svelte | 10 + .../fixtures/svelte/raw-native-tag.bad.svelte | 10 + .../fixtures/svelte/raw-native-tag.ok.svelte | 10 + .../fixtures/svelte/reactive-aria.bad.svelte | 10 + rules/fixtures/svelte/reactive-aria.ok.svelte | 10 + rules/fixtures/templ/block-root.bad.templ | 21 + .../templ/block-root.branches.ok.templ | 29 + .../fixtures/templ/block-root.loop.bad.templ | 21 + .../templ/block-root.nested.bad.templ | 21 + rules/fixtures/templ/block-root.ok.templ | 21 + .../templ/block-root.siblings.bad.templ | 22 + rules/fixtures/templ/dynamic-tag.bad.templ | 19 + rules/fixtures/templ/dynamic-tag.ok.templ | 21 + rules/fixtures/templ/literal-text.bad.templ | 25 + rules/fixtures/templ/literal-text.ok.templ | 25 + rules/fixtures/templ/raw-html.bad.templ | 21 + rules/fixtures/templ/raw-html.ok.templ | 21 + rules/fixtures/templ/raw-native-tag.bad.templ | 19 + rules/fixtures/templ/raw-native-tag.ok.templ | 23 + rules/fixtures/templ/reactive-aria.bad.templ | 21 + rules/fixtures/templ/reactive-aria.ok.templ | 21 + rules/fixtures/twig/block-root.bad.html.twig | 5 + .../twig/block-root.branches.ok.html.twig | 17 + .../twig/block-root.loop.bad.html.twig | 7 + .../twig/block-root.nested.bad.html.twig | 8 + rules/fixtures/twig/block-root.ok.html.twig | 5 + .../twig/block-root.siblings.bad.html.twig | 9 + rules/fixtures/twig/dynamic-tag.bad.html.twig | 5 + rules/fixtures/twig/dynamic-tag.ok.html.twig | 5 + .../fixtures/twig/literal-text.bad.html.twig | 13 + rules/fixtures/twig/literal-text.ok.html.twig | 9 + rules/fixtures/twig/raw-html.bad.html.twig | 8 + rules/fixtures/twig/raw-html.ok.html.twig | 8 + .../twig/raw-native-tag.bad.html.twig | 5 + .../fixtures/twig/raw-native-tag.ok.html.twig | 11 + .../fixtures/twig/reactive-aria.bad.html.twig | 8 + .../fixtures/twig/reactive-aria.ok.html.twig | 8 + rules/fixtures/vue/block-root.bad.vue | 14 + rules/fixtures/vue/block-root.branches.ok.vue | 20 + rules/fixtures/vue/block-root.loop.bad.vue | 13 + rules/fixtures/vue/block-root.nested.bad.vue | 15 + rules/fixtures/vue/block-root.ok.vue | 14 + .../fixtures/vue/block-root.siblings.bad.vue | 16 + rules/fixtures/vue/dynamic-tag.bad.vue | 14 + rules/fixtures/vue/dynamic-tag.ok.vue | 14 + rules/fixtures/vue/literal-text.bad.vue | 16 + rules/fixtures/vue/literal-text.ok.vue | 16 + rules/fixtures/vue/raw-html.bad.vue | 14 + rules/fixtures/vue/raw-html.ok.vue | 14 + rules/fixtures/vue/raw-native-tag.bad.vue | 14 + rules/fixtures/vue/raw-native-tag.ok.vue | 14 + rules/fixtures/vue/reactive-aria.bad.vue | 14 + rules/fixtures/vue/reactive-aria.ok.vue | 14 + rules/html-validate.json | 15 + rules/zones.json | 665 ++ runtime/go/cn_merge.go | 266 - runtime/go/cn_merge_test.go | 42 - runtime/go/expr.go | 84 - runtime/go/heading.go | 31 - runtime/go/tags.go | 106 - runtime/go/utils.go | 67 - runtime/go/variants_json.go | 47 - runtime/php/Rt.php | 190 - runtime/php/TwigExtension.php | 41 - runtime/react/slot.tsx | 96 - runtime/ts/cn.ts | 11 - runtime/ts/env.ts | 9 - runtime/ts/expr.ts | 98 - runtime/ts/index.ts | 12 - runtime/ts/recipe-types.ts | 25 - runtime/ts/tags.ts | 122 - runtime/ts/variants.ts | 78 - src/application/generate-latte-bundle.ts | 113 - src/application/generate.ts | 212 - src/domain/cn.ts | 11 - src/domain/php-support.ts | 76 - src/domain/tags.ts | 67 - src/emitters/common.ts | 258 - src/emitters/latte.ts | 277 - src/emitters/php-classes.ts | 144 - src/emitters/php-common.ts | 54 - src/emitters/php-expr.ts | 92 - src/emitters/php-harness.ts | 110 - src/emitters/react.ts | 548 - src/emitters/solid.ts | 538 - src/emitters/svelte.ts | 306 - src/emitters/templ.ts | 435 - src/emitters/ts-common.ts | 330 - src/emitters/twig-expr.ts | 84 - src/emitters/twig.ts | 211 - src/emitters/vue.ts | 326 - src/infrastructure/cli.ts | 82 - tests/domain.test.ts | 248 - tests/emitters.test.ts | 152 - tests/global-setup.ts | 10 - tests/parity.latte.test.ts | 17 - tests/parity.templ.test.ts | 91 - tests/parity.test.ts | 154 - tests/parity.twig.test.ts | 14 - tests/preload-bun.ts | 69 - tests/shims.d.ts | 2 - tests/support/ensure-generated.ts | 15 - tests/support/fixtures.ts | 36 - tests/support/generated-ui.ts | 84 - tests/support/normalize.ts | 94 - tests/support/php.ts | 113 - tests/support/props.ts | 143 - tmp-alert-comp.js | 44 - tsconfig.base.json | 9 + tsconfig.generated.json | 22 - tsconfig.json | 22 +- vitest.config.ts | 25 - xgen/README.md | 68 + xgen/check/README.md | 28 + xgen/check/package.json | 36 + xgen/check/src/aria.ts | 52 + xgen/check/src/audit-rules.ts | 108 + xgen/check/src/audit.ts | 204 + xgen/check/src/blocks.ts | 182 + xgen/check/src/corners.ts | 55 + xgen/check/src/dictionary.ts | 107 + xgen/check/src/e2e/blocks.ts | 251 + xgen/check/src/e2e/catalog.ts | 89 + xgen/check/src/e2e/common.ts | 47 + xgen/check/src/e2e/facts.ts | 36 + xgen/check/src/e2e/generic.ts | 47 + xgen/check/src/e2e/html.ts | 33 + xgen/check/src/e2e/index.ts | 109 + xgen/check/src/e2e/page-checks.ts | 42 + xgen/check/src/e2e/plans.ts | 105 + xgen/check/src/e2e/site.ts | 105 + xgen/check/src/e2e/skins.ts | 113 + xgen/check/src/e2e/theme.ts | 99 + xgen/check/src/index.ts | 296 + xgen/check/src/jinja2/index.ts | 32 + xgen/check/src/latte/index.ts | 12 + xgen/check/src/readability-allow.ts | 12 + xgen/check/src/readability.ts | 64 + xgen/check/src/registry.ts | 37 + xgen/check/src/result.ts | 3 + xgen/check/src/routes.ts | 37 + xgen/check/src/rules/detectors.ts | 99 + xgen/check/src/rules/index.ts | 172 + xgen/check/src/rules/ir.ts | 85 + xgen/check/src/rules/latte.ts | 66 + xgen/check/src/rules/react.ts | 155 + xgen/check/src/rules/solid.ts | 6 + xgen/check/src/rules/svelte.ts | 52 + xgen/check/src/rules/templ.ts | 214 + xgen/check/src/rules/twig.ts | 292 + xgen/check/src/rules/vue.ts | 75 + xgen/check/src/rules/zones.ts | 35 + xgen/check/src/shadows.ts | 55 + xgen/check/src/shots.ts | 36 + xgen/check/src/solid/index.ts | 110 + xgen/check/src/spacing.ts | 39 + xgen/check/src/style-zones.ts | 127 + xgen/check/src/templ/blocks.ts | 87 + xgen/check/src/templ/bricks.ts | 35 + xgen/check/src/templ/index.ts | 101 + xgen/check/src/templ/normalize.ts | 24 + xgen/check/src/twig/index.ts | 109 + xgen/check/src/visual.ts | 145 + xgen/check/test/audit.test.ts | 79 + xgen/check/test/check.test.ts | 37 + xgen/check/test/dictionary.test.ts | 37 + xgen/check/test/readability.test.ts | 20 + xgen/check/test/rules-latte.test.ts | 83 + xgen/check/test/rules-solid.test.ts | 34 + xgen/check/test/rules-templ.test.ts | 43 + xgen/check/test/rules.test.ts | 46 + xgen/check/test/style-zones.test.ts | 32 + xgen/check/tools/readability-allow.ts | 12 + xgen/check/tools/rules.ts | 24 + xgen/cli/README.md | 22 + xgen/cli/package.json | 23 + xgen/cli/src/cli.ts | 124 + xgen/cli/test/cli.test.ts | 18 + xgen/content/ui/en.json | 2480 +++++ xgen/docs/audit-2026-10-05.md | 79 + xgen/docs/block-data.md | 288 + xgen/docs/blocks.md | 101 + xgen/docs/canary-coverage.md | 139 + xgen/docs/migrations.md | 19 + xgen/docs/vibeui-coverage.md | 184 + xgen/fixtures/activity.json | 102 + xgen/fixtures/article.json | 90 + xgen/fixtures/beforeafter.json | 90 + xgen/fixtures/bento.json | 174 + xgen/fixtures/cards.json | 150 + xgen/fixtures/cart.json | 87 + xgen/fixtures/categories.json | 150 + xgen/fixtures/channels.json | 69 + xgen/fixtures/chapters.json | 60 + xgen/fixtures/checklist.json | 111 + xgen/fixtures/community.json | 69 + xgen/fixtures/compare.json | 126 + xgen/fixtures/contacts.json | 90 + xgen/fixtures/credits.json | 114 + xgen/fixtures/crumbs.json | 62 + xgen/fixtures/days.json | 69 + xgen/fixtures/deckfaq.json | 126 + xgen/fixtures/deckitems.json | 3990 +++++++ xgen/fixtures/deckplans.json | 111 + xgen/fixtures/deckquotes.json | 87 + xgen/fixtures/decks.json | 2782 +++++ xgen/fixtures/deckstats.json | 3846 +++++++ xgen/fixtures/deliveryfacts.json | 90 + xgen/fixtures/departments.json | 48 + xgen/fixtures/details.json | 78 + xgen/fixtures/duo.json | 99 + xgen/fixtures/faq.json | 102 + xgen/fixtures/faqtabs.json | 60 + xgen/fixtures/features.json | 90 + xgen/fixtures/helplinks.json | 90 + xgen/fixtures/jobs.json | 186 + xgen/fixtures/lanes.json | 48 + xgen/fixtures/logos.json | 114 + xgen/fixtures/media.json | 126 + xgen/fixtures/megagroups.json | 69 + xgen/fixtures/members.json | 278 + xgen/fixtures/menulinks.json | 566 + xgen/fixtures/metrics.json | 108 + xgen/fixtures/milestones.json | 102 + xgen/fixtures/navlinks.json | 111 + xgen/fixtures/orders.json | 126 + xgen/fixtures/outline.json | 69 + xgen/fixtures/payments.json | 90 + xgen/fixtures/perks.json | 90 + xgen/fixtures/photos.json | 195 + xgen/fixtures/placeholders.json | 62 + xgen/fixtures/plans.json | 565 + xgen/fixtures/posts.json | 199 + xgen/fixtures/posttags.json | 78 + xgen/fixtures/products.json | 270 + xgen/fixtures/profilefacts.json | 78 + xgen/fixtures/projects.json | 241 + xgen/fixtures/promos.json | 48 + xgen/fixtures/prompts.json | 111 + xgen/fixtures/questions.json | 168 + xgen/fixtures/reviews.json | 81 + xgen/fixtures/rivals.json | 126 + xgen/fixtures/series.json | 132 + xgen/fixtures/sidenav.json | 111 + xgen/fixtures/sitemap.json | 90 + xgen/fixtures/skills.json | 96 + xgen/fixtures/specs.json | 96 + xgen/fixtures/stats.json | 108 + xgen/fixtures/steps.json | 90 + xgen/fixtures/stores.json | 151 + xgen/fixtures/subnav.json | 111 + xgen/fixtures/summary.json | 102 + xgen/fixtures/tabs.json | 78 + xgen/fixtures/taxonomies/category.json | 65 + xgen/fixtures/taxonomies/faq_category.json | 46 + .../fixtures/taxonomies/product_category.json | 65 + .../fixtures/taxonomies/project_category.json | 75 + xgen/fixtures/templates.json | 198 + xgen/fixtures/terminal.json | 96 + xgen/fixtures/testimonials.json | 150 + xgen/fixtures/tiers.json | 146 + xgen/fixtures/topics.json | 96 + xgen/fixtures/users.json | 167 + xgen/fixtures/values.json | 69 + xgen/fixtures/wizard.json | 87 + xgen/fixtures/zones.json | 114 + xgen/generator/README.md | 11 + xgen/generator/package.json | 30 + xgen/generator/src/index.ts | 2 + xgen/generator/src/jinja2.ts | 58 + xgen/generator/src/latte.ts | 59 + xgen/generator/src/organisms.ts | 55 + xgen/generator/src/plan.ts | 286 + xgen/generator/src/readme.ts | 35 + xgen/generator/src/source.ts | 32 + xgen/generator/src/templ.ts | 98 + xgen/generator/src/twig.ts | 57 + xgen/generator/src/write.ts | 66 + xgen/generator/test/generator.test.ts | 65 + xgen/generator/test/plan.test.ts | 34 + xgen/generator/test/source.test.ts | 55 + xgen/runtimes/core/README.md | 10 + xgen/runtimes/core/assets/app/core.ts | 314 + xgen/runtimes/core/assets/app/fields.ts | 193 + xgen/runtimes/core/assets/app/inspect.ts | 152 + xgen/runtimes/core/assets/app/skins.ts | 153 + xgen/runtimes/core/assets/app/theme.ts | 33 + xgen/runtimes/core/assets/app/visited.ts | 66 + xgen/runtimes/core/assets/styles/kit.css | 93 + xgen/runtimes/core/assets/styles/skins.css | 22 + .../core/assets/styles/skins/NOTICE.md | 11 + .../assets/styles/skins/amber-minimal.css | 100 + .../core/assets/styles/skins/base.css | 22 + .../core/assets/styles/skins/bubblegum.css | 100 + .../core/assets/styles/skins/claude.css | 100 + .../core/assets/styles/skins/cosmic-night.css | 100 + .../core/assets/styles/skins/default.css | 69 + .../core/assets/styles/skins/doom-64.css | 100 + .../core/assets/styles/skins/kodama-grove.css | 100 + .../core/assets/styles/skins/mocha-mousse.css | 100 + .../assets/styles/skins/modern-minimal.css | 100 + .../assets/styles/skins/neo-brutalism.css | 100 + .../core/assets/styles/skins/notebook.css | 111 + .../core/assets/styles/skins/perpetuity.css | 103 + .../core/assets/styles/skins/skins.json | 103 + .../runtimes/core/assets/styles/skins/sky.css | 116 + .../core/assets/styles/skins/supabase.css | 107 + .../core/assets/styles/skins/t3-chat.css | 100 + .../core/assets/styles/skins/violet-bloom.css | 107 + xgen/runtimes/core/assets/styles/theme.css | 129 + xgen/runtimes/core/assets/ts/a11y/dismiss.ts | 30 + .../core/assets/ts/a11y/focus-trap.ts | 18 + .../runtimes/core/assets/ts/a11y/focusable.ts | 7 + xgen/runtimes/core/assets/ts/a11y/index.ts | 5 + xgen/runtimes/core/assets/ts/a11y/roving.ts | 39 + .../core/assets/ts/a11y/scroll-lock.ts | 22 + xgen/runtimes/core/assets/ts/cn.ts | 7 + xgen/runtimes/core/assets/ts/env.ts | 9 + xgen/runtimes/core/assets/ts/expr.ts | 98 + xgen/runtimes/core/assets/ts/format.ts | 68 + xgen/runtimes/core/assets/ts/index.ts | 7 + xgen/runtimes/core/assets/ts/tags.ts | 122 + xgen/runtimes/core/assets/ts/variants.ts | 59 + xgen/runtimes/core/package.json | 20 + xgen/runtimes/core/src/app-common.ts | 253 + xgen/runtimes/core/src/common.ts | 276 + xgen/runtimes/core/src/decks.ts | 37 + xgen/runtimes/core/src/index.ts | 9 + xgen/runtimes/core/src/preset.ts | 43 + xgen/runtimes/core/src/screen-model.ts | 138 + xgen/runtimes/core/src/ts-common.ts | 282 + .../runtimes/core/src}/ts-expr.ts | 2 +- xgen/runtimes/core/src/variant-table.ts | 89 + xgen/runtimes/core/src/view.ts | 303 + xgen/runtimes/core/test/decks.test.ts | 38 + xgen/runtimes/core/test/format.test.ts | 15 + xgen/runtimes/core/test/runtime.test.ts | 170 + xgen/runtimes/core/test/screen-model.test.ts | 25 + xgen/runtimes/core/test/skins.test.ts | 64 + xgen/runtimes/core/test/variant-table.test.ts | 29 + xgen/runtimes/core/tools/skin-colors.ts | 104 + xgen/runtimes/core/tools/skins-hsl.ts | 37 + xgen/runtimes/core/tools/tweakcn-skins.ts | 214 + xgen/runtimes/jinja2/.gitignore | 1 + xgen/runtimes/jinja2/README.md | 29 + .../jinja2/assets/lucide-icon.html.j2 | 11 + xgen/runtimes/jinja2/assets/parity.py | 20 + .../jinja2/assets/py/ui8kit_jinja/__init__.py | 62 + .../jinja2/assets/py/ui8kit_jinja/cn_merge.py | 138 + .../jinja2/assets/py/ui8kit_jinja/runtime.py | 493 + xgen/runtimes/jinja2/package.json | 19 + xgen/runtimes/jinja2/src/index.ts | 5 + xgen/runtimes/jinja2/test/emit.test.ts | 29 + xgen/runtimes/latte/README.md | 38 + xgen/runtimes/latte/assets/lucide-icon.latte | 9 + xgen/runtimes/latte/assets/parity.php | 22 + xgen/runtimes/latte/assets/php/Extension.php | 56 + xgen/runtimes/latte/package.json | 19 + xgen/runtimes/latte/src/index.ts | 6 + xgen/runtimes/latte/test/emit.test.ts | 29 + xgen/runtimes/react/README.md | 5 + xgen/runtimes/react/assets/LucideIcon.tsx | 34 + xgen/runtimes/react/assets/ScreenOutlet.tsx | 14 + .../runtimes/react/assets}/slot.tsx | 0 xgen/runtimes/react/assets/url.ts | 10 + xgen/runtimes/react/package.json | 21 + xgen/runtimes/react/src/app.ts | 58 + xgen/runtimes/react/src/dom.ts | 146 + xgen/runtimes/react/src/emit.ts | 284 + xgen/runtimes/react/src/index.ts | 3 + xgen/runtimes/react/src/jsx.ts | 181 + xgen/runtimes/react/src/view.ts | 284 + xgen/runtimes/react/test/emit.test.ts | 16 + xgen/runtimes/solid/README.md | 25 + xgen/runtimes/solid/assets/LucideIcon.tsx | 35 + xgen/runtimes/solid/assets/ScreenOutlet.tsx | 33 + xgen/runtimes/solid/assets/url.ts | 11 + xgen/runtimes/solid/package.json | 21 + xgen/runtimes/solid/src/app.ts | 59 + xgen/runtimes/solid/src/dom.ts | 134 + xgen/runtimes/solid/src/emit.ts | 150 + xgen/runtimes/solid/src/index.ts | 3 + xgen/runtimes/solid/src/jsx.ts | 96 + xgen/runtimes/solid/src/view.ts | 292 + xgen/runtimes/solid/test/emit.test.ts | 16 + xgen/runtimes/svelte/README.md | 5 + xgen/runtimes/svelte/assets/LucideIcon.svelte | 37 + xgen/runtimes/svelte/assets/url.svelte.ts | 25 + xgen/runtimes/svelte/package.json | 21 + xgen/runtimes/svelte/src/app.ts | 65 + xgen/runtimes/svelte/src/emit.ts | 305 + xgen/runtimes/svelte/src/index.ts | 3 + xgen/runtimes/svelte/src/view.ts | 260 + xgen/runtimes/svelte/test/emit.test.ts | 17 + xgen/runtimes/templ/README.md | 31 + xgen/runtimes/templ/assets/LucideIcon.templ | 83 + xgen/runtimes/templ/assets/go.sum | 4 + xgen/runtimes/templ/assets/go/cn_merge.go | 293 + .../templ/assets/go}/cn_merge_test.go | 0 xgen/runtimes/templ/assets/go/dyn.go | 703 ++ .../runtimes/templ/assets/go}/expr.go | 0 .../runtimes/templ/assets/go}/heading.go | 0 .../runtimes/templ/assets/go}/tags.go | 0 xgen/runtimes/templ/assets/go/utils.go | 90 + .../runtimes/templ/assets/go/variants_json.go | 49 + xgen/runtimes/templ/package.json | 21 + .../runtimes/templ/src}/go-expr.ts | 4 +- .../runtimes/templ/src}/go-harness.ts | 9 +- xgen/runtimes/templ/src/index.ts | 7 + xgen/runtimes/templ/src/organism.ts | 317 + xgen/runtimes/templ/src/templ.ts | 448 + xgen/runtimes/templ/test/emit.test.ts | 33 + xgen/runtimes/twig/README.md | 37 + .../twig/assets/lucide-icon.html.twig | 11 + xgen/runtimes/twig/assets/parity.php | 22 + .../twig/assets/php-shared/CnMerge.php | 232 + .../twig/assets/php-shared/Runtime.php | 734 ++ xgen/runtimes/twig/assets/php/Extension.php | 53 + xgen/runtimes/twig/package.json | 21 + xgen/runtimes/twig/src/brick.ts | 182 + xgen/runtimes/twig/src/dialect.ts | 158 + xgen/runtimes/twig/src/index.ts | 7 + xgen/runtimes/twig/src/organism.ts | 278 + xgen/runtimes/twig/src/php.ts | 14 + xgen/runtimes/twig/test/emit.test.ts | 43 + xgen/runtimes/vue/README.md | 10 + xgen/runtimes/vue/assets/LucideIcon.vue | 38 + xgen/runtimes/vue/assets/ScreenOutlet.vue | 12 + xgen/runtimes/vue/assets/url.ts | 8 + xgen/runtimes/vue/package.json | 21 + xgen/runtimes/vue/src/app.ts | 63 + xgen/runtimes/vue/src/emit.ts | 197 + xgen/runtimes/vue/src/index.ts | 3 + xgen/runtimes/vue/src/template.ts | 103 + xgen/runtimes/vue/src/view.ts | 294 + xgen/runtimes/vue/test/emit.test.ts | 39 + xgen/schema/README.md | 20 + xgen/schema/codex/blocks.json | 9809 +++++++++++++++++ xgen/schema/codex/blocks.schema.json | 217 + xgen/schema/codex/manifest.json | 1998 ++++ xgen/schema/package.json | 23 + xgen/schema/schemas/app.schema.json | 72 + xgen/schema/schemas/block.schema.json | 307 + xgen/schema/schemas/collection.schema.json | 149 + xgen/schema/schemas/composed.schema.json | 509 + xgen/schema/schemas/dictionary.schema.json | 22 + xgen/schema/schemas/organism.schema.json | 747 ++ xgen/schema/schemas/preset.schema.json | 72 + xgen/schema/schemas/screen.schema.json | 633 ++ xgen/schema/schemas/spec.schema.json | 1135 ++ xgen/schema/schemas/variants.schema.json | 64 + xgen/schema/src/codex-blocks.ts | 290 + xgen/schema/src/codex-validate.ts | 40 + xgen/schema/src/codex.ts | 84 + xgen/schema/src/index.ts | 26 + xgen/schema/src/paths.ts | 26 + xgen/schema/src/versions.ts | 27 + xgen/schema/test/blocks.test.ts | 210 + xgen/schema/test/codex-blocks.test.ts | 47 + xgen/schema/test/codex.test.ts | 33 + xgen/schema/test/schema.test.ts | 28 + xgen/screens/README.md | 14 + xgen/screens/package.json | 20 + xgen/screens/src/authored.ts | 42 + xgen/screens/src/authoring/README.md | 17 + xgen/screens/src/authoring/blocks/account.ts | 84 + xgen/screens/src/authoring/blocks/checkout.ts | 143 + xgen/screens/src/authoring/blocks/commerce.ts | 284 + xgen/screens/src/authoring/blocks/content.ts | 137 + .../screens/src/authoring/blocks/cta-proof.ts | 36 + .../screens/src/authoring/blocks/dashboard.ts | 176 + xgen/screens/src/authoring/blocks/delivery.ts | 134 + .../screens/src/authoring/blocks/faq-split.ts | 44 + .../src/authoring/blocks/feature-showcase.ts | 35 + .../src/authoring/blocks/feature-split.ts | 38 + .../src/authoring/blocks/footer-split.ts | 60 + xgen/screens/src/authoring/blocks/guide.ts | 145 + .../src/authoring/blocks/hero-split.ts | 31 + .../src/authoring/blocks/landing-hero.ts | 89 + xgen/screens/src/authoring/blocks/landing.ts | 144 + .../screens/src/authoring/blocks/marketing.ts | 141 + .../src/authoring/blocks/media-list.ts | 45 + .../src/authoring/blocks/navigation.ts | 185 + .../screens/src/authoring/blocks/organisms.ts | 74 + .../src/authoring/blocks/page-trail.ts | 35 + xgen/screens/src/authoring/blocks/people.ts | 118 + .../src/authoring/blocks/post-showcase.ts | 41 + .../src/authoring/blocks/post-split.ts | 50 + .../src/authoring/blocks/pricing-card.ts | 61 + .../src/authoring/blocks/pricing-more.ts | 102 + xgen/screens/src/authoring/blocks/promo.ts | 150 + .../src/authoring/blocks/quote-split.ts | 50 + xgen/screens/src/authoring/blocks/shells.ts | 47 + xgen/screens/src/authoring/blocks/showcase.ts | 210 + xgen/screens/src/authoring/blocks/signup.ts | 79 + xgen/screens/src/authoring/blocks/site.ts | 98 + .../src/authoring/blocks/storefront.ts | 75 + .../src/authoring/blocks/story-tabs.ts | 45 + .../screens/src/authoring/blocks/templates.ts | 81 + xgen/screens/src/authoring/blocks/work.ts | 95 + .../screens/src/authoring/blocks/workspace.ts | 104 + .../src/authoring/components/app-main.ts | 38 + xgen/screens/src/authoring/components/auth.ts | 28 + .../src/authoring/components/cart-table.ts | 43 + .../authoring/components/checkout-parts.ts | 128 + .../src/authoring/components/compare.ts | 24 + .../src/authoring/components/contracts.ts | 57 + .../authoring/components/cta-proof-parts.ts | 38 + xgen/screens/src/authoring/components/cta.ts | 24 + .../src/authoring/components/faq-parts.ts | 69 + .../components/feature-split-parts.ts | 43 + .../src/authoring/components/features.ts | 60 + .../components/footer-split-parts.ts | 92 + .../src/authoring/components/footer.ts | 54 + .../src/authoring/components/frames.ts | 188 + .../authoring/components/hero-components.ts | 130 + .../authoring/components/hero-split-parts.ts | 65 + .../src/authoring/components/landmarks.ts | 44 + .../src/authoring/components/marketing.ts | 76 + .../authoring/components/media-list-parts.ts | 79 + xgen/screens/src/authoring/components/nav.ts | 119 + .../src/authoring/components/number-field.ts | 24 + .../src/authoring/components/orders.ts | 37 + .../authoring/components/page-trail-parts.ts | 35 + .../screens/src/authoring/components/parts.ts | 337 + .../src/authoring/components/patterns.ts | 255 + .../src/authoring/components/people-parts.ts | 73 + .../components/post-showcase-parts.ts | 50 + .../authoring/components/post-split-parts.ts | 72 + .../src/authoring/components/product-parts.ts | 37 + .../authoring/components/quote-split-parts.ts | 54 + .../src/authoring/components/shell-parts.ts | 112 + .../src/authoring/components/shop-parts.ts | 78 + .../authoring/components/story-tabs-parts.ts | 28 + .../src/authoring/components/visuals.ts | 28 + .../src/authoring/components/work-parts.ts | 39 + xgen/screens/src/authoring/forms.ts | 33 + .../src/authoring/gallery/block-kit.ts | 99 + .../src/authoring/gallery/blocks-commerce.ts | 101 + .../src/authoring/gallery/blocks-company.ts | 111 + .../src/authoring/gallery/blocks-ctas.ts | 37 + .../src/authoring/gallery/blocks-data.ts | 83 + .../src/authoring/gallery/blocks-define.ts | 8 + .../src/authoring/gallery/blocks-faqs.ts | 38 + .../gallery/blocks-feature-showcase.ts | 27 + .../gallery/blocks-feature-splits.ts | 35 + .../src/authoring/gallery/blocks-footers.ts | 39 + .../src/authoring/gallery/blocks-heroes.ts | 38 + .../authoring/gallery/blocks-media-lists.ts | 44 + .../src/authoring/gallery/blocks-more.ts | 233 + .../authoring/gallery/blocks-page-trails.ts | 31 + .../authoring/gallery/blocks-post-showcase.ts | 31 + .../src/authoring/gallery/blocks-posts.ts | 37 + .../src/authoring/gallery/blocks-quotes.ts | 39 + .../src/authoring/gallery/blocks-shells.ts | 52 + .../src/authoring/gallery/blocks-shop.ts | 105 + .../authoring/gallery/blocks-story-tabs.ts | 27 + .../src/authoring/gallery/blocks-vibe.ts | 284 + xgen/screens/src/authoring/gallery/blocks.ts | 274 + xgen/screens/src/authoring/gallery/catalog.ts | 182 + .../screens/src/authoring/gallery/coverage.ts | 190 + xgen/screens/src/authoring/gallery/skins.ts | 75 + xgen/screens/src/authoring/kit.ts | 67 + xgen/screens/src/authoring/landmarks.ts | 106 + xgen/screens/src/authoring/placeholders.ts | 10 + .../src/authoring/presets/default-preset.ts | 46 + xgen/screens/src/authoring/presets/index.ts | 15 + xgen/screens/src/authoring/props.ts | 46 + .../src/authoring/screens/plans-screen.ts | 84 + xgen/screens/src/authoring/screens/themes.ts | 202 + xgen/screens/src/authoring/ux.ts | 24 + xgen/screens/src/build.ts | 78 + xgen/screens/src/compose-catalog.ts | 128 + xgen/screens/src/compose-kit.ts | 170 + xgen/screens/src/compose-skins.ts | 94 + xgen/screens/src/compose.ts | 151 + xgen/screens/src/index.ts | 15 + xgen/screens/src/ir.ts | 310 + xgen/screens/src/load.ts | 86 + xgen/screens/src/print.ts | 143 + xgen/screens/src/validate-view.ts | 271 + xgen/screens/test/screens.test.ts | 206 + xgen/screens/tools/author-block-texts.ts | 21 + xgen/screens/tools/author-coverage.ts | 9 + xgen/screens/tools/author-theme-texts.ts | 15 + xgen/spec/README.md | 5 + xgen/spec/package.json | 21 + xgen/spec/src/derive.ts | 63 + xgen/spec/src/domain/cn.ts | 7 + {src => xgen/spec/src}/domain/expr.ts | 0 {src => xgen/spec/src}/domain/model.ts | 0 {src => xgen/spec/src}/domain/naming.ts | 0 {src => xgen/spec/src}/domain/recipe.ts | 9 + {src => xgen/spec/src}/domain/render.ts | 0 xgen/spec/src/domain/tags.ts | 69 + {src => xgen/spec/src}/domain/validate.ts | 0 xgen/spec/src/index.ts | 11 + xgen/spec/src/load.ts | 36 + xgen/spec/src/spec-file.ts | 59 + xgen/spec/test/specs.test.ts | 31 + xgen/spec/tools/add-lucide.ts | 25 + xgen/spec/tools/author-block-recipes.ts | 31 + xgen/spec/tools/author-bricks.ts | 115 + xgen/spec/tools/harvest-lucide.ts | 23 + xgen/spec/tools/import-codegen.ts | 81 + xgen/spec/tools/import-recipes.ts | 29 + xgen/specs/_nonportable.json | 94 + xgen/specs/assets/lucide-icons.json | 1 + xgen/specs/blocks/about.json | 106 + xgen/specs/blocks/aboutme.json | 148 + xgen/specs/blocks/accordion.json | 126 + xgen/specs/blocks/activity.json | 91 + xgen/specs/blocks/announcement.json | 130 + xgen/specs/blocks/article.json | 123 + xgen/specs/blocks/auth.json | 179 + xgen/specs/blocks/authpage.json | 262 + xgen/specs/blocks/beforeafter.json | 124 + xgen/specs/blocks/bento.json | 113 + xgen/specs/blocks/bottomnav.json | 90 + xgen/specs/blocks/cart.json | 101 + xgen/specs/blocks/cartdrawer.json | 119 + xgen/specs/blocks/cartpage.json | 160 + xgen/specs/blocks/categories.json | 116 + xgen/specs/blocks/channels.json | 95 + xgen/specs/blocks/chart.json | 97 + xgen/specs/blocks/checklist.json | 120 + xgen/specs/blocks/checkout.json | 178 + xgen/specs/blocks/compare.json | 140 + xgen/specs/blocks/contact.json | 114 + xgen/specs/blocks/cookie.json | 77 + xgen/specs/blocks/credits.json | 109 + xgen/specs/blocks/cta.json | 209 + xgen/specs/blocks/ctaproof.json | 249 + xgen/specs/blocks/dashshell.json | 388 + xgen/specs/blocks/delivery.json | 127 + xgen/specs/blocks/empty.json | 163 + xgen/specs/blocks/errorpage.json | 142 + xgen/specs/blocks/faq.json | 154 + xgen/specs/blocks/faqsplit.json | 258 + xgen/specs/blocks/features.json | 154 + xgen/specs/blocks/featureshowcase.json | 147 + xgen/specs/blocks/featuresplit.json | 192 + xgen/specs/blocks/featuretabs.json | 97 + xgen/specs/blocks/footer.json | 54 + xgen/specs/blocks/footersplit.json | 274 + xgen/specs/blocks/header.json | 72 + xgen/specs/blocks/hero.json | 354 + xgen/specs/blocks/herosplit.json | 341 + xgen/specs/blocks/iconwall.json | 112 + xgen/specs/blocks/jobs.json | 167 + xgen/specs/blocks/kanban.json | 134 + xgen/specs/blocks/locations.json | 113 + xgen/specs/blocks/logos.json | 115 + xgen/specs/blocks/medialist.json | 535 + xgen/specs/blocks/megamenu.json | 161 + xgen/specs/blocks/metrics.json | 95 + xgen/specs/blocks/navbar.json | 188 + xgen/specs/blocks/newsletter.json | 93 + xgen/specs/blocks/orders.json | 104 + xgen/specs/blocks/overview.json | 169 + xgen/specs/blocks/pagehead.json | 74 + xgen/specs/blocks/pagetrail.json | 156 + xgen/specs/blocks/photos.json | 154 + xgen/specs/blocks/plan.json | 80 + xgen/specs/blocks/postheader.json | 104 + xgen/specs/blocks/posts.json | 188 + xgen/specs/blocks/postshowcase.json | 158 + xgen/specs/blocks/postsplit.json | 261 + xgen/specs/blocks/pricing.json | 175 + xgen/specs/blocks/product.json | 128 + xgen/specs/blocks/productinfo.json | 116 + xgen/specs/blocks/products.json | 161 + xgen/specs/blocks/profile.json | 80 + xgen/specs/blocks/projects.json | 140 + xgen/specs/blocks/proof.json | 116 + xgen/specs/blocks/quotesplit.json | 289 + xgen/specs/blocks/reviews.json | 109 + xgen/specs/blocks/shell.json | 206 + xgen/specs/blocks/sidenav.json | 116 + xgen/specs/blocks/sitemap.json | 163 + xgen/specs/blocks/skeleton.json | 100 + xgen/specs/blocks/slots.json | 143 + xgen/specs/blocks/stats.json | 181 + xgen/specs/blocks/stepper.json | 93 + xgen/specs/blocks/steps.json | 111 + xgen/specs/blocks/sticky.json | 103 + xgen/specs/blocks/storehero.json | 147 + xgen/specs/blocks/storytabs.json | 125 + xgen/specs/blocks/summary.json | 101 + xgen/specs/blocks/team.json | 144 + xgen/specs/blocks/templates.json | 125 + xgen/specs/blocks/testimonials.json | 182 + xgen/specs/blocks/timeline.json | 116 + xgen/specs/blocks/tour.json | 96 + xgen/specs/blocks/usage.json | 102 + xgen/specs/blocks/usp.json | 103 + xgen/specs/blocks/videomodal.json | 121 + xgen/specs/blocks/videos.json | 118 + xgen/specs/blocks/wizard.json | 114 + xgen/specs/blocks/zones.json | 112 + xgen/specs/organisms/about-company.json | 380 + xgen/specs/organisms/about-me.json | 437 + xgen/specs/organisms/activity-feed.json | 367 + xgen/specs/organisms/announcement-bar.json | 358 + xgen/specs/organisms/app-main.json | 402 + xgen/specs/organisms/app-shell.json | 550 + xgen/specs/organisms/article-block.json | 49 + xgen/specs/organisms/article-body.json | 416 + xgen/specs/organisms/auth-card.json | 570 + xgen/specs/organisms/auth-form.json | 431 + xgen/specs/organisms/auth-layout.json | 434 + xgen/specs/organisms/before-after.json | 578 + xgen/specs/organisms/bento-grid.json | 357 + xgen/specs/organisms/bottom-nav.json | 265 + xgen/specs/organisms/cart-drawer.json | 352 + xgen/specs/organisms/cart-list.json | 489 + xgen/specs/organisms/cart-summary-card.json | 682 ++ xgen/specs/organisms/cart-table.json | 544 + xgen/specs/organisms/category-nav.json | 653 ++ xgen/specs/organisms/chart-panel.json | 334 + xgen/specs/organisms/checklist.json | 532 + xgen/specs/organisms/checkout-form.json | 917 ++ xgen/specs/organisms/checkout-step.json | 152 + xgen/specs/organisms/checkout-submit.json | 135 + xgen/specs/organisms/compare-mark.json | 162 + xgen/specs/organisms/comparison-table.json | 520 + xgen/specs/organisms/contact-form.json | 645 ++ xgen/specs/organisms/cookie-banner.json | 323 + xgen/specs/organisms/credit-packs.json | 549 + xgen/specs/organisms/cta-actions.json | 230 + xgen/specs/organisms/cta-band.json | 478 + xgen/specs/organisms/cta-banner.json | 211 + xgen/specs/organisms/cta-proof-items.json | 639 ++ xgen/specs/organisms/cta-proof.json | 330 + xgen/specs/organisms/dashboard-overview.json | 401 + xgen/specs/organisms/dashboard-shell.json | 541 + xgen/specs/organisms/delivery-info.json | 484 + xgen/specs/organisms/drawer-lines.json | 405 + xgen/specs/organisms/empty-panel.json | 328 + xgen/specs/organisms/error-page.json | 305 + xgen/specs/organisms/faq-cards.json | 211 + xgen/specs/organisms/faq-disclosures.json | 104 + xgen/specs/organisms/faq-finder.json | 211 + xgen/specs/organisms/faq-help.json | 217 + xgen/specs/organisms/faq-list.json | 621 ++ xgen/specs/organisms/faq-split.json | 624 ++ xgen/specs/organisms/feature-accordion.json | 322 + xgen/specs/organisms/feature-cards.json | 322 + xgen/specs/organisms/feature-grid.json | 398 + .../specs/organisms/feature-metric-cards.json | 147 + xgen/specs/organisms/feature-pairs.json | 133 + xgen/specs/organisms/feature-rows.json | 176 + xgen/specs/organisms/feature-showcase.json | 312 + xgen/specs/organisms/feature-split.json | 408 + xgen/specs/organisms/feature-stat-rows.json | 227 + xgen/specs/organisms/feature-sticky.json | 344 + xgen/specs/organisms/feature-tabs.json | 394 + xgen/specs/organisms/figure-block.json | 49 + xgen/specs/organisms/footer-brand.json | 92 + xgen/specs/organisms/footer-card.json | 338 + xgen/specs/organisms/footer-channels.json | 144 + xgen/specs/organisms/footer-columns.json | 176 + xgen/specs/organisms/footer-contacts.json | 138 + xgen/specs/organisms/footer-figures.json | 126 + xgen/specs/organisms/footer-group-cards.json | 202 + xgen/specs/organisms/footer-link-columns.json | 188 + xgen/specs/organisms/footer-points.json | 140 + xgen/specs/organisms/footer-signup-card.json | 192 + xgen/specs/organisms/footer-sitemap.json | 61 + xgen/specs/organisms/footer-split.json | 754 ++ xgen/specs/organisms/hero-badge.json | 92 + xgen/specs/organisms/hero-classic.json | 734 ++ xgen/specs/organisms/hero-head.json | 385 + xgen/specs/organisms/hero-prompt.json | 450 + xgen/specs/organisms/hero-split-extras.json | 611 + xgen/specs/organisms/hero-split-media.json | 352 + xgen/specs/organisms/hero-split.json | 265 + xgen/specs/organisms/icon-wall.json | 354 + xgen/specs/organisms/job-board.json | 475 + xgen/specs/organisms/job-cards.json | 616 ++ xgen/specs/organisms/kanban-board.json | 423 + xgen/specs/organisms/logo-cloud.json | 361 + xgen/specs/organisms/logo-ribbon.json | 176 + xgen/specs/organisms/logo-slot.json | 82 + xgen/specs/organisms/media-contacts.json | 205 + xgen/specs/organisms/media-figures.json | 159 + xgen/specs/organisms/media-list.json | 594 + xgen/specs/organisms/media-posts.json | 168 + xgen/specs/organisms/media-review.json | 165 + xgen/specs/organisms/media-steps.json | 173 + xgen/specs/organisms/media-topics.json | 177 + xgen/specs/organisms/mega-menu.json | 576 + xgen/specs/organisms/member-row.json | 303 + xgen/specs/organisms/menu-entry.json | 177 + xgen/specs/organisms/metric-row.json | 304 + xgen/specs/organisms/milestone-timeline.json | 367 + xgen/specs/organisms/nav-actions.json | 190 + xgen/specs/organisms/nav-bar-menu.json | 99 + xgen/specs/organisms/nav-bar.json | 568 + xgen/specs/organisms/nav-block.json | 70 + xgen/specs/organisms/nav-links.json | 181 + xgen/specs/organisms/newsletter-form.json | 315 + xgen/specs/organisms/number-field.json | 130 + xgen/specs/organisms/offer-media.json | 125 + xgen/specs/organisms/order-rows.json | 360 + xgen/specs/organisms/order-summary.json | 350 + xgen/specs/organisms/order-table.json | 488 + xgen/specs/organisms/over-media.json | 57 + xgen/specs/organisms/page-aside.json | 279 + xgen/specs/organisms/page-crumbs.json | 195 + xgen/specs/organisms/page-intro.json | 133 + xgen/specs/organisms/page-trail.json | 323 + xgen/specs/organisms/payment-options.json | 156 + xgen/specs/organisms/photo-gallery.json | 731 ++ xgen/specs/organisms/post-actions.json | 213 + xgen/specs/organisms/post-author.json | 293 + xgen/specs/organisms/post-card.json | 661 ++ xgen/specs/organisms/post-feature.json | 199 + xgen/specs/organisms/post-grid.json | 604 + xgen/specs/organisms/post-header.json | 316 + xgen/specs/organisms/post-mini-card.json | 133 + xgen/specs/organisms/post-outline.json | 275 + xgen/specs/organisms/post-overlay-card.json | 199 + xgen/specs/organisms/post-showcase.json | 531 + xgen/specs/organisms/post-split.json | 541 + xgen/specs/organisms/post-stats.json | 189 + xgen/specs/organisms/post-tags.json | 80 + xgen/specs/organisms/pricing-card.json | 581 + xgen/specs/organisms/pricing-tiers.json | 452 + xgen/specs/organisms/product-card.json | 632 ++ xgen/specs/organisms/product-detail.json | 604 + xgen/specs/organisms/product-gallery.json | 116 + xgen/specs/organisms/product-grid.json | 394 + xgen/specs/organisms/product-info.json | 387 + xgen/specs/organisms/product-price.json | 161 + xgen/specs/organisms/profile-form.json | 630 ++ xgen/specs/organisms/project-grid.json | 391 + xgen/specs/organisms/project-tiles.json | 484 + xgen/specs/organisms/prompt-composer.json | 324 + xgen/specs/organisms/proof-band.json | 329 + xgen/specs/organisms/quote-card.json | 411 + xgen/specs/organisms/quote-figures.json | 115 + xgen/specs/organisms/quote-logo-tiles.json | 113 + xgen/specs/organisms/quote-proof.json | 85 + xgen/specs/organisms/quote-rating-panel.json | 181 + xgen/specs/organisms/quote-slot.json | 91 + xgen/specs/organisms/quote-split.json | 719 ++ xgen/specs/organisms/review-list.json | 379 + xgen/specs/organisms/search-palette.json | 75 + xgen/specs/organisms/shell-content.json | 625 ++ xgen/specs/organisms/shell-footer.json | 205 + xgen/specs/organisms/shell-sidebar.json | 677 ++ xgen/specs/organisms/shell-topbar.json | 435 + xgen/specs/organisms/shopping-cart.json | 528 + xgen/specs/organisms/sidebar-nav.json | 461 + xgen/specs/organisms/signup-wizard.json | 758 ++ xgen/specs/organisms/site-footer.json | 253 + xgen/specs/organisms/site-header.json | 417 + xgen/specs/organisms/sitemap-footer.json | 619 ++ xgen/specs/organisms/skeleton-layout.json | 300 + xgen/specs/organisms/slot-board.json | 499 + xgen/specs/organisms/slot-grid.json | 264 + xgen/specs/organisms/stat-figure.json | 222 + xgen/specs/organisms/stats-band.json | 511 + xgen/specs/organisms/stepper.json | 535 + xgen/specs/organisms/steps-list.json | 380 + xgen/specs/organisms/store-hero.json | 567 + xgen/specs/organisms/store-locations.json | 523 + xgen/specs/organisms/story-dots.json | 96 + xgen/specs/organisms/story-panel.json | 185 + xgen/specs/organisms/story-tabs.json | 510 + xgen/specs/organisms/support-channels.json | 325 + xgen/specs/organisms/team-grid.json | 482 + xgen/specs/organisms/template-grid.json | 607 + xgen/specs/organisms/testimonial-grid.json | 436 + xgen/specs/organisms/topic-chips.json | 149 + xgen/specs/organisms/tour-callout.json | 284 + xgen/specs/organisms/usage-calculator.json | 435 + xgen/specs/organisms/usp-strip.json | 324 + xgen/specs/organisms/video-grid.json | 384 + xgen/specs/organisms/video-modal.json | 368 + xgen/specs/organisms/weighted-title.json | 117 + xgen/specs/organisms/zone-rows.json | 340 + xgen/specs/organisms/zone-table.json | 476 + xgen/specs/parts/avatar.json | 125 + xgen/specs/parts/badge-square.json | 76 + xgen/specs/parts/bar-chart.json | 276 + xgen/specs/parts/bulk-bar.json | 115 + xgen/specs/parts/drop-zone.json | 66 + xgen/specs/parts/empty-state.json | 113 + xgen/specs/parts/field.json | 120 + xgen/specs/parts/filter-builder.json | 88 + xgen/specs/parts/logo-mark.json | 32 + xgen/specs/parts/logo-sidebar.json | 143 + xgen/specs/parts/meter-row.json | 238 + xgen/specs/parts/notice.json | 62 + xgen/specs/parts/page-header.json | 113 + xgen/specs/parts/pager.json | 422 + xgen/specs/parts/panel.json | 189 + xgen/specs/parts/pill.json | 103 + xgen/specs/parts/range-field.json | 350 + xgen/specs/parts/rating.json | 139 + xgen/specs/parts/region.json | 55 + xgen/specs/parts/search-field.json | 99 + xgen/specs/parts/stat-tile.json | 227 + xgen/specs/parts/table-toolbar.json | 77 + xgen/specs/parts/timeline.json | 243 + xgen/specs/patterns/action-group.json | 121 + xgen/specs/patterns/animated-backdrop.json | 33 + xgen/specs/patterns/backdrop.json | 66 + xgen/specs/patterns/carousel.json | 64 + xgen/specs/patterns/code-editor.json | 45 + xgen/specs/patterns/code-window.json | 187 + xgen/specs/patterns/count-up.json | 44 + xgen/specs/patterns/drawer.json | 63 + xgen/specs/patterns/dropdown-item.json | 154 + xgen/specs/patterns/dropdown-menu.json | 87 + xgen/specs/patterns/editor-tab.json | 185 + xgen/specs/patterns/file-tree-item.json | 228 + xgen/specs/patterns/file-tree.json | 51 + xgen/specs/patterns/icon-tab.json | 129 + xgen/specs/patterns/icon-tabs.json | 51 + xgen/specs/patterns/marquee.json | 44 + xgen/specs/patterns/media-frame.json | 202 + xgen/specs/patterns/nav-item-row.json | 121 + xgen/specs/patterns/nav-item.json | 411 + xgen/specs/patterns/popover.json | 70 + xgen/specs/patterns/prompt-input.json | 63 + xgen/specs/patterns/scroll-spy.json | 48 + xgen/specs/patterns/section-box.json | 48 + xgen/specs/patterns/section-column.json | 114 + xgen/specs/patterns/section-frame.json | 703 ++ xgen/specs/patterns/section-head.json | 224 + xgen/specs/patterns/section-header.json | 464 + xgen/specs/patterns/select-menu.json | 73 + xgen/specs/patterns/sidebar-panel.json | 94 + xgen/specs/patterns/smartbox.json | 108 + xgen/specs/patterns/sortable-list.json | 56 + xgen/specs/patterns/switcher-item.json | 166 + xgen/specs/patterns/switcher.json | 115 + xgen/specs/patterns/toaster.json | 68 + xgen/specs/patterns/typing-text.json | 38 + xgen/specs/patterns/video-embed.json | 66 + xgen/specs/presets/defaults.json | 81 + xgen/specs/recipes/avatar.variants.json | 21 + xgen/specs/recipes/badge-square.variants.json | 18 + .../specs/recipes/dropdown-menu.variants.json | 18 + .../recipes/file-tree-item.variants.json | 17 + xgen/specs/recipes/icon-tab.variants.json | 18 + xgen/specs/recipes/logo-sidebar.variants.json | 17 + xgen/specs/recipes/media-frame.variants.json | 21 + .../recipes/nav-item-content.variants.json | 26 + xgen/specs/recipes/nav-item.variants.json | 26 + .../recipes/section-column.variants.json | 26 + .../specs/recipes/section-frame.variants.json | 33 + xgen/specs/recipes/section-head.variants.json | 17 + .../specs/recipes/sidebar-panel.variants.json | 17 + xgen/specs/recipes/smartbox.variants.json | 18 + .../specs/recipes/switcher-item.variants.json | 47 + xgen/specs/recipes/switcher.variants.json | 25 + xgen/specs/screens/blocks.json | 19 + xgen/specs/screens/catalog.json | 1156 ++ xgen/specs/screens/plans.json | 1399 +++ xgen/specs/screens/site.json | 130 + xgen/specs/screens/skins.json | 101 + xgen/specs/screens/theme-account-portal.json | 370 + xgen/specs/screens/theme-commerce-shop.json | 370 + xgen/specs/screens/theme-content-blog.json | 250 + .../screens/theme-dashboard-console.json | 303 + .../screens/theme-marketing-landing.json | 395 + .../screens/theme-marketing-pricing.json | 235 + .../screens/theme-marketing-product.json | 255 + xgen/specs/screens/theme-onboarding-flow.json | 209 + xgen/specs/screens/theme-promo-campaign.json | 237 + xgen/specs/screens/theme-support-center.json | 232 + xgen/specs/ui/alert.json | 165 + xgen/specs/ui/alert.variants.json | 19 + xgen/specs/ui/badge.json | 156 + xgen/specs/ui/badge.variants.json | 26 + xgen/specs/ui/block.json | 140 + xgen/specs/ui/block.variants.json | 7 + xgen/specs/ui/box.json | 103 + xgen/specs/ui/box.variants.json | 7 + xgen/specs/ui/breadcrumb.json | 340 + xgen/specs/ui/button-plain.json | 203 + xgen/specs/ui/button-plain.variants.json | 7 + xgen/specs/ui/button.json | 589 + xgen/specs/ui/button.variants.json | 60 + xgen/specs/ui/card.json | 431 + xgen/specs/ui/card.variants.json | 19 + xgen/specs/ui/checkbox.json | 257 + xgen/specs/ui/checkbox.variants.json | 23 + xgen/specs/ui/container.json | 105 + xgen/specs/ui/container.variants.json | 7 + xgen/specs/ui/controls.json | 784 ++ xgen/specs/ui/dialog.json | 221 + xgen/specs/ui/dialog.variants.json | 26 + xgen/specs/ui/disclosure.json | 241 + xgen/specs/ui/disclosure.variants.json | 18 + xgen/specs/ui/fieldset.variants.json | 24 + xgen/specs/ui/form-description.variants.json | 7 + xgen/specs/ui/form-item.variants.json | 7 + xgen/specs/ui/form-message.variants.json | 7 + xgen/specs/ui/form.json | 408 + xgen/specs/ui/form.variants.json | 7 + xgen/specs/ui/grid.json | 327 + xgen/specs/ui/grid.variants.json | 7 + xgen/specs/ui/group.json | 127 + xgen/specs/ui/group.variants.json | 39 + xgen/specs/ui/icon.json | 605 + xgen/specs/ui/icon.variants.json | 25 + xgen/specs/ui/iconbadge.json | 105 + xgen/specs/ui/iconbadge.variants.json | 30 + xgen/specs/ui/image.json | 485 + xgen/specs/ui/image.variants.json | 58 + xgen/specs/ui/inline.json | 88 + xgen/specs/ui/inline.variants.json | 7 + xgen/specs/ui/input.json | 333 + xgen/specs/ui/input.variants.json | 24 + xgen/specs/ui/label.json | 104 + xgen/specs/ui/label.variants.json | 7 + xgen/specs/ui/legend.variants.json | 23 + xgen/specs/ui/linebreak.json | 103 + xgen/specs/ui/linebreak.variants.json | 7 + xgen/specs/ui/link-plain.json | 339 + xgen/specs/ui/link-plain.variants.json | 7 + xgen/specs/ui/link.json | 366 + xgen/specs/ui/link.variants.json | 27 + xgen/specs/ui/list.json | 221 + xgen/specs/ui/list.variants.json | 7 + xgen/specs/ui/lucide-icon.json | 114 + xgen/specs/ui/lucide-icon.variants.json | 7 + xgen/specs/ui/meter.variants.json | 24 + xgen/specs/ui/progress.variants.json | 24 + xgen/specs/ui/radio.json | 248 + xgen/specs/ui/radio.variants.json | 22 + xgen/specs/ui/range.json | 239 + xgen/specs/ui/range.variants.json | 7 + xgen/specs/ui/select.json | 510 + xgen/specs/ui/select.variants.json | 24 + xgen/specs/ui/separator.json | 164 + xgen/specs/ui/separator.variants.json | 23 + xgen/specs/ui/skeleton.json | 112 + xgen/specs/ui/skeleton.variants.json | 17 + xgen/specs/ui/stack.json | 127 + xgen/specs/ui/stack.variants.json | 39 + xgen/specs/ui/summary.variants.json | 25 + xgen/specs/ui/switch.json | 257 + xgen/specs/ui/switch.variants.json | 16 + xgen/specs/ui/table-cell.variants.json | 7 + xgen/specs/ui/table-head-cell.variants.json | 7 + xgen/specs/ui/table.json | 851 ++ xgen/specs/ui/table.variants.json | 7 + xgen/specs/ui/text.json | 129 + xgen/specs/ui/text.variants.json | 33 + xgen/specs/ui/textarea.json | 285 + xgen/specs/ui/textarea.variants.json | 24 + xgen/specs/ui/title.json | 138 + xgen/specs/ui/title.variants.json | 32 + xgen/tsconfig.json | 6 + 2350 files changed, 179548 insertions(+), 96751 deletions(-) create mode 100755 .githooks/pre-push delete mode 100644 .project/README.md delete mode 100644 .project/plan/jinja2-runtime.md delete mode 100644 .project/plan/rails-erb-runtime.md delete mode 100644 .project/progress.md delete mode 100644 .project/roadmap.md create mode 100644 .ui8px/gate.json create mode 100644 .ui8px/policy/allowed.json create mode 100644 .ui8px/policy/denied.json create mode 100644 .ui8px/policy/groups.json create mode 100644 .ui8px/policy/patterns.json create mode 100644 .ui8px/policy/scopes.json delete mode 100644 README.md delete mode 100644 bricks/_dsl.ts delete mode 100644 bricks/alert/alert.def.ts delete mode 100644 bricks/alert/alert.variants.json delete mode 100644 bricks/badge/badge.data.json delete mode 100644 bricks/badge/badge.def.ts delete mode 100644 bricks/badge/badge.variants.json delete mode 100644 bricks/block/block.data.json delete mode 100644 bricks/block/block.def.ts delete mode 100644 bricks/block/block.variants.json delete mode 100644 bricks/box/box.data.json delete mode 100644 bricks/box/box.def.ts delete mode 100644 bricks/box/box.variants.json delete mode 100644 bricks/breadcrumb/breadcrumb.def.ts delete mode 100644 bricks/button/button.data.json delete mode 100644 bricks/button/button.def.ts delete mode 100644 bricks/button/button.variants.json delete mode 100644 bricks/card/card.def.ts delete mode 100644 bricks/card/card.variants.json delete mode 100644 bricks/checkbox/checkbox.data.json delete mode 100644 bricks/checkbox/checkbox.def.ts delete mode 100644 bricks/checkbox/checkbox.variants.json delete mode 100644 bricks/container/container.data.json delete mode 100644 bricks/container/container.def.ts delete mode 100644 bricks/container/container.variants.json delete mode 100644 bricks/dialog/dialog.data.json delete mode 100644 bricks/dialog/dialog.def.ts delete mode 100644 bricks/dialog/dialog.variants.json delete mode 100644 bricks/disclosure/disclosure.data.json delete mode 100644 bricks/disclosure/disclosure.def.ts delete mode 100644 bricks/disclosure/disclosure.variants.json delete mode 100644 bricks/disclosure/summary.variants.json delete mode 100644 bricks/form/controls.data.json delete mode 100644 bricks/form/controls.def.ts delete mode 100644 bricks/form/fieldset.variants.json delete mode 100644 bricks/form/form-description.variants.json delete mode 100644 bricks/form/form-item.variants.json delete mode 100644 bricks/form/form-message.variants.json delete mode 100644 bricks/form/form.data.json delete mode 100644 bricks/form/form.def.ts delete mode 100644 bricks/form/form.variants.json delete mode 100644 bricks/form/legend.variants.json delete mode 100644 bricks/form/meter.variants.json delete mode 100644 bricks/form/progress.variants.json delete mode 100644 bricks/grid/grid.data.json delete mode 100644 bricks/grid/grid.def.ts delete mode 100644 bricks/grid/grid.variants.json delete mode 100644 bricks/group/group.data.json delete mode 100644 bricks/group/group.def.ts delete mode 100644 bricks/group/group.variants.json delete mode 100644 bricks/icon/icon.data.json delete mode 100644 bricks/icon/icon.def.ts delete mode 100644 bricks/icon/icon.variants.json delete mode 100644 bricks/iconbadge/iconbadge.def.ts delete mode 100644 bricks/iconbadge/iconbadge.variants.json delete mode 100644 bricks/image/image.data.json delete mode 100644 bricks/image/image.def.ts delete mode 100644 bricks/image/image.variants.json delete mode 100644 bricks/index.ts delete mode 100644 bricks/inline/inline.data.json delete mode 100644 bricks/inline/inline.def.ts delete mode 100644 bricks/inline/inline.variants.json delete mode 100644 bricks/input/input.data.json delete mode 100644 bricks/input/input.def.ts delete mode 100644 bricks/input/input.variants.json delete mode 100644 bricks/label/label.data.json delete mode 100644 bricks/label/label.def.ts delete mode 100644 bricks/label/label.variants.json delete mode 100644 bricks/linebreak/linebreak.data.json delete mode 100644 bricks/linebreak/linebreak.def.ts delete mode 100644 bricks/linebreak/linebreak.variants.json delete mode 100644 bricks/link/link.data.json delete mode 100644 bricks/link/link.def.ts delete mode 100644 bricks/link/link.variants.json delete mode 100644 bricks/list/list.data.json delete mode 100644 bricks/list/list.def.ts delete mode 100644 bricks/list/list.variants.json delete mode 100644 bricks/radio/radio.data.json delete mode 100644 bricks/radio/radio.def.ts delete mode 100644 bricks/radio/radio.variants.json delete mode 100644 bricks/select/select.data.json delete mode 100644 bricks/select/select.def.ts delete mode 100644 bricks/select/select.variants.json delete mode 100644 bricks/separator/separator.data.json delete mode 100644 bricks/separator/separator.def.ts delete mode 100644 bricks/separator/separator.variants.json delete mode 100644 bricks/stack/stack.data.json delete mode 100644 bricks/stack/stack.def.ts delete mode 100644 bricks/stack/stack.variants.json delete mode 100644 bricks/switch/switch.data.json delete mode 100644 bricks/switch/switch.def.ts delete mode 100644 bricks/switch/switch.variants.json delete mode 100644 bricks/table/table.data.json delete mode 100644 bricks/table/table.def.ts delete mode 100644 bricks/table/table.variants.json delete mode 100644 bricks/text/text.data.json delete mode 100644 bricks/text/text.def.ts delete mode 100644 bricks/text/text.variants.json delete mode 100644 bricks/textarea/textarea.data.json delete mode 100644 bricks/textarea/textarea.def.ts delete mode 100644 bricks/textarea/textarea.variants.json delete mode 100644 bricks/title/title.data.json delete mode 100644 bricks/title/title.def.ts delete mode 100644 bricks/title/title.variants.json delete mode 100644 docs/README.md delete mode 100644 docs/architecture.md delete mode 100644 docs/bricks.md delete mode 100644 docs/cli-and-scripts.md delete mode 100644 docs/contract.md delete mode 100644 docs/examples.md delete mode 100644 docs/getting-started.md delete mode 100644 docs/latte-bundle.md delete mode 100644 docs/overview.md delete mode 100644 docs/php-complex-parts.md delete mode 100644 docs/runtimes.md delete mode 100644 docs/testing-and-ci.md delete mode 100644 examples/README.md delete mode 100644 examples/bun.lock delete mode 100644 examples/data/welcome.json delete mode 100644 examples/dist/static/css/app.css delete mode 100644 examples/dist/static/css/input.css delete mode 100644 examples/dist/static/css/tokens.css delete mode 100644 examples/html/about/index.html delete mode 100644 examples/html/index.html delete mode 100644 examples/html/static/css/app.css delete mode 100644 examples/html/static/css/input.css delete mode 100644 examples/html/static/css/tokens.css delete mode 100644 examples/latte/server.php delete mode 100644 examples/latte/templates/page.latte delete mode 100644 examples/latte/templates/welcome.latte delete mode 100644 examples/package.json delete mode 100644 examples/react/dist/assets/index-TdQjjyEy.js delete mode 100644 examples/react/dist/index.html delete mode 100644 examples/react/index.html delete mode 100644 examples/react/script/generate-static.tsx delete mode 100644 examples/react/src/Welcome.tsx delete mode 100644 examples/react/src/main.tsx delete mode 100644 examples/react/tsconfig.json delete mode 100644 examples/react/vite.config.ts delete mode 100644 examples/scripts/composer-install.mjs delete mode 100644 examples/scripts/php-server.mjs delete mode 100644 examples/scripts/resolve-php.mjs delete mode 100644 examples/shared/vite-static.ts delete mode 100644 examples/solid/index.html delete mode 100644 examples/solid/src/Welcome.tsx delete mode 100644 examples/solid/src/main.tsx delete mode 100644 examples/solid/tsconfig.json delete mode 100644 examples/solid/vite.config.ts delete mode 100644 examples/svelte/dist/assets/index-Bluwn2uY.js delete mode 100644 examples/svelte/dist/index.html delete mode 100644 examples/svelte/index.html delete mode 100644 examples/svelte/src/Welcome.svelte delete mode 100644 examples/svelte/src/main.ts delete mode 100644 examples/svelte/svelte.config.js delete mode 100644 examples/svelte/tsconfig.json delete mode 100644 examples/svelte/vite.config.ts delete mode 100644 examples/templ/cmd/server/main.go delete mode 100644 examples/templ/go.mod delete mode 100644 examples/templ/go.sum delete mode 100644 examples/templ/page.templ delete mode 100644 examples/templ/page_templ.go delete mode 100644 examples/templ/welcome.templ delete mode 100644 examples/templ/welcome_templ.go delete mode 100644 examples/twig/server.php delete mode 100644 examples/twig/templates/page.html.twig delete mode 100644 examples/twig/templates/welcome.html.twig delete mode 100644 examples/vue/dist/assets/index-CdiGC986.js delete mode 100644 examples/vue/dist/index.html delete mode 100644 examples/vue/index.html delete mode 100644 examples/vue/src/Welcome.vue delete mode 100644 examples/vue/src/main.ts delete mode 100644 examples/vue/tsconfig.json delete mode 100644 examples/vue/vite.config.ts delete mode 100644 examples/web/static/css/app.css delete mode 100644 examples/web/static/css/input.css delete mode 100644 examples/web/static/css/tokens.css delete mode 100644 generated/cmd/parity-latte/main.php delete mode 100644 generated/cmd/parity-twig/main.php delete mode 100644 generated/cmd/parity/main.go delete mode 100644 generated/composer.json delete mode 100644 generated/composer.lock delete mode 100644 generated/go.mod delete mode 100644 generated/go.sum delete mode 100644 generated/php/UI8Kit/Classes.php delete mode 100644 generated/php/UI8Kit/Rt.php delete mode 100644 generated/php/UI8Kit/TwigExtension.php delete mode 100644 generated/php/vendor/autoload.php delete mode 100644 generated/php/vendor/bin/latte-lint delete mode 100644 generated/php/vendor/bin/latte-lint.bat delete mode 100644 generated/php/vendor/composer/ClassLoader.php delete mode 100644 generated/php/vendor/composer/InstalledVersions.php delete mode 100644 generated/php/vendor/composer/LICENSE delete mode 100644 generated/php/vendor/composer/autoload_classmap.php delete mode 100644 generated/php/vendor/composer/autoload_files.php delete mode 100644 generated/php/vendor/composer/autoload_namespaces.php delete mode 100644 generated/php/vendor/composer/autoload_psr4.php delete mode 100644 generated/php/vendor/composer/autoload_real.php delete mode 100644 generated/php/vendor/composer/autoload_static.php delete mode 100644 generated/php/vendor/composer/installed.json delete mode 100644 generated/php/vendor/composer/installed.php delete mode 100644 generated/php/vendor/composer/platform_check.php delete mode 100644 generated/php/vendor/latte/latte/bin/latte-lint delete mode 100644 generated/php/vendor/latte/latte/composer.json delete mode 100644 generated/php/vendor/latte/latte/license.md delete mode 100644 generated/php/vendor/latte/latte/readme.md delete mode 100644 generated/php/vendor/latte/latte/src/Bridges/Tracy/BlueScreenPanel.php delete mode 100644 generated/php/vendor/latte/latte/src/Bridges/Tracy/LattePanel.php delete mode 100644 generated/php/vendor/latte/latte/src/Bridges/Tracy/TracyExtension.php delete mode 100644 generated/php/vendor/latte/latte/src/Bridges/Tracy/dist/panel.phtml delete mode 100644 generated/php/vendor/latte/latte/src/Bridges/Tracy/dist/tab.phtml delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Compiler/Block.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Compiler/Dedent.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Compiler/Escaper.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Compiler/Node.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Compiler/NodeHelpers.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Compiler/NodeTraverser.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Compiler/Nodes/AreaNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Compiler/Nodes/AuxiliaryNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Compiler/Nodes/FragmentNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Compiler/Nodes/Html/AttributeNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Compiler/Nodes/Html/BogusTagNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Compiler/Nodes/Html/CommentNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Compiler/Nodes/Html/ElementNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Compiler/Nodes/Html/ExpressionAttributeNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Compiler/Nodes/Html/TagNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Compiler/Nodes/NopNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/ArgumentNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/ArrayItemNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/ClosureUseNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/ComplexTypeNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/ArrayAccessNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/ArrayNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/AssignNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/AssignOpNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/AuxiliaryNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/BinaryOpNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/CastNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/ClassConstantFetchNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/CloneNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/ClosureNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/ConstantFetchNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/EmptyNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/FilterCallNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/FunctionCallNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/InNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/InstanceofNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/IssetNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/MatchNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/MethodCallNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/NewNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/PostOpNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/PreOpNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/PropertyFetchNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/StaticMethodCallNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/StaticPropertyFetchNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/TemporaryNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/TernaryNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/UnaryOpNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/VariableNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/ExpressionNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/FilterNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/IdentifierNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/InterpolatedStringPartNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/IntersectionTypeNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/ListItemNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/ListNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/MatchArmNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/ModifierNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/NameNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/NullableTypeNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/OperatorNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/ParameterNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Scalar/BooleanNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Scalar/FloatNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Scalar/IntegerNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Scalar/InterpolatedStringNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Scalar/NullNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Scalar/StringNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/ScalarNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/SuperiorTypeNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/UnionTypeNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/VarLikeIdentifierNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/VariadicPlaceholderNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Compiler/Nodes/PrintNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Compiler/Nodes/StatementNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Compiler/Nodes/TemplateNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Compiler/Nodes/TextNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Compiler/PhpHelpers.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Compiler/Position.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Compiler/PrintContext.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Compiler/Range.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Compiler/Tag.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Compiler/TagLexer.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Compiler/TagParser.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Compiler/TagParserData.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Compiler/TemplateGenerator.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Compiler/TemplateLexer.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Compiler/TemplateParser.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Compiler/TemplateParserHtml.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Compiler/Token.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Compiler/TokenStream.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/ContentType.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Engine.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Essential/AuxiliaryIterator.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Essential/Blueprint.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Essential/CachingIterator.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Essential/CoreExtension.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Essential/Filters.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/BlockNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/CaptureNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/ContentTypeNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/CustomFunctionCallNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/DebugbreakNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/DefineNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/DoNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/DumpNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/EmbedNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/ExtendsNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/FirstLastSepNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/ForNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/ForeachNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/IfChangedNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/IfContentNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/IfNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/ImportNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/IncludeBlockNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/IncludeFileNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/IterateWhileNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/JumpNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/NAttrNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/NClassNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/NElseNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/NTagNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/ParametersNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/RawPhpNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/RollbackNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/SpacelessNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/SwitchNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/TemplatePrintNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/TemplateTypeNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/TraceNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/TranslateNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/TryNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/VarNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/VarPrintNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/VarTypeNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/WhileNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Essential/Passes.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Essential/RawPhpExtension.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Essential/RollbackException.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Essential/Tracer.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Essential/TranslatorExtension.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Extension.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Helpers.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Loader.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Loaders/FileLoader.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Loaders/StringLoader.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Policy.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Runtime/Block.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Runtime/Cache.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Runtime/FilterExecutor.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Runtime/FilterInfo.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Runtime/FunctionExecutor.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Runtime/Helpers.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Runtime/Html.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Runtime/HtmlHelpers.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Runtime/HtmlStringable.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Runtime/Template.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Runtime/XmlHelpers.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Sandbox/Nodes/FunctionCallNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Sandbox/Nodes/MethodCallNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Sandbox/Nodes/PropertyFetchNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Sandbox/Nodes/SandboxNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Sandbox/Nodes/StaticMethodCallNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Sandbox/Nodes/StaticPropertyFetchNode.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Sandbox/RuntimeChecker.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Sandbox/SandboxExtension.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/Sandbox/SecurityPolicy.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/attributes.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/enums.php delete mode 100644 generated/php/vendor/latte/latte/src/Latte/exceptions.php delete mode 100644 generated/php/vendor/latte/latte/src/Tools/Linter.php delete mode 100644 generated/php/vendor/latte/latte/src/Tools/LinterExtension.php delete mode 100644 generated/php/vendor/symfony/deprecation-contracts/CHANGELOG.md delete mode 100644 generated/php/vendor/symfony/deprecation-contracts/LICENSE delete mode 100644 generated/php/vendor/symfony/deprecation-contracts/README.md delete mode 100644 generated/php/vendor/symfony/deprecation-contracts/composer.json delete mode 100644 generated/php/vendor/symfony/deprecation-contracts/function.php delete mode 100644 generated/php/vendor/symfony/polyfill-ctype/Ctype.php delete mode 100644 generated/php/vendor/symfony/polyfill-ctype/LICENSE delete mode 100644 generated/php/vendor/symfony/polyfill-ctype/README.md delete mode 100644 generated/php/vendor/symfony/polyfill-ctype/bootstrap.php delete mode 100644 generated/php/vendor/symfony/polyfill-ctype/bootstrap80.php delete mode 100644 generated/php/vendor/symfony/polyfill-ctype/composer.json delete mode 100644 generated/php/vendor/symfony/polyfill-mbstring/LICENSE delete mode 100644 generated/php/vendor/symfony/polyfill-mbstring/Mbstring.php delete mode 100644 generated/php/vendor/symfony/polyfill-mbstring/README.md delete mode 100644 generated/php/vendor/symfony/polyfill-mbstring/Resources/unidata/caseFolding.php delete mode 100644 generated/php/vendor/symfony/polyfill-mbstring/Resources/unidata/lowerCase.php delete mode 100644 generated/php/vendor/symfony/polyfill-mbstring/Resources/unidata/titleCaseRegexp.php delete mode 100644 generated/php/vendor/symfony/polyfill-mbstring/Resources/unidata/upperCase.php delete mode 100644 generated/php/vendor/symfony/polyfill-mbstring/bootstrap.php delete mode 100644 generated/php/vendor/symfony/polyfill-mbstring/bootstrap72.php delete mode 100644 generated/php/vendor/symfony/polyfill-mbstring/bootstrap80.php delete mode 100644 generated/php/vendor/symfony/polyfill-mbstring/composer.json delete mode 100644 generated/php/vendor/twig/twig/CHANGELOG delete mode 100644 generated/php/vendor/twig/twig/LICENSE delete mode 100644 generated/php/vendor/twig/twig/README.rst delete mode 100644 generated/php/vendor/twig/twig/composer.json delete mode 100644 generated/php/vendor/twig/twig/src/AbstractTwigCallable.php delete mode 100644 generated/php/vendor/twig/twig/src/Attribute/AsTwigFilter.php delete mode 100644 generated/php/vendor/twig/twig/src/Attribute/AsTwigFunction.php delete mode 100644 generated/php/vendor/twig/twig/src/Attribute/AsTwigTest.php delete mode 100644 generated/php/vendor/twig/twig/src/Attribute/FirstClassTwigCallableReady.php delete mode 100644 generated/php/vendor/twig/twig/src/Attribute/YieldReady.php delete mode 100644 generated/php/vendor/twig/twig/src/Cache/CacheInterface.php delete mode 100644 generated/php/vendor/twig/twig/src/Cache/ChainCache.php delete mode 100644 generated/php/vendor/twig/twig/src/Cache/FilesystemCache.php delete mode 100644 generated/php/vendor/twig/twig/src/Cache/NullCache.php delete mode 100644 generated/php/vendor/twig/twig/src/Cache/ReadOnlyFilesystemCache.php delete mode 100644 generated/php/vendor/twig/twig/src/Cache/RemovableCacheInterface.php delete mode 100644 generated/php/vendor/twig/twig/src/Compiler.php delete mode 100644 generated/php/vendor/twig/twig/src/DeprecatedCallableInfo.php delete mode 100644 generated/php/vendor/twig/twig/src/Environment.php delete mode 100644 generated/php/vendor/twig/twig/src/Error/Error.php delete mode 100644 generated/php/vendor/twig/twig/src/Error/LoaderError.php delete mode 100644 generated/php/vendor/twig/twig/src/Error/RuntimeError.php delete mode 100644 generated/php/vendor/twig/twig/src/Error/SyntaxError.php delete mode 100644 generated/php/vendor/twig/twig/src/ExpressionParser.php delete mode 100644 generated/php/vendor/twig/twig/src/ExpressionParser/AbstractExpressionParser.php delete mode 100644 generated/php/vendor/twig/twig/src/ExpressionParser/ExpressionParserDescriptionInterface.php delete mode 100644 generated/php/vendor/twig/twig/src/ExpressionParser/ExpressionParserInterface.php delete mode 100644 generated/php/vendor/twig/twig/src/ExpressionParser/ExpressionParserType.php delete mode 100644 generated/php/vendor/twig/twig/src/ExpressionParser/ExpressionParsers.php delete mode 100644 generated/php/vendor/twig/twig/src/ExpressionParser/Infix/ArgumentsTrait.php delete mode 100644 generated/php/vendor/twig/twig/src/ExpressionParser/Infix/ArrowExpressionParser.php delete mode 100644 generated/php/vendor/twig/twig/src/ExpressionParser/Infix/AssignmentExpressionParser.php delete mode 100644 generated/php/vendor/twig/twig/src/ExpressionParser/Infix/BinaryOperatorExpressionParser.php delete mode 100644 generated/php/vendor/twig/twig/src/ExpressionParser/Infix/ConditionalTernaryExpressionParser.php delete mode 100644 generated/php/vendor/twig/twig/src/ExpressionParser/Infix/DotExpressionParser.php delete mode 100644 generated/php/vendor/twig/twig/src/ExpressionParser/Infix/FilterExpressionParser.php delete mode 100644 generated/php/vendor/twig/twig/src/ExpressionParser/Infix/FunctionExpressionParser.php delete mode 100644 generated/php/vendor/twig/twig/src/ExpressionParser/Infix/IsExpressionParser.php delete mode 100644 generated/php/vendor/twig/twig/src/ExpressionParser/Infix/IsNotExpressionParser.php delete mode 100644 generated/php/vendor/twig/twig/src/ExpressionParser/Infix/SquareBracketExpressionParser.php delete mode 100644 generated/php/vendor/twig/twig/src/ExpressionParser/InfixAssociativity.php delete mode 100644 generated/php/vendor/twig/twig/src/ExpressionParser/InfixExpressionParserInterface.php delete mode 100644 generated/php/vendor/twig/twig/src/ExpressionParser/PrecedenceChange.php delete mode 100644 generated/php/vendor/twig/twig/src/ExpressionParser/Prefix/GroupingExpressionParser.php delete mode 100644 generated/php/vendor/twig/twig/src/ExpressionParser/Prefix/LiteralExpressionParser.php delete mode 100644 generated/php/vendor/twig/twig/src/ExpressionParser/Prefix/UnaryOperatorExpressionParser.php delete mode 100644 generated/php/vendor/twig/twig/src/ExpressionParser/PrefixExpressionParserInterface.php delete mode 100644 generated/php/vendor/twig/twig/src/Extension/AbstractExtension.php delete mode 100644 generated/php/vendor/twig/twig/src/Extension/AttributeExtension.php delete mode 100644 generated/php/vendor/twig/twig/src/Extension/CoreExtension.php delete mode 100644 generated/php/vendor/twig/twig/src/Extension/DebugExtension.php delete mode 100644 generated/php/vendor/twig/twig/src/Extension/EscaperExtension.php delete mode 100644 generated/php/vendor/twig/twig/src/Extension/ExtensionInterface.php delete mode 100644 generated/php/vendor/twig/twig/src/Extension/GlobalsInterface.php delete mode 100644 generated/php/vendor/twig/twig/src/Extension/LastModifiedExtensionInterface.php delete mode 100644 generated/php/vendor/twig/twig/src/Extension/OptimizerExtension.php delete mode 100644 generated/php/vendor/twig/twig/src/Extension/ProfilerExtension.php delete mode 100644 generated/php/vendor/twig/twig/src/Extension/RuntimeExtensionInterface.php delete mode 100644 generated/php/vendor/twig/twig/src/Extension/SandboxExtension.php delete mode 100644 generated/php/vendor/twig/twig/src/Extension/StagingExtension.php delete mode 100644 generated/php/vendor/twig/twig/src/Extension/StringLoaderExtension.php delete mode 100644 generated/php/vendor/twig/twig/src/Extension/YieldNotReadyExtension.php delete mode 100644 generated/php/vendor/twig/twig/src/ExtensionSet.php delete mode 100644 generated/php/vendor/twig/twig/src/FileExtensionEscapingStrategy.php delete mode 100644 generated/php/vendor/twig/twig/src/Lexer.php delete mode 100644 generated/php/vendor/twig/twig/src/Loader/ArrayLoader.php delete mode 100644 generated/php/vendor/twig/twig/src/Loader/ChainLoader.php delete mode 100644 generated/php/vendor/twig/twig/src/Loader/FilesystemLoader.php delete mode 100644 generated/php/vendor/twig/twig/src/Loader/LoaderInterface.php delete mode 100644 generated/php/vendor/twig/twig/src/Markup.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/AutoEscapeNode.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/BlockNode.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/BlockReferenceNode.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/BodyNode.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/CaptureNode.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/CheckSecurityCallNode.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/CheckSecurityNode.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/CheckToStringNode.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/CoercesChildrenToStringInterface.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/ConfigNode.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/DeprecatedNode.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/DoNode.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/EmbedNode.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/EmptyNode.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/Expression/AbstractExpression.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/Expression/ArrayExpression.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/Expression/ArrowFunctionExpression.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/Expression/AssignNameExpression.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/Expression/Binary/AbstractBinary.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/Expression/Binary/AddBinary.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/Expression/Binary/AndBinary.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/Expression/Binary/BinaryInterface.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/Expression/Binary/BitwiseAndBinary.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/Expression/Binary/BitwiseOrBinary.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/Expression/Binary/BitwiseXorBinary.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/Expression/Binary/ConcatBinary.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/Expression/Binary/DivBinary.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/Expression/Binary/ElvisBinary.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/Expression/Binary/EndsWithBinary.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/Expression/Binary/EqualBinary.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/Expression/Binary/FloorDivBinary.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/Expression/Binary/GreaterBinary.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/Expression/Binary/GreaterEqualBinary.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/Expression/Binary/HasEveryBinary.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/Expression/Binary/HasSomeBinary.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/Expression/Binary/InBinary.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/Expression/Binary/LessBinary.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/Expression/Binary/LessEqualBinary.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/Expression/Binary/MatchesBinary.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/Expression/Binary/ModBinary.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/Expression/Binary/MulBinary.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/Expression/Binary/NotEqualBinary.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/Expression/Binary/NotInBinary.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/Expression/Binary/NotSameAsBinary.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/Expression/Binary/NullCoalesceBinary.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/Expression/Binary/ObjectDestructuringSetBinary.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/Expression/Binary/OrBinary.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/Expression/Binary/PowerBinary.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/Expression/Binary/RangeBinary.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/Expression/Binary/SameAsBinary.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/Expression/Binary/SequenceDestructuringSetBinary.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/Expression/Binary/SetBinary.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/Expression/Binary/SpaceshipBinary.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/Expression/Binary/StartsWithBinary.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/Expression/Binary/SubBinary.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/Expression/Binary/XorBinary.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/Expression/BlockReferenceExpression.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/Expression/CallExpression.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/Expression/ConditionalExpression.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/Expression/ConstantExpression.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/Expression/EmptyExpression.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/Expression/Filter/DefaultFilter.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/Expression/Filter/RawFilter.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/Expression/FilterExpression.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/Expression/FunctionExpression.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/Expression/FunctionNode/EnumCasesFunction.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/Expression/FunctionNode/EnumFunction.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/Expression/GetAttrExpression.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/Expression/InlinePrint.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/Expression/ListExpression.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/Expression/MacroReferenceExpression.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/Expression/MethodCallExpression.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/Expression/NameExpression.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/Expression/NullCoalesceExpression.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/Expression/OperatorEscapeInterface.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/Expression/ParentExpression.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/Expression/ReturnArrayInterface.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/Expression/ReturnBoolInterface.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/Expression/ReturnNumberInterface.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/Expression/ReturnPrimitiveTypeInterface.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/Expression/ReturnStringInterface.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/Expression/SupportDefinedTestDeprecationTrait.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/Expression/SupportDefinedTestInterface.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/Expression/SupportDefinedTestTrait.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/Expression/TempNameExpression.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/Expression/Ternary/ConditionalTernary.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/Expression/Test/ConstantTest.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/Expression/Test/DefinedTest.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/Expression/Test/DivisiblebyTest.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/Expression/Test/EvenTest.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/Expression/Test/NullTest.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/Expression/Test/OddTest.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/Expression/Test/SameasTest.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/Expression/Test/TrueTest.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/Expression/TestExpression.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/Expression/Unary/AbstractUnary.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/Expression/Unary/NegUnary.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/Expression/Unary/NotUnary.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/Expression/Unary/PosUnary.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/Expression/Unary/SpreadUnary.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/Expression/Unary/StringCastUnary.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/Expression/Unary/UnaryInterface.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/Expression/Variable/AssignContextVariable.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/Expression/Variable/AssignTemplateVariable.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/Expression/Variable/ContextVariable.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/Expression/Variable/LocalVariable.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/Expression/Variable/TemplateVariable.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/Expression/VariadicExpression.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/FlushNode.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/ForElseNode.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/ForLoopNode.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/ForNode.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/IfNode.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/ImportNode.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/IncludeNode.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/MacroNode.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/ModuleNode.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/NameDeprecation.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/Node.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/NodeCaptureInterface.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/NodeOutputInterface.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/Nodes.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/PrintNode.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/SandboxNode.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/SetNode.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/TextNode.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/TypesNode.php delete mode 100644 generated/php/vendor/twig/twig/src/Node/WithNode.php delete mode 100644 generated/php/vendor/twig/twig/src/NodeTraverser.php delete mode 100644 generated/php/vendor/twig/twig/src/NodeVisitor/AbstractNodeVisitor.php delete mode 100644 generated/php/vendor/twig/twig/src/NodeVisitor/CorrectnessNodeVisitor.php delete mode 100644 generated/php/vendor/twig/twig/src/NodeVisitor/EscaperNodeVisitor.php delete mode 100644 generated/php/vendor/twig/twig/src/NodeVisitor/NodeVisitorInterface.php delete mode 100644 generated/php/vendor/twig/twig/src/NodeVisitor/OptimizerNodeVisitor.php delete mode 100644 generated/php/vendor/twig/twig/src/NodeVisitor/SafeAnalysisNodeVisitor.php delete mode 100644 generated/php/vendor/twig/twig/src/NodeVisitor/SandboxNodeVisitor.php delete mode 100644 generated/php/vendor/twig/twig/src/NodeVisitor/YieldNotReadyNodeVisitor.php delete mode 100644 generated/php/vendor/twig/twig/src/OperatorPrecedenceChange.php delete mode 100644 generated/php/vendor/twig/twig/src/Parser.php delete mode 100644 generated/php/vendor/twig/twig/src/Profiler/Dumper/BaseDumper.php delete mode 100644 generated/php/vendor/twig/twig/src/Profiler/Dumper/BlackfireDumper.php delete mode 100644 generated/php/vendor/twig/twig/src/Profiler/Dumper/HtmlDumper.php delete mode 100644 generated/php/vendor/twig/twig/src/Profiler/Dumper/TextDumper.php delete mode 100644 generated/php/vendor/twig/twig/src/Profiler/Node/EnterProfileNode.php delete mode 100644 generated/php/vendor/twig/twig/src/Profiler/Node/LeaveProfileNode.php delete mode 100644 generated/php/vendor/twig/twig/src/Profiler/NodeVisitor/ProfilerNodeVisitor.php delete mode 100644 generated/php/vendor/twig/twig/src/Profiler/Profile.php delete mode 100644 generated/php/vendor/twig/twig/src/Resources/core.php delete mode 100644 generated/php/vendor/twig/twig/src/Resources/debug.php delete mode 100644 generated/php/vendor/twig/twig/src/Resources/escaper.php delete mode 100644 generated/php/vendor/twig/twig/src/Resources/string_loader.php delete mode 100644 generated/php/vendor/twig/twig/src/Runtime/EscaperRuntime.php delete mode 100644 generated/php/vendor/twig/twig/src/RuntimeLoader/ContainerRuntimeLoader.php delete mode 100644 generated/php/vendor/twig/twig/src/RuntimeLoader/FactoryRuntimeLoader.php delete mode 100644 generated/php/vendor/twig/twig/src/RuntimeLoader/RuntimeLoaderInterface.php delete mode 100644 generated/php/vendor/twig/twig/src/Sandbox/SecurityError.php delete mode 100644 generated/php/vendor/twig/twig/src/Sandbox/SecurityNotAllowedFilterError.php delete mode 100644 generated/php/vendor/twig/twig/src/Sandbox/SecurityNotAllowedFunctionError.php delete mode 100644 generated/php/vendor/twig/twig/src/Sandbox/SecurityNotAllowedMethodError.php delete mode 100644 generated/php/vendor/twig/twig/src/Sandbox/SecurityNotAllowedPropertyError.php delete mode 100644 generated/php/vendor/twig/twig/src/Sandbox/SecurityNotAllowedTagError.php delete mode 100644 generated/php/vendor/twig/twig/src/Sandbox/SecurityNotAllowedTestError.php delete mode 100644 generated/php/vendor/twig/twig/src/Sandbox/SecurityPolicy.php delete mode 100644 generated/php/vendor/twig/twig/src/Sandbox/SecurityPolicyInterface.php delete mode 100644 generated/php/vendor/twig/twig/src/Sandbox/SourcePolicyInterface.php delete mode 100644 generated/php/vendor/twig/twig/src/Source.php delete mode 100644 generated/php/vendor/twig/twig/src/Template.php delete mode 100644 generated/php/vendor/twig/twig/src/TemplateWrapper.php delete mode 100644 generated/php/vendor/twig/twig/src/Test/IntegrationTestCase.php delete mode 100644 generated/php/vendor/twig/twig/src/Test/NodeTestCase.php delete mode 100644 generated/php/vendor/twig/twig/src/Token.php delete mode 100644 generated/php/vendor/twig/twig/src/TokenParser/AbstractTokenParser.php delete mode 100644 generated/php/vendor/twig/twig/src/TokenParser/ApplyTokenParser.php delete mode 100644 generated/php/vendor/twig/twig/src/TokenParser/AutoEscapeTokenParser.php delete mode 100644 generated/php/vendor/twig/twig/src/TokenParser/BlockTokenParser.php delete mode 100644 generated/php/vendor/twig/twig/src/TokenParser/DeprecatedTokenParser.php delete mode 100644 generated/php/vendor/twig/twig/src/TokenParser/DoTokenParser.php delete mode 100644 generated/php/vendor/twig/twig/src/TokenParser/EmbedTokenParser.php delete mode 100644 generated/php/vendor/twig/twig/src/TokenParser/ExtendsTokenParser.php delete mode 100644 generated/php/vendor/twig/twig/src/TokenParser/FlushTokenParser.php delete mode 100644 generated/php/vendor/twig/twig/src/TokenParser/ForTokenParser.php delete mode 100644 generated/php/vendor/twig/twig/src/TokenParser/FromTokenParser.php delete mode 100644 generated/php/vendor/twig/twig/src/TokenParser/GuardTokenParser.php delete mode 100644 generated/php/vendor/twig/twig/src/TokenParser/IfTokenParser.php delete mode 100644 generated/php/vendor/twig/twig/src/TokenParser/ImportTokenParser.php delete mode 100644 generated/php/vendor/twig/twig/src/TokenParser/IncludeTokenParser.php delete mode 100644 generated/php/vendor/twig/twig/src/TokenParser/MacroTokenParser.php delete mode 100644 generated/php/vendor/twig/twig/src/TokenParser/SandboxTokenParser.php delete mode 100644 generated/php/vendor/twig/twig/src/TokenParser/SetTokenParser.php delete mode 100644 generated/php/vendor/twig/twig/src/TokenParser/TokenParserInterface.php delete mode 100644 generated/php/vendor/twig/twig/src/TokenParser/TypesTokenParser.php delete mode 100644 generated/php/vendor/twig/twig/src/TokenParser/UseTokenParser.php delete mode 100644 generated/php/vendor/twig/twig/src/TokenParser/WithTokenParser.php delete mode 100644 generated/php/vendor/twig/twig/src/TokenStream.php delete mode 100644 generated/php/vendor/twig/twig/src/TwigCallableInterface.php delete mode 100644 generated/php/vendor/twig/twig/src/TwigFilter.php delete mode 100644 generated/php/vendor/twig/twig/src/TwigFunction.php delete mode 100644 generated/php/vendor/twig/twig/src/TwigTest.php delete mode 100644 generated/php/vendor/twig/twig/src/Util/CallableArgumentsExtractor.php delete mode 100644 generated/php/vendor/twig/twig/src/Util/CallableParameters.php delete mode 100644 generated/php/vendor/twig/twig/src/Util/DeprecationCollector.php delete mode 100644 generated/php/vendor/twig/twig/src/Util/ReflectionCallable.php delete mode 100644 generated/php/vendor/twig/twig/src/Util/TemplateDirIterator.php delete mode 100644 generated/ui/alert/Alert.html.twig delete mode 100644 generated/ui/alert/Alert.latte delete mode 100644 generated/ui/alert/Alert.svelte delete mode 100644 generated/ui/alert/Alert.vue delete mode 100644 generated/ui/alert/alert.shared.ts delete mode 100644 generated/ui/alert/alert.solid.tsx delete mode 100644 generated/ui/alert/alert.templ delete mode 100644 generated/ui/alert/alert.tsx delete mode 100644 generated/ui/alert/alert.variants.json delete mode 100644 generated/ui/alert/alert_gen.go delete mode 100644 generated/ui/alert/alert_templ.go delete mode 100644 generated/ui/badge/Badge.html.twig delete mode 100644 generated/ui/badge/Badge.latte delete mode 100644 generated/ui/badge/Badge.svelte delete mode 100644 generated/ui/badge/Badge.vue delete mode 100644 generated/ui/badge/badge.shared.ts delete mode 100644 generated/ui/badge/badge.solid.tsx delete mode 100644 generated/ui/badge/badge.templ delete mode 100644 generated/ui/badge/badge.tsx delete mode 100644 generated/ui/badge/badge.variants.json delete mode 100644 generated/ui/badge/badge_gen.go delete mode 100644 generated/ui/badge/badge_templ.go delete mode 100644 generated/ui/block/Block.html.twig delete mode 100644 generated/ui/block/Block.latte delete mode 100644 generated/ui/block/Block.svelte delete mode 100644 generated/ui/block/Block.vue delete mode 100644 generated/ui/block/block.shared.ts delete mode 100644 generated/ui/block/block.solid.tsx delete mode 100644 generated/ui/block/block.templ delete mode 100644 generated/ui/block/block.tsx delete mode 100644 generated/ui/block/block.variants.json delete mode 100644 generated/ui/block/block_gen.go delete mode 100644 generated/ui/block/block_templ.go delete mode 100644 generated/ui/box/Box.html.twig delete mode 100644 generated/ui/box/Box.latte delete mode 100644 generated/ui/box/Box.svelte delete mode 100644 generated/ui/box/Box.vue delete mode 100644 generated/ui/box/box.shared.ts delete mode 100644 generated/ui/box/box.solid.tsx delete mode 100644 generated/ui/box/box.templ delete mode 100644 generated/ui/box/box.tsx delete mode 100644 generated/ui/box/box.variants.json delete mode 100644 generated/ui/box/box_gen.go delete mode 100644 generated/ui/box/box_templ.go delete mode 100644 generated/ui/breadcrumb/Breadcrumb.svelte delete mode 100644 generated/ui/breadcrumb/Breadcrumb.vue delete mode 100644 generated/ui/breadcrumb/breadcrumb.shared.ts delete mode 100644 generated/ui/breadcrumb/breadcrumb.solid.tsx delete mode 100644 generated/ui/breadcrumb/breadcrumb.templ delete mode 100644 generated/ui/breadcrumb/breadcrumb.tsx delete mode 100644 generated/ui/breadcrumb/breadcrumb_templ.go delete mode 100644 generated/ui/button/Button.html.twig delete mode 100644 generated/ui/button/Button.latte delete mode 100644 generated/ui/button/Button.svelte delete mode 100644 generated/ui/button/Button.vue delete mode 100644 generated/ui/button/button.shared.ts delete mode 100644 generated/ui/button/button.solid.tsx delete mode 100644 generated/ui/button/button.templ delete mode 100644 generated/ui/button/button.tsx delete mode 100644 generated/ui/button/button.variants.json delete mode 100644 generated/ui/button/button_gen.go delete mode 100644 generated/ui/button/button_templ.go delete mode 100644 generated/ui/card/Card.html.twig delete mode 100644 generated/ui/card/Card.latte delete mode 100644 generated/ui/card/Card.svelte delete mode 100644 generated/ui/card/Card.vue delete mode 100644 generated/ui/card/CardContent.html.twig delete mode 100644 generated/ui/card/CardContent.latte delete mode 100644 generated/ui/card/CardContent.svelte delete mode 100644 generated/ui/card/CardContent.vue delete mode 100644 generated/ui/card/CardDescription.html.twig delete mode 100644 generated/ui/card/CardDescription.latte delete mode 100644 generated/ui/card/CardDescription.svelte delete mode 100644 generated/ui/card/CardDescription.vue delete mode 100644 generated/ui/card/CardFooter.html.twig delete mode 100644 generated/ui/card/CardFooter.latte delete mode 100644 generated/ui/card/CardFooter.svelte delete mode 100644 generated/ui/card/CardFooter.vue delete mode 100644 generated/ui/card/CardHeader.html.twig delete mode 100644 generated/ui/card/CardHeader.latte delete mode 100644 generated/ui/card/CardHeader.svelte delete mode 100644 generated/ui/card/CardHeader.vue delete mode 100644 generated/ui/card/CardTitle.html.twig delete mode 100644 generated/ui/card/CardTitle.latte delete mode 100644 generated/ui/card/CardTitle.svelte delete mode 100644 generated/ui/card/CardTitle.vue delete mode 100644 generated/ui/card/card.shared.ts delete mode 100644 generated/ui/card/card.solid.tsx delete mode 100644 generated/ui/card/card.templ delete mode 100644 generated/ui/card/card.tsx delete mode 100644 generated/ui/card/card.variants.json delete mode 100644 generated/ui/card/card_gen.go delete mode 100644 generated/ui/card/card_templ.go delete mode 100644 generated/ui/checkbox/Checkbox.html.twig delete mode 100644 generated/ui/checkbox/Checkbox.latte delete mode 100644 generated/ui/checkbox/Checkbox.svelte delete mode 100644 generated/ui/checkbox/Checkbox.vue delete mode 100644 generated/ui/checkbox/checkbox.shared.ts delete mode 100644 generated/ui/checkbox/checkbox.solid.tsx delete mode 100644 generated/ui/checkbox/checkbox.templ delete mode 100644 generated/ui/checkbox/checkbox.tsx delete mode 100644 generated/ui/checkbox/checkbox.variants.json delete mode 100644 generated/ui/checkbox/checkbox_gen.go delete mode 100644 generated/ui/checkbox/checkbox_templ.go delete mode 100644 generated/ui/container/Container.html.twig delete mode 100644 generated/ui/container/Container.latte delete mode 100644 generated/ui/container/Container.svelte delete mode 100644 generated/ui/container/Container.vue delete mode 100644 generated/ui/container/container.shared.ts delete mode 100644 generated/ui/container/container.solid.tsx delete mode 100644 generated/ui/container/container.templ delete mode 100644 generated/ui/container/container.tsx delete mode 100644 generated/ui/container/container.variants.json delete mode 100644 generated/ui/container/container_gen.go delete mode 100644 generated/ui/container/container_templ.go delete mode 100644 generated/ui/dialog/Dialog.html.twig delete mode 100644 generated/ui/dialog/Dialog.latte delete mode 100644 generated/ui/dialog/Dialog.svelte delete mode 100644 generated/ui/dialog/Dialog.vue delete mode 100644 generated/ui/dialog/dialog.shared.ts delete mode 100644 generated/ui/dialog/dialog.solid.tsx delete mode 100644 generated/ui/dialog/dialog.templ delete mode 100644 generated/ui/dialog/dialog.tsx delete mode 100644 generated/ui/dialog/dialog.variants.json delete mode 100644 generated/ui/dialog/dialog_gen.go delete mode 100644 generated/ui/dialog/dialog_templ.go delete mode 100644 generated/ui/disclosure/Disclosure.html.twig delete mode 100644 generated/ui/disclosure/Disclosure.latte delete mode 100644 generated/ui/disclosure/Disclosure.svelte delete mode 100644 generated/ui/disclosure/Disclosure.vue delete mode 100644 generated/ui/disclosure/Summary.html.twig delete mode 100644 generated/ui/disclosure/Summary.latte delete mode 100644 generated/ui/disclosure/Summary.svelte delete mode 100644 generated/ui/disclosure/Summary.vue delete mode 100644 generated/ui/disclosure/disclosure.shared.ts delete mode 100644 generated/ui/disclosure/disclosure.solid.tsx delete mode 100644 generated/ui/disclosure/disclosure.templ delete mode 100644 generated/ui/disclosure/disclosure.tsx delete mode 100644 generated/ui/disclosure/disclosure.variants.json delete mode 100644 generated/ui/disclosure/disclosure_gen.go delete mode 100644 generated/ui/disclosure/disclosure_templ.go delete mode 100644 generated/ui/disclosure/summary.variants.json delete mode 100644 generated/ui/form/DataList.html.twig delete mode 100644 generated/ui/form/DataList.latte delete mode 100644 generated/ui/form/DataList.svelte delete mode 100644 generated/ui/form/DataList.vue delete mode 100644 generated/ui/form/DataOption.html.twig delete mode 100644 generated/ui/form/DataOption.latte delete mode 100644 generated/ui/form/DataOption.svelte delete mode 100644 generated/ui/form/DataOption.vue delete mode 100644 generated/ui/form/Fieldset.html.twig delete mode 100644 generated/ui/form/Fieldset.latte delete mode 100644 generated/ui/form/Fieldset.svelte delete mode 100644 generated/ui/form/Fieldset.vue delete mode 100644 generated/ui/form/Form.html.twig delete mode 100644 generated/ui/form/Form.latte delete mode 100644 generated/ui/form/Form.svelte delete mode 100644 generated/ui/form/Form.vue delete mode 100644 generated/ui/form/FormDescription.html.twig delete mode 100644 generated/ui/form/FormDescription.latte delete mode 100644 generated/ui/form/FormDescription.svelte delete mode 100644 generated/ui/form/FormDescription.vue delete mode 100644 generated/ui/form/FormItem.html.twig delete mode 100644 generated/ui/form/FormItem.latte delete mode 100644 generated/ui/form/FormItem.svelte delete mode 100644 generated/ui/form/FormItem.vue delete mode 100644 generated/ui/form/FormMessage.html.twig delete mode 100644 generated/ui/form/FormMessage.latte delete mode 100644 generated/ui/form/FormMessage.svelte delete mode 100644 generated/ui/form/FormMessage.vue delete mode 100644 generated/ui/form/Legend.html.twig delete mode 100644 generated/ui/form/Legend.latte delete mode 100644 generated/ui/form/Legend.svelte delete mode 100644 generated/ui/form/Legend.vue delete mode 100644 generated/ui/form/Meter.html.twig delete mode 100644 generated/ui/form/Meter.latte delete mode 100644 generated/ui/form/Meter.svelte delete mode 100644 generated/ui/form/Meter.vue delete mode 100644 generated/ui/form/Output.html.twig delete mode 100644 generated/ui/form/Output.latte delete mode 100644 generated/ui/form/Output.svelte delete mode 100644 generated/ui/form/Output.vue delete mode 100644 generated/ui/form/Progress.html.twig delete mode 100644 generated/ui/form/Progress.latte delete mode 100644 generated/ui/form/Progress.svelte delete mode 100644 generated/ui/form/Progress.vue delete mode 100644 generated/ui/form/controls.shared.ts delete mode 100644 generated/ui/form/controls.solid.tsx delete mode 100644 generated/ui/form/controls.templ delete mode 100644 generated/ui/form/controls.tsx delete mode 100644 generated/ui/form/controls_gen.go delete mode 100644 generated/ui/form/controls_templ.go delete mode 100644 generated/ui/form/fieldset.variants.json delete mode 100644 generated/ui/form/form-description.variants.json delete mode 100644 generated/ui/form/form-item.variants.json delete mode 100644 generated/ui/form/form-message.variants.json delete mode 100644 generated/ui/form/form.shared.ts delete mode 100644 generated/ui/form/form.solid.tsx delete mode 100644 generated/ui/form/form.templ delete mode 100644 generated/ui/form/form.tsx delete mode 100644 generated/ui/form/form.variants.json delete mode 100644 generated/ui/form/form_gen.go delete mode 100644 generated/ui/form/form_templ.go delete mode 100644 generated/ui/form/legend.variants.json delete mode 100644 generated/ui/form/meter.variants.json delete mode 100644 generated/ui/form/progress.variants.json delete mode 100644 generated/ui/grid/Grid.html.twig delete mode 100644 generated/ui/grid/Grid.latte delete mode 100644 generated/ui/grid/Grid.svelte delete mode 100644 generated/ui/grid/Grid.vue delete mode 100644 generated/ui/grid/GridCol.html.twig delete mode 100644 generated/ui/grid/GridCol.latte delete mode 100644 generated/ui/grid/GridCol.svelte delete mode 100644 generated/ui/grid/GridCol.vue delete mode 100644 generated/ui/grid/grid.shared.ts delete mode 100644 generated/ui/grid/grid.solid.tsx delete mode 100644 generated/ui/grid/grid.templ delete mode 100644 generated/ui/grid/grid.tsx delete mode 100644 generated/ui/grid/grid.variants.json delete mode 100644 generated/ui/grid/grid_gen.go delete mode 100644 generated/ui/grid/grid_templ.go delete mode 100644 generated/ui/group/Group.html.twig delete mode 100644 generated/ui/group/Group.latte delete mode 100644 generated/ui/group/Group.svelte delete mode 100644 generated/ui/group/Group.vue delete mode 100644 generated/ui/group/group.shared.ts delete mode 100644 generated/ui/group/group.solid.tsx delete mode 100644 generated/ui/group/group.templ delete mode 100644 generated/ui/group/group.tsx delete mode 100644 generated/ui/group/group.variants.json delete mode 100644 generated/ui/group/group_gen.go delete mode 100644 generated/ui/group/group_templ.go delete mode 100644 generated/ui/icon/Icon.svelte delete mode 100644 generated/ui/icon/Icon.vue delete mode 100644 generated/ui/icon/icon.shared.ts delete mode 100644 generated/ui/icon/icon.solid.tsx delete mode 100644 generated/ui/icon/icon.templ delete mode 100644 generated/ui/icon/icon.tsx delete mode 100644 generated/ui/icon/icon.variants.json delete mode 100644 generated/ui/icon/icon_gen.go delete mode 100644 generated/ui/icon/icon_templ.go delete mode 100644 generated/ui/iconbadge/IconBadge.html.twig delete mode 100644 generated/ui/iconbadge/IconBadge.latte delete mode 100644 generated/ui/iconbadge/IconBadge.svelte delete mode 100644 generated/ui/iconbadge/IconBadge.vue delete mode 100644 generated/ui/iconbadge/iconbadge.shared.ts delete mode 100644 generated/ui/iconbadge/iconbadge.solid.tsx delete mode 100644 generated/ui/iconbadge/iconbadge.templ delete mode 100644 generated/ui/iconbadge/iconbadge.tsx delete mode 100644 generated/ui/iconbadge/iconbadge.variants.json delete mode 100644 generated/ui/iconbadge/iconbadge_gen.go delete mode 100644 generated/ui/iconbadge/iconbadge_templ.go delete mode 100644 generated/ui/image/Image.html.twig delete mode 100644 generated/ui/image/Image.latte delete mode 100644 generated/ui/image/Image.svelte delete mode 100644 generated/ui/image/Image.vue delete mode 100644 generated/ui/image/Picture.html.twig delete mode 100644 generated/ui/image/Picture.latte delete mode 100644 generated/ui/image/Picture.svelte delete mode 100644 generated/ui/image/Picture.vue delete mode 100644 generated/ui/image/Source.html.twig delete mode 100644 generated/ui/image/Source.latte delete mode 100644 generated/ui/image/Source.svelte delete mode 100644 generated/ui/image/Source.vue delete mode 100644 generated/ui/image/image.shared.ts delete mode 100644 generated/ui/image/image.solid.tsx delete mode 100644 generated/ui/image/image.templ delete mode 100644 generated/ui/image/image.tsx delete mode 100644 generated/ui/image/image.variants.json delete mode 100644 generated/ui/image/image_gen.go delete mode 100644 generated/ui/image/image_templ.go delete mode 100644 generated/ui/index.solid.ts delete mode 100644 generated/ui/index.svelte.ts delete mode 100644 generated/ui/index.ts delete mode 100644 generated/ui/index.vue.ts delete mode 100644 generated/ui/inline/Inline.html.twig delete mode 100644 generated/ui/inline/Inline.latte delete mode 100644 generated/ui/inline/Inline.svelte delete mode 100644 generated/ui/inline/Inline.vue delete mode 100644 generated/ui/inline/inline.shared.ts delete mode 100644 generated/ui/inline/inline.solid.tsx delete mode 100644 generated/ui/inline/inline.templ delete mode 100644 generated/ui/inline/inline.tsx delete mode 100644 generated/ui/inline/inline.variants.json delete mode 100644 generated/ui/inline/inline_gen.go delete mode 100644 generated/ui/inline/inline_templ.go delete mode 100644 generated/ui/input/Input.html.twig delete mode 100644 generated/ui/input/Input.latte delete mode 100644 generated/ui/input/Input.svelte delete mode 100644 generated/ui/input/Input.vue delete mode 100644 generated/ui/input/input.shared.ts delete mode 100644 generated/ui/input/input.solid.tsx delete mode 100644 generated/ui/input/input.templ delete mode 100644 generated/ui/input/input.tsx delete mode 100644 generated/ui/input/input.variants.json delete mode 100644 generated/ui/input/input_gen.go delete mode 100644 generated/ui/input/input_templ.go delete mode 100644 generated/ui/label/Label.html.twig delete mode 100644 generated/ui/label/Label.latte delete mode 100644 generated/ui/label/Label.svelte delete mode 100644 generated/ui/label/Label.vue delete mode 100644 generated/ui/label/label.shared.ts delete mode 100644 generated/ui/label/label.solid.tsx delete mode 100644 generated/ui/label/label.templ delete mode 100644 generated/ui/label/label.tsx delete mode 100644 generated/ui/label/label.variants.json delete mode 100644 generated/ui/label/label_gen.go delete mode 100644 generated/ui/label/label_templ.go delete mode 100644 generated/ui/linebreak/Break.html.twig delete mode 100644 generated/ui/linebreak/Break.latte delete mode 100644 generated/ui/linebreak/Break.svelte delete mode 100644 generated/ui/linebreak/Break.vue delete mode 100644 generated/ui/linebreak/linebreak.shared.ts delete mode 100644 generated/ui/linebreak/linebreak.solid.tsx delete mode 100644 generated/ui/linebreak/linebreak.templ delete mode 100644 generated/ui/linebreak/linebreak.tsx delete mode 100644 generated/ui/linebreak/linebreak.variants.json delete mode 100644 generated/ui/linebreak/linebreak_gen.go delete mode 100644 generated/ui/linebreak/linebreak_templ.go delete mode 100644 generated/ui/link/Link.html.twig delete mode 100644 generated/ui/link/Link.latte delete mode 100644 generated/ui/link/Link.svelte delete mode 100644 generated/ui/link/Link.vue delete mode 100644 generated/ui/link/link.shared.ts delete mode 100644 generated/ui/link/link.solid.tsx delete mode 100644 generated/ui/link/link.templ delete mode 100644 generated/ui/link/link.tsx delete mode 100644 generated/ui/link/link.variants.json delete mode 100644 generated/ui/link/link_gen.go delete mode 100644 generated/ui/link/link_templ.go delete mode 100644 generated/ui/list/List.html.twig delete mode 100644 generated/ui/list/List.latte delete mode 100644 generated/ui/list/List.svelte delete mode 100644 generated/ui/list/List.vue delete mode 100644 generated/ui/list/ListItem.html.twig delete mode 100644 generated/ui/list/ListItem.latte delete mode 100644 generated/ui/list/ListItem.svelte delete mode 100644 generated/ui/list/ListItem.vue delete mode 100644 generated/ui/list/list.shared.ts delete mode 100644 generated/ui/list/list.solid.tsx delete mode 100644 generated/ui/list/list.templ delete mode 100644 generated/ui/list/list.tsx delete mode 100644 generated/ui/list/list.variants.json delete mode 100644 generated/ui/list/list_gen.go delete mode 100644 generated/ui/list/list_templ.go delete mode 100644 generated/ui/radio/Radio.html.twig delete mode 100644 generated/ui/radio/Radio.latte delete mode 100644 generated/ui/radio/Radio.svelte delete mode 100644 generated/ui/radio/Radio.vue delete mode 100644 generated/ui/radio/radio.shared.ts delete mode 100644 generated/ui/radio/radio.solid.tsx delete mode 100644 generated/ui/radio/radio.templ delete mode 100644 generated/ui/radio/radio.tsx delete mode 100644 generated/ui/radio/radio.variants.json delete mode 100644 generated/ui/radio/radio_gen.go delete mode 100644 generated/ui/radio/radio_templ.go delete mode 100644 generated/ui/select/OptGroup.html.twig delete mode 100644 generated/ui/select/OptGroup.latte delete mode 100644 generated/ui/select/OptGroup.svelte delete mode 100644 generated/ui/select/OptGroup.vue delete mode 100644 generated/ui/select/Select.svelte delete mode 100644 generated/ui/select/Select.vue delete mode 100644 generated/ui/select/SelectOption.html.twig delete mode 100644 generated/ui/select/SelectOption.latte delete mode 100644 generated/ui/select/SelectOption.svelte delete mode 100644 generated/ui/select/SelectOption.vue delete mode 100644 generated/ui/select/select.shared.ts delete mode 100644 generated/ui/select/select.solid.tsx delete mode 100644 generated/ui/select/select.templ delete mode 100644 generated/ui/select/select.tsx delete mode 100644 generated/ui/select/select.variants.json delete mode 100644 generated/ui/select/select_gen.go delete mode 100644 generated/ui/select/select_templ.go delete mode 100644 generated/ui/separator/Separator.html.twig delete mode 100644 generated/ui/separator/Separator.latte delete mode 100644 generated/ui/separator/Separator.svelte delete mode 100644 generated/ui/separator/Separator.vue delete mode 100644 generated/ui/separator/separator.shared.ts delete mode 100644 generated/ui/separator/separator.solid.tsx delete mode 100644 generated/ui/separator/separator.templ delete mode 100644 generated/ui/separator/separator.tsx delete mode 100644 generated/ui/separator/separator.variants.json delete mode 100644 generated/ui/separator/separator_gen.go delete mode 100644 generated/ui/separator/separator_templ.go delete mode 100644 generated/ui/shared.ts delete mode 100644 generated/ui/stack/Stack.html.twig delete mode 100644 generated/ui/stack/Stack.latte delete mode 100644 generated/ui/stack/Stack.svelte delete mode 100644 generated/ui/stack/Stack.vue delete mode 100644 generated/ui/stack/stack.shared.ts delete mode 100644 generated/ui/stack/stack.solid.tsx delete mode 100644 generated/ui/stack/stack.templ delete mode 100644 generated/ui/stack/stack.tsx delete mode 100644 generated/ui/stack/stack.variants.json delete mode 100644 generated/ui/stack/stack_gen.go delete mode 100644 generated/ui/stack/stack_templ.go delete mode 100644 generated/ui/switch/Switch.html.twig delete mode 100644 generated/ui/switch/Switch.latte delete mode 100644 generated/ui/switch/Switch.svelte delete mode 100644 generated/ui/switch/Switch.vue delete mode 100644 generated/ui/switch/switch.shared.ts delete mode 100644 generated/ui/switch/switch.solid.tsx delete mode 100644 generated/ui/switch/switch.templ delete mode 100644 generated/ui/switch/switch.tsx delete mode 100644 generated/ui/switch/switch.variants.json delete mode 100644 generated/ui/switch/switch_gen.go delete mode 100644 generated/ui/switch/switch_templ.go delete mode 100644 generated/ui/table/Table.html.twig delete mode 100644 generated/ui/table/Table.latte delete mode 100644 generated/ui/table/Table.svelte delete mode 100644 generated/ui/table/Table.vue delete mode 100644 generated/ui/table/TableBody.html.twig delete mode 100644 generated/ui/table/TableBody.latte delete mode 100644 generated/ui/table/TableBody.svelte delete mode 100644 generated/ui/table/TableBody.vue delete mode 100644 generated/ui/table/TableCaption.html.twig delete mode 100644 generated/ui/table/TableCaption.latte delete mode 100644 generated/ui/table/TableCaption.svelte delete mode 100644 generated/ui/table/TableCaption.vue delete mode 100644 generated/ui/table/TableCell.html.twig delete mode 100644 generated/ui/table/TableCell.latte delete mode 100644 generated/ui/table/TableCell.svelte delete mode 100644 generated/ui/table/TableCell.vue delete mode 100644 generated/ui/table/TableCol.html.twig delete mode 100644 generated/ui/table/TableCol.latte delete mode 100644 generated/ui/table/TableCol.svelte delete mode 100644 generated/ui/table/TableCol.vue delete mode 100644 generated/ui/table/TableColGroup.html.twig delete mode 100644 generated/ui/table/TableColGroup.latte delete mode 100644 generated/ui/table/TableColGroup.svelte delete mode 100644 generated/ui/table/TableColGroup.vue delete mode 100644 generated/ui/table/TableFoot.html.twig delete mode 100644 generated/ui/table/TableFoot.latte delete mode 100644 generated/ui/table/TableFoot.svelte delete mode 100644 generated/ui/table/TableFoot.vue delete mode 100644 generated/ui/table/TableHead.html.twig delete mode 100644 generated/ui/table/TableHead.latte delete mode 100644 generated/ui/table/TableHead.svelte delete mode 100644 generated/ui/table/TableHead.vue delete mode 100644 generated/ui/table/TableHeadCell.html.twig delete mode 100644 generated/ui/table/TableHeadCell.latte delete mode 100644 generated/ui/table/TableHeadCell.svelte delete mode 100644 generated/ui/table/TableHeadCell.vue delete mode 100644 generated/ui/table/TableRow.html.twig delete mode 100644 generated/ui/table/TableRow.latte delete mode 100644 generated/ui/table/TableRow.svelte delete mode 100644 generated/ui/table/TableRow.vue delete mode 100644 generated/ui/table/table.shared.ts delete mode 100644 generated/ui/table/table.solid.tsx delete mode 100644 generated/ui/table/table.templ delete mode 100644 generated/ui/table/table.tsx delete mode 100644 generated/ui/table/table.variants.json delete mode 100644 generated/ui/table/table_gen.go delete mode 100644 generated/ui/table/table_templ.go delete mode 100644 generated/ui/text/Text.html.twig delete mode 100644 generated/ui/text/Text.latte delete mode 100644 generated/ui/text/Text.svelte delete mode 100644 generated/ui/text/Text.vue delete mode 100644 generated/ui/text/text.shared.ts delete mode 100644 generated/ui/text/text.solid.tsx delete mode 100644 generated/ui/text/text.templ delete mode 100644 generated/ui/text/text.tsx delete mode 100644 generated/ui/text/text.variants.json delete mode 100644 generated/ui/text/text_gen.go delete mode 100644 generated/ui/text/text_templ.go delete mode 100644 generated/ui/textarea/Textarea.html.twig delete mode 100644 generated/ui/textarea/Textarea.latte delete mode 100644 generated/ui/textarea/Textarea.svelte delete mode 100644 generated/ui/textarea/Textarea.vue delete mode 100644 generated/ui/textarea/textarea.shared.ts delete mode 100644 generated/ui/textarea/textarea.solid.tsx delete mode 100644 generated/ui/textarea/textarea.templ delete mode 100644 generated/ui/textarea/textarea.tsx delete mode 100644 generated/ui/textarea/textarea.variants.json delete mode 100644 generated/ui/textarea/textarea_gen.go delete mode 100644 generated/ui/textarea/textarea_templ.go delete mode 100644 generated/ui/title/Title.html.twig delete mode 100644 generated/ui/title/Title.latte delete mode 100644 generated/ui/title/Title.svelte delete mode 100644 generated/ui/title/Title.vue delete mode 100644 generated/ui/title/title.shared.ts delete mode 100644 generated/ui/title/title.solid.tsx delete mode 100644 generated/ui/title/title.templ delete mode 100644 generated/ui/title/title.tsx delete mode 100644 generated/ui/title/title.variants.json delete mode 100644 generated/ui/title/title_gen.go delete mode 100644 generated/ui/title/title_templ.go delete mode 100644 generated/utils/cn.ts delete mode 100644 generated/utils/cn_merge.go delete mode 100644 generated/utils/env.ts delete mode 100644 generated/utils/expr.ts delete mode 100644 generated/utils/index.ts delete mode 100644 generated/utils/recipe-types.ts delete mode 100644 generated/utils/tags.ts delete mode 100644 generated/utils/utils.go delete mode 100644 generated/utils/variants.ts delete mode 100644 generated/utils/variants_json.go create mode 100755 packages/tooling/bin/audit.sh create mode 100755 packages/tooling/bin/rules.mjs create mode 100644 packages/tooling/bin/ui8px-extract.mjs create mode 100644 packages/tooling/bin/ui8px-gate.mjs create mode 100755 packages/tooling/bin/zones.mjs create mode 100644 packages/tooling/package.json create mode 100644 packages/tooling/src/app.mjs create mode 100644 packages/tooling/src/zones.mjs create mode 100644 rules/baselines/discovery.json create mode 100644 rules/baselines/host-react.json create mode 100644 rules/baselines/host-solid.json create mode 100644 rules/baselines/host-svelte.json create mode 100644 rules/baselines/host-vue.json create mode 100644 rules/baselines/jinja2-ui.json create mode 100644 rules/baselines/latte-ui.json create mode 100644 rules/baselines/magazine.json create mode 100644 rules/baselines/react-ui.json create mode 100644 rules/baselines/solid-ui.json create mode 100644 rules/baselines/svelte-ui.json create mode 100644 rules/baselines/taste-screens.json create mode 100644 rules/baselines/templ-ui.json create mode 100644 rules/baselines/twig-ui.json create mode 100644 rules/baselines/vue-ui.json create mode 100644 rules/fixtures/jinja2/block-root.bad.html.j2 create mode 100644 rules/fixtures/jinja2/block-root.branches.ok.html.j2 create mode 100644 rules/fixtures/jinja2/block-root.loop.bad.html.j2 create mode 100644 rules/fixtures/jinja2/block-root.nested.bad.html.j2 create mode 100644 rules/fixtures/jinja2/block-root.ok.html.j2 create mode 100644 rules/fixtures/jinja2/block-root.siblings.bad.html.j2 create mode 100644 rules/fixtures/jinja2/dynamic-tag.bad.html.j2 create mode 100644 rules/fixtures/jinja2/dynamic-tag.ok.html.j2 create mode 100644 rules/fixtures/jinja2/literal-text.bad.html.j2 create mode 100644 rules/fixtures/jinja2/literal-text.ok.html.j2 create mode 100644 rules/fixtures/jinja2/raw-html.bad.html.j2 create mode 100644 rules/fixtures/jinja2/raw-html.ok.html.j2 create mode 100644 rules/fixtures/jinja2/raw-native-tag.bad.html.j2 create mode 100644 rules/fixtures/jinja2/raw-native-tag.ok.html.j2 create mode 100644 rules/fixtures/jinja2/reactive-aria.bad.html.j2 create mode 100644 rules/fixtures/jinja2/reactive-aria.ok.html.j2 create mode 100644 rules/fixtures/latte/block-root.bad.latte create mode 100644 rules/fixtures/latte/block-root.branches.ok.latte create mode 100644 rules/fixtures/latte/block-root.loop.bad.latte create mode 100644 rules/fixtures/latte/block-root.nested.bad.latte create mode 100644 rules/fixtures/latte/block-root.ok.latte create mode 100644 rules/fixtures/latte/block-root.siblings.bad.latte create mode 100644 rules/fixtures/latte/dynamic-tag.bad.latte create mode 100644 rules/fixtures/latte/dynamic-tag.ok.latte create mode 100644 rules/fixtures/latte/literal-text.bad.latte create mode 100644 rules/fixtures/latte/literal-text.ok.latte create mode 100644 rules/fixtures/latte/raw-html.bad.latte create mode 100644 rules/fixtures/latte/raw-html.ok.latte create mode 100644 rules/fixtures/latte/raw-native-tag.bad.latte create mode 100644 rules/fixtures/latte/raw-native-tag.ok.latte create mode 100644 rules/fixtures/latte/reactive-aria.bad.latte create mode 100644 rules/fixtures/latte/reactive-aria.ok.latte create mode 100644 rules/fixtures/react/block-root.bad.tsx create mode 100644 rules/fixtures/react/block-root.branches.ok.tsx create mode 100644 rules/fixtures/react/block-root.loop.bad.tsx create mode 100644 rules/fixtures/react/block-root.nested.bad.tsx create mode 100644 rules/fixtures/react/block-root.ok.tsx create mode 100644 rules/fixtures/react/block-root.siblings.bad.tsx create mode 100644 rules/fixtures/react/dynamic-tag.bad.tsx create mode 100644 rules/fixtures/react/dynamic-tag.ok.tsx create mode 100644 rules/fixtures/react/literal-text.bad.tsx create mode 100644 rules/fixtures/react/literal-text.ok.tsx create mode 100644 rules/fixtures/react/raw-html.bad.tsx create mode 100644 rules/fixtures/react/raw-html.ok.tsx create mode 100644 rules/fixtures/react/raw-native-tag.bad.tsx create mode 100644 rules/fixtures/react/raw-native-tag.ok.tsx create mode 100644 rules/fixtures/react/reactive-aria.bad.tsx create mode 100644 rules/fixtures/react/reactive-aria.ok.tsx create mode 100644 rules/fixtures/solid/block-root.bad.tsx create mode 100644 rules/fixtures/solid/block-root.branches.ok.tsx create mode 100644 rules/fixtures/solid/block-root.loop.bad.tsx create mode 100644 rules/fixtures/solid/block-root.nested.bad.tsx create mode 100644 rules/fixtures/solid/block-root.ok.tsx create mode 100644 rules/fixtures/solid/block-root.siblings.bad.tsx create mode 100644 rules/fixtures/solid/dynamic-tag.bad.tsx create mode 100644 rules/fixtures/solid/dynamic-tag.ok.tsx create mode 100644 rules/fixtures/solid/literal-text.bad.tsx create mode 100644 rules/fixtures/solid/literal-text.ok.tsx create mode 100644 rules/fixtures/solid/raw-html.bad.tsx create mode 100644 rules/fixtures/solid/raw-html.ok.tsx create mode 100644 rules/fixtures/solid/raw-native-tag.bad.tsx create mode 100644 rules/fixtures/solid/raw-native-tag.ok.tsx create mode 100644 rules/fixtures/solid/reactive-aria.bad.tsx create mode 100644 rules/fixtures/solid/reactive-aria.ok.tsx create mode 100644 rules/fixtures/svelte/block-root.bad.svelte create mode 100644 rules/fixtures/svelte/block-root.branches.ok.svelte create mode 100644 rules/fixtures/svelte/block-root.loop.bad.svelte create mode 100644 rules/fixtures/svelte/block-root.nested.bad.svelte create mode 100644 rules/fixtures/svelte/block-root.ok.svelte create mode 100644 rules/fixtures/svelte/block-root.siblings.bad.svelte create mode 100644 rules/fixtures/svelte/dynamic-tag.bad.svelte create mode 100644 rules/fixtures/svelte/dynamic-tag.ok.svelte create mode 100644 rules/fixtures/svelte/literal-text.bad.svelte create mode 100644 rules/fixtures/svelte/literal-text.ok.svelte create mode 100644 rules/fixtures/svelte/raw-html.bad.svelte create mode 100644 rules/fixtures/svelte/raw-html.ok.svelte create mode 100644 rules/fixtures/svelte/raw-native-tag.bad.svelte create mode 100644 rules/fixtures/svelte/raw-native-tag.ok.svelte create mode 100644 rules/fixtures/svelte/reactive-aria.bad.svelte create mode 100644 rules/fixtures/svelte/reactive-aria.ok.svelte create mode 100644 rules/fixtures/templ/block-root.bad.templ create mode 100644 rules/fixtures/templ/block-root.branches.ok.templ create mode 100644 rules/fixtures/templ/block-root.loop.bad.templ create mode 100644 rules/fixtures/templ/block-root.nested.bad.templ create mode 100644 rules/fixtures/templ/block-root.ok.templ create mode 100644 rules/fixtures/templ/block-root.siblings.bad.templ create mode 100644 rules/fixtures/templ/dynamic-tag.bad.templ create mode 100644 rules/fixtures/templ/dynamic-tag.ok.templ create mode 100644 rules/fixtures/templ/literal-text.bad.templ create mode 100644 rules/fixtures/templ/literal-text.ok.templ create mode 100644 rules/fixtures/templ/raw-html.bad.templ create mode 100644 rules/fixtures/templ/raw-html.ok.templ create mode 100644 rules/fixtures/templ/raw-native-tag.bad.templ create mode 100644 rules/fixtures/templ/raw-native-tag.ok.templ create mode 100644 rules/fixtures/templ/reactive-aria.bad.templ create mode 100644 rules/fixtures/templ/reactive-aria.ok.templ create mode 100644 rules/fixtures/twig/block-root.bad.html.twig create mode 100644 rules/fixtures/twig/block-root.branches.ok.html.twig create mode 100644 rules/fixtures/twig/block-root.loop.bad.html.twig create mode 100644 rules/fixtures/twig/block-root.nested.bad.html.twig create mode 100644 rules/fixtures/twig/block-root.ok.html.twig create mode 100644 rules/fixtures/twig/block-root.siblings.bad.html.twig create mode 100644 rules/fixtures/twig/dynamic-tag.bad.html.twig create mode 100644 rules/fixtures/twig/dynamic-tag.ok.html.twig create mode 100644 rules/fixtures/twig/literal-text.bad.html.twig create mode 100644 rules/fixtures/twig/literal-text.ok.html.twig create mode 100644 rules/fixtures/twig/raw-html.bad.html.twig create mode 100644 rules/fixtures/twig/raw-html.ok.html.twig create mode 100644 rules/fixtures/twig/raw-native-tag.bad.html.twig create mode 100644 rules/fixtures/twig/raw-native-tag.ok.html.twig create mode 100644 rules/fixtures/twig/reactive-aria.bad.html.twig create mode 100644 rules/fixtures/twig/reactive-aria.ok.html.twig create mode 100644 rules/fixtures/vue/block-root.bad.vue create mode 100644 rules/fixtures/vue/block-root.branches.ok.vue create mode 100644 rules/fixtures/vue/block-root.loop.bad.vue create mode 100644 rules/fixtures/vue/block-root.nested.bad.vue create mode 100644 rules/fixtures/vue/block-root.ok.vue create mode 100644 rules/fixtures/vue/block-root.siblings.bad.vue create mode 100644 rules/fixtures/vue/dynamic-tag.bad.vue create mode 100644 rules/fixtures/vue/dynamic-tag.ok.vue create mode 100644 rules/fixtures/vue/literal-text.bad.vue create mode 100644 rules/fixtures/vue/literal-text.ok.vue create mode 100644 rules/fixtures/vue/raw-html.bad.vue create mode 100644 rules/fixtures/vue/raw-html.ok.vue create mode 100644 rules/fixtures/vue/raw-native-tag.bad.vue create mode 100644 rules/fixtures/vue/raw-native-tag.ok.vue create mode 100644 rules/fixtures/vue/reactive-aria.bad.vue create mode 100644 rules/fixtures/vue/reactive-aria.ok.vue create mode 100644 rules/html-validate.json create mode 100644 rules/zones.json delete mode 100644 runtime/go/cn_merge.go delete mode 100644 runtime/go/cn_merge_test.go delete mode 100644 runtime/go/expr.go delete mode 100644 runtime/go/heading.go delete mode 100644 runtime/go/tags.go delete mode 100644 runtime/go/utils.go delete mode 100644 runtime/go/variants_json.go delete mode 100644 runtime/php/Rt.php delete mode 100644 runtime/php/TwigExtension.php delete mode 100644 runtime/react/slot.tsx delete mode 100644 runtime/ts/cn.ts delete mode 100644 runtime/ts/env.ts delete mode 100644 runtime/ts/expr.ts delete mode 100644 runtime/ts/index.ts delete mode 100644 runtime/ts/recipe-types.ts delete mode 100644 runtime/ts/tags.ts delete mode 100644 runtime/ts/variants.ts delete mode 100644 src/application/generate-latte-bundle.ts delete mode 100644 src/application/generate.ts delete mode 100644 src/domain/cn.ts delete mode 100644 src/domain/php-support.ts delete mode 100644 src/domain/tags.ts delete mode 100644 src/emitters/common.ts delete mode 100644 src/emitters/latte.ts delete mode 100644 src/emitters/php-classes.ts delete mode 100644 src/emitters/php-common.ts delete mode 100644 src/emitters/php-expr.ts delete mode 100644 src/emitters/php-harness.ts delete mode 100644 src/emitters/react.ts delete mode 100644 src/emitters/solid.ts delete mode 100644 src/emitters/svelte.ts delete mode 100644 src/emitters/templ.ts delete mode 100644 src/emitters/ts-common.ts delete mode 100644 src/emitters/twig-expr.ts delete mode 100644 src/emitters/twig.ts delete mode 100644 src/emitters/vue.ts delete mode 100644 src/infrastructure/cli.ts delete mode 100644 tests/domain.test.ts delete mode 100644 tests/emitters.test.ts delete mode 100644 tests/global-setup.ts delete mode 100644 tests/parity.latte.test.ts delete mode 100644 tests/parity.templ.test.ts delete mode 100644 tests/parity.test.ts delete mode 100644 tests/parity.twig.test.ts delete mode 100644 tests/preload-bun.ts delete mode 100644 tests/shims.d.ts delete mode 100644 tests/support/ensure-generated.ts delete mode 100644 tests/support/fixtures.ts delete mode 100644 tests/support/generated-ui.ts delete mode 100644 tests/support/normalize.ts delete mode 100644 tests/support/php.ts delete mode 100644 tests/support/props.ts delete mode 100644 tmp-alert-comp.js create mode 100644 tsconfig.base.json delete mode 100644 tsconfig.generated.json delete mode 100644 vitest.config.ts create mode 100644 xgen/README.md create mode 100644 xgen/check/README.md create mode 100644 xgen/check/package.json create mode 100644 xgen/check/src/aria.ts create mode 100644 xgen/check/src/audit-rules.ts create mode 100644 xgen/check/src/audit.ts create mode 100644 xgen/check/src/blocks.ts create mode 100644 xgen/check/src/corners.ts create mode 100644 xgen/check/src/dictionary.ts create mode 100644 xgen/check/src/e2e/blocks.ts create mode 100644 xgen/check/src/e2e/catalog.ts create mode 100644 xgen/check/src/e2e/common.ts create mode 100644 xgen/check/src/e2e/facts.ts create mode 100644 xgen/check/src/e2e/generic.ts create mode 100644 xgen/check/src/e2e/html.ts create mode 100644 xgen/check/src/e2e/index.ts create mode 100644 xgen/check/src/e2e/page-checks.ts create mode 100644 xgen/check/src/e2e/plans.ts create mode 100644 xgen/check/src/e2e/site.ts create mode 100644 xgen/check/src/e2e/skins.ts create mode 100644 xgen/check/src/e2e/theme.ts create mode 100644 xgen/check/src/index.ts create mode 100644 xgen/check/src/jinja2/index.ts create mode 100644 xgen/check/src/latte/index.ts create mode 100644 xgen/check/src/readability-allow.ts create mode 100644 xgen/check/src/readability.ts create mode 100644 xgen/check/src/registry.ts create mode 100644 xgen/check/src/result.ts create mode 100644 xgen/check/src/routes.ts create mode 100644 xgen/check/src/rules/detectors.ts create mode 100644 xgen/check/src/rules/index.ts create mode 100644 xgen/check/src/rules/ir.ts create mode 100644 xgen/check/src/rules/latte.ts create mode 100644 xgen/check/src/rules/react.ts create mode 100644 xgen/check/src/rules/solid.ts create mode 100644 xgen/check/src/rules/svelte.ts create mode 100644 xgen/check/src/rules/templ.ts create mode 100644 xgen/check/src/rules/twig.ts create mode 100644 xgen/check/src/rules/vue.ts create mode 100644 xgen/check/src/rules/zones.ts create mode 100644 xgen/check/src/shadows.ts create mode 100644 xgen/check/src/shots.ts create mode 100644 xgen/check/src/solid/index.ts create mode 100644 xgen/check/src/spacing.ts create mode 100644 xgen/check/src/style-zones.ts create mode 100644 xgen/check/src/templ/blocks.ts create mode 100644 xgen/check/src/templ/bricks.ts create mode 100644 xgen/check/src/templ/index.ts create mode 100644 xgen/check/src/templ/normalize.ts create mode 100644 xgen/check/src/twig/index.ts create mode 100644 xgen/check/src/visual.ts create mode 100644 xgen/check/test/audit.test.ts create mode 100644 xgen/check/test/check.test.ts create mode 100644 xgen/check/test/dictionary.test.ts create mode 100644 xgen/check/test/readability.test.ts create mode 100644 xgen/check/test/rules-latte.test.ts create mode 100644 xgen/check/test/rules-solid.test.ts create mode 100644 xgen/check/test/rules-templ.test.ts create mode 100644 xgen/check/test/rules.test.ts create mode 100644 xgen/check/test/style-zones.test.ts create mode 100644 xgen/check/tools/readability-allow.ts create mode 100644 xgen/check/tools/rules.ts create mode 100644 xgen/cli/README.md create mode 100644 xgen/cli/package.json create mode 100755 xgen/cli/src/cli.ts create mode 100644 xgen/cli/test/cli.test.ts create mode 100644 xgen/content/ui/en.json create mode 100644 xgen/docs/audit-2026-10-05.md create mode 100644 xgen/docs/block-data.md create mode 100644 xgen/docs/blocks.md create mode 100644 xgen/docs/canary-coverage.md create mode 100644 xgen/docs/migrations.md create mode 100644 xgen/docs/vibeui-coverage.md create mode 100644 xgen/fixtures/activity.json create mode 100644 xgen/fixtures/article.json create mode 100644 xgen/fixtures/beforeafter.json create mode 100644 xgen/fixtures/bento.json create mode 100644 xgen/fixtures/cards.json create mode 100644 xgen/fixtures/cart.json create mode 100644 xgen/fixtures/categories.json create mode 100644 xgen/fixtures/channels.json create mode 100644 xgen/fixtures/chapters.json create mode 100644 xgen/fixtures/checklist.json create mode 100644 xgen/fixtures/community.json create mode 100644 xgen/fixtures/compare.json create mode 100644 xgen/fixtures/contacts.json create mode 100644 xgen/fixtures/credits.json create mode 100644 xgen/fixtures/crumbs.json create mode 100644 xgen/fixtures/days.json create mode 100644 xgen/fixtures/deckfaq.json create mode 100644 xgen/fixtures/deckitems.json create mode 100644 xgen/fixtures/deckplans.json create mode 100644 xgen/fixtures/deckquotes.json create mode 100644 xgen/fixtures/decks.json create mode 100644 xgen/fixtures/deckstats.json create mode 100644 xgen/fixtures/deliveryfacts.json create mode 100644 xgen/fixtures/departments.json create mode 100644 xgen/fixtures/details.json create mode 100644 xgen/fixtures/duo.json create mode 100644 xgen/fixtures/faq.json create mode 100644 xgen/fixtures/faqtabs.json create mode 100644 xgen/fixtures/features.json create mode 100644 xgen/fixtures/helplinks.json create mode 100644 xgen/fixtures/jobs.json create mode 100644 xgen/fixtures/lanes.json create mode 100644 xgen/fixtures/logos.json create mode 100644 xgen/fixtures/media.json create mode 100644 xgen/fixtures/megagroups.json create mode 100644 xgen/fixtures/members.json create mode 100644 xgen/fixtures/menulinks.json create mode 100644 xgen/fixtures/metrics.json create mode 100644 xgen/fixtures/milestones.json create mode 100644 xgen/fixtures/navlinks.json create mode 100644 xgen/fixtures/orders.json create mode 100644 xgen/fixtures/outline.json create mode 100644 xgen/fixtures/payments.json create mode 100644 xgen/fixtures/perks.json create mode 100644 xgen/fixtures/photos.json create mode 100644 xgen/fixtures/placeholders.json create mode 100644 xgen/fixtures/plans.json create mode 100644 xgen/fixtures/posts.json create mode 100644 xgen/fixtures/posttags.json create mode 100644 xgen/fixtures/products.json create mode 100644 xgen/fixtures/profilefacts.json create mode 100644 xgen/fixtures/projects.json create mode 100644 xgen/fixtures/promos.json create mode 100644 xgen/fixtures/prompts.json create mode 100644 xgen/fixtures/questions.json create mode 100644 xgen/fixtures/reviews.json create mode 100644 xgen/fixtures/rivals.json create mode 100644 xgen/fixtures/series.json create mode 100644 xgen/fixtures/sidenav.json create mode 100644 xgen/fixtures/sitemap.json create mode 100644 xgen/fixtures/skills.json create mode 100644 xgen/fixtures/specs.json create mode 100644 xgen/fixtures/stats.json create mode 100644 xgen/fixtures/steps.json create mode 100644 xgen/fixtures/stores.json create mode 100644 xgen/fixtures/subnav.json create mode 100644 xgen/fixtures/summary.json create mode 100644 xgen/fixtures/tabs.json create mode 100644 xgen/fixtures/taxonomies/category.json create mode 100644 xgen/fixtures/taxonomies/faq_category.json create mode 100644 xgen/fixtures/taxonomies/product_category.json create mode 100644 xgen/fixtures/taxonomies/project_category.json create mode 100644 xgen/fixtures/templates.json create mode 100644 xgen/fixtures/terminal.json create mode 100644 xgen/fixtures/testimonials.json create mode 100644 xgen/fixtures/tiers.json create mode 100644 xgen/fixtures/topics.json create mode 100644 xgen/fixtures/users.json create mode 100644 xgen/fixtures/values.json create mode 100644 xgen/fixtures/wizard.json create mode 100644 xgen/fixtures/zones.json create mode 100644 xgen/generator/README.md create mode 100644 xgen/generator/package.json create mode 100644 xgen/generator/src/index.ts create mode 100644 xgen/generator/src/jinja2.ts create mode 100644 xgen/generator/src/latte.ts create mode 100644 xgen/generator/src/organisms.ts create mode 100644 xgen/generator/src/plan.ts create mode 100644 xgen/generator/src/readme.ts create mode 100644 xgen/generator/src/source.ts create mode 100644 xgen/generator/src/templ.ts create mode 100644 xgen/generator/src/twig.ts create mode 100644 xgen/generator/src/write.ts create mode 100644 xgen/generator/test/generator.test.ts create mode 100644 xgen/generator/test/plan.test.ts create mode 100644 xgen/generator/test/source.test.ts create mode 100644 xgen/runtimes/core/README.md create mode 100644 xgen/runtimes/core/assets/app/core.ts create mode 100644 xgen/runtimes/core/assets/app/fields.ts create mode 100644 xgen/runtimes/core/assets/app/inspect.ts create mode 100644 xgen/runtimes/core/assets/app/skins.ts create mode 100644 xgen/runtimes/core/assets/app/theme.ts create mode 100644 xgen/runtimes/core/assets/app/visited.ts create mode 100644 xgen/runtimes/core/assets/styles/kit.css create mode 100644 xgen/runtimes/core/assets/styles/skins.css create mode 100644 xgen/runtimes/core/assets/styles/skins/NOTICE.md create mode 100644 xgen/runtimes/core/assets/styles/skins/amber-minimal.css create mode 100644 xgen/runtimes/core/assets/styles/skins/base.css create mode 100644 xgen/runtimes/core/assets/styles/skins/bubblegum.css create mode 100644 xgen/runtimes/core/assets/styles/skins/claude.css create mode 100644 xgen/runtimes/core/assets/styles/skins/cosmic-night.css create mode 100644 xgen/runtimes/core/assets/styles/skins/default.css create mode 100644 xgen/runtimes/core/assets/styles/skins/doom-64.css create mode 100644 xgen/runtimes/core/assets/styles/skins/kodama-grove.css create mode 100644 xgen/runtimes/core/assets/styles/skins/mocha-mousse.css create mode 100644 xgen/runtimes/core/assets/styles/skins/modern-minimal.css create mode 100644 xgen/runtimes/core/assets/styles/skins/neo-brutalism.css create mode 100644 xgen/runtimes/core/assets/styles/skins/notebook.css create mode 100644 xgen/runtimes/core/assets/styles/skins/perpetuity.css create mode 100644 xgen/runtimes/core/assets/styles/skins/skins.json create mode 100644 xgen/runtimes/core/assets/styles/skins/sky.css create mode 100644 xgen/runtimes/core/assets/styles/skins/supabase.css create mode 100644 xgen/runtimes/core/assets/styles/skins/t3-chat.css create mode 100644 xgen/runtimes/core/assets/styles/skins/violet-bloom.css create mode 100644 xgen/runtimes/core/assets/styles/theme.css create mode 100644 xgen/runtimes/core/assets/ts/a11y/dismiss.ts create mode 100644 xgen/runtimes/core/assets/ts/a11y/focus-trap.ts create mode 100644 xgen/runtimes/core/assets/ts/a11y/focusable.ts create mode 100644 xgen/runtimes/core/assets/ts/a11y/index.ts create mode 100644 xgen/runtimes/core/assets/ts/a11y/roving.ts create mode 100644 xgen/runtimes/core/assets/ts/a11y/scroll-lock.ts create mode 100644 xgen/runtimes/core/assets/ts/cn.ts create mode 100644 xgen/runtimes/core/assets/ts/env.ts create mode 100644 xgen/runtimes/core/assets/ts/expr.ts create mode 100644 xgen/runtimes/core/assets/ts/format.ts create mode 100644 xgen/runtimes/core/assets/ts/index.ts create mode 100644 xgen/runtimes/core/assets/ts/tags.ts create mode 100644 xgen/runtimes/core/assets/ts/variants.ts create mode 100644 xgen/runtimes/core/package.json create mode 100644 xgen/runtimes/core/src/app-common.ts create mode 100644 xgen/runtimes/core/src/common.ts create mode 100644 xgen/runtimes/core/src/decks.ts create mode 100644 xgen/runtimes/core/src/index.ts create mode 100644 xgen/runtimes/core/src/preset.ts create mode 100644 xgen/runtimes/core/src/screen-model.ts create mode 100644 xgen/runtimes/core/src/ts-common.ts rename {src/emitters => xgen/runtimes/core/src}/ts-expr.ts (98%) create mode 100644 xgen/runtimes/core/src/variant-table.ts create mode 100644 xgen/runtimes/core/src/view.ts create mode 100644 xgen/runtimes/core/test/decks.test.ts create mode 100644 xgen/runtimes/core/test/format.test.ts create mode 100644 xgen/runtimes/core/test/runtime.test.ts create mode 100644 xgen/runtimes/core/test/screen-model.test.ts create mode 100644 xgen/runtimes/core/test/skins.test.ts create mode 100644 xgen/runtimes/core/test/variant-table.test.ts create mode 100644 xgen/runtimes/core/tools/skin-colors.ts create mode 100644 xgen/runtimes/core/tools/skins-hsl.ts create mode 100644 xgen/runtimes/core/tools/tweakcn-skins.ts create mode 100644 xgen/runtimes/jinja2/.gitignore create mode 100644 xgen/runtimes/jinja2/README.md create mode 100644 xgen/runtimes/jinja2/assets/lucide-icon.html.j2 create mode 100644 xgen/runtimes/jinja2/assets/parity.py create mode 100644 xgen/runtimes/jinja2/assets/py/ui8kit_jinja/__init__.py create mode 100644 xgen/runtimes/jinja2/assets/py/ui8kit_jinja/cn_merge.py create mode 100644 xgen/runtimes/jinja2/assets/py/ui8kit_jinja/runtime.py create mode 100644 xgen/runtimes/jinja2/package.json create mode 100644 xgen/runtimes/jinja2/src/index.ts create mode 100644 xgen/runtimes/jinja2/test/emit.test.ts create mode 100644 xgen/runtimes/latte/README.md create mode 100644 xgen/runtimes/latte/assets/lucide-icon.latte create mode 100644 xgen/runtimes/latte/assets/parity.php create mode 100644 xgen/runtimes/latte/assets/php/Extension.php create mode 100644 xgen/runtimes/latte/package.json create mode 100644 xgen/runtimes/latte/src/index.ts create mode 100644 xgen/runtimes/latte/test/emit.test.ts create mode 100644 xgen/runtimes/react/README.md create mode 100644 xgen/runtimes/react/assets/LucideIcon.tsx create mode 100644 xgen/runtimes/react/assets/ScreenOutlet.tsx rename {generated/ui/slot => xgen/runtimes/react/assets}/slot.tsx (100%) create mode 100644 xgen/runtimes/react/assets/url.ts create mode 100644 xgen/runtimes/react/package.json create mode 100644 xgen/runtimes/react/src/app.ts create mode 100644 xgen/runtimes/react/src/dom.ts create mode 100644 xgen/runtimes/react/src/emit.ts create mode 100644 xgen/runtimes/react/src/index.ts create mode 100644 xgen/runtimes/react/src/jsx.ts create mode 100644 xgen/runtimes/react/src/view.ts create mode 100644 xgen/runtimes/react/test/emit.test.ts create mode 100644 xgen/runtimes/solid/README.md create mode 100644 xgen/runtimes/solid/assets/LucideIcon.tsx create mode 100644 xgen/runtimes/solid/assets/ScreenOutlet.tsx create mode 100644 xgen/runtimes/solid/assets/url.ts create mode 100644 xgen/runtimes/solid/package.json create mode 100644 xgen/runtimes/solid/src/app.ts create mode 100644 xgen/runtimes/solid/src/dom.ts create mode 100644 xgen/runtimes/solid/src/emit.ts create mode 100644 xgen/runtimes/solid/src/index.ts create mode 100644 xgen/runtimes/solid/src/jsx.ts create mode 100644 xgen/runtimes/solid/src/view.ts create mode 100644 xgen/runtimes/solid/test/emit.test.ts create mode 100644 xgen/runtimes/svelte/README.md create mode 100644 xgen/runtimes/svelte/assets/LucideIcon.svelte create mode 100644 xgen/runtimes/svelte/assets/url.svelte.ts create mode 100644 xgen/runtimes/svelte/package.json create mode 100644 xgen/runtimes/svelte/src/app.ts create mode 100644 xgen/runtimes/svelte/src/emit.ts create mode 100644 xgen/runtimes/svelte/src/index.ts create mode 100644 xgen/runtimes/svelte/src/view.ts create mode 100644 xgen/runtimes/svelte/test/emit.test.ts create mode 100644 xgen/runtimes/templ/README.md create mode 100644 xgen/runtimes/templ/assets/LucideIcon.templ create mode 100644 xgen/runtimes/templ/assets/go.sum create mode 100644 xgen/runtimes/templ/assets/go/cn_merge.go rename {generated/utils => xgen/runtimes/templ/assets/go}/cn_merge_test.go (100%) create mode 100644 xgen/runtimes/templ/assets/go/dyn.go rename {generated/utils => xgen/runtimes/templ/assets/go}/expr.go (100%) rename {generated/utils => xgen/runtimes/templ/assets/go}/heading.go (100%) rename {generated/utils => xgen/runtimes/templ/assets/go}/tags.go (100%) create mode 100644 xgen/runtimes/templ/assets/go/utils.go create mode 100644 xgen/runtimes/templ/assets/go/variants_json.go create mode 100644 xgen/runtimes/templ/package.json rename {src/emitters => xgen/runtimes/templ/src}/go-expr.ts (97%) rename {src/emitters => xgen/runtimes/templ/src}/go-harness.ts (92%) create mode 100644 xgen/runtimes/templ/src/index.ts create mode 100644 xgen/runtimes/templ/src/organism.ts create mode 100644 xgen/runtimes/templ/src/templ.ts create mode 100644 xgen/runtimes/templ/test/emit.test.ts create mode 100644 xgen/runtimes/twig/README.md create mode 100644 xgen/runtimes/twig/assets/lucide-icon.html.twig create mode 100644 xgen/runtimes/twig/assets/parity.php create mode 100644 xgen/runtimes/twig/assets/php-shared/CnMerge.php create mode 100644 xgen/runtimes/twig/assets/php-shared/Runtime.php create mode 100644 xgen/runtimes/twig/assets/php/Extension.php create mode 100644 xgen/runtimes/twig/package.json create mode 100644 xgen/runtimes/twig/src/brick.ts create mode 100644 xgen/runtimes/twig/src/dialect.ts create mode 100644 xgen/runtimes/twig/src/index.ts create mode 100644 xgen/runtimes/twig/src/organism.ts create mode 100644 xgen/runtimes/twig/src/php.ts create mode 100644 xgen/runtimes/twig/test/emit.test.ts create mode 100644 xgen/runtimes/vue/README.md create mode 100644 xgen/runtimes/vue/assets/LucideIcon.vue create mode 100644 xgen/runtimes/vue/assets/ScreenOutlet.vue create mode 100644 xgen/runtimes/vue/assets/url.ts create mode 100644 xgen/runtimes/vue/package.json create mode 100644 xgen/runtimes/vue/src/app.ts create mode 100644 xgen/runtimes/vue/src/emit.ts create mode 100644 xgen/runtimes/vue/src/index.ts create mode 100644 xgen/runtimes/vue/src/template.ts create mode 100644 xgen/runtimes/vue/src/view.ts create mode 100644 xgen/runtimes/vue/test/emit.test.ts create mode 100644 xgen/schema/README.md create mode 100644 xgen/schema/codex/blocks.json create mode 100644 xgen/schema/codex/blocks.schema.json create mode 100644 xgen/schema/codex/manifest.json create mode 100644 xgen/schema/package.json create mode 100644 xgen/schema/schemas/app.schema.json create mode 100644 xgen/schema/schemas/block.schema.json create mode 100644 xgen/schema/schemas/collection.schema.json create mode 100644 xgen/schema/schemas/composed.schema.json create mode 100644 xgen/schema/schemas/dictionary.schema.json create mode 100644 xgen/schema/schemas/organism.schema.json create mode 100644 xgen/schema/schemas/preset.schema.json create mode 100644 xgen/schema/schemas/screen.schema.json create mode 100644 xgen/schema/schemas/spec.schema.json create mode 100644 xgen/schema/schemas/variants.schema.json create mode 100644 xgen/schema/src/codex-blocks.ts create mode 100644 xgen/schema/src/codex-validate.ts create mode 100644 xgen/schema/src/codex.ts create mode 100644 xgen/schema/src/index.ts create mode 100644 xgen/schema/src/paths.ts create mode 100644 xgen/schema/src/versions.ts create mode 100644 xgen/schema/test/blocks.test.ts create mode 100644 xgen/schema/test/codex-blocks.test.ts create mode 100644 xgen/schema/test/codex.test.ts create mode 100644 xgen/schema/test/schema.test.ts create mode 100644 xgen/screens/README.md create mode 100644 xgen/screens/package.json create mode 100644 xgen/screens/src/authored.ts create mode 100644 xgen/screens/src/authoring/README.md create mode 100644 xgen/screens/src/authoring/blocks/account.ts create mode 100644 xgen/screens/src/authoring/blocks/checkout.ts create mode 100644 xgen/screens/src/authoring/blocks/commerce.ts create mode 100644 xgen/screens/src/authoring/blocks/content.ts create mode 100644 xgen/screens/src/authoring/blocks/cta-proof.ts create mode 100644 xgen/screens/src/authoring/blocks/dashboard.ts create mode 100644 xgen/screens/src/authoring/blocks/delivery.ts create mode 100644 xgen/screens/src/authoring/blocks/faq-split.ts create mode 100644 xgen/screens/src/authoring/blocks/feature-showcase.ts create mode 100644 xgen/screens/src/authoring/blocks/feature-split.ts create mode 100644 xgen/screens/src/authoring/blocks/footer-split.ts create mode 100644 xgen/screens/src/authoring/blocks/guide.ts create mode 100644 xgen/screens/src/authoring/blocks/hero-split.ts create mode 100644 xgen/screens/src/authoring/blocks/landing-hero.ts create mode 100644 xgen/screens/src/authoring/blocks/landing.ts create mode 100644 xgen/screens/src/authoring/blocks/marketing.ts create mode 100644 xgen/screens/src/authoring/blocks/media-list.ts create mode 100644 xgen/screens/src/authoring/blocks/navigation.ts create mode 100644 xgen/screens/src/authoring/blocks/organisms.ts create mode 100644 xgen/screens/src/authoring/blocks/page-trail.ts create mode 100644 xgen/screens/src/authoring/blocks/people.ts create mode 100644 xgen/screens/src/authoring/blocks/post-showcase.ts create mode 100644 xgen/screens/src/authoring/blocks/post-split.ts create mode 100644 xgen/screens/src/authoring/blocks/pricing-card.ts create mode 100644 xgen/screens/src/authoring/blocks/pricing-more.ts create mode 100644 xgen/screens/src/authoring/blocks/promo.ts create mode 100644 xgen/screens/src/authoring/blocks/quote-split.ts create mode 100644 xgen/screens/src/authoring/blocks/shells.ts create mode 100644 xgen/screens/src/authoring/blocks/showcase.ts create mode 100644 xgen/screens/src/authoring/blocks/signup.ts create mode 100644 xgen/screens/src/authoring/blocks/site.ts create mode 100644 xgen/screens/src/authoring/blocks/storefront.ts create mode 100644 xgen/screens/src/authoring/blocks/story-tabs.ts create mode 100644 xgen/screens/src/authoring/blocks/templates.ts create mode 100644 xgen/screens/src/authoring/blocks/work.ts create mode 100644 xgen/screens/src/authoring/blocks/workspace.ts create mode 100644 xgen/screens/src/authoring/components/app-main.ts create mode 100644 xgen/screens/src/authoring/components/auth.ts create mode 100644 xgen/screens/src/authoring/components/cart-table.ts create mode 100644 xgen/screens/src/authoring/components/checkout-parts.ts create mode 100644 xgen/screens/src/authoring/components/compare.ts create mode 100644 xgen/screens/src/authoring/components/contracts.ts create mode 100644 xgen/screens/src/authoring/components/cta-proof-parts.ts create mode 100644 xgen/screens/src/authoring/components/cta.ts create mode 100644 xgen/screens/src/authoring/components/faq-parts.ts create mode 100644 xgen/screens/src/authoring/components/feature-split-parts.ts create mode 100644 xgen/screens/src/authoring/components/features.ts create mode 100644 xgen/screens/src/authoring/components/footer-split-parts.ts create mode 100644 xgen/screens/src/authoring/components/footer.ts create mode 100644 xgen/screens/src/authoring/components/frames.ts create mode 100644 xgen/screens/src/authoring/components/hero-components.ts create mode 100644 xgen/screens/src/authoring/components/hero-split-parts.ts create mode 100644 xgen/screens/src/authoring/components/landmarks.ts create mode 100644 xgen/screens/src/authoring/components/marketing.ts create mode 100644 xgen/screens/src/authoring/components/media-list-parts.ts create mode 100644 xgen/screens/src/authoring/components/nav.ts create mode 100644 xgen/screens/src/authoring/components/number-field.ts create mode 100644 xgen/screens/src/authoring/components/orders.ts create mode 100644 xgen/screens/src/authoring/components/page-trail-parts.ts create mode 100644 xgen/screens/src/authoring/components/parts.ts create mode 100644 xgen/screens/src/authoring/components/patterns.ts create mode 100644 xgen/screens/src/authoring/components/people-parts.ts create mode 100644 xgen/screens/src/authoring/components/post-showcase-parts.ts create mode 100644 xgen/screens/src/authoring/components/post-split-parts.ts create mode 100644 xgen/screens/src/authoring/components/product-parts.ts create mode 100644 xgen/screens/src/authoring/components/quote-split-parts.ts create mode 100644 xgen/screens/src/authoring/components/shell-parts.ts create mode 100644 xgen/screens/src/authoring/components/shop-parts.ts create mode 100644 xgen/screens/src/authoring/components/story-tabs-parts.ts create mode 100644 xgen/screens/src/authoring/components/visuals.ts create mode 100644 xgen/screens/src/authoring/components/work-parts.ts create mode 100644 xgen/screens/src/authoring/forms.ts create mode 100644 xgen/screens/src/authoring/gallery/block-kit.ts create mode 100644 xgen/screens/src/authoring/gallery/blocks-commerce.ts create mode 100644 xgen/screens/src/authoring/gallery/blocks-company.ts create mode 100644 xgen/screens/src/authoring/gallery/blocks-ctas.ts create mode 100644 xgen/screens/src/authoring/gallery/blocks-data.ts create mode 100644 xgen/screens/src/authoring/gallery/blocks-define.ts create mode 100644 xgen/screens/src/authoring/gallery/blocks-faqs.ts create mode 100644 xgen/screens/src/authoring/gallery/blocks-feature-showcase.ts create mode 100644 xgen/screens/src/authoring/gallery/blocks-feature-splits.ts create mode 100644 xgen/screens/src/authoring/gallery/blocks-footers.ts create mode 100644 xgen/screens/src/authoring/gallery/blocks-heroes.ts create mode 100644 xgen/screens/src/authoring/gallery/blocks-media-lists.ts create mode 100644 xgen/screens/src/authoring/gallery/blocks-more.ts create mode 100644 xgen/screens/src/authoring/gallery/blocks-page-trails.ts create mode 100644 xgen/screens/src/authoring/gallery/blocks-post-showcase.ts create mode 100644 xgen/screens/src/authoring/gallery/blocks-posts.ts create mode 100644 xgen/screens/src/authoring/gallery/blocks-quotes.ts create mode 100644 xgen/screens/src/authoring/gallery/blocks-shells.ts create mode 100644 xgen/screens/src/authoring/gallery/blocks-shop.ts create mode 100644 xgen/screens/src/authoring/gallery/blocks-story-tabs.ts create mode 100644 xgen/screens/src/authoring/gallery/blocks-vibe.ts create mode 100644 xgen/screens/src/authoring/gallery/blocks.ts create mode 100644 xgen/screens/src/authoring/gallery/catalog.ts create mode 100644 xgen/screens/src/authoring/gallery/coverage.ts create mode 100644 xgen/screens/src/authoring/gallery/skins.ts create mode 100644 xgen/screens/src/authoring/kit.ts create mode 100644 xgen/screens/src/authoring/landmarks.ts create mode 100644 xgen/screens/src/authoring/placeholders.ts create mode 100644 xgen/screens/src/authoring/presets/default-preset.ts create mode 100644 xgen/screens/src/authoring/presets/index.ts create mode 100644 xgen/screens/src/authoring/props.ts create mode 100644 xgen/screens/src/authoring/screens/plans-screen.ts create mode 100644 xgen/screens/src/authoring/screens/themes.ts create mode 100644 xgen/screens/src/authoring/ux.ts create mode 100644 xgen/screens/src/build.ts create mode 100644 xgen/screens/src/compose-catalog.ts create mode 100644 xgen/screens/src/compose-kit.ts create mode 100644 xgen/screens/src/compose-skins.ts create mode 100644 xgen/screens/src/compose.ts create mode 100644 xgen/screens/src/index.ts create mode 100644 xgen/screens/src/ir.ts create mode 100644 xgen/screens/src/load.ts create mode 100644 xgen/screens/src/print.ts create mode 100644 xgen/screens/src/validate-view.ts create mode 100644 xgen/screens/test/screens.test.ts create mode 100644 xgen/screens/tools/author-block-texts.ts create mode 100644 xgen/screens/tools/author-coverage.ts create mode 100644 xgen/screens/tools/author-theme-texts.ts create mode 100644 xgen/spec/README.md create mode 100644 xgen/spec/package.json create mode 100644 xgen/spec/src/derive.ts create mode 100644 xgen/spec/src/domain/cn.ts rename {src => xgen/spec/src}/domain/expr.ts (100%) rename {src => xgen/spec/src}/domain/model.ts (100%) rename {src => xgen/spec/src}/domain/naming.ts (100%) rename {src => xgen/spec/src}/domain/recipe.ts (78%) rename {src => xgen/spec/src}/domain/render.ts (100%) create mode 100644 xgen/spec/src/domain/tags.ts rename {src => xgen/spec/src}/domain/validate.ts (100%) create mode 100644 xgen/spec/src/index.ts create mode 100644 xgen/spec/src/load.ts create mode 100644 xgen/spec/src/spec-file.ts create mode 100644 xgen/spec/test/specs.test.ts create mode 100644 xgen/spec/tools/add-lucide.ts create mode 100644 xgen/spec/tools/author-block-recipes.ts create mode 100644 xgen/spec/tools/author-bricks.ts create mode 100644 xgen/spec/tools/harvest-lucide.ts create mode 100644 xgen/spec/tools/import-codegen.ts create mode 100644 xgen/spec/tools/import-recipes.ts create mode 100644 xgen/specs/_nonportable.json create mode 100644 xgen/specs/assets/lucide-icons.json create mode 100644 xgen/specs/blocks/about.json create mode 100644 xgen/specs/blocks/aboutme.json create mode 100644 xgen/specs/blocks/accordion.json create mode 100644 xgen/specs/blocks/activity.json create mode 100644 xgen/specs/blocks/announcement.json create mode 100644 xgen/specs/blocks/article.json create mode 100644 xgen/specs/blocks/auth.json create mode 100644 xgen/specs/blocks/authpage.json create mode 100644 xgen/specs/blocks/beforeafter.json create mode 100644 xgen/specs/blocks/bento.json create mode 100644 xgen/specs/blocks/bottomnav.json create mode 100644 xgen/specs/blocks/cart.json create mode 100644 xgen/specs/blocks/cartdrawer.json create mode 100644 xgen/specs/blocks/cartpage.json create mode 100644 xgen/specs/blocks/categories.json create mode 100644 xgen/specs/blocks/channels.json create mode 100644 xgen/specs/blocks/chart.json create mode 100644 xgen/specs/blocks/checklist.json create mode 100644 xgen/specs/blocks/checkout.json create mode 100644 xgen/specs/blocks/compare.json create mode 100644 xgen/specs/blocks/contact.json create mode 100644 xgen/specs/blocks/cookie.json create mode 100644 xgen/specs/blocks/credits.json create mode 100644 xgen/specs/blocks/cta.json create mode 100644 xgen/specs/blocks/ctaproof.json create mode 100644 xgen/specs/blocks/dashshell.json create mode 100644 xgen/specs/blocks/delivery.json create mode 100644 xgen/specs/blocks/empty.json create mode 100644 xgen/specs/blocks/errorpage.json create mode 100644 xgen/specs/blocks/faq.json create mode 100644 xgen/specs/blocks/faqsplit.json create mode 100644 xgen/specs/blocks/features.json create mode 100644 xgen/specs/blocks/featureshowcase.json create mode 100644 xgen/specs/blocks/featuresplit.json create mode 100644 xgen/specs/blocks/featuretabs.json create mode 100644 xgen/specs/blocks/footer.json create mode 100644 xgen/specs/blocks/footersplit.json create mode 100644 xgen/specs/blocks/header.json create mode 100644 xgen/specs/blocks/hero.json create mode 100644 xgen/specs/blocks/herosplit.json create mode 100644 xgen/specs/blocks/iconwall.json create mode 100644 xgen/specs/blocks/jobs.json create mode 100644 xgen/specs/blocks/kanban.json create mode 100644 xgen/specs/blocks/locations.json create mode 100644 xgen/specs/blocks/logos.json create mode 100644 xgen/specs/blocks/medialist.json create mode 100644 xgen/specs/blocks/megamenu.json create mode 100644 xgen/specs/blocks/metrics.json create mode 100644 xgen/specs/blocks/navbar.json create mode 100644 xgen/specs/blocks/newsletter.json create mode 100644 xgen/specs/blocks/orders.json create mode 100644 xgen/specs/blocks/overview.json create mode 100644 xgen/specs/blocks/pagehead.json create mode 100644 xgen/specs/blocks/pagetrail.json create mode 100644 xgen/specs/blocks/photos.json create mode 100644 xgen/specs/blocks/plan.json create mode 100644 xgen/specs/blocks/postheader.json create mode 100644 xgen/specs/blocks/posts.json create mode 100644 xgen/specs/blocks/postshowcase.json create mode 100644 xgen/specs/blocks/postsplit.json create mode 100644 xgen/specs/blocks/pricing.json create mode 100644 xgen/specs/blocks/product.json create mode 100644 xgen/specs/blocks/productinfo.json create mode 100644 xgen/specs/blocks/products.json create mode 100644 xgen/specs/blocks/profile.json create mode 100644 xgen/specs/blocks/projects.json create mode 100644 xgen/specs/blocks/proof.json create mode 100644 xgen/specs/blocks/quotesplit.json create mode 100644 xgen/specs/blocks/reviews.json create mode 100644 xgen/specs/blocks/shell.json create mode 100644 xgen/specs/blocks/sidenav.json create mode 100644 xgen/specs/blocks/sitemap.json create mode 100644 xgen/specs/blocks/skeleton.json create mode 100644 xgen/specs/blocks/slots.json create mode 100644 xgen/specs/blocks/stats.json create mode 100644 xgen/specs/blocks/stepper.json create mode 100644 xgen/specs/blocks/steps.json create mode 100644 xgen/specs/blocks/sticky.json create mode 100644 xgen/specs/blocks/storehero.json create mode 100644 xgen/specs/blocks/storytabs.json create mode 100644 xgen/specs/blocks/summary.json create mode 100644 xgen/specs/blocks/team.json create mode 100644 xgen/specs/blocks/templates.json create mode 100644 xgen/specs/blocks/testimonials.json create mode 100644 xgen/specs/blocks/timeline.json create mode 100644 xgen/specs/blocks/tour.json create mode 100644 xgen/specs/blocks/usage.json create mode 100644 xgen/specs/blocks/usp.json create mode 100644 xgen/specs/blocks/videomodal.json create mode 100644 xgen/specs/blocks/videos.json create mode 100644 xgen/specs/blocks/wizard.json create mode 100644 xgen/specs/blocks/zones.json create mode 100644 xgen/specs/organisms/about-company.json create mode 100644 xgen/specs/organisms/about-me.json create mode 100644 xgen/specs/organisms/activity-feed.json create mode 100644 xgen/specs/organisms/announcement-bar.json create mode 100644 xgen/specs/organisms/app-main.json create mode 100644 xgen/specs/organisms/app-shell.json create mode 100644 xgen/specs/organisms/article-block.json create mode 100644 xgen/specs/organisms/article-body.json create mode 100644 xgen/specs/organisms/auth-card.json create mode 100644 xgen/specs/organisms/auth-form.json create mode 100644 xgen/specs/organisms/auth-layout.json create mode 100644 xgen/specs/organisms/before-after.json create mode 100644 xgen/specs/organisms/bento-grid.json create mode 100644 xgen/specs/organisms/bottom-nav.json create mode 100644 xgen/specs/organisms/cart-drawer.json create mode 100644 xgen/specs/organisms/cart-list.json create mode 100644 xgen/specs/organisms/cart-summary-card.json create mode 100644 xgen/specs/organisms/cart-table.json create mode 100644 xgen/specs/organisms/category-nav.json create mode 100644 xgen/specs/organisms/chart-panel.json create mode 100644 xgen/specs/organisms/checklist.json create mode 100644 xgen/specs/organisms/checkout-form.json create mode 100644 xgen/specs/organisms/checkout-step.json create mode 100644 xgen/specs/organisms/checkout-submit.json create mode 100644 xgen/specs/organisms/compare-mark.json create mode 100644 xgen/specs/organisms/comparison-table.json create mode 100644 xgen/specs/organisms/contact-form.json create mode 100644 xgen/specs/organisms/cookie-banner.json create mode 100644 xgen/specs/organisms/credit-packs.json create mode 100644 xgen/specs/organisms/cta-actions.json create mode 100644 xgen/specs/organisms/cta-band.json create mode 100644 xgen/specs/organisms/cta-banner.json create mode 100644 xgen/specs/organisms/cta-proof-items.json create mode 100644 xgen/specs/organisms/cta-proof.json create mode 100644 xgen/specs/organisms/dashboard-overview.json create mode 100644 xgen/specs/organisms/dashboard-shell.json create mode 100644 xgen/specs/organisms/delivery-info.json create mode 100644 xgen/specs/organisms/drawer-lines.json create mode 100644 xgen/specs/organisms/empty-panel.json create mode 100644 xgen/specs/organisms/error-page.json create mode 100644 xgen/specs/organisms/faq-cards.json create mode 100644 xgen/specs/organisms/faq-disclosures.json create mode 100644 xgen/specs/organisms/faq-finder.json create mode 100644 xgen/specs/organisms/faq-help.json create mode 100644 xgen/specs/organisms/faq-list.json create mode 100644 xgen/specs/organisms/faq-split.json create mode 100644 xgen/specs/organisms/feature-accordion.json create mode 100644 xgen/specs/organisms/feature-cards.json create mode 100644 xgen/specs/organisms/feature-grid.json create mode 100644 xgen/specs/organisms/feature-metric-cards.json create mode 100644 xgen/specs/organisms/feature-pairs.json create mode 100644 xgen/specs/organisms/feature-rows.json create mode 100644 xgen/specs/organisms/feature-showcase.json create mode 100644 xgen/specs/organisms/feature-split.json create mode 100644 xgen/specs/organisms/feature-stat-rows.json create mode 100644 xgen/specs/organisms/feature-sticky.json create mode 100644 xgen/specs/organisms/feature-tabs.json create mode 100644 xgen/specs/organisms/figure-block.json create mode 100644 xgen/specs/organisms/footer-brand.json create mode 100644 xgen/specs/organisms/footer-card.json create mode 100644 xgen/specs/organisms/footer-channels.json create mode 100644 xgen/specs/organisms/footer-columns.json create mode 100644 xgen/specs/organisms/footer-contacts.json create mode 100644 xgen/specs/organisms/footer-figures.json create mode 100644 xgen/specs/organisms/footer-group-cards.json create mode 100644 xgen/specs/organisms/footer-link-columns.json create mode 100644 xgen/specs/organisms/footer-points.json create mode 100644 xgen/specs/organisms/footer-signup-card.json create mode 100644 xgen/specs/organisms/footer-sitemap.json create mode 100644 xgen/specs/organisms/footer-split.json create mode 100644 xgen/specs/organisms/hero-badge.json create mode 100644 xgen/specs/organisms/hero-classic.json create mode 100644 xgen/specs/organisms/hero-head.json create mode 100644 xgen/specs/organisms/hero-prompt.json create mode 100644 xgen/specs/organisms/hero-split-extras.json create mode 100644 xgen/specs/organisms/hero-split-media.json create mode 100644 xgen/specs/organisms/hero-split.json create mode 100644 xgen/specs/organisms/icon-wall.json create mode 100644 xgen/specs/organisms/job-board.json create mode 100644 xgen/specs/organisms/job-cards.json create mode 100644 xgen/specs/organisms/kanban-board.json create mode 100644 xgen/specs/organisms/logo-cloud.json create mode 100644 xgen/specs/organisms/logo-ribbon.json create mode 100644 xgen/specs/organisms/logo-slot.json create mode 100644 xgen/specs/organisms/media-contacts.json create mode 100644 xgen/specs/organisms/media-figures.json create mode 100644 xgen/specs/organisms/media-list.json create mode 100644 xgen/specs/organisms/media-posts.json create mode 100644 xgen/specs/organisms/media-review.json create mode 100644 xgen/specs/organisms/media-steps.json create mode 100644 xgen/specs/organisms/media-topics.json create mode 100644 xgen/specs/organisms/mega-menu.json create mode 100644 xgen/specs/organisms/member-row.json create mode 100644 xgen/specs/organisms/menu-entry.json create mode 100644 xgen/specs/organisms/metric-row.json create mode 100644 xgen/specs/organisms/milestone-timeline.json create mode 100644 xgen/specs/organisms/nav-actions.json create mode 100644 xgen/specs/organisms/nav-bar-menu.json create mode 100644 xgen/specs/organisms/nav-bar.json create mode 100644 xgen/specs/organisms/nav-block.json create mode 100644 xgen/specs/organisms/nav-links.json create mode 100644 xgen/specs/organisms/newsletter-form.json create mode 100644 xgen/specs/organisms/number-field.json create mode 100644 xgen/specs/organisms/offer-media.json create mode 100644 xgen/specs/organisms/order-rows.json create mode 100644 xgen/specs/organisms/order-summary.json create mode 100644 xgen/specs/organisms/order-table.json create mode 100644 xgen/specs/organisms/over-media.json create mode 100644 xgen/specs/organisms/page-aside.json create mode 100644 xgen/specs/organisms/page-crumbs.json create mode 100644 xgen/specs/organisms/page-intro.json create mode 100644 xgen/specs/organisms/page-trail.json create mode 100644 xgen/specs/organisms/payment-options.json create mode 100644 xgen/specs/organisms/photo-gallery.json create mode 100644 xgen/specs/organisms/post-actions.json create mode 100644 xgen/specs/organisms/post-author.json create mode 100644 xgen/specs/organisms/post-card.json create mode 100644 xgen/specs/organisms/post-feature.json create mode 100644 xgen/specs/organisms/post-grid.json create mode 100644 xgen/specs/organisms/post-header.json create mode 100644 xgen/specs/organisms/post-mini-card.json create mode 100644 xgen/specs/organisms/post-outline.json create mode 100644 xgen/specs/organisms/post-overlay-card.json create mode 100644 xgen/specs/organisms/post-showcase.json create mode 100644 xgen/specs/organisms/post-split.json create mode 100644 xgen/specs/organisms/post-stats.json create mode 100644 xgen/specs/organisms/post-tags.json create mode 100644 xgen/specs/organisms/pricing-card.json create mode 100644 xgen/specs/organisms/pricing-tiers.json create mode 100644 xgen/specs/organisms/product-card.json create mode 100644 xgen/specs/organisms/product-detail.json create mode 100644 xgen/specs/organisms/product-gallery.json create mode 100644 xgen/specs/organisms/product-grid.json create mode 100644 xgen/specs/organisms/product-info.json create mode 100644 xgen/specs/organisms/product-price.json create mode 100644 xgen/specs/organisms/profile-form.json create mode 100644 xgen/specs/organisms/project-grid.json create mode 100644 xgen/specs/organisms/project-tiles.json create mode 100644 xgen/specs/organisms/prompt-composer.json create mode 100644 xgen/specs/organisms/proof-band.json create mode 100644 xgen/specs/organisms/quote-card.json create mode 100644 xgen/specs/organisms/quote-figures.json create mode 100644 xgen/specs/organisms/quote-logo-tiles.json create mode 100644 xgen/specs/organisms/quote-proof.json create mode 100644 xgen/specs/organisms/quote-rating-panel.json create mode 100644 xgen/specs/organisms/quote-slot.json create mode 100644 xgen/specs/organisms/quote-split.json create mode 100644 xgen/specs/organisms/review-list.json create mode 100644 xgen/specs/organisms/search-palette.json create mode 100644 xgen/specs/organisms/shell-content.json create mode 100644 xgen/specs/organisms/shell-footer.json create mode 100644 xgen/specs/organisms/shell-sidebar.json create mode 100644 xgen/specs/organisms/shell-topbar.json create mode 100644 xgen/specs/organisms/shopping-cart.json create mode 100644 xgen/specs/organisms/sidebar-nav.json create mode 100644 xgen/specs/organisms/signup-wizard.json create mode 100644 xgen/specs/organisms/site-footer.json create mode 100644 xgen/specs/organisms/site-header.json create mode 100644 xgen/specs/organisms/sitemap-footer.json create mode 100644 xgen/specs/organisms/skeleton-layout.json create mode 100644 xgen/specs/organisms/slot-board.json create mode 100644 xgen/specs/organisms/slot-grid.json create mode 100644 xgen/specs/organisms/stat-figure.json create mode 100644 xgen/specs/organisms/stats-band.json create mode 100644 xgen/specs/organisms/stepper.json create mode 100644 xgen/specs/organisms/steps-list.json create mode 100644 xgen/specs/organisms/store-hero.json create mode 100644 xgen/specs/organisms/store-locations.json create mode 100644 xgen/specs/organisms/story-dots.json create mode 100644 xgen/specs/organisms/story-panel.json create mode 100644 xgen/specs/organisms/story-tabs.json create mode 100644 xgen/specs/organisms/support-channels.json create mode 100644 xgen/specs/organisms/team-grid.json create mode 100644 xgen/specs/organisms/template-grid.json create mode 100644 xgen/specs/organisms/testimonial-grid.json create mode 100644 xgen/specs/organisms/topic-chips.json create mode 100644 xgen/specs/organisms/tour-callout.json create mode 100644 xgen/specs/organisms/usage-calculator.json create mode 100644 xgen/specs/organisms/usp-strip.json create mode 100644 xgen/specs/organisms/video-grid.json create mode 100644 xgen/specs/organisms/video-modal.json create mode 100644 xgen/specs/organisms/weighted-title.json create mode 100644 xgen/specs/organisms/zone-rows.json create mode 100644 xgen/specs/organisms/zone-table.json create mode 100644 xgen/specs/parts/avatar.json create mode 100644 xgen/specs/parts/badge-square.json create mode 100644 xgen/specs/parts/bar-chart.json create mode 100644 xgen/specs/parts/bulk-bar.json create mode 100644 xgen/specs/parts/drop-zone.json create mode 100644 xgen/specs/parts/empty-state.json create mode 100644 xgen/specs/parts/field.json create mode 100644 xgen/specs/parts/filter-builder.json create mode 100644 xgen/specs/parts/logo-mark.json create mode 100644 xgen/specs/parts/logo-sidebar.json create mode 100644 xgen/specs/parts/meter-row.json create mode 100644 xgen/specs/parts/notice.json create mode 100644 xgen/specs/parts/page-header.json create mode 100644 xgen/specs/parts/pager.json create mode 100644 xgen/specs/parts/panel.json create mode 100644 xgen/specs/parts/pill.json create mode 100644 xgen/specs/parts/range-field.json create mode 100644 xgen/specs/parts/rating.json create mode 100644 xgen/specs/parts/region.json create mode 100644 xgen/specs/parts/search-field.json create mode 100644 xgen/specs/parts/stat-tile.json create mode 100644 xgen/specs/parts/table-toolbar.json create mode 100644 xgen/specs/parts/timeline.json create mode 100644 xgen/specs/patterns/action-group.json create mode 100644 xgen/specs/patterns/animated-backdrop.json create mode 100644 xgen/specs/patterns/backdrop.json create mode 100644 xgen/specs/patterns/carousel.json create mode 100644 xgen/specs/patterns/code-editor.json create mode 100644 xgen/specs/patterns/code-window.json create mode 100644 xgen/specs/patterns/count-up.json create mode 100644 xgen/specs/patterns/drawer.json create mode 100644 xgen/specs/patterns/dropdown-item.json create mode 100644 xgen/specs/patterns/dropdown-menu.json create mode 100644 xgen/specs/patterns/editor-tab.json create mode 100644 xgen/specs/patterns/file-tree-item.json create mode 100644 xgen/specs/patterns/file-tree.json create mode 100644 xgen/specs/patterns/icon-tab.json create mode 100644 xgen/specs/patterns/icon-tabs.json create mode 100644 xgen/specs/patterns/marquee.json create mode 100644 xgen/specs/patterns/media-frame.json create mode 100644 xgen/specs/patterns/nav-item-row.json create mode 100644 xgen/specs/patterns/nav-item.json create mode 100644 xgen/specs/patterns/popover.json create mode 100644 xgen/specs/patterns/prompt-input.json create mode 100644 xgen/specs/patterns/scroll-spy.json create mode 100644 xgen/specs/patterns/section-box.json create mode 100644 xgen/specs/patterns/section-column.json create mode 100644 xgen/specs/patterns/section-frame.json create mode 100644 xgen/specs/patterns/section-head.json create mode 100644 xgen/specs/patterns/section-header.json create mode 100644 xgen/specs/patterns/select-menu.json create mode 100644 xgen/specs/patterns/sidebar-panel.json create mode 100644 xgen/specs/patterns/smartbox.json create mode 100644 xgen/specs/patterns/sortable-list.json create mode 100644 xgen/specs/patterns/switcher-item.json create mode 100644 xgen/specs/patterns/switcher.json create mode 100644 xgen/specs/patterns/toaster.json create mode 100644 xgen/specs/patterns/typing-text.json create mode 100644 xgen/specs/patterns/video-embed.json create mode 100644 xgen/specs/presets/defaults.json create mode 100644 xgen/specs/recipes/avatar.variants.json create mode 100644 xgen/specs/recipes/badge-square.variants.json create mode 100644 xgen/specs/recipes/dropdown-menu.variants.json create mode 100644 xgen/specs/recipes/file-tree-item.variants.json create mode 100644 xgen/specs/recipes/icon-tab.variants.json create mode 100644 xgen/specs/recipes/logo-sidebar.variants.json create mode 100644 xgen/specs/recipes/media-frame.variants.json create mode 100644 xgen/specs/recipes/nav-item-content.variants.json create mode 100644 xgen/specs/recipes/nav-item.variants.json create mode 100644 xgen/specs/recipes/section-column.variants.json create mode 100644 xgen/specs/recipes/section-frame.variants.json create mode 100644 xgen/specs/recipes/section-head.variants.json create mode 100644 xgen/specs/recipes/sidebar-panel.variants.json create mode 100644 xgen/specs/recipes/smartbox.variants.json create mode 100644 xgen/specs/recipes/switcher-item.variants.json create mode 100644 xgen/specs/recipes/switcher.variants.json create mode 100644 xgen/specs/screens/blocks.json create mode 100644 xgen/specs/screens/catalog.json create mode 100644 xgen/specs/screens/plans.json create mode 100644 xgen/specs/screens/site.json create mode 100644 xgen/specs/screens/skins.json create mode 100644 xgen/specs/screens/theme-account-portal.json create mode 100644 xgen/specs/screens/theme-commerce-shop.json create mode 100644 xgen/specs/screens/theme-content-blog.json create mode 100644 xgen/specs/screens/theme-dashboard-console.json create mode 100644 xgen/specs/screens/theme-marketing-landing.json create mode 100644 xgen/specs/screens/theme-marketing-pricing.json create mode 100644 xgen/specs/screens/theme-marketing-product.json create mode 100644 xgen/specs/screens/theme-onboarding-flow.json create mode 100644 xgen/specs/screens/theme-promo-campaign.json create mode 100644 xgen/specs/screens/theme-support-center.json create mode 100644 xgen/specs/ui/alert.json create mode 100644 xgen/specs/ui/alert.variants.json create mode 100644 xgen/specs/ui/badge.json create mode 100644 xgen/specs/ui/badge.variants.json create mode 100644 xgen/specs/ui/block.json create mode 100644 xgen/specs/ui/block.variants.json create mode 100644 xgen/specs/ui/box.json create mode 100644 xgen/specs/ui/box.variants.json create mode 100644 xgen/specs/ui/breadcrumb.json create mode 100644 xgen/specs/ui/button-plain.json create mode 100644 xgen/specs/ui/button-plain.variants.json create mode 100644 xgen/specs/ui/button.json create mode 100644 xgen/specs/ui/button.variants.json create mode 100644 xgen/specs/ui/card.json create mode 100644 xgen/specs/ui/card.variants.json create mode 100644 xgen/specs/ui/checkbox.json create mode 100644 xgen/specs/ui/checkbox.variants.json create mode 100644 xgen/specs/ui/container.json create mode 100644 xgen/specs/ui/container.variants.json create mode 100644 xgen/specs/ui/controls.json create mode 100644 xgen/specs/ui/dialog.json create mode 100644 xgen/specs/ui/dialog.variants.json create mode 100644 xgen/specs/ui/disclosure.json create mode 100644 xgen/specs/ui/disclosure.variants.json create mode 100644 xgen/specs/ui/fieldset.variants.json create mode 100644 xgen/specs/ui/form-description.variants.json create mode 100644 xgen/specs/ui/form-item.variants.json create mode 100644 xgen/specs/ui/form-message.variants.json create mode 100644 xgen/specs/ui/form.json create mode 100644 xgen/specs/ui/form.variants.json create mode 100644 xgen/specs/ui/grid.json create mode 100644 xgen/specs/ui/grid.variants.json create mode 100644 xgen/specs/ui/group.json create mode 100644 xgen/specs/ui/group.variants.json create mode 100644 xgen/specs/ui/icon.json create mode 100644 xgen/specs/ui/icon.variants.json create mode 100644 xgen/specs/ui/iconbadge.json create mode 100644 xgen/specs/ui/iconbadge.variants.json create mode 100644 xgen/specs/ui/image.json create mode 100644 xgen/specs/ui/image.variants.json create mode 100644 xgen/specs/ui/inline.json create mode 100644 xgen/specs/ui/inline.variants.json create mode 100644 xgen/specs/ui/input.json create mode 100644 xgen/specs/ui/input.variants.json create mode 100644 xgen/specs/ui/label.json create mode 100644 xgen/specs/ui/label.variants.json create mode 100644 xgen/specs/ui/legend.variants.json create mode 100644 xgen/specs/ui/linebreak.json create mode 100644 xgen/specs/ui/linebreak.variants.json create mode 100644 xgen/specs/ui/link-plain.json create mode 100644 xgen/specs/ui/link-plain.variants.json create mode 100644 xgen/specs/ui/link.json create mode 100644 xgen/specs/ui/link.variants.json create mode 100644 xgen/specs/ui/list.json create mode 100644 xgen/specs/ui/list.variants.json create mode 100644 xgen/specs/ui/lucide-icon.json create mode 100644 xgen/specs/ui/lucide-icon.variants.json create mode 100644 xgen/specs/ui/meter.variants.json create mode 100644 xgen/specs/ui/progress.variants.json create mode 100644 xgen/specs/ui/radio.json create mode 100644 xgen/specs/ui/radio.variants.json create mode 100644 xgen/specs/ui/range.json create mode 100644 xgen/specs/ui/range.variants.json create mode 100644 xgen/specs/ui/select.json create mode 100644 xgen/specs/ui/select.variants.json create mode 100644 xgen/specs/ui/separator.json create mode 100644 xgen/specs/ui/separator.variants.json create mode 100644 xgen/specs/ui/skeleton.json create mode 100644 xgen/specs/ui/skeleton.variants.json create mode 100644 xgen/specs/ui/stack.json create mode 100644 xgen/specs/ui/stack.variants.json create mode 100644 xgen/specs/ui/summary.variants.json create mode 100644 xgen/specs/ui/switch.json create mode 100644 xgen/specs/ui/switch.variants.json create mode 100644 xgen/specs/ui/table-cell.variants.json create mode 100644 xgen/specs/ui/table-head-cell.variants.json create mode 100644 xgen/specs/ui/table.json create mode 100644 xgen/specs/ui/table.variants.json create mode 100644 xgen/specs/ui/text.json create mode 100644 xgen/specs/ui/text.variants.json create mode 100644 xgen/specs/ui/textarea.json create mode 100644 xgen/specs/ui/textarea.variants.json create mode 100644 xgen/specs/ui/title.json create mode 100644 xgen/specs/ui/title.variants.json create mode 100644 xgen/tsconfig.json diff --git a/.githooks/pre-push b/.githooks/pre-push new file mode 100755 index 0000000..0ef9ed1 --- /dev/null +++ b/.githooks/pre-push @@ -0,0 +1,9 @@ +#!/usr/bin/env bash +# Pre-push gate (tracked). Enable once per clone: git config core.hooksPath .githooks (or: bun run hooks:install) +# 1. bun run check: xgen check, every group, the rules group included (fast, no build of the hosts) +# 2. packages/tooling/bin/audit.sh: no private/, shots/, .fig, design-kit assets, secrets or server addresses in the pushed commits +# The full gate is bun run check:all; run it before a release. +set -euo pipefail +cd "$(git rev-parse --show-toplevel)" +bun run check +bash packages/tooling/bin/audit.sh diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b938632..75884ff 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,22 +1,39 @@ +# CI: bun run verify (xgen check + typecheck of the generation layer + tests) with every runtime toolchain present +# (Go for templ, PHP 8.4 + composer for Twig and Latte, Python 3.13 for Jinja2). +# UI8KIT_REQUIRE_ALL_RUNTIMES=1 turns a skipped runtime group into a failure, so the template runtimes always run here. name: CI on: push: branches: [main] pull_request: + workflow_dispatch: jobs: verify: - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 + timeout-minutes: 30 + env: + UI8KIT_REQUIRE_ALL_RUNTIMES: "1" steps: - uses: actions/checkout@v4 - uses: oven-sh/setup-bun@v2 + with: + bun-version: 1.4.2 - uses: actions/setup-go@v5 with: - go-version: "1.25" + go-version-file: packages/templ/ui/go.mod + cache: false - uses: shivammathur/setup-php@v2 with: - php-version: "8.3" - tools: composer + php-version: "8.4" + extensions: mbstring + tools: composer:v2 + coverage: none + - uses: actions/setup-python@v5 + with: + python-version: "3.13" + - name: toolchains + run: bun --version && go version && php --version && composer --version && python3 --version - run: bun install --frozen-lockfile - run: bun run verify diff --git a/.gitignore b/.gitignore index 5f97951..69fd30e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,23 @@ -node_modules/ -examples/node_modules/ +logs *.log +node_modules +dist +dist-ssr +*.local .DS_Store -.dist/ -.manual/ \ No newline at end of file +.idea +.vscode/* +!.vscode/extensions.json + +# never published from this repository +private/ +shots/ +**/public/p/ +*.fig +.env +.env.* +.manual/ + +# ui8px: generated reports and learn-mode data +.ui8px/telemetry/ +.ui8px/reports/ diff --git a/.project/README.md b/.project/README.md deleted file mode 100644 index b2784f7..0000000 --- a/.project/README.md +++ /dev/null @@ -1,11 +0,0 @@ -# Project docs - -Planning notes for `@ui8kit/codegen`. Implementation details live under -`docs/`; this folder tracks **near-term** work only. - -| Doc | Role | -|-----|------| -| [roadmap.md](./roadmap.md) | Active focus + nearest backlog | -| [progress.md](./progress.md) | Status + journal | -| [plan/jinja2-runtime.md](./plan/jinja2-runtime.md) | Next runtime: Jinja2 | -| [plan/rails-erb-runtime.md](./plan/rails-erb-runtime.md) | Later: Rails / ERB (ninth emit) | diff --git a/.project/plan/jinja2-runtime.md b/.project/plan/jinja2-runtime.md deleted file mode 100644 index 45dc7da..0000000 --- a/.project/plan/jinja2-runtime.md +++ /dev/null @@ -1,103 +0,0 @@ -# Plan: Jinja2 runtime - -**Status:** nearest backlog -**Goal:** eighth emit target — idiomatic Jinja2 templates from the same brick -defs as Twig/Latte, with DOM parity. - -**Consumers:** Flask (+ uv) SSR apps; BuildY `python-flask-jinja` template -(see BuildY `plan/php-python-runners.md`). - -## Why Jinja2 next - -- Same SSR class as Twig/Latte (Twig was inspired by Jinja). -- Python Flask stack is the light SSR counterpart to Slim/Flight + PHP. -- Domain IR should not need changes; work is mostly a new `Emitter` + Python - runtime helpers + parity harness (same path as [docs/architecture.md](../../docs/architecture.md) - “Adding a new runtime”). - -## Composition model (expected) - -Mirror PHP template engines: - -| Concern | Approach | -|---------|----------| -| Children | Pre-rendered HTML string, printed unescaped (`|safe`) | -| Nesting | `{% set inner %}…{% endset %}` then `include` / `macro` with `children=inner` | -| Attrs | Caller map merged last (Twig-style helper or Jinja filter) | -| Class merge | Python `cn()` equivalent (plain concat like Go/PHP `Rt::cn`) | -| Variants | Embed/load colocated `*.variants.json` or shared recipe helper | - -Likely output: `ui//.html.j2` (or `.jinja2`) — pick one extension -in J0 and stick to it. - -## Coverage - -Start with the **same structural predicate** as Latte/Twig -(`phpSupported()` / docs/php-complex-parts.md): - -- Target **60 / 63** parts initially. -- Skip `breadcrumb/Breadcrumb`, `select/Select`, `icon/Icon` for the same - reasons (forEach / branched root / branched slots). -- Emit Python class helpers for **all** parts with a classes contract - (mirror `Classes.php`). - -Prefer renaming the predicate to something engine-neutral -(`templateSupported` / `ssrTemplateSupported`) when Jinja lands, without -changing skip semantics. - -## Work items - -### J0 — Spike + naming - -- [ ] Confirm output extension, include path layout, and Flask loader roots. -- [ ] Decide Python package layout under `generated/` (e.g. `python/ui8kit/` - with `cn`, expr helpers, optional Jinja extension/filters). -- [ ] Document composition snippet in the plan spike notes (welcome-card nest). - -### J1 — Emitter - -- [ ] `RuntimeName` += `"jinja"`; register in `ALL_RUNTIMES` / CLI `--runtimes`. -- [ ] `src/emitters/jinja.ts` (+ expr printer; reuse analysis patterns from - `php-common` / `twig` where safe). -- [ ] Wire `generate.ts`: copy `runtime/python/*`, emit helpers, no duplicate paths. -- [ ] Prop naming: HTML-native (same as Svelte/Vue/PHP). - -### J2 — Parity + deps - -- [ ] `pyproject.toml` / uv-friendly deps: Jinja2 (pin range). -- [ ] `cmd/parity-jinja/` harness (JSON in → HTML out), skip if Python/uv missing. -- [ ] `tests/parity.jinja.test.ts` (or `.py` driven from Bun like PHP suites). -- [ ] Extend `emitters.test.ts` structural checks. - -### J3 — Example - -- [ ] `examples/jinja/` — Flask (or minimal Jinja-only server) welcome twin of - latte/twig; shared `data/welcome.json` + `web/static` CSS. -- [ ] `bun run dev:jinja` script + docs in `examples/README.md` / `docs/runtimes.md`. - -### J4 — Docs + optional bundle - -- [ ] Update overview, architecture, runtimes, contract, testing, getting-started - (“seven” → “eight” where accurate). -- [ ] Optional: `generate:jinja-bundle` (Jinja-only package, latte-bundle analogue). - -## Explicit non-goals (this plan) - -- Django templates / Mako emitters. -- Full 63/63 PHP-complex parts before Jinja ships. -- BuildY runner images (product repo owns `buildy-runner-python`). -- Changing brick defs solely for Jinja. - -## Exit criteria - -- `bun run generate --runtimes jinja` (or all-eight default) writes templates + - Python helpers. -- Parity suite green when Python is on PATH (skip cleanly when absent). -- Welcome example renders the same layout tokens as other runtimes. -- Docs list Jinja2 as a first-class runtime. - -## References - -- Latte/Twig composition: [docs/runtimes.md](../../docs/runtimes.md) -- PHP skips: [docs/php-complex-parts.md](../../docs/php-complex-parts.md) -- Add-runtime checklist: [docs/architecture.md](../../docs/architecture.md) diff --git a/.project/plan/rails-erb-runtime.md b/.project/plan/rails-erb-runtime.md deleted file mode 100644 index 502403d..0000000 --- a/.project/plan/rails-erb-runtime.md +++ /dev/null @@ -1,135 +0,0 @@ -# Plan: Rails / ERB runtime - -**Status:** later backlog (after Jinja2 J0–J4) -**Goal:** ninth emit target — idiomatic **ERB** templates from the same brick -defs as Twig/Latte/Jinja, with DOM parity. - -**Primary consumer:** full **Rails** apps (sqlite-first SSR). -**Secondary consumers:** light Ruby stacks (**Sinatra or Roda + ERB**) — same -templates, thinner host. - -BuildY owns runners/images; this repo owns the emitter + Ruby helpers + -parity. Product track: BuildY `.project/plan/ruby-runners.md` (R0–R4; ERB -emitter is **R4**, optional, after light template R1). - -## Why Rails / ERB (and when) - -| | | -|--|--| -| **Why ERB** | Default Rails view language; also used by Sinatra/Roda light templates. One emitter serves both levels. | -| **Why not first** | BuildY ships PHP/Python runners (T0–T3) and Jinja codegen (**J0–J4**) first. Ruby is the **last** template-runner track. | -| **Gate** | Start Er0 only after Jinja is first-class *and* BuildY has at least a light Ruby preview path (R1) **or** explicit product demand for ui8kit bricks in ERB (BuildY R4). | - -Mirror Jinja/Twig lessons: HTML-string children, structural skip predicate, -class helpers for unsupported parts. No brick-def changes solely for ERB. - -## Composition model (expected) - -Same SSR class as Twig / Latte / Jinja: - -| Concern | Approach | -|---------|----------| -| Children | Pre-rendered HTML string, printed unescaped (`<%= children.html_safe %>` / `raw`) | -| Nesting | Capture (`<% capture do %>…<% end %>`) or partials with a `children:` local | -| Attrs | Caller hash merged last (Ruby helper, Twig-style) | -| Class merge | Ruby `cn()` (plain concat, same as PHP `Rt::cn` / Python) | -| Variants | Colocated `*.variants.json` or shared recipe helper | - -Likely output: `ui//_part.html.erb` or `ui//part.html.erb` — -pick one partial naming convention in **Er0** and stick to it (Rails partial -prefix `_` vs Sinatra flat views). - -## Coverage - -Start with the **same structural predicate** as Latte/Twig/Jinja -(`phpSupported()` → rename toward `ssrTemplateSupported` when Jinja lands): - -- Target **60 / 63** parts initially. -- Skip `breadcrumb/Breadcrumb`, `select/Select`, `icon/Icon` for the same - reasons (forEach / branched root / branched slots). -- Emit Ruby class helpers for **all** parts with a classes contract - (mirror `Classes.php` / Python helpers). - -## Work items - -### Er0 — Spike + naming - -- [ ] Confirm ERB partial layout, Rails `render` locals, and Sinatra/Roda - include path (one layout, both hosts). -- [ ] Decide Ruby package layout under `generated/` (e.g. `ruby/lib/ui8kit/` - with `cn`, attr helpers; optional Rails engine vs plain gem). -- [ ] Document composition snippet (welcome-card nest) for ERB. -- [ ] Asset story for examples: **importmap / Propshaft** preferred (align - BuildY R2); no mandatory Node pipeline in the reference. - -### Er1 — Emitter - -- [ ] `RuntimeName` += `"erb"` (or `"rails"` only if CLI must be product-named — - prefer **`erb`**: language is the emit target). -- [ ] Register in `ALL_RUNTIMES` / CLI `--runtimes`. -- [ ] `src/emitters/erb.ts` (+ expr printer; reuse `php-common` / Twig / Jinja - analysis where safe). -- [ ] Wire `generate.ts`: copy `runtime/ruby/*`, emit helpers, no duplicate paths. -- [ ] Prop naming: HTML-native (same as Svelte/Vue/PHP/Jinja). - -### Er2 — Parity + deps - -- [ ] Gemspec / Bundler pin for parity harness (MRI 3.3+). -- [ ] `cmd/parity-erb/` (or `parity-rails/`) harness: JSON in → HTML out; - skip cleanly if `ruby` / `bundle` missing. -- [ ] `tests/parity.erb.test.ts` (Bun-driven like PHP suites). -- [ ] Extend `emitters.test.ts` structural checks. - -### Er3 — Examples - -- [ ] `examples/erb-rails/` — minimal **Rails** welcome twin (sqlite optional / - no external DB on default route); shared `data/welcome.json` + static CSS. -- [ ] Optional light twin: `examples/erb-sinatra/` **or** document that the - same `ui/` partials render under Sinatra/Roda (one welcome is enough for - Er3 if partials are host-agnostic). -- [ ] `bun run dev:rails` (or `dev:erb`) + docs in `examples/README.md` / - `docs/runtimes.md`. - -### Er4 — Docs + optional bundle - -- [ ] Update overview, architecture, runtimes, contract, testing, - getting-started (“eight” → “nine” where accurate, after Jinja ships). -- [ ] Optional: `generate:erb-bundle` (ERB/Ruby-only package, latte-bundle - analogue) for Rails engines / gems. - -## Explicit non-goals (this plan) - -- Shipping ERB **before** Jinja2 (J0–J4 remains nearest backlog). -- BuildY runner images / registry (`buildy-runner-ruby`, templates) — product - repo owns those (BuildY `plan/ruby-runners.md`). -- Haml / Slim-ruby emitters (BuildY R4 mentions Slim only as a later option). -- Full 63/63 complex parts before ERB ships. -- Mandatory Postgres / Redis / Node asset pipeline for the welcome example. -- Changing brick defs solely for Rails. - -## Exit criteria - -- `bun run generate --runtimes erb` writes ERB partials + Ruby helpers. -- Parity suite green when Ruby/Bundler is on PATH (skip cleanly when absent). -- Rails welcome example renders the same layout tokens as other runtimes. -- Docs list ERB as a first-class runtime; BuildY can consume partials in - `ruby-rails` and light Sinatra/Roda templates without a second emitter. - -## Mapping to BuildY - -```text -BuildY R0–R1 runner + light Sinatra/Roda+ERB (no codegen required) -BuildY R2 full Rails template (manual/LLM ERB OK) -BuildY R4 optional ui8kit ERB emitter ←→ this plan Er0–Er4 -``` - -Codegen does **not** block BuildY R1/R2. Er* starts when Jinja is done and -R4 demand (or an explicit “emit for Rails bricks” decision) is open. - -## References - -- BuildY Ruby track: `@buildy-ui/.project/plan/ruby-runners.md` -- Jinja plan (prior SSR template runtime): [jinja2-runtime.md](./jinja2-runtime.md) -- Latte/Twig composition: [docs/runtimes.md](../../docs/runtimes.md) -- PHP skips: [docs/php-complex-parts.md](../../docs/php-complex-parts.md) -- Add-runtime checklist: [docs/architecture.md](../../docs/architecture.md) diff --git a/.project/progress.md b/.project/progress.md deleted file mode 100644 index dbbbd52..0000000 --- a/.project/progress.md +++ /dev/null @@ -1,26 +0,0 @@ -# Progress - -Statuses: pending · in progress · done · backlog - -## Near-term - -| Track | Status | Exit | -|-------|--------|------| -| Jinja2 runtime (J0–J4) | backlog | Eighth runtime + parity + Flask welcome example | -| Rails / ERB runtime (Er0–Er4) | backlog (later) | Ninth runtime + parity + Rails welcome; after Jinja | - -## Journal - -### 2026-07-22 — Plan Rails / ERB runtime - -- Later codegen track after Jinja: emit target **`erb`**, primary consumer - full Rails, secondary Sinatra/Roda (same partials). -- Mirrors BuildY `ruby-runners.md`: light Ruby first on product side (R1); - ui8kit ERB emitter is optional **R4** — does not block BuildY R1/R2. -- Plan: [plan/rails-erb-runtime.md](./plan/rails-erb-runtime.md). - -### 2026-07-21 — Plan Jinja2 runtime - -- Accepted as nearest codegen backlog after current seven runtimes. -- Stack pairing: Flask + Jinja2 (+ uv) on the product side; emitter here. -- Plan: [plan/jinja2-runtime.md](./plan/jinja2-runtime.md). diff --git a/.project/roadmap.md b/.project/roadmap.md deleted file mode 100644 index 8847d32..0000000 --- a/.project/roadmap.md +++ /dev/null @@ -1,32 +0,0 @@ -# Roadmap - -## Active - -Keep seven-runtime parity green (templ, react, svelte, vue, solid, latte, twig). -No breaking IR or brick-contract changes without parity coverage. - -## Nearest backlog - -| ID | Item | Plan | -|----|------|------| -| **J0–J4** | **Jinja2 runtime** (eighth emit target) | [plan/jinja2-runtime.md](./plan/jinja2-runtime.md) | - -Primary consumer path: Flask + Jinja2 (BuildY `buildy-runner-python` track). -Reuse Twig/Latte lessons: HTML-string children, structural skip predicate, -class helpers for unsupported parts. - -## Later (not scheduled) - -| ID | Item | Plan | -|----|------|------| -| **Er0–Er4** | **Rails / ERB runtime** (ninth emit target) | [plan/rails-erb-runtime.md](./plan/rails-erb-runtime.md) | - -Primary consumer: full Rails; same partials for Sinatra/Roda light stacks. -Aligns with BuildY `plan/ruby-runners.md` **R4** (optional ERB emitter after -light Ruby R1). Start only after Jinja and product demand / BuildY R4 gate. - -Other later items: - -- Jinja-only bundle profile (mirror `generate:latte-bundle`) -- PHP complex-part loops/branches if Jinja gains them first -- Behavior-driven `components/` (needs `@ui8kit/aria` contract) diff --git a/.ui8px/gate.json b/.ui8px/gate.json new file mode 100644 index 0000000..45d30f5 --- /dev/null +++ b/.ui8px/gate.json @@ -0,0 +1,10 @@ +{ + "max": 0, + "blocking": [ + "UI8PX001", + "UI8PX003", + "UI8PX005", + "GRID" + ], + "why": "hard gate: no blocking ui8px hit over the class sets of xgen/specs (8 px steps, 4 px steps only inside controls). Hairlines (gap-px, p-px) and the colour inset-ring-background/30 are allowed utilities, see plan/UI8KIT-2.0.md (ui8px section)." +} diff --git a/.ui8px/policy/allowed.json b/.ui8px/policy/allowed.json new file mode 100644 index 0000000..cd6c6ca --- /dev/null +++ b/.ui8px/policy/allowed.json @@ -0,0 +1,447 @@ +{ + "spacing": { + "layout": [ + "0", + "2", + "4", + "6", + "8", + "10", + "12", + "14", + "16", + "18", + "20", + "22", + "24", + "26", + "28", + "30", + "32", + "34", + "36", + "38", + "40", + "42", + "44", + "46", + "48", + "50", + "52", + "54", + "56", + "58", + "60", + "62", + "64", + "66", + "68", + "70", + "72", + "74", + "76", + "78", + "80", + "82", + "84", + "86", + "88", + "90", + "92", + "94", + "96", + "98", + "100", + "102", + "104", + "106", + "108", + "110", + "112", + "114", + "116", + "118", + "120", + "122", + "124", + "126", + "128", + "130", + "132", + "134", + "136", + "138", + "140", + "142", + "144", + "146", + "148", + "150", + "152", + "154", + "156", + "158", + "160" + ], + "control": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "14", + "15", + "16", + "18", + "20", + "22", + "24", + "26", + "28", + "30", + "32", + "34", + "36", + "38", + "40", + "42", + "44", + "46", + "48", + "50", + "52", + "54", + "56", + "58", + "60", + "62", + "64", + "66", + "68", + "70", + "72", + "74", + "76", + "78", + "80", + "82", + "84", + "86", + "88", + "90", + "92", + "94", + "96", + "98", + "100", + "102", + "104", + "106", + "108", + "110", + "112", + "114", + "116", + "118", + "120", + "122", + "124", + "126", + "128", + "130", + "132", + "134", + "136", + "138", + "140", + "142", + "144", + "146", + "148", + "150", + "152", + "154", + "156", + "158", + "160" + ] + }, + "utilities": [ + "block", + "inline", + "inline-block", + "inline-flex", + "flex", + "grid", + "hidden", + "relative", + "absolute", + "fixed", + "sticky", + "static", + "sr-only", + "not-sr-only", + "container", + "mx-auto", + "w-full", + "w-auto", + "w-fit", + "w-screen", + "h-full", + "h-auto", + "h-fit", + "h-screen", + "min-w-0", + "max-w-none", + "max-w-sm", + "max-w-md", + "max-w-lg", + "max-w-xl", + "max-w-2xl", + "max-w-3xl", + "max-w-4xl", + "max-w-5xl", + "max-w-6xl", + "max-w-7xl", + "overflow-hidden", + "overflow-clip", + "overflow-auto", + "overflow-visible", + "overflow-scroll", + "object-cover", + "object-contain", + "object-fill", + "object-center", + "object-top", + "object-bottom", + "aspect-auto", + "aspect-square", + "aspect-video", + "truncate", + "whitespace-nowrap", + "rounded", + "rounded-none", + "rounded-sm", + "rounded-md", + "rounded-lg", + "rounded-xl", + "rounded-2xl", + "rounded-3xl", + "rounded-full", + "shadow", + "shadow-none", + "shadow-sm", + "shadow-md", + "shadow-lg", + "shadow-xl", + "border", + "border-0", + "border-2", + "border-4", + "border-border", + "bg-background", + "bg-card", + "bg-muted", + "bg-primary", + "bg-secondary", + "bg-destructive", + "bg-accent", + "bg-transparent", + "text-foreground", + "text-muted-foreground", + "text-primary", + "text-primary-foreground", + "text-secondary", + "text-secondary-foreground", + "text-destructive", + "text-destructive-foreground", + "text-accent-foreground", + "text-card-foreground", + "text-xs", + "text-sm", + "text-base", + "text-lg", + "text-xl", + "text-2xl", + "text-3xl", + "text-4xl", + "text-5xl", + "font-normal", + "font-medium", + "font-semibold", + "font-bold", + "leading-none", + "leading-tight", + "leading-normal", + "leading-relaxed", + "tracking-tight", + "tracking-normal", + "tracking-wide", + "text-left", + "text-center", + "text-right", + "text-justify", + "flex-row", + "flex-col", + "flex-wrap", + "flex-nowrap", + "grow", + "grow-0", + "shrink", + "shrink-0", + "items-start", + "items-center", + "items-end", + "items-stretch", + "justify-start", + "justify-center", + "justify-end", + "justify-between", + "justify-around", + "justify-evenly", + "grid-cols-1", + "grid-cols-2", + "grid-cols-3", + "grid-cols-4", + "grid-cols-5", + "grid-cols-6", + "grid-cols-12", + "inset-ring", + "inset-ring-2", + "inset-ring-border", + "inset-ring-input", + "inset-ring-transparent", + "inset-ring-current", + "inset-ring-primary", + "inset-ring-destructive", + "inset-ring-foreground", + "inset-ring-ring", + "inset-x-0", + "inset-y-0", + "ml-auto", + "mr-auto", + "mt-auto", + "mb-auto", + "my-auto", + "m-auto", + "w-px", + "h-px", + "max-w-xs", + "max-w-full", + "min-w-lg", + "min-h-screen", + "min-h-0", + "z-0", + "z-10", + "z-20", + "z-30", + "z-40", + "z-50", + "w-1/2", + "w-1/3", + "w-2/3", + "w-1/4", + "w-3/4", + "w-5/6", + "top-1/2", + "left-1/2", + "inset-ring-0", + "size-0", + "size-2", + "size-4", + "size-6", + "size-8", + "size-10", + "size-12", + "size-14", + "size-16", + "size-18", + "size-20", + "size-22", + "size-24", + "size-26", + "size-28", + "size-30", + "size-32", + "size-34", + "size-36", + "size-38", + "size-40", + "size-42", + "size-44", + "size-46", + "size-48", + "size-50", + "size-52", + "size-54", + "size-56", + "size-58", + "size-60", + "size-62", + "size-64", + "size-66", + "size-68", + "size-70", + "size-72", + "size-74", + "size-76", + "size-78", + "size-80", + "size-82", + "size-84", + "size-86", + "size-88", + "size-90", + "size-92", + "size-94", + "size-96", + "size-98", + "size-100", + "size-102", + "size-104", + "size-106", + "size-108", + "size-110", + "size-112", + "size-114", + "size-116", + "size-118", + "size-120", + "size-122", + "size-124", + "size-126", + "size-128", + "size-130", + "size-132", + "size-134", + "size-136", + "size-138", + "size-140", + "size-142", + "size-144", + "size-146", + "size-148", + "size-150", + "size-152", + "size-154", + "size-156", + "size-158", + "size-160", + "size-full", + "size-px", + "gap-px", + "p-px", + "inset-ring-background/30", + "inset-x-12", + "h-lh" + ] +} diff --git a/.ui8px/policy/denied.json b/.ui8px/policy/denied.json new file mode 100644 index 0000000..c330feb --- /dev/null +++ b/.ui8px/policy/denied.json @@ -0,0 +1,16 @@ +{ + "utilities": { + "bg-red-500": { + "reason": "Use semantic color tokens instead of raw palette colors.", + "suggest": [ + "bg-destructive" + ] + }, + "text-red-500": { + "reason": "Use semantic color tokens instead of raw palette colors.", + "suggest": [ + "text-destructive" + ] + } + } +} diff --git a/.ui8px/policy/groups.json b/.ui8px/policy/groups.json new file mode 100644 index 0000000..f02c210 --- /dev/null +++ b/.ui8px/policy/groups.json @@ -0,0 +1,57 @@ +{ + "conflictGroups": { + "display": [ + "block", + "inline", + "inline-block", + "inline-flex", + "flex", + "grid", + "hidden" + ], + "flexDirection": [ + "flex-row", + "flex-col", + "flex-row-reverse", + "flex-col-reverse" + ], + "flexWrap": [ + "flex-wrap", + "flex-nowrap" + ], + "items": [ + "items-*" + ], + "justify": [ + "justify-*" + ], + "textSize": [ + "text-xs", + "text-sm", + "text-base", + "text-lg", + "text-xl", + "text-2xl", + "text-3xl", + "text-4xl", + "text-5xl" + ], + "textAlign": [ + "text-left", + "text-center", + "text-right", + "text-justify" + ], + "background": [ + "bg-*" + ], + "radius": [ + "rounded", + "rounded-*" + ], + "shadow": [ + "shadow", + "shadow-*" + ] + } +} diff --git a/.ui8px/policy/patterns.json b/.ui8px/policy/patterns.json new file mode 100644 index 0000000..6ff527e --- /dev/null +++ b/.ui8px/policy/patterns.json @@ -0,0 +1,3 @@ +{ + "patterns": {} +} diff --git a/.ui8px/policy/scopes.json b/.ui8px/policy/scopes.json new file mode 100644 index 0000000..f203216 --- /dev/null +++ b/.ui8px/policy/scopes.json @@ -0,0 +1,58 @@ +{ + "defaultScope": "layout", + "scopes": [ + { + "name": "controls", + "files": [ + ".ui8px/extract/specs/ui/button.*", + ".ui8px/extract/specs/ui/button-plain.*", + ".ui8px/extract/specs/ui/badge.*", + ".ui8px/extract/specs/ui/iconbadge.*", + ".ui8px/extract/specs/ui/checkbox.*", + ".ui8px/extract/specs/ui/radio.*", + ".ui8px/extract/specs/ui/switch.*", + ".ui8px/extract/specs/ui/select.*", + ".ui8px/extract/specs/ui/input.*", + ".ui8px/extract/specs/ui/textarea.*", + ".ui8px/extract/specs/ui/range.*", + ".ui8px/extract/specs/ui/label.*", + ".ui8px/extract/specs/ui/meter.*", + ".ui8px/extract/specs/ui/progress.*", + ".ui8px/extract/specs/ui/summary.*", + ".ui8px/extract/specs/recipes/badge-square.*", + ".ui8px/extract/specs/recipes/icon-tab.*", + ".ui8px/extract/specs/recipes/switcher.*", + ".ui8px/extract/specs/recipes/switcher-item.*", + ".ui8px/extract/specs/recipes/nav-item.*", + ".ui8px/extract/specs/recipes/nav-item-content.*", + ".ui8px/extract/specs/recipes/file-tree-item.*", + ".ui8px/extract/specs/parts/badge-square.*", + ".ui8px/extract/specs/parts/pill.*", + ".ui8px/extract/specs/parts/search-field.*", + ".ui8px/extract/specs/organisms/number-field.*", + ".ui8px/extract/specs/patterns/icon-tab.*", + ".ui8px/extract/specs/patterns/switcher.*", + ".ui8px/extract/specs/patterns/switcher-item.*", + ".ui8px/extract/specs/patterns/dropdown-item.*", + ".ui8px/extract/specs/patterns/editor-tab.*", + ".ui8px/extract/specs/patterns/select-menu.*", + ".ui8px/extract/specs/patterns/nav-item.*", + ".ui8px/extract/specs/patterns/file-tree-item.*", + ".ui8px/extract/specs/ui/icon.*", + ".ui8px/extract/specs/patterns/nav-item-row.*", + ".ui8px/extract/specs/organisms/search-palette.*" + ], + "spacing": "control" + }, + { + "name": "layout", + "files": [ + ".ui8px/extract/**", + "packages/*/ui/src/**", + "xgen/**", + "apps/**" + ], + "spacing": "layout" + } + ] +} diff --git a/README.md b/README.md deleted file mode 100644 index 5405ad4..0000000 --- a/README.md +++ /dev/null @@ -1,217 +0,0 @@ -# UI8Kit Codegen - -**One brick definition → seven identical runtimes.** - -Spec-driven codegen for UI8Kit `ui/` primitives. Define props, variants, and a render tree once; emit idiomatic Templ, React, Svelte, Vue, SolidJS, Latte, and Twig with the same DOM, design tokens, and ARIA contract — verified by parity tests, not by review. - -| Fact | Value | -|------|-------| -| **Inventory** | 33 bricks · 63 parts · 7 runtimes | -| **PHP templates** | 59 / 63 parts (4 skipped by structural predicate) | -| **License** | MIT | - ---- - -## Runtimes - -| Runtime | Output | Composition | -|---------|--------|-------------| -| **Go Templ** | `ui//.templ` + `_gen.go` | SSR, `{ children... }`, `Attrs` | -| **React 19** | `ui//.tsx` | `forwardRef`, `asChild` / `Slot` | -| **Svelte 5** | `ui//.svelte` | runes, snippets, `` | -| **Vue 3** | `ui//.vue` | ` - - -
- - diff --git a/examples/react/index.html b/examples/react/index.html deleted file mode 100644 index b75dbc2..0000000 --- a/examples/react/index.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - UI8Kit Codegen · React 19 - - - -
- - - diff --git a/examples/react/script/generate-static.tsx b/examples/react/script/generate-static.tsx deleted file mode 100644 index addeeb0..0000000 --- a/examples/react/script/generate-static.tsx +++ /dev/null @@ -1,61 +0,0 @@ -/** - * Static HTML export — renders the React welcome view with - * renderToStaticMarkup and writes plain HTML pages into examples/html/, - * one directory per route (index.html, about/index.html) with relative - * links to the shared static assets. Run with: bun run build:html - */ - -import { cpSync, mkdirSync, writeFileSync } from "node:fs"; -import { dirname, join } from "node:path"; -import { fileURLToPath } from "node:url"; -import { renderToStaticMarkup } from "react-dom/server"; -import { WelcomeView } from "../src/Welcome"; - -const examplesRoot = join(dirname(fileURLToPath(import.meta.url)), "..", ".."); -const outRoot = join(examplesRoot, "html"); - -interface Route { - /** Directory under examples/html/ ("" is the site root). */ - path: string; - title: string; - runtime: string; -} - -const routes: Route[] = [ - { path: "", title: "UI8Kit Codegen · Static HTML", runtime: "Static HTML" }, - { path: "about", title: "UI8Kit Codegen · About", runtime: "Static HTML · About" }, -]; - -/** Depth-aware prefix so nested routes link ../static, the root ./static. */ -function relPrefix(routePath: string): string { - const depth = routePath === "" ? 0 : routePath.split("/").length; - return depth === 0 ? "./" : "../".repeat(depth); -} - -function pageShell(title: string, cssHref: string, bodyHtml: string): string { - return ` - - - - - ${title} - - - -${bodyHtml} - - -`; -} - -for (const route of routes) { - const markup = renderToStaticMarkup(); - const dir = route.path === "" ? outRoot : join(outRoot, route.path); - mkdirSync(dir, { recursive: true }); - const html = pageShell(route.title, `${relPrefix(route.path)}static/css/app.css`, markup); - writeFileSync(join(dir, "index.html"), html); - console.log(`wrote ${join(dir, "index.html")}`); -} - -cpSync(join(examplesRoot, "web", "static"), join(outRoot, "static"), { recursive: true }); -console.log(`copied static assets -> ${join(outRoot, "static")}`); diff --git a/examples/react/src/Welcome.tsx b/examples/react/src/Welcome.tsx deleted file mode 100644 index f1902ff..0000000 --- a/examples/react/src/Welcome.tsx +++ /dev/null @@ -1,104 +0,0 @@ -import { - Badge, - Block, - Box, - Button, - Card, - CardContent, - CardHeader, - CardTitle, - Container, - Grid, - Group, - Link, - Stack, - Text, - Title, -} from "@ui"; -import welcome from "../../data/welcome.json"; - -export type WelcomeViewProps = { - runtime: string; -}; - -export function WelcomeView({ runtime }: WelcomeViewProps) { - return ( - - - - - - {runtime} - - - {welcome.title} - - {welcome.subtitle} - - - - - Generated primitives - - - - - - - - - - - - Badge - Secondary - Outline - - - - - - - {welcome.features.map((feature) => ( - - - {feature.title} - - - {feature.description} - - - ))} - - - - - Preview other runtimes - - {welcome.runtimes.map((rt) => ( - - {rt.label} - - ))} - - - - - - Same shadcn tokens · generated ui/ primitives · @ui8kit/codegen - - - - - ); -} diff --git a/examples/react/src/main.tsx b/examples/react/src/main.tsx deleted file mode 100644 index a59af97..0000000 --- a/examples/react/src/main.tsx +++ /dev/null @@ -1,9 +0,0 @@ -import { StrictMode } from "react"; -import { createRoot } from "react-dom/client"; -import { WelcomeView } from "./Welcome"; - -createRoot(document.getElementById("root")!).render( - - - -); diff --git a/examples/react/tsconfig.json b/examples/react/tsconfig.json deleted file mode 100644 index 0a49192..0000000 --- a/examples/react/tsconfig.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "compilerOptions": { - "target": "ES2022", - "lib": ["ES2022", "DOM", "DOM.Iterable"], - "module": "ESNext", - "moduleResolution": "bundler", - "jsx": "react-jsx", - "strict": true, - "skipLibCheck": true, - "noEmit": true, - "resolveJsonModule": true, - "isolatedModules": true, - "paths": { - "@ui": ["../../generated/ui/index.ts"], - "@ui/*": ["../../generated/ui/*"] - } - }, - "include": ["src/**/*.tsx", "script/**/*.tsx", "../data/**/*.json"] -} diff --git a/examples/react/vite.config.ts b/examples/react/vite.config.ts deleted file mode 100644 index ad2e902..0000000 --- a/examples/react/vite.config.ts +++ /dev/null @@ -1,24 +0,0 @@ -import path from "path"; -import { fileURLToPath } from "url"; -import react from "@vitejs/plugin-react"; -import { defineConfig } from "vite"; -import { generatedUiRoot, generatedUtilsRoot, serveExamplesStatic } from "../shared/vite-static"; - -const rootDir = path.dirname(fileURLToPath(import.meta.url)); - -export default defineConfig({ - root: rootDir, - plugins: [react(), serveExamplesStatic()], - resolve: { - alias: { - "@ui": path.join(generatedUiRoot, "index.ts"), - "@ui-utils": generatedUtilsRoot, - }, - }, - server: { - port: 5173, - fs: { - allow: [path.resolve(rootDir, ".."), path.resolve(rootDir, "../../generated")], - }, - }, -}); diff --git a/examples/scripts/composer-install.mjs b/examples/scripts/composer-install.mjs deleted file mode 100644 index d73fc09..0000000 --- a/examples/scripts/composer-install.mjs +++ /dev/null @@ -1,39 +0,0 @@ -/** - * composer install in generated/ — uses global composer or local composer.phar. - */ -import { existsSync } from "node:fs"; -import { join, dirname } from "node:path"; -import { fileURLToPath } from "node:url"; -import { spawnSync } from "node:child_process"; -import { resolvePhp } from "./resolve-php.mjs"; - -const generated = join(dirname(fileURLToPath(import.meta.url)), "..", "..", "generated"); -const php = resolvePhp(); - -if (!php) { - console.error("php not found — install PHP 8.1+ or set PHP=/path/to/php"); - process.exit(1); -} - -function run(cmd, args) { - const r = spawnSync(cmd, args, { cwd: generated, stdio: "inherit", shell: cmd === "composer" }); - return r.status ?? 1; -} - -if (run("composer", ["install", "--no-interaction"]) === 0) { - process.exit(0); -} - -const phar = join(generated, "composer.phar"); -if (!existsSync(phar)) { - console.log("Downloading composer.phar…"); - const curl = spawnSync("curl", ["-sS", "https://getcomposer.org/installer", "-o", "composer-setup.php"], { - cwd: generated, - stdio: "inherit", - }); - if (curl.status !== 0) process.exit(curl.status ?? 1); - const setup = spawnSync(php, ["composer-setup.php", "--quiet"], { cwd: generated, stdio: "inherit" }); - if (setup.status !== 0) process.exit(setup.status ?? 1); -} - -process.exit(run(php, [phar, "install", "--no-interaction"])); diff --git a/examples/scripts/php-server.mjs b/examples/scripts/php-server.mjs deleted file mode 100644 index 1dbeb67..0000000 --- a/examples/scripts/php-server.mjs +++ /dev/null @@ -1,32 +0,0 @@ -/** - * Start PHP built-in server for Latte/Twig previews. - * Usage: bun scripts/php-server.mjs [port] - */ -import { spawn } from "node:child_process"; -import { dirname, join } from "node:path"; -import { fileURLToPath } from "node:url"; -import { resolvePhp } from "./resolve-php.mjs"; - -const examplesRoot = join(dirname(fileURLToPath(import.meta.url)), ".."); -const target = process.argv[2]; -const port = process.argv[3] ?? (target === "twig" ? "5177" : "5176"); - -if (target !== "latte" && target !== "twig") { - console.error("usage: bun scripts/php-server.mjs [port]"); - process.exit(1); -} - -const php = resolvePhp(); -if (!php) { - console.error("php not found — install PHP 8.1+ or set PHP=/path/to/php"); - process.exit(1); -} - -const cwd = join(examplesRoot, target); -const child = spawn(php, ["-S", `127.0.0.1:${port}`, "server.php"], { - cwd, - stdio: "inherit", - shell: false, -}); - -child.on("exit", (code) => process.exit(code ?? 0)); diff --git a/examples/scripts/resolve-php.mjs b/examples/scripts/resolve-php.mjs deleted file mode 100644 index b2fe790..0000000 --- a/examples/scripts/resolve-php.mjs +++ /dev/null @@ -1,43 +0,0 @@ -/** - * Resolve PHP executable: PHP env → PATH → common WinGet install path. - */ -import { existsSync } from "node:fs"; -import { homedir } from "node:os"; -import { join } from "node:path"; -import { spawnSync } from "node:child_process"; - -function tryPhp(path) { - if (!path || !existsSync(path)) return null; - const r = spawnSync(path, ["--version"], { encoding: "utf8" }); - return r.status === 0 ? path : null; -} - -function fromPath() { - const r = spawnSync("php", ["--version"], { encoding: "utf8", shell: true }); - return r.status === 0 ? "php" : null; -} - -function wingetPhp() { - const base = join( - homedir(), - "AppData/Local/Microsoft/WinGet/Packages/PHP.PHP.8.3_Microsoft.Winget.Source_8wekyb3d8bbwe" - ); - return tryPhp(join(base, process.platform === "win32" ? "php.exe" : "php")); -} - -export function resolvePhp() { - if (process.env.PHP) { - const explicit = tryPhp(process.env.PHP); - if (explicit) return explicit; - } - return fromPath() ?? wingetPhp(); -} - -if (import.meta.url === new URL(process.argv[1], "file:").href) { - const php = resolvePhp(); - if (!php) { - console.error("php not found — install PHP 8.1+ or set PHP=/path/to/php"); - process.exit(1); - } - console.log(php); -} diff --git a/examples/shared/vite-static.ts b/examples/shared/vite-static.ts deleted file mode 100644 index 5009563..0000000 --- a/examples/shared/vite-static.ts +++ /dev/null @@ -1,32 +0,0 @@ -import path from "path"; -import { fileURLToPath } from "url"; -import { cpSync, existsSync } from "fs"; -import sirv from "sirv"; -import type { Connect, Plugin } from "vite"; - -const examplesRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url)), ".."); -const staticRoot = path.join(examplesRoot, "web/static"); - -export function serveExamplesStatic(): Plugin { - const attach = (middlewares: Connect.Server) => { - middlewares.use("/static", sirv(staticRoot, { dev: true, etag: true, single: false })); - }; - return { - name: "serve-codegen-examples-static", - configureServer(server) { - attach(server.middlewares); - }, - configurePreviewServer(server) { - attach(server.middlewares); - }, - closeBundle() { - const outStatic = path.join(examplesRoot, "dist/static"); - if (existsSync(staticRoot)) { - cpSync(staticRoot, outStatic, { recursive: true }); - } - }, - }; -} - -export const generatedUiRoot = path.resolve(examplesRoot, "../generated/ui"); -export const generatedUtilsRoot = path.resolve(examplesRoot, "../generated/utils"); diff --git a/examples/solid/index.html b/examples/solid/index.html deleted file mode 100644 index 648a9ff..0000000 --- a/examples/solid/index.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - UI8Kit Codegen · SolidJS - - - -
- - - diff --git a/examples/solid/src/Welcome.tsx b/examples/solid/src/Welcome.tsx deleted file mode 100644 index 72767a4..0000000 --- a/examples/solid/src/Welcome.tsx +++ /dev/null @@ -1,105 +0,0 @@ -/* @jsxImportSource solid-js */ -import { - Badge, - Block, - Box, - Button, - Card, - CardContent, - CardHeader, - CardTitle, - Container, - Grid, - Group, - Link, - Stack, - Text, - Title, -} from "@ui"; -import welcome from "../../data/welcome.json"; - -export type WelcomeViewProps = { - runtime: string; -}; - -export function WelcomeView(props: WelcomeViewProps) { - return ( - - - - - - {props.runtime} - - - {welcome.title} - - {welcome.subtitle} - - - - - Generated primitives - - - - - - - - - - - - Badge - Secondary - Outline - - - - - - - {welcome.features.map((feature) => ( - - - {feature.title} - - - {feature.description} - - - ))} - - - - - Preview other runtimes - - {welcome.runtimes.map((rt) => ( - - {rt.label} - - ))} - - - - - - Same shadcn tokens · generated ui/ primitives · @ui8kit/codegen - - - - - ); -} diff --git a/examples/solid/src/main.tsx b/examples/solid/src/main.tsx deleted file mode 100644 index a761e77..0000000 --- a/examples/solid/src/main.tsx +++ /dev/null @@ -1,5 +0,0 @@ -/* @jsxImportSource solid-js */ -import { render } from "solid-js/web"; -import { WelcomeView } from "./Welcome"; - -render(() => , document.getElementById("app")!); diff --git a/examples/solid/tsconfig.json b/examples/solid/tsconfig.json deleted file mode 100644 index 0ddfd47..0000000 --- a/examples/solid/tsconfig.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "compilerOptions": { - "target": "ES2022", - "module": "ESNext", - "moduleResolution": "bundler", - "strict": true, - "skipLibCheck": true, - "resolveJsonModule": true, - "jsx": "preserve", - "jsxImportSource": "solid-js", - "paths": { - "@ui": ["../../generated/ui/index.solid.ts"], - "@ui/*": ["../../generated/ui/*"] - } - }, - "include": ["src/**/*.ts", "src/**/*.tsx", "../data/**/*.json"] -} diff --git a/examples/solid/vite.config.ts b/examples/solid/vite.config.ts deleted file mode 100644 index eaeb8e2..0000000 --- a/examples/solid/vite.config.ts +++ /dev/null @@ -1,23 +0,0 @@ -import path from "path"; -import { fileURLToPath } from "url"; -import { defineConfig } from "vite"; -import solid from "vite-plugin-solid"; -import { generatedUiRoot, serveExamplesStatic } from "../shared/vite-static"; - -const rootDir = path.dirname(fileURLToPath(import.meta.url)); - -export default defineConfig({ - root: rootDir, - plugins: [solid(), serveExamplesStatic()], - resolve: { - alias: { - "@ui": path.join(generatedUiRoot, "index.solid.ts"), - }, - }, - server: { - port: 5178, - fs: { - allow: [path.resolve(rootDir, ".."), path.resolve(rootDir, "../../generated")], - }, - }, -}); diff --git a/examples/svelte/dist/assets/index-Bluwn2uY.js b/examples/svelte/dist/assets/index-Bluwn2uY.js deleted file mode 100644 index a3c266b..0000000 --- a/examples/svelte/dist/assets/index-Bluwn2uY.js +++ /dev/null @@ -1,2 +0,0 @@ -var To=Object.defineProperty;var Vn=e=>{throw TypeError(e)};var Eo=(e,t,r)=>t in e?To(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r;var _e=(e,t,r)=>Eo(e,typeof t!="symbol"?t+"":t,r),en=(e,t,r)=>t.has(e)||Vn("Cannot "+r);var u=(e,t,r)=>(en(e,t,"read from private field"),r?r.call(e):t.get(e)),T=(e,t,r)=>t.has(e)?Vn("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,r),$=(e,t,r,n)=>(en(e,t,"write to private field"),n?n.call(e,r):t.set(e,r),r),M=(e,t,r)=>(en(e,t,"access private method"),r);(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const s of document.querySelectorAll('link[rel="modulepreload"]'))n(s);new MutationObserver(s=>{for(const o of s)if(o.type==="childList")for(const l of o.addedNodes)l.tagName==="LINK"&&l.rel==="modulepreload"&&n(l)}).observe(document,{childList:!0,subtree:!0});function r(s){const o={};return s.integrity&&(o.integrity=s.integrity),s.referrerPolicy&&(o.referrerPolicy=s.referrerPolicy),s.crossOrigin==="use-credentials"?o.credentials="include":s.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function n(s){if(s.ep)return;s.ep=!0;const o=r(s);fetch(s.href,o)}})();const xs=!1;var Cn=Array.isArray,Co=Array.prototype.indexOf,jr=Array.prototype.includes,Jr=Array.from,Ao=Object.defineProperty,dr=Object.getOwnPropertyDescriptor,ks=Object.getOwnPropertyDescriptors,Po=Object.prototype,Ro=Array.prototype,An=Object.getPrototypeOf,Kn=Object.isExtensible;const ie=()=>{};function No(e){return e()}function un(e){for(var t=0;t{e=n,t=s});return{promise:r,resolve:e,reject:t}}const te=2,Ut=4,xr=8,Pn=1<<24,Oe=16,Le=32,ut=64,fn=128,Ce=512,W=1024,J=2048,Ue=4096,ce=8192,Ae=16384,Jt=32768,Bn=1<<25,Et=65536,Gr=1<<17,zo=1<<18,Yt=1<<19,Ss=1<<20,Qe=1<<25,Ct=65536,Dr=1<<21,It=1<<22,at=1<<23,kt=Symbol("$state"),Mo=Symbol(""),Mr=Symbol("attributes"),dn=Symbol("class"),hn=Symbol("style"),ir=Symbol("text"),Yr=new class extends Error{constructor(){super(...arguments);_e(this,"name","StaleReactionError");_e(this,"message","The reaction that called `getAbortSignal()` was re-run or destroyed")}};var _s;const Rn=!!((_s=globalThis.document)!=null&&_s.contentType)&&globalThis.document.contentType.includes("xml");function Oo(){throw new Error("https://svelte.dev/e/async_derived_orphan")}function Io(e,t,r){throw new Error("https://svelte.dev/e/each_key_duplicate")}function Lo(e){throw new Error("https://svelte.dev/e/effect_in_teardown")}function Fo(){throw new Error("https://svelte.dev/e/effect_in_unowned_derived")}function jo(e){throw new Error("https://svelte.dev/e/effect_orphan")}function Go(){throw new Error("https://svelte.dev/e/effect_update_depth_exceeded")}function Do(){throw new Error("https://svelte.dev/e/state_descriptors_fixed")}function Vo(){throw new Error("https://svelte.dev/e/state_prototype_fixed")}function Ko(){throw new Error("https://svelte.dev/e/state_unsafe_mutation")}function Bo(){throw new Error("https://svelte.dev/e/svelte_boundary_reset_onerror")}const Uo=1,qo=2,Ho=16,Wo=1,Jo=2,U=Symbol("uninitialized"),Ts="http://www.w3.org/1999/xhtml",Yo="http://www.w3.org/2000/svg",Xo="@attach";function Zo(){console.warn("https://svelte.dev/e/derived_inert")}function Qo(){console.warn("https://svelte.dev/e/select_multiple_invalid_value")}function ei(){console.warn("https://svelte.dev/e/svelte_boundary_reset_noop")}function Es(e){return e===this.v}function ti(e,t){return e!=e?t==t:e!==t||e!==null&&typeof e=="object"||typeof e=="function"}function Cs(e){return!ti(e,this.v)}let Xr=!1,ri=!1;function ni(){Xr=!0}let q=null;function qt(e){q=e}function re(e,t=!1,r){q={p:q,i:!1,c:null,e:null,s:e,x:null,r:N,l:Xr&&!t?{s:null,u:null,$:[]}:null}}function ne(e){var t=q,r=t.e;if(r!==null){t.e=null;for(var n of r)Ys(n)}return t.i=!0,q=t.p,{}}function kr(){return!Xr||q!==null&&q.l===null}let Mt=[];function si(){var e=Mt;Mt=[],un(e)}function ct(e){if(Mt.length===0){var t=Mt;queueMicrotask(()=>{t===Mt&&si()})}Mt.push(e)}function As(e){var t=N;if(t===null)return P.f|=at,e;if((t.f&Jt)===0&&(t.f&Ut)===0)throw e;lt(e,t)}function lt(e,t){if(!(t!==null&&(t.f&Ae)!==0)){for(;t!==null;){if((t.f&fn)!==0){if((t.f&Jt)===0)throw e;try{t.b.error(e);return}catch(r){e=r}}t=t.parent}throw e}}const oi=-7169;function K(e,t){e.f=e.f&oi|t}function Nn(e){(e.f&Ce)!==0||e.deps===null?K(e,W):K(e,Ue)}function Ps(e){if(e!==null)for(const t of e)(t.f&te)===0||(t.f&Ct)===0||(t.f^=Ct,Ps(t.deps))}function Rs(e,t,r){(e.f&J)!==0?t.add(e):(e.f&Ue)!==0&&r.add(e),Ps(e.deps),K(e,W)}function ii(e){let t=0,r=Pt(0),n;return()=>{Ln()&&(y(r),Pi(()=>(t===0&&(n=uo(()=>e(()=>vr(r)))),t+=1,()=>{ct(()=>{t-=1,t===0&&(n==null||n(),n=void 0,vr(r))})})))}}var li=Et|Yt;function ai(e,t,r,n){new ci(e,t,r,n)}var Se,En,Te,mt,he,Ee,ae,we,Je,_t,ot,Ft,br,mr,Ye,qr,V,ui,fi,di,vn,Or,Ir,pn,gn;class ci{constructor(t,r,n,s){T(this,V);_e(this,"parent");_e(this,"is_pending",!1);_e(this,"transform_error");T(this,Se);T(this,En,null);T(this,Te);T(this,mt);T(this,he);T(this,Ee,null);T(this,ae,null);T(this,we,null);T(this,Je,null);T(this,_t,0);T(this,ot,0);T(this,Ft,!1);T(this,br,new Set);T(this,mr,new Set);T(this,Ye,null);T(this,qr,ii(()=>($(this,Ye,Pt(u(this,_t))),()=>{$(this,Ye,null)})));var o;$(this,Se,t),$(this,Te,r),$(this,mt,l=>{var i=N;i.b=this,i.f|=fn,n(l)}),this.parent=N.b,this.transform_error=s??((o=this.parent)==null?void 0:o.transform_error)??(l=>l),$(this,he,Qr(()=>{M(this,V,vn).call(this)},li))}defer_effect(t){Rs(t,u(this,br),u(this,mr))}is_rendered(){return!this.is_pending&&(!this.parent||this.parent.is_rendered())}has_pending_snippet(){return!!u(this,Te).pending}update_pending_count(t,r){M(this,V,pn).call(this,t,r),$(this,_t,u(this,_t)+t),!(!u(this,Ye)||u(this,Ft))&&($(this,Ft,!0),ct(()=>{$(this,Ft,!1),u(this,Ye)&&Ht(u(this,Ye),u(this,_t))}))}get_effect_pending(){return u(this,qr).call(this),y(u(this,Ye))}error(t){if(!u(this,Te).onerror&&!u(this,Te).failed)throw t;S!=null&&S.is_fork?(u(this,Ee)&&S.skip_effect(u(this,Ee)),u(this,ae)&&S.skip_effect(u(this,ae)),u(this,we)&&S.skip_effect(u(this,we)),S.oncommit(()=>{M(this,V,gn).call(this,t)})):M(this,V,gn).call(this,t)}}Se=new WeakMap,En=new WeakMap,Te=new WeakMap,mt=new WeakMap,he=new WeakMap,Ee=new WeakMap,ae=new WeakMap,we=new WeakMap,Je=new WeakMap,_t=new WeakMap,ot=new WeakMap,Ft=new WeakMap,br=new WeakMap,mr=new WeakMap,Ye=new WeakMap,qr=new WeakMap,V=new WeakSet,ui=function(){try{$(this,Ee,ge(()=>u(this,mt).call(this,u(this,Se))))}catch(t){this.error(t)}},fi=function(t){const r=u(this,Te).failed;r&&$(this,we,ge(()=>{r(u(this,Se),()=>t,()=>()=>{})}))},di=function(){const t=u(this,Te).pending;t&&(this.is_pending=!0,$(this,ae,ge(()=>t(u(this,Se)))),ct(()=>{var r=$(this,Je,document.createDocumentFragment()),n=et();r.append(n),$(this,Ee,M(this,V,Ir).call(this,()=>ge(()=>u(this,mt).call(this,n)))),u(this,ot)===0&&(u(this,Se).before(r),$(this,Je,null),St(u(this,ae),()=>{$(this,ae,null)}),M(this,V,Or).call(this,S))}))},vn=function(){try{if(this.is_pending=this.has_pending_snippet(),$(this,ot,0),$(this,_t,0),$(this,Ee,ge(()=>{u(this,mt).call(this,u(this,Se))})),u(this,ot)>0){var t=$(this,Je,document.createDocumentFragment());Gn(u(this,Ee),t);const r=u(this,Te).pending;$(this,ae,ge(()=>r(u(this,Se))))}else M(this,V,Or).call(this,S)}catch(r){this.error(r)}},Or=function(t){this.is_pending=!1,t.transfer_effects(u(this,br),u(this,mr))},Ir=function(t){var r=N,n=P,s=q;qe(u(this,he)),Pe(u(this,he)),qt(u(this,he).ctx);try{return At.ensure(),t()}catch(o){return As(o),null}finally{qe(r),Pe(n),qt(s)}},pn=function(t,r){var n;if(!this.has_pending_snippet()){this.parent&&M(n=this.parent,V,pn).call(n,t,r);return}$(this,ot,u(this,ot)+t),u(this,ot)===0&&(M(this,V,Or).call(this,r),u(this,ae)&&St(u(this,ae),()=>{$(this,ae,null)}),u(this,Je)&&(u(this,Se).before(u(this,Je)),$(this,Je,null)))},gn=function(t){u(this,Ee)&&(ee(u(this,Ee)),$(this,Ee,null)),u(this,ae)&&(ee(u(this,ae)),$(this,ae,null)),u(this,we)&&(ee(u(this,we)),$(this,we,null));var r=u(this,Te).onerror;let n=u(this,Te).failed;var s=!1,o=!1;const l=()=>{if(s){ei();return}s=!0,o&&Bo(),u(this,we)!==null&&St(u(this,we),()=>{$(this,we,null)}),M(this,V,Ir).call(this,()=>{M(this,V,vn).call(this)})},i=c=>{try{o=!0,r==null||r(c,l),o=!1}catch(a){lt(a,u(this,he)&&u(this,he).parent)}n&&$(this,we,M(this,V,Ir).call(this,()=>{try{return ge(()=>{var a=N;a.b=this,a.f|=fn,n(u(this,Se),()=>c,()=>l)})}catch(a){return lt(a,u(this,he).parent),null}}))};ct(()=>{var c;try{c=this.transform_error(t)}catch(a){lt(a,u(this,he)&&u(this,he).parent);return}c!==null&&typeof c=="object"&&typeof c.then=="function"?c.then(i,a=>lt(a,u(this,he)&&u(this,he).parent)):i(c)})};function Ns(e,t,r,n){const s=kr()?Zr:Ms;var o=e.filter(p=>!p.settled),l=t.map(s);if(r.length===0&&o.length===0){n(l);return}var i=N,c=hi(),a=o.length===1?o[0].promise:o.length>1?Promise.all(o.map(p=>p.promise)):null;function h(p){if((i.f&Ae)===0){c();try{n([...l,...p])}catch(d){lt(d,i)}Vr()}}var v=zs();if(r.length===0){a.then(()=>h([])).finally(v);return}function f(){Promise.all(r.map(p=>vi(p))).then(h).catch(p=>lt(p,i)).finally(v)}a?a.then(()=>{c(),f(),Vr()}):f()}function hi(){var e=N,t=P,r=q,n=S;return function(o=!0){qe(e),Pe(t),qt(r),o&&(e.f&Ae)===0&&(n==null||n.activate(),n==null||n.apply())}}function Vr(e=!0){qe(null),Pe(null),qt(null),e&&(S==null||S.deactivate())}function zs(){var e=N,t=e.b,r=S,n=!!(t!=null&&t.is_rendered());return t==null||t.update_pending_count(1,r),r.increment(n,e),()=>{t==null||t.update_pending_count(-1,r),r.decrement(n,e)}}function Zr(e){var t=te|J;return N!==null&&(N.f|=Yt),{ctx:q,deps:null,effects:null,equals:Es,f:t,fn:e,reactions:null,rv:0,v:U,wv:0,parent:N,ac:null}}const lr=Symbol("obsolete");function vi(e,t,r){let n=N;n===null&&Oo();var s=void 0,o=Pt(U),l=!P,i=new Set;return Ai(()=>{var p,d;var c=N,a=$s();s=a.promise;try{Promise.resolve(e()).then(a.resolve,g=>{g!==Yr&&a.reject(g)}).finally(Vr)}catch(g){a.reject(g),Vr()}var h=S;if(l){if((c.f&Jt)!==0)var v=zs();if((p=n.b)!=null&&p.is_rendered())(d=h.async_deriveds.get(c))==null||d.reject(lr);else for(const g of i.values())g.reject(lr);i.add(a),h.async_deriveds.set(c,a)}const f=(g,m=void 0)=>{v==null||v(),i.delete(a),m!==lr&&(h.activate(),m?(o.f|=at,Ht(o,m)):((o.f&at)!==0&&(o.f^=at),Ht(o,g)),h.deactivate())};a.promise.then(f,g=>f(null,g||"unknown"))}),Fn(()=>{for(const c of i)c.reject(lr)}),new Promise(c=>{function a(h){function v(){h===s?c(o):a(s)}h.then(v,v)}a(s)})}function D(e){const t=Zr(e);return no(t),t}function Ms(e){const t=Zr(e);return t.equals=Cs,t}function pi(e){var t=e.effects;if(t!==null){e.effects=null;for(var r=0;rthis.schedule(n)){var n=u(this,Ve).get(t);if(n){u(this,Ve).delete(t);for(var s of n.d)K(s,J),r(s);for(s of n.m)K(s,Ue),r(s)}u(this,Bt).add(t)}capture(t,r,n=!1){t.v!==U&&!this.previous.has(t)&&this.previous.set(t,t.v),(t.f&at)===0&&(this.current.set(t,[r,n]),Q==null||Q.set(t,r)),this.is_fork||(t.v=r)}activate(){S=this}deactivate(){S=null,Q=null}flush(){try{rn=!0,S=this,M(this,I,ar).call(this)}finally{Un=0,bn=null,Ot=null,Lr=null,rn=!1,S=null,Q=null,$t.clear()}}discard(){var t;for(const r of u(this,Dt))r(this);u(this,Dt).clear();for(const r of this.async_deriveds.values())r.reject(lr);M(this,I,cr).call(this),(t=u(this,Kt))==null||t.resolve()}register_created_effect(t){u(this,_r).push(t)}increment(t,r){if($(this,Vt,u(this,Vt)+1),t){let n=u(this,Xe).get(r)??0;u(this,Xe).set(r,n+1)}}decrement(t,r){if($(this,Vt,u(this,Vt)-1),t){let n=u(this,Xe).get(r)??0;n===1?u(this,Xe).delete(r):u(this,Xe).set(r,n-1)}u(this,wt)||($(this,wt,!0),ct(()=>{$(this,wt,!1),this.linked&&this.flush()}))}transfer_effects(t,r){for(const n of t)u(this,Ze).add(n);for(const n of r)u(this,ze).add(n);t.clear(),r.clear()}oncommit(t){u(this,Gt).add(t)}ondiscard(t){u(this,Dt).add(t)}settled(){return(u(this,Kt)??$(this,Kt,$s())).promise}static ensure(){if(S===null){const t=S=new Hr;rn||ct(()=>{u(t,jt)||t.flush()})}return S}apply(){{Q=null;return}}schedule(t){var s;if(bn=t,(s=t.b)!=null&&s.is_pending&&(t.f&(Ut|xr|Pn))!==0&&(t.f&Jt)===0){t.b.defer_effect(t);return}for(var r=t;r.parent!==null;){r=r.parent;var n=r.f;if(Ot!==null&&r===N&&(P===null||(P.f&te)===0))return;if((n&(ut|Le))!==0){if((n&W)===0)return;r.f^=W}}u(this,ve).push(r)}};jt=new WeakMap,it=new WeakMap,yt=new WeakMap,Gt=new WeakMap,Dt=new WeakMap,Vt=new WeakMap,Xe=new WeakMap,Kt=new WeakMap,ve=new WeakMap,_r=new WeakMap,Ze=new WeakMap,ze=new WeakMap,Ve=new WeakMap,Bt=new WeakMap,wt=new WeakMap,I=new WeakSet,mn=function(){if(this.is_fork)return!0;for(const n of u(this,Xe).keys()){for(var t=n,r=!1;t.parent!==null;){if(u(this,Ve).has(t)){r=!0;break}t=t.parent}if(!r)return!0}return!1},ar=function(){var c,a,h,v;$(this,jt,!0),Un++>1e3&&(M(this,I,cr).call(this),_i());for(const f of u(this,Ze))u(this,ze).delete(f),K(f,J),this.schedule(f);for(const f of u(this,ze))K(f,Ue),this.schedule(f);const t=u(this,ve);$(this,ve,[]),this.apply();var r=Ot=[],n=[],s=Lr=[];for(const f of t)try{M(this,I,_n).call(this,f,r,n)}catch(p){throw Ds(f),M(this,I,mn).call(this)||this.discard(),p}if(S=null,s.length>0){var o=Hr.ensure();for(const f of s)o.schedule(f)}if(Ot=null,Lr=null,M(this,I,mn).call(this)){M(this,I,zt).call(this,n),M(this,I,zt).call(this,r);for(const[f,p]of u(this,Ve))Gs(f,p);s.length>0&&M(c=S,I,ar).call(c);return}const l=M(this,I,Ls).call(this);if(l){M(this,I,zt).call(this,n),M(this,I,zt).call(this,r),M(a=l,I,Fs).call(a,this);return}u(this,Ze).clear(),u(this,ze).clear();for(const f of u(this,Gt))f(this);u(this,Gt).clear(),hr=this,qn(n),qn(r),hr=null,(h=u(this,Kt))==null||h.resolve();var i=S;if(u(this,Vt)===0&&(u(this,ve).length===0||i!==null)&&M(this,I,cr).call(this),u(this,ve).length>0)if(i!==null){const f=i;u(f,ve).push(...u(this,ve).filter(p=>!u(f,ve).includes(p)))}else i=this;i!==null&&M(v=i,I,ar).call(v)},_n=function(t,r,n){t.f^=W;for(var s=t.first;s!==null;){var o=s.f,l=(o&(Le|ut))!==0,i=l&&(o&W)!==0,c=i||(o&ce)!==0||u(this,Ve).has(s);if(!c&&s.fn!==null){l?s.f^=W:(o&Ut)!==0?r.push(s):Sr(s)&&((o&Oe)!==0&&u(this,ze).add(s),Wt(s));var a=s.first;if(a!==null){s=a;continue}}for(;s!==null;){var h=s.next;if(h!==null){s=h;break}s=s.parent}}},Ls=function(){for(var t=u(this,it);t!==null;){if(!t.is_fork){for(const[r,[,n]]of this.current)if(t.current.has(r)&&!n)return t}t=u(t,it)}return null},Fs=function(t){var n;for(const[s,o]of t.current)!this.previous.has(s)&&t.previous.has(s)&&this.previous.set(s,t.previous.get(s)),this.current.set(s,o);for(const[s,o]of t.async_deriveds){const l=this.async_deriveds.get(s);l&&o.promise.then(l.resolve).catch(l.reject)}t.async_deriveds.clear(),this.transfer_effects(u(t,Ze),u(t,ze));const r=s=>{var o=s.reactions;if(o!==null)for(const c of o){var l=c.f;if((l&te)!==0)r(c);else{var i=c;l&(It|Oe)&&!this.async_deriveds.has(i)&&(u(this,ze).delete(i),K(i,J),this.schedule(i))}}};for(const s of this.current.keys())r(s);this.oncommit(()=>t.discard()),M(n=t,I,cr).call(n),S=this,M(this,I,ar).call(this)},zt=function(t){for(var r=0;r!f.current.get(p)[1]);if(!(!u(f,jt)||s.length===0)){var o=s.filter(p=>!this.current.has(p));if(o.length===0)t&&f.discard();else if(r.length>0){if(t)for(const p of u(this,Bt))f.unskip_effect(p,d=>{var g;(d.f&(Oe|It))!==0?f.schedule(d):M(g=f,I,zt).call(g,[d])});f.activate();var l=new Set,i=new Map;for(var c of r)js(c,o,l,i);i=new Map;var a=[...f.current].filter(([p,d])=>{const g=this.current.get(p);return g?g[0]!==d[0]||g[1]!==d[1]:!0}).map(([p])=>p);if(a.length>0)for(const p of u(this,_r))(p.f&(Ae|ce|Gr))===0&&Mn(p,a,i)&&((p.f&(It|Oe))!==0?(K(p,J),f.schedule(p)):u(f,Ze).add(p));if(u(f,ve).length>0&&!u(f,wt)){f.apply();for(var h of u(f,ve))M(v=f,I,_n).call(v,h,[],[]);$(f,ve,[])}f.deactivate()}}}},cr=function(){if(this.linked){var t=u(this,it),r=u(this,yt);t===null?tn=r:$(t,yt,r),r===null?Nt=t:$(r,it,t),this.linked=!1}};let At=Hr;function _i(){try{Go()}catch(e){lt(e,bn)}}let Ne=null;function qn(e){var t=e.length;if(t!==0){for(var r=0;r0)){$t.clear();for(const s of Ne){if((s.f&(Ae|ce))!==0)continue;const o=[s];let l=s.parent;for(;l!==null;)Ne.has(l)&&(Ne.delete(l),o.push(l)),l=l.parent;for(let i=o.length-1;i>=0;i--){const c=o[i];(c.f&(Ae|ce))===0&&Wt(c)}}Ne.clear()}}Ne=null}}function js(e,t,r,n){if(!r.has(e)&&(r.add(e),e.reactions!==null))for(const s of e.reactions){const o=s.f;(o&te)!==0?js(s,t,r,n):(o&(It|Oe))!==0&&(o&J)===0&&Mn(s,t,n)&&(K(s,J),On(s))}}function Mn(e,t,r){const n=r.get(e);if(n!==void 0)return n;if(e.deps!==null)for(const s of e.deps){if(jr.call(t,s))return!0;if((s.f&te)!==0&&Mn(s,t,r))return r.set(s,!0),!0}return r.set(e,!1),!1}function On(e){S.schedule(e)}function Gs(e,t){if(!((e.f&Le)!==0&&(e.f&W)!==0)){(e.f&J)!==0?t.d.push(e):(e.f&Ue)!==0&&t.m.push(e),K(e,W);for(var r=e.first;r!==null;)Gs(r,t),r=r.next}}function Ds(e){K(e,W);for(var t=e.first;t!==null;)Ds(t),t=t.next}let Kr=new Set;const $t=new Map;let Vs=!1;function Pt(e,t){var r={f:0,v:e,reactions:null,equals:Es,rv:0,wv:0};return r}function tt(e,t){const r=Pt(e);return no(r),r}function yi(e,t=!1,r=!0){var s;const n=Pt(e);return t||(n.equals=Cs),Xr&&r&&q!==null&&q.l!==null&&((s=q.l).s??(s.s=[])).push(n),n}function pt(e,t,r=!1){P!==null&&(!Ie||(P.f&Gr)!==0)&&kr()&&(P.f&(te|Oe|It|Gr))!==0&&(Be===null||!Be.has(e))&&Ko();let n=r?ur(t):t;return Ht(e,n,Lr)}function Ht(e,t,r=null){if(!e.equals(t)){$t.set(e,ft?t:e.v);var n=At.ensure();if(n.capture(e,t),(e.f&te)!==0){const s=e;(e.f&J)!==0&&zn(s),Q===null&&Nn(s)}e.wv=oo(),Ks(e,J,r),kr()&&N!==null&&(N.f&W)!==0&&(N.f&(Le|ut))===0&&($e===null?zi([e]):$e.push(e)),!n.is_fork&&Kr.size>0&&!Vs&&wi()}return t}function wi(){Vs=!1;for(const e of Kr){(e.f&W)!==0&&K(e,Ue);let t;try{t=Sr(e)}catch{t=!0}t&&Wt(e)}Kr.clear()}function vr(e){pt(e,e.v+1)}function Ks(e,t,r){var n=e.reactions;if(n!==null)for(var s=kr(),o=n.length,l=0;l{if(Tt===o)return i();var c=P,a=Tt;Pe(null),Xn(o);var h=i();return Pe(c),Xn(a),h};return n&&r.set("length",tt(e.length)),new Proxy(e,{defineProperty(i,c,a){(!("value"in a)||a.configurable===!1||a.enumerable===!1||a.writable===!1)&&Do();var h=r.get(c);return h===void 0?l(()=>{var v=tt(a.value);return r.set(c,v),v}):pt(h,a.value,!0),!0},deleteProperty(i,c){var a=r.get(c);if(a===void 0){if(c in i){const h=l(()=>tt(U));r.set(c,h),vr(s)}}else pt(a,U),vr(s);return!0},get(i,c,a){var p;if(c===kt)return e;var h=r.get(c),v=c in i;if(h===void 0&&(!v||(p=dr(i,c))!=null&&p.writable)&&(h=l(()=>{var d=ur(v?i[c]:U),g=tt(d);return g}),r.set(c,h)),h!==void 0){var f=y(h);return f===U?void 0:f}return Reflect.get(i,c,a)},getOwnPropertyDescriptor(i,c){var a=Reflect.getOwnPropertyDescriptor(i,c);if(a&&"value"in a){var h=r.get(c);h&&(a.value=y(h))}else if(a===void 0){var v=r.get(c),f=v==null?void 0:v.v;if(v!==void 0&&f!==U)return{enumerable:!0,configurable:!0,value:f,writable:!0}}return a},has(i,c){var f;if(c===kt)return!0;var a=r.get(c),h=a!==void 0&&a.v!==U||Reflect.has(i,c);if(a!==void 0||N!==null&&(!h||(f=dr(i,c))!=null&&f.writable)){a===void 0&&(a=l(()=>{var p=h?ur(i[c]):U,d=tt(p);return d}),r.set(c,a));var v=y(a);if(v===U)return!1}return h},set(i,c,a,h){var C;var v=r.get(c),f=c in i;if(n&&c==="length")for(var p=a;ptt(U)),r.set(p+"",d))}if(v===void 0)(!f||(C=dr(i,c))!=null&&C.writable)&&(v=l(()=>tt(void 0)),pt(v,ur(a)),r.set(c,v));else{f=v.v!==U;var g=l(()=>ur(a));pt(v,g)}var m=Reflect.getOwnPropertyDescriptor(i,c);if(m!=null&&m.set&&m.set.call(h,a),!f){if(n&&typeof c=="string"){var b=r.get("length"),_=Number(c);Number.isInteger(_)&&_>=b.v&&pt(b,_+1)}vr(s)}return!0},ownKeys(i){y(s);var c=Reflect.ownKeys(i).filter(v=>{var f=r.get(v);return f===void 0||f.v!==U});for(var[a,h]of r)h.v!==U&&!(a in i)&&c.push(a);return c},setPrototypeOf(){Vo()}})}function Hn(e){try{if(e!==null&&typeof e=="object"&&kt in e)return e[kt]}catch{}return e}function xi(e,t){return Object.is(Hn(e),Hn(t))}var Wn,Bs,Us,qs;function ki(){if(Wn===void 0){Wn=window,Bs=/Firefox/.test(navigator.userAgent);var e=Element.prototype,t=Node.prototype,r=Text.prototype;Us=dr(t,"firstChild").get,qs=dr(t,"nextSibling").get,Kn(e)&&(e[dn]=void 0,e[Mr]=null,e[hn]=void 0,e.__e=void 0),Kn(r)&&(r[ir]=void 0)}}function et(e=""){return document.createTextNode(e)}function Br(e){return Us.call(e)}function $r(e){return qs.call(e)}function dt(e,t){return Br(e)}function G(e,t=!1){{var r=Br(e);return r instanceof Comment&&r.data===""?$r(r):r}}function se(e,t=1,r=!1){let n=e;for(;t--;)n=$r(n);return n}function $i(e){e.textContent=""}function Hs(){return!1}function Ws(e,t,r){return t==null||t===Ts?r?document.createElement(e,{is:r}):document.createElement(e):r?document.createElementNS(t,e,{is:r}):document.createElementNS(t,e)}function Si(e,t){if(t){const r=document.body;e.autofocus=!0,ct(()=>{document.activeElement===r&&e.focus()})}}function In(e){var t=P,r=N;Pe(null),qe(null);try{return e()}finally{Pe(t),qe(r)}}function Js(e){N===null&&(P===null&&jo(),Fo()),ft&&Lo()}function Ti(e,t){var r=t.last;r===null?t.last=t.first=e:(r.next=e,e.prev=r,t.last=e)}function Fe(e,t){var r=N;r!==null&&(r.f&ce)!==0&&(e|=ce);var n={ctx:q,deps:null,nodes:null,f:e|J|Ce,first:null,fn:t,last:null,next:null,parent:r,b:r&&r.b,prev:null,teardown:null,wv:0,ac:null};S==null||S.register_created_effect(n);var s=n;if((e&Ut)!==0)Ot!==null?Ot.push(n):At.ensure().schedule(n);else if(t!==null){try{Wt(n)}catch(l){throw ee(n),l}s.deps===null&&s.teardown===null&&s.nodes===null&&s.first===s.last&&(s.f&Yt)===0&&(s=s.first,(e&Oe)!==0&&(e&Et)!==0&&s!==null&&(s.f|=Et))}if(s!==null&&(s.parent=r,r!==null&&Ti(s,r),P!==null&&(P.f&te)!==0&&(e&ut)===0)){var o=P;(o.effects??(o.effects=[])).push(s)}return n}function Ln(){return P!==null&&!Ie}function Fn(e){const t=Fe(xr,null);return K(t,W),t.teardown=e,t}function Jn(e){Js();var t=N.f,r=!P&&(t&Le)!==0&&q!==null&&!q.i;if(r){var n=q;(n.e??(n.e=[])).push(e)}else return Ys(e)}function Ys(e){return Fe(Ut|Ss,e)}function Ei(e){return Js(),Fe(xr|Ss,e)}function Ci(e){At.ensure();const t=Fe(ut|Yt,e);return(r={})=>new Promise(n=>{r.outro?St(t,()=>{ee(t),n(void 0)}):(ee(t),n(void 0))})}function Xs(e){return Fe(Ut,e)}function Ai(e){return Fe(It|Yt,e)}function Pi(e,t=0){return Fe(xr|t,e)}function Zt(e,t=[],r=[],n=[]){Ns(n,t,r,s=>{Fe(xr,()=>{e(...s.map(y))})})}function Qr(e,t=0){var r=Fe(Oe|t,e);return r}function Zs(e,t=0){var r=Fe(Pn|t,e);return r}function ge(e){return Fe(Le|Yt,e)}function Qs(e){var t=e.teardown;if(t!==null){const r=ft,n=P;Yn(!0),Pe(null);try{t.call(null)}finally{Yn(r),Pe(n)}}}function jn(e,t=!1){var r=e.first;for(e.first=e.last=null;r!==null;){const s=r.ac;s!==null&&In(()=>{s.abort(Yr)});var n=r.next;(r.f&ut)!==0?r.parent=null:ee(r,t),r=n}}function Ri(e){for(var t=e.first;t!==null;){var r=t.next;(t.f&Le)===0&&ee(t),t=r}}function ee(e,t=!0){var r=!1;(t||(e.f&zo)!==0)&&e.nodes!==null&&e.nodes.end!==null&&(Ni(e.nodes.start,e.nodes.end),r=!0),e.f|=Bn,jn(e,t&&!r),pr(e,0);var n=e.nodes&&e.nodes.t;if(n!==null)for(const o of n)o.stop();Qs(e),e.f^=Bn,e.f|=Ae;var s=e.parent;s!==null&&s.first!==null&&eo(e),e.next=e.prev=e.teardown=e.ctx=e.deps=e.fn=e.nodes=e.ac=e.b=null}function Ni(e,t){for(;e!==null;){var r=e===t?null:$r(e);e.remove(),e=r}}function eo(e){var t=e.parent,r=e.prev,n=e.next;r!==null&&(r.next=n),n!==null&&(n.prev=r),t!==null&&(t.first===e&&(t.first=n),t.last===e&&(t.last=r))}function St(e,t,r=!0){var n=[];to(e,n,!0);var s=()=>{r&&ee(e),t&&t()},o=n.length;if(o>0){var l=()=>--o||s();for(var i of n)i.out(l)}else s()}function to(e,t,r){if((e.f&ce)===0){e.f^=ce;var n=e.nodes&&e.nodes.t;if(n!==null)for(const i of n)(i.is_global||r)&&t.push(i);for(var s=e.first;s!==null;){var o=s.next;if((s.f&ut)===0){var l=(s.f&Et)!==0||(s.f&Le)!==0&&(e.f&Oe)!==0;to(s,t,l?r:!1)}s=o}}}function Ur(e){ro(e,!0)}function ro(e,t){if((e.f&ce)!==0){e.f^=ce,(e.f&W)===0&&(K(e,J),At.ensure().schedule(e));for(var r=e.first;r!==null;){var n=r.next,s=(r.f&Et)!==0||(r.f&Le)!==0;ro(r,s?t:!1),r=n}var o=e.nodes&&e.nodes.t;if(o!==null)for(const l of o)(l.is_global||t)&&l.in()}}function Gn(e,t){if(e.nodes)for(var r=e.nodes.start,n=e.nodes.end;r!==null;){var s=r===n?null:$r(r);t.append(r),r=s}}let Fr=!1,ft=!1;function Yn(e){ft=e}let P=null,Ie=!1;function Pe(e){P=e}let N=null;function qe(e){N=e}let Be=null;function no(e){P!==null&&(Be??(Be=new Set)).add(e)}let pe=null,ye=0,$e=null;function zi(e){$e=e}let so=1,gt=0,Tt=gt;function Xn(e){Tt=e}function oo(){return++so}function Sr(e){var t=e.f;if((t&J)!==0)return!0;if(t&te&&(e.f&=~Ct),(t&Ue)!==0){for(var r=e.deps,n=r.length,s=0;se.wv)return!0}(t&Ce)!==0&&Q===null&&K(e,W)}return!1}function io(e,t,r=!0){var n=e.reactions;if(n!==null&&!(Be!==null&&Be.has(e)))for(var s=0;s{e.ac.abort(Yr)}),e.ac=null);try{e.f|=Dr;var h=e.fn,v=h();e.f|=Jt;var f=e.deps,p=S==null?void 0:S.is_fork;if(pe!==null){var d;if(p||pr(e,ye),f!==null&&ye>0)for(f.length=ye+pe.length,d=0;dr==null?void 0:r.call(this,o))}return e.startsWith("pointer")||e.startsWith("touch")||e==="wheel"?ct(()=>{t.addEventListener(e,s,n)}):t.addEventListener(e,s,n),s}function Bi(e,t,r){(t[bt]??(t[bt]={}))[e]=r}function Ui(e){for(var t=0;t{throw b});throw f}}finally{e[bt]=t,delete e.currentTarget,Pe(h),qe(v)}}}var ys;const nn=((ys=globalThis==null?void 0:globalThis.window)==null?void 0:ys.trustedTypes)&&globalThis.window.trustedTypes.createPolicy("svelte-trusted-html",{createHTML:e=>e});function qi(e){return(nn==null?void 0:nn.createHTML(e))??e}function Hi(e){var t=Ws("template");return t.innerHTML=qi(e.replaceAll("","")),t.content}function gr(e,t){var r=N;r.nodes===null&&(r.nodes={start:e,end:t,a:null,t:null})}function je(e,t){var r=(t&Wo)!==0,n=(t&Jo)!==0,s,o=!e.startsWith("");return()=>{s===void 0&&(s=Hi(o?e:""+e),r||(s=Br(s)));var l=n||Bs?document.importNode(s,!0):s.cloneNode(!0);if(r){var i=Br(l),c=l.lastChild;gr(i,c)}else gr(l,l);return l}}function Z(e=""){{var t=et(e+"");return gr(t,t),t}}function oe(){var e=document.createDocumentFragment(),t=document.createComment(""),r=et();return e.append(t,r),gr(t,r),e}function x(e,t){e!==null&&e.before(t)}function Qt(e,t){var r=t==null?"":typeof t=="object"?`${t}`:t;r!==(e[ir]??(e[ir]=e.nodeValue))&&(e[ir]=r,e.nodeValue=`${r}`)}function Wi(e,t){return Ji(e,t)}const Cr=new Map;function Ji(e,{target:t,anchor:r,props:n={},events:s,context:o,intro:l=!0,transformError:i}){ki();var c=void 0,a=Ci(()=>{var h=r??t.appendChild(et());ai(h,{pending:()=>{}},p=>{re({});var d=q;o&&(d.c=o),s&&(n.$$events=s),c=e(p,n)||{},ne()},i);var v=new Set,f=p=>{for(var d=0;d{var m;for(var p of v)for(const b of[t,document]){var d=Cr.get(b),g=d.get(p);--g==0?(b.removeEventListener(p,xn),d.delete(p),d.size===0&&Cr.delete(b)):d.set(p,g)}wn.delete(f),h!==r&&((m=h.parentNode)==null||m.removeChild(h))}});return Yi.set(c,a),c}let Yi=new WeakMap;var Me,Ke,xe,xt,yr,wr,Wr;class ho{constructor(t,r=!0){_e(this,"anchor");T(this,Me,new Map);T(this,Ke,new Map);T(this,xe,new Map);T(this,xt,new Set);T(this,yr,!0);T(this,wr,t=>{if(u(this,Me).has(t)){var r=u(this,Me).get(t),n=u(this,Ke).get(r);if(n)Ur(n),u(this,xt).delete(r);else{var s=u(this,xe).get(r);s&&(Ur(s.effect),u(this,Ke).set(r,s.effect),u(this,xe).delete(r),s.fragment.lastChild.remove(),this.anchor.before(s.fragment),n=s.effect)}for(const[o,l]of u(this,Me)){if(u(this,Me).delete(o),o===t)break;const i=u(this,xe).get(l);i&&(ee(i.effect),u(this,xe).delete(l))}for(const[o,l]of u(this,Ke)){if(o===r||u(this,xt).has(o))continue;const i=()=>{if(Array.from(u(this,Me).values()).includes(o)){var a=document.createDocumentFragment();Gn(l,a),a.append(et()),u(this,xe).set(o,{effect:l,fragment:a})}else ee(l);u(this,xt).delete(o),u(this,Ke).delete(o)};u(this,yr)||!n?(u(this,xt).add(o),St(l,i,!1)):i()}}});T(this,Wr,t=>{u(this,Me).delete(t);const r=Array.from(u(this,Me).values());for(const[n,s]of u(this,xe))r.includes(n)||(ee(s.effect),u(this,xe).delete(n))});this.anchor=t,$(this,yr,r)}ensure(t,r){var n=S,s=Hs();if(r&&!u(this,Ke).has(t)&&!u(this,xe).has(t))if(s){var o=document.createDocumentFragment(),l=et();o.append(l),u(this,xe).set(t,{effect:ge(()=>r(l)),fragment:o})}else u(this,Ke).set(t,ge(()=>r(this.anchor)));if(u(this,Me).set(n,t),s){for(const[i,c]of u(this,Ke))i===t?n.unskip_effect(c):n.skip_effect(c);for(const[i,c]of u(this,xe))i===t?n.unskip_effect(c.effect):n.skip_effect(c.effect);n.oncommit(u(this,wr)),n.ondiscard(u(this,Wr))}else u(this,wr).call(this,n)}}Me=new WeakMap,Ke=new WeakMap,xe=new WeakMap,xt=new WeakMap,yr=new WeakMap,wr=new WeakMap,Wr=new WeakMap;function Xi(e,t,r){for(var n=[],s=t.length,o,l=t.length,i=0;i{if(o){if(o.pending.delete(v),o.done.add(v),o.pending.size===0){var f=e.outrogroups;kn(e,Jr(o.done)),f.delete(o),f.size===0&&(e.outrogroups=null)}}else l-=1},!1)}if(l===0){var c=n.length===0&&r!==null;if(c){var a=r,h=a.parentNode;$i(h),h.append(a),e.items.clear()}kn(e,t,!c)}else o={pending:new Set(t),done:new Set},(e.outrogroups??(e.outrogroups=new Set)).add(o)}function kn(e,t,r=!0){var n;if(e.pending.size>0){n=new Set;for(const l of e.pending.values())for(const i of l)n.add(e.items.get(i).e)}for(var s=0;s{var b=r();return Cn(b)?b:b==null?[]:Jr(b)}),h,v=new Map,f=!0;function p(b){(m.effect.f&Ae)===0&&(m.pending.delete(b),m.fallback=c,Zi(m,h,l,t,n),c!==null&&(h.length===0?(c.f&Qe)===0?Ur(c):(c.f^=Qe,fr(c,null,l)):St(c,()=>{c=null})))}function d(b){m.pending.delete(b)}var g=Qr(()=>{h=y(a);for(var b=h.length,_=new Set,C=S,L=Hs(),w=0;wo(l)):(c=ge(()=>o(Qn??(Qn=et()))),c.f|=Qe)),b>_.size&&Io(),!f)if(v.set(C,_),L){for(const[A,Y]of i)_.has(A)||C.skip_effect(Y.e);C.oncommit(p),C.ondiscard(d)}else p(C);y(a)}),m={effect:g,items:i,pending:v,outrogroups:null,fallback:c};f=!1}function er(e){for(;e!==null&&(e.f&Le)===0;)e=e.next;return e}function Zi(e,t,r,n,s){var O;var o=t.length,l=e.items,i=er(e.effect.first),c,a=null,h=[],v=[],f,p,d,g;for(g=0;g0){var R=null;Xi(e,w,R)}}}function Qi(e,t,r,n,s,o,l,i){var c=(l&Uo)!==0?(l&Ho)===0?yi(r,!1,!1):Pt(r):null,a=(l&qo)!==0?Pt(s):null;return{v:c,i:a,e:ge(()=>(o(t,c??r,a??s,i),()=>{e.delete(n)}))}}function fr(e,t,r){if(e.nodes)for(var n=e.nodes.start,s=e.nodes.end,o=t&&(t.f&Qe)===0?t.nodes.start:r;n!==null;){var l=$r(n);if(o.before(n),n===s)return;n=l}}function rt(e,t,r){t===null?e.effect.first=r:t.next=r,r===null?e.effect.last=t:r.prev=t}function ue(e,t,...r){var n=new ho(e);Qr(()=>{const s=t()??null;n.ensure(s,s&&(o=>s(o,...r)))},Et)}function Rt(e,t,r,n,s,o){var l=null,i=e,c=new ho(i,!1);Qr(()=>{const a=t()||null;var h=a==="svg"?Yo:void 0;if(a===null){c.ensure(null,null);return}return c.ensure(a,v=>{if(a){if(l=Ws(a,h),gr(l,l),n){var f=null,p=l.appendChild(et());n(l,p),f==null||f.remove()}N.nodes.end=l,v.before(l)}}),()=>{}},Et),Fn(()=>{})}function el(e,t){var r=void 0,n;Zs(()=>{r!==(r=t())&&(n&&(ee(n),n=null),r&&(n=ge(()=>{Xs(()=>r(e))})))})}function vo(e){var t,r,n="";if(typeof e=="string"||typeof e=="number")n+=e;else if(typeof e=="object")if(Array.isArray(e)){var s=e.length;for(t=0;t=0;){var i=l+o;(l===0||ts.includes(n[l-1]))&&(i===n.length||ts.includes(n[i]))?n=(l===0?"":n.substring(0,l))+n.substring(i+1):l=i}}return n===""?null:n}function rs(e,t=!1){var r=t?" !important;":";",n="";for(var s of Object.keys(e)){var o=e[s];o!=null&&o!==""&&(n+=" "+s+": "+o+r)}return n}function sn(e){return e[0]!=="-"||e[1]!=="-"?e.toLowerCase():e}function sl(e,t){if(t){var r="",n,s;if(Array.isArray(t)?(n=t[0],s=t[1]):n=t,e){e=String(e).replaceAll(/\s*\/\*.*?\*\/\s*/g,"").trim();var o=!1,l=0,i=!1,c=[];n&&c.push(...Object.keys(n).map(sn)),s&&c.push(...Object.keys(s).map(sn));var a=0,h=-1;const g=e.length;for(var v=0;v{$n(e,e.__value)});t.observe(e,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["value"]}),Fn(()=>{t.disconnect()})}function ns(e){return"__value"in e?e.__value:e.value}const tr=Symbol("class"),rr=Symbol("style"),po=Symbol("is custom element"),go=Symbol("is html"),al=Rn?"input":"INPUT",cl=Rn?"option":"OPTION",ul=Rn?"select":"SELECT";function fl(e,t){t?e.hasAttribute("selected")||e.setAttribute("selected",""):e.removeAttribute("selected")}function ln(e,t,r,n){var s=bo(e);s[t]!==(s[t]=r)&&(t==="loading"&&(e[Mo]=r),r==null?e.removeAttribute(t):typeof r!="string"&&mo(e).includes(t)?e[t]=r:e.setAttribute(t,r))}function dl(e,t,r,n,s=!1,o=!1){var l=bo(e),i=l[po],c=!l[go],a=t||{},h=e.nodeName===cl;for(var v in t)v in r||(r[v]=null);r.class?r.class=rl(r.class):r[tr]&&(r.class=null),r[rr]&&(r.style??(r.style=null));var f=mo(e);if(e.nodeName===al&&"type"in r&&("value"in r||"__value"in r)){var p=r.type;(p!==a.type||p===void 0&&e.hasAttribute("type"))&&(a.type=p,ln(e,"type",p))}for(const w in r){let k=r[w];if(h&&w==="value"&&k==null){e.value=e.__value="",a[w]=k;continue}if(w==="class"){var d=e.namespaceURI==="http://www.w3.org/1999/xhtml";ol(e,d,k,n,t==null?void 0:t[tr],r[tr]),a[w]=k,a[tr]=r[tr];continue}if(w==="style"){il(e,k,t==null?void 0:t[rr],r[rr]),a[w]=k,a[rr]=r[rr];continue}var g=a[w];if(!(k===g&&!(k===void 0&&e.hasAttribute(w)))){a[w]=k;var m=w[0]+w[1];if(m!=="$$")if(m==="on"){const R={},O="$$"+w;let A=w.slice(2);var b=Fi(A);if(Ii(A)&&(A=A.slice(0,-7),R.capture=!0),!b&&g){if(k!=null)continue;e.removeEventListener(A,a[O],R),a[O]=null}if(b)Bi(A,e,k),Ui([A]);else if(k!=null){let Y=function(be){a[w].call(this,be)};var L=Y;a[O]=Ki(A,e,Y,R)}}else if(w==="style")ln(e,w,k);else if(w==="autofocus")Si(e,!!k);else if(!i&&(w==="__value"||w==="value"&&k!=null))e.value=e.__value=k;else if(w==="selected"&&h)fl(e,k);else{var _=w;c||(_=Gi(_));var C=_==="defaultValue"||_==="defaultChecked";if(k==null&&!i&&!C)if(l[w]=null,_==="value"||_==="checked"){let R=e;const O=t===void 0;if(_==="value"){let A=R.defaultValue;R.removeAttribute(_),R.defaultValue=A,R.value=R.__value=O?A:null}else{let A=R.defaultChecked;R.removeAttribute(_),R.defaultChecked=A,R.checked=O?A:!1}}else e.removeAttribute(w);else C||f.includes(_)&&(i||typeof k!="string")?(e[_]=k,_ in l&&(l[_]=U)):typeof k!="function"&&ln(e,_,k)}}}return a}function fe(e,t,r=[],n=[],s=[],o,l=!1,i=!1){Ns(s,r,n,c=>{var a=void 0,h={},v=e.nodeName===ul,f=!1;if(Zs(()=>{var d=t(...c.map(y)),g=dl(e,a,d,o,l,i);f&&v&&"value"in d&&$n(e,d.value);for(let b of Object.getOwnPropertySymbols(h))d[b]||ee(h[b]);for(let b of Object.getOwnPropertySymbols(d)){var m=d[b];b.description===Xo&&(!a||m!==a[b])&&(h[b]&&ee(h[b]),h[b]=ge(()=>el(e,()=>m))),g[b]=m}a=g}),v){var p=e;Xs(()=>{$n(p,a.value,!0),ll(p)})}f=!0})}function bo(e){return e[Mr]??(e[Mr]={[po]:e.nodeName.includes("-"),[go]:e.namespaceURI===Ts})}var ss=new Map;function mo(e){var t=e.getAttribute("is")||e.nodeName,r=ss.get(t);if(r)return r;ss.set(t,r=[]);for(var n,s=e,o=Element.prototype;o!==s;){n=ks(s);for(var l in n)n[l].set&&l!=="innerHTML"&&l!=="textContent"&&l!=="innerText"&&r.push(l);s=An(s)}return r}function hl(e=!1){const t=q,r=t.l.u;if(!r)return;let n=()=>Oi(t.s);if(e){let s=0,o={};const l=Zr(()=>{let i=!1;const c=t.s;for(const a in c)c[a]!==o[a]&&(o[a]=c[a],i=!0);return i&&s++,s});n=()=>y(l)}r.b.length&&Ei(()=>{os(t,n),un(r.b)}),Jn(()=>{const s=uo(()=>r.m.map(No));return()=>{for(const o of s)typeof o=="function"&&o()}}),r.a.length&&Jn(()=>{os(t,n),un(r.a)})}function os(e,t){if(e.l.s)for(const r of e.l.s)y(r);t()}const vl={get(e,t){if(!e.exclude.has(t))return e.props[t]},set(e,t){return!1},getOwnPropertyDescriptor(e,t){if(!e.exclude.has(t)&&t in e.props)return{enumerable:!0,configurable:!0,value:e.props[t]}},has(e,t){return e.exclude.has(t)?!1:t in e.props},ownKeys(e){return Reflect.ownKeys(e.props).filter(t=>!e.exclude.has(t))}};function de(e,t,r){return new Proxy({props:e,exclude:t},vl)}const pl="5";var ws;typeof window<"u"&&((ws=window.__svelte??(window.__svelte={})).v??(ws.v=new Set)).add(pl);ni();const gl="UI8Kit Codegen",bl="One typed render contract — four generated runtimes with identical DOM, design, and ARIA.",ml=[{title:"Spec-driven",description:"Brick definitions in a tiny expression IR — no hand-written drift across stacks."},{title:"Four runtimes",description:"Go Templ, React 19, Svelte 5, and Vue 3 emitted from the same source."},{title:"DOM parity",description:"The canonical renderer is the executable specification, verified by tests."}],_l=[{id:"templ",label:"Go Templ",port:8080},{id:"react",label:"React 19",port:5173},{id:"svelte",label:"Svelte 5",port:5174},{id:"vue",label:"Vue 3",port:5175}],Ar={title:gl,subtitle:bl,features:ml,runtimes:_l};function _o(e){var t,r,n="";if(typeof e=="string"||typeof e=="number")n+=e;else if(typeof e=="object")if(Array.isArray(e)){var s=e.length;for(t=0;t{const t=kl(e),{conflictingClassGroups:r,conflictingClassGroupModifiers:n}=e;return{getClassGroupId:l=>{const i=l.split(Dn);return i[0]===""&&i.length!==1&&i.shift(),yo(i,t)||xl(l)},getConflictingClassGroupIds:(l,i)=>{const c=r[l]||[];return i&&n[l]?[...c,...n[l]]:c}}},yo=(e,t)=>{var l;if(e.length===0)return t.classGroupId;const r=e[0],n=t.nextPart.get(r),s=n?yo(e.slice(1),n):void 0;if(s)return s;if(t.validators.length===0)return;const o=e.join(Dn);return(l=t.validators.find(({validator:i})=>i(o)))==null?void 0:l.classGroupId},is=/^\[(.+)\]$/,xl=e=>{if(is.test(e)){const t=is.exec(e)[1],r=t==null?void 0:t.substring(0,t.indexOf(":"));if(r)return"arbitrary.."+r}},kl=e=>{const{theme:t,prefix:r}=e,n={nextPart:new Map,validators:[]};return Sl(Object.entries(e.classGroups),r).forEach(([o,l])=>{Sn(l,n,o,t)}),n},Sn=(e,t,r,n)=>{e.forEach(s=>{if(typeof s=="string"){const o=s===""?t:ls(t,s);o.classGroupId=r;return}if(typeof s=="function"){if($l(s)){Sn(s(n),t,r,n);return}t.validators.push({validator:s,classGroupId:r});return}Object.entries(s).forEach(([o,l])=>{Sn(l,ls(t,o),r,n)})})},ls=(e,t)=>{let r=e;return t.split(Dn).forEach(n=>{r.nextPart.has(n)||r.nextPart.set(n,{nextPart:new Map,validators:[]}),r=r.nextPart.get(n)}),r},$l=e=>e.isThemeGetter,Sl=(e,t)=>t?e.map(([r,n])=>{const s=n.map(o=>typeof o=="string"?t+o:typeof o=="object"?Object.fromEntries(Object.entries(o).map(([l,i])=>[t+l,i])):o);return[r,s]}):e,Tl=e=>{if(e<1)return{get:()=>{},set:()=>{}};let t=0,r=new Map,n=new Map;const s=(o,l)=>{r.set(o,l),t++,t>e&&(t=0,n=r,r=new Map)};return{get(o){let l=r.get(o);if(l!==void 0)return l;if((l=n.get(o))!==void 0)return s(o,l),l},set(o,l){r.has(o)?r.set(o,l):s(o,l)}}},wo="!",El=e=>{const{separator:t,experimentalParseClassName:r}=e,n=t.length===1,s=t[0],o=t.length,l=i=>{const c=[];let a=0,h=0,v;for(let m=0;mh?v-h:void 0;return{modifiers:c,hasImportantModifier:p,baseClassName:d,maybePostfixModifierPosition:g}};return r?i=>r({className:i,parseClassName:l}):l},Cl=e=>{if(e.length<=1)return e;const t=[];let r=[];return e.forEach(n=>{n[0]==="["?(t.push(...r.sort(),n),r=[]):r.push(n)}),t.push(...r.sort()),t},Al=e=>({cache:Tl(e.cacheSize),parseClassName:El(e),...wl(e)}),Pl=/\s+/,Rl=(e,t)=>{const{parseClassName:r,getClassGroupId:n,getConflictingClassGroupIds:s}=t,o=[],l=e.trim().split(Pl);let i="";for(let c=l.length-1;c>=0;c-=1){const a=l[c],{modifiers:h,hasImportantModifier:v,baseClassName:f,maybePostfixModifierPosition:p}=r(a);let d=!!p,g=n(d?f.substring(0,p):f);if(!g){if(!d){i=a+(i.length>0?" "+i:i);continue}if(g=n(f),!g){i=a+(i.length>0?" "+i:i);continue}d=!1}const m=Cl(h).join(":"),b=v?m+wo:m,_=b+g;if(o.includes(_))continue;o.push(_);const C=s(g,d);for(let L=0;L0?" "+i:i)}return i};function Nl(){let e=0,t,r,n="";for(;e{if(typeof e=="string")return e;let t,r="";for(let n=0;nv(h),e());return r=Al(a),n=r.cache.get,s=r.cache.set,o=i,i(c)}function i(c){const a=n(c);if(a)return a;const h=Rl(c,r);return s(c,h),h}return function(){return o(Nl.apply(null,arguments))}}const j=e=>{const t=r=>r[e]||[];return t.isThemeGetter=!0,t},ko=/^\[(?:([a-z-]+):)?(.+)\]$/i,Ml=/^\d+\/\d+$/,Ol=new Set(["px","full","screen"]),Il=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,Ll=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,Fl=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,jl=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,Gl=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,We=e=>Lt(e)||Ol.has(e)||Ml.test(e),nt=e=>Xt(e,"length",Wl),Lt=e=>!!e&&!Number.isNaN(Number(e)),an=e=>Xt(e,"number",Lt),nr=e=>!!e&&Number.isInteger(Number(e)),Dl=e=>e.endsWith("%")&&Lt(e.slice(0,-1)),E=e=>ko.test(e),st=e=>Il.test(e),Vl=new Set(["length","size","percentage"]),Kl=e=>Xt(e,Vl,$o),Bl=e=>Xt(e,"position",$o),Ul=new Set(["image","url"]),ql=e=>Xt(e,Ul,Yl),Hl=e=>Xt(e,"",Jl),sr=()=>!0,Xt=(e,t,r)=>{const n=ko.exec(e);return n?n[1]?typeof t=="string"?n[1]===t:t.has(n[1]):r(n[2]):!1},Wl=e=>Ll.test(e)&&!Fl.test(e),$o=()=>!1,Jl=e=>jl.test(e),Yl=e=>Gl.test(e),Xl=()=>{const e=j("colors"),t=j("spacing"),r=j("blur"),n=j("brightness"),s=j("borderColor"),o=j("borderRadius"),l=j("borderSpacing"),i=j("borderWidth"),c=j("contrast"),a=j("grayscale"),h=j("hueRotate"),v=j("invert"),f=j("gap"),p=j("gradientColorStops"),d=j("gradientColorStopPositions"),g=j("inset"),m=j("margin"),b=j("opacity"),_=j("padding"),C=j("saturate"),L=j("scale"),w=j("sepia"),k=j("skew"),R=j("space"),O=j("translate"),A=()=>["auto","contain","none"],Y=()=>["auto","hidden","clip","visible","scroll"],be=()=>["auto",E,t],z=()=>[E,t],X=()=>["",We,nt],Ge=()=>["auto",Lt,E],ht=()=>["bottom","center","left","left-bottom","left-top","right","right-bottom","right-top","top"],me=()=>["solid","dashed","dotted","double","none"],vt=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],H=()=>["start","end","center","between","around","evenly","stretch"],De=()=>["","0",E],ke=()=>["auto","avoid","all","avoid-page","page","left","right","column"],He=()=>[Lt,E];return{cacheSize:500,separator:":",theme:{colors:[sr],spacing:[We,nt],blur:["none","",st,E],brightness:He(),borderColor:[e],borderRadius:["none","","full",st,E],borderSpacing:z(),borderWidth:X(),contrast:He(),grayscale:De(),hueRotate:He(),invert:De(),gap:z(),gradientColorStops:[e],gradientColorStopPositions:[Dl,nt],inset:be(),margin:be(),opacity:He(),padding:z(),saturate:He(),scale:He(),sepia:De(),skew:He(),space:z(),translate:z()},classGroups:{aspect:[{aspect:["auto","square","video",E]}],container:["container"],columns:[{columns:[st]}],"break-after":[{"break-after":ke()}],"break-before":[{"break-before":ke()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:[...ht(),E]}],overflow:[{overflow:Y()}],"overflow-x":[{"overflow-x":Y()}],"overflow-y":[{"overflow-y":Y()}],overscroll:[{overscroll:A()}],"overscroll-x":[{"overscroll-x":A()}],"overscroll-y":[{"overscroll-y":A()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:[g]}],"inset-x":[{"inset-x":[g]}],"inset-y":[{"inset-y":[g]}],start:[{start:[g]}],end:[{end:[g]}],top:[{top:[g]}],right:[{right:[g]}],bottom:[{bottom:[g]}],left:[{left:[g]}],visibility:["visible","invisible","collapse"],z:[{z:["auto",nr,E]}],basis:[{basis:be()}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["wrap","wrap-reverse","nowrap"]}],flex:[{flex:["1","auto","initial","none",E]}],grow:[{grow:De()}],shrink:[{shrink:De()}],order:[{order:["first","last","none",nr,E]}],"grid-cols":[{"grid-cols":[sr]}],"col-start-end":[{col:["auto",{span:["full",nr,E]},E]}],"col-start":[{"col-start":Ge()}],"col-end":[{"col-end":Ge()}],"grid-rows":[{"grid-rows":[sr]}],"row-start-end":[{row:["auto",{span:[nr,E]},E]}],"row-start":[{"row-start":Ge()}],"row-end":[{"row-end":Ge()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":["auto","min","max","fr",E]}],"auto-rows":[{"auto-rows":["auto","min","max","fr",E]}],gap:[{gap:[f]}],"gap-x":[{"gap-x":[f]}],"gap-y":[{"gap-y":[f]}],"justify-content":[{justify:["normal",...H()]}],"justify-items":[{"justify-items":["start","end","center","stretch"]}],"justify-self":[{"justify-self":["auto","start","end","center","stretch"]}],"align-content":[{content:["normal",...H(),"baseline"]}],"align-items":[{items:["start","end","center","baseline","stretch"]}],"align-self":[{self:["auto","start","end","center","stretch","baseline"]}],"place-content":[{"place-content":[...H(),"baseline"]}],"place-items":[{"place-items":["start","end","center","baseline","stretch"]}],"place-self":[{"place-self":["auto","start","end","center","stretch"]}],p:[{p:[_]}],px:[{px:[_]}],py:[{py:[_]}],ps:[{ps:[_]}],pe:[{pe:[_]}],pt:[{pt:[_]}],pr:[{pr:[_]}],pb:[{pb:[_]}],pl:[{pl:[_]}],m:[{m:[m]}],mx:[{mx:[m]}],my:[{my:[m]}],ms:[{ms:[m]}],me:[{me:[m]}],mt:[{mt:[m]}],mr:[{mr:[m]}],mb:[{mb:[m]}],ml:[{ml:[m]}],"space-x":[{"space-x":[R]}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":[R]}],"space-y-reverse":["space-y-reverse"],w:[{w:["auto","min","max","fit","svw","lvw","dvw",E,t]}],"min-w":[{"min-w":[E,t,"min","max","fit"]}],"max-w":[{"max-w":[E,t,"none","full","min","max","fit","prose",{screen:[st]},st]}],h:[{h:[E,t,"auto","min","max","fit","svh","lvh","dvh"]}],"min-h":[{"min-h":[E,t,"min","max","fit","svh","lvh","dvh"]}],"max-h":[{"max-h":[E,t,"min","max","fit","svh","lvh","dvh"]}],size:[{size:[E,t,"auto","min","max","fit"]}],"font-size":[{text:["base",st,nt]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:["thin","extralight","light","normal","medium","semibold","bold","extrabold","black",an]}],"font-family":[{font:[sr]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:["tighter","tight","normal","wide","wider","widest",E]}],"line-clamp":[{"line-clamp":["none",Lt,an]}],leading:[{leading:["none","tight","snug","normal","relaxed","loose",We,E]}],"list-image":[{"list-image":["none",E]}],"list-style-type":[{list:["none","disc","decimal",E]}],"list-style-position":[{list:["inside","outside"]}],"placeholder-color":[{placeholder:[e]}],"placeholder-opacity":[{"placeholder-opacity":[b]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"text-color":[{text:[e]}],"text-opacity":[{"text-opacity":[b]}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...me(),"wavy"]}],"text-decoration-thickness":[{decoration:["auto","from-font",We,nt]}],"underline-offset":[{"underline-offset":["auto",We,E]}],"text-decoration-color":[{decoration:[e]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:z()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",E]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",E]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-opacity":[{"bg-opacity":[b]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:[...ht(),Bl]}],"bg-repeat":[{bg:["no-repeat",{repeat:["","x","y","round","space"]}]}],"bg-size":[{bg:["auto","cover","contain",Kl]}],"bg-image":[{bg:["none",{"gradient-to":["t","tr","r","br","b","bl","l","tl"]},ql]}],"bg-color":[{bg:[e]}],"gradient-from-pos":[{from:[d]}],"gradient-via-pos":[{via:[d]}],"gradient-to-pos":[{to:[d]}],"gradient-from":[{from:[p]}],"gradient-via":[{via:[p]}],"gradient-to":[{to:[p]}],rounded:[{rounded:[o]}],"rounded-s":[{"rounded-s":[o]}],"rounded-e":[{"rounded-e":[o]}],"rounded-t":[{"rounded-t":[o]}],"rounded-r":[{"rounded-r":[o]}],"rounded-b":[{"rounded-b":[o]}],"rounded-l":[{"rounded-l":[o]}],"rounded-ss":[{"rounded-ss":[o]}],"rounded-se":[{"rounded-se":[o]}],"rounded-ee":[{"rounded-ee":[o]}],"rounded-es":[{"rounded-es":[o]}],"rounded-tl":[{"rounded-tl":[o]}],"rounded-tr":[{"rounded-tr":[o]}],"rounded-br":[{"rounded-br":[o]}],"rounded-bl":[{"rounded-bl":[o]}],"border-w":[{border:[i]}],"border-w-x":[{"border-x":[i]}],"border-w-y":[{"border-y":[i]}],"border-w-s":[{"border-s":[i]}],"border-w-e":[{"border-e":[i]}],"border-w-t":[{"border-t":[i]}],"border-w-r":[{"border-r":[i]}],"border-w-b":[{"border-b":[i]}],"border-w-l":[{"border-l":[i]}],"border-opacity":[{"border-opacity":[b]}],"border-style":[{border:[...me(),"hidden"]}],"divide-x":[{"divide-x":[i]}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":[i]}],"divide-y-reverse":["divide-y-reverse"],"divide-opacity":[{"divide-opacity":[b]}],"divide-style":[{divide:me()}],"border-color":[{border:[s]}],"border-color-x":[{"border-x":[s]}],"border-color-y":[{"border-y":[s]}],"border-color-s":[{"border-s":[s]}],"border-color-e":[{"border-e":[s]}],"border-color-t":[{"border-t":[s]}],"border-color-r":[{"border-r":[s]}],"border-color-b":[{"border-b":[s]}],"border-color-l":[{"border-l":[s]}],"divide-color":[{divide:[s]}],"outline-style":[{outline:["",...me()]}],"outline-offset":[{"outline-offset":[We,E]}],"outline-w":[{outline:[We,nt]}],"outline-color":[{outline:[e]}],"ring-w":[{ring:X()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:[e]}],"ring-opacity":[{"ring-opacity":[b]}],"ring-offset-w":[{"ring-offset":[We,nt]}],"ring-offset-color":[{"ring-offset":[e]}],shadow:[{shadow:["","inner","none",st,Hl]}],"shadow-color":[{shadow:[sr]}],opacity:[{opacity:[b]}],"mix-blend":[{"mix-blend":[...vt(),"plus-lighter","plus-darker"]}],"bg-blend":[{"bg-blend":vt()}],filter:[{filter:["","none"]}],blur:[{blur:[r]}],brightness:[{brightness:[n]}],contrast:[{contrast:[c]}],"drop-shadow":[{"drop-shadow":["","none",st,E]}],grayscale:[{grayscale:[a]}],"hue-rotate":[{"hue-rotate":[h]}],invert:[{invert:[v]}],saturate:[{saturate:[C]}],sepia:[{sepia:[w]}],"backdrop-filter":[{"backdrop-filter":["","none"]}],"backdrop-blur":[{"backdrop-blur":[r]}],"backdrop-brightness":[{"backdrop-brightness":[n]}],"backdrop-contrast":[{"backdrop-contrast":[c]}],"backdrop-grayscale":[{"backdrop-grayscale":[a]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[h]}],"backdrop-invert":[{"backdrop-invert":[v]}],"backdrop-opacity":[{"backdrop-opacity":[b]}],"backdrop-saturate":[{"backdrop-saturate":[C]}],"backdrop-sepia":[{"backdrop-sepia":[w]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":[l]}],"border-spacing-x":[{"border-spacing-x":[l]}],"border-spacing-y":[{"border-spacing-y":[l]}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["none","all","","colors","opacity","shadow","transform",E]}],duration:[{duration:He()}],ease:[{ease:["linear","in","out","in-out",E]}],delay:[{delay:He()}],animate:[{animate:["none","spin","ping","pulse","bounce",E]}],transform:[{transform:["","gpu","none"]}],scale:[{scale:[L]}],"scale-x":[{"scale-x":[L]}],"scale-y":[{"scale-y":[L]}],rotate:[{rotate:[nr,E]}],"translate-x":[{"translate-x":[O]}],"translate-y":[{"translate-y":[O]}],"skew-x":[{"skew-x":[k]}],"skew-y":[{"skew-y":[k]}],"transform-origin":[{origin:["center","top","top-right","right","bottom-right","bottom","bottom-left","left","top-left",E]}],accent:[{accent:["auto",e]}],appearance:[{appearance:["none","auto"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",E]}],"caret-color":[{caret:[e]}],"pointer-events":[{"pointer-events":["none","auto"]}],resize:[{resize:["none","y","x",""]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":z()}],"scroll-mx":[{"scroll-mx":z()}],"scroll-my":[{"scroll-my":z()}],"scroll-ms":[{"scroll-ms":z()}],"scroll-me":[{"scroll-me":z()}],"scroll-mt":[{"scroll-mt":z()}],"scroll-mr":[{"scroll-mr":z()}],"scroll-mb":[{"scroll-mb":z()}],"scroll-ml":[{"scroll-ml":z()}],"scroll-p":[{"scroll-p":z()}],"scroll-px":[{"scroll-px":z()}],"scroll-py":[{"scroll-py":z()}],"scroll-ps":[{"scroll-ps":z()}],"scroll-pe":[{"scroll-pe":z()}],"scroll-pt":[{"scroll-pt":z()}],"scroll-pr":[{"scroll-pr":z()}],"scroll-pb":[{"scroll-pb":z()}],"scroll-pl":[{"scroll-pl":z()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",E]}],fill:[{fill:[e,"none"]}],"stroke-w":[{stroke:[We,nt,an]}],stroke:[{stroke:[e,"none"]}],sr:["sr-only","not-sr-only"],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-s","border-w-e","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-s","border-color-e","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]}}},Zl=zl(Xl);function le(...e){return Zl(yl(e))}const Ql={BASE_URL:"/",DEV:!1,MODE:"production",PROD:!0,SSR:!1};function Tn(){try{const e=Ql;if(e&&typeof e.DEV=="boolean")return e.DEV}catch{}return!1}function ea(e){return{id:e.id,base:e.base,keys:e.keys,defaults:e.defaults??{},byKey:e.byKey}}function ta(e,t,...r){const n=[];e.base.trim()!==""&&n.push(e.base.trim());for(const s of e.keys){const o=e.byKey[s];if(!o)continue;const l=(t[s]??"").trim(),i=(e.defaults[s]??"").trim(),c=l||i;if(!c){if(Tn()&&Object.keys(o).length>0)throw new Error(`[compose] missing default for key "${s}" (recipe id: ${String(e.id??"?")})`);continue}const a=o[c];if(a!==void 0)a.trim()!==""&&n.push(a.trim());else if(Tn())throw new Error(`[compose] unknown variant "${c}" for key "${s}" (recipe id: ${String(e.id??"?")})`)}return le(...n,...r)}function Re(e,t,...r){return ta(ea(e),t,...r)}const F={Layout:"Layout",BoxAllowed:"BoxAllowed",BlockText:"BlockText",Inline:"Inline",Heading:"Heading",List:"List",ListItem:"ListItem",Form:"Form",FormControl:"FormControl",FormLabel:"FormLabel",Table:"Table",TableSection:"TableSection",TableRow:"TableRow",TableCell:"TableCell",TableColumn:"TableColumn",Media:"Media",Disclosure:"Disclosure",Container:"Container",Stack:"Stack",Group:"Group",Text:"Text"},ra=new Set(["div","section","article","aside","header","footer","main","nav","figure","search","hgroup"]),na=new Set(["div"]),as=new Set(["p","blockquote","figcaption","address","pre"]),cs=new Set(["span","em","strong","small","abbr","cite","code","kbd","mark","time","data","var","samp","sub","sup","b","i","u","s","q","dfn","bdo","bdi","ins","del"]),sa=new Set(["h1","h2","h3","h4","h5","h6"]),oa=new Set(["ul","ol","dl","menu"]),ia=new Set(["li","dt","dd"]),la=new Set(["form","fieldset"]),aa=new Set(["input","textarea","select","button","option","optgroup","datalist","output","meter","progress"]),ca=new Set(["label","legend"]),ua=new Set(["table"]),fa=new Set(["thead","tbody","tfoot"]),da=new Set(["tr"]),ha=new Set(["th","td"]),va=new Set(["colgroup","col"]),pa=new Set(["img","picture","source"]),ga=new Set(["details","summary"]),ba=new Set(["div","main","section"]),ma=new Set(["div","ul","ol"]),_a=new Set(["div","fieldset","dl"]);function B(e,t){return t.has(e)}const us=new Set;function ya(e,t,r){if(!Tn())return;const n=`${r}:${e}:${t}`;us.has(n)||(us.add(n),console.warn(`[resolveTag] disallowed tag "${e}" for group "${r}", fallback "${t}" used.`))}function wa(e,t){const r=e.trim().toLowerCase();switch(t){case F.Layout:return B(r,ra);case F.BoxAllowed:return B(r,na);case F.BlockText:return B(r,as);case F.Inline:return B(r,cs);case F.Heading:return B(r,sa);case F.List:return B(r,oa);case F.ListItem:return B(r,ia);case F.Form:return B(r,la);case F.FormControl:return B(r,aa);case F.FormLabel:return B(r,ca);case F.Table:return B(r,ua);case F.TableSection:return B(r,fa);case F.TableRow:return B(r,da);case F.TableCell:return B(r,ha);case F.TableColumn:return B(r,va);case F.Media:return B(r,pa);case F.Disclosure:return B(r,ga);case F.Container:return B(r,ba);case F.Stack:return B(r,ma);case F.Group:return B(r,_a);case F.Text:return as.has(r)||cs.has(r);default:return!1}}function Tr(e,t,r){const n=(e==null?void 0:e.trim().toLowerCase())??"";return n?wa(n,r)?n:(ya(n,t,r),t):t}const Er=e=>e==null?"":String(e).trim(),fs=e=>Er(e)!=="",xa=(e,t)=>{const r=Er(e);return r===""?t:r},ka=(e,t,...r)=>{const n=Er(e);return r.includes(n)?n:t},$a=(e,t,r)=>t[Er(e)]??r,Sa=(e,t)=>(e??"")===t,ds=e=>Er(e)===""?void 0:String(e),So=e=>{switch(e){case 1:return"h1";case 3:return"h3";case 4:return"h4";case 5:return"h5";case 6:return"h6";default:return"h2"}},Ta="inline-flex items-center rounded-full border px-2 py-1 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",Ea={size:{default:"px-2 py-1 text-xs",lg:"px-3 py-1 text-sm",sm:"px-2 py-1 text-xs"},variant:{default:"border-transparent bg-primary text-primary-foreground hover:bg-primary/80",destructive:"border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80",outline:"text-foreground",secondary:"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80"}},Ca={size:"default",variant:"default"},Aa="ui.badge",Pa=["variant","size"],Ra={base:Ta,byKey:Ea,defaults:Ca,id:Aa,keys:Pa},Na=Ra;function za(e={}){return le(Re(Na,{variant:e.variant,size:e.size}),e.className)}var Ma=new Set(["$$slots","$$events","$$legacy","variant","size","class","children"]),Oa=je("
");function Pr(e,t){re(t,!0);let r=de(t,Ma);const n=D(()=>za({variant:t.variant,size:t.size,className:t.class}));var s=Oa();fe(s,()=>({...y(n)?{class:y(n)}:{},...r}));var o=dt(s);ue(o,()=>t.children??ie),x(e,s),ne()}const Ia="",La={},Fa={},ja="ui.block",Ga=[],Da={base:Ia,byKey:La,defaults:Fa,id:ja,keys:Ga},Va=Da;function Ka(e={}){return le(Re(Va,{}),e.className)}var Ba=new Set(["$$slots","$$events","$$legacy","tag","class","children"]);function Ua(e,t){re(t,!0);let r=de(t,Ba);const n=D(()=>Ka({className:t.class})),s=D(()=>Tr(t.tag,"div",F.Layout));var o=oe(),l=G(o);Rt(l,()=>y(s),!1,(i,c)=>{fe(i,()=>({...y(n)?{class:y(n)}:{},...r}));var a=oe(),h=G(a);ue(h,()=>t.children??ie),x(c,a)}),x(e,o),ne()}const qa="",Ha={},Wa={},Ja="ui.box",Ya=[],Xa={base:qa,byKey:Ha,defaults:Wa,id:Ja,keys:Ya},Za=Xa;function Qa(e={}){return le(Re(Za,{}),e.className)}var ec=new Set(["$$slots","$$events","$$legacy","tag","class","children"]);function tc(e,t){re(t,!0);let r=de(t,ec);const n=D(()=>Qa({className:t.class})),s=D(()=>Tr(t.tag,"div",F.BoxAllowed));var o=oe(),l=G(o);Rt(l,()=>y(s),!1,(i,c)=>{fe(i,()=>({...y(n)?{class:y(n)}:{},...r}));var a=oe(),h=G(a);ue(h,()=>t.children??ie),x(c,a)}),x(e,o),ne()}const rc="inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",nc={size:{default:"h-10 px-4 py-2",icon:"h-10 w-10",lg:"h-12 rounded-md px-8",sm:"h-8 rounded-md px-3"},variant:{default:"bg-primary text-primary-foreground hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground hover:bg-destructive/90",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline",outline:"border border-input bg-background hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80"}},sc={size:"default",variant:"default"},oc="ui.button",ic=["variant","size"],lc={base:rc,byKey:nc,defaults:sc,id:oc,keys:ic},ac=lc;function cc(e={}){return le(Re(ac,{variant:e.variant,size:e.size}),e.disabled?"pointer-events-none opacity-50":"",e.className)}var uc=new Set(["$$slots","$$events","$$legacy","variant","size","type","disabled","class","children"]),fc=je("");function or(e,t){re(t,!0);let r=de(t,uc);const n=D(()=>cc({variant:t.variant,size:t.size,disabled:t.disabled,className:t.class}));var s=fc();fe(s,l=>({type:l,...y(n)?{class:y(n)}:{},disabled:t.disabled||void 0,...r}),[()=>ka(t.type,"button","submit","reset")]);var o=dt(s);ue(o,()=>t.children??ie),x(e,s),ne()}const dc="ui.card",hc="rounded-md border border-border bg-card text-card-foreground shadow-sm",vc=["variant"],pc={variant:"default"},gc={variant:{default:"",raised:"",kpi:"bg-card/50",muted:"bg-muted/40",ghost:"border-dashed bg-background shadow-none",compact:"p-4",flat:"shadow-none",accent:"border-transparent bg-accent/30"}},bc={id:dc,base:hc,keys:vc,defaults:pc,byKey:gc},mc=bc;function _c(e={}){return le(Re(mc,{variant:e.variant}),e.className)}function yc(e={}){return le("border-b border-border px-4 py-2",e.className)}function wc(e={}){return le("text-sm font-semibold",e.className)}function xc(e={}){return le("p-4",e.className)}var kc=new Set(["$$slots","$$events","$$legacy","variant","class","children"]),$c=je("
");function hs(e,t){re(t,!0);let r=de(t,kc);const n=D(()=>_c({variant:t.variant,className:t.class}));var s=$c();fe(s,()=>({...y(n)?{class:y(n)}:{},...r}));var o=dt(s);ue(o,()=>t.children??ie),x(e,s),ne()}var Sc=new Set(["$$slots","$$events","$$legacy","class","children"]),Tc=je("
");function vs(e,t){re(t,!0);let r=de(t,Sc);const n=D(()=>yc({className:t.class}));var s=Tc();fe(s,()=>({...y(n)?{class:y(n)}:{},...r}));var o=dt(s);ue(o,()=>t.children??ie),x(e,s),ne()}var Ec=new Set(["$$slots","$$events","$$legacy","as","class","children"]);function ps(e,t){re(t,!0);let r=de(t,Ec);const n=D(()=>wc({className:t.class})),s=D(()=>So(t.as));var o=oe(),l=G(o);Rt(l,()=>y(s),!1,(i,c)=>{fe(i,()=>({...y(n)?{class:y(n)}:{},...r}));var a=oe(),h=G(a);ue(h,()=>t.children??ie),x(c,a)}),x(e,o),ne()}var Cc=new Set(["$$slots","$$events","$$legacy","class","children"]),Ac=je("
");function gs(e,t){re(t,!0);let r=de(t,Cc);const n=D(()=>xc({className:t.class}));var s=Ac();fe(s,()=>({...y(n)?{class:y(n)}:{},...r}));var o=dt(s);ue(o,()=>t.children??ie),x(e,s),ne()}const Pc="",Rc={},Nc={},zc="ui.container",Mc=[],Oc={base:Pc,byKey:Rc,defaults:Nc,id:zc,keys:Mc},Ic=Oc;function Lc(e={}){return le(Re(Ic,{}),e.className)}var Fc=new Set(["$$slots","$$events","$$legacy","tag","class","children"]);function jc(e,t){re(t,!0);let r=de(t,Fc);const n=D(()=>Lc({className:t.class})),s=D(()=>Tr(t.tag,"div",F.Container));var o=oe(),l=G(o);Rt(l,()=>y(s),!1,(i,c)=>{fe(i,()=>({...y(n)?{class:y(n)}:{},...r}));var a=oe(),h=G(a);ue(h,()=>t.children??ie),x(c,a)}),x(e,o),ne()}const Gc="grid",Dc={},Vc={},Kc="ui.grid",Bc=[],Uc={base:Gc,byKey:Dc,defaults:Vc,id:Kc,keys:Bc},qc=Uc;function Hc(e={}){return le(Re(qc,{}),(e.className??"").includes("grid-cols-")?"":$a(xa(e.cols,"1"),{1:"grid-cols-1",2:"grid-cols-2",3:"grid-cols-3",4:"grid-cols-4",5:"grid-cols-5",6:"grid-cols-6",7:"grid-cols-7",8:"grid-cols-8",9:"grid-cols-9",10:"grid-cols-10",11:"grid-cols-11",12:"grid-cols-12","1-2":"grid-cols-1 md:grid-cols-2","1-3":"grid-cols-1 md:grid-cols-2 xl:grid-cols-3","1-4":"grid-cols-1 md:grid-cols-2 xl:grid-cols-4"},""),e.className)}var Wc=new Set(["$$slots","$$events","$$legacy","cols","class","children"]),Jc=je("
");function Yc(e,t){re(t,!0);let r=de(t,Wc);const n=D(()=>Hc({cols:t.cols,className:t.class}));var s=Jc();fe(s,()=>({...y(n)?{class:y(n)}:{},...r}));var o=dt(s);ue(o,()=>t.children??ie),x(e,s),ne()}const Xc="flex min-w-0",Zc={},Qc={},eu="ui.group",tu=[],ru={base:Xc,byKey:Zc,defaults:Qc,id:eu,keys:tu},nu=ru;function su(e={}){return le(Re(nu,{}),e.className)}var ou=new Set(["$$slots","$$events","$$legacy","tag","class","children"]);function cn(e,t){re(t,!0);let r=de(t,ou);const n=D(()=>su({className:t.class})),s=D(()=>Tr(t.tag,"div",F.Group));var o=oe(),l=G(o);Rt(l,()=>y(s),!1,(i,c)=>{fe(i,()=>({...y(n)?{class:y(n)}:{},...r}));var a=oe(),h=G(a);ue(h,()=>t.children??ie),x(c,a)}),x(e,o),ne()}const iu="inline-flex items-center gap-2 underline-offset-4 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",lu={size:{default:"text-sm",lg:"text-lg",md:"text-base",sm:"text-sm"},variant:{block:"flex w-full text-foreground hover:text-primary",default:"text-primary hover:underline",external:"text-primary hover:underline",muted:"text-muted-foreground hover:text-foreground hover:underline",nav:"text-foreground hover:text-primary"}},au={size:"default",variant:"default"},cu="ui.link",uu=["variant","size"],fu={base:iu,byKey:lu,defaults:au,id:cu,keys:uu},du=fu;function hu(e={}){return le(Re(du,{variant:e.variant,size:e.size}),e.disabled?"pointer-events-none opacity-50":"",e.className)}var vu=new Set(["$$slots","$$events","$$legacy","variant","size","target","rel","external","disabled","class","children"]),pu=je("");function gu(e,t){re(t,!0);let r=de(t,vu);const n=D(()=>hu({variant:t.variant,size:t.size,disabled:t.disabled,className:t.class})),s=D(()=>fs(t.target)?t.target:t.external?"_blank":""),o=D(()=>fs(t.rel)?t.rel:t.external||Sa(y(s),"_blank")?"noopener noreferrer":"");var l=pu();fe(l,(c,a)=>({...y(n)?{class:y(n)}:{},target:c,rel:a,"aria-disabled":t.disabled?"true":void 0,tabindex:t.disabled?-1:void 0,...r}),[()=>ds(y(s)),()=>ds(y(o))]);var i=dt(l);ue(i,()=>t.children??ie),x(e,l),ne()}const bu="flex flex-col items-start justify-start",mu={},_u={},yu="ui.stack",wu=[],xu={base:bu,byKey:mu,defaults:_u,id:yu,keys:wu},ku=xu;function $u(e={}){return le(Re(ku,{}),e.className)}var Su=new Set(["$$slots","$$events","$$legacy","tag","class","children"]);function Rr(e,t){re(t,!0);let r=de(t,Su);const n=D(()=>$u({className:t.class})),s=D(()=>Tr(t.tag,"div",F.Stack));var o=oe(),l=G(o);Rt(l,()=>y(s),!1,(i,c)=>{fe(i,()=>({...y(n)?{class:y(n)}:{},...r}));var a=oe(),h=G(a);ue(h,()=>t.children??ie),x(c,a)}),x(e,o),ne()}const Tu="",Eu={},Cu={},Au="ui.text",Pu=[],Ru={base:Tu,byKey:Eu,defaults:Cu,id:Au,keys:Pu},Nu=Ru;function zu(e={}){return le(Re(Nu,{}),e.className)}var Mu=new Set(["$$slots","$$events","$$legacy","class","children"]),Ou=je("

");function Nr(e,t){re(t,!0);let r=de(t,Mu);const n=D(()=>zu({className:t.class}));var s=Ou();fe(s,()=>({...y(n)?{class:y(n)}:{},...r}));var o=dt(s);ue(o,()=>t.children??ie),x(e,s),ne()}const Iu="",Lu={},Fu={},ju="ui.title",Gu=[],Du={base:Iu,byKey:Lu,defaults:Fu,id:ju,keys:Gu},Vu=Du;function Ku(e={}){return le(Re(Vu,{}),e.className)}var Bu=new Set(["$$slots","$$events","$$legacy","as","class","children"]);function Uu(e,t){re(t,!0);let r=de(t,Bu);const n=D(()=>Ku({className:t.class})),s=D(()=>So(t.as));var o=oe(),l=G(o);Rt(l,()=>y(s),!1,(i,c)=>{fe(i,()=>({...y(n)?{class:y(n)}:{},...r}));var a=oe(),h=G(a);ue(h,()=>t.children??ie),x(c,a)}),x(e,o),ne()}var bs=je(" ",1),ms=je(" ",1),zr=je(" ",1);function qu(e,t){re(t,!1),hl(),Ua(e,{tag:"main",class:"min-h-screen bg-muted/30 text-foreground",children:(r,n)=>{jc(r,{class:"mx-auto max-w-4xl px-4 py-16",children:(s,o)=>{Rr(s,{class:"gap-8",children:(l,i)=>{var c=ms(),a=G(c);Rr(a,{class:"items-center gap-4 text-center",children:(d,g)=>{var m=bs(),b=G(m);Pr(b,{variant:"outline",class:"text-xs uppercase tracking-wide",children:(L,w)=>{var k=Z("Svelte 5");x(L,k)},$$slots:{default:!0}});var _=se(b,2);Uu(_,{as:1,class:"text-3xl font-bold tracking-tight",children:(L,w)=>{var k=Z();Zt(()=>Qt(k,Ar.title)),x(L,k)},$$slots:{default:!0}});var C=se(_,2);Nr(C,{class:"max-w-2xl text-muted-foreground",children:(L,w)=>{var k=Z();Zt(()=>Qt(k,Ar.subtitle)),x(L,k)},$$slots:{default:!0}}),x(d,m)},$$slots:{default:!0}});var h=se(a,2);hs(h,{variant:"default",children:(d,g)=>{var m=zr(),b=G(m);vs(b,{children:(C,L)=>{ps(C,{children:(w,k)=>{var R=Z("Generated primitives");x(w,R)},$$slots:{default:!0}})},$$slots:{default:!0}});var _=se(b,2);gs(_,{children:(C,L)=>{Rr(C,{class:"gap-4",children:(w,k)=>{var R=zr(),O=G(R);cn(O,{class:"flex-wrap gap-2",children:(Y,be)=>{var z=ms(),X=G(z);or(X,{variant:"default",size:"sm",children:(H,De)=>{var ke=Z("Default");x(H,ke)},$$slots:{default:!0}});var Ge=se(X,2);or(Ge,{variant:"secondary",size:"sm",children:(H,De)=>{var ke=Z("Secondary");x(H,ke)},$$slots:{default:!0}});var ht=se(Ge,2);or(ht,{variant:"outline",size:"sm",children:(H,De)=>{var ke=Z("Outline");x(H,ke)},$$slots:{default:!0}});var me=se(ht,2);or(me,{variant:"ghost",size:"sm",children:(H,De)=>{var ke=Z("Ghost");x(H,ke)},$$slots:{default:!0}});var vt=se(me,2);or(vt,{variant:"destructive",size:"sm",children:(H,De)=>{var ke=Z("Destructive");x(H,ke)},$$slots:{default:!0}}),x(Y,z)},$$slots:{default:!0}});var A=se(O,2);cn(A,{class:"flex-wrap gap-2",children:(Y,be)=>{var z=bs(),X=G(z);Pr(X,{variant:"default",children:(me,vt)=>{var H=Z("Badge");x(me,H)},$$slots:{default:!0}});var Ge=se(X,2);Pr(Ge,{variant:"secondary",children:(me,vt)=>{var H=Z("Secondary");x(me,H)},$$slots:{default:!0}});var ht=se(Ge,2);Pr(ht,{variant:"outline",children:(me,vt)=>{var H=Z("Outline");x(me,H)},$$slots:{default:!0}}),x(Y,z)},$$slots:{default:!0}}),x(w,R)},$$slots:{default:!0}})},$$slots:{default:!0}}),x(d,m)},$$slots:{default:!0}});var v=se(h,2);Yc(v,{cols:"1-3",class:"gap-4",children:(d,g)=>{var m=oe(),b=G(m);es(b,1,()=>Ar.features,_=>_.title,(_,C)=>{hs(_,{variant:"muted",children:(L,w)=>{var k=zr(),R=G(k);vs(R,{children:(A,Y)=>{ps(A,{children:(be,z)=>{var X=Z();Zt(()=>Qt(X,y(C).title)),x(be,X)},$$slots:{default:!0}})},$$slots:{default:!0}});var O=se(R,2);gs(O,{children:(A,Y)=>{Nr(A,{class:"text-sm text-muted-foreground",children:(be,z)=>{var X=Z();Zt(()=>Qt(X,y(C).description)),x(be,X)},$$slots:{default:!0}})},$$slots:{default:!0}}),x(L,k)},$$slots:{default:!0}})}),x(d,m)},$$slots:{default:!0}});var f=se(v,2);tc(f,{class:"rounded-lg border border-border bg-card p-4",children:(d,g)=>{Rr(d,{class:"gap-3",children:(m,b)=>{var _=zr(),C=G(_);Nr(C,{class:"text-sm font-medium",children:(w,k)=>{var R=Z("Preview other runtimes");x(w,R)},$$slots:{default:!0}});var L=se(C,2);cn(L,{class:"flex-wrap gap-3",children:(w,k)=>{var R=oe(),O=G(R);es(O,1,()=>Ar.runtimes,A=>A.id,(A,Y)=>{gu(A,{get href(){return`http://127.0.0.1:${y(Y).port??""}`},variant:"default",children:(be,z)=>{var X=Z();Zt(()=>Qt(X,y(Y).label)),x(be,X)},$$slots:{default:!0}})}),x(w,R)},$$slots:{default:!0}}),x(m,_)},$$slots:{default:!0}})},$$slots:{default:!0}});var p=se(f,2);Nr(p,{class:"text-center text-sm text-muted-foreground",children:(d,g)=>{var m=Z("Same shadcn tokens · generated ui/ primitives · @ui8kit/codegen");x(d,m)},$$slots:{default:!0}}),x(l,c)},$$slots:{default:!0}})},$$slots:{default:!0}})},$$slots:{default:!0}}),ne()}Wi(qu,{target:document.getElementById("app")}); diff --git a/examples/svelte/dist/index.html b/examples/svelte/dist/index.html deleted file mode 100644 index c807cf4..0000000 --- a/examples/svelte/dist/index.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - UI8Kit Codegen · Svelte 5 - - - - -
- - diff --git a/examples/svelte/index.html b/examples/svelte/index.html deleted file mode 100644 index a9e2a35..0000000 --- a/examples/svelte/index.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - UI8Kit Codegen · Svelte 5 - - - -
- - - diff --git a/examples/svelte/src/Welcome.svelte b/examples/svelte/src/Welcome.svelte deleted file mode 100644 index 402c4a4..0000000 --- a/examples/svelte/src/Welcome.svelte +++ /dev/null @@ -1,82 +0,0 @@ - - - - - - - Svelte 5 - {welcome.title} - {welcome.subtitle} - - - - - Generated primitives - - - - - - - - - - - - Badge - Secondary - Outline - - - - - - - {#each welcome.features as feature (feature.title)} - - - {feature.title} - - - {feature.description} - - - {/each} - - - - - Preview other runtimes - - {#each welcome.runtimes as rt (rt.id)} - {rt.label} - {/each} - - - - - - Same shadcn tokens · generated ui/ primitives · @ui8kit/codegen - - - - diff --git a/examples/svelte/src/main.ts b/examples/svelte/src/main.ts deleted file mode 100644 index c05a07e..0000000 --- a/examples/svelte/src/main.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { mount } from "svelte"; -import Welcome from "./Welcome.svelte"; - -mount(Welcome, { target: document.getElementById("app")! }); diff --git a/examples/svelte/svelte.config.js b/examples/svelte/svelte.config.js deleted file mode 100644 index e82cbe4..0000000 --- a/examples/svelte/svelte.config.js +++ /dev/null @@ -1,6 +0,0 @@ -import { vitePreprocess } from "@sveltejs/vite-plugin-svelte"; - -/** @type {import("@sveltejs/vite-plugin-svelte").SvelteConfig} */ -export default { - preprocess: vitePreprocess(), -}; diff --git a/examples/svelte/tsconfig.json b/examples/svelte/tsconfig.json deleted file mode 100644 index d81cdef..0000000 --- a/examples/svelte/tsconfig.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "compilerOptions": { - "target": "ES2022", - "module": "ESNext", - "moduleResolution": "bundler", - "strict": true, - "skipLibCheck": true, - "resolveJsonModule": true, - "paths": { - "@ui": ["../../generated/ui/index.svelte.ts"], - "@ui/*": ["../../generated/ui/*"] - } - }, - "include": ["src/**/*.ts", "src/**/*.svelte", "../data/**/*.json"] -} diff --git a/examples/svelte/vite.config.ts b/examples/svelte/vite.config.ts deleted file mode 100644 index 2c9d138..0000000 --- a/examples/svelte/vite.config.ts +++ /dev/null @@ -1,23 +0,0 @@ -import path from "path"; -import { fileURLToPath } from "url"; -import { svelte } from "@sveltejs/vite-plugin-svelte"; -import { defineConfig } from "vite"; -import { generatedUiRoot, serveExamplesStatic } from "../shared/vite-static"; - -const rootDir = path.dirname(fileURLToPath(import.meta.url)); - -export default defineConfig({ - root: rootDir, - plugins: [svelte(), serveExamplesStatic()], - resolve: { - alias: { - "@ui": path.join(generatedUiRoot, "index.svelte.ts"), - }, - }, - server: { - port: 5174, - fs: { - allow: [path.resolve(rootDir, ".."), path.resolve(rootDir, "../../generated")], - }, - }, -}); diff --git a/examples/templ/cmd/server/main.go b/examples/templ/cmd/server/main.go deleted file mode 100644 index 1526cf7..0000000 --- a/examples/templ/cmd/server/main.go +++ /dev/null @@ -1,54 +0,0 @@ -package main - -import ( - "log" - "net/http" - "os" - "path/filepath" - - templpreview "github.com/ui8kit/codegen-examples/templ" -) - -func main() { - addr := envOr("ADDR", "127.0.0.1:8080") - staticDir := filepath.Join(examplesRoot(), "web", "static") - - mux := http.NewServeMux() - mux.HandleFunc("GET /{$}", func(w http.ResponseWriter, r *http.Request) { - if err := templpreview.Page().Render(r.Context(), w); err != nil { - http.Error(w, err.Error(), http.StatusInternalServerError) - } - }) - mux.Handle("/static/", http.StripPrefix("/static/", http.FileServer(http.Dir(staticDir)))) - - log.Printf("codegen welcome (templ) http://%s/", addr) - if err := http.ListenAndServe(addr, mux); err != nil { - log.Fatal(err) - } -} - -func envOr(key, fallback string) string { - if v := os.Getenv(key); v != "" { - return v - } - return fallback -} - -func examplesRoot() string { - dir, err := os.Getwd() - if err != nil { - log.Fatal(err) - } - for { - if _, err := os.Stat(filepath.Join(dir, "package.json")); err == nil { - if _, err := os.Stat(filepath.Join(dir, "web", "static")); err == nil { - return dir - } - } - parent := filepath.Dir(dir) - if parent == dir { - log.Fatal("examples root not found") - } - dir = parent - } -} diff --git a/examples/templ/go.mod b/examples/templ/go.mod deleted file mode 100644 index 873f92b..0000000 --- a/examples/templ/go.mod +++ /dev/null @@ -1,10 +0,0 @@ -module github.com/ui8kit/codegen-examples/templ - -go 1.23.0 - -require ( - github.com/a-h/templ v0.3.1001 - github.com/ui8kit/ui v0.0.0 -) - -replace github.com/ui8kit/ui => ../../generated diff --git a/examples/templ/go.sum b/examples/templ/go.sum deleted file mode 100644 index bcce387..0000000 --- a/examples/templ/go.sum +++ /dev/null @@ -1,4 +0,0 @@ -github.com/a-h/templ v0.3.1001 h1:yHDTgexACdJttyiyamcTHXr2QkIeVF1MukLy44EAhMY= -github.com/a-h/templ v0.3.1001/go.mod h1:oCZcnKRf5jjsGpf2yELzQfodLphd2mwecwG4Crk5HBo= -github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= -github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= diff --git a/examples/templ/page.templ b/examples/templ/page.templ deleted file mode 100644 index d3dfb5c..0000000 --- a/examples/templ/page.templ +++ /dev/null @@ -1,16 +0,0 @@ -package templpreview - -templ Page() { - - - - - - UI8Kit Codegen · Go Templ - - - - @Welcome(WelcomeProps{Runtime: "Go Templ"}) - - -} diff --git a/examples/templ/page_templ.go b/examples/templ/page_templ.go deleted file mode 100644 index adad0b3..0000000 --- a/examples/templ/page_templ.go +++ /dev/null @@ -1,48 +0,0 @@ -// Code generated by templ - DO NOT EDIT. - -// templ: version: v0.3.1001 -package templpreview - -//lint:file-ignore SA4006 This context is only used if a nested component is present. - -import "github.com/a-h/templ" -import templruntime "github.com/a-h/templ/runtime" - -func Page() templ.Component { - return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { - templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context - if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil { - return templ_7745c5c3_CtxErr - } - templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) - if !templ_7745c5c3_IsBuffer { - defer func() { - templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) - if templ_7745c5c3_Err == nil { - templ_7745c5c3_Err = templ_7745c5c3_BufErr - } - }() - } - ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var1 := templ.GetChildren(ctx) - if templ_7745c5c3_Var1 == nil { - templ_7745c5c3_Var1 = templ.NopComponent - } - ctx = templ.ClearChildren(ctx) - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 1, "UI8Kit Codegen · Go Templ") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = Welcome(WelcomeProps{Runtime: "Go Templ"}).Render(ctx, templ_7745c5c3_Buffer) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 2, "") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - return nil - }) -} - -var _ = templruntime.GeneratedTemplate diff --git a/examples/templ/welcome.templ b/examples/templ/welcome.templ deleted file mode 100644 index 3ef22d7..0000000 --- a/examples/templ/welcome.templ +++ /dev/null @@ -1,148 +0,0 @@ -package templpreview - -import ( - uiutils "github.com/ui8kit/ui/utils" - "github.com/ui8kit/ui/ui/badge" - "github.com/ui8kit/ui/ui/block" - "github.com/ui8kit/ui/ui/box" - "github.com/ui8kit/ui/ui/button" - "github.com/ui8kit/ui/ui/card" - "github.com/ui8kit/ui/ui/container" - "github.com/ui8kit/ui/ui/grid" - "github.com/ui8kit/ui/ui/group" - "github.com/ui8kit/ui/ui/link" - "github.com/ui8kit/ui/ui/stack" - "github.com/ui8kit/ui/ui/text" - "github.com/ui8kit/ui/ui/title" -) - -type WelcomeProps struct { - Runtime string -} - -templ Welcome(props WelcomeProps) { - @block.Block(block.BlockProps{Tag: "main", Class: "min-h-screen bg-muted/30 text-foreground"}) { - @container.Container(container.ContainerProps{Class: "mx-auto max-w-4xl px-4 py-16"}) { - @stack.Stack(stack.StackProps{Class: "gap-8"}) { - @stack.Stack(stack.StackProps{Class: "items-center gap-4 text-center"}) { - @badge.Badge(badge.BadgeProps{Variant: "outline", Class: "text-xs uppercase tracking-wide"}) { - { props.Runtime } - } - @title.Title(title.TitleProps{As: uiutils.H1, Class: "text-3xl font-bold tracking-tight"}) { - UI8Kit Codegen - } - @text.Text(text.TextProps{Class: "max-w-2xl text-muted-foreground"}) { - One typed render contract — seven generated runtimes with identical DOM, design, and ARIA. - } - } - @card.Card(card.CardProps{Variant: "default"}) { - @card.CardHeader(card.CardHeaderProps{}) { - @card.CardTitle(card.CardTitleProps{}) { - Generated primitives - } - } - @card.CardContent(card.CardContentProps{}) { - @stack.Stack(stack.StackProps{Class: "gap-4"}) { - @group.Group(group.GroupProps{Class: "flex-wrap gap-2"}) { - @button.Button(button.ButtonProps{Variant: "default", Size: "sm"}) { - Default - } - @button.Button(button.ButtonProps{Variant: "secondary", Size: "sm"}) { - Secondary - } - @button.Button(button.ButtonProps{Variant: "outline", Size: "sm"}) { - Outline - } - @button.Button(button.ButtonProps{Variant: "ghost", Size: "sm"}) { - Ghost - } - @button.Button(button.ButtonProps{Variant: "destructive", Size: "sm"}) { - Destructive - } - } - @group.Group(group.GroupProps{Class: "flex-wrap gap-2"}) { - @badge.Badge(badge.BadgeProps{Variant: "default"}) { - Badge - } - @badge.Badge(badge.BadgeProps{Variant: "secondary"}) { - Secondary - } - @badge.Badge(badge.BadgeProps{Variant: "outline"}) { - Outline - } - } - } - } - } - @grid.Grid(grid.GridProps{Cols: "1-3", Class: "gap-4"}) { - @card.Card(card.CardProps{Variant: "muted"}) { - @card.CardHeader(card.CardHeaderProps{}) { - @card.CardTitle(card.CardTitleProps{}) { - Spec-driven - } - } - @card.CardContent(card.CardContentProps{}) { - @text.Text(text.TextProps{Class: "text-sm text-muted-foreground"}) { - Brick definitions in a tiny expression IR — no hand-written drift across stacks. - } - } - } - @card.Card(card.CardProps{Variant: "muted"}) { - @card.CardHeader(card.CardHeaderProps{}) { - @card.CardTitle(card.CardTitleProps{}) { - Seven runtimes - } - } - @card.CardContent(card.CardContentProps{}) { - @text.Text(text.TextProps{Class: "text-sm text-muted-foreground"}) { - Go Templ, React 19, Svelte 5, Vue 3, Latte, Twig, and static HTML from the same source. - } - } - } - @card.Card(card.CardProps{Variant: "muted"}) { - @card.CardHeader(card.CardHeaderProps{}) { - @card.CardTitle(card.CardTitleProps{}) { - DOM parity - } - } - @card.CardContent(card.CardContentProps{}) { - @text.Text(text.TextProps{Class: "text-sm text-muted-foreground"}) { - The canonical renderer is the executable specification, verified by tests. - } - } - } - } - @box.Box(box.BoxProps{Class: "rounded-lg border border-border bg-card p-4"}) { - @stack.Stack(stack.StackProps{Class: "gap-3"}) { - @text.Text(text.TextProps{Class: "text-sm font-medium"}) { - Preview other runtimes - } - @group.Group(group.GroupProps{Class: "flex-wrap gap-3"}) { - @link.Link(link.LinkProps{Href: "http://127.0.0.1:8080", Variant: "default"}) { - Go Templ - } - @link.Link(link.LinkProps{Href: "http://127.0.0.1:5173", Variant: "default"}) { - React 19 - } - @link.Link(link.LinkProps{Href: "http://127.0.0.1:5174", Variant: "default"}) { - Svelte 5 - } - @link.Link(link.LinkProps{Href: "http://127.0.0.1:5175", Variant: "default"}) { - Vue 3 - } - @link.Link(link.LinkProps{Href: "http://127.0.0.1:5176", Variant: "default"}) { - Latte - } - @link.Link(link.LinkProps{Href: "http://127.0.0.1:5177", Variant: "default"}) { - Twig - } - } - } - } - @text.Text(text.TextProps{Class: "text-center text-sm text-muted-foreground"}) { - Same shadcn tokens · generated ui/ primitives · @ui8kit/codegen - } - } - } - } -} diff --git a/examples/templ/welcome_templ.go b/examples/templ/welcome_templ.go deleted file mode 100644 index 8e4a889..0000000 --- a/examples/templ/welcome_templ.go +++ /dev/null @@ -1,1147 +0,0 @@ -// Code generated by templ - DO NOT EDIT. - -// templ: version: v0.3.1001 -package templpreview - -//lint:file-ignore SA4006 This context is only used if a nested component is present. - -import "github.com/a-h/templ" -import templruntime "github.com/a-h/templ/runtime" - -import ( - "github.com/ui8kit/ui/ui/badge" - "github.com/ui8kit/ui/ui/block" - "github.com/ui8kit/ui/ui/box" - "github.com/ui8kit/ui/ui/button" - "github.com/ui8kit/ui/ui/card" - "github.com/ui8kit/ui/ui/container" - "github.com/ui8kit/ui/ui/grid" - "github.com/ui8kit/ui/ui/group" - "github.com/ui8kit/ui/ui/link" - "github.com/ui8kit/ui/ui/stack" - "github.com/ui8kit/ui/ui/text" - "github.com/ui8kit/ui/ui/title" - uiutils "github.com/ui8kit/ui/utils" -) - -type WelcomeProps struct { - Runtime string -} - -func Welcome(props WelcomeProps) templ.Component { - return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { - templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context - if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil { - return templ_7745c5c3_CtxErr - } - templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) - if !templ_7745c5c3_IsBuffer { - defer func() { - templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) - if templ_7745c5c3_Err == nil { - templ_7745c5c3_Err = templ_7745c5c3_BufErr - } - }() - } - ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var1 := templ.GetChildren(ctx) - if templ_7745c5c3_Var1 == nil { - templ_7745c5c3_Var1 = templ.NopComponent - } - ctx = templ.ClearChildren(ctx) - templ_7745c5c3_Var2 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { - templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context - templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) - if !templ_7745c5c3_IsBuffer { - defer func() { - templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) - if templ_7745c5c3_Err == nil { - templ_7745c5c3_Err = templ_7745c5c3_BufErr - } - }() - } - ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var3 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { - templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context - templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) - if !templ_7745c5c3_IsBuffer { - defer func() { - templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) - if templ_7745c5c3_Err == nil { - templ_7745c5c3_Err = templ_7745c5c3_BufErr - } - }() - } - ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var4 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { - templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context - templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) - if !templ_7745c5c3_IsBuffer { - defer func() { - templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) - if templ_7745c5c3_Err == nil { - templ_7745c5c3_Err = templ_7745c5c3_BufErr - } - }() - } - ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var5 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { - templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context - templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) - if !templ_7745c5c3_IsBuffer { - defer func() { - templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) - if templ_7745c5c3_Err == nil { - templ_7745c5c3_Err = templ_7745c5c3_BufErr - } - }() - } - ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var6 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { - templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context - templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) - if !templ_7745c5c3_IsBuffer { - defer func() { - templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) - if templ_7745c5c3_Err == nil { - templ_7745c5c3_Err = templ_7745c5c3_BufErr - } - }() - } - ctx = templ.InitializeContext(ctx) - var templ_7745c5c3_Var7 string - templ_7745c5c3_Var7, templ_7745c5c3_Err = templ.JoinStringErrs(props.Runtime) - if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `welcome.templ`, Line: 29, Col: 21} - } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var7)) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - return nil - }) - templ_7745c5c3_Err = badge.Badge(badge.BadgeProps{Variant: "outline", Class: "text-xs uppercase tracking-wide"}).Render(templ.WithChildren(ctx, templ_7745c5c3_Var6), templ_7745c5c3_Buffer) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 1, " ") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Var8 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { - templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context - templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) - if !templ_7745c5c3_IsBuffer { - defer func() { - templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) - if templ_7745c5c3_Err == nil { - templ_7745c5c3_Err = templ_7745c5c3_BufErr - } - }() - } - ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 2, "UI8Kit Codegen") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - return nil - }) - templ_7745c5c3_Err = title.Title(title.TitleProps{As: uiutils.H1, Class: "text-3xl font-bold tracking-tight"}).Render(templ.WithChildren(ctx, templ_7745c5c3_Var8), templ_7745c5c3_Buffer) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 3, " ") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Var9 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { - templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context - templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) - if !templ_7745c5c3_IsBuffer { - defer func() { - templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) - if templ_7745c5c3_Err == nil { - templ_7745c5c3_Err = templ_7745c5c3_BufErr - } - }() - } - ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 4, "One typed render contract — seven generated runtimes with identical DOM, design, and ARIA.") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - return nil - }) - templ_7745c5c3_Err = text.Text(text.TextProps{Class: "max-w-2xl text-muted-foreground"}).Render(templ.WithChildren(ctx, templ_7745c5c3_Var9), templ_7745c5c3_Buffer) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - return nil - }) - templ_7745c5c3_Err = stack.Stack(stack.StackProps{Class: "items-center gap-4 text-center"}).Render(templ.WithChildren(ctx, templ_7745c5c3_Var5), templ_7745c5c3_Buffer) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 5, " ") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Var10 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { - templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context - templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) - if !templ_7745c5c3_IsBuffer { - defer func() { - templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) - if templ_7745c5c3_Err == nil { - templ_7745c5c3_Err = templ_7745c5c3_BufErr - } - }() - } - ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var11 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { - templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context - templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) - if !templ_7745c5c3_IsBuffer { - defer func() { - templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) - if templ_7745c5c3_Err == nil { - templ_7745c5c3_Err = templ_7745c5c3_BufErr - } - }() - } - ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var12 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { - templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context - templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) - if !templ_7745c5c3_IsBuffer { - defer func() { - templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) - if templ_7745c5c3_Err == nil { - templ_7745c5c3_Err = templ_7745c5c3_BufErr - } - }() - } - ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 6, "Generated primitives") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - return nil - }) - templ_7745c5c3_Err = card.CardTitle(card.CardTitleProps{}).Render(templ.WithChildren(ctx, templ_7745c5c3_Var12), templ_7745c5c3_Buffer) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - return nil - }) - templ_7745c5c3_Err = card.CardHeader(card.CardHeaderProps{}).Render(templ.WithChildren(ctx, templ_7745c5c3_Var11), templ_7745c5c3_Buffer) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 7, " ") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Var13 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { - templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context - templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) - if !templ_7745c5c3_IsBuffer { - defer func() { - templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) - if templ_7745c5c3_Err == nil { - templ_7745c5c3_Err = templ_7745c5c3_BufErr - } - }() - } - ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var14 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { - templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context - templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) - if !templ_7745c5c3_IsBuffer { - defer func() { - templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) - if templ_7745c5c3_Err == nil { - templ_7745c5c3_Err = templ_7745c5c3_BufErr - } - }() - } - ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var15 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { - templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context - templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) - if !templ_7745c5c3_IsBuffer { - defer func() { - templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) - if templ_7745c5c3_Err == nil { - templ_7745c5c3_Err = templ_7745c5c3_BufErr - } - }() - } - ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var16 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { - templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context - templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) - if !templ_7745c5c3_IsBuffer { - defer func() { - templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) - if templ_7745c5c3_Err == nil { - templ_7745c5c3_Err = templ_7745c5c3_BufErr - } - }() - } - ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 8, "Default") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - return nil - }) - templ_7745c5c3_Err = button.Button(button.ButtonProps{Variant: "default", Size: "sm"}).Render(templ.WithChildren(ctx, templ_7745c5c3_Var16), templ_7745c5c3_Buffer) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 9, " ") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Var17 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { - templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context - templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) - if !templ_7745c5c3_IsBuffer { - defer func() { - templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) - if templ_7745c5c3_Err == nil { - templ_7745c5c3_Err = templ_7745c5c3_BufErr - } - }() - } - ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 10, "Secondary") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - return nil - }) - templ_7745c5c3_Err = button.Button(button.ButtonProps{Variant: "secondary", Size: "sm"}).Render(templ.WithChildren(ctx, templ_7745c5c3_Var17), templ_7745c5c3_Buffer) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 11, " ") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Var18 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { - templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context - templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) - if !templ_7745c5c3_IsBuffer { - defer func() { - templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) - if templ_7745c5c3_Err == nil { - templ_7745c5c3_Err = templ_7745c5c3_BufErr - } - }() - } - ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 12, "Outline") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - return nil - }) - templ_7745c5c3_Err = button.Button(button.ButtonProps{Variant: "outline", Size: "sm"}).Render(templ.WithChildren(ctx, templ_7745c5c3_Var18), templ_7745c5c3_Buffer) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 13, " ") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Var19 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { - templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context - templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) - if !templ_7745c5c3_IsBuffer { - defer func() { - templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) - if templ_7745c5c3_Err == nil { - templ_7745c5c3_Err = templ_7745c5c3_BufErr - } - }() - } - ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 14, "Ghost") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - return nil - }) - templ_7745c5c3_Err = button.Button(button.ButtonProps{Variant: "ghost", Size: "sm"}).Render(templ.WithChildren(ctx, templ_7745c5c3_Var19), templ_7745c5c3_Buffer) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 15, " ") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Var20 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { - templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context - templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) - if !templ_7745c5c3_IsBuffer { - defer func() { - templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) - if templ_7745c5c3_Err == nil { - templ_7745c5c3_Err = templ_7745c5c3_BufErr - } - }() - } - ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 16, "Destructive") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - return nil - }) - templ_7745c5c3_Err = button.Button(button.ButtonProps{Variant: "destructive", Size: "sm"}).Render(templ.WithChildren(ctx, templ_7745c5c3_Var20), templ_7745c5c3_Buffer) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - return nil - }) - templ_7745c5c3_Err = group.Group(group.GroupProps{Class: "flex-wrap gap-2"}).Render(templ.WithChildren(ctx, templ_7745c5c3_Var15), templ_7745c5c3_Buffer) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 17, " ") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Var21 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { - templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context - templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) - if !templ_7745c5c3_IsBuffer { - defer func() { - templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) - if templ_7745c5c3_Err == nil { - templ_7745c5c3_Err = templ_7745c5c3_BufErr - } - }() - } - ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var22 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { - templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context - templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) - if !templ_7745c5c3_IsBuffer { - defer func() { - templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) - if templ_7745c5c3_Err == nil { - templ_7745c5c3_Err = templ_7745c5c3_BufErr - } - }() - } - ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 18, "Badge") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - return nil - }) - templ_7745c5c3_Err = badge.Badge(badge.BadgeProps{Variant: "default"}).Render(templ.WithChildren(ctx, templ_7745c5c3_Var22), templ_7745c5c3_Buffer) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 19, " ") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Var23 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { - templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context - templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) - if !templ_7745c5c3_IsBuffer { - defer func() { - templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) - if templ_7745c5c3_Err == nil { - templ_7745c5c3_Err = templ_7745c5c3_BufErr - } - }() - } - ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 20, "Secondary") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - return nil - }) - templ_7745c5c3_Err = badge.Badge(badge.BadgeProps{Variant: "secondary"}).Render(templ.WithChildren(ctx, templ_7745c5c3_Var23), templ_7745c5c3_Buffer) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 21, " ") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Var24 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { - templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context - templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) - if !templ_7745c5c3_IsBuffer { - defer func() { - templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) - if templ_7745c5c3_Err == nil { - templ_7745c5c3_Err = templ_7745c5c3_BufErr - } - }() - } - ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 22, "Outline") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - return nil - }) - templ_7745c5c3_Err = badge.Badge(badge.BadgeProps{Variant: "outline"}).Render(templ.WithChildren(ctx, templ_7745c5c3_Var24), templ_7745c5c3_Buffer) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - return nil - }) - templ_7745c5c3_Err = group.Group(group.GroupProps{Class: "flex-wrap gap-2"}).Render(templ.WithChildren(ctx, templ_7745c5c3_Var21), templ_7745c5c3_Buffer) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - return nil - }) - templ_7745c5c3_Err = stack.Stack(stack.StackProps{Class: "gap-4"}).Render(templ.WithChildren(ctx, templ_7745c5c3_Var14), templ_7745c5c3_Buffer) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - return nil - }) - templ_7745c5c3_Err = card.CardContent(card.CardContentProps{}).Render(templ.WithChildren(ctx, templ_7745c5c3_Var13), templ_7745c5c3_Buffer) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - return nil - }) - templ_7745c5c3_Err = card.Card(card.CardProps{Variant: "default"}).Render(templ.WithChildren(ctx, templ_7745c5c3_Var10), templ_7745c5c3_Buffer) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 23, " ") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Var25 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { - templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context - templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) - if !templ_7745c5c3_IsBuffer { - defer func() { - templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) - if templ_7745c5c3_Err == nil { - templ_7745c5c3_Err = templ_7745c5c3_BufErr - } - }() - } - ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var26 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { - templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context - templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) - if !templ_7745c5c3_IsBuffer { - defer func() { - templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) - if templ_7745c5c3_Err == nil { - templ_7745c5c3_Err = templ_7745c5c3_BufErr - } - }() - } - ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var27 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { - templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context - templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) - if !templ_7745c5c3_IsBuffer { - defer func() { - templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) - if templ_7745c5c3_Err == nil { - templ_7745c5c3_Err = templ_7745c5c3_BufErr - } - }() - } - ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var28 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { - templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context - templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) - if !templ_7745c5c3_IsBuffer { - defer func() { - templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) - if templ_7745c5c3_Err == nil { - templ_7745c5c3_Err = templ_7745c5c3_BufErr - } - }() - } - ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 24, "Spec-driven") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - return nil - }) - templ_7745c5c3_Err = card.CardTitle(card.CardTitleProps{}).Render(templ.WithChildren(ctx, templ_7745c5c3_Var28), templ_7745c5c3_Buffer) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - return nil - }) - templ_7745c5c3_Err = card.CardHeader(card.CardHeaderProps{}).Render(templ.WithChildren(ctx, templ_7745c5c3_Var27), templ_7745c5c3_Buffer) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 25, " ") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Var29 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { - templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context - templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) - if !templ_7745c5c3_IsBuffer { - defer func() { - templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) - if templ_7745c5c3_Err == nil { - templ_7745c5c3_Err = templ_7745c5c3_BufErr - } - }() - } - ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var30 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { - templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context - templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) - if !templ_7745c5c3_IsBuffer { - defer func() { - templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) - if templ_7745c5c3_Err == nil { - templ_7745c5c3_Err = templ_7745c5c3_BufErr - } - }() - } - ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 26, "Brick definitions in a tiny expression IR — no hand-written drift across stacks.") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - return nil - }) - templ_7745c5c3_Err = text.Text(text.TextProps{Class: "text-sm text-muted-foreground"}).Render(templ.WithChildren(ctx, templ_7745c5c3_Var30), templ_7745c5c3_Buffer) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - return nil - }) - templ_7745c5c3_Err = card.CardContent(card.CardContentProps{}).Render(templ.WithChildren(ctx, templ_7745c5c3_Var29), templ_7745c5c3_Buffer) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - return nil - }) - templ_7745c5c3_Err = card.Card(card.CardProps{Variant: "muted"}).Render(templ.WithChildren(ctx, templ_7745c5c3_Var26), templ_7745c5c3_Buffer) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 27, " ") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Var31 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { - templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context - templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) - if !templ_7745c5c3_IsBuffer { - defer func() { - templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) - if templ_7745c5c3_Err == nil { - templ_7745c5c3_Err = templ_7745c5c3_BufErr - } - }() - } - ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var32 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { - templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context - templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) - if !templ_7745c5c3_IsBuffer { - defer func() { - templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) - if templ_7745c5c3_Err == nil { - templ_7745c5c3_Err = templ_7745c5c3_BufErr - } - }() - } - ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var33 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { - templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context - templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) - if !templ_7745c5c3_IsBuffer { - defer func() { - templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) - if templ_7745c5c3_Err == nil { - templ_7745c5c3_Err = templ_7745c5c3_BufErr - } - }() - } - ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 28, "Seven runtimes") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - return nil - }) - templ_7745c5c3_Err = card.CardTitle(card.CardTitleProps{}).Render(templ.WithChildren(ctx, templ_7745c5c3_Var33), templ_7745c5c3_Buffer) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - return nil - }) - templ_7745c5c3_Err = card.CardHeader(card.CardHeaderProps{}).Render(templ.WithChildren(ctx, templ_7745c5c3_Var32), templ_7745c5c3_Buffer) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 29, " ") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Var34 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { - templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context - templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) - if !templ_7745c5c3_IsBuffer { - defer func() { - templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) - if templ_7745c5c3_Err == nil { - templ_7745c5c3_Err = templ_7745c5c3_BufErr - } - }() - } - ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var35 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { - templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context - templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) - if !templ_7745c5c3_IsBuffer { - defer func() { - templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) - if templ_7745c5c3_Err == nil { - templ_7745c5c3_Err = templ_7745c5c3_BufErr - } - }() - } - ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 30, "Go Templ, React 19, Svelte 5, Vue 3, Latte, Twig, and static HTML from the same source.") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - return nil - }) - templ_7745c5c3_Err = text.Text(text.TextProps{Class: "text-sm text-muted-foreground"}).Render(templ.WithChildren(ctx, templ_7745c5c3_Var35), templ_7745c5c3_Buffer) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - return nil - }) - templ_7745c5c3_Err = card.CardContent(card.CardContentProps{}).Render(templ.WithChildren(ctx, templ_7745c5c3_Var34), templ_7745c5c3_Buffer) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - return nil - }) - templ_7745c5c3_Err = card.Card(card.CardProps{Variant: "muted"}).Render(templ.WithChildren(ctx, templ_7745c5c3_Var31), templ_7745c5c3_Buffer) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 31, " ") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Var36 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { - templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context - templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) - if !templ_7745c5c3_IsBuffer { - defer func() { - templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) - if templ_7745c5c3_Err == nil { - templ_7745c5c3_Err = templ_7745c5c3_BufErr - } - }() - } - ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var37 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { - templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context - templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) - if !templ_7745c5c3_IsBuffer { - defer func() { - templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) - if templ_7745c5c3_Err == nil { - templ_7745c5c3_Err = templ_7745c5c3_BufErr - } - }() - } - ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var38 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { - templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context - templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) - if !templ_7745c5c3_IsBuffer { - defer func() { - templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) - if templ_7745c5c3_Err == nil { - templ_7745c5c3_Err = templ_7745c5c3_BufErr - } - }() - } - ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 32, "DOM parity") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - return nil - }) - templ_7745c5c3_Err = card.CardTitle(card.CardTitleProps{}).Render(templ.WithChildren(ctx, templ_7745c5c3_Var38), templ_7745c5c3_Buffer) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - return nil - }) - templ_7745c5c3_Err = card.CardHeader(card.CardHeaderProps{}).Render(templ.WithChildren(ctx, templ_7745c5c3_Var37), templ_7745c5c3_Buffer) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 33, " ") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Var39 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { - templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context - templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) - if !templ_7745c5c3_IsBuffer { - defer func() { - templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) - if templ_7745c5c3_Err == nil { - templ_7745c5c3_Err = templ_7745c5c3_BufErr - } - }() - } - ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var40 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { - templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context - templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) - if !templ_7745c5c3_IsBuffer { - defer func() { - templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) - if templ_7745c5c3_Err == nil { - templ_7745c5c3_Err = templ_7745c5c3_BufErr - } - }() - } - ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 34, "The canonical renderer is the executable specification, verified by tests.") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - return nil - }) - templ_7745c5c3_Err = text.Text(text.TextProps{Class: "text-sm text-muted-foreground"}).Render(templ.WithChildren(ctx, templ_7745c5c3_Var40), templ_7745c5c3_Buffer) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - return nil - }) - templ_7745c5c3_Err = card.CardContent(card.CardContentProps{}).Render(templ.WithChildren(ctx, templ_7745c5c3_Var39), templ_7745c5c3_Buffer) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - return nil - }) - templ_7745c5c3_Err = card.Card(card.CardProps{Variant: "muted"}).Render(templ.WithChildren(ctx, templ_7745c5c3_Var36), templ_7745c5c3_Buffer) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - return nil - }) - templ_7745c5c3_Err = grid.Grid(grid.GridProps{Cols: "1-3", Class: "gap-4"}).Render(templ.WithChildren(ctx, templ_7745c5c3_Var25), templ_7745c5c3_Buffer) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 35, " ") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Var41 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { - templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context - templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) - if !templ_7745c5c3_IsBuffer { - defer func() { - templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) - if templ_7745c5c3_Err == nil { - templ_7745c5c3_Err = templ_7745c5c3_BufErr - } - }() - } - ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var42 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { - templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context - templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) - if !templ_7745c5c3_IsBuffer { - defer func() { - templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) - if templ_7745c5c3_Err == nil { - templ_7745c5c3_Err = templ_7745c5c3_BufErr - } - }() - } - ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var43 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { - templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context - templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) - if !templ_7745c5c3_IsBuffer { - defer func() { - templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) - if templ_7745c5c3_Err == nil { - templ_7745c5c3_Err = templ_7745c5c3_BufErr - } - }() - } - ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 36, "Preview other runtimes") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - return nil - }) - templ_7745c5c3_Err = text.Text(text.TextProps{Class: "text-sm font-medium"}).Render(templ.WithChildren(ctx, templ_7745c5c3_Var43), templ_7745c5c3_Buffer) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 37, " ") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Var44 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { - templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context - templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) - if !templ_7745c5c3_IsBuffer { - defer func() { - templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) - if templ_7745c5c3_Err == nil { - templ_7745c5c3_Err = templ_7745c5c3_BufErr - } - }() - } - ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var45 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { - templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context - templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) - if !templ_7745c5c3_IsBuffer { - defer func() { - templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) - if templ_7745c5c3_Err == nil { - templ_7745c5c3_Err = templ_7745c5c3_BufErr - } - }() - } - ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 38, "Go Templ") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - return nil - }) - templ_7745c5c3_Err = link.Link(link.LinkProps{Href: "http://127.0.0.1:8080", Variant: "default"}).Render(templ.WithChildren(ctx, templ_7745c5c3_Var45), templ_7745c5c3_Buffer) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 39, " ") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Var46 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { - templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context - templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) - if !templ_7745c5c3_IsBuffer { - defer func() { - templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) - if templ_7745c5c3_Err == nil { - templ_7745c5c3_Err = templ_7745c5c3_BufErr - } - }() - } - ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 40, "React 19") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - return nil - }) - templ_7745c5c3_Err = link.Link(link.LinkProps{Href: "http://127.0.0.1:5173", Variant: "default"}).Render(templ.WithChildren(ctx, templ_7745c5c3_Var46), templ_7745c5c3_Buffer) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 41, " ") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Var47 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { - templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context - templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) - if !templ_7745c5c3_IsBuffer { - defer func() { - templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) - if templ_7745c5c3_Err == nil { - templ_7745c5c3_Err = templ_7745c5c3_BufErr - } - }() - } - ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 42, "Svelte 5") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - return nil - }) - templ_7745c5c3_Err = link.Link(link.LinkProps{Href: "http://127.0.0.1:5174", Variant: "default"}).Render(templ.WithChildren(ctx, templ_7745c5c3_Var47), templ_7745c5c3_Buffer) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 43, " ") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Var48 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { - templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context - templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) - if !templ_7745c5c3_IsBuffer { - defer func() { - templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) - if templ_7745c5c3_Err == nil { - templ_7745c5c3_Err = templ_7745c5c3_BufErr - } - }() - } - ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 44, "Vue 3") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - return nil - }) - templ_7745c5c3_Err = link.Link(link.LinkProps{Href: "http://127.0.0.1:5175", Variant: "default"}).Render(templ.WithChildren(ctx, templ_7745c5c3_Var48), templ_7745c5c3_Buffer) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 45, " ") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Var49 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { - templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context - templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) - if !templ_7745c5c3_IsBuffer { - defer func() { - templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) - if templ_7745c5c3_Err == nil { - templ_7745c5c3_Err = templ_7745c5c3_BufErr - } - }() - } - ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 46, "Latte") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - return nil - }) - templ_7745c5c3_Err = link.Link(link.LinkProps{Href: "http://127.0.0.1:5176", Variant: "default"}).Render(templ.WithChildren(ctx, templ_7745c5c3_Var49), templ_7745c5c3_Buffer) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 47, " ") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Var50 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { - templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context - templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) - if !templ_7745c5c3_IsBuffer { - defer func() { - templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) - if templ_7745c5c3_Err == nil { - templ_7745c5c3_Err = templ_7745c5c3_BufErr - } - }() - } - ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 48, "Twig") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - return nil - }) - templ_7745c5c3_Err = link.Link(link.LinkProps{Href: "http://127.0.0.1:5177", Variant: "default"}).Render(templ.WithChildren(ctx, templ_7745c5c3_Var50), templ_7745c5c3_Buffer) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - return nil - }) - templ_7745c5c3_Err = group.Group(group.GroupProps{Class: "flex-wrap gap-3"}).Render(templ.WithChildren(ctx, templ_7745c5c3_Var44), templ_7745c5c3_Buffer) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - return nil - }) - templ_7745c5c3_Err = stack.Stack(stack.StackProps{Class: "gap-3"}).Render(templ.WithChildren(ctx, templ_7745c5c3_Var42), templ_7745c5c3_Buffer) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - return nil - }) - templ_7745c5c3_Err = box.Box(box.BoxProps{Class: "rounded-lg border border-border bg-card p-4"}).Render(templ.WithChildren(ctx, templ_7745c5c3_Var41), templ_7745c5c3_Buffer) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 49, " ") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Var51 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { - templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context - templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) - if !templ_7745c5c3_IsBuffer { - defer func() { - templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) - if templ_7745c5c3_Err == nil { - templ_7745c5c3_Err = templ_7745c5c3_BufErr - } - }() - } - ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 50, "Same shadcn tokens · generated ui/ primitives · @ui8kit/codegen") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - return nil - }) - templ_7745c5c3_Err = text.Text(text.TextProps{Class: "text-center text-sm text-muted-foreground"}).Render(templ.WithChildren(ctx, templ_7745c5c3_Var51), templ_7745c5c3_Buffer) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - return nil - }) - templ_7745c5c3_Err = stack.Stack(stack.StackProps{Class: "gap-8"}).Render(templ.WithChildren(ctx, templ_7745c5c3_Var4), templ_7745c5c3_Buffer) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - return nil - }) - templ_7745c5c3_Err = container.Container(container.ContainerProps{Class: "mx-auto max-w-4xl px-4 py-16"}).Render(templ.WithChildren(ctx, templ_7745c5c3_Var3), templ_7745c5c3_Buffer) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - return nil - }) - templ_7745c5c3_Err = block.Block(block.BlockProps{Tag: "main", Class: "min-h-screen bg-muted/30 text-foreground"}).Render(templ.WithChildren(ctx, templ_7745c5c3_Var2), templ_7745c5c3_Buffer) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - return nil - }) -} - -var _ = templruntime.GeneratedTemplate diff --git a/examples/twig/server.php b/examples/twig/server.php deleted file mode 100644 index 3005533..0000000 --- a/examples/twig/server.php +++ /dev/null @@ -1,35 +0,0 @@ - 'text/css', 'js' => 'text/javascript', 'svg' => 'image/svg+xml', 'woff2' => 'font/woff2']; - header('Content-Type: ' . ($types[pathinfo($file, PATHINFO_EXTENSION)] ?? 'application/octet-stream')); - readfile($file); - return; - } - http_response_code(404); - echo 'Not found'; - return; -} - -require $root . '/generated/php/vendor/autoload.php'; - -$twig = new Twig\Environment( - new Twig\Loader\FilesystemLoader([__DIR__ . '/templates', $root . '/generated/ui']), - ['autoescape' => 'html', 'strict_variables' => false, 'cache' => false] -); -$twig->addExtension(new UI8Kit\TwigExtension()); - -echo $twig->render('page.html.twig', ['runtime' => 'Twig']); diff --git a/examples/twig/templates/page.html.twig b/examples/twig/templates/page.html.twig deleted file mode 100644 index 65e7eaf..0000000 --- a/examples/twig/templates/page.html.twig +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - UI8Kit Codegen · Twig - - - - {% include 'welcome.html.twig' with {'runtime': runtime|default('Twig')} %} - - diff --git a/examples/twig/templates/welcome.html.twig b/examples/twig/templates/welcome.html.twig deleted file mode 100644 index 8013a78..0000000 --- a/examples/twig/templates/welcome.html.twig +++ /dev/null @@ -1,105 +0,0 @@ -{# Hero #} -{% set hero %} - {% include 'badge/Badge.html.twig' with {'variant': 'outline', 'class': 'text-xs uppercase tracking-wide', 'children': runtime|default('Twig')} only %} - {% include 'title/Title.html.twig' with {'as': 1, 'class': 'text-3xl font-bold tracking-tight', 'children': 'UI8Kit Codegen'} only %} - {% include 'text/Text.html.twig' with {'class': 'max-w-2xl text-muted-foreground', 'children': 'One typed render contract — seven generated runtimes with identical DOM, design, and ARIA.'} only %} -{% endset %} -{% set heroStack %} - {% include 'stack/Stack.html.twig' with {'class': 'items-center gap-4 text-center', 'children': hero} only %} -{% endset %} - -{# Primitives card #} -{% set buttons %} - {% include 'button/Button.html.twig' with {'variant': 'default', 'size': 'sm', 'children': 'Default'} only %} - {% include 'button/Button.html.twig' with {'variant': 'secondary', 'size': 'sm', 'children': 'Secondary'} only %} - {% include 'button/Button.html.twig' with {'variant': 'outline', 'size': 'sm', 'children': 'Outline'} only %} - {% include 'button/Button.html.twig' with {'variant': 'ghost', 'size': 'sm', 'children': 'Ghost'} only %} - {% include 'button/Button.html.twig' with {'variant': 'destructive', 'size': 'sm', 'children': 'Destructive'} only %} -{% endset %} -{% set badges %} - {% include 'badge/Badge.html.twig' with {'variant': 'default', 'children': 'Badge'} only %} - {% include 'badge/Badge.html.twig' with {'variant': 'secondary', 'children': 'Secondary'} only %} - {% include 'badge/Badge.html.twig' with {'variant': 'outline', 'children': 'Outline'} only %} -{% endset %} -{% set showcase %} - {% include 'group/Group.html.twig' with {'class': 'flex-wrap gap-2', 'children': buttons} only %} - {% include 'group/Group.html.twig' with {'class': 'flex-wrap gap-2', 'children': badges} only %} -{% endset %} -{% set showcaseStack %} - {% include 'stack/Stack.html.twig' with {'class': 'gap-4', 'children': showcase} only %} -{% endset %} -{% set primitivesTitle %} - {% include 'card/CardTitle.html.twig' with {'children': 'Generated primitives'} only %} -{% endset %} -{% set primitivesInner %} - {% include 'card/CardHeader.html.twig' with {'children': primitivesTitle} only %} - {% include 'card/CardContent.html.twig' with {'children': showcaseStack} only %} -{% endset %} -{% set primitivesCard %} - {% include 'card/Card.html.twig' with {'variant': 'default', 'children': primitivesInner} only %} -{% endset %} - -{# Feature cards #} -{% set features = [ - {'title': 'Spec-driven', 'description': 'Brick definitions in a tiny expression IR — no hand-written drift across stacks.'}, - {'title': 'Seven runtimes', 'description': 'Go Templ, React 19, Svelte 5, Vue 3, Latte, Twig, and static HTML from the same source.'}, - {'title': 'DOM parity', 'description': 'The canonical renderer is the executable specification, verified by tests.'} -] %} -{% set featureCards %} - {% for feature in features %} - {% set featureTitle %} - {% include 'card/CardTitle.html.twig' with {'children': feature.title} only %} - {% endset %} - {% set featureText %} - {% include 'text/Text.html.twig' with {'class': 'text-sm text-muted-foreground', 'children': feature.description} only %} - {% endset %} - {% set featureInner %} - {% include 'card/CardHeader.html.twig' with {'children': featureTitle} only %} - {% include 'card/CardContent.html.twig' with {'children': featureText} only %} - {% endset %} - {% include 'card/Card.html.twig' with {'variant': 'muted', 'children': featureInner} only %} - {% endfor %} -{% endset %} -{% set featureGrid %} - {% include 'grid/Grid.html.twig' with {'cols': '1-3', 'class': 'gap-4', 'children': featureCards} only %} -{% endset %} - -{# Runtime links #} -{% set runtimes = [ - {'label': 'Go Templ', 'port': 8080}, - {'label': 'React 19', 'port': 5173}, - {'label': 'Svelte 5', 'port': 5174}, - {'label': 'Vue 3', 'port': 5175}, - {'label': 'Latte', 'port': 5176}, - {'label': 'Twig', 'port': 5177} -] %} -{% set links %} - {% for rt in runtimes %} - {% include 'link/Link.html.twig' with {'href': 'http://127.0.0.1:' ~ rt.port, 'variant': 'default', 'children': rt.label} only %} - {% endfor %} -{% endset %} -{% set linksLabel %} - {% include 'text/Text.html.twig' with {'class': 'text-sm font-medium', 'children': 'Preview other runtimes'} only %} -{% endset %} -{% set linksGroup %} - {% include 'group/Group.html.twig' with {'class': 'flex-wrap gap-3', 'children': links} only %} -{% endset %} -{% set linksStack %} - {% include 'stack/Stack.html.twig' with {'class': 'gap-3', 'children': linksLabel ~ linksGroup} only %} -{% endset %} -{% set linksBox %} - {% include 'box/Box.html.twig' with {'class': 'rounded-lg border border-border bg-card p-4', 'children': linksStack} only %} -{% endset %} - -{% set footer %} - {% include 'text/Text.html.twig' with {'class': 'text-center text-sm text-muted-foreground', 'children': 'Same shadcn tokens · generated ui/ primitives · @ui8kit/codegen'} only %} -{% endset %} - -{# Page assembly #} -{% set pageStack %} - {% include 'stack/Stack.html.twig' with {'class': 'gap-8', 'children': heroStack ~ primitivesCard ~ featureGrid ~ linksBox ~ footer} only %} -{% endset %} -{% set container %} - {% include 'container/Container.html.twig' with {'class': 'mx-auto max-w-4xl px-4 py-16', 'children': pageStack} only %} -{% endset %} -{% include 'block/Block.html.twig' with {'tag': 'main', 'class': 'min-h-screen bg-muted/30 text-foreground', 'children': container} only %} diff --git a/examples/vue/dist/assets/index-CdiGC986.js b/examples/vue/dist/assets/index-CdiGC986.js deleted file mode 100644 index 7f368cb..0000000 --- a/examples/vue/dist/assets/index-CdiGC986.js +++ /dev/null @@ -1,17 +0,0 @@ -(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const n of document.querySelectorAll('link[rel="modulepreload"]'))r(n);new MutationObserver(n=>{for(const o of n)if(o.type==="childList")for(const i of o.addedNodes)i.tagName==="LINK"&&i.rel==="modulepreload"&&r(i)}).observe(document,{childList:!0,subtree:!0});function s(n){const o={};return n.integrity&&(o.integrity=n.integrity),n.referrerPolicy&&(o.referrerPolicy=n.referrerPolicy),n.crossOrigin==="use-credentials"?o.credentials="include":n.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function r(n){if(n.ep)return;n.ep=!0;const o=s(n);fetch(n.href,o)}})();/** -* @vue/shared v3.5.39 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/function ur(e){const t=Object.create(null);for(const s of e.split(","))t[s]=1;return s=>s in t}const Q={},At=[],Ge=()=>{},Sn=()=>!1,Ts=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),As=e=>e.startsWith("onUpdate:"),fe=Object.assign,fr=(e,t)=>{const s=e.indexOf(t);s>-1&&e.splice(s,1)},Vo=Object.prototype.hasOwnProperty,B=(e,t)=>Vo.call(e,t),P=Array.isArray,Et=e=>rs(e)==="[object Map]",Tn=e=>rs(e)==="[object Set]",Nr=e=>rs(e)==="[object Date]",F=e=>typeof e=="function",se=e=>typeof e=="string",Le=e=>typeof e=="symbol",J=e=>e!==null&&typeof e=="object",An=e=>(J(e)||F(e))&&F(e.then)&&F(e.catch),En=Object.prototype.toString,rs=e=>En.call(e),Bo=e=>rs(e).slice(8,-1),$n=e=>rs(e)==="[object Object]",dr=e=>se(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,Ut=ur(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Es=e=>{const t=Object.create(null);return(s=>t[s]||(t[s]=e(s)))},Wo=/-\w/g,xe=Es(e=>e.replace(Wo,t=>t.slice(1).toUpperCase())),Uo=/\B([A-Z])/g,_t=Es(e=>e.replace(Uo,"-$1").toLowerCase()),$s=Es(e=>e.charAt(0).toUpperCase()+e.slice(1)),Fs=Es(e=>e?`on${$s(e)}`:""),st=(e,t)=>!Object.is(e,t),Ls=(e,...t)=>{for(let s=0;s{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:r,value:s})},Go=e=>{const t=parseFloat(e);return isNaN(t)?e:t};let Fr;const Rs=()=>Fr||(Fr=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function pr(e){if(P(e)){const t={};for(let s=0;s{if(s){const r=s.split(qo);r.length>1&&(t[r[0].trim()]=r[1].trim())}}),t}function hr(e){let t="";if(se(e))t=e;else if(P(e))for(let s=0;s!!(e&&e.__v_isRef===!0),St=e=>se(e)?e:e==null?"":P(e)||J(e)&&(e.toString===En||!F(e.toString))?Mn(e)?St(e.value):JSON.stringify(e,Pn,2):String(e),Pn=(e,t)=>Mn(t)?Pn(e,t.value):Et(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((s,[r,n],o)=>(s[js(r,o)+" =>"]=n,s),{})}:Tn(t)?{[`Set(${t.size})`]:[...t.values()].map(s=>js(s))}:Le(t)?js(t):J(t)&&!P(t)&&!$n(t)?String(t):t,js=(e,t="")=>{var s;return Le(e)?`Symbol(${(s=e.description)!=null?s:t})`:e};/** -* @vue/reactivity v3.5.39 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/let ue;class ti{constructor(t=!1){this.detached=t,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this._warnOnRun=!0,this.__v_skip=!0,!t&&ue&&(ue.active?(this.parent=ue,this.index=(ue.scopes||(ue.scopes=[])).push(this)-1):(this._active=!1,this._warnOnRun=!1))}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,s;if(this.scopes)for(t=0,s=this.scopes.length;t0&&--this._on===0){if(ue===this)ue=this.prevScope;else{let t=ue;for(;t;){if(t.prevScope===this){t.prevScope=this.prevScope;break}t=t.prevScope}}this.prevScope=void 0}}stop(t){if(this._active){this._active=!1;let s,r;for(s=0,r=this.effects.length;s0)return;if(Jt){let t=Jt;for(Jt=void 0;t;){const s=t.next;t.next=void 0,t.flags&=-9,t=s}}let e;for(;Gt;){let t=Gt;for(Gt=void 0;t;){const s=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(r){e||(e=r)}t=s}}if(e)throw e}function Fn(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function Ln(e){let t,s=e.depsTail,r=s;for(;r;){const n=r.prevDep;r.version===-1?(r===s&&(s=n),yr(r),ri(r)):t=r,r.dep.activeLink=r.prevActiveLink,r.prevActiveLink=void 0,r=n}e.deps=t,e.depsTail=s}function Xs(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(jn(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function jn(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===Zt)||(e.globalVersion=Zt,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!Xs(e))))return;e.flags|=2;const t=e.dep,s=Z,r=Ne;Z=e,Ne=!0;try{Fn(e);const n=e.fn(e._value);(t.version===0||st(n,e._value))&&(e.flags|=128,e._value=n,t.version++)}catch(n){throw t.version++,n}finally{Z=s,Ne=r,Ln(e),e.flags&=-3}}function yr(e,t=!1){const{dep:s,prevSub:r,nextSub:n}=e;if(r&&(r.nextSub=n,e.prevSub=void 0),n&&(n.prevSub=r,e.nextSub=void 0),s.subs===e&&(s.subs=r,!r&&s.computed)){s.computed.flags&=-5;for(let o=s.computed.deps;o;o=o.nextDep)yr(o,!0)}!t&&!--s.sc&&s.map&&s.map.delete(s.key)}function ri(e){const{prevDep:t,nextDep:s}=e;t&&(t.nextDep=s,e.prevDep=void 0),s&&(s.prevDep=t,e.nextDep=void 0)}let Ne=!0;const Dn=[];function Je(){Dn.push(Ne),Ne=!1}function qe(){const e=Dn.pop();Ne=e===void 0?!0:e}function Lr(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const s=Z;Z=void 0;try{t()}finally{Z=s}}}let Zt=0;class ni{constructor(t,s){this.sub=t,this.dep=s,this.version=s.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class zn{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.__v_skip=!0}track(t){if(!Z||!Ne||Z===this.computed)return;let s=this.activeLink;if(s===void 0||s.sub!==Z)s=this.activeLink=new ni(Z,this),Z.deps?(s.prevDep=Z.depsTail,Z.depsTail.nextDep=s,Z.depsTail=s):Z.deps=Z.depsTail=s,Kn(s);else if(s.version===-1&&(s.version=this.version,s.nextDep)){const r=s.nextDep;r.prevDep=s.prevDep,s.prevDep&&(s.prevDep.nextDep=r),s.prevDep=Z.depsTail,s.nextDep=void 0,Z.depsTail.nextDep=s,Z.depsTail=s,Z.deps===s&&(Z.deps=r)}return s}trigger(t){this.version++,Zt++,this.notify(t)}notify(t){br();try{for(let s=this.subs;s;s=s.prevSub)s.sub.notify()&&s.sub.dep.notify()}finally{mr()}}}function Kn(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let r=t.deps;r;r=r.nextDep)Kn(r)}const s=e.dep.subs;s!==e&&(e.prevSub=s,s&&(s.nextSub=e)),e.dep.subs=e}}const Zs=new WeakMap,yt=Symbol(""),Qs=Symbol(""),Qt=Symbol("");function de(e,t,s){if(Ne&&Z){let r=Zs.get(e);r||Zs.set(e,r=new Map);let n=r.get(s);n||(r.set(s,n=new zn),n.map=r,n.key=s),n.track()}}function rt(e,t,s,r,n,o){const i=Zs.get(e);if(!i){Zt++;return}const l=c=>{c&&c.trigger()};if(br(),t==="clear")i.forEach(l);else{const c=P(e),d=c&&dr(s);if(c&&s==="length"){const f=Number(r);i.forEach((h,_)=>{(_==="length"||_===Qt||!Le(_)&&_>=f)&&l(h)})}else switch((s!==void 0||i.has(void 0))&&l(i.get(s)),d&&l(i.get(Qt)),t){case"add":c?d&&l(i.get("length")):(l(i.get(yt)),Et(e)&&l(i.get(Qs)));break;case"delete":c||(l(i.get(yt)),Et(e)&&l(i.get(Qs)));break;case"set":Et(e)&&l(i.get(yt));break}}mr()}function Ct(e){const t=G(e);return t===e?t:(de(t,"iterate",Qt),Fe(e)?t:t.map(nt))}function Os(e){return de(e=G(e),"iterate",Qt),e}function We(e,t){return dt(e)?Pt(vt(e)?nt(t):t):nt(t)}const oi={__proto__:null,[Symbol.iterator](){return zs(this,Symbol.iterator,e=>We(this,e))},concat(...e){return Ct(this).concat(...e.map(t=>P(t)?Ct(t):t))},entries(){return zs(this,"entries",e=>(e[1]=We(this,e[1]),e))},every(e,t){return Ze(this,"every",e,t,void 0,arguments)},filter(e,t){return Ze(this,"filter",e,t,s=>s.map(r=>We(this,r)),arguments)},find(e,t){return Ze(this,"find",e,t,s=>We(this,s),arguments)},findIndex(e,t){return Ze(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return Ze(this,"findLast",e,t,s=>We(this,s),arguments)},findLastIndex(e,t){return Ze(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return Ze(this,"forEach",e,t,void 0,arguments)},includes(...e){return Ks(this,"includes",e)},indexOf(...e){return Ks(this,"indexOf",e)},join(e){return Ct(this).join(e)},lastIndexOf(...e){return Ks(this,"lastIndexOf",e)},map(e,t){return Ze(this,"map",e,t,void 0,arguments)},pop(){return Dt(this,"pop")},push(...e){return Dt(this,"push",e)},reduce(e,...t){return jr(this,"reduce",e,t)},reduceRight(e,...t){return jr(this,"reduceRight",e,t)},shift(){return Dt(this,"shift")},some(e,t){return Ze(this,"some",e,t,void 0,arguments)},splice(...e){return Dt(this,"splice",e)},toReversed(){return Ct(this).toReversed()},toSorted(e){return Ct(this).toSorted(e)},toSpliced(...e){return Ct(this).toSpliced(...e)},unshift(...e){return Dt(this,"unshift",e)},values(){return zs(this,"values",e=>We(this,e))}};function zs(e,t,s){const r=Os(e),n=r[t]();return r!==e&&!Fe(e)&&(n._next=n.next,n.next=()=>{const o=n._next();return o.done||(o.value=s(o.value)),o}),n}const ii=Array.prototype;function Ze(e,t,s,r,n,o){const i=Os(e),l=i!==e&&!Fe(e),c=i[t];if(c!==ii[t]){const h=c.apply(e,o);return l?nt(h):h}let d=s;i!==e&&(l?d=function(h,_){return s.call(this,We(e,h),_,e)}:s.length>2&&(d=function(h,_){return s.call(this,h,_,e)}));const f=c.call(i,d,r);return l&&n?n(f):f}function jr(e,t,s,r){const n=Os(e),o=n!==e&&!Fe(e);let i=s,l=!1;n!==e&&(o?(l=r.length===0,i=function(d,f,h){return l&&(l=!1,d=We(e,d)),s.call(this,d,We(e,f),h,e)}):s.length>3&&(i=function(d,f,h){return s.call(this,d,f,h,e)}));const c=n[t](i,...r);return l?We(e,c):c}function Ks(e,t,s){const r=G(e);de(r,"iterate",Qt);const n=r[t](...s);return(n===-1||n===!1)&&wr(s[0])?(s[0]=G(s[0]),r[t](...s)):n}function Dt(e,t,s=[]){Je(),br();const r=G(e)[t].apply(e,s);return mr(),qe(),r}const li=ur("__proto__,__v_isRef,__isVue"),Hn=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(Le));function ci(e){Le(e)||(e=String(e));const t=G(this);return de(t,"has",e),t.hasOwnProperty(e)}class Vn{constructor(t=!1,s=!1){this._isReadonly=t,this._isShallow=s}get(t,s,r){if(s==="__v_skip")return t.__v_skip;const n=this._isReadonly,o=this._isShallow;if(s==="__v_isReactive")return!n;if(s==="__v_isReadonly")return n;if(s==="__v_isShallow")return o;if(s==="__v_raw")return r===(n?o?yi:Gn:o?Un:Wn).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(r)?t:void 0;const i=P(t);if(!n){let c;if(i&&(c=oi[s]))return c;if(s==="hasOwnProperty")return ci}const l=Reflect.get(t,s,_e(t)?t:r);if((Le(s)?Hn.has(s):li(s))||(n||de(t,"get",s),o))return l;if(_e(l)){const c=i&&dr(s)?l:l.value;return n&&J(c)?tr(c):c}return J(l)?n?tr(l):xr(l):l}}class Bn extends Vn{constructor(t=!1){super(!1,t)}set(t,s,r,n){let o=t[s];const i=P(t)&&dr(s);if(!this._isShallow){const d=dt(o);if(!Fe(r)&&!dt(r)&&(o=G(o),r=G(r)),!i&&_e(o)&&!_e(r))return d||(o.value=r),!0}const l=i?Number(s)e,as=e=>Reflect.getPrototypeOf(e);function pi(e,t,s){return function(...r){const n=this.__v_raw,o=G(n),i=Et(o),l=e==="entries"||e===Symbol.iterator&&i,c=e==="keys"&&i,d=n[e](...r),f=s?er:t?Pt:nt;return!t&&de(o,"iterate",c?Qs:yt),fe(Object.create(d),{next(){const{value:h,done:_}=d.next();return _?{value:h,done:_}:{value:l?[f(h[0]),f(h[1])]:f(h),done:_}}})}}function us(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function hi(e,t){const s={get(n){const o=this.__v_raw,i=G(o),l=G(n);e||(st(n,l)&&de(i,"get",n),de(i,"get",l));const{has:c}=as(i),d=t?er:e?Pt:nt;if(c.call(i,n))return d(o.get(n));if(c.call(i,l))return d(o.get(l));o!==i&&o.get(n)},get size(){const n=this.__v_raw;return!e&&de(G(n),"iterate",yt),n.size},has(n){const o=this.__v_raw,i=G(o),l=G(n);return e||(st(n,l)&&de(i,"has",n),de(i,"has",l)),n===l?o.has(n):o.has(n)||o.has(l)},forEach(n,o){const i=this,l=i.__v_raw,c=G(l),d=t?er:e?Pt:nt;return!e&&de(c,"iterate",yt),l.forEach((f,h)=>n.call(o,d(f),d(h),i))}};return fe(s,e?{add:us("add"),set:us("set"),delete:us("delete"),clear:us("clear")}:{add(n){const o=G(this),i=as(o),l=G(n),c=!t&&!Fe(n)&&!dt(n)?l:n;return i.has.call(o,c)||st(n,c)&&i.has.call(o,n)||st(l,c)&&i.has.call(o,l)||(o.add(c),rt(o,"add",c,c)),this},set(n,o){!t&&!Fe(o)&&!dt(o)&&(o=G(o));const i=G(this),{has:l,get:c}=as(i);let d=l.call(i,n);d||(n=G(n),d=l.call(i,n));const f=c.call(i,n);return i.set(n,o),d?st(o,f)&&rt(i,"set",n,o):rt(i,"add",n,o),this},delete(n){const o=G(this),{has:i,get:l}=as(o);let c=i.call(o,n);c||(n=G(n),c=i.call(o,n)),l&&l.call(o,n);const d=o.delete(n);return c&&rt(o,"delete",n,void 0),d},clear(){const n=G(this),o=n.size!==0,i=n.clear();return o&&rt(n,"clear",void 0,void 0),i}}),["keys","values","entries",Symbol.iterator].forEach(n=>{s[n]=pi(n,e,t)}),s}function vr(e,t){const s=hi(e,t);return(r,n,o)=>n==="__v_isReactive"?!e:n==="__v_isReadonly"?e:n==="__v_raw"?r:Reflect.get(B(s,n)&&n in r?s:r,n,o)}const gi={get:vr(!1,!1)},bi={get:vr(!1,!0)},mi={get:vr(!0,!1)};const Wn=new WeakMap,Un=new WeakMap,Gn=new WeakMap,yi=new WeakMap;function vi(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function xr(e){return dt(e)?e:_r(e,!1,ui,gi,Wn)}function xi(e){return _r(e,!1,di,bi,Un)}function tr(e){return _r(e,!0,fi,mi,Gn)}function _r(e,t,s,r,n){if(!J(e)||e.__v_raw&&!(t&&e.__v_isReactive)||e.__v_skip||!Object.isExtensible(e))return e;const o=n.get(e);if(o)return o;const i=vi(Bo(e));if(i===0)return e;const l=new Proxy(e,i===2?r:s);return n.set(e,l),l}function vt(e){return dt(e)?vt(e.__v_raw):!!(e&&e.__v_isReactive)}function dt(e){return!!(e&&e.__v_isReadonly)}function Fe(e){return!!(e&&e.__v_isShallow)}function wr(e){return e?!!e.__v_raw:!1}function G(e){const t=e&&e.__v_raw;return t?G(t):e}function _i(e){return!B(e,"__v_skip")&&Object.isExtensible(e)&&Rn(e,"__v_skip",!0),e}const nt=e=>J(e)?xr(e):e,Pt=e=>J(e)?tr(e):e;function _e(e){return e?e.__v_isRef===!0:!1}function k(e){return _e(e)?e.value:e}const wi={get:(e,t,s)=>t==="__v_raw"?e:k(Reflect.get(e,t,s)),set:(e,t,s,r)=>{const n=e[t];return _e(n)&&!_e(s)?(n.value=s,!0):Reflect.set(e,t,s,r)}};function Jn(e){return vt(e)?e:new Proxy(e,wi)}class Ci{constructor(t,s,r){this.fn=t,this.setter=s,this._value=void 0,this.dep=new zn(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=Zt-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!s,this.isSSR=r}notify(){if(this.flags|=16,!(this.flags&8)&&Z!==this)return Nn(this,!0),!0}get value(){const t=this.dep.track();return jn(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function Si(e,t,s=!1){let r,n;return F(e)?r=e:(r=e.get,n=e.set),new Ci(r,n,s)}const fs={},ys=new WeakMap;let mt;function Ti(e,t=!1,s=mt){if(s){let r=ys.get(s);r||ys.set(s,r=[]),r.push(e)}}function Ai(e,t,s=Q){const{immediate:r,deep:n,once:o,scheduler:i,augmentJob:l,call:c}=s,d=E=>n?E:Fe(E)||n===!1||n===0?ft(E,1):ft(E);let f,h,_,S,z=!1,T=!1;if(_e(e)?(h=()=>e.value,z=Fe(e)):vt(e)?(h=()=>d(e),z=!0):P(e)?(T=!0,z=e.some(E=>vt(E)||Fe(E)),h=()=>e.map(E=>{if(_e(E))return E.value;if(vt(E))return d(E);if(F(E))return c?c(E,2):E()})):F(e)?t?h=c?()=>c(e,2):e:h=()=>{if(_){Je();try{_()}finally{qe()}}const E=mt;mt=f;try{return c?c(e,3,[S]):e(S)}finally{mt=E}}:h=Ge,t&&n){const E=h,te=n===!0?1/0:n;h=()=>ft(E(),te)}const I=si(),L=()=>{f.stop(),I&&I.active&&fr(I.effects,f)};if(o&&t){const E=t;t=(...te)=>{const Ae=E(...te);return L(),Ae}}let M=T?new Array(e.length).fill(fs):fs;const H=E=>{if(!(!(f.flags&1)||!f.dirty&&!E))if(t){const te=f.run();if(E||n||z||(T?te.some((Ae,Ee)=>st(Ae,M[Ee])):st(te,M))){_&&_();const Ae=mt;mt=f;try{const Ee=[te,M===fs?void 0:T&&M[0]===fs?[]:M,S];M=te,c?c(t,3,Ee):t(...Ee)}finally{mt=Ae}}}else f.run()};return l&&l(H),f=new In(h),f.scheduler=i?()=>i(H,!1):H,S=E=>Ti(E,!1,f),_=f.onStop=()=>{const E=ys.get(f);if(E){if(c)c(E,4);else for(const te of E)te();ys.delete(f)}},t?r?H(!0):M=f.run():i?i(H.bind(null,!0),!0):f.run(),L.pause=f.pause.bind(f),L.resume=f.resume.bind(f),L.stop=L,L}function ft(e,t=1/0,s){if(t<=0||!J(e)||e.__v_skip||(s=s||new Map,(s.get(e)||0)>=t))return e;if(s.set(e,t),t--,_e(e))ft(e.value,t,s);else if(P(e))for(let r=0;r{ft(r,t,s)});else if($n(e)){for(const r in e)ft(e[r],t,s);for(const r of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,r)&&ft(e[r],t,s)}return e}/** -* @vue/runtime-core v3.5.39 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/function ns(e,t,s,r){try{return r?e(...r):e()}catch(n){Ms(n,t,s)}}function je(e,t,s,r){if(F(e)){const n=ns(e,t,s,r);return n&&An(n)&&n.catch(o=>{Ms(o,t,s)}),n}if(P(e)){const n=[];for(let o=0;o>>1,n=ye[r],o=es(n);o=es(s)?ye.push(e):ye.splice(Ri(t),0,e),e.flags|=1,Yn()}}function Yn(){vs||(vs=qn.then(Zn))}function Oi(e){P(e)?$t.push(...e):ut&&e.id===-1?ut.splice(Tt+1,0,e):e.flags&1||($t.push(e),e.flags|=1),Yn()}function Dr(e,t,s=Be+1){for(;ses(s)-es(r));if($t.length=0,ut){ut.push(...t);return}for(ut=t,Tt=0;Tte.id==null?e.flags&2?-1:1/0:e.id;function Zn(e){try{for(Be=0;Be{r._d&&Zr(-1);const o=xs(t);let i;try{i=e(...n)}finally{xs(o),r._d&&Zr(1)}return i};return r._n=!0,r._c=!0,r._d=!0,r}function gt(e,t,s,r){const n=e.dirs,o=t&&t.dirs;for(let i=0;i1)return s&&F(t)?t.call(r&&r.proxy):t}}const Pi=Symbol.for("v-scx"),Ii=()=>bs(Pi);function Hs(e,t,s){return eo(e,t,s)}function eo(e,t,s=Q){const{immediate:r,deep:n,flush:o,once:i}=s,l=fe({},s),c=t&&r||!t&&o!=="post";let d;if(ss){if(o==="sync"){const S=Ii();d=S.__watcherHandles||(S.__watcherHandles=[])}else if(!c){const S=()=>{};return S.stop=Ge,S.resume=Ge,S.pause=Ge,S}}const f=pe;l.call=(S,z,T)=>je(S,f,z,T);let h=!1;o==="post"?l.scheduler=S=>{Se(S,f&&f.suspense)}:o!=="sync"&&(h=!0,l.scheduler=(S,z)=>{z?S():Cr(S)}),l.augmentJob=S=>{t&&(S.flags|=4),h&&(S.flags|=2,f&&(S.id=f.uid,S.i=f))};const _=Ai(e,t,l);return ss&&(d?d.push(_):c&&_()),_}function ki(e,t,s){const r=this.proxy,n=se(e)?e.includes(".")?to(r,e):()=>r[e]:e.bind(r,r);let o;F(t)?o=t:(o=t.handler,s=t);const i=os(this),l=eo(n,o.bind(r),s);return i(),l}function to(e,t){const s=t.split(".");return()=>{let r=e;for(let n=0;ne.__isTeleport,Vs=Symbol("_leaveCb");function Sr(e,t){e.shapeFlag&6&&e.component?(e.transition=t,Sr(e.component.subTree,t)):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function he(e,t){return F(e)?fe({name:e.name},t,{setup:e}):e}function so(e){e.ids=[e.ids[0]+e.ids[2]+++"-",0,0]}function zr(e,t){let s;return!!((s=Object.getOwnPropertyDescriptor(e,t))&&!s.configurable)}const _s=new WeakMap;function qt(e,t,s,r,n=!1){if(P(e)){e.forEach((T,I)=>qt(T,t&&(P(t)?t[I]:t),s,r,n));return}if(Rt(r)&&!n){r.shapeFlag&512&&r.type.__asyncResolved&&r.component.subTree.component&&qt(e,t,s,r.component.subTree);return}const o=r.shapeFlag&4?$r(r.component):r.el,i=n?null:o,{i:l,r:c}=e,d=t&&t.r,f=l.refs===Q?l.refs={}:l.refs,h=l.setupState,_=G(h),S=h===Q?Sn:T=>zr(f,T)?!1:B(_,T),z=(T,I)=>!(I&&zr(f,I));if(d!=null&&d!==c){if(Kr(t),se(d))f[d]=null,S(d)&&(h[d]=null);else if(_e(d)){const T=t;z(d,T.k)&&(d.value=null),T.k&&(f[T.k]=null)}}if(F(c)){Je();try{ns(c,l,12,[i,f])}finally{qe()}}else{const T=se(c),I=_e(c);if(T||I){const L=()=>{if(e.f){const M=T?S(c)?h[c]:f[c]:z()||!e.k?c.value:f[e.k];if(n)P(M)&&fr(M,o);else if(P(M))M.includes(o)||M.push(o);else if(T)f[c]=[o],S(c)&&(h[c]=f[c]);else{const H=[o];z(c,e.k)&&(c.value=H),e.k&&(f[e.k]=H)}}else T?(f[c]=i,S(c)&&(h[c]=i)):I&&(z(c,e.k)&&(c.value=i),e.k&&(f[e.k]=i))};if(i){const M=()=>{L(),_s.delete(e)};M.id=-1,_s.set(e,M),Se(M,s)}else Kr(e),L()}}}function Kr(e){const t=_s.get(e);t&&(t.flags|=8,_s.delete(e))}Rs().requestIdleCallback;Rs().cancelIdleCallback;const Rt=e=>!!e.type.__asyncLoader,ro=e=>e.type.__isKeepAlive;function Li(e,t){no(e,"a",t)}function ji(e,t){no(e,"da",t)}function no(e,t,s=pe){const r=e.__wdc||(e.__wdc=()=>{let n=s;for(;n;){if(n.isDeactivated)return;n=n.parent}return e()});if(Ps(t,r,s),s){let n=s.parent;for(;n&&n.parent;)ro(n.parent.vnode)&&Di(r,t,s,n),n=n.parent}}function Di(e,t,s,r){const n=Ps(t,e,r,!0);oo(()=>{fr(r[t],n)},s)}function Ps(e,t,s=pe,r=!1){if(s){const n=s[e]||(s[e]=[]),o=t.__weh||(t.__weh=(...i)=>{Je();const l=os(s),c=je(t,s,e,i);return l(),qe(),c});return r?n.unshift(o):n.push(o),o}}const ot=e=>(t,s=pe)=>{(!ss||e==="sp")&&Ps(e,(...r)=>t(...r),s)},zi=ot("bm"),Ki=ot("m"),Hi=ot("bu"),Vi=ot("u"),Bi=ot("bum"),oo=ot("um"),Wi=ot("sp"),Ui=ot("rtg"),Gi=ot("rtc");function Ji(e,t=pe){Ps("ec",e,t)}const qi="components",io=Symbol.for("v-ndc");function wt(e){return se(e)?Yi(qi,e,!1)||e:e||io}function Yi(e,t,s=!0,r=!1){const n=ve||pe;if(n){const o=n.type;{const l=Il(o,!1);if(l&&(l===t||l===xe(t)||l===$s(xe(t))))return o}const i=Hr(n[e]||o[e],t)||Hr(n.appContext[e],t);return!i&&r?o:i}}function Hr(e,t){return e&&(e[t]||e[xe(t)]||e[$s(xe(t))])}function Vr(e,t,s,r){let n;const o=s,i=P(e);if(i||se(e)){const l=i&&vt(e);let c=!1,d=!1;l&&(c=!Fe(e),d=dt(e),e=Os(e)),n=new Array(e.length);for(let f=0,h=e.length;ft(l,c,void 0,o));else{const l=Object.keys(e);n=new Array(l.length);for(let c=0,d=l.length;c0;return re(),Me(Te,null,[D("slot",s,r)],d?-2:64)}let o=e[t];o&&o._c&&(o._d=!1),re();const i=o&&lo(o(s)),l=s.key||i&&i.key,c=Me(Te,{key:(l&&!Le(l)?l:`_${t}`)+(!i&&r?"_fb":"")},i||[],i&&e._===1?64:-2);return c.scopeId&&(c.slotScopeIds=[c.scopeId+"-s"]),o&&o._c&&(o._d=!0),c}function lo(e){return e.some(t=>Er(t)?!(t.type===xt||t.type===Te&&!lo(t.children)):!0)?e:null}const sr=e=>e?Oo(e)?$r(e):sr(e.parent):null,Yt=fe(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>sr(e.parent),$root:e=>sr(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>ao(e),$forceUpdate:e=>e.f||(e.f=()=>{Cr(e.update)}),$nextTick:e=>e.n||(e.n=$i.bind(e.proxy)),$watch:e=>ki.bind(e)}),Bs=(e,t)=>e!==Q&&!e.__isScriptSetup&&B(e,t),Xi={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:s,setupState:r,data:n,props:o,accessCache:i,type:l,appContext:c}=e;if(t[0]!=="$"){const _=i[t];if(_!==void 0)switch(_){case 1:return r[t];case 2:return n[t];case 4:return s[t];case 3:return o[t]}else{if(Bs(r,t))return i[t]=1,r[t];if(n!==Q&&B(n,t))return i[t]=2,n[t];if(B(o,t))return i[t]=3,o[t];if(s!==Q&&B(s,t))return i[t]=4,s[t];rr&&(i[t]=0)}}const d=Yt[t];let f,h;if(d)return t==="$attrs"&&de(e.attrs,"get",""),d(e);if((f=l.__cssModules)&&(f=f[t]))return f;if(s!==Q&&B(s,t))return i[t]=4,s[t];if(h=c.config.globalProperties,B(h,t))return h[t]},set({_:e},t,s){const{data:r,setupState:n,ctx:o}=e;return Bs(n,t)?(n[t]=s,!0):r!==Q&&B(r,t)?(r[t]=s,!0):B(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(o[t]=s,!0)},has({_:{data:e,setupState:t,accessCache:s,ctx:r,appContext:n,props:o,type:i}},l){let c;return!!(s[l]||e!==Q&&l[0]!=="$"&&B(e,l)||Bs(t,l)||B(o,l)||B(r,l)||B(Yt,l)||B(n.config.globalProperties,l)||(c=i.__cssModules)&&c[l])},defineProperty(e,t,s){return s.get!=null?e._.accessCache[t]=0:B(s,"value")&&this.set(e,t,s.value,null),Reflect.defineProperty(e,t,s)}};function Ce(){return Zi().attrs}function Zi(e){const t=Ro();return t.setupContext||(t.setupContext=Po(t))}function Br(e){return P(e)?e.reduce((t,s)=>(t[s]=null,t),{}):e}let rr=!0;function Qi(e){const t=ao(e),s=e.proxy,r=e.ctx;rr=!1,t.beforeCreate&&Wr(t.beforeCreate,e,"bc");const{data:n,computed:o,methods:i,watch:l,provide:c,inject:d,created:f,beforeMount:h,mounted:_,beforeUpdate:S,updated:z,activated:T,deactivated:I,beforeDestroy:L,beforeUnmount:M,destroyed:H,unmounted:E,render:te,renderTracked:Ae,renderTriggered:Ee,errorCaptured:Ie,serverPrefetch:it,expose:ke,inheritAttrs:Xe,components:W,directives:pt,filters:lt}=t;if(d&&el(d,r,null),i)for(const Y in i){const V=i[Y];F(V)&&(r[Y]=V.bind(s))}if(n){const Y=n.call(s,s);J(Y)&&(e.data=xr(Y))}if(rr=!0,o)for(const Y in o){const V=o[Y],$e=F(V)?V.bind(s,s):F(V.get)?V.get.bind(s,s):Ge,ht=!F(V)&&F(V.set)?V.set.bind(s):Ge,ce=A({get:$e,set:ht});Object.defineProperty(r,Y,{enumerable:!0,configurable:!0,get:()=>ce.value,set:De=>ce.value=De})}if(l)for(const Y in l)co(l[Y],r,s,Y);if(c){const Y=F(c)?c.call(s):c;Reflect.ownKeys(Y).forEach(V=>{Mi(V,Y[V])})}f&&Wr(f,e,"c");function ne(Y,V){P(V)?V.forEach($e=>Y($e.bind(s))):V&&Y(V.bind(s))}if(ne(zi,h),ne(Ki,_),ne(Hi,S),ne(Vi,z),ne(Li,T),ne(ji,I),ne(Ji,Ie),ne(Gi,Ae),ne(Ui,Ee),ne(Bi,M),ne(oo,E),ne(Wi,it),P(ke))if(ke.length){const Y=e.exposed||(e.exposed={});ke.forEach(V=>{Object.defineProperty(Y,V,{get:()=>s[V],set:$e=>s[V]=$e,enumerable:!0})})}else e.exposed||(e.exposed={});te&&e.render===Ge&&(e.render=te),Xe!=null&&(e.inheritAttrs=Xe),W&&(e.components=W),pt&&(e.directives=pt),it&&so(e)}function el(e,t,s=Ge){P(e)&&(e=nr(e));for(const r in e){const n=e[r];let o;J(n)?"default"in n?o=bs(n.from||r,n.default,!0):o=bs(n.from||r):o=bs(n),_e(o)?Object.defineProperty(t,r,{enumerable:!0,configurable:!0,get:()=>o.value,set:i=>o.value=i}):t[r]=o}}function Wr(e,t,s){je(P(e)?e.map(r=>r.bind(t.proxy)):e.bind(t.proxy),t,s)}function co(e,t,s,r){let n=r.includes(".")?to(s,r):()=>s[r];if(se(e)){const o=t[e];F(o)&&Hs(n,o)}else if(F(e))Hs(n,e.bind(s));else if(J(e))if(P(e))e.forEach(o=>co(o,t,s,r));else{const o=F(e.handler)?e.handler.bind(s):t[e.handler];F(o)&&Hs(n,o,e)}}function ao(e){const t=e.type,{mixins:s,extends:r}=t,{mixins:n,optionsCache:o,config:{optionMergeStrategies:i}}=e.appContext,l=o.get(t);let c;return l?c=l:!n.length&&!s&&!r?c=t:(c={},n.length&&n.forEach(d=>ws(c,d,i,!0)),ws(c,t,i)),J(t)&&o.set(t,c),c}function ws(e,t,s,r=!1){const{mixins:n,extends:o}=t;o&&ws(e,o,s,!0),n&&n.forEach(i=>ws(e,i,s,!0));for(const i in t)if(!(r&&i==="expose")){const l=tl[i]||s&&s[i];e[i]=l?l(e[i],t[i]):t[i]}return e}const tl={data:Ur,props:Gr,emits:Gr,methods:Bt,computed:Bt,beforeCreate:me,created:me,beforeMount:me,mounted:me,beforeUpdate:me,updated:me,beforeDestroy:me,beforeUnmount:me,destroyed:me,unmounted:me,activated:me,deactivated:me,errorCaptured:me,serverPrefetch:me,components:Bt,directives:Bt,watch:rl,provide:Ur,inject:sl};function Ur(e,t){return t?e?function(){return fe(F(e)?e.call(this,this):e,F(t)?t.call(this,this):t)}:t:e}function sl(e,t){return Bt(nr(e),nr(t))}function nr(e){if(P(e)){const t={};for(let s=0;st==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${xe(t)}Modifiers`]||e[`${_t(t)}Modifiers`];function ll(e,t,...s){if(e.isUnmounted)return;const r=e.vnode.props||Q;let n=s;const o=t.startsWith("update:"),i=o&&il(r,t.slice(7));i&&(i.trim&&(n=s.map(f=>se(f)?f.trim():f)),i.number&&(n=s.map(Go)));let l,c=r[l=Fs(t)]||r[l=Fs(xe(t))];!c&&o&&(c=r[l=Fs(_t(t))]),c&&je(c,e,6,n);const d=r[l+"Once"];if(d){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,je(d,e,6,n)}}const cl=new WeakMap;function fo(e,t,s=!1){const r=s?cl:t.emitsCache,n=r.get(e);if(n!==void 0)return n;const o=e.emits;let i={},l=!1;if(!F(e)){const c=d=>{const f=fo(d,t,!0);f&&(l=!0,fe(i,f))};!s&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}return!o&&!l?(J(e)&&r.set(e,null),null):(P(o)?o.forEach(c=>i[c]=null):fe(i,o),J(e)&&r.set(e,i),i)}function Is(e,t){return!e||!Ts(t)?!1:(t=t.slice(2),t=t==="Once"?t:t.replace(/Once$/,""),B(e,t[0].toLowerCase()+t.slice(1))||B(e,_t(t))||B(e,t))}function Jr(e){const{type:t,vnode:s,proxy:r,withProxy:n,propsOptions:[o],slots:i,attrs:l,emit:c,render:d,renderCache:f,props:h,data:_,setupState:S,ctx:z,inheritAttrs:T}=e,I=xs(e);let L,M;try{if(s.shapeFlag&4){const E=n||r,te=E;L=Ue(d.call(te,E,f,h,S,_,z)),M=l}else{const E=t;L=Ue(E.length>1?E(h,{attrs:l,slots:i,emit:c}):E(h,null)),M=t.props?l:al(l)}}catch(E){Xt.length=0,Ms(E,e,1),L=D(xt)}let H=L;if(M&&T!==!1){const E=Object.keys(M),{shapeFlag:te}=H;E.length&&te&7&&(o&&E.some(As)&&(M=ul(M,o)),H=It(H,M,!1,!0))}return s.dirs&&(H=It(H,null,!1,!0),H.dirs=H.dirs?H.dirs.concat(s.dirs):s.dirs),s.transition&&Sr(H,s.transition),L=H,xs(I),L}const al=e=>{let t;for(const s in e)(s==="class"||s==="style"||Ts(s))&&((t||(t={}))[s]=e[s]);return t},ul=(e,t)=>{const s={};for(const r in e)(!As(r)||!(r.slice(9)in t))&&(s[r]=e[r]);return s};function fl(e,t,s){const{props:r,children:n,component:o}=e,{props:i,children:l,patchFlag:c}=t,d=o.emitsOptions;if(t.dirs||t.transition)return!0;if(s&&c>=0){if(c&1024)return!0;if(c&16)return r?qr(r,i,d):!!i;if(c&8){const f=t.dynamicProps;for(let h=0;hObject.create(ho),bo=e=>Object.getPrototypeOf(e)===ho;function pl(e,t,s,r=!1){const n={},o=go();e.propsDefaults=Object.create(null),mo(e,t,n,o);for(const i in e.propsOptions[0])i in n||(n[i]=void 0);s?e.props=r?n:xi(n):e.type.props?e.props=n:e.props=o,e.attrs=o}function hl(e,t,s,r){const{props:n,attrs:o,vnode:{patchFlag:i}}=e,l=G(n),[c]=e.propsOptions;let d=!1;if((r||i>0)&&!(i&16)){if(i&8){const f=e.vnode.dynamicProps;for(let h=0;h{c=!0;const[_,S]=yo(h,t,!0);fe(i,_),S&&l.push(...S)};!s&&t.mixins.length&&t.mixins.forEach(f),e.extends&&f(e.extends),e.mixins&&e.mixins.forEach(f)}if(!o&&!c)return J(e)&&r.set(e,At),At;if(P(o))for(let f=0;fe==="_"||e==="_ctx"||e==="$stable",Ar=e=>P(e)?e.map(Ue):[Ue(e)],bl=(e,t,s)=>{if(t._n)return t;const r=N((...n)=>Ar(t(...n)),s);return r._c=!1,r},vo=(e,t,s)=>{const r=e._ctx;for(const n in e){if(Tr(n))continue;const o=e[n];if(F(o))t[n]=bl(n,o,r);else if(o!=null){const i=Ar(o);t[n]=()=>i}}},xo=(e,t)=>{const s=Ar(t);e.slots.default=()=>s},_o=(e,t,s)=>{for(const r in t)(s||!Tr(r))&&(e[r]=t[r])},ml=(e,t,s)=>{const r=e.slots=go();if(e.vnode.shapeFlag&32){const n=t._;n?(_o(r,t,s),s&&Rn(r,"_",n,!0)):vo(t,r)}else t&&xo(e,t)},yl=(e,t,s)=>{const{vnode:r,slots:n}=e;let o=!0,i=Q;if(r.shapeFlag&32){const l=t._;l?s&&l===1?o=!1:_o(n,t,s):(o=!t.$stable,vo(t,n)),i=t}else t&&(xo(e,t),i={default:1});if(o)for(const l in n)!Tr(l)&&i[l]==null&&delete n[l]},Se=Cl;function vl(e){return xl(e)}function xl(e,t){const s=Rs();s.__VUE__=!0;const{insert:r,remove:n,patchProp:o,createElement:i,createText:l,createComment:c,setText:d,setElementText:f,parentNode:h,nextSibling:_,setScopeId:S=Ge,insertStaticContent:z}=e,T=(a,u,p,y=null,m=null,g=null,w=void 0,x=null,v=!!u.dynamicChildren)=>{if(a===u)return;a&&!zt(a,u)&&(y=cs(a),De(a,m,g,!0),a=null),u.patchFlag===-2&&(v=!1,u.dynamicChildren=null);const{type:b,ref:R,shapeFlag:C}=u;switch(b){case ks:I(a,u,p,y);break;case xt:L(a,u,p,y);break;case Us:a==null&&M(u,p,y,w);break;case Te:W(a,u,p,y,m,g,w,x,v);break;default:C&1?te(a,u,p,y,m,g,w,x,v):C&6?pt(a,u,p,y,m,g,w,x,v):(C&64||C&128)&&b.process(a,u,p,y,m,g,w,x,v,Lt)}R!=null&&m?qt(R,a&&a.ref,g,u||a,!u):R==null&&a&&a.ref!=null&&qt(a.ref,null,g,a,!0)},I=(a,u,p,y)=>{if(a==null)r(u.el=l(u.children),p,y);else{const m=u.el=a.el;u.children!==a.children&&d(m,u.children)}},L=(a,u,p,y)=>{a==null?r(u.el=c(u.children||""),p,y):u.el=a.el},M=(a,u,p,y)=>{[a.el,a.anchor]=z(a.children,u,p,y,a.el,a.anchor)},H=({el:a,anchor:u},p,y)=>{let m;for(;a&&a!==u;)m=_(a),r(a,p,y),a=m;r(u,p,y)},E=({el:a,anchor:u})=>{let p;for(;a&&a!==u;)p=_(a),n(a),a=p;n(u)},te=(a,u,p,y,m,g,w,x,v)=>{if(u.type==="svg"?w="svg":u.type==="math"&&(w="mathml"),a==null)Ae(u,p,y,m,g,w,x,v);else{const b=a.el&&a.el._isVueCE?a.el:null;try{b&&b._beginPatch(),it(a,u,m,g,w,x,v)}finally{b&&b._endPatch()}}},Ae=(a,u,p,y,m,g,w,x)=>{let v,b;const{props:R,shapeFlag:C,transition:$,dirs:O}=a;if(v=a.el=i(a.type,g,R&&R.is,R),C&8?f(v,a.children):C&16&&Ie(a.children,v,null,y,m,Ws(a,g),w,x),O&>(a,null,y,"created"),Ee(v,a,a.scopeId,w,y),R){for(const q in R)q!=="value"&&!Ut(q)&&o(v,q,null,R[q],g,y);"value"in R&&o(v,"value",null,R.value,g),(b=R.onVnodeBeforeMount)&&Ve(b,y,a)}O&>(a,null,y,"beforeMount");const K=_l(m,$);K&&$.beforeEnter(v),r(v,u,p),((b=R&&R.onVnodeMounted)||K||O)&&Se(()=>{try{b&&Ve(b,y,a),K&&$.enter(v),O&>(a,null,y,"mounted")}finally{}},m)},Ee=(a,u,p,y,m)=>{if(p&&S(a,p),y)for(let g=0;g{for(let b=v;b{const x=u.el=a.el;let{patchFlag:v,dynamicChildren:b,dirs:R}=u;v|=a.patchFlag&16;const C=a.props||Q,$=u.props||Q;let O;if(p&&bt(p,!1),(O=$.onVnodeBeforeUpdate)&&Ve(O,p,u,a),R&>(u,a,p,"beforeUpdate"),p&&bt(p,!0),b&&(!a.dynamicChildren||a.dynamicChildren.length!==b.length)&&(v=0,w=!1,b=null),(C.innerHTML&&$.innerHTML==null||C.textContent&&$.textContent==null)&&f(x,""),b?ke(a.dynamicChildren,b,x,p,y,Ws(u,m),g):w||V(a,u,x,null,p,y,Ws(u,m),g,!1),v>0){if(v&16)Xe(x,C,$,p,m);else if(v&2&&C.class!==$.class&&o(x,"class",null,$.class,m),v&4&&o(x,"style",C.style,$.style,m),v&8){const K=u.dynamicProps;for(let q=0;q{O&&Ve(O,p,u,a),R&>(u,a,p,"updated")},y)},ke=(a,u,p,y,m,g,w)=>{for(let x=0;x{if(u!==p){if(u!==Q)for(const g in u)!Ut(g)&&!(g in p)&&o(a,g,u[g],null,m,y);for(const g in p){if(Ut(g))continue;const w=p[g],x=u[g];w!==x&&g!=="value"&&o(a,g,x,w,m,y)}"value"in p&&o(a,"value",u.value,p.value,m)}},W=(a,u,p,y,m,g,w,x,v)=>{const b=u.el=a?a.el:l(""),R=u.anchor=a?a.anchor:l("");let{patchFlag:C,dynamicChildren:$,slotScopeIds:O}=u;O&&(x=x?x.concat(O):O),a==null?(r(b,p,y),r(R,p,y),Ie(u.children||[],p,R,m,g,w,x,v)):C>0&&C&64&&$&&a.dynamicChildren&&a.dynamicChildren.length===$.length?(ke(a.dynamicChildren,$,p,m,g,w,x),(u.key!=null||m&&u===m.subTree)&&wo(a,u,!0)):V(a,u,p,R,m,g,w,x,v)},pt=(a,u,p,y,m,g,w,x,v)=>{u.slotScopeIds=x,a==null?u.shapeFlag&512?m.ctx.activate(u,p,y,w,v):lt(u,p,y,m,g,w,v):Nt(a,u,v)},lt=(a,u,p,y,m,g,w)=>{const x=a.component=Rl(a,y,m);if(ro(a)&&(x.ctx.renderer=Lt),Ol(x,!1,w),x.asyncDep){if(m&&m.registerDep(x,ne,w),!a.el){const v=x.subTree=D(xt);L(null,v,u,p),a.placeholder=v.el}}else ne(x,a,u,p,m,g,w)},Nt=(a,u,p)=>{const y=u.component=a.component;if(fl(a,u,p))if(y.asyncDep&&!y.asyncResolved){Y(y,u,p);return}else y.next=u,y.update();else u.el=a.el,y.vnode=u},ne=(a,u,p,y,m,g,w)=>{const x=()=>{if(a.isMounted){let{next:C,bu:$,u:O,parent:K,vnode:q}=a;{const Ke=Co(a);if(Ke){C&&(C.el=q.el,Y(a,C,w)),Ke.asyncDep.then(()=>{Se(()=>{a.isUnmounted||b()},m)});return}}let U=C,oe;bt(a,!1),C?(C.el=q.el,Y(a,C,w)):C=q,$&&Ls($),(oe=C.props&&C.props.onVnodeBeforeUpdate)&&Ve(oe,K,C,q),bt(a,!0);const ae=Jr(a),ze=a.subTree;a.subTree=ae,T(ze,ae,h(ze.el),cs(ze),a,m,g),C.el=ae.el,U===null&&dl(a,ae.el),O&&Se(O,m),(oe=C.props&&C.props.onVnodeUpdated)&&Se(()=>Ve(oe,K,C,q),m)}else{let C;const{el:$,props:O}=u,{bm:K,m:q,parent:U,root:oe,type:ae}=a,ze=Rt(u);bt(a,!1),K&&Ls(K),!ze&&(C=O&&O.onVnodeBeforeMount)&&Ve(C,U,u),bt(a,!0);{oe.ce&&oe.ce._hasShadowRoot()&&oe.ce._injectChildStyle(ae,a.parent?a.parent.type:void 0);const Ke=a.subTree=Jr(a);T(null,Ke,p,y,a,m,g),u.el=Ke.el}if(q&&Se(q,m),!ze&&(C=O&&O.onVnodeMounted)){const Ke=u;Se(()=>Ve(C,U,Ke),m)}(u.shapeFlag&256||U&&Rt(U.vnode)&&U.vnode.shapeFlag&256)&&a.a&&Se(a.a,m),a.isMounted=!0,u=p=y=null}};a.scope.on();const v=a.effect=new In(x);a.scope.off();const b=a.update=v.run.bind(v),R=a.job=v.runIfDirty.bind(v);R.i=a,R.id=a.uid,v.scheduler=()=>Cr(R),bt(a,!0),b()},Y=(a,u,p)=>{u.component=a;const y=a.vnode.props;a.vnode=u,a.next=null,hl(a,u.props,y,p),yl(a,u.children,p),Je(),Dr(a),qe()},V=(a,u,p,y,m,g,w,x,v=!1)=>{const b=a&&a.children,R=a?a.shapeFlag:0,C=u.children,{patchFlag:$,shapeFlag:O}=u;if($>0){if($&128){ht(b,C,p,y,m,g,w,x,v);return}else if($&256){$e(b,C,p,y,m,g,w,x,v);return}}O&8?(R&16&&Ft(b,m,g),C!==b&&f(p,C)):R&16?O&16?ht(b,C,p,y,m,g,w,x,v):Ft(b,m,g,!0):(R&8&&f(p,""),O&16&&Ie(C,p,y,m,g,w,x,v))},$e=(a,u,p,y,m,g,w,x,v)=>{a=a||At,u=u||At;const b=a.length,R=u.length,C=Math.min(b,R);let $;for($=0;$R?Ft(a,m,g,!0,!1,C):Ie(u,p,y,m,g,w,x,v,C)},ht=(a,u,p,y,m,g,w,x,v)=>{let b=0;const R=u.length;let C=a.length-1,$=R-1;for(;b<=C&&b<=$;){const O=a[b],K=u[b]=v?tt(u[b]):Ue(u[b]);if(zt(O,K))T(O,K,p,null,m,g,w,x,v);else break;b++}for(;b<=C&&b<=$;){const O=a[C],K=u[$]=v?tt(u[$]):Ue(u[$]);if(zt(O,K))T(O,K,p,null,m,g,w,x,v);else break;C--,$--}if(b>C){if(b<=$){const O=$+1,K=O$)for(;b<=C;)De(a[b],m,g,!0),b++;else{const O=b,K=b,q=new Map;for(b=K;b<=$;b++){const Re=u[b]=v?tt(u[b]):Ue(u[b]);Re.key!=null&&q.set(Re.key,b)}let U,oe=0;const ae=$-K+1;let ze=!1,Ke=0;const jt=new Array(ae);for(b=0;b=ae){De(Re,m,g,!0);continue}let He;if(Re.key!=null)He=q.get(Re.key);else for(U=K;U<=$;U++)if(jt[U-K]===0&&zt(Re,u[U])){He=U;break}He===void 0?De(Re,m,g,!0):(jt[He-K]=b+1,He>=Ke?Ke=He:ze=!0,T(Re,u[He],p,null,m,g,w,x,v),oe++)}const Pr=ze?wl(jt):At;for(U=Pr.length-1,b=ae-1;b>=0;b--){const Re=K+b,He=u[Re],Ir=u[Re+1],kr=Re+1{const{el:g,type:w,transition:x,children:v,shapeFlag:b}=a;if(b&6){ce(a.component.subTree,u,p,y);return}if(b&128){a.suspense.move(u,p,y);return}if(b&64){w.move(a,u,p,Lt);return}if(w===Te){r(g,u,p);for(let C=0;Cx.enter(g),m));else{const{leave:C,delayLeave:$,afterLeave:O}=x,K=()=>{a.ctx.isUnmounted?n(g):r(g,u,p)},q=()=>{const U=g._isLeaving||!!g[Vs];g._isLeaving&&g[Vs](!0),x.persisted&&!U?K():C(g,()=>{K(),O&&O()})};$?$(g,K,q):q()}else r(g,u,p)},De=(a,u,p,y=!1,m=!1)=>{const{type:g,props:w,ref:x,children:v,dynamicChildren:b,shapeFlag:R,patchFlag:C,dirs:$,cacheIndex:O,memo:K}=a;if(C===-2&&(m=!1),x!=null&&(Je(),qt(x,null,p,a,!0),qe()),O!=null&&(u.renderCache[O]=void 0),R&256){u.ctx.deactivate(a);return}const q=R&1&&$,U=!Rt(a);let oe;if(U&&(oe=w&&w.onVnodeBeforeUnmount)&&Ve(oe,u,a),R&6)Ho(a.component,p,y);else{if(R&128){a.suspense.unmount(p,y);return}q&>(a,null,u,"beforeUnmount"),R&64?a.type.remove(a,u,p,Lt,y):b&&!b.hasOnce&&(g!==Te||C>0&&C&64)?Ft(b,u,p,!1,!0):(g===Te&&C&384||!m&&R&16)&&Ft(v,u,p),y&&Or(a)}const ae=K!=null&&O==null;(U&&(oe=w&&w.onVnodeUnmounted)||q||ae)&&Se(()=>{oe&&Ve(oe,u,a),q&>(a,null,u,"unmounted"),ae&&(a.el=null)},p)},Or=a=>{const{type:u,el:p,anchor:y,transition:m}=a;if(u===Te){Ko(p,y);return}if(u===Us){E(a);return}const g=()=>{n(p),m&&!m.persisted&&m.afterLeave&&m.afterLeave()};if(a.shapeFlag&1&&m&&!m.persisted){const{leave:w,delayLeave:x}=m,v=()=>w(p,g);x?x(a.el,g,v):v()}else g()},Ko=(a,u)=>{let p;for(;a!==u;)p=_(a),n(a),a=p;n(u)},Ho=(a,u,p)=>{const{bum:y,scope:m,job:g,subTree:w,um:x,m:v,a:b}=a;Xr(v),Xr(b),y&&Ls(y),m.stop(),g&&(g.flags|=8,De(w,a,u,p)),x&&Se(x,u),Se(()=>{a.isUnmounted=!0},u)},Ft=(a,u,p,y=!1,m=!1,g=0)=>{for(let w=g;w{if(a.shapeFlag&6)return cs(a.component.subTree);if(a.shapeFlag&128)return a.suspense.next();const u=_(a.anchor||a.el),p=u&&u[Ni];return p?_(p):u};let Ns=!1;const Mr=(a,u,p)=>{let y;a==null?u._vnode&&(De(u._vnode,null,null,!0),y=u._vnode.component):T(u._vnode||null,a,u,null,null,null,p),u._vnode=a,Ns||(Ns=!0,Dr(y),Xn(),Ns=!1)},Lt={p:T,um:De,m:ce,r:Or,mt:lt,mc:Ie,pc:V,pbc:ke,n:cs,o:e};return{render:Mr,hydrate:void 0,createApp:ol(Mr)}}function Ws({type:e,props:t},s){return s==="svg"&&e==="foreignObject"||s==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:s}function bt({effect:e,job:t},s){s?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function _l(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function wo(e,t,s=!1){const r=e.children,n=t.children;if(P(r)&&P(n))for(let o=0;o>1,e[s[l]]0&&(t[r]=s[o-1]),s[o]=r)}}for(o=s.length,i=s[o-1];o-- >0;)s[o]=i,i=t[i];return s}function Co(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:Co(t)}function Xr(e){if(e)for(let t=0;te.__isSuspense;function Cl(e,t){t&&t.pendingBranch?P(e)?t.effects.push(...e):t.effects.push(e):Oi(e)}const Te=Symbol.for("v-fgt"),ks=Symbol.for("v-txt"),xt=Symbol.for("v-cmt"),Us=Symbol.for("v-stc"),Xt=[];let Oe=null;function re(e=!1){Xt.push(Oe=e?null:[])}function Sl(){Xt.pop(),Oe=Xt[Xt.length-1]||null}let ts=1;function Zr(e,t=!1){ts+=e,e<0&&Oe&&t&&(Oe.hasOnce=!0)}function Ao(e){return e.dynamicChildren=ts>0?Oe||At:null,Sl(),ts>0&&Oe&&Oe.push(e),e}function Ye(e,t,s,r,n,o){return Ao($o(e,t,s,r,n,o,!0))}function Me(e,t,s,r,n){return Ao(D(e,t,s,r,n,!0))}function Er(e){return e?e.__v_isVNode===!0:!1}function zt(e,t){return e.type===t.type&&e.key===t.key}const Eo=({key:e})=>e??null,ms=({ref:e,ref_key:t,ref_for:s})=>(typeof e=="number"&&(e=""+e),e!=null?se(e)||_e(e)||F(e)?{i:ve,r:e,k:t,f:!!s}:e:null);function $o(e,t=null,s=null,r=0,n=null,o=e===Te?0:1,i=!1,l=!1){const c={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Eo(t),ref:t&&ms(t),scopeId:Qn,slotScopeIds:null,children:s,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:o,patchFlag:r,dynamicProps:n,dynamicChildren:null,appContext:null,ctx:ve};return l?(Cs(c,s),o&128&&e.normalize(c)):s&&(c.shapeFlag|=se(s)?8:16),ts>0&&!i&&Oe&&(c.patchFlag>0||o&6)&&c.patchFlag!==32&&Oe.push(c),c}const D=Tl;function Tl(e,t=null,s=null,r=0,n=null,o=!1){if((!e||e===io)&&(e=xt),Er(e)){const l=It(e,t,!0);return s&&Cs(l,s),ts>0&&!o&&Oe&&(l.shapeFlag&6?Oe[Oe.indexOf(e)]=l:Oe.push(l)),l.patchFlag=-2,l}if(kl(e)&&(e=e.__vccOpts),t){t=Al(t);let{class:l,style:c}=t;l&&!se(l)&&(t.class=hr(l)),J(c)&&(wr(c)&&!P(c)&&(c=fe({},c)),t.style=pr(c))}const i=se(e)?1:To(e)?128:Fi(e)?64:J(e)?4:F(e)?2:0;return $o(e,t,s,r,n,i,o,!0)}function Al(e){return e?wr(e)||bo(e)?fe({},e):e:null}function It(e,t,s=!1,r=!1){const{props:n,ref:o,patchFlag:i,children:l,transition:c}=e,d=t?ge(n||{},t):n,f={__v_isVNode:!0,__v_skip:!0,type:e.type,props:d,key:d&&Eo(d),ref:t&&t.ref?s&&o?P(o)?o.concat(ms(t)):[o,ms(t)]:ms(t):o,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:l,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==Te?i===-1?16:i|16:i,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:c,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&It(e.ssContent),ssFallback:e.ssFallback&&It(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return c&&r&&Sr(f,c.clone(f)),f}function le(e=" ",t=0){return D(ks,null,e,t)}function Ue(e){return e==null||typeof e=="boolean"?D(xt):P(e)?D(Te,null,e.slice()):Er(e)?tt(e):D(ks,null,String(e))}function tt(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:It(e)}function Cs(e,t){let s=0;const{shapeFlag:r}=e;if(t==null)t=null;else if(P(t))s=16;else if(typeof t=="object")if(r&65){const n=t.default;n&&(n._c&&(n._d=!1),Cs(e,n()),n._c&&(n._d=!0));return}else{s=32;const n=t._;!n&&!bo(t)?t._ctx=ve:n===3&&ve&&(ve.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else if(F(t)){if(r&65){Cs(e,{default:t});return}t={default:t,_ctx:ve},s=32}else t=String(t),r&64?(s=16,t=[le(t)]):s=8;e.children=t,e.shapeFlag|=s}function ge(...e){const t={};for(let s=0;spe||ve;let Ss,ir;{const e=Rs(),t=(s,r)=>{let n;return(n=e[s])||(n=e[s]=[]),n.push(r),o=>{n.length>1?n.forEach(i=>i(o)):n[0](o)}};Ss=t("__VUE_INSTANCE_SETTERS__",s=>pe=s),ir=t("__VUE_SSR_SETTERS__",s=>ss=s)}const os=e=>{const t=pe;return Ss(e),e.scope.on(),()=>{e.scope.off(),Ss(t)}},Qr=()=>{pe&&pe.scope.off(),Ss(null)};function Oo(e){return e.vnode.shapeFlag&4}let ss=!1;function Ol(e,t=!1,s=!1){t&&ir(t);const{props:r,children:n}=e.vnode,o=Oo(e);pl(e,r,o,t),ml(e,n,s||t);const i=o?Ml(e,t):void 0;return t&&ir(!1),i}function Ml(e,t){const s=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,Xi);const{setup:r}=s;if(r){Je();const n=e.setupContext=r.length>1?Po(e):null,o=os(e),i=ns(r,e,0,[e.props,n]),l=An(i);if(qe(),o(),(l||e.sp)&&!Rt(e)&&so(e),l){if(i.then(Qr,Qr),t)return i.then(c=>{en(e,c)}).catch(c=>{Ms(c,e,0)});e.asyncDep=i}else en(e,i)}else Mo(e)}function en(e,t,s){F(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:J(t)&&(e.setupState=Jn(t)),Mo(e)}function Mo(e,t,s){const r=e.type;e.render||(e.render=r.render||Ge);{const n=os(e);Je();try{Qi(e)}finally{qe(),n()}}}const Pl={get(e,t){return de(e,"get",""),e[t]}};function Po(e){const t=s=>{e.exposed=s||{}};return{attrs:new Proxy(e.attrs,Pl),slots:e.slots,emit:e.emit,expose:t}}function $r(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(Jn(_i(e.exposed)),{get(t,s){if(s in t)return t[s];if(s in Yt)return Yt[s](e)},has(t,s){return s in t||s in Yt}})):e.proxy}function Il(e,t=!0){return F(e)?e.displayName||e.name:e.name||t&&e.__name}function kl(e){return F(e)&&"__vccOpts"in e}const A=(e,t)=>Si(e,t,ss),Nl="3.5.39";/** -* @vue/runtime-dom v3.5.39 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/let lr;const tn=typeof window<"u"&&window.trustedTypes;if(tn)try{lr=tn.createPolicy("vue",{createHTML:e=>e})}catch{}const Io=lr?e=>lr.createHTML(e):e=>e,Fl="http://www.w3.org/2000/svg",Ll="http://www.w3.org/1998/Math/MathML",et=typeof document<"u"?document:null,sn=et&&et.createElement("template"),jl={insert:(e,t,s)=>{t.insertBefore(e,s||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,s,r)=>{const n=t==="svg"?et.createElementNS(Fl,e):t==="mathml"?et.createElementNS(Ll,e):s?et.createElement(e,{is:s}):et.createElement(e);return e==="select"&&r&&r.multiple!=null&&n.setAttribute("multiple",r.multiple),n},createText:e=>et.createTextNode(e),createComment:e=>et.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>et.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,s,r,n,o){const i=s?s.previousSibling:t.lastChild;if(n&&(n===o||n.nextSibling))for(;t.insertBefore(n.cloneNode(!0),s),!(n===o||!(n=n.nextSibling)););else{sn.innerHTML=Io(r==="svg"?`${e}`:r==="mathml"?`${e}`:e);const l=sn.content;if(r==="svg"||r==="mathml"){const c=l.firstChild;for(;c.firstChild;)l.appendChild(c.firstChild);l.removeChild(c)}t.insertBefore(l,s)}return[i?i.nextSibling:t.firstChild,s?s.previousSibling:t.lastChild]}},Dl=Symbol("_vtc");function zl(e,t,s){const r=e[Dl];r&&(t=(t?[t,...r]:[...r]).join(" ")),t==null?e.removeAttribute("class"):s?e.setAttribute("class",t):e.className=t}const rn=Symbol("_vod"),Kl=Symbol("_vsh"),Hl=Symbol(""),Vl=/(?:^|;)\s*display\s*:/;function Bl(e,t,s){const r=e.style,n=se(s);let o=!1;if(s&&!n){if(t)if(se(t))for(const i of t.split(";")){const l=i.slice(0,i.indexOf(":")).trim();s[l]==null&&Wt(r,l,"")}else for(const i in t)s[i]==null&&Wt(r,i,"");for(const i in s){i==="display"&&(o=!0);const l=s[i];l!=null?Ul(e,i,!se(t)&&t?t[i]:void 0,l)||Wt(r,i,l):Wt(r,i,"")}}else if(n){if(t!==s){const i=r[Hl];i&&(s+=";"+i),r.cssText=s,o=Vl.test(s)}}else t&&e.removeAttribute("style");rn in e&&(e[rn]=o?r.display:"",e[Kl]&&(r.display="none"))}const nn=/\s*!important$/;function Wt(e,t,s){if(P(s))s.forEach(r=>Wt(e,t,r));else if(s==null&&(s=""),t.startsWith("--"))e.setProperty(t,s);else{const r=Wl(e,t);nn.test(s)?e.setProperty(_t(r),s.replace(nn,""),"important"):e[r]=s}}const on=["Webkit","Moz","ms"],Gs={};function Wl(e,t){const s=Gs[t];if(s)return s;let r=xe(t);if(r!=="filter"&&r in e)return Gs[t]=r;r=$s(r);for(let n=0;nJs||(Ql.then(()=>Js=0),Js=Date.now());function tc(e,t){const s=r=>{if(!r._vts)r._vts=Date.now();else if(r._vts<=s.attached)return;const n=s.value;if(P(n)){const o=r.stopImmediatePropagation;r.stopImmediatePropagation=()=>{o.call(r),r._stopped=!0};const i=n.slice(),l=[r];for(let c=0;ce.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,sc=(e,t,s,r,n,o)=>{const i=n==="svg";t==="class"?zl(e,r,i):t==="style"?Bl(e,s,r):Ts(t)?As(t)||ql(e,t,s,r,o):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):rc(e,t,r,i))?(an(e,t,r),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&cn(e,t,r,i,o,t!=="value")):e._isVueCE&&(nc(e,t)||e._def.__asyncLoader&&(/[A-Z]/.test(t)||!se(r)))?an(e,xe(t),r,o,t):(t==="true-value"?e._trueValue=r:t==="false-value"&&(e._falseValue=r),cn(e,t,r,i))};function rc(e,t,s,r){if(r)return!!(t==="innerHTML"||t==="textContent"||t in e&&fn(t)&&F(s));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="autocorrect"||t==="sandbox"&&e.tagName==="IFRAME"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const n=e.tagName;if(n==="IMG"||n==="VIDEO"||n==="CANVAS"||n==="SOURCE")return!1}return fn(t)&&se(s)?!1:t in e}function nc(e,t){const s=e._def.props;if(!s)return!1;const r=xe(t);return Array.isArray(s)?s.some(n=>xe(n)===r):Object.keys(s).some(n=>xe(n)===r)}const oc=fe({patchProp:sc},jl);let dn;function ic(){return dn||(dn=vl(oc))}const lc=((...e)=>{const t=ic().createApp(...e),{mount:s}=t;return t.mount=r=>{const n=ac(r);if(!n)return;const o=t._component;!F(o)&&!o.render&&!o.template&&(o.template=n.innerHTML),n.nodeType===1&&(n.textContent="");const i=s(n,!1,cc(n));return n instanceof Element&&(n.removeAttribute("v-cloak"),n.setAttribute("data-v-app","")),i},t});function cc(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function ac(e){return se(e)?document.querySelector(e):e}const uc="UI8Kit Codegen",fc="One typed render contract — four generated runtimes with identical DOM, design, and ARIA.",dc=[{title:"Spec-driven",description:"Brick definitions in a tiny expression IR — no hand-written drift across stacks."},{title:"Four runtimes",description:"Go Templ, React 19, Svelte 5, and Vue 3 emitted from the same source."},{title:"DOM parity",description:"The canonical renderer is the executable specification, verified by tests."}],pc=[{id:"templ",label:"Go Templ",port:8080},{id:"react",label:"React 19",port:5173},{id:"svelte",label:"Svelte 5",port:5174},{id:"vue",label:"Vue 3",port:5175}],ds={title:uc,subtitle:fc,features:dc,runtimes:pc};function ko(e){var t,s,r="";if(typeof e=="string"||typeof e=="number")r+=e;else if(typeof e=="object")if(Array.isArray(e)){var n=e.length;for(t=0;t{const t=mc(e),{conflictingClassGroups:s,conflictingClassGroupModifiers:r}=e;return{getClassGroupId:i=>{const l=i.split(Rr);return l[0]===""&&l.length!==1&&l.shift(),No(l,t)||bc(i)},getConflictingClassGroupIds:(i,l)=>{const c=s[i]||[];return l&&r[i]?[...c,...r[i]]:c}}},No=(e,t)=>{var i;if(e.length===0)return t.classGroupId;const s=e[0],r=t.nextPart.get(s),n=r?No(e.slice(1),r):void 0;if(n)return n;if(t.validators.length===0)return;const o=e.join(Rr);return(i=t.validators.find(({validator:l})=>l(o)))==null?void 0:i.classGroupId},pn=/^\[(.+)\]$/,bc=e=>{if(pn.test(e)){const t=pn.exec(e)[1],s=t==null?void 0:t.substring(0,t.indexOf(":"));if(s)return"arbitrary.."+s}},mc=e=>{const{theme:t,prefix:s}=e,r={nextPart:new Map,validators:[]};return vc(Object.entries(e.classGroups),s).forEach(([o,i])=>{cr(i,r,o,t)}),r},cr=(e,t,s,r)=>{e.forEach(n=>{if(typeof n=="string"){const o=n===""?t:hn(t,n);o.classGroupId=s;return}if(typeof n=="function"){if(yc(n)){cr(n(r),t,s,r);return}t.validators.push({validator:n,classGroupId:s});return}Object.entries(n).forEach(([o,i])=>{cr(i,hn(t,o),s,r)})})},hn=(e,t)=>{let s=e;return t.split(Rr).forEach(r=>{s.nextPart.has(r)||s.nextPart.set(r,{nextPart:new Map,validators:[]}),s=s.nextPart.get(r)}),s},yc=e=>e.isThemeGetter,vc=(e,t)=>t?e.map(([s,r])=>{const n=r.map(o=>typeof o=="string"?t+o:typeof o=="object"?Object.fromEntries(Object.entries(o).map(([i,l])=>[t+i,l])):o);return[s,n]}):e,xc=e=>{if(e<1)return{get:()=>{},set:()=>{}};let t=0,s=new Map,r=new Map;const n=(o,i)=>{s.set(o,i),t++,t>e&&(t=0,r=s,s=new Map)};return{get(o){let i=s.get(o);if(i!==void 0)return i;if((i=r.get(o))!==void 0)return n(o,i),i},set(o,i){s.has(o)?s.set(o,i):n(o,i)}}},Fo="!",_c=e=>{const{separator:t,experimentalParseClassName:s}=e,r=t.length===1,n=t[0],o=t.length,i=l=>{const c=[];let d=0,f=0,h;for(let I=0;If?h-f:void 0;return{modifiers:c,hasImportantModifier:S,baseClassName:z,maybePostfixModifierPosition:T}};return s?l=>s({className:l,parseClassName:i}):i},wc=e=>{if(e.length<=1)return e;const t=[];let s=[];return e.forEach(r=>{r[0]==="["?(t.push(...s.sort(),r),s=[]):s.push(r)}),t.push(...s.sort()),t},Cc=e=>({cache:xc(e.cacheSize),parseClassName:_c(e),...gc(e)}),Sc=/\s+/,Tc=(e,t)=>{const{parseClassName:s,getClassGroupId:r,getConflictingClassGroupIds:n}=t,o=[],i=e.trim().split(Sc);let l="";for(let c=i.length-1;c>=0;c-=1){const d=i[c],{modifiers:f,hasImportantModifier:h,baseClassName:_,maybePostfixModifierPosition:S}=s(d);let z=!!S,T=r(z?_.substring(0,S):_);if(!T){if(!z){l=d+(l.length>0?" "+l:l);continue}if(T=r(_),!T){l=d+(l.length>0?" "+l:l);continue}z=!1}const I=wc(f).join(":"),L=h?I+Fo:I,M=L+T;if(o.includes(M))continue;o.push(M);const H=n(T,z);for(let E=0;E0?" "+l:l)}return l};function Ac(){let e=0,t,s,r="";for(;e{if(typeof e=="string")return e;let t,s="";for(let r=0;rh(f),e());return s=Cc(d),r=s.cache.get,n=s.cache.set,o=l,l(c)}function l(c){const d=r(c);if(d)return d;const f=Tc(c,s);return n(c,f),f}return function(){return o(Ac.apply(null,arguments))}}const ee=e=>{const t=s=>s[e]||[];return t.isThemeGetter=!0,t},jo=/^\[(?:([a-z-]+):)?(.+)\]$/i,$c=/^\d+\/\d+$/,Rc=new Set(["px","full","screen"]),Oc=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,Mc=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,Pc=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,Ic=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,kc=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,Qe=e=>Mt(e)||Rc.has(e)||$c.test(e),ct=e=>kt(e,"length",Hc),Mt=e=>!!e&&!Number.isNaN(Number(e)),qs=e=>kt(e,"number",Mt),Kt=e=>!!e&&Number.isInteger(Number(e)),Nc=e=>e.endsWith("%")&&Mt(e.slice(0,-1)),j=e=>jo.test(e),at=e=>Oc.test(e),Fc=new Set(["length","size","percentage"]),Lc=e=>kt(e,Fc,Do),jc=e=>kt(e,"position",Do),Dc=new Set(["image","url"]),zc=e=>kt(e,Dc,Bc),Kc=e=>kt(e,"",Vc),Ht=()=>!0,kt=(e,t,s)=>{const r=jo.exec(e);return r?r[1]?typeof t=="string"?r[1]===t:t.has(r[1]):s(r[2]):!1},Hc=e=>Mc.test(e)&&!Pc.test(e),Do=()=>!1,Vc=e=>Ic.test(e),Bc=e=>kc.test(e),Wc=()=>{const e=ee("colors"),t=ee("spacing"),s=ee("blur"),r=ee("brightness"),n=ee("borderColor"),o=ee("borderRadius"),i=ee("borderSpacing"),l=ee("borderWidth"),c=ee("contrast"),d=ee("grayscale"),f=ee("hueRotate"),h=ee("invert"),_=ee("gap"),S=ee("gradientColorStops"),z=ee("gradientColorStopPositions"),T=ee("inset"),I=ee("margin"),L=ee("opacity"),M=ee("padding"),H=ee("saturate"),E=ee("scale"),te=ee("sepia"),Ae=ee("skew"),Ee=ee("space"),Ie=ee("translate"),it=()=>["auto","contain","none"],ke=()=>["auto","hidden","clip","visible","scroll"],Xe=()=>["auto",j,t],W=()=>[j,t],pt=()=>["",Qe,ct],lt=()=>["auto",Mt,j],Nt=()=>["bottom","center","left","left-bottom","left-top","right","right-bottom","right-top","top"],ne=()=>["solid","dashed","dotted","double","none"],Y=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],V=()=>["start","end","center","between","around","evenly","stretch"],$e=()=>["","0",j],ht=()=>["auto","avoid","all","avoid-page","page","left","right","column"],ce=()=>[Mt,j];return{cacheSize:500,separator:":",theme:{colors:[Ht],spacing:[Qe,ct],blur:["none","",at,j],brightness:ce(),borderColor:[e],borderRadius:["none","","full",at,j],borderSpacing:W(),borderWidth:pt(),contrast:ce(),grayscale:$e(),hueRotate:ce(),invert:$e(),gap:W(),gradientColorStops:[e],gradientColorStopPositions:[Nc,ct],inset:Xe(),margin:Xe(),opacity:ce(),padding:W(),saturate:ce(),scale:ce(),sepia:$e(),skew:ce(),space:W(),translate:W()},classGroups:{aspect:[{aspect:["auto","square","video",j]}],container:["container"],columns:[{columns:[at]}],"break-after":[{"break-after":ht()}],"break-before":[{"break-before":ht()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:[...Nt(),j]}],overflow:[{overflow:ke()}],"overflow-x":[{"overflow-x":ke()}],"overflow-y":[{"overflow-y":ke()}],overscroll:[{overscroll:it()}],"overscroll-x":[{"overscroll-x":it()}],"overscroll-y":[{"overscroll-y":it()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:[T]}],"inset-x":[{"inset-x":[T]}],"inset-y":[{"inset-y":[T]}],start:[{start:[T]}],end:[{end:[T]}],top:[{top:[T]}],right:[{right:[T]}],bottom:[{bottom:[T]}],left:[{left:[T]}],visibility:["visible","invisible","collapse"],z:[{z:["auto",Kt,j]}],basis:[{basis:Xe()}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["wrap","wrap-reverse","nowrap"]}],flex:[{flex:["1","auto","initial","none",j]}],grow:[{grow:$e()}],shrink:[{shrink:$e()}],order:[{order:["first","last","none",Kt,j]}],"grid-cols":[{"grid-cols":[Ht]}],"col-start-end":[{col:["auto",{span:["full",Kt,j]},j]}],"col-start":[{"col-start":lt()}],"col-end":[{"col-end":lt()}],"grid-rows":[{"grid-rows":[Ht]}],"row-start-end":[{row:["auto",{span:[Kt,j]},j]}],"row-start":[{"row-start":lt()}],"row-end":[{"row-end":lt()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":["auto","min","max","fr",j]}],"auto-rows":[{"auto-rows":["auto","min","max","fr",j]}],gap:[{gap:[_]}],"gap-x":[{"gap-x":[_]}],"gap-y":[{"gap-y":[_]}],"justify-content":[{justify:["normal",...V()]}],"justify-items":[{"justify-items":["start","end","center","stretch"]}],"justify-self":[{"justify-self":["auto","start","end","center","stretch"]}],"align-content":[{content:["normal",...V(),"baseline"]}],"align-items":[{items:["start","end","center","baseline","stretch"]}],"align-self":[{self:["auto","start","end","center","stretch","baseline"]}],"place-content":[{"place-content":[...V(),"baseline"]}],"place-items":[{"place-items":["start","end","center","baseline","stretch"]}],"place-self":[{"place-self":["auto","start","end","center","stretch"]}],p:[{p:[M]}],px:[{px:[M]}],py:[{py:[M]}],ps:[{ps:[M]}],pe:[{pe:[M]}],pt:[{pt:[M]}],pr:[{pr:[M]}],pb:[{pb:[M]}],pl:[{pl:[M]}],m:[{m:[I]}],mx:[{mx:[I]}],my:[{my:[I]}],ms:[{ms:[I]}],me:[{me:[I]}],mt:[{mt:[I]}],mr:[{mr:[I]}],mb:[{mb:[I]}],ml:[{ml:[I]}],"space-x":[{"space-x":[Ee]}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":[Ee]}],"space-y-reverse":["space-y-reverse"],w:[{w:["auto","min","max","fit","svw","lvw","dvw",j,t]}],"min-w":[{"min-w":[j,t,"min","max","fit"]}],"max-w":[{"max-w":[j,t,"none","full","min","max","fit","prose",{screen:[at]},at]}],h:[{h:[j,t,"auto","min","max","fit","svh","lvh","dvh"]}],"min-h":[{"min-h":[j,t,"min","max","fit","svh","lvh","dvh"]}],"max-h":[{"max-h":[j,t,"min","max","fit","svh","lvh","dvh"]}],size:[{size:[j,t,"auto","min","max","fit"]}],"font-size":[{text:["base",at,ct]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:["thin","extralight","light","normal","medium","semibold","bold","extrabold","black",qs]}],"font-family":[{font:[Ht]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:["tighter","tight","normal","wide","wider","widest",j]}],"line-clamp":[{"line-clamp":["none",Mt,qs]}],leading:[{leading:["none","tight","snug","normal","relaxed","loose",Qe,j]}],"list-image":[{"list-image":["none",j]}],"list-style-type":[{list:["none","disc","decimal",j]}],"list-style-position":[{list:["inside","outside"]}],"placeholder-color":[{placeholder:[e]}],"placeholder-opacity":[{"placeholder-opacity":[L]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"text-color":[{text:[e]}],"text-opacity":[{"text-opacity":[L]}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...ne(),"wavy"]}],"text-decoration-thickness":[{decoration:["auto","from-font",Qe,ct]}],"underline-offset":[{"underline-offset":["auto",Qe,j]}],"text-decoration-color":[{decoration:[e]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:W()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",j]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",j]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-opacity":[{"bg-opacity":[L]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:[...Nt(),jc]}],"bg-repeat":[{bg:["no-repeat",{repeat:["","x","y","round","space"]}]}],"bg-size":[{bg:["auto","cover","contain",Lc]}],"bg-image":[{bg:["none",{"gradient-to":["t","tr","r","br","b","bl","l","tl"]},zc]}],"bg-color":[{bg:[e]}],"gradient-from-pos":[{from:[z]}],"gradient-via-pos":[{via:[z]}],"gradient-to-pos":[{to:[z]}],"gradient-from":[{from:[S]}],"gradient-via":[{via:[S]}],"gradient-to":[{to:[S]}],rounded:[{rounded:[o]}],"rounded-s":[{"rounded-s":[o]}],"rounded-e":[{"rounded-e":[o]}],"rounded-t":[{"rounded-t":[o]}],"rounded-r":[{"rounded-r":[o]}],"rounded-b":[{"rounded-b":[o]}],"rounded-l":[{"rounded-l":[o]}],"rounded-ss":[{"rounded-ss":[o]}],"rounded-se":[{"rounded-se":[o]}],"rounded-ee":[{"rounded-ee":[o]}],"rounded-es":[{"rounded-es":[o]}],"rounded-tl":[{"rounded-tl":[o]}],"rounded-tr":[{"rounded-tr":[o]}],"rounded-br":[{"rounded-br":[o]}],"rounded-bl":[{"rounded-bl":[o]}],"border-w":[{border:[l]}],"border-w-x":[{"border-x":[l]}],"border-w-y":[{"border-y":[l]}],"border-w-s":[{"border-s":[l]}],"border-w-e":[{"border-e":[l]}],"border-w-t":[{"border-t":[l]}],"border-w-r":[{"border-r":[l]}],"border-w-b":[{"border-b":[l]}],"border-w-l":[{"border-l":[l]}],"border-opacity":[{"border-opacity":[L]}],"border-style":[{border:[...ne(),"hidden"]}],"divide-x":[{"divide-x":[l]}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":[l]}],"divide-y-reverse":["divide-y-reverse"],"divide-opacity":[{"divide-opacity":[L]}],"divide-style":[{divide:ne()}],"border-color":[{border:[n]}],"border-color-x":[{"border-x":[n]}],"border-color-y":[{"border-y":[n]}],"border-color-s":[{"border-s":[n]}],"border-color-e":[{"border-e":[n]}],"border-color-t":[{"border-t":[n]}],"border-color-r":[{"border-r":[n]}],"border-color-b":[{"border-b":[n]}],"border-color-l":[{"border-l":[n]}],"divide-color":[{divide:[n]}],"outline-style":[{outline:["",...ne()]}],"outline-offset":[{"outline-offset":[Qe,j]}],"outline-w":[{outline:[Qe,ct]}],"outline-color":[{outline:[e]}],"ring-w":[{ring:pt()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:[e]}],"ring-opacity":[{"ring-opacity":[L]}],"ring-offset-w":[{"ring-offset":[Qe,ct]}],"ring-offset-color":[{"ring-offset":[e]}],shadow:[{shadow:["","inner","none",at,Kc]}],"shadow-color":[{shadow:[Ht]}],opacity:[{opacity:[L]}],"mix-blend":[{"mix-blend":[...Y(),"plus-lighter","plus-darker"]}],"bg-blend":[{"bg-blend":Y()}],filter:[{filter:["","none"]}],blur:[{blur:[s]}],brightness:[{brightness:[r]}],contrast:[{contrast:[c]}],"drop-shadow":[{"drop-shadow":["","none",at,j]}],grayscale:[{grayscale:[d]}],"hue-rotate":[{"hue-rotate":[f]}],invert:[{invert:[h]}],saturate:[{saturate:[H]}],sepia:[{sepia:[te]}],"backdrop-filter":[{"backdrop-filter":["","none"]}],"backdrop-blur":[{"backdrop-blur":[s]}],"backdrop-brightness":[{"backdrop-brightness":[r]}],"backdrop-contrast":[{"backdrop-contrast":[c]}],"backdrop-grayscale":[{"backdrop-grayscale":[d]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[f]}],"backdrop-invert":[{"backdrop-invert":[h]}],"backdrop-opacity":[{"backdrop-opacity":[L]}],"backdrop-saturate":[{"backdrop-saturate":[H]}],"backdrop-sepia":[{"backdrop-sepia":[te]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":[i]}],"border-spacing-x":[{"border-spacing-x":[i]}],"border-spacing-y":[{"border-spacing-y":[i]}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["none","all","","colors","opacity","shadow","transform",j]}],duration:[{duration:ce()}],ease:[{ease:["linear","in","out","in-out",j]}],delay:[{delay:ce()}],animate:[{animate:["none","spin","ping","pulse","bounce",j]}],transform:[{transform:["","gpu","none"]}],scale:[{scale:[E]}],"scale-x":[{"scale-x":[E]}],"scale-y":[{"scale-y":[E]}],rotate:[{rotate:[Kt,j]}],"translate-x":[{"translate-x":[Ie]}],"translate-y":[{"translate-y":[Ie]}],"skew-x":[{"skew-x":[Ae]}],"skew-y":[{"skew-y":[Ae]}],"transform-origin":[{origin:["center","top","top-right","right","bottom-right","bottom","bottom-left","left","top-left",j]}],accent:[{accent:["auto",e]}],appearance:[{appearance:["none","auto"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",j]}],"caret-color":[{caret:[e]}],"pointer-events":[{"pointer-events":["none","auto"]}],resize:[{resize:["none","y","x",""]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":W()}],"scroll-mx":[{"scroll-mx":W()}],"scroll-my":[{"scroll-my":W()}],"scroll-ms":[{"scroll-ms":W()}],"scroll-me":[{"scroll-me":W()}],"scroll-mt":[{"scroll-mt":W()}],"scroll-mr":[{"scroll-mr":W()}],"scroll-mb":[{"scroll-mb":W()}],"scroll-ml":[{"scroll-ml":W()}],"scroll-p":[{"scroll-p":W()}],"scroll-px":[{"scroll-px":W()}],"scroll-py":[{"scroll-py":W()}],"scroll-ps":[{"scroll-ps":W()}],"scroll-pe":[{"scroll-pe":W()}],"scroll-pt":[{"scroll-pt":W()}],"scroll-pr":[{"scroll-pr":W()}],"scroll-pb":[{"scroll-pb":W()}],"scroll-pl":[{"scroll-pl":W()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",j]}],fill:[{fill:[e,"none"]}],"stroke-w":[{stroke:[Qe,ct,qs]}],stroke:[{stroke:[e,"none"]}],sr:["sr-only","not-sr-only"],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-s","border-w-e","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-s","border-color-e","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]}}},Uc=Ec(Wc);function be(...e){return Uc(hc(e))}const Gc={BASE_URL:"/",DEV:!1,MODE:"production",PROD:!0,SSR:!1};function ar(){try{const e=Gc;if(e&&typeof e.DEV=="boolean")return e.DEV}catch{}return!1}function Jc(e){return{id:e.id,base:e.base,keys:e.keys,defaults:e.defaults??{},byKey:e.byKey}}function qc(e,t,...s){const r=[];e.base.trim()!==""&&r.push(e.base.trim());for(const n of e.keys){const o=e.byKey[n];if(!o)continue;const i=(t[n]??"").trim(),l=(e.defaults[n]??"").trim(),c=i||l;if(!c){if(ar()&&Object.keys(o).length>0)throw new Error(`[compose] missing default for key "${n}" (recipe id: ${String(e.id??"?")})`);continue}const d=o[c];if(d!==void 0)d.trim()!==""&&r.push(d.trim());else if(ar())throw new Error(`[compose] unknown variant "${c}" for key "${n}" (recipe id: ${String(e.id??"?")})`)}return be(...r,...s)}function Pe(e,t,...s){return qc(Jc(e),t,...s)}const X={Layout:"Layout",BoxAllowed:"BoxAllowed",BlockText:"BlockText",Inline:"Inline",Heading:"Heading",List:"List",ListItem:"ListItem",Form:"Form",FormControl:"FormControl",FormLabel:"FormLabel",Table:"Table",TableSection:"TableSection",TableRow:"TableRow",TableCell:"TableCell",TableColumn:"TableColumn",Media:"Media",Disclosure:"Disclosure",Container:"Container",Stack:"Stack",Group:"Group",Text:"Text"},Yc=new Set(["div","section","article","aside","header","footer","main","nav","figure","search","hgroup"]),Xc=new Set(["div"]),gn=new Set(["p","blockquote","figcaption","address","pre"]),bn=new Set(["span","em","strong","small","abbr","cite","code","kbd","mark","time","data","var","samp","sub","sup","b","i","u","s","q","dfn","bdo","bdi","ins","del"]),Zc=new Set(["h1","h2","h3","h4","h5","h6"]),Qc=new Set(["ul","ol","dl","menu"]),ea=new Set(["li","dt","dd"]),ta=new Set(["form","fieldset"]),sa=new Set(["input","textarea","select","button","option","optgroup","datalist","output","meter","progress"]),ra=new Set(["label","legend"]),na=new Set(["table"]),oa=new Set(["thead","tbody","tfoot"]),ia=new Set(["tr"]),la=new Set(["th","td"]),ca=new Set(["colgroup","col"]),aa=new Set(["img","picture","source"]),ua=new Set(["details","summary"]),fa=new Set(["div","main","section"]),da=new Set(["div","ul","ol"]),pa=new Set(["div","fieldset","dl"]);function ie(e,t){return t.has(e)}const mn=new Set;function ha(e,t,s){if(!ar())return;const r=`${s}:${e}:${t}`;mn.has(r)||(mn.add(r),console.warn(`[resolveTag] disallowed tag "${e}" for group "${s}", fallback "${t}" used.`))}function ga(e,t){const s=e.trim().toLowerCase();switch(t){case X.Layout:return ie(s,Yc);case X.BoxAllowed:return ie(s,Xc);case X.BlockText:return ie(s,gn);case X.Inline:return ie(s,bn);case X.Heading:return ie(s,Zc);case X.List:return ie(s,Qc);case X.ListItem:return ie(s,ea);case X.Form:return ie(s,ta);case X.FormControl:return ie(s,sa);case X.FormLabel:return ie(s,ra);case X.Table:return ie(s,na);case X.TableSection:return ie(s,oa);case X.TableRow:return ie(s,ia);case X.TableCell:return ie(s,la);case X.TableColumn:return ie(s,ca);case X.Media:return ie(s,aa);case X.Disclosure:return ie(s,ua);case X.Container:return ie(s,fa);case X.Stack:return ie(s,da);case X.Group:return ie(s,pa);case X.Text:return gn.has(s)||bn.has(s);default:return!1}}function is(e,t,s){const r=(e==null?void 0:e.trim().toLowerCase())??"";return r?ga(r,s)?r:(ha(r,t,s),t):t}const ls=e=>e==null?"":String(e).trim(),yn=e=>ls(e)!=="",ba=(e,t)=>{const s=ls(e);return s===""?t:s},ma=(e,t,...s)=>{const r=ls(e);return s.includes(r)?r:t},ya=(e,t,s)=>t[ls(e)]??s,va=(e,t)=>(e??"")===t,vn=e=>ls(e)===""?void 0:String(e),zo=e=>{switch(e){case 1:return"h1";case 3:return"h3";case 4:return"h4";case 5:return"h5";case 6:return"h6";default:return"h2"}},xa="inline-flex items-center rounded-full border px-2 py-1 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",_a={size:{default:"px-2 py-1 text-xs",lg:"px-3 py-1 text-sm",sm:"px-2 py-1 text-xs"},variant:{default:"border-transparent bg-primary text-primary-foreground hover:bg-primary/80",destructive:"border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80",outline:"text-foreground",secondary:"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80"}},wa={size:"default",variant:"default"},Ca="ui.badge",Sa=["variant","size"],Ta={base:xa,byKey:_a,defaults:wa,id:Ca,keys:Sa},Aa=Ta;function Ea(e={}){return be(Pe(Aa,{variant:e.variant,size:e.size}),e.className)}const ps=he({name:"Badge",inheritAttrs:!1,__name:"Badge",props:{variant:{},size:{}},setup(e){const t=e,s=Ce(),r=A(()=>s.class),n=A(()=>{const{class:i,...l}=s;return l}),o=A(()=>Ea({variant:t.variant,size:t.size,className:r.value}));return(i,l)=>(re(),Ye("div",ge({class:o.value||void 0},n.value),[we(i.$slots,"default")],16))}}),$a="",Ra={},Oa={},Ma="ui.block",Pa=[],Ia={base:$a,byKey:Ra,defaults:Oa,id:Ma,keys:Pa},ka=Ia;function Na(e={}){return be(Pe(ka,{}),e.className)}const Fa=he({name:"Block",inheritAttrs:!1,__name:"Block",props:{tag:{}},setup(e){const t=e,s=Ce(),r=A(()=>s.class),n=A(()=>{const{class:l,...c}=s;return c}),o=A(()=>Na({className:r.value})),i=A(()=>is(t.tag,"div",X.Layout));return(l,c)=>(re(),Me(wt(i.value),ge({class:o.value||void 0},n.value),{default:N(()=>[we(l.$slots,"default")]),_:3},16,["class"]))}}),La="",ja={},Da={},za="ui.box",Ka=[],Ha={base:La,byKey:ja,defaults:Da,id:za,keys:Ka},Va=Ha;function Ba(e={}){return be(Pe(Va,{}),e.className)}const Wa=he({name:"Box",inheritAttrs:!1,__name:"Box",props:{tag:{}},setup(e){const t=e,s=Ce(),r=A(()=>s.class),n=A(()=>{const{class:l,...c}=s;return c}),o=A(()=>Ba({className:r.value})),i=A(()=>is(t.tag,"div",X.BoxAllowed));return(l,c)=>(re(),Me(wt(i.value),ge({class:o.value||void 0},n.value),{default:N(()=>[we(l.$slots,"default")]),_:3},16,["class"]))}}),Ua="inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",Ga={size:{default:"h-10 px-4 py-2",icon:"h-10 w-10",lg:"h-12 rounded-md px-8",sm:"h-8 rounded-md px-3"},variant:{default:"bg-primary text-primary-foreground hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground hover:bg-destructive/90",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline",outline:"border border-input bg-background hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80"}},Ja={size:"default",variant:"default"},qa="ui.button",Ya=["variant","size"],Xa={base:Ua,byKey:Ga,defaults:Ja,id:qa,keys:Ya},Za=Xa;function Qa(e={}){return be(Pe(Za,{variant:e.variant,size:e.size}),e.disabled?"pointer-events-none opacity-50":"",e.className)}const eu=["type","disabled"],Vt=he({name:"Button",inheritAttrs:!1,__name:"Button",props:{variant:{},size:{},type:{},disabled:{type:Boolean}},setup(e){const t=e,s=Ce(),r=A(()=>s.class),n=A(()=>{const{class:i,...l}=s;return l}),o=A(()=>Qa({variant:t.variant,size:t.size,disabled:t.disabled,className:r.value}));return(i,l)=>(re(),Ye("button",ge({type:k(ma)(t.type,"button","submit","reset"),class:o.value||void 0,disabled:t.disabled||void 0},n.value),[we(i.$slots,"default")],16,eu))}}),tu="ui.card",su="rounded-md border border-border bg-card text-card-foreground shadow-sm",ru=["variant"],nu={variant:"default"},ou={variant:{default:"",raised:"",kpi:"bg-card/50",muted:"bg-muted/40",ghost:"border-dashed bg-background shadow-none",compact:"p-4",flat:"shadow-none",accent:"border-transparent bg-accent/30"}},iu={id:tu,base:su,keys:ru,defaults:nu,byKey:ou},lu=iu;function cu(e={}){return be(Pe(lu,{variant:e.variant}),e.className)}function au(e={}){return be("border-b border-border px-4 py-2",e.className)}function uu(e={}){return be("text-sm font-semibold",e.className)}function fu(e={}){return be("p-4",e.className)}const xn=he({name:"Card",inheritAttrs:!1,__name:"Card",props:{variant:{}},setup(e){const t=e,s=Ce(),r=A(()=>s.class),n=A(()=>{const{class:i,...l}=s;return l}),o=A(()=>cu({variant:t.variant,className:r.value}));return(i,l)=>(re(),Ye("div",ge({class:o.value||void 0},n.value),[we(i.$slots,"default")],16))}}),_n=he({name:"CardHeader",inheritAttrs:!1,__name:"CardHeader",setup(e){const t=Ce(),s=A(()=>t.class),r=A(()=>{const{class:o,...i}=t;return i}),n=A(()=>au({className:s.value}));return(o,i)=>(re(),Ye("div",ge({class:n.value||void 0},r.value),[we(o.$slots,"default")],16))}}),wn=he({name:"CardTitle",inheritAttrs:!1,__name:"CardTitle",props:{as:{}},setup(e){const t=e,s=Ce(),r=A(()=>s.class),n=A(()=>{const{class:l,...c}=s;return c}),o=A(()=>uu({className:r.value})),i=A(()=>zo(t.as));return(l,c)=>(re(),Me(wt(i.value),ge({class:o.value||void 0},n.value),{default:N(()=>[we(l.$slots,"default")]),_:3},16,["class"]))}}),Cn=he({name:"CardContent",inheritAttrs:!1,__name:"CardContent",setup(e){const t=Ce(),s=A(()=>t.class),r=A(()=>{const{class:o,...i}=t;return i}),n=A(()=>fu({className:s.value}));return(o,i)=>(re(),Ye("div",ge({class:n.value||void 0},r.value),[we(o.$slots,"default")],16))}}),du="",pu={},hu={},gu="ui.container",bu=[],mu={base:du,byKey:pu,defaults:hu,id:gu,keys:bu},yu=mu;function vu(e={}){return be(Pe(yu,{}),e.className)}const xu=he({name:"Container",inheritAttrs:!1,__name:"Container",props:{tag:{}},setup(e){const t=e,s=Ce(),r=A(()=>s.class),n=A(()=>{const{class:l,...c}=s;return c}),o=A(()=>vu({className:r.value})),i=A(()=>is(t.tag,"div",X.Container));return(l,c)=>(re(),Me(wt(i.value),ge({class:o.value||void 0},n.value),{default:N(()=>[we(l.$slots,"default")]),_:3},16,["class"]))}}),_u="grid",wu={},Cu={},Su="ui.grid",Tu=[],Au={base:_u,byKey:wu,defaults:Cu,id:Su,keys:Tu},Eu=Au;function $u(e={}){return be(Pe(Eu,{}),(e.className??"").includes("grid-cols-")?"":ya(ba(e.cols,"1"),{1:"grid-cols-1",2:"grid-cols-2",3:"grid-cols-3",4:"grid-cols-4",5:"grid-cols-5",6:"grid-cols-6",7:"grid-cols-7",8:"grid-cols-8",9:"grid-cols-9",10:"grid-cols-10",11:"grid-cols-11",12:"grid-cols-12","1-2":"grid-cols-1 md:grid-cols-2","1-3":"grid-cols-1 md:grid-cols-2 xl:grid-cols-3","1-4":"grid-cols-1 md:grid-cols-2 xl:grid-cols-4"},""),e.className)}const Ru=he({name:"Grid",inheritAttrs:!1,__name:"Grid",props:{cols:{}},setup(e){const t=e,s=Ce(),r=A(()=>s.class),n=A(()=>{const{class:i,...l}=s;return l}),o=A(()=>$u({cols:t.cols,className:r.value}));return(i,l)=>(re(),Ye("div",ge({class:o.value||void 0},n.value),[we(i.$slots,"default")],16))}}),Ou="flex min-w-0",Mu={},Pu={},Iu="ui.group",ku=[],Nu={base:Ou,byKey:Mu,defaults:Pu,id:Iu,keys:ku},Fu=Nu;function Lu(e={}){return be(Pe(Fu,{}),e.className)}const Ys=he({name:"Group",inheritAttrs:!1,__name:"Group",props:{tag:{}},setup(e){const t=e,s=Ce(),r=A(()=>s.class),n=A(()=>{const{class:l,...c}=s;return c}),o=A(()=>Lu({className:r.value})),i=A(()=>is(t.tag,"div",X.Group));return(l,c)=>(re(),Me(wt(i.value),ge({class:o.value||void 0},n.value),{default:N(()=>[we(l.$slots,"default")]),_:3},16,["class"]))}}),ju="inline-flex items-center gap-2 underline-offset-4 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",Du={size:{default:"text-sm",lg:"text-lg",md:"text-base",sm:"text-sm"},variant:{block:"flex w-full text-foreground hover:text-primary",default:"text-primary hover:underline",external:"text-primary hover:underline",muted:"text-muted-foreground hover:text-foreground hover:underline",nav:"text-foreground hover:text-primary"}},zu={size:"default",variant:"default"},Ku="ui.link",Hu=["variant","size"],Vu={base:ju,byKey:Du,defaults:zu,id:Ku,keys:Hu},Bu=Vu;function Wu(e={}){return be(Pe(Bu,{variant:e.variant,size:e.size}),e.disabled?"pointer-events-none opacity-50":"",e.className)}const Uu=["target","rel","aria-disabled","tabindex"],Gu=he({name:"Link",inheritAttrs:!1,__name:"Link",props:{variant:{},size:{},target:{},rel:{},external:{type:Boolean},disabled:{type:Boolean}},setup(e){const t=e,s=Ce(),r=A(()=>s.class),n=A(()=>{const{class:c,...d}=s;return d}),o=A(()=>Wu({variant:t.variant,size:t.size,disabled:t.disabled,className:r.value})),i=A(()=>yn(t.target)?t.target:t.external?"_blank":""),l=A(()=>yn(t.rel)?t.rel:t.external||va(i.value,"_blank")?"noopener noreferrer":"");return(c,d)=>(re(),Ye("a",ge({class:o.value||void 0,target:k(vn)(i.value),rel:k(vn)(l.value),"aria-disabled":t.disabled?"true":void 0,tabindex:t.disabled?-1:void 0},n.value),[we(c.$slots,"default")],16,Uu))}}),Ju="flex flex-col items-start justify-start",qu={},Yu={},Xu="ui.stack",Zu=[],Qu={base:Ju,byKey:qu,defaults:Yu,id:Xu,keys:Zu},ef=Qu;function tf(e={}){return be(Pe(ef,{}),e.className)}const hs=he({name:"Stack",inheritAttrs:!1,__name:"Stack",props:{tag:{}},setup(e){const t=e,s=Ce(),r=A(()=>s.class),n=A(()=>{const{class:l,...c}=s;return c}),o=A(()=>tf({className:r.value})),i=A(()=>is(t.tag,"div",X.Stack));return(l,c)=>(re(),Me(wt(i.value),ge({class:o.value||void 0},n.value),{default:N(()=>[we(l.$slots,"default")]),_:3},16,["class"]))}}),sf="",rf={},nf={},of="ui.text",lf=[],cf={base:sf,byKey:rf,defaults:nf,id:of,keys:lf},af=cf;function uf(e={}){return be(Pe(af,{}),e.className)}const gs=he({name:"Text",inheritAttrs:!1,__name:"Text",setup(e){const t=Ce(),s=A(()=>t.class),r=A(()=>{const{class:o,...i}=t;return i}),n=A(()=>uf({className:s.value}));return(o,i)=>(re(),Ye("p",ge({class:n.value||void 0},r.value),[we(o.$slots,"default")],16))}}),ff="",df={},pf={},hf="ui.title",gf=[],bf={base:ff,byKey:df,defaults:pf,id:hf,keys:gf},mf=bf;function yf(e={}){return be(Pe(mf,{}),e.className)}const vf=he({name:"Title",inheritAttrs:!1,__name:"Title",props:{as:{}},setup(e){const t=e,s=Ce(),r=A(()=>s.class),n=A(()=>{const{class:l,...c}=s;return c}),o=A(()=>yf({className:r.value})),i=A(()=>zo(t.as));return(l,c)=>(re(),Me(wt(i.value),ge({class:o.value||void 0},n.value),{default:N(()=>[we(l.$slots,"default")]),_:3},16,["class"]))}}),xf=he({__name:"Welcome",setup(e){return(t,s)=>(re(),Me(k(Fa),{tag:"main",class:"min-h-screen bg-muted/30 text-foreground"},{default:N(()=>[D(k(xu),{class:"mx-auto max-w-4xl px-4 py-16"},{default:N(()=>[D(k(hs),{class:"gap-8"},{default:N(()=>[D(k(hs),{class:"items-center gap-4 text-center"},{default:N(()=>[D(k(ps),{variant:"outline",class:"text-xs uppercase tracking-wide"},{default:N(()=>[...s[0]||(s[0]=[le("Vue 3",-1)])]),_:1}),D(k(vf),{as:1,class:"text-3xl font-bold tracking-tight"},{default:N(()=>[le(St(k(ds).title),1)]),_:1}),D(k(gs),{class:"max-w-2xl text-muted-foreground"},{default:N(()=>[le(St(k(ds).subtitle),1)]),_:1})]),_:1}),D(k(xn),{variant:"default"},{default:N(()=>[D(k(_n),null,{default:N(()=>[D(k(wn),null,{default:N(()=>[...s[1]||(s[1]=[le("Generated primitives",-1)])]),_:1})]),_:1}),D(k(Cn),null,{default:N(()=>[D(k(hs),{class:"gap-4"},{default:N(()=>[D(k(Ys),{class:"flex-wrap gap-2"},{default:N(()=>[D(k(Vt),{variant:"default",size:"sm"},{default:N(()=>[...s[2]||(s[2]=[le("Default",-1)])]),_:1}),D(k(Vt),{variant:"secondary",size:"sm"},{default:N(()=>[...s[3]||(s[3]=[le("Secondary",-1)])]),_:1}),D(k(Vt),{variant:"outline",size:"sm"},{default:N(()=>[...s[4]||(s[4]=[le("Outline",-1)])]),_:1}),D(k(Vt),{variant:"ghost",size:"sm"},{default:N(()=>[...s[5]||(s[5]=[le("Ghost",-1)])]),_:1}),D(k(Vt),{variant:"destructive",size:"sm"},{default:N(()=>[...s[6]||(s[6]=[le("Destructive",-1)])]),_:1})]),_:1}),D(k(Ys),{class:"flex-wrap gap-2"},{default:N(()=>[D(k(ps),{variant:"default"},{default:N(()=>[...s[7]||(s[7]=[le("Badge",-1)])]),_:1}),D(k(ps),{variant:"secondary"},{default:N(()=>[...s[8]||(s[8]=[le("Secondary",-1)])]),_:1}),D(k(ps),{variant:"outline"},{default:N(()=>[...s[9]||(s[9]=[le("Outline",-1)])]),_:1})]),_:1})]),_:1})]),_:1})]),_:1}),D(k(Ru),{cols:"1-3",class:"gap-4"},{default:N(()=>[(re(!0),Ye(Te,null,Vr(k(ds).features,r=>(re(),Me(k(xn),{key:r.title,variant:"muted"},{default:N(()=>[D(k(_n),null,{default:N(()=>[D(k(wn),null,{default:N(()=>[le(St(r.title),1)]),_:2},1024)]),_:2},1024),D(k(Cn),null,{default:N(()=>[D(k(gs),{class:"text-sm text-muted-foreground"},{default:N(()=>[le(St(r.description),1)]),_:2},1024)]),_:2},1024)]),_:2},1024))),128))]),_:1}),D(k(Wa),{class:"rounded-lg border border-border bg-card p-4"},{default:N(()=>[D(k(hs),{class:"gap-3"},{default:N(()=>[D(k(gs),{class:"text-sm font-medium"},{default:N(()=>[...s[10]||(s[10]=[le("Preview other runtimes",-1)])]),_:1}),D(k(Ys),{class:"flex-wrap gap-3"},{default:N(()=>[(re(!0),Ye(Te,null,Vr(k(ds).runtimes,r=>(re(),Me(k(Gu),{key:r.id,href:`http://127.0.0.1:${r.port}`,variant:"default"},{default:N(()=>[le(St(r.label),1)]),_:2},1032,["href"]))),128))]),_:1})]),_:1})]),_:1}),D(k(gs),{class:"text-center text-sm text-muted-foreground"},{default:N(()=>[...s[11]||(s[11]=[le(" Same shadcn tokens · generated ui/ primitives · @ui8kit/codegen ",-1)])]),_:1})]),_:1})]),_:1})]),_:1}))}});lc(xf).mount("#app"); diff --git a/examples/vue/dist/index.html b/examples/vue/dist/index.html deleted file mode 100644 index f59fd15..0000000 --- a/examples/vue/dist/index.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - UI8Kit Codegen · Vue 3 - - - - -
- - diff --git a/examples/vue/index.html b/examples/vue/index.html deleted file mode 100644 index 853a732..0000000 --- a/examples/vue/index.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - UI8Kit Codegen · Vue 3 - - - -
- - - diff --git a/examples/vue/src/Welcome.vue b/examples/vue/src/Welcome.vue deleted file mode 100644 index b213b82..0000000 --- a/examples/vue/src/Welcome.vue +++ /dev/null @@ -1,87 +0,0 @@ - - - diff --git a/examples/vue/src/main.ts b/examples/vue/src/main.ts deleted file mode 100644 index de73b7b..0000000 --- a/examples/vue/src/main.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { createApp } from "vue"; -import Welcome from "./Welcome.vue"; - -createApp(Welcome).mount("#app"); diff --git a/examples/vue/tsconfig.json b/examples/vue/tsconfig.json deleted file mode 100644 index 8958ee7..0000000 --- a/examples/vue/tsconfig.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "compilerOptions": { - "target": "ES2022", - "module": "ESNext", - "moduleResolution": "bundler", - "strict": true, - "skipLibCheck": true, - "resolveJsonModule": true, - "jsx": "preserve", - "paths": { - "@ui": ["../../generated/ui/index.vue.ts"], - "@ui/*": ["../../generated/ui/*"] - } - }, - "include": ["src/**/*.ts", "src/**/*.vue", "../data/**/*.json"] -} diff --git a/examples/vue/vite.config.ts b/examples/vue/vite.config.ts deleted file mode 100644 index a503ccd..0000000 --- a/examples/vue/vite.config.ts +++ /dev/null @@ -1,23 +0,0 @@ -import path from "path"; -import { fileURLToPath } from "url"; -import vue from "@vitejs/plugin-vue"; -import { defineConfig } from "vite"; -import { generatedUiRoot, serveExamplesStatic } from "../shared/vite-static"; - -const rootDir = path.dirname(fileURLToPath(import.meta.url)); - -export default defineConfig({ - root: rootDir, - plugins: [vue(), serveExamplesStatic()], - resolve: { - alias: { - "@ui": path.join(generatedUiRoot, "index.vue.ts"), - }, - }, - server: { - port: 5175, - fs: { - allow: [path.resolve(rootDir, ".."), path.resolve(rootDir, "../../generated")], - }, - }, -}); diff --git a/examples/web/static/css/app.css b/examples/web/static/css/app.css deleted file mode 100644 index bad6e36..0000000 --- a/examples/web/static/css/app.css +++ /dev/null @@ -1,2 +0,0 @@ -/*! tailwindcss v4.3.2 | MIT License | https://tailwindcss.com */ -@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-pan-x:initial;--tw-pan-y:initial;--tw-pinch-zoom:initial;--tw-space-y-reverse:0;--tw-space-x-reverse:0;--tw-divide-x-reverse:0;--tw-border-style:solid;--tw-divide-y-reverse:0;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial}}}@layer theme{:root,:host{--font-sans:var(--font-sans);--font-serif:var(--font-serif);--font-mono:var(--font-mono);--spacing:.25rem;--container-sm:24rem;--container-lg:32rem;--container-2xl:42rem;--container-4xl:56rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height:calc(1.5 / 1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-3xl:1.875rem;--text-3xl--line-height:calc(2.25 / 1.875);--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-tight:-.025em;--tracking-wide:.025em;--shadow-2xs:var(--shadow-2xs);--shadow-xs:var(--shadow-xs);--shadow-sm:var(--shadow-sm);--shadow-md:var(--shadow-md);--shadow-lg:var(--shadow-lg);--shadow-xl:var(--shadow-xl);--shadow-2xl:var(--shadow-2xl);--aspect-video:16 / 9;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--shadow:var(--shadow)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}*{border-color:var(--border);outline-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){*{outline-color:color-mix(in oklab, var(--ring) 50%, transparent)}}body{background-color:var(--background);color:var(--foreground)}}@layer components;@layer utilities{.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.not-sr-only{clip-path:none;white-space:normal;width:auto;height:auto;margin:0;padding:0;position:static;overflow:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.isolate{isolation:isolate}.isolation-auto{isolation:auto}.order-1{order:1}.order-2{order:2}.order-3{order:3}.order-4{order:4}.order-5{order:5}.order-6{order:6}.order-7{order:7}.order-8{order:8}.order-9{order:9}.order-10{order:10}.order-11{order:11}.order-12{order:12}.col-span-1{grid-column:span 1/span 1}.col-span-2{grid-column:span 2/span 2}.col-span-3{grid-column:span 3/span 3}.col-span-4{grid-column:span 4/span 4}.col-span-5{grid-column:span 5/span 5}.col-span-6{grid-column:span 6/span 6}.col-span-7{grid-column:span 7/span 7}.col-span-8{grid-column:span 8/span 8}.col-span-9{grid-column:span 9/span 9}.col-span-10{grid-column:span 10/span 10}.col-span-11{grid-column:span 11/span 11}.col-span-12{grid-column:span 12/span 12}.col-start-1{grid-column-start:1}.col-start-2{grid-column-start:2}.col-start-3{grid-column-start:3}.col-start-4{grid-column-start:4}.col-start-5{grid-column-start:5}.col-start-6{grid-column-start:6}.col-start-7{grid-column-start:7}.col-start-8{grid-column-start:8}.col-start-9{grid-column-start:9}.col-start-10{grid-column-start:10}.col-start-11{grid-column-start:11}.col-start-12{grid-column-start:12}.col-end-1{grid-column-end:1}.col-end-2{grid-column-end:2}.col-end-3{grid-column-end:3}.col-end-4{grid-column-end:4}.col-end-5{grid-column-end:5}.col-end-6{grid-column-end:6}.col-end-7{grid-column-end:7}.col-end-8{grid-column-end:8}.col-end-9{grid-column-end:9}.col-end-10{grid-column-end:10}.col-end-11{grid-column-end:11}.col-end-12{grid-column-end:12}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.m-auto{margin:auto}.mx-auto{margin-inline:auto}.my-4{margin-block:calc(var(--spacing) * 4)}.block{display:block}.contents{display:contents}.flex{display:flex}.flow-root{display:flow-root}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.inline-grid{display:inline-grid}.inline-table{display:inline-table}.list-item{display:list-item}.table{display:table}.table-caption{display:table-caption}.table-cell{display:table-cell}.table-column{display:table-column}.table-column-group{display:table-column-group}.table-footer-group{display:table-footer-group}.table-header-group{display:table-header-group}.table-row{display:table-row}.table-row-group{display:table-row-group}.aspect-auto{aspect-ratio:auto}.aspect-square{aspect-ratio:1}.aspect-video{aspect-ratio:var(--aspect-video)}.h-1{height:var(--spacing)}.h-2{height:calc(var(--spacing) * 2)}.h-3{height:calc(var(--spacing) * 3)}.h-4{height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-8{height:calc(var(--spacing) * 8)}.h-10{height:calc(var(--spacing) * 10)}.h-12{height:calc(var(--spacing) * 12)}.h-16{height:calc(var(--spacing) * 16)}.h-24{height:calc(var(--spacing) * 24)}.h-full{height:100%}.h-px{height:1px}.min-h-screen{min-height:100vh}.w-3{width:calc(var(--spacing) * 3)}.w-4{width:calc(var(--spacing) * 4)}.w-5{width:calc(var(--spacing) * 5)}.w-6{width:calc(var(--spacing) * 6)}.w-8{width:calc(var(--spacing) * 8)}.w-10{width:calc(var(--spacing) * 10)}.w-12{width:calc(var(--spacing) * 12)}.w-16{width:calc(var(--spacing) * 16)}.w-24{width:calc(var(--spacing) * 24)}.w-full{width:100%}.w-px{width:1px}.max-w-2xl{max-width:var(--container-2xl)}.max-w-4xl{max-width:var(--container-4xl)}.max-w-full{max-width:100%}.max-w-lg{max-width:var(--container-lg)}.max-w-none{max-width:none}.max-w-sm{max-width:var(--container-sm)}.min-w-0{min-width:0}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.border-collapse{border-collapse:collapse}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.cursor-pointer{cursor:pointer}.touch-pinch-zoom{--tw-pinch-zoom:pinch-zoom;touch-action:var(--tw-pan-x,) var(--tw-pan-y,) var(--tw-pinch-zoom,)}.resize{resize:both}.list-none{list-style-type:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.grid-cols-9{grid-template-columns:repeat(9,minmax(0,1fr))}.grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.grid-cols-11{grid-template-columns:repeat(11,minmax(0,1fr))}.grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-start{justify-content:flex-start}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-6{gap:calc(var(--spacing) * 6)}.gap-8{gap:calc(var(--spacing) * 8)}:where(.space-y-reverse>:not(:last-child)){--tw-space-y-reverse:1}:where(.space-x-reverse>:not(:last-child)){--tw-space-x-reverse:1}:where(.divide-x>:not(:last-child)){--tw-divide-x-reverse:0;border-inline-style:var(--tw-border-style);border-inline-start-width:calc(1px * var(--tw-divide-x-reverse));border-inline-end-width:calc(1px * calc(1 - var(--tw-divide-x-reverse)))}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-y-reverse>:not(:last-child)){--tw-divide-y-reverse:1}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.rounded{border-radius:.25rem}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-none{border-radius:0}.rounded-s{border-start-start-radius:.25rem;border-end-start-radius:.25rem}.rounded-ss{border-start-start-radius:.25rem}.rounded-e{border-start-end-radius:.25rem;border-end-end-radius:.25rem}.rounded-se{border-start-end-radius:.25rem}.rounded-ee{border-end-end-radius:.25rem}.rounded-es{border-end-start-radius:.25rem}.rounded-t{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.rounded-l{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.rounded-tl{border-top-left-radius:.25rem}.rounded-r{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.rounded-tr{border-top-right-radius:.25rem}.rounded-b{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.rounded-br{border-bottom-right-radius:.25rem}.rounded-bl{border-bottom-left-radius:.25rem}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-x{border-inline-style:var(--tw-border-style);border-inline-width:1px}.border-y{border-block-style:var(--tw-border-style);border-block-width:1px}.border-s{border-inline-start-style:var(--tw-border-style);border-inline-start-width:1px}.border-e{border-inline-end-style:var(--tw-border-style);border-inline-end-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-border{border-color:var(--border)}.border-destructive{border-color:var(--destructive)}.border-input{border-color:var(--input)}.border-primary{border-color:var(--primary)}.border-transparent{border-color:#0000}.bg-accent,.bg-accent\/30{background-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.bg-accent\/30{background-color:color-mix(in oklab, var(--accent) 30%, transparent)}}.bg-background{background-color:var(--background)}.bg-border{background-color:var(--border)}.bg-card,.bg-card\/50{background-color:var(--card)}@supports (color:color-mix(in lab, red, red)){.bg-card\/50{background-color:color-mix(in oklab, var(--card) 50%, transparent)}}.bg-destructive,.bg-destructive\/10{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.bg-destructive\/10{background-color:color-mix(in oklab, var(--destructive) 10%, transparent)}}.bg-foreground{background-color:var(--foreground)}.bg-muted,.bg-muted\/30{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\/30{background-color:color-mix(in oklab, var(--muted) 30%, transparent)}}.bg-muted\/40{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\/40{background-color:color-mix(in oklab, var(--muted) 40%, transparent)}}.bg-primary,.bg-primary\/10{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.bg-primary\/10{background-color:color-mix(in oklab, var(--primary) 10%, transparent)}}.bg-secondary{background-color:var(--secondary)}.bg-repeat{background-repeat:repeat}.object-contain{object-fit:contain}.object-cover{object-fit:cover}.object-fill{object-fit:fill}.object-none{object-fit:none}.object-scale-down{object-fit:scale-down}.object-bottom{object-position:bottom}.object-center{object-position:center}.object-left{object-position:left}.object-left-bottom{object-position:left bottom}.object-left-top{object-position:left top}.object-right{object-position:right}.object-right-bottom{object-position:right bottom}.object-right-top{object-position:right top}.object-top{object-position:top}.p-4{padding:calc(var(--spacing) * 4)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-8{padding-inline:calc(var(--spacing) * 8)}.py-1{padding-block:var(--spacing)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-16{padding-block:calc(var(--spacing) * 16)}.text-center{text-align:center}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.leading-none{--tw-leading:1;line-height:1}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.text-wrap{text-wrap:wrap}.text-clip{text-overflow:clip}.text-ellipsis{text-overflow:ellipsis}.whitespace-nowrap{white-space:nowrap}.text-accent-foreground{color:var(--accent-foreground)}.text-card-foreground{color:var(--card-foreground)}.text-destructive{color:var(--destructive)}.text-destructive-foreground{color:var(--destructive-foreground)}.text-foreground{color:var(--foreground)}.text-muted-foreground{color:var(--muted-foreground)}.text-primary{color:var(--primary)}.text-primary-foreground{color:var(--primary-foreground)}.text-secondary-foreground{color:var(--secondary-foreground)}.capitalize{text-transform:capitalize}.lowercase{text-transform:lowercase}.normal-case{text-transform:none}.uppercase{text-transform:uppercase}.italic{font-style:italic}.not-italic{font-style:normal}.diagonal-fractions{--tw-numeric-fraction:diagonal-fractions;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.lining-nums{--tw-numeric-figure:lining-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.oldstyle-nums{--tw-numeric-figure:oldstyle-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.ordinal{--tw-ordinal:ordinal;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.proportional-nums{--tw-numeric-spacing:proportional-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.slashed-zero{--tw-slashed-zero:slashed-zero;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.stacked-fractions{--tw-numeric-fraction:stacked-fractions;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.normal-nums{font-variant-numeric:normal}.line-through{text-decoration-line:line-through}.no-underline{text-decoration-line:none}.overline{text-decoration-line:overline}.underline{text-decoration-line:underline}.underline-offset-4{text-underline-offset:4px}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.subpixel-antialiased{-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto}.accent-muted-foreground{accent-color:var(--muted-foreground)}.accent-primary{accent-color:var(--primary)}.opacity-50{opacity:.5}.shadow{--tw-shadow:var(--shadow);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-lg{--tw-shadow:var(--shadow-lg);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-none{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-sm{--tw-shadow:var(--shadow-sm);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-offset-background{--tw-ring-offset-color:var(--background)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.drop-shadow{--tw-drop-shadow-size:drop-shadow(0 1px 2px var(--tw-drop-shadow-color,#0000001a)) drop-shadow(0 1px 1px var(--tw-drop-shadow-color,#0000000f));--tw-drop-shadow:drop-shadow(0 1px 2px #0000001a) drop-shadow(0 1px 1px #0000000f);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.grayscale{--tw-grayscale:grayscale(100%);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.invert{--tw-invert:invert(100%);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.sepia{--tw-sepia:sepia(100%);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-blur{--tw-backdrop-blur:blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-grayscale{--tw-backdrop-grayscale:grayscale(100%);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-invert{--tw-backdrop-invert:invert(100%);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-sepia{--tw-backdrop-sepia:sepia(100%);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.outline-none{--tw-outline-style:none;outline-style:none}:where(.divide-x-reverse>:not(:last-child)){--tw-divide-x-reverse:1}.ring-inset{--tw-ring-inset:inset}.backdrop\:bg-background\/80::backdrop{background-color:var(--background)}@supports (color:color-mix(in lab, red, red)){.backdrop\:bg-background\/80::backdrop{background-color:color-mix(in oklab, var(--background) 80%, transparent)}}@media (hover:hover){.hover\:bg-accent:hover{background-color:var(--accent)}.hover\:bg-destructive\/80:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-destructive\/80:hover{background-color:color-mix(in oklab, var(--destructive) 80%, transparent)}}.hover\:bg-destructive\/90:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-destructive\/90:hover{background-color:color-mix(in oklab, var(--destructive) 90%, transparent)}}.hover\:bg-primary\/80:hover{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-primary\/80:hover{background-color:color-mix(in oklab, var(--primary) 80%, transparent)}}.hover\:bg-primary\/90:hover{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-primary\/90:hover{background-color:color-mix(in oklab, var(--primary) 90%, transparent)}}.hover\:bg-secondary\/80:hover{background-color:var(--secondary)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-secondary\/80:hover{background-color:color-mix(in oklab, var(--secondary) 80%, transparent)}}.hover\:text-accent-foreground:hover{color:var(--accent-foreground)}.hover\:text-foreground:hover{color:var(--foreground)}.hover\:text-primary:hover{color:var(--primary)}.hover\:underline:hover{text-decoration-line:underline}}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus\:ring-ring:focus{--tw-ring-color:var(--ring)}.focus\:ring-offset-2:focus{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-visible\:ring-ring:focus-visible{--tw-ring-color:var(--ring)}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}@media (min-width:48rem){.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:80rem){.xl\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.xl\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}.\[\&\:\:-webkit-details-marker\]\:hidden::-webkit-details-marker{display:none}}:root{--background:#e8ebed;--foreground:#333;--card:#fff;--card-foreground:#333;--popover:#fff;--popover-foreground:#333;--primary:#df6035;--primary-foreground:#fff;--secondary:#2f4b79;--secondary-foreground:#fff;--muted:#f9fafb;--muted-foreground:#6b7280;--accent:#d6e4f0;--accent-foreground:#1e3a8a;--destructive:#ef4444;--destructive-foreground:#fff;--success:#16a34a;--success-foreground:#fff;--warning:#eab308;--warning-foreground:#1a1a1a;--border:#ccc;--input:#f4f5f7;--ring:#e05d38;--chart-1:#7399bf;--chart-2:#e16f41;--chart-3:#d54450;--chart-4:#e2b146;--chart-5:#3c4c76;--sidebar:#dddfe2;--sidebar-foreground:#333;--sidebar-primary:#e05d38;--sidebar-primary-foreground:#fff;--sidebar-accent:#d6e4f0;--sidebar-accent-foreground:#1e3a8a;--sidebar-border:#e5e7eb;--sidebar-ring:#e05d38;--font-sans:"Google Sans", sans-serif;--font-serif:ui-serif, Georgia, serif;--font-mono:"Source Code Pro", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;--radius:.5rem;--shadow-x:0px;--shadow-y:1px;--shadow-blur:3px;--shadow-spread:0px;--shadow-opacity:.1;--shadow-color:#1a1a1a;--shadow-2xs:0px 1px 3px 0px #1a1a1a0d;--shadow-xs:0px 1px 3px 0px #1a1a1a0d;--shadow-sm:0px 1px 3px 0px #1a1a1a1a, 0px 1px 2px -1px #1a1a1a1a;--shadow:0px 1px 3px 0px #1a1a1a1a, 0px 1px 2px -1px #1a1a1a1a;--shadow-md:0px 1px 3px 0px #1a1a1a1a, 0px 2px 4px -1px #1a1a1a1a;--shadow-lg:0px 1px 3px 0px #1a1a1a1a, 0px 4px 6px -1px #1a1a1a1a;--shadow-xl:0px 1px 3px 0px #1a1a1a1a, 0px 8px 10px -1px #1a1a1a1a;--shadow-2xl:0px 1px 3px 0px #1a1a1a40;--tracking-normal:0em;--spacing:.25rem;--code-default:var(--foreground);--code-comment:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){:root{--code-comment:color-mix(in hsl, var(--muted-foreground) 88%, var(--foreground))}}:root{--code-keyword:#63149f;--code-keyword-op:#63149f;--code-keyword-const:#0000c2;--code-type:#005a61;--code-string:#2546bb;--code-number:#0000c2;--code-name:var(--foreground);--code-at:var(--foreground);--code-function:#7f064c;--code-variable:#00558a;--code-builtin:#8f0069;--code-operator:#00558a;--code-tag:#00558a;--code-error-fg:var(--destructive);--code-error-bg:var(--destructive)}@supports (color:color-mix(in lab, red, red)){:root{--code-error-bg:color-mix(in hsl, var(--destructive) 15%, transparent)}}:root{--code-diff-add:#005a61;--code-diff-del:var(--destructive);--code-highlight:var(--accent)}@supports (color:color-mix(in lab, red, red)){:root{--code-highlight:color-mix(in hsl, var(--accent) 50%, transparent)}}.dark{--background:#1a1a1a;--foreground:#e5e5e5;--card:#202020;--card-foreground:#e5e5e5;--popover:#202020;--popover-foreground:#e5e5e5;--primary:#df6035;--primary-foreground:#fff;--secondary:#284167;--secondary-foreground:#e5e5e5;--muted:#2a2a2a;--muted-foreground:gray;--accent:#2a3656;--accent-foreground:#bfdbfe;--destructive:#ef4444;--destructive-foreground:#fff;--success:#16a34a;--success-foreground:#fff;--warning:#eab308;--warning-foreground:#1a1a1a;--border:#353535;--input:#303030;--ring:#e05d38;--chart-1:#85a6c7;--chart-2:#e16f41;--chart-3:#d54450;--chart-4:#e2b146;--chart-5:#3c4c76;--sidebar:#1f1f1f;--sidebar-foreground:#e5e5e5;--sidebar-primary:#e05d38;--sidebar-primary-foreground:#fff;--sidebar-accent:#2a3656;--sidebar-accent-foreground:#bfdbfe;--sidebar-border:#353535;--sidebar-ring:#e05d38;--font-sans:"Google Sans", sans-serif;--font-serif:ui-serif, Georgia, serif;--font-mono:"Source Code Pro", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;--radius:.5rem;--shadow-x:0px;--shadow-y:1px;--shadow-blur:3px;--shadow-spread:0px;--shadow-opacity:.1;--shadow-color:#1a1a1a;--shadow-2xs:0px 1px 3px 0px #1a1a1a0d;--shadow-xs:0px 1px 3px 0px #1a1a1a0d;--shadow-sm:0px 1px 3px 0px #1a1a1a1a, 0px 1px 2px -1px #1a1a1a1a;--shadow:0px 1px 3px 0px #1a1a1a1a, 0px 1px 2px -1px #1a1a1a1a;--shadow-md:0px 1px 3px 0px #1a1a1a1a, 0px 2px 4px -1px #1a1a1a1a;--shadow-lg:0px 1px 3px 0px #1a1a1a1a, 0px 4px 6px -1px #1a1a1a1a;--shadow-xl:0px 1px 3px 0px #1a1a1a1a, 0px 8px 10px -1px #1a1a1a1a;--shadow-2xl:0px 1px 3px 0px #1a1a1a40;--code-comment:#a8a8a8;--code-keyword:#bea8ff;--code-keyword-op:#bea8ff;--code-keyword-const:#00bfff;--code-type:#78e3bc;--code-string:#7aa2ff;--code-number:#00bfff;--code-function:#fdafd6;--code-variable:#00d1ca;--code-builtin:#f99fec;--code-operator:#00d1ca;--code-tag:#00d1ca;--code-diff-add:#78e3bc;--code-highlight:var(--accent)}@supports (color:color-mix(in lab, red, red)){.dark{--code-highlight:color-mix(in hsl, var(--accent) 65%, transparent)}}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-pan-x{syntax:"*";inherits:false}@property --tw-pan-y{syntax:"*";inherits:false}@property --tw-pinch-zoom{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false} \ No newline at end of file diff --git a/examples/web/static/css/input.css b/examples/web/static/css/input.css deleted file mode 100644 index 4749582..0000000 --- a/examples/web/static/css/input.css +++ /dev/null @@ -1,21 +0,0 @@ -@import "tailwindcss"; - -@source "../../../../generated/ui/**/*.tsx"; -@source "../../../../generated/ui/**/*.svelte"; -@source "../../../../generated/ui/**/*.vue"; -@source "../../../../generated/ui/**/*.templ"; -@source "../../../../generated/ui/**/*_templ.go"; -@source "../../../../generated/ui/**/*.variants.json"; -@source "../../../../generated/utils/**/*.ts"; -@source "../../../../generated/ui/**/*.latte"; -@source "../../../../generated/ui/**/*.html.twig"; -@source "../../../react/src/**/*.tsx"; -@source "../../../svelte/src/**/*.svelte"; -@source "../../../vue/src/**/*.vue"; -@source "../../../solid/src/**/*.tsx"; -@source "../../../templ/**/*.templ"; -@source "../../../templ/**/*_templ.go"; -@source "../../../latte/templates/**/*.latte"; -@source "../../../twig/templates/**/*.html.twig"; - -@import "./tokens.css"; diff --git a/examples/web/static/css/tokens.css b/examples/web/static/css/tokens.css deleted file mode 100644 index a5c5820..0000000 --- a/examples/web/static/css/tokens.css +++ /dev/null @@ -1,221 +0,0 @@ -@custom-variant dark (&:is(.dark *)); - -:root { - --background: hsl(204.0000 12.1951% 91.9608%); - --foreground: hsl(0 0% 20%); - --card: hsl(0 0% 100%); - --card-foreground: hsl(0 0% 20%); - --popover: hsl(0 0% 100%); - --popover-foreground: hsl(0 0% 20%); - --primary: hsl(15.1765 72.6496% 54.1176%); - --primary-foreground: hsl(0 0% 100%); - --secondary: hsl(217.2973 44.0476% 32.9412%); - --secondary-foreground: hsl(0 0% 100%); - --muted: hsl(210 20.0000% 98.0392%); - --muted-foreground: hsl(220 8.9362% 46.0784%); - --accent: hsl(207.6923 46.4286% 89.0196%); - --accent-foreground: hsl(224.4444 64.2857% 32.9412%); - --destructive: hsl(0 84.2365% 60.1961%); - --destructive-foreground: hsl(0 0% 100%); - --success: hsl(142.1 76.2% 36.3%); - --success-foreground: hsl(0 0% 100%); - --warning: hsl(45.4 93.4% 47.5%); - --warning-foreground: hsl(0 0% 10%); - --border: hsl(0 0% 80%); - --input: hsl(220 15.7895% 96.2745%); - --ring: hsl(13.2143 73.0435% 54.9020%); - --chart-1: hsl(210 37.2549% 60%); - --chart-2: hsl(17.2500 72.7273% 56.8627%); - --chart-3: hsl(355.0345 63.3188% 55.0980%); - --chart-4: hsl(41.1538 72.8972% 58.0392%); - --chart-5: hsl(223.4483 32.5843% 34.9020%); - --sidebar: hsl(216 7.9365% 87.6471%); - --sidebar-foreground: hsl(0 0% 20%); - --sidebar-primary: hsl(13.2143 73.0435% 54.9020%); - --sidebar-primary-foreground: hsl(0 0% 100%); - --sidebar-accent: hsl(207.6923 46.4286% 89.0196%); - --sidebar-accent-foreground: hsl(224.4444 64.2857% 32.9412%); - --sidebar-border: hsl(220 13.0435% 90.9804%); - --sidebar-ring: hsl(13.2143 73.0435% 54.9020%); - --font-sans: "Google Sans", sans-serif; - --font-serif: ui-serif, Georgia, serif; - --font-mono: "Source Code Pro", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; - --radius: 0.5rem; - --shadow-x: 0px; - --shadow-y: 1px; - --shadow-blur: 3px; - --shadow-spread: 0px; - --shadow-opacity: 0.1; - --shadow-color: #1a1a1a; - --shadow-2xs: 0px 1px 3px 0px hsl(0 0% 10.1961% / 0.05); - --shadow-xs: 0px 1px 3px 0px hsl(0 0% 10.1961% / 0.05); - --shadow-sm: 0px 1px 3px 0px hsl(0 0% 10.1961% / 0.10), 0px 1px 2px -1px hsl(0 0% 10.1961% / 0.10); - --shadow: 0px 1px 3px 0px hsl(0 0% 10.1961% / 0.10), 0px 1px 2px -1px hsl(0 0% 10.1961% / 0.10); - --shadow-md: 0px 1px 3px 0px hsl(0 0% 10.1961% / 0.10), 0px 2px 4px -1px hsl(0 0% 10.1961% / 0.10); - --shadow-lg: 0px 1px 3px 0px hsl(0 0% 10.1961% / 0.10), 0px 4px 6px -1px hsl(0 0% 10.1961% / 0.10); - --shadow-xl: 0px 1px 3px 0px hsl(0 0% 10.1961% / 0.10), 0px 8px 10px -1px hsl(0 0% 10.1961% / 0.10); - --shadow-2xl: 0px 1px 3px 0px hsl(0 0% 10.1961% / 0.25); - --tracking-normal: 0em; - --spacing: 0.25rem; - - /* Modus Operandi (light) code roles — see modus-vivendi overrides in .dark */ - --code-default: var(--foreground); - --code-comment: color-mix(in hsl, var(--muted-foreground) 88%, var(--foreground)); - --code-keyword: hsl(274 78% 35%); - --code-keyword-op: hsl(274 78% 35%); - --code-keyword-const: hsl(240 100% 38%); - --code-type: hsl(184 100% 19%); - --code-string: hsl(227 67% 44%); - --code-number: hsl(240 100% 38%); - --code-name: var(--foreground); - --code-at: var(--foreground); - --code-function: hsl(325 91% 26%); - --code-variable: hsl(203 100% 27%); - --code-builtin: hsl(316 100% 28%); - --code-operator: hsl(203 100% 27%); - --code-tag: hsl(203 100% 27%); - --code-error-fg: var(--destructive); - --code-error-bg: color-mix(in hsl, var(--destructive) 15%, transparent); - --code-diff-add: hsl(184 100% 19%); - --code-diff-del: var(--destructive); - --code-highlight: color-mix(in hsl, var(--accent) 50%, transparent); -} - -.dark { - --background: hsl(0 0% 10.1961%); - --foreground: hsl(0 0% 89.8039%); - --card: hsl(0 0% 12.5490%); - --card-foreground: hsl(0 0% 89.8039%); - --popover: hsl(0 0% 12.5490%); - --popover-foreground: hsl(0 0% 89.8039%); - --primary: hsl(15.1765 72.6496% 54.1176%); - --primary-foreground: hsl(0 0% 100%); - --secondary: hsl(216.1905 44.0559% 28.0392%); - --secondary-foreground: hsl(0 0% 89.8039%); - --muted: hsl(0 0% 16.4706%); - --muted-foreground: hsl(0 0% 50.1961%); - --accent: hsl(223.6364 34.3750% 25.0980%); - --accent-foreground: hsl(213.3333 96.9231% 87.2549%); - --destructive: hsl(0 84.2365% 60.1961%); - --destructive-foreground: hsl(0 0% 100%); - --success: hsl(142.1 76.2% 36.3%); - --success-foreground: hsl(0 0% 100%); - --warning: hsl(45.4 93.4% 47.5%); - --warning-foreground: hsl(0 0% 10%); - --border: hsl(0 0% 20.7843%); - --input: hsl(0 0% 18.8235%); - --ring: hsl(13.2143 73.0435% 54.9020%); - --chart-1: hsl(210 37.0787% 65.0980%); - --chart-2: hsl(17.2500 72.7273% 56.8627%); - --chart-3: hsl(355.0345 63.3188% 55.0980%); - --chart-4: hsl(41.1538 72.8972% 58.0392%); - --chart-5: hsl(223.4483 32.5843% 34.9020%); - --sidebar: hsl(0 0% 12.1569%); - --sidebar-foreground: hsl(0 0% 89.8039%); - --sidebar-primary: hsl(13.2143 73.0435% 54.9020%); - --sidebar-primary-foreground: hsl(0 0% 100%); - --sidebar-accent: hsl(223.6364 34.3750% 25.0980%); - --sidebar-accent-foreground: hsl(213.3333 96.9231% 87.2549%); - --sidebar-border: hsl(0 0% 20.7843%); - --sidebar-ring: hsl(13.2143 73.0435% 54.9020%); - --font-sans: "Google Sans", sans-serif; - --font-serif: ui-serif, Georgia, serif; - --font-mono: "Source Code Pro", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; - --radius: 0.5rem; - --shadow-x: 0px; - --shadow-y: 1px; - --shadow-blur: 3px; - --shadow-spread: 0px; - --shadow-opacity: 0.1; - --shadow-color: #1a1a1a; - --shadow-2xs: 0px 1px 3px 0px hsl(0 0% 10.1961% / 0.05); - --shadow-xs: 0px 1px 3px 0px hsl(0 0% 10.1961% / 0.05); - --shadow-sm: 0px 1px 3px 0px hsl(0 0% 10.1961% / 0.10), 0px 1px 2px -1px hsl(0 0% 10.1961% / 0.10); - --shadow: 0px 1px 3px 0px hsl(0 0% 10.1961% / 0.10), 0px 1px 2px -1px hsl(0 0% 10.1961% / 0.10); - --shadow-md: 0px 1px 3px 0px hsl(0 0% 10.1961% / 0.10), 0px 2px 4px -1px hsl(0 0% 10.1961% / 0.10); - --shadow-lg: 0px 1px 3px 0px hsl(0 0% 10.1961% / 0.10), 0px 4px 6px -1px hsl(0 0% 10.1961% / 0.10); - --shadow-xl: 0px 1px 3px 0px hsl(0 0% 10.1961% / 0.10), 0px 8px 10px -1px hsl(0 0% 10.1961% / 0.10); - --shadow-2xl: 0px 1px 3px 0px hsl(0 0% 10.1961% / 0.25); - - /* Modus Vivendi (dark) code roles */ - --code-comment: hsl(0 0% 66%); - --code-keyword: hsl(255 100% 83%); - --code-keyword-op: hsl(255 100% 83%); - --code-keyword-const: hsl(195 100% 50%); - --code-type: hsl(158 66% 68%); - --code-string: hsl(222 100% 74%); - --code-number: hsl(195 100% 50%); - --code-function: hsl(330 95% 84%); - --code-variable: hsl(178 100% 41%); - --code-builtin: hsl(309 89% 80%); - --code-operator: hsl(178 100% 41%); - --code-tag: hsl(178 100% 41%); - --code-diff-add: hsl(158 66% 68%); - --code-highlight: color-mix(in hsl, var(--accent) 65%, transparent); -} - -@theme inline { - --color-background: var(--background); - --color-foreground: var(--foreground); - --color-card: var(--card); - --color-card-foreground: var(--card-foreground); - --color-popover: var(--popover); - --color-popover-foreground: var(--popover-foreground); - --color-primary: var(--primary); - --color-primary-foreground: var(--primary-foreground); - --color-secondary: var(--secondary); - --color-secondary-foreground: var(--secondary-foreground); - --color-muted: var(--muted); - --color-muted-foreground: var(--muted-foreground); - --color-accent: var(--accent); - --color-accent-foreground: var(--accent-foreground); - --color-destructive: var(--destructive); - --color-destructive-foreground: var(--destructive-foreground); - --color-success: var(--success); - --color-success-foreground: var(--success-foreground); - --color-warning: var(--warning); - --color-warning-foreground: var(--warning-foreground); - --color-border: var(--border); - --color-input: var(--input); - --color-ring: var(--ring); - --color-chart-1: var(--chart-1); - --color-chart-2: var(--chart-2); - --color-chart-3: var(--chart-3); - --color-chart-4: var(--chart-4); - --color-chart-5: var(--chart-5); - --color-sidebar: var(--sidebar); - --color-sidebar-foreground: var(--sidebar-foreground); - --color-sidebar-primary: var(--sidebar-primary); - --color-sidebar-primary-foreground: var(--sidebar-primary-foreground); - --color-sidebar-accent: var(--sidebar-accent); - --color-sidebar-accent-foreground: var(--sidebar-accent-foreground); - --color-sidebar-border: var(--sidebar-border); - --color-sidebar-ring: var(--sidebar-ring); - - --font-sans: var(--font-sans); - --font-mono: var(--font-mono); - --font-serif: var(--font-serif); - - --radius-sm: calc(var(--radius) - 4px); - --radius-md: calc(var(--radius) - 2px); - --radius-lg: var(--radius); - --radius-xl: calc(var(--radius) + 4px); - - --shadow-2xs: var(--shadow-2xs); - --shadow-xs: var(--shadow-xs); - --shadow-sm: var(--shadow-sm); - --shadow: var(--shadow); - --shadow-md: var(--shadow-md); - --shadow-lg: var(--shadow-lg); - --shadow-xl: var(--shadow-xl); - --shadow-2xl: var(--shadow-2xl); -} - -@layer base { - * { - @apply border-border outline-ring/50; - } - body { - @apply bg-background text-foreground; - } -} diff --git a/generated/cmd/parity-latte/main.php b/generated/cmd/parity-latte/main.php deleted file mode 100644 index 9eed61d..0000000 --- a/generated/cmd/parity-latte/main.php +++ /dev/null @@ -1,29 +0,0 @@ -...", ...] - -declare(strict_types=1); - -require __DIR__ . '/../../php/vendor/autoload.php'; - -$engine = new Latte\Engine(); -$tmp = sys_get_temp_dir() . '/ui8kit-latte-' . md5(__DIR__); -if (!is_dir($tmp)) { - mkdir($tmp, 0777, true); -} -$engine->setTempDirectory($tmp); -$engine->setLoader(new Latte\Loaders\FileLoader(__DIR__ . '/../../ui')); - -$cases = json_decode(stream_get_contents(STDIN), true, 512, JSON_THROW_ON_ERROR); -$out = []; -foreach ($cases as $case) { - $params = (array) ($case['props'] ?? []); - $params['attrs'] = (array) ($case['attrs'] ?? []); - $params['children'] = (string) ($case['children'] ?? ''); - $out[] = $engine->renderToString($case['template'], $params); -} -echo json_encode($out, JSON_THROW_ON_ERROR); diff --git a/generated/cmd/parity-twig/main.php b/generated/cmd/parity-twig/main.php deleted file mode 100644 index 6132942..0000000 --- a/generated/cmd/parity-twig/main.php +++ /dev/null @@ -1,27 +0,0 @@ -...", ...] - -declare(strict_types=1); - -require __DIR__ . '/../../php/vendor/autoload.php'; - -$twig = new Twig\Environment( - new Twig\Loader\FilesystemLoader(__DIR__ . '/../../ui'), - ['autoescape' => 'html', 'strict_variables' => false, 'cache' => false] -); -$twig->addExtension(new UI8Kit\TwigExtension()); - -$cases = json_decode(stream_get_contents(STDIN), true, 512, JSON_THROW_ON_ERROR); -$out = []; -foreach ($cases as $case) { - $params = (array) ($case['props'] ?? []); - $params['attrs'] = (array) ($case['attrs'] ?? []); - $params['children'] = (string) ($case['children'] ?? ''); - $out[] = $twig->render($case['template'], $params); -} -echo json_encode($out, JSON_THROW_ON_ERROR); diff --git a/generated/cmd/parity/main.go b/generated/cmd/parity/main.go deleted file mode 100644 index f02efb7..0000000 --- a/generated/cmd/parity/main.go +++ /dev/null @@ -1,462 +0,0 @@ -// Code generated by @ui8kit/codegen. DO NOT EDIT. - -// Command parity renders any generated part from canonical JSON props. -// stdin: [{"name":"button/button/Button","props":{...},"children":"x"}] -// stdout: ["", ...] -package main - -import ( - "bufio" - "context" - "encoding/json" - "fmt" - "os" - "strings" - - "github.com/a-h/templ" - - "github.com/ui8kit/ui/ui/alert" - "github.com/ui8kit/ui/ui/badge" - "github.com/ui8kit/ui/ui/block" - "github.com/ui8kit/ui/ui/box" - "github.com/ui8kit/ui/ui/breadcrumb" - "github.com/ui8kit/ui/ui/button" - "github.com/ui8kit/ui/ui/card" - "github.com/ui8kit/ui/ui/checkbox" - "github.com/ui8kit/ui/ui/container" - "github.com/ui8kit/ui/ui/dialog" - "github.com/ui8kit/ui/ui/disclosure" - "github.com/ui8kit/ui/ui/form" - "github.com/ui8kit/ui/ui/grid" - "github.com/ui8kit/ui/ui/group" - "github.com/ui8kit/ui/ui/icon" - "github.com/ui8kit/ui/ui/iconbadge" - "github.com/ui8kit/ui/ui/image" - "github.com/ui8kit/ui/ui/inline" - "github.com/ui8kit/ui/ui/input" - "github.com/ui8kit/ui/ui/label" - "github.com/ui8kit/ui/ui/linebreak" - "github.com/ui8kit/ui/ui/link" - "github.com/ui8kit/ui/ui/list" - "github.com/ui8kit/ui/ui/radio" - selectfield "github.com/ui8kit/ui/ui/select" - "github.com/ui8kit/ui/ui/separator" - "github.com/ui8kit/ui/ui/stack" - formswitch "github.com/ui8kit/ui/ui/switch" - "github.com/ui8kit/ui/ui/table" - "github.com/ui8kit/ui/ui/text" - "github.com/ui8kit/ui/ui/textarea" - "github.com/ui8kit/ui/ui/title" -) - -type renderRequest struct { - Name string `json:"name"` - Props json.RawMessage `json:"props"` - Children string `json:"children"` -} - -func renderCase(ctx context.Context, name string, propsJSON []byte, children templ.Component, buf *strings.Builder) error { - switch name { - case "alert/alert/Alert": - var p alert.AlertProps - if err := json.Unmarshal(propsJSON, &p); err != nil { - return err - } - return alert.Alert(p).Render(templ.WithChildren(ctx, children), buf) - case "badge/badge/Badge": - var p badge.BadgeProps - if err := json.Unmarshal(propsJSON, &p); err != nil { - return err - } - return badge.Badge(p).Render(templ.WithChildren(ctx, children), buf) - case "block/block/Block": - var p block.BlockProps - if err := json.Unmarshal(propsJSON, &p); err != nil { - return err - } - return block.Block(p).Render(templ.WithChildren(ctx, children), buf) - case "box/box/Box": - var p box.BoxProps - if err := json.Unmarshal(propsJSON, &p); err != nil { - return err - } - return box.Box(p).Render(templ.WithChildren(ctx, children), buf) - case "breadcrumb/breadcrumb/Breadcrumb": - var p breadcrumb.BreadcrumbProps - if err := json.Unmarshal(propsJSON, &p); err != nil { - return err - } - return breadcrumb.Breadcrumb(p).Render(ctx, buf) - case "button/button/Button": - var p button.ButtonProps - if err := json.Unmarshal(propsJSON, &p); err != nil { - return err - } - return button.Button(p).Render(templ.WithChildren(ctx, children), buf) - case "card/card/Card": - var p card.CardProps - if err := json.Unmarshal(propsJSON, &p); err != nil { - return err - } - return card.Card(p).Render(templ.WithChildren(ctx, children), buf) - case "card/card/CardHeader": - var p card.CardHeaderProps - if err := json.Unmarshal(propsJSON, &p); err != nil { - return err - } - return card.CardHeader(p).Render(templ.WithChildren(ctx, children), buf) - case "card/card/CardTitle": - var p card.CardTitleProps - if err := json.Unmarshal(propsJSON, &p); err != nil { - return err - } - return card.CardTitle(p).Render(templ.WithChildren(ctx, children), buf) - case "card/card/CardDescription": - var p card.CardDescriptionProps - if err := json.Unmarshal(propsJSON, &p); err != nil { - return err - } - return card.CardDescription(p).Render(templ.WithChildren(ctx, children), buf) - case "card/card/CardContent": - var p card.CardContentProps - if err := json.Unmarshal(propsJSON, &p); err != nil { - return err - } - return card.CardContent(p).Render(templ.WithChildren(ctx, children), buf) - case "card/card/CardFooter": - var p card.CardFooterProps - if err := json.Unmarshal(propsJSON, &p); err != nil { - return err - } - return card.CardFooter(p).Render(templ.WithChildren(ctx, children), buf) - case "checkbox/checkbox/Checkbox": - var p checkbox.CheckboxProps - if err := json.Unmarshal(propsJSON, &p); err != nil { - return err - } - return checkbox.Checkbox(p).Render(ctx, buf) - case "container/container/Container": - var p container.ContainerProps - if err := json.Unmarshal(propsJSON, &p); err != nil { - return err - } - return container.Container(p).Render(templ.WithChildren(ctx, children), buf) - case "dialog/dialog/Dialog": - var p dialog.DialogProps - if err := json.Unmarshal(propsJSON, &p); err != nil { - return err - } - return dialog.Dialog(p).Render(templ.WithChildren(ctx, children), buf) - case "disclosure/disclosure/Disclosure": - var p disclosure.DisclosureProps - if err := json.Unmarshal(propsJSON, &p); err != nil { - return err - } - return disclosure.Disclosure(p).Render(templ.WithChildren(ctx, children), buf) - case "disclosure/disclosure/Summary": - var p disclosure.SummaryProps - if err := json.Unmarshal(propsJSON, &p); err != nil { - return err - } - return disclosure.Summary(p).Render(templ.WithChildren(ctx, children), buf) - case "form/form/Form": - var p form.FormProps - if err := json.Unmarshal(propsJSON, &p); err != nil { - return err - } - return form.Form(p).Render(templ.WithChildren(ctx, children), buf) - case "form/form/FormItem": - var p form.FormItemProps - if err := json.Unmarshal(propsJSON, &p); err != nil { - return err - } - return form.FormItem(p).Render(templ.WithChildren(ctx, children), buf) - case "form/form/FormDescription": - var p form.FormDescriptionProps - if err := json.Unmarshal(propsJSON, &p); err != nil { - return err - } - return form.FormDescription(p).Render(templ.WithChildren(ctx, children), buf) - case "form/form/FormMessage": - var p form.FormMessageProps - if err := json.Unmarshal(propsJSON, &p); err != nil { - return err - } - return form.FormMessage(p).Render(templ.WithChildren(ctx, children), buf) - case "form/controls/Fieldset": - var p form.FieldsetProps - if err := json.Unmarshal(propsJSON, &p); err != nil { - return err - } - return form.Fieldset(p).Render(templ.WithChildren(ctx, children), buf) - case "form/controls/Legend": - var p form.LegendProps - if err := json.Unmarshal(propsJSON, &p); err != nil { - return err - } - return form.Legend(p).Render(templ.WithChildren(ctx, children), buf) - case "form/controls/DataList": - var p form.DataListProps - if err := json.Unmarshal(propsJSON, &p); err != nil { - return err - } - return form.DataList(p).Render(templ.WithChildren(ctx, children), buf) - case "form/controls/DataOption": - var p form.DataOptionProps - if err := json.Unmarshal(propsJSON, &p); err != nil { - return err - } - return form.DataOption(p).Render(ctx, buf) - case "form/controls/Output": - var p form.OutputProps - if err := json.Unmarshal(propsJSON, &p); err != nil { - return err - } - return form.Output(p).Render(templ.WithChildren(ctx, children), buf) - case "form/controls/Meter": - var p form.MeterProps - if err := json.Unmarshal(propsJSON, &p); err != nil { - return err - } - return form.Meter(p).Render(templ.WithChildren(ctx, children), buf) - case "form/controls/Progress": - var p form.ProgressProps - if err := json.Unmarshal(propsJSON, &p); err != nil { - return err - } - return form.Progress(p).Render(templ.WithChildren(ctx, children), buf) - case "grid/grid/Grid": - var p grid.GridProps - if err := json.Unmarshal(propsJSON, &p); err != nil { - return err - } - return grid.Grid(p).Render(templ.WithChildren(ctx, children), buf) - case "grid/grid/GridCol": - var p grid.GridColProps - if err := json.Unmarshal(propsJSON, &p); err != nil { - return err - } - return grid.GridCol(p).Render(templ.WithChildren(ctx, children), buf) - case "group/group/Group": - var p group.GroupProps - if err := json.Unmarshal(propsJSON, &p); err != nil { - return err - } - return group.Group(p).Render(templ.WithChildren(ctx, children), buf) - case "icon/icon/Icon": - var p icon.IconProps - if err := json.Unmarshal(propsJSON, &p); err != nil { - return err - } - return icon.Icon(p).Render(templ.WithChildren(ctx, children), buf) - case "iconbadge/iconbadge/IconBadge": - var p iconbadge.IconBadgeProps - if err := json.Unmarshal(propsJSON, &p); err != nil { - return err - } - return iconbadge.IconBadge(p).Render(templ.WithChildren(ctx, children), buf) - case "image/image/Image": - var p image.ImageProps - if err := json.Unmarshal(propsJSON, &p); err != nil { - return err - } - return image.Image(p).Render(ctx, buf) - case "image/image/Picture": - var p image.PictureProps - if err := json.Unmarshal(propsJSON, &p); err != nil { - return err - } - return image.Picture(p).Render(templ.WithChildren(ctx, children), buf) - case "image/image/Source": - var p image.SourceProps - if err := json.Unmarshal(propsJSON, &p); err != nil { - return err - } - return image.Source(p).Render(ctx, buf) - case "inline/inline/Inline": - var p inline.InlineProps - if err := json.Unmarshal(propsJSON, &p); err != nil { - return err - } - return inline.Inline(p).Render(templ.WithChildren(ctx, children), buf) - case "input/input/Input": - var p input.InputProps - if err := json.Unmarshal(propsJSON, &p); err != nil { - return err - } - return input.Input(p).Render(ctx, buf) - case "label/label/Label": - var p label.LabelProps - if err := json.Unmarshal(propsJSON, &p); err != nil { - return err - } - return label.Label(p).Render(templ.WithChildren(ctx, children), buf) - case "linebreak/linebreak/Break": - var p linebreak.BreakProps - if err := json.Unmarshal(propsJSON, &p); err != nil { - return err - } - return linebreak.Break(p).Render(ctx, buf) - case "link/link/Link": - var p link.LinkProps - if err := json.Unmarshal(propsJSON, &p); err != nil { - return err - } - return link.Link(p).Render(templ.WithChildren(ctx, children), buf) - case "list/list/List": - var p list.ListProps - if err := json.Unmarshal(propsJSON, &p); err != nil { - return err - } - return list.List(p).Render(templ.WithChildren(ctx, children), buf) - case "list/list/ListItem": - var p list.ListItemProps - if err := json.Unmarshal(propsJSON, &p); err != nil { - return err - } - return list.ListItem(p).Render(templ.WithChildren(ctx, children), buf) - case "radio/radio/Radio": - var p radio.RadioProps - if err := json.Unmarshal(propsJSON, &p); err != nil { - return err - } - return radio.Radio(p).Render(ctx, buf) - case "select/select/Select": - var p selectfield.SelectProps - if err := json.Unmarshal(propsJSON, &p); err != nil { - return err - } - return selectfield.Select(p).Render(templ.WithChildren(ctx, children), buf) - case "select/select/SelectOption": - var p selectfield.SelectOptionProps - if err := json.Unmarshal(propsJSON, &p); err != nil { - return err - } - return selectfield.SelectOption(p).Render(templ.WithChildren(ctx, children), buf) - case "select/select/OptGroup": - var p selectfield.OptGroupProps - if err := json.Unmarshal(propsJSON, &p); err != nil { - return err - } - return selectfield.OptGroup(p).Render(templ.WithChildren(ctx, children), buf) - case "separator/separator/Separator": - var p separator.SeparatorProps - if err := json.Unmarshal(propsJSON, &p); err != nil { - return err - } - return separator.Separator(p).Render(ctx, buf) - case "stack/stack/Stack": - var p stack.StackProps - if err := json.Unmarshal(propsJSON, &p); err != nil { - return err - } - return stack.Stack(p).Render(templ.WithChildren(ctx, children), buf) - case "switch/switch/Switch": - var p formswitch.SwitchProps - if err := json.Unmarshal(propsJSON, &p); err != nil { - return err - } - return formswitch.Switch(p).Render(ctx, buf) - case "table/table/Table": - var p table.TableProps - if err := json.Unmarshal(propsJSON, &p); err != nil { - return err - } - return table.Table(p).Render(templ.WithChildren(ctx, children), buf) - case "table/table/TableCaption": - var p table.TableCaptionProps - if err := json.Unmarshal(propsJSON, &p); err != nil { - return err - } - return table.TableCaption(p).Render(templ.WithChildren(ctx, children), buf) - case "table/table/TableHead": - var p table.TableHeadProps - if err := json.Unmarshal(propsJSON, &p); err != nil { - return err - } - return table.TableHead(p).Render(templ.WithChildren(ctx, children), buf) - case "table/table/TableBody": - var p table.TableBodyProps - if err := json.Unmarshal(propsJSON, &p); err != nil { - return err - } - return table.TableBody(p).Render(templ.WithChildren(ctx, children), buf) - case "table/table/TableFoot": - var p table.TableFootProps - if err := json.Unmarshal(propsJSON, &p); err != nil { - return err - } - return table.TableFoot(p).Render(templ.WithChildren(ctx, children), buf) - case "table/table/TableRow": - var p table.TableRowProps - if err := json.Unmarshal(propsJSON, &p); err != nil { - return err - } - return table.TableRow(p).Render(templ.WithChildren(ctx, children), buf) - case "table/table/TableHeadCell": - var p table.TableHeadCellProps - if err := json.Unmarshal(propsJSON, &p); err != nil { - return err - } - return table.TableHeadCell(p).Render(templ.WithChildren(ctx, children), buf) - case "table/table/TableCell": - var p table.TableCellProps - if err := json.Unmarshal(propsJSON, &p); err != nil { - return err - } - return table.TableCell(p).Render(templ.WithChildren(ctx, children), buf) - case "table/table/TableColGroup": - var p table.TableColGroupProps - if err := json.Unmarshal(propsJSON, &p); err != nil { - return err - } - return table.TableColGroup(p).Render(templ.WithChildren(ctx, children), buf) - case "table/table/TableCol": - var p table.TableColProps - if err := json.Unmarshal(propsJSON, &p); err != nil { - return err - } - return table.TableCol(p).Render(ctx, buf) - case "text/text/Text": - var p text.TextProps - if err := json.Unmarshal(propsJSON, &p); err != nil { - return err - } - return text.Text(p).Render(templ.WithChildren(ctx, children), buf) - case "textarea/textarea/Textarea": - var p textarea.TextareaProps - if err := json.Unmarshal(propsJSON, &p); err != nil { - return err - } - return textarea.Textarea(p).Render(ctx, buf) - case "title/title/Title": - var p title.TitleProps - if err := json.Unmarshal(propsJSON, &p); err != nil { - return err - } - return title.Title(p).Render(templ.WithChildren(ctx, children), buf) - } - return fmt.Errorf("unknown case %q", name) -} - -func main() { - var requests []renderRequest - if err := json.NewDecoder(bufio.NewReader(os.Stdin)).Decode(&requests); err != nil { - fmt.Fprintln(os.Stderr, err) - os.Exit(1) - } - results := make([]string, 0, len(requests)) - for _, req := range requests { - var buf strings.Builder - children := templ.Raw(req.Children) - if err := renderCase(context.Background(), req.Name, req.Props, children, &buf); err != nil { - fmt.Fprintf(os.Stderr, "%s: %v\n", req.Name, err) - os.Exit(1) - } - results = append(results, buf.String()) - } - if err := json.NewEncoder(os.Stdout).Encode(results); err != nil { - fmt.Fprintln(os.Stderr, err) - os.Exit(1) - } -} diff --git a/generated/composer.json b/generated/composer.json deleted file mode 100644 index 9654feb..0000000 --- a/generated/composer.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "description": "Generated UI8Kit PHP runtimes (Latte + Twig). Do not edit.", - "config": { - "vendor-dir": "php/vendor" - }, - "require": { - "php": ">=8.1", - "latte/latte": "^3.0", - "twig/twig": "^3.0" - }, - "autoload": { - "psr-4": { - "UI8Kit\\": "php/UI8Kit/" - } - } -} diff --git a/generated/composer.lock b/generated/composer.lock deleted file mode 100644 index 98fd640..0000000 --- a/generated/composer.lock +++ /dev/null @@ -1,431 +0,0 @@ -{ - "_readme": [ - "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", - "This file is @generated automatically" - ], - "content-hash": "e50ead6fd841707ba46459723d1eeeeb", - "packages": [ - { - "name": "latte/latte", - "version": "v3.1.4", - "source": { - "type": "git", - "url": "https://github.com/nette/latte.git", - "reference": "14dea9fc32c0d1cf5e9a1bd59556ae8be023c2a6" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/latte/zipball/14dea9fc32c0d1cf5e9a1bd59556ae8be023c2a6", - "reference": "14dea9fc32c0d1cf5e9a1bd59556ae8be023c2a6", - "shasum": "" - }, - "require": { - "ext-json": "*", - "ext-tokenizer": "*", - "php": "8.2 - 8.5" - }, - "conflict": { - "nette/application": "<3.1.7", - "nette/caching": "<3.1.4" - }, - "require-dev": { - "nette/php-generator": "^4.0", - "nette/phpstan-rules": "^1.0", - "nette/tester": "^2.6", - "nette/utils": "^4.0", - "phpstan/extension-installer": "^1.4@stable", - "phpstan/phpstan": "^2.1@stable", - "tracy/tracy": "^2.10" - }, - "suggest": { - "ext-fileinfo": "to use filter |datastream", - "ext-iconv": "to use filters |reverse, |substring", - "ext-intl": "to use Latte\\Engine::setLocale()", - "ext-mbstring": "to use filters like lower, upper, capitalize, ...", - "nette/php-generator": "to use tag {templatePrint}", - "nette/utils": "to use filter |webalize" - }, - "bin": [ - "bin/latte-lint" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.1-dev" - } - }, - "autoload": { - "psr-4": { - "Latte\\": "src/Latte" - }, - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause", - "GPL-2.0-only", - "GPL-3.0-only" - ], - "authors": [ - { - "name": "David Grudl", - "homepage": "https://davidgrudl.com" - }, - { - "name": "Nette Community", - "homepage": "https://nette.org/contributors" - } - ], - "description": "☕ Latte: the intuitive and fast template engine for those who want the most secure PHP sites. Introduces context-sensitive escaping.", - "homepage": "https://latte.nette.org", - "keywords": [ - "context-sensitive", - "engine", - "escaping", - "html", - "nette", - "security", - "template", - "twig" - ], - "support": { - "issues": "https://github.com/nette/latte/issues", - "source": "https://github.com/nette/latte/tree/v3.1.4" - }, - "time": "2026-04-23T06:30:25+00:00" - }, - { - "name": "symfony/deprecation-contracts", - "version": "v3.7.1", - "source": { - "type": "git", - "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "f3202fa1b5097b0af062dc978b32ecf63404e31d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/f3202fa1b5097b0af062dc978b32ecf63404e31d", - "reference": "f3202fa1b5097b0af062dc978b32ecf63404e31d", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "type": "library", - "extra": { - "thanks": { - "url": "https://github.com/symfony/contracts", - "name": "symfony/contracts" - }, - "branch-alias": { - "dev-main": "3.7-dev" - } - }, - "autoload": { - "files": [ - "function.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "A generic function and convention to trigger deprecation notices", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v3.7.1" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://github.com/nicolas-grekas", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2026-06-05T06:23:12+00:00" - }, - { - "name": "symfony/polyfill-ctype", - "version": "v1.37.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "141046a8f9477948ff284fa65be2095baafb94f2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/141046a8f9477948ff284fa65be2095baafb94f2", - "reference": "141046a8f9477948ff284fa65be2095baafb94f2", - "shasum": "" - }, - "require": { - "php": ">=7.2" - }, - "provide": { - "ext-ctype": "*" - }, - "suggest": { - "ext-ctype": "For best performance" - }, - "type": "library", - "extra": { - "thanks": { - "url": "https://github.com/symfony/polyfill", - "name": "symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Gert de Pagter", - "email": "BackEndTea@gmail.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for ctype functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "ctype", - "polyfill", - "portable" - ], - "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.37.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://github.com/nicolas-grekas", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2026-04-10T16:19:22+00:00" - }, - { - "name": "symfony/polyfill-mbstring", - "version": "v1.38.2", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "d3d318bad5e7a1bfbd026009c8bfb8d8f99ae6b6" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/d3d318bad5e7a1bfbd026009c8bfb8d8f99ae6b6", - "reference": "d3d318bad5e7a1bfbd026009c8bfb8d8f99ae6b6", - "shasum": "" - }, - "require": { - "ext-iconv": "*", - "php": ">=7.2" - }, - "provide": { - "ext-mbstring": "*" - }, - "suggest": { - "ext-mbstring": "For best performance" - }, - "type": "library", - "extra": { - "thanks": { - "url": "https://github.com/symfony/polyfill", - "name": "symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for the Mbstring extension", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "mbstring", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.38.2" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://github.com/nicolas-grekas", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2026-05-27T06:59:30+00:00" - }, - { - "name": "twig/twig", - "version": "v3.28.0", - "source": { - "type": "git", - "url": "https://github.com/twigphp/Twig.git", - "reference": "597c12ed286fb9d1701a36684ce6e0cbe28ebc8b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/597c12ed286fb9d1701a36684ce6e0cbe28ebc8b", - "reference": "597c12ed286fb9d1701a36684ce6e0cbe28ebc8b", - "shasum": "" - }, - "require": { - "php": ">=8.1.0", - "symfony/deprecation-contracts": "^2.5|^3", - "symfony/polyfill-ctype": "^1.8", - "symfony/polyfill-mbstring": "^1.3" - }, - "require-dev": { - "php-cs-fixer/shim": "^3.0@stable", - "phpstan/phpstan": "^2.0@stable", - "psr/container": "^1.0|^2.0", - "symfony/phpunit-bridge": "^5.4.9|^6.4|^7.0" - }, - "type": "library", - "autoload": { - "files": [ - "src/Resources/core.php", - "src/Resources/debug.php", - "src/Resources/escaper.php", - "src/Resources/string_loader.php" - ], - "psr-4": { - "Twig\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com", - "homepage": "http://fabien.potencier.org", - "role": "Lead Developer" - }, - { - "name": "Twig Team", - "role": "Contributors" - }, - { - "name": "Armin Ronacher", - "email": "armin.ronacher@active-4.com", - "role": "Project Founder" - } - ], - "description": "Twig, the flexible, fast, and secure template language for PHP", - "homepage": "https://twig.symfony.com", - "keywords": [ - "templating" - ], - "support": { - "issues": "https://github.com/twigphp/Twig/issues", - "source": "https://github.com/twigphp/Twig/tree/v3.28.0" - }, - "funding": [ - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/twig/twig", - "type": "tidelift" - } - ], - "time": "2026-07-03T20:44:34+00:00" - } - ], - "packages-dev": [], - "aliases": [], - "minimum-stability": "stable", - "stability-flags": {}, - "prefer-stable": false, - "prefer-lowest": false, - "platform": { - "php": ">=8.1" - }, - "platform-dev": {}, - "plugin-api-version": "2.9.0" -} diff --git a/generated/go.mod b/generated/go.mod deleted file mode 100644 index 0e09bd6..0000000 --- a/generated/go.mod +++ /dev/null @@ -1,5 +0,0 @@ -module github.com/ui8kit/ui - -go 1.23.0 - -require github.com/a-h/templ v0.3.1001 diff --git a/generated/go.sum b/generated/go.sum deleted file mode 100644 index bcce387..0000000 --- a/generated/go.sum +++ /dev/null @@ -1,4 +0,0 @@ -github.com/a-h/templ v0.3.1001 h1:yHDTgexACdJttyiyamcTHXr2QkIeVF1MukLy44EAhMY= -github.com/a-h/templ v0.3.1001/go.mod h1:oCZcnKRf5jjsGpf2yELzQfodLphd2mwecwG4Crk5HBo= -github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= -github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= diff --git a/generated/php/UI8Kit/Classes.php b/generated/php/UI8Kit/Classes.php deleted file mode 100644 index 1476b43..0000000 --- a/generated/php/UI8Kit/Classes.php +++ /dev/null @@ -1,410 +0,0 @@ - 'rounded-lg border px-4 py-3 shadow-sm outline-none ring-offset-background gap-6', 'keys' => ['variant'], 'defaults' => ['variant' => 'default'], 'byKey' => ['variant' => ['default' => 'bg-card text-card-foreground', 'destructive' => 'border-destructive bg-destructive/10 text-destructive', 'success' => 'border-primary bg-primary/10 text-primary', 'warning' => 'border-border bg-accent text-accent-foreground']]]; - private const BADGE_BADGE = ['base' => 'inline-flex items-center rounded-full border px-2 py-1 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2', 'keys' => ['variant', 'size'], 'defaults' => ['size' => 'default', 'variant' => 'default'], 'byKey' => ['size' => ['default' => 'px-2 py-1 text-xs', 'lg' => 'px-3 py-1 text-sm', 'sm' => 'px-2 py-1 text-xs'], 'variant' => ['default' => 'border-transparent bg-primary text-primary-foreground hover:bg-primary/80', 'destructive' => 'border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80', 'outline' => 'text-foreground', 'secondary' => 'border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80']]]; - private const BLOCK_BLOCK = ['base' => '', 'keys' => [], 'defaults' => [], 'byKey' => []]; - private const BOX_BOX = ['base' => '', 'keys' => [], 'defaults' => [], 'byKey' => []]; - private const BUTTON_BUTTON = ['base' => 'inline-flex shrink-0 items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50', 'keys' => ['variant', 'size'], 'defaults' => ['size' => 'default', 'variant' => 'default'], 'byKey' => ['size' => ['default' => 'h-9 px-4 py-2', 'icon' => 'h-9 w-9', 'lg' => 'h-10 rounded-md px-6', 'sm' => 'h-8 gap-1.5 rounded-md px-3'], 'variant' => ['default' => 'bg-primary text-primary-foreground shadow-xs hover:bg-primary/90', 'destructive' => 'bg-destructive text-destructive-foreground shadow-xs hover:bg-destructive/90', 'ghost' => 'hover:bg-accent hover:text-accent-foreground', 'link' => 'text-primary underline-offset-4 hover:underline', 'outline' => 'border border-input bg-background shadow-xs hover:bg-accent hover:text-accent-foreground', 'secondary' => 'bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80']]]; - private const CARD_CARD = ['base' => 'flex flex-col gap-6 rounded-xl border bg-card py-6 text-card-foreground shadow-sm', 'keys' => ['variant'], 'defaults' => ['variant' => 'default'], 'byKey' => ['variant' => ['default' => '', 'raised' => '', 'kpi' => 'bg-card/50', 'muted' => 'bg-muted/40', 'ghost' => 'border-dashed bg-background shadow-none', 'compact' => 'p-4', 'flat' => 'shadow-none', 'accent' => 'border-transparent bg-accent/30']]]; - private const CHECKBOX_CHECKBOX = ['base' => 'rounded border border-primary text-primary focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50', 'keys' => ['variant', 'size'], 'defaults' => ['size' => 'default', 'variant' => 'default'], 'byKey' => ['size' => ['default' => 'h-4 w-4', 'lg' => 'h-5 w-5', 'sm' => 'h-4 w-4', 'xs' => 'h-3 w-3'], 'variant' => ['default' => 'border-primary', 'ghost' => 'border-primary bg-muted/30', 'outline' => 'border-primary']]]; - private const CONTAINER_CONTAINER = ['base' => '', 'keys' => [], 'defaults' => [], 'byKey' => []]; - private const DIALOG_DIALOG = ['base' => 'm-auto rounded-lg border border-border bg-background text-foreground shadow-lg backdrop:bg-background/80', 'keys' => ['variant', 'size'], 'defaults' => ['size' => 'default', 'variant' => 'default'], 'byKey' => ['size' => ['default' => 'w-full max-w-lg', 'full' => 'h-full w-full max-w-none', 'lg' => 'w-full max-w-2xl', 'sm' => 'w-full max-w-sm', 'xl' => 'w-full max-w-4xl'], 'variant' => ['card' => 'bg-card text-card-foreground', 'default' => '', 'sheet' => 'min-h-screen rounded-none']]]; - private const DISCLOSURE_DISCLOSURE = ['base' => 'group', 'keys' => ['variant', 'size'], 'defaults' => ['size' => 'default', 'variant' => 'default'], 'byKey' => ['size' => ['default' => 'text-sm', 'lg' => 'text-base', 'sm' => 'text-sm'], 'variant' => ['card' => 'rounded-md border border-border bg-card text-card-foreground', 'default' => 'rounded-md border border-border', 'ghost' => '']]]; - private const DISCLOSURE_SUMMARY = ['base' => 'flex cursor-pointer list-none items-center justify-between gap-2 [&::-webkit-details-marker]:hidden', 'keys' => ['variant', 'size'], 'defaults' => ['size' => 'default', 'variant' => 'default'], 'byKey' => ['size' => ['default' => 'text-sm', 'lg' => 'text-base', 'sm' => 'text-sm'], 'variant' => ['card' => 'px-4 py-3 font-medium', 'default' => 'px-4 py-3 font-medium', 'ghost' => 'py-2 font-medium']]]; - private const FORM_FORM = ['base' => '', 'keys' => [], 'defaults' => [], 'byKey' => []]; - private const FORM_FORM_ITEM = ['base' => 'grid gap-2', 'keys' => [], 'defaults' => [], 'byKey' => []]; - private const FORM_FORM_DESCRIPTION = ['base' => 'text-xs text-muted-foreground', 'keys' => [], 'defaults' => [], 'byKey' => []]; - private const FORM_FORM_MESSAGE = ['base' => 'text-sm font-medium text-destructive', 'keys' => [], 'defaults' => [], 'byKey' => []]; - private const CONTROLS_FIELDSET = ['base' => 'grid gap-4', 'keys' => ['variant', 'size'], 'defaults' => ['size' => 'default', 'variant' => 'default'], 'byKey' => ['size' => ['default' => 'gap-4', 'lg' => 'gap-6', 'sm' => 'gap-2'], 'variant' => ['card' => 'rounded-md border border-border p-4', 'default' => '', 'inline' => 'flex flex-wrap items-start gap-4']]]; - private const CONTROLS_LEGEND = ['base' => 'text-sm font-medium', 'keys' => ['variant', 'size'], 'defaults' => ['size' => 'default', 'variant' => 'default'], 'byKey' => ['size' => ['default' => 'text-sm', 'lg' => 'text-base', 'sm' => 'text-xs'], 'variant' => ['default' => '', 'muted' => 'text-muted-foreground']]]; - private const CONTROLS_METER = ['base' => 'h-2 w-full', 'keys' => ['variant', 'size'], 'defaults' => ['size' => 'default', 'variant' => 'default'], 'byKey' => ['size' => ['default' => 'h-2', 'lg' => 'h-3', 'sm' => 'h-1'], 'variant' => ['default' => 'accent-primary', 'muted' => 'accent-muted-foreground']]]; - private const CONTROLS_PROGRESS = ['base' => 'h-2 w-full', 'keys' => ['variant', 'size'], 'defaults' => ['size' => 'default', 'variant' => 'default'], 'byKey' => ['size' => ['default' => 'h-2', 'lg' => 'h-3', 'sm' => 'h-1'], 'variant' => ['default' => 'accent-primary', 'muted' => 'accent-muted-foreground']]]; - private const GRID_GRID = ['base' => 'grid', 'keys' => [], 'defaults' => [], 'byKey' => []]; - private const GROUP_GROUP = ['base' => 'flex items-center', 'keys' => [], 'defaults' => [], 'byKey' => []]; - private const ICON_ICON = ['base' => 'inline-block shrink-0', 'keys' => ['type', 'size'], 'defaults' => ['size' => 'default', 'type' => 'class'], 'byKey' => ['size' => ['default' => 'h-4 w-4', 'lg' => 'h-6 w-6', 'md' => 'h-5 w-5', 'sm' => 'h-4 w-4', 'xl' => 'h-8 w-8', 'xs' => 'h-3 w-3'], 'type' => ['class' => '', 'svg' => '', 'text' => '']]]; - private const ICONBADGE_ICONBADGE = ['base' => 'inline-flex shrink-0 items-center justify-center rounded-md font-semibold', 'keys' => ['variant', 'size'], 'defaults' => ['variant' => 'default', 'size' => 'default'], 'byKey' => ['variant' => ['default' => 'bg-muted text-muted-foreground', 'accent' => 'bg-accent text-accent-foreground', 'secondary' => 'bg-secondary text-secondary-foreground', 'outline' => 'border border-border text-foreground', 'destructive' => 'bg-destructive text-destructive-foreground'], 'size' => ['xs' => 'h-6 w-6 text-xs', 'sm' => 'h-8 w-8 text-xs', 'default' => 'h-10 w-10 text-sm', 'lg' => 'h-12 w-12 text-base']]]; - private const IMAGE_IMAGE = ['base' => 'block max-w-full', 'keys' => ['variant', 'size', 'fit', 'position', 'aspect'], 'defaults' => ['aspect' => 'auto', 'fit' => 'cover', 'position' => 'center', 'size' => 'auto', 'variant' => 'default'], 'byKey' => ['aspect' => ['auto' => 'aspect-auto', 'square' => 'aspect-square', 'video' => 'aspect-video'], 'fit' => ['contain' => 'object-contain', 'cover' => 'object-cover', 'fill' => 'object-fill', 'none' => 'object-none', 'scale-down' => 'object-scale-down'], 'position' => ['bottom' => 'object-bottom', 'center' => 'object-center', 'left' => 'object-left', 'left-bottom' => 'object-left-bottom', 'left-top' => 'object-left-top', 'right' => 'object-right', 'right-bottom' => 'object-right-bottom', 'right-top' => 'object-right-top', 'top' => 'object-top'], 'size' => ['auto' => '', 'default' => '', 'full' => 'h-full w-full', 'lg' => 'h-16 w-16', 'md' => 'h-12 w-12', 'sm' => 'h-8 w-8', 'xl' => 'h-24 w-24', 'xs' => 'h-6 w-6'], 'variant' => ['avatar' => 'rounded-full', 'default' => '', 'logo' => 'object-contain', 'rounded' => 'rounded-md', 'thumbnail' => 'rounded-md border border-border']]]; - private const INLINE_INLINE = ['base' => '', 'keys' => [], 'defaults' => [], 'byKey' => []]; - private const INPUT_INPUT = ['base' => 'w-full rounded-md border px-3 py-2 text-sm outline-none transition-colors focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50', 'keys' => ['variant', 'size'], 'defaults' => ['size' => 'default', 'variant' => 'default'], 'byKey' => ['size' => ['default' => 'h-10 px-3 py-2 text-sm', 'lg' => 'h-12 px-4 text-base', 'sm' => 'h-8 px-3 text-sm', 'xs' => 'h-8 px-2 text-xs'], 'variant' => ['default' => 'border-border bg-background', 'ghost' => 'border-transparent bg-muted', 'outline' => 'border-border bg-background']]]; - private const LABEL_LABEL = ['base' => 'text-sm font-medium leading-none', 'keys' => [], 'defaults' => [], 'byKey' => []]; - private const LINEBREAK_LINEBREAK = ['base' => '', 'keys' => [], 'defaults' => [], 'byKey' => []]; - private const LINK_LINK = ['base' => 'inline-flex items-center gap-2 underline-offset-4 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2', 'keys' => ['variant', 'size'], 'defaults' => ['size' => 'default', 'variant' => 'default'], 'byKey' => ['size' => ['default' => 'text-sm', 'lg' => 'text-lg', 'md' => 'text-base', 'sm' => 'text-sm'], 'variant' => ['block' => 'flex w-full text-foreground hover:text-primary', 'default' => 'text-primary hover:underline', 'external' => 'text-primary hover:underline', 'muted' => 'text-muted-foreground hover:text-foreground hover:underline', 'nav' => 'text-foreground hover:text-primary']]]; - private const LIST_LIST = ['base' => '', 'keys' => [], 'defaults' => [], 'byKey' => []]; - private const RADIO_RADIO = ['base' => 'rounded border border-primary text-primary focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50', 'keys' => ['variant', 'size'], 'defaults' => ['size' => 'default', 'variant' => 'default'], 'byKey' => ['size' => ['default' => 'h-4 w-4', 'lg' => 'h-5 w-5', 'sm' => 'h-4 w-4', 'xs' => 'h-3 w-3'], 'variant' => ['default' => 'border-primary', 'ghost' => 'border-primary bg-muted/30', 'outline' => 'border-primary']]]; - private const SELECT_SELECT = ['base' => 'w-full rounded-md border px-3 py-2 text-sm outline-none transition-colors focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50', 'keys' => ['variant', 'size'], 'defaults' => ['size' => 'default', 'variant' => 'default'], 'byKey' => ['size' => ['default' => 'h-10 px-3 py-2 text-sm', 'lg' => 'h-12 px-4 text-base', 'sm' => 'h-8 px-3 text-sm', 'xs' => 'h-8 px-2 text-xs'], 'variant' => ['default' => 'border-border bg-background', 'ghost' => 'border-transparent bg-muted', 'outline' => 'border-border bg-background']]]; - private const SEPARATOR_SEPARATOR = ['base' => 'shrink-0 border-0 bg-border', 'keys' => ['orientation', 'variant'], 'defaults' => ['orientation' => 'horizontal', 'variant' => 'default'], 'byKey' => ['orientation' => ['horizontal' => 'h-px w-full', 'vertical' => 'h-full w-px'], 'variant' => ['default' => '', 'muted' => 'bg-muted', 'spaced' => 'my-4', 'strong' => 'bg-foreground']]]; - private const STACK_STACK = ['base' => 'flex flex-col', 'keys' => [], 'defaults' => [], 'byKey' => []]; - private const SWITCH_SWITCH = ['base' => 'rounded border border-primary text-primary focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50', 'keys' => ['variant', 'size'], 'defaults' => ['size' => 'default', 'variant' => 'default'], 'byKey' => ['size' => ['default' => 'h-4 w-4', 'lg' => 'h-5 w-5', 'sm' => 'h-4 w-4', 'xs' => 'h-3 w-3'], 'variant' => ['default' => 'border-primary', 'ghost' => 'border-primary bg-muted/30', 'outline' => 'border-primary']]]; - private const TABLE_TABLE = ['base' => 'w-full caption-bottom text-sm', 'keys' => [], 'defaults' => [], 'byKey' => []]; - private const TEXT_TEXT = ['base' => '', 'keys' => [], 'defaults' => [], 'byKey' => []]; - private const TEXTAREA_TEXTAREA = ['base' => 'w-full rounded-md border px-3 py-2 text-sm outline-none transition-colors focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50', 'keys' => ['variant', 'size'], 'defaults' => ['size' => 'default', 'variant' => 'default'], 'byKey' => ['size' => ['default' => 'h-10 px-3 py-2 text-sm', 'lg' => 'h-12 px-4 text-base', 'sm' => 'h-8 px-3 text-sm', 'xs' => 'h-8 px-2 text-xs'], 'variant' => ['default' => 'border-border bg-background', 'ghost' => 'border-transparent bg-muted', 'outline' => 'border-border bg-background']]]; - private const TITLE_TITLE = ['base' => '', 'keys' => [], 'defaults' => [], 'byKey' => []]; - - /** Alert class composition — the server-side asChild substitute. */ - public static function alertClasses(array $in = []): string - { - return Rt::compose(self::ALERT_ALERT, ['variant' => (string) ($in['variant'] ?? '')], (string) ($in['class'] ?? '')); - } - - /** Badge class composition — the server-side asChild substitute. */ - public static function badgeClasses(array $in = []): string - { - return Rt::compose(self::BADGE_BADGE, ['variant' => (string) ($in['variant'] ?? ''), 'size' => (string) ($in['size'] ?? '')], (string) ($in['class'] ?? '')); - } - - /** Block class composition — the server-side asChild substitute. */ - public static function blockClasses(array $in = []): string - { - return Rt::compose(self::BLOCK_BLOCK, [], (string) ($in['class'] ?? '')); - } - - /** Box class composition — the server-side asChild substitute. */ - public static function boxClasses(array $in = []): string - { - return Rt::compose(self::BOX_BOX, [], (string) ($in['class'] ?? '')); - } - - /** Breadcrumb class composition — the server-side asChild substitute. */ - public static function breadcrumbClasses(array $in = []): string - { - return Rt::cn('text-sm', (string) ($in['class'] ?? '')); - } - - /** Button class composition — the server-side asChild substitute. */ - public static function buttonClasses(array $in = []): string - { - return Rt::compose(self::BUTTON_BUTTON, ['variant' => (string) ($in['variant'] ?? ''), 'size' => (string) ($in['size'] ?? '')], (((bool) ($in['disabled'] ?? false)) ? 'pointer-events-none opacity-50' : ''), (string) ($in['class'] ?? '')); - } - - /** Card class composition — the server-side asChild substitute. */ - public static function cardClasses(array $in = []): string - { - return Rt::compose(self::CARD_CARD, ['variant' => (string) ($in['variant'] ?? '')], (string) ($in['class'] ?? '')); - } - - /** CardHeader class composition — the server-side asChild substitute. */ - public static function cardHeaderClasses(array $in = []): string - { - return Rt::cn('grid auto-rows-min items-start gap-1.5 px-6', (string) ($in['class'] ?? '')); - } - - /** CardTitle class composition — the server-side asChild substitute. */ - public static function cardTitleClasses(array $in = []): string - { - return Rt::cn('font-semibold leading-none', (string) ($in['class'] ?? '')); - } - - /** CardDescription class composition — the server-side asChild substitute. */ - public static function cardDescriptionClasses(array $in = []): string - { - return Rt::cn('text-sm text-muted-foreground', (string) ($in['class'] ?? '')); - } - - /** CardContent class composition — the server-side asChild substitute. */ - public static function cardContentClasses(array $in = []): string - { - return Rt::cn('px-6', (string) ($in['class'] ?? '')); - } - - /** CardFooter class composition — the server-side asChild substitute. */ - public static function cardFooterClasses(array $in = []): string - { - return Rt::cn('flex items-center px-6', (string) ($in['class'] ?? '')); - } - - /** Checkbox class composition — the server-side asChild substitute. */ - public static function checkboxClasses(array $in = []): string - { - return Rt::compose(self::CHECKBOX_CHECKBOX, ['variant' => (string) ($in['variant'] ?? ''), 'size' => (string) ($in['size'] ?? '')], (string) ($in['class'] ?? '')); - } - - /** Container class composition — the server-side asChild substitute. */ - public static function containerClasses(array $in = []): string - { - return Rt::compose(self::CONTAINER_CONTAINER, [], (string) ($in['class'] ?? '')); - } - - /** Dialog class composition — the server-side asChild substitute. */ - public static function dialogClasses(array $in = []): string - { - return Rt::compose(self::DIALOG_DIALOG, ['variant' => (string) ($in['variant'] ?? ''), 'size' => (string) ($in['size'] ?? '')], (string) ($in['class'] ?? '')); - } - - /** Disclosure class composition — the server-side asChild substitute. */ - public static function disclosureClasses(array $in = []): string - { - return Rt::compose(self::DISCLOSURE_DISCLOSURE, ['variant' => (string) ($in['variant'] ?? ''), 'size' => (string) ($in['size'] ?? '')], (string) ($in['class'] ?? '')); - } - - /** Summary class composition — the server-side asChild substitute. */ - public static function summaryClasses(array $in = []): string - { - return Rt::compose(self::DISCLOSURE_SUMMARY, ['variant' => (string) ($in['variant'] ?? ''), 'size' => (string) ($in['size'] ?? '')], (string) ($in['class'] ?? '')); - } - - /** Form class composition — the server-side asChild substitute. */ - public static function formClasses(array $in = []): string - { - return Rt::compose(self::FORM_FORM, [], (string) ($in['class'] ?? '')); - } - - /** FormItem class composition — the server-side asChild substitute. */ - public static function formItemClasses(array $in = []): string - { - return Rt::compose(self::FORM_FORM_ITEM, [], (string) ($in['class'] ?? '')); - } - - /** FormDescription class composition — the server-side asChild substitute. */ - public static function formDescriptionClasses(array $in = []): string - { - return Rt::compose(self::FORM_FORM_DESCRIPTION, [], (string) ($in['class'] ?? '')); - } - - /** FormMessage class composition — the server-side asChild substitute. */ - public static function formMessageClasses(array $in = []): string - { - return Rt::compose(self::FORM_FORM_MESSAGE, [], (string) ($in['class'] ?? '')); - } - - /** Fieldset class composition — the server-side asChild substitute. */ - public static function fieldsetClasses(array $in = []): string - { - return Rt::compose(self::CONTROLS_FIELDSET, ['variant' => (string) ($in['variant'] ?? ''), 'size' => (string) ($in['size'] ?? '')], (string) ($in['class'] ?? '')); - } - - /** Legend class composition — the server-side asChild substitute. */ - public static function legendClasses(array $in = []): string - { - return Rt::compose(self::CONTROLS_LEGEND, ['variant' => (string) ($in['variant'] ?? ''), 'size' => (string) ($in['size'] ?? '')], (string) ($in['class'] ?? '')); - } - - /** DataList class composition — the server-side asChild substitute. */ - public static function dataListClasses(array $in = []): string - { - return Rt::cn((string) ($in['class'] ?? '')); - } - - /** Output class composition — the server-side asChild substitute. */ - public static function outputClasses(array $in = []): string - { - return Rt::cn((string) ($in['class'] ?? '')); - } - - /** Meter class composition — the server-side asChild substitute. */ - public static function meterClasses(array $in = []): string - { - return Rt::compose(self::CONTROLS_METER, ['variant' => (string) ($in['variant'] ?? ''), 'size' => (string) ($in['size'] ?? '')], (string) ($in['class'] ?? '')); - } - - /** Progress class composition — the server-side asChild substitute. */ - public static function progressClasses(array $in = []): string - { - return Rt::compose(self::CONTROLS_PROGRESS, ['variant' => (string) ($in['variant'] ?? ''), 'size' => (string) ($in['size'] ?? '')], (string) ($in['class'] ?? '')); - } - - /** Grid class composition — the server-side asChild substitute. */ - public static function gridClasses(array $in = []): string - { - return Rt::compose(self::GRID_GRID, [], ((str_contains((string) ($in['class'] ?? ''), 'grid-cols-')) ? '' : \UI8Kit\Rt::mapOr(\UI8Kit\Rt::defaultIfEmpty((string) ($in['cols'] ?? ''), '1'), ['1' => 'grid-cols-1', '2' => 'grid-cols-2', '3' => 'grid-cols-3', '4' => 'grid-cols-4', '5' => 'grid-cols-5', '6' => 'grid-cols-6', '7' => 'grid-cols-7', '8' => 'grid-cols-8', '9' => 'grid-cols-9', '10' => 'grid-cols-10', '11' => 'grid-cols-11', '12' => 'grid-cols-12', '1-2' => 'grid-cols-1 md:grid-cols-2', '1-3' => 'grid-cols-1 md:grid-cols-2 xl:grid-cols-3', '1-4' => 'grid-cols-1 md:grid-cols-2 xl:grid-cols-4'], '')), (string) ($in['class'] ?? '')); - } - - /** GridCol class composition — the server-side asChild substitute. */ - public static function gridColClasses(array $in = []): string - { - return Rt::cn(\UI8Kit\Rt::intMapOr((int) ($in['span'] ?? 0), [1 => 'col-span-1', 2 => 'col-span-2', 3 => 'col-span-3', 4 => 'col-span-4', 5 => 'col-span-5', 6 => 'col-span-6', 7 => 'col-span-7', 8 => 'col-span-8', 9 => 'col-span-9', 10 => 'col-span-10', 11 => 'col-span-11', 12 => 'col-span-12'], ''), \UI8Kit\Rt::intMapOr((int) ($in['start'] ?? 0), [1 => 'col-start-1', 2 => 'col-start-2', 3 => 'col-start-3', 4 => 'col-start-4', 5 => 'col-start-5', 6 => 'col-start-6', 7 => 'col-start-7', 8 => 'col-start-8', 9 => 'col-start-9', 10 => 'col-start-10', 11 => 'col-start-11', 12 => 'col-start-12'], ''), \UI8Kit\Rt::intMapOr((int) ($in['end'] ?? 0), [1 => 'col-end-1', 2 => 'col-end-2', 3 => 'col-end-3', 4 => 'col-end-4', 5 => 'col-end-5', 6 => 'col-end-6', 7 => 'col-end-7', 8 => 'col-end-8', 9 => 'col-end-9', 10 => 'col-end-10', 11 => 'col-end-11', 12 => 'col-end-12'], ''), \UI8Kit\Rt::intMapOr((int) ($in['order'] ?? 0), [1 => 'order-1', 2 => 'order-2', 3 => 'order-3', 4 => 'order-4', 5 => 'order-5', 6 => 'order-6', 7 => 'order-7', 8 => 'order-8', 9 => 'order-9', 10 => 'order-10', 11 => 'order-11', 12 => 'order-12'], ''), (string) ($in['class'] ?? '')); - } - - /** Group class composition — the server-side asChild substitute. */ - public static function groupClasses(array $in = []): string - { - return Rt::compose(self::GROUP_GROUP, [], (string) ($in['class'] ?? '')); - } - - /** Icon class composition — the server-side asChild substitute. */ - public static function iconClasses(array $in = []): string - { - return Rt::compose(self::ICON_ICON, ['type' => \UI8Kit\Rt::oneOfOr((string) ($in['type'] ?? ''), 'class', 'svg', 'text'), 'size' => (string) ($in['size'] ?? '')], (((\UI8Kit\Rt::oneOfOr((string) ($in['type'] ?? ''), 'class', 'svg', 'text') === 'class')) ? (string) ($in['baseClass'] ?? '') : ''), ((((\UI8Kit\Rt::oneOfOr((string) ($in['type'] ?? ''), 'class', 'svg', 'text') === 'class') && \UI8Kit\Rt::isSetStr((string) ($in['name'] ?? '')))) ? \UI8Kit\Rt::concatTrim((string) ($in['prefix'] ?? ''), (string) ($in['name'] ?? '')) : ''), (string) ($in['class'] ?? '')); - } - - /** IconBadge class composition — the server-side asChild substitute. */ - public static function iconBadgeClasses(array $in = []): string - { - return Rt::compose(self::ICONBADGE_ICONBADGE, ['variant' => (string) ($in['variant'] ?? ''), 'size' => (string) ($in['size'] ?? '')], (string) ($in['class'] ?? '')); - } - - /** Image class composition — the server-side asChild substitute. */ - public static function imageClasses(array $in = []): string - { - return Rt::compose(self::IMAGE_IMAGE, ['variant' => (string) ($in['variant'] ?? ''), 'size' => (string) ($in['size'] ?? ''), 'fit' => (string) ($in['fit'] ?? ''), 'position' => (string) ($in['position'] ?? ''), 'aspect' => (string) ($in['aspect'] ?? '')], (string) ($in['class'] ?? '')); - } - - /** Picture class composition — the server-side asChild substitute. */ - public static function pictureClasses(array $in = []): string - { - return Rt::cn((string) ($in['class'] ?? '')); - } - - /** Inline class composition — the server-side asChild substitute. */ - public static function inlineClasses(array $in = []): string - { - return Rt::compose(self::INLINE_INLINE, [], (string) ($in['class'] ?? '')); - } - - /** Input class composition — the server-side asChild substitute. */ - public static function inputClasses(array $in = []): string - { - return Rt::compose(self::INPUT_INPUT, ['variant' => (string) ($in['variant'] ?? ''), 'size' => (string) ($in['size'] ?? '')], (string) ($in['class'] ?? '')); - } - - /** Label class composition — the server-side asChild substitute. */ - public static function labelClasses(array $in = []): string - { - return Rt::compose(self::LABEL_LABEL, [], (string) ($in['class'] ?? '')); - } - - /** Break class composition — the server-side asChild substitute. */ - public static function breakClasses(array $in = []): string - { - return Rt::compose(self::LINEBREAK_LINEBREAK, [], (string) ($in['class'] ?? '')); - } - - /** Link class composition — the server-side asChild substitute. */ - public static function linkClasses(array $in = []): string - { - return Rt::compose(self::LINK_LINK, ['variant' => (string) ($in['variant'] ?? ''), 'size' => (string) ($in['size'] ?? '')], (((bool) ($in['disabled'] ?? false)) ? 'pointer-events-none opacity-50' : ''), (string) ($in['class'] ?? '')); - } - - /** List class composition — the server-side asChild substitute. */ - public static function listClasses(array $in = []): string - { - return Rt::compose(self::LIST_LIST, [], (string) ($in['class'] ?? '')); - } - - /** ListItem class composition — the server-side asChild substitute. */ - public static function listItemClasses(array $in = []): string - { - return Rt::compose(self::LIST_LIST, [], (string) ($in['class'] ?? '')); - } - - /** Radio class composition — the server-side asChild substitute. */ - public static function radioClasses(array $in = []): string - { - return Rt::compose(self::RADIO_RADIO, ['variant' => (string) ($in['variant'] ?? ''), 'size' => (string) ($in['size'] ?? '')], (string) ($in['class'] ?? '')); - } - - /** Select class composition — the server-side asChild substitute. */ - public static function selectClasses(array $in = []): string - { - return Rt::compose(self::SELECT_SELECT, ['variant' => (string) ($in['variant'] ?? ''), 'size' => (string) ($in['size'] ?? '')], (string) ($in['class'] ?? '')); - } - - /** OptGroup class composition — the server-side asChild substitute. */ - public static function optGroupClasses(array $in = []): string - { - return Rt::cn((string) ($in['class'] ?? '')); - } - - /** Separator class composition — the server-side asChild substitute. */ - public static function separatorClasses(array $in = []): string - { - return Rt::compose(self::SEPARATOR_SEPARATOR, ['variant' => (string) ($in['variant'] ?? ''), 'orientation' => (string) ($in['orientation'] ?? '')], (string) ($in['class'] ?? '')); - } - - /** Stack class composition — the server-side asChild substitute. */ - public static function stackClasses(array $in = []): string - { - return Rt::compose(self::STACK_STACK, [], (string) ($in['class'] ?? '')); - } - - /** Switch class composition — the server-side asChild substitute. */ - public static function switchClasses(array $in = []): string - { - return Rt::compose(self::SWITCH_SWITCH, ['variant' => (string) ($in['variant'] ?? ''), 'size' => (string) ($in['size'] ?? '')], (string) ($in['class'] ?? '')); - } - - /** Table class composition — the server-side asChild substitute. */ - public static function tableClasses(array $in = []): string - { - return Rt::compose(self::TABLE_TABLE, [], (string) ($in['class'] ?? '')); - } - - /** TableCaption class composition — the server-side asChild substitute. */ - public static function tableCaptionClasses(array $in = []): string - { - return Rt::cn((string) ($in['class'] ?? '')); - } - - /** TableHead class composition — the server-side asChild substitute. */ - public static function tableHeadClasses(array $in = []): string - { - return Rt::cn((string) ($in['class'] ?? '')); - } - - /** TableBody class composition — the server-side asChild substitute. */ - public static function tableBodyClasses(array $in = []): string - { - return Rt::cn((string) ($in['class'] ?? '')); - } - - /** TableFoot class composition — the server-side asChild substitute. */ - public static function tableFootClasses(array $in = []): string - { - return Rt::cn((string) ($in['class'] ?? '')); - } - - /** TableRow class composition — the server-side asChild substitute. */ - public static function tableRowClasses(array $in = []): string - { - return Rt::cn((string) ($in['class'] ?? '')); - } - - /** TableHeadCell class composition — the server-side asChild substitute. */ - public static function tableHeadCellClasses(array $in = []): string - { - return Rt::cn((string) ($in['class'] ?? '')); - } - - /** TableCell class composition — the server-side asChild substitute. */ - public static function tableCellClasses(array $in = []): string - { - return Rt::cn((string) ($in['class'] ?? '')); - } - - /** TableColGroup class composition — the server-side asChild substitute. */ - public static function tableColGroupClasses(array $in = []): string - { - return Rt::cn((string) ($in['class'] ?? '')); - } - - /** TableCol class composition — the server-side asChild substitute. */ - public static function tableColClasses(array $in = []): string - { - return Rt::cn((string) ($in['class'] ?? '')); - } - - /** Text class composition — the server-side asChild substitute. */ - public static function textClasses(array $in = []): string - { - return Rt::compose(self::TEXT_TEXT, [], (string) ($in['class'] ?? '')); - } - - /** Textarea class composition — the server-side asChild substitute. */ - public static function textareaClasses(array $in = []): string - { - return Rt::compose(self::TEXTAREA_TEXTAREA, ['variant' => (string) ($in['variant'] ?? ''), 'size' => (string) ($in['size'] ?? '')], (string) ($in['class'] ?? '')); - } - - /** Title class composition — the server-side asChild substitute. */ - public static function titleClasses(array $in = []): string - { - return Rt::compose(self::TITLE_TITLE, [], (string) ($in['class'] ?? '')); - } -} diff --git a/generated/php/UI8Kit/Rt.php b/generated/php/UI8Kit/Rt.php deleted file mode 100644 index 432b3a1..0000000 --- a/generated/php/UI8Kit/Rt.php +++ /dev/null @@ -1,190 +0,0 @@ - ['div', 'section', 'article', 'aside', 'header', 'footer', 'main', 'nav', 'figure', 'search', 'hgroup'], - 'BoxAllowed' => ['div'], - 'BlockText' => ['p', 'blockquote', 'figcaption', 'address', 'pre'], - 'Inline' => ['span', 'em', 'strong', 'small', 'abbr', 'cite', 'code', 'kbd', 'mark', 'time', 'data', 'var', 'samp', 'sub', 'sup', 'b', 'i', 'u', 's', 'q', 'dfn', 'bdo', 'bdi', 'ins', 'del'], - 'Heading' => ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'], - 'List' => ['ul', 'ol', 'dl', 'menu'], - 'ListItem' => ['li', 'dt', 'dd'], - 'Form' => ['form', 'fieldset'], - 'FormControl' => ['input', 'textarea', 'select', 'button', 'option', 'optgroup', 'datalist', 'output', 'meter', 'progress'], - 'FormLabel' => ['label', 'legend'], - 'Table' => ['table'], - 'TableSection' => ['thead', 'tbody', 'tfoot'], - 'TableRow' => ['tr'], - 'TableCell' => ['th', 'td'], - 'TableColumn' => ['colgroup', 'col'], - 'Media' => ['img', 'picture', 'source'], - 'Disclosure' => ['details', 'summary'], - 'Container' => ['div', 'main', 'section'], - 'Stack' => ['div', 'ul', 'ol'], - 'Group' => ['div', 'fieldset', 'dl'], - ]; - - /** Join non-empty class fragments with a single space (Go Cn). */ - public static function cn(?string ...$classes): string - { - $parts = []; - foreach ($classes as $c) { - $t = trim((string) ($c ?? '')); - if ($t !== '') { - $parts[] = $t; - } - } - return implode(' ', $parts); - } - - /** Omit-if-empty attribute value: '' → null so the attribute is dropped. */ - public static function orNull(?string $v): ?string - { - return trim((string) ($v ?? '')) === '' ? null : $v; - } - - public static function isSetStr(?string $v): bool - { - return trim((string) ($v ?? '')) !== ''; - } - - public static function defaultIfEmpty(?string $v, string $fallback): string - { - $t = trim((string) ($v ?? '')); - return $t === '' ? $fallback : $t; - } - - public static function oneOfOr(?string $v, string $fallback, string ...$allowed): string - { - $t = trim((string) ($v ?? '')); - return in_array($t, $allowed, true) ? $t : $fallback; - } - - public static function oneOfOrLower(?string $v, string $fallback, string ...$allowed): string - { - return self::oneOfOr(strtolower(trim((string) ($v ?? ''))), $fallback, ...$allowed); - } - - /** Decision table: mapping[trim(v)] ?? fallback. */ - public static function mapOr(?string $v, array $mapping, string $fallback): string - { - return $mapping[trim((string) ($v ?? ''))] ?? $fallback; - } - - public static function mapOrLower(?string $v, array $mapping, string $fallback): string - { - return $mapping[strtolower(trim((string) ($v ?? '')))] ?? $fallback; - } - - /** Integer decision table: mapping[v] ?? fallback. */ - public static function intMapOr(int $v, array $mapping, string $fallback): string - { - return $mapping[$v] ?? $fallback; - } - - /** ARIA state stringification: always 'true'/'false', never omitted. */ - public static function boolStr(bool $v): string - { - return $v ? 'true' : 'false'; - } - - /** Concatenation of trimmed parts (icon Prefix + Name). */ - public static function concatTrim(?string ...$parts): string - { - $out = ''; - foreach ($parts as $p) { - $out .= trim((string) ($p ?? '')); - } - return $out; - } - - /** Returns tag when allowed for the group, otherwise fallback. */ - public static function resolveTag(?string $tag, string $fallback, string $group): string - { - $t = strtolower(trim((string) ($tag ?? ''))); - if ($t === '') { - return $fallback; - } - return in_array($t, self::GROUPS[$group] ?? [], true) ? $t : $fallback; - } - - /** h1–h6 from a heading level; 0/out-of-range default to h2. */ - public static function titleTag(int $order): string - { - return match ($order) { - 1 => 'h1', - 3 => 'h3', - 4 => 'h4', - 5 => 'h5', - 6 => 'h6', - default => 'h2', - }; - } - - /** - * Merge recipe base, keyed variant selections, and extra fragments. - * Recipe shape mirrors *.variants.json: base, keys, defaults, byKey. - * Unknown choices are silently dropped (Go Compose behavior). - */ - public static function compose(array $recipe, array $selection, ?string ...$extra): string - { - $parts = []; - $base = trim((string) ($recipe['base'] ?? '')); - if ($base !== '') { - $parts[] = $base; - } - foreach (($recipe['keys'] ?? []) as $key) { - $choices = $recipe['byKey'][$key] ?? null; - if ($choices === null) { - continue; - } - $choice = trim((string) ($selection[$key] ?? '')); - if ($choice === '') { - $choice = trim((string) ($recipe['defaults'][$key] ?? '')); - } - if ($choice === '') { - continue; - } - $cls = $choices[$choice] ?? null; - if ($cls !== null && trim($cls) !== '') { - $parts[] = $cls; - } - } - return self::cn(...$parts, ...$extra); - } - - /** - * Print an attribute string for Twig templates. Computed attrs first, - * rest (caller) attrs merged last so the caller wins. Semantics match - * the canonical renderer: null/false omit, true prints a bare boolean - * attribute, everything else stringifies and escapes. - */ - public static function attrStr(array $attrs, array $rest = []): string - { - $merged = array_merge($attrs, $rest); - $out = ''; - foreach ($merged as $name => $value) { - if ($value === null || $value === false) { - continue; - } - if ($value === true) { - $out .= ' ' . $name; - continue; - } - $out .= ' ' . $name . '="' . htmlspecialchars((string) $value, ENT_QUOTES) . '"'; - } - return $out; - } -} diff --git a/generated/php/UI8Kit/TwigExtension.php b/generated/php/UI8Kit/TwigExtension.php deleted file mode 100644 index 070b1b9..0000000 --- a/generated/php/UI8Kit/TwigExtension.php +++ /dev/null @@ -1,41 +0,0 @@ -addExtension(new \UI8Kit\TwigExtension()); - */ - -declare(strict_types=1); - -namespace UI8Kit; - -use Twig\Extension\AbstractExtension; -use Twig\TwigFunction; - -final class TwigExtension extends AbstractExtension -{ - public function getFunctions(): array - { - return [ - new TwigFunction('ui8kit_attr_str', [Rt::class, 'attrStr'], ['is_safe' => ['html']]), - new TwigFunction('ui8kit_or_null', [Rt::class, 'orNull']), - new TwigFunction('ui8kit_is_set_str', [Rt::class, 'isSetStr']), - new TwigFunction('ui8kit_default_if_empty', [Rt::class, 'defaultIfEmpty']), - new TwigFunction('ui8kit_map_or', static fn ($v, array $mapping, string $fallback, bool $lower = false): string => $lower ? Rt::mapOrLower(self::str($v), $mapping, $fallback) : Rt::mapOr(self::str($v), $mapping, $fallback)), - new TwigFunction('ui8kit_one_of_or', static fn ($v, string $fallback, array $allowed, bool $lower = false): string => $lower ? Rt::oneOfOrLower(self::str($v), $fallback, ...$allowed) : Rt::oneOfOr(self::str($v), $fallback, ...$allowed)), - new TwigFunction('ui8kit_int_map_or', static fn ($v, array $mapping, string $fallback): string => Rt::intMapOr((int) ($v ?? 0), $mapping, $fallback)), - new TwigFunction('ui8kit_concat_trim', static fn (array $parts): string => Rt::concatTrim(...array_map(static fn ($p) => (string) ($p ?? ''), $parts))), - new TwigFunction('ui8kit_cn', static fn (array $parts): string => Rt::cn(...array_map(static fn ($p) => (string) ($p ?? ''), $parts))), - new TwigFunction('ui8kit_resolve_tag', static fn ($tag, string $fallback, string $group): string => Rt::resolveTag(self::str($tag), $fallback, $group)), - new TwigFunction('ui8kit_title_tag', static fn ($order): string => Rt::titleTag((int) ($order ?? 0))), - new TwigFunction('ui8kit_classes', static fn (string $method, array $input = []): string => \call_user_func([Classes::class, $method], $input)), - ]; - } - - private static function str(mixed $v): string - { - return (string) ($v ?? ''); - } -} diff --git a/generated/php/vendor/autoload.php b/generated/php/vendor/autoload.php deleted file mode 100644 index f4c4fb5..0000000 --- a/generated/php/vendor/autoload.php +++ /dev/null @@ -1,22 +0,0 @@ -realpath = realpath($opened_path) ?: $opened_path; - $opened_path = $this->realpath; - $this->handle = fopen($this->realpath, $mode); - $this->position = 0; - - return (bool) $this->handle; - } - - public function stream_read($count) - { - $data = fread($this->handle, $count); - - if ($this->position === 0) { - $data = preg_replace('{^#!.*\r?\n}', '', $data); - } - - $this->position += strlen($data); - - return $data; - } - - public function stream_cast($castAs) - { - return $this->handle; - } - - public function stream_close() - { - fclose($this->handle); - } - - public function stream_lock($operation) - { - return $operation ? flock($this->handle, $operation) : true; - } - - public function stream_seek($offset, $whence) - { - if (0 === fseek($this->handle, $offset, $whence)) { - $this->position = ftell($this->handle); - return true; - } - - return false; - } - - public function stream_tell() - { - return $this->position; - } - - public function stream_eof() - { - return feof($this->handle); - } - - public function stream_stat() - { - return array(); - } - - public function stream_set_option($option, $arg1, $arg2) - { - return true; - } - - public function url_stat($path, $flags) - { - $path = substr($path, 17); - if (file_exists($path)) { - return stat($path); - } - - return false; - } - } - } - - if ( - (function_exists('stream_get_wrappers') && in_array('phpvfscomposer', stream_get_wrappers(), true)) - || (function_exists('stream_wrapper_register') && stream_wrapper_register('phpvfscomposer', 'Composer\BinProxyWrapper')) - ) { - return include("phpvfscomposer://" . __DIR__ . '/..'.'/latte/latte/bin/latte-lint'); - } -} - -return include __DIR__ . '/..'.'/latte/latte/bin/latte-lint'; diff --git a/generated/php/vendor/bin/latte-lint.bat b/generated/php/vendor/bin/latte-lint.bat deleted file mode 100644 index 2fb8891..0000000 --- a/generated/php/vendor/bin/latte-lint.bat +++ /dev/null @@ -1,5 +0,0 @@ -@ECHO OFF -setlocal DISABLEDELAYEDEXPANSION -SET BIN_TARGET=%~dp0/latte-lint -SET COMPOSER_RUNTIME_BIN_DIR=%~dp0 -php "%BIN_TARGET%" %* diff --git a/generated/php/vendor/composer/ClassLoader.php b/generated/php/vendor/composer/ClassLoader.php deleted file mode 100644 index 7824d8f..0000000 --- a/generated/php/vendor/composer/ClassLoader.php +++ /dev/null @@ -1,579 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Autoload; - -/** - * ClassLoader implements a PSR-0, PSR-4 and classmap class loader. - * - * $loader = new \Composer\Autoload\ClassLoader(); - * - * // register classes with namespaces - * $loader->add('Symfony\Component', __DIR__.'/component'); - * $loader->add('Symfony', __DIR__.'/framework'); - * - * // activate the autoloader - * $loader->register(); - * - * // to enable searching the include path (eg. for PEAR packages) - * $loader->setUseIncludePath(true); - * - * In this example, if you try to use a class in the Symfony\Component - * namespace or one of its children (Symfony\Component\Console for instance), - * the autoloader will first look for the class under the component/ - * directory, and it will then fallback to the framework/ directory if not - * found before giving up. - * - * This class is loosely based on the Symfony UniversalClassLoader. - * - * @author Fabien Potencier - * @author Jordi Boggiano - * @see https://www.php-fig.org/psr/psr-0/ - * @see https://www.php-fig.org/psr/psr-4/ - */ -class ClassLoader -{ - /** @var \Closure(string):void */ - private static $includeFile; - - /** @var string|null */ - private $vendorDir; - - // PSR-4 - /** - * @var array> - */ - private $prefixLengthsPsr4 = array(); - /** - * @var array> - */ - private $prefixDirsPsr4 = array(); - /** - * @var list - */ - private $fallbackDirsPsr4 = array(); - - // PSR-0 - /** - * List of PSR-0 prefixes - * - * Structured as array('F (first letter)' => array('Foo\Bar (full prefix)' => array('path', 'path2'))) - * - * @var array>> - */ - private $prefixesPsr0 = array(); - /** - * @var list - */ - private $fallbackDirsPsr0 = array(); - - /** @var bool */ - private $useIncludePath = false; - - /** - * @var array - */ - private $classMap = array(); - - /** @var bool */ - private $classMapAuthoritative = false; - - /** - * @var array - */ - private $missingClasses = array(); - - /** @var string|null */ - private $apcuPrefix; - - /** - * @var array - */ - private static $registeredLoaders = array(); - - /** - * @param string|null $vendorDir - */ - public function __construct($vendorDir = null) - { - $this->vendorDir = $vendorDir; - self::initializeIncludeClosure(); - } - - /** - * @return array> - */ - public function getPrefixes() - { - if (!empty($this->prefixesPsr0)) { - return call_user_func_array('array_merge', array_values($this->prefixesPsr0)); - } - - return array(); - } - - /** - * @return array> - */ - public function getPrefixesPsr4() - { - return $this->prefixDirsPsr4; - } - - /** - * @return list - */ - public function getFallbackDirs() - { - return $this->fallbackDirsPsr0; - } - - /** - * @return list - */ - public function getFallbackDirsPsr4() - { - return $this->fallbackDirsPsr4; - } - - /** - * @return array Array of classname => path - */ - public function getClassMap() - { - return $this->classMap; - } - - /** - * @param array $classMap Class to filename map - * - * @return void - */ - public function addClassMap(array $classMap) - { - if ($this->classMap) { - $this->classMap = array_merge($this->classMap, $classMap); - } else { - $this->classMap = $classMap; - } - } - - /** - * Registers a set of PSR-0 directories for a given prefix, either - * appending or prepending to the ones previously set for this prefix. - * - * @param string $prefix The prefix - * @param list|string $paths The PSR-0 root directories - * @param bool $prepend Whether to prepend the directories - * - * @return void - */ - public function add($prefix, $paths, $prepend = false) - { - $paths = (array) $paths; - if (!$prefix) { - if ($prepend) { - $this->fallbackDirsPsr0 = array_merge( - $paths, - $this->fallbackDirsPsr0 - ); - } else { - $this->fallbackDirsPsr0 = array_merge( - $this->fallbackDirsPsr0, - $paths - ); - } - - return; - } - - $first = $prefix[0]; - if (!isset($this->prefixesPsr0[$first][$prefix])) { - $this->prefixesPsr0[$first][$prefix] = $paths; - - return; - } - if ($prepend) { - $this->prefixesPsr0[$first][$prefix] = array_merge( - $paths, - $this->prefixesPsr0[$first][$prefix] - ); - } else { - $this->prefixesPsr0[$first][$prefix] = array_merge( - $this->prefixesPsr0[$first][$prefix], - $paths - ); - } - } - - /** - * Registers a set of PSR-4 directories for a given namespace, either - * appending or prepending to the ones previously set for this namespace. - * - * @param string $prefix The prefix/namespace, with trailing '\\' - * @param list|string $paths The PSR-4 base directories - * @param bool $prepend Whether to prepend the directories - * - * @throws \InvalidArgumentException - * - * @return void - */ - public function addPsr4($prefix, $paths, $prepend = false) - { - $paths = (array) $paths; - if (!$prefix) { - // Register directories for the root namespace. - if ($prepend) { - $this->fallbackDirsPsr4 = array_merge( - $paths, - $this->fallbackDirsPsr4 - ); - } else { - $this->fallbackDirsPsr4 = array_merge( - $this->fallbackDirsPsr4, - $paths - ); - } - } elseif (!isset($this->prefixDirsPsr4[$prefix])) { - // Register directories for a new namespace. - $length = strlen($prefix); - if ('\\' !== $prefix[$length - 1]) { - throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator."); - } - $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length; - $this->prefixDirsPsr4[$prefix] = $paths; - } elseif ($prepend) { - // Prepend directories for an already registered namespace. - $this->prefixDirsPsr4[$prefix] = array_merge( - $paths, - $this->prefixDirsPsr4[$prefix] - ); - } else { - // Append directories for an already registered namespace. - $this->prefixDirsPsr4[$prefix] = array_merge( - $this->prefixDirsPsr4[$prefix], - $paths - ); - } - } - - /** - * Registers a set of PSR-0 directories for a given prefix, - * replacing any others previously set for this prefix. - * - * @param string $prefix The prefix - * @param list|string $paths The PSR-0 base directories - * - * @return void - */ - public function set($prefix, $paths) - { - if (!$prefix) { - $this->fallbackDirsPsr0 = (array) $paths; - } else { - $this->prefixesPsr0[$prefix[0]][$prefix] = (array) $paths; - } - } - - /** - * Registers a set of PSR-4 directories for a given namespace, - * replacing any others previously set for this namespace. - * - * @param string $prefix The prefix/namespace, with trailing '\\' - * @param list|string $paths The PSR-4 base directories - * - * @throws \InvalidArgumentException - * - * @return void - */ - public function setPsr4($prefix, $paths) - { - if (!$prefix) { - $this->fallbackDirsPsr4 = (array) $paths; - } else { - $length = strlen($prefix); - if ('\\' !== $prefix[$length - 1]) { - throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator."); - } - $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length; - $this->prefixDirsPsr4[$prefix] = (array) $paths; - } - } - - /** - * Turns on searching the include path for class files. - * - * @param bool $useIncludePath - * - * @return void - */ - public function setUseIncludePath($useIncludePath) - { - $this->useIncludePath = $useIncludePath; - } - - /** - * Can be used to check if the autoloader uses the include path to check - * for classes. - * - * @return bool - */ - public function getUseIncludePath() - { - return $this->useIncludePath; - } - - /** - * Turns off searching the prefix and fallback directories for classes - * that have not been registered with the class map. - * - * @param bool $classMapAuthoritative - * - * @return void - */ - public function setClassMapAuthoritative($classMapAuthoritative) - { - $this->classMapAuthoritative = $classMapAuthoritative; - } - - /** - * Should class lookup fail if not found in the current class map? - * - * @return bool - */ - public function isClassMapAuthoritative() - { - return $this->classMapAuthoritative; - } - - /** - * APCu prefix to use to cache found/not-found classes, if the extension is enabled. - * - * @param string|null $apcuPrefix - * - * @return void - */ - public function setApcuPrefix($apcuPrefix) - { - $this->apcuPrefix = function_exists('apcu_fetch') && filter_var(ini_get('apc.enabled'), FILTER_VALIDATE_BOOLEAN) ? $apcuPrefix : null; - } - - /** - * The APCu prefix in use, or null if APCu caching is not enabled. - * - * @return string|null - */ - public function getApcuPrefix() - { - return $this->apcuPrefix; - } - - /** - * Registers this instance as an autoloader. - * - * @param bool $prepend Whether to prepend the autoloader or not - * - * @return void - */ - public function register($prepend = false) - { - spl_autoload_register(array($this, 'loadClass'), true, $prepend); - - if (null === $this->vendorDir) { - return; - } - - if ($prepend) { - self::$registeredLoaders = array($this->vendorDir => $this) + self::$registeredLoaders; - } else { - unset(self::$registeredLoaders[$this->vendorDir]); - self::$registeredLoaders[$this->vendorDir] = $this; - } - } - - /** - * Unregisters this instance as an autoloader. - * - * @return void - */ - public function unregister() - { - spl_autoload_unregister(array($this, 'loadClass')); - - if (null !== $this->vendorDir) { - unset(self::$registeredLoaders[$this->vendorDir]); - } - } - - /** - * Loads the given class or interface. - * - * @param string $class The name of the class - * @return true|null True if loaded, null otherwise - */ - public function loadClass($class) - { - if ($file = $this->findFile($class)) { - $includeFile = self::$includeFile; - $includeFile($file); - - return true; - } - - return null; - } - - /** - * Finds the path to the file where the class is defined. - * - * @param string $class The name of the class - * - * @return string|false The path if found, false otherwise - */ - public function findFile($class) - { - // class map lookup - if (isset($this->classMap[$class])) { - return $this->classMap[$class]; - } - if ($this->classMapAuthoritative || isset($this->missingClasses[$class])) { - return false; - } - if (null !== $this->apcuPrefix) { - $file = apcu_fetch($this->apcuPrefix.$class, $hit); - if ($hit) { - return $file; - } - } - - $file = $this->findFileWithExtension($class, '.php'); - - // Search for Hack files if we are running on HHVM - if (false === $file && defined('HHVM_VERSION')) { - $file = $this->findFileWithExtension($class, '.hh'); - } - - if (null !== $this->apcuPrefix) { - apcu_add($this->apcuPrefix.$class, $file); - } - - if (false === $file) { - // Remember that this class does not exist. - $this->missingClasses[$class] = true; - } - - return $file; - } - - /** - * Returns the currently registered loaders keyed by their corresponding vendor directories. - * - * @return array - */ - public static function getRegisteredLoaders() - { - return self::$registeredLoaders; - } - - /** - * @param string $class - * @param string $ext - * @return string|false - */ - private function findFileWithExtension($class, $ext) - { - // PSR-4 lookup - $logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext; - - $first = $class[0]; - if (isset($this->prefixLengthsPsr4[$first])) { - $subPath = $class; - while (false !== $lastPos = strrpos($subPath, '\\')) { - $subPath = substr($subPath, 0, $lastPos); - $search = $subPath . '\\'; - if (isset($this->prefixDirsPsr4[$search])) { - $pathEnd = DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $lastPos + 1); - foreach ($this->prefixDirsPsr4[$search] as $dir) { - if (file_exists($file = $dir . $pathEnd)) { - return $file; - } - } - } - } - } - - // PSR-4 fallback dirs - foreach ($this->fallbackDirsPsr4 as $dir) { - if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr4)) { - return $file; - } - } - - // PSR-0 lookup - if (false !== $pos = strrpos($class, '\\')) { - // namespaced class name - $logicalPathPsr0 = substr($logicalPathPsr4, 0, $pos + 1) - . strtr(substr($logicalPathPsr4, $pos + 1), '_', DIRECTORY_SEPARATOR); - } else { - // PEAR-like class name - $logicalPathPsr0 = strtr($class, '_', DIRECTORY_SEPARATOR) . $ext; - } - - if (isset($this->prefixesPsr0[$first])) { - foreach ($this->prefixesPsr0[$first] as $prefix => $dirs) { - if (0 === strpos($class, $prefix)) { - foreach ($dirs as $dir) { - if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) { - return $file; - } - } - } - } - } - - // PSR-0 fallback dirs - foreach ($this->fallbackDirsPsr0 as $dir) { - if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) { - return $file; - } - } - - // PSR-0 include paths. - if ($this->useIncludePath && $file = stream_resolve_include_path($logicalPathPsr0)) { - return $file; - } - - return false; - } - - /** - * @return void - */ - private static function initializeIncludeClosure() - { - if (self::$includeFile !== null) { - return; - } - - /** - * Scope isolated include. - * - * Prevents access to $this/self from included files. - * - * @param string $file - * @return void - */ - self::$includeFile = \Closure::bind(static function($file) { - include $file; - }, null, null); - } -} diff --git a/generated/php/vendor/composer/InstalledVersions.php b/generated/php/vendor/composer/InstalledVersions.php deleted file mode 100644 index 2052022..0000000 --- a/generated/php/vendor/composer/InstalledVersions.php +++ /dev/null @@ -1,396 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer; - -use Composer\Autoload\ClassLoader; -use Composer\Semver\VersionParser; - -/** - * This class is copied in every Composer installed project and available to all - * - * See also https://getcomposer.org/doc/07-runtime.md#installed-versions - * - * To require its presence, you can require `composer-runtime-api ^2.0` - * - * @final - */ -class InstalledVersions -{ - /** - * @var string|null if set (by reflection by Composer), this should be set to the path where this class is being copied to - * @internal - */ - private static $selfDir = null; - - /** - * @var mixed[]|null - * @psalm-var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array}|array{}|null - */ - private static $installed; - - /** - * @var bool - */ - private static $installedIsLocalDir; - - /** - * @var bool|null - */ - private static $canGetVendors; - - /** - * @var array[] - * @psalm-var array}> - */ - private static $installedByVendor = array(); - - /** - * Returns a list of all package names which are present, either by being installed, replaced or provided - * - * @return string[] - * @psalm-return list - */ - public static function getInstalledPackages() - { - $packages = array(); - foreach (self::getInstalled() as $installed) { - $packages[] = array_keys($installed['versions']); - } - - if (1 === \count($packages)) { - return $packages[0]; - } - - return array_keys(array_flip(\call_user_func_array('array_merge', $packages))); - } - - /** - * Returns a list of all package names with a specific type e.g. 'library' - * - * @param string $type - * @return string[] - * @psalm-return list - */ - public static function getInstalledPackagesByType($type) - { - $packagesByType = array(); - - foreach (self::getInstalled() as $installed) { - foreach ($installed['versions'] as $name => $package) { - if (isset($package['type']) && $package['type'] === $type) { - $packagesByType[] = $name; - } - } - } - - return $packagesByType; - } - - /** - * Checks whether the given package is installed - * - * This also returns true if the package name is provided or replaced by another package - * - * @param string $packageName - * @param bool $includeDevRequirements - * @return bool - */ - public static function isInstalled($packageName, $includeDevRequirements = true) - { - foreach (self::getInstalled() as $installed) { - if (isset($installed['versions'][$packageName])) { - return $includeDevRequirements || !isset($installed['versions'][$packageName]['dev_requirement']) || $installed['versions'][$packageName]['dev_requirement'] === false; - } - } - - return false; - } - - /** - * Checks whether the given package satisfies a version constraint - * - * e.g. If you want to know whether version 2.3+ of package foo/bar is installed, you would call: - * - * Composer\InstalledVersions::satisfies(new VersionParser, 'foo/bar', '^2.3') - * - * @param VersionParser $parser Install composer/semver to have access to this class and functionality - * @param string $packageName - * @param string|null $constraint A version constraint to check for, if you pass one you have to make sure composer/semver is required by your package - * @return bool - */ - public static function satisfies(VersionParser $parser, $packageName, $constraint) - { - $constraint = $parser->parseConstraints((string) $constraint); - $provided = $parser->parseConstraints(self::getVersionRanges($packageName)); - - return $provided->matches($constraint); - } - - /** - * Returns a version constraint representing all the range(s) which are installed for a given package - * - * It is easier to use this via isInstalled() with the $constraint argument if you need to check - * whether a given version of a package is installed, and not just whether it exists - * - * @param string $packageName - * @return string Version constraint usable with composer/semver - */ - public static function getVersionRanges($packageName) - { - foreach (self::getInstalled() as $installed) { - if (!isset($installed['versions'][$packageName])) { - continue; - } - - $ranges = array(); - if (isset($installed['versions'][$packageName]['pretty_version'])) { - $ranges[] = $installed['versions'][$packageName]['pretty_version']; - } - if (array_key_exists('aliases', $installed['versions'][$packageName])) { - $ranges = array_merge($ranges, $installed['versions'][$packageName]['aliases']); - } - if (array_key_exists('replaced', $installed['versions'][$packageName])) { - $ranges = array_merge($ranges, $installed['versions'][$packageName]['replaced']); - } - if (array_key_exists('provided', $installed['versions'][$packageName])) { - $ranges = array_merge($ranges, $installed['versions'][$packageName]['provided']); - } - - return implode(' || ', $ranges); - } - - throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); - } - - /** - * @param string $packageName - * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present - */ - public static function getVersion($packageName) - { - foreach (self::getInstalled() as $installed) { - if (!isset($installed['versions'][$packageName])) { - continue; - } - - if (!isset($installed['versions'][$packageName]['version'])) { - return null; - } - - return $installed['versions'][$packageName]['version']; - } - - throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); - } - - /** - * @param string $packageName - * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present - */ - public static function getPrettyVersion($packageName) - { - foreach (self::getInstalled() as $installed) { - if (!isset($installed['versions'][$packageName])) { - continue; - } - - if (!isset($installed['versions'][$packageName]['pretty_version'])) { - return null; - } - - return $installed['versions'][$packageName]['pretty_version']; - } - - throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); - } - - /** - * @param string $packageName - * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as reference - */ - public static function getReference($packageName) - { - foreach (self::getInstalled() as $installed) { - if (!isset($installed['versions'][$packageName])) { - continue; - } - - if (!isset($installed['versions'][$packageName]['reference'])) { - return null; - } - - return $installed['versions'][$packageName]['reference']; - } - - throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); - } - - /** - * @param string $packageName - * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as install path. Packages of type metapackages also have a null install path. - */ - public static function getInstallPath($packageName) - { - foreach (self::getInstalled() as $installed) { - if (!isset($installed['versions'][$packageName])) { - continue; - } - - return isset($installed['versions'][$packageName]['install_path']) ? $installed['versions'][$packageName]['install_path'] : null; - } - - throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); - } - - /** - * @return array - * @psalm-return array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool} - */ - public static function getRootPackage() - { - $installed = self::getInstalled(); - - return $installed[0]['root']; - } - - /** - * Returns the raw installed.php data for custom implementations - * - * @deprecated Use getAllRawData() instead which returns all datasets for all autoloaders present in the process. getRawData only returns the first dataset loaded, which may not be what you expect. - * @return array[] - * @psalm-return array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array} - */ - public static function getRawData() - { - @trigger_error('getRawData only returns the first dataset loaded, which may not be what you expect. Use getAllRawData() instead which returns all datasets for all autoloaders present in the process.', E_USER_DEPRECATED); - - if (null === self::$installed) { - // only require the installed.php file if this file is loaded from its dumped location, - // and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937 - if (substr(__DIR__, -8, 1) !== 'C') { - self::$installed = include __DIR__ . '/installed.php'; - } else { - self::$installed = array(); - } - } - - return self::$installed; - } - - /** - * Returns the raw data of all installed.php which are currently loaded for custom implementations - * - * @return array[] - * @psalm-return list}> - */ - public static function getAllRawData() - { - return self::getInstalled(); - } - - /** - * Lets you reload the static array from another file - * - * This is only useful for complex integrations in which a project needs to use - * this class but then also needs to execute another project's autoloader in process, - * and wants to ensure both projects have access to their version of installed.php. - * - * A typical case would be PHPUnit, where it would need to make sure it reads all - * the data it needs from this class, then call reload() with - * `require $CWD/vendor/composer/installed.php` (or similar) as input to make sure - * the project in which it runs can then also use this class safely, without - * interference between PHPUnit's dependencies and the project's dependencies. - * - * @param array[] $data A vendor/composer/installed.php data set - * @return void - * - * @psalm-param array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array} $data - */ - public static function reload($data) - { - self::$installed = $data; - self::$installedByVendor = array(); - - // when using reload, we disable the duplicate protection to ensure that self::$installed data is - // always returned, but we cannot know whether it comes from the installed.php in __DIR__ or not, - // so we have to assume it does not, and that may result in duplicate data being returned when listing - // all installed packages for example - self::$installedIsLocalDir = false; - } - - /** - * @return string - */ - private static function getSelfDir() - { - if (self::$selfDir === null) { - self::$selfDir = strtr(__DIR__, '\\', '/'); - } - - return self::$selfDir; - } - - /** - * @return array[] - * @psalm-return list}> - */ - private static function getInstalled() - { - if (null === self::$canGetVendors) { - self::$canGetVendors = method_exists('Composer\Autoload\ClassLoader', 'getRegisteredLoaders'); - } - - $installed = array(); - $copiedLocalDir = false; - - if (self::$canGetVendors) { - $selfDir = self::getSelfDir(); - foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => $loader) { - $vendorDir = strtr($vendorDir, '\\', '/'); - if (isset(self::$installedByVendor[$vendorDir])) { - $installed[] = self::$installedByVendor[$vendorDir]; - } elseif (is_file($vendorDir.'/composer/installed.php')) { - /** @var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array} $required */ - $required = require $vendorDir.'/composer/installed.php'; - self::$installedByVendor[$vendorDir] = $required; - $installed[] = $required; - if (self::$installed === null && $vendorDir.'/composer' === $selfDir) { - self::$installed = $required; - self::$installedIsLocalDir = true; - } - } - if (self::$installedIsLocalDir && $vendorDir.'/composer' === $selfDir) { - $copiedLocalDir = true; - } - } - } - - if (null === self::$installed) { - // only require the installed.php file if this file is loaded from its dumped location, - // and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937 - if (substr(__DIR__, -8, 1) !== 'C') { - /** @var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array} $required */ - $required = require __DIR__ . '/installed.php'; - self::$installed = $required; - } else { - self::$installed = array(); - } - } - - if (self::$installed !== array() && !$copiedLocalDir) { - $installed[] = self::$installed; - } - - return $installed; - } -} diff --git a/generated/php/vendor/composer/LICENSE b/generated/php/vendor/composer/LICENSE deleted file mode 100644 index f27399a..0000000 --- a/generated/php/vendor/composer/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ - -Copyright (c) Nils Adermann, Jordi Boggiano - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is furnished -to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - diff --git a/generated/php/vendor/composer/autoload_classmap.php b/generated/php/vendor/composer/autoload_classmap.php deleted file mode 100644 index c43c9c9..0000000 --- a/generated/php/vendor/composer/autoload_classmap.php +++ /dev/null @@ -1,192 +0,0 @@ - $vendorDir . '/composer/InstalledVersions.php', - 'Latte\\Attributes\\TemplateFilter' => $vendorDir . '/latte/latte/src/Latte/attributes.php', - 'Latte\\Attributes\\TemplateFunction' => $vendorDir . '/latte/latte/src/Latte/attributes.php', - 'Latte\\Bridges\\Tracy\\BlueScreenPanel' => $vendorDir . '/latte/latte/src/Bridges/Tracy/BlueScreenPanel.php', - 'Latte\\Bridges\\Tracy\\LattePanel' => $vendorDir . '/latte/latte/src/Bridges/Tracy/LattePanel.php', - 'Latte\\Bridges\\Tracy\\TracyExtension' => $vendorDir . '/latte/latte/src/Bridges/Tracy/TracyExtension.php', - 'Latte\\CompileException' => $vendorDir . '/latte/latte/src/Latte/exceptions.php', - 'Latte\\Compiler\\Block' => $vendorDir . '/latte/latte/src/Latte/Compiler/Block.php', - 'Latte\\Compiler\\Dedent' => $vendorDir . '/latte/latte/src/Latte/Compiler/Dedent.php', - 'Latte\\Compiler\\Escaper' => $vendorDir . '/latte/latte/src/Latte/Compiler/Escaper.php', - 'Latte\\Compiler\\Node' => $vendorDir . '/latte/latte/src/Latte/Compiler/Node.php', - 'Latte\\Compiler\\NodeHelpers' => $vendorDir . '/latte/latte/src/Latte/Compiler/NodeHelpers.php', - 'Latte\\Compiler\\NodeTraverser' => $vendorDir . '/latte/latte/src/Latte/Compiler/NodeTraverser.php', - 'Latte\\Compiler\\Nodes\\AreaNode' => $vendorDir . '/latte/latte/src/Latte/Compiler/Nodes/AreaNode.php', - 'Latte\\Compiler\\Nodes\\AuxiliaryNode' => $vendorDir . '/latte/latte/src/Latte/Compiler/Nodes/AuxiliaryNode.php', - 'Latte\\Compiler\\Nodes\\FragmentNode' => $vendorDir . '/latte/latte/src/Latte/Compiler/Nodes/FragmentNode.php', - 'Latte\\Compiler\\Nodes\\Html\\AttributeNode' => $vendorDir . '/latte/latte/src/Latte/Compiler/Nodes/Html/AttributeNode.php', - 'Latte\\Compiler\\Nodes\\Html\\BogusTagNode' => $vendorDir . '/latte/latte/src/Latte/Compiler/Nodes/Html/BogusTagNode.php', - 'Latte\\Compiler\\Nodes\\Html\\CommentNode' => $vendorDir . '/latte/latte/src/Latte/Compiler/Nodes/Html/CommentNode.php', - 'Latte\\Compiler\\Nodes\\Html\\ElementNode' => $vendorDir . '/latte/latte/src/Latte/Compiler/Nodes/Html/ElementNode.php', - 'Latte\\Compiler\\Nodes\\Html\\ExpressionAttributeNode' => $vendorDir . '/latte/latte/src/Latte/Compiler/Nodes/Html/ExpressionAttributeNode.php', - 'Latte\\Compiler\\Nodes\\Html\\TagNode' => $vendorDir . '/latte/latte/src/Latte/Compiler/Nodes/Html/TagNode.php', - 'Latte\\Compiler\\Nodes\\NopNode' => $vendorDir . '/latte/latte/src/Latte/Compiler/Nodes/NopNode.php', - 'Latte\\Compiler\\Nodes\\Php\\ArgumentNode' => $vendorDir . '/latte/latte/src/Latte/Compiler/Nodes/Php/ArgumentNode.php', - 'Latte\\Compiler\\Nodes\\Php\\ArrayItemNode' => $vendorDir . '/latte/latte/src/Latte/Compiler/Nodes/Php/ArrayItemNode.php', - 'Latte\\Compiler\\Nodes\\Php\\ClosureUseNode' => $vendorDir . '/latte/latte/src/Latte/Compiler/Nodes/Php/ClosureUseNode.php', - 'Latte\\Compiler\\Nodes\\Php\\ComplexTypeNode' => $vendorDir . '/latte/latte/src/Latte/Compiler/Nodes/Php/ComplexTypeNode.php', - 'Latte\\Compiler\\Nodes\\Php\\ExpressionNode' => $vendorDir . '/latte/latte/src/Latte/Compiler/Nodes/Php/ExpressionNode.php', - 'Latte\\Compiler\\Nodes\\Php\\Expression\\ArrayAccessNode' => $vendorDir . '/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/ArrayAccessNode.php', - 'Latte\\Compiler\\Nodes\\Php\\Expression\\ArrayNode' => $vendorDir . '/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/ArrayNode.php', - 'Latte\\Compiler\\Nodes\\Php\\Expression\\AssignNode' => $vendorDir . '/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/AssignNode.php', - 'Latte\\Compiler\\Nodes\\Php\\Expression\\AssignOpNode' => $vendorDir . '/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/AssignOpNode.php', - 'Latte\\Compiler\\Nodes\\Php\\Expression\\AuxiliaryNode' => $vendorDir . '/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/AuxiliaryNode.php', - 'Latte\\Compiler\\Nodes\\Php\\Expression\\BinaryOpNode' => $vendorDir . '/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/BinaryOpNode.php', - 'Latte\\Compiler\\Nodes\\Php\\Expression\\CastNode' => $vendorDir . '/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/CastNode.php', - 'Latte\\Compiler\\Nodes\\Php\\Expression\\ClassConstantFetchNode' => $vendorDir . '/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/ClassConstantFetchNode.php', - 'Latte\\Compiler\\Nodes\\Php\\Expression\\CloneNode' => $vendorDir . '/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/CloneNode.php', - 'Latte\\Compiler\\Nodes\\Php\\Expression\\ClosureNode' => $vendorDir . '/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/ClosureNode.php', - 'Latte\\Compiler\\Nodes\\Php\\Expression\\ConstantFetchNode' => $vendorDir . '/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/ConstantFetchNode.php', - 'Latte\\Compiler\\Nodes\\Php\\Expression\\EmptyNode' => $vendorDir . '/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/EmptyNode.php', - 'Latte\\Compiler\\Nodes\\Php\\Expression\\FilterCallNode' => $vendorDir . '/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/FilterCallNode.php', - 'Latte\\Compiler\\Nodes\\Php\\Expression\\FunctionCallNode' => $vendorDir . '/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/FunctionCallNode.php', - 'Latte\\Compiler\\Nodes\\Php\\Expression\\InNode' => $vendorDir . '/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/InNode.php', - 'Latte\\Compiler\\Nodes\\Php\\Expression\\InstanceofNode' => $vendorDir . '/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/InstanceofNode.php', - 'Latte\\Compiler\\Nodes\\Php\\Expression\\IssetNode' => $vendorDir . '/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/IssetNode.php', - 'Latte\\Compiler\\Nodes\\Php\\Expression\\MatchNode' => $vendorDir . '/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/MatchNode.php', - 'Latte\\Compiler\\Nodes\\Php\\Expression\\MethodCallNode' => $vendorDir . '/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/MethodCallNode.php', - 'Latte\\Compiler\\Nodes\\Php\\Expression\\NewNode' => $vendorDir . '/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/NewNode.php', - 'Latte\\Compiler\\Nodes\\Php\\Expression\\PostOpNode' => $vendorDir . '/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/PostOpNode.php', - 'Latte\\Compiler\\Nodes\\Php\\Expression\\PreOpNode' => $vendorDir . '/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/PreOpNode.php', - 'Latte\\Compiler\\Nodes\\Php\\Expression\\PropertyFetchNode' => $vendorDir . '/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/PropertyFetchNode.php', - 'Latte\\Compiler\\Nodes\\Php\\Expression\\StaticMethodCallNode' => $vendorDir . '/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/StaticMethodCallNode.php', - 'Latte\\Compiler\\Nodes\\Php\\Expression\\StaticPropertyFetchNode' => $vendorDir . '/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/StaticPropertyFetchNode.php', - 'Latte\\Compiler\\Nodes\\Php\\Expression\\TemporaryNode' => $vendorDir . '/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/TemporaryNode.php', - 'Latte\\Compiler\\Nodes\\Php\\Expression\\TernaryNode' => $vendorDir . '/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/TernaryNode.php', - 'Latte\\Compiler\\Nodes\\Php\\Expression\\UnaryOpNode' => $vendorDir . '/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/UnaryOpNode.php', - 'Latte\\Compiler\\Nodes\\Php\\Expression\\VariableNode' => $vendorDir . '/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/VariableNode.php', - 'Latte\\Compiler\\Nodes\\Php\\FilterNode' => $vendorDir . '/latte/latte/src/Latte/Compiler/Nodes/Php/FilterNode.php', - 'Latte\\Compiler\\Nodes\\Php\\IdentifierNode' => $vendorDir . '/latte/latte/src/Latte/Compiler/Nodes/Php/IdentifierNode.php', - 'Latte\\Compiler\\Nodes\\Php\\InterpolatedStringPartNode' => $vendorDir . '/latte/latte/src/Latte/Compiler/Nodes/Php/InterpolatedStringPartNode.php', - 'Latte\\Compiler\\Nodes\\Php\\IntersectionTypeNode' => $vendorDir . '/latte/latte/src/Latte/Compiler/Nodes/Php/IntersectionTypeNode.php', - 'Latte\\Compiler\\Nodes\\Php\\ListItemNode' => $vendorDir . '/latte/latte/src/Latte/Compiler/Nodes/Php/ListItemNode.php', - 'Latte\\Compiler\\Nodes\\Php\\ListNode' => $vendorDir . '/latte/latte/src/Latte/Compiler/Nodes/Php/ListNode.php', - 'Latte\\Compiler\\Nodes\\Php\\MatchArmNode' => $vendorDir . '/latte/latte/src/Latte/Compiler/Nodes/Php/MatchArmNode.php', - 'Latte\\Compiler\\Nodes\\Php\\ModifierNode' => $vendorDir . '/latte/latte/src/Latte/Compiler/Nodes/Php/ModifierNode.php', - 'Latte\\Compiler\\Nodes\\Php\\NameNode' => $vendorDir . '/latte/latte/src/Latte/Compiler/Nodes/Php/NameNode.php', - 'Latte\\Compiler\\Nodes\\Php\\NullableTypeNode' => $vendorDir . '/latte/latte/src/Latte/Compiler/Nodes/Php/NullableTypeNode.php', - 'Latte\\Compiler\\Nodes\\Php\\OperatorNode' => $vendorDir . '/latte/latte/src/Latte/Compiler/Nodes/Php/OperatorNode.php', - 'Latte\\Compiler\\Nodes\\Php\\ParameterNode' => $vendorDir . '/latte/latte/src/Latte/Compiler/Nodes/Php/ParameterNode.php', - 'Latte\\Compiler\\Nodes\\Php\\ScalarNode' => $vendorDir . '/latte/latte/src/Latte/Compiler/Nodes/Php/ScalarNode.php', - 'Latte\\Compiler\\Nodes\\Php\\Scalar\\BooleanNode' => $vendorDir . '/latte/latte/src/Latte/Compiler/Nodes/Php/Scalar/BooleanNode.php', - 'Latte\\Compiler\\Nodes\\Php\\Scalar\\FloatNode' => $vendorDir . '/latte/latte/src/Latte/Compiler/Nodes/Php/Scalar/FloatNode.php', - 'Latte\\Compiler\\Nodes\\Php\\Scalar\\IntegerNode' => $vendorDir . '/latte/latte/src/Latte/Compiler/Nodes/Php/Scalar/IntegerNode.php', - 'Latte\\Compiler\\Nodes\\Php\\Scalar\\InterpolatedStringNode' => $vendorDir . '/latte/latte/src/Latte/Compiler/Nodes/Php/Scalar/InterpolatedStringNode.php', - 'Latte\\Compiler\\Nodes\\Php\\Scalar\\NullNode' => $vendorDir . '/latte/latte/src/Latte/Compiler/Nodes/Php/Scalar/NullNode.php', - 'Latte\\Compiler\\Nodes\\Php\\Scalar\\StringNode' => $vendorDir . '/latte/latte/src/Latte/Compiler/Nodes/Php/Scalar/StringNode.php', - 'Latte\\Compiler\\Nodes\\Php\\SuperiorTypeNode' => $vendorDir . '/latte/latte/src/Latte/Compiler/Nodes/Php/SuperiorTypeNode.php', - 'Latte\\Compiler\\Nodes\\Php\\UnionTypeNode' => $vendorDir . '/latte/latte/src/Latte/Compiler/Nodes/Php/UnionTypeNode.php', - 'Latte\\Compiler\\Nodes\\Php\\VarLikeIdentifierNode' => $vendorDir . '/latte/latte/src/Latte/Compiler/Nodes/Php/VarLikeIdentifierNode.php', - 'Latte\\Compiler\\Nodes\\Php\\VariadicPlaceholderNode' => $vendorDir . '/latte/latte/src/Latte/Compiler/Nodes/Php/VariadicPlaceholderNode.php', - 'Latte\\Compiler\\Nodes\\PrintNode' => $vendorDir . '/latte/latte/src/Latte/Compiler/Nodes/PrintNode.php', - 'Latte\\Compiler\\Nodes\\StatementNode' => $vendorDir . '/latte/latte/src/Latte/Compiler/Nodes/StatementNode.php', - 'Latte\\Compiler\\Nodes\\TemplateNode' => $vendorDir . '/latte/latte/src/Latte/Compiler/Nodes/TemplateNode.php', - 'Latte\\Compiler\\Nodes\\TextNode' => $vendorDir . '/latte/latte/src/Latte/Compiler/Nodes/TextNode.php', - 'Latte\\Compiler\\PhpHelpers' => $vendorDir . '/latte/latte/src/Latte/Compiler/PhpHelpers.php', - 'Latte\\Compiler\\Position' => $vendorDir . '/latte/latte/src/Latte/Compiler/Position.php', - 'Latte\\Compiler\\PrintContext' => $vendorDir . '/latte/latte/src/Latte/Compiler/PrintContext.php', - 'Latte\\Compiler\\Range' => $vendorDir . '/latte/latte/src/Latte/Compiler/Range.php', - 'Latte\\Compiler\\Tag' => $vendorDir . '/latte/latte/src/Latte/Compiler/Tag.php', - 'Latte\\Compiler\\TagLexer' => $vendorDir . '/latte/latte/src/Latte/Compiler/TagLexer.php', - 'Latte\\Compiler\\TagParser' => $vendorDir . '/latte/latte/src/Latte/Compiler/TagParser.php', - 'Latte\\Compiler\\TagParserData' => $vendorDir . '/latte/latte/src/Latte/Compiler/TagParserData.php', - 'Latte\\Compiler\\TemplateGenerator' => $vendorDir . '/latte/latte/src/Latte/Compiler/TemplateGenerator.php', - 'Latte\\Compiler\\TemplateLexer' => $vendorDir . '/latte/latte/src/Latte/Compiler/TemplateLexer.php', - 'Latte\\Compiler\\TemplateParser' => $vendorDir . '/latte/latte/src/Latte/Compiler/TemplateParser.php', - 'Latte\\Compiler\\TemplateParserHtml' => $vendorDir . '/latte/latte/src/Latte/Compiler/TemplateParserHtml.php', - 'Latte\\Compiler\\Token' => $vendorDir . '/latte/latte/src/Latte/Compiler/Token.php', - 'Latte\\Compiler\\TokenStream' => $vendorDir . '/latte/latte/src/Latte/Compiler/TokenStream.php', - 'Latte\\ContentType' => $vendorDir . '/latte/latte/src/Latte/ContentType.php', - 'Latte\\Engine' => $vendorDir . '/latte/latte/src/Latte/Engine.php', - 'Latte\\Essential\\AuxiliaryIterator' => $vendorDir . '/latte/latte/src/Latte/Essential/AuxiliaryIterator.php', - 'Latte\\Essential\\Blueprint' => $vendorDir . '/latte/latte/src/Latte/Essential/Blueprint.php', - 'Latte\\Essential\\CachingIterator' => $vendorDir . '/latte/latte/src/Latte/Essential/CachingIterator.php', - 'Latte\\Essential\\CoreExtension' => $vendorDir . '/latte/latte/src/Latte/Essential/CoreExtension.php', - 'Latte\\Essential\\Filters' => $vendorDir . '/latte/latte/src/Latte/Essential/Filters.php', - 'Latte\\Essential\\Nodes\\BlockNode' => $vendorDir . '/latte/latte/src/Latte/Essential/Nodes/BlockNode.php', - 'Latte\\Essential\\Nodes\\CaptureNode' => $vendorDir . '/latte/latte/src/Latte/Essential/Nodes/CaptureNode.php', - 'Latte\\Essential\\Nodes\\ContentTypeNode' => $vendorDir . '/latte/latte/src/Latte/Essential/Nodes/ContentTypeNode.php', - 'Latte\\Essential\\Nodes\\CustomFunctionCallNode' => $vendorDir . '/latte/latte/src/Latte/Essential/Nodes/CustomFunctionCallNode.php', - 'Latte\\Essential\\Nodes\\DebugbreakNode' => $vendorDir . '/latte/latte/src/Latte/Essential/Nodes/DebugbreakNode.php', - 'Latte\\Essential\\Nodes\\DefineNode' => $vendorDir . '/latte/latte/src/Latte/Essential/Nodes/DefineNode.php', - 'Latte\\Essential\\Nodes\\DoNode' => $vendorDir . '/latte/latte/src/Latte/Essential/Nodes/DoNode.php', - 'Latte\\Essential\\Nodes\\DumpNode' => $vendorDir . '/latte/latte/src/Latte/Essential/Nodes/DumpNode.php', - 'Latte\\Essential\\Nodes\\EmbedNode' => $vendorDir . '/latte/latte/src/Latte/Essential/Nodes/EmbedNode.php', - 'Latte\\Essential\\Nodes\\ExtendsNode' => $vendorDir . '/latte/latte/src/Latte/Essential/Nodes/ExtendsNode.php', - 'Latte\\Essential\\Nodes\\FirstLastSepNode' => $vendorDir . '/latte/latte/src/Latte/Essential/Nodes/FirstLastSepNode.php', - 'Latte\\Essential\\Nodes\\ForNode' => $vendorDir . '/latte/latte/src/Latte/Essential/Nodes/ForNode.php', - 'Latte\\Essential\\Nodes\\ForeachNode' => $vendorDir . '/latte/latte/src/Latte/Essential/Nodes/ForeachNode.php', - 'Latte\\Essential\\Nodes\\IfChangedNode' => $vendorDir . '/latte/latte/src/Latte/Essential/Nodes/IfChangedNode.php', - 'Latte\\Essential\\Nodes\\IfContentNode' => $vendorDir . '/latte/latte/src/Latte/Essential/Nodes/IfContentNode.php', - 'Latte\\Essential\\Nodes\\IfNode' => $vendorDir . '/latte/latte/src/Latte/Essential/Nodes/IfNode.php', - 'Latte\\Essential\\Nodes\\ImportNode' => $vendorDir . '/latte/latte/src/Latte/Essential/Nodes/ImportNode.php', - 'Latte\\Essential\\Nodes\\IncludeBlockNode' => $vendorDir . '/latte/latte/src/Latte/Essential/Nodes/IncludeBlockNode.php', - 'Latte\\Essential\\Nodes\\IncludeFileNode' => $vendorDir . '/latte/latte/src/Latte/Essential/Nodes/IncludeFileNode.php', - 'Latte\\Essential\\Nodes\\IterateWhileNode' => $vendorDir . '/latte/latte/src/Latte/Essential/Nodes/IterateWhileNode.php', - 'Latte\\Essential\\Nodes\\JumpNode' => $vendorDir . '/latte/latte/src/Latte/Essential/Nodes/JumpNode.php', - 'Latte\\Essential\\Nodes\\NAttrNode' => $vendorDir . '/latte/latte/src/Latte/Essential/Nodes/NAttrNode.php', - 'Latte\\Essential\\Nodes\\NClassNode' => $vendorDir . '/latte/latte/src/Latte/Essential/Nodes/NClassNode.php', - 'Latte\\Essential\\Nodes\\NElseNode' => $vendorDir . '/latte/latte/src/Latte/Essential/Nodes/NElseNode.php', - 'Latte\\Essential\\Nodes\\NTagNode' => $vendorDir . '/latte/latte/src/Latte/Essential/Nodes/NTagNode.php', - 'Latte\\Essential\\Nodes\\ParametersNode' => $vendorDir . '/latte/latte/src/Latte/Essential/Nodes/ParametersNode.php', - 'Latte\\Essential\\Nodes\\RawPhpNode' => $vendorDir . '/latte/latte/src/Latte/Essential/Nodes/RawPhpNode.php', - 'Latte\\Essential\\Nodes\\RollbackNode' => $vendorDir . '/latte/latte/src/Latte/Essential/Nodes/RollbackNode.php', - 'Latte\\Essential\\Nodes\\SpacelessNode' => $vendorDir . '/latte/latte/src/Latte/Essential/Nodes/SpacelessNode.php', - 'Latte\\Essential\\Nodes\\SwitchNode' => $vendorDir . '/latte/latte/src/Latte/Essential/Nodes/SwitchNode.php', - 'Latte\\Essential\\Nodes\\TemplatePrintNode' => $vendorDir . '/latte/latte/src/Latte/Essential/Nodes/TemplatePrintNode.php', - 'Latte\\Essential\\Nodes\\TemplateTypeNode' => $vendorDir . '/latte/latte/src/Latte/Essential/Nodes/TemplateTypeNode.php', - 'Latte\\Essential\\Nodes\\TraceNode' => $vendorDir . '/latte/latte/src/Latte/Essential/Nodes/TraceNode.php', - 'Latte\\Essential\\Nodes\\TranslateNode' => $vendorDir . '/latte/latte/src/Latte/Essential/Nodes/TranslateNode.php', - 'Latte\\Essential\\Nodes\\TryNode' => $vendorDir . '/latte/latte/src/Latte/Essential/Nodes/TryNode.php', - 'Latte\\Essential\\Nodes\\VarNode' => $vendorDir . '/latte/latte/src/Latte/Essential/Nodes/VarNode.php', - 'Latte\\Essential\\Nodes\\VarPrintNode' => $vendorDir . '/latte/latte/src/Latte/Essential/Nodes/VarPrintNode.php', - 'Latte\\Essential\\Nodes\\VarTypeNode' => $vendorDir . '/latte/latte/src/Latte/Essential/Nodes/VarTypeNode.php', - 'Latte\\Essential\\Nodes\\WhileNode' => $vendorDir . '/latte/latte/src/Latte/Essential/Nodes/WhileNode.php', - 'Latte\\Essential\\Passes' => $vendorDir . '/latte/latte/src/Latte/Essential/Passes.php', - 'Latte\\Essential\\RawPhpExtension' => $vendorDir . '/latte/latte/src/Latte/Essential/RawPhpExtension.php', - 'Latte\\Essential\\RollbackException' => $vendorDir . '/latte/latte/src/Latte/Essential/RollbackException.php', - 'Latte\\Essential\\Tracer' => $vendorDir . '/latte/latte/src/Latte/Essential/Tracer.php', - 'Latte\\Essential\\TranslatorExtension' => $vendorDir . '/latte/latte/src/Latte/Essential/TranslatorExtension.php', - 'Latte\\Exception' => $vendorDir . '/latte/latte/src/Latte/exceptions.php', - 'Latte\\Extension' => $vendorDir . '/latte/latte/src/Latte/Extension.php', - 'Latte\\Feature' => $vendorDir . '/latte/latte/src/Latte/enums.php', - 'Latte\\Helpers' => $vendorDir . '/latte/latte/src/Latte/Helpers.php', - 'Latte\\Loader' => $vendorDir . '/latte/latte/src/Latte/Loader.php', - 'Latte\\Loaders\\FileLoader' => $vendorDir . '/latte/latte/src/Latte/Loaders/FileLoader.php', - 'Latte\\Loaders\\StringLoader' => $vendorDir . '/latte/latte/src/Latte/Loaders/StringLoader.php', - 'Latte\\Policy' => $vendorDir . '/latte/latte/src/Latte/Policy.php', - 'Latte\\PositionAwareException' => $vendorDir . '/latte/latte/src/Latte/exceptions.php', - 'Latte\\RuntimeException' => $vendorDir . '/latte/latte/src/Latte/exceptions.php', - 'Latte\\Runtime\\Block' => $vendorDir . '/latte/latte/src/Latte/Runtime/Block.php', - 'Latte\\Runtime\\Cache' => $vendorDir . '/latte/latte/src/Latte/Runtime/Cache.php', - 'Latte\\Runtime\\FilterExecutor' => $vendorDir . '/latte/latte/src/Latte/Runtime/FilterExecutor.php', - 'Latte\\Runtime\\FilterInfo' => $vendorDir . '/latte/latte/src/Latte/Runtime/FilterInfo.php', - 'Latte\\Runtime\\FunctionExecutor' => $vendorDir . '/latte/latte/src/Latte/Runtime/FunctionExecutor.php', - 'Latte\\Runtime\\Helpers' => $vendorDir . '/latte/latte/src/Latte/Runtime/Helpers.php', - 'Latte\\Runtime\\Html' => $vendorDir . '/latte/latte/src/Latte/Runtime/Html.php', - 'Latte\\Runtime\\HtmlHelpers' => $vendorDir . '/latte/latte/src/Latte/Runtime/HtmlHelpers.php', - 'Latte\\Runtime\\HtmlStringable' => $vendorDir . '/latte/latte/src/Latte/Runtime/HtmlStringable.php', - 'Latte\\Runtime\\Template' => $vendorDir . '/latte/latte/src/Latte/Runtime/Template.php', - 'Latte\\Runtime\\XmlHelpers' => $vendorDir . '/latte/latte/src/Latte/Runtime/XmlHelpers.php', - 'Latte\\Sandbox\\Nodes\\FunctionCallNode' => $vendorDir . '/latte/latte/src/Latte/Sandbox/Nodes/FunctionCallNode.php', - 'Latte\\Sandbox\\Nodes\\MethodCallNode' => $vendorDir . '/latte/latte/src/Latte/Sandbox/Nodes/MethodCallNode.php', - 'Latte\\Sandbox\\Nodes\\PropertyFetchNode' => $vendorDir . '/latte/latte/src/Latte/Sandbox/Nodes/PropertyFetchNode.php', - 'Latte\\Sandbox\\Nodes\\SandboxNode' => $vendorDir . '/latte/latte/src/Latte/Sandbox/Nodes/SandboxNode.php', - 'Latte\\Sandbox\\Nodes\\StaticMethodCallNode' => $vendorDir . '/latte/latte/src/Latte/Sandbox/Nodes/StaticMethodCallNode.php', - 'Latte\\Sandbox\\Nodes\\StaticPropertyFetchNode' => $vendorDir . '/latte/latte/src/Latte/Sandbox/Nodes/StaticPropertyFetchNode.php', - 'Latte\\Sandbox\\RuntimeChecker' => $vendorDir . '/latte/latte/src/Latte/Sandbox/RuntimeChecker.php', - 'Latte\\Sandbox\\SandboxExtension' => $vendorDir . '/latte/latte/src/Latte/Sandbox/SandboxExtension.php', - 'Latte\\Sandbox\\SecurityPolicy' => $vendorDir . '/latte/latte/src/Latte/Sandbox/SecurityPolicy.php', - 'Latte\\SecurityViolationException' => $vendorDir . '/latte/latte/src/Latte/exceptions.php', - 'Latte\\TemplateNotFoundException' => $vendorDir . '/latte/latte/src/Latte/exceptions.php', - 'Latte\\Tools\\Linter' => $vendorDir . '/latte/latte/src/Tools/Linter.php', - 'Latte\\Tools\\LinterExtension' => $vendorDir . '/latte/latte/src/Tools/LinterExtension.php', -); diff --git a/generated/php/vendor/composer/autoload_files.php b/generated/php/vendor/composer/autoload_files.php deleted file mode 100644 index b30d2f3..0000000 --- a/generated/php/vendor/composer/autoload_files.php +++ /dev/null @@ -1,16 +0,0 @@ - $vendorDir . '/symfony/deprecation-contracts/function.php', - '320cde22f66dd4f5d3fd621d3e88b98f' => $vendorDir . '/symfony/polyfill-ctype/bootstrap.php', - '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => $vendorDir . '/symfony/polyfill-mbstring/bootstrap.php', - '89efb1254ef2d1c5d80096acd12c4098' => $vendorDir . '/twig/twig/src/Resources/core.php', - 'ffecb95d45175fd40f75be8a23b34f90' => $vendorDir . '/twig/twig/src/Resources/debug.php', - 'c7baa00073ee9c61edf148c51917cfb4' => $vendorDir . '/twig/twig/src/Resources/escaper.php', - 'f844ccf1d25df8663951193c3fc307c8' => $vendorDir . '/twig/twig/src/Resources/string_loader.php', -); diff --git a/generated/php/vendor/composer/autoload_namespaces.php b/generated/php/vendor/composer/autoload_namespaces.php deleted file mode 100644 index f1ae7a0..0000000 --- a/generated/php/vendor/composer/autoload_namespaces.php +++ /dev/null @@ -1,9 +0,0 @@ - array($baseDir . '/php/UI8Kit'), - 'Twig\\' => array($vendorDir . '/twig/twig/src'), - 'Symfony\\Polyfill\\Mbstring\\' => array($vendorDir . '/symfony/polyfill-mbstring'), - 'Symfony\\Polyfill\\Ctype\\' => array($vendorDir . '/symfony/polyfill-ctype'), - 'Latte\\' => array($vendorDir . '/latte/latte/src/Latte'), -); diff --git a/generated/php/vendor/composer/autoload_real.php b/generated/php/vendor/composer/autoload_real.php deleted file mode 100644 index 40fcd7b..0000000 --- a/generated/php/vendor/composer/autoload_real.php +++ /dev/null @@ -1,50 +0,0 @@ -register(true); - - $filesToLoad = \Composer\Autoload\ComposerStaticInite50ead6fd841707ba46459723d1eeeeb::$files; - $requireFile = \Closure::bind(static function ($fileIdentifier, $file) { - if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) { - $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true; - - require $file; - } - }, null, null); - foreach ($filesToLoad as $fileIdentifier => $file) { - $requireFile($fileIdentifier, $file); - } - - return $loader; - } -} diff --git a/generated/php/vendor/composer/autoload_static.php b/generated/php/vendor/composer/autoload_static.php deleted file mode 100644 index e48a1fe..0000000 --- a/generated/php/vendor/composer/autoload_static.php +++ /dev/null @@ -1,257 +0,0 @@ - __DIR__ . '/..' . '/symfony/deprecation-contracts/function.php', - '320cde22f66dd4f5d3fd621d3e88b98f' => __DIR__ . '/..' . '/symfony/polyfill-ctype/bootstrap.php', - '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php', - '89efb1254ef2d1c5d80096acd12c4098' => __DIR__ . '/..' . '/twig/twig/src/Resources/core.php', - 'ffecb95d45175fd40f75be8a23b34f90' => __DIR__ . '/..' . '/twig/twig/src/Resources/debug.php', - 'c7baa00073ee9c61edf148c51917cfb4' => __DIR__ . '/..' . '/twig/twig/src/Resources/escaper.php', - 'f844ccf1d25df8663951193c3fc307c8' => __DIR__ . '/..' . '/twig/twig/src/Resources/string_loader.php', - ); - - public static $prefixLengthsPsr4 = array ( - 'U' => - array ( - 'UI8Kit\\' => 7, - ), - 'T' => - array ( - 'Twig\\' => 5, - ), - 'S' => - array ( - 'Symfony\\Polyfill\\Mbstring\\' => 26, - 'Symfony\\Polyfill\\Ctype\\' => 23, - ), - 'L' => - array ( - 'Latte\\' => 6, - ), - ); - - public static $prefixDirsPsr4 = array ( - 'UI8Kit\\' => - array ( - 0 => __DIR__ . '/../../..' . '/php/UI8Kit', - ), - 'Twig\\' => - array ( - 0 => __DIR__ . '/..' . '/twig/twig/src', - ), - 'Symfony\\Polyfill\\Mbstring\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/polyfill-mbstring', - ), - 'Symfony\\Polyfill\\Ctype\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/polyfill-ctype', - ), - 'Latte\\' => - array ( - 0 => __DIR__ . '/..' . '/latte/latte/src/Latte', - ), - ); - - public static $classMap = array ( - 'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php', - 'Latte\\Attributes\\TemplateFilter' => __DIR__ . '/..' . '/latte/latte/src/Latte/attributes.php', - 'Latte\\Attributes\\TemplateFunction' => __DIR__ . '/..' . '/latte/latte/src/Latte/attributes.php', - 'Latte\\Bridges\\Tracy\\BlueScreenPanel' => __DIR__ . '/..' . '/latte/latte/src/Bridges/Tracy/BlueScreenPanel.php', - 'Latte\\Bridges\\Tracy\\LattePanel' => __DIR__ . '/..' . '/latte/latte/src/Bridges/Tracy/LattePanel.php', - 'Latte\\Bridges\\Tracy\\TracyExtension' => __DIR__ . '/..' . '/latte/latte/src/Bridges/Tracy/TracyExtension.php', - 'Latte\\CompileException' => __DIR__ . '/..' . '/latte/latte/src/Latte/exceptions.php', - 'Latte\\Compiler\\Block' => __DIR__ . '/..' . '/latte/latte/src/Latte/Compiler/Block.php', - 'Latte\\Compiler\\Dedent' => __DIR__ . '/..' . '/latte/latte/src/Latte/Compiler/Dedent.php', - 'Latte\\Compiler\\Escaper' => __DIR__ . '/..' . '/latte/latte/src/Latte/Compiler/Escaper.php', - 'Latte\\Compiler\\Node' => __DIR__ . '/..' . '/latte/latte/src/Latte/Compiler/Node.php', - 'Latte\\Compiler\\NodeHelpers' => __DIR__ . '/..' . '/latte/latte/src/Latte/Compiler/NodeHelpers.php', - 'Latte\\Compiler\\NodeTraverser' => __DIR__ . '/..' . '/latte/latte/src/Latte/Compiler/NodeTraverser.php', - 'Latte\\Compiler\\Nodes\\AreaNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Compiler/Nodes/AreaNode.php', - 'Latte\\Compiler\\Nodes\\AuxiliaryNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Compiler/Nodes/AuxiliaryNode.php', - 'Latte\\Compiler\\Nodes\\FragmentNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Compiler/Nodes/FragmentNode.php', - 'Latte\\Compiler\\Nodes\\Html\\AttributeNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Compiler/Nodes/Html/AttributeNode.php', - 'Latte\\Compiler\\Nodes\\Html\\BogusTagNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Compiler/Nodes/Html/BogusTagNode.php', - 'Latte\\Compiler\\Nodes\\Html\\CommentNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Compiler/Nodes/Html/CommentNode.php', - 'Latte\\Compiler\\Nodes\\Html\\ElementNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Compiler/Nodes/Html/ElementNode.php', - 'Latte\\Compiler\\Nodes\\Html\\ExpressionAttributeNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Compiler/Nodes/Html/ExpressionAttributeNode.php', - 'Latte\\Compiler\\Nodes\\Html\\TagNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Compiler/Nodes/Html/TagNode.php', - 'Latte\\Compiler\\Nodes\\NopNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Compiler/Nodes/NopNode.php', - 'Latte\\Compiler\\Nodes\\Php\\ArgumentNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Compiler/Nodes/Php/ArgumentNode.php', - 'Latte\\Compiler\\Nodes\\Php\\ArrayItemNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Compiler/Nodes/Php/ArrayItemNode.php', - 'Latte\\Compiler\\Nodes\\Php\\ClosureUseNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Compiler/Nodes/Php/ClosureUseNode.php', - 'Latte\\Compiler\\Nodes\\Php\\ComplexTypeNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Compiler/Nodes/Php/ComplexTypeNode.php', - 'Latte\\Compiler\\Nodes\\Php\\ExpressionNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Compiler/Nodes/Php/ExpressionNode.php', - 'Latte\\Compiler\\Nodes\\Php\\Expression\\ArrayAccessNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/ArrayAccessNode.php', - 'Latte\\Compiler\\Nodes\\Php\\Expression\\ArrayNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/ArrayNode.php', - 'Latte\\Compiler\\Nodes\\Php\\Expression\\AssignNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/AssignNode.php', - 'Latte\\Compiler\\Nodes\\Php\\Expression\\AssignOpNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/AssignOpNode.php', - 'Latte\\Compiler\\Nodes\\Php\\Expression\\AuxiliaryNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/AuxiliaryNode.php', - 'Latte\\Compiler\\Nodes\\Php\\Expression\\BinaryOpNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/BinaryOpNode.php', - 'Latte\\Compiler\\Nodes\\Php\\Expression\\CastNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/CastNode.php', - 'Latte\\Compiler\\Nodes\\Php\\Expression\\ClassConstantFetchNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/ClassConstantFetchNode.php', - 'Latte\\Compiler\\Nodes\\Php\\Expression\\CloneNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/CloneNode.php', - 'Latte\\Compiler\\Nodes\\Php\\Expression\\ClosureNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/ClosureNode.php', - 'Latte\\Compiler\\Nodes\\Php\\Expression\\ConstantFetchNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/ConstantFetchNode.php', - 'Latte\\Compiler\\Nodes\\Php\\Expression\\EmptyNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/EmptyNode.php', - 'Latte\\Compiler\\Nodes\\Php\\Expression\\FilterCallNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/FilterCallNode.php', - 'Latte\\Compiler\\Nodes\\Php\\Expression\\FunctionCallNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/FunctionCallNode.php', - 'Latte\\Compiler\\Nodes\\Php\\Expression\\InNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/InNode.php', - 'Latte\\Compiler\\Nodes\\Php\\Expression\\InstanceofNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/InstanceofNode.php', - 'Latte\\Compiler\\Nodes\\Php\\Expression\\IssetNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/IssetNode.php', - 'Latte\\Compiler\\Nodes\\Php\\Expression\\MatchNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/MatchNode.php', - 'Latte\\Compiler\\Nodes\\Php\\Expression\\MethodCallNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/MethodCallNode.php', - 'Latte\\Compiler\\Nodes\\Php\\Expression\\NewNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/NewNode.php', - 'Latte\\Compiler\\Nodes\\Php\\Expression\\PostOpNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/PostOpNode.php', - 'Latte\\Compiler\\Nodes\\Php\\Expression\\PreOpNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/PreOpNode.php', - 'Latte\\Compiler\\Nodes\\Php\\Expression\\PropertyFetchNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/PropertyFetchNode.php', - 'Latte\\Compiler\\Nodes\\Php\\Expression\\StaticMethodCallNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/StaticMethodCallNode.php', - 'Latte\\Compiler\\Nodes\\Php\\Expression\\StaticPropertyFetchNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/StaticPropertyFetchNode.php', - 'Latte\\Compiler\\Nodes\\Php\\Expression\\TemporaryNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/TemporaryNode.php', - 'Latte\\Compiler\\Nodes\\Php\\Expression\\TernaryNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/TernaryNode.php', - 'Latte\\Compiler\\Nodes\\Php\\Expression\\UnaryOpNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/UnaryOpNode.php', - 'Latte\\Compiler\\Nodes\\Php\\Expression\\VariableNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/VariableNode.php', - 'Latte\\Compiler\\Nodes\\Php\\FilterNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Compiler/Nodes/Php/FilterNode.php', - 'Latte\\Compiler\\Nodes\\Php\\IdentifierNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Compiler/Nodes/Php/IdentifierNode.php', - 'Latte\\Compiler\\Nodes\\Php\\InterpolatedStringPartNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Compiler/Nodes/Php/InterpolatedStringPartNode.php', - 'Latte\\Compiler\\Nodes\\Php\\IntersectionTypeNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Compiler/Nodes/Php/IntersectionTypeNode.php', - 'Latte\\Compiler\\Nodes\\Php\\ListItemNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Compiler/Nodes/Php/ListItemNode.php', - 'Latte\\Compiler\\Nodes\\Php\\ListNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Compiler/Nodes/Php/ListNode.php', - 'Latte\\Compiler\\Nodes\\Php\\MatchArmNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Compiler/Nodes/Php/MatchArmNode.php', - 'Latte\\Compiler\\Nodes\\Php\\ModifierNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Compiler/Nodes/Php/ModifierNode.php', - 'Latte\\Compiler\\Nodes\\Php\\NameNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Compiler/Nodes/Php/NameNode.php', - 'Latte\\Compiler\\Nodes\\Php\\NullableTypeNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Compiler/Nodes/Php/NullableTypeNode.php', - 'Latte\\Compiler\\Nodes\\Php\\OperatorNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Compiler/Nodes/Php/OperatorNode.php', - 'Latte\\Compiler\\Nodes\\Php\\ParameterNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Compiler/Nodes/Php/ParameterNode.php', - 'Latte\\Compiler\\Nodes\\Php\\ScalarNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Compiler/Nodes/Php/ScalarNode.php', - 'Latte\\Compiler\\Nodes\\Php\\Scalar\\BooleanNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Compiler/Nodes/Php/Scalar/BooleanNode.php', - 'Latte\\Compiler\\Nodes\\Php\\Scalar\\FloatNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Compiler/Nodes/Php/Scalar/FloatNode.php', - 'Latte\\Compiler\\Nodes\\Php\\Scalar\\IntegerNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Compiler/Nodes/Php/Scalar/IntegerNode.php', - 'Latte\\Compiler\\Nodes\\Php\\Scalar\\InterpolatedStringNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Compiler/Nodes/Php/Scalar/InterpolatedStringNode.php', - 'Latte\\Compiler\\Nodes\\Php\\Scalar\\NullNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Compiler/Nodes/Php/Scalar/NullNode.php', - 'Latte\\Compiler\\Nodes\\Php\\Scalar\\StringNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Compiler/Nodes/Php/Scalar/StringNode.php', - 'Latte\\Compiler\\Nodes\\Php\\SuperiorTypeNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Compiler/Nodes/Php/SuperiorTypeNode.php', - 'Latte\\Compiler\\Nodes\\Php\\UnionTypeNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Compiler/Nodes/Php/UnionTypeNode.php', - 'Latte\\Compiler\\Nodes\\Php\\VarLikeIdentifierNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Compiler/Nodes/Php/VarLikeIdentifierNode.php', - 'Latte\\Compiler\\Nodes\\Php\\VariadicPlaceholderNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Compiler/Nodes/Php/VariadicPlaceholderNode.php', - 'Latte\\Compiler\\Nodes\\PrintNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Compiler/Nodes/PrintNode.php', - 'Latte\\Compiler\\Nodes\\StatementNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Compiler/Nodes/StatementNode.php', - 'Latte\\Compiler\\Nodes\\TemplateNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Compiler/Nodes/TemplateNode.php', - 'Latte\\Compiler\\Nodes\\TextNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Compiler/Nodes/TextNode.php', - 'Latte\\Compiler\\PhpHelpers' => __DIR__ . '/..' . '/latte/latte/src/Latte/Compiler/PhpHelpers.php', - 'Latte\\Compiler\\Position' => __DIR__ . '/..' . '/latte/latte/src/Latte/Compiler/Position.php', - 'Latte\\Compiler\\PrintContext' => __DIR__ . '/..' . '/latte/latte/src/Latte/Compiler/PrintContext.php', - 'Latte\\Compiler\\Range' => __DIR__ . '/..' . '/latte/latte/src/Latte/Compiler/Range.php', - 'Latte\\Compiler\\Tag' => __DIR__ . '/..' . '/latte/latte/src/Latte/Compiler/Tag.php', - 'Latte\\Compiler\\TagLexer' => __DIR__ . '/..' . '/latte/latte/src/Latte/Compiler/TagLexer.php', - 'Latte\\Compiler\\TagParser' => __DIR__ . '/..' . '/latte/latte/src/Latte/Compiler/TagParser.php', - 'Latte\\Compiler\\TagParserData' => __DIR__ . '/..' . '/latte/latte/src/Latte/Compiler/TagParserData.php', - 'Latte\\Compiler\\TemplateGenerator' => __DIR__ . '/..' . '/latte/latte/src/Latte/Compiler/TemplateGenerator.php', - 'Latte\\Compiler\\TemplateLexer' => __DIR__ . '/..' . '/latte/latte/src/Latte/Compiler/TemplateLexer.php', - 'Latte\\Compiler\\TemplateParser' => __DIR__ . '/..' . '/latte/latte/src/Latte/Compiler/TemplateParser.php', - 'Latte\\Compiler\\TemplateParserHtml' => __DIR__ . '/..' . '/latte/latte/src/Latte/Compiler/TemplateParserHtml.php', - 'Latte\\Compiler\\Token' => __DIR__ . '/..' . '/latte/latte/src/Latte/Compiler/Token.php', - 'Latte\\Compiler\\TokenStream' => __DIR__ . '/..' . '/latte/latte/src/Latte/Compiler/TokenStream.php', - 'Latte\\ContentType' => __DIR__ . '/..' . '/latte/latte/src/Latte/ContentType.php', - 'Latte\\Engine' => __DIR__ . '/..' . '/latte/latte/src/Latte/Engine.php', - 'Latte\\Essential\\AuxiliaryIterator' => __DIR__ . '/..' . '/latte/latte/src/Latte/Essential/AuxiliaryIterator.php', - 'Latte\\Essential\\Blueprint' => __DIR__ . '/..' . '/latte/latte/src/Latte/Essential/Blueprint.php', - 'Latte\\Essential\\CachingIterator' => __DIR__ . '/..' . '/latte/latte/src/Latte/Essential/CachingIterator.php', - 'Latte\\Essential\\CoreExtension' => __DIR__ . '/..' . '/latte/latte/src/Latte/Essential/CoreExtension.php', - 'Latte\\Essential\\Filters' => __DIR__ . '/..' . '/latte/latte/src/Latte/Essential/Filters.php', - 'Latte\\Essential\\Nodes\\BlockNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Essential/Nodes/BlockNode.php', - 'Latte\\Essential\\Nodes\\CaptureNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Essential/Nodes/CaptureNode.php', - 'Latte\\Essential\\Nodes\\ContentTypeNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Essential/Nodes/ContentTypeNode.php', - 'Latte\\Essential\\Nodes\\CustomFunctionCallNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Essential/Nodes/CustomFunctionCallNode.php', - 'Latte\\Essential\\Nodes\\DebugbreakNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Essential/Nodes/DebugbreakNode.php', - 'Latte\\Essential\\Nodes\\DefineNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Essential/Nodes/DefineNode.php', - 'Latte\\Essential\\Nodes\\DoNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Essential/Nodes/DoNode.php', - 'Latte\\Essential\\Nodes\\DumpNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Essential/Nodes/DumpNode.php', - 'Latte\\Essential\\Nodes\\EmbedNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Essential/Nodes/EmbedNode.php', - 'Latte\\Essential\\Nodes\\ExtendsNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Essential/Nodes/ExtendsNode.php', - 'Latte\\Essential\\Nodes\\FirstLastSepNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Essential/Nodes/FirstLastSepNode.php', - 'Latte\\Essential\\Nodes\\ForNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Essential/Nodes/ForNode.php', - 'Latte\\Essential\\Nodes\\ForeachNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Essential/Nodes/ForeachNode.php', - 'Latte\\Essential\\Nodes\\IfChangedNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Essential/Nodes/IfChangedNode.php', - 'Latte\\Essential\\Nodes\\IfContentNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Essential/Nodes/IfContentNode.php', - 'Latte\\Essential\\Nodes\\IfNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Essential/Nodes/IfNode.php', - 'Latte\\Essential\\Nodes\\ImportNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Essential/Nodes/ImportNode.php', - 'Latte\\Essential\\Nodes\\IncludeBlockNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Essential/Nodes/IncludeBlockNode.php', - 'Latte\\Essential\\Nodes\\IncludeFileNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Essential/Nodes/IncludeFileNode.php', - 'Latte\\Essential\\Nodes\\IterateWhileNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Essential/Nodes/IterateWhileNode.php', - 'Latte\\Essential\\Nodes\\JumpNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Essential/Nodes/JumpNode.php', - 'Latte\\Essential\\Nodes\\NAttrNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Essential/Nodes/NAttrNode.php', - 'Latte\\Essential\\Nodes\\NClassNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Essential/Nodes/NClassNode.php', - 'Latte\\Essential\\Nodes\\NElseNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Essential/Nodes/NElseNode.php', - 'Latte\\Essential\\Nodes\\NTagNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Essential/Nodes/NTagNode.php', - 'Latte\\Essential\\Nodes\\ParametersNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Essential/Nodes/ParametersNode.php', - 'Latte\\Essential\\Nodes\\RawPhpNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Essential/Nodes/RawPhpNode.php', - 'Latte\\Essential\\Nodes\\RollbackNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Essential/Nodes/RollbackNode.php', - 'Latte\\Essential\\Nodes\\SpacelessNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Essential/Nodes/SpacelessNode.php', - 'Latte\\Essential\\Nodes\\SwitchNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Essential/Nodes/SwitchNode.php', - 'Latte\\Essential\\Nodes\\TemplatePrintNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Essential/Nodes/TemplatePrintNode.php', - 'Latte\\Essential\\Nodes\\TemplateTypeNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Essential/Nodes/TemplateTypeNode.php', - 'Latte\\Essential\\Nodes\\TraceNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Essential/Nodes/TraceNode.php', - 'Latte\\Essential\\Nodes\\TranslateNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Essential/Nodes/TranslateNode.php', - 'Latte\\Essential\\Nodes\\TryNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Essential/Nodes/TryNode.php', - 'Latte\\Essential\\Nodes\\VarNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Essential/Nodes/VarNode.php', - 'Latte\\Essential\\Nodes\\VarPrintNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Essential/Nodes/VarPrintNode.php', - 'Latte\\Essential\\Nodes\\VarTypeNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Essential/Nodes/VarTypeNode.php', - 'Latte\\Essential\\Nodes\\WhileNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Essential/Nodes/WhileNode.php', - 'Latte\\Essential\\Passes' => __DIR__ . '/..' . '/latte/latte/src/Latte/Essential/Passes.php', - 'Latte\\Essential\\RawPhpExtension' => __DIR__ . '/..' . '/latte/latte/src/Latte/Essential/RawPhpExtension.php', - 'Latte\\Essential\\RollbackException' => __DIR__ . '/..' . '/latte/latte/src/Latte/Essential/RollbackException.php', - 'Latte\\Essential\\Tracer' => __DIR__ . '/..' . '/latte/latte/src/Latte/Essential/Tracer.php', - 'Latte\\Essential\\TranslatorExtension' => __DIR__ . '/..' . '/latte/latte/src/Latte/Essential/TranslatorExtension.php', - 'Latte\\Exception' => __DIR__ . '/..' . '/latte/latte/src/Latte/exceptions.php', - 'Latte\\Extension' => __DIR__ . '/..' . '/latte/latte/src/Latte/Extension.php', - 'Latte\\Feature' => __DIR__ . '/..' . '/latte/latte/src/Latte/enums.php', - 'Latte\\Helpers' => __DIR__ . '/..' . '/latte/latte/src/Latte/Helpers.php', - 'Latte\\Loader' => __DIR__ . '/..' . '/latte/latte/src/Latte/Loader.php', - 'Latte\\Loaders\\FileLoader' => __DIR__ . '/..' . '/latte/latte/src/Latte/Loaders/FileLoader.php', - 'Latte\\Loaders\\StringLoader' => __DIR__ . '/..' . '/latte/latte/src/Latte/Loaders/StringLoader.php', - 'Latte\\Policy' => __DIR__ . '/..' . '/latte/latte/src/Latte/Policy.php', - 'Latte\\PositionAwareException' => __DIR__ . '/..' . '/latte/latte/src/Latte/exceptions.php', - 'Latte\\RuntimeException' => __DIR__ . '/..' . '/latte/latte/src/Latte/exceptions.php', - 'Latte\\Runtime\\Block' => __DIR__ . '/..' . '/latte/latte/src/Latte/Runtime/Block.php', - 'Latte\\Runtime\\Cache' => __DIR__ . '/..' . '/latte/latte/src/Latte/Runtime/Cache.php', - 'Latte\\Runtime\\FilterExecutor' => __DIR__ . '/..' . '/latte/latte/src/Latte/Runtime/FilterExecutor.php', - 'Latte\\Runtime\\FilterInfo' => __DIR__ . '/..' . '/latte/latte/src/Latte/Runtime/FilterInfo.php', - 'Latte\\Runtime\\FunctionExecutor' => __DIR__ . '/..' . '/latte/latte/src/Latte/Runtime/FunctionExecutor.php', - 'Latte\\Runtime\\Helpers' => __DIR__ . '/..' . '/latte/latte/src/Latte/Runtime/Helpers.php', - 'Latte\\Runtime\\Html' => __DIR__ . '/..' . '/latte/latte/src/Latte/Runtime/Html.php', - 'Latte\\Runtime\\HtmlHelpers' => __DIR__ . '/..' . '/latte/latte/src/Latte/Runtime/HtmlHelpers.php', - 'Latte\\Runtime\\HtmlStringable' => __DIR__ . '/..' . '/latte/latte/src/Latte/Runtime/HtmlStringable.php', - 'Latte\\Runtime\\Template' => __DIR__ . '/..' . '/latte/latte/src/Latte/Runtime/Template.php', - 'Latte\\Runtime\\XmlHelpers' => __DIR__ . '/..' . '/latte/latte/src/Latte/Runtime/XmlHelpers.php', - 'Latte\\Sandbox\\Nodes\\FunctionCallNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Sandbox/Nodes/FunctionCallNode.php', - 'Latte\\Sandbox\\Nodes\\MethodCallNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Sandbox/Nodes/MethodCallNode.php', - 'Latte\\Sandbox\\Nodes\\PropertyFetchNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Sandbox/Nodes/PropertyFetchNode.php', - 'Latte\\Sandbox\\Nodes\\SandboxNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Sandbox/Nodes/SandboxNode.php', - 'Latte\\Sandbox\\Nodes\\StaticMethodCallNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Sandbox/Nodes/StaticMethodCallNode.php', - 'Latte\\Sandbox\\Nodes\\StaticPropertyFetchNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Sandbox/Nodes/StaticPropertyFetchNode.php', - 'Latte\\Sandbox\\RuntimeChecker' => __DIR__ . '/..' . '/latte/latte/src/Latte/Sandbox/RuntimeChecker.php', - 'Latte\\Sandbox\\SandboxExtension' => __DIR__ . '/..' . '/latte/latte/src/Latte/Sandbox/SandboxExtension.php', - 'Latte\\Sandbox\\SecurityPolicy' => __DIR__ . '/..' . '/latte/latte/src/Latte/Sandbox/SecurityPolicy.php', - 'Latte\\SecurityViolationException' => __DIR__ . '/..' . '/latte/latte/src/Latte/exceptions.php', - 'Latte\\TemplateNotFoundException' => __DIR__ . '/..' . '/latte/latte/src/Latte/exceptions.php', - 'Latte\\Tools\\Linter' => __DIR__ . '/..' . '/latte/latte/src/Tools/Linter.php', - 'Latte\\Tools\\LinterExtension' => __DIR__ . '/..' . '/latte/latte/src/Tools/LinterExtension.php', - ); - - public static function getInitializer(ClassLoader $loader) - { - return \Closure::bind(function () use ($loader) { - $loader->prefixLengthsPsr4 = ComposerStaticInite50ead6fd841707ba46459723d1eeeeb::$prefixLengthsPsr4; - $loader->prefixDirsPsr4 = ComposerStaticInite50ead6fd841707ba46459723d1eeeeb::$prefixDirsPsr4; - $loader->classMap = ComposerStaticInite50ead6fd841707ba46459723d1eeeeb::$classMap; - - }, null, ClassLoader::class); - } -} diff --git a/generated/php/vendor/composer/installed.json b/generated/php/vendor/composer/installed.json deleted file mode 100644 index 2ad9183..0000000 --- a/generated/php/vendor/composer/installed.json +++ /dev/null @@ -1,431 +0,0 @@ -{ - "packages": [ - { - "name": "latte/latte", - "version": "v3.1.4", - "version_normalized": "3.1.4.0", - "source": { - "type": "git", - "url": "https://github.com/nette/latte.git", - "reference": "14dea9fc32c0d1cf5e9a1bd59556ae8be023c2a6" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/latte/zipball/14dea9fc32c0d1cf5e9a1bd59556ae8be023c2a6", - "reference": "14dea9fc32c0d1cf5e9a1bd59556ae8be023c2a6", - "shasum": "" - }, - "require": { - "ext-json": "*", - "ext-tokenizer": "*", - "php": "8.2 - 8.5" - }, - "conflict": { - "nette/application": "<3.1.7", - "nette/caching": "<3.1.4" - }, - "require-dev": { - "nette/php-generator": "^4.0", - "nette/phpstan-rules": "^1.0", - "nette/tester": "^2.6", - "nette/utils": "^4.0", - "phpstan/extension-installer": "^1.4@stable", - "phpstan/phpstan": "^2.1@stable", - "tracy/tracy": "^2.10" - }, - "suggest": { - "ext-fileinfo": "to use filter |datastream", - "ext-iconv": "to use filters |reverse, |substring", - "ext-intl": "to use Latte\\Engine::setLocale()", - "ext-mbstring": "to use filters like lower, upper, capitalize, ...", - "nette/php-generator": "to use tag {templatePrint}", - "nette/utils": "to use filter |webalize" - }, - "time": "2026-04-23T06:30:25+00:00", - "bin": [ - "bin/latte-lint" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.1-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Latte\\": "src/Latte" - }, - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause", - "GPL-2.0-only", - "GPL-3.0-only" - ], - "authors": [ - { - "name": "David Grudl", - "homepage": "https://davidgrudl.com" - }, - { - "name": "Nette Community", - "homepage": "https://nette.org/contributors" - } - ], - "description": "☕ Latte: the intuitive and fast template engine for those who want the most secure PHP sites. Introduces context-sensitive escaping.", - "homepage": "https://latte.nette.org", - "keywords": [ - "context-sensitive", - "engine", - "escaping", - "html", - "nette", - "security", - "template", - "twig" - ], - "support": { - "issues": "https://github.com/nette/latte/issues", - "source": "https://github.com/nette/latte/tree/v3.1.4" - }, - "install-path": "../latte/latte" - }, - { - "name": "symfony/deprecation-contracts", - "version": "v3.7.1", - "version_normalized": "3.7.1.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "f3202fa1b5097b0af062dc978b32ecf63404e31d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/f3202fa1b5097b0af062dc978b32ecf63404e31d", - "reference": "f3202fa1b5097b0af062dc978b32ecf63404e31d", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "time": "2026-06-05T06:23:12+00:00", - "type": "library", - "extra": { - "thanks": { - "url": "https://github.com/symfony/contracts", - "name": "symfony/contracts" - }, - "branch-alias": { - "dev-main": "3.7-dev" - } - }, - "installation-source": "dist", - "autoload": { - "files": [ - "function.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "A generic function and convention to trigger deprecation notices", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v3.7.1" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://github.com/nicolas-grekas", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "install-path": "../symfony/deprecation-contracts" - }, - { - "name": "symfony/polyfill-ctype", - "version": "v1.37.0", - "version_normalized": "1.37.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "141046a8f9477948ff284fa65be2095baafb94f2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/141046a8f9477948ff284fa65be2095baafb94f2", - "reference": "141046a8f9477948ff284fa65be2095baafb94f2", - "shasum": "" - }, - "require": { - "php": ">=7.2" - }, - "provide": { - "ext-ctype": "*" - }, - "suggest": { - "ext-ctype": "For best performance" - }, - "time": "2026-04-10T16:19:22+00:00", - "type": "library", - "extra": { - "thanks": { - "url": "https://github.com/symfony/polyfill", - "name": "symfony/polyfill" - } - }, - "installation-source": "dist", - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Gert de Pagter", - "email": "BackEndTea@gmail.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for ctype functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "ctype", - "polyfill", - "portable" - ], - "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.37.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://github.com/nicolas-grekas", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "install-path": "../symfony/polyfill-ctype" - }, - { - "name": "symfony/polyfill-mbstring", - "version": "v1.38.2", - "version_normalized": "1.38.2.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "d3d318bad5e7a1bfbd026009c8bfb8d8f99ae6b6" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/d3d318bad5e7a1bfbd026009c8bfb8d8f99ae6b6", - "reference": "d3d318bad5e7a1bfbd026009c8bfb8d8f99ae6b6", - "shasum": "" - }, - "require": { - "ext-iconv": "*", - "php": ">=7.2" - }, - "provide": { - "ext-mbstring": "*" - }, - "suggest": { - "ext-mbstring": "For best performance" - }, - "time": "2026-05-27T06:59:30+00:00", - "type": "library", - "extra": { - "thanks": { - "url": "https://github.com/symfony/polyfill", - "name": "symfony/polyfill" - } - }, - "installation-source": "dist", - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for the Mbstring extension", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "mbstring", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.38.2" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://github.com/nicolas-grekas", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "install-path": "../symfony/polyfill-mbstring" - }, - { - "name": "twig/twig", - "version": "v3.28.0", - "version_normalized": "3.28.0.0", - "source": { - "type": "git", - "url": "https://github.com/twigphp/Twig.git", - "reference": "597c12ed286fb9d1701a36684ce6e0cbe28ebc8b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/597c12ed286fb9d1701a36684ce6e0cbe28ebc8b", - "reference": "597c12ed286fb9d1701a36684ce6e0cbe28ebc8b", - "shasum": "" - }, - "require": { - "php": ">=8.1.0", - "symfony/deprecation-contracts": "^2.5|^3", - "symfony/polyfill-ctype": "^1.8", - "symfony/polyfill-mbstring": "^1.3" - }, - "require-dev": { - "php-cs-fixer/shim": "^3.0@stable", - "phpstan/phpstan": "^2.0@stable", - "psr/container": "^1.0|^2.0", - "symfony/phpunit-bridge": "^5.4.9|^6.4|^7.0" - }, - "time": "2026-07-03T20:44:34+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "files": [ - "src/Resources/core.php", - "src/Resources/debug.php", - "src/Resources/escaper.php", - "src/Resources/string_loader.php" - ], - "psr-4": { - "Twig\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com", - "homepage": "http://fabien.potencier.org", - "role": "Lead Developer" - }, - { - "name": "Twig Team", - "role": "Contributors" - }, - { - "name": "Armin Ronacher", - "email": "armin.ronacher@active-4.com", - "role": "Project Founder" - } - ], - "description": "Twig, the flexible, fast, and secure template language for PHP", - "homepage": "https://twig.symfony.com", - "keywords": [ - "templating" - ], - "support": { - "issues": "https://github.com/twigphp/Twig/issues", - "source": "https://github.com/twigphp/Twig/tree/v3.28.0" - }, - "funding": [ - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/twig/twig", - "type": "tidelift" - } - ], - "install-path": "../twig/twig" - } - ], - "dev": true, - "dev-package-names": [] -} diff --git a/generated/php/vendor/composer/installed.php b/generated/php/vendor/composer/installed.php deleted file mode 100644 index e8c34c8..0000000 --- a/generated/php/vendor/composer/installed.php +++ /dev/null @@ -1,68 +0,0 @@ - array( - 'name' => '__root__', - 'pretty_version' => 'dev-main', - 'version' => 'dev-main', - 'reference' => '3a7f4da640c42b5aba416c84f44509af7e880950', - 'type' => 'library', - 'install_path' => __DIR__ . '/../../../', - 'aliases' => array(), - 'dev' => true, - ), - 'versions' => array( - '__root__' => array( - 'pretty_version' => 'dev-main', - 'version' => 'dev-main', - 'reference' => '3a7f4da640c42b5aba416c84f44509af7e880950', - 'type' => 'library', - 'install_path' => __DIR__ . '/../../../', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'latte/latte' => array( - 'pretty_version' => 'v3.1.4', - 'version' => '3.1.4.0', - 'reference' => '14dea9fc32c0d1cf5e9a1bd59556ae8be023c2a6', - 'type' => 'library', - 'install_path' => __DIR__ . '/../latte/latte', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'symfony/deprecation-contracts' => array( - 'pretty_version' => 'v3.7.1', - 'version' => '3.7.1.0', - 'reference' => 'f3202fa1b5097b0af062dc978b32ecf63404e31d', - 'type' => 'library', - 'install_path' => __DIR__ . '/../symfony/deprecation-contracts', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'symfony/polyfill-ctype' => array( - 'pretty_version' => 'v1.37.0', - 'version' => '1.37.0.0', - 'reference' => '141046a8f9477948ff284fa65be2095baafb94f2', - 'type' => 'library', - 'install_path' => __DIR__ . '/../symfony/polyfill-ctype', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'symfony/polyfill-mbstring' => array( - 'pretty_version' => 'v1.38.2', - 'version' => '1.38.2.0', - 'reference' => 'd3d318bad5e7a1bfbd026009c8bfb8d8f99ae6b6', - 'type' => 'library', - 'install_path' => __DIR__ . '/../symfony/polyfill-mbstring', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'twig/twig' => array( - 'pretty_version' => 'v3.28.0', - 'version' => '3.28.0.0', - 'reference' => '597c12ed286fb9d1701a36684ce6e0cbe28ebc8b', - 'type' => 'library', - 'install_path' => __DIR__ . '/../twig/twig', - 'aliases' => array(), - 'dev_requirement' => false, - ), - ), -); diff --git a/generated/php/vendor/composer/platform_check.php b/generated/php/vendor/composer/platform_check.php deleted file mode 100644 index 14bf88d..0000000 --- a/generated/php/vendor/composer/platform_check.php +++ /dev/null @@ -1,25 +0,0 @@ -= 80200)) { - $issues[] = 'Your Composer dependencies require a PHP version ">= 8.2.0". You are running ' . PHP_VERSION . '.'; -} - -if ($issues) { - if (!headers_sent()) { - header('HTTP/1.1 500 Internal Server Error'); - } - if (!ini_get('display_errors')) { - if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') { - fwrite(STDERR, 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . implode(PHP_EOL, $issues) . PHP_EOL.PHP_EOL); - } elseif (!headers_sent()) { - echo 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . str_replace('You are running '.PHP_VERSION.'.', '', implode(PHP_EOL, $issues)) . PHP_EOL.PHP_EOL; - } - } - throw new \RuntimeException( - 'Composer detected issues in your platform: ' . implode(' ', $issues) - ); -} diff --git a/generated/php/vendor/latte/latte/bin/latte-lint b/generated/php/vendor/latte/latte/bin/latte-lint deleted file mode 100644 index 34d38bc..0000000 --- a/generated/php/vendor/latte/latte/bin/latte-lint +++ /dev/null @@ -1,40 +0,0 @@ -#!/usr/bin/env php -\n"; - exit(1); -} - -if ($debug = in_array('--debug', $argv, true)) { - echo "Debug mode\n"; -} -if ($strict = in_array('--strict', $argv, true)) { - echo "Strict mode\n"; -} - -$path = $argv[1]; - -try { - $linter = new Latte\Tools\Linter(debug: $debug, strict: $strict); - $ok = $linter->scanDirectory($path); - exit($ok ? 0 : 1); - -} catch (Throwable $e) { - fwrite(STDERR, $debug ? "\n$e\n" : "\nError: {$e->getMessage()}\n"); - exit(2); -} diff --git a/generated/php/vendor/latte/latte/composer.json b/generated/php/vendor/latte/latte/composer.json deleted file mode 100644 index de78c53..0000000 --- a/generated/php/vendor/latte/latte/composer.json +++ /dev/null @@ -1,65 +0,0 @@ -{ - "name": "latte/latte", - "description": "☕ Latte: the intuitive and fast template engine for those who want the most secure PHP sites. Introduces context-sensitive escaping.", - "keywords": ["template", "nette", "security", "engine", "html", "twig", "context-sensitive", "escaping"], - "homepage": "https://latte.nette.org", - "license": ["BSD-3-Clause", "GPL-2.0-only", "GPL-3.0-only"], - "authors": [ - { - "name": "David Grudl", - "homepage": "https://davidgrudl.com" - }, - { - "name": "Nette Community", - "homepage": "https://nette.org/contributors" - } - ], - "require": { - "php": "8.2 - 8.5", - "ext-json": "*", - "ext-tokenizer": "*" - }, - "require-dev": { - "nette/tester": "^2.6", - "tracy/tracy": "^2.10", - "nette/utils": "^4.0", - "nette/php-generator": "^4.0", - "phpstan/phpstan": "^2.1@stable", - "phpstan/extension-installer": "^1.4@stable", - "nette/phpstan-rules": "^1.0" - }, - "suggest": { - "ext-iconv": "to use filters |reverse, |substring", - "ext-mbstring": "to use filters like lower, upper, capitalize, ...", - "ext-fileinfo": "to use filter |datastream", - "ext-intl": "to use Latte\\Engine::setLocale()", - "nette/utils": "to use filter |webalize", - "nette/php-generator": "to use tag {templatePrint}" - }, - "conflict": { - "nette/application": "<3.1.7", - "nette/caching": "<3.1.4" - }, - "autoload": { - "classmap": ["src/"], - "psr-4": { - "Latte\\": "src/Latte" - } - }, - "minimum-stability": "dev", - "bin": ["bin/latte-lint"], - "scripts": { - "phpstan": "phpstan analyse", - "tester": "tester tests -s" - }, - "extra": { - "branch-alias": { - "dev-master": "3.1-dev" - } - }, - "config": { - "allow-plugins": { - "phpstan/extension-installer": true - } - } -} diff --git a/generated/php/vendor/latte/latte/license.md b/generated/php/vendor/latte/latte/license.md deleted file mode 100644 index cf741bd..0000000 --- a/generated/php/vendor/latte/latte/license.md +++ /dev/null @@ -1,60 +0,0 @@ -Licenses -======== - -Good news! You may use Nette Framework under the terms of either -the New BSD License or the GNU General Public License (GPL) version 2 or 3. - -The BSD License is recommended for most projects. It is easy to understand and it -places almost no restrictions on what you can do with the framework. If the GPL -fits better to your project, you can use the framework under this license. - -You don't have to notify anyone which license you are using. You can freely -use Nette Framework in commercial projects as long as the copyright header -remains intact. - -Please be advised that the name "Nette Framework" is a protected trademark and its -usage has some limitations. So please do not use word "Nette" in the name of your -project or top-level domain, and choose a name that stands on its own merits. -If your stuff is good, it will not take long to establish a reputation for yourselves. - - -New BSD License ---------------- - -Copyright (c) 2004, 2014 David Grudl (https://davidgrudl.com) -All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - - * Neither the name of "Nette Framework" nor the names of its contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. - -This software is provided by the copyright holders and contributors "as is" and -any express or implied warranties, including, but not limited to, the implied -warranties of merchantability and fitness for a particular purpose are -disclaimed. In no event shall the copyright owner or contributors be liable for -any direct, indirect, incidental, special, exemplary, or consequential damages -(including, but not limited to, procurement of substitute goods or services; -loss of use, data, or profits; or business interruption) however caused and on -any theory of liability, whether in contract, strict liability, or tort -(including negligence or otherwise) arising in any way out of the use of this -software, even if advised of the possibility of such damage. - - -GNU General Public License --------------------------- - -GPL licenses are very very long, so instead of including them here we offer -you URLs with full text: - -- [GPL version 2](http://www.gnu.org/licenses/gpl-2.0.html) -- [GPL version 3](http://www.gnu.org/licenses/gpl-3.0.html) diff --git a/generated/php/vendor/latte/latte/readme.md b/generated/php/vendor/latte/latte/readme.md deleted file mode 100644 index 3b76fcd..0000000 --- a/generated/php/vendor/latte/latte/readme.md +++ /dev/null @@ -1,47 +0,0 @@ -[![Latte](https://github.com/nette/latte/assets/194960/76c098ff-427c-4b30-9676-97e2d8fd4a56)](https://latte.nette.org) - -  - -

- -✅ The [only truly secure](https://latte.nette.org/en/safety-first) templating system for PHP
-✅ [You already know the syntax](https://latte.nette.org/en/syntax)
-✅ Highly mature, fast, and widely used library - -

- -  - -Latte is the safest templating system for PHP. It is cleverly designed and easy to learn for those familiar with PHP, as they can quickly adopt its basic tags. -A wide range of useful features will significantly simplify your work. It provides top-notch protection against critical vulnerabilities and allows you to focus on creating high-quality applications without worrying about their security. - -🟨 Only 1% of programmers [can pass this quiz](https://blog.nette.org/en/quiz-can-you-defend-against-xss-vulnerability)! - -  - -Getting started -======= - -

- -1️⃣ First, familiarize yourself with [Latte syntax](https://latte.nette.org/en/syntax) and [try it online](https://fiddle.nette.org/latte/#9cc0cf6d89)
-2️⃣ Take a look at the basic set of [tags](https://latte.nette.org/en/tags) and [filters](https://latte.nette.org/en/filters)
-3️⃣ Render a template with a [few lines of PHP code](https://latte.nette.org/en/develop) - -

- -  - -Editor Integration -================== - -- PhpStorm ([Latte](https://plugins.jetbrains.com/plugin/24218-latte-support) or [Latte Pro](https://plugins.jetbrains.com/plugin/19661-latte-pro)) -- Visual Studio Code ([Nette Latte + Neon](https://marketplace.visualstudio.com/items?itemName=Kasik96.latte) or [Nette for VS Code](https://marketplace.visualstudio.com/items?itemName=franken-ui.nette-for-vscode)) - - - -Do you like Latte? Are you looking forward to the new features? - -[![Buy me a coffee](https://files.nette.org/icons/donation-3.svg)](https://github.com/sponsors/dg) - -Thank you! diff --git a/generated/php/vendor/latte/latte/src/Bridges/Tracy/BlueScreenPanel.php b/generated/php/vendor/latte/latte/src/Bridges/Tracy/BlueScreenPanel.php deleted file mode 100644 index aa676d4..0000000 --- a/generated/php/vendor/latte/latte/src/Bridges/Tracy/BlueScreenPanel.php +++ /dev/null @@ -1,98 +0,0 @@ -addPanel(self::renderError(...)); - $blueScreen->addAction(self::renderUnknownMacro(...)); - if ( - version_compare(Tracy\Debugger::VERSION, '2.9.0', '>=') - && version_compare(Tracy\Debugger::VERSION, '3.0', '<') - ) { - Tracy\Debugger::addSourceMapper(self::mapLatteSourceCode(...)); - $blueScreen->addFileGenerator(fn(string $file) => str_ends_with($file, '.latte') - ? "{block content}\n\$END\$" - : null); - } - } - - - /** @return ?array{tab: string, panel: string} */ - public static function renderError(?\Throwable $e): ?array - { - if ($e instanceof Latte\CompileException && $e->sourceName) { - return [ - 'tab' => 'Template', - 'panel' => (preg_match('#\n|\?#', $e->sourceName) - ? '' - : '

' - . (@is_file($e->sourceName) // @ - may trigger error - ? 'File: ' . Helpers::editorLink($e->sourceName, $e->position?->line) - : '' . htmlspecialchars($e->sourceName . ($e->position?->line ? ':' . $e->position->line : '')) . '') - . '

') - . '
' - . BlueScreen::highlightLine(htmlspecialchars($e->sourceCode ?? '', ENT_IGNORE, 'UTF-8'), $e->position->line ?? 0, 15, $e->position->column ?? 0) - . '
', - ]; - } - - return null; - } - - - /** @return ?array{link: string, label: string} */ - public static function renderUnknownMacro(?\Throwable $e): ?array - { - if ( - $e instanceof Latte\CompileException - && $e->sourceName - && @is_file($e->sourceName) // @ - may trigger error - && (preg_match('#Unknown tag (\{\w+)\}, did you mean (\{\w+)\}\?#A', $e->getMessage(), $m) - || preg_match('#Unknown attribute (n:\w+), did you mean (n:\w+)\?#A', $e->getMessage(), $m)) - ) { - return [ - 'link' => (string) Helpers::editorUri($e->sourceName, $e->position?->line, 'fix', $m[1], $m[2]), - 'label' => 'fix it', - ]; - } - - return null; - } - - - /** @return array{file: string, line: int, label: string, active: bool} */ - public static function mapLatteSourceCode(string $file, int $line): ?array - { - return ($source = Latte\Helpers::mapCompiledToSource($file, $line)) && $source['name'] !== null && @is_file($source['name']) // @ - may trigger error - ? ['file' => $source['name'], 'line' => $source['line'] ?? 0, 'column' => $source['column'] ?? 0, 'label' => 'Latte', 'active' => true] - : null; - } -} diff --git a/generated/php/vendor/latte/latte/src/Bridges/Tracy/LattePanel.php b/generated/php/vendor/latte/latte/src/Bridges/Tracy/LattePanel.php deleted file mode 100644 index debe1c2..0000000 --- a/generated/php/vendor/latte/latte/src/Bridges/Tracy/LattePanel.php +++ /dev/null @@ -1,124 +0,0 @@ -addPanel(new self($latte, $name)); - } - - - /** @deprecated use TracyExtension see https://bit.ly/46flfDi */ - public function __construct(?Engine $latte = null, ?string $name = null) - { - $this->name = $name; - if ($latte) { - trigger_error('Replace LattePanel with TracyExtension; see https://bit.ly/46flfDi', E_USER_DEPRECATED); - $latte->addExtension( - new class ($this->templates) extends Extension { - public function __construct( - private array &$templates, - ) { - } - - - public function beforeRender(Template $template): void - { - $this->templates[] = $template; - } - }, - ); - } - } - - - public function addTemplate(Template $template): void - { - $this->templates[] = $template; - } - - - /** - * Renders tab. - */ - public function getTab(): ?string - { - if (!$this->templates) { - return null; - } - - return Tracy\Helpers::capture(function () { - $first = reset($this->templates); - $name = $this->name ?? ($first ? basename($first->getName()) : ''); - require __DIR__ . '/dist/tab.phtml'; - }); - } - - - /** - * Renders panel. - */ - public function getPanel(): string - { - $this->list = []; - $this->buildList($this->templates[0]); - - return Tracy\Helpers::capture(function () { - $list = $this->list; - $dumpParameters = $this->dumpParameters; - require __DIR__ . '/dist/panel.phtml'; - }); - } - - - private function buildList(Template $template, int $depth = 0, int $count = 1): void - { - $this->list[] = (object) [ - 'template' => $template, - 'depth' => $depth, - 'count' => $count, - 'phpFile' => (new \ReflectionObject($template))->getFileName(), - ]; - - $children = $counter = []; - foreach ($this->templates as $t) { - if ($t->getReferringTemplate() === $template) { - $children[$t->getName()] = $t; - @$counter[$t->getName()]++; - } - } - - foreach ($children as $name => $t) { - $this->buildList($t, $depth + 1, $counter[$name]); - } - } -} diff --git a/generated/php/vendor/latte/latte/src/Bridges/Tracy/TracyExtension.php b/generated/php/vendor/latte/latte/src/Bridges/Tracy/TracyExtension.php deleted file mode 100644 index 2a73a5a..0000000 --- a/generated/php/vendor/latte/latte/src/Bridges/Tracy/TracyExtension.php +++ /dev/null @@ -1,35 +0,0 @@ -panel = new LattePanel(name: $name); - Tracy\Debugger::getBar()->addPanel($this->panel); - } - - - public function beforeRender(Template $template): void - { - $this->panel->addTemplate($template); - } -} diff --git a/generated/php/vendor/latte/latte/src/Bridges/Tracy/dist/panel.phtml b/generated/php/vendor/latte/latte/src/Bridges/Tracy/dist/panel.phtml deleted file mode 100644 index d8c698a..0000000 --- a/generated/php/vendor/latte/latte/src/Bridges/Tracy/dist/panel.phtml +++ /dev/null @@ -1,94 +0,0 @@ - - '#00000052', - 'extends' => '#cd1c1c7d', - 'import' => '#17c35b8f', - 'includeblock' => '#17c35b8f', - 'embed' => '#4f1ccd7d', - 'sandbox' => 'black', -] ?> - - -

Rendered Templates

- -
- - - - - - -
-template->getReferenceType()): ?> └  - template->getReferenceType()) ?> - - - template->getName()) ?> - - - php - count > 1 ? $item->count . '×' : '') ?> -
- -

Parameters

- -
- -template->getParameters() as $k => $v): ?> - - - -
- true]) ?> -
-
-
diff --git a/generated/php/vendor/latte/latte/src/Bridges/Tracy/dist/tab.phtml b/generated/php/vendor/latte/latte/src/Bridges/Tracy/dist/tab.phtml deleted file mode 100644 index b122074..0000000 --- a/generated/php/vendor/latte/latte/src/Bridges/Tracy/dist/tab.phtml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - diff --git a/generated/php/vendor/latte/latte/src/Latte/Compiler/Block.php b/generated/php/vendor/latte/latte/src/Latte/Compiler/Block.php deleted file mode 100644 index 4e5c239..0000000 --- a/generated/php/vendor/latte/latte/src/Latte/Compiler/Block.php +++ /dev/null @@ -1,39 +0,0 @@ -name instanceof Scalar\StringNode - && !$this->name instanceof Scalar\IntegerNode; - } -} diff --git a/generated/php/vendor/latte/latte/src/Latte/Compiler/Dedent.php b/generated/php/vendor/latte/latte/src/Latte/Compiler/Dedent.php deleted file mode 100644 index 642b581..0000000 --- a/generated/php/vendor/latte/latte/src/Latte/Compiler/Dedent.php +++ /dev/null @@ -1,144 +0,0 @@ -position->column - 1; - - $textNodes = []; - self::collectTextNodes($fragment, $textNodes); - - $baseIndent = self::detectIndent($textNodes, $startTag); - if ($baseIndent === null || strlen($baseIndent) <= $tagIndentLen) { - return; - } - - self::stripIndent($textNodes, $baseIndent, $tagIndentLen); - } - - - /** @param list $out */ - private static function collectTextNodes(Node $node, array &$out): void - { - if ($node instanceof Nodes\TextNode) { - $out[] = $node; - } elseif ($node instanceof Nodes\Html\ElementNode) { - if ($node->content) { - self::collectTextNodes($node->content, $out); - } - } else { - foreach ($node as $child) { - if ($child instanceof AreaNode) { - self::collectTextNodes($child, $out); - } - } - } - } - - - /** @param list $textNodes */ - private static function detectIndent(array $textNodes, Tag $startTag): ?string - { - $inlineChecked = false; - $lastNonEmpty = -1; - for ($k = count($textNodes) - 1; $k >= 0; $k--) { - if ($textNodes[$k]->content !== '') { - $lastNonEmpty = $k; - break; - } - } - - foreach ($textNodes as $idx => $node) { - if ($node->content === '') { - continue; - } - - if (!$inlineChecked) { - $inlineChecked = true; - if ($node->position?->line === $startTag->position->line) { - return null; - } - } - - $firstLineAtStart = $node->position?->column === 1; - $lines = explode("\n", $node->content); - $lineCount = count($lines); - $lastContinues = !str_ends_with($node->content, "\n") && $idx < $lastNonEmpty; - - foreach ($lines as $j => $line) { - $isLineStart = $j === 0 ? $firstLineAtStart : true; - if (!$isLineStart || $line === '') { - continue; - } - - $hasContent = trim($line) !== ''; - $continuesWithExpr = !$hasContent && $j === $lineCount - 1 && $lastContinues; - - if ($hasContent) { - preg_match('/^(\t+| +)/', $line, $m); - return $m[1] ?? null; - } elseif ($continuesWithExpr) { - return $line; - } - } - } - - return null; - } - - - /** @param list $textNodes */ - private static function stripIndent(array $textNodes, string $baseIndent, int $tagIndentLen): void - { - foreach ($textNodes as $node) { - if ($node->content === '') { - continue; - } - - $firstLineAtStart = $node->position?->column === 1; - $lines = explode("\n", $node->content); - $modified = false; - - foreach ($lines as $j => &$line) { - $isLineStart = $j === 0 ? $firstLineAtStart : true; - if (!$isLineStart || $line === '') { - continue; - } - - if (str_starts_with($line, $baseIndent)) { - $line = substr($line, 0, $tagIndentLen) . substr($line, strlen($baseIndent)); - $modified = true; - } elseif (trim($line) !== '') { - throw new CompileException('Inconsistent indentation.', $node->position ? new Position($node->position->line + $j, 1) : null); - } - } - - unset($line); - if ($modified) { - $node->content = implode("\n", $lines); - } - } - } -} diff --git a/generated/php/vendor/latte/latte/src/Latte/Compiler/Escaper.php b/generated/php/vendor/latte/latte/src/Latte/Compiler/Escaper.php deleted file mode 100644 index ecb6696..0000000 --- a/generated/php/vendor/latte/latte/src/Latte/Compiler/Escaper.php +++ /dev/null @@ -1,261 +0,0 @@ - [ - self::HtmlText => 'HtmlHelpers::escapeText', - self::HtmlAttribute => 'HtmlHelpers::escapeAttr', - self::HtmlAttribute . '/' . self::JavaScript => 'HtmlHelpers::escapeAttr', - self::HtmlAttribute . '/' . self::Css => 'HtmlHelpers::escapeAttr', - self::HtmlComment => 'HtmlHelpers::escapeComment', - 'xml' => 'XmlHelpers::escapeText', - 'xml/attr' => 'XmlHelpers::escapeAttr', - ], - self::JavaScript => [ - self::HtmlText => 'HtmlHelpers::escapeText', - self::HtmlAttribute => 'HtmlHelpers::escapeAttr', - self::HtmlAttribute . '/' . self::JavaScript => 'HtmlHelpers::escapeAttr', - self::HtmlRawText . '/' . self::JavaScript => 'HtmlHelpers::convertJSToRawText', - self::HtmlComment => 'HtmlHelpers::escapeComment', - ], - self::Css => [ - self::HtmlText => 'HtmlHelpers::escapeText', - self::HtmlAttribute => 'HtmlHelpers::escapeAttr', - self::HtmlAttribute . '/' . self::Css => 'HtmlHelpers::escapeAttr', - self::HtmlRawText . '/' . self::Css => 'HtmlHelpers::convertJSToRawText', - self::HtmlComment => 'HtmlHelpers::escapeComment', - ], - self::HtmlText => [ - self::Text => 'HtmlHelpers::convertHtmlToText', - self::HtmlAttribute => 'HtmlHelpers::convertHtmlToAttr', - self::HtmlAttribute . '/' . self::JavaScript => 'HtmlHelpers::convertHtmlToAttr', - self::HtmlAttribute . '/' . self::Css => 'HtmlHelpers::convertHtmlToAttr', - self::HtmlComment => 'HtmlHelpers::escapeComment', - self::HtmlRawText . '/' . self::HtmlText => 'HtmlHelpers::convertHtmlToRawText', - ], - self::HtmlAttribute => [ - self::HtmlText => 'HtmlHelpers::convertAttrToHtml', - ], - ]; - - private string $state = ''; - private string $subType = ''; - - - public function __construct( - private string $contentType, - ) { - $this->state = in_array($contentType, [ContentType::Html, ContentType::Xml], strict: true) - ? self::HtmlText - : $contentType; - } - - - public function getContentType(): string - { - return $this->contentType; - } - - - public function getState(): string - { - return $this->state; - } - - - /** - * Returns the current escaping state as a string (e.g. "html/attr/js"). - */ - public function export(): string - { - return $this->state . ($this->subType ? '/' . $this->subType : ''); - } - - - public function enterContentType(string $type): void - { - $this->contentType = $this->state = $type; - } - - - public function enterHtmlText(ElementNode $el): void - { - if ($el->isRawText()) { - $this->state = self::HtmlRawText; - if ($el->is('script')) { - $type = $el->getAttribute('type'); - $this->subType = $type === true || $type === null - ? self::JavaScript - : (is_string($type) ? HtmlHelpers::classifyScriptType($type) : ''); - } elseif ($el->is('style')) { - $this->subType = self::Css; - } - - } else { - $this->state = self::HtmlText; - $this->subType = ''; - } - } - - - public function enterHtmlTag(string $name): void - { - $this->state = self::HtmlTag; - } - - - public function enterHtmlRaw(string $subType): void - { - $this->state = self::HtmlRawText; - $this->subType = $subType; - } - - - public function enterHtmlAttribute(?string $name = null): void - { - $this->state = self::HtmlAttribute; - $this->subType = ''; - - if ($this->contentType === ContentType::Html && is_string($name)) { - $name = strtolower($name); - if (str_starts_with($name, 'on')) { - $this->subType = self::JavaScript; - } elseif ($name === 'style') { - $this->subType = self::Css; - } - } - } - - - public function enterHtmlBogusTag(): void - { - $this->state = self::HtmlBogusTag; - } - - - public function enterHtmlComment(): void - { - $this->state = self::HtmlComment; - } - - - public function escape(string $str): string - { - return match ($this->contentType) { - ContentType::Html => match ($this->state) { - self::HtmlText => 'LR\HtmlHelpers::escapeText(' . $str . ')', - self::HtmlTag => 'LR\HtmlHelpers::escapeTag(' . $str . ')', - self::HtmlAttribute => match ($this->subType) { - '' => 'LR\HtmlHelpers::escapeAttr(' . $str . ')', - self::JavaScript => 'LR\HtmlHelpers::escapeAttr(LR\Helpers::escapeJs(' . $str . '))', - self::Css => 'LR\HtmlHelpers::escapeAttr(LR\Helpers::escapeCss(' . $str . '))', - }, - self::HtmlComment => 'LR\HtmlHelpers::escapeComment(' . $str . ')', - self::HtmlBogusTag => 'LR\HtmlHelpers::escapeTag(' . $str . ')', - self::HtmlRawText => match ($this->subType) { - self::Text => 'LR\HtmlHelpers::convertJSToRawText(' . $str . ')', // sanitization, escaping is not possible - self::HtmlText => 'LR\HtmlHelpers::escapeRawHtml(' . $str . ')', - self::JavaScript => 'LR\Helpers::escapeJs(' . $str . ')', - self::Css => 'LR\Helpers::escapeCss(' . $str . ')', - }, - default => throw new \LogicException("Unknown context $this->contentType, $this->state."), - }, - ContentType::Xml => match ($this->state) { - self::HtmlText => 'LR\XmlHelpers::escapeText(' . $str . ')', - self::HtmlBogusTag => 'LR\XmlHelpers::escapeTag(' . $str . ')', - self::HtmlAttribute => 'LR\XmlHelpers::escapeAttr(' . $str . ')', - self::HtmlComment => 'LR\HtmlHelpers::escapeComment(' . $str . ')', - self::HtmlTag => 'LR\XmlHelpers::escapeTag(' . $str . ')', - default => throw new \LogicException("Unknown context $this->contentType, $this->state."), - }, - ContentType::JavaScript => 'LR\Helpers::escapeJs(' . $str . ')', - ContentType::Css => 'LR\Helpers::escapeCss(' . $str . ')', - ContentType::ICal => 'LR\Helpers::escapeIcal(' . $str . ')', - ContentType::Text => '($this->filters->escape)(' . $str . ')', - default => throw new \LogicException("Unknown content-type $this->contentType."), - }; - } - - - /** - * Applies mandatory escaping that cannot be suppressed (e.g. quotes in attributes). - */ - public function escapeMandatory(string $str, ?Position $position = null): string - { - return match ($this->contentType) { - ContentType::Html => match ($this->state) { - self::HtmlAttribute => "LR\\HtmlHelpers::escapeQuotes($str)", - self::HtmlRawText => match ($this->subType) { - self::HtmlText => 'LR\HtmlHelpers::convertHtmlToRawText(' . $str . ')', - default => "LR\\HtmlHelpers::convertJSToRawText($str)", - }, - self::HtmlComment => throw new Latte\CompileException('Using |noescape is not allowed in this context.', $position), - default => $str, - }, - ContentType::Xml => match ($this->state) { - self::HtmlAttribute => "LR\\HtmlHelpers::escapeQuotes($str)", - self::HtmlComment => throw new Latte\CompileException('Using |noescape is not allowed in this context.', $position), - default => $str, - }, - default => $str, - }; - } - - - /** - * Generates code that converts content between content types at runtime using FilterInfo. - */ - public function escapeContent(string $str): string - { - return 'LR\Helpers::convertTo($ʟ_fi, ' - . var_export($this->export(), return: true) . ', ' - . $str - . ')'; - } - - - /** - * Returns a callable that converts content from $source type to $dest type, or null if unsupported. - */ - public static function getConvertor(string $source, string $dest): ?callable - { - return match (true) { - $source === $dest => Helpers::nop(...), - isset(self::Convertors[$source][$dest]) => 'Latte\Runtime\\' . self::Convertors[$source][$dest], - default => null, - }; - } -} diff --git a/generated/php/vendor/latte/latte/src/Latte/Compiler/Node.php b/generated/php/vendor/latte/latte/src/Latte/Compiler/Node.php deleted file mode 100644 index 9cced1a..0000000 --- a/generated/php/vendor/latte/latte/src/Latte/Compiler/Node.php +++ /dev/null @@ -1,24 +0,0 @@ - - */ -abstract class Node implements \IteratorAggregate -{ - public ?Position $position = null; - - - abstract public function print(PrintContext $context): string; - - - /** @return \Generator */ - abstract public function &getIterator(): \Generator; -} diff --git a/generated/php/vendor/latte/latte/src/Latte/Compiler/NodeHelpers.php b/generated/php/vendor/latte/latte/src/Latte/Compiler/NodeHelpers.php deleted file mode 100644 index 254f0c0..0000000 --- a/generated/php/vendor/latte/latte/src/Latte/Compiler/NodeHelpers.php +++ /dev/null @@ -1,152 +0,0 @@ - - */ - public static function find(Node $node, callable $filter): array - { - $found = []; - (new NodeTraverser) - ->traverse($node, enter: function (Node $node) use ($filter, &$found) { - if ($filter($node)) { - $found[] = $node; - } - }); - return $found; - } - - - /** - * Finds the first node matching the filter, or null if none. - * @param callable(Node): bool $filter - */ - public static function findFirst(Node $node, callable $filter): ?Node - { - $found = null; - (new NodeTraverser) - ->traverse($node, enter: function (Node $node) use ($filter, &$found) { - if ($filter($node)) { - $found = $node; - return NodeTraverser::StopTraversal; - } - }); - return $found; - } - - - /** - * Creates a deep clone of the node tree. - */ - public static function clone(Node $node): Node - { - return (new NodeTraverser) - ->traverse($node, enter: fn(Node $node) => clone $node) ?? throw new \LogicException; - } - - - /** - * Evaluates a scalar expression node to a PHP value. Resolves constants when $constants is true. - * Throws InvalidArgumentException if the expression cannot be reduced to a value. - */ - public static function toValue(ExpressionNode $node, bool $constants = false): mixed - { - if ($node instanceof Scalar\BooleanNode - || $node instanceof Scalar\FloatNode - || $node instanceof Scalar\IntegerNode - || $node instanceof Scalar\StringNode - ) { - return $node->value; - - } elseif ($node instanceof Scalar\NullNode) { - return null; - - } elseif ($node instanceof Expression\ArrayNode) { - $res = []; - foreach ($node->items as $item) { - $value = self::toValue($item->value, $constants); - if ($item->key) { - $key = $item->key instanceof Php\IdentifierNode - ? $item->key->name - : self::toValue($item->key, $constants); - $res[$key] = $value; - - } elseif ($item->unpack) { - $res = array_merge($res, $value); - - } else { - $res[] = $value; - } - } - - return $res; - - } elseif ($node instanceof Expression\ConstantFetchNode && $constants) { - $name = $node->name->toCodeString(); - return defined($name) - ? constant($name) - : throw new \InvalidArgumentException("The constant '$name' is not defined."); - - } elseif ( - $node instanceof Expression\ClassConstantFetchNode - && $constants - && $node->name instanceof Php\IdentifierNode - ) { - $class = $node->class instanceof Php\NameNode - ? $node->class->toCodeString() - : self::toValue($node->class, $constants); - $name = $class . '::' . $node->name->name; - return defined($name) - ? constant($name) - : throw new \InvalidArgumentException("The constant '$name' is not defined."); - - } else { - throw new \InvalidArgumentException('The expression cannot be converted to PHP value.'); - } - } - - - /** - * Extracts plain text from a node if it contains only static text, or returns null. - */ - public static function toText(?Node $node): ?string - { - if ($node instanceof Nodes\FragmentNode) { - $res = ''; - foreach ($node->children as $child) { - if (($s = self::toText($child)) === null) { - return null; - } - $res .= $s; - } - - return $res; - } - - return match (true) { - $node instanceof Nodes\TextNode => $node->content, - $node instanceof Nodes\NopNode => '', - default => null, - }; - } -} diff --git a/generated/php/vendor/latte/latte/src/Latte/Compiler/NodeTraverser.php b/generated/php/vendor/latte/latte/src/Latte/Compiler/NodeTraverser.php deleted file mode 100644 index a992a48..0000000 --- a/generated/php/vendor/latte/latte/src/Latte/Compiler/NodeTraverser.php +++ /dev/null @@ -1,88 +0,0 @@ -enter = $enter ? $enter(...) : null; - $this->leave = $leave ? $leave(...) : null; - $this->stop = false; - return $this->traverseNode($node); - } - - - private function traverseNode(Node $node): ?Node - { - $children = true; - if ($this->enter) { - $res = ($this->enter)($node); - if ($res instanceof Node) { - $node = $res; - - } elseif ($res === self::DontTraverseChildren) { - $children = false; - - } elseif ($res === self::StopTraversal) { - $this->stop = true; - return $node; - - } elseif ($res === self::RemoveNode) { - return null; - } - } - - if ($children) { - foreach ($node as &$subnode) { - $subnode = $this->traverseNode($subnode); - if ($this->stop) { - break; - } - } - } - - if (!$this->stop && $this->leave) { - $res = ($this->leave)($node); - if ($res instanceof Node) { - $node = $res; - - } elseif ($res === self::StopTraversal) { - $this->stop = true; - - } elseif ($res === self::RemoveNode) { - return null; - } - } - - return $node; - } -} diff --git a/generated/php/vendor/latte/latte/src/Latte/Compiler/Nodes/AreaNode.php b/generated/php/vendor/latte/latte/src/Latte/Compiler/Nodes/AreaNode.php deleted file mode 100644 index a787b75..0000000 --- a/generated/php/vendor/latte/latte/src/Latte/Compiler/Nodes/AreaNode.php +++ /dev/null @@ -1,21 +0,0 @@ -print)($context, ...$this->nodes); - } - - - public function &getIterator(): \Generator - { - foreach ($this->nodes as &$node) { - if ($node) { - yield $node; - } - } - } -} diff --git a/generated/php/vendor/latte/latte/src/Latte/Compiler/Nodes/FragmentNode.php b/generated/php/vendor/latte/latte/src/Latte/Compiler/Nodes/FragmentNode.php deleted file mode 100644 index e8f0cf2..0000000 --- a/generated/php/vendor/latte/latte/src/Latte/Compiler/Nodes/FragmentNode.php +++ /dev/null @@ -1,79 +0,0 @@ -append($child); - } - } - - - /** - * Appends a node. FragmentNode children are merged inline; NopNodes are discarded. - */ - public function append(AreaNode $node): static - { - if ($node instanceof self) { - $this->children = array_merge($this->children, $node->children); - } elseif (!$node instanceof NopNode) { - $this->children[] = $node; - } - $this->position ??= $node->position; - return $this; - } - - - /** - * Returns null (or self) for an empty fragment, the single child when there is only one, or self otherwise. - */ - public function simplify(bool $allowsNull = true): ?AreaNode - { - return match (true) { - !$this->children => $allowsNull ? null : $this, - count($this->children) === 1 => $this->children[0], - default => $this, - }; - } - - - public function print(PrintContext $context): string - { - $res = ''; - foreach ($this->children as $child) { - $res .= $child->print($context); - } - - return $res; - } - - - public function &getIterator(): \Generator - { - foreach ($this->children as &$item) { - yield $item; - } - Helpers::removeNulls($this->children); - } -} diff --git a/generated/php/vendor/latte/latte/src/Latte/Compiler/Nodes/Html/AttributeNode.php b/generated/php/vendor/latte/latte/src/Latte/Compiler/Nodes/Html/AttributeNode.php deleted file mode 100644 index d73cfac..0000000 --- a/generated/php/vendor/latte/latte/src/Latte/Compiler/Nodes/Html/AttributeNode.php +++ /dev/null @@ -1,58 +0,0 @@ -name->print($context); - if (!$this->value) { - return $res; - } - - $res .= "echo '=';"; - $quote = $this->quote ?? ($this->value instanceof TextNode ? null : '"'); - $res .= $quote ? 'echo ' . var_export($quote, return: true) . ';' : ''; - - $escaper = $context->beginEscape(); - $escaper->enterHtmlAttribute(NodeHelpers::toText($this->name)); - $res .= $this->value->print($context); - $context->restoreEscape(); - $res .= $quote ? 'echo ' . var_export($quote, return: true) . ';' : ''; - return $res; - } - - - public function &getIterator(): \Generator - { - yield $this->name; - if ($this->value) { - yield $this->value; - } - } -} diff --git a/generated/php/vendor/latte/latte/src/Latte/Compiler/Nodes/Html/BogusTagNode.php b/generated/php/vendor/latte/latte/src/Latte/Compiler/Nodes/Html/BogusTagNode.php deleted file mode 100644 index b930f01..0000000 --- a/generated/php/vendor/latte/latte/src/Latte/Compiler/Nodes/Html/BogusTagNode.php +++ /dev/null @@ -1,44 +0,0 @@ -openDelimiter, return: true) . ';'; - $context->beginEscape()->enterHtmlBogusTag(); - $res .= $this->content->print($context); - $context->restoreEscape(); - $res .= 'echo ' . var_export($this->endDelimiter, return: true) . ';'; - return $res; - } - - - public function &getIterator(): \Generator - { - yield $this->content; - } -} diff --git a/generated/php/vendor/latte/latte/src/Latte/Compiler/Nodes/Html/CommentNode.php b/generated/php/vendor/latte/latte/src/Latte/Compiler/Nodes/Html/CommentNode.php deleted file mode 100644 index c2eeef4..0000000 --- a/generated/php/vendor/latte/latte/src/Latte/Compiler/Nodes/Html/CommentNode.php +++ /dev/null @@ -1,40 +0,0 @@ -). - */ -class CommentNode extends AreaNode -{ - public function __construct( - public AreaNode $content, - public ?Position $position = null, - ) { - } - - - public function print(PrintContext $context): string - { - $context->beginEscape()->enterHtmlComment(); - $content = $this->content->print($context); - $context->restoreEscape(); - return "echo '';"; - } - - - public function &getIterator(): \Generator - { - yield $this->content; - } -} diff --git a/generated/php/vendor/latte/latte/src/Latte/Compiler/Nodes/Html/ElementNode.php b/generated/php/vendor/latte/latte/src/Latte/Compiler/Nodes/Html/ElementNode.php deleted file mode 100644 index 7b1ba4c..0000000 --- a/generated/php/vendor/latte/latte/src/Latte/Compiler/Nodes/Html/ElementNode.php +++ /dev/null @@ -1,131 +0,0 @@ -attributes = new FragmentNode; - } - - - /** - * Returns the attribute value: plain string if static, Node if dynamic, true if it is a boolean or n:attribute, null if not found. - */ - public function getAttribute(string $name): string|Node|bool|null - { - foreach ($this->attributes->children as $child) { - if ($child instanceof AttributeNode - && $child->name instanceof Nodes\TextNode - && $this->matchesIdentifier($name, $child->name->content) - ) { - return NodeHelpers::toText($child->value) ?? $child->value ?? true; - } elseif ($child instanceof ExpressionAttributeNode - && $this->matchesIdentifier($name, $child->name) - ) { - return true; - } - } - - return null; - } - - - /** - * Checks whether the element has the given tag name (case-insensitive in HTML, case-sensitive in XML). - */ - public function is(string $name): bool - { - return $this->matchesIdentifier($this->name, $name); - } - - - private function matchesIdentifier(string $a, string $b): bool - { - return $this->contentType === ContentType::Html - ? strcasecmp($a, $b) === 0 - : $a === $b; - } - - - /** - * Checks whether the element contains raw text (i.e., is a '; - echo ''; - echo "
\n"; - } - - - public function printEnd(): void - { - echo "
\n"; - } - - - public function printHeader(string $string): void - { - echo "

", - htmlspecialchars($string), - "

\n"; - } - - - public function printCode(string $code, string $lang = 'php'): void - { - echo '
',
-			htmlspecialchars($code),
-			"
\n"; - } - - - private function getType(mixed $value): string - { - return $value === null ? 'mixed' : get_debug_type($value); - } -} diff --git a/generated/php/vendor/latte/latte/src/Latte/Essential/CachingIterator.php b/generated/php/vendor/latte/latte/src/Latte/Essential/CachingIterator.php deleted file mode 100644 index c44474d..0000000 --- a/generated/php/vendor/latte/latte/src/Latte/Essential/CachingIterator.php +++ /dev/null @@ -1,222 +0,0 @@ -> - * @internal - */ -class CachingIterator extends \CachingIterator implements \Countable -{ - private int $counter = 0; - private ?self $parent = null; - - - public function __construct(mixed $iterator, ?self $parent = null) - { - if (is_array($iterator) || $iterator instanceof \stdClass) { - $iterator = new \ArrayIterator((array) $iterator); - - } elseif ($iterator instanceof \IteratorAggregate) { - do { - $iterator = $iterator->getIterator(); - } while (!$iterator instanceof \Iterator); - } elseif ($iterator instanceof \Traversable) { - if (!$iterator instanceof \Iterator) { - $iterator = new \IteratorIterator($iterator); - } - } else { - throw new \InvalidArgumentException(sprintf('Invalid argument passed to foreach; array or Traversable expected, %s given.', get_debug_type($iterator))); - } - - parent::__construct($iterator, 0); - $this->parent = $parent; - } - - - /** - * Is the current element the first one? - */ - public function isFirst(?int $width = null): bool - { - return $this->counter === 1 || ($width && $this->counter !== 0 && (($this->counter - 1) % $width) === 0); - } - - - /** - * Is the current element the last one? - */ - public function isLast(?int $width = null): bool - { - return !$this->hasNext() || ($width && ($this->counter % $width) === 0); - } - - - /** - * Is the iterator empty? - */ - public function isEmpty(): bool - { - return $this->counter === 0; - } - - - /** - * Is the counter odd? - */ - public function isOdd(): bool - { - return $this->counter % 2 === 1; - } - - - /** - * Is the counter even? - */ - public function isEven(): bool - { - return $this->counter % 2 === 0; - } - - - /** - * Returns the 1-indexed counter. - */ - public function getCounter(): int - { - return $this->counter; - } - - - /** - * Returns the 0-indexed counter. - */ - public function getCounter0(): int - { - return max(0, $this->counter - 1); - } - - - /** - * Decrements the counter (minimum 0) to skip the current iteration in counting. - */ - public function skipRound(): void - { - $this->counter = max($this->counter - 1, 0); - } - - - public function __toString(): string - { - return (string) $this->counter; - } - - - public function count(): int - { - $inner = $this->getInnerIterator(); - if ($inner instanceof \Countable) { - return $inner->count(); - - } else { - throw new \LogicException('Iterator is not countable.'); - } - } - - - /** - * Forwards to the next element. - */ - public function next(): void - { - parent::next(); - if (parent::valid()) { - $this->counter++; - } - } - - - /** - * Rewinds the Iterator. - */ - public function rewind(): void - { - parent::rewind(); - $this->counter = parent::valid() ? 1 : 0; - } - - - /** - * Returns the next key or null if position is not valid. - */ - public function getNextKey(): mixed - { - $iterator = $this->getInnerIterator(); - return $iterator->valid() ? $iterator->key() : null; - } - - - /** - * Returns the next element or null if position is not valid. - */ - public function getNextValue(): mixed - { - $iterator = $this->getInnerIterator(); - return $iterator->valid() ? $iterator->current() : null; - } - - - /** - * Returns the iterator surrounding the current one. - */ - public function getParent(): ?self - { - return $this->parent; - } - - - /********************* property accessor ****************d*g**/ - - - /** - * Returns property value. - * @throws \LogicException if the property is not defined. - */ - public function __get(string $name): mixed - { - if (method_exists($this, $m = 'get' . $name) || method_exists($this, $m = 'is' . $name)) { - return $this->$m(); - } - - throw new \LogicException('Attempt to read undeclared property ' . static::class . "::\$$name."); - } - - - /** - * Is property defined? - */ - public function __isset(string $name): bool - { - return method_exists($this, 'get' . $name) || method_exists($this, 'is' . $name); - } -} diff --git a/generated/php/vendor/latte/latte/src/Latte/Essential/CoreExtension.php b/generated/php/vendor/latte/latte/src/Latte/Essential/CoreExtension.php deleted file mode 100644 index 2ad7a73..0000000 --- a/generated/php/vendor/latte/latte/src/Latte/Essential/CoreExtension.php +++ /dev/null @@ -1,292 +0,0 @@ -filters = new Filters; - } - - - public function beforeCompile(Latte\Engine $engine): void - { - $this->engine = $engine; - } - - - public function beforeRender(Runtime\Template $template): void - { - $this->engine = $template->getEngine(); - $this->filters->locale = $this->engine->getLocale(); - } - - - public function getTags(): array - { - return [ - 'embed' => Nodes\EmbedNode::create(...), - 'define' => Nodes\DefineNode::create(...), - 'block' => Nodes\BlockNode::create(...), - 'layout' => Nodes\ExtendsNode::create(...), - 'extends' => Nodes\ExtendsNode::create(...), - 'import' => Nodes\ImportNode::create(...), - 'include' => $this->includeSplitter(...), - - 'n:attr' => Nodes\NAttrNode::create(...), - 'n:class' => Nodes\NClassNode::create(...), - 'n:tag' => Nodes\NTagNode::create(...), - - 'parameters' => Nodes\ParametersNode::create(...), - 'varType' => Nodes\VarTypeNode::create(...), - 'varPrint' => Nodes\VarPrintNode::create(...), - 'templateType' => Nodes\TemplateTypeNode::create(...), - 'templatePrint' => Nodes\TemplatePrintNode::create(...), - - '=' => Latte\Compiler\Nodes\PrintNode::create(...), - 'do' => Nodes\DoNode::create(...), - 'php' => Nodes\DoNode::create(...), // obsolete - 'contentType' => Nodes\ContentTypeNode::create(...), - 'spaceless' => Nodes\SpacelessNode::create(...), - 'capture' => Nodes\CaptureNode::create(...), - 'l' => fn(Tag $tag) => new TextNode('{', $tag->position), - 'r' => fn(Tag $tag) => new TextNode('}', $tag->position), - 'syntax' => $this->parseSyntax(...), - - 'dump' => Nodes\DumpNode::create(...), - 'debugbreak' => Nodes\DebugbreakNode::create(...), - 'trace' => Nodes\TraceNode::create(...), - - 'var' => Nodes\VarNode::create(...), - 'default' => Nodes\VarNode::create(...), - - 'try' => Nodes\TryNode::create(...), - 'rollback' => Nodes\RollbackNode::create(...), - - 'foreach' => Nodes\ForeachNode::create(...), - 'for' => Nodes\ForNode::create(...), - 'while' => Nodes\WhileNode::create(...), - 'iterateWhile' => Nodes\IterateWhileNode::create(...), - 'sep' => Nodes\FirstLastSepNode::create(...), - 'last' => Nodes\FirstLastSepNode::create(...), - 'first' => Nodes\FirstLastSepNode::create(...), - 'skipIf' => Nodes\JumpNode::create(...), - 'breakIf' => Nodes\JumpNode::create(...), - 'exitIf' => Nodes\JumpNode::create(...), - 'continueIf' => Nodes\JumpNode::create(...), - - 'if' => Nodes\IfNode::create(...), - 'ifset' => Nodes\IfNode::create(...), - 'ifchanged' => Nodes\IfChangedNode::create(...), - 'n:ifcontent' => Nodes\IfContentNode::create(...), - 'n:else' => Nodes\NElseNode::create(...), - 'n:elseif' => Nodes\NElseNode::create(...), - 'switch' => Nodes\SwitchNode::create(...), - ]; - } - - - public function getFilters(): array - { - return [ - 'batch' => $this->filters->batch(...), - 'breakLines' => $this->filters->breaklines(...), - 'breaklines' => $this->filters->breaklines(...), - 'bytes' => $this->filters->bytes(...), - 'capitalize' => extension_loaded('mbstring') - ? $this->filters->capitalize(...) - : fn() => throw new RuntimeException('Filter |capitalize requires mbstring extension.'), - 'ceil' => $this->filters->ceil(...), - 'checkUrl' => $this->filters->checkUrl(...), - 'clamp' => $this->filters->clamp(...), - 'column' => $this->filters->column(...), - 'commas' => $this->filters->commas(...), - 'dataStream' => $this->filters->dataStream(...), - 'datastream' => $this->filters->dataStream(...), - 'date' => $this->filters->date(...), - 'escape' => Latte\Runtime\Helpers::nop(...), - 'escapeCss' => Latte\Runtime\Helpers::escapeCss(...), - 'escapeHtml' => Latte\Runtime\HtmlHelpers::escapeText(...), - 'escapeHtmlComment' => Latte\Runtime\HtmlHelpers::escapeComment(...), - 'escapeICal' => Latte\Runtime\Helpers::escapeICal(...), - 'escapeJs' => Latte\Runtime\Helpers::escapeJs(...), - 'escapeUrl' => 'rawurlencode', - 'escapeXml' => Latte\Runtime\XmlHelpers::escapeText(...), - 'explode' => $this->filters->explode(...), - 'filter' => $this->filters->filter(...), - 'first' => $this->filters->first(...), - 'firstLower' => extension_loaded('mbstring') - ? $this->filters->firstLower(...) - : fn() => throw new RuntimeException('Filter |firstLower requires mbstring extension.'), - 'firstUpper' => extension_loaded('mbstring') - ? $this->filters->firstUpper(...) - : fn() => throw new RuntimeException('Filter |firstUpper requires mbstring extension.'), - 'floor' => $this->filters->floor(...), - 'group' => $this->filters->group(...), - 'implode' => $this->filters->implode(...), - 'indent' => $this->filters->indent(...), - 'join' => $this->filters->implode(...), - 'last' => $this->filters->last(...), - 'length' => $this->filters->length(...), - 'limit' => fn(string|iterable $value, int $length) => Filters::slice($value, 0, $length, preserveKeys: true), - 'localDate' => $this->filters->localDate(...), - 'lower' => extension_loaded('mbstring') - ? $this->filters->lower(...) - : fn() => throw new RuntimeException('Filter |lower requires mbstring extension.'), - 'number' => $this->filters->number(...), - 'padLeft' => $this->filters->padLeft(...), - 'padRight' => $this->filters->padRight(...), - 'query' => $this->filters->query(...), - 'random' => $this->filters->random(...), - 'repeat' => $this->filters->repeat(...), - 'replace' => $this->filters->replace(...), - 'replaceRe' => $this->filters->replaceRe(...), - 'replaceRE' => $this->filters->replaceRe(...), - 'reverse' => $this->filters->reverse(...), - 'round' => $this->filters->round(...), - 'slice' => $this->filters->slice(...), - 'sort' => $this->filters->sort(...), - 'spaceless' => $this->filters->strip(...), - 'split' => $this->filters->explode(...), - 'strip' => $this->filters->strip(...), // obsolete - 'stripHtml' => $this->filters->stripHtml(...), - 'striphtml' => $this->filters->stripHtml(...), - 'stripTags' => $this->filters->stripTags(...), - 'striptags' => $this->filters->stripTags(...), - 'substr' => $this->filters->substring(...), - 'trim' => $this->filters->trim(...), - 'truncate' => $this->filters->truncate(...), - 'upper' => extension_loaded('mbstring') - ? $this->filters->upper(...) - : fn() => throw new RuntimeException('Filter |upper requires mbstring extension.'), - 'webalize' => class_exists(Nette\Utils\Strings::class) - ? Nette\Utils\Strings::webalize(...) - : fn() => throw new RuntimeException('Filter |webalize requires nette/utils package.'), - ]; - } - - - public function getFunctions(): array - { - return [ - 'clamp' => $this->filters->clamp(...), - 'divisibleBy' => $this->filters->divisibleBy(...), - 'even' => $this->filters->even(...), - 'first' => $this->filters->first(...), - 'group' => $this->filters->group(...), - 'last' => $this->filters->last(...), - 'odd' => $this->filters->odd(...), - 'slice' => $this->filters->slice(...), - 'hasBlock' => fn(Runtime\Template $template, string $name): bool => $template->hasBlock($name), - 'hasTemplate' => fn(Runtime\Template $template, string $name): bool => $this->hasTemplate($name, $template->getName()), - ]; - } - - - public function getPasses(): array - { - $passes = new Passes($this->engine); - return [ - 'internalVariables' => $passes->forbiddenVariablesPass(...), - 'checkUrls' => $passes->checkUrlsPass(...), - 'overwrittenVariables' => function (Latte\Compiler\Nodes\TemplateNode $node): void { - if (!$this->engine->hasFeature(Latte\Feature::ScopedLoopVariables)) { - Nodes\ForeachNode::overwrittenVariablesPass($node); - } - }, - 'customFunctions' => $passes->customFunctionsPass(...), - 'moveTemplatePrintToHead' => Nodes\TemplatePrintNode::moveToHeadPass(...), - 'nElse' => Nodes\NElseNode::processPass(...), - 'scriptTagQuotes' => $passes->scriptTagQuotesPass(...), - ]; - } - - - public function getCacheKey(Latte\Engine $engine): mixed - { - return array_keys($engine->getFunctions()); - } - - - /** - * {include [file] "file" [with blocks] [,] [params]} - * {include [block] name [,] [params]} - */ - private function includeSplitter(Tag $tag, TemplateParser $parser): Nodes\IncludeBlockNode|Nodes\IncludeFileNode - { - $tag->expectArguments(); - $mod = $tag->parser->tryConsumeTokenBeforeUnquotedString('block', 'file'); - if ($mod) { - $block = $mod->text === 'block'; - } elseif ($tag->parser->stream->tryConsume('#')) { - $block = true; - } else { - $name = $tag->parser->parseUnquotedStringOrExpression(); - $block = $name instanceof Scalar\StringNode && preg_match('~[\w-]+$~DA', $name->value); - } - $tag->parser->stream->seek(0); - - return $block - ? Nodes\IncludeBlockNode::create($tag, $parser) - : Nodes\IncludeFileNode::create($tag); - } - - - /** - * {syntax ...} - */ - private function parseSyntax(Tag $tag, TemplateParser $parser): \Generator - { - if ($tag->isNAttribute() && $tag->prefix !== $tag::PrefixNone) { - throw new Latte\CompileException("Use n:syntax instead of {$tag->getNotation()}", $tag->position); - } - $tag->expectArguments(); - $token = $tag->parser->stream->consume(); - $lexer = $parser->getLexer(); - $lexer->setSyntax($token->text, $tag->isNAttribute() ? null : $tag->name); - [$inner] = yield; - if (!$tag->isNAttribute()) { - $lexer->popSyntax(); - } - return $inner; - } - - - /** - * Checks if template exists. - */ - private function hasTemplate(string $name, string $referringName): bool - { - try { - $name = $this->engine->getLoader()->getReferredName($name, $referringName); - $this->engine->createTemplate($name, [], clearCache: false); - return true; - } catch (Latte\TemplateNotFoundException) { - return false; - } - } -} diff --git a/generated/php/vendor/latte/latte/src/Latte/Essential/Filters.php b/generated/php/vendor/latte/latte/src/Latte/Essential/Filters.php deleted file mode 100644 index af7a9ee..0000000 --- a/generated/php/vendor/latte/latte/src/Latte/Essential/Filters.php +++ /dev/null @@ -1,855 +0,0 @@ -validate([null, 'html', 'html/attr', 'xml', 'xml/attr'], __FUNCTION__); - $info->contentType = ContentType::Text; - return Latte\Runtime\HtmlHelpers::convertHtmlToText((string) $s); - } - - - /** - * Removes tags from HTML (but remains HTML entities). - */ - public static function stripTags(FilterInfo $info, string|Stringable|null $s): string - { - $info->contentType ??= ContentType::Html; - $info->validate(['html', 'html/attr', 'xml', 'xml/attr'], __FUNCTION__); - return strip_tags((string) $s); - } - - - /** - * Replaces all repeated white spaces with a single space. - */ - public static function strip(FilterInfo $info, string $s): string - { - return $info->contentType === ContentType::Html - ? trim(self::spacelessHtml($s)) - : trim(self::spacelessText($s)); - } - - - /** - * Replaces all repeated white spaces with a single space. - */ - public static function spacelessHtml(string $s, bool &$strip = true): string - { - return preg_replace_callback( - '#[ \t\r\n]+|<(/)?(textarea|pre|script)(?=\W)#si', - function ($m) use (&$strip) { - if (empty($m[2])) { - return $strip ? ' ' : $m[0]; - } else { - $strip = !empty($m[1]); - return $m[0]; - } - }, - $s, - ); - } - - - /** - * Output buffering handler for spacelessHtml. - */ - public static function spacelessHtmlHandler(string $s, ?int $phase = null): string - { - static $strip; - $left = $right = ''; - - if ($phase & PHP_OUTPUT_HANDLER_START) { - $strip = true; - $tmp = ltrim($s); - $left = substr($s, 0, strlen($s) - strlen($tmp)); - $s = $tmp; - } - - if ($phase & PHP_OUTPUT_HANDLER_FINAL) { - $tmp = rtrim($s); - $right = substr($s, strlen($tmp)); - $s = $tmp; - } - - return $left . self::spacelessHtml($s, $strip) . $right; - } - - - /** - * Replaces all repeated white spaces with a single space. - */ - public static function spacelessText(string $s): string - { - return preg_replace('#[ \t\r\n]+#', ' ', $s); - } - - - /** - * Indents plain text or HTML the content from the left. - */ - public static function indent(FilterInfo $info, string $s, int $level = 1, string $chars = "\t"): string - { - if ($level < 1) { - // do nothing - } elseif ($info->contentType === ContentType::Html) { - $s = preg_replace_callback('#<(textarea|pre).*? strtr($m[0], " \t\r\n", "\x1F\x1E\x1D\x1A"), $s); - if (preg_last_error()) { - throw new Latte\RuntimeException(preg_last_error_msg()); - } - - $s = preg_replace('#(?:^|[\r\n]+)(?=[^\r\n])#', '$0' . str_repeat($chars, $level), $s); - $s = strtr($s, "\x1F\x1E\x1D\x1A", " \t\r\n"); - } else { - $s = preg_replace('#(?:^|[\r\n]+)(?=[^\r\n])#', '$0' . str_repeat($chars, $level), $s); - } - - return $s; - } - - - /** - * Join array of text or HTML elements with a string. - * @param string[] $arr - */ - public static function implode(array $arr, string $glue = ''): string - { - return implode($glue, $arr); - } - - - /** - * Join array elements with a comma and space. - * @param string[] $arr - */ - public static function commas(array $arr, ?string $lastGlue = null): string - { - if ($lastGlue === null || count($arr) < 2) { - return implode(', ', $arr); - } - - $last = array_pop($arr); - return implode(', ', $arr) . $lastGlue . $last; - } - - - /** - * Splits a string by a string. - * @return list - */ - public static function explode(string $value, string $separator = ''): array - { - return $separator === '' - ? preg_split('//u', $value, -1, PREG_SPLIT_NO_EMPTY) - : explode($separator, $value); - } - - - /** - * Repeats text. - */ - public static function repeat(FilterInfo $info, string|Stringable|null $s, int $count): string - { - return str_repeat((string) $s, $count); - } - - - /** - * Date/time formatting. - */ - public static function date( - string|int|\DateTimeInterface|\DateInterval|null $time, - string $format = "j.\u{a0}n.\u{a0}Y", - ): ?string - { - if ($time == null) { // intentionally == - return null; - } elseif ($time instanceof \DateInterval) { - return $time->format($format); - } elseif (is_numeric($time)) { - $time = (new \DateTime)->setTimestamp((int) $time); - } elseif (!$time instanceof \DateTimeInterface) { - $time = new \DateTime($time); - } - - return $time->format($format); - } - - - /** - * Date/time formatting according to locale. - */ - public function localDate( - string|int|\DateTimeInterface|null $value, - ?string $format = null, - ?string $date = null, - ?string $time = null, - ): ?string - { - if ($this->locale === null) { - throw new Latte\RuntimeException('Filter |localDate requires the locale to be set using Engine::setLocale()'); - } elseif ($value == null) { // intentionally == - return null; - } elseif (is_numeric($value)) { - $value = (new \DateTime)->setTimestamp((int) $value); - } elseif (!$value instanceof \DateTimeInterface) { - $value = new \DateTime($value); - $errors = \DateTime::getLastErrors(); - if (!empty($errors['warnings'])) { - throw new \InvalidArgumentException(reset($errors['warnings'])); - } - } - - if ($format === null) { - $xlt = ['' => \IntlDateFormatter::NONE, 'full' => \IntlDateFormatter::FULL, 'long' => \IntlDateFormatter::LONG, 'medium' => \IntlDateFormatter::MEDIUM, 'short' => \IntlDateFormatter::SHORT, - 'relative-full' => \IntlDateFormatter::RELATIVE_FULL, 'relative-long' => \IntlDateFormatter::RELATIVE_LONG, 'relative-medium' => \IntlDateFormatter::RELATIVE_MEDIUM, 'relative-short' => \IntlDateFormatter::RELATIVE_SHORT]; - $time ??= ''; - $date ??= $time === '' ? 'long' : ''; - $formatter = new \IntlDateFormatter($this->locale, $xlt[$date], $xlt[$time]); - } else { - $formatter = new \IntlDateFormatter($this->locale, pattern: (new \IntlDatePatternGenerator($this->locale))->getBestPattern($format)); - } - - $res = $formatter->format($value); - $res = preg_replace('~(\d\.) ~', "\$1\u{a0}", $res); - return $res; - } - - - /** - * Formats a number with grouped thousands and optionally decimal digits according to locale. - */ - public function number( - float $number, - string|int $patternOrDecimals = 0, - string $decimalSeparator = '.', - string $thousandsSeparator = ',', - ): string - { - if (is_int($patternOrDecimals) && $patternOrDecimals < 0) { - throw new Latte\RuntimeException('Filter |number: the number of decimal must not be negative'); - } elseif ($this->locale === null || func_num_args() > 2) { - if (is_string($patternOrDecimals)) { - throw new Latte\RuntimeException('Filter |number: using a pattern requires setting a locale via Engine::setLocale().'); - } - return number_format($number, $patternOrDecimals, $decimalSeparator, $thousandsSeparator); - } - - $formatter = new \NumberFormatter($this->locale, \NumberFormatter::DECIMAL); - if (is_string($patternOrDecimals)) { - $formatter->setPattern($patternOrDecimals); - } else { - $formatter->setAttribute(\NumberFormatter::FRACTION_DIGITS, $patternOrDecimals); - } - return $formatter->format($number); - } - - - /** - * Converts to human-readable file size. - */ - public function bytes(float $bytes, int $precision = 2): string - { - $bytes = round($bytes); - $units = ['B', 'kB', 'MB', 'GB', 'TB', 'PB']; - foreach ($units as $unit) { - if (abs($bytes) < 1024 || $unit === end($units)) { - break; - } - - $bytes /= 1024; - } - - if ($this->locale === null) { - $bytes = (string) round($bytes, $precision); - } else { - $formatter = new \NumberFormatter($this->locale, \NumberFormatter::DECIMAL); - $formatter->setAttribute(\NumberFormatter::MAX_FRACTION_DIGITS, $precision); - $bytes = $formatter->format($bytes); - } - - return $bytes . ' ' . $unit; - } - - - /** - * Performs a search and replace. - * @param string|array|array $search - * @param string|array|null $replace - */ - public static function replace( - FilterInfo $info, - string $subject, - string|array $search, - string|array|null $replace = null, - ): string - { - if (is_array($search)) { - if (is_array($replace)) { - return strtr($subject, array_combine($search, $replace)); - } elseif ($replace === null && is_string(key($search))) { - return strtr($subject, $search); - } else { - return strtr($subject, array_fill_keys($search, $replace)); - } - } - - return str_replace($search, $replace ?? '', $subject); - } - - - /** - * Perform a regular expression search and replace. - */ - public static function replaceRe(string $subject, string $pattern, string $replacement = ''): string - { - $res = preg_replace($pattern, $replacement, $subject); - if (preg_last_error() || $res === null) { - throw new Latte\RuntimeException(preg_last_error_msg()); - } - - return $res; - } - - - /** - * The data: URI generator. - */ - public static function dataStream(string $data, ?string $type = null): string - { - if ($type === null) { - $finfo = finfo_open(FILEINFO_MIME_TYPE); - if ($finfo) { - $type = finfo_buffer($finfo, $data) ?: null; - } - } - return 'data:' . ($type ? "$type;" : '') . 'base64,' . base64_encode($data); - } - - - /** - * Converts newlines to HTML
tags. - */ - public static function breaklines(string|Stringable|null $s): Html - { - $s = htmlspecialchars((string) $s, ENT_NOQUOTES | ENT_SUBSTITUTE, 'UTF-8'); - return new Html(nl2br($s, use_xhtml: false)); - } - - - /** - * Returns a part of string. - */ - public static function substring(string|Stringable|null $s, int $start, ?int $length = null): string - { - $s = (string) $s; - return match (true) { - extension_loaded('mbstring') => mb_substr($s, $start, $length, 'UTF-8'), - extension_loaded('iconv') => (string) iconv_substr($s, $start, $length, 'UTF-8'), - default => throw new Latte\RuntimeException("Filter |substr requires 'mbstring' or 'iconv' extension."), - }; - } - - - /** - * Truncates string to maximal length. - */ - public static function truncate(string|Stringable|null $s, int $length, string $append = "\u{2026}"): string - { - $s = (string) $s; - if (self::strLength($s) > $length) { - $length -= self::strLength($append); - if ($length < 1) { - return $append; - - } elseif (preg_match('#^.{1,' . $length . '}(?=[\s\x00-/:-@\[-`{-~])#us', $s, $matches)) { - return $matches[0] . $append; - - } else { - return self::substring($s, 0, $length) . $append; - } - } - - return $s; - } - - - /** - * Convert to lower case. - */ - public static function lower(string|Stringable|null $s): string - { - return mb_strtolower((string) $s, 'UTF-8'); - } - - - /** - * Convert to upper case. - */ - public static function upper(string|Stringable|null $s): string - { - return mb_strtoupper((string) $s, 'UTF-8'); - } - - - /** - * Convert first character to lower case. - */ - public static function firstLower(string|Stringable|null $s): string - { - $s = (string) $s; - return self::lower(self::substring($s, 0, 1)) . self::substring($s, 1); - } - - - /** - * Convert first character to upper case. - */ - public static function firstUpper(string|Stringable|null $s): string - { - $s = (string) $s; - return self::upper(self::substring($s, 0, 1)) . self::substring($s, 1); - } - - - /** - * Capitalize string. - */ - public static function capitalize(string|Stringable|null $s): string - { - return mb_convert_case((string) $s, MB_CASE_TITLE, 'UTF-8'); - } - - - /** - * Returns length of string or iterable. - * @param array|\Countable|\Traversable|string $val - */ - public static function length(array|\Countable|\Traversable|string $val): int - { - if (is_countable($val)) { - return count($val); - } elseif ($val instanceof \Traversable) { - return iterator_count($val); - } else { - return self::strLength($val); - } - } - - - private static function strLength(string $s): int - { - return match (true) { - extension_loaded('mbstring') => mb_strlen($s, 'UTF-8'), - extension_loaded('iconv') => (int) iconv_strlen($s, 'UTF-8'), - default => strlen(@utf8_decode($s)), // deprecated - }; - } - - - /** - * Strips whitespace. - */ - public static function trim(FilterInfo $info, string $s, string $charlist = " \t\n\r\0\x0B\u{A0}"): string - { - $charlist = preg_quote($charlist, '#'); - $s = preg_replace('#^[' . $charlist . ']+|[' . $charlist . ']+$#Du', '', (string) $s); - if (preg_last_error() || $s === null) { - throw new Latte\RuntimeException(preg_last_error_msg()); - } - - return $s; - } - - - /** - * Pad a string to a certain length with another string. - */ - public static function padLeft(string|Stringable|int|float|null $s, int $length, string $append = ' '): string - { - $s = (string) $s; - $length = max(0, $length - self::strLength($s)); - $l = self::strLength($append); - return str_repeat($append, (int) ($length / $l)) . self::substring($append, 0, $length % $l) . $s; - } - - - /** - * Pad a string to a certain length with another string. - */ - public static function padRight(string|Stringable|int|float|null $s, int $length, string $append = ' '): string - { - $s = (string) $s; - $length = max(0, $length - self::strLength($s)); - $l = self::strLength($append); - return $s . str_repeat($append, (int) ($length / $l)) . self::substring($append, 0, $length % $l); - } - - - /** - * Reverses string or array. - * @template K - * @template V - * @param iterable|string $val - * @return ($val is string ? string : array) - */ - public static function reverse(string|iterable $val, bool $preserveKeys = false): string|array - { - return is_string($val) - ? (string) iconv('UTF-32LE', 'UTF-8', strrev((string) iconv('UTF-8', 'UTF-32BE', $val))) - : array_reverse(iterator_to_array($val), $preserveKeys); - } - - - /** - * Returns the values from a single column in the input array. - * @param iterable $data - * @return mixed[] - */ - public static function column(iterable $data, string|int|null $columnKey, string|int|null $indexKey = null): array - { - return array_column(iterator_to_array($data), $columnKey, $indexKey); - } - - - /** - * Chunks items by returning an array of arrays with the given number of items. - * @param iterable $list - * @return \Generator> - */ - public static function batch(iterable $list, int $length, mixed $rest = null): \Generator - { - $batch = []; - foreach ($list as $key => $value) { - $batch[$key] = $value; - if (count($batch) >= $length) { - yield $batch; - $batch = []; - } - } - - if ($batch) { - if ($rest !== null) { - while (count($batch) < $length) { - $batch[] = $rest; - } - } - - yield $batch; - } - } - - - /** - * Sorts elements using the comparison function and preserves the key association. - * @template K - * @template V - * @param iterable $data - * @param ?(\Closure(V, V): int) $comparison - * @param string|int|(\Closure(V): mixed)|null $by - * @param string|int|(\Closure(K): mixed)|bool $byKey - * @return iterable - */ - public function sort( - iterable $data, - ?\Closure $comparison = null, - string|int|\Closure|null $by = null, - string|int|\Closure|bool $byKey = false, - ): iterable - { - if ($byKey !== false) { - if ($by !== null) { - throw new \InvalidArgumentException('Filter |sort cannot use both $by and $byKey.'); - } - $by = $byKey === true ? null : $byKey; - } - - if ($comparison) { - } elseif ($this->locale === null) { - $comparison = fn($a, $b) => $a <=> $b; - } else { - $collator = new \Collator($this->locale); - $comparison = fn($a, $b) => is_string($a) && is_string($b) - ? $collator->compare($a, $b) - : $a <=> $b; - } - - $comparison = match (true) { - $by === null => $comparison, - $by instanceof \Closure => fn($a, $b) => $comparison($by($a), $by($b)), - default => fn($a, $b) => $comparison(is_array($a) ? $a[$by] : $a->$by, is_array($b) ? $b[$by] : $b->$by), - }; - - if (is_array($data)) { - $byKey ? uksort($data, $comparison) : uasort($data, $comparison); - return $data; - } - - $pairs = []; - foreach ($data as $key => $value) { - $pairs[] = [$key, $value]; - } - uasort($pairs, fn($a, $b) => $byKey ? $comparison($a[0], $b[0]) : $comparison($a[1], $b[1])); - - return new AuxiliaryIterator($pairs); - } - - - /** - * Groups elements by the element indices and preserves the key association and order. - * @template K - * @template V - * @param iterable $data - * @param string|int|(\Closure(V, K): mixed) $by - * @return iterable> - */ - public static function group(iterable $data, string|int|\Closure $by): iterable - { - $fn = $by instanceof \Closure ? $by : fn($a) => is_array($a) ? $a[$by] : $a->$by; - $keys = $groups = []; - - foreach ($data as $k => $v) { - $groupKey = $fn($v, $k); - if (!$groups || $prevKey !== $groupKey) { - $index = array_search($groupKey, $keys, strict: true); - if ($index === false) { - $index = count($keys); - $keys[$index] = $groupKey; - } - $prevKey = $groupKey; - } - $groups[$index][] = [$k, $v]; - } - - return new AuxiliaryIterator(array_map( - fn($key, $group) => [$key, new AuxiliaryIterator($group)], - $keys, - $groups, - )); - } - - - /** - * Filters elements according to a given $predicate. Maintains original keys. - * @template K - * @template V - * @param iterable $iterable - * @param callable(V, K, iterable): bool $predicate - * @return iterable - */ - public static function filter(iterable $iterable, callable $predicate): iterable - { - foreach ($iterable as $k => $v) { - if ($predicate($v, $k, $iterable)) { - yield $k => $v; - } - } - } - - - /** - * Returns value clamped to the inclusive range of min and max. - */ - public static function clamp(int|float $value, int|float $min, int|float $max): int|float - { - if ($min > $max) { - throw new \InvalidArgumentException("Minimum ($min) is not less than maximum ($max)."); - } - - return min(max($value, $min), $max); - } - - - /** - * Generates URL-encoded query string - * @param string|array $data - */ - public static function query(string|array $data): string - { - return is_array($data) - ? http_build_query($data, '', '&') - : urlencode($data); - } - - - /** - * Is divisible by? - */ - public static function divisibleBy(int $value, int $by): bool - { - return $value % $by === 0; - } - - - /** - * Is odd? - */ - public static function odd(int $value): bool - { - return $value % 2 !== 0; - } - - - /** - * Is even? - */ - public static function even(int $value): bool - { - return $value % 2 === 0; - } - - - /** - * Returns the first element in an array or character in a string, or null if none. - * @param string|iterable $value - * @return ($value is string ? string : mixed) - */ - public static function first(string|iterable $value): mixed - { - if (is_string($value)) { - return self::substring($value, 0, 1); - } - - foreach ($value as $item) { - return $item; - } - - return null; - } - - - /** - * Returns the last element in an array or character in a string, or null if none. - * @param string|array $value - * @return ($value is string ? string : mixed) - */ - public static function last(string|array $value): mixed - { - return is_array($value) - ? ($value ? $value[array_key_last($value)] : null) - : self::substring($value, -1); - } - - - /** - * Extracts a slice of an array, string or iterator. - * @param string|iterable $value - * @return ($value is string ? string : ($value is array ? array : \Generator)) - */ - public static function slice( - string|iterable $value, - int $start, - ?int $length = null, - bool $preserveKeys = false, - ): string|array|\Generator - { - if (is_string($value)) { - return self::substring($value, $start, $length); - } elseif (is_array($value)) { - return array_slice($value, $start, $length, $preserveKeys); - } - - return (function () use ($value, $start, $length, $preserveKeys) { - $i = 0; - $count = 0; - foreach ($value as $key => $val) { - if ($i++ < $start) { - continue; - } - if ($length !== null && $count >= $length) { - break; - } - if ($preserveKeys) { - yield $key => $val; - } else { - yield $val; - } - $count++; - } - })(); - } - - - /** - * Rounds number to specified precision. - */ - public static function round(float $value, int $precision = 0): float - { - return round($value, $precision); - } - - - /** - * Rounds number down to specified precision. - */ - public static function floor(float $value, int $precision = 0): float - { - return floor($value * 10 ** $precision) / 10 ** $precision; - } - - - /** - * Rounds number up to specified precision. - */ - public static function ceil(float $value, int $precision = 0): float - { - return ceil($value * 10 ** $precision) / 10 ** $precision; - } - - - /** - * Picks random element/char. - * @param string|array $values - * @return ($values is string ? string : mixed) - */ - public static function random(string|array $values): mixed - { - if (is_string($values)) { - $values = preg_split('//u', $values, -1, PREG_SPLIT_NO_EMPTY); - } - - return $values - ? $values[array_rand($values, 1)] - : null; - } - - - /** - * Sanitizes string for use inside href attribute. - */ - public static function checkUrl(mixed $s): string - { - $s = $s instanceof Latte\Runtime\HtmlStringable - ? Latte\Runtime\HtmlHelpers::convertHtmlToText((string) $s) - : (string) $s; - - return preg_match('~^(?:(?:https?|ftp)://[^@]+(?:/.*)?|(?:mailto|tel|sms):.+|[/?#].*|[^:]+)$~Di', $s) ? $s : ''; - } -} diff --git a/generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/BlockNode.php b/generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/BlockNode.php deleted file mode 100644 index bdb59a7..0000000 --- a/generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/BlockNode.php +++ /dev/null @@ -1,161 +0,0 @@ -, array{AreaNode, ?Tag}, static> */ - public static function create(Tag $tag, TemplateParser $parser): \Generator - { - $tag->outputMode = $tag::OutputRemoveIndentation; - $stream = $tag->parser->stream; - $node = $tag->node = new static; - $name = null; - - if (!$stream->is('|', Token::End)) { - $layer = $tag->parser->tryConsumeTokenBeforeUnquotedString('local') - ? Template::LayerLocal - : $parser->blockLayer; - $stream->tryConsume('#'); - $name = $tag->parser->parseUnquotedStringOrExpression(); - $node->block = new Block($name, $layer, $tag); - - if (!$node->block->isDynamic()) { - $parser->checkBlockIsUnique($node->block); - } - } - - $node->modifier = $tag->parser->parseModifier(); - $noEscape = $node->modifier->removeFilter('noescape'); - if ($noEscape && !$node->modifier->filters) { - throw new CompileException('Filter |noescape is not expected here.', $tag->position); - } - $node->modifier->escape = $node->modifier->filters && !$noEscape; - - [$node->content, $endTag] = yield; - - if ($node->block && $endTag && $name instanceof Scalar\StringNode) { - $endTag->parser->stream->tryConsume($name->value); - } - - return $node; - } - - - public function print(PrintContext $context): string - { - if (!$this->block) { - return $this->printFilter($context); - - } elseif ($this->block->isDynamic()) { - return $this->printDynamic($context); - } - - return $this->printStatic($context); - } - - - private function printFilter(PrintContext $context): string - { - return $context->format( - <<<'XX' - ob_start(fn() => '') %line; - try { - (function () { extract(func_get_arg(0)); - %node - })(get_defined_vars()); - } finally { - $ʟ_fi = new LR\FilterInfo(%dump); - echo %modifyContent(ob_get_clean()); - } - - XX, - $this->position, - $this->content, - $context->getEscaper()->export(), - $this->modifier, - ); - } - - - private function printStatic(PrintContext $context): string - { - assert($this->block !== null); - $this->modifier->escape = $this->modifier->escape || $context->getEscaper()->getState() === Escaper::HtmlAttribute; - $context->addBlock($this->block); - $this->block->content = $this->content->print($context); // must be compiled after is added - - return $context->format( - '$this->renderBlock(%raw, get_defined_vars()' - . ($this->modifier->filters || $this->modifier->escape - ? ', function ($s, $type) { $ʟ_fi = new LR\FilterInfo($type); return %modifyContent($s); }' - : '') - . ') %2.line;', - $context->ensureString($this->block->name, 'Block name'), - $this->modifier, - $this->position, - ); - } - - - private function printDynamic(PrintContext $context): string - { - assert($this->block !== null); - $context->addBlock($this->block); - $this->block->content = $this->content->print($context); // must be compiled after is added - $escaper = $context->getEscaper(); - $this->modifier->escape = $this->modifier->escape || $escaper->getState() === Escaper::HtmlAttribute; - - return $context->format( - '$this->addBlock($ʟ_nm = %raw, %dump, [$this->%raw(...)], %dump); - $this->renderBlock($ʟ_nm, get_defined_vars()' - . ($this->modifier->filters || $this->modifier->escape - ? ', function ($s, $type) { $ʟ_fi = new LR\FilterInfo($type); return %modifyContent($s); }' - : '') - . ');', - $context->ensureString($this->block->name, 'Block name'), - $escaper->export(), - $this->block->method, - $this->block->layer, - $this->modifier, - ); - } - - - public function &getIterator(): \Generator - { - if ($this->block) { - yield $this->block->name; - } - yield $this->modifier; - yield $this->content; - } -} diff --git a/generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/CaptureNode.php b/generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/CaptureNode.php deleted file mode 100644 index 8004ff9..0000000 --- a/generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/CaptureNode.php +++ /dev/null @@ -1,86 +0,0 @@ -, array{AreaNode, ?Tag}, static> */ - public static function create(Tag $tag): \Generator - { - $tag->expectArguments(); - $variable = $tag->parser->parseExpression(); - if (!$variable->isWritable()) { - $text = ''; - $i = 0; - while ($token = $tag->parser->stream->tryPeek(--$i)) { - $text = $token->text . $text; - } - - throw new CompileException("It is not possible to write into '$text' in " . $tag->getNotation(), $tag->position); - } - $node = $tag->node = new static; - $node->variable = $variable; - $node->modifier = $tag->parser->parseModifier(); - [$node->content] = yield; - return $node; - } - - - public function print(PrintContext $context): string - { - $escaper = $context->getEscaper(); - return $context->format( - <<<'XX' - ob_start(fn() => '') %line; - try { - %node - } finally { - $ʟ_tmp = %raw; - } - $ʟ_fi = new LR\FilterInfo(%dump); %node = %modifyContent($ʟ_tmp); - - - XX, - $this->position, - $this->content, - $escaper->getState() === Escaper::HtmlText - ? 'ob_get_length() ? new LR\Html(ob_get_clean()) : ob_get_clean()' - : 'ob_get_clean()', - $escaper->export(), - $this->variable, - $this->modifier, - ); - } - - - public function &getIterator(): \Generator - { - yield $this->variable; - yield $this->modifier; - yield $this->content; - } -} diff --git a/generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/ContentTypeNode.php b/generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/ContentTypeNode.php deleted file mode 100644 index 54ba675..0000000 --- a/generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/ContentTypeNode.php +++ /dev/null @@ -1,86 +0,0 @@ -expectArguments(); - while (!$tag->parser->stream->consume()->isEnd()); - $type = trim($tag->parser->text); - - if (!$tag->isInHead() && !($tag->htmlElement?->is('script') && str_contains($type, 'html'))) { - throw new CompileException('{contentType} is allowed only in template header.', $tag->position); - } - - $node = new static; - $node->inScript = (bool) $tag->htmlElement; - $node->contentType = match (true) { - str_contains($type, 'html') => ContentType::Html, - str_contains($type, 'xml') => ContentType::Xml, - str_contains($type, 'javascript') => ContentType::JavaScript, - str_contains($type, 'css') => ContentType::Css, - str_contains($type, 'calendar') => ContentType::ICal, - default => ContentType::Text - }; - $parser->setContentType($node->contentType); - - if (strpos($type, '/') && !$tag->htmlElement) { - $node->mimeType = $type; - } - return $node; - } - - - public function print(PrintContext $context): string - { - if ($this->inScript) { - $context->getEscaper()->enterHtmlRaw($this->contentType); - return ''; - } - - $context->beginEscape()->enterContentType($this->contentType); - - return $this->mimeType - ? $context->format( - <<<'XX' - if (empty($this->global->coreCaptured) && in_array($this->getReferenceType(), ['extends', null], true)) { - header(%dump) %line; - } - - XX, - 'Content-Type: ' . $this->mimeType, - $this->position, - ) - : ''; - } - - - public function &getIterator(): \Generator - { - false && yield; - } -} diff --git a/generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/CustomFunctionCallNode.php b/generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/CustomFunctionCallNode.php deleted file mode 100644 index a04e035..0000000 --- a/generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/CustomFunctionCallNode.php +++ /dev/null @@ -1,46 +0,0 @@ - */ - public array $args = [], - public ?Position $position = null, - ) { - (function (Php\ArgumentNode ...$args) {})(...$args); - } - - - public function print(PrintContext $context): string - { - return '($this->global->fn->' . $this->name . ')($this, ' . $context->implode($this->args) . ')'; - } - - - public function &getIterator(): \Generator - { - yield $this->name; - foreach ($this->args as &$item) { - yield $item; - } - Helpers::removeNulls($this->args); - } -} diff --git a/generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/DebugbreakNode.php b/generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/DebugbreakNode.php deleted file mode 100644 index 1b96355..0000000 --- a/generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/DebugbreakNode.php +++ /dev/null @@ -1,52 +0,0 @@ -condition = $tag->parser->isEnd() ? null : $tag->parser->parseExpression(); - return $node; - } - - - public function print(PrintContext $context): string - { - if (function_exists($func = 'debugbreak') || function_exists($func = 'xdebug_break')) { - return $context->format( - ($this->condition ? 'if (%1.node) ' : '') . $func . '() %0.line;', - $this->position, - $this->condition, - ); - } - return ''; - } - - - public function &getIterator(): \Generator - { - if ($this->condition) { - yield $this->condition; - } - } -} diff --git a/generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/DefineNode.php b/generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/DefineNode.php deleted file mode 100644 index 235482f..0000000 --- a/generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/DefineNode.php +++ /dev/null @@ -1,136 +0,0 @@ -, array{AreaNode, ?Tag}, static> */ - public static function create(Tag $tag, TemplateParser $parser): \Generator - { - $tag->expectArguments(); - $layer = $tag->parser->tryConsumeTokenBeforeUnquotedString('local') - ? Template::LayerLocal - : $parser->blockLayer; - $tag->parser->stream->tryConsume('#'); - $name = $tag->parser->parseUnquotedStringOrExpression(); - - $node = $tag->node = new static; - $node->block = new Block($name, $layer, $tag); - if (!$node->block->isDynamic()) { - $parser->checkBlockIsUnique($node->block); - $tag->parser->stream->tryConsume(','); - $node->block->parameters = self::parseParameters($tag); - } - - [$node->content, $endTag] = yield; - if ($endTag && $name instanceof Scalar\StringNode) { - $endTag->parser->stream->tryConsume($name->value); - } - - return $node; - } - - - /** @return ParameterNode[] */ - private static function parseParameters(Tag $tag): array - { - $stream = $tag->parser->stream; - $params = []; - while (!$stream->is(Token::End)) { - $type = $tag->parser->parseType(); - - $save = $stream->getIndex(); - $expr = $stream->is(Token::Php_Variable) ? $tag->parser->parseExpression() : null; - if ($expr instanceof VariableNode && is_string($expr->name)) { - $params[] = new ParameterNode($expr, new Scalar\NullNode, $type); - } elseif ( - $expr instanceof AssignNode - && $expr->var instanceof VariableNode - && is_string($expr->var->name) - ) { - $params[] = new ParameterNode($expr->var, $expr->expr, $type); - } else { - $stream->seek($save); - $stream->throwUnexpectedException(addendum: ' in ' . $tag->getNotation()); - } - - if (!$stream->tryConsume(',')) { - break; - } - } - - return $params; - } - - - public function print(PrintContext $context): string - { - return $this->block->isDynamic() - ? $this->printDynamic($context) - : $this->printStatic($context); - } - - - private function printStatic(PrintContext $context): string - { - $context->addBlock($this->block); - $this->block->content = $this->content->print($context); // must be compiled after is added - return ''; - } - - - private function printDynamic(PrintContext $context): string - { - $context->addBlock($this->block); - $this->block->content = $this->content->print($context); // must be compiled after is added - - return $context->format( - '$this->addBlock(%raw, %dump, [$this->%raw(...)], %dump);', - $context->ensureString($this->block->name, 'Block name'), - $context->getEscaper()->export(), - $this->block->method, - $this->block->layer, - ); - } - - - public function &getIterator(): \Generator - { - yield $this->block->name; - foreach ($this->block->parameters as &$param) { - yield $param; - } - Helpers::removeNulls($this->block->parameters); - - yield $this->content; - } -} diff --git a/generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/DoNode.php b/generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/DoNode.php deleted file mode 100644 index 2c030a9..0000000 --- a/generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/DoNode.php +++ /dev/null @@ -1,60 +0,0 @@ -expectArguments(); - - $token = $tag->parser->stream->peek(); - if ($token->is(...self::RefusedKeywords)) { - $tag->parser->throwReservedKeywordException($token); - } - - $node = new static; - $node->expression = $tag->parser->parseExpression(); - return $node; - } - - - public function print(PrintContext $context): string - { - return $context->format( - '%node %line;', - $this->expression, - $this->position, - ); - } - - - public function &getIterator(): \Generator - { - yield $this->expression; - } -} diff --git a/generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/DumpNode.php b/generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/DumpNode.php deleted file mode 100644 index f103a19..0000000 --- a/generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/DumpNode.php +++ /dev/null @@ -1,57 +0,0 @@ -expression = $tag->parser->isEnd() - ? null - : $tag->parser->parseExpression(); - return $node; - } - - - public function print(PrintContext $context): string - { - return $this->expression - ? $context->format( - 'Tracy\Debugger::barDump(%node, %dump) %line;', - $this->expression, - $this->expression->print($context), - $this->position, - ) - : $context->format( - "Tracy\\Debugger::barDump(get_defined_vars(), 'variables') %line;", - $this->position, - ); - } - - - public function &getIterator(): \Generator - { - if ($this->expression) { - yield $this->expression; - } - } -} diff --git a/generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/EmbedNode.php b/generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/EmbedNode.php deleted file mode 100644 index daafdbd..0000000 --- a/generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/EmbedNode.php +++ /dev/null @@ -1,124 +0,0 @@ -, array{FragmentNode, ?Tag}, static> */ - public static function create(Tag $tag, TemplateParser $parser): \Generator - { - if ($tag->isNAttribute()) { - throw new CompileException('Attribute n:embed is not supported.', $tag->position); - } - - $tag->outputMode = $tag::OutputRemoveIndentation; - $tag->expectArguments(); - - $node = $tag->node = new static; - $mode = $tag->parser->tryConsumeTokenBeforeUnquotedString('block', 'file')?->text; - $node->name = $tag->parser->parseUnquotedStringOrExpression(); - $node->mode = $mode ?? ($node->name instanceof StringNode && preg_match('~[\w-]+$~DA', $node->name->value) ? 'block' : 'file'); - $tag->parser->stream->tryConsume(','); - $node->args = $tag->parser->parseArguments(); - - $prevIndex = $parser->blockLayer; - $parser->blockLayer = $node->layer = count($parser->blocks); - $parser->blocks[$parser->blockLayer] = []; - [$node->blocks] = yield; - - foreach ($node->blocks->children as $child) { - if (!$child instanceof ImportNode && !$child instanceof BlockNode && !$child instanceof TextNode) { - throw new CompileException('Unexpected content inside {embed} tags.', $child->position); - } - } - - $parser->blockLayer = $prevIndex; - return $node; - } - - - public function print(PrintContext $context): string - { - $imports = ''; - foreach ($this->blocks->children as $child) { - if ($child instanceof ImportNode) { - $imports .= $child->print($context); - } else { - $child->print($context); - } - } - - return $this->mode === 'file' - ? $context->format( - <<<'XX' - $this->enterBlockLayer(%dump, get_defined_vars()) %line; %raw - try { - $this->createTemplate(%raw, %node, "embed")->renderToContentType(%dump) %1.line; - } finally { - $this->leaveBlockLayer(); - } - - XX, - $this->layer, - $this->position, - $imports, - $context->ensureString($this->name, 'Template name'), - $this->args, - $context->getEscaper()->export(), - ) - : $context->format( - <<<'XX' - $this->enterBlockLayer(%dump, get_defined_vars()) %line; %raw - $this->copyBlockLayer(); - try { - $this->renderBlock(%raw, %node, %dump) %1.line; - } finally { - $this->leaveBlockLayer(); - } - - XX, - $this->layer, - $this->position, - $imports, - $context->ensureString($this->name, 'Block name'), - $this->args, - $context->getEscaper()->export(), - ); - } - - - public function &getIterator(): \Generator - { - yield $this->name; - yield $this->args; - yield $this->blocks; - } -} diff --git a/generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/ExtendsNode.php b/generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/ExtendsNode.php deleted file mode 100644 index d38a829..0000000 --- a/generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/ExtendsNode.php +++ /dev/null @@ -1,55 +0,0 @@ -expectArguments(); - $node = new static; - if (!$tag->isInHead()) { - throw new CompileException("{{$tag->name}} must be placed in template head.", $tag->position); - } elseif ($tag->parser->stream->tryConsume('auto')) { - $node->extends = new NullNode; - } elseif ($tag->parser->stream->tryConsume('none')) { - $node->extends = new BooleanNode(false); - } else { - $node->extends = $tag->parser->parseUnquotedStringOrExpression(); - } - return $node; - } - - - public function print(PrintContext $context): string - { - return $context->format('$this->parentName = %node;', $this->extends); - } - - - public function &getIterator(): \Generator - { - yield $this->extends; - } -} diff --git a/generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/FirstLastSepNode.php b/generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/FirstLastSepNode.php deleted file mode 100644 index 2b9d7b0..0000000 --- a/generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/FirstLastSepNode.php +++ /dev/null @@ -1,75 +0,0 @@ -, array{AreaNode, ?Tag}, static> */ - public static function create(Tag $tag): \Generator - { - $node = $tag->node = new static; - $node->name = $tag->name; - $node->width = $tag->parser->isEnd() ? null : $tag->parser->parseExpression(); - - [$node->then, $nextTag] = yield ['else']; - if ($nextTag?->name === 'else') { - [$node->else] = yield; - } - - return $node; - } - - - public function print(PrintContext $context): string - { - $cond = match ($this->name) { - 'first' => '$iterator->isFirst', - 'last' => '$iterator->isLast', - 'sep' => '!$iterator->isLast', - }; - return $context->format( - $this->else - ? "if ($cond(%node)) %line { %node } else %line { %node }\n" - : "if ($cond(%node)) %line { %node }\n", - $this->width, - $this->position, - $this->then, - $this->tagRanges[1] ?? null, - $this->else, - ); - } - - - public function &getIterator(): \Generator - { - if ($this->width) { - yield $this->width; - } - yield $this->then; - if ($this->else) { - yield $this->else; - } - } -} diff --git a/generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/ForNode.php b/generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/ForNode.php deleted file mode 100644 index cb958cc..0000000 --- a/generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/ForNode.php +++ /dev/null @@ -1,92 +0,0 @@ -, array{AreaNode, ?Tag}, static> */ - public static function create(Tag $tag): \Generator - { - $tag->expectArguments(); - $stream = $tag->parser->stream; - $node = $tag->node = new static; - while (!$stream->is(';')) { - $node->init[] = $tag->parser->parseExpression(); - $stream->tryConsume(','); - } - - $stream->consume(';'); - $node->condition = $stream->is(';') ? null : $tag->parser->parseExpression(); - $stream->consume(';'); - while (!$tag->parser->isEnd()) { - $node->next[] = $tag->parser->parseExpression(); - $stream->tryConsume(','); - } - - [$node->content] = yield; - return $node; - } - - - public function print(PrintContext $context): string - { - return $context->format( - <<<'XX' - for (%args; %node; %args) %line { - %node - } - - XX, - $this->init, - $this->condition, - $this->next, - $this->position, - $this->content, - ); - } - - - public function &getIterator(): \Generator - { - foreach ($this->init as &$item) { - yield $item; - } - Helpers::removeNulls($this->init); - - if ($this->condition) { - yield $this->condition; - } - - foreach ($this->next as &$item) { - yield $item; - } - Helpers::removeNulls($this->next); - - yield $this->content; - } -} diff --git a/generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/ForeachNode.php b/generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/ForeachNode.php deleted file mode 100644 index b69bdfd..0000000 --- a/generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/ForeachNode.php +++ /dev/null @@ -1,207 +0,0 @@ - $value} ... {else} ... {/foreach} - */ -class ForeachNode extends StatementNode -{ - public ExpressionNode $expression; - public ?ExpressionNode $key = null; - public bool $byRef = false; - public ExpressionNode|ListNode $value; - public AreaNode $content; - public ?AreaNode $else = null; - public ?bool $iterator = null; - public bool $checkArgs = true; - - - /** @return \Generator, array{AreaNode, ?Tag}, static> */ - public static function create(Tag $tag): \Generator - { - $tag->expectArguments(); - $node = $tag->node = new static; - self::parseArguments($tag->parser, $node); - - $modifier = $tag->parser->parseModifier(); - foreach ($modifier->filters as $filter) { - match ($filter->name->name) { - 'nocheck', 'noCheck' => $node->checkArgs = false, - 'noiterator', 'noIterator' => $node->iterator = false, - default => throw new CompileException('Only modifiers |noiterator and |nocheck are allowed here.', $tag->position), - }; - } - - if ($tag->void) { - $node->content = new NopNode; - return $node; - } - - [$node->content, $nextTag] = yield ['else']; - if ($nextTag?->name === 'else') { - [$node->else] = yield; - } - - return $node; - } - - - private static function parseArguments(TagParser $parser, self $node): void - { - $stream = $parser->stream; - $node->expression = $parser->parseExpression(); - $stream->consume('as'); - [$node->key, $node->value, $node->byRef] = $parser->parseForeach(); - } - - - public function print(PrintContext $context): string - { - $content = $this->content->print($context); - $useIterator = $this->else || ($this->iterator ?? preg_match('#\$iterator\W|\Wget_defined_vars\W#', $content)); - - $code = $context->format( - "foreach (%raw as %raw) %line { %raw\n}\n", - $useIterator - ? $context->format('$iterator = $ʟ_it = new Latte\Essential\CachingIterator(%node, $ʟ_it ?? null)', $this->expression) - : $this->expression->print($context), - $this->printArgs($context), - $this->position, - $content, - ); - - if ($this->else) { - $code .= $context->format( - "if (%raw) %line { %node\n}\n", - $useIterator ? '$iterator->isEmpty()' : $context->format('empty(%node)', $this->expression), - $this->tagRanges[1] ?? null, - $this->else, - ); - } - - if ($useIterator) { - $code .= '$iterator = $ʟ_it = $ʟ_it->getParent();' . "\n"; - } - - if ( - $context->hasFeature(Feature::ScopedLoopVariables) - && !$this->byRef - && ($vars = array_merge($this->key ? $this->collectVariables($this->key) : [], $this->collectVariables($this->value))) - ) { - $backup = '$ʟ_fe_' . $context->generateId(); - $unsetList = implode(', ', array_map(fn($var) => $var->print($context), $vars)); - $restoreCode = implode('', array_map(fn($var) => $context->format("if (array_key_exists(%dump, $backup)) { %node = &{$backup}[%0.dump]; }\n", $var->name, $var), $vars)); - $code = <<key ? $this->key->print($context) . ' => ' : '') - . ($this->byRef ? '&' : '') - . $this->value->print($context); - } - - - /** - * Recursively collects variable names from a node (handles ListNode destructuring). - * @return VariableNode[] - */ - private function collectVariables(ExpressionNode|ListNode $node): array - { - $res = []; - if ($node instanceof VariableNode && is_string($node->name)) { - $res[] = $node; - } elseif ($node instanceof ListNode) { - foreach ($node->items as $item) { - $res = array_merge($res, $item ? $this->collectVariables($item->value) : []); - } - } - return $res; - } - - - public function &getIterator(): \Generator - { - yield $this->expression; - if ($this->key) { - yield $this->key; - } - yield $this->value; - yield $this->content; - if ($this->else) { - yield $this->else; - } - } - - - /** - * Pass: checks if foreach overrides template variables. - */ - public static function overwrittenVariablesPass(TemplateNode $node): void - { - $vars = []; - (new NodeTraverser)->traverse($node, function (Node $node) use (&$vars) { - if ($node instanceof self && $node->checkArgs) { - foreach ([$node->key, $node->value] as $var) { - if ($var instanceof VariableNode && is_string($var->name)) { - $vars[$var->name][] = $node->position?->line; - } - } - } - }); - if ($vars) { - array_unshift($node->head->children, new AuxiliaryNode(fn(PrintContext $context) => $context->format( - <<<'XX' - if (!$this->getReferringTemplate() || $this->getReferenceType() === 'extends') { - foreach (array_intersect_key(%dump, $this->params) as $ʟ_v => $ʟ_l) { - trigger_error("Variable \$$ʟ_v overwritten in foreach on line $ʟ_l"); - } - } - - XX, - array_map(fn($l) => implode(', ', $l), $vars), - ))); - } - } -} diff --git a/generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/IfChangedNode.php b/generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/IfChangedNode.php deleted file mode 100644 index 6987ea5..0000000 --- a/generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/IfChangedNode.php +++ /dev/null @@ -1,137 +0,0 @@ -, array{AreaNode, ?Tag}, static> */ - public static function create(Tag $tag): \Generator - { - $node = $tag->node = new static; - $node->conditions = $tag->parser->parseArguments(); - - [$node->then, $nextTag] = yield ['else']; - if ($nextTag?->name === 'else') { - [$node->else] = yield; - } - - return $node; - } - - - public function print(PrintContext $context): string - { - return $this->conditions->items - ? $this->printExpression($context) - : $this->printCapturing($context); - } - - - private function printExpression(PrintContext $context): string - { - return $this->else - ? $context->format( - <<<'XX' - if (($ʟ_loc[%dump] ?? null) !== ($ʟ_tmp = %node)) { - $ʟ_loc[%0.dump] = $ʟ_tmp; - %node - } else %line { - %node - } - - - XX, - $context->generateId(), - $this->conditions, - $this->then, - $this->tagRanges[1] ?? null, - $this->else, - ) - : $context->format( - <<<'XX' - if (($ʟ_loc[%dump] ?? null) !== ($ʟ_tmp = %node)) { - $ʟ_loc[%0.dump] = $ʟ_tmp; - %2.node - } - - - XX, - $context->generateId(), - $this->conditions, - $this->then, - ); - } - - - private function printCapturing(PrintContext $context): string - { - return $this->else - ? $context->format( - <<<'XX' - ob_start(fn() => ''); - try %line { - %node - } finally { $ʟ_tmp = ob_get_clean(); } - if (($ʟ_loc[%dump] ?? null) !== $ʟ_tmp) { - echo $ʟ_loc[%2.dump] = $ʟ_tmp; - } else %line { - %node - } - - - XX, - $this->position, - $this->then, - $context->generateId(), - $this->tagRanges[1] ?? null, - $this->else, - ) - : $context->format( - <<<'XX' - ob_start(fn() => ''); - try %line { - %node - } finally { $ʟ_tmp = ob_get_clean(); } - if (($ʟ_loc[%dump] ?? null) !== $ʟ_tmp) { - echo $ʟ_loc[%2.dump] = $ʟ_tmp; - } - - - XX, - $this->position, - $this->then, - $context->generateId(), - ); - } - - - public function &getIterator(): \Generator - { - yield $this->conditions; - yield $this->then; - if ($this->else) { - yield $this->else; - } - } -} diff --git a/generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/IfContentNode.php b/generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/IfContentNode.php deleted file mode 100644 index dd3d5b2..0000000 --- a/generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/IfContentNode.php +++ /dev/null @@ -1,86 +0,0 @@ - ... - * Omits element if content is empty or whitespace only. - */ -class IfContentNode extends StatementNode -{ - public AreaNode $content; - public int $id; - public ElementNode $htmlElement; - public ?AreaNode $else = null; - - - /** @return \Generator, array{AreaNode, ?Tag}, static> */ - public static function create(Tag $tag, TemplateParser $parser): \Generator - { - $node = $tag->node = new static; - $node->id = $parser->generateId(); - [$node->content] = yield; - assert($tag->htmlElement !== null); - $node->htmlElement = $tag->htmlElement; - if (!$node->htmlElement->content) { - throw new CompileException("Unnecessary n:ifcontent on empty element <{$node->htmlElement->name}>", $tag->position); - } - return $node; - } - - - public function print(PrintContext $context): string - { - $saved = $this->htmlElement->content; - assert($saved !== null); - try { - $else = $this->else ?? new AuxiliaryNode(fn() => ''); - $this->htmlElement->content = new AuxiliaryNode(fn() => <<print($context)} - } finally { - \$ʟ_ifc[$this->id] = rtrim(ob_get_flush()) === ''; - } - - XX); - return << ''); - try { - {$this->content->print($context)} - } finally { - if (\$ʟ_ifc[$this->id] ?? null) { - ob_end_clean(); - {$else->print($context)} - } else { - echo ob_get_clean(); - } - } - - XX; - } finally { - $this->htmlElement->content = $saved; - } - } - - - public function &getIterator(): \Generator - { - yield $this->content; - } -} diff --git a/generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/IfNode.php b/generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/IfNode.php deleted file mode 100644 index 715d2c2..0000000 --- a/generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/IfNode.php +++ /dev/null @@ -1,182 +0,0 @@ -, array{AreaNode, ?Tag}, static> */ - public static function create(Tag $tag, TemplateParser $parser): \Generator - { - $node = $tag->node = new static; - $node->ifset = in_array($tag->name, ['ifset', 'elseifset'], strict: true); - $node->capture = !$tag->isNAttribute() && $tag->name === 'if' && $tag->parser->isEnd(); - $node->position = $tag->position; - if (!$node->capture) { - $node->condition = $node->ifset - ? self::buildCondition($tag->parser) - : $tag->parser->parseExpression(); - } - - [$node->then, $nextTag] = yield $node->capture - ? ['else'] - : ['else', 'elseif', 'elseifset']; - - if ($nextTag?->name === 'else') { - if ($nextTag->parser->stream->is('if')) { - throw new CompileException('Arguments are not allowed in {else}, did you mean {elseif}?', $nextTag->position); - } - $node->elseLine = $nextTag->position; - [$node->else, $nextTag] = yield; - - } elseif ($nextTag?->name === 'elseif' || $nextTag?->name === 'elseifset') { - if ($node->capture) { - throw new CompileException('Tag ' . $nextTag->getNotation() . ' is unexpected here.', $nextTag->position); - } - $node->else = yield from self::create($nextTag, $parser); - } - - if ($node->capture) { - assert($nextTag !== null); - $node->condition = $nextTag->parser->parseExpression(); - } - - return $node; - } - - - private static function buildCondition(TagParser $parser): ExpressionNode - { - $list = []; - do { - $block = $parser->tryConsumeTokenBeforeUnquotedString('block') ?? $parser->stream->tryConsume('#'); - $name = $parser->parseUnquotedStringOrExpression(); - $list[] = $block || $name instanceof StringNode - ? new Expression\AuxiliaryNode( - fn(PrintContext $context, ExpressionNode $name) => '$this->hasBlock(' . $context->ensureString($name, 'Block name') . ')', - [$name], - ) - : new Expression\IssetNode([$name]); - } while ($parser->stream->tryConsume(',')); - - return Expression\BinaryOpNode::nest('&&', ...$list); - } - - - public function print(PrintContext $context): string - { - return $this->capture - ? $this->printCapturing($context) - : $this->printCommon($context); - } - - - private function printCommon(PrintContext $context): string - { - if ($this->else) { - return $context->format( - ($this->else instanceof self - ? "if (%node) %line { %node } else%node\n" - : "if (%node) %line { %node } else %4.line { %3.node }\n"), - $this->condition, - $this->position, - $this->then, - $this->else, - $this->elseLine, - ); - } - return $context->format( - "if (%node) %line { %node }\n", - $this->condition, - $this->position, - $this->then, - ); - } - - - private function printCapturing(PrintContext $context): string - { - if ($this->else) { - return $context->format( - <<<'XX' - ob_start(fn() => '') %line; - try { - %node - ob_start(fn() => '') %line; - try { - %node - } finally { - $ʟ_ifB = ob_get_clean(); - } - } finally { - $ʟ_ifA = ob_get_clean(); - } - echo (%node) ? $ʟ_ifA : $ʟ_ifB %0.line; - - - XX, - $this->position, - $this->then, - $this->elseLine, - $this->else, - $this->condition, - ); - } - - return $context->format( - <<<'XX' - ob_start(fn() => '') %line; - try { - %node - } finally { - $ʟ_ifA = ob_get_clean(); - } - if (%node) %0.line { echo $ʟ_ifA; } - - XX, - $this->position, - $this->then, - $this->condition, - ); - } - - - public function &getIterator(): \Generator - { - yield $this->condition; - yield $this->then; - if ($this->else) { - yield $this->else; - } - } -} diff --git a/generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/ImportNode.php b/generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/ImportNode.php deleted file mode 100644 index 508be45..0000000 --- a/generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/ImportNode.php +++ /dev/null @@ -1,54 +0,0 @@ -expectArguments(); - $node = new static; - $node->file = $tag->parser->parseUnquotedStringOrExpression(); - $tag->parser->stream->tryConsume(','); - $node->args = $tag->parser->parseArguments(); - return $node; - } - - - public function print(PrintContext $context): string - { - return $context->format( - '$this->createTemplate(%raw, %node? + $this->params, "import")->render() %line;', - $context->ensureString($this->file, 'Template name'), - $this->args, - $this->position, - ); - } - - - public function &getIterator(): \Generator - { - yield $this->file; - yield $this->args; - } -} diff --git a/generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/IncludeBlockNode.php b/generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/IncludeBlockNode.php deleted file mode 100644 index 439312d..0000000 --- a/generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/IncludeBlockNode.php +++ /dev/null @@ -1,142 +0,0 @@ -outputMode = $tag::OutputRemoveIndentation; - - $tag->expectArguments(); - $node = new static; - $stream = $tag->parser->stream; - $tag->parser->tryConsumeTokenBeforeUnquotedString('block') ?? $stream->tryConsume('#'); - $node->name = $tag->parser->parseUnquotedStringOrExpression(); - $tokenName = $stream->peek(-1); - - if ($stream->tryConsume('from')) { - $node->from = $tag->parser->parseUnquotedStringOrExpression(); - } - - $stream->tryConsume(','); - $node->args = $tag->parser->parseArguments(); - $node->modifier = $tag->parser->parseModifier(); - - $node->parent = $tokenName->is('parent'); - if ($node->parent && $node->modifier->filters) { - throw new CompileException('Filters are not allowed in {include parent}', $tag->position); - - } elseif ($node->parent || $tokenName->is('this')) { - $item = $tag->closestTag( - [BlockNode::class, DefineNode::class], - fn($item) => ($item->node instanceof BlockNode || $item->node instanceof DefineNode) - && $item->node->block && !$item->node->block->isDynamic(), - ); - if (!$item || !($item->node instanceof BlockNode || $item->node instanceof DefineNode)) { - throw new CompileException("Cannot include $tokenName->text block outside of any block.", $tag->position); - } - - assert($item->node->block !== null); - $node->name = $item->node->block->name; - } - - $node->modifier->escape = !$node->modifier->removeFilter('noescape') && !$node->parent; - $node->blocks = &$parser->blocks; - $node->layer = $parser->blockLayer; - return $node; - } - - - public function print(PrintContext $context): string - { - $contentFilter = $this->modifier->filters - ? $context->format( - 'function ($s, $type) { $ʟ_fi = new LR\FilterInfo($type); return %modifyContent($s); }', - $this->modifier, - ) - : ($this->modifier->escape ? PhpHelpers::dump($context->getEscaper()->export()) : ''); - - return $this->from - ? $this->printBlockFrom($context, $contentFilter) - : $this->printBlock($context, $contentFilter); - } - - - private function printBlock(PrintContext $context, string $contentFilter): string - { - if ($this->name instanceof Scalar\StringNode || $this->name instanceof Scalar\IntegerNode) { - $staticName = (string) $this->name->value; - $block = ($this->layer !== null ? $this->blocks[$this->layer][$staticName] ?? null : null) ?? $this->blocks[Template::LayerLocal][$staticName] ?? null; - } - - return $context->format( - '$this->render' . ($this->parent ? 'ParentBlock' : 'Block') - . '(%raw, %node? + ' - . (isset($block) && !$block->parameters ? 'get_defined_vars()' : '[]') - . '%raw) %line;', - $context->ensureString($this->name, 'Block name'), - $this->args, - $contentFilter ? ", $contentFilter" : '', - $this->position, - ); - } - - - private function printBlockFrom(PrintContext $context, string $contentFilter): string - { - assert($this->from !== null); - return $context->format( - '$this->createTemplate(%raw, %node? + $this->params, "include")->renderToContentType(%raw, %raw) %line;', - $context->ensureString($this->from, 'Template name'), - $this->args, - $contentFilter, - $context->ensureString($this->name, 'Block name'), - $this->position, - ); - } - - - public function &getIterator(): \Generator - { - yield $this->name; - if ($this->from) { - yield $this->from; - } - yield $this->args; - yield $this->modifier; - } -} diff --git a/generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/IncludeFileNode.php b/generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/IncludeFileNode.php deleted file mode 100644 index e8f2bc8..0000000 --- a/generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/IncludeFileNode.php +++ /dev/null @@ -1,78 +0,0 @@ -outputMode = $tag::OutputRemoveIndentation; - - $tag->expectArguments(); - $node = new static; - $tag->parser->tryConsumeTokenBeforeUnquotedString('file'); - $node->file = $tag->parser->parseUnquotedStringOrExpression(); - $node->mode = 'include'; - - $stream = $tag->parser->stream; - if ($stream->tryConsume('with')) { - $stream->consume('blocks'); - $node->mode = 'includeblock'; - } - - $stream->tryConsume(','); - $node->args = $tag->parser->parseArguments(); - $node->modifier = $tag->parser->parseModifier(); - $node->modifier->escape = !$node->modifier->removeFilter('noescape'); - return $node; - } - - - public function print(PrintContext $context): string - { - return $context->format( - '$this->createTemplate(%raw, %node? + $this->params, %dump)->renderToContentType(%raw) %line;', - $context->ensureString($this->file, 'Template name'), - $this->args, - $this->mode, - $this->modifier->filters - ? $context->format( - 'function ($s, $type) { $ʟ_fi = new LR\FilterInfo($type); return %modifyContent($s); }', - $this->modifier, - ) - : PhpHelpers::dump($this->modifier->escape ? $context->getEscaper()->export() : null), - $this->position, - ); - } - - - public function &getIterator(): \Generator - { - yield $this->file; - yield $this->args; - yield $this->modifier; - } -} diff --git a/generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/IterateWhileNode.php b/generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/IterateWhileNode.php deleted file mode 100644 index be7e381..0000000 --- a/generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/IterateWhileNode.php +++ /dev/null @@ -1,96 +0,0 @@ -, array{AreaNode, ?Tag}, static> */ - public static function create(Tag $tag): \Generator - { - $foreach = $tag->closestTag([ForeachNode::class])?->node; - if (!$foreach instanceof ForeachNode) { - throw new CompileException("Tag {{$tag->name}} must be inside {foreach} ... {/foreach}.", $tag->position); - } - - $node = $tag->node = new static; - $node->postTest = $tag->parser->isEnd(); - if (!$node->postTest) { - $node->condition = $tag->parser->parseExpression(); - } - - $node->key = $foreach->key; - $node->value = $foreach->value; - [$node->content, $nextTag] = yield; - if ($node->postTest) { - assert($nextTag !== null); - $nextTag->expectArguments(); - $node->condition = $nextTag->parser->parseExpression(); - } - - return $node; - } - - - public function print(PrintContext $context): string - { - $stmt = $context->format( - <<<'XX' - if (!$iterator->hasNext() || !(%node)) { - break; - } - $iterator->next(); - [%node, %node] = [$iterator->key(), $iterator->current()]; - XX, - $this->condition, - $this->key, - $this->value, - ); - - $stmt = $this->postTest - ? $this->content->print($context) . "\n" . $stmt - : $stmt . "\n" . $this->content->print($context); - - return $context->format( - <<<'XX' - do %line { - %raw - } while (true); - - XX, - $this->position, - $stmt, - ); - } - - - public function &getIterator(): \Generator - { - yield $this->condition; - yield $this->content; - } -} diff --git a/generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/JumpNode.php b/generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/JumpNode.php deleted file mode 100644 index 94a1963..0000000 --- a/generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/JumpNode.php +++ /dev/null @@ -1,84 +0,0 @@ -counter. - */ -class JumpNode extends StatementNode -{ - public string $type; - public ExpressionNode $condition; - - - public static function create(Tag $tag): static - { - $tag->expectArguments(); - $tag->outputMode = $tag->name === 'exitIf' // to not be in prepare() - ? $tag::OutputRemoveIndentation - : $tag::OutputNone; - - for ( - $parent = $tag->parent; - $parent?->node instanceof IfNode || $parent?->node instanceof IfContentNode; - $parent = $parent->parent - ); - $pnode = $parent?->node; - if (!match ($tag->name) { - 'breakIf', 'continueIf' => $pnode instanceof ForNode || $pnode instanceof ForeachNode || $pnode instanceof WhileNode, - 'skipIf' => $pnode instanceof ForeachNode, - 'exitIf' => !$pnode || $pnode instanceof BlockNode || $pnode instanceof DefineNode, - }) { - throw new CompileException("Tag {{$tag->name}} is unexpected here.", $tag->position); - } - - $last = $parent?->prefix === Tag::PrefixNone - ? $parent->htmlElement?->parent - : $parent?->htmlElement; - $el = $tag->htmlElement; - while ($el && $el !== $last) { - $el->breakable = true; - $el = $el->parent; - } - - $node = new static; - $node->type = $tag->name; - $node->condition = $tag->parser->parseExpression(); - return $node; - } - - - public function print(PrintContext $context): string - { - return $context->format( - "if (%node) %line %raw\n", - $this->condition, - $this->position, - match ($this->type) { - 'breakIf' => 'break;', - 'continueIf' => 'continue;', - 'skipIf' => '{ $iterator->skipRound(); continue; }', - 'exitIf' => 'return;', - }, - ); - } - - - public function &getIterator(): \Generator - { - yield $this->condition; - } -} diff --git a/generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/NAttrNode.php b/generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/NAttrNode.php deleted file mode 100644 index 6d3a1c6..0000000 --- a/generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/NAttrNode.php +++ /dev/null @@ -1,93 +0,0 @@ - $class, id => $id"> - */ -final class NAttrNode extends StatementNode -{ - public ArrayNode $args; - - - public static function create(Tag $tag): static - { - $tag->expectArguments(); - $node = new static; - $node->args = $tag->parser->parseArguments(); - return $node; - } - - - public function print(PrintContext $context): string - { - return $context->format( - '$ʟ_tmp = %node; - echo %raw::attrs($ʟ_tmp, %dump, %dump?) %line;', - $this->args, - self::class, - $context->getEscaper()->getContentType() === Latte\ContentType::Xml, - $context->hasFeature(Latte\Feature::MigrationWarnings) ?: null, - $this->position, - ); - } - - - public static function attrs(mixed $attrs, bool $xml, bool $migrationWarnings = false): string - { - $attrs = $attrs === [$attrs[0] ?? null] ? $attrs[0] : $attrs; // checks if the value is an array, e.g. n:attr="$attrs" - if (!is_array($attrs)) { - return ''; - } - - $res = ''; - foreach ($attrs as $name => $value) { - $attr = $xml ? self::formatXmlAttribute($name, $value) : self::formatHtmlAttribute($name, $value, $migrationWarnings); - $res .= $attr ? ' ' . $attr : ''; - } - - return $res; - } - - - public static function formatHtmlAttribute(mixed $name, mixed $value, bool $migrationWarnings = false): string - { - LR\HtmlHelpers::validateAttributeName($name); - $type = LR\HtmlHelpers::classifyAttributeType($name); - if ($value === null || ($value === false && $type !== 'data' && $type !== 'aria')) { - return ''; - } elseif ($value === true && $type === '') { - return $name; - } elseif ($migrationWarnings && is_array($value) && $type === 'data') { - LR\HtmlHelpers::triggerMigrationWarning($name, "array value: previously it rendered as $name=\"val1 val2 ...\", now the attribute is JSON-encoded"); - } - return LR\HtmlHelpers::{"format{$type}Attribute"}($name, $value, $migrationWarnings); - } - - - public static function formatXmlAttribute(mixed $name, mixed $value): string - { - LR\XmlHelpers::validateAttributeName($name); - return $value === false ? '' : LR\XmlHelpers::formatAttribute($name, $value); - } - - - public function &getIterator(): \Generator - { - yield $this->args; - } -} diff --git a/generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/NClassNode.php b/generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/NClassNode.php deleted file mode 100644 index 10993c7..0000000 --- a/generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/NClassNode.php +++ /dev/null @@ -1,53 +0,0 @@ - - */ -final class NClassNode extends StatementNode -{ - public ArrayNode $args; - - - public static function create(Tag $tag): static - { - assert($tag->htmlElement !== null); - if ($tag->htmlElement->getAttribute('class')) { - throw new CompileException('It is not possible to combine class with n:class.', $tag->position); - } - - $tag->expectArguments(); - $node = new static; - $node->args = $tag->parser->parseArguments(); - return $node; - } - - - public function print(PrintContext $context): string - { - return $context->format( - 'echo ($ʟ_tmp = array_filter(%node)) ? \' class="\' . LR\HtmlHelpers::escapeAttr(implode(" ", array_unique($ʟ_tmp))) . \'"\' : "" %line;', - $this->args, - $this->position, - ); - } - - - public function &getIterator(): \Generator - { - yield $this->args; - } -} diff --git a/generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/NElseNode.php b/generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/NElseNode.php deleted file mode 100644 index ae38280..0000000 --- a/generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/NElseNode.php +++ /dev/null @@ -1,123 +0,0 @@ - ...
- *
...
- */ -final class NElseNode extends StatementNode -{ - public AreaNode $content; - public ?ExpressionNode $condition = null; - - - /** @return \Generator, array{AreaNode, ?Tag}, static> */ - public static function create(Tag $tag): \Generator - { - $node = $tag->node = new static; - if ($tag->name === 'elseif') { - $tag->expectArguments(); - $node->condition = $tag->parser->parseExpression(); - } - [$node->content] = yield; - return $node; - } - - - public function print(PrintContext $context): string - { - throw new \LogicException('Cannot directly print'); - } - - - public function &getIterator(): \Generator - { - if ($this->condition) { - yield $this->condition; - } - yield $this->content; - } - - - public static function processPass(Node $node): void - { - (new NodeTraverser)->traverse($node, function (Node $node) { - if ($node instanceof Nodes\FragmentNode) { - $node->children = self::processFragment($node->children); - } elseif ($node instanceof self) { - self::processFragment([$node]); - } - }); - } - - - /** - * @param AreaNode[] $children - * @return AreaNode[] - */ - private static function processFragment(array $children): array - { - $currentNode = null; - for ($i = 0; isset($children[$i]); $i++) { - $child = $children[$i]; - - if ($child instanceof IfNode - || $child instanceof ForeachNode - || $child instanceof TryNode - || $child instanceof IfChangedNode - || $child instanceof IfContentNode - ) { - $currentNode = $child; - - } elseif ($child instanceof Nodes\TextNode && trim($child->content) === '') { - continue; - - } elseif ($child instanceof self) { - $nElse = $child; - if ($currentNode === null) { - throw new CompileException('n:else must be immediately after n:if, n:foreach etc', $nElse->position); - } elseif ($currentNode->else) { - throw new CompileException('Multiple "else" found.', $nElse->position); - } - - if ($nElse->condition) { - $elseIfNode = new IfNode; - $elseIfNode->condition = $nElse->condition; - $elseIfNode->then = $nElse->content; - $elseIfNode->position = $nElse->position; - $currentNode->else = $elseIfNode; - $currentNode = $elseIfNode; - } else { - $currentNode->else = $nElse->content; - $currentNode = null; - } - - unset($children[$i]); - for ($o = 1; ($children[$i - $o] ?? null) instanceof Nodes\TextNode; $o++) { - unset($children[$i - $o]); - } - } else { - $currentNode = null; - } - } - - return array_values($children); - } -} diff --git a/generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/NTagNode.php b/generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/NTagNode.php deleted file mode 100644 index bace13b..0000000 --- a/generated/php/vendor/latte/latte/src/Latte/Essential/Nodes/NTagNode.php +++ /dev/null @@ -1,47 +0,0 @@ - - */ -final class NTagNode extends StatementNode -{ - public static function create(Tag $tag): void - { - assert($tag->htmlElement !== null); - if (preg_match('(style$|script$)iA', $tag->htmlElement->name)) { - throw new CompileException('Attribute n:tag is not allowed in - - - -
- {@render children?.()} -
diff --git a/generated/ui/alert/Alert.vue b/generated/ui/alert/Alert.vue deleted file mode 100644 index d8d0681..0000000 --- a/generated/ui/alert/Alert.vue +++ /dev/null @@ -1,31 +0,0 @@ - - - - - diff --git a/generated/ui/alert/alert.shared.ts b/generated/ui/alert/alert.shared.ts deleted file mode 100644 index 38af0d6..0000000 --- a/generated/ui/alert/alert.shared.ts +++ /dev/null @@ -1,26 +0,0 @@ -// Code generated by @ui8kit/codegen. DO NOT EDIT. -// ui.alert — shared TypeScript contract (types + classes helpers) - -import { cn, composeRecipe, type RecipeKey } from "../../utils"; -import alertRecipeJson from "./alert.variants.json"; - -export const alertRecipe = alertRecipeJson; - -export type AlertVariant = RecipeKey; - -/** Alert renders a div with alert or status semantics. */ -export type AlertBaseProps = { - variant?: AlertVariant; - role?: "status" | "alert"; - ariaLive?: "off" | "polite" | "assertive"; -}; - -export type AlertClassesInput = { - variant?: AlertVariant; - className?: string; -}; - -/** Compose Alert classes without rendering — the cross-runtime `asChild` substitute. */ -export function alertClasses(input: AlertClassesInput = {}): string { - return cn(composeRecipe(alertRecipe, { variant: input.variant }), input.className); -} diff --git a/generated/ui/alert/alert.solid.tsx b/generated/ui/alert/alert.solid.tsx deleted file mode 100644 index b843276..0000000 --- a/generated/ui/alert/alert.solid.tsx +++ /dev/null @@ -1,31 +0,0 @@ -// Code generated by @ui8kit/codegen. DO NOT EDIT. -/** - * Alert displays a static status or informational message. - * Renders a live region with role=status by default; children carry the message body. - */ - -import { splitProps, type JSX, type Component } from "solid-js"; -import { alertClasses, type AlertVariant } from "./alert.shared"; -import { defaultIfEmpty, oneOfOr } from "../../utils/expr"; - -/** - * Alert renders a div with alert or status semantics. - */ -export type AlertProps = Omit, "class" | "className" | "children" | "variant" | "role" | "aria-live"> & { - variant?: AlertVariant; - role?: "status" | "alert"; - "aria-live"?: "off" | "polite" | "assertive"; - class?: string; - className?: string; - children?: JSX.Element; -}; - -export const Alert: Component = (props) => { - const [local, rest] = splitProps(props, ["variant", "role", "aria-live", "class", "className", "children"]); - const cls = () => alertClasses({ variant: local.variant, className: local.class ?? local.className }); - return ( -
- {local.children} -
- ); -}; diff --git a/generated/ui/alert/alert.templ b/generated/ui/alert/alert.templ deleted file mode 100644 index db58c2b..0000000 --- a/generated/ui/alert/alert.templ +++ /dev/null @@ -1,45 +0,0 @@ -// Code generated by @ui8kit/codegen. DO NOT EDIT. - -/* -Alert displays a static status or informational message. -Renders a live region with role=status by default; children carry the message body. -*/ - -package alert - -import ( - uiutils "github.com/ui8kit/ui/utils" -) - -// AlertProps configures Alert. -type AlertProps struct { - // Class — adds Tailwind utilities - Class string - // Variant — default, destructive, or wireframe preset - Variant string - // Role — status or alert (defaults to status) - Role string - // AriaLive — polite or assertive (defaults to polite) - AriaLive string - Attrs templ.Attributes -} - -// AlertClasses composes Alert classes without rendering — -// the server-composition escape hatch for custom root elements. -func AlertClasses(p AlertProps) string { - return uiutils.Compose(AlertVariants, map[string]string{ - "variant": p.Variant, - }, p.Class) -} - -// Alert renders the Alert contract. -templ Alert(p AlertProps) { -
- { children... } -
-} diff --git a/generated/ui/alert/alert.tsx b/generated/ui/alert/alert.tsx deleted file mode 100644 index 40c8e19..0000000 --- a/generated/ui/alert/alert.tsx +++ /dev/null @@ -1,42 +0,0 @@ -// Code generated by @ui8kit/codegen. DO NOT EDIT. -/** - * Alert displays a static status or informational message. - * Renders a live region with role=status by default; children carry the message body. - */ - -import { forwardRef, type ReactNode, type HTMLAttributes } from "react"; -import { alertClasses, type AlertVariant } from "./alert.shared"; -import { defaultIfEmpty, oneOfOr } from "../../utils/expr"; -import { Slot } from "../slot/slot"; - -/** - * Alert renders a div with alert or status semantics. - */ -export type AlertProps = Omit, "className" | "children" | "variant" | "role" | "aria-live"> & { - variant?: AlertVariant; - role?: "status" | "alert"; - "aria-live"?: "off" | "polite" | "assertive"; - className?: string; - children?: ReactNode; - asChild?: boolean; -}; - -export const Alert = forwardRef(function Alert( - { variant, role, "aria-live": ariaLive, className, children, asChild, ...rest }, - ref -) { - const cls = alertClasses({ variant, className }); - if (asChild) { - return ( - - {children} - - ); - } - return ( -
- {children} -
- ); -}); -Alert.displayName = "Alert"; diff --git a/generated/ui/alert/alert.variants.json b/generated/ui/alert/alert.variants.json deleted file mode 100644 index 5dc65a8..0000000 --- a/generated/ui/alert/alert.variants.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "$schema": "../../schemas/variants.schema.json", - "id": "ui.alert", - "base": "rounded-lg border px-4 py-3 shadow-sm outline-none ring-offset-background gap-6", - "keys": [ - "variant" - ], - "defaults": { - "variant": "default" - }, - "byKey": { - "variant": { - "default": "bg-card text-card-foreground", - "destructive": "border-destructive bg-destructive/10 text-destructive", - "success": "border-primary bg-primary/10 text-primary", - "warning": "border-border bg-accent text-accent-foreground" - } - } -} diff --git a/generated/ui/alert/alert_gen.go b/generated/ui/alert/alert_gen.go deleted file mode 100644 index 987c1ff..0000000 --- a/generated/ui/alert/alert_gen.go +++ /dev/null @@ -1,15 +0,0 @@ -// Code generated by @ui8kit/codegen. DO NOT EDIT. - -package alert - -import ( - _ "embed" - - uiutils "github.com/ui8kit/ui/utils" -) - -//go:embed alert.variants.json -var alertVariantsJSON []byte - -// AlertVariants is the CVA recipe shared verbatim by all runtimes. -var AlertVariants = uiutils.MustParseVariantRecipe(alertVariantsJSON).ToVariants() diff --git a/generated/ui/alert/alert_templ.go b/generated/ui/alert/alert_templ.go deleted file mode 100644 index 7e6e31e..0000000 --- a/generated/ui/alert/alert_templ.go +++ /dev/null @@ -1,139 +0,0 @@ -// Code generated by templ - DO NOT EDIT. - -// templ: version: v0.3.1001 -// Code generated by @ui8kit/codegen. DO NOT EDIT. - -/* - - -Alert displays a static status or informational message. - - -Renders a live region with role=status by default; children carry the message body. - - -*/ - -package alert - -//lint:file-ignore SA4006 This context is only used if a nested component is present. - -import "github.com/a-h/templ" -import templruntime "github.com/a-h/templ/runtime" - -import ( - uiutils "github.com/fastygo/sezonmarket/internal/utils" -) - -// AlertProps configures Alert. -type AlertProps struct { - // Class — adds Tailwind utilities - Class string - // Variant — default, destructive, or wireframe preset - Variant string - // Role — status or alert (defaults to status) - Role string - // AriaLive — polite or assertive (defaults to polite) - AriaLive string - Attrs templ.Attributes -} - -// AlertClasses composes Alert classes without rendering — -// the server-composition escape hatch for custom root elements. -func AlertClasses(p AlertProps) string { - return uiutils.Compose(AlertVariants, map[string]string{ - "variant": p.Variant, - }, p.Class) -} - -// Alert renders the Alert contract. -func Alert(p AlertProps) templ.Component { - return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { - templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context - if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil { - return templ_7745c5c3_CtxErr - } - templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) - if !templ_7745c5c3_IsBuffer { - defer func() { - templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) - if templ_7745c5c3_Err == nil { - templ_7745c5c3_Err = templ_7745c5c3_BufErr - } - }() - } - ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var1 := templ.GetChildren(ctx) - if templ_7745c5c3_Var1 == nil { - templ_7745c5c3_Var1 = templ.NopComponent - } - ctx = templ.ClearChildren(ctx) - var templ_7745c5c3_Var2 = []any{AlertClasses(p)} - templ_7745c5c3_Err = templ.RenderCSSItems(ctx, templ_7745c5c3_Buffer, templ_7745c5c3_Var2...) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 1, "
") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templ_7745c5c3_Var1.Render(ctx, templ_7745c5c3_Buffer) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 6, "
") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - return nil - }) -} - -var _ = templruntime.GeneratedTemplate diff --git a/generated/ui/badge/Badge.html.twig b/generated/ui/badge/Badge.html.twig deleted file mode 100644 index 8c6f2b8..0000000 --- a/generated/ui/badge/Badge.html.twig +++ /dev/null @@ -1,3 +0,0 @@ -{# Code generated by @ui8kit/codegen. DO NOT EDIT. #} -{# ui.badge — Badge renders label text in a div wrapper. #} -{{ children|default('')|raw }}
diff --git a/generated/ui/badge/Badge.latte b/generated/ui/badge/Badge.latte deleted file mode 100644 index 9c96ac8..0000000 --- a/generated/ui/badge/Badge.latte +++ /dev/null @@ -1,13 +0,0 @@ -{* Code generated by @ui8kit/codegen. DO NOT EDIT. *} -{* ui.badge — Badge renders label text in a div wrapper. *} -{parameters - string $variant = '', - string $size = '', - string $class = '', - array $attrs = [], - string $children = '', -} -
{$children|noescape}
diff --git a/generated/ui/badge/Badge.svelte b/generated/ui/badge/Badge.svelte deleted file mode 100644 index 753d26f..0000000 --- a/generated/ui/badge/Badge.svelte +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - -
- {@render children?.()} -
diff --git a/generated/ui/badge/Badge.vue b/generated/ui/badge/Badge.vue deleted file mode 100644 index 7cce036..0000000 --- a/generated/ui/badge/Badge.vue +++ /dev/null @@ -1,29 +0,0 @@ - - - - - diff --git a/generated/ui/badge/badge.shared.ts b/generated/ui/badge/badge.shared.ts deleted file mode 100644 index 53de78d..0000000 --- a/generated/ui/badge/badge.shared.ts +++ /dev/null @@ -1,27 +0,0 @@ -// Code generated by @ui8kit/codegen. DO NOT EDIT. -// ui.badge — shared TypeScript contract (types + classes helpers) - -import { cn, composeRecipe, type RecipeKey } from "../../utils"; -import badgeRecipeJson from "./badge.variants.json"; - -export const badgeRecipe = badgeRecipeJson; - -export type BadgeVariant = RecipeKey; -export type BadgeSize = RecipeKey; - -/** Badge renders label text in a div wrapper. */ -export type BadgeBaseProps = { - variant?: BadgeVariant; - size?: BadgeSize; -}; - -export type BadgeClassesInput = { - variant?: BadgeVariant; - size?: BadgeSize; - className?: string; -}; - -/** Compose Badge classes without rendering — the cross-runtime `asChild` substitute. */ -export function badgeClasses(input: BadgeClassesInput = {}): string { - return cn(composeRecipe(badgeRecipe, { variant: input.variant, size: input.size }), input.className); -} diff --git a/generated/ui/badge/badge.solid.tsx b/generated/ui/badge/badge.solid.tsx deleted file mode 100644 index d06459a..0000000 --- a/generated/ui/badge/badge.solid.tsx +++ /dev/null @@ -1,29 +0,0 @@ -// Code generated by @ui8kit/codegen. DO NOT EDIT. -/** - * Badge shows a short status label. - * Badge uses variant and size presets. - */ - -import { splitProps, type JSX, type Component } from "solid-js"; -import { badgeClasses, type BadgeSize, type BadgeVariant } from "./badge.shared"; - -/** - * Badge renders label text in a div wrapper. - */ -export type BadgeProps = Omit, "class" | "className" | "children" | "variant" | "size"> & { - variant?: BadgeVariant; - size?: BadgeSize; - class?: string; - className?: string; - children?: JSX.Element; -}; - -export const Badge: Component = (props) => { - const [local, rest] = splitProps(props, ["variant", "size", "class", "className", "children"]); - const cls = () => badgeClasses({ variant: local.variant, size: local.size, className: local.class ?? local.className }); - return ( -
- {local.children} -
- ); -}; diff --git a/generated/ui/badge/badge.templ b/generated/ui/badge/badge.templ deleted file mode 100644 index e253de1..0000000 --- a/generated/ui/badge/badge.templ +++ /dev/null @@ -1,42 +0,0 @@ -// Code generated by @ui8kit/codegen. DO NOT EDIT. - -/* -Badge shows a short status label. -Badge uses variant and size presets. -*/ - -package badge - -import ( - uiutils "github.com/ui8kit/ui/utils" -) - -// BadgeProps configures Badge. -type BadgeProps struct { - // Variant — color preset: default, secondary, destructive, outline - Variant string - // Size — density preset: default, sm, lg - Size string - // Class — adds Tailwind utilities - Class string - Attrs templ.Attributes -} - -// BadgeClasses composes Badge classes without rendering — -// the server-composition escape hatch for custom root elements. -func BadgeClasses(p BadgeProps) string { - return uiutils.Compose(BadgeVariants, map[string]string{ - "variant": p.Variant, - "size": p.Size, - }, p.Class) -} - -// Badge renders the Badge contract. -templ Badge(p BadgeProps) { -
- { children... } -
-} diff --git a/generated/ui/badge/badge.tsx b/generated/ui/badge/badge.tsx deleted file mode 100644 index d9ad56c..0000000 --- a/generated/ui/badge/badge.tsx +++ /dev/null @@ -1,31 +0,0 @@ -// Code generated by @ui8kit/codegen. DO NOT EDIT. -/** - * Badge shows a short status label. - * Badge uses variant and size presets. - */ - -import { forwardRef, type ReactNode, type HTMLAttributes } from "react"; -import { badgeClasses, type BadgeSize, type BadgeVariant } from "./badge.shared"; - -/** - * Badge renders label text in a div wrapper. - */ -export type BadgeProps = Omit, "className" | "children" | "variant" | "size"> & { - variant?: BadgeVariant; - size?: BadgeSize; - className?: string; - children?: ReactNode; -}; - -export const Badge = forwardRef(function Badge( - { variant, size, className, children, ...rest }, - ref -) { - const cls = badgeClasses({ variant, size, className }); - return ( -
- {children} -
- ); -}); -Badge.displayName = "Badge"; diff --git a/generated/ui/badge/badge.variants.json b/generated/ui/badge/badge.variants.json deleted file mode 100644 index b1e4017..0000000 --- a/generated/ui/badge/badge.variants.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "$schema": "../../schemas/variants.schema.json", - "base": "inline-flex items-center rounded-full border px-2 py-1 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2", - "byKey": { - "size": { - "default": "px-2 py-1 text-xs", - "lg": "px-3 py-1 text-sm", - "sm": "px-2 py-1 text-xs" - }, - "variant": { - "default": "border-transparent bg-primary text-primary-foreground hover:bg-primary/80", - "destructive": "border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80", - "outline": "text-foreground", - "secondary": "border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80" - } - }, - "defaults": { - "size": "default", - "variant": "default" - }, - "id": "ui.badge", - "keys": [ - "variant", - "size" - ] -} diff --git a/generated/ui/badge/badge_gen.go b/generated/ui/badge/badge_gen.go deleted file mode 100644 index 4b9ec63..0000000 --- a/generated/ui/badge/badge_gen.go +++ /dev/null @@ -1,15 +0,0 @@ -// Code generated by @ui8kit/codegen. DO NOT EDIT. - -package badge - -import ( - _ "embed" - - uiutils "github.com/ui8kit/ui/utils" -) - -//go:embed badge.variants.json -var badgeVariantsJSON []byte - -// BadgeVariants is the CVA recipe shared verbatim by all runtimes. -var BadgeVariants = uiutils.MustParseVariantRecipe(badgeVariantsJSON).ToVariants() diff --git a/generated/ui/badge/badge_templ.go b/generated/ui/badge/badge_templ.go deleted file mode 100644 index 81227ea..0000000 --- a/generated/ui/badge/badge_templ.go +++ /dev/null @@ -1,112 +0,0 @@ -// Code generated by templ - DO NOT EDIT. - -// templ: version: v0.3.1001 -// Code generated by @ui8kit/codegen. DO NOT EDIT. - -/* - - -Badge shows a short status label. - - -Badge uses variant and size presets. - - -*/ - -package badge - -//lint:file-ignore SA4006 This context is only used if a nested component is present. - -import "github.com/a-h/templ" -import templruntime "github.com/a-h/templ/runtime" - -import ( - uiutils "github.com/fastygo/sezonmarket/internal/utils" -) - -// BadgeProps configures Badge. -type BadgeProps struct { - // Variant — color preset: default, secondary, destructive, outline - Variant string - // Size — density preset: default, sm, lg - Size string - // Class — adds Tailwind utilities - Class string - Attrs templ.Attributes -} - -// BadgeClasses composes Badge classes without rendering — -// the server-composition escape hatch for custom root elements. -func BadgeClasses(p BadgeProps) string { - return uiutils.Compose(BadgeVariants, map[string]string{ - "variant": p.Variant, - "size": p.Size, - }, p.Class) -} - -// Badge renders the Badge contract. -func Badge(p BadgeProps) templ.Component { - return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { - templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context - if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil { - return templ_7745c5c3_CtxErr - } - templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) - if !templ_7745c5c3_IsBuffer { - defer func() { - templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) - if templ_7745c5c3_Err == nil { - templ_7745c5c3_Err = templ_7745c5c3_BufErr - } - }() - } - ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var1 := templ.GetChildren(ctx) - if templ_7745c5c3_Var1 == nil { - templ_7745c5c3_Var1 = templ.NopComponent - } - ctx = templ.ClearChildren(ctx) - var templ_7745c5c3_Var2 = []any{BadgeClasses(p)} - templ_7745c5c3_Err = templ.RenderCSSItems(ctx, templ_7745c5c3_Buffer, templ_7745c5c3_Var2...) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 1, "
") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templ_7745c5c3_Var1.Render(ctx, templ_7745c5c3_Buffer) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 4, "
") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - return nil - }) -} - -var _ = templruntime.GeneratedTemplate diff --git a/generated/ui/block/Block.html.twig b/generated/ui/block/Block.html.twig deleted file mode 100644 index a8394d1..0000000 --- a/generated/ui/block/Block.html.twig +++ /dev/null @@ -1,4 +0,0 @@ -{# Code generated by @ui8kit/codegen. DO NOT EDIT. #} -{# ui.block — Block renders a resolved landmark element with children. #} -{% set uiTag = ui8kit_resolve_tag((tag|default('')), 'div', 'Layout') %} -<{{ uiTag }}{{ ui8kit_attr_str({ 'class': ui8kit_or_null(ui8kit_classes('blockClasses', { 'class': (class|default('')) })), 'id': ui8kit_or_null((id|default(''))) }, attrs|default({})) }}>{{ children|default('')|raw }} diff --git a/generated/ui/block/Block.latte b/generated/ui/block/Block.latte deleted file mode 100644 index 72a85dd..0000000 --- a/generated/ui/block/Block.latte +++ /dev/null @@ -1,15 +0,0 @@ -{* Code generated by @ui8kit/codegen. DO NOT EDIT. *} -{* ui.block — Block renders a resolved landmark element with children. *} -{parameters - string $id = '', - string $class = '', - string $tag = '', - array $attrs = [], - string $children = '', -} -{var $uiTag = \UI8Kit\Rt::resolveTag($tag, 'div', 'Layout')} -
{$children|noescape}
diff --git a/generated/ui/block/Block.svelte b/generated/ui/block/Block.svelte deleted file mode 100644 index f2cd77a..0000000 --- a/generated/ui/block/Block.svelte +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - {@render children?.()} - diff --git a/generated/ui/block/Block.vue b/generated/ui/block/Block.vue deleted file mode 100644 index 9096837..0000000 --- a/generated/ui/block/Block.vue +++ /dev/null @@ -1,30 +0,0 @@ - - - - - diff --git a/generated/ui/block/block.shared.ts b/generated/ui/block/block.shared.ts deleted file mode 100644 index 8b12705..0000000 --- a/generated/ui/block/block.shared.ts +++ /dev/null @@ -1,21 +0,0 @@ -// Code generated by @ui8kit/codegen. DO NOT EDIT. -// ui.block — shared TypeScript contract (types + classes helpers) - -import { cn, composeRecipe } from "../../utils"; -import blockRecipeJson from "./block.variants.json"; - -export const blockRecipe = blockRecipeJson; - -/** Block renders a resolved landmark element with children. */ -export type BlockBaseProps = { - tag?: string; -}; - -export type BlockClassesInput = { - className?: string; -}; - -/** Compose Block classes without rendering — the cross-runtime `asChild` substitute. */ -export function blockClasses(input: BlockClassesInput = {}): string { - return cn(composeRecipe(blockRecipe, { }), input.className); -} diff --git a/generated/ui/block/block.solid.tsx b/generated/ui/block/block.solid.tsx deleted file mode 100644 index 0224f02..0000000 --- a/generated/ui/block/block.solid.tsx +++ /dev/null @@ -1,31 +0,0 @@ -// Code generated by @ui8kit/codegen. DO NOT EDIT. -/** - * Block is a top-level page landmark (main, header, section, nav, …). - * Use for document structure; do not nest Block inside Block. - */ - -import { splitProps, type JSX, type Component } from "solid-js"; -import { Dynamic } from "solid-js/web"; -import { blockClasses } from "./block.shared"; -import { resolveTag, TagGroup } from "../../utils/tags"; - -/** - * Block renders a resolved landmark element with children. - */ -export type BlockProps = Omit, "class" | "className" | "children" | "tag"> & { - tag?: string; - class?: string; - className?: string; - children?: JSX.Element; -}; - -export const Block: Component = (props) => { - const [local, rest] = splitProps(props, ["tag", "class", "className", "children"]); - const resolvedTagValue = () => resolveTag(local.tag, "div", TagGroup.Layout); - const cls = () => blockClasses({ className: local.class ?? local.className }); - return ( - - {local.children} - - ); -}; diff --git a/generated/ui/block/block.templ b/generated/ui/block/block.templ deleted file mode 100644 index 730d2cb..0000000 --- a/generated/ui/block/block.templ +++ /dev/null @@ -1,144 +0,0 @@ -// Code generated by @ui8kit/codegen. DO NOT EDIT. - -/* -Block is a top-level page landmark (main, header, section, nav, …). -Use for document structure; do not nest Block inside Block. -*/ - -package block - -import ( - uiutils "github.com/ui8kit/ui/utils" -) - -// BlockProps configures Block. -type BlockProps struct { - ID string - // Class — adds Tailwind utilities - Class string - // Tag — semantic landmark: main, header, section, footer, nav, article, aside, figure - Tag string - Attrs templ.Attributes -} - -// BlockClasses composes Block classes without rendering — -// the server-composition escape hatch for custom root elements. -func BlockClasses(p BlockProps) string { - return uiutils.Compose(BlockVariants, map[string]string{}, p.Class) -} - -// Block renders the Block contract. -templ Block(p BlockProps) { - switch uiutils.ResolveTag(p.Tag, "div", uiutils.TagGroupLayout) { - case "section": -
- { children... } -
- case "article": -
- { children... } -
- case "aside": - - case "header": -
- { children... } -
- case "footer": -
- { children... } -
- case "main": -
- { children... } -
- case "nav": - - case "figure": -
- { children... } -
- case "search": - - { children... } - - case "hgroup": -
- { children... } -
- default: -
- { children... } -
- } -} diff --git a/generated/ui/block/block.tsx b/generated/ui/block/block.tsx deleted file mode 100644 index 649b6eb..0000000 --- a/generated/ui/block/block.tsx +++ /dev/null @@ -1,42 +0,0 @@ -// Code generated by @ui8kit/codegen. DO NOT EDIT. -/** - * Block is a top-level page landmark (main, header, section, nav, …). - * Use for document structure; do not nest Block inside Block. - */ - -import { forwardRef, type ReactNode, type HTMLAttributes, type ElementType, type Ref } from "react"; -import { blockClasses } from "./block.shared"; -import { resolveTag, TagGroup } from "../../utils/tags"; -import { Slot } from "../slot/slot"; - -/** - * Block renders a resolved landmark element with children. - */ -export type BlockProps = Omit, "className" | "children" | "tag"> & { - tag?: string; - className?: string; - children?: ReactNode; - asChild?: boolean; -}; - -export const Block = forwardRef(function Block( - { tag, className, children, asChild, ...rest }, - ref -) { - const cls = blockClasses({ className }); - const resolvedTagValue = resolveTag(tag, "div", TagGroup.Layout); - const Tag = resolvedTagValue as ElementType; - if (asChild) { - return ( - - {children} - - ); - } - return ( - } className={cls || undefined} {...rest}> - {children} - - ); -}); -Block.displayName = "Block"; diff --git a/generated/ui/block/block.variants.json b/generated/ui/block/block.variants.json deleted file mode 100644 index 406906a..0000000 --- a/generated/ui/block/block.variants.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "$schema": "../../schemas/variants.schema.json", - "base": "", - "byKey": {}, - "defaults": {}, - "id": "ui.block", - "keys": [] -} diff --git a/generated/ui/block/block_gen.go b/generated/ui/block/block_gen.go deleted file mode 100644 index 7df40a8..0000000 --- a/generated/ui/block/block_gen.go +++ /dev/null @@ -1,15 +0,0 @@ -// Code generated by @ui8kit/codegen. DO NOT EDIT. - -package block - -import ( - _ "embed" - - uiutils "github.com/ui8kit/ui/utils" -) - -//go:embed block.variants.json -var blockVariantsJSON []byte - -// BlockVariants is the CVA recipe shared verbatim by all runtimes. -var BlockVariants = uiutils.MustParseVariantRecipe(blockVariantsJSON).ToVariants() diff --git a/generated/ui/block/block_templ.go b/generated/ui/block/block_templ.go deleted file mode 100644 index d07eb9d..0000000 --- a/generated/ui/block/block_templ.go +++ /dev/null @@ -1,710 +0,0 @@ -// Code generated by templ - DO NOT EDIT. - -// templ: version: v0.3.1001 -// Code generated by @ui8kit/codegen. DO NOT EDIT. - -/* - - -Block is a top-level page landmark (main, header, section, nav, …). - - -Use for document structure; do not nest Block inside Block. - - -*/ - -package block - -//lint:file-ignore SA4006 This context is only used if a nested component is present. - -import "github.com/a-h/templ" -import templruntime "github.com/a-h/templ/runtime" - -import ( - uiutils "github.com/fastygo/sezonmarket/internal/utils" -) - -// BlockProps configures Block. -type BlockProps struct { - ID string - // Class — adds Tailwind utilities - Class string - // Tag — semantic landmark: main, header, section, footer, nav, article, aside, figure - Tag string - Attrs templ.Attributes -} - -// BlockClasses composes Block classes without rendering — -// the server-composition escape hatch for custom root elements. -func BlockClasses(p BlockProps) string { - return uiutils.Compose(BlockVariants, map[string]string{}, p.Class) -} - -// Block renders the Block contract. -func Block(p BlockProps) templ.Component { - return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { - templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context - if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil { - return templ_7745c5c3_CtxErr - } - templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) - if !templ_7745c5c3_IsBuffer { - defer func() { - templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) - if templ_7745c5c3_Err == nil { - templ_7745c5c3_Err = templ_7745c5c3_BufErr - } - }() - } - ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var1 := templ.GetChildren(ctx) - if templ_7745c5c3_Var1 == nil { - templ_7745c5c3_Var1 = templ.NopComponent - } - ctx = templ.ClearChildren(ctx) - switch uiutils.ResolveTag(p.Tag, "div", uiutils.TagGroupLayout) { - case "section": - var templ_7745c5c3_Var2 = []any{BlockClasses(p)} - templ_7745c5c3_Err = templ.RenderCSSItems(ctx, templ_7745c5c3_Buffer, templ_7745c5c3_Var2...) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 1, "
") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templ_7745c5c3_Var1.Render(ctx, templ_7745c5c3_Buffer) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 6, "
") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - case "article": - var templ_7745c5c3_Var5 = []any{BlockClasses(p)} - templ_7745c5c3_Err = templ.RenderCSSItems(ctx, templ_7745c5c3_Buffer, templ_7745c5c3_Var5...) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 7, "
") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templ_7745c5c3_Var1.Render(ctx, templ_7745c5c3_Buffer) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 12, "
") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - case "aside": - var templ_7745c5c3_Var8 = []any{BlockClasses(p)} - templ_7745c5c3_Err = templ.RenderCSSItems(ctx, templ_7745c5c3_Buffer, templ_7745c5c3_Var8...) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 13, "") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - case "header": - var templ_7745c5c3_Var11 = []any{BlockClasses(p)} - templ_7745c5c3_Err = templ.RenderCSSItems(ctx, templ_7745c5c3_Buffer, templ_7745c5c3_Var11...) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 19, "
") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templ_7745c5c3_Var1.Render(ctx, templ_7745c5c3_Buffer) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 24, "
") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - case "footer": - var templ_7745c5c3_Var14 = []any{BlockClasses(p)} - templ_7745c5c3_Err = templ.RenderCSSItems(ctx, templ_7745c5c3_Buffer, templ_7745c5c3_Var14...) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 25, "
") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templ_7745c5c3_Var1.Render(ctx, templ_7745c5c3_Buffer) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 30, "
") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - case "main": - var templ_7745c5c3_Var17 = []any{BlockClasses(p)} - templ_7745c5c3_Err = templ.RenderCSSItems(ctx, templ_7745c5c3_Buffer, templ_7745c5c3_Var17...) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 31, "
") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templ_7745c5c3_Var1.Render(ctx, templ_7745c5c3_Buffer) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 36, "
") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - case "nav": - var templ_7745c5c3_Var20 = []any{BlockClasses(p)} - templ_7745c5c3_Err = templ.RenderCSSItems(ctx, templ_7745c5c3_Buffer, templ_7745c5c3_Var20...) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 37, "") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - case "figure": - var templ_7745c5c3_Var23 = []any{BlockClasses(p)} - templ_7745c5c3_Err = templ.RenderCSSItems(ctx, templ_7745c5c3_Buffer, templ_7745c5c3_Var23...) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 43, "
") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templ_7745c5c3_Var1.Render(ctx, templ_7745c5c3_Buffer) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 48, "
") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - case "search": - var templ_7745c5c3_Var26 = []any{BlockClasses(p)} - templ_7745c5c3_Err = templ.RenderCSSItems(ctx, templ_7745c5c3_Buffer, templ_7745c5c3_Var26...) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 49, "") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templ_7745c5c3_Var1.Render(ctx, templ_7745c5c3_Buffer) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 54, "") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - case "hgroup": - var templ_7745c5c3_Var29 = []any{BlockClasses(p)} - templ_7745c5c3_Err = templ.RenderCSSItems(ctx, templ_7745c5c3_Buffer, templ_7745c5c3_Var29...) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 55, "
") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templ_7745c5c3_Var1.Render(ctx, templ_7745c5c3_Buffer) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 60, "
") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - default: - var templ_7745c5c3_Var32 = []any{BlockClasses(p)} - templ_7745c5c3_Err = templ.RenderCSSItems(ctx, templ_7745c5c3_Buffer, templ_7745c5c3_Var32...) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 61, "
") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templ_7745c5c3_Var1.Render(ctx, templ_7745c5c3_Buffer) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 66, "
") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - } - return nil - }) -} - -var _ = templruntime.GeneratedTemplate diff --git a/generated/ui/box/Box.html.twig b/generated/ui/box/Box.html.twig deleted file mode 100644 index 90a9fee..0000000 --- a/generated/ui/box/Box.html.twig +++ /dev/null @@ -1,4 +0,0 @@ -{# Code generated by @ui8kit/codegen. DO NOT EDIT. #} -{# ui.box — Box renders a div layout wrapper. #} -{% set uiTag = ui8kit_resolve_tag((tag|default('')), 'div', 'BoxAllowed') %} -<{{ uiTag }}{{ ui8kit_attr_str({ 'class': ui8kit_or_null(ui8kit_classes('boxClasses', { 'class': (class|default('')) })) }, attrs|default({})) }}>{{ children|default('')|raw }} diff --git a/generated/ui/box/Box.latte b/generated/ui/box/Box.latte deleted file mode 100644 index a6ba9d7..0000000 --- a/generated/ui/box/Box.latte +++ /dev/null @@ -1,13 +0,0 @@ -{* Code generated by @ui8kit/codegen. DO NOT EDIT. *} -{* ui.box — Box renders a div layout wrapper. *} -{parameters - string $class = '', - string $tag = '', - array $attrs = [], - string $children = '', -} -{var $uiTag = \UI8Kit\Rt::resolveTag($tag, 'div', 'BoxAllowed')} -
{$children|noescape}
diff --git a/generated/ui/box/Box.svelte b/generated/ui/box/Box.svelte deleted file mode 100644 index 8470653..0000000 --- a/generated/ui/box/Box.svelte +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - {@render children?.()} - diff --git a/generated/ui/box/Box.vue b/generated/ui/box/Box.vue deleted file mode 100644 index efb38d8..0000000 --- a/generated/ui/box/Box.vue +++ /dev/null @@ -1,30 +0,0 @@ - - - - - diff --git a/generated/ui/box/box.shared.ts b/generated/ui/box/box.shared.ts deleted file mode 100644 index 4cdab94..0000000 --- a/generated/ui/box/box.shared.ts +++ /dev/null @@ -1,21 +0,0 @@ -// Code generated by @ui8kit/codegen. DO NOT EDIT. -// ui.box — shared TypeScript contract (types + classes helpers) - -import { cn, composeRecipe } from "../../utils"; -import boxRecipeJson from "./box.variants.json"; - -export const boxRecipe = boxRecipeJson; - -/** Box renders a div layout wrapper. */ -export type BoxBaseProps = { - tag?: string; -}; - -export type BoxClassesInput = { - className?: string; -}; - -/** Compose Box classes without rendering — the cross-runtime `asChild` substitute. */ -export function boxClasses(input: BoxClassesInput = {}): string { - return cn(composeRecipe(boxRecipe, { }), input.className); -} diff --git a/generated/ui/box/box.solid.tsx b/generated/ui/box/box.solid.tsx deleted file mode 100644 index 371810e..0000000 --- a/generated/ui/box/box.solid.tsx +++ /dev/null @@ -1,31 +0,0 @@ -// Code generated by @ui8kit/codegen. DO NOT EDIT. -/** - * Box is a generic layout wrapper for internal sections. - * Not for top-level landmarks — use Block for page regions. - */ - -import { splitProps, type JSX, type Component } from "solid-js"; -import { Dynamic } from "solid-js/web"; -import { boxClasses } from "./box.shared"; -import { resolveTag, TagGroup } from "../../utils/tags"; - -/** - * Box renders a div layout wrapper. - */ -export type BoxProps = Omit, "class" | "className" | "children" | "tag"> & { - tag?: string; - class?: string; - className?: string; - children?: JSX.Element; -}; - -export const Box: Component = (props) => { - const [local, rest] = splitProps(props, ["tag", "class", "className", "children"]); - const resolvedTagValue = () => resolveTag(local.tag, "div", TagGroup.BoxAllowed); - const cls = () => boxClasses({ className: local.class ?? local.className }); - return ( - - {local.children} - - ); -}; diff --git a/generated/ui/box/box.templ b/generated/ui/box/box.templ deleted file mode 100644 index 7abedbe..0000000 --- a/generated/ui/box/box.templ +++ /dev/null @@ -1,40 +0,0 @@ -// Code generated by @ui8kit/codegen. DO NOT EDIT. - -/* -Box is a generic layout wrapper for internal sections. -Not for top-level landmarks — use Block for page regions. -*/ - -package box - -import ( - uiutils "github.com/ui8kit/ui/utils" -) - -// BoxProps configures Box. -type BoxProps struct { - // Class — adds Tailwind utilities - Class string - // Tag — div only. Use Block for landmarks (aside, section, header, nav). - Tag string - Attrs templ.Attributes -} - -// BoxClasses composes Box classes without rendering — -// the server-composition escape hatch for custom root elements. -func BoxClasses(p BoxProps) string { - return uiutils.Compose(BoxVariants, map[string]string{}, p.Class) -} - -// Box renders the Box contract. -templ Box(p BoxProps) { - switch uiutils.ResolveTag(p.Tag, "div", uiutils.TagGroupBoxAllowed) { - default: -
- { children... } -
- } -} diff --git a/generated/ui/box/box.tsx b/generated/ui/box/box.tsx deleted file mode 100644 index 16fc2f9..0000000 --- a/generated/ui/box/box.tsx +++ /dev/null @@ -1,42 +0,0 @@ -// Code generated by @ui8kit/codegen. DO NOT EDIT. -/** - * Box is a generic layout wrapper for internal sections. - * Not for top-level landmarks — use Block for page regions. - */ - -import { forwardRef, type ReactNode, type HTMLAttributes, type ElementType, type Ref } from "react"; -import { boxClasses } from "./box.shared"; -import { resolveTag, TagGroup } from "../../utils/tags"; -import { Slot } from "../slot/slot"; - -/** - * Box renders a div layout wrapper. - */ -export type BoxProps = Omit, "className" | "children" | "tag"> & { - tag?: string; - className?: string; - children?: ReactNode; - asChild?: boolean; -}; - -export const Box = forwardRef(function Box( - { tag, className, children, asChild, ...rest }, - ref -) { - const cls = boxClasses({ className }); - const resolvedTagValue = resolveTag(tag, "div", TagGroup.BoxAllowed); - const Tag = resolvedTagValue as ElementType; - if (asChild) { - return ( - - {children} - - ); - } - return ( - } className={cls || undefined} {...rest}> - {children} - - ); -}); -Box.displayName = "Box"; diff --git a/generated/ui/box/box.variants.json b/generated/ui/box/box.variants.json deleted file mode 100644 index 6feadda..0000000 --- a/generated/ui/box/box.variants.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "$schema": "../../schemas/variants.schema.json", - "base": "", - "byKey": {}, - "defaults": {}, - "id": "ui.box", - "keys": [] -} diff --git a/generated/ui/box/box_gen.go b/generated/ui/box/box_gen.go deleted file mode 100644 index e6078b2..0000000 --- a/generated/ui/box/box_gen.go +++ /dev/null @@ -1,15 +0,0 @@ -// Code generated by @ui8kit/codegen. DO NOT EDIT. - -package box - -import ( - _ "embed" - - uiutils "github.com/ui8kit/ui/utils" -) - -//go:embed box.variants.json -var boxVariantsJSON []byte - -// BoxVariants is the CVA recipe shared verbatim by all runtimes. -var BoxVariants = uiutils.MustParseVariantRecipe(boxVariantsJSON).ToVariants() diff --git a/generated/ui/box/box_templ.go b/generated/ui/box/box_templ.go deleted file mode 100644 index 9a8099c..0000000 --- a/generated/ui/box/box_templ.go +++ /dev/null @@ -1,110 +0,0 @@ -// Code generated by templ - DO NOT EDIT. - -// templ: version: v0.3.1001 -// Code generated by @ui8kit/codegen. DO NOT EDIT. - -/* - - -Box is a generic layout wrapper for internal sections. - - -Not for top-level landmarks — use Block for page regions. - - -*/ - -package box - -//lint:file-ignore SA4006 This context is only used if a nested component is present. - -import "github.com/a-h/templ" -import templruntime "github.com/a-h/templ/runtime" - -import ( - uiutils "github.com/fastygo/sezonmarket/internal/utils" -) - -// BoxProps configures Box. -type BoxProps struct { - // Class — adds Tailwind utilities - Class string - // Tag — div only. Use Block for landmarks (aside, section, header, nav). - Tag string - Attrs templ.Attributes -} - -// BoxClasses composes Box classes without rendering — -// the server-composition escape hatch for custom root elements. -func BoxClasses(p BoxProps) string { - return uiutils.Compose(BoxVariants, map[string]string{}, p.Class) -} - -// Box renders the Box contract. -func Box(p BoxProps) templ.Component { - return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { - templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context - if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil { - return templ_7745c5c3_CtxErr - } - templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) - if !templ_7745c5c3_IsBuffer { - defer func() { - templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) - if templ_7745c5c3_Err == nil { - templ_7745c5c3_Err = templ_7745c5c3_BufErr - } - }() - } - ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var1 := templ.GetChildren(ctx) - if templ_7745c5c3_Var1 == nil { - templ_7745c5c3_Var1 = templ.NopComponent - } - ctx = templ.ClearChildren(ctx) - switch uiutils.ResolveTag(p.Tag, "div", uiutils.TagGroupBoxAllowed) { - default: - var templ_7745c5c3_Var2 = []any{BoxClasses(p)} - templ_7745c5c3_Err = templ.RenderCSSItems(ctx, templ_7745c5c3_Buffer, templ_7745c5c3_Var2...) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 1, "
") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templ_7745c5c3_Var1.Render(ctx, templ_7745c5c3_Buffer) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 4, "
") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - } - return nil - }) -} - -var _ = templruntime.GeneratedTemplate diff --git a/generated/ui/breadcrumb/Breadcrumb.svelte b/generated/ui/breadcrumb/Breadcrumb.svelte deleted file mode 100644 index eea8da7..0000000 --- a/generated/ui/breadcrumb/Breadcrumb.svelte +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - - diff --git a/generated/ui/breadcrumb/Breadcrumb.vue b/generated/ui/breadcrumb/Breadcrumb.vue deleted file mode 100644 index 9d101a7..0000000 --- a/generated/ui/breadcrumb/Breadcrumb.vue +++ /dev/null @@ -1,39 +0,0 @@ - - - - - diff --git a/generated/ui/breadcrumb/breadcrumb.shared.ts b/generated/ui/breadcrumb/breadcrumb.shared.ts deleted file mode 100644 index a407ba6..0000000 --- a/generated/ui/breadcrumb/breadcrumb.shared.ts +++ /dev/null @@ -1,25 +0,0 @@ -// Code generated by @ui8kit/codegen. DO NOT EDIT. -// ui.breadcrumb — shared TypeScript contract (types + classes helpers) - -import { cn } from "../../utils"; - -export type BreadcrumbItem = { - label?: string; - href?: string; - current?: boolean; - disabled?: boolean; -}; - -/** Breadcrumb renders the full navigation trail. */ -export type BreadcrumbBaseProps = { - items?: BreadcrumbItem[]; -}; - -export type BreadcrumbClassesInput = { - className?: string; -}; - -/** Compose Breadcrumb classes without rendering — the cross-runtime `asChild` substitute. */ -export function breadcrumbClasses(input: BreadcrumbClassesInput = {}): string { - return cn("text-sm", input.className); -} diff --git a/generated/ui/breadcrumb/breadcrumb.solid.tsx b/generated/ui/breadcrumb/breadcrumb.solid.tsx deleted file mode 100644 index 6b54fb7..0000000 --- a/generated/ui/breadcrumb/breadcrumb.solid.tsx +++ /dev/null @@ -1,43 +0,0 @@ -// Code generated by @ui8kit/codegen. DO NOT EDIT. -/** - * Breadcrumb shows the current page location within a hierarchy. - * Renders nav with ordered links and aria-current on the active item. - */ - -import { splitProps, type JSX, type Component } from "solid-js"; -import { breadcrumbClasses, type BreadcrumbItem } from "./breadcrumb.shared"; -import { cn } from "../../utils"; -import { isSetStr, orUndef } from "../../utils/expr"; - -/** - * Breadcrumb renders the full navigation trail. - */ -export type BreadcrumbProps = Omit, "class" | "className" | "children" | "items"> & { - items?: BreadcrumbItem[]; - class?: string; - className?: string; -}; - -export const Breadcrumb: Component = (props) => { - const [local, rest] = splitProps(props, ["items", "class", "className"]); - const cls = () => breadcrumbClasses({ className: local.class ?? local.className }); - return ( - - ); -}; diff --git a/generated/ui/breadcrumb/breadcrumb.templ b/generated/ui/breadcrumb/breadcrumb.templ deleted file mode 100644 index 35abd46..0000000 --- a/generated/ui/breadcrumb/breadcrumb.templ +++ /dev/null @@ -1,85 +0,0 @@ -// Code generated by @ui8kit/codegen. DO NOT EDIT. - -/* -Breadcrumb shows the current page location within a hierarchy. -Renders nav with ordered links and aria-current on the active item. -*/ - -package breadcrumb - -import ( - uiutils "github.com/ui8kit/ui/utils" -) - -// BreadcrumbItem is one BreadcrumbItem entry. -type BreadcrumbItem struct { - Label string - Href string - // marks the active page (aria-current=page) - Current bool - Disabled bool -} - -// BreadcrumbProps configures Breadcrumb. -type BreadcrumbProps struct { - // Class — adds Tailwind utilities - Class string - Items []BreadcrumbItem - AriaLabel string - // DataUI8Kit — opt-in behavior hook; empty emits nothing - DataUI8Kit string - Attrs templ.Attributes -} - -// BreadcrumbClasses composes Breadcrumb classes without rendering — -// the server-composition escape hatch for custom root elements. -func BreadcrumbClasses(p BreadcrumbProps) string { - return uiutils.Cn("text-sm", p.Class) -} - -// Breadcrumb renders the Breadcrumb contract. -templ Breadcrumb(p BreadcrumbProps) { - -} diff --git a/generated/ui/breadcrumb/breadcrumb.tsx b/generated/ui/breadcrumb/breadcrumb.tsx deleted file mode 100644 index e1817af..0000000 --- a/generated/ui/breadcrumb/breadcrumb.tsx +++ /dev/null @@ -1,45 +0,0 @@ -// Code generated by @ui8kit/codegen. DO NOT EDIT. -/** - * Breadcrumb shows the current page location within a hierarchy. - * Renders nav with ordered links and aria-current on the active item. - */ - -import { forwardRef, type ReactNode, type HTMLAttributes } from "react"; -import { breadcrumbClasses, type BreadcrumbItem } from "./breadcrumb.shared"; -import { cn } from "../../utils"; -import { isSetStr, orUndef } from "../../utils/expr"; - -/** - * Breadcrumb renders the full navigation trail. - */ -export type BreadcrumbProps = Omit, "className" | "children" | "items"> & { - items?: BreadcrumbItem[]; - className?: string; -}; - -export const Breadcrumb = forwardRef(function Breadcrumb( - { items, className, ...rest }, - ref -) { - const cls = breadcrumbClasses({ className }); - return ( - - ); -}); -Breadcrumb.displayName = "Breadcrumb"; diff --git a/generated/ui/breadcrumb/breadcrumb_templ.go b/generated/ui/breadcrumb/breadcrumb_templ.go deleted file mode 100644 index 82f3cdf..0000000 --- a/generated/ui/breadcrumb/breadcrumb_templ.go +++ /dev/null @@ -1,304 +0,0 @@ -// Code generated by templ - DO NOT EDIT. - -// templ: version: v0.3.1001 -// Code generated by @ui8kit/codegen. DO NOT EDIT. - -/* - - -Breadcrumb shows the current page location within a hierarchy. - - -Renders nav with ordered links and aria-current on the active item. - - -*/ - -package breadcrumb - -//lint:file-ignore SA4006 This context is only used if a nested component is present. - -import "github.com/a-h/templ" -import templruntime "github.com/a-h/templ/runtime" - -import ( - uiutils "github.com/fastygo/sezonmarket/internal/utils" -) - -// BreadcrumbItem is one BreadcrumbItem entry. -type BreadcrumbItem struct { - Label string - Href string - // marks the active page (aria-current=page) - Current bool - Disabled bool -} - -// BreadcrumbProps configures Breadcrumb. -type BreadcrumbProps struct { - // Class — adds Tailwind utilities - Class string - Items []BreadcrumbItem - AriaLabel string - // DataUI8Kit — opt-in behavior hook; empty emits nothing - DataUI8Kit string - Attrs templ.Attributes -} - -// BreadcrumbClasses composes Breadcrumb classes without rendering — -// the server-composition escape hatch for custom root elements. -func BreadcrumbClasses(p BreadcrumbProps) string { - return uiutils.Cn("text-sm", p.Class) -} - -// Breadcrumb renders the Breadcrumb contract. -func Breadcrumb(p BreadcrumbProps) templ.Component { - return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { - templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context - if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil { - return templ_7745c5c3_CtxErr - } - templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) - if !templ_7745c5c3_IsBuffer { - defer func() { - templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) - if templ_7745c5c3_Err == nil { - templ_7745c5c3_Err = templ_7745c5c3_BufErr - } - }() - } - ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var1 := templ.GetChildren(ctx) - if templ_7745c5c3_Var1 == nil { - templ_7745c5c3_Var1 = templ.NopComponent - } - ctx = templ.ClearChildren(ctx) - var templ_7745c5c3_Var2 = []any{BreadcrumbClasses(p)} - templ_7745c5c3_Err = templ.RenderCSSItems(ctx, templ_7745c5c3_Buffer, templ_7745c5c3_Var2...) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 1, "") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - return nil - }) -} - -var _ = templruntime.GeneratedTemplate diff --git a/generated/ui/button/Button.html.twig b/generated/ui/button/Button.html.twig deleted file mode 100644 index 3202b90..0000000 --- a/generated/ui/button/Button.html.twig +++ /dev/null @@ -1,3 +0,0 @@ -{# Code generated by @ui8kit/codegen. DO NOT EDIT. #} -{# ui.button — Button renders a button element with variant classes. #} -{{ children|default('')|raw }} diff --git a/generated/ui/button/Button.latte b/generated/ui/button/Button.latte deleted file mode 100644 index 73fdbe7..0000000 --- a/generated/ui/button/Button.latte +++ /dev/null @@ -1,27 +0,0 @@ -{* Code generated by @ui8kit/codegen. DO NOT EDIT. *} -{* ui.button — Button renders a button element with variant classes. *} -{parameters - string $variant = '', - string $size = '', - string $class = '', - string $type = '', - string $form = '', - bool $disabled = false, - string $id = '', - string $role = '', - string $tabindex = '', - string $ariaLabel = '', - array $attrs = [], - string $children = '', -} - diff --git a/generated/ui/button/Button.svelte b/generated/ui/button/Button.svelte deleted file mode 100644 index 83765a8..0000000 --- a/generated/ui/button/Button.svelte +++ /dev/null @@ -1,56 +0,0 @@ - - - - - - -{#if isSetStr(href)} - - {@render children?.()} - -{:else} - -{/if} diff --git a/generated/ui/button/Button.vue b/generated/ui/button/Button.vue deleted file mode 100644 index 4b74fa9..0000000 --- a/generated/ui/button/Button.vue +++ /dev/null @@ -1,42 +0,0 @@ - - - - - diff --git a/generated/ui/button/button.shared.ts b/generated/ui/button/button.shared.ts deleted file mode 100644 index b575f0e..0000000 --- a/generated/ui/button/button.shared.ts +++ /dev/null @@ -1,34 +0,0 @@ -// Code generated by @ui8kit/codegen. DO NOT EDIT. -// ui.button — shared TypeScript contract (types + classes helpers) - -import { cn, composeRecipe, type RecipeKey } from "../../utils"; -import buttonRecipeJson from "./button.variants.json"; - -export const buttonRecipe = buttonRecipeJson; - -export type ButtonVariant = RecipeKey; -export type ButtonSize = RecipeKey; - -/** Button renders a button element, or an anchor when Href is set. */ -export type ButtonBaseProps = { - variant?: ButtonVariant; - size?: ButtonSize; - type?: string; - href?: string; - target?: string; - rel?: string; - external?: boolean; - disabled?: boolean; -}; - -export type ButtonClassesInput = { - variant?: ButtonVariant; - size?: ButtonSize; - disabled?: boolean; - className?: string; -}; - -/** Compose Button classes without rendering — the cross-runtime `asChild` substitute. */ -export function buttonClasses(input: ButtonClassesInput = {}): string { - return cn(composeRecipe(buttonRecipe, { variant: input.variant, size: input.size }), (input.disabled ? "pointer-events-none opacity-50" : ""), input.className); -} diff --git a/generated/ui/button/button.solid.tsx b/generated/ui/button/button.solid.tsx deleted file mode 100644 index 9cffd63..0000000 --- a/generated/ui/button/button.solid.tsx +++ /dev/null @@ -1,47 +0,0 @@ -// Code generated by @ui8kit/codegen. DO NOT EDIT. -/** - * Button triggers an action on click. - * Optional Href renders an anchor with button appearance (CTA navigation). - * For exotic roots, use ButtonClasses (Templ/Svelte/Vue/Solid) or asChild (React). - * Prefer Link for prose/semantic navigation. - */ - -import { splitProps, type JSX, type Component } from "solid-js"; -import { buttonClasses, type ButtonSize, type ButtonVariant } from "./button.shared"; -import { eqStr, isSetStr, oneOfOr, orUndef } from "../../utils/expr"; - -/** - * Button renders a button element, or an anchor when Href is set. - * Type/Form apply only in button mode; Disabled on anchors uses aria-disabled. - */ -export type ButtonProps = Omit, "class" | "className" | "children" | "variant" | "size" | "type" | "href" | "target" | "rel" | "external" | "disabled"> & { - variant?: ButtonVariant; - size?: ButtonSize; - type?: string; - href?: string; - target?: string; - rel?: string; - external?: boolean; - disabled?: boolean; - class?: string; - className?: string; - children?: JSX.Element; -}; - -export const Button: Component = (props) => { - const [local, rest] = splitProps(props, ["variant", "size", "type", "href", "target", "rel", "external", "disabled", "class", "className", "children"]); - const targetValue = () => (isSetStr(local.target) ? local.target : (local.external ? "_blank" : "")); - const relValue = () => (isSetStr(local.rel) ? local.rel : ((local.external || eqStr(targetValue(), "_blank")) ? "noopener noreferrer" : "")); - const cls = () => buttonClasses({ variant: local.variant, size: local.size, disabled: local.disabled, className: local.class ?? local.className }); - return ( - isSetStr(local.href) ? ( - - {local.children} - - ) : ( - - ) - ); -}; diff --git a/generated/ui/button/button.templ b/generated/ui/button/button.templ deleted file mode 100644 index f7df2ea..0000000 --- a/generated/ui/button/button.templ +++ /dev/null @@ -1,126 +0,0 @@ -// Code generated by @ui8kit/codegen. DO NOT EDIT. - -/* -Button triggers an action on click. -Optional Href renders an anchor with button appearance (CTA navigation). -For exotic roots, use ButtonClasses (Templ/Svelte/Vue/Solid) or asChild (React). -Prefer Link for prose/semantic navigation. -*/ - -package button - -import ( - "strconv" - - uiutils "github.com/ui8kit/ui/utils" -) - -// ButtonProps configures Button. -type ButtonProps struct { - // Variant — appearance preset: default, secondary, destructive, outline, ghost, link - Variant string - // Size — density preset: default, sm, lg, icon - Size string - // Class — adds Tailwind utilities - Class string - // Type — button type: button, submit, reset (ignored when Href is set) - Type string - // Form — links button to a form id (ignored when Href is set) - Form string - // Href — when set, renders an anchor with button appearance - Href string - // Target — explicit target; External implies _blank (anchor mode) - Target string - // Rel — explicit rel; external links default to noopener noreferrer (anchor mode) - Rel string - // External — opens in a new tab with safe rel defaults (anchor mode) - External bool - // Disabled — blocks interaction - Disabled bool - // ID — element id - ID string - // Role — ARIA role override - Role string - // TabIndex — tab order override - TabIndex string - // AriaLabel — accessible name for unlabeled controls - AriaLabel string - Attrs templ.Attributes -} - -// ButtonClasses composes Button classes without rendering — -// the server-composition escape hatch for custom root elements. -func ButtonClasses(p ButtonProps) string { - return uiutils.Compose(ButtonVariants, map[string]string{ - "variant": p.Variant, - "size": p.Size, - }, uiutils.If(p.Disabled, "pointer-events-none opacity-50", ""), p.Class) -} - -func buttonTarget(p ButtonProps) string { - return uiutils.If(uiutils.IsSetStr(p.Target), p.Target, uiutils.If(p.External, "_blank", "")) -} - -func buttonRel(p ButtonProps) string { - return uiutils.If(uiutils.IsSetStr(p.Rel), p.Rel, uiutils.If((p.External || buttonTarget(p) == "_blank"), "noopener noreferrer", "")) -} - -// Button renders the Button contract. -templ Button(p ButtonProps) { - if uiutils.IsSetStr(p.Href) { - - { children... } - - } else { - - } -} diff --git a/generated/ui/button/button.tsx b/generated/ui/button/button.tsx deleted file mode 100644 index d771427..0000000 --- a/generated/ui/button/button.tsx +++ /dev/null @@ -1,58 +0,0 @@ -// Code generated by @ui8kit/codegen. DO NOT EDIT. -/** - * Button triggers an action on click. - * Optional Href renders an anchor with button appearance (CTA navigation). - * For exotic roots, use ButtonClasses (Templ/Svelte/Vue/Solid) or asChild (React). - * Prefer Link for prose/semantic navigation. - */ - -import { forwardRef, type ReactNode, type HTMLAttributes, type Ref } from "react"; -import { buttonClasses, type ButtonSize, type ButtonVariant } from "./button.shared"; -import { eqStr, isSetStr, oneOfOr, orUndef } from "../../utils/expr"; -import { Slot } from "../slot/slot"; - -/** - * Button renders a button element, or an anchor when Href is set. - * Type/Form apply only in button mode; Disabled on anchors uses aria-disabled. - */ -export type ButtonProps = Omit, "className" | "children" | "variant" | "size" | "type" | "href" | "target" | "rel" | "external" | "disabled"> & { - variant?: ButtonVariant; - size?: ButtonSize; - type?: string; - href?: string; - target?: string; - rel?: string; - external?: boolean; - disabled?: boolean; - className?: string; - children?: ReactNode; - asChild?: boolean; -}; - -export const Button = forwardRef(function Button( - { variant, size, type, href, target, rel, external, disabled, className, children, asChild, ...rest }, - ref -) { - const cls = buttonClasses({ variant, size, disabled, className }); - const targetValue = (isSetStr(target) ? target : (external ? "_blank" : "")); - const relValue = (isSetStr(rel) ? rel : ((external || eqStr(targetValue, "_blank")) ? "noopener noreferrer" : "")); - if (asChild) { - return ( - - {children} - - ); - } - return ( - isSetStr(href) ? ( - } href={orUndef(href)} className={cls || undefined} target={orUndef(targetValue)} rel={orUndef(relValue)} aria-disabled={disabled ? "true" : undefined} tabIndex={disabled ? -1 : undefined} {...rest}> - {children} - - ) : ( - - ) - ); -}); -Button.displayName = "Button"; diff --git a/generated/ui/button/button.variants.json b/generated/ui/button/button.variants.json deleted file mode 100644 index b65cfe1..0000000 --- a/generated/ui/button/button.variants.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "$schema": "../../schemas/variants.schema.json", - "base": "inline-flex shrink-0 items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50", - "byKey": { - "size": { - "default": "h-9 px-4 py-2", - "icon": "h-9 w-9", - "lg": "h-10 rounded-md px-6", - "sm": "h-8 gap-1.5 rounded-md px-3" - }, - "variant": { - "default": "bg-primary text-primary-foreground shadow-xs hover:bg-primary/90", - "destructive": "bg-destructive text-destructive-foreground shadow-xs hover:bg-destructive/90", - "ghost": "hover:bg-accent hover:text-accent-foreground", - "link": "text-primary underline-offset-4 hover:underline", - "outline": "border border-input bg-background shadow-xs hover:bg-accent hover:text-accent-foreground", - "secondary": "bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80" - } - }, - "defaults": { - "size": "default", - "variant": "default" - }, - "id": "ui.button", - "keys": [ - "variant", - "size" - ] -} diff --git a/generated/ui/button/button_gen.go b/generated/ui/button/button_gen.go deleted file mode 100644 index 731c755..0000000 --- a/generated/ui/button/button_gen.go +++ /dev/null @@ -1,15 +0,0 @@ -// Code generated by @ui8kit/codegen. DO NOT EDIT. - -package button - -import ( - _ "embed" - - uiutils "github.com/ui8kit/ui/utils" -) - -//go:embed button.variants.json -var buttonVariantsJSON []byte - -// ButtonVariants is the CVA recipe shared verbatim by all runtimes. -var ButtonVariants = uiutils.MustParseVariantRecipe(buttonVariantsJSON).ToVariants() diff --git a/generated/ui/button/button_templ.go b/generated/ui/button/button_templ.go deleted file mode 100644 index 92abd86..0000000 --- a/generated/ui/button/button_templ.go +++ /dev/null @@ -1,461 +0,0 @@ -// Code generated by templ - DO NOT EDIT. - -// templ: version: v0.3.1001 -// Code generated by @ui8kit/codegen. DO NOT EDIT. - -/* - - -Button triggers an action on click. - - -Optional Href renders an anchor with button appearance (CTA navigation). - - -For exotic roots, use ButtonClasses (Templ/Svelte/Vue/Solid) or asChild (React). - - -Prefer Link for prose/semantic navigation. - - -*/ - -package button - -//lint:file-ignore SA4006 This context is only used if a nested component is present. - -import "github.com/a-h/templ" -import templruntime "github.com/a-h/templ/runtime" - -import ( - "strconv" - - uiutils "github.com/fastygo/sezonmarket/internal/utils" -) - -// ButtonProps configures Button. -type ButtonProps struct { - // Variant — appearance preset: default, secondary, destructive, outline, ghost, link - Variant string - // Size — density preset: default, sm, lg, icon - Size string - // Class — adds Tailwind utilities - Class string - // Type — button type: button, submit, reset (ignored when Href is set) - Type string - // Form — links button to a form id (ignored when Href is set) - Form string - // Href — when set, renders an anchor with button appearance - Href string - // Target — explicit target; External implies _blank (anchor mode) - Target string - // Rel — explicit rel; external links default to noopener noreferrer (anchor mode) - Rel string - // External — opens in a new tab with safe rel defaults (anchor mode) - External bool - // Disabled — blocks interaction - Disabled bool - // ID — element id - ID string - // Role — ARIA role override - Role string - // TabIndex — tab order override - TabIndex string - // AriaLabel — accessible name for unlabeled controls - AriaLabel string - Attrs templ.Attributes -} - -// ButtonClasses composes Button classes without rendering — -// the server-composition escape hatch for custom root elements. -func ButtonClasses(p ButtonProps) string { - return uiutils.Compose(ButtonVariants, map[string]string{ - "variant": p.Variant, - "size": p.Size, - }, uiutils.If(p.Disabled, "pointer-events-none opacity-50", ""), p.Class) -} - -func buttonTarget(p ButtonProps) string { - return uiutils.If(uiutils.IsSetStr(p.Target), p.Target, uiutils.If(p.External, "_blank", "")) -} - -func buttonRel(p ButtonProps) string { - return uiutils.If(uiutils.IsSetStr(p.Rel), p.Rel, uiutils.If((p.External || buttonTarget(p) == "_blank"), "noopener noreferrer", "")) -} - -// Button renders the Button contract. -func Button(p ButtonProps) templ.Component { - return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { - templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context - if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil { - return templ_7745c5c3_CtxErr - } - templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) - if !templ_7745c5c3_IsBuffer { - defer func() { - templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) - if templ_7745c5c3_Err == nil { - templ_7745c5c3_Err = templ_7745c5c3_BufErr - } - }() - } - ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var1 := templ.GetChildren(ctx) - if templ_7745c5c3_Var1 == nil { - templ_7745c5c3_Var1 = templ.NopComponent - } - ctx = templ.ClearChildren(ctx) - if uiutils.IsSetStr(p.Href) { - var templ_7745c5c3_Var2 = []any{ButtonClasses(p)} - templ_7745c5c3_Err = templ.RenderCSSItems(ctx, templ_7745c5c3_Buffer, templ_7745c5c3_Var2...) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 1, "") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templ_7745c5c3_Var1.Render(ctx, templ_7745c5c3_Buffer) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 21, "") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - } else { - var templ_7745c5c3_Var12 = []any{ButtonClasses(p)} - templ_7745c5c3_Err = templ.RenderCSSItems(ctx, templ_7745c5c3_Buffer, templ_7745c5c3_Var12...) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 22, "") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - } - return nil - }) -} - -var _ = templruntime.GeneratedTemplate diff --git a/generated/ui/card/Card.html.twig b/generated/ui/card/Card.html.twig deleted file mode 100644 index 658d7a7..0000000 --- a/generated/ui/card/Card.html.twig +++ /dev/null @@ -1,3 +0,0 @@ -{# Code generated by @ui8kit/codegen. DO NOT EDIT. #} -{# ui.card — Card renders the bordered surface wrapper. #} -{{ children|default('')|raw }}
diff --git a/generated/ui/card/Card.latte b/generated/ui/card/Card.latte deleted file mode 100644 index 32c2e18..0000000 --- a/generated/ui/card/Card.latte +++ /dev/null @@ -1,12 +0,0 @@ -{* Code generated by @ui8kit/codegen. DO NOT EDIT. *} -{* ui.card — Card renders the bordered surface wrapper. *} -{parameters - string $class = '', - string $variant = '', - array $attrs = [], - string $children = '', -} -
{$children|noescape}
diff --git a/generated/ui/card/Card.svelte b/generated/ui/card/Card.svelte deleted file mode 100644 index c84fe3d..0000000 --- a/generated/ui/card/Card.svelte +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - -
- {@render children?.()} -
diff --git a/generated/ui/card/Card.vue b/generated/ui/card/Card.vue deleted file mode 100644 index 467f5f0..0000000 --- a/generated/ui/card/Card.vue +++ /dev/null @@ -1,28 +0,0 @@ - - - - - diff --git a/generated/ui/card/CardContent.html.twig b/generated/ui/card/CardContent.html.twig deleted file mode 100644 index 7f5f7c0..0000000 --- a/generated/ui/card/CardContent.html.twig +++ /dev/null @@ -1,3 +0,0 @@ -{# Code generated by @ui8kit/codegen. DO NOT EDIT. #} -{# ui.card — CardContent renders the padded main body slot. #} -{{ children|default('')|raw }}
diff --git a/generated/ui/card/CardContent.latte b/generated/ui/card/CardContent.latte deleted file mode 100644 index c8fc2dc..0000000 --- a/generated/ui/card/CardContent.latte +++ /dev/null @@ -1,11 +0,0 @@ -{* Code generated by @ui8kit/codegen. DO NOT EDIT. *} -{* ui.card — CardContent renders the padded main body slot. *} -{parameters - string $class = '', - array $attrs = [], - string $children = '', -} -
{$children|noescape}
diff --git a/generated/ui/card/CardContent.svelte b/generated/ui/card/CardContent.svelte deleted file mode 100644 index 0a28f84..0000000 --- a/generated/ui/card/CardContent.svelte +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - -
- {@render children?.()} -
diff --git a/generated/ui/card/CardContent.vue b/generated/ui/card/CardContent.vue deleted file mode 100644 index 466ee72..0000000 --- a/generated/ui/card/CardContent.vue +++ /dev/null @@ -1,24 +0,0 @@ - - - - - diff --git a/generated/ui/card/CardDescription.html.twig b/generated/ui/card/CardDescription.html.twig deleted file mode 100644 index add38b0..0000000 --- a/generated/ui/card/CardDescription.html.twig +++ /dev/null @@ -1,3 +0,0 @@ -{# Code generated by @ui8kit/codegen. DO NOT EDIT. #} -{# ui.card — CardDescription renders a muted subtitle in a p element. #} -{{ children|default('')|raw }}

diff --git a/generated/ui/card/CardDescription.latte b/generated/ui/card/CardDescription.latte deleted file mode 100644 index 1f5d9c0..0000000 --- a/generated/ui/card/CardDescription.latte +++ /dev/null @@ -1,11 +0,0 @@ -{* Code generated by @ui8kit/codegen. DO NOT EDIT. *} -{* ui.card — CardDescription renders a muted subtitle in a p element. *} -{parameters - string $class = '', - array $attrs = [], - string $children = '', -} -

{$children|noescape}

diff --git a/generated/ui/card/CardDescription.svelte b/generated/ui/card/CardDescription.svelte deleted file mode 100644 index f02de0d..0000000 --- a/generated/ui/card/CardDescription.svelte +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - -

- {@render children?.()} -

diff --git a/generated/ui/card/CardDescription.vue b/generated/ui/card/CardDescription.vue deleted file mode 100644 index a9bab54..0000000 --- a/generated/ui/card/CardDescription.vue +++ /dev/null @@ -1,24 +0,0 @@ - - - - - diff --git a/generated/ui/card/CardFooter.html.twig b/generated/ui/card/CardFooter.html.twig deleted file mode 100644 index 96eda53..0000000 --- a/generated/ui/card/CardFooter.html.twig +++ /dev/null @@ -1,3 +0,0 @@ -{# Code generated by @ui8kit/codegen. DO NOT EDIT. #} -{# ui.card — CardFooter renders the bottom action slot. #} -{{ children|default('')|raw }} diff --git a/generated/ui/card/CardFooter.latte b/generated/ui/card/CardFooter.latte deleted file mode 100644 index d5557f3..0000000 --- a/generated/ui/card/CardFooter.latte +++ /dev/null @@ -1,11 +0,0 @@ -{* Code generated by @ui8kit/codegen. DO NOT EDIT. *} -{* ui.card — CardFooter renders the bottom action slot. *} -{parameters - string $class = '', - array $attrs = [], - string $children = '', -} -
{$children|noescape}
diff --git a/generated/ui/card/CardFooter.svelte b/generated/ui/card/CardFooter.svelte deleted file mode 100644 index a9ada19..0000000 --- a/generated/ui/card/CardFooter.svelte +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - -
- {@render children?.()} -
diff --git a/generated/ui/card/CardFooter.vue b/generated/ui/card/CardFooter.vue deleted file mode 100644 index 824562a..0000000 --- a/generated/ui/card/CardFooter.vue +++ /dev/null @@ -1,24 +0,0 @@ - - - - - diff --git a/generated/ui/card/CardHeader.html.twig b/generated/ui/card/CardHeader.html.twig deleted file mode 100644 index 5dc0e52..0000000 --- a/generated/ui/card/CardHeader.html.twig +++ /dev/null @@ -1,3 +0,0 @@ -{# Code generated by @ui8kit/codegen. DO NOT EDIT. #} -{# ui.card — CardHeader renders the top slot. #} -{{ children|default('')|raw }} diff --git a/generated/ui/card/CardHeader.latte b/generated/ui/card/CardHeader.latte deleted file mode 100644 index e5e8840..0000000 --- a/generated/ui/card/CardHeader.latte +++ /dev/null @@ -1,11 +0,0 @@ -{* Code generated by @ui8kit/codegen. DO NOT EDIT. *} -{* ui.card — CardHeader renders the top slot. *} -{parameters - string $class = '', - array $attrs = [], - string $children = '', -} -
{$children|noescape}
diff --git a/generated/ui/card/CardHeader.svelte b/generated/ui/card/CardHeader.svelte deleted file mode 100644 index 27c9be0..0000000 --- a/generated/ui/card/CardHeader.svelte +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - -
- {@render children?.()} -
diff --git a/generated/ui/card/CardHeader.vue b/generated/ui/card/CardHeader.vue deleted file mode 100644 index dfb7a7f..0000000 --- a/generated/ui/card/CardHeader.vue +++ /dev/null @@ -1,24 +0,0 @@ - - - - - diff --git a/generated/ui/card/CardTitle.html.twig b/generated/ui/card/CardTitle.html.twig deleted file mode 100644 index 56d527a..0000000 --- a/generated/ui/card/CardTitle.html.twig +++ /dev/null @@ -1,4 +0,0 @@ -{# Code generated by @ui8kit/codegen. DO NOT EDIT. #} -{# ui.card — CardTitle renders heading text at the As level (default h2). #} -{% set uiTag = ui8kit_title_tag((as|default(0))) %} -<{{ uiTag }}{{ ui8kit_attr_str({ 'class': ui8kit_or_null(ui8kit_classes('cardTitleClasses', { 'class': (class|default('')) })) }, attrs|default({})) }}>{{ children|default('')|raw }} diff --git a/generated/ui/card/CardTitle.latte b/generated/ui/card/CardTitle.latte deleted file mode 100644 index 5bead98..0000000 --- a/generated/ui/card/CardTitle.latte +++ /dev/null @@ -1,13 +0,0 @@ -{* Code generated by @ui8kit/codegen. DO NOT EDIT. *} -{* ui.card — CardTitle renders heading text at the As level (default h2). *} -{parameters - string $class = '', - int $as = 0, - array $attrs = [], - string $children = '', -} -{var $uiTag = \UI8Kit\Rt::titleTag($as)} -

{$children|noescape}

diff --git a/generated/ui/card/CardTitle.svelte b/generated/ui/card/CardTitle.svelte deleted file mode 100644 index 729d315..0000000 --- a/generated/ui/card/CardTitle.svelte +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - {@render children?.()} - diff --git a/generated/ui/card/CardTitle.vue b/generated/ui/card/CardTitle.vue deleted file mode 100644 index 2d9ec12..0000000 --- a/generated/ui/card/CardTitle.vue +++ /dev/null @@ -1,30 +0,0 @@ - - - - - diff --git a/generated/ui/card/card.shared.ts b/generated/ui/card/card.shared.ts deleted file mode 100644 index 56a1b09..0000000 --- a/generated/ui/card/card.shared.ts +++ /dev/null @@ -1,94 +0,0 @@ -// Code generated by @ui8kit/codegen. DO NOT EDIT. -// ui.card — shared TypeScript contract (types + classes helpers) - -import { cn, composeRecipe, type RecipeKey } from "../../utils"; -import cardRecipeJson from "./card.variants.json"; - -export const cardRecipe = cardRecipeJson; - -export type CardVariant = RecipeKey; - -/** Card renders the bordered surface wrapper. */ -export type CardBaseProps = { - variant?: CardVariant; -}; - -export type CardClassesInput = { - variant?: CardVariant; - className?: string; -}; - -/** Compose Card classes without rendering — the cross-runtime `asChild` substitute. */ -export function cardClasses(input: CardClassesInput = {}): string { - return cn(composeRecipe(cardRecipe, { variant: input.variant }), input.className); -} - -/** CardHeader renders the top slot. */ -export type CardHeaderBaseProps = { - -}; - -export type CardHeaderClassesInput = { - className?: string; -}; - -/** Compose CardHeader classes without rendering — the cross-runtime `asChild` substitute. */ -export function cardHeaderClasses(input: CardHeaderClassesInput = {}): string { - return cn("grid auto-rows-min items-start gap-1.5 px-6", input.className); -} - -/** CardTitle renders heading text at the As level (default h2). */ -export type CardTitleBaseProps = { - as?: 1 | 2 | 3 | 4 | 5 | 6; -}; - -export type CardTitleClassesInput = { - className?: string; -}; - -/** Compose CardTitle classes without rendering — the cross-runtime `asChild` substitute. */ -export function cardTitleClasses(input: CardTitleClassesInput = {}): string { - return cn("font-semibold leading-none", input.className); -} - -/** CardDescription renders a muted subtitle in a p element. */ -export type CardDescriptionBaseProps = { - -}; - -export type CardDescriptionClassesInput = { - className?: string; -}; - -/** Compose CardDescription classes without rendering — the cross-runtime `asChild` substitute. */ -export function cardDescriptionClasses(input: CardDescriptionClassesInput = {}): string { - return cn("text-sm text-muted-foreground", input.className); -} - -/** CardContent renders the padded main body slot. */ -export type CardContentBaseProps = { - -}; - -export type CardContentClassesInput = { - className?: string; -}; - -/** Compose CardContent classes without rendering — the cross-runtime `asChild` substitute. */ -export function cardContentClasses(input: CardContentClassesInput = {}): string { - return cn("px-6", input.className); -} - -/** CardFooter renders the bottom action slot. */ -export type CardFooterBaseProps = { - -}; - -export type CardFooterClassesInput = { - className?: string; -}; - -/** Compose CardFooter classes without rendering — the cross-runtime `asChild` substitute. */ -export function cardFooterClasses(input: CardFooterClassesInput = {}): string { - return cn("flex items-center px-6", input.className); -} diff --git a/generated/ui/card/card.solid.tsx b/generated/ui/card/card.solid.tsx deleted file mode 100644 index 4dc6134..0000000 --- a/generated/ui/card/card.solid.tsx +++ /dev/null @@ -1,128 +0,0 @@ -// Code generated by @ui8kit/codegen. DO NOT EDIT. -/** - * Card groups related content in one bordered surface. - * Card uses header, content, and footer slots. - * For semantic root elements (section, article), use CardClasses on a manual wrapper. - */ - -import { splitProps, type JSX, type Component } from "solid-js"; -import { Dynamic } from "solid-js/web"; -import { cardClasses, cardContentClasses, cardDescriptionClasses, cardFooterClasses, cardHeaderClasses, cardTitleClasses, type CardVariant } from "./card.shared"; -import { titleTag } from "../../utils/expr"; - -/** - * Card renders the bordered surface wrapper. - */ -export type CardProps = Omit, "class" | "className" | "children" | "variant"> & { - variant?: CardVariant; - class?: string; - className?: string; - children?: JSX.Element; -}; - -export const Card: Component = (props) => { - const [local, rest] = splitProps(props, ["variant", "class", "className", "children"]); - const cls = () => cardClasses({ variant: local.variant, className: local.class ?? local.className }); - return ( -
- {local.children} -
- ); -}; - -/** - * CardHeader renders the top slot. - */ -export type CardHeaderProps = Omit, "class" | "className" | "children"> & { - class?: string; - className?: string; - children?: JSX.Element; -}; - -export const CardHeader: Component = (props) => { - const [local, rest] = splitProps(props, ["class", "className", "children"]); - const cls = () => cardHeaderClasses({ className: local.class ?? local.className }); - return ( -
- {local.children} -
- ); -}; - -/** - * CardTitle renders heading text at the As level (default h2). - */ -export type CardTitleProps = Omit, "class" | "className" | "children" | "as"> & { - as?: 1 | 2 | 3 | 4 | 5 | 6; - class?: string; - className?: string; - children?: JSX.Element; -}; - -export const CardTitle: Component = (props) => { - const [local, rest] = splitProps(props, ["as", "class", "className", "children"]); - const resolvedTagValue = () => titleTag(local.as); - const cls = () => cardTitleClasses({ className: local.class ?? local.className }); - return ( - - {local.children} - - ); -}; - -/** - * CardDescription renders a muted subtitle in a p element. - */ -export type CardDescriptionProps = Omit, "class" | "className" | "children"> & { - class?: string; - className?: string; - children?: JSX.Element; -}; - -export const CardDescription: Component = (props) => { - const [local, rest] = splitProps(props, ["class", "className", "children"]); - const cls = () => cardDescriptionClasses({ className: local.class ?? local.className }); - return ( -

- {local.children} -

- ); -}; - -/** - * CardContent renders the padded main body slot. - */ -export type CardContentProps = Omit, "class" | "className" | "children"> & { - class?: string; - className?: string; - children?: JSX.Element; -}; - -export const CardContent: Component = (props) => { - const [local, rest] = splitProps(props, ["class", "className", "children"]); - const cls = () => cardContentClasses({ className: local.class ?? local.className }); - return ( -
- {local.children} -
- ); -}; - -/** - * CardFooter renders the bottom action slot. - */ -export type CardFooterProps = Omit, "class" | "className" | "children"> & { - class?: string; - className?: string; - children?: JSX.Element; -}; - -export const CardFooter: Component = (props) => { - const [local, rest] = splitProps(props, ["class", "className", "children"]); - const cls = () => cardFooterClasses({ className: local.class ?? local.className }); - return ( -
- {local.children} -
- ); -}; diff --git a/generated/ui/card/card.templ b/generated/ui/card/card.templ deleted file mode 100644 index 278580f..0000000 --- a/generated/ui/card/card.templ +++ /dev/null @@ -1,195 +0,0 @@ -// Code generated by @ui8kit/codegen. DO NOT EDIT. - -/* -Card groups related content in one bordered surface. -Card uses header, content, and footer slots. -For semantic root elements (section, article), use CardClasses on a manual wrapper. -*/ - -package card - -import ( - uiutils "github.com/ui8kit/ui/utils" -) - -// CardProps configures Card. -type CardProps struct { - // Class — adds Tailwind utilities - Class string - // Variant — surface preset: default, raised, kpi, muted, ghost, compact, flat, accent - Variant string - Attrs templ.Attributes -} - -// CardClasses composes Card classes without rendering — -// the server-composition escape hatch for custom root elements. -func CardClasses(p CardProps) string { - return uiutils.Compose(CardVariants, map[string]string{ - "variant": p.Variant, - }, p.Class) -} - -// Card renders the Card contract. -templ Card(p CardProps) { -
- { children... } -
-} - -// CardHeaderProps configures CardHeader. -type CardHeaderProps struct { - // Class — adds Tailwind utilities - Class string - Attrs templ.Attributes -} - -// CardHeaderClasses composes CardHeader classes without rendering — -// the server-composition escape hatch for custom root elements. -func CardHeaderClasses(p CardHeaderProps) string { - return uiutils.Cn("grid auto-rows-min items-start gap-1.5 px-6", p.Class) -} - -// CardHeader renders the CardHeader contract. -templ CardHeader(p CardHeaderProps) { -
- { children... } -
-} - -// CardTitleProps configures CardTitle. -type CardTitleProps struct { - // Class — adds Tailwind utilities - Class string - // As — maps to h1-h6 (default h2) - As uiutils.HeadingLevel - Attrs templ.Attributes -} - -// CardTitleClasses composes CardTitle classes without rendering — -// the server-composition escape hatch for custom root elements. -func CardTitleClasses(p CardTitleProps) string { - return uiutils.Cn("font-semibold leading-none", p.Class) -} - -// CardTitle renders the CardTitle contract. -templ CardTitle(p CardTitleProps) { - switch uiutils.TitleTag(p.As) { - case "h1": -

- { children... } -

- case "h3": -

- { children... } -

- case "h4": -

- { children... } -

- case "h5": -
- { children... } -
- case "h6": -
- { children... } -
- default: -

- { children... } -

- } -} - -// CardDescriptionProps configures CardDescription. -type CardDescriptionProps struct { - // Class — adds Tailwind utilities - Class string - Attrs templ.Attributes -} - -// CardDescriptionClasses composes CardDescription classes without rendering — -// the server-composition escape hatch for custom root elements. -func CardDescriptionClasses(p CardDescriptionProps) string { - return uiutils.Cn("text-sm text-muted-foreground", p.Class) -} - -// CardDescription renders the CardDescription contract. -templ CardDescription(p CardDescriptionProps) { -

- { children... } -

-} - -// CardContentProps configures CardContent. -type CardContentProps struct { - // Class — adds Tailwind utilities - Class string - Attrs templ.Attributes -} - -// CardContentClasses composes CardContent classes without rendering — -// the server-composition escape hatch for custom root elements. -func CardContentClasses(p CardContentProps) string { - return uiutils.Cn("px-6", p.Class) -} - -// CardContent renders the CardContent contract. -templ CardContent(p CardContentProps) { -
- { children... } -
-} - -// CardFooterProps configures CardFooter. -type CardFooterProps struct { - // Class — adds Tailwind utilities - Class string - Attrs templ.Attributes -} - -// CardFooterClasses composes CardFooter classes without rendering — -// the server-composition escape hatch for custom root elements. -func CardFooterClasses(p CardFooterProps) string { - return uiutils.Cn("flex items-center px-6", p.Class) -} - -// CardFooter renders the CardFooter contract. -templ CardFooter(p CardFooterProps) { -
- { children... } -
-} diff --git a/generated/ui/card/card.tsx b/generated/ui/card/card.tsx deleted file mode 100644 index 64fbe53..0000000 --- a/generated/ui/card/card.tsx +++ /dev/null @@ -1,149 +0,0 @@ -// Code generated by @ui8kit/codegen. DO NOT EDIT. -/** - * Card groups related content in one bordered surface. - * Card uses header, content, and footer slots. - * For semantic root elements (section, article), use CardClasses on a manual wrapper. - */ - -import { forwardRef, type ReactNode, type HTMLAttributes, type ElementType, type Ref } from "react"; -import { cardClasses, cardContentClasses, cardDescriptionClasses, cardFooterClasses, cardHeaderClasses, cardTitleClasses, type CardVariant } from "./card.shared"; -import { titleTag } from "../../utils/expr"; -import { Slot } from "../slot/slot"; - -/** - * Card renders the bordered surface wrapper. - */ -export type CardProps = Omit, "className" | "children" | "variant"> & { - variant?: CardVariant; - className?: string; - children?: ReactNode; - asChild?: boolean; -}; - -export const Card = forwardRef(function Card( - { variant, className, children, asChild, ...rest }, - ref -) { - const cls = cardClasses({ variant, className }); - if (asChild) { - return ( - - {children} - - ); - } - return ( -
- {children} -
- ); -}); -Card.displayName = "Card"; - -/** - * CardHeader renders the top slot. - */ -export type CardHeaderProps = Omit, "className" | "children"> & { - className?: string; - children?: ReactNode; -}; - -export const CardHeader = forwardRef(function CardHeader( - { className, children, ...rest }, - ref -) { - const cls = cardHeaderClasses({ className }); - return ( -
- {children} -
- ); -}); -CardHeader.displayName = "CardHeader"; - -/** - * CardTitle renders heading text at the As level (default h2). - */ -export type CardTitleProps = Omit, "className" | "children" | "as"> & { - as?: 1 | 2 | 3 | 4 | 5 | 6; - className?: string; - children?: ReactNode; -}; - -export const CardTitle = forwardRef(function CardTitle( - { as, className, children, ...rest }, - ref -) { - const cls = cardTitleClasses({ className }); - const resolvedTagValue = titleTag(as); - const Tag = resolvedTagValue as ElementType; - return ( - } className={cls || undefined} {...rest}> - {children} - - ); -}); -CardTitle.displayName = "CardTitle"; - -/** - * CardDescription renders a muted subtitle in a p element. - */ -export type CardDescriptionProps = Omit, "className" | "children"> & { - className?: string; - children?: ReactNode; -}; - -export const CardDescription = forwardRef(function CardDescription( - { className, children, ...rest }, - ref -) { - const cls = cardDescriptionClasses({ className }); - return ( -

- {children} -

- ); -}); -CardDescription.displayName = "CardDescription"; - -/** - * CardContent renders the padded main body slot. - */ -export type CardContentProps = Omit, "className" | "children"> & { - className?: string; - children?: ReactNode; -}; - -export const CardContent = forwardRef(function CardContent( - { className, children, ...rest }, - ref -) { - const cls = cardContentClasses({ className }); - return ( -
- {children} -
- ); -}); -CardContent.displayName = "CardContent"; - -/** - * CardFooter renders the bottom action slot. - */ -export type CardFooterProps = Omit, "className" | "children"> & { - className?: string; - children?: ReactNode; -}; - -export const CardFooter = forwardRef(function CardFooter( - { className, children, ...rest }, - ref -) { - const cls = cardFooterClasses({ className }); - return ( -
- {children} -
- ); -}); -CardFooter.displayName = "CardFooter"; diff --git a/generated/ui/card/card.variants.json b/generated/ui/card/card.variants.json deleted file mode 100644 index cdf3094..0000000 --- a/generated/ui/card/card.variants.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "$schema": "../../schemas/variants.schema.json", - "id": "ui.card", - "base": "flex flex-col gap-6 rounded-xl border bg-card py-6 text-card-foreground shadow-sm", - "keys": [ - "variant" - ], - "defaults": { - "variant": "default" - }, - "byKey": { - "variant": { - "default": "", - "raised": "", - "kpi": "bg-card/50", - "muted": "bg-muted/40", - "ghost": "border-dashed bg-background shadow-none", - "compact": "p-4", - "flat": "shadow-none", - "accent": "border-transparent bg-accent/30" - } - } -} diff --git a/generated/ui/card/card_gen.go b/generated/ui/card/card_gen.go deleted file mode 100644 index a570149..0000000 --- a/generated/ui/card/card_gen.go +++ /dev/null @@ -1,15 +0,0 @@ -// Code generated by @ui8kit/codegen. DO NOT EDIT. - -package card - -import ( - _ "embed" - - uiutils "github.com/ui8kit/ui/utils" -) - -//go:embed card.variants.json -var cardVariantsJSON []byte - -// CardVariants is the CVA recipe shared verbatim by all runtimes. -var CardVariants = uiutils.MustParseVariantRecipe(cardVariantsJSON).ToVariants() diff --git a/generated/ui/card/card_templ.go b/generated/ui/card/card_templ.go deleted file mode 100644 index b8d0a6a..0000000 --- a/generated/ui/card/card_templ.go +++ /dev/null @@ -1,697 +0,0 @@ -// Code generated by templ - DO NOT EDIT. - -// templ: version: v0.3.1001 -// Code generated by @ui8kit/codegen. DO NOT EDIT. - -/* - - -Card groups related content in one bordered surface. - - -Card uses header, content, and footer slots. - - -For semantic root elements (section, article), use CardClasses on a manual wrapper. - - -*/ - -package card - -//lint:file-ignore SA4006 This context is only used if a nested component is present. - -import "github.com/a-h/templ" -import templruntime "github.com/a-h/templ/runtime" - -import ( - uiutils "github.com/fastygo/sezonmarket/internal/utils" -) - -// CardProps configures Card. -type CardProps struct { - // Class — adds Tailwind utilities - Class string - // Variant — surface preset: default, raised, kpi, muted, ghost, compact, flat, accent - Variant string - Attrs templ.Attributes -} - -// CardClasses composes Card classes without rendering — -// the server-composition escape hatch for custom root elements. -func CardClasses(p CardProps) string { - return uiutils.Compose(CardVariants, map[string]string{ - "variant": p.Variant, - }, p.Class) -} - -// Card renders the Card contract. -func Card(p CardProps) templ.Component { - return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { - templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context - if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil { - return templ_7745c5c3_CtxErr - } - templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) - if !templ_7745c5c3_IsBuffer { - defer func() { - templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) - if templ_7745c5c3_Err == nil { - templ_7745c5c3_Err = templ_7745c5c3_BufErr - } - }() - } - ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var1 := templ.GetChildren(ctx) - if templ_7745c5c3_Var1 == nil { - templ_7745c5c3_Var1 = templ.NopComponent - } - ctx = templ.ClearChildren(ctx) - var templ_7745c5c3_Var2 = []any{CardClasses(p)} - templ_7745c5c3_Err = templ.RenderCSSItems(ctx, templ_7745c5c3_Buffer, templ_7745c5c3_Var2...) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 1, "
") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templ_7745c5c3_Var1.Render(ctx, templ_7745c5c3_Buffer) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 4, "
") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - return nil - }) -} - -// CardHeaderProps configures CardHeader. -type CardHeaderProps struct { - // Class — adds Tailwind utilities - Class string - Attrs templ.Attributes -} - -// CardHeaderClasses composes CardHeader classes without rendering — -// the server-composition escape hatch for custom root elements. -func CardHeaderClasses(p CardHeaderProps) string { - return uiutils.Cn("border-b border-border px-4 py-2", p.Class) -} - -// CardHeader renders the CardHeader contract. -func CardHeader(p CardHeaderProps) templ.Component { - return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { - templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context - if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil { - return templ_7745c5c3_CtxErr - } - templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) - if !templ_7745c5c3_IsBuffer { - defer func() { - templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) - if templ_7745c5c3_Err == nil { - templ_7745c5c3_Err = templ_7745c5c3_BufErr - } - }() - } - ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var4 := templ.GetChildren(ctx) - if templ_7745c5c3_Var4 == nil { - templ_7745c5c3_Var4 = templ.NopComponent - } - ctx = templ.ClearChildren(ctx) - var templ_7745c5c3_Var5 = []any{CardHeaderClasses(p)} - templ_7745c5c3_Err = templ.RenderCSSItems(ctx, templ_7745c5c3_Buffer, templ_7745c5c3_Var5...) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 5, "
") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templ_7745c5c3_Var4.Render(ctx, templ_7745c5c3_Buffer) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 8, "
") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - return nil - }) -} - -// CardTitleProps configures CardTitle. -type CardTitleProps struct { - // Class — adds Tailwind utilities - Class string - // As — maps to h1-h6 (default h2) - As uiutils.HeadingLevel - Attrs templ.Attributes -} - -// CardTitleClasses composes CardTitle classes without rendering — -// the server-composition escape hatch for custom root elements. -func CardTitleClasses(p CardTitleProps) string { - return uiutils.Cn("text-sm font-semibold", p.Class) -} - -// CardTitle renders the CardTitle contract. -func CardTitle(p CardTitleProps) templ.Component { - return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { - templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context - if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil { - return templ_7745c5c3_CtxErr - } - templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) - if !templ_7745c5c3_IsBuffer { - defer func() { - templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) - if templ_7745c5c3_Err == nil { - templ_7745c5c3_Err = templ_7745c5c3_BufErr - } - }() - } - ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var7 := templ.GetChildren(ctx) - if templ_7745c5c3_Var7 == nil { - templ_7745c5c3_Var7 = templ.NopComponent - } - ctx = templ.ClearChildren(ctx) - switch uiutils.TitleTag(p.As) { - case "h1": - var templ_7745c5c3_Var8 = []any{CardTitleClasses(p)} - templ_7745c5c3_Err = templ.RenderCSSItems(ctx, templ_7745c5c3_Buffer, templ_7745c5c3_Var8...) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 9, "

") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templ_7745c5c3_Var7.Render(ctx, templ_7745c5c3_Buffer) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 12, "

") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - case "h3": - var templ_7745c5c3_Var10 = []any{CardTitleClasses(p)} - templ_7745c5c3_Err = templ.RenderCSSItems(ctx, templ_7745c5c3_Buffer, templ_7745c5c3_Var10...) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 13, "

") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templ_7745c5c3_Var7.Render(ctx, templ_7745c5c3_Buffer) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 16, "

") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - case "h4": - var templ_7745c5c3_Var12 = []any{CardTitleClasses(p)} - templ_7745c5c3_Err = templ.RenderCSSItems(ctx, templ_7745c5c3_Buffer, templ_7745c5c3_Var12...) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 17, "

") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templ_7745c5c3_Var7.Render(ctx, templ_7745c5c3_Buffer) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 20, "

") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - case "h5": - var templ_7745c5c3_Var14 = []any{CardTitleClasses(p)} - templ_7745c5c3_Err = templ.RenderCSSItems(ctx, templ_7745c5c3_Buffer, templ_7745c5c3_Var14...) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 21, "
") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templ_7745c5c3_Var7.Render(ctx, templ_7745c5c3_Buffer) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 24, "
") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - case "h6": - var templ_7745c5c3_Var16 = []any{CardTitleClasses(p)} - templ_7745c5c3_Err = templ.RenderCSSItems(ctx, templ_7745c5c3_Buffer, templ_7745c5c3_Var16...) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 25, "
") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templ_7745c5c3_Var7.Render(ctx, templ_7745c5c3_Buffer) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 28, "
") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - default: - var templ_7745c5c3_Var18 = []any{CardTitleClasses(p)} - templ_7745c5c3_Err = templ.RenderCSSItems(ctx, templ_7745c5c3_Buffer, templ_7745c5c3_Var18...) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 29, "

") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templ_7745c5c3_Var7.Render(ctx, templ_7745c5c3_Buffer) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 32, "

") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - } - return nil - }) -} - -// CardDescriptionProps configures CardDescription. -type CardDescriptionProps struct { - // Class — adds Tailwind utilities - Class string - Attrs templ.Attributes -} - -// CardDescriptionClasses composes CardDescription classes without rendering — -// the server-composition escape hatch for custom root elements. -func CardDescriptionClasses(p CardDescriptionProps) string { - return uiutils.Cn("text-sm text-muted-foreground", p.Class) -} - -// CardDescription renders the CardDescription contract. -func CardDescription(p CardDescriptionProps) templ.Component { - return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { - templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context - if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil { - return templ_7745c5c3_CtxErr - } - templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) - if !templ_7745c5c3_IsBuffer { - defer func() { - templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) - if templ_7745c5c3_Err == nil { - templ_7745c5c3_Err = templ_7745c5c3_BufErr - } - }() - } - ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var20 := templ.GetChildren(ctx) - if templ_7745c5c3_Var20 == nil { - templ_7745c5c3_Var20 = templ.NopComponent - } - ctx = templ.ClearChildren(ctx) - var templ_7745c5c3_Var21 = []any{CardDescriptionClasses(p)} - templ_7745c5c3_Err = templ.RenderCSSItems(ctx, templ_7745c5c3_Buffer, templ_7745c5c3_Var21...) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 33, "

") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templ_7745c5c3_Var20.Render(ctx, templ_7745c5c3_Buffer) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 36, "

") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - return nil - }) -} - -// CardContentProps configures CardContent. -type CardContentProps struct { - // Class — adds Tailwind utilities - Class string - Attrs templ.Attributes -} - -// CardContentClasses composes CardContent classes without rendering — -// the server-composition escape hatch for custom root elements. -func CardContentClasses(p CardContentProps) string { - return uiutils.Cn("p-4", p.Class) -} - -// CardContent renders the CardContent contract. -func CardContent(p CardContentProps) templ.Component { - return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { - templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context - if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil { - return templ_7745c5c3_CtxErr - } - templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) - if !templ_7745c5c3_IsBuffer { - defer func() { - templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) - if templ_7745c5c3_Err == nil { - templ_7745c5c3_Err = templ_7745c5c3_BufErr - } - }() - } - ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var23 := templ.GetChildren(ctx) - if templ_7745c5c3_Var23 == nil { - templ_7745c5c3_Var23 = templ.NopComponent - } - ctx = templ.ClearChildren(ctx) - var templ_7745c5c3_Var24 = []any{CardContentClasses(p)} - templ_7745c5c3_Err = templ.RenderCSSItems(ctx, templ_7745c5c3_Buffer, templ_7745c5c3_Var24...) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 37, "
") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templ_7745c5c3_Var23.Render(ctx, templ_7745c5c3_Buffer) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 40, "
") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - return nil - }) -} - -// CardFooterProps configures CardFooter. -type CardFooterProps struct { - // Class — adds Tailwind utilities - Class string - Attrs templ.Attributes -} - -// CardFooterClasses composes CardFooter classes without rendering — -// the server-composition escape hatch for custom root elements. -func CardFooterClasses(p CardFooterProps) string { - return uiutils.Cn("border-t border-border px-4 py-3", p.Class) -} - -// CardFooter renders the CardFooter contract. -func CardFooter(p CardFooterProps) templ.Component { - return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { - templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context - if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil { - return templ_7745c5c3_CtxErr - } - templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) - if !templ_7745c5c3_IsBuffer { - defer func() { - templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) - if templ_7745c5c3_Err == nil { - templ_7745c5c3_Err = templ_7745c5c3_BufErr - } - }() - } - ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var26 := templ.GetChildren(ctx) - if templ_7745c5c3_Var26 == nil { - templ_7745c5c3_Var26 = templ.NopComponent - } - ctx = templ.ClearChildren(ctx) - var templ_7745c5c3_Var27 = []any{CardFooterClasses(p)} - templ_7745c5c3_Err = templ.RenderCSSItems(ctx, templ_7745c5c3_Buffer, templ_7745c5c3_Var27...) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 41, "
") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templ_7745c5c3_Var26.Render(ctx, templ_7745c5c3_Buffer) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 44, "
") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - return nil - }) -} - -var _ = templruntime.GeneratedTemplate diff --git a/generated/ui/checkbox/Checkbox.html.twig b/generated/ui/checkbox/Checkbox.html.twig deleted file mode 100644 index 272d2f0..0000000 --- a/generated/ui/checkbox/Checkbox.html.twig +++ /dev/null @@ -1,3 +0,0 @@ -{# Code generated by @ui8kit/codegen. DO NOT EDIT. #} -{# ui.checkbox — Checkbox renders a styled input[type=checkbox]. #} - diff --git a/generated/ui/checkbox/Checkbox.latte b/generated/ui/checkbox/Checkbox.latte deleted file mode 100644 index 9c34518..0000000 --- a/generated/ui/checkbox/Checkbox.latte +++ /dev/null @@ -1,31 +0,0 @@ -{* Code generated by @ui8kit/codegen. DO NOT EDIT. *} -{* ui.checkbox — Checkbox renders a styled input[type=checkbox]. *} -{parameters - string $variant = '', - string $size = '', - string $class = '', - string $name = '', - string $value = '', - bool $checked = false, - bool $disabled = false, - bool $required = false, - string $id = '', - string $role = '', - string $tabindex = '', - string $ariaLabel = '', - array $attrs = [], -} - diff --git a/generated/ui/checkbox/Checkbox.svelte b/generated/ui/checkbox/Checkbox.svelte deleted file mode 100644 index a8004f1..0000000 --- a/generated/ui/checkbox/Checkbox.svelte +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - diff --git a/generated/ui/checkbox/Checkbox.vue b/generated/ui/checkbox/Checkbox.vue deleted file mode 100644 index 41baa42..0000000 --- a/generated/ui/checkbox/Checkbox.vue +++ /dev/null @@ -1,30 +0,0 @@ - - - - - diff --git a/generated/ui/checkbox/checkbox.shared.ts b/generated/ui/checkbox/checkbox.shared.ts deleted file mode 100644 index 5cd454f..0000000 --- a/generated/ui/checkbox/checkbox.shared.ts +++ /dev/null @@ -1,30 +0,0 @@ -// Code generated by @ui8kit/codegen. DO NOT EDIT. -// ui.checkbox — shared TypeScript contract (types + classes helpers) - -import { cn, composeRecipe, type RecipeKey } from "../../utils"; -import checkboxRecipeJson from "./checkbox.variants.json"; - -export const checkboxRecipe = checkboxRecipeJson; - -export type CheckboxVariant = RecipeKey; -export type CheckboxSize = RecipeKey; - -/** Checkbox renders a styled input[type=checkbox]. */ -export type CheckboxBaseProps = { - variant?: CheckboxVariant; - size?: CheckboxSize; - checked?: boolean; - disabled?: boolean; - required?: boolean; -}; - -export type CheckboxClassesInput = { - variant?: CheckboxVariant; - size?: CheckboxSize; - className?: string; -}; - -/** Compose Checkbox classes without rendering — the cross-runtime `asChild` substitute. */ -export function checkboxClasses(input: CheckboxClassesInput = {}): string { - return cn(composeRecipe(checkboxRecipe, { variant: input.variant, size: input.size }), input.className); -} diff --git a/generated/ui/checkbox/checkbox.solid.tsx b/generated/ui/checkbox/checkbox.solid.tsx deleted file mode 100644 index fba96a0..0000000 --- a/generated/ui/checkbox/checkbox.solid.tsx +++ /dev/null @@ -1,29 +0,0 @@ -// Code generated by @ui8kit/codegen. DO NOT EDIT. -/** - * Checkbox is a native boolean form control. - * Wireframe styling via Variant and Size; supports standard ARIA attrs. - */ - -import { splitProps, type JSX, type Component } from "solid-js"; -import { checkboxClasses, type CheckboxSize, type CheckboxVariant } from "./checkbox.shared"; - -/** - * Checkbox renders a styled input[type=checkbox]. - */ -export type CheckboxProps = Omit, "class" | "className" | "children" | "variant" | "size" | "checked" | "disabled" | "required"> & { - variant?: CheckboxVariant; - size?: CheckboxSize; - checked?: boolean; - disabled?: boolean; - required?: boolean; - class?: string; - className?: string; -}; - -export const Checkbox: Component = (props) => { - const [local, rest] = splitProps(props, ["variant", "size", "checked", "disabled", "required", "class", "className"]); - const cls = () => checkboxClasses({ variant: local.variant, size: local.size, className: local.class ?? local.className }); - return ( - - ); -}; diff --git a/generated/ui/checkbox/checkbox.templ b/generated/ui/checkbox/checkbox.templ deleted file mode 100644 index 51ee420..0000000 --- a/generated/ui/checkbox/checkbox.templ +++ /dev/null @@ -1,75 +0,0 @@ -// Code generated by @ui8kit/codegen. DO NOT EDIT. - -/* -Checkbox is a native boolean form control. -Wireframe styling via Variant and Size; supports standard ARIA attrs. -*/ - -package checkbox - -import ( - uiutils "github.com/ui8kit/ui/utils" -) - -// CheckboxProps configures Checkbox. -type CheckboxProps struct { - // Variant — sets appearance preset - Variant string - // Size — sets density preset - Size string - // Class — adds Tailwind utilities - Class string - Name string - Value string - Checked bool - Disabled bool - Required bool - // ID — element id - ID string - // Role — ARIA role override - Role string - // TabIndex — tab order override - TabIndex string - // AriaLabel — accessible name for unlabeled controls - AriaLabel string - Attrs templ.Attributes -} - -// CheckboxClasses composes Checkbox classes without rendering — -// the server-composition escape hatch for custom root elements. -func CheckboxClasses(p CheckboxProps) string { - return uiutils.Compose(CheckboxVariants, map[string]string{ - "variant": p.Variant, - "size": p.Size, - }, p.Class) -} - -// Checkbox renders the Checkbox contract. -templ Checkbox(p CheckboxProps) { - -} diff --git a/generated/ui/checkbox/checkbox.tsx b/generated/ui/checkbox/checkbox.tsx deleted file mode 100644 index a1ab7ab..0000000 --- a/generated/ui/checkbox/checkbox.tsx +++ /dev/null @@ -1,31 +0,0 @@ -// Code generated by @ui8kit/codegen. DO NOT EDIT. -/** - * Checkbox is a native boolean form control. - * Wireframe styling via Variant and Size; supports standard ARIA attrs. - */ - -import { forwardRef, type ReactNode, type InputHTMLAttributes } from "react"; -import { checkboxClasses, type CheckboxSize, type CheckboxVariant } from "./checkbox.shared"; - -/** - * Checkbox renders a styled input[type=checkbox]. - */ -export type CheckboxProps = Omit, "className" | "children" | "variant" | "size" | "checked" | "disabled" | "required"> & { - variant?: CheckboxVariant; - size?: CheckboxSize; - checked?: boolean; - disabled?: boolean; - required?: boolean; - className?: string; -}; - -export const Checkbox = forwardRef(function Checkbox( - { variant, size, checked, disabled, required, className, ...rest }, - ref -) { - const cls = checkboxClasses({ variant, size, className }); - return ( - - ); -}); -Checkbox.displayName = "Checkbox"; diff --git a/generated/ui/checkbox/checkbox.variants.json b/generated/ui/checkbox/checkbox.variants.json deleted file mode 100644 index e9cc01c..0000000 --- a/generated/ui/checkbox/checkbox.variants.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "$schema": "../../schemas/variants.schema.json", - "base": "rounded border border-primary text-primary focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50", - "byKey": { - "size": { - "default": "h-4 w-4", - "lg": "h-5 w-5", - "sm": "h-4 w-4", - "xs": "h-3 w-3" - }, - "variant": { - "default": "border-primary", - "ghost": "border-primary bg-muted/30", - "outline": "border-primary" - } - }, - "defaults": { - "size": "default", - "variant": "default" - }, - "id": "ui.checkbox", - "keys": [ - "variant", - "size" - ] -} diff --git a/generated/ui/checkbox/checkbox_gen.go b/generated/ui/checkbox/checkbox_gen.go deleted file mode 100644 index a3e53b8..0000000 --- a/generated/ui/checkbox/checkbox_gen.go +++ /dev/null @@ -1,15 +0,0 @@ -// Code generated by @ui8kit/codegen. DO NOT EDIT. - -package checkbox - -import ( - _ "embed" - - uiutils "github.com/ui8kit/ui/utils" -) - -//go:embed checkbox.variants.json -var checkboxVariantsJSON []byte - -// CheckboxVariants is the CVA recipe shared verbatim by all runtimes. -var CheckboxVariants = uiutils.MustParseVariantRecipe(checkboxVariantsJSON).ToVariants() diff --git a/generated/ui/checkbox/checkbox_templ.go b/generated/ui/checkbox/checkbox_templ.go deleted file mode 100644 index 2f42c06..0000000 --- a/generated/ui/checkbox/checkbox_templ.go +++ /dev/null @@ -1,257 +0,0 @@ -// Code generated by templ - DO NOT EDIT. - -// templ: version: v0.3.1001 -// Code generated by @ui8kit/codegen. DO NOT EDIT. - -/* - - -Checkbox is a native boolean form control. - - -Wireframe styling via Variant and Size; supports standard ARIA attrs. - - -*/ - -package checkbox - -//lint:file-ignore SA4006 This context is only used if a nested component is present. - -import "github.com/a-h/templ" -import templruntime "github.com/a-h/templ/runtime" - -import ( - uiutils "github.com/fastygo/sezonmarket/internal/utils" -) - -// CheckboxProps configures Checkbox. -type CheckboxProps struct { - // Variant — sets appearance preset - Variant string - // Size — sets density preset - Size string - // Class — adds Tailwind utilities - Class string - Name string - Value string - Checked bool - Disabled bool - Required bool - // ID — element id - ID string - // Role — ARIA role override - Role string - // TabIndex — tab order override - TabIndex string - // AriaLabel — accessible name for unlabeled controls - AriaLabel string - Attrs templ.Attributes -} - -// CheckboxClasses composes Checkbox classes without rendering — -// the server-composition escape hatch for custom root elements. -func CheckboxClasses(p CheckboxProps) string { - return uiutils.Compose(CheckboxVariants, map[string]string{ - "variant": p.Variant, - "size": p.Size, - }, p.Class) -} - -// Checkbox renders the Checkbox contract. -func Checkbox(p CheckboxProps) templ.Component { - return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { - templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context - if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil { - return templ_7745c5c3_CtxErr - } - templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) - if !templ_7745c5c3_IsBuffer { - defer func() { - templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) - if templ_7745c5c3_Err == nil { - templ_7745c5c3_Err = templ_7745c5c3_BufErr - } - }() - } - ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var1 := templ.GetChildren(ctx) - if templ_7745c5c3_Var1 == nil { - templ_7745c5c3_Var1 = templ.NopComponent - } - ctx = templ.ClearChildren(ctx) - var templ_7745c5c3_Var2 = []any{CheckboxClasses(p)} - templ_7745c5c3_Err = templ.RenderCSSItems(ctx, templ_7745c5c3_Buffer, templ_7745c5c3_Var2...) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 1, "") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - return nil - }) -} - -var _ = templruntime.GeneratedTemplate diff --git a/generated/ui/container/Container.html.twig b/generated/ui/container/Container.html.twig deleted file mode 100644 index 4454ec6..0000000 --- a/generated/ui/container/Container.html.twig +++ /dev/null @@ -1,4 +0,0 @@ -{# Code generated by @ui8kit/codegen. DO NOT EDIT. #} -{# ui.container — Container renders the outer content shell. #} -{% set uiTag = ui8kit_resolve_tag((tag|default('')), 'div', 'Container') %} -<{{ uiTag }}{{ ui8kit_attr_str({ 'class': ui8kit_or_null(ui8kit_classes('containerClasses', { 'class': (class|default('')) })) }, attrs|default({})) }}>{{ children|default('')|raw }} diff --git a/generated/ui/container/Container.latte b/generated/ui/container/Container.latte deleted file mode 100644 index 50fb502..0000000 --- a/generated/ui/container/Container.latte +++ /dev/null @@ -1,13 +0,0 @@ -{* Code generated by @ui8kit/codegen. DO NOT EDIT. *} -{* ui.container — Container renders the outer content shell. *} -{parameters - string $class = '', - string $tag = '', - array $attrs = [], - string $children = '', -} -{var $uiTag = \UI8Kit\Rt::resolveTag($tag, 'div', 'Container')} -
{$children|noescape}
diff --git a/generated/ui/container/Container.svelte b/generated/ui/container/Container.svelte deleted file mode 100644 index 2b3379b..0000000 --- a/generated/ui/container/Container.svelte +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - {@render children?.()} - diff --git a/generated/ui/container/Container.vue b/generated/ui/container/Container.vue deleted file mode 100644 index 1ceda38..0000000 --- a/generated/ui/container/Container.vue +++ /dev/null @@ -1,30 +0,0 @@ - - - - - diff --git a/generated/ui/container/container.shared.ts b/generated/ui/container/container.shared.ts deleted file mode 100644 index 5182141..0000000 --- a/generated/ui/container/container.shared.ts +++ /dev/null @@ -1,21 +0,0 @@ -// Code generated by @ui8kit/codegen. DO NOT EDIT. -// ui.container — shared TypeScript contract (types + classes helpers) - -import { cn, composeRecipe } from "../../utils"; -import containerRecipeJson from "./container.variants.json"; - -export const containerRecipe = containerRecipeJson; - -/** Container renders the outer content shell. */ -export type ContainerBaseProps = { - tag?: string; -}; - -export type ContainerClassesInput = { - className?: string; -}; - -/** Compose Container classes without rendering — the cross-runtime `asChild` substitute. */ -export function containerClasses(input: ContainerClassesInput = {}): string { - return cn(composeRecipe(containerRecipe, { }), input.className); -} diff --git a/generated/ui/container/container.solid.tsx b/generated/ui/container/container.solid.tsx deleted file mode 100644 index 51e3e9a..0000000 --- a/generated/ui/container/container.solid.tsx +++ /dev/null @@ -1,31 +0,0 @@ -// Code generated by @ui8kit/codegen. DO NOT EDIT. -/** - * Container wraps page content with a constrained width shell. - * Optional main or section tag for inner layout regions. - */ - -import { splitProps, type JSX, type Component } from "solid-js"; -import { Dynamic } from "solid-js/web"; -import { containerClasses } from "./container.shared"; -import { resolveTag, TagGroup } from "../../utils/tags"; - -/** - * Container renders the outer content shell. - */ -export type ContainerProps = Omit, "class" | "className" | "children" | "tag"> & { - tag?: string; - class?: string; - className?: string; - children?: JSX.Element; -}; - -export const Container: Component = (props) => { - const [local, rest] = splitProps(props, ["tag", "class", "className", "children"]); - const resolvedTagValue = () => resolveTag(local.tag, "div", TagGroup.Container); - const cls = () => containerClasses({ className: local.class ?? local.className }); - return ( - - {local.children} - - ); -}; diff --git a/generated/ui/container/container.templ b/generated/ui/container/container.templ deleted file mode 100644 index fd3a7a0..0000000 --- a/generated/ui/container/container.templ +++ /dev/null @@ -1,54 +0,0 @@ -// Code generated by @ui8kit/codegen. DO NOT EDIT. - -/* -Container wraps page content with a constrained width shell. -Optional main or section tag for inner layout regions. -*/ - -package container - -import ( - uiutils "github.com/ui8kit/ui/utils" -) - -// ContainerProps configures Container. -type ContainerProps struct { - // Class — adds Tailwind utilities - Class string - // Tag — div, main, or section - Tag string - Attrs templ.Attributes -} - -// ContainerClasses composes Container classes without rendering — -// the server-composition escape hatch for custom root elements. -func ContainerClasses(p ContainerProps) string { - return uiutils.Compose(ContainerVariants, map[string]string{}, p.Class) -} - -// Container renders the Container contract. -templ Container(p ContainerProps) { - switch uiutils.ResolveTag(p.Tag, "div", uiutils.TagGroupContainer) { - case "main": -
- { children... } -
- case "section": -
- { children... } -
- default: -
- { children... } -
- } -} diff --git a/generated/ui/container/container.tsx b/generated/ui/container/container.tsx deleted file mode 100644 index dd367c6..0000000 --- a/generated/ui/container/container.tsx +++ /dev/null @@ -1,42 +0,0 @@ -// Code generated by @ui8kit/codegen. DO NOT EDIT. -/** - * Container wraps page content with a constrained width shell. - * Optional main or section tag for inner layout regions. - */ - -import { forwardRef, type ReactNode, type HTMLAttributes, type ElementType, type Ref } from "react"; -import { containerClasses } from "./container.shared"; -import { resolveTag, TagGroup } from "../../utils/tags"; -import { Slot } from "../slot/slot"; - -/** - * Container renders the outer content shell. - */ -export type ContainerProps = Omit, "className" | "children" | "tag"> & { - tag?: string; - className?: string; - children?: ReactNode; - asChild?: boolean; -}; - -export const Container = forwardRef(function Container( - { tag, className, children, asChild, ...rest }, - ref -) { - const cls = containerClasses({ className }); - const resolvedTagValue = resolveTag(tag, "div", TagGroup.Container); - const Tag = resolvedTagValue as ElementType; - if (asChild) { - return ( - - {children} - - ); - } - return ( - } className={cls || undefined} {...rest}> - {children} - - ); -}); -Container.displayName = "Container"; diff --git a/generated/ui/container/container.variants.json b/generated/ui/container/container.variants.json deleted file mode 100644 index 017083a..0000000 --- a/generated/ui/container/container.variants.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "$schema": "../../schemas/variants.schema.json", - "base": "", - "byKey": {}, - "defaults": {}, - "id": "ui.container", - "keys": [] -} diff --git a/generated/ui/container/container_gen.go b/generated/ui/container/container_gen.go deleted file mode 100644 index a17b2a9..0000000 --- a/generated/ui/container/container_gen.go +++ /dev/null @@ -1,15 +0,0 @@ -// Code generated by @ui8kit/codegen. DO NOT EDIT. - -package container - -import ( - _ "embed" - - uiutils "github.com/ui8kit/ui/utils" -) - -//go:embed container.variants.json -var containerVariantsJSON []byte - -// ContainerVariants is the CVA recipe shared verbatim by all runtimes. -var ContainerVariants = uiutils.MustParseVariantRecipe(containerVariantsJSON).ToVariants() diff --git a/generated/ui/container/container_templ.go b/generated/ui/container/container_templ.go deleted file mode 100644 index 4d4bc20..0000000 --- a/generated/ui/container/container_templ.go +++ /dev/null @@ -1,188 +0,0 @@ -// Code generated by templ - DO NOT EDIT. - -// templ: version: v0.3.1001 -// Code generated by @ui8kit/codegen. DO NOT EDIT. - -/* - - -Container wraps page content with a constrained width shell. - - -Optional main or section tag for inner layout regions. - - -*/ - -package container - -//lint:file-ignore SA4006 This context is only used if a nested component is present. - -import "github.com/a-h/templ" -import templruntime "github.com/a-h/templ/runtime" - -import ( - uiutils "github.com/fastygo/sezonmarket/internal/utils" -) - -// ContainerProps configures Container. -type ContainerProps struct { - // Class — adds Tailwind utilities - Class string - // Tag — div, main, or section - Tag string - Attrs templ.Attributes -} - -// ContainerClasses composes Container classes without rendering — -// the server-composition escape hatch for custom root elements. -func ContainerClasses(p ContainerProps) string { - return uiutils.Compose(ContainerVariants, map[string]string{}, p.Class) -} - -// Container renders the Container contract. -func Container(p ContainerProps) templ.Component { - return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { - templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context - if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil { - return templ_7745c5c3_CtxErr - } - templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) - if !templ_7745c5c3_IsBuffer { - defer func() { - templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) - if templ_7745c5c3_Err == nil { - templ_7745c5c3_Err = templ_7745c5c3_BufErr - } - }() - } - ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var1 := templ.GetChildren(ctx) - if templ_7745c5c3_Var1 == nil { - templ_7745c5c3_Var1 = templ.NopComponent - } - ctx = templ.ClearChildren(ctx) - switch uiutils.ResolveTag(p.Tag, "div", uiutils.TagGroupContainer) { - case "main": - var templ_7745c5c3_Var2 = []any{ContainerClasses(p)} - templ_7745c5c3_Err = templ.RenderCSSItems(ctx, templ_7745c5c3_Buffer, templ_7745c5c3_Var2...) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 1, "
") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templ_7745c5c3_Var1.Render(ctx, templ_7745c5c3_Buffer) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 4, "
") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - case "section": - var templ_7745c5c3_Var4 = []any{ContainerClasses(p)} - templ_7745c5c3_Err = templ.RenderCSSItems(ctx, templ_7745c5c3_Buffer, templ_7745c5c3_Var4...) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 5, "
") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templ_7745c5c3_Var1.Render(ctx, templ_7745c5c3_Buffer) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 8, "
") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - default: - var templ_7745c5c3_Var6 = []any{ContainerClasses(p)} - templ_7745c5c3_Err = templ.RenderCSSItems(ctx, templ_7745c5c3_Buffer, templ_7745c5c3_Var6...) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 9, "
") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templ_7745c5c3_Var1.Render(ctx, templ_7745c5c3_Buffer) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 12, "
") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - } - return nil - }) -} - -var _ = templruntime.GeneratedTemplate diff --git a/generated/ui/dialog/Dialog.html.twig b/generated/ui/dialog/Dialog.html.twig deleted file mode 100644 index 9b48ea6..0000000 --- a/generated/ui/dialog/Dialog.html.twig +++ /dev/null @@ -1,3 +0,0 @@ -{# Code generated by @ui8kit/codegen. DO NOT EDIT. #} -{# ui.dialog — Dialog renders a native dialog element. #} -{{ children|default('')|raw }} diff --git a/generated/ui/dialog/Dialog.latte b/generated/ui/dialog/Dialog.latte deleted file mode 100644 index 25472e0..0000000 --- a/generated/ui/dialog/Dialog.latte +++ /dev/null @@ -1,25 +0,0 @@ -{* Code generated by @ui8kit/codegen. DO NOT EDIT. *} -{* ui.dialog — Dialog renders a native dialog element. *} -{parameters - string $variant = '', - string $size = '', - string $class = '', - string $id = '', - bool $open = false, - string $dataUi8kit = '', - string $ariaLabel = '', - string $ariaLabelledBy = '', - string $ariaDescribedBy = '', - array $attrs = [], - string $children = '', -} -{$children|noescape} diff --git a/generated/ui/dialog/Dialog.svelte b/generated/ui/dialog/Dialog.svelte deleted file mode 100644 index f4be7ee..0000000 --- a/generated/ui/dialog/Dialog.svelte +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - - - {@render children?.()} - diff --git a/generated/ui/dialog/Dialog.vue b/generated/ui/dialog/Dialog.vue deleted file mode 100644 index 54a4d93..0000000 --- a/generated/ui/dialog/Dialog.vue +++ /dev/null @@ -1,30 +0,0 @@ - - - - - diff --git a/generated/ui/dialog/dialog.shared.ts b/generated/ui/dialog/dialog.shared.ts deleted file mode 100644 index c561247..0000000 --- a/generated/ui/dialog/dialog.shared.ts +++ /dev/null @@ -1,28 +0,0 @@ -// Code generated by @ui8kit/codegen. DO NOT EDIT. -// ui.dialog — shared TypeScript contract (types + classes helpers) - -import { cn, composeRecipe, type RecipeKey } from "../../utils"; -import dialogRecipeJson from "./dialog.variants.json"; - -export const dialogRecipe = dialogRecipeJson; - -export type DialogVariant = RecipeKey; -export type DialogSize = RecipeKey; - -/** Dialog renders a native dialog element. */ -export type DialogBaseProps = { - variant?: DialogVariant; - size?: DialogSize; - open?: boolean; -}; - -export type DialogClassesInput = { - variant?: DialogVariant; - size?: DialogSize; - className?: string; -}; - -/** Compose Dialog classes without rendering — the cross-runtime `asChild` substitute. */ -export function dialogClasses(input: DialogClassesInput = {}): string { - return cn(composeRecipe(dialogRecipe, { variant: input.variant, size: input.size }), input.className); -} diff --git a/generated/ui/dialog/dialog.solid.tsx b/generated/ui/dialog/dialog.solid.tsx deleted file mode 100644 index 02be729..0000000 --- a/generated/ui/dialog/dialog.solid.tsx +++ /dev/null @@ -1,30 +0,0 @@ -// Code generated by @ui8kit/codegen. DO NOT EDIT. -/** - * Dialog renders a native dialog root with an optional behavior hook. - * The data-ui8kit hook defaults off; the registry ships no client JS. - */ - -import { splitProps, type JSX, type Component } from "solid-js"; -import { dialogClasses, type DialogSize, type DialogVariant } from "./dialog.shared"; - -/** - * Dialog renders a native dialog element. - */ -export type DialogProps = Omit, "class" | "className" | "children" | "variant" | "size" | "open"> & { - variant?: DialogVariant; - size?: DialogSize; - open?: boolean; - class?: string; - className?: string; - children?: JSX.Element; -}; - -export const Dialog: Component = (props) => { - const [local, rest] = splitProps(props, ["variant", "size", "open", "class", "className", "children"]); - const cls = () => dialogClasses({ variant: local.variant, size: local.size, className: local.class ?? local.className }); - return ( - - {local.children} - - ); -}; diff --git a/generated/ui/dialog/dialog.templ b/generated/ui/dialog/dialog.templ deleted file mode 100644 index 580399c..0000000 --- a/generated/ui/dialog/dialog.templ +++ /dev/null @@ -1,66 +0,0 @@ -// Code generated by @ui8kit/codegen. DO NOT EDIT. - -/* -Dialog renders a native dialog root with an optional behavior hook. -The data-ui8kit hook defaults off; the registry ships no client JS. -*/ - -package dialog - -import ( - uiutils "github.com/ui8kit/ui/utils" -) - -// DialogProps configures Dialog. -type DialogProps struct { - // Variant — sets appearance preset - Variant string - // Size — sets density preset - Size string - // Class — adds Tailwind utilities - Class string - ID string - // Open — initial open state (static attribute only) - Open bool - // DataUI8Kit — opt-in behavior hook; empty emits nothing - DataUI8Kit string - AriaLabel string - AriaLabelledBy string - AriaDescribedBy string - Attrs templ.Attributes -} - -// DialogClasses composes Dialog classes without rendering — -// the server-composition escape hatch for custom root elements. -func DialogClasses(p DialogProps) string { - return uiutils.Compose(DialogVariants, map[string]string{ - "variant": p.Variant, - "size": p.Size, - }, p.Class) -} - -// Dialog renders the Dialog contract. -templ Dialog(p DialogProps) { - - { children... } - -} diff --git a/generated/ui/dialog/dialog.tsx b/generated/ui/dialog/dialog.tsx deleted file mode 100644 index 72bd1b7..0000000 --- a/generated/ui/dialog/dialog.tsx +++ /dev/null @@ -1,32 +0,0 @@ -// Code generated by @ui8kit/codegen. DO NOT EDIT. -/** - * Dialog renders a native dialog root with an optional behavior hook. - * The data-ui8kit hook defaults off; the registry ships no client JS. - */ - -import { forwardRef, type ReactNode, type DialogHTMLAttributes } from "react"; -import { dialogClasses, type DialogSize, type DialogVariant } from "./dialog.shared"; - -/** - * Dialog renders a native dialog element. - */ -export type DialogProps = Omit, "className" | "children" | "variant" | "size" | "open"> & { - variant?: DialogVariant; - size?: DialogSize; - open?: boolean; - className?: string; - children?: ReactNode; -}; - -export const Dialog = forwardRef(function Dialog( - { variant, size, open, className, children, ...rest }, - ref -) { - const cls = dialogClasses({ variant, size, className }); - return ( - - {children} - - ); -}); -Dialog.displayName = "Dialog"; diff --git a/generated/ui/dialog/dialog.variants.json b/generated/ui/dialog/dialog.variants.json deleted file mode 100644 index e5eebbd..0000000 --- a/generated/ui/dialog/dialog.variants.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "$schema": "../../schemas/variants.schema.json", - "base": "m-auto rounded-lg border border-border bg-background text-foreground shadow-lg backdrop:bg-background/80", - "byKey": { - "size": { - "default": "w-full max-w-lg", - "full": "h-full w-full max-w-none", - "lg": "w-full max-w-2xl", - "sm": "w-full max-w-sm", - "xl": "w-full max-w-4xl" - }, - "variant": { - "card": "bg-card text-card-foreground", - "default": "", - "sheet": "min-h-screen rounded-none" - } - }, - "defaults": { - "size": "default", - "variant": "default" - }, - "id": "ui.dialog", - "keys": [ - "variant", - "size" - ] -} diff --git a/generated/ui/dialog/dialog_gen.go b/generated/ui/dialog/dialog_gen.go deleted file mode 100644 index ce799c8..0000000 --- a/generated/ui/dialog/dialog_gen.go +++ /dev/null @@ -1,15 +0,0 @@ -// Code generated by @ui8kit/codegen. DO NOT EDIT. - -package dialog - -import ( - _ "embed" - - uiutils "github.com/ui8kit/ui/utils" -) - -//go:embed dialog.variants.json -var dialogVariantsJSON []byte - -// DialogVariants is the CVA recipe shared verbatim by all runtimes. -var DialogVariants = uiutils.MustParseVariantRecipe(dialogVariantsJSON).ToVariants() diff --git a/generated/ui/dialog/dialog_templ.go b/generated/ui/dialog/dialog_templ.go deleted file mode 100644 index 836d2f7..0000000 --- a/generated/ui/dialog/dialog_templ.go +++ /dev/null @@ -1,221 +0,0 @@ -// Code generated by templ - DO NOT EDIT. - -// templ: version: v0.3.1001 -// Code generated by @ui8kit/codegen. DO NOT EDIT. - -/* - - -Dialog renders a native dialog root with an optional behavior hook. - - -The data-ui8kit hook defaults off; the registry ships no client JS. - - -*/ - -package dialog - -//lint:file-ignore SA4006 This context is only used if a nested component is present. - -import "github.com/a-h/templ" -import templruntime "github.com/a-h/templ/runtime" - -import ( - uiutils "github.com/fastygo/sezonmarket/internal/utils" -) - -// DialogProps configures Dialog. -type DialogProps struct { - // Variant — sets appearance preset - Variant string - // Size — sets density preset - Size string - // Class — adds Tailwind utilities - Class string - ID string - // Open — initial open state (static attribute only) - Open bool - // DataUI8Kit — opt-in behavior hook; empty emits nothing - DataUI8Kit string - AriaLabel string - AriaLabelledBy string - AriaDescribedBy string - Attrs templ.Attributes -} - -// DialogClasses composes Dialog classes without rendering — -// the server-composition escape hatch for custom root elements. -func DialogClasses(p DialogProps) string { - return uiutils.Compose(DialogVariants, map[string]string{ - "variant": p.Variant, - "size": p.Size, - }, p.Class) -} - -// Dialog renders the Dialog contract. -func Dialog(p DialogProps) templ.Component { - return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { - templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context - if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil { - return templ_7745c5c3_CtxErr - } - templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) - if !templ_7745c5c3_IsBuffer { - defer func() { - templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) - if templ_7745c5c3_Err == nil { - templ_7745c5c3_Err = templ_7745c5c3_BufErr - } - }() - } - ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var1 := templ.GetChildren(ctx) - if templ_7745c5c3_Var1 == nil { - templ_7745c5c3_Var1 = templ.NopComponent - } - ctx = templ.ClearChildren(ctx) - var templ_7745c5c3_Var2 = []any{DialogClasses(p)} - templ_7745c5c3_Err = templ.RenderCSSItems(ctx, templ_7745c5c3_Buffer, templ_7745c5c3_Var2...) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 1, "") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templ_7745c5c3_Var1.Render(ctx, templ_7745c5c3_Buffer) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 15, "") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - return nil - }) -} - -var _ = templruntime.GeneratedTemplate diff --git a/generated/ui/disclosure/Disclosure.html.twig b/generated/ui/disclosure/Disclosure.html.twig deleted file mode 100644 index 9489da0..0000000 --- a/generated/ui/disclosure/Disclosure.html.twig +++ /dev/null @@ -1,3 +0,0 @@ -{# Code generated by @ui8kit/codegen. DO NOT EDIT. #} -{# ui.disclosure — Disclosure renders native details. #} -{{ children|default('')|raw }} diff --git a/generated/ui/disclosure/Disclosure.latte b/generated/ui/disclosure/Disclosure.latte deleted file mode 100644 index afb54f2..0000000 --- a/generated/ui/disclosure/Disclosure.latte +++ /dev/null @@ -1,15 +0,0 @@ -{* Code generated by @ui8kit/codegen. DO NOT EDIT. *} -{* ui.disclosure — Disclosure renders native details. *} -{parameters - string $variant = '', - string $size = '', - string $class = '', - bool $open = false, - array $attrs = [], - string $children = '', -} -
{$children|noescape}
diff --git a/generated/ui/disclosure/Disclosure.svelte b/generated/ui/disclosure/Disclosure.svelte deleted file mode 100644 index 7fbf899..0000000 --- a/generated/ui/disclosure/Disclosure.svelte +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - -
- {@render children?.()} -
diff --git a/generated/ui/disclosure/Disclosure.vue b/generated/ui/disclosure/Disclosure.vue deleted file mode 100644 index 9b566ff..0000000 --- a/generated/ui/disclosure/Disclosure.vue +++ /dev/null @@ -1,30 +0,0 @@ - - - - - diff --git a/generated/ui/disclosure/Summary.html.twig b/generated/ui/disclosure/Summary.html.twig deleted file mode 100644 index a22de47..0000000 --- a/generated/ui/disclosure/Summary.html.twig +++ /dev/null @@ -1,3 +0,0 @@ -{# Code generated by @ui8kit/codegen. DO NOT EDIT. #} -{# ui.disclosure — Summary renders native summary. #} -{{ children|default('')|raw }} diff --git a/generated/ui/disclosure/Summary.latte b/generated/ui/disclosure/Summary.latte deleted file mode 100644 index 02d7622..0000000 --- a/generated/ui/disclosure/Summary.latte +++ /dev/null @@ -1,13 +0,0 @@ -{* Code generated by @ui8kit/codegen. DO NOT EDIT. *} -{* ui.disclosure — Summary renders native summary. *} -{parameters - string $variant = '', - string $size = '', - string $class = '', - array $attrs = [], - string $children = '', -} -{$children|noescape} diff --git a/generated/ui/disclosure/Summary.svelte b/generated/ui/disclosure/Summary.svelte deleted file mode 100644 index 1bc7898..0000000 --- a/generated/ui/disclosure/Summary.svelte +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - {@render children?.()} - diff --git a/generated/ui/disclosure/Summary.vue b/generated/ui/disclosure/Summary.vue deleted file mode 100644 index 28e48dd..0000000 --- a/generated/ui/disclosure/Summary.vue +++ /dev/null @@ -1,29 +0,0 @@ - - - - - diff --git a/generated/ui/disclosure/disclosure.shared.ts b/generated/ui/disclosure/disclosure.shared.ts deleted file mode 100644 index a43da01..0000000 --- a/generated/ui/disclosure/disclosure.shared.ts +++ /dev/null @@ -1,50 +0,0 @@ -// Code generated by @ui8kit/codegen. DO NOT EDIT. -// ui.disclosure — shared TypeScript contract (types + classes helpers) - -import { cn, composeRecipe, type RecipeKey } from "../../utils"; -import disclosureRecipeJson from "./disclosure.variants.json"; -import summaryRecipeJson from "./summary.variants.json"; - -export const disclosureRecipe = disclosureRecipeJson; -export const summaryRecipe = summaryRecipeJson; - -export type DisclosureVariant = RecipeKey; -export type DisclosureSize = RecipeKey; - -/** Disclosure renders native details. */ -export type DisclosureBaseProps = { - variant?: DisclosureVariant; - size?: DisclosureSize; - open?: boolean; -}; - -export type DisclosureClassesInput = { - variant?: DisclosureVariant; - size?: DisclosureSize; - className?: string; -}; - -/** Compose Disclosure classes without rendering — the cross-runtime `asChild` substitute. */ -export function disclosureClasses(input: DisclosureClassesInput = {}): string { - return cn(composeRecipe(disclosureRecipe, { variant: input.variant, size: input.size }), input.className); -} - -export type SummaryVariant = RecipeKey; -export type SummarySize = RecipeKey; - -/** Summary renders native summary. */ -export type SummaryBaseProps = { - variant?: SummaryVariant; - size?: SummarySize; -}; - -export type SummaryClassesInput = { - variant?: SummaryVariant; - size?: SummarySize; - className?: string; -}; - -/** Compose Summary classes without rendering — the cross-runtime `asChild` substitute. */ -export function summaryClasses(input: SummaryClassesInput = {}): string { - return cn(composeRecipe(summaryRecipe, { variant: input.variant, size: input.size }), input.className); -} diff --git a/generated/ui/disclosure/disclosure.solid.tsx b/generated/ui/disclosure/disclosure.solid.tsx deleted file mode 100644 index 83dba80..0000000 --- a/generated/ui/disclosure/disclosure.solid.tsx +++ /dev/null @@ -1,51 +0,0 @@ -// Code generated by @ui8kit/codegen. DO NOT EDIT. -/** - * Disclosure renders native details and summary elements. - * Open is a static attribute only — no controlled-state contract. - */ - -import { splitProps, type JSX, type Component } from "solid-js"; -import { disclosureClasses, summaryClasses, type DisclosureSize, type DisclosureVariant, type SummarySize, type SummaryVariant } from "./disclosure.shared"; - -/** - * Disclosure renders native details. - */ -export type DisclosureProps = Omit, "class" | "className" | "children" | "variant" | "size" | "open"> & { - variant?: DisclosureVariant; - size?: DisclosureSize; - open?: boolean; - class?: string; - className?: string; - children?: JSX.Element; -}; - -export const Disclosure: Component = (props) => { - const [local, rest] = splitProps(props, ["variant", "size", "open", "class", "className", "children"]); - const cls = () => disclosureClasses({ variant: local.variant, size: local.size, className: local.class ?? local.className }); - return ( -
- {local.children} -
- ); -}; - -/** - * Summary renders native summary. - */ -export type SummaryProps = Omit, "class" | "className" | "children" | "variant" | "size"> & { - variant?: SummaryVariant; - size?: SummarySize; - class?: string; - className?: string; - children?: JSX.Element; -}; - -export const Summary: Component = (props) => { - const [local, rest] = splitProps(props, ["variant", "size", "class", "className", "children"]); - const cls = () => summaryClasses({ variant: local.variant, size: local.size, className: local.class ?? local.className }); - return ( - - {local.children} - - ); -}; diff --git a/generated/ui/disclosure/disclosure.templ b/generated/ui/disclosure/disclosure.templ deleted file mode 100644 index 203ca6c..0000000 --- a/generated/ui/disclosure/disclosure.templ +++ /dev/null @@ -1,75 +0,0 @@ -// Code generated by @ui8kit/codegen. DO NOT EDIT. - -/* -Disclosure renders native details and summary elements. -Open is a static attribute only — no controlled-state contract. -*/ - -package disclosure - -import ( - uiutils "github.com/ui8kit/ui/utils" -) - -// DisclosureProps configures Disclosure. -type DisclosureProps struct { - // Variant — sets appearance preset - Variant string - // Size — sets density preset - Size string - // Class — adds Tailwind utilities - Class string - // Open — initial open state (static attribute only) - Open bool - Attrs templ.Attributes -} - -// DisclosureClasses composes Disclosure classes without rendering — -// the server-composition escape hatch for custom root elements. -func DisclosureClasses(p DisclosureProps) string { - return uiutils.Compose(DisclosureVariants, map[string]string{ - "variant": p.Variant, - "size": p.Size, - }, p.Class) -} - -// Disclosure renders the Disclosure contract. -templ Disclosure(p DisclosureProps) { -
- { children... } -
-} - -// SummaryProps configures Summary. -type SummaryProps struct { - // Variant — sets appearance preset - Variant string - // Size — sets density preset - Size string - // Class — adds Tailwind utilities - Class string - Attrs templ.Attributes -} - -// SummaryClasses composes Summary classes without rendering — -// the server-composition escape hatch for custom root elements. -func SummaryClasses(p SummaryProps) string { - return uiutils.Compose(SummaryVariants, map[string]string{ - "variant": p.Variant, - "size": p.Size, - }, p.Class) -} - -// Summary renders the Summary contract. -templ Summary(p SummaryProps) { - - { children... } - -} diff --git a/generated/ui/disclosure/disclosure.tsx b/generated/ui/disclosure/disclosure.tsx deleted file mode 100644 index dd16659..0000000 --- a/generated/ui/disclosure/disclosure.tsx +++ /dev/null @@ -1,55 +0,0 @@ -// Code generated by @ui8kit/codegen. DO NOT EDIT. -/** - * Disclosure renders native details and summary elements. - * Open is a static attribute only — no controlled-state contract. - */ - -import { forwardRef, type ReactNode, type DetailsHTMLAttributes, type HTMLAttributes } from "react"; -import { disclosureClasses, summaryClasses, type DisclosureSize, type DisclosureVariant, type SummarySize, type SummaryVariant } from "./disclosure.shared"; - -/** - * Disclosure renders native details. - */ -export type DisclosureProps = Omit, "className" | "children" | "variant" | "size" | "open"> & { - variant?: DisclosureVariant; - size?: DisclosureSize; - open?: boolean; - className?: string; - children?: ReactNode; -}; - -export const Disclosure = forwardRef(function Disclosure( - { variant, size, open, className, children, ...rest }, - ref -) { - const cls = disclosureClasses({ variant, size, className }); - return ( -
- {children} -
- ); -}); -Disclosure.displayName = "Disclosure"; - -/** - * Summary renders native summary. - */ -export type SummaryProps = Omit, "className" | "children" | "variant" | "size"> & { - variant?: SummaryVariant; - size?: SummarySize; - className?: string; - children?: ReactNode; -}; - -export const Summary = forwardRef(function Summary( - { variant, size, className, children, ...rest }, - ref -) { - const cls = summaryClasses({ variant, size, className }); - return ( - - {children} - - ); -}); -Summary.displayName = "Summary"; diff --git a/generated/ui/disclosure/disclosure.variants.json b/generated/ui/disclosure/disclosure.variants.json deleted file mode 100644 index bc0fd7a..0000000 --- a/generated/ui/disclosure/disclosure.variants.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "$schema": "../../schemas/variants.schema.json", - "base": "group", - "byKey": { - "size": { - "default": "text-sm", - "lg": "text-base", - "sm": "text-sm" - }, - "variant": { - "card": "rounded-md border border-border bg-card text-card-foreground", - "default": "rounded-md border border-border", - "ghost": "" - } - }, - "defaults": { - "size": "default", - "variant": "default" - }, - "id": "ui.disclosure", - "keys": [ - "variant", - "size" - ] -} diff --git a/generated/ui/disclosure/disclosure_gen.go b/generated/ui/disclosure/disclosure_gen.go deleted file mode 100644 index 3fb10a3..0000000 --- a/generated/ui/disclosure/disclosure_gen.go +++ /dev/null @@ -1,21 +0,0 @@ -// Code generated by @ui8kit/codegen. DO NOT EDIT. - -package disclosure - -import ( - _ "embed" - - uiutils "github.com/ui8kit/ui/utils" -) - -//go:embed disclosure.variants.json -var disclosureVariantsJSON []byte - -// DisclosureVariants is the CVA recipe shared verbatim by all runtimes. -var DisclosureVariants = uiutils.MustParseVariantRecipe(disclosureVariantsJSON).ToVariants() - -//go:embed summary.variants.json -var summaryVariantsJSON []byte - -// SummaryVariants is the CVA recipe shared verbatim by all runtimes. -var SummaryVariants = uiutils.MustParseVariantRecipe(summaryVariantsJSON).ToVariants() diff --git a/generated/ui/disclosure/disclosure_templ.go b/generated/ui/disclosure/disclosure_templ.go deleted file mode 100644 index 44c2f4d..0000000 --- a/generated/ui/disclosure/disclosure_templ.go +++ /dev/null @@ -1,204 +0,0 @@ -// Code generated by templ - DO NOT EDIT. - -// templ: version: v0.3.1001 -// Code generated by @ui8kit/codegen. DO NOT EDIT. - -/* - - -Disclosure renders native details and summary elements. - - -Open is a static attribute only — no controlled-state contract. - - -*/ - -package disclosure - -//lint:file-ignore SA4006 This context is only used if a nested component is present. - -import "github.com/a-h/templ" -import templruntime "github.com/a-h/templ/runtime" - -import ( - uiutils "github.com/fastygo/sezonmarket/internal/utils" -) - -// DisclosureProps configures Disclosure. -type DisclosureProps struct { - // Variant — sets appearance preset - Variant string - // Size — sets density preset - Size string - // Class — adds Tailwind utilities - Class string - // Open — initial open state (static attribute only) - Open bool - Attrs templ.Attributes -} - -// DisclosureClasses composes Disclosure classes without rendering — -// the server-composition escape hatch for custom root elements. -func DisclosureClasses(p DisclosureProps) string { - return uiutils.Compose(DisclosureVariants, map[string]string{ - "variant": p.Variant, - "size": p.Size, - }, p.Class) -} - -// Disclosure renders the Disclosure contract. -func Disclosure(p DisclosureProps) templ.Component { - return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { - templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context - if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil { - return templ_7745c5c3_CtxErr - } - templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) - if !templ_7745c5c3_IsBuffer { - defer func() { - templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) - if templ_7745c5c3_Err == nil { - templ_7745c5c3_Err = templ_7745c5c3_BufErr - } - }() - } - ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var1 := templ.GetChildren(ctx) - if templ_7745c5c3_Var1 == nil { - templ_7745c5c3_Var1 = templ.NopComponent - } - ctx = templ.ClearChildren(ctx) - var templ_7745c5c3_Var2 = []any{DisclosureClasses(p)} - templ_7745c5c3_Err = templ.RenderCSSItems(ctx, templ_7745c5c3_Buffer, templ_7745c5c3_Var2...) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 1, "
") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templ_7745c5c3_Var1.Render(ctx, templ_7745c5c3_Buffer) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 5, "
") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - return nil - }) -} - -// SummaryProps configures Summary. -type SummaryProps struct { - // Variant — sets appearance preset - Variant string - // Size — sets density preset - Size string - // Class — adds Tailwind utilities - Class string - Attrs templ.Attributes -} - -// SummaryClasses composes Summary classes without rendering — -// the server-composition escape hatch for custom root elements. -func SummaryClasses(p SummaryProps) string { - return uiutils.Compose(SummaryVariants, map[string]string{ - "variant": p.Variant, - "size": p.Size, - }, p.Class) -} - -// Summary renders the Summary contract. -func Summary(p SummaryProps) templ.Component { - return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { - templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context - if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil { - return templ_7745c5c3_CtxErr - } - templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) - if !templ_7745c5c3_IsBuffer { - defer func() { - templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) - if templ_7745c5c3_Err == nil { - templ_7745c5c3_Err = templ_7745c5c3_BufErr - } - }() - } - ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var4 := templ.GetChildren(ctx) - if templ_7745c5c3_Var4 == nil { - templ_7745c5c3_Var4 = templ.NopComponent - } - ctx = templ.ClearChildren(ctx) - var templ_7745c5c3_Var5 = []any{SummaryClasses(p)} - templ_7745c5c3_Err = templ.RenderCSSItems(ctx, templ_7745c5c3_Buffer, templ_7745c5c3_Var5...) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 6, "") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templ_7745c5c3_Var4.Render(ctx, templ_7745c5c3_Buffer) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 9, "") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - return nil - }) -} - -var _ = templruntime.GeneratedTemplate diff --git a/generated/ui/disclosure/summary.variants.json b/generated/ui/disclosure/summary.variants.json deleted file mode 100644 index ad1148d..0000000 --- a/generated/ui/disclosure/summary.variants.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "$schema": "../../schemas/variants.schema.json", - "base": "flex cursor-pointer list-none items-center justify-between gap-2 [&::-webkit-details-marker]:hidden", - "byKey": { - "size": { - "default": "text-sm", - "lg": "text-base", - "sm": "text-sm" - }, - "variant": { - "card": "px-4 py-3 font-medium", - "default": "px-4 py-3 font-medium", - "ghost": "py-2 font-medium" - } - }, - "defaults": { - "size": "default", - "variant": "default" - }, - "id": "ui.disclosure.summary", - "keys": [ - "variant", - "size" - ] -} diff --git a/generated/ui/form/DataList.html.twig b/generated/ui/form/DataList.html.twig deleted file mode 100644 index 203ec87..0000000 --- a/generated/ui/form/DataList.html.twig +++ /dev/null @@ -1,3 +0,0 @@ -{# Code generated by @ui8kit/codegen. DO NOT EDIT. #} -{# ui.form.controls — DataList renders a native datalist. #} -{{ children|default('')|raw }} diff --git a/generated/ui/form/DataList.latte b/generated/ui/form/DataList.latte deleted file mode 100644 index 2c16986..0000000 --- a/generated/ui/form/DataList.latte +++ /dev/null @@ -1,13 +0,0 @@ -{* Code generated by @ui8kit/codegen. DO NOT EDIT. *} -{* ui.form.controls — DataList renders a native datalist. *} -{parameters - string $id = '', - string $class = '', - array $attrs = [], - string $children = '', -} -{$children|noescape} diff --git a/generated/ui/form/DataList.svelte b/generated/ui/form/DataList.svelte deleted file mode 100644 index c0d70e9..0000000 --- a/generated/ui/form/DataList.svelte +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - {@render children?.()} - diff --git a/generated/ui/form/DataList.vue b/generated/ui/form/DataList.vue deleted file mode 100644 index df92ba6..0000000 --- a/generated/ui/form/DataList.vue +++ /dev/null @@ -1,24 +0,0 @@ - - - - - diff --git a/generated/ui/form/DataOption.html.twig b/generated/ui/form/DataOption.html.twig deleted file mode 100644 index d34dac6..0000000 --- a/generated/ui/form/DataOption.html.twig +++ /dev/null @@ -1,3 +0,0 @@ -{# Code generated by @ui8kit/codegen. DO NOT EDIT. #} -{# ui.form.controls — DataOption renders an option inside a datalist. #} - diff --git a/generated/ui/form/DataOption.latte b/generated/ui/form/DataOption.latte deleted file mode 100644 index 5b7203d..0000000 --- a/generated/ui/form/DataOption.latte +++ /dev/null @@ -1,12 +0,0 @@ -{* Code generated by @ui8kit/codegen. DO NOT EDIT. *} -{* ui.form.controls — DataOption renders an option inside a datalist. *} -{parameters - string $value = '', - string $label = '', - array $attrs = [], -} - diff --git a/generated/ui/form/DataOption.svelte b/generated/ui/form/DataOption.svelte deleted file mode 100644 index bc52a3c..0000000 --- a/generated/ui/form/DataOption.svelte +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - diff --git a/generated/ui/form/DataOption.vue b/generated/ui/form/DataOption.vue deleted file mode 100644 index fb1556a..0000000 --- a/generated/ui/form/DataOption.vue +++ /dev/null @@ -1,20 +0,0 @@ - - - - - diff --git a/generated/ui/form/Fieldset.html.twig b/generated/ui/form/Fieldset.html.twig deleted file mode 100644 index 49fffa7..0000000 --- a/generated/ui/form/Fieldset.html.twig +++ /dev/null @@ -1,3 +0,0 @@ -{# Code generated by @ui8kit/codegen. DO NOT EDIT. #} -{# ui.form.controls — Fieldset renders a native fieldset. #} -{{ children|default('')|raw }} diff --git a/generated/ui/form/Fieldset.latte b/generated/ui/form/Fieldset.latte deleted file mode 100644 index 9e2027a..0000000 --- a/generated/ui/form/Fieldset.latte +++ /dev/null @@ -1,19 +0,0 @@ -{* Code generated by @ui8kit/codegen. DO NOT EDIT. *} -{* ui.form.controls — Fieldset renders a native fieldset. *} -{parameters - string $variant = '', - string $size = '', - string $class = '', - string $name = '', - string $form = '', - bool $disabled = false, - array $attrs = [], - string $children = '', -} -
{$children|noescape}
diff --git a/generated/ui/form/Fieldset.svelte b/generated/ui/form/Fieldset.svelte deleted file mode 100644 index 0e2725e..0000000 --- a/generated/ui/form/Fieldset.svelte +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - -
- {@render children?.()} -
diff --git a/generated/ui/form/Fieldset.vue b/generated/ui/form/Fieldset.vue deleted file mode 100644 index ae2fc08..0000000 --- a/generated/ui/form/Fieldset.vue +++ /dev/null @@ -1,30 +0,0 @@ - - - - - diff --git a/generated/ui/form/Form.html.twig b/generated/ui/form/Form.html.twig deleted file mode 100644 index 5972772..0000000 --- a/generated/ui/form/Form.html.twig +++ /dev/null @@ -1,3 +0,0 @@ -{# Code generated by @ui8kit/codegen. DO NOT EDIT. #} -{# ui.form — Form renders a vertical grid form container. #} -{{ children|default('')|raw }} diff --git a/generated/ui/form/Form.latte b/generated/ui/form/Form.latte deleted file mode 100644 index 08b0a06..0000000 --- a/generated/ui/form/Form.latte +++ /dev/null @@ -1,27 +0,0 @@ -{* Code generated by @ui8kit/codegen. DO NOT EDIT. *} -{* ui.form — Form renders a vertical grid form container. *} -{parameters - string $id = '', - string $class = '', - string $action = '', - string $method = '', - string $enctype = '', - string $autocomplete = '', - string $name = '', - string $target = '', - bool $novalidate = false, - array $attrs = [], - string $children = '', -} -
{$children|noescape}
diff --git a/generated/ui/form/Form.svelte b/generated/ui/form/Form.svelte deleted file mode 100644 index 387974d..0000000 --- a/generated/ui/form/Form.svelte +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - -
- {@render children?.()} -
diff --git a/generated/ui/form/Form.vue b/generated/ui/form/Form.vue deleted file mode 100644 index da8ca8d..0000000 --- a/generated/ui/form/Form.vue +++ /dev/null @@ -1,28 +0,0 @@ - - - - - diff --git a/generated/ui/form/FormDescription.html.twig b/generated/ui/form/FormDescription.html.twig deleted file mode 100644 index e33a4ab..0000000 --- a/generated/ui/form/FormDescription.html.twig +++ /dev/null @@ -1,3 +0,0 @@ -{# Code generated by @ui8kit/codegen. DO NOT EDIT. #} -{# ui.form — FormDescription renders muted helper copy below a control. #} -{{ children|default('')|raw }}

diff --git a/generated/ui/form/FormDescription.latte b/generated/ui/form/FormDescription.latte deleted file mode 100644 index a309edd..0000000 --- a/generated/ui/form/FormDescription.latte +++ /dev/null @@ -1,11 +0,0 @@ -{* Code generated by @ui8kit/codegen. DO NOT EDIT. *} -{* ui.form — FormDescription renders muted helper copy below a control. *} -{parameters - string $class = '', - array $attrs = [], - string $children = '', -} -

{$children|noescape}

diff --git a/generated/ui/form/FormDescription.svelte b/generated/ui/form/FormDescription.svelte deleted file mode 100644 index ec272be..0000000 --- a/generated/ui/form/FormDescription.svelte +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - -

- {@render children?.()} -

diff --git a/generated/ui/form/FormDescription.vue b/generated/ui/form/FormDescription.vue deleted file mode 100644 index 18285f4..0000000 --- a/generated/ui/form/FormDescription.vue +++ /dev/null @@ -1,24 +0,0 @@ - - - - - diff --git a/generated/ui/form/FormItem.html.twig b/generated/ui/form/FormItem.html.twig deleted file mode 100644 index f203d9d..0000000 --- a/generated/ui/form/FormItem.html.twig +++ /dev/null @@ -1,3 +0,0 @@ -{# Code generated by @ui8kit/codegen. DO NOT EDIT. #} -{# ui.form — FormItem groups a single field with spacing for label and control. #} -{{ children|default('')|raw }} diff --git a/generated/ui/form/FormItem.latte b/generated/ui/form/FormItem.latte deleted file mode 100644 index f688bb6..0000000 --- a/generated/ui/form/FormItem.latte +++ /dev/null @@ -1,11 +0,0 @@ -{* Code generated by @ui8kit/codegen. DO NOT EDIT. *} -{* ui.form — FormItem groups a single field with spacing for label and control. *} -{parameters - string $class = '', - array $attrs = [], - string $children = '', -} -
{$children|noescape}
diff --git a/generated/ui/form/FormItem.svelte b/generated/ui/form/FormItem.svelte deleted file mode 100644 index 3fa9e6a..0000000 --- a/generated/ui/form/FormItem.svelte +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - -
- {@render children?.()} -
diff --git a/generated/ui/form/FormItem.vue b/generated/ui/form/FormItem.vue deleted file mode 100644 index f5f4d32..0000000 --- a/generated/ui/form/FormItem.vue +++ /dev/null @@ -1,24 +0,0 @@ - - - - - diff --git a/generated/ui/form/FormMessage.html.twig b/generated/ui/form/FormMessage.html.twig deleted file mode 100644 index 4ba8b69..0000000 --- a/generated/ui/form/FormMessage.html.twig +++ /dev/null @@ -1,3 +0,0 @@ -{# Code generated by @ui8kit/codegen. DO NOT EDIT. #} -{# ui.form — FormMessage renders destructive validation feedback. #} -{{ children|default('')|raw }}

diff --git a/generated/ui/form/FormMessage.latte b/generated/ui/form/FormMessage.latte deleted file mode 100644 index 84569aa..0000000 --- a/generated/ui/form/FormMessage.latte +++ /dev/null @@ -1,12 +0,0 @@ -{* Code generated by @ui8kit/codegen. DO NOT EDIT. *} -{* ui.form — FormMessage renders destructive validation feedback. *} -{parameters - string $class = '', - array $attrs = [], - string $children = '', -} -

{$children|noescape}

diff --git a/generated/ui/form/FormMessage.svelte b/generated/ui/form/FormMessage.svelte deleted file mode 100644 index 5236894..0000000 --- a/generated/ui/form/FormMessage.svelte +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - -

- {@render children?.()} -

diff --git a/generated/ui/form/FormMessage.vue b/generated/ui/form/FormMessage.vue deleted file mode 100644 index 284c581..0000000 --- a/generated/ui/form/FormMessage.vue +++ /dev/null @@ -1,24 +0,0 @@ - - - - - diff --git a/generated/ui/form/Legend.html.twig b/generated/ui/form/Legend.html.twig deleted file mode 100644 index 4c123ef..0000000 --- a/generated/ui/form/Legend.html.twig +++ /dev/null @@ -1,3 +0,0 @@ -{# Code generated by @ui8kit/codegen. DO NOT EDIT. #} -{# ui.form.controls — Legend renders a native legend. #} -{{ children|default('')|raw }} diff --git a/generated/ui/form/Legend.latte b/generated/ui/form/Legend.latte deleted file mode 100644 index a9dbc50..0000000 --- a/generated/ui/form/Legend.latte +++ /dev/null @@ -1,13 +0,0 @@ -{* Code generated by @ui8kit/codegen. DO NOT EDIT. *} -{* ui.form.controls — Legend renders a native legend. *} -{parameters - string $variant = '', - string $size = '', - string $class = '', - array $attrs = [], - string $children = '', -} -{$children|noescape} diff --git a/generated/ui/form/Legend.svelte b/generated/ui/form/Legend.svelte deleted file mode 100644 index 6f3f107..0000000 --- a/generated/ui/form/Legend.svelte +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - {@render children?.()} - diff --git a/generated/ui/form/Legend.vue b/generated/ui/form/Legend.vue deleted file mode 100644 index 00cc3ab..0000000 --- a/generated/ui/form/Legend.vue +++ /dev/null @@ -1,29 +0,0 @@ - - - - - diff --git a/generated/ui/form/Meter.html.twig b/generated/ui/form/Meter.html.twig deleted file mode 100644 index f49ed51..0000000 --- a/generated/ui/form/Meter.html.twig +++ /dev/null @@ -1,3 +0,0 @@ -{# Code generated by @ui8kit/codegen. DO NOT EDIT. #} -{# ui.form.controls — Meter renders a native meter. #} -{{ children|default('')|raw }} diff --git a/generated/ui/form/Meter.latte b/generated/ui/form/Meter.latte deleted file mode 100644 index 3296629..0000000 --- a/generated/ui/form/Meter.latte +++ /dev/null @@ -1,27 +0,0 @@ -{* Code generated by @ui8kit/codegen. DO NOT EDIT. *} -{* ui.form.controls — Meter renders a native meter. *} -{parameters - string $variant = '', - string $size = '', - string $id = '', - string $class = '', - string $value = '', - string $min = '', - string $max = '', - string $low = '', - string $high = '', - string $optimum = '', - array $attrs = [], - string $children = '', -} -{$children|noescape} diff --git a/generated/ui/form/Meter.svelte b/generated/ui/form/Meter.svelte deleted file mode 100644 index f8ec39f..0000000 --- a/generated/ui/form/Meter.svelte +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - {@render children?.()} - diff --git a/generated/ui/form/Meter.vue b/generated/ui/form/Meter.vue deleted file mode 100644 index 20ffc85..0000000 --- a/generated/ui/form/Meter.vue +++ /dev/null @@ -1,29 +0,0 @@ - - - - - diff --git a/generated/ui/form/Output.html.twig b/generated/ui/form/Output.html.twig deleted file mode 100644 index 3e78a8f..0000000 --- a/generated/ui/form/Output.html.twig +++ /dev/null @@ -1,3 +0,0 @@ -{# Code generated by @ui8kit/codegen. DO NOT EDIT. #} -{# ui.form.controls — Output renders a native output element. #} -{{ (value|default('')) }}{{ children|default('')|raw }} diff --git a/generated/ui/form/Output.latte b/generated/ui/form/Output.latte deleted file mode 100644 index 839d431..0000000 --- a/generated/ui/form/Output.latte +++ /dev/null @@ -1,18 +0,0 @@ -{* Code generated by @ui8kit/codegen. DO NOT EDIT. *} -{* ui.form.controls — Output renders a native output element. *} -{parameters - string $id = '', - string $class = '', - string $name = '', - string $for = '', - string $value = '', - array $attrs = [], - string $children = '', -} -{$value}{$children|noescape} diff --git a/generated/ui/form/Output.svelte b/generated/ui/form/Output.svelte deleted file mode 100644 index 727d5a8..0000000 --- a/generated/ui/form/Output.svelte +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - -{value}{@render children?.()} diff --git a/generated/ui/form/Output.vue b/generated/ui/form/Output.vue deleted file mode 100644 index f1e3328..0000000 --- a/generated/ui/form/Output.vue +++ /dev/null @@ -1,29 +0,0 @@ - - - - - diff --git a/generated/ui/form/Progress.html.twig b/generated/ui/form/Progress.html.twig deleted file mode 100644 index f24a828..0000000 --- a/generated/ui/form/Progress.html.twig +++ /dev/null @@ -1,3 +0,0 @@ -{# Code generated by @ui8kit/codegen. DO NOT EDIT. #} -{# ui.form.controls — Progress renders a native progress element. #} -{{ children|default('')|raw }} diff --git a/generated/ui/form/Progress.latte b/generated/ui/form/Progress.latte deleted file mode 100644 index b79ecd2..0000000 --- a/generated/ui/form/Progress.latte +++ /dev/null @@ -1,19 +0,0 @@ -{* Code generated by @ui8kit/codegen. DO NOT EDIT. *} -{* ui.form.controls — Progress renders a native progress element. *} -{parameters - string $variant = '', - string $size = '', - string $id = '', - string $class = '', - string $value = '', - string $max = '', - array $attrs = [], - string $children = '', -} -{$children|noescape} diff --git a/generated/ui/form/Progress.svelte b/generated/ui/form/Progress.svelte deleted file mode 100644 index 4b1dea0..0000000 --- a/generated/ui/form/Progress.svelte +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - {@render children?.()} - diff --git a/generated/ui/form/Progress.vue b/generated/ui/form/Progress.vue deleted file mode 100644 index f366515..0000000 --- a/generated/ui/form/Progress.vue +++ /dev/null @@ -1,29 +0,0 @@ - - - - - diff --git a/generated/ui/form/controls.shared.ts b/generated/ui/form/controls.shared.ts deleted file mode 100644 index e6ff332..0000000 --- a/generated/ui/form/controls.shared.ts +++ /dev/null @@ -1,127 +0,0 @@ -// Code generated by @ui8kit/codegen. DO NOT EDIT. -// ui.form.controls — shared TypeScript contract (types + classes helpers) - -import { cn, composeRecipe, type RecipeKey } from "../../utils"; -import fieldsetRecipeJson from "./fieldset.variants.json"; -import legendRecipeJson from "./legend.variants.json"; -import meterRecipeJson from "./meter.variants.json"; -import progressRecipeJson from "./progress.variants.json"; - -export const fieldsetRecipe = fieldsetRecipeJson; -export const legendRecipe = legendRecipeJson; -export const meterRecipe = meterRecipeJson; -export const progressRecipe = progressRecipeJson; - -export type FieldsetVariant = RecipeKey; -export type FieldsetSize = RecipeKey; - -/** Fieldset renders a native fieldset. */ -export type FieldsetBaseProps = { - variant?: FieldsetVariant; - size?: FieldsetSize; - disabled?: boolean; -}; - -export type FieldsetClassesInput = { - variant?: FieldsetVariant; - size?: FieldsetSize; - className?: string; -}; - -/** Compose Fieldset classes without rendering — the cross-runtime `asChild` substitute. */ -export function fieldsetClasses(input: FieldsetClassesInput = {}): string { - return cn(composeRecipe(fieldsetRecipe, { variant: input.variant, size: input.size }), input.className); -} - -export type LegendVariant = RecipeKey; -export type LegendSize = RecipeKey; - -/** Legend renders a native legend. */ -export type LegendBaseProps = { - variant?: LegendVariant; - size?: LegendSize; -}; - -export type LegendClassesInput = { - variant?: LegendVariant; - size?: LegendSize; - className?: string; -}; - -/** Compose Legend classes without rendering — the cross-runtime `asChild` substitute. */ -export function legendClasses(input: LegendClassesInput = {}): string { - return cn(composeRecipe(legendRecipe, { variant: input.variant, size: input.size }), input.className); -} - -/** DataList renders a native datalist. */ -export type DataListBaseProps = { - -}; - -export type DataListClassesInput = { - className?: string; -}; - -/** Compose DataList classes without rendering — the cross-runtime `asChild` substitute. */ -export function dataListClasses(input: DataListClassesInput = {}): string { - return cn(input.className); -} - -/** DataOption renders an option inside a datalist. */ -export type DataOptionBaseProps = { - -}; - -/** Output renders a native output element. */ -export type OutputBaseProps = { - value?: string; -}; - -export type OutputClassesInput = { - className?: string; -}; - -/** Compose Output classes without rendering — the cross-runtime `asChild` substitute. */ -export function outputClasses(input: OutputClassesInput = {}): string { - return cn(input.className); -} - -export type MeterVariant = RecipeKey; -export type MeterSize = RecipeKey; - -/** Meter renders a native meter. */ -export type MeterBaseProps = { - variant?: MeterVariant; - size?: MeterSize; -}; - -export type MeterClassesInput = { - variant?: MeterVariant; - size?: MeterSize; - className?: string; -}; - -/** Compose Meter classes without rendering — the cross-runtime `asChild` substitute. */ -export function meterClasses(input: MeterClassesInput = {}): string { - return cn(composeRecipe(meterRecipe, { variant: input.variant, size: input.size }), input.className); -} - -export type ProgressVariant = RecipeKey; -export type ProgressSize = RecipeKey; - -/** Progress renders a native progress element. */ -export type ProgressBaseProps = { - variant?: ProgressVariant; - size?: ProgressSize; -}; - -export type ProgressClassesInput = { - variant?: ProgressVariant; - size?: ProgressSize; - className?: string; -}; - -/** Compose Progress classes without rendering — the cross-runtime `asChild` substitute. */ -export function progressClasses(input: ProgressClassesInput = {}): string { - return cn(composeRecipe(progressRecipe, { variant: input.variant, size: input.size }), input.className); -} diff --git a/generated/ui/form/controls.solid.tsx b/generated/ui/form/controls.solid.tsx deleted file mode 100644 index dbf90bd..0000000 --- a/generated/ui/form/controls.solid.tsx +++ /dev/null @@ -1,147 +0,0 @@ -// Code generated by @ui8kit/codegen. DO NOT EDIT. -/** - * Form controls covers fieldset, legend, datalist, output, meter, and progress. - */ - -import { splitProps, type JSX, type Component } from "solid-js"; -import { dataListClasses, fieldsetClasses, legendClasses, meterClasses, outputClasses, progressClasses, type FieldsetSize, type FieldsetVariant, type LegendSize, type LegendVariant, type MeterSize, type MeterVariant, type ProgressSize, type ProgressVariant } from "./controls.shared"; - -/** - * Fieldset renders a native fieldset. - */ -export type FieldsetProps = Omit, "class" | "className" | "children" | "variant" | "size" | "disabled"> & { - variant?: FieldsetVariant; - size?: FieldsetSize; - disabled?: boolean; - class?: string; - className?: string; - children?: JSX.Element; -}; - -export const Fieldset: Component = (props) => { - const [local, rest] = splitProps(props, ["variant", "size", "disabled", "class", "className", "children"]); - const cls = () => fieldsetClasses({ variant: local.variant, size: local.size, className: local.class ?? local.className }); - return ( -
- {local.children} -
- ); -}; - -/** - * Legend renders a native legend. - */ -export type LegendProps = Omit, "class" | "className" | "children" | "variant" | "size"> & { - variant?: LegendVariant; - size?: LegendSize; - class?: string; - className?: string; - children?: JSX.Element; -}; - -export const Legend: Component = (props) => { - const [local, rest] = splitProps(props, ["variant", "size", "class", "className", "children"]); - const cls = () => legendClasses({ variant: local.variant, size: local.size, className: local.class ?? local.className }); - return ( - - {local.children} - - ); -}; - -/** - * DataList renders a native datalist. - */ -export type DataListProps = Omit, "class" | "className" | "children"> & { - class?: string; - className?: string; - children?: JSX.Element; -}; - -export const DataList: Component = (props) => { - const [local, rest] = splitProps(props, ["class", "className", "children"]); - const cls = () => dataListClasses({ className: local.class ?? local.className }); - return ( - - {local.children} - - ); -}; - -/** - * DataOption renders an option inside a datalist. - */ -export type DataOptionProps = Omit, "class" | "className" | "children"> & { - class?: string; - className?: string; -}; - -export const DataOption: Component = (props) => { - const [local, rest] = splitProps(props, ["class", "className"]); - return ( - diff --git a/generated/ui/select/SelectOption.latte b/generated/ui/select/SelectOption.latte deleted file mode 100644 index d1cbe76..0000000 --- a/generated/ui/select/SelectOption.latte +++ /dev/null @@ -1,17 +0,0 @@ -{* Code generated by @ui8kit/codegen. DO NOT EDIT. *} -{* ui.select — SelectOption renders an option for custom Select children. *} -{parameters - string $value = '', - string $label = '', - bool $selected = false, - bool $disabled = false, - array $attrs = [], - string $children = '', -} - diff --git a/generated/ui/select/SelectOption.svelte b/generated/ui/select/SelectOption.svelte deleted file mode 100644 index bf011d4..0000000 --- a/generated/ui/select/SelectOption.svelte +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - diff --git a/generated/ui/select/SelectOption.vue b/generated/ui/select/SelectOption.vue deleted file mode 100644 index 4c908b0..0000000 --- a/generated/ui/select/SelectOption.vue +++ /dev/null @@ -1,27 +0,0 @@ - - - - - diff --git a/generated/ui/select/select.shared.ts b/generated/ui/select/select.shared.ts deleted file mode 100644 index f2f3bdf..0000000 --- a/generated/ui/select/select.shared.ts +++ /dev/null @@ -1,56 +0,0 @@ -// Code generated by @ui8kit/codegen. DO NOT EDIT. -// ui.select — shared TypeScript contract (types + classes helpers) - -import { cn, composeRecipe, type RecipeKey } from "../../utils"; -import selectRecipeJson from "./select.variants.json"; - -export const selectRecipe = selectRecipeJson; - -export type SelectOptionItem = { - value?: string; - label?: string; -}; - -export type SelectVariant = RecipeKey; -export type SelectSize = RecipeKey; - -/** Select renders option children from the Options list plus manual children. */ -export type SelectBaseProps = { - variant?: SelectVariant; - size?: SelectSize; - value?: string; - disabled?: boolean; - required?: boolean; - options?: SelectOptionItem[]; -}; - -export type SelectClassesInput = { - variant?: SelectVariant; - size?: SelectSize; - className?: string; -}; - -/** Compose Select classes without rendering — the cross-runtime `asChild` substitute. */ -export function selectClasses(input: SelectClassesInput = {}): string { - return cn(composeRecipe(selectRecipe, { variant: input.variant, size: input.size }), input.className); -} - -/** SelectOption renders an option for custom Select children. */ -export type SelectOptionBaseProps = { - selected?: boolean; - disabled?: boolean; -}; - -/** OptGroup renders a native optgroup around option children. */ -export type OptGroupBaseProps = { - disabled?: boolean; -}; - -export type OptGroupClassesInput = { - className?: string; -}; - -/** Compose OptGroup classes without rendering — the cross-runtime `asChild` substitute. */ -export function optGroupClasses(input: OptGroupClassesInput = {}): string { - return cn(input.className); -} diff --git a/generated/ui/select/select.solid.tsx b/generated/ui/select/select.solid.tsx deleted file mode 100644 index 3ffa801..0000000 --- a/generated/ui/select/select.solid.tsx +++ /dev/null @@ -1,78 +0,0 @@ -// Code generated by @ui8kit/codegen. DO NOT EDIT. -/** - * Select is a native dropdown built from Option items. - */ - -import { splitProps, type JSX, type Component } from "solid-js"; -import { optGroupClasses, selectClasses, type SelectOptionItem, type SelectSize, type SelectVariant } from "./select.shared"; -import { eqStr } from "../../utils/expr"; - -/** - * Select renders option children from the Options list plus manual children. - */ -export type SelectProps = Omit, "class" | "className" | "children" | "variant" | "size" | "value" | "disabled" | "required" | "options"> & { - variant?: SelectVariant; - size?: SelectSize; - value?: string; - disabled?: boolean; - required?: boolean; - options?: SelectOptionItem[]; - class?: string; - className?: string; - children?: JSX.Element; -}; - -export const Select: Component = (props) => { - const [local, rest] = splitProps(props, ["variant", "size", "value", "disabled", "required", "options", "class", "className", "children"]); - const cls = () => selectClasses({ variant: local.variant, size: local.size, className: local.class ?? local.className }); - return ( - - ); -}; - -/** - * SelectOption renders an option for custom Select children. - */ -export type SelectOptionProps = Omit, "class" | "className" | "children" | "selected" | "disabled"> & { - selected?: boolean; - disabled?: boolean; - class?: string; - className?: string; - children?: JSX.Element; -}; - -export const SelectOption: Component = (props) => { - const [local, rest] = splitProps(props, ["selected", "disabled", "class", "className", "children"]); - return ( - - ); -}; - -/** - * OptGroup renders a native optgroup around option children. - */ -export type OptGroupProps = Omit, "class" | "className" | "children" | "disabled"> & { - disabled?: boolean; - class?: string; - className?: string; - children?: JSX.Element; -}; - -export const OptGroup: Component = (props) => { - const [local, rest] = splitProps(props, ["disabled", "class", "className", "children"]); - const cls = () => optGroupClasses({ className: local.class ?? local.className }); - return ( - - {local.children} - - ); -}; diff --git a/generated/ui/select/select.templ b/generated/ui/select/select.templ deleted file mode 100644 index 9a3cafc..0000000 --- a/generated/ui/select/select.templ +++ /dev/null @@ -1,141 +0,0 @@ -// Code generated by @ui8kit/codegen. DO NOT EDIT. - -/* -Select is a native dropdown built from Option items. -*/ - -package selectfield - -import ( - uiutils "github.com/ui8kit/ui/utils" -) - -// SelectOptionItem is one SelectOptionItem entry. -type SelectOptionItem struct { - Value string - Label string -} - -// SelectProps configures Select. -type SelectProps struct { - // Variant — sets appearance preset - Variant string - // Size — sets density preset - Size string - // Class — adds Tailwind utilities - Class string - Name string - // Value — currently selected option value - Value string - Disabled bool - Required bool - Options []SelectOptionItem - // ID — element id - ID string - // Role — ARIA role override - Role string - // TabIndex — tab order override - TabIndex string - // AriaLabel — accessible name for unlabeled controls - AriaLabel string - Attrs templ.Attributes -} - -// SelectClasses composes Select classes without rendering — -// the server-composition escape hatch for custom root elements. -func SelectClasses(p SelectProps) string { - return uiutils.Compose(SelectVariants, map[string]string{ - "variant": p.Variant, - "size": p.Size, - }, p.Class) -} - -// Select renders the Select contract. -templ Select(p SelectProps) { - -} - -// SelectOptionProps configures SelectOption. -type SelectOptionProps struct { - Value string - Label string - Selected bool - Disabled bool - Attrs templ.Attributes -} - -// SelectOption renders the SelectOption contract. -templ SelectOption(p SelectOptionProps) { - -} - -// OptGroupProps configures OptGroup. -type OptGroupProps struct { - // Class — adds Tailwind utilities - Class string - Label string - Disabled bool - Attrs templ.Attributes -} - -// OptGroupClasses composes OptGroup classes without rendering — -// the server-composition escape hatch for custom root elements. -func OptGroupClasses(p OptGroupProps) string { - return uiutils.Cn(p.Class) -} - -// OptGroup renders the OptGroup contract. -templ OptGroup(p OptGroupProps) { - - { children... } - -} diff --git a/generated/ui/select/select.tsx b/generated/ui/select/select.tsx deleted file mode 100644 index 474d054..0000000 --- a/generated/ui/select/select.tsx +++ /dev/null @@ -1,84 +0,0 @@ -// Code generated by @ui8kit/codegen. DO NOT EDIT. -/** - * Select is a native dropdown built from Option items. - */ - -import { forwardRef, type ReactNode, type OptgroupHTMLAttributes, type OptionHTMLAttributes, type SelectHTMLAttributes } from "react"; -import { optGroupClasses, selectClasses, type SelectOptionItem, type SelectSize, type SelectVariant } from "./select.shared"; -import { eqStr } from "../../utils/expr"; - -/** - * Select renders option children from the Options list plus manual children. - */ -export type SelectProps = Omit, "className" | "children" | "variant" | "size" | "value" | "disabled" | "required" | "options"> & { - variant?: SelectVariant; - size?: SelectSize; - value?: string; - disabled?: boolean; - required?: boolean; - options?: SelectOptionItem[]; - className?: string; - children?: ReactNode; -}; - -export const Select = forwardRef(function Select( - { variant, size, value, disabled, required, options, className, children, ...rest }, - ref -) { - const cls = selectClasses({ variant, size, className }); - return ( - - ); -}); -Select.displayName = "Select"; - -/** - * SelectOption renders an option for custom Select children. - */ -export type SelectOptionProps = Omit, "className" | "children" | "selected" | "disabled"> & { - selected?: boolean; - disabled?: boolean; - className?: string; - children?: ReactNode; -}; - -export const SelectOption = forwardRef(function SelectOption( - { selected, disabled, className, children, ...rest }, - ref -) { - return ( - - ); -}); -SelectOption.displayName = "SelectOption"; - -/** - * OptGroup renders a native optgroup around option children. - */ -export type OptGroupProps = Omit, "className" | "children" | "disabled"> & { - disabled?: boolean; - className?: string; - children?: ReactNode; -}; - -export const OptGroup = forwardRef(function OptGroup( - { disabled, className, children, ...rest }, - ref -) { - const cls = optGroupClasses({ className }); - return ( - - {children} - - ); -}); -OptGroup.displayName = "OptGroup"; diff --git a/generated/ui/select/select.variants.json b/generated/ui/select/select.variants.json deleted file mode 100644 index de12d1f..0000000 --- a/generated/ui/select/select.variants.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "$schema": "../../schemas/variants.schema.json", - "base": "w-full rounded-md border px-3 py-2 text-sm outline-none transition-colors focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50", - "byKey": { - "size": { - "default": "h-10 px-3 py-2 text-sm", - "lg": "h-12 px-4 text-base", - "sm": "h-8 px-3 text-sm", - "xs": "h-8 px-2 text-xs" - }, - "variant": { - "default": "border-border bg-background", - "ghost": "border-transparent bg-muted", - "outline": "border-border bg-background" - } - }, - "defaults": { - "size": "default", - "variant": "default" - }, - "id": "ui.select", - "keys": [ - "variant", - "size" - ] -} diff --git a/generated/ui/select/select_gen.go b/generated/ui/select/select_gen.go deleted file mode 100644 index 9d1e325..0000000 --- a/generated/ui/select/select_gen.go +++ /dev/null @@ -1,15 +0,0 @@ -// Code generated by @ui8kit/codegen. DO NOT EDIT. - -package selectfield - -import ( - _ "embed" - - uiutils "github.com/ui8kit/ui/utils" -) - -//go:embed select.variants.json -var selectVariantsJSON []byte - -// SelectVariants is the CVA recipe shared verbatim by all runtimes. -var SelectVariants = uiutils.MustParseVariantRecipe(selectVariantsJSON).ToVariants() diff --git a/generated/ui/select/select_templ.go b/generated/ui/select/select_templ.go deleted file mode 100644 index 20e9dd3..0000000 --- a/generated/ui/select/select_templ.go +++ /dev/null @@ -1,491 +0,0 @@ -// Code generated by templ - DO NOT EDIT. - -// templ: version: v0.3.1001 -// Code generated by @ui8kit/codegen. DO NOT EDIT. - -/* - - -Select is a native dropdown built from Option items. - - -*/ - -package selectfield - -//lint:file-ignore SA4006 This context is only used if a nested component is present. - -import "github.com/a-h/templ" -import templruntime "github.com/a-h/templ/runtime" - -import ( - uiutils "github.com/fastygo/sezonmarket/internal/utils" -) - -// SelectOptionItem is one SelectOptionItem entry. -type SelectOptionItem struct { - Value string - Label string -} - -// SelectProps configures Select. -type SelectProps struct { - // Variant — sets appearance preset - Variant string - // Size — sets density preset - Size string - // Class — adds Tailwind utilities - Class string - Name string - // Value — currently selected option value - Value string - Disabled bool - Required bool - Options []SelectOptionItem - // ID — element id - ID string - // Role — ARIA role override - Role string - // TabIndex — tab order override - TabIndex string - // AriaLabel — accessible name for unlabeled controls - AriaLabel string - Attrs templ.Attributes -} - -// SelectClasses composes Select classes without rendering — -// the server-composition escape hatch for custom root elements. -func SelectClasses(p SelectProps) string { - return uiutils.Compose(SelectVariants, map[string]string{ - "variant": p.Variant, - "size": p.Size, - }, p.Class) -} - -// Select renders the Select contract. -func Select(p SelectProps) templ.Component { - return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { - templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context - if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil { - return templ_7745c5c3_CtxErr - } - templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) - if !templ_7745c5c3_IsBuffer { - defer func() { - templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) - if templ_7745c5c3_Err == nil { - templ_7745c5c3_Err = templ_7745c5c3_BufErr - } - }() - } - ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var1 := templ.GetChildren(ctx) - if templ_7745c5c3_Var1 == nil { - templ_7745c5c3_Var1 = templ.NopComponent - } - ctx = templ.ClearChildren(ctx) - var templ_7745c5c3_Var2 = []any{SelectClasses(p)} - templ_7745c5c3_Err = templ.RenderCSSItems(ctx, templ_7745c5c3_Buffer, templ_7745c5c3_Var2...) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 1, "") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - for _, item := range p.Options { - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 17, "") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - } - templ_7745c5c3_Err = templ_7745c5c3_Var1.Render(ctx, templ_7745c5c3_Buffer) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 22, "") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - return nil - }) -} - -// SelectOptionProps configures SelectOption. -type SelectOptionProps struct { - Value string - Label string - Selected bool - Disabled bool - Attrs templ.Attributes -} - -// SelectOption renders the SelectOption contract. -func SelectOption(p SelectOptionProps) templ.Component { - return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { - templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context - if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil { - return templ_7745c5c3_CtxErr - } - templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) - if !templ_7745c5c3_IsBuffer { - defer func() { - templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) - if templ_7745c5c3_Err == nil { - templ_7745c5c3_Err = templ_7745c5c3_BufErr - } - }() - } - ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var11 := templ.GetChildren(ctx) - if templ_7745c5c3_Var11 == nil { - templ_7745c5c3_Var11 = templ.NopComponent - } - ctx = templ.ClearChildren(ctx) - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 23, "") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templ_7745c5c3_Var11.Render(ctx, templ_7745c5c3_Buffer) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 31, "") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - return nil - }) -} - -// OptGroupProps configures OptGroup. -type OptGroupProps struct { - // Class — adds Tailwind utilities - Class string - Label string - Disabled bool - Attrs templ.Attributes -} - -// OptGroupClasses composes OptGroup classes without rendering — -// the server-composition escape hatch for custom root elements. -func OptGroupClasses(p OptGroupProps) string { - return uiutils.Cn(p.Class) -} - -// OptGroup renders the OptGroup contract. -func OptGroup(p OptGroupProps) templ.Component { - return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { - templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context - if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil { - return templ_7745c5c3_CtxErr - } - templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) - if !templ_7745c5c3_IsBuffer { - defer func() { - templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) - if templ_7745c5c3_Err == nil { - templ_7745c5c3_Err = templ_7745c5c3_BufErr - } - }() - } - ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var14 := templ.GetChildren(ctx) - if templ_7745c5c3_Var14 == nil { - templ_7745c5c3_Var14 = templ.NopComponent - } - ctx = templ.ClearChildren(ctx) - var templ_7745c5c3_Var15 = []any{OptGroupClasses(p)} - templ_7745c5c3_Err = templ.RenderCSSItems(ctx, templ_7745c5c3_Buffer, templ_7745c5c3_Var15...) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 32, "") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templ_7745c5c3_Var14.Render(ctx, templ_7745c5c3_Buffer) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 38, "") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - return nil - }) -} - -var _ = templruntime.GeneratedTemplate diff --git a/generated/ui/separator/Separator.html.twig b/generated/ui/separator/Separator.html.twig deleted file mode 100644 index d4c55b5..0000000 --- a/generated/ui/separator/Separator.html.twig +++ /dev/null @@ -1,3 +0,0 @@ -{# Code generated by @ui8kit/codegen. DO NOT EDIT. #} -{# ui.separator — Separator renders hr with optional decorative semantics. #} - diff --git a/generated/ui/separator/Separator.latte b/generated/ui/separator/Separator.latte deleted file mode 100644 index a865d0c..0000000 --- a/generated/ui/separator/Separator.latte +++ /dev/null @@ -1,16 +0,0 @@ -{* Code generated by @ui8kit/codegen. DO NOT EDIT. *} -{* ui.separator — Separator renders hr with optional decorative semantics. *} -{parameters - string $variant = '', - string $orientation = '', - string $class = '', - bool $decorative = false, - array $attrs = [], -} -
diff --git a/generated/ui/separator/Separator.svelte b/generated/ui/separator/Separator.svelte deleted file mode 100644 index 832bd92..0000000 --- a/generated/ui/separator/Separator.svelte +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - -
diff --git a/generated/ui/separator/Separator.vue b/generated/ui/separator/Separator.vue deleted file mode 100644 index 9caed97..0000000 --- a/generated/ui/separator/Separator.vue +++ /dev/null @@ -1,29 +0,0 @@ - - - - - diff --git a/generated/ui/separator/separator.shared.ts b/generated/ui/separator/separator.shared.ts deleted file mode 100644 index 1a041ff..0000000 --- a/generated/ui/separator/separator.shared.ts +++ /dev/null @@ -1,28 +0,0 @@ -// Code generated by @ui8kit/codegen. DO NOT EDIT. -// ui.separator — shared TypeScript contract (types + classes helpers) - -import { cn, composeRecipe, type RecipeKey } from "../../utils"; -import separatorRecipeJson from "./separator.variants.json"; - -export const separatorRecipe = separatorRecipeJson; - -export type SeparatorVariant = RecipeKey; -export type SeparatorOrientation = RecipeKey; - -/** Separator renders hr with optional decorative semantics. */ -export type SeparatorBaseProps = { - variant?: SeparatorVariant; - orientation?: SeparatorOrientation; - decorative?: boolean; -}; - -export type SeparatorClassesInput = { - variant?: SeparatorVariant; - orientation?: SeparatorOrientation; - className?: string; -}; - -/** Compose Separator classes without rendering — the cross-runtime `asChild` substitute. */ -export function separatorClasses(input: SeparatorClassesInput = {}): string { - return cn(composeRecipe(separatorRecipe, { variant: input.variant, orientation: input.orientation }), input.className); -} diff --git a/generated/ui/separator/separator.solid.tsx b/generated/ui/separator/separator.solid.tsx deleted file mode 100644 index a795dcc..0000000 --- a/generated/ui/separator/separator.solid.tsx +++ /dev/null @@ -1,27 +0,0 @@ -// Code generated by @ui8kit/codegen. DO NOT EDIT. -/** - * Separator renders a semantic or decorative hr. - */ - -import { splitProps, type JSX, type Component } from "solid-js"; -import { separatorClasses, type SeparatorOrientation, type SeparatorVariant } from "./separator.shared"; -import { eqStr } from "../../utils/expr"; - -/** - * Separator renders hr with optional decorative semantics. - */ -export type SeparatorProps = Omit, "class" | "className" | "children" | "variant" | "orientation" | "decorative"> & { - variant?: SeparatorVariant; - orientation?: SeparatorOrientation; - decorative?: boolean; - class?: string; - className?: string; -}; - -export const Separator: Component = (props) => { - const [local, rest] = splitProps(props, ["variant", "orientation", "decorative", "class", "className"]); - const cls = () => separatorClasses({ variant: local.variant, orientation: local.orientation, className: local.class ?? local.className }); - return ( -
- ); -}; diff --git a/generated/ui/separator/separator.templ b/generated/ui/separator/separator.templ deleted file mode 100644 index c6210d8..0000000 --- a/generated/ui/separator/separator.templ +++ /dev/null @@ -1,50 +0,0 @@ -// Code generated by @ui8kit/codegen. DO NOT EDIT. - -/* -Separator renders a semantic or decorative hr. -*/ - -package separator - -import ( - uiutils "github.com/ui8kit/ui/utils" -) - -// SeparatorProps configures Separator. -type SeparatorProps struct { - // Variant — sets appearance preset - Variant string - // Orientation — horizontal or vertical - Orientation string - // Class — adds Tailwind utilities - Class string - // Decorative — hides the rule from assistive technology - Decorative bool - Attrs templ.Attributes -} - -// SeparatorClasses composes Separator classes without rendering — -// the server-composition escape hatch for custom root elements. -func SeparatorClasses(p SeparatorProps) string { - return uiutils.Compose(SeparatorVariants, map[string]string{ - "variant": p.Variant, - "orientation": p.Orientation, - }, p.Class) -} - -// Separator renders the Separator contract. -templ Separator(p SeparatorProps) { -
-} diff --git a/generated/ui/separator/separator.tsx b/generated/ui/separator/separator.tsx deleted file mode 100644 index a9d63b3..0000000 --- a/generated/ui/separator/separator.tsx +++ /dev/null @@ -1,29 +0,0 @@ -// Code generated by @ui8kit/codegen. DO NOT EDIT. -/** - * Separator renders a semantic or decorative hr. - */ - -import { forwardRef, type ReactNode, type HTMLAttributes } from "react"; -import { separatorClasses, type SeparatorOrientation, type SeparatorVariant } from "./separator.shared"; -import { eqStr } from "../../utils/expr"; - -/** - * Separator renders hr with optional decorative semantics. - */ -export type SeparatorProps = Omit, "className" | "children" | "variant" | "orientation" | "decorative"> & { - variant?: SeparatorVariant; - orientation?: SeparatorOrientation; - decorative?: boolean; - className?: string; -}; - -export const Separator = forwardRef(function Separator( - { variant, orientation, decorative, className, ...rest }, - ref -) { - const cls = separatorClasses({ variant, orientation, className }); - return ( -
- ); -}); -Separator.displayName = "Separator"; diff --git a/generated/ui/separator/separator.variants.json b/generated/ui/separator/separator.variants.json deleted file mode 100644 index b3716f6..0000000 --- a/generated/ui/separator/separator.variants.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "$schema": "../../schemas/variants.schema.json", - "base": "shrink-0 border-0 bg-border", - "byKey": { - "orientation": { - "horizontal": "h-px w-full", - "vertical": "h-full w-px" - }, - "variant": { - "default": "", - "muted": "bg-muted", - "spaced": "my-4", - "strong": "bg-foreground" - } - }, - "defaults": { - "orientation": "horizontal", - "variant": "default" - }, - "id": "ui.separator", - "keys": [ - "orientation", - "variant" - ] -} diff --git a/generated/ui/separator/separator_gen.go b/generated/ui/separator/separator_gen.go deleted file mode 100644 index f91af72..0000000 --- a/generated/ui/separator/separator_gen.go +++ /dev/null @@ -1,15 +0,0 @@ -// Code generated by @ui8kit/codegen. DO NOT EDIT. - -package separator - -import ( - _ "embed" - - uiutils "github.com/ui8kit/ui/utils" -) - -//go:embed separator.variants.json -var separatorVariantsJSON []byte - -// SeparatorVariants is the CVA recipe shared verbatim by all runtimes. -var SeparatorVariants = uiutils.MustParseVariantRecipe(separatorVariantsJSON).ToVariants() diff --git a/generated/ui/separator/separator_templ.go b/generated/ui/separator/separator_templ.go deleted file mode 100644 index 921a226..0000000 --- a/generated/ui/separator/separator_templ.go +++ /dev/null @@ -1,160 +0,0 @@ -// Code generated by templ - DO NOT EDIT. - -// templ: version: v0.3.1001 -// Code generated by @ui8kit/codegen. DO NOT EDIT. - -/* - - -Separator renders a semantic or decorative hr. - - -*/ - -package separator - -//lint:file-ignore SA4006 This context is only used if a nested component is present. - -import "github.com/a-h/templ" -import templruntime "github.com/a-h/templ/runtime" - -import ( - uiutils "github.com/fastygo/sezonmarket/internal/utils" -) - -// SeparatorProps configures Separator. -type SeparatorProps struct { - // Variant — sets appearance preset - Variant string - // Orientation — horizontal or vertical - Orientation string - // Class — adds Tailwind utilities - Class string - // Decorative — hides the rule from assistive technology - Decorative bool - Attrs templ.Attributes -} - -// SeparatorClasses composes Separator classes without rendering — -// the server-composition escape hatch for custom root elements. -func SeparatorClasses(p SeparatorProps) string { - return uiutils.Compose(SeparatorVariants, map[string]string{ - "variant": p.Variant, - "orientation": p.Orientation, - }, p.Class) -} - -// Separator renders the Separator contract. -func Separator(p SeparatorProps) templ.Component { - return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { - templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context - if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil { - return templ_7745c5c3_CtxErr - } - templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) - if !templ_7745c5c3_IsBuffer { - defer func() { - templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) - if templ_7745c5c3_Err == nil { - templ_7745c5c3_Err = templ_7745c5c3_BufErr - } - }() - } - ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var1 := templ.GetChildren(ctx) - if templ_7745c5c3_Var1 == nil { - templ_7745c5c3_Var1 = templ.NopComponent - } - ctx = templ.ClearChildren(ctx) - var templ_7745c5c3_Var2 = []any{SeparatorClasses(p)} - templ_7745c5c3_Err = templ.RenderCSSItems(ctx, templ_7745c5c3_Buffer, templ_7745c5c3_Var2...) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 1, "
") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - return nil - }) -} - -var _ = templruntime.GeneratedTemplate diff --git a/generated/ui/shared.ts b/generated/ui/shared.ts deleted file mode 100644 index e6e228c..0000000 --- a/generated/ui/shared.ts +++ /dev/null @@ -1,36 +0,0 @@ -// Code generated by @ui8kit/codegen. DO NOT EDIT. -// Shared per-brick contracts (types + classes helpers). - -export * from "./alert/alert.shared"; -export * from "./badge/badge.shared"; -export * from "./block/block.shared"; -export * from "./box/box.shared"; -export * from "./breadcrumb/breadcrumb.shared"; -export * from "./button/button.shared"; -export * from "./card/card.shared"; -export * from "./checkbox/checkbox.shared"; -export * from "./container/container.shared"; -export * from "./dialog/dialog.shared"; -export * from "./disclosure/disclosure.shared"; -export * from "./form/form.shared"; -export * from "./form/controls.shared"; -export * from "./grid/grid.shared"; -export * from "./group/group.shared"; -export * from "./icon/icon.shared"; -export * from "./iconbadge/iconbadge.shared"; -export * from "./image/image.shared"; -export * from "./inline/inline.shared"; -export * from "./input/input.shared"; -export * from "./label/label.shared"; -export * from "./linebreak/linebreak.shared"; -export * from "./link/link.shared"; -export * from "./list/list.shared"; -export * from "./radio/radio.shared"; -export * from "./select/select.shared"; -export * from "./separator/separator.shared"; -export * from "./stack/stack.shared"; -export * from "./switch/switch.shared"; -export * from "./table/table.shared"; -export * from "./text/text.shared"; -export * from "./textarea/textarea.shared"; -export * from "./title/title.shared"; diff --git a/generated/ui/stack/Stack.html.twig b/generated/ui/stack/Stack.html.twig deleted file mode 100644 index cf8f94e..0000000 --- a/generated/ui/stack/Stack.html.twig +++ /dev/null @@ -1,4 +0,0 @@ -{# Code generated by @ui8kit/codegen. DO NOT EDIT. #} -{# ui.stack — Stack renders a vertical flex container. #} -{% set uiTag = ui8kit_resolve_tag((tag|default('')), 'div', 'Stack') %} -<{{ uiTag }}{{ ui8kit_attr_str({ 'class': ui8kit_or_null(ui8kit_classes('stackClasses', { 'class': (class|default('')) })) }, attrs|default({})) }}>{{ children|default('')|raw }} diff --git a/generated/ui/stack/Stack.latte b/generated/ui/stack/Stack.latte deleted file mode 100644 index 7e884b5..0000000 --- a/generated/ui/stack/Stack.latte +++ /dev/null @@ -1,13 +0,0 @@ -{* Code generated by @ui8kit/codegen. DO NOT EDIT. *} -{* ui.stack — Stack renders a vertical flex container. *} -{parameters - string $class = '', - string $tag = '', - array $attrs = [], - string $children = '', -} -{var $uiTag = \UI8Kit\Rt::resolveTag($tag, 'div', 'Stack')} -
{$children|noescape}
diff --git a/generated/ui/stack/Stack.svelte b/generated/ui/stack/Stack.svelte deleted file mode 100644 index fb142e6..0000000 --- a/generated/ui/stack/Stack.svelte +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - {@render children?.()} - diff --git a/generated/ui/stack/Stack.vue b/generated/ui/stack/Stack.vue deleted file mode 100644 index 7816acc..0000000 --- a/generated/ui/stack/Stack.vue +++ /dev/null @@ -1,30 +0,0 @@ - - - - - diff --git a/generated/ui/stack/stack.shared.ts b/generated/ui/stack/stack.shared.ts deleted file mode 100644 index 4a5f1a2..0000000 --- a/generated/ui/stack/stack.shared.ts +++ /dev/null @@ -1,21 +0,0 @@ -// Code generated by @ui8kit/codegen. DO NOT EDIT. -// ui.stack — shared TypeScript contract (types + classes helpers) - -import { cn, composeRecipe } from "../../utils"; -import stackRecipeJson from "./stack.variants.json"; - -export const stackRecipe = stackRecipeJson; - -/** Stack renders a vertical flex container. */ -export type StackBaseProps = { - tag?: string; -}; - -export type StackClassesInput = { - className?: string; -}; - -/** Compose Stack classes without rendering — the cross-runtime `asChild` substitute. */ -export function stackClasses(input: StackClassesInput = {}): string { - return cn(composeRecipe(stackRecipe, { }), input.className); -} diff --git a/generated/ui/stack/stack.solid.tsx b/generated/ui/stack/stack.solid.tsx deleted file mode 100644 index f385088..0000000 --- a/generated/ui/stack/stack.solid.tsx +++ /dev/null @@ -1,31 +0,0 @@ -// Code generated by @ui8kit/codegen. DO NOT EDIT. -/** - * Stack arranges children vertically in a flex column. - * Default layout primitive for spacing sections and form fields. - */ - -import { splitProps, type JSX, type Component } from "solid-js"; -import { Dynamic } from "solid-js/web"; -import { stackClasses } from "./stack.shared"; -import { resolveTag, TagGroup } from "../../utils/tags"; - -/** - * Stack renders a vertical flex container. - */ -export type StackProps = Omit, "class" | "className" | "children" | "tag"> & { - tag?: string; - class?: string; - className?: string; - children?: JSX.Element; -}; - -export const Stack: Component = (props) => { - const [local, rest] = splitProps(props, ["tag", "class", "className", "children"]); - const resolvedTagValue = () => resolveTag(local.tag, "div", TagGroup.Stack); - const cls = () => stackClasses({ className: local.class ?? local.className }); - return ( - - {local.children} - - ); -}; diff --git a/generated/ui/stack/stack.templ b/generated/ui/stack/stack.templ deleted file mode 100644 index 99b9d2a..0000000 --- a/generated/ui/stack/stack.templ +++ /dev/null @@ -1,54 +0,0 @@ -// Code generated by @ui8kit/codegen. DO NOT EDIT. - -/* -Stack arranges children vertically in a flex column. -Default layout primitive for spacing sections and form fields. -*/ - -package stack - -import ( - uiutils "github.com/ui8kit/ui/utils" -) - -// StackProps configures Stack. -type StackProps struct { - // Class — adds Tailwind utilities - Class string - // Tag — div, ul, or ol. Use Block for landmarks (aside, section, header, nav). - Tag string - Attrs templ.Attributes -} - -// StackClasses composes Stack classes without rendering — -// the server-composition escape hatch for custom root elements. -func StackClasses(p StackProps) string { - return uiutils.Compose(StackVariants, map[string]string{}, p.Class) -} - -// Stack renders the Stack contract. -templ Stack(p StackProps) { - switch uiutils.ResolveTag(p.Tag, "div", uiutils.TagGroupStack) { - case "ul": -
    - { children... } -
- case "ol": -
    - { children... } -
- default: -
- { children... } -
- } -} diff --git a/generated/ui/stack/stack.tsx b/generated/ui/stack/stack.tsx deleted file mode 100644 index a9e0422..0000000 --- a/generated/ui/stack/stack.tsx +++ /dev/null @@ -1,42 +0,0 @@ -// Code generated by @ui8kit/codegen. DO NOT EDIT. -/** - * Stack arranges children vertically in a flex column. - * Default layout primitive for spacing sections and form fields. - */ - -import { forwardRef, type ReactNode, type HTMLAttributes, type ElementType, type Ref } from "react"; -import { stackClasses } from "./stack.shared"; -import { resolveTag, TagGroup } from "../../utils/tags"; -import { Slot } from "../slot/slot"; - -/** - * Stack renders a vertical flex container. - */ -export type StackProps = Omit, "className" | "children" | "tag"> & { - tag?: string; - className?: string; - children?: ReactNode; - asChild?: boolean; -}; - -export const Stack = forwardRef(function Stack( - { tag, className, children, asChild, ...rest }, - ref -) { - const cls = stackClasses({ className }); - const resolvedTagValue = resolveTag(tag, "div", TagGroup.Stack); - const Tag = resolvedTagValue as ElementType; - if (asChild) { - return ( - - {children} - - ); - } - return ( - } className={cls || undefined} {...rest}> - {children} - - ); -}); -Stack.displayName = "Stack"; diff --git a/generated/ui/stack/stack.variants.json b/generated/ui/stack/stack.variants.json deleted file mode 100644 index 37b9aa4..0000000 --- a/generated/ui/stack/stack.variants.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "$schema": "../../schemas/variants.schema.json", - "base": "flex flex-col", - "byKey": {}, - "defaults": {}, - "id": "ui.stack", - "keys": [] -} diff --git a/generated/ui/stack/stack_gen.go b/generated/ui/stack/stack_gen.go deleted file mode 100644 index cc55f61..0000000 --- a/generated/ui/stack/stack_gen.go +++ /dev/null @@ -1,15 +0,0 @@ -// Code generated by @ui8kit/codegen. DO NOT EDIT. - -package stack - -import ( - _ "embed" - - uiutils "github.com/ui8kit/ui/utils" -) - -//go:embed stack.variants.json -var stackVariantsJSON []byte - -// StackVariants is the CVA recipe shared verbatim by all runtimes. -var StackVariants = uiutils.MustParseVariantRecipe(stackVariantsJSON).ToVariants() diff --git a/generated/ui/stack/stack_templ.go b/generated/ui/stack/stack_templ.go deleted file mode 100644 index db68b7a..0000000 --- a/generated/ui/stack/stack_templ.go +++ /dev/null @@ -1,188 +0,0 @@ -// Code generated by templ - DO NOT EDIT. - -// templ: version: v0.3.1001 -// Code generated by @ui8kit/codegen. DO NOT EDIT. - -/* - - -Stack arranges children vertically in a flex column. - - -Default layout primitive for spacing sections and form fields. - - -*/ - -package stack - -//lint:file-ignore SA4006 This context is only used if a nested component is present. - -import "github.com/a-h/templ" -import templruntime "github.com/a-h/templ/runtime" - -import ( - uiutils "github.com/fastygo/sezonmarket/internal/utils" -) - -// StackProps configures Stack. -type StackProps struct { - // Class — adds Tailwind utilities - Class string - // Tag — div, ul, or ol. Use Block for landmarks (aside, section, header, nav). - Tag string - Attrs templ.Attributes -} - -// StackClasses composes Stack classes without rendering — -// the server-composition escape hatch for custom root elements. -func StackClasses(p StackProps) string { - return uiutils.Compose(StackVariants, map[string]string{}, p.Class) -} - -// Stack renders the Stack contract. -func Stack(p StackProps) templ.Component { - return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { - templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context - if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil { - return templ_7745c5c3_CtxErr - } - templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) - if !templ_7745c5c3_IsBuffer { - defer func() { - templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) - if templ_7745c5c3_Err == nil { - templ_7745c5c3_Err = templ_7745c5c3_BufErr - } - }() - } - ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var1 := templ.GetChildren(ctx) - if templ_7745c5c3_Var1 == nil { - templ_7745c5c3_Var1 = templ.NopComponent - } - ctx = templ.ClearChildren(ctx) - switch uiutils.ResolveTag(p.Tag, "div", uiutils.TagGroupStack) { - case "ul": - var templ_7745c5c3_Var2 = []any{StackClasses(p)} - templ_7745c5c3_Err = templ.RenderCSSItems(ctx, templ_7745c5c3_Buffer, templ_7745c5c3_Var2...) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 1, "
    ") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templ_7745c5c3_Var1.Render(ctx, templ_7745c5c3_Buffer) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 4, "
") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - case "ol": - var templ_7745c5c3_Var4 = []any{StackClasses(p)} - templ_7745c5c3_Err = templ.RenderCSSItems(ctx, templ_7745c5c3_Buffer, templ_7745c5c3_Var4...) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 5, "
    ") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templ_7745c5c3_Var1.Render(ctx, templ_7745c5c3_Buffer) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 8, "
") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - default: - var templ_7745c5c3_Var6 = []any{StackClasses(p)} - templ_7745c5c3_Err = templ.RenderCSSItems(ctx, templ_7745c5c3_Buffer, templ_7745c5c3_Var6...) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 9, "
") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templ_7745c5c3_Var1.Render(ctx, templ_7745c5c3_Buffer) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 12, "
") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - } - return nil - }) -} - -var _ = templruntime.GeneratedTemplate diff --git a/generated/ui/switch/Switch.html.twig b/generated/ui/switch/Switch.html.twig deleted file mode 100644 index 5461df4..0000000 --- a/generated/ui/switch/Switch.html.twig +++ /dev/null @@ -1,3 +0,0 @@ -{# Code generated by @ui8kit/codegen. DO NOT EDIT. #} -{# ui.switch — Switch renders input[type=checkbox] with switch role attrs. #} - diff --git a/generated/ui/switch/Switch.latte b/generated/ui/switch/Switch.latte deleted file mode 100644 index 7ed6cb6..0000000 --- a/generated/ui/switch/Switch.latte +++ /dev/null @@ -1,31 +0,0 @@ -{* Code generated by @ui8kit/codegen. DO NOT EDIT. *} -{* ui.switch — Switch renders input[type=checkbox] with switch role attrs. *} -{parameters - string $variant = '', - string $size = '', - string $class = '', - string $name = '', - string $value = '', - bool $checked = false, - bool $disabled = false, - bool $required = false, - string $id = '', - string $tabindex = '', - string $ariaLabel = '', - array $attrs = [], -} - diff --git a/generated/ui/switch/Switch.svelte b/generated/ui/switch/Switch.svelte deleted file mode 100644 index 0650d8a..0000000 --- a/generated/ui/switch/Switch.svelte +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - - diff --git a/generated/ui/switch/Switch.vue b/generated/ui/switch/Switch.vue deleted file mode 100644 index edd6dea..0000000 --- a/generated/ui/switch/Switch.vue +++ /dev/null @@ -1,31 +0,0 @@ - - - - - diff --git a/generated/ui/switch/switch.shared.ts b/generated/ui/switch/switch.shared.ts deleted file mode 100644 index f21554a..0000000 --- a/generated/ui/switch/switch.shared.ts +++ /dev/null @@ -1,30 +0,0 @@ -// Code generated by @ui8kit/codegen. DO NOT EDIT. -// ui.switch — shared TypeScript contract (types + classes helpers) - -import { cn, composeRecipe, type RecipeKey } from "../../utils"; -import switchRecipeJson from "./switch.variants.json"; - -export const switchRecipe = switchRecipeJson; - -export type SwitchVariant = RecipeKey; -export type SwitchSize = RecipeKey; - -/** Switch renders input[type=checkbox] with switch role attrs. */ -export type SwitchBaseProps = { - variant?: SwitchVariant; - size?: SwitchSize; - checked?: boolean; - disabled?: boolean; - required?: boolean; -}; - -export type SwitchClassesInput = { - variant?: SwitchVariant; - size?: SwitchSize; - className?: string; -}; - -/** Compose Switch classes without rendering — the cross-runtime `asChild` substitute. */ -export function switchClasses(input: SwitchClassesInput = {}): string { - return cn(composeRecipe(switchRecipe, { variant: input.variant, size: input.size }), input.className); -} diff --git a/generated/ui/switch/switch.solid.tsx b/generated/ui/switch/switch.solid.tsx deleted file mode 100644 index 48ffbad..0000000 --- a/generated/ui/switch/switch.solid.tsx +++ /dev/null @@ -1,30 +0,0 @@ -// Code generated by @ui8kit/codegen. DO NOT EDIT. -/** - * Switch is a toggle control (checkbox with switch ARIA semantics). - * Use for on/off settings; wireframe uses native checkbox styling. - */ - -import { splitProps, type JSX, type Component } from "solid-js"; -import { switchClasses, type SwitchSize, type SwitchVariant } from "./switch.shared"; -import { boolStr } from "../../utils/expr"; - -/** - * Switch renders input[type=checkbox] with switch role attrs. - */ -export type SwitchProps = Omit, "class" | "className" | "children" | "variant" | "size" | "checked" | "disabled" | "required"> & { - variant?: SwitchVariant; - size?: SwitchSize; - checked?: boolean; - disabled?: boolean; - required?: boolean; - class?: string; - className?: string; -}; - -export const Switch: Component = (props) => { - const [local, rest] = splitProps(props, ["variant", "size", "checked", "disabled", "required", "class", "className"]); - const cls = () => switchClasses({ variant: local.variant, size: local.size, className: local.class ?? local.className }); - return ( - - ); -}; diff --git a/generated/ui/switch/switch.templ b/generated/ui/switch/switch.templ deleted file mode 100644 index 9a0f684..0000000 --- a/generated/ui/switch/switch.templ +++ /dev/null @@ -1,69 +0,0 @@ -// Code generated by @ui8kit/codegen. DO NOT EDIT. - -/* -Switch is a toggle control (checkbox with switch ARIA semantics). -Use for on/off settings; wireframe uses native checkbox styling. -*/ - -package formswitch - -import ( - uiutils "github.com/ui8kit/ui/utils" -) - -// SwitchProps configures Switch. -type SwitchProps struct { - // Variant — sets appearance preset - Variant string - // Size — sets density preset - Size string - // Class — adds Tailwind utilities - Class string - Name string - Value string - Checked bool - Disabled bool - Required bool - ID string - TabIndex string - AriaLabel string - Attrs templ.Attributes -} - -// SwitchClasses composes Switch classes without rendering — -// the server-composition escape hatch for custom root elements. -func SwitchClasses(p SwitchProps) string { - return uiutils.Compose(SwitchVariants, map[string]string{ - "variant": p.Variant, - "size": p.Size, - }, p.Class) -} - -// Switch renders the Switch contract. -templ Switch(p SwitchProps) { - -} diff --git a/generated/ui/switch/switch.tsx b/generated/ui/switch/switch.tsx deleted file mode 100644 index 8609bf4..0000000 --- a/generated/ui/switch/switch.tsx +++ /dev/null @@ -1,32 +0,0 @@ -// Code generated by @ui8kit/codegen. DO NOT EDIT. -/** - * Switch is a toggle control (checkbox with switch ARIA semantics). - * Use for on/off settings; wireframe uses native checkbox styling. - */ - -import { forwardRef, type ReactNode, type InputHTMLAttributes } from "react"; -import { switchClasses, type SwitchSize, type SwitchVariant } from "./switch.shared"; -import { boolStr } from "../../utils/expr"; - -/** - * Switch renders input[type=checkbox] with switch role attrs. - */ -export type SwitchProps = Omit, "className" | "children" | "variant" | "size" | "checked" | "disabled" | "required"> & { - variant?: SwitchVariant; - size?: SwitchSize; - checked?: boolean; - disabled?: boolean; - required?: boolean; - className?: string; -}; - -export const Switch = forwardRef(function Switch( - { variant, size, checked, disabled, required, className, ...rest }, - ref -) { - const cls = switchClasses({ variant, size, className }); - return ( - - ); -}); -Switch.displayName = "Switch"; diff --git a/generated/ui/switch/switch.variants.json b/generated/ui/switch/switch.variants.json deleted file mode 100644 index c3f7447..0000000 --- a/generated/ui/switch/switch.variants.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "$schema": "../../schemas/variants.schema.json", - "base": "rounded border border-primary text-primary focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50", - "byKey": { - "size": { - "default": "h-4 w-4", - "lg": "h-5 w-5", - "sm": "h-4 w-4", - "xs": "h-3 w-3" - }, - "variant": { - "default": "border-primary", - "ghost": "border-primary bg-muted/30", - "outline": "border-primary" - } - }, - "defaults": { - "size": "default", - "variant": "default" - }, - "id": "ui.switch", - "keys": [ - "variant", - "size" - ] -} diff --git a/generated/ui/switch/switch_gen.go b/generated/ui/switch/switch_gen.go deleted file mode 100644 index c1ea08d..0000000 --- a/generated/ui/switch/switch_gen.go +++ /dev/null @@ -1,15 +0,0 @@ -// Code generated by @ui8kit/codegen. DO NOT EDIT. - -package formswitch - -import ( - _ "embed" - - uiutils "github.com/ui8kit/ui/utils" -) - -//go:embed switch.variants.json -var switchVariantsJSON []byte - -// SwitchVariants is the CVA recipe shared verbatim by all runtimes. -var SwitchVariants = uiutils.MustParseVariantRecipe(switchVariantsJSON).ToVariants() diff --git a/generated/ui/switch/switch_templ.go b/generated/ui/switch/switch_templ.go deleted file mode 100644 index 1891cd3..0000000 --- a/generated/ui/switch/switch_templ.go +++ /dev/null @@ -1,250 +0,0 @@ -// Code generated by templ - DO NOT EDIT. - -// templ: version: v0.3.1001 -// Code generated by @ui8kit/codegen. DO NOT EDIT. - -/* - - -Switch is a toggle control (checkbox with switch ARIA semantics). - - -Use for on/off settings; wireframe uses native checkbox styling. - - -*/ - -package formswitch - -//lint:file-ignore SA4006 This context is only used if a nested component is present. - -import "github.com/a-h/templ" -import templruntime "github.com/a-h/templ/runtime" - -import ( - uiutils "github.com/fastygo/sezonmarket/internal/utils" -) - -// SwitchProps configures Switch. -type SwitchProps struct { - // Variant — sets appearance preset - Variant string - // Size — sets density preset - Size string - // Class — adds Tailwind utilities - Class string - Name string - Value string - Checked bool - Disabled bool - Required bool - ID string - TabIndex string - AriaLabel string - Attrs templ.Attributes -} - -// SwitchClasses composes Switch classes without rendering — -// the server-composition escape hatch for custom root elements. -func SwitchClasses(p SwitchProps) string { - return uiutils.Compose(SwitchVariants, map[string]string{ - "variant": p.Variant, - "size": p.Size, - }, p.Class) -} - -// Switch renders the Switch contract. -func Switch(p SwitchProps) templ.Component { - return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { - templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context - if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil { - return templ_7745c5c3_CtxErr - } - templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) - if !templ_7745c5c3_IsBuffer { - defer func() { - templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) - if templ_7745c5c3_Err == nil { - templ_7745c5c3_Err = templ_7745c5c3_BufErr - } - }() - } - ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var1 := templ.GetChildren(ctx) - if templ_7745c5c3_Var1 == nil { - templ_7745c5c3_Var1 = templ.NopComponent - } - ctx = templ.ClearChildren(ctx) - var templ_7745c5c3_Var2 = []any{SwitchClasses(p)} - templ_7745c5c3_Err = templ.RenderCSSItems(ctx, templ_7745c5c3_Buffer, templ_7745c5c3_Var2...) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 1, "") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - return nil - }) -} - -var _ = templruntime.GeneratedTemplate diff --git a/generated/ui/table/Table.html.twig b/generated/ui/table/Table.html.twig deleted file mode 100644 index 80ce3b4..0000000 --- a/generated/ui/table/Table.html.twig +++ /dev/null @@ -1,3 +0,0 @@ -{# Code generated by @ui8kit/codegen. DO NOT EDIT. #} -{# ui.table — Table renders the root table element. #} -{{ children|default('')|raw }} diff --git a/generated/ui/table/Table.latte b/generated/ui/table/Table.latte deleted file mode 100644 index efe64f8..0000000 --- a/generated/ui/table/Table.latte +++ /dev/null @@ -1,11 +0,0 @@ -{* Code generated by @ui8kit/codegen. DO NOT EDIT. *} -{* ui.table — Table renders the root table element. *} -{parameters - string $class = '', - array $attrs = [], - string $children = '', -} -{$children|noescape}
diff --git a/generated/ui/table/Table.svelte b/generated/ui/table/Table.svelte deleted file mode 100644 index 6aa0e69..0000000 --- a/generated/ui/table/Table.svelte +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - {@render children?.()} -
diff --git a/generated/ui/table/Table.vue b/generated/ui/table/Table.vue deleted file mode 100644 index add3aca..0000000 --- a/generated/ui/table/Table.vue +++ /dev/null @@ -1,24 +0,0 @@ - - - - - diff --git a/generated/ui/table/TableBody.html.twig b/generated/ui/table/TableBody.html.twig deleted file mode 100644 index 07c1cf5..0000000 --- a/generated/ui/table/TableBody.html.twig +++ /dev/null @@ -1,3 +0,0 @@ -{# Code generated by @ui8kit/codegen. DO NOT EDIT. #} -{# ui.table — TableBody renders the tbody section. #} -{{ children|default('')|raw }} diff --git a/generated/ui/table/TableBody.latte b/generated/ui/table/TableBody.latte deleted file mode 100644 index 537701c..0000000 --- a/generated/ui/table/TableBody.latte +++ /dev/null @@ -1,11 +0,0 @@ -{* Code generated by @ui8kit/codegen. DO NOT EDIT. *} -{* ui.table — TableBody renders the tbody section. *} -{parameters - string $class = '', - array $attrs = [], - string $children = '', -} -{$children|noescape} diff --git a/generated/ui/table/TableBody.svelte b/generated/ui/table/TableBody.svelte deleted file mode 100644 index 7be9542..0000000 --- a/generated/ui/table/TableBody.svelte +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - {@render children?.()} - diff --git a/generated/ui/table/TableBody.vue b/generated/ui/table/TableBody.vue deleted file mode 100644 index 0d4ac96..0000000 --- a/generated/ui/table/TableBody.vue +++ /dev/null @@ -1,24 +0,0 @@ - - - - - diff --git a/generated/ui/table/TableCaption.html.twig b/generated/ui/table/TableCaption.html.twig deleted file mode 100644 index e17571f..0000000 --- a/generated/ui/table/TableCaption.html.twig +++ /dev/null @@ -1,3 +0,0 @@ -{# Code generated by @ui8kit/codegen. DO NOT EDIT. #} -{# ui.table — TableCaption renders the table caption. #} -{{ children|default('')|raw }} diff --git a/generated/ui/table/TableCaption.latte b/generated/ui/table/TableCaption.latte deleted file mode 100644 index 69a5e6d..0000000 --- a/generated/ui/table/TableCaption.latte +++ /dev/null @@ -1,11 +0,0 @@ -{* Code generated by @ui8kit/codegen. DO NOT EDIT. *} -{* ui.table — TableCaption renders the table caption. *} -{parameters - string $class = '', - array $attrs = [], - string $children = '', -} -{$children|noescape} diff --git a/generated/ui/table/TableCaption.svelte b/generated/ui/table/TableCaption.svelte deleted file mode 100644 index a6d311d..0000000 --- a/generated/ui/table/TableCaption.svelte +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - {@render children?.()} - diff --git a/generated/ui/table/TableCaption.vue b/generated/ui/table/TableCaption.vue deleted file mode 100644 index 185e7a9..0000000 --- a/generated/ui/table/TableCaption.vue +++ /dev/null @@ -1,24 +0,0 @@ - - - - - diff --git a/generated/ui/table/TableCell.html.twig b/generated/ui/table/TableCell.html.twig deleted file mode 100644 index d7f3b8b..0000000 --- a/generated/ui/table/TableCell.html.twig +++ /dev/null @@ -1,3 +0,0 @@ -{# Code generated by @ui8kit/codegen. DO NOT EDIT. #} -{# ui.table — TableCell renders td with colspan and rowspan. #} - 0)) ? (((colspan|default(0))) ~ '') : null), 'rowspan': ((((rowspan|default(0)) > 0)) ? (((rowspan|default(0))) ~ '') : null), 'headers': ui8kit_or_null((headers|default(''))) }, attrs|default({})) }}>{{ children|default('')|raw }} diff --git a/generated/ui/table/TableCell.latte b/generated/ui/table/TableCell.latte deleted file mode 100644 index 84c6c74..0000000 --- a/generated/ui/table/TableCell.latte +++ /dev/null @@ -1,19 +0,0 @@ -{* Code generated by @ui8kit/codegen. DO NOT EDIT. *} -{* ui.table — TableCell renders td with colspan and rowspan. *} -{parameters - string $class = '', - string $scope = '', - int $colspan = 0, - int $rowspan = 0, - string $headers = '', - string $abbr = '', - array $attrs = [], - string $children = '', -} -{$children|noescape} diff --git a/generated/ui/table/TableCell.svelte b/generated/ui/table/TableCell.svelte deleted file mode 100644 index 7f9dae4..0000000 --- a/generated/ui/table/TableCell.svelte +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - {@render children?.()} - diff --git a/generated/ui/table/TableCell.vue b/generated/ui/table/TableCell.vue deleted file mode 100644 index 7df5fcd..0000000 --- a/generated/ui/table/TableCell.vue +++ /dev/null @@ -1,32 +0,0 @@ - - - - - diff --git a/generated/ui/table/TableCol.html.twig b/generated/ui/table/TableCol.html.twig deleted file mode 100644 index 5bc6eff..0000000 --- a/generated/ui/table/TableCol.html.twig +++ /dev/null @@ -1,3 +0,0 @@ -{# Code generated by @ui8kit/codegen. DO NOT EDIT. #} -{# ui.table — TableCol renders a single col definition. #} - 0)) ? (((span|default(0))) ~ '') : null) }, attrs|default({})) }}> diff --git a/generated/ui/table/TableCol.latte b/generated/ui/table/TableCol.latte deleted file mode 100644 index 1c643ab..0000000 --- a/generated/ui/table/TableCol.latte +++ /dev/null @@ -1,12 +0,0 @@ -{* Code generated by @ui8kit/codegen. DO NOT EDIT. *} -{* ui.table — TableCol renders a single col definition. *} -{parameters - string $class = '', - int $span = 0, - array $attrs = [], -} - diff --git a/generated/ui/table/TableCol.svelte b/generated/ui/table/TableCol.svelte deleted file mode 100644 index c6a6e2a..0000000 --- a/generated/ui/table/TableCol.svelte +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - diff --git a/generated/ui/table/TableCol.vue b/generated/ui/table/TableCol.vue deleted file mode 100644 index 5a9e96d..0000000 --- a/generated/ui/table/TableCol.vue +++ /dev/null @@ -1,27 +0,0 @@ - - - - - diff --git a/generated/ui/table/TableColGroup.html.twig b/generated/ui/table/TableColGroup.html.twig deleted file mode 100644 index 8e28201..0000000 --- a/generated/ui/table/TableColGroup.html.twig +++ /dev/null @@ -1,3 +0,0 @@ -{# Code generated by @ui8kit/codegen. DO NOT EDIT. #} -{# ui.table — TableColGroup renders colgroup with optional span. #} - 0)) ? (((span|default(0))) ~ '') : null) }, attrs|default({})) }}>{{ children|default('')|raw }} diff --git a/generated/ui/table/TableColGroup.latte b/generated/ui/table/TableColGroup.latte deleted file mode 100644 index 4dd0940..0000000 --- a/generated/ui/table/TableColGroup.latte +++ /dev/null @@ -1,13 +0,0 @@ -{* Code generated by @ui8kit/codegen. DO NOT EDIT. *} -{* ui.table — TableColGroup renders colgroup with optional span. *} -{parameters - string $class = '', - int $span = 0, - array $attrs = [], - string $children = '', -} -{$children|noescape} diff --git a/generated/ui/table/TableColGroup.svelte b/generated/ui/table/TableColGroup.svelte deleted file mode 100644 index 5ed177c..0000000 --- a/generated/ui/table/TableColGroup.svelte +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - - {@render children?.()} - diff --git a/generated/ui/table/TableColGroup.vue b/generated/ui/table/TableColGroup.vue deleted file mode 100644 index f8ee0f8..0000000 --- a/generated/ui/table/TableColGroup.vue +++ /dev/null @@ -1,29 +0,0 @@ - - - - - diff --git a/generated/ui/table/TableFoot.html.twig b/generated/ui/table/TableFoot.html.twig deleted file mode 100644 index 9d99699..0000000 --- a/generated/ui/table/TableFoot.html.twig +++ /dev/null @@ -1,3 +0,0 @@ -{# Code generated by @ui8kit/codegen. DO NOT EDIT. #} -{# ui.table — TableFoot renders the tfoot section. #} -{{ children|default('')|raw }} diff --git a/generated/ui/table/TableFoot.latte b/generated/ui/table/TableFoot.latte deleted file mode 100644 index 7ba4c8b..0000000 --- a/generated/ui/table/TableFoot.latte +++ /dev/null @@ -1,11 +0,0 @@ -{* Code generated by @ui8kit/codegen. DO NOT EDIT. *} -{* ui.table — TableFoot renders the tfoot section. *} -{parameters - string $class = '', - array $attrs = [], - string $children = '', -} -{$children|noescape} diff --git a/generated/ui/table/TableFoot.svelte b/generated/ui/table/TableFoot.svelte deleted file mode 100644 index 36bb889..0000000 --- a/generated/ui/table/TableFoot.svelte +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - {@render children?.()} - diff --git a/generated/ui/table/TableFoot.vue b/generated/ui/table/TableFoot.vue deleted file mode 100644 index 1a0bbe1..0000000 --- a/generated/ui/table/TableFoot.vue +++ /dev/null @@ -1,24 +0,0 @@ - - - - - diff --git a/generated/ui/table/TableHead.html.twig b/generated/ui/table/TableHead.html.twig deleted file mode 100644 index 6c07858..0000000 --- a/generated/ui/table/TableHead.html.twig +++ /dev/null @@ -1,3 +0,0 @@ -{# Code generated by @ui8kit/codegen. DO NOT EDIT. #} -{# ui.table — TableHead renders the thead section. #} -{{ children|default('')|raw }} diff --git a/generated/ui/table/TableHead.latte b/generated/ui/table/TableHead.latte deleted file mode 100644 index 4ee4426..0000000 --- a/generated/ui/table/TableHead.latte +++ /dev/null @@ -1,11 +0,0 @@ -{* Code generated by @ui8kit/codegen. DO NOT EDIT. *} -{* ui.table — TableHead renders the thead section. *} -{parameters - string $class = '', - array $attrs = [], - string $children = '', -} -{$children|noescape} diff --git a/generated/ui/table/TableHead.svelte b/generated/ui/table/TableHead.svelte deleted file mode 100644 index 64eb2da..0000000 --- a/generated/ui/table/TableHead.svelte +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - {@render children?.()} - diff --git a/generated/ui/table/TableHead.vue b/generated/ui/table/TableHead.vue deleted file mode 100644 index e28fa32..0000000 --- a/generated/ui/table/TableHead.vue +++ /dev/null @@ -1,24 +0,0 @@ - - - - - diff --git a/generated/ui/table/TableHeadCell.html.twig b/generated/ui/table/TableHeadCell.html.twig deleted file mode 100644 index 7ccce45..0000000 --- a/generated/ui/table/TableHeadCell.html.twig +++ /dev/null @@ -1,3 +0,0 @@ -{# Code generated by @ui8kit/codegen. DO NOT EDIT. #} -{# ui.table — TableHeadCell renders th with optional scope and abbr. #} - 0)) ? (((colspan|default(0))) ~ '') : null), 'rowspan': ((((rowspan|default(0)) > 0)) ? (((rowspan|default(0))) ~ '') : null), 'headers': ui8kit_or_null((headers|default(''))) }, attrs|default({})) }}>{{ children|default('')|raw }} diff --git a/generated/ui/table/TableHeadCell.latte b/generated/ui/table/TableHeadCell.latte deleted file mode 100644 index 023937a..0000000 --- a/generated/ui/table/TableHeadCell.latte +++ /dev/null @@ -1,21 +0,0 @@ -{* Code generated by @ui8kit/codegen. DO NOT EDIT. *} -{* ui.table — TableHeadCell renders th with optional scope and abbr. *} -{parameters - string $class = '', - string $scope = '', - int $colspan = 0, - int $rowspan = 0, - string $headers = '', - string $abbr = '', - array $attrs = [], - string $children = '', -} -{$children|noescape} diff --git a/generated/ui/table/TableHeadCell.svelte b/generated/ui/table/TableHeadCell.svelte deleted file mode 100644 index adb26ca..0000000 --- a/generated/ui/table/TableHeadCell.svelte +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - {@render children?.()} - diff --git a/generated/ui/table/TableHeadCell.vue b/generated/ui/table/TableHeadCell.vue deleted file mode 100644 index d1eece5..0000000 --- a/generated/ui/table/TableHeadCell.vue +++ /dev/null @@ -1,32 +0,0 @@ - - - - - diff --git a/generated/ui/table/TableRow.html.twig b/generated/ui/table/TableRow.html.twig deleted file mode 100644 index 7bb73ad..0000000 --- a/generated/ui/table/TableRow.html.twig +++ /dev/null @@ -1,3 +0,0 @@ -{# Code generated by @ui8kit/codegen. DO NOT EDIT. #} -{# ui.table — TableRow renders one tr row. #} -{{ children|default('')|raw }} diff --git a/generated/ui/table/TableRow.latte b/generated/ui/table/TableRow.latte deleted file mode 100644 index 2a82534..0000000 --- a/generated/ui/table/TableRow.latte +++ /dev/null @@ -1,11 +0,0 @@ -{* Code generated by @ui8kit/codegen. DO NOT EDIT. *} -{* ui.table — TableRow renders one tr row. *} -{parameters - string $class = '', - array $attrs = [], - string $children = '', -} -{$children|noescape} diff --git a/generated/ui/table/TableRow.svelte b/generated/ui/table/TableRow.svelte deleted file mode 100644 index affa21a..0000000 --- a/generated/ui/table/TableRow.svelte +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - {@render children?.()} - diff --git a/generated/ui/table/TableRow.vue b/generated/ui/table/TableRow.vue deleted file mode 100644 index e74a208..0000000 --- a/generated/ui/table/TableRow.vue +++ /dev/null @@ -1,24 +0,0 @@ - - - - - diff --git a/generated/ui/table/table.shared.ts b/generated/ui/table/table.shared.ts deleted file mode 100644 index e6690af..0000000 --- a/generated/ui/table/table.shared.ts +++ /dev/null @@ -1,153 +0,0 @@ -// Code generated by @ui8kit/codegen. DO NOT EDIT. -// ui.table — shared TypeScript contract (types + classes helpers) - -import { cn, composeRecipe } from "../../utils"; -import tableRecipeJson from "./table.variants.json"; - -export const tableRecipe = tableRecipeJson; - -/** Table renders the root table element. */ -export type TableBaseProps = { - -}; - -export type TableClassesInput = { - className?: string; -}; - -/** Compose Table classes without rendering — the cross-runtime `asChild` substitute. */ -export function tableClasses(input: TableClassesInput = {}): string { - return cn(composeRecipe(tableRecipe, { }), input.className); -} - -/** TableCaption renders the table caption. */ -export type TableCaptionBaseProps = { - -}; - -export type TableCaptionClassesInput = { - className?: string; -}; - -/** Compose TableCaption classes without rendering — the cross-runtime `asChild` substitute. */ -export function tableCaptionClasses(input: TableCaptionClassesInput = {}): string { - return cn(input.className); -} - -/** TableHead renders the thead section. */ -export type TableHeadBaseProps = { - -}; - -export type TableHeadClassesInput = { - className?: string; -}; - -/** Compose TableHead classes without rendering — the cross-runtime `asChild` substitute. */ -export function tableHeadClasses(input: TableHeadClassesInput = {}): string { - return cn(input.className); -} - -/** TableBody renders the tbody section. */ -export type TableBodyBaseProps = { - -}; - -export type TableBodyClassesInput = { - className?: string; -}; - -/** Compose TableBody classes without rendering — the cross-runtime `asChild` substitute. */ -export function tableBodyClasses(input: TableBodyClassesInput = {}): string { - return cn(input.className); -} - -/** TableFoot renders the tfoot section. */ -export type TableFootBaseProps = { - -}; - -export type TableFootClassesInput = { - className?: string; -}; - -/** Compose TableFoot classes without rendering — the cross-runtime `asChild` substitute. */ -export function tableFootClasses(input: TableFootClassesInput = {}): string { - return cn(input.className); -} - -/** TableRow renders one tr row. */ -export type TableRowBaseProps = { - -}; - -export type TableRowClassesInput = { - className?: string; -}; - -/** Compose TableRow classes without rendering — the cross-runtime `asChild` substitute. */ -export function tableRowClasses(input: TableRowClassesInput = {}): string { - return cn(input.className); -} - -/** TableHeadCell renders th with optional scope and abbr. */ -export type TableHeadCellBaseProps = { - scope?: string; - colSpan?: number; - rowSpan?: number; - abbr?: string; -}; - -export type TableHeadCellClassesInput = { - className?: string; -}; - -/** Compose TableHeadCell classes without rendering — the cross-runtime `asChild` substitute. */ -export function tableHeadCellClasses(input: TableHeadCellClassesInput = {}): string { - return cn(input.className); -} - -/** TableCell renders td with colspan and rowspan. */ -export type TableCellBaseProps = { - scope?: string; - colSpan?: number; - rowSpan?: number; - abbr?: string; -}; - -export type TableCellClassesInput = { - className?: string; -}; - -/** Compose TableCell classes without rendering — the cross-runtime `asChild` substitute. */ -export function tableCellClasses(input: TableCellClassesInput = {}): string { - return cn(input.className); -} - -/** TableColGroup renders colgroup with optional span. */ -export type TableColGroupBaseProps = { - span?: number; -}; - -export type TableColGroupClassesInput = { - className?: string; -}; - -/** Compose TableColGroup classes without rendering — the cross-runtime `asChild` substitute. */ -export function tableColGroupClasses(input: TableColGroupClassesInput = {}): string { - return cn(input.className); -} - -/** TableCol renders a single col definition. */ -export type TableColBaseProps = { - span?: number; -}; - -export type TableColClassesInput = { - className?: string; -}; - -/** Compose TableCol classes without rendering — the cross-runtime `asChild` substitute. */ -export function tableColClasses(input: TableColClassesInput = {}): string { - return cn(input.className); -} diff --git a/generated/ui/table/table.solid.tsx b/generated/ui/table/table.solid.tsx deleted file mode 100644 index 7c8357d..0000000 --- a/generated/ui/table/table.solid.tsx +++ /dev/null @@ -1,206 +0,0 @@ -// Code generated by @ui8kit/codegen. DO NOT EDIT. -/** - * Table composes semantic table, caption, sections, rows, and cells. - * Supports scope, colspan, and headers attrs on head cells. - */ - -import { splitProps, type JSX, type Component } from "solid-js"; -import { tableBodyClasses, tableCaptionClasses, tableCellClasses, tableClasses, tableColClasses, tableColGroupClasses, tableFootClasses, tableHeadCellClasses, tableHeadClasses, tableRowClasses } from "./table.shared"; -import { isSetNum, oneOfOrLower, orUndef } from "../../utils/expr"; - -/** - * Table renders the root table element. - */ -export type TableProps = Omit, "class" | "className" | "children"> & { - class?: string; - className?: string; - children?: JSX.Element; -}; - -export const Table: Component = (props) => { - const [local, rest] = splitProps(props, ["class", "className", "children"]); - const cls = () => tableClasses({ className: local.class ?? local.className }); - return ( - - {local.children} -
- ); -}; - -/** - * TableCaption renders the table caption. - */ -export type TableCaptionProps = Omit, "class" | "className" | "children"> & { - class?: string; - className?: string; - children?: JSX.Element; -}; - -export const TableCaption: Component = (props) => { - const [local, rest] = splitProps(props, ["class", "className", "children"]); - const cls = () => tableCaptionClasses({ className: local.class ?? local.className }); - return ( - - {local.children} - - ); -}; - -/** - * TableHead renders the thead section. - */ -export type TableHeadProps = Omit, "class" | "className" | "children"> & { - class?: string; - className?: string; - children?: JSX.Element; -}; - -export const TableHead: Component = (props) => { - const [local, rest] = splitProps(props, ["class", "className", "children"]); - const cls = () => tableHeadClasses({ className: local.class ?? local.className }); - return ( - - {local.children} - - ); -}; - -/** - * TableBody renders the tbody section. - */ -export type TableBodyProps = Omit, "class" | "className" | "children"> & { - class?: string; - className?: string; - children?: JSX.Element; -}; - -export const TableBody: Component = (props) => { - const [local, rest] = splitProps(props, ["class", "className", "children"]); - const cls = () => tableBodyClasses({ className: local.class ?? local.className }); - return ( - - {local.children} - - ); -}; - -/** - * TableFoot renders the tfoot section. - */ -export type TableFootProps = Omit, "class" | "className" | "children"> & { - class?: string; - className?: string; - children?: JSX.Element; -}; - -export const TableFoot: Component = (props) => { - const [local, rest] = splitProps(props, ["class", "className", "children"]); - const cls = () => tableFootClasses({ className: local.class ?? local.className }); - return ( - - {local.children} - - ); -}; - -/** - * TableRow renders one tr row. - */ -export type TableRowProps = Omit, "class" | "className" | "children"> & { - class?: string; - className?: string; - children?: JSX.Element; -}; - -export const TableRow: Component = (props) => { - const [local, rest] = splitProps(props, ["class", "className", "children"]); - const cls = () => tableRowClasses({ className: local.class ?? local.className }); - return ( - - {local.children} - - ); -}; - -/** - * TableHeadCell renders th with optional scope and abbr. - */ -export type TableHeadCellProps = Omit, "class" | "className" | "children" | "scope" | "colSpan" | "rowSpan" | "abbr"> & { - scope?: string; - colSpan?: number; - rowSpan?: number; - abbr?: string; - class?: string; - className?: string; - children?: JSX.Element; -}; - -export const TableHeadCell: Component = (props) => { - const [local, rest] = splitProps(props, ["scope", "colSpan", "rowSpan", "abbr", "class", "className", "children"]); - const cls = () => tableHeadCellClasses({ className: local.class ?? local.className }); - return ( - - {local.children} - - ); -}; - -/** - * TableCell renders td with colspan and rowspan. - */ -export type TableCellProps = Omit, "class" | "className" | "children" | "scope" | "colSpan" | "rowSpan" | "abbr"> & { - scope?: string; - colSpan?: number; - rowSpan?: number; - abbr?: string; - class?: string; - className?: string; - children?: JSX.Element; -}; - -export const TableCell: Component = (props) => { - const [local, rest] = splitProps(props, ["scope", "colSpan", "rowSpan", "abbr", "class", "className", "children"]); - const cls = () => tableCellClasses({ className: local.class ?? local.className }); - return ( - - {local.children} - - ); -}; - -/** - * TableColGroup renders colgroup with optional span. - */ -export type TableColGroupProps = Omit, "class" | "className" | "children" | "span"> & { - span?: number; - class?: string; - className?: string; - children?: JSX.Element; -}; - -export const TableColGroup: Component = (props) => { - const [local, rest] = splitProps(props, ["span", "class", "className", "children"]); - const cls = () => tableColGroupClasses({ className: local.class ?? local.className }); - return ( - - {local.children} - - ); -}; - -/** - * TableCol renders a single col definition. - */ -export type TableColProps = Omit, "class" | "className" | "children" | "span"> & { - span?: number; - class?: string; - className?: string; -}; - -export const TableCol: Component = (props) => { - const [local, rest] = splitProps(props, ["span", "class", "className"]); - const cls = () => tableColClasses({ className: local.class ?? local.className }); - return ( - - ); -}; diff --git a/generated/ui/table/table.templ b/generated/ui/table/table.templ deleted file mode 100644 index 6d61b4f..0000000 --- a/generated/ui/table/table.templ +++ /dev/null @@ -1,290 +0,0 @@ -// Code generated by @ui8kit/codegen. DO NOT EDIT. - -/* -Table composes semantic table, caption, sections, rows, and cells. -Supports scope, colspan, and headers attrs on head cells. -*/ - -package table - -import ( - "strconv" - - uiutils "github.com/ui8kit/ui/utils" -) - -// TableProps configures Table. -type TableProps struct { - // Class — adds Tailwind utilities - Class string - Attrs templ.Attributes -} - -// TableClasses composes Table classes without rendering — -// the server-composition escape hatch for custom root elements. -func TableClasses(p TableProps) string { - return uiutils.Compose(TableVariants, map[string]string{}, p.Class) -} - -// Table renders the Table contract. -templ Table(p TableProps) { - - { children... } -
-} - -// TableCaptionProps configures TableCaption. -type TableCaptionProps struct { - // Class — adds Tailwind utilities - Class string - Attrs templ.Attributes -} - -// TableCaptionClasses composes TableCaption classes without rendering — -// the server-composition escape hatch for custom root elements. -func TableCaptionClasses(p TableCaptionProps) string { - return uiutils.Cn(p.Class) -} - -// TableCaption renders the TableCaption contract. -templ TableCaption(p TableCaptionProps) { - - { children... } - -} - -// TableHeadProps configures TableHead. -type TableHeadProps struct { - // Class — adds Tailwind utilities - Class string - Attrs templ.Attributes -} - -// TableHeadClasses composes TableHead classes without rendering — -// the server-composition escape hatch for custom root elements. -func TableHeadClasses(p TableHeadProps) string { - return uiutils.Cn(p.Class) -} - -// TableHead renders the TableHead contract. -templ TableHead(p TableHeadProps) { - - { children... } - -} - -// TableBodyProps configures TableBody. -type TableBodyProps struct { - // Class — adds Tailwind utilities - Class string - Attrs templ.Attributes -} - -// TableBodyClasses composes TableBody classes without rendering — -// the server-composition escape hatch for custom root elements. -func TableBodyClasses(p TableBodyProps) string { - return uiutils.Cn(p.Class) -} - -// TableBody renders the TableBody contract. -templ TableBody(p TableBodyProps) { - - { children... } - -} - -// TableFootProps configures TableFoot. -type TableFootProps struct { - // Class — adds Tailwind utilities - Class string - Attrs templ.Attributes -} - -// TableFootClasses composes TableFoot classes without rendering — -// the server-composition escape hatch for custom root elements. -func TableFootClasses(p TableFootProps) string { - return uiutils.Cn(p.Class) -} - -// TableFoot renders the TableFoot contract. -templ TableFoot(p TableFootProps) { - - { children... } - -} - -// TableRowProps configures TableRow. -type TableRowProps struct { - // Class — adds Tailwind utilities - Class string - Attrs templ.Attributes -} - -// TableRowClasses composes TableRow classes without rendering — -// the server-composition escape hatch for custom root elements. -func TableRowClasses(p TableRowProps) string { - return uiutils.Cn(p.Class) -} - -// TableRow renders the TableRow contract. -templ TableRow(p TableRowProps) { - - { children... } - -} - -// TableHeadCellProps configures TableHeadCell. -type TableHeadCellProps struct { - // Class — adds Tailwind utilities - Class string - // Scope — th scope: col, row, colgroup, rowgroup - Scope string - ColSpan int - RowSpan int - // Headers — ids of related header cells - Headers string - // Abbr — abbreviated header text for th - Abbr string - Attrs templ.Attributes -} - -// TableHeadCellClasses composes TableHeadCell classes without rendering — -// the server-composition escape hatch for custom root elements. -func TableHeadCellClasses(p TableHeadCellProps) string { - return uiutils.Cn(p.Class) -} - -// TableHeadCell renders the TableHeadCell contract. -templ TableHeadCell(p TableHeadCellProps) { - 0) { - colspan={ strconv.Itoa(int(p.ColSpan)) } - } - if (int(p.RowSpan) > 0) { - rowspan={ strconv.Itoa(int(p.RowSpan)) } - } - if uiutils.IsSetStr(p.Headers) { - headers={ p.Headers } - } - { p.Attrs... } - > - { children... } - -} - -// TableCellProps configures TableCell. -type TableCellProps struct { - // Class — adds Tailwind utilities - Class string - // Scope — th scope: col, row, colgroup, rowgroup - Scope string - ColSpan int - RowSpan int - // Headers — ids of related header cells - Headers string - // Abbr — abbreviated header text for th - Abbr string - Attrs templ.Attributes -} - -// TableCellClasses composes TableCell classes without rendering — -// the server-composition escape hatch for custom root elements. -func TableCellClasses(p TableCellProps) string { - return uiutils.Cn(p.Class) -} - -// TableCell renders the TableCell contract. -templ TableCell(p TableCellProps) { - 0) { - colspan={ strconv.Itoa(int(p.ColSpan)) } - } - if (int(p.RowSpan) > 0) { - rowspan={ strconv.Itoa(int(p.RowSpan)) } - } - if uiutils.IsSetStr(p.Headers) { - headers={ p.Headers } - } - { p.Attrs... } - > - { children... } - -} - -// TableColGroupProps configures TableColGroup. -type TableColGroupProps struct { - // Class — adds Tailwind utilities - Class string - Span int - Attrs templ.Attributes -} - -// TableColGroupClasses composes TableColGroup classes without rendering — -// the server-composition escape hatch for custom root elements. -func TableColGroupClasses(p TableColGroupProps) string { - return uiutils.Cn(p.Class) -} - -// TableColGroup renders the TableColGroup contract. -templ TableColGroup(p TableColGroupProps) { - 0) { - span={ strconv.Itoa(int(p.Span)) } - } - { p.Attrs... } - > - { children... } - -} - -// TableColProps configures TableCol. -type TableColProps struct { - // Class — adds Tailwind utilities - Class string - Span int - Attrs templ.Attributes -} - -// TableColClasses composes TableCol classes without rendering — -// the server-composition escape hatch for custom root elements. -func TableColClasses(p TableColProps) string { - return uiutils.Cn(p.Class) -} - -// TableCol renders the TableCol contract. -templ TableCol(p TableColProps) { - 0) { - span={ strconv.Itoa(int(p.Span)) } - } - { p.Attrs... } - /> -} diff --git a/generated/ui/table/table.tsx b/generated/ui/table/table.tsx deleted file mode 100644 index 434f1ad..0000000 --- a/generated/ui/table/table.tsx +++ /dev/null @@ -1,226 +0,0 @@ -// Code generated by @ui8kit/codegen. DO NOT EDIT. -/** - * Table composes semantic table, caption, sections, rows, and cells. - * Supports scope, colspan, and headers attrs on head cells. - */ - -import { forwardRef, type ReactNode, type ColHTMLAttributes, type ColgroupHTMLAttributes, type HTMLAttributes, type TableHTMLAttributes, type TdHTMLAttributes, type ThHTMLAttributes } from "react"; -import { tableBodyClasses, tableCaptionClasses, tableCellClasses, tableClasses, tableColClasses, tableColGroupClasses, tableFootClasses, tableHeadCellClasses, tableHeadClasses, tableRowClasses } from "./table.shared"; -import { isSetNum, oneOfOrLower, orUndef } from "../../utils/expr"; - -/** - * Table renders the root table element. - */ -export type TableProps = Omit, "className" | "children"> & { - className?: string; - children?: ReactNode; -}; - -export const Table = forwardRef(function Table( - { className, children, ...rest }, - ref -) { - const cls = tableClasses({ className }); - return ( - - {children} -
- ); -}); -Table.displayName = "Table"; - -/** - * TableCaption renders the table caption. - */ -export type TableCaptionProps = Omit, "className" | "children"> & { - className?: string; - children?: ReactNode; -}; - -export const TableCaption = forwardRef(function TableCaption( - { className, children, ...rest }, - ref -) { - const cls = tableCaptionClasses({ className }); - return ( - - {children} - - ); -}); -TableCaption.displayName = "TableCaption"; - -/** - * TableHead renders the thead section. - */ -export type TableHeadProps = Omit, "className" | "children"> & { - className?: string; - children?: ReactNode; -}; - -export const TableHead = forwardRef(function TableHead( - { className, children, ...rest }, - ref -) { - const cls = tableHeadClasses({ className }); - return ( - - {children} - - ); -}); -TableHead.displayName = "TableHead"; - -/** - * TableBody renders the tbody section. - */ -export type TableBodyProps = Omit, "className" | "children"> & { - className?: string; - children?: ReactNode; -}; - -export const TableBody = forwardRef(function TableBody( - { className, children, ...rest }, - ref -) { - const cls = tableBodyClasses({ className }); - return ( - - {children} - - ); -}); -TableBody.displayName = "TableBody"; - -/** - * TableFoot renders the tfoot section. - */ -export type TableFootProps = Omit, "className" | "children"> & { - className?: string; - children?: ReactNode; -}; - -export const TableFoot = forwardRef(function TableFoot( - { className, children, ...rest }, - ref -) { - const cls = tableFootClasses({ className }); - return ( - - {children} - - ); -}); -TableFoot.displayName = "TableFoot"; - -/** - * TableRow renders one tr row. - */ -export type TableRowProps = Omit, "className" | "children"> & { - className?: string; - children?: ReactNode; -}; - -export const TableRow = forwardRef(function TableRow( - { className, children, ...rest }, - ref -) { - const cls = tableRowClasses({ className }); - return ( - - {children} - - ); -}); -TableRow.displayName = "TableRow"; - -/** - * TableHeadCell renders th with optional scope and abbr. - */ -export type TableHeadCellProps = Omit, "className" | "children" | "scope" | "colSpan" | "rowSpan" | "abbr"> & { - scope?: string; - colSpan?: number; - rowSpan?: number; - abbr?: string; - className?: string; - children?: ReactNode; -}; - -export const TableHeadCell = forwardRef(function TableHeadCell( - { scope, colSpan, rowSpan, abbr, className, children, ...rest }, - ref -) { - const cls = tableHeadCellClasses({ className }); - return ( - - {children} - - ); -}); -TableHeadCell.displayName = "TableHeadCell"; - -/** - * TableCell renders td with colspan and rowspan. - */ -export type TableCellProps = Omit, "className" | "children" | "scope" | "colSpan" | "rowSpan" | "abbr"> & { - scope?: string; - colSpan?: number; - rowSpan?: number; - abbr?: string; - className?: string; - children?: ReactNode; -}; - -export const TableCell = forwardRef(function TableCell( - { scope, colSpan, rowSpan, abbr, className, children, ...rest }, - ref -) { - const cls = tableCellClasses({ className }); - return ( - - {children} - - ); -}); -TableCell.displayName = "TableCell"; - -/** - * TableColGroup renders colgroup with optional span. - */ -export type TableColGroupProps = Omit, "className" | "children" | "span"> & { - span?: number; - className?: string; - children?: ReactNode; -}; - -export const TableColGroup = forwardRef(function TableColGroup( - { span, className, children, ...rest }, - ref -) { - const cls = tableColGroupClasses({ className }); - return ( - - {children} - - ); -}); -TableColGroup.displayName = "TableColGroup"; - -/** - * TableCol renders a single col definition. - */ -export type TableColProps = Omit, "className" | "children" | "span"> & { - span?: number; - className?: string; -}; - -export const TableCol = forwardRef(function TableCol( - { span, className, ...rest }, - ref -) { - const cls = tableColClasses({ className }); - return ( - - ); -}); -TableCol.displayName = "TableCol"; diff --git a/generated/ui/table/table.variants.json b/generated/ui/table/table.variants.json deleted file mode 100644 index 9b48058..0000000 --- a/generated/ui/table/table.variants.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "$schema": "../../schemas/variants.schema.json", - "base": "w-full caption-bottom text-sm", - "byKey": {}, - "defaults": {}, - "id": "ui.table", - "keys": [] -} diff --git a/generated/ui/table/table_gen.go b/generated/ui/table/table_gen.go deleted file mode 100644 index 081cf4f..0000000 --- a/generated/ui/table/table_gen.go +++ /dev/null @@ -1,15 +0,0 @@ -// Code generated by @ui8kit/codegen. DO NOT EDIT. - -package table - -import ( - _ "embed" - - uiutils "github.com/ui8kit/ui/utils" -) - -//go:embed table.variants.json -var tableVariantsJSON []byte - -// TableVariants is the CVA recipe shared verbatim by all runtimes. -var TableVariants = uiutils.MustParseVariantRecipe(tableVariantsJSON).ToVariants() diff --git a/generated/ui/table/table_templ.go b/generated/ui/table/table_templ.go deleted file mode 100644 index 863b8f5..0000000 --- a/generated/ui/table/table_templ.go +++ /dev/null @@ -1,1000 +0,0 @@ -// Code generated by templ - DO NOT EDIT. - -// templ: version: v0.3.1001 -// Code generated by @ui8kit/codegen. DO NOT EDIT. - -/* - - -Table composes semantic table, caption, sections, rows, and cells. - - -Supports scope, colspan, and headers attrs on head cells. - - -*/ - -package table - -//lint:file-ignore SA4006 This context is only used if a nested component is present. - -import "github.com/a-h/templ" -import templruntime "github.com/a-h/templ/runtime" - -import ( - "strconv" - - uiutils "github.com/fastygo/sezonmarket/internal/utils" -) - -// TableProps configures Table. -type TableProps struct { - // Class — adds Tailwind utilities - Class string - Attrs templ.Attributes -} - -// TableClasses composes Table classes without rendering — -// the server-composition escape hatch for custom root elements. -func TableClasses(p TableProps) string { - return uiutils.Compose(TableVariants, map[string]string{}, p.Class) -} - -// Table renders the Table contract. -func Table(p TableProps) templ.Component { - return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { - templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context - if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil { - return templ_7745c5c3_CtxErr - } - templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) - if !templ_7745c5c3_IsBuffer { - defer func() { - templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) - if templ_7745c5c3_Err == nil { - templ_7745c5c3_Err = templ_7745c5c3_BufErr - } - }() - } - ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var1 := templ.GetChildren(ctx) - if templ_7745c5c3_Var1 == nil { - templ_7745c5c3_Var1 = templ.NopComponent - } - ctx = templ.ClearChildren(ctx) - var templ_7745c5c3_Var2 = []any{TableClasses(p)} - templ_7745c5c3_Err = templ.RenderCSSItems(ctx, templ_7745c5c3_Buffer, templ_7745c5c3_Var2...) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 1, "") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templ_7745c5c3_Var1.Render(ctx, templ_7745c5c3_Buffer) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 4, "
") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - return nil - }) -} - -// TableCaptionProps configures TableCaption. -type TableCaptionProps struct { - // Class — adds Tailwind utilities - Class string - Attrs templ.Attributes -} - -// TableCaptionClasses composes TableCaption classes without rendering — -// the server-composition escape hatch for custom root elements. -func TableCaptionClasses(p TableCaptionProps) string { - return uiutils.Cn(p.Class) -} - -// TableCaption renders the TableCaption contract. -func TableCaption(p TableCaptionProps) templ.Component { - return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { - templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context - if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil { - return templ_7745c5c3_CtxErr - } - templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) - if !templ_7745c5c3_IsBuffer { - defer func() { - templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) - if templ_7745c5c3_Err == nil { - templ_7745c5c3_Err = templ_7745c5c3_BufErr - } - }() - } - ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var4 := templ.GetChildren(ctx) - if templ_7745c5c3_Var4 == nil { - templ_7745c5c3_Var4 = templ.NopComponent - } - ctx = templ.ClearChildren(ctx) - var templ_7745c5c3_Var5 = []any{TableCaptionClasses(p)} - templ_7745c5c3_Err = templ.RenderCSSItems(ctx, templ_7745c5c3_Buffer, templ_7745c5c3_Var5...) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 5, "") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templ_7745c5c3_Var4.Render(ctx, templ_7745c5c3_Buffer) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 8, "") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - return nil - }) -} - -// TableHeadProps configures TableHead. -type TableHeadProps struct { - // Class — adds Tailwind utilities - Class string - Attrs templ.Attributes -} - -// TableHeadClasses composes TableHead classes without rendering — -// the server-composition escape hatch for custom root elements. -func TableHeadClasses(p TableHeadProps) string { - return uiutils.Cn(p.Class) -} - -// TableHead renders the TableHead contract. -func TableHead(p TableHeadProps) templ.Component { - return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { - templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context - if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil { - return templ_7745c5c3_CtxErr - } - templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) - if !templ_7745c5c3_IsBuffer { - defer func() { - templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) - if templ_7745c5c3_Err == nil { - templ_7745c5c3_Err = templ_7745c5c3_BufErr - } - }() - } - ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var7 := templ.GetChildren(ctx) - if templ_7745c5c3_Var7 == nil { - templ_7745c5c3_Var7 = templ.NopComponent - } - ctx = templ.ClearChildren(ctx) - var templ_7745c5c3_Var8 = []any{TableHeadClasses(p)} - templ_7745c5c3_Err = templ.RenderCSSItems(ctx, templ_7745c5c3_Buffer, templ_7745c5c3_Var8...) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 9, "") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templ_7745c5c3_Var7.Render(ctx, templ_7745c5c3_Buffer) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 12, "") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - return nil - }) -} - -// TableBodyProps configures TableBody. -type TableBodyProps struct { - // Class — adds Tailwind utilities - Class string - Attrs templ.Attributes -} - -// TableBodyClasses composes TableBody classes without rendering — -// the server-composition escape hatch for custom root elements. -func TableBodyClasses(p TableBodyProps) string { - return uiutils.Cn(p.Class) -} - -// TableBody renders the TableBody contract. -func TableBody(p TableBodyProps) templ.Component { - return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { - templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context - if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil { - return templ_7745c5c3_CtxErr - } - templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) - if !templ_7745c5c3_IsBuffer { - defer func() { - templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) - if templ_7745c5c3_Err == nil { - templ_7745c5c3_Err = templ_7745c5c3_BufErr - } - }() - } - ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var10 := templ.GetChildren(ctx) - if templ_7745c5c3_Var10 == nil { - templ_7745c5c3_Var10 = templ.NopComponent - } - ctx = templ.ClearChildren(ctx) - var templ_7745c5c3_Var11 = []any{TableBodyClasses(p)} - templ_7745c5c3_Err = templ.RenderCSSItems(ctx, templ_7745c5c3_Buffer, templ_7745c5c3_Var11...) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 13, "") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templ_7745c5c3_Var10.Render(ctx, templ_7745c5c3_Buffer) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 16, "") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - return nil - }) -} - -// TableFootProps configures TableFoot. -type TableFootProps struct { - // Class — adds Tailwind utilities - Class string - Attrs templ.Attributes -} - -// TableFootClasses composes TableFoot classes without rendering — -// the server-composition escape hatch for custom root elements. -func TableFootClasses(p TableFootProps) string { - return uiutils.Cn(p.Class) -} - -// TableFoot renders the TableFoot contract. -func TableFoot(p TableFootProps) templ.Component { - return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { - templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context - if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil { - return templ_7745c5c3_CtxErr - } - templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) - if !templ_7745c5c3_IsBuffer { - defer func() { - templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) - if templ_7745c5c3_Err == nil { - templ_7745c5c3_Err = templ_7745c5c3_BufErr - } - }() - } - ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var13 := templ.GetChildren(ctx) - if templ_7745c5c3_Var13 == nil { - templ_7745c5c3_Var13 = templ.NopComponent - } - ctx = templ.ClearChildren(ctx) - var templ_7745c5c3_Var14 = []any{TableFootClasses(p)} - templ_7745c5c3_Err = templ.RenderCSSItems(ctx, templ_7745c5c3_Buffer, templ_7745c5c3_Var14...) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 17, "") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templ_7745c5c3_Var13.Render(ctx, templ_7745c5c3_Buffer) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 20, "") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - return nil - }) -} - -// TableRowProps configures TableRow. -type TableRowProps struct { - // Class — adds Tailwind utilities - Class string - Attrs templ.Attributes -} - -// TableRowClasses composes TableRow classes without rendering — -// the server-composition escape hatch for custom root elements. -func TableRowClasses(p TableRowProps) string { - return uiutils.Cn(p.Class) -} - -// TableRow renders the TableRow contract. -func TableRow(p TableRowProps) templ.Component { - return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { - templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context - if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil { - return templ_7745c5c3_CtxErr - } - templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) - if !templ_7745c5c3_IsBuffer { - defer func() { - templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) - if templ_7745c5c3_Err == nil { - templ_7745c5c3_Err = templ_7745c5c3_BufErr - } - }() - } - ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var16 := templ.GetChildren(ctx) - if templ_7745c5c3_Var16 == nil { - templ_7745c5c3_Var16 = templ.NopComponent - } - ctx = templ.ClearChildren(ctx) - var templ_7745c5c3_Var17 = []any{TableRowClasses(p)} - templ_7745c5c3_Err = templ.RenderCSSItems(ctx, templ_7745c5c3_Buffer, templ_7745c5c3_Var17...) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 21, "") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templ_7745c5c3_Var16.Render(ctx, templ_7745c5c3_Buffer) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 24, "") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - return nil - }) -} - -// TableHeadCellProps configures TableHeadCell. -type TableHeadCellProps struct { - // Class — adds Tailwind utilities - Class string - // Scope — th scope: col, row, colgroup, rowgroup - Scope string - ColSpan int - RowSpan int - // Headers — ids of related header cells - Headers string - // Abbr — abbreviated header text for th - Abbr string - Attrs templ.Attributes -} - -// TableHeadCellClasses composes TableHeadCell classes without rendering — -// the server-composition escape hatch for custom root elements. -func TableHeadCellClasses(p TableHeadCellProps) string { - return uiutils.Cn(p.Class) -} - -// TableHeadCell renders the TableHeadCell contract. -func TableHeadCell(p TableHeadCellProps) templ.Component { - return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { - templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context - if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil { - return templ_7745c5c3_CtxErr - } - templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) - if !templ_7745c5c3_IsBuffer { - defer func() { - templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) - if templ_7745c5c3_Err == nil { - templ_7745c5c3_Err = templ_7745c5c3_BufErr - } - }() - } - ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var19 := templ.GetChildren(ctx) - if templ_7745c5c3_Var19 == nil { - templ_7745c5c3_Var19 = templ.NopComponent - } - ctx = templ.ClearChildren(ctx) - var templ_7745c5c3_Var20 = []any{TableHeadCellClasses(p)} - templ_7745c5c3_Err = templ.RenderCSSItems(ctx, templ_7745c5c3_Buffer, templ_7745c5c3_Var20...) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 25, " 0 { - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 31, " colspan=\"") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - var templ_7745c5c3_Var24 string - templ_7745c5c3_Var24, templ_7745c5c3_Err = templ.JoinStringErrs(strconv.Itoa(int(p.ColSpan))) - if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `ui/table/table.templ`, Line: 186, Col: 41} - } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var24)) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 32, "\"") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - } - if int(p.RowSpan) > 0 { - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 33, " rowspan=\"") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - var templ_7745c5c3_Var25 string - templ_7745c5c3_Var25, templ_7745c5c3_Err = templ.JoinStringErrs(strconv.Itoa(int(p.RowSpan))) - if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `ui/table/table.templ`, Line: 189, Col: 41} - } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var25)) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 34, "\"") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - } - if uiutils.IsSetStr(p.Headers) { - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 35, " headers=\"") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - var templ_7745c5c3_Var26 string - templ_7745c5c3_Var26, templ_7745c5c3_Err = templ.JoinStringErrs(p.Headers) - if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `ui/table/table.templ`, Line: 192, Col: 22} - } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var26)) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 36, "\"") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - } - templ_7745c5c3_Err = templ.RenderAttributes(ctx, templ_7745c5c3_Buffer, p.Attrs) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 37, ">") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templ_7745c5c3_Var19.Render(ctx, templ_7745c5c3_Buffer) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 38, "") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - return nil - }) -} - -// TableCellProps configures TableCell. -type TableCellProps struct { - // Class — adds Tailwind utilities - Class string - // Scope — th scope: col, row, colgroup, rowgroup - Scope string - ColSpan int - RowSpan int - // Headers — ids of related header cells - Headers string - // Abbr — abbreviated header text for th - Abbr string - Attrs templ.Attributes -} - -// TableCellClasses composes TableCell classes without rendering — -// the server-composition escape hatch for custom root elements. -func TableCellClasses(p TableCellProps) string { - return uiutils.Cn(p.Class) -} - -// TableCell renders the TableCell contract. -func TableCell(p TableCellProps) templ.Component { - return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { - templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context - if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil { - return templ_7745c5c3_CtxErr - } - templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) - if !templ_7745c5c3_IsBuffer { - defer func() { - templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) - if templ_7745c5c3_Err == nil { - templ_7745c5c3_Err = templ_7745c5c3_BufErr - } - }() - } - ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var27 := templ.GetChildren(ctx) - if templ_7745c5c3_Var27 == nil { - templ_7745c5c3_Var27 = templ.NopComponent - } - ctx = templ.ClearChildren(ctx) - var templ_7745c5c3_Var28 = []any{TableCellClasses(p)} - templ_7745c5c3_Err = templ.RenderCSSItems(ctx, templ_7745c5c3_Buffer, templ_7745c5c3_Var28...) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 39, " 0 { - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 41, " colspan=\"") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - var templ_7745c5c3_Var30 string - templ_7745c5c3_Var30, templ_7745c5c3_Err = templ.JoinStringErrs(strconv.Itoa(int(p.ColSpan))) - if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `ui/table/table.templ`, Line: 226, Col: 41} - } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var30)) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 42, "\"") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - } - if int(p.RowSpan) > 0 { - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 43, " rowspan=\"") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - var templ_7745c5c3_Var31 string - templ_7745c5c3_Var31, templ_7745c5c3_Err = templ.JoinStringErrs(strconv.Itoa(int(p.RowSpan))) - if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `ui/table/table.templ`, Line: 229, Col: 41} - } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var31)) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 44, "\"") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - } - if uiutils.IsSetStr(p.Headers) { - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 45, " headers=\"") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - var templ_7745c5c3_Var32 string - templ_7745c5c3_Var32, templ_7745c5c3_Err = templ.JoinStringErrs(p.Headers) - if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `ui/table/table.templ`, Line: 232, Col: 22} - } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var32)) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 46, "\"") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - } - templ_7745c5c3_Err = templ.RenderAttributes(ctx, templ_7745c5c3_Buffer, p.Attrs) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 47, ">") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templ_7745c5c3_Var27.Render(ctx, templ_7745c5c3_Buffer) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 48, "") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - return nil - }) -} - -// TableColGroupProps configures TableColGroup. -type TableColGroupProps struct { - // Class — adds Tailwind utilities - Class string - Span int - Attrs templ.Attributes -} - -// TableColGroupClasses composes TableColGroup classes without rendering — -// the server-composition escape hatch for custom root elements. -func TableColGroupClasses(p TableColGroupProps) string { - return uiutils.Cn(p.Class) -} - -// TableColGroup renders the TableColGroup contract. -func TableColGroup(p TableColGroupProps) templ.Component { - return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { - templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context - if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil { - return templ_7745c5c3_CtxErr - } - templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) - if !templ_7745c5c3_IsBuffer { - defer func() { - templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) - if templ_7745c5c3_Err == nil { - templ_7745c5c3_Err = templ_7745c5c3_BufErr - } - }() - } - ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var33 := templ.GetChildren(ctx) - if templ_7745c5c3_Var33 == nil { - templ_7745c5c3_Var33 = templ.NopComponent - } - ctx = templ.ClearChildren(ctx) - var templ_7745c5c3_Var34 = []any{TableColGroupClasses(p)} - templ_7745c5c3_Err = templ.RenderCSSItems(ctx, templ_7745c5c3_Buffer, templ_7745c5c3_Var34...) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 49, " 0 { - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 51, " span=\"") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - var templ_7745c5c3_Var36 string - templ_7745c5c3_Var36, templ_7745c5c3_Err = templ.JoinStringErrs(strconv.Itoa(int(p.Span))) - if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `ui/table/table.templ`, Line: 259, Col: 35} - } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var36)) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 52, "\"") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - } - templ_7745c5c3_Err = templ.RenderAttributes(ctx, templ_7745c5c3_Buffer, p.Attrs) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 53, ">") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templ_7745c5c3_Var33.Render(ctx, templ_7745c5c3_Buffer) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 54, "") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - return nil - }) -} - -// TableColProps configures TableCol. -type TableColProps struct { - // Class — adds Tailwind utilities - Class string - Span int - Attrs templ.Attributes -} - -// TableColClasses composes TableCol classes without rendering — -// the server-composition escape hatch for custom root elements. -func TableColClasses(p TableColProps) string { - return uiutils.Cn(p.Class) -} - -// TableCol renders the TableCol contract. -func TableCol(p TableColProps) templ.Component { - return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { - templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context - if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil { - return templ_7745c5c3_CtxErr - } - templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) - if !templ_7745c5c3_IsBuffer { - defer func() { - templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) - if templ_7745c5c3_Err == nil { - templ_7745c5c3_Err = templ_7745c5c3_BufErr - } - }() - } - ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var37 := templ.GetChildren(ctx) - if templ_7745c5c3_Var37 == nil { - templ_7745c5c3_Var37 = templ.NopComponent - } - ctx = templ.ClearChildren(ctx) - var templ_7745c5c3_Var38 = []any{TableColClasses(p)} - templ_7745c5c3_Err = templ.RenderCSSItems(ctx, templ_7745c5c3_Buffer, templ_7745c5c3_Var38...) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 55, " 0 { - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 57, " span=\"") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - var templ_7745c5c3_Var40 string - templ_7745c5c3_Var40, templ_7745c5c3_Err = templ.JoinStringErrs(strconv.Itoa(int(p.Span))) - if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `ui/table/table.templ`, Line: 286, Col: 35} - } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var40)) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 58, "\"") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - } - templ_7745c5c3_Err = templ.RenderAttributes(ctx, templ_7745c5c3_Buffer, p.Attrs) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 59, ">") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - return nil - }) -} - -var _ = templruntime.GeneratedTemplate diff --git a/generated/ui/text/Text.html.twig b/generated/ui/text/Text.html.twig deleted file mode 100644 index 6989d34..0000000 --- a/generated/ui/text/Text.html.twig +++ /dev/null @@ -1,3 +0,0 @@ -{# Code generated by @ui8kit/codegen. DO NOT EDIT. #} -{# ui.text — Text renders a p element with body copy classes. #} -{{ children|default('')|raw }}

diff --git a/generated/ui/text/Text.latte b/generated/ui/text/Text.latte deleted file mode 100644 index 08b4f33..0000000 --- a/generated/ui/text/Text.latte +++ /dev/null @@ -1,11 +0,0 @@ -{* Code generated by @ui8kit/codegen. DO NOT EDIT. *} -{* ui.text — Text renders a p element with body copy classes. *} -{parameters - string $class = '', - array $attrs = [], - string $children = '', -} -

{$children|noescape}

diff --git a/generated/ui/text/Text.svelte b/generated/ui/text/Text.svelte deleted file mode 100644 index c98a25f..0000000 --- a/generated/ui/text/Text.svelte +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - -

- {@render children?.()} -

diff --git a/generated/ui/text/Text.vue b/generated/ui/text/Text.vue deleted file mode 100644 index 57efbb6..0000000 --- a/generated/ui/text/Text.vue +++ /dev/null @@ -1,24 +0,0 @@ - - - - - diff --git a/generated/ui/text/text.shared.ts b/generated/ui/text/text.shared.ts deleted file mode 100644 index f09d3e7..0000000 --- a/generated/ui/text/text.shared.ts +++ /dev/null @@ -1,21 +0,0 @@ -// Code generated by @ui8kit/codegen. DO NOT EDIT. -// ui.text — shared TypeScript contract (types + classes helpers) - -import { cn, composeRecipe } from "../../utils"; -import textRecipeJson from "./text.variants.json"; - -export const textRecipe = textRecipeJson; - -/** Text renders a p element with body copy classes. */ -export type TextBaseProps = { - -}; - -export type TextClassesInput = { - className?: string; -}; - -/** Compose Text classes without rendering — the cross-runtime `asChild` substitute. */ -export function textClasses(input: TextClassesInput = {}): string { - return cn(composeRecipe(textRecipe, { }), input.className); -} diff --git a/generated/ui/text/text.solid.tsx b/generated/ui/text/text.solid.tsx deleted file mode 100644 index 58d9efe..0000000 --- a/generated/ui/text/text.solid.tsx +++ /dev/null @@ -1,27 +0,0 @@ -// Code generated by @ui8kit/codegen. DO NOT EDIT. -/** - * Text renders a paragraph of body copy. Use Inline for inline span copy - * and Title (as 1–6) for headings. - */ - -import { splitProps, type JSX, type Component } from "solid-js"; -import { textClasses } from "./text.shared"; - -/** - * Text renders a p element with body copy classes. - */ -export type TextProps = Omit, "class" | "className" | "children"> & { - class?: string; - className?: string; - children?: JSX.Element; -}; - -export const Text: Component = (props) => { - const [local, rest] = splitProps(props, ["class", "className", "children"]); - const cls = () => textClasses({ className: local.class ?? local.className }); - return ( -

- {local.children} -

- ); -}; diff --git a/generated/ui/text/text.templ b/generated/ui/text/text.templ deleted file mode 100644 index 904064e..0000000 --- a/generated/ui/text/text.templ +++ /dev/null @@ -1,35 +0,0 @@ -// Code generated by @ui8kit/codegen. DO NOT EDIT. - -/* -Text renders a paragraph of body copy. Use Inline for inline span copy -and Title (as 1–6) for headings. -*/ - -package text - -import ( - uiutils "github.com/ui8kit/ui/utils" -) - -// TextProps configures Text. -type TextProps struct { - // Class — adds Tailwind utilities - Class string - Attrs templ.Attributes -} - -// TextClasses composes Text classes without rendering — -// the server-composition escape hatch for custom root elements. -func TextClasses(p TextProps) string { - return uiutils.Compose(TextVariants, map[string]string{}, p.Class) -} - -// Text renders the Text contract. -templ Text(p TextProps) { -

- { children... } -

-} diff --git a/generated/ui/text/text.tsx b/generated/ui/text/text.tsx deleted file mode 100644 index 4a59beb..0000000 --- a/generated/ui/text/text.tsx +++ /dev/null @@ -1,38 +0,0 @@ -// Code generated by @ui8kit/codegen. DO NOT EDIT. -/** - * Text renders a paragraph of body copy. Use Inline for inline span copy - * and Title (as 1–6) for headings. - */ - -import { forwardRef, type ReactNode, type HTMLAttributes } from "react"; -import { textClasses } from "./text.shared"; -import { Slot } from "../slot/slot"; - -/** - * Text renders a p element with body copy classes. - */ -export type TextProps = Omit, "className" | "children"> & { - className?: string; - children?: ReactNode; - asChild?: boolean; -}; - -export const Text = forwardRef(function Text( - { className, children, asChild, ...rest }, - ref -) { - const cls = textClasses({ className }); - if (asChild) { - return ( - - {children} - - ); - } - return ( -

- {children} -

- ); -}); -Text.displayName = "Text"; diff --git a/generated/ui/text/text.variants.json b/generated/ui/text/text.variants.json deleted file mode 100644 index 12af129..0000000 --- a/generated/ui/text/text.variants.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "$schema": "../../schemas/variants.schema.json", - "base": "", - "byKey": {}, - "defaults": {}, - "id": "ui.text", - "keys": [] -} diff --git a/generated/ui/text/text_gen.go b/generated/ui/text/text_gen.go deleted file mode 100644 index 122a57c..0000000 --- a/generated/ui/text/text_gen.go +++ /dev/null @@ -1,15 +0,0 @@ -// Code generated by @ui8kit/codegen. DO NOT EDIT. - -package text - -import ( - _ "embed" - - uiutils "github.com/ui8kit/ui/utils" -) - -//go:embed text.variants.json -var textVariantsJSON []byte - -// TextVariants is the CVA recipe shared verbatim by all runtimes. -var TextVariants = uiutils.MustParseVariantRecipe(textVariantsJSON).ToVariants() diff --git a/generated/ui/text/text_templ.go b/generated/ui/text/text_templ.go deleted file mode 100644 index 94b6eb6..0000000 --- a/generated/ui/text/text_templ.go +++ /dev/null @@ -1,105 +0,0 @@ -// Code generated by templ - DO NOT EDIT. - -// templ: version: v0.3.1001 -// Code generated by @ui8kit/codegen. DO NOT EDIT. - -/* - - -Text renders a paragraph of body copy. Use Inline for inline span copy - - -and Title (as 1–6) for headings. - - -*/ - -package text - -//lint:file-ignore SA4006 This context is only used if a nested component is present. - -import "github.com/a-h/templ" -import templruntime "github.com/a-h/templ/runtime" - -import ( - uiutils "github.com/fastygo/sezonmarket/internal/utils" -) - -// TextProps configures Text. -type TextProps struct { - // Class — adds Tailwind utilities - Class string - Attrs templ.Attributes -} - -// TextClasses composes Text classes without rendering — -// the server-composition escape hatch for custom root elements. -func TextClasses(p TextProps) string { - return uiutils.Compose(TextVariants, map[string]string{}, p.Class) -} - -// Text renders the Text contract. -func Text(p TextProps) templ.Component { - return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { - templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context - if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil { - return templ_7745c5c3_CtxErr - } - templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) - if !templ_7745c5c3_IsBuffer { - defer func() { - templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) - if templ_7745c5c3_Err == nil { - templ_7745c5c3_Err = templ_7745c5c3_BufErr - } - }() - } - ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var1 := templ.GetChildren(ctx) - if templ_7745c5c3_Var1 == nil { - templ_7745c5c3_Var1 = templ.NopComponent - } - ctx = templ.ClearChildren(ctx) - var templ_7745c5c3_Var2 = []any{TextClasses(p)} - templ_7745c5c3_Err = templ.RenderCSSItems(ctx, templ_7745c5c3_Buffer, templ_7745c5c3_Var2...) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 1, "

") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templ_7745c5c3_Var1.Render(ctx, templ_7745c5c3_Buffer) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 4, "

") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - return nil - }) -} - -var _ = templruntime.GeneratedTemplate diff --git a/generated/ui/textarea/Textarea.html.twig b/generated/ui/textarea/Textarea.html.twig deleted file mode 100644 index bf9cd67..0000000 --- a/generated/ui/textarea/Textarea.html.twig +++ /dev/null @@ -1,3 +0,0 @@ -{# Code generated by @ui8kit/codegen. DO NOT EDIT. #} -{# ui.textarea — Textarea renders a styled multi-line form control. #} - 0)) ? (((rows|default(0))) ~ '') : '4'), 'placeholder': ui8kit_or_null((placeholder|default(''))), 'disabled': (disabled|default(false)), 'required': (required|default(false)), 'role': ui8kit_or_null((role|default(''))), 'tabindex': ui8kit_or_null((tabindex|default(''))), 'aria-label': ui8kit_or_null((ariaLabel|default(''))) }, attrs|default({})) }}>{{ (value|default('')) }} diff --git a/generated/ui/textarea/Textarea.latte b/generated/ui/textarea/Textarea.latte deleted file mode 100644 index 309bc78..0000000 --- a/generated/ui/textarea/Textarea.latte +++ /dev/null @@ -1,31 +0,0 @@ -{* Code generated by @ui8kit/codegen. DO NOT EDIT. *} -{* ui.textarea — Textarea renders a styled multi-line form control. *} -{parameters - string $variant = '', - string $size = '', - string $class = '', - string $name = '', - string $value = '', - string $placeholder = '', - int $rows = 0, - bool $disabled = false, - bool $required = false, - string $id = '', - string $role = '', - string $tabindex = '', - string $ariaLabel = '', - array $attrs = [], -} - diff --git a/generated/ui/textarea/Textarea.svelte b/generated/ui/textarea/Textarea.svelte deleted file mode 100644 index 8b132ac..0000000 --- a/generated/ui/textarea/Textarea.svelte +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - diff --git a/generated/ui/textarea/Textarea.vue b/generated/ui/textarea/Textarea.vue deleted file mode 100644 index 3345b6d..0000000 --- a/generated/ui/textarea/Textarea.vue +++ /dev/null @@ -1,32 +0,0 @@ - - - - -