{"record":{"id":"0d1daa0d03493d99","repo":"reflex-dev/reflex","slug":"f-invalid-size-size-available-sizes-availabl-0d1daa","errorCode":null,"errorMessage":"f\"Invalid size: {size}. Available sizes: {available_sizes}\"","messagePattern":"f\"Invalid size: (.+?)\\. Available sizes: (.+?)\"","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"packages/reflex-components-internal/src/reflex_components_internal/components/base/link.py","lineNumber":103,"sourceCode":"        return super().create(*children, **props)\n\n    @staticmethod\n    def validate_variant(variant: LiteralLinkVariant):\n        \"\"\"Validate the link variant.\"\"\"\n        if variant not in LINK_VARIANTS[\"variant\"]:\n            available_variants = \", \".join(LINK_VARIANTS[\"variant\"].keys())\n            message = (\n                f\"Invalid variant: {variant}. Available variants: {available_variants}\"\n            )\n            raise ValueError(message)\n\n    @staticmethod\n    def validate_size(size: LiteralLinkSize):\n        \"\"\"Validate the link size.\"\"\"\n        if size not in LINK_VARIANTS[\"size\"]:\n            available_sizes = \", \".join(LINK_VARIANTS[\"size\"].keys())\n            message = f\"Invalid size: {size}. Available sizes: {available_sizes}\"\n            raise ValueError(message)\n\n    def _exclude_props(self) -> list[str]:\n        return [*super()._exclude_props(), \"size\", \"variant\", \"show_icon\", \"render_\"]\n\n\nlink = Link.create\n","sourceCodeStart":85,"sourceCodeEnd":110,"githubUrl":"https://github.com/reflex-dev/reflex/blob/45b8ed5ab735f8a56bbb09a42384f030eb0208e7/packages/reflex-components-internal/src/reflex_components_internal/components/base/link.py#L85-L110","documentation":"Link size validation: size must be a registered link size; other values (including old 'sm'/'md'/'lg' strings) raise at create time.","triggerScenarios":"rx.link(..., size=\"lg\") where the numeric radix-style scale (\"1\"-\"4\") is expected.","commonSituations":"Chakra-style sizes left over after upgrading Reflex; sizes sourced from user/theme config without validation.","solutions":["Use a size from the error message list (map sm→1, md→2, lg→3)","Whitelist config-driven size values","Rely on the Literal type for static checking"],"exampleFix":"# before\nrx.link(\"Home\", href=\"/\", size=\"lg\")\n# after\nrx.link(\"Home\", href=\"/\", size=\"3\")","handlingStrategy":"validation","validationCode":"from reflex_components_internal.components.base.link import LINK_VARIANTS\nif size not in LINK_VARIANTS['size']:\n    size = '2'","typeGuard":"def is_valid_link_size(s: str) -> TypeGuard[str]:\n    from reflex_components_internal.components.base.link import LINK_VARIANTS\n    return s in LINK_VARIANTS['size']","tryCatchPattern":null,"preventionTips":["Map sm/md/lg to '1'/'2'/'3' when migrating","Validate dynamic size props against the registry"],"tags":["reflex","link","size"],"backgroundTag":"invalid-enum-value","analyzedSha":"45b8ed5ab735f8a56bbb09a42384f030eb0208e7","analyzedAt":"2026-08-28T19:25:27.644Z","schemaVersion":2},"datasetVersion":"2026-08-28T21:17:43.275Z"}